/* ============================================================= Bifrost Advisory Board — deck stylesheet Full-screen scroll-snap presentation. 17 slides. Nordic-editorial system; Bifrost aurora used as a quiet accent. ============================================================= */ *, *::before, *::after { box-sizing: border-box; } html { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; } html, body { margin: 0; padding: 0; height: 100%; background: var(--paper); color: var(--ink); font-family: var(--font-sans); line-height: 1.6; } body { background: radial-gradient(1200px 800px at 18% 30%, #fffcf7 0%, var(--paper) 55%, #f4efe2 100%); } img { display: block; max-width: 100%; } /* ───────────────────── Scroll-snap scaffolding ───────────────────── */ .deck { height: 100vh; height: 100dvh; overflow-y: scroll; overflow-x: hidden; scroll-snap-type: y mandatory; scroll-behavior: smooth; scrollbar-width: none; /* Firefox — hide the bar, the dot-nav is the wayfinder */ } .deck::-webkit-scrollbar { width: 0; height: 0; } .slide { position: relative; min-height: 100vh; min-height: 100dvh; scroll-snap-align: start; scroll-snap-stop: always; display: grid; place-items: center; padding: clamp(4rem, 9vh, 7rem) var(--edge) clamp(5rem, 11vh, 8rem); overflow: hidden; } /* Inner column — keeps content measured and centred */ .slide-inner { width: 100%; max-width: 1180px; margin-inline: auto; } /* Reveal-on-enter — subtle fade/rise, applied by the IntersectionObserver. Gated behind `.js` so the deck stays fully visible if the script fails to load (graceful degradation — content over animation). */ .js .reveal > * { opacity: 0; transform: translateY(22px); transition: opacity 720ms var(--ease-entrance), transform 720ms var(--ease-entrance); } .slide.in-view .reveal > * { opacity: 1; transform: none; } .slide.in-view .reveal > *:nth-child(2) { transition-delay: 90ms; } .slide.in-view .reveal > *:nth-child(3) { transition-delay: 170ms; } .slide.in-view .reveal > *:nth-child(4) { transition-delay: 250ms; } .slide.in-view .reveal > *:nth-child(5) { transition-delay: 330ms; } @media (prefers-reduced-motion: reduce) { .deck { scroll-behavior: auto; } .reveal > * { opacity: 1 !important; transform: none !important; transition: none !important; } } /* ───────────────────── Persistent chrome ───────────────────── */ /* Top-left wordmark — quiet masthead present on every slide */ .masthead { position: fixed; top: clamp(20px, 3vh, 34px); left: clamp(22px, 3vw, 44px); z-index: 60; width: clamp(92px, 9vw, 124px); opacity: 0.82; pointer-events: none; } .masthead img { width: 100%; height: auto; } /* Slide number — quiet top-right counter */ .slide-counter { position: fixed; top: clamp(22px, 3vh, 36px); right: clamp(24px, 3vw, 46px); z-index: 60; font-family: var(--font-serif); font-style: italic; font-size: clamp(0.85rem, 1.1vw, 1rem); color: var(--ink-dim); letter-spacing: 0.02em; } .slide-counter b { font-style: normal; font-weight: 600; color: var(--ink-soft); } /* ───────────────────── Dot-nav (bottom) ───────────────────── 17 dots, centred. Active = filled ink. Hover/focus floats a Danish label tooltip above the dot. Every slide is reachable. */ .dot-nav-tray { position: fixed; left: 0; right: 0; bottom: 0; height: 96px; z-index: 45; pointer-events: none; background: linear-gradient(to bottom, rgba(250,246,238,0) 0%, rgba(250,246,238,0.82) 55%, rgba(250,246,238,0.96) 100%); } .dot-nav { position: fixed; bottom: clamp(20px, 3.2vh, 34px); left: 50%; transform: translateX(-50%); display: flex; gap: clamp(10px, 1.4vw, 20px); z-index: 50; max-width: 94vw; flex-wrap: wrap; justify-content: center; } .dot-btn { all: unset; position: relative; padding: 9px; cursor: pointer; display: flex; align-items: center; justify-content: center; } .dot-btn .dot { width: 9px; height: 9px; border-radius: 50%; background: transparent; box-shadow: inset 0 0 0 1.5px var(--ink-dim); transition: background var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease); } .dot-btn:hover .dot, .dot-btn:focus-visible .dot { box-shadow: inset 0 0 0 1.5px var(--ink); transform: scale(1.15); } .dot-btn.is-active .dot { background: var(--ink); box-shadow: inset 0 0 0 1.5px var(--ink); } .dot-btn .label { position: absolute; bottom: calc(100% - 3px); left: 50%; transform: translate(-50%, 4px); background: var(--paper-high); color: var(--ink); font-size: 10.5px; letter-spacing: 0.16em; text-transform: uppercase; font-weight: 600; padding: 7px 11px; white-space: nowrap; pointer-events: none; opacity: 0; box-shadow: 0 0 0 0.5px rgba(56,56,49,0.08), 0 10px 18px -10px rgba(56,56,49,0.24), 0 2px 6px -3px rgba(56,56,49,0.1); transition: opacity var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease); } .dot-btn:hover .label, .dot-btn:focus-visible .label { opacity: 1; transform: translate(-50%, 0); } .dot-btn .label::before { content: counter(dot) " · "; color: var(--ink-dim); } .dot-nav { counter-reset: dot; } .dot-btn { counter-increment: dot; } /* ───────────────────── Shared editorial primitives ───────────────────── */ .eyebrow { font-family: var(--font-sans); font-size: clamp(0.72rem, 0.95vw, 0.84rem); letter-spacing: 0.26em; text-transform: uppercase; color: var(--ink-dim); font-weight: 600; margin: 0 0 var(--space-5); display: inline-flex; align-items: center; gap: 0.85rem; } .eyebrow::before { content: ""; width: 30px; height: 1px; background: currentColor; } .eyebrow.center { justify-content: center; } .slide-title { font-family: var(--font-serif); font-weight: 400; font-size: clamp(2.1rem, 4.4vw, 3.6rem); line-height: 1.08; letter-spacing: -0.022em; color: var(--ink); margin: 0; text-wrap: pretty; } .slide-title em { font-style: italic; font-weight: 600; color: var(--terracotta); } .lede { font-family: var(--font-serif); font-style: italic; font-size: clamp(1.15rem, 1.7vw, 1.5rem); line-height: 1.5; color: var(--ink-soft); max-width: 46ch; margin: var(--space-5) 0 0; } /* Thin aurora rule — the signature Bifrost accent line */ .aurora-rule { height: 2px; border: 0; border-radius: 2px; background: linear-gradient(to right, var(--aurora-1), var(--aurora-2), var(--aurora-3), var(--aurora-4)); opacity: 0.9; } /* ════════════════════ THE BIG-QUESTION COMPONENT ════════════════════ Reusable "pause and think" treatment (slides 5, 8, 9, 13, 16). Large confident serif, centred, lots of air. A short aurora rule and an aurora-tinted opening mark are the only colour. Deliberately calm. */ .question { text-align: center; max-width: min(92vw, 920px); /* generous frame; the text controls the measure */ margin-inline: auto; display: grid; justify-items: center; gap: clamp(1.6rem, 4vh, 2.6rem); } .question-mark { font-family: var(--font-serif); font-style: italic; font-size: clamp(2.4rem, 5vw, 4rem); line-height: 1; background: linear-gradient(120deg, var(--aurora-1), var(--aurora-2), var(--aurora-3), var(--aurora-4)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; opacity: 0.9; user-select: none; } .question-eyebrow { font-family: var(--font-sans); font-size: clamp(0.72rem, 0.95vw, 0.82rem); letter-spacing: 0.3em; text-transform: uppercase; color: var(--ink-dim); font-weight: 600; } .question-text { font-family: var(--font-serif); font-weight: 360; font-size: clamp(1.9rem, 3.8vw, 3.4rem); line-height: 1.16; letter-spacing: -0.02em; color: var(--ink); margin: 0; max-width: 100%; text-wrap: balance; } /* A restrained aurora wash on the emphasised keyword */ .question-text em { font-style: italic; font-weight: 460; background: linear-gradient(115deg, var(--aurora-2), var(--aurora-3), var(--aurora-4)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; } .question-rule { width: clamp(70px, 9vw, 120px); height: 2px; border: 0; border-radius: 2px; background: linear-gradient(to right, var(--aurora-1), var(--aurora-2), var(--aurora-3), var(--aurora-4)); } .question-prompts { font-family: var(--font-serif); font-style: italic; font-size: clamp(1rem, 1.5vw, 1.3rem); color: var(--ink-soft); margin: 0; max-width: 40ch; line-height: 1.7; } .question-prompts span { white-space: nowrap; } .question-prompts .sep { color: var(--ink-faint); font-style: normal; padding: 0 0.35em; } /* ════════════════════ Logo lockups ════════════════════ */ /* The Bifrost logo: aurora arc above a Newsreader wordmark. Reusable. */ .bifrost-logo { display: inline-flex; flex-direction: column; align-items: center; gap: 0.35em; line-height: 1; } .bifrost-logo .arc { width: 1.7em; height: 0.85em; overflow: visible; } .bifrost-logo .word { font-family: var(--font-serif); font-weight: 420; letter-spacing: -0.012em; color: var(--ink); } .bifrost-logo .word em { font-style: italic; } /* size variants driven by font-size on the lockup */ .bifrost-logo { font-size: clamp(1.6rem, 3.4vw, 2.6rem); } .bifrost-logo.lg { font-size: clamp(2.4rem, 6vw, 5rem); } .bifrost-logo.sm { font-size: clamp(1.15rem, 2vw, 1.5rem); } /* Fenja · Bifrost combined lockup (mission + closing slides) */ .brand-lockup { display: flex; align-items: center; justify-content: center; gap: clamp(1.4rem, 3.5vw, 3rem); flex-wrap: wrap; } .brand-lockup .fenja-mark { width: clamp(150px, 18vw, 270px); height: auto; opacity: 0.92; } .brand-lockup .dot-sep { font-family: var(--font-serif); font-size: clamp(2rem, 4vw, 3.2rem); color: var(--ink-dim); line-height: 1; transform: translateY(-0.08em); } /* ════════════════════ Slide 1 — Ambient welcome ════════════════════ */ #slide-welcome { place-items: center; } #slide-welcome .slide-inner { text-align: center; display: grid; justify-items: center; gap: clamp(1.6rem, 4vh, 2.6rem); } .welcome-kicker { font-family: var(--font-sans); font-size: clamp(0.74rem, 1vw, 0.9rem); letter-spacing: 0.34em; text-transform: uppercase; color: var(--ink-dim); font-weight: 600; } .welcome-headline { font-family: var(--font-serif); font-weight: 350; font-size: clamp(2.2rem, 5.2vw, 4.6rem); line-height: 1.07; letter-spacing: -0.025em; color: var(--ink); margin: 0; max-width: 18ch; text-wrap: balance; } .welcome-headline .seq { font-style: italic; font-weight: 500; background: linear-gradient(115deg, var(--aurora-1), var(--aurora-2), var(--aurora-3), var(--aurora-4)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; } /* Ambient aurora background — full-bleed, slow looping. Lives behind slide 1's content. Three drifting aurora bands + the signature arc. */ .ambient { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; } .ambient .band { position: absolute; left: -25%; width: 150%; height: 46%; filter: blur(60px); opacity: 0.5; border-radius: 50%; mix-blend-mode: multiply; will-change: transform, opacity; } .ambient .band.b1 { top: 8%; background: radial-gradient(ellipse 50% 60% at 30% 50%, var(--aurora-1) 0%, transparent 70%), radial-gradient(ellipse 55% 60% at 70% 50%, var(--aurora-2) 0%, transparent 72%); animation: drift1 26s ease-in-out infinite alternate; } .ambient .band.b2 { top: 30%; background: radial-gradient(ellipse 55% 60% at 40% 50%, var(--aurora-3) 0%, transparent 70%), radial-gradient(ellipse 50% 55% at 75% 50%, var(--aurora-4) 0%, transparent 72%); animation: drift2 32s ease-in-out infinite alternate; opacity: 0.42; } .ambient .band.b3 { top: 52%; background: radial-gradient(ellipse 50% 55% at 55% 50%, var(--aurora-2) 0%, transparent 70%), radial-gradient(ellipse 48% 52% at 25% 50%, var(--aurora-3) 0%, transparent 72%); animation: drift3 38s ease-in-out infinite alternate; opacity: 0.34; } @keyframes drift1 { 0% { transform: translate3d(-6%, -4%, 0) scale(1.05); } 100% { transform: translate3d(8%, 5%, 0) scale(1.18); } } @keyframes drift2 { 0% { transform: translate3d(7%, 3%, 0) scale(1.1); } 100% { transform: translate3d(-8%, -5%, 0) scale(1.22); } } @keyframes drift3 { 0% { transform: translate3d(-5%, 5%, 0) scale(1.08); } 100% { transform: translate3d(9%, -4%, 0) scale(1.2); } } /* Large ambient arc — the Bifrost bridge, breathing slowly */ .ambient-arc { position: absolute; left: 50%; top: 46%; width: min(120vw, 1500px); transform: translate(-50%, -50%); opacity: 0.6; animation: arc-breathe 14s ease-in-out infinite; } @keyframes arc-breathe { 0%, 100% { opacity: 0.5; transform: translate(-50%, -50%) scale(1); } 50% { opacity: 0.7; transform: translate(-50%, -51%) scale(1.02); } } #slide-welcome .slide-inner { position: relative; z-index: 2; } @media (prefers-reduced-motion: reduce) { .ambient .band, .ambient-arc { animation: none; } } /* ════════════════════ Slide 2 — Agenda ════════════════════ */ #slide-agenda .slide-inner { max-width: 900px; } .agenda-title { margin-bottom: clamp(2rem, 5vh, 3.25rem); } .agenda-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; } .agenda-row { display: grid; grid-template-columns: minmax(150px, 0.32fr) 1fr; gap: clamp(1.2rem, 3vw, 2.6rem); align-items: baseline; padding: clamp(0.85rem, 1.9vh, 1.25rem) 0; border-top: 1px solid rgba(56,56,49,0.12); } .agenda-row:last-child { border-bottom: 1px solid rgba(56,56,49,0.12); } .agenda-time { font-family: var(--font-serif); font-style: italic; font-size: clamp(1rem, 1.5vw, 1.3rem); color: var(--ink-soft); white-space: nowrap; } .agenda-label { font-family: var(--font-sans); font-weight: 500; font-size: clamp(1.05rem, 1.7vw, 1.45rem); color: var(--ink); letter-spacing: -0.01em; } .agenda-row.is-break .agenda-label { color: var(--ink-dim); font-weight: 400; font-style: normal; } /* ════════════════════ Slide 3 — Board / introductions ════════════════════ */ #slide-board .slide-inner { max-width: 1240px; } .board-head { text-align: center; margin-bottom: clamp(1.8rem, 4vh, 3rem); } .board-head .slide-title { margin-inline: auto; max-width: 20ch; } .board-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(1rem, 2vw, 2rem) clamp(1rem, 2.2vw, 2.4rem); } .board-member { margin: 0; text-align: center; } .board-portrait { width: 100%; aspect-ratio: 1 / 1; border-radius: var(--radius-lg); overflow: hidden; background: var(--paper-3); box-shadow: 0 0 0 0.5px rgba(56,56,49,0.06), 0 14px 28px -18px rgba(56,56,49,0.22); margin-bottom: 0.85rem; } .board-portrait img { width: 100%; height: 100%; object-fit: cover; } .bm-name { font-family: var(--font-serif); font-size: clamp(1rem, 1.35vw, 1.22rem); color: var(--ink); margin: 0 0 0.15rem; letter-spacing: -0.01em; } .bm-title { font-family: var(--font-sans); font-size: clamp(0.74rem, 0.92vw, 0.84rem); color: var(--ink-soft); margin: 0 0 0.1rem; line-height: 1.35; } .bm-company { font-family: var(--font-sans); font-size: clamp(0.66rem, 0.82vw, 0.76rem); letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink-dim); font-weight: 600; margin: 0; } @media (max-width: 900px) { .board-grid { grid-template-columns: repeat(2, 1fr); } } /* ════════════════════ Slide 4 — Mission ════════════════════ */ #slide-mission .slide-inner { text-align: center; display: grid; justify-items: center; gap: clamp(2rem, 5vh, 3.5rem); } .mission-values { font-family: var(--font-serif); font-weight: 360; font-size: clamp(1.6rem, 3.4vw, 2.8rem); letter-spacing: -0.01em; color: var(--ink); margin: 0; } .mission-values b { font-weight: 400; background: linear-gradient(115deg, var(--aurora-1), var(--aurora-2), var(--aurora-3), var(--aurora-4)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; } /* Quiet partner-logo row (mission foot + sandbox) */ .partner-row { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: clamp(1.2rem, 3vw, 2.6rem); } .partner-logo { display: flex; flex-direction: column; align-items: center; gap: 0.4rem; opacity: 0.7; } /* Clearly-labelled placeholder for a missing authority logo */ .logo-ph { width: clamp(64px, 7vw, 88px); height: clamp(40px, 4.4vw, 52px); border: 1px dashed rgba(56,56,49,0.28); border-radius: var(--radius-md); display: grid; place-items: center; background: rgba(255,252,247,0.5); } .logo-ph svg { width: 46%; height: 46%; opacity: 0.5; } .partner-name { font-family: var(--font-sans); font-size: clamp(0.6rem, 0.78vw, 0.72rem); letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-dim); font-weight: 600; text-align: center; max-width: 12ch; line-height: 1.3; } .mission-foot { margin-top: clamp(0.5rem, 2vh, 1.5rem); } .mission-foot .partner-caption { font-size: clamp(0.62rem, 0.8vw, 0.72rem); letter-spacing: 0.2em; text-transform: uppercase; color: var(--ink-faint); font-weight: 600; margin: 0 0 1rem; } /* ════════════════════ Slide 6 — Pause ════════════════════ */ #slide-pause { } #slide-pause .slide-inner { text-align: center; display: grid; justify-items: center; gap: clamp(1.5rem, 4vh, 2.5rem); position: relative; z-index: 2; } .pause-word { font-family: var(--font-serif); font-weight: 330; font-size: clamp(3.5rem, 11vw, 9rem); letter-spacing: -0.03em; color: var(--ink); margin: 0; line-height: 1; } .pause-sub { font-family: var(--font-serif); font-style: italic; font-size: clamp(1.1rem, 1.8vw, 1.5rem); color: var(--ink-soft); margin: 0; } .pause-clock { font-family: var(--font-sans); font-size: clamp(0.72rem, 0.95vw, 0.84rem); letter-spacing: 0.28em; text-transform: uppercase; color: var(--ink-dim); font-weight: 600; } /* ════════════════════ Slide 7 — Platform architecture ════════════════════ */ #slide-arch .slide-inner { max-width: 1240px; } .arch-head { text-align: center; margin-bottom: clamp(1.4rem, 3.2vh, 2.4rem); } .arch-head .arch-title { font-family: var(--font-serif); font-weight: 400; font-size: clamp(1.7rem, 3.2vw, 2.6rem); letter-spacing: -0.02em; color: var(--ink); margin: 0; } .arch-head .arch-sub { font-family: var(--font-serif); font-style: italic; font-size: clamp(1rem, 1.5vw, 1.25rem); color: var(--ink-soft); margin: 0.35rem 0 0; } .arch-frame { position: relative; border: 1px solid rgba(56,56,49,0.16); border-radius: var(--radius-xl); padding: clamp(1.4rem, 2.8vw, 2.4rem) clamp(1.2rem, 2.4vw, 2rem) clamp(1.6rem, 3vw, 2.4rem); background: linear-gradient(180deg, rgba(255,252,247,0.6), rgba(246,242,232,0.35)); display: grid; gap: clamp(1rem, 2vh, 1.6rem); } .arch-frame-label { position: absolute; top: 0; left: 50%; transform: translate(-50%, -50%); background: var(--paper); padding: 0 1rem; font-family: var(--font-sans); font-size: clamp(0.64rem, 0.82vw, 0.74rem); letter-spacing: 0.22em; text-transform: uppercase; color: var(--ink-dim); font-weight: 600; } .arch-group { display: grid; gap: 0.7rem; } .arch-group-head { display: flex; align-items: baseline; gap: 0.75rem; } .arch-group-label { font-family: var(--font-sans); font-weight: 700; font-size: clamp(0.85rem, 1.1vw, 1rem); letter-spacing: 0.02em; color: var(--ink); } .arch-group-caption { font-family: var(--font-serif); font-style: italic; font-size: clamp(0.8rem, 1vw, 0.95rem); color: var(--ink-soft); } .arch-cards { display: grid; gap: clamp(0.6rem, 1.2vw, 1rem); } .arch-cards.c3 { grid-template-columns: repeat(3, 1fr); } .arch-cards.c4 { grid-template-columns: repeat(4, 1fr); } .arch-card { background: var(--paper-high); border-radius: var(--radius-md); padding: clamp(0.7rem, 1.3vw, 1.05rem) clamp(0.8rem, 1.4vw, 1.1rem); box-shadow: 0 0 0 0.5px rgba(56,56,49,0.06), 0 10px 22px -16px rgba(56,56,49,0.22); display: grid; gap: 0.2rem; align-content: start; } .arch-card[data-accent="foundation"] { border-top: 2px solid var(--copper); } .arch-card[data-accent="tools"] { border-top: 2px solid var(--ochre); } .arch-card[data-accent="agents"] { border-top: 2px solid var(--heather); } .arch-card .ac-name { font-family: var(--font-sans); font-weight: 600; font-size: clamp(0.82rem, 1.05vw, 0.98rem); color: var(--ink); margin: 0; line-height: 1.2; } .arch-card .ac-italic { font-family: var(--font-serif); font-style: italic; font-size: clamp(0.75rem, 0.95vw, 0.88rem); color: var(--ink-soft); margin: 0; } .arch-card .ac-mono { font-family: var(--font-sans); font-size: clamp(0.6rem, 0.76vw, 0.7rem); letter-spacing: 0.04em; color: var(--ink-dim); margin: 0.1rem 0 0; } @media (max-width: 860px) { .arch-cards.c3, .arch-cards.c4 { grid-template-columns: repeat(2, 1fr); } } /* ════════════════════ Slide 10 / 14 — Section dividers ════════════════════ */ .section-divider .slide-inner { text-align: center; display: grid; justify-items: center; gap: clamp(1.6rem, 4vh, 2.5rem); } .section-divider .bifrost-logo { margin-bottom: 0.5rem; } .section-title { font-family: var(--font-serif); font-weight: 360; font-size: clamp(2.2rem, 5vw, 4.2rem); line-height: 1.08; letter-spacing: -0.025em; color: var(--ink); margin: 0; max-width: 16ch; text-wrap: balance; } .section-title em { font-style: italic; font-weight: 460; color: var(--terracotta); } /* Reserved-points layout (slide 14) */ .approach-points { list-style: none; margin: clamp(1.5rem, 4vh, 2.5rem) 0 0; padding: 0; display: grid; gap: clamp(0.7rem, 1.6vh, 1.1rem); width: min(640px, 100%); text-align: left; } .approach-points li { display: flex; align-items: center; gap: 1rem; padding: clamp(0.85rem, 1.8vh, 1.15rem) clamp(1.1rem, 2vw, 1.5rem); border: 1px dashed rgba(56,56,49,0.2); border-radius: var(--radius-md); color: var(--ink-dim); background: rgba(255,252,247,0.35); } .approach-points li::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: linear-gradient(120deg, var(--aurora-2), var(--aurora-4)); flex: 0 0 auto; } .approach-points .ph-text { font-family: var(--font-serif); font-style: italic; font-size: clamp(0.95rem, 1.3vw, 1.1rem); } /* ════════════════════ Slide 11 — Highlight boxes ════════════════════ */ #slide-highlights .slide-inner { max-width: 1140px; } .highlights-head { text-align: center; margin-bottom: clamp(1.6rem, 4vh, 2.6rem); } .highlight-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(0.9rem, 1.8vw, 1.5rem); } .highlight-box { position: relative; border-radius: var(--radius-lg); overflow: hidden; background: var(--paper-high); box-shadow: 0 0 0 0.5px rgba(56,56,49,0.06), 0 18px 36px -22px rgba(56,56,49,0.28); display: flex; flex-direction: column; min-height: clamp(300px, 44vh, 420px); } .highlight-art { height: 42%; display: grid; place-items: center; position: relative; overflow: hidden; } .highlight-art svg { width: 56%; height: 56%; } .highlight-box[data-tone="terracotta"] .highlight-art { background: linear-gradient(150deg, #c98a78, #a4553b); } .highlight-box[data-tone="indigo"] .highlight-art { background: linear-gradient(150deg, #7b91a6, #5a6d83); } .highlight-box[data-tone="heather"] .highlight-art { background: linear-gradient(150deg, #a594a0, #6e5a86); } .highlight-box[data-tone="ochre"] .highlight-art { background: linear-gradient(150deg, #d4b478, #b08a3e); } .highlight-art svg { stroke: rgba(255,252,247,0.92); } .highlight-body { padding: clamp(1rem, 1.8vw, 1.4rem); display: grid; gap: 0.5rem; align-content: start; flex: 1; } .highlight-num { font-family: var(--font-serif); font-style: italic; font-size: 0.85rem; color: var(--ink-dim); } .highlight-name { font-family: var(--font-serif); font-weight: 400; font-size: clamp(1.15rem, 1.7vw, 1.45rem); line-height: 1.12; letter-spacing: -0.015em; color: var(--ink); margin: 0; } .highlight-note { font-family: var(--font-sans); font-size: clamp(0.78rem, 0.98vw, 0.9rem); color: var(--ink-soft); margin: 0; line-height: 1.45; } @media (max-width: 980px) { .highlight-grid { grid-template-columns: repeat(2, 1fr); } } /* ════════════════════ Slide 12 — Meme ════════════════════ */ #slide-meme .slide-inner { display: grid; justify-items: center; gap: clamp(1.4rem, 3.5vh, 2.2rem); text-align: center; } .meme-frame { padding: clamp(0.6rem, 1.4vw, 1rem); background: var(--paper-high); border-radius: var(--radius-lg); box-shadow: 0 0 0 0.5px rgba(56,56,49,0.07), 0 30px 60px -28px rgba(56,56,49,0.34), 0 6px 16px -8px rgba(56,56,49,0.16); max-width: min(640px, 78vw); } .meme-frame img { border-radius: calc(var(--radius-lg) - 6px); max-height: 62vh; width: auto; } .meme-caption { font-family: var(--font-serif); font-style: italic; font-size: clamp(1rem, 1.5vw, 1.25rem); color: var(--ink-soft); margin: 0; } /* ════════════════════ Slide 15 — Regulatory sandbox ════════════════════ */ #slide-sandbox .slide-inner { text-align: center; display: grid; justify-items: center; gap: clamp(1.6rem, 4vh, 2.6rem); max-width: 920px; } .sandbox-badge { display: inline-flex; align-items: center; gap: 0.6rem; font-family: var(--font-sans); font-size: clamp(0.7rem, 0.92vw, 0.82rem); letter-spacing: 0.22em; text-transform: uppercase; font-weight: 600; color: var(--copper); padding: 0.5rem 1.1rem; border: 1px solid rgba(109,140,124,0.4); border-radius: var(--radius-full); } .sandbox-title { font-family: var(--font-serif); font-weight: 360; font-size: clamp(2rem, 4.4vw, 3.6rem); line-height: 1.1; letter-spacing: -0.022em; color: var(--ink); margin: 0; max-width: 20ch; text-wrap: balance; } .sandbox-title em { font-style: italic; font-weight: 460; color: var(--terracotta); } .sandbox-sub { font-family: var(--font-serif); font-style: italic; font-size: clamp(1.1rem, 1.8vw, 1.5rem); color: var(--ink-soft); margin: 0; max-width: 34ch; } /* ════════════════════ Slide 17 — Closing ════════════════════ */ #slide-thanks .slide-inner { text-align: center; display: grid; justify-items: center; gap: clamp(2rem, 5vh, 3.5rem); position: relative; z-index: 2; } .thanks-title { font-family: var(--font-serif); font-weight: 340; font-size: clamp(2.6rem, 6.5vw, 5.5rem); letter-spacing: -0.03em; color: var(--ink); margin: 0; line-height: 1; } .thanks-title em { font-style: italic; font-weight: 440; } /* Small responsive guard for very short viewports */ @media (max-height: 640px) { .slide { padding-top: clamp(3rem, 6vh, 4rem); padding-bottom: clamp(3.5rem, 7vh, 5rem); } }