/* =========================================================
   CreateMySlides — styles
   Two themes: "lights on" (white + teal blue) and
   "lights off" (black + yellow). Everything reads from tokens.
   Sections are appended in order as the site is built.
   ========================================================= */

/* ---------- Theme tokens ---------- */
:root,
:root[data-theme="light"] {
  color-scheme: light;
  --bg: #FFFFFF;
  --surface: #F1F8F9;           /* the stage */
  --surface-2: #E2F1F3;
  --text: #0B1F24;
  --text-soft: rgba(11, 31, 36, .68);
  --muted: #6A8489;
  --accent: #20A4B6;            /* teal blue */
  --accent-rgb: 32, 164, 182;
  --accent-ink: #FFFFFF;
  --accent-2: #7FD3DE;          /* soft teal */
  --line: rgba(11, 31, 36, .12);
  --glow-1: #5FC6D4; --glow-2: #4FB3E8; --glow-3: #BDE8EE; --glow-o: .42;
  --ruler: rgba(11, 31, 36, .2);
  --guide: rgba(32, 164, 182, .45);
  --grain-blend: multiply;
  --grain-opacity: .05;
  --nav-glass: rgba(255, 255, 255, .78);
  --shadow-card: 0 30px 60px -24px rgba(11, 31, 36, .35), 0 10px 20px -12px rgba(11, 31, 36, .25);

  /* mini-slide palette */
  --m1-bg: #20A4B6; --m1-fg: #FFFFFF; --m1-bar: #FFFFFF;
  --m2-bg: #FFFFFF; --m2-fg: #0B1F24; --m2-num: #20A4B6;
  --m3-bg: #0B1F24; --m3-fg: #E6F6F8; --m3-bar: rgba(230, 246, 248, .22); --m3-hot: #7FD3DE;
  --m4-bg: #CDEEF2; --m4-fg: #0B1F24;
  --m5-bg: #0E7C8C; --m5-fg: #FFFFFF;

  /* halftone texture dots */
  --dot: rgba(32, 164, 182, .22);

  /* Max plan card */
  --max-bg: #0B1F24; --max-ink: #FFFFFF;
}

:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #0B0B0B;                /* jet black */
  --surface: #161616;
  --surface-2: #232323;
  --text: #FAF9F5;              /* warm off-white headings */
  --text-soft: #87867F;         /* warm grey body copy */
  --muted: #7E7D76;
  --accent: #D4FF3F;            /* chartreuse */
  --accent-rgb: 212, 255, 63;
  --accent-ink: #0B0B0B;
  --accent-2: #FF2DA8;          /* hot pink */
  --max-bg: #FF2DA8; --max-ink: #0B0B0B;
  --line: rgba(250, 249, 245, .1);
  --glow-1: #FF2DA8; --glow-2: #D4FF3F; --glow-3: #FF2DA8; --glow-o: .11;
  --ruler: rgba(250, 249, 245, .2);
  --guide: rgba(212, 255, 63, .35);
  --grain-blend: overlay;
  --grain-opacity: .06;
  --nav-glass: rgba(11, 11, 11, .78);
  --shadow-card: 0 1px 0 rgba(255, 255, 255, .06) inset, 0 30px 60px -20px rgba(0, 0, 0, .75), 0 10px 20px -10px rgba(0, 0, 0, .55);

  --m1-bg: #D4FF3F; --m1-fg: #0B0B0B; --m1-bar: #0B0B0B;
  --m2-bg: #FAF9F5; --m2-fg: #0B0B0B; --m2-num: #D1007F;
  --m3-bg: #000000; --m3-fg: #FAF9F5; --m3-bar: rgba(250, 249, 245, .2); --m3-hot: #FF2DA8;
  --m4-bg: #FF2DA8; --m4-fg: #0B0B0B;
  --m5-bg: #FAF9F5; --m5-fg: #0B0B0B;

  /* halftone texture dots */
  --dot: rgba(255, 45, 168, .5);
}

/* ---------- Static tokens ---------- */
:root {
  --f-sans: "Archivo", system-ui, sans-serif;
  --f-serif: "Bodoni Moda", "Didot", Georgia, serif;
  --f-mono: "IBM Plex Mono", ui-monospace, monospace;

  --frame: 10px;            /* gap between viewport edge and the stage */
  --radius: 26px;
  --ease-out: cubic-bezier(.16, 1, .3, 1);
  --ease-io: cubic-bezier(.65, 0, .35, 1);
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; background: var(--bg); }
body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--f-sans);
  font-size: 17px;
  line-height: 1.55;
  font-variation-settings: "wdth" 100;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
h1, h2, h3, h4, p, ol, ul { margin: 0; }
ol, ul { padding: 0; list-style: none; }
::selection { background: var(--accent); color: var(--accent-ink); }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 4px; }

/* skip link: hidden until a keyboard user tabs to it */
.skip-link {
  position: fixed; left: 16px; top: -60px; z-index: 300;
  padding: 10px 16px; border-radius: 999px; background: var(--accent); color: var(--accent-ink);
  font-weight: 650; font-size: 14px; transition: top .25s var(--ease-out);
}
.skip-link:focus { top: 16px; }
main:focus { outline: none; }

.mono { font-family: var(--f-mono); font-size: 12px; letter-spacing: .04em; text-transform: uppercase; }
.serif { font-family: var(--f-serif); font-style: italic; font-weight: 500; letter-spacing: -.01em; }

/* ---------- Theme switch: circular reveal (View Transitions) ---------- */
::view-transition-old(root), ::view-transition-new(root) { animation: none; mix-blend-mode: normal; }
::view-transition-new(root) {
  clip-path: circle(0 at var(--vt-x, 90%) var(--vt-y, 5%));
  animation: vt-reveal .8s var(--ease-io) forwards;
}
@keyframes vt-reveal { to { clip-path: circle(var(--vt-r, 150vmax) at var(--vt-x, 90%) var(--vt-y, 5%)); } }

/* ---------- Buttons & links ---------- */
.btn {
  --bg-b: var(--text); --fg-b: var(--bg);
  display: inline-flex; align-items: center; gap: .6em;
  padding: 1em 1.4em;
  background: var(--bg-b); color: var(--fg-b);
  font-weight: 600; font-size: 15px; line-height: 1;
  border-radius: 999px;
  position: relative; overflow: hidden; isolation: isolate;
  transition: transform .4s var(--ease-out), color .45s var(--ease-out);
}
.btn::before {             /* colour wipe on hover */
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: var(--fg-b); transform: translateY(101%);
  border-radius: inherit;
  transition: transform .45s var(--ease-out);
}
.btn:hover::before { transform: translateY(0); }
.btn:hover { color: var(--bg-b); }
.btn:active { transform: scale(.97); }
.btn__arrow { display: inline-block; transition: transform .45s var(--ease-out); }
.btn:hover .btn__arrow { transform: translateX(4px); }
.btn--accent { --bg-b: var(--accent); --fg-b: var(--text); color: var(--accent-ink); }
.btn--accent:hover { color: var(--bg); }
.btn--sm { padding: .75em 1.1em; font-size: 14px; }

.link-under {
  font-weight: 600; font-size: 15px;
  background: linear-gradient(currentColor, currentColor) 0 100% / 100% 1px no-repeat;
  padding-bottom: 3px;
  transition: background-size .45s var(--ease-out);
}
.link-under:hover { background-size: 0 1px; background-position: 100% 100%; }

/* =========================================================
   NAV — presenter toolbar
   ========================================================= */
.nav {
  position: fixed; z-index: 100;
  left: calc(var(--frame) + 14px); right: calc(var(--frame) + 14px); top: calc(var(--frame) + 12px);
  color: var(--text);
  transition: transform .6s var(--ease-out);
}
.nav.is-hidden { transform: translateY(calc(-100% - 40px)); }
.nav__inner {
  display: flex; align-items: center; justify-content: space-between; gap: 20px;
  padding: 10px 10px 10px 18px;
  border-radius: 16px;
  transition: background-color .4s, box-shadow .4s;
}
.nav.is-scrolled .nav__inner {
  background: var(--nav-glass);
  backdrop-filter: blur(14px) saturate(140%);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
  box-shadow: 0 0 0 1px var(--line);
}

.logo { display: inline-flex; align-items: center; gap: 10px; font-weight: 700; font-size: 18px; letter-spacing: -.02em; }
.logo__glyph {
  width: 26px; height: 18px; border-radius: 4px;
  border: 2px solid currentColor; position: relative;
  transition: transform .5s var(--ease-out);
}
.logo__glyph i {
  position: absolute; width: 6px; height: 6px; border-radius: 50%;
  background: var(--accent); right: 3px; top: 50%; transform: translateY(-50%);
  box-shadow: 0 0 10px rgba(var(--accent-rgb), .9);
  animation: dot-wander 6s var(--ease-io) infinite;
}
@keyframes dot-wander {
  0%, 100% { right: 3px; top: 50%; }
  30% { right: 12px; top: 30%; }
  60% { right: 7px; top: 70%; }
}
.logo:hover .logo__glyph { transform: rotate(-8deg) scale(1.08); }
.logo__word em { font-family: var(--f-serif); font-style: italic; font-weight: 500; margin: 0 1px; color: var(--accent); }

.nav__right { display: flex; align-items: center; gap: 22px; }
.nav__links { display: flex; align-items: center; gap: 26px; font-size: 15px; font-weight: 500; }
.nav__links > a { position: relative; padding: 4px 0; }
.nav__links > a::after {
  content: ""; position: absolute; left: 0; bottom: 0; width: 100%; height: 1px; background: currentColor;
  transform: scaleX(0); transform-origin: right; transition: transform .4s var(--ease-out);
}
.nav__links > a:hover::after { transform: scaleX(1); transform-origin: left; }

/* "House lights" theme switch */
.lights {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: var(--f-mono); font-size: 11px; letter-spacing: .08em; text-transform: uppercase;
  color: var(--muted);
  padding: 6px 4px;
}
.lights__track {
  position: relative; width: 44px; height: 24px; border-radius: 999px;
  background: var(--surface-2); box-shadow: inset 0 0 0 1px var(--line);
  transition: background-color .4s;
}
.lights__knob {
  position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 12px rgba(var(--accent-rgb), .6);
  transition: transform .5s var(--ease-out), background-color .4s;
}
:root[data-theme="dark"] .lights__knob { transform: translateX(20px); }
.lights__knob::after {          /* tiny filament line inside the bulb */
  content: ""; position: absolute; left: 50%; top: 50%; width: 6px; height: 2px; border-radius: 2px;
  background: var(--accent-ink); opacity: .55; transform: translate(-50%, -50%);
}
.lights__state { min-width: 3ch; color: var(--text); }
.lights:hover .lights__knob { box-shadow: 0 0 18px rgba(var(--accent-rgb), .9); }

.nav__menu { display: none; font-family: var(--f-mono); font-size: 12px; text-transform: uppercase; letter-spacing: .08em; padding: 10px 14px; border: 1px solid currentColor; border-radius: 999px; }

.nav__progress { position: absolute; left: 18px; right: 18px; bottom: -6px; height: 2px; border-radius: 2px; overflow: hidden; opacity: 0; transition: opacity .4s; }
.nav.is-scrolled .nav__progress { opacity: 1; }
.nav__progress span { display: block; height: 100%; width: 100%; background: var(--accent); transform-origin: left; transform: scaleX(var(--p, 0)); }

@media (max-width: 1100px) {
}
@media (max-width: 860px) {
  .nav__links { display: none; }
  .nav__menu { display: inline-block; }
  .nav__right { gap: 12px; }
  .lights__label { display: none; }
}
@media (max-width: 560px) {
  .nav__cta, .lights__state { display: none; }
  .nav__inner { padding-left: 14px; gap: 10px; }
  .logo { font-size: 16px; gap: 8px; }
  .nav__menu { padding: 9px 12px; }
}

/* =========================================================
   01 · HERO — the stage
   ========================================================= */
.hero { padding: var(--frame); position: relative; z-index: 1; }
.stage {
  position: relative;
  min-height: calc(100svh - var(--frame) * 2);
  background: var(--surface);
  color: var(--text);
  border-radius: var(--radius);
  overflow: hidden;
  display: flex; flex-direction: column;
  --pad-x: clamp(28px, 5vw, 72px);
  padding: clamp(88px, 11vh, 120px) var(--pad-x) 22px;
  transform-origin: 50% 0;
  will-change: transform;
}

/* dark theme: the hero and closing stages sit on the true page black, outlined */
:root[data-theme="dark"] .stage,
:root[data-theme="dark"] .closing__stage { background: var(--bg); box-shadow: inset 0 0 0 1px var(--line); }

/* --- background layer 1: slow drifting colour glows --- */
.stage__bg { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.glow {
  position: absolute; border-radius: 50%;
  filter: blur(70px);
  opacity: var(--glow-o, .55);
  will-change: transform;
}
.glow--a { width: 46vw; height: 46vw; right: -8vw; top: -14vw; background: var(--glow-1); animation: drift-a 22s var(--ease-io) infinite alternate; }
.glow--b { width: 34vw; height: 34vw; right: 18vw; bottom: -18vw; background: var(--glow-2); animation: drift-b 26s var(--ease-io) infinite alternate; }
.glow--c { width: 26vw; height: 26vw; left: -8vw; bottom: -10vw; background: var(--glow-3); animation: drift-c 30s var(--ease-io) infinite alternate; }
@keyframes drift-a { to { transform: translate(-8vw, 6vw) scale(1.12); } }
@keyframes drift-b { to { transform: translate(10vw, -6vw) scale(.9); } }
@keyframes drift-c { to { transform: translate(6vw, -4vw) scale(1.15); } }

/* --- texture: halftone dots fading out from a corner --- */
.halftone {
  position: absolute; left: -4%; bottom: -8%; width: 48%; height: 70%;
  background-image: radial-gradient(circle, var(--dot) 1.3px, transparent 1.8px);
  background-size: 10px 10px;
  -webkit-mask-image: radial-gradient(ellipse at 15% 85%, #000 0%, transparent 62%);
  mask-image: radial-gradient(ellipse at 15% 85%, #000 0%, transparent 62%);
}
.halftone--tr { left: auto; bottom: auto; right: -4%; top: -8%;
  -webkit-mask-image: radial-gradient(ellipse at 85% 15%, #000 0%, transparent 62%);
  mask-image: radial-gradient(ellipse at 85% 15%, #000 0%, transparent 62%); }

/* --- background layer 2: editor rulers along the top and left edge --- */
.ruler { position: absolute; pointer-events: none; z-index: 0; color: var(--ruler); }
.ruler--x {
  left: 0; right: 0; top: 0; height: 14px;
  border-bottom: 1px solid var(--line);
  background:
    repeating-linear-gradient(90deg, currentColor 0 1px, transparent 1px 80px) 0 100% / 100% 10px no-repeat,
    repeating-linear-gradient(90deg, currentColor 0 1px, transparent 1px 16px) 0 100% / 100% 4px no-repeat;
}
.ruler--y {
  top: 0; bottom: 0; left: 0; width: 14px;
  border-right: 1px solid var(--line);
  background:
    repeating-linear-gradient(180deg, currentColor 0 1px, transparent 1px 80px) 100% 0 / 10px 100% no-repeat,
    repeating-linear-gradient(180deg, currentColor 0 1px, transparent 1px 16px) 100% 0 / 4px 100% no-repeat;
}

/* --- background layer 3: smart guides that snap to the copy --- */
.guide { position: absolute; pointer-events: none; z-index: 0; }
.guide--v {
  top: 0; bottom: 0; left: calc(var(--pad-x) - 1px); width: 0;
  border-left: 1px dashed var(--guide);
  transform: scaleY(0); transform-origin: top;
}
.hero__title { position: relative; }
.hero__title::before {                 /* horizontal guide on the headline's cap line */
  /* --guide-top is measured in js/main.js so the line sits exactly on the
     tops of the tallest letters (b, d, l, h); .1em is only a fallback */
  content: ""; position: absolute; left: -100vw; right: -100vw; top: var(--guide-top, .1em); height: 0;
  border-top: 1px dashed var(--guide);
  transform: scaleX(0); transform-origin: left;
  pointer-events: none;
}
.is-ready .guide--v { animation: guide-in 1.4s var(--ease-out) .2s forwards; }
.is-ready .hero__title::before { animation: guide-in 1.6s var(--ease-out) .35s forwards; }
@keyframes guide-in { to { transform: none; } }

/* film grain */
.stage::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  opacity: var(--grain-opacity); mix-blend-mode: var(--grain-blend);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.hero__grid {
  flex: 1;
  display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr);
  align-items: center; gap: clamp(24px, 4vw, 64px);
  position: relative; z-index: 1;
}

.eyebrow { display: inline-flex; align-items: center; gap: 10px; color: var(--muted); margin-bottom: 24px; }
.rec { width: 8px; height: 8px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 12px rgba(var(--accent-rgb), .8); animation: rec 1.6s steps(2, jump-none) infinite; }
@keyframes rec { 50% { opacity: .25; } }

.hero__title {
  font-size: clamp(2.8rem, 5.6vw, 7.2rem);
  line-height: .9;
  letter-spacing: -.035em;
  font-weight: 800;
  font-variation-settings: "wdth" 72;
  margin-bottom: 30px;
}
.hero__title .line { display: block; overflow: hidden; padding-bottom: .06em; margin-bottom: -.06em; white-space: nowrap; }
.hero__title .line > span { display: inline-block; transform: translateY(105%); }
.hero__title .serif { color: var(--accent); font-weight: 500; letter-spacing: -.02em; padding-right: .04em; }
.is-ready .hero__title .line > span {
  animation: rise 1.1s var(--ease-out) forwards, widen 1.6s var(--ease-out) forwards;
}
.is-ready .hero__title .line:nth-child(2) > span { animation-delay: .12s, .12s; }
@keyframes rise { to { transform: translateY(0); } }
@keyframes widen { from { font-variation-settings: "wdth" 62; } to { font-variation-settings: "wdth" 72; } }

/* highlighter swipe behind "own the room" in light theme / underline glow in dark */
.mark { position: relative; white-space: nowrap; }
.mark::after {
  content: ""; position: absolute; left: -.04em; right: -.04em; bottom: .08em; height: .16em; z-index: -1;
  background: var(--accent-2); opacity: .55; border-radius: 2px;
  transform: scaleX(0); transform-origin: left;
}
:root[data-theme="dark"] .mark::after { background: var(--accent-2); opacity: 1; height: .07em; bottom: .02em; }
.hero__title .line > span { position: relative; z-index: 0; }
.is-ready .mark::after { animation: swipe .9s var(--ease-out) 1.1s forwards; }
@keyframes swipe { to { transform: scaleX(1); } }

.hero__lede { max-width: 46ch; color: var(--text-soft); font-size: clamp(16px, 1.25vw, 19px); margin-bottom: 34px; }

.hero__actions { display: flex; align-items: center; gap: 28px; flex-wrap: wrap; margin-bottom: 44px; }

.hero__facts { display: flex; flex-wrap: wrap; gap: 10px 28px; color: var(--muted); font-size: 11px; }
.hero__facts li { display: flex; gap: 8px; align-items: baseline; }
.hero__facts b { color: var(--text); font-weight: 500; }
.hero__facts li + li::before { content: ""; width: 4px; height: 4px; border-radius: 50%; background: var(--muted); align-self: center; margin-left: -16px; margin-right: 8px; }

/* staged hero entrance */
.hero__lede, .hero__actions, .hero__facts, .eyebrow { opacity: 0; transform: translateY(16px); }
.is-ready .eyebrow { animation: fadeup .9s var(--ease-out) .05s forwards; }
.is-ready .hero__lede { animation: fadeup .9s var(--ease-out) .45s forwards; }
.is-ready .hero__actions { animation: fadeup .9s var(--ease-out) .58s forwards; }
.is-ready .hero__facts { animation: fadeup .9s var(--ease-out) .7s forwards; }
@keyframes fadeup { to { opacity: 1; transform: none; } }

/* ---------- The deck (mini slides) ---------- */
.deck {
  position: relative;
  aspect-ratio: 1 / 1;
  width: 100%; max-width: 560px; justify-self: center;
}
.mini {
  --x: 0%; --y: 0%; --r: 0deg;
  position: absolute; left: 50%; top: 50%;
  width: 66%; aspect-ratio: 16 / 9;
  border-radius: 10px;
  padding: 5.5% 6%;
  display: flex; flex-direction: column;
  overflow: hidden;
  box-shadow: var(--shadow-card);
  /* dealt from below the table */
  transform: translate(-50%, 120vh) rotate(-30deg);
  transition: transform .9s var(--ease-out), box-shadow .5s, background-color .4s, color .4s;
  font-size: clamp(9px, 1vw, 13px);
  z-index: calc(var(--i) + 1);
}
.is-ready .mini {
  transform: translate(calc(-50% + var(--x)), calc(-50% + var(--y))) rotate(var(--r));
  transition-delay: calc(.35s + var(--i) * .09s);
}
.mini:nth-child(1) { --x: -18%; --y: -62%; --r: -9deg; }
.mini:nth-child(2) { --x: 20%;  --y: -40%; --r: 7deg; }
.mini:nth-child(3) { --x: -24%; --y: 6%;   --r: -3deg; }
.mini:nth-child(4) { --x: 22%;  --y: 30%;  --r: 10deg; }
.mini:nth-child(5) { --x: -6%;  --y: 66%;  --r: -6deg; }

/* hover a card: it pops to the front, lifts and squares up */
.deck.is-dealt .mini { transition-delay: 0s; transition-duration: .55s; }
.deck.is-dealt .mini:hover {
  z-index: 20;
  transform: translate(calc(-50% + var(--x)), calc(-50% + var(--y) - 7%)) rotate(0deg) scale(1.06);
  box-shadow: 0 0 0 2px var(--accent), var(--shadow-card);
}

.mini__tag { font-size: .8em; opacity: .7; letter-spacing: .06em; }
.mini__sub { font-size: .95em; opacity: .75; }

.mini--title { background: var(--m1-bg); color: var(--m1-fg); justify-content: space-between; }
.mini--title strong { font-size: 3.1em; font-weight: 800; letter-spacing: -.04em; line-height: .9; font-variation-settings: "wdth" 80; }
.mini__bar { width: 22%; height: 4px; background: var(--m1-bar); border-radius: 2px; }

.mini--agenda { background: var(--m2-bg); color: var(--m2-fg); gap: 8%; }
.mini--agenda ol { display: grid; gap: .5em; font-size: 1.25em; font-weight: 600; letter-spacing: -.01em; }
.mini--agenda li { display: flex; gap: .8em; border-top: 1px solid rgba(0, 0, 0, .1); padding-top: .4em; }
.mini--agenda b { font-family: var(--f-mono); font-weight: 500; color: var(--m2-num); font-size: .75em; }

.mini--chart { background: var(--m3-bg); color: var(--m3-fg); gap: 8%; }
.bars { flex: 1; display: flex; align-items: flex-end; gap: 6%; border-bottom: 1px solid var(--m3-bar); }
.bars i { flex: 1; height: 0; background: var(--m3-bar); border-radius: 3px 3px 0 0; transition: height 1s var(--ease-out), background-color .4s; }
.bars i.hot { background: var(--m3-hot); }
.is-ready .bars i { height: var(--h); transition-delay: calc(1.1s + var(--n, 0) * .07s); }
.bars i:nth-child(2) { --n: 1; } .bars i:nth-child(3) { --n: 2; } .bars i:nth-child(4) { --n: 3; }
.bars i:nth-child(5) { --n: 4; } .bars i:nth-child(6) { --n: 5; }

.mini--number { background: var(--m4-bg); color: var(--m4-fg); justify-content: flex-end; }
.mini--number strong { font-size: 5.2em; font-weight: 800; letter-spacing: -.06em; line-height: .85; font-variation-settings: "wdth" 62; }
.mini--number small { font-size: .5em; vertical-align: top; }

.mini--quote { background: var(--m5-bg); color: var(--m5-fg); justify-content: space-between; }
.mini--quote q { font-size: 2.6em; line-height: 1; quotes: "“" "”"; }

/* ---------- Presenter bar ---------- */
.stage__foot {
  position: relative; z-index: 1;
  display: flex; justify-content: space-between; align-items: center;
  padding-top: 18px; margin-top: 18px;
  border-top: 1px solid var(--line);
  color: var(--muted); font-size: 11px;
}
kbd {
  display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 5px; margin: 0 4px;
  border: 1px solid var(--line); border-bottom-width: 2px; border-radius: 5px;
  font-family: var(--f-mono); font-size: 11px; color: var(--text); background: var(--bg);
}
.stage__meta { display: flex; gap: 28px; color: var(--muted); }
.stage__count { color: var(--text); }
.stage__count i { font-style: normal; color: var(--muted); margin: 0 4px; }

/* ---------- Hero responsive ---------- */
@media (max-width: 980px) {
  .hero__grid { grid-template-columns: 1fr; padding-top: 8px; }
  .deck { max-width: 460px; aspect-ratio: 5 / 4; margin-top: 10px; }
  .stage__meta { display: none; }
}
@media (max-width: 560px) {
  :root { --frame: 6px; --radius: 18px; }
  .stage { padding-top: 92px; }
  .hero__title { font-size: clamp(2.5rem, 12.5vw, 4rem); }
  .hero__title .line { white-space: normal; }
  .hero__actions { gap: 20px; }
  .deck { aspect-ratio: 1 / 1; }
  .mini { width: 74%; }
  .hint { display: none; }
  .stage__foot { justify-content: flex-end; }
  .hero__facts { flex-direction: column; gap: 8px; }
  .hero__facts li + li::before { display: none; }
}

/* =========================================================
   SHARED SECTION PIECES (used by every section from 02 on)
   ========================================================= */
.section {
  position: relative; z-index: 2;            /* slides over the receding hero */
  background: var(--bg);
  padding: clamp(80px, 11vw, 150px) 0;
}
.wrap { width: min(1320px, 100% - 2 * (var(--frame) + clamp(16px, 4vw, 56px))); margin-inline: auto; }


.h2 {
  font-size: clamp(2.1rem, 4.3vw, 4.4rem);
  line-height: .96; letter-spacing: -.03em;
  font-weight: 800; font-variation-settings: "wdth" 76;
  max-width: 17ch;
}
.h2 .serif { color: var(--accent); font-weight: 500; }

/* scroll reveal: fade + rise, staggered with --d */
[data-reveal] { opacity: 0; transform: translateY(26px); transition: opacity .9s var(--ease-out), transform .9s var(--ease-out); transition-delay: var(--d, 0s); }
[data-reveal].is-in { opacity: 1; transform: none; }

/* =========================================================
   02 · THE PROBLEM → THE FIX — before / after wipe (three examples)
   ========================================================= */
.fix {
  background: var(--surface);
  border-radius: var(--radius) var(--radius) 0 0;
  margin-inline: var(--frame);
}
.fix__lede { max-width: 40ch; color: var(--text-soft); font-size: 16px; }

.compare {
  --pos: 50%;
  position: relative;
  margin-top: clamp(40px, 5vw, 64px);
  max-width: min(100%, calc(68vh * 16 / 9));   /* never taller than about two thirds of the screen */
  margin-inline: auto;
  aspect-ratio: 16 / 9;
  border-radius: 18px;
  overflow: hidden;
  container-type: inline-size;
  box-shadow: var(--shadow-card), 0 0 0 1px var(--line);
  user-select: none;
  touch-action: pan-y;
}
.slide-before, .slide-after { position: absolute; inset: 0; }

/* ---- BEFORE: a lovingly bad slide ---- */
.slide-before {
  background: linear-gradient(180deg, #2F5FB3 0%, #9DB8E8 100%);
  color: #102040;
  font-family: "Times New Roman", Times, serif;
  padding: 3cqw 4cqw;
  display: flex; flex-direction: column;
}
.sb__title {
  text-align: center; font-family: "Comic Sans MS", "Comic Sans", "Chalkboard SE", cursive;
  font-size: 5cqw; font-weight: 700; color: #FFE44D;
  text-shadow: .25cqw .25cqw 0 #C0392B, .5cqw .5cqw .6cqw rgba(0, 0, 0, .4);
  letter-spacing: .05em; margin-bottom: 2cqw;
}
.sb__body { flex: 1; display: grid; grid-template-columns: 1.6fr 1fr; gap: 2cqw; align-items: center; }
.sb__body ul { list-style: square; padding-left: 2.4cqw; font-size: 1.55cqw; line-height: 1.25; }
.sb__body li { margin-bottom: .55cqw; }
.sb__body li:nth-child(2) { color: #8B0000; font-weight: 700; }
.sb__body li:nth-child(4) { font-family: Arial, sans-serif; font-style: italic; }
.sb__body li:nth-child(6) { text-decoration: underline; }
.sb__pie {
  aspect-ratio: 1; border-radius: 50%; position: relative;
  background: conic-gradient(#E74C3C 0 18%, #F1C40F 0 31%, #2ECC71 0 44%, #9B59B6 0 57%, #E67E22 0 69%, #1ABC9C 0 81%, #34495E 0 100%);
  box-shadow: 0 1.2cqw 0 #6b2a20, 0 1.6cqw 1.5cqw rgba(0, 0, 0, .35);
  transform: perspective(40cqw) rotateX(42deg);
}
.sb__pie span { position: absolute; left: 50%; top: -3cqw; transform: translateX(-50%); font: italic 1.4cqw "Comic Sans MS", cursive; white-space: nowrap; color: #fff; }
.sb__star { position: absolute; right: 3cqw; top: 2cqw; font-size: 5cqw; color: #FFD700; transform: rotate(18deg); text-shadow: 0 0 1cqw #fff; }
.sb__foot { font-size: 1.1cqw; font-family: Arial, sans-serif; color: #fff; opacity: .9; }

/* ---- AFTER: the CreateMySlides version (theme-aware) ---- */
.slide-after {
  background: var(--bg);
  color: var(--text);
  clip-path: inset(0 0 0 var(--pos));
  display: grid; grid-template-columns: 1fr 1fr; gap: 4cqw;
  padding: 6cqw 6cqw 5cqw;
}
.sa__left { display: flex; flex-direction: column; justify-content: center; gap: 2cqw; order: 2; }  /* headline sits on the visible (right) half at rest */
.sa__tag { font-size: 1.15cqw; color: var(--accent); }
.sa__title { font-size: 4.6cqw; line-height: .98; font-weight: 800; letter-spacing: -.035em; font-variation-settings: "wdth" 74; }
.sa__title .serif { color: var(--accent); font-weight: 500; }
.sa__sub { font-size: 1.6cqw; color: var(--text-soft); max-width: 30ch; }
.sa__src { font-size: 1cqw; color: var(--muted); margin-top: 1cqw; }

.sa__chart { display: flex; align-items: flex-end; }
.sa__bars { width: 100%; height: 78%; display: flex; align-items: flex-end; gap: 3cqw; border-bottom: 1px solid var(--line); }
.sa__bars i {
  flex: 1; height: var(--h); position: relative;
  background: var(--surface-2); border-radius: .8cqw .8cqw 0 0;
}
.sa__bars i.hot { background: var(--accent); }
.sa__bars b { position: absolute; left: 50%; bottom: -2.6cqw; transform: translateX(-50%); font: 500 1.1cqw var(--f-mono); color: var(--muted); }
.sa__bars em { position: absolute; left: 50%; top: -3.6cqw; transform: translateX(-50%); font: 800 2.2cqw var(--f-sans); font-style: normal; color: var(--accent); letter-spacing: -.03em; }

.pin {
  position: absolute; display: inline-flex; align-items: center; gap: .7cqw;
  padding: .45cqw 1cqw .45cqw .45cqw; border-radius: 999px;
  background: var(--text); color: var(--bg);
  font-size: max(10px, 1.05cqw); font-weight: 600; white-space: nowrap;
  box-shadow: 0 .6cqw 1.6cqw -.4cqw rgba(0, 0, 0, .35);
  transform: scale(.6); opacity: 0;
  transition: transform .6s var(--ease-out), opacity .4s;
}
.pin b { display: grid; place-items: center; width: max(16px, 1.7cqw); height: max(16px, 1.7cqw); border-radius: 50%; background: var(--accent); color: var(--accent-ink); font-size: .9em; }
.compare.is-in .pin { transform: none; opacity: 1; }
.compare.is-in .pin:nth-of-type(2) { transition-delay: .15s; }
.compare.is-in .pin:nth-of-type(3) { transition-delay: .3s; }

/* ---- divider, knob, labels ---- */
.compare__line {
  position: absolute; top: 0; bottom: 0; left: var(--pos); width: 2px; margin-left: -1px;
  background: var(--accent); z-index: 3; pointer-events: none;
}
.compare__knob {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  width: 46px; height: 46px; border-radius: 50%;
  background: var(--accent); color: var(--accent-ink);
  display: flex; align-items: center; justify-content: center; gap: 6px;
  font-size: 18px; font-weight: 700; line-height: 1;
  box-shadow: 0 0 0 6px rgba(var(--accent-rgb), .22), 0 10px 24px -8px rgba(0, 0, 0, .45);
  transition: transform .35s var(--ease-out);
}
.compare:hover .compare__knob, .compare__range:focus-visible ~ .compare__line .compare__knob { transform: translate(-50%, -50%) scale(1.08); }
.compare__label {
  position: absolute; top: 14px; z-index: 3; pointer-events: none;
  font-size: 10.5px; padding: 5px 9px; border-radius: 6px;
  background: rgba(0, 0, 0, .55); color: #fff; backdrop-filter: blur(6px);
}
.compare__label--l { left: 14px; }
.compare__label--r { right: 14px; background: var(--accent); color: var(--accent-ink); }

.compare__range {
  position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; z-index: 4;
  opacity: 0; cursor: ew-resize; -webkit-appearance: none; appearance: none;
}
.compare__range::-webkit-slider-thumb { -webkit-appearance: none; width: 60px; height: 100vh; cursor: ew-resize; }
.compare__range::-moz-range-thumb { width: 60px; height: 100vh; border: 0; cursor: ew-resize; }
.compare__range:focus-visible { opacity: 0; }
.compare:has(.compare__range:focus-visible) { outline: 2px solid var(--accent); outline-offset: 4px; }

.services { padding-bottom: 24px; }
.services + .work { padding-top: clamp(32px, 3vw, 48px); }

/* ---- example sets: one pair shows at a time ---- */
.cmp-set { position: absolute; inset: 0; opacity: 0; visibility: hidden; transition: opacity .45s var(--ease-out), visibility 0s linear .45s; }
.cmp-set.is-on { opacity: 1; visibility: visible; transition: opacity .45s var(--ease-out); }

/* example 2 · before: clip-art market slide */
.sb--2 { background: #FFFDF2; color: #333; }
.sb--2 .sb__title { font-family: Impact, "Arial Black", sans-serif; color: #1F7A3A; text-shadow: .2cqw .2cqw 0 #A3D9A5, .45cqw .45cqw 0 #555; letter-spacing: .02em; }
.sb--2 .sb__foot { color: #777; }
.sb__venn { position: relative; aspect-ratio: 1; }
.sb__venn i { position: absolute; width: 62%; aspect-ratio: 1; border-radius: 50%; mix-blend-mode: multiply; opacity: .8; }
.sb__venn i:nth-child(1) { left: 0; top: 0; background: #FF4136; }
.sb__venn i:nth-child(2) { right: 0; top: 0; background: #FFDC00; }
.sb__venn i:nth-child(3) { left: 19%; bottom: 0; background: #0074D9; }

/* example 3 · before: glowing green roadmap */
.sb--3 { background: radial-gradient(circle at 30% 20%, #3E7D3A, #123A12); color: #E8F5C8; }
.sb--3 .sb__title { font-family: "Brush Script MT", "Segoe Script", cursive; font-weight: 400; font-size: 5.6cqw; color: #FFFFFF; text-shadow: 0 0 1.2cqw #9CFF6B, .3cqw .3cqw 0 #000; letter-spacing: 0; }
.sb--3 .sb__body li:nth-child(2) { color: #FFDC00; }
.sb__clip { display: flex; gap: .8cqw; justify-content: center; transform: rotate(-8deg); }
.sb__clip i { width: 6.5cqw; height: 9cqw; clip-path: polygon(0 0, 60% 0, 100% 50%, 60% 100%, 0 100%, 40% 50%); }
.sb__clip i:nth-child(1) { background: #FF851B; }
.sb__clip i:nth-child(2) { background: #FFDC00; }
.sb__clip i:nth-child(3) { background: #FF4136; }

/* example 2 · after: nested market circles */
.sa__nest { position: relative; align-self: center; justify-self: center; width: 32cqw; aspect-ratio: 1; }
.sa__nest span {
  position: absolute; left: 50%; bottom: 0; transform: translateX(-50%);
  aspect-ratio: 1; border-radius: 50%;
  display: flex; flex-direction: column; align-items: center;
  font: 500 1.05cqw var(--f-mono); text-transform: uppercase; letter-spacing: .06em; color: var(--muted);
}
.sa__nest b { font: 800 2.6cqw var(--f-sans); letter-spacing: -.03em; text-transform: none; color: var(--text); }
.sa__nest .n1 { width: 100%; padding-top: 2.4cqw; background: var(--surface-2); }
.sa__nest .n2 { width: 64%; padding-top: 2.2cqw; background: color-mix(in srgb, var(--accent) 28%, var(--bg)); }
.sa__nest .n3 { width: 34%; justify-content: center; background: var(--accent); color: var(--accent-ink); }
.sa__nest .n3 b { font-size: 2.1cqw; color: var(--accent-ink); }

/* example 3 · after: four-quarter timeline */
.sa__line { align-self: center; list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); position: relative; }
.sa__line::before { content: ""; position: absolute; left: 12.5%; right: 12.5%; top: 1.1cqw; height: 2px; background: var(--line); }
.sa__line li { display: grid; justify-items: center; gap: 1.2cqw; text-align: center; position: relative; }
.sa__line li::before { content: ""; width: 2.2cqw; height: 2.2cqw; border-radius: 50%; background: var(--surface-2); box-shadow: 0 0 0 .5cqw var(--bg); }
.sa__line li.hot::before { background: var(--accent); }
.sa__line b { font: 800 2.8cqw var(--f-sans); letter-spacing: -.03em; }
.sa__line li.hot b { color: var(--accent); }
.sa__line span { font-size: 1.4cqw; color: var(--text-soft); }

/* ---- arrows under the frame ---- */
.compare__nav { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin: 18px auto 0; max-width: min(100%, calc(68vh * 16 / 9)); }
.compare__caption { font-size: 11px; color: var(--muted); }
.compare__caption b { color: var(--accent); font-weight: 500; }
.compare__arrows { display: flex; gap: 10px; flex-shrink: 0; }
.compare__btn {
  width: 46px; height: 46px; border-radius: 50%; border: 0; cursor: pointer;
  background: var(--bg); color: var(--text); font: 600 18px var(--f-sans);
  box-shadow: inset 0 0 0 1px var(--line);
  transition: background-color .25s, color .25s, transform .3s var(--ease-out);
}
.compare__btn:hover { background: var(--accent); color: var(--accent-ink); }
.compare__btn:active { transform: scale(.94); }

@media (max-width: 760px) {
  .compare { aspect-ratio: 4 / 3; }
  .pin { display: none; }
}

/* =========================================================
   04 · SERVICES — stacking deck of cards
   ========================================================= */
:root, :root[data-theme="light"] {
  --c1-bg: #20A4B6; --c1-fg: #FFFFFF; --c1-hi: #FFFFFF;
  --c2-bg: #FFFFFF; --c2-fg: #0B1F24; --c2-hi: #20A4B6;
  --c3-bg: #0B1F24; --c3-fg: #E6F6F8; --c3-hi: #7FD3DE;
  --c4-bg: #CDEEF2; --c4-fg: #0B1F24; --c4-hi: #20A4B6;
  --c5-bg: #0E7C8C; --c5-fg: #FFFFFF; --c5-hi: #FFFFFF;
  --vz-bg: #FFFFFF; --vz-fg: #0B1F24; --vz-hot-bg: #0B1F24; --vz-hot-fg: #FFFFFF;
}
:root[data-theme="dark"] {
  --c1-bg: #D4FF3F; --c1-fg: #0B0B0B; --c1-hi: #0B0B0B;
  --c2-bg: #161616; --c2-fg: #FAF9F5; --c2-hi: #FF2DA8;
  --c3-bg: #FF2DA8; --c3-fg: #0B0B0B; --c3-hi: #0B0B0B;
  --c4-bg: #232323; --c4-fg: #FAF9F5; --c4-hi: #D4FF3F;
  --c5-bg: #FAF9F5; --c5-fg: #0B0B0B; --c5-hi: #D1007F;
  --vz-bg: #141413; --vz-fg: #FAF9F5; --vz-hot-bg: #FAF9F5; --vz-hot-fg: #141413;
}

.services__aside { max-width: 40ch; color: var(--text-soft); font-size: 16px; display: grid; gap: 14px; justify-items: start; }
.services__aside .link-under { color: var(--text); }

/* flow-root stops the last card's margin collapsing out of the stack (which
   made the stack end early and drag the earlier cards up too soon) */
.stack { --n: 5; --step: 24px; --gap: 9vh; display: flow-root; margin-top: clamp(48px, 6vw, 80px); }
.stack__hold { height: 4vh; }      /* the finished deck pauses here before leaving */
.scard {
  --top: calc(92px + var(--i) * var(--step));
  position: sticky; top: var(--top);
  height: min(74vh, 620px);
  /* Each card's bottom margin shrinks by one step so every card hits the end of
     the stack at the same moment: the last card settles fully on top, the deck
     holds for --gap, then all cards leave together with their offsets intact. */
  margin-bottom: calc(var(--gap) + (var(--n) - 1 - var(--i)) * var(--step));
}
.scard__inner {
  --fg-12: color-mix(in srgb, var(--fg) 12%, transparent);
  --fg-22: color-mix(in srgb, var(--fg) 22%, transparent);
  --fg-60: color-mix(in srgb, var(--fg) 62%, transparent);
  height: 100%;
  background: var(--bg-c); color: var(--fg);
  border-radius: 24px;
  padding: clamp(18px, 2.2vw, 30px) clamp(20px, 3.4vw, 48px) clamp(24px, 3vw, 44px);
  display: flex; flex-direction: column;
  box-shadow: 0 -1px 0 var(--fg-12) inset, 0 -24px 60px -30px rgba(0, 0, 0, .35);
  transform-origin: 50% 0;
  transform: scale(calc(1 - var(--p, 0) * .06));
  filter: brightness(calc(1 - var(--p, 0) * .18));
  will-change: transform;
}
.scard--1 .scard__inner { --bg-c: var(--c1-bg); --fg: var(--c1-fg); --hi: var(--c1-hi); }
.scard--2 .scard__inner { --bg-c: var(--c2-bg); --fg: var(--c2-fg); --hi: var(--c2-hi); box-shadow: inset 0 0 0 1px var(--line), 0 -24px 60px -30px rgba(0, 0, 0, .25); }
.scard--3 .scard__inner { --bg-c: var(--c3-bg); --fg: var(--c3-fg); --hi: var(--c3-hi); }
.scard--4 .scard__inner { --bg-c: var(--c4-bg); --fg: var(--c4-fg); --hi: var(--c4-hi); }
.scard--5 .scard__inner { --bg-c: var(--c5-bg); --fg: var(--c5-fg); --hi: var(--c5-hi); }

.scard__bar {
  display: flex; justify-content: space-between; gap: 16px;
  font-size: 11px; color: var(--fg-60);
  padding-bottom: 14px; border-bottom: 1px solid var(--fg-22);
}
.scard__bar span:nth-child(2) { flex: 1; }
.scard__body {
  flex: 1; min-height: 0;
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center;
  gap: clamp(24px, 4vw, 64px); padding-top: clamp(16px, 2vw, 28px);
}
.scard__title {
  font-size: clamp(2.6rem, 5.4vw, 5.6rem); line-height: .9; letter-spacing: -.04em;
  font-weight: 800; font-variation-settings: "wdth" 68;
  margin-bottom: 18px;
}
.scard__desc { max-width: 40ch; font-size: clamp(15px, 1.2vw, 17px); color: var(--fg-60); margin-bottom: 22px; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 26px; }
.chips li { font-size: 13px; padding: 6px 12px; border-radius: 999px; box-shadow: inset 0 0 0 1px var(--fg-22); }
.scard__link { display: inline-flex; gap: 10px; font-weight: 650; font-size: 15px; border-bottom: 1px solid var(--fg-22); padding-bottom: 4px; transition: border-color .3s; }
.scard__link span { transition: transform .4s var(--ease-out); }
.scard__link:hover { border-color: var(--fg); }
.scard__link:hover span { transform: translateX(5px); }

.scard__visual { height: 100%; min-height: 0; display: grid; place-items: center; position: relative; }

/* visual 1 — fanned pitch slides, bobbing slowly */
.vz-fan { position: relative; width: 100%; max-width: 460px; aspect-ratio: 5 / 4; }
.vz-s {
  position: absolute; width: 68%; aspect-ratio: 16 / 9; border-radius: 10px;
  background: var(--vz-bg); color: var(--vz-fg);
  padding: 5% 6%; display: flex; flex-direction: column; justify-content: space-between;
  box-shadow: 0 24px 50px -20px rgba(0, 0, 0, .5);
  animation: bob 7s var(--ease-io) infinite alternate;
}
.vz-s span { font-size: 10px; opacity: .6; }
.vz-s b { font-size: clamp(14px, 1.5vw, 20px); font-weight: 750; letter-spacing: -.02em; line-height: 1.05; }
.vz-s b.big { font-size: clamp(30px, 3.6vw, 52px); font-weight: 800; letter-spacing: -.05em; font-variation-settings: "wdth" 66; }
.vz-s small { font-size: 11px; opacity: .7; }
.vz-s:nth-child(1) { left: 0; top: 4%; --r: -8deg; }
.vz-s:nth-child(2) { right: 0; top: 22%; --r: 5deg; animation-delay: -2s; }
.vz-s:nth-child(3) { left: 14%; bottom: 0; --r: -2deg; animation-delay: -4s; }
.vz-s--hot { background: var(--vz-hot-bg); color: var(--vz-hot-fg); }
@keyframes bob { from { transform: translateY(0) rotate(var(--r)); } to { transform: translateY(-10px) rotate(calc(var(--r) * .7)); } }

/* visual 2 — KPI tiles with sparklines that draw in */
.vz-kpi { width: 100%; max-width: 460px; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.vz-kpi > div { padding: 16px; border-radius: 14px; background: var(--fg-12); display: grid; gap: 4px; }
.vz-kpi span { font-size: 10px; color: var(--fg-60); }
.vz-kpi b { font-size: clamp(22px, 2.4vw, 34px); font-weight: 800; letter-spacing: -.04em; font-variation-settings: "wdth" 70; }
.vz-kpi svg { width: 100%; height: 34px; overflow: visible; }
.vz-kpi polyline { fill: none; stroke: var(--hi); stroke-width: 2.5; vector-effect: non-scaling-stroke; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 200; stroke-dashoffset: 200; transition: stroke-dashoffset 1.6s var(--ease-out); }
.scard.is-on .vz-kpi polyline { stroke-dashoffset: 0; }
.vz-kpi > div:nth-child(2) polyline { transition-delay: .15s; }
.vz-kpi > div:nth-child(3) polyline { transition-delay: .3s; }
.vz-kpi > div:nth-child(4) polyline { transition-delay: .45s; }

/* visual — presentation "Why?" with a sweeping stage beam */
.vz-stage {
  position: relative; width: 100%; max-width: 500px; aspect-ratio: 16 / 9; border-radius: 14px; overflow: hidden;
  background: var(--fg-12); display: grid; place-items: center;
}
.vz-stage span { position: absolute; left: 14px; top: 12px; font-size: 10px; color: var(--fg-60); }
.vz-stage b { font-size: clamp(64px, 9vw, 140px); line-height: 1; color: var(--hi); position: relative; z-index: 1; }
.vz-stage__beam {
  position: absolute; inset: -20%;
  background: radial-gradient(circle at var(--bx, 30%) 40%, color-mix(in srgb, var(--hi) 35%, transparent), transparent 40%);
  animation: beam 9s var(--ease-io) infinite alternate;
}
@property --bx { syntax: "<percentage>"; inherits: false; initial-value: 30%; }
@keyframes beam { to { --bx: 70%; } }

/* visual — interactive deck: clickable home menu + pointer */
.vz-menu { position: relative; width: 100%; max-width: 460px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.vz-menu__top { grid-column: 1 / -1; font-size: 10px; color: var(--fg-60); }
.vz-menu > div { padding: 16px 14px; border-radius: 14px; background: var(--fg-12); display: grid; gap: 4px; }
.vz-menu > div span { font-size: 10px; opacity: .6; }
.vz-menu > div b { font-size: clamp(16px, 1.6vw, 22px); font-weight: 750; letter-spacing: -.02em; line-height: 1.1; }
.vz-menu > div.hot { background: var(--hi); color: var(--bg-c); }
.vz-menu__cursor {
  position: absolute; right: 22%; top: 46%; width: 20px; height: 24px;
  background: var(--fg); clip-path: polygon(0 0, 0 78%, 26% 58%, 44% 100%, 58% 94%, 40% 54%, 76% 54%);
  animation: menu-point 3.2s var(--ease-io) infinite;
}
.vz-menu__cursor::after {
  content: ''; position: absolute; left: -10px; top: -10px; width: 20px; height: 20px; border-radius: 50%;
  border: 2px solid var(--fg); opacity: 0; animation: menu-click 3.2s infinite;
}
@keyframes menu-click { 0%, 52% { opacity: 0; transform: scale(.4); } 56% { opacity: .7; } 72%, 100% { opacity: 0; transform: scale(1.6); } }
@keyframes menu-point { 0%, 100% { transform: translate(-60%, 120%); } 45%, 70% { transform: translate(0, 0); } 55% { transform: translate(0, 0) scale(.85); } }

/* visual 5 — template layout thumbnails */
.vz-grid { width: 100%; max-width: 460px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.vz-grid i {
  --b: color-mix(in srgb, var(--fg) 34%, transparent);
  --h: var(--hi);
  aspect-ratio: 16 / 10; border-radius: 8px; background-color: var(--fg-12);
  background-repeat: no-repeat;
  transition: transform .5s var(--ease-out);
}
.vz-grid i:hover { transform: translateY(-4px); }
.vz-grid .l1, .master__thumb .l1 { background-image: linear-gradient(var(--h), var(--h)), linear-gradient(var(--b), var(--b)); background-size: 55% 14%, 35% 7%; background-position: 14% 42%, 14% 62%; }
.vz-grid .l2, .master__thumb .l2 { background-image: linear-gradient(var(--b), var(--b)), linear-gradient(var(--b), var(--b)), linear-gradient(var(--h), var(--h)); background-size: 36% 60%, 36% 60%, 30% 8%; background-position: 12% 70%, 88% 70%, 12% 16%; }
.vz-grid .l3, .master__thumb .l3 { background-image: linear-gradient(var(--h), var(--h)), linear-gradient(var(--b), var(--b)); background-size: 44% 100%, 34% 8%; background-position: 100% 0, 10% 40%; }
.vz-grid .l4, .master__thumb .l4 { background-image: linear-gradient(var(--b), var(--b)), linear-gradient(var(--b), var(--b)), linear-gradient(var(--h), var(--h)), linear-gradient(var(--b), var(--b)); background-size: 12% 30%, 12% 46%, 12% 64%, 12% 38%; background-position: 20% 82%, 40% 82%, 60% 82%, 80% 82%; }
.vz-grid .l5, .master__thumb .l5 { background-image: linear-gradient(var(--h), var(--h)), linear-gradient(var(--b), var(--b)); background-size: 30% 30%, 60% 6%; background-position: 50% 34%, 50% 74%; }
.vz-grid .l6, .master__thumb .l6 { background-image: linear-gradient(var(--b), var(--b)), linear-gradient(var(--b), var(--b)), linear-gradient(var(--b), var(--b)), linear-gradient(var(--h), var(--h)); background-size: 24% 24%, 24% 24%, 24% 24%, 24% 24%; background-position: 20% 30%, 80% 30%, 20% 75%, 80% 75%; }

@media (max-width: 860px) {
  .stack { --step: 14px; --gap: 6vh; }
  .scard { --top: calc(78px + var(--i) * var(--step)); height: auto; min-height: 0; }
  .scard__body { grid-template-columns: 1fr; }
  .scard__visual { height: 160px; }
  .vz-fan { max-width: 240px; }
  .vz-kpi { gap: 8px; }
  .vz-kpi > div { padding: 8px 10px; gap: 0; }
  .vz-kpi b { font-size: 18px; }
  .vz-kpi svg { height: 16px; }
  .vz-grid, .vz-menu { max-width: 300px; }
  .vz-menu { gap: 6px; }
  .vz-menu > div { padding: 8px 10px; gap: 0; }
  .vz-menu > div b { font-size: 14px; }
  .vz-stage { max-width: 284px; }
  .scard__title { margin-bottom: 10px; }
  .scard__desc { margin-bottom: 14px; }
  .chips { margin-bottom: 16px; }
  .chips li { font-size: 12px; padding: 5px 10px; }
}

/* =========================================================
   05 · SELECTED WORK — fanning decks + expanding case panel
   ========================================================= */
.work { background: var(--bg); }

.filters { display: flex; flex-wrap: wrap; gap: 8px; margin-top: clamp(36px, 4vw, 56px); }
.filter {
  font-size: 14px; font-weight: 550; padding: 9px 16px; border-radius: 999px;
  box-shadow: inset 0 0 0 1px var(--line); color: var(--text-soft);
  transition: background-color .3s, color .3s, box-shadow .3s;
}
.filter:hover { color: var(--text); box-shadow: inset 0 0 0 1px var(--text); }
.filter.is-active { background: var(--text); color: var(--bg); box-shadow: none; }

.projects {
  margin-top: 28px;
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(28px, 3vw, 44px) clamp(16px, 2vw, 28px);
}

/* ---- card ---- */
.proj { text-align: left; display: block; width: 100%; transition: opacity .35s, transform .45s var(--ease-out); }
.proj.is-leaving { opacity: 0; transform: scale(.96); }
.proj.is-hidden { display: none; }
.proj.is-entering { animation: proj-in .55s var(--ease-out) both; }
@keyframes proj-in { from { opacity: 0; transform: translateY(14px) scale(.98); } }

.proj__stage {
  position: relative; aspect-ratio: 4 / 3; border-radius: 18px;
  background: var(--surface); overflow: hidden;
  box-shadow: inset 0 0 0 1px var(--line);
  transition: box-shadow .4s;
}
.proj[aria-expanded="true"] .proj__stage { box-shadow: inset 0 0 0 2px var(--accent); }
.proj__stack { position: absolute; inset: 0; display: grid; place-items: center; }
.proj__stack .psw {
  position: absolute; width: 70%;
  transition: transform .6s var(--ease-out), box-shadow .6s;
}
/* resting: a neat pile with two slides peeking out behind */
.proj__stack .psw:nth-child(1) { transform: translate(-4%, -6%) rotate(-3deg) scale(.94); }
.proj__stack .psw:nth-child(2) { transform: translate(4%, -3%) rotate(3deg) scale(.97); }
.proj__stack .psw:nth-child(3) { transform: translate(0, 4%); z-index: 3; }
/* hover: the pile fans out */
.proj:hover .psw:nth-child(1), .proj:focus-visible .psw:nth-child(1) { transform: translate(-30%, -14%) rotate(-11deg) scale(.88); }
.proj:hover .psw:nth-child(2), .proj:focus-visible .psw:nth-child(2) { transform: translate(30%, -10%) rotate(10deg) scale(.88); }
.proj:hover .psw:nth-child(3), .proj:focus-visible .psw:nth-child(3) { transform: translate(0, 10%) scale(1.03); }

.proj__open {
  position: absolute; right: 14px; bottom: 14px; z-index: 5;
  font-family: var(--f-mono); font-size: 11px; text-transform: uppercase; letter-spacing: .06em;
  padding: 7px 11px; border-radius: 999px; background: var(--text); color: var(--bg);
  opacity: 0; transform: translateY(6px); transition: opacity .3s, transform .4s var(--ease-out);
}
.proj:hover .proj__open, .proj:focus-visible .proj__open, .proj[aria-expanded="true"] .proj__open { opacity: 1; transform: none; }

.proj__meta { padding: 16px 4px 0; display: grid; gap: 4px; }
.proj__cat { font-family: var(--f-mono); font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }
.proj__name { font-size: clamp(20px, 1.7vw, 24px); font-weight: 750; letter-spacing: -.02em; }
.proj__line { color: var(--text-soft); font-size: 15px; }
.proj__result { justify-self: start; margin-top: 8px; font-size: 13px; font-weight: 600; padding: 5px 10px; border-radius: 999px; background: color-mix(in srgb, var(--accent) 12%, transparent); color: var(--accent); }

/* ---- mini project slide (palette comes from each project, not the theme) ---- */
.ps {
  aspect-ratio: 16 / 9; border-radius: 9px; overflow: hidden;
  background: var(--p-bg); color: var(--p-fg);
  padding: 6% 7%; display: flex; flex-direction: column;
  box-shadow: 0 18px 40px -18px rgba(0, 0, 0, .45), 0 0 0 1px rgba(0, 0, 0, .04);
  font-size: 4cqw;
}
.psw { container-type: inline-size; }
.ps__tag { font-family: var(--f-mono); font-size: .62em; letter-spacing: .06em; text-transform: uppercase; opacity: .65; }
.ps__h { font-weight: 800; letter-spacing: -.03em; line-height: .95; font-variation-settings: "wdth" 76; }
.ps--title { justify-content: space-between; }
.ps--title .ps__h { font-size: 2.3em; }
.ps--title .ps__rule { width: 22%; height: 3px; border-radius: 2px; background: var(--p-hi); }
.ps--stat { justify-content: flex-end; gap: 2%; }
.ps--stat .ps__big { font-size: 3.6em; font-weight: 800; letter-spacing: -.06em; line-height: .85; color: var(--p-hi); font-variation-settings: "wdth" 64; }
.ps--stat .ps__sub { font-size: .8em; opacity: .75; }
.ps--bars { gap: 6%; }
.ps--bars .ps__bars { flex: 1; display: flex; align-items: flex-end; gap: 5%; border-bottom: 1px solid color-mix(in srgb, var(--p-fg) 25%, transparent); }
.ps--bars .ps__bars i { flex: 1; border-radius: 2px 2px 0 0; background: color-mix(in srgb, var(--p-fg) 22%, transparent); }
.ps--bars .ps__bars i:last-child { background: var(--p-hi); }
.ps--quote { justify-content: space-between; }
.ps--quote q { font-family: var(--f-serif); font-style: italic; font-size: 1.7em; line-height: 1.05; quotes: "“" "”"; }
.ps--split { display: grid; grid-template-columns: 1fr 1fr; gap: 6%; align-items: center; }
.ps--split .ps__h { font-size: 1.5em; }
.ps--split .ps__blk { height: 100%; border-radius: 6px; background: var(--p-hi); opacity: .9; }
.ps--list { gap: 5%; }
.ps--list .ps__h { font-size: 1.3em; }
.ps--list ol { display: grid; gap: .3em; font-size: .78em; font-weight: 600; }
.ps--list li { border-top: 1px solid color-mix(in srgb, var(--p-fg) 20%, transparent); padding-top: .25em; display: flex; gap: .6em; }
.ps--list li b { color: var(--p-hi); font-family: var(--f-mono); font-weight: 500; }

/* ---- expanding case panel ---- */
.case {
  grid-column: 1 / -1;
  display: grid; grid-template-rows: 0fr;
  transition: grid-template-rows .6s var(--ease-out), opacity .4s;
  opacity: 0;
}
.case.is-open { grid-template-rows: 1fr; opacity: 1; }
.case__clip { overflow: hidden; min-height: 0; }
.case__inner {
  margin-top: 4px;
  background: var(--surface); border-radius: 22px;
  box-shadow: inset 0 0 0 1px var(--line);
  padding: clamp(22px, 3vw, 40px);
  display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.4fr); gap: clamp(24px, 4vw, 56px);
  position: relative;
}
.case__close {
  position: absolute; right: 16px; top: 16px;
  width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center;
  box-shadow: inset 0 0 0 1px var(--line); font-size: 18px; line-height: 1;
  transition: background-color .3s, color .3s, transform .4s var(--ease-out);
}
.case__close:hover { background: var(--text); color: var(--bg); transform: rotate(90deg); }
.case__cat { font-family: var(--f-mono); font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: var(--accent); }
.case__title { font-size: clamp(26px, 2.6vw, 38px); line-height: 1; letter-spacing: -.03em; font-weight: 800; font-variation-settings: "wdth" 76; margin: 10px 0 14px; padding-right: 40px; }
.case__brief { color: var(--text-soft); font-size: 15.5px; }
.case__stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 22px 0; }
.case__stats div { padding: 14px; border-radius: 12px; background: var(--bg); box-shadow: inset 0 0 0 1px var(--line); }
.case__stats b { display: block; font-size: clamp(22px, 2vw, 30px); font-weight: 800; letter-spacing: -.04em; font-variation-settings: "wdth" 70; }
.case__stats span { font-size: 12px; color: var(--muted); line-height: 1.3; display: block; }

.case__reel { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.case__track {
  display: flex; gap: 14px; overflow-x: auto; scroll-snap-type: x mandatory;
  padding: 6px 2px 14px; scrollbar-width: none;
}
.case__track::-webkit-scrollbar { display: none; }
.case__track .psw { flex: 0 0 78%; scroll-snap-align: start; }
.case__nav { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.case__nav span { font-family: var(--f-mono); font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; }
.case__nav div { display: flex; gap: 8px; }
.case__nav button {
  width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center;
  box-shadow: inset 0 0 0 1px var(--line); transition: transform .3s var(--ease-out), background-color .3s, color .3s;
}
.case__nav button:hover { background: var(--accent); color: var(--accent-ink); box-shadow: none; }
.case__nav button:active { transform: scale(.92); }

@media (max-width: 1000px) {
  .projects { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .case__inner { grid-template-columns: 1fr; }
}
@media (max-width: 620px) {
  .projects { grid-template-columns: 1fr; }
  .case__stats { grid-template-columns: 1fr 1fr 1fr; }
  .case__track .psw { flex-basis: 88%; }
}

/* =========================================================
   06 · PROCESS — self-drawing timeline + morphing slide
   ========================================================= */
.process {
  background: var(--surface);
  border-radius: var(--radius);
  margin-inline: var(--frame);
}
.process {
  /* the slide pins vertically centred; steps start low enough that step 1
     only lights (at 55% of the viewport) once the slide is fully pinned */
  --pin-h: min(540px, 60vh);
  --pin-top: max(96px, calc(50vh - var(--pin-h) / 2));
  --reading-line: 55vh;
}
.process__grid {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(40px, 7vw, 120px); align-items: start;
  margin-top: clamp(24px, 3vw, 40px);
}
.process__pin { position: sticky; top: var(--pin-top); }

/* ---- morphing slide ---- */
.morph { width: min(100%, calc((var(--pin-h) - 30px) * 1.6)); }   /* as wide as the column allows, never taller than the pin area */
.morph__top { display: flex; justify-content: space-between; color: var(--muted); margin-bottom: 12px; font-size: 11px; }
.morph__day b { color: var(--accent); font-weight: 500; display: inline-block; min-width: 1ch; }
.morph__name { color: var(--text); }
.morph__frame {
  position: relative; aspect-ratio: 16 / 10; border-radius: 16px; overflow: hidden;
  background: var(--bg); box-shadow: var(--shadow-card), inset 0 0 0 1px var(--line);
  container-type: inline-size;
}
.mstate {
  position: absolute; inset: 0; padding: 8cqw;
  opacity: 0; transform: translateY(14px) scale(.98); filter: blur(4px);
  transition: opacity .6s var(--ease-out), transform .7s var(--ease-out), filter .6s;
}
.morph[data-step="1"] .mstate--1, .morph[data-step="2"] .mstate--2,
.morph[data-step="3"] .mstate--3, .morph[data-step="4"] .mstate--4 { opacity: 1; transform: none; filter: none; }

/* 1 · notes */
.m-notes { display: grid; gap: 3.4cqw; padding-top: 2cqw; }
.m-notes i { display: block; height: 1.8cqw; border-radius: 1cqw; background: var(--surface-2); }
.m-sticky {
  position: absolute; right: 7cqw; bottom: 7cqw; width: 30cqw; aspect-ratio: 1;
  background: #FFE873; color: #3A3000; padding: 3cqw; transform: rotate(5deg);
  font: italic 500 4.4cqw/1.1 var(--f-serif);
  box-shadow: 0 2cqw 4cqw -2cqw rgba(0, 0, 0, .35);
}
/* 2 · storyboard */
.m-board { display: grid; grid-template-columns: repeat(3, 1fr); gap: 3cqw; height: 100%; align-content: center; }
.m-board span { aspect-ratio: 16 / 10; border-radius: 1.6cqw; border: 1.5px dashed color-mix(in srgb, var(--text) 30%, transparent); padding: 2.4cqw; display: grid; align-content: start; gap: 1.6cqw; }
.m-board b { height: 1.8cqw; width: 80%; border-radius: 1cqw; background: var(--accent); opacity: .85; }
.m-board i { height: 1.2cqw; width: 55%; border-radius: 1cqw; background: var(--surface-2); }
/* 3 · finished slide */
.m-slide { height: 100%; display: grid; grid-template-columns: 1fr 1fr; gap: 5cqw; align-items: center; }
.m-slide span { font-size: 2.4cqw; color: var(--accent); }
.m-slide b { display: block; margin-top: 2cqw; font-size: 7cqw; line-height: .95; font-weight: 800; letter-spacing: -.04em; font-variation-settings: "wdth" 72; }
.m-slide b .serif { color: var(--accent); font-weight: 500; }
.m-slide__bars { height: 70%; display: flex; align-items: flex-end; gap: 2.4cqw; border-bottom: 1px solid var(--line); }
.m-slide__bars i { flex: 1; height: var(--h); border-radius: 1cqw 1cqw 0 0; background: var(--surface-2); }
.m-slide__bars i.hot { background: var(--accent); }
/* 4 · files */
.m-files { height: 100%; display: grid; grid-template-columns: repeat(3, 1fr); gap: 3cqw; align-items: center; }
.m-files span {
  aspect-ratio: 3 / 4; border-radius: 2cqw; background: var(--surface);
  box-shadow: inset 0 0 0 1px var(--line);
  display: flex; flex-direction: column; justify-content: flex-end; gap: 1cqw; padding: 3cqw;
  font-size: 2.6cqw; color: var(--muted); position: relative;
}
.m-files b { font-size: 6cqw; font-weight: 800; letter-spacing: -.03em; color: var(--text); }
.m-files span::before {
  content: "✓"; position: absolute; top: 3cqw; right: 3cqw;
  width: 6cqw; height: 6cqw; border-radius: 50%; display: grid; place-items: center;
  background: var(--accent); color: var(--accent-ink); font-size: 3.2cqw;
}
.m-files span:nth-child(2) { transform: translateY(-4cqw); }

/* ---- steps + drawing line ---- */
.steps {
  --lead: max(0px, calc(var(--reading-line) - var(--pin-top) - 12px));
  position: relative; padding-left: 52px; padding-top: var(--lead);
}
.steps__track { position: absolute; left: 11px; top: calc(var(--lead) + 8px); bottom: 8px; width: 2px; border-radius: 2px; background: var(--line); }
.steps__fill { position: absolute; inset: 0; border-radius: inherit; background: var(--accent); transform-origin: top; transform: scaleY(var(--fill, 0)); }
.step { position: relative; padding: 4px 0 clamp(64px, 10vh, 120px); }
.step:last-child { padding-bottom: 8px; }
.step__node {
  position: absolute; left: -52px; top: 2px; width: 24px; height: 24px; border-radius: 50%;
  background: var(--surface); box-shadow: inset 0 0 0 2px var(--line);
  transition: box-shadow .4s, background-color .4s, transform .5s var(--ease-out);
}
.step__node::after { content: ""; position: absolute; inset: 7px; border-radius: 50%; background: var(--accent); transform: scale(0); transition: transform .45s var(--ease-out); }
.step.is-lit .step__node { box-shadow: inset 0 0 0 2px var(--accent), 0 0 0 6px rgba(var(--accent-rgb), .15); transform: scale(1.08); }
.step.is-lit .step__node::after { transform: scale(1); }
.step__when { color: var(--accent); font-size: 11px; }
.step__title { font-size: clamp(26px, 2.6vw, 38px); font-weight: 800; letter-spacing: -.03em; font-variation-settings: "wdth" 76; line-height: 1; margin: 8px 0 14px; }
.step__text { color: var(--text-soft); max-width: 44ch; }
.step__out { display: inline-block; margin-top: 18px; font-size: 10.5px; padding: 6px 10px; border-radius: 6px; background: var(--bg); box-shadow: inset 0 0 0 1px var(--line); color: var(--text); }
.step { opacity: .4; transition: opacity .5s; }
.step.is-lit { opacity: 1; }

/* express callout after the last step */
.express {
  margin: clamp(40px, 6vh, 64px) 0 0 52px;
  padding: 24px 26px 26px; border-radius: 18px;
  background: var(--bg); box-shadow: inset 0 0 0 1px var(--line), var(--shadow-card);
  position: relative; overflow: hidden;
}
.express::before {                /* accent edge, like a selected slide */
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--accent);
}
.express__tag { display: inline-flex; align-items: center; gap: 8px; color: var(--accent); font-size: 11px; }
.express__title { font-size: clamp(20px, 1.8vw, 26px); font-weight: 800; letter-spacing: -.025em; font-variation-settings: "wdth" 80; line-height: 1.1; margin: 10px 0 8px; }
.express__text { color: var(--text-soft); font-size: 15.5px; max-width: 46ch; margin-bottom: 16px; }

@media (max-width: 900px) {
  .process__grid { grid-template-columns: 1fr; }
  .process__pin { display: none; }
  .steps { margin-top: 8px; --lead: 0px; }
  .express { margin-left: 0; }
}

/* =========================================================
   07 · TESTIMONIALS — presenter view
   ========================================================= */
:root, :root[data-theme="light"] {
  --pv-bg: #0B1F24; --pv-fg: #E6F6F8;
  --pv-muted: rgba(230, 246, 248, .55); --pv-line: rgba(230, 246, 248, .12); --pv-panel: rgba(230, 246, 248, .06);
  --pv-hi: #7FD3DE;
}
:root[data-theme="dark"] {
  --pv-bg: #161616; --pv-fg: #FAF9F5;
  --pv-muted: #87867F; --pv-line: rgba(250, 249, 245, .1); --pv-panel: rgba(250, 249, 245, .05);
  --pv-hi: #D4FF3F;
}

.pv {
  margin-top: clamp(40px, 5vw, 64px);
  background: var(--pv-bg); color: var(--pv-fg);
  border-radius: 24px; padding: 14px clamp(14px, 1.6vw, 22px) clamp(16px, 1.8vw, 24px);
  box-shadow: var(--shadow-card);
}
.pv__bar {
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
  font-size: 11px; color: var(--pv-muted);
  padding: 4px 6px 14px; border-bottom: 1px solid var(--pv-line);
}
.pv__mode { display: inline-flex; align-items: center; gap: 8px; }
.pv__mode .rec { background: #FF5A4E; box-shadow: 0 0 10px rgba(255, 90, 78, .8); }
.pv__clock { font-size: 14px; color: var(--pv-fg); letter-spacing: .08em; font-variant-numeric: tabular-nums; }
.pv__hint { justify-self: end; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

.pv__body { display: grid; grid-template-columns: minmax(0, 1.75fr) minmax(0, 1fr); gap: clamp(14px, 1.6vw, 22px); padding-top: clamp(14px, 1.6vw, 22px); }
.pv__main { min-width: 0; }
.pv__stage {
  position: relative; aspect-ratio: 16 / 9; border-radius: 14px; overflow: hidden;
  container-type: inline-size; cursor: grab; touch-action: pan-y;
  box-shadow: 0 0 0 1px var(--pv-line);
}
.pv__stage:active { cursor: grabbing; }
.pv__progress { height: 3px; border-radius: 3px; background: var(--pv-line); margin-top: 12px; overflow: hidden; }
.pv__progress span { display: block; height: 100%; background: var(--pv-hi); transform-origin: left; transform: scaleX(0); }
.pv__progress span.is-running { animation: pv-progress var(--pv-dur, 8s) linear forwards; }
.pv.is-paused .pv__progress span { animation-play-state: paused; }
@keyframes pv-progress { to { transform: scaleX(1); } }

.pv__side { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.pv__label { display: block; font-size: 10.5px; color: var(--pv-muted); margin-bottom: 8px; }
/* current client — the accent edge takes the current slide's colour */
.pv__notes {
  flex: 1; background: var(--pv-panel); border-radius: 12px; padding: 16px 18px 18px;
  position: relative; overflow: hidden;
}
.pv__notes::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--cur-hi, var(--pv-hi)); transition: background-color .5s; }

/* up next — quieter, clearly navigation */
.pv__next {
  display: grid; grid-template-columns: 42% 1fr; align-items: center; gap: 14px;
  padding-top: 16px; border-top: 1px dashed var(--pv-line);
  text-align: left; opacity: .62; transition: opacity .3s;
}
.pv__next:hover, .pv__next:focus-visible { opacity: 1; }
.pv__nextslide {
  display: block; width: 100%; aspect-ratio: 16 / 9; border-radius: 8px; overflow: hidden;
  position: relative; container-type: inline-size;
  box-shadow: 0 0 0 1px var(--pv-line);
  transition: transform .4s var(--ease-out);
}
.pv__next:hover .pv__nextslide { transform: translateX(3px); }
.pv__nexttext .pv__label { margin-bottom: 4px; }
.pv__nextname { display: block; font-size: 14px; line-height: 1.35; }
.pv__nextname b { display: block; font-weight: 650; }
.pv__nextslide .qs { padding: 8cqw; justify-content: center; }
.pv__nextslide .qs__top, .pv__nextslide .qs__by { display: none; }
.pv__nextslide .qs__quote { font-size: 8.5cqw; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.pv__nextslide .qs__quote::before { display: none; }
.pv__notes-body { font-size: 15px; line-height: 1.5; }
.pv__notes-body .n-name { font-size: 18px; font-weight: 700; letter-spacing: -.01em; }
.pv__notes-body .n-role { color: var(--pv-muted); font-size: 14px; }
.pv__notes-body .n-proj { margin-top: 12px; color: var(--pv-fg); opacity: .85; font-size: 14px; }
.pv__notes-body .n-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.pv__notes-body .n-chips span { font-size: 12px; padding: 4px 9px; border-radius: 999px; box-shadow: inset 0 0 0 1px var(--pv-line); }
.pv__notes { display: flex; flex-direction: column; }
.pv__notes-body { flex: 1; display: flex; flex-direction: column; }
.pv__notes-body .n-outcome { margin-top: auto; padding-top: 18px; }
.pv__notes-body .n-outcome span { display: block; font-size: 10.5px; color: var(--pv-muted); margin-bottom: 4px; }
.pv__notes-body .n-outcome b {
  display: block; font-size: clamp(30px, 3vw, 46px); line-height: .95; font-weight: 800; letter-spacing: -.04em;
  font-variation-settings: "wdth" 68; color: var(--cur-hi, var(--pv-hi));
}
.pv__notes-body.is-swap { animation: notes-in .5s var(--ease-out); }
@keyframes notes-in { from { opacity: 0; transform: translateY(8px); } }

.pv__foot { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 16px; }
.pv__thumbs { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; padding: 3px; }
.pv__thumbs::-webkit-scrollbar { display: none; }
.pv__thumb {
  flex: 0 0 auto; width: clamp(64px, 7vw, 96px); aspect-ratio: 16 / 9; border-radius: 6px; overflow: hidden;
  position: relative; container-type: inline-size;
  opacity: .5; box-shadow: 0 0 0 1px var(--pv-line);
  transition: opacity .3s, box-shadow .3s, transform .3s var(--ease-out);
}
.pv__thumb:hover { opacity: .85; }
.pv__thumb[aria-selected="true"] { opacity: 1; box-shadow: 0 0 0 2px var(--pv-hi); }
.pv__ctrls { display: flex; gap: 8px; }
.pv__btn {
  width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; font-size: 17px;
  box-shadow: inset 0 0 0 1px var(--pv-line); transition: background-color .3s, color .3s, transform .2s;
}
.pv__btn:hover { background: var(--pv-hi); color: var(--pv-bg); box-shadow: none; }
.pv__btn:active { transform: scale(.92); }

/* ---- quote slide (palette per client) ---- */
.qs {
  position: absolute; inset: 0;
  background: var(--p-bg); color: var(--p-fg);
  padding: 5.5cqw 6cqw; display: flex; flex-direction: column; justify-content: space-between;
}
.qs__top { display: flex; justify-content: space-between; align-items: center; font: 500 1.5cqw var(--f-mono); text-transform: uppercase; letter-spacing: .06em; opacity: .7; }
.qs__brand { display: inline-flex; align-items: center; gap: 1cqw; }
.qs__brand::before { content: ""; width: 1.6cqw; height: 1.6cqw; border-radius: 50%; background: var(--p-hi); }
.qs__quote { font-family: var(--f-serif); font-style: italic; font-weight: 500; font-size: 4.6cqw; line-height: 1.08; letter-spacing: -.01em; max-width: 30ch; }
.qs__quote::before { content: "“"; display: block; font-size: 2.4em; line-height: .6; color: var(--p-hi); margin-bottom: .1em; }
.qs__by { display: flex; align-items: center; gap: 1.8cqw; }
.qs__av { width: 6cqw; height: 6cqw; border-radius: 50%; background: var(--p-hi); color: var(--p-bg); display: grid; place-items: center; font: 700 2.2cqw var(--f-sans); }
.qs__who { font-size: 1.9cqw; line-height: 1.25; }
.qs__who b { display: block; font-weight: 700; }
.qs__who span { opacity: .7; }
.qs__result { margin-left: auto; font: 800 2.6cqw var(--f-sans); letter-spacing: -.03em; color: var(--p-hi); }
/* compact versions in the "next" preview and thumbnails */
.pv__nextslide .qs, .pv__thumb .qs { pointer-events: none; }
.pv__thumb .qs__quote { font-size: 9cqw; }
.pv__thumb .qs__top, .pv__thumb .qs__by { display: none; }
.pv__thumb .qs { justify-content: center; padding: 10cqw; }
.pv__thumb .qs__quote { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.pv__thumb .qs__quote::before { display: none; }

/* push transition between quotes */
.qs.in-next  { animation: qs-in-next .7s var(--ease-out) both; }
.qs.out-next { animation: qs-out-next .7s var(--ease-out) both; }
.qs.in-prev  { animation: qs-in-prev .7s var(--ease-out) both; }
.qs.out-prev { animation: qs-out-prev .7s var(--ease-out) both; }
@keyframes qs-in-next  { from { transform: translateX(100%); } }
@keyframes qs-out-next { to { transform: translateX(-100%); } }
@keyframes qs-in-prev  { from { transform: translateX(-100%); } }
@keyframes qs-out-prev { to { transform: translateX(100%); } }

@media (max-width: 900px) {
  .pv__body { grid-template-columns: 1fr; }
  .pv__next { display: none; }
  .pv__bar { grid-template-columns: 1fr auto; }
  .pv__clock { display: none; }
}
@media (max-width: 560px) {
  .pv__stage { aspect-ratio: 4 / 3; }
  .qs__quote { font-size: 6cqw; }
  .qs__who { font-size: 3cqw; }
  .qs__top { font-size: 2.6cqw; }
  .qs__av { width: 9cqw; height: 9cqw; font-size: 3.4cqw; }
  .qs__result { font-size: 4cqw; }
}

/* =========================================================
   08 · PRICING — live deck estimator + retainer
   ========================================================= */
.pricing { background: var(--surface); border-radius: var(--radius); margin-inline: var(--frame); }
.price-grid {
  margin-top: clamp(40px, 5vw, 64px);
  display: grid; grid-template-columns: minmax(0, 1.9fr) minmax(0, 1fr); gap: clamp(14px, 1.6vw, 22px);
  align-items: stretch;
}

/* ---- estimator card ---- */
.estimator {
  background: var(--bg); border-radius: 22px;
  box-shadow: inset 0 0 0 1px var(--line), var(--shadow-card);
  padding: clamp(18px, 2.2vw, 30px);
}
.est__head { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding-bottom: 16px; border-bottom: 1px solid var(--line); font-size: 11px; }
.est__tag { color: var(--accent); }
.est__note { color: var(--muted); }
.est__body { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(20px, 3vw, 40px); padding-top: clamp(18px, 2vw, 26px); }
.est__label { display: block; font-weight: 650; font-size: 15px; margin-bottom: 12px; padding: 0; }

.est__count { display: block; font-size: 15px; color: var(--text-soft); margin-bottom: 10px; }
.est__count b { font-size: 34px; font-weight: 800; letter-spacing: -.04em; color: var(--text); font-variation-settings: "wdth" 70; margin-right: 4px; }

/* custom range */
.est__slides input[type="range"] {
  --fill: 27%;
  -webkit-appearance: none; appearance: none; width: 100%; height: 26px; background: transparent; margin: 0; cursor: pointer;
}
.est__slides input[type="range"]::-webkit-slider-runnable-track {
  height: 6px; border-radius: 6px;
  background: linear-gradient(var(--accent), var(--accent)) 0 / var(--fill) 100% no-repeat, var(--surface-2);
}
.est__slides input[type="range"]::-moz-range-track { height: 6px; border-radius: 6px; background: var(--surface-2); }
.est__slides input[type="range"]::-moz-range-progress { height: 6px; border-radius: 6px; background: var(--accent); }
.est__slides input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none; width: 24px; height: 24px; border-radius: 50%; margin-top: -9px;
  background: var(--bg); border: 3px solid var(--accent); box-shadow: 0 4px 12px -4px rgba(0, 0, 0, .35);
  transition: transform .2s;
}
.est__slides input[type="range"]::-moz-range-thumb { width: 18px; height: 18px; border-radius: 50%; background: var(--bg); border: 3px solid var(--accent); }
.est__slides input[type="range"]:active::-webkit-slider-thumb { transform: scale(1.15); }
.est__scale { display: flex; justify-content: space-between; color: var(--muted); font-size: 10px; margin-top: 4px; }

.est__tiles { display: grid; grid-template-columns: repeat(15, 1fr); gap: 4px; margin: 18px 0 24px; }
.est__tiles i {
  aspect-ratio: 16 / 10; border-radius: 2px; background: var(--surface-2);
  transition: background-color .25s, transform .35s var(--ease-out);
}
.est__tiles i.on { background: var(--accent); transform: translateY(-1px); }
.est__tiles i.on:nth-child(5n) { background: var(--accent-2); }

.est__addons { border: 0; margin: 0; padding: 0; display: grid; gap: 8px; }
.addon {
  display: grid; grid-template-columns: 22px 1fr auto; align-items: center; gap: 12px;
  padding: 12px 14px; border-radius: 12px; cursor: pointer;
  box-shadow: inset 0 0 0 1px var(--line);
  transition: box-shadow .25s, background-color .25s;
}
.addon:hover { box-shadow: inset 0 0 0 1px var(--text); }
.addon input { position: absolute; opacity: 0; pointer-events: none; }
.addon__box { width: 20px; height: 20px; border-radius: 6px; box-shadow: inset 0 0 0 1.5px var(--muted); position: relative; transition: background-color .2s, box-shadow .2s; }
.addon__box::after { content: ""; position: absolute; left: 6px; top: 2px; width: 6px; height: 11px; border: solid var(--accent-ink); border-width: 0 2px 2px 0; transform: rotate(45deg) scale(0); transition: transform .25s var(--ease-out); }
.addon input:checked ~ .addon__box { background: var(--accent); box-shadow: none; }
.addon input:checked ~ .addon__box::after { transform: rotate(45deg) scale(1); }
.addon:has(input:checked) { box-shadow: inset 0 0 0 1.5px var(--accent); background: color-mix(in srgb, var(--accent) 5%, transparent); }
.addon input:focus-visible ~ .addon__box { outline: 2px solid var(--accent); outline-offset: 2px; }
.addon__txt b { display: block; font-size: 14.5px; font-weight: 650; }
.addon__txt small { display: block; font-size: 12.5px; color: var(--muted); }
.addon__price { font-size: 11px; color: var(--text-soft); white-space: nowrap; }

/* summary column */
.est__summary {
  background: var(--surface); border-radius: 16px; padding: 22px;
  display: flex; flex-direction: column;
}
.est__sumlabel { font-size: 11px; color: var(--muted); }
.est__total { display: flex; align-items: flex-start; margin: 6px 0 16px; line-height: .9; }
.est__cur { font-size: 26px; font-weight: 700; margin: 6px 4px 0 0; color: var(--accent); }
.est__total b { font-size: clamp(52px, 5.4vw, 80px); font-weight: 800; letter-spacing: -.05em; font-variation-settings: "wdth" 66; font-variant-numeric: tabular-nums; }
.est__lines { display: grid; gap: 6px; font-size: 13.5px; padding: 14px 0; border-top: 1px dashed var(--line); border-bottom: 1px dashed var(--line); margin-bottom: 14px; }
.est__lines li { display: flex; justify-content: space-between; gap: 10px; color: var(--text-soft); }
.est__lines li span:last-child { font-variant-numeric: tabular-nums; color: var(--text); }
.est__eta { font-size: 11px; color: var(--muted); margin-bottom: 18px; }
.est__eta b { color: var(--text); font-weight: 500; }
.est__summary .btn { justify-content: center; margin-top: auto; }
.est__fine { font-size: 12.5px; color: var(--muted); margin-top: 10px; text-align: center; }

/* ---- retainer card ---- */
.retainer {
  background: var(--accent); color: var(--accent-ink);
  border-radius: 22px; padding: clamp(22px, 2.4vw, 32px);
  display: flex; flex-direction: column;
  position: relative; overflow: hidden;
}
.retainer::after {                 /* stacked-slides motif in the corner */
  content: ""; position: absolute; right: -40px; top: -30px; width: 170px; aspect-ratio: 16 / 10; border-radius: 12px;
  border: 1.5px solid color-mix(in srgb, var(--accent-ink) 25%, transparent);
  box-shadow: -14px 14px 0 -1.5px var(--accent), -14px 14px 0 0 color-mix(in srgb, var(--accent-ink) 18%, transparent),
              -28px 28px 0 -1.5px var(--accent), -28px 28px 0 0 color-mix(in srgb, var(--accent-ink) 12%, transparent);
  transform: rotate(-8deg);
}
/* Max swaps the card to its own palette; everything inside reads these two tokens */
.retainer { transition: background-color .45s var(--ease-out), color .45s var(--ease-out); }
.retainer[data-plan="max"], .splan--max { --accent: var(--max-bg); --accent-ink: var(--max-ink); }
.retainer__tag { display: inline-flex; align-items: center; gap: 8px; font-size: 11px; opacity: .85; }

/* Pro / Max toggle in the card's top corner */
.retainer__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; position: relative; z-index: 1; }
.plan-toggle {
  position: relative; display: inline-grid; grid-template-columns: 1fr 1fr; padding: 3px; border-radius: 999px;
  background: color-mix(in srgb, var(--accent-ink) 14%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent-ink) 22%, transparent);
}
.plan-toggle__ink {
  position: absolute; top: 3px; bottom: 3px; left: 3px; width: calc(50% - 3px); border-radius: 999px;
  background: var(--accent-ink); transition: transform .45s var(--ease-out);
}
.retainer[data-plan="max"] .plan-toggle__ink { transform: translateX(100%); }
.plan-toggle__btn {
  position: relative; z-index: 1; min-width: 54px; padding: 6px 14px; border-radius: 999px;
  font-family: var(--f-mono); font-size: 11px; font-weight: 500; letter-spacing: .06em; text-transform: uppercase;
  color: var(--accent-ink); transition: color .3s;
}
.plan-toggle__btn[aria-pressed="true"] { color: var(--accent); }
.plan-toggle__btn:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }

/* both plans occupy the same space; the inactive one fades out */
.rplans { flex: 1; display: grid; }
.rplan { grid-area: 1 / 1; display: flex; flex-direction: column; transition: opacity .4s var(--ease-out), transform .5s var(--ease-out), visibility 0s; }
.rplan:not(.is-on) { opacity: 0; visibility: hidden; transform: translateY(10px); transition: opacity .25s, transform .25s, visibility 0s .25s; }
.retainer__tag .rec { background: var(--accent-ink); box-shadow: none; }
.retainer__title { font-size: clamp(26px, 2.5vw, 36px); line-height: 1; font-weight: 800; letter-spacing: -.03em; font-variation-settings: "wdth" 76; margin: 16px 0 22px; max-width: 12ch; }
.retainer__title .serif { font-weight: 500; }
.retainer__price { display: flex; align-items: baseline; gap: 8px; margin-bottom: 20px; }
.retainer__price b { font-size: clamp(40px, 3.8vw, 56px); font-weight: 800; letter-spacing: -.05em; font-variation-settings: "wdth" 68; line-height: 1; }
.retainer__price span { opacity: .75; }
.retainer__list { display: grid; gap: 10px; margin-bottom: 26px; font-size: 15px; }
.retainer__list li { display: flex; gap: 10px; align-items: baseline; }
.retainer__list li::before { content: "✓"; font-size: 12px; width: 18px; height: 18px; flex: none; border-radius: 50%; display: grid; place-items: center; background: color-mix(in srgb, var(--accent-ink) 16%, transparent); }
.retainer__btn { --bg-b: var(--accent-ink); --fg-b: var(--text); margin-top: auto; justify-content: center; color: var(--accent); }
.retainer__btn:hover { color: var(--accent-ink); }
.retainer__fine { font-size: 10.5px; opacity: .75; margin-top: 12px; text-align: center; }

@media (max-width: 1100px) {
  .price-grid { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
  .est__body { grid-template-columns: 1fr; }
  .est__tiles { grid-template-columns: repeat(12, 1fr); }
}

/* =========================================================
   09 · FAQ — the "Questions?" slide + searchable accordion
   ========================================================= */
.faq__grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.3fr); gap: clamp(32px, 5vw, 80px); align-items: start; }
.faq__pin { position: sticky; top: 104px; }

.qslide {
  background: var(--accent); color: var(--accent-ink);
  border-radius: 22px; padding: clamp(22px, 2.4vw, 34px);
  min-height: clamp(380px, 52vh, 500px);
  display: flex; flex-direction: column;
  position: relative; overflow: hidden;
  box-shadow: var(--shadow-card);
}
.qslide::before {                 /* faint slide guides in the corner */
  content: ""; position: absolute; inset: 14px; border-radius: 14px;
  border: 1px dashed color-mix(in srgb, var(--accent-ink) 22%, transparent);
  pointer-events: none;
}
.qslide__tag { font-size: 11px; opacity: .75; }
.qslide__title {
  margin: auto 0 0; padding-top: 30px;
  font-size: clamp(3.4rem, 6.6vw, 6.4rem); line-height: .85; letter-spacing: -.05em;
  font-weight: 800; font-variation-settings: "wdth" 66;
}
.qslide__title .serif { font-weight: 500; font-size: 1.15em; margin-left: .02em; display: inline-block; animation: q-bob 4s var(--ease-io) infinite alternate; transform-origin: bottom center; }
@keyframes q-bob { to { transform: rotate(10deg) translateY(-4px); } }
.qslide__ask { margin-top: 24px; padding-top: 18px; border-top: 1px solid color-mix(in srgb, var(--accent-ink) 22%, transparent); position: relative; }
.qslide__ask p { opacity: .85; font-size: 15px; margin-bottom: 14px; max-width: 32ch; }
.qslide__actions { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.qslide__btn { --bg-b: var(--accent-ink); --fg-b: var(--text); color: var(--accent); }
.qslide__btn:hover { color: var(--accent-ink); }
.qslide .link-under { font-size: 14px; }

/* tools */
.faq__tools { display: grid; gap: 14px; margin-bottom: 18px; }
.faq__search {
  display: flex; align-items: center; gap: 10px;
  padding: 0 16px; height: 50px; border-radius: 14px;
  background: var(--surface); box-shadow: inset 0 0 0 1px var(--line);
  transition: box-shadow .25s;
}
.faq__search:focus-within { box-shadow: inset 0 0 0 1.5px var(--accent); }
.faq__search svg { width: 18px; height: 18px; color: var(--muted); flex: none; }
.faq__search input { flex: 1; border: 0; background: none; font: inherit; font-size: 15px; color: var(--text); outline: none; min-width: 0; }
.faq__search input::placeholder { color: var(--muted); }
.faq__topics { display: flex; flex-wrap: wrap; gap: 8px; }
.faq__topics .filter { font-size: 13px; padding: 7px 14px; }

/* accordion */
.faq__list { border-top: 1px solid var(--line); }
.qa { border-bottom: 1px solid var(--line); }
.qa[hidden] { display: none; }
.qa h3 { margin: 0; }
.qa__q {
  width: 100%; display: grid; grid-template-columns: 52px minmax(0, 1fr) 34px; align-items: center; gap: 10px;
  padding: 22px 2px; text-align: left;
  font-size: clamp(17px, 1.45vw, 20px); font-weight: 650; letter-spacing: -.015em;
  transition: color .25s;
}
.qa__q:hover { color: var(--accent); }
.qa__no { font-size: 11px; color: var(--muted); font-weight: 400; letter-spacing: .04em; transition: color .25s; }
.qa.is-open .qa__no { color: var(--accent); }
.qa__icon {
  width: 34px; height: 34px; border-radius: 50%; position: relative;
  box-shadow: inset 0 0 0 1px var(--line);
  transition: transform .45s var(--ease-out), background-color .3s, box-shadow .3s;
}
.qa__icon::before, .qa__icon::after {
  content: ""; position: absolute; left: 50%; top: 50%; width: 12px; height: 1.5px; background: currentColor;
  transform: translate(-50%, -50%);
}
.qa__icon::after { transform: translate(-50%, -50%) rotate(90deg); }
.qa.is-open .qa__icon { transform: rotate(45deg); background: var(--accent); color: var(--accent-ink); box-shadow: none; }

.qa__a { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .5s var(--ease-out); }
.qa.is-open .qa__a { grid-template-rows: 1fr; }
.qa__a > div { overflow: hidden; min-height: 0; }
.qa__a p {
  padding: 0 46px 24px 64px; color: var(--text-soft); max-width: 68ch;
  opacity: 0; transform: translateY(-6px); transition: opacity .4s, transform .5s var(--ease-out);
}
.qa.is-open .qa__a p { opacity: 1; transform: none; transition-delay: .08s; }
.qa mark { background: color-mix(in srgb, var(--accent) 22%, transparent); color: inherit; border-radius: 3px; padding: 0 2px; }

.faq__empty { padding: 28px 2px; color: var(--text-soft); }

@media (max-width: 900px) {
  .faq__grid { grid-template-columns: 1fr; }
  .faq__pin { position: static; }
  .qslide { min-height: 0; }
  .qslide__title { margin-top: 26px; }
}
@media (max-width: 560px) {
  .qa__q { grid-template-columns: 40px minmax(0, 1fr) 30px; }
  .qa__icon { width: 30px; height: 30px; }
  .qa__a p { padding: 0 8px 22px 50px; }
}

/* =========================================================
   10 · CLOSING SLIDE — call to action + 30-second brief
   ========================================================= */
.closing { padding: var(--frame); position: relative; z-index: 2; background: var(--bg); margin-top: clamp(40px, 6vw, 90px); }
.closing__stage {
  position: relative; overflow: hidden;
  background: var(--surface); border-radius: var(--radius);
  padding: clamp(56px, 8vw, 110px) clamp(22px, 5vw, 72px) 0;
}
.closing__stage::after {               /* same grain as the hero: bookends */
  content: ""; position: absolute; inset: 0; pointer-events: none;
  opacity: var(--grain-opacity); mix-blend-mode: var(--grain-blend);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.closing__stage .glow--a { left: -10vw; right: auto; top: auto; bottom: -20vw; }
.closing__stage .glow--b { right: -6vw; left: auto; top: -16vw; bottom: auto; }
.closing__grid { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(32px, 5vw, 80px); align-items: center; }
.closing__title {
  font-size: clamp(3rem, 6.4vw, 6.6rem); line-height: .9; letter-spacing: -.045em;
  font-weight: 800; font-variation-settings: "wdth" 70; margin-bottom: 24px; max-width: 10ch;
}
.closing__title .serif { color: var(--accent); font-weight: 500; }
.closing__lede { color: var(--text-soft); max-width: 42ch; font-size: clamp(16px, 1.25vw, 18px); margin-bottom: 26px; }
.closing__promise { display: flex; flex-wrap: wrap; gap: 8px 18px; font-size: 11px; color: var(--muted); }
.closing__promise li { display: flex; align-items: center; gap: 8px; }
.closing__promise li::before { content: "✓"; color: var(--accent); }

/* brief form */
.brief {
  background: var(--bg); border-radius: 22px; padding: clamp(20px, 2.4vw, 32px);
  box-shadow: inset 0 0 0 1px var(--line), var(--shadow-card);
  display: grid; gap: 20px;
}
.brief__tag { font-size: 11px; color: var(--accent); }
.brief__label { display: block; font-weight: 650; font-size: 14.5px; margin-bottom: 10px; padding: 0; }
.brief__label small { font-weight: 400; color: var(--muted); }
.brief__types { border: 0; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.brief__types legend { width: 100%; }
.brief__types label { cursor: pointer; }
.brief__types input { position: absolute; opacity: 0; pointer-events: none; }
.brief__types span {
  display: inline-block; font-size: 14px; padding: 9px 15px; border-radius: 999px;
  box-shadow: inset 0 0 0 1px var(--line); transition: background-color .25s, color .25s, box-shadow .25s;
}
.brief__types label:hover span { box-shadow: inset 0 0 0 1px var(--text); }
.brief__types input:checked + span { background: var(--accent); color: var(--accent-ink); box-shadow: none; }
.brief__types input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }
.brief__row { display: grid; grid-template-columns: 1fr 1.3fr; gap: 12px; }
.brief__field input {
  width: 100%; height: 48px; padding: 0 14px; border-radius: 12px; border: 0;
  background: var(--surface); color: var(--text); font: inherit; font-size: 15px;
  box-shadow: inset 0 0 0 1px var(--line); outline: none; transition: box-shadow .25s;
  color-scheme: inherit;
}
.brief__field input:focus { box-shadow: inset 0 0 0 1.5px var(--accent); }
.brief__field input::placeholder { color: var(--muted); }
.brief__submit { justify-content: center; padding-block: 1.1em; }

/* ticker */
.ticker {
  position: relative; z-index: 1; overflow: hidden;
  margin: clamp(48px, 7vw, 90px) calc(-1 * clamp(22px, 5vw, 72px)) 0;
  border-top: 1px solid var(--line); padding: 20px 0;
  mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.ticker__track { display: flex; gap: 28px; width: max-content; animation: ticker 38s linear infinite; }
.ticker span { font-size: clamp(22px, 2.6vw, 36px); font-weight: 800; letter-spacing: -.03em; font-variation-settings: "wdth" 72; white-space: nowrap; }
.ticker i { font-style: normal; color: var(--accent); align-self: center; font-size: 18px; }
.ticker span:nth-of-type(even) { font-family: var(--f-serif); font-style: italic; font-weight: 500; letter-spacing: -.01em; color: var(--text-soft); }
.closing:hover .ticker__track { animation-play-state: paused; }
@keyframes ticker { to { transform: translateX(-50%); } }

/* =========================================================
   CONTACT PAGE
   ========================================================= */
.contact { position: relative; z-index: 2; padding: clamp(120px, 15vh, 160px) 0 clamp(60px, 8vw, 110px); }
.contact__grid { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: clamp(32px, 5vw, 80px); align-items: start; }
.contact__intro { position: sticky; top: 110px; }
.contact__title {
  font-size: clamp(2.8rem, 5.6vw, 5.8rem); line-height: .9; letter-spacing: -.045em;
  font-weight: 800; font-variation-settings: "wdth" 70; margin-bottom: 22px; max-width: 9ch;
}
.contact__title .serif { color: var(--accent); font-weight: 500; }
.contact__lede { color: var(--text-soft); max-width: 42ch; font-size: clamp(16px, 1.2vw, 18px); margin-bottom: 30px; }

.reach { display: grid; gap: 10px; margin-bottom: 26px; }
.reach__item {
  display: grid; grid-template-columns: 44px 1fr auto; align-items: center; gap: 14px;
  padding: 14px 16px; border-radius: 14px; background: var(--surface);
  box-shadow: inset 0 0 0 1px var(--line);
  transition: box-shadow .3s, transform .4s var(--ease-out);
}
a.reach__item:hover { box-shadow: inset 0 0 0 1.5px var(--accent); transform: translateX(4px); }
.reach__icon { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; background: var(--bg); color: var(--accent); font-size: 18px; font-weight: 700; box-shadow: inset 0 0 0 1px var(--line); }
.reach__item b { display: block; font-weight: 650; font-size: 15.5px; }
.reach__item small { display: block; color: var(--muted); font-size: 13.5px; }
.reach__go { color: var(--accent); transition: transform .4s var(--ease-out); }
a.reach__item:hover .reach__go { transform: translateX(4px); }

/* ---- the wizard ---- */
.wizard {
  background: var(--bg); border-radius: 24px;
  box-shadow: inset 0 0 0 1px var(--line), var(--shadow-card);
  overflow: hidden;
}
.wizard__head { padding: 18px clamp(18px, 2.4vw, 30px) 0; background: var(--surface); }
.wizard__steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; padding-bottom: 14px; }
.wizard__steps li { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; color: var(--muted); transition: color .3s; }
.wizard__steps li .mono { font-size: 10.5px; width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; box-shadow: inset 0 0 0 1px var(--line); transition: background-color .3s, color .3s, box-shadow .3s; }
.wizard__steps li.is-current { color: var(--text); }
.wizard__steps li.is-current .mono { background: var(--accent); color: var(--accent-ink); box-shadow: none; }
.wizard__steps li.is-done .mono { background: color-mix(in srgb, var(--accent) 16%, transparent); color: var(--accent); box-shadow: none; }
.wizard__bar { height: 3px; margin: 0 calc(-1 * clamp(18px, 2.4vw, 30px)); background: var(--line); }
.wizard__bar span { display: block; height: 100%; background: var(--accent); transform-origin: left; transform: scaleX(var(--prog, .25)); transition: transform .6s var(--ease-out); }

.wizard__form { padding: clamp(20px, 2.6vw, 34px); }
.wizard__viewport { display: grid; }
.wstep {
  grid-area: 1 / 1; min-width: 0;
  border: 0; margin: 0; padding: 0;
  opacity: 0; visibility: hidden; transform: translateX(48px);
  transition: opacity .45s var(--ease-out), transform .6s var(--ease-out), visibility 0s .6s;
}
.wstep.is-left { transform: translateX(-48px); }
.wstep.is-active { opacity: 1; visibility: visible; transform: none; transition: opacity .45s var(--ease-out) .08s, transform .6s var(--ease-out), visibility 0s; }
.wstep__title { font-size: clamp(24px, 2.3vw, 32px); font-weight: 800; letter-spacing: -.03em; font-variation-settings: "wdth" 78; line-height: 1.05; margin-bottom: 20px; padding: 0; }
.wstep__title .serif { color: var(--accent); }
.wstep__label { display: block; font-weight: 650; font-size: 14.5px; margin: 22px 0 10px; }
.wstep__label small { font-weight: 400; color: var(--muted); }
.wstep__hint { font-size: 10.5px; color: var(--muted); margin-top: 16px; line-height: 1.5; text-transform: none; letter-spacing: .02em; }
.wstep__error { display: block; color: #E5484D; font-size: 13px; margin-top: 8px; }
.wstep__error[hidden] { display: none; }
.wstep .est__slides { margin-bottom: 4px; }

.choice-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.choice { cursor: pointer; }
.choice input { position: absolute; opacity: 0; pointer-events: none; }
.choice > span {
  display: block; height: 100%; padding: 14px 16px; border-radius: 14px;
  box-shadow: inset 0 0 0 1px var(--line);
  transition: box-shadow .25s, background-color .25s, transform .3s var(--ease-out);
}
.choice b { display: block; font-size: 15.5px; font-weight: 700; letter-spacing: -.01em; }
.choice small { display: block; font-size: 13px; color: var(--muted); }
.choice:hover > span { box-shadow: inset 0 0 0 1px var(--text); }
.choice input:checked + span { box-shadow: inset 0 0 0 2px var(--accent); background: color-mix(in srgb, var(--accent) 7%, transparent); }
.choice input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }

.pills { display: flex; flex-wrap: wrap; gap: 8px; }
.pills label { cursor: pointer; }
.pills input { position: absolute; opacity: 0; pointer-events: none; }
.pills span { display: inline-block; font-size: 14px; padding: 9px 15px; border-radius: 999px; box-shadow: inset 0 0 0 1px var(--line); transition: background-color .25s, color .25s, box-shadow .25s; }
.pills label:hover span { box-shadow: inset 0 0 0 1px var(--text); }
.pills input:checked + span { background: var(--accent); color: var(--accent-ink); box-shadow: none; }
.pills input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }
.pills--check input:checked + span::before { content: "✓ "; }

.wfield { display: block; min-width: 0; }
.wfield .wstep__label { margin-top: 18px; }
.wfield input, .wfield textarea {
  width: 100%; padding: 13px 14px; border-radius: 12px; border: 0;
  background: var(--surface); color: var(--text); font: inherit; font-size: 15px;
  box-shadow: inset 0 0 0 1px var(--line); outline: none; transition: box-shadow .25s;
  resize: vertical; color-scheme: inherit;
}
.wfield input { height: 48px; }
.wfield input:focus, .wfield textarea:focus { box-shadow: inset 0 0 0 1.5px var(--accent); }
.wfield input::placeholder, .wfield textarea::placeholder { color: var(--muted); }
.wfield input[aria-invalid="true"] { box-shadow: inset 0 0 0 1.5px #E5484D; }
.wfield-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; align-items: end; }

.wizard__estimate { padding: 12px 16px; border-radius: 12px; background: var(--surface); }
.wizard__estimate .mono { display: block; font-size: 10.5px; color: var(--muted); }
.wizard__estimate b { font-size: 26px; font-weight: 800; letter-spacing: -.04em; font-variation-settings: "wdth" 70; }

.tick { display: grid; grid-template-columns: 22px 1fr; gap: 12px; align-items: center; margin-top: 22px; cursor: pointer; font-size: 14.5px; }
.tick input { position: absolute; opacity: 0; pointer-events: none; }
.tick input:checked ~ .addon__box { background: var(--accent); box-shadow: none; }
.tick input:checked ~ .addon__box::after { transform: rotate(45deg) scale(1); }
.tick input:focus-visible ~ .addon__box { outline: 2px solid var(--accent); outline-offset: 2px; }

.wizard__nav {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  margin-top: 28px; padding-top: 20px; border-top: 1px solid var(--line);
}
.wizard__back { font-weight: 600; font-size: 15px; color: var(--text-soft); padding: 10px 4px; transition: color .25s, opacity .25s; }
.wizard__back:hover { color: var(--text); }
.wizard__back[disabled] { opacity: 0; pointer-events: none; }
.wizard__step { font-size: 11px; color: var(--muted); }
.wizard.is-done .wizard__nav { display: none; }
.wizard.is-done .wizard__head { display: none; }

/* done slide */
.wstep--done { text-align: left; outline: none; }
.done__check { display: block; width: 64px; height: 64px; margin-bottom: 18px; }
.done__check svg { width: 100%; height: 100%; fill: none; stroke: var(--accent); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.done__check circle { stroke-dasharray: 151; stroke-dashoffset: 151; }
.done__check path { stroke-dasharray: 40; stroke-dashoffset: 40; }
.wstep--done.is-active circle { animation: draw .7s var(--ease-out) .15s forwards; }
.wstep--done.is-active path { animation: draw .45s var(--ease-out) .7s forwards; }
@keyframes draw { to { stroke-dashoffset: 0; } }
.done__text { color: var(--text-soft); margin-bottom: 18px; }
.done__summary { display: grid; gap: 6px; padding: 16px; border-radius: 14px; background: var(--surface); margin-bottom: 22px; font-size: 14.5px; }
.done__summary li { display: flex; justify-content: space-between; gap: 16px; }
.done__summary li span:first-child { color: var(--muted); }
.done__summary li span:last-child { text-align: right; }
.done__actions { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; }

/* ---- what happens next ---- */
.next { background: var(--surface); border-radius: var(--radius); margin-inline: var(--frame); }
.next__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(14px, 1.6vw, 22px); margin-top: clamp(36px, 4vw, 56px); }
.next__list li { padding: 24px; border-radius: 18px; background: var(--bg); box-shadow: inset 0 0 0 1px var(--line); }
.next__no { color: var(--accent); font-size: 11px; }
.next__list h3 { font-size: clamp(20px, 1.8vw, 26px); font-weight: 800; letter-spacing: -.025em; font-variation-settings: "wdth" 80; margin: 12px 0 8px; }
.next__list p { color: var(--text-soft); font-size: 15.5px; }
.book {
  margin-top: clamp(14px, 1.6vw, 22px); padding: clamp(22px, 2.6vw, 34px); border-radius: 18px;
  background: var(--accent); color: var(--accent-ink);
  display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap;
  scroll-margin-top: 110px;
}
.book__tag { display: inline-flex; align-items: center; gap: 8px; font-size: 11px; opacity: .85; }
.book__tag .rec { background: var(--accent-ink); box-shadow: none; }
.book__title { font-size: clamp(24px, 2.4vw, 34px); font-weight: 800; letter-spacing: -.03em; font-variation-settings: "wdth" 76; margin: 8px 0 4px; }
.book__text { opacity: .85; }
.book .btn { --bg-b: var(--accent-ink); --fg-b: var(--text); color: var(--accent); }
.book .btn:hover { color: var(--accent-ink); }

@media (max-width: 980px) {
  .contact__grid { grid-template-columns: 1fr; }
  .contact__intro { position: static; }
  .next__list { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .wizard__steps li { font-size: 0; justify-content: center; }      /* numbers only on phones */
  .wizard__steps li .mono { font-size: 10.5px; }
  .choice-grid, .wfield-row { grid-template-columns: 1fr; }
}

/* =========================================================
   SERVICES PAGE — PowerPoint "Normal view": thumbnail pane + slides
   ========================================================= */
.svc-intro { position: relative; z-index: 2; padding: clamp(120px, 15vh, 160px) 0 clamp(36px, 5vw, 64px); }
.svc-intro__grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); gap: clamp(28px, 5vw, 80px); align-items: end; }
.svc-intro__title { max-width: 12ch; margin-bottom: 0; }
.svc-intro__side .contact__lede { margin-bottom: 20px; }
.svc-intro__facts { display: flex; flex-wrap: wrap; gap: 8px 22px; font-size: 11px; color: var(--muted); }
.svc-intro__facts b { color: var(--accent); font-weight: 500; margin-right: 4px; }

.svc-layout { display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: clamp(28px, 4vw, 64px); align-items: start; padding-bottom: clamp(40px, 6vw, 80px); position: relative; z-index: 2; }

/* ---- thumbnail pane ---- */
.rail { position: sticky; top: 104px; padding: 14px; border-radius: 18px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.rail__label { display: block; font-size: 10.5px; color: var(--muted); margin: 0 0 12px 2px; }
.rail__list { display: grid; gap: 12px; }
.rail__thumb { display: grid; grid-template-columns: 16px 1fr; gap: 8px; align-items: start; }
.rail__no { font-size: 11px; color: var(--muted); padding-top: 4px; transition: color .3s; }
.rail__mini {
  aspect-ratio: 16 / 10; border-radius: 8px; padding: 9px 10px;
  display: flex; align-items: flex-end;
  background: var(--m-bg); color: var(--m-fg);
  box-shadow: 0 0 0 1px var(--line);
  transition: box-shadow .3s, transform .4s var(--ease-out);
}
.rail__mini b { font-size: 12.5px; font-weight: 750; letter-spacing: -.01em; line-height: 1.05; }
.rail__thumb:hover .rail__mini { transform: translateY(-2px); }
.rail__thumb.is-active .rail__mini { box-shadow: 0 0 0 2px var(--surface), 0 0 0 4px var(--accent), 0 8px 20px -10px rgba(0, 0, 0, .4); }
.rail__thumb.is-active .rail__no { color: var(--accent); }
.rt--1 { --m-bg: var(--c1-bg); --m-fg: var(--c1-fg); }
.rt--2 { --m-bg: var(--c2-bg); --m-fg: var(--c2-fg); }
.rt--3 { --m-bg: var(--c3-bg); --m-fg: var(--c3-fg); }
.rt--4 { --m-bg: var(--c4-bg); --m-fg: var(--c4-fg); }
.rt--5 { --m-bg: var(--c5-bg); --m-fg: var(--c5-fg); }

/* ---- a service "slide" ---- */
.svc { padding: clamp(24px, 3vw, 40px) 0 clamp(56px, 7vw, 96px); border-bottom: 1px solid var(--line); scroll-margin-top: 96px; }
.svc:last-child { border-bottom: 0; }
.svc__no { font-size: 11px; color: var(--accent); }
.svc__title {
  font-size: clamp(2.2rem, 4.2vw, 4.2rem); line-height: .95; letter-spacing: -.035em;
  font-weight: 800; font-variation-settings: "wdth" 74; margin: 12px 0 16px; max-width: 17ch;
}
.svc__title .serif { color: var(--accent); font-weight: 500; }
.svc__lede { color: var(--text-soft); max-width: 58ch; font-size: clamp(16px, 1.2vw, 18px); }

.svc__slide {
  --fg-12: color-mix(in srgb, var(--fg) 12%, transparent);
  --fg-22: color-mix(in srgb, var(--fg) 22%, transparent);
  --fg-60: color-mix(in srgb, var(--fg) 62%, transparent);
  margin: clamp(26px, 3vw, 40px) 0;
  min-height: clamp(260px, 32vw, 400px);
  border-radius: 22px; padding: clamp(24px, 4vw, 56px);
  background: var(--bg-c); color: var(--fg);
  display: grid; place-items: center;
  box-shadow: var(--shadow-card);
  position: relative; overflow: hidden;
}
.svc__slide::before {            /* slide guides, like the hero */
  content: ""; position: absolute; inset: 14px; border-radius: 14px; pointer-events: none;
  border: 1px dashed var(--fg-22); opacity: .6;
}
.svc--1 .svc__slide { --bg-c: var(--c1-bg); --fg: var(--c1-fg); --hi: var(--c1-hi); }
.svc--2 .svc__slide { --bg-c: var(--c2-bg); --fg: var(--c2-fg); --hi: var(--c2-hi); box-shadow: inset 0 0 0 1px var(--line), var(--shadow-card); }
.svc--3 .svc__slide { --bg-c: var(--c3-bg); --fg: var(--c3-fg); --hi: var(--c3-hi); }
.svc--4 .svc__slide { --bg-c: var(--c4-bg); --fg: var(--c4-fg); --hi: var(--c4-hi); }
.svc--5 .svc__slide { --bg-c: var(--c5-bg); --fg: var(--c5-fg); --hi: var(--c5-hi); }
.svc.is-on .vz-kpi polyline { stroke-dashoffset: 0; }

.svc__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) minmax(0, 1.1fr); gap: clamp(16px, 2vw, 28px); align-items: start; }
.svc__h { font-size: 10.5px; color: var(--muted); margin-bottom: 12px; font-weight: 400; }
.svc__bullets, .svc__checks, .svc__steps { display: grid; gap: 10px; font-size: 15px; line-height: 1.4; }
.svc__bullets li { display: flex; gap: 10px; }
.svc__bullets li::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); margin-top: .5em; flex: none; }
.svc__checks li { display: flex; gap: 10px; }
.svc__checks li::before {
  content: "✓"; flex: none; width: 18px; height: 18px; border-radius: 50%; margin-top: 1px;
  display: grid; place-items: center; font-size: 11px;
  background: color-mix(in srgb, var(--accent) 14%, transparent); color: var(--accent);
}
.svc__steps { counter-reset: s; }
.svc__steps li { counter-increment: s; position: relative; padding-left: 30px; color: var(--text-soft); }
.svc__steps li::before { content: "0" counter(s); position: absolute; left: 0; top: 3px; font: 500 11px var(--f-mono); color: var(--accent); }
.svc__steps b { color: var(--text); font-weight: 650; }

.svc__price {
  padding: 18px 20px 20px; border-radius: 16px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line);
  display: grid; gap: 6px; justify-items: start;
}
.svc__price .mono { font-size: 10.5px; color: var(--muted); }
.svc__price p { display: flex; align-items: baseline; gap: 6px; }
.svc__price small { color: var(--muted); font-size: 13px; }
.svc__price b { font-size: clamp(30px, 2.6vw, 40px); font-weight: 800; letter-spacing: -.045em; font-variation-settings: "wdth" 68; line-height: 1; }
.svc__eta { font-size: 13px; color: var(--text-soft); margin-bottom: 10px; }

/* ---- add-ons + not sure ---- */
.svc-extra { background: var(--surface); border-radius: var(--radius); margin-inline: var(--frame); }
.addons-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(12px, 1.4vw, 18px); margin-top: clamp(32px, 4vw, 52px); }
.addons-row li { padding: 22px; border-radius: 18px; background: var(--bg); box-shadow: inset 0 0 0 1px var(--line); display: grid; gap: 8px; align-content: start; transition: transform .4s var(--ease-out), box-shadow .3s; }
.addons-row li:hover { transform: translateY(-4px); box-shadow: inset 0 0 0 1.5px var(--accent); }
.addons-row__icon { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; background: color-mix(in srgb, var(--accent) 12%, transparent); color: var(--accent); font-size: 15px; margin-bottom: 6px; text-transform: none; }
.addons-row b { font-size: 17px; font-weight: 700; letter-spacing: -.01em; }
.addons-row p { color: var(--text-soft); font-size: 14.5px; }
.addons-row li > .mono:last-child { font-size: 11px; color: var(--accent); margin-top: 4px; }

@media (max-width: 1180px) {
  .svc__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .addons-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 980px) {
  .svc-intro__grid { grid-template-columns: 1fr; }
  .svc-layout { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .rail, .svc-list { min-width: 0; }
  /* thumbnail pane becomes a sticky strip under the nav */
  .rail {
    top: 76px; z-index: 30; padding: 10px; margin: 0 calc(-1 * 4px) 8px;
    background: color-mix(in srgb, var(--bg) 88%, transparent);
    backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  }
  .rail__label { display: none; }
  .rail__list { grid-auto-flow: column; grid-auto-columns: 132px; overflow-x: auto; scrollbar-width: none; padding: 3px; }
  .rail__list::-webkit-scrollbar { display: none; }
  .rail__thumb { grid-template-columns: 1fr; }
  .rail__no { display: none; }
  .rail__mini { aspect-ratio: auto; height: 46px; }
  .svc { scroll-margin-top: 150px; }
}
@media (max-width: 560px) {
  .svc__grid, .addons-row { grid-template-columns: 1fr; }
}

/* =========================================================
   WORK PAGE — slide sorter + slide show
   ========================================================= */
.work-page { position: relative; z-index: 2; padding: clamp(120px, 15vh, 160px) 0 clamp(40px, 6vw, 80px); }
.work-intro { margin-bottom: clamp(36px, 5vw, 60px); }

/* toolbar, like PowerPoint's status bar */
.sorter-bar {
  display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap;
  padding: 10px 12px 10px 10px; border-radius: 16px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line);
  margin-bottom: 28px;
}
.sorter-bar__filters { margin-top: 0; }
.zoom { display: flex; align-items: center; gap: 8px; }
.zoom__label { font-size: 10.5px; color: var(--muted); margin-right: 2px; }
.zoom__btn { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; font-size: 16px; box-shadow: inset 0 0 0 1px var(--line); transition: background-color .25s, color .25s; }
.zoom__btn:hover { background: var(--text); color: var(--bg); box-shadow: none; }
.zoom input[type="range"] { -webkit-appearance: none; appearance: none; width: 110px; height: 20px; background: transparent; cursor: pointer; }
.zoom input[type="range"]::-webkit-slider-runnable-track { height: 3px; border-radius: 3px; background: var(--line); }
.zoom input[type="range"]::-moz-range-track { height: 3px; border-radius: 3px; background: var(--line); }
.zoom input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 14px; height: 14px; border-radius: 50%; margin-top: -5.5px; background: var(--accent); }
.zoom input[type="range"]::-moz-range-thumb { width: 14px; height: 14px; border: 0; border-radius: 50%; background: var(--accent); }
.zoom__pct { font-size: 10.5px; color: var(--text); min-width: 4ch; text-align: right; }

/* the sorter grid */
.sorter { display: grid; gap: clamp(22px, 2.6vw, 36px) clamp(14px, 1.8vw, 26px); }
.sorter[data-zoom="1"] { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.sorter[data-zoom="2"] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.sorter[data-zoom="3"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sorter__empty { color: var(--text-soft); padding: 30px 0; }

.stile { display: block; width: 100%; text-align: left; transition: opacity .35s; }
.stile.is-hidden { display: none; }
.stile.is-entering { animation: proj-in .5s var(--ease-out) both; }
.stile__frame {
  display: block; position: relative; aspect-ratio: 16 / 9; border-radius: 12px; overflow: hidden;
  box-shadow: 0 0 0 1px var(--line), 0 18px 40px -24px rgba(0, 0, 0, .45);
  transition: transform .5s var(--ease-out), box-shadow .35s;
}
.stile:hover .stile__frame, .stile:focus-visible .stile__frame {
  transform: translateY(-5px);
  box-shadow: 0 0 0 2px var(--bg), 0 0 0 4px var(--accent), 0 26px 50px -24px rgba(0, 0, 0, .5);
}
.stile:focus-visible { outline: none; }
.stile__frame .psw { position: absolute; inset: 0; opacity: 0; transition: opacity .45s var(--ease-out); }
.stile__frame .psw.is-shown { opacity: 1; }
.stile__frame .ps { width: 100%; height: 100%; border-radius: 0; box-shadow: none; }
.stile__pips { position: absolute; left: 10px; right: 10px; bottom: 8px; display: flex; gap: 4px; z-index: 2; opacity: 0; transition: opacity .3s; }
.stile__pips i { flex: 1; height: 3px; border-radius: 3px; background: rgba(255, 255, 255, .35); mix-blend-mode: difference; transition: background-color .3s; }
.stile__pips i.on { background: #fff; }
.stile:hover .stile__pips, .stile:focus-visible .stile__pips { opacity: 1; }
.stile__play {
  position: absolute; right: 10px; top: 10px; z-index: 2;
  font: 500 10.5px var(--f-mono); text-transform: uppercase; letter-spacing: .06em;
  padding: 6px 10px; border-radius: 999px; background: var(--text); color: var(--bg);
  opacity: 0; transform: translateY(-4px); transition: opacity .3s, transform .4s var(--ease-out);
}
.stile:hover .stile__play, .stile:focus-visible .stile__play { opacity: 1; transform: none; }
.stile__meta { display: grid; grid-template-columns: auto 1fr auto; gap: 4px 12px; align-items: baseline; padding: 14px 2px 0; }
.stile__no { font: 500 11px var(--f-mono); color: var(--muted); grid-row: span 2; padding-top: 3px; }
.stile__name { font-size: clamp(17px, 1.4vw, 21px); font-weight: 750; letter-spacing: -.02em; }
.stile__result { font-size: 12.5px; font-weight: 600; padding: 4px 9px; border-radius: 999px; background: color-mix(in srgb, var(--accent) 12%, transparent); color: var(--accent); white-space: nowrap; }
.stile__cat { grid-column: 2 / -1; font: 400 11px var(--f-mono); text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }
.sorter[data-zoom="1"] .stile__result { display: none; }

.work-cta { padding-top: 0; }

/* ---- slide show overlay (always "projector dark") ---- */
.show {
  --sh-bg: #061215; --sh-fg: #ECF5F6; --sh-muted: rgba(236, 245, 246, .55); --sh-line: rgba(236, 245, 246, .12);
  position: fixed; inset: 0; z-index: 200;
  background: var(--sh-bg); color: var(--sh-fg);
  display: flex; flex-direction: column;
  opacity: 0; transition: opacity .35s var(--ease-out);
}
:root[data-theme="dark"] .show { --sh-bg: #050505; }
.show[hidden], .menu[hidden] { display: none; }
.show.is-open { opacity: 1; }
body.is-showing { overflow: hidden; }
.show__bar { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 12px; padding: 14px clamp(14px, 2vw, 24px); border-bottom: 1px solid var(--sh-line); }
.show__mode { display: inline-flex; align-items: center; gap: 8px; font-size: 11px; color: var(--sh-muted); }
.show__mode .rec { background: #FF5A4E; box-shadow: 0 0 10px rgba(255, 90, 78, .8); }
.show__title { font-size: 15px; font-weight: 650; letter-spacing: -.01em; text-align: center; }
.show__close { justify-self: end; display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 999px; box-shadow: inset 0 0 0 1px var(--sh-line); font-size: 16px; transition: background-color .25s, color .25s; }
.show__close .mono { font-size: 10.5px; color: var(--sh-muted); }
.show__close:hover { background: var(--sh-fg); color: var(--sh-bg); }

.show__body { flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) 340px; }
.show__main { min-width: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px; padding: clamp(16px, 3vw, 40px); }
.show__stage {
  position: relative; overflow: hidden;
  width: min(100%, calc((100vh - 250px) * 16 / 9)); aspect-ratio: 16 / 9;
  border-radius: 12px; box-shadow: 0 30px 80px -30px rgba(0, 0, 0, .9), 0 0 0 1px var(--sh-line);
  transform: scale(.96); transition: transform .5s var(--ease-out);
  touch-action: pan-y;
}
.show.is-open .show__stage { transform: none; }
.show__stage .psw { position: absolute; inset: 0; }
.show__stage .ps { width: 100%; height: 100%; border-radius: 0; box-shadow: none; }
.show__stage .psw.in-next  { animation: qs-in-next .6s var(--ease-out) both; }
.show__stage .psw.out-next { animation: qs-out-next .6s var(--ease-out) both; }
.show__stage .psw.in-prev  { animation: qs-in-prev .6s var(--ease-out) both; }
.show__stage .psw.out-prev { animation: qs-out-prev .6s var(--ease-out) both; }
.show__ctrl { display: flex; align-items: center; gap: 12px; max-width: 100%; }
.show .pv__btn { box-shadow: inset 0 0 0 1px var(--sh-line); color: var(--sh-fg); }
.show .pv__btn:hover { background: var(--accent); color: var(--accent-ink); }
.show__thumbs { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; padding: 3px; }
.show__thumbs::-webkit-scrollbar { display: none; }
.show__thumb { flex: 0 0 auto; width: 84px; aspect-ratio: 16 / 9; border-radius: 6px; overflow: hidden; position: relative; opacity: .45; box-shadow: 0 0 0 1px var(--sh-line); transition: opacity .25s, box-shadow .25s; }
.show__thumb .psw { position: absolute; inset: 0; }
.show__thumb .ps { width: 100%; height: 100%; border-radius: 0; box-shadow: none; }
.show__thumb:hover { opacity: .8; }
.show__thumb[aria-selected="true"] { opacity: 1; box-shadow: 0 0 0 2px var(--accent); }

.show__notes { border-left: 1px solid var(--sh-line); padding: 22px 24px; overflow-y: auto; }
.show__label { display: block; font-size: 10.5px; color: var(--sh-muted); margin-bottom: 14px; }
.show__notes-body .sn-cat { font: 400 11px var(--f-mono); text-transform: uppercase; letter-spacing: .06em; color: var(--accent); }
:root[data-theme="light"] .show__notes-body .sn-cat, :root[data-theme="light"] .show .sn-result { color: #7FD3DE; }
.show__notes-body h3 { font-size: 26px; line-height: 1; font-weight: 800; letter-spacing: -.03em; font-variation-settings: "wdth" 76; margin: 8px 0 4px; }
.sn-result { font-size: 15px; font-weight: 650; color: var(--accent); margin-bottom: 14px; }
.sn-brief { color: var(--sh-muted); font-size: 14.5px; margin-bottom: 18px; }
.sn-stats { display: grid; gap: 8px; margin-bottom: 18px; }
.sn-stats div { display: flex; align-items: baseline; gap: 10px; padding: 10px 12px; border-radius: 10px; background: rgba(236, 245, 246, .05); }
.sn-stats b { font-size: 22px; font-weight: 800; letter-spacing: -.04em; font-variation-settings: "wdth" 70; min-width: 3.6ch; }
.sn-stats span { font-size: 13px; color: var(--sh-muted); }
.sn-did { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 22px; }
.sn-did li { font-size: 12.5px; padding: 5px 10px; border-radius: 999px; box-shadow: inset 0 0 0 1px var(--sh-line); }
.sn-actions { display: grid; gap: 10px; }
.sn-actions .btn { justify-content: center; }
.sn-next { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 12px 14px; border-radius: 12px; box-shadow: inset 0 0 0 1px var(--sh-line); font-size: 14px; text-align: left; transition: background-color .25s; }
.sn-next:hover { background: rgba(236, 245, 246, .06); }
.sn-next small { display: block; font: 400 10.5px var(--f-mono); text-transform: uppercase; letter-spacing: .06em; color: var(--sh-muted); }

@media (max-width: 1100px) {
  .sorter[data-zoom="1"] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .show__body { grid-template-columns: minmax(0, 1fr) 300px; }
}
@media (max-width: 860px) {
  .sorter[data-zoom="1"], .sorter[data-zoom="2"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sorter[data-zoom="3"] { grid-template-columns: 1fr; }
  .show { overflow-y: auto; }
  .show__body { grid-template-columns: 1fr; flex: none; }
  .show__stage { width: 100%; }
  .show__notes { border-left: 0; border-top: 1px solid var(--sh-line); overflow: visible; }
  .show__mode { display: none; }
  .show__bar { grid-template-columns: 1fr auto; }
  .show__title { text-align: left; }
}
@media (max-width: 560px) {
  .sorter[data-zoom] { grid-template-columns: 1fr; }
  .zoom { display: none; }
}

/* =========================================================
   PRICING PAGE — layout-picker tabs, estimator, studio plans, print quote
   ========================================================= */
.price-page { position: relative; z-index: 2; padding: clamp(120px, 15vh, 160px) 0 clamp(50px, 7vw, 100px); }

/* tabs, styled like PowerPoint's layout picker */
.plan-tabs {
  position: relative; display: inline-grid; grid-template-columns: 1fr 1fr; gap: 6px;
  padding: 6px; border-radius: 18px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line);
  margin-bottom: 26px;
}
.plan-tabs__ink {
  position: absolute; top: 6px; bottom: 6px; left: 6px; width: calc(50% - 9px); border-radius: 13px;
  background: var(--bg); box-shadow: 0 0 0 1.5px var(--accent), 0 8px 20px -12px rgba(0, 0, 0, .35);
  transition: transform .5s var(--ease-out);
}
.plan-tabs.on-studio .plan-tabs__ink { transform: translateX(calc(100% + 6px)); }
.plan-tab { position: relative; z-index: 1; display: flex; align-items: center; gap: 14px; padding: 12px 22px 12px 12px; border-radius: 13px; text-align: left; color: var(--text-soft); transition: color .3s; }
.plan-tab.is-active { color: var(--text); }
.plan-tab b { display: block; font-size: 16px; font-weight: 700; }
.plan-tab small { display: block; font-size: 12.5px; color: var(--muted); }
.plan-tab__thumb { width: 56px; aspect-ratio: 16 / 10; border-radius: 6px; background: var(--surface-2); padding: 5px; display: grid; gap: 3px; align-content: end; flex: none; transition: background-color .3s; }
.plan-tab__thumb i { display: block; height: 4px; border-radius: 2px; background: var(--muted); opacity: .5; }
.plan-tab__thumb--deck i:first-child { width: 70%; height: 7px; background: var(--accent); opacity: 1; }
.plan-tab__thumb--studio { grid-template-columns: repeat(3, 1fr); align-content: stretch; }
.plan-tab__thumb--studio i { height: auto; border-radius: 3px; }
.plan-tab.is-active .plan-tab__thumb--studio i { background: var(--accent); opacity: .85; }
.plan-tab.is-active .plan-tab__thumb { background: color-mix(in srgb, var(--accent) 10%, var(--surface)); }

.plan-panel { animation: panel-in .55s var(--ease-out); }
.plan-panel[hidden] { display: none; }
@keyframes panel-in { from { opacity: 0; transform: translateY(14px); } }
#panel-deck { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: clamp(14px, 1.6vw, 22px); align-items: start; }
#panel-deck[hidden] { display: none; }
.est__print { margin: 14px auto 0; font-size: 14px; color: var(--text); }

.rate-card { padding: 22px; border-radius: 22px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); position: sticky; top: 104px; }
.rate-card__label { display: block; font-size: 10.5px; color: var(--muted); margin-bottom: 12px; }
.rate-card li { display: flex; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px dashed var(--line); font-size: 14.5px; }
.rate-card li:last-child { border-bottom: 0; }
.rate-card li span { color: var(--text-soft); }
.rate-card li b { font-weight: 650; font-variant-numeric: tabular-nums; white-space: nowrap; }

/* studio plans */
.studio-plans { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(14px, 1.6vw, 22px); }
.splan {
  padding: clamp(22px, 2.6vw, 34px); border-radius: 22px; background: var(--bg);
  box-shadow: inset 0 0 0 1px var(--line), var(--shadow-card);
  display: flex; flex-direction: column;
}
.splan--plus { background: var(--accent); color: var(--accent-ink); box-shadow: var(--shadow-card); }
.splan__tag { display: inline-flex; align-items: center; gap: 8px; font-size: 11px; color: var(--accent); }
.splan--plus .splan__tag { color: var(--accent-ink); opacity: .85; }
.splan--plus .splan__tag .rec { background: var(--accent-ink); box-shadow: none; }
.splan__title { font-size: clamp(26px, 2.6vw, 38px); line-height: 1; font-weight: 800; letter-spacing: -.03em; font-variation-settings: "wdth" 76; margin: 14px 0 20px; max-width: 13ch; }
.splan__title .serif { font-weight: 500; color: var(--accent); }
.splan--plus .splan__title .serif { color: inherit; }
.splan__price { display: flex; align-items: baseline; gap: 8px; margin-bottom: 22px; }
.splan__price b { font-size: clamp(40px, 3.8vw, 56px); font-weight: 800; letter-spacing: -.05em; font-variation-settings: "wdth" 68; line-height: 1; }
.splan__price span { opacity: .7; }
.splan__list { display: grid; gap: 10px; margin-bottom: 28px; font-size: 15px; }
.splan__list li { display: flex; gap: 10px; align-items: baseline; }
.splan__list li::before { content: "✓"; font-size: 11px; width: 18px; height: 18px; flex: none; border-radius: 50%; display: grid; place-items: center; background: color-mix(in srgb, var(--accent) 14%, transparent); color: var(--accent); }
.splan--plus .splan__list li::before { background: color-mix(in srgb, var(--accent-ink) 18%, transparent); color: inherit; }
.splan__btn { margin-top: auto; justify-content: center; }
.splan--plus .splan__btn { --bg-b: var(--accent-ink); --fg-b: var(--text); color: var(--accent); }
.splan--plus .splan__btn:hover { color: var(--accent-ink); }

/* comparison table, like a PowerPoint table slide */
.compare-table { margin-top: clamp(14px, 1.6vw, 22px); border-radius: 22px; overflow: hidden; background: var(--bg); box-shadow: inset 0 0 0 1px var(--line); }
.compare-table__bar { display: flex; justify-content: space-between; gap: 12px; padding: 12px 20px; font-size: 10.5px; color: var(--muted); background: var(--surface); border-bottom: 1px solid var(--line); }
.compare-table table { width: 100%; border-collapse: collapse; font-size: 15px; }
.compare-table th, .compare-table td { padding: 14px 20px; text-align: left; border-bottom: 1px solid var(--line); }
.compare-table tbody tr:last-child th, .compare-table tbody tr:last-child td { border-bottom: 0; }
.compare-table thead th { font: 500 11px var(--f-mono); text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }
.compare-table thead th:last-child { color: var(--accent); }
.compare-table tbody th { font-weight: 550; color: var(--text-soft); }
.compare-table td { font-weight: 650; }
.compare-table td:last-child { background: color-mix(in srgb, var(--accent) 6%, transparent); }
.compare-table td.yes::before { content: "✓ "; color: var(--accent); }
.compare-table td.no { color: var(--muted); font-weight: 400; }
.compare-table tbody tr { transition: background-color .25s; }
.compare-table tbody tr:hover { background: var(--surface); }

/* every price includes */
.includes { background: var(--surface); border-radius: var(--radius); margin-inline: var(--frame); }
.includes__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(12px, 1.4vw, 18px); margin-top: clamp(32px, 4vw, 52px); }
.includes__grid li { padding: 22px; border-radius: 18px; background: var(--bg); box-shadow: inset 0 0 0 1px var(--line); display: grid; gap: 6px; transition: transform .4s var(--ease-out), box-shadow .3s; }
.includes__grid li:hover { transform: translateY(-4px); box-shadow: inset 0 0 0 1.5px var(--accent); }
.includes__grid .mono { font-size: 11px; color: var(--accent); }
.includes__grid b { font-size: 18px; font-weight: 750; letter-spacing: -.015em; }
.includes__grid p { color: var(--text-soft); font-size: 14.5px; }

/* pricing questions */
.pfaq-grid { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(32px, 5vw, 80px); align-items: start; }
.pfaq-grid header .services__aside { margin-top: 18px; display: block; }
.pfaq { border-top: 1px solid var(--line); }

/* printable quote — hidden on screen */
.quote-sheet { display: none; }
@media print {
  @page { margin: 16mm; }
  body.printing-quote > *:not(.quote-sheet) { display: none !important; }
  body.printing-quote { background: #fff; }
  body.printing-quote .quote-sheet { display: block; color: #0B1F24; font-family: var(--f-sans); }
  .qs-head { display: flex; justify-content: space-between; align-items: flex-start; border-bottom: 2px solid #20A4B6; padding-bottom: 14px; margin-bottom: 22px; }
  .qs-brand { font-size: 20px; font-weight: 800; letter-spacing: -.02em; }
  .qs-brand em { font-family: var(--f-serif); font-style: italic; font-weight: 500; color: #20A4B6; }
  .qs-meta { text-align: right; font: 11px var(--f-mono); color: #555; line-height: 1.6; }
  .qs-title { font-size: 30px; font-weight: 800; letter-spacing: -.03em; margin: 0 0 6px; }
  .qs-sub { color: #555; margin: 0 0 20px; }
  .qs-table { width: 100%; border-collapse: collapse; font-size: 13px; margin-bottom: 18px; }
  .qs-table td { padding: 9px 0; border-bottom: 1px solid #ddd; }
  .qs-table td:last-child { text-align: right; font-variant-numeric: tabular-nums; }
  .qs-total { display: flex; justify-content: space-between; align-items: baseline; font-size: 15px; padding: 12px 0; border-top: 2px solid #0B1F24; }
  .qs-total b { font-size: 30px; letter-spacing: -.03em; }
  .qs-notes { margin-top: 20px; font-size: 11.5px; color: #555; line-height: 1.6; }
}

@media (max-width: 1100px) {
  #panel-deck { grid-template-columns: 1fr; }
  .rate-card { position: static; }
  .includes__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 860px) {
  .studio-plans, .pfaq-grid { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .plan-tabs { display: grid; width: 100%; }
  .plan-tab { padding: 10px; gap: 10px; }
  .plan-tab__thumb { width: 40px; }
  .plan-tab small { display: none; }
  .includes__grid { grid-template-columns: 1fr; }
  .compare-table th, .compare-table td { padding: 12px 12px; font-size: 13.5px; }
}

/* =========================================================
   ABOUT PAGE — the blank slide that fills itself in
   ========================================================= */
.about-hero { position: relative; z-index: 2; padding: clamp(110px, 14vh, 150px) 0 clamp(40px, 6vw, 80px); }

/* PowerPoint workspace: grey canvas, chrome bar, white slide */
.blank { background: var(--surface); border-radius: 24px; box-shadow: inset 0 0 0 1px var(--line); padding: 14px clamp(14px, 3vw, 40px) clamp(20px, 3vw, 40px); }
.blank__chrome { display: flex; justify-content: space-between; font-size: 10.5px; color: var(--muted); padding: 4px 2px 14px; }
.blank__layout { padding: 3px 8px; border-radius: 6px; box-shadow: inset 0 0 0 1px var(--line); }
.blank__slide {
  position: relative; margin-inline: auto;
  width: min(100%, calc((100svh - 300px) * 16 / 9)); min-width: min(100%, 560px); aspect-ratio: 16 / 9;
  background: var(--bg); border-radius: 6px;
  box-shadow: 0 1px 2px rgba(0, 0, 0, .06), 0 24px 60px -30px rgba(0, 0, 0, .35);
  padding: 6% 8%; display: flex; flex-direction: column; justify-content: center; gap: 4%;
  container-type: inline-size;
}
.blank__no { position: absolute; right: 3%; bottom: 4%; font-size: 10.5px; color: var(--muted); }

/* placeholders */
.ph { position: relative; padding: 1.6cqw 2cqw; border: 1px dashed color-mix(in srgb, var(--muted) 70%, transparent); border-radius: 3px; transition: border-color .6s, outline-color .3s; outline: 1px solid transparent; outline-offset: 0; }
.ph__hint { position: absolute; inset: 0; display: flex; align-items: center; padding: 0 2cqw; color: var(--muted); pointer-events: none; transition: opacity .25s; }
.ph--title .ph__hint { font-size: 5.6cqw; font-weight: 400; letter-spacing: -.02em; }
.ph--sub .ph__hint { font-size: 2.6cqw; }
.ph__text { margin: 0; }
.ph--title .ph__text { font-size: 6.4cqw; line-height: .95; letter-spacing: -.04em; font-weight: 800; font-variation-settings: "wdth" 72; min-height: 2em; }
.ph--title .ph__text .serif { color: var(--accent); font-weight: 500; }
.ph--sub .ph__text { font-size: 2.3cqw; color: var(--text-soft); max-width: 48ch; min-height: 2.6em; }

/* states driven by js/about.js */
.blank.is-typing .ph__text { visibility: hidden; }
.blank.is-typing .ph.is-on .ph__text, .blank.is-typing .ph.is-done .ph__text { visibility: visible; }
.blank:not(.is-typing) .ph__hint, .ph.is-on .ph__hint, .ph.is-done .ph__hint { opacity: 0; }
.ph.is-on { outline-color: var(--accent); border-color: transparent; }
.ph.is-on::before, .ph.is-on::after {            /* sizing handles, like a selected placeholder */
  content: ""; position: absolute; width: 7px; height: 7px; background: var(--bg); border: 1.5px solid var(--accent); border-radius: 1px;
}
.ph.is-on::before { left: -4px; top: -4px; }
.ph.is-on::after { right: -4px; bottom: -4px; }
.ph.is-on .ph__text::after { content: ""; display: inline-block; width: .06em; min-width: 2px; height: .9em; margin-left: .05em; background: var(--accent); vertical-align: -.08em; animation: caret 1s steps(2, jump-none) infinite; }
@keyframes caret { 50% { opacity: 0; } }
.blank.is-finished .ph { border-color: transparent; }

/* ---- story + speaker notes ---- */
.story__grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, .65fr); gap: clamp(32px, 5vw, 80px); align-items: start; }
.story__quote { font-size: clamp(2rem, 3.6vw, 3.6rem); line-height: 1.04; color: var(--text); margin: 0 0 30px; max-width: 20ch; }
.story__text { columns: 2 280px; column-gap: 40px; color: var(--text-soft); font-size: 16.5px; }
.story__text p { margin: 0 0 16px; break-inside: avoid; }
.notes-pane { position: sticky; top: 110px; border-radius: 18px; overflow: hidden; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.notes-pane__bar { display: flex; justify-content: space-between; padding: 10px 16px; font-size: 10.5px; color: var(--muted); border-bottom: 1px solid var(--line); }
.notes-pane__bar span:last-child { opacity: .6; }
.notes-pane__body {
  padding: 16px 18px 20px; font-size: 15.5px; line-height: 28px;
  background-image: linear-gradient(transparent 27px, var(--line) 27px); background-size: 100% 28px; background-position: 0 14px;
}
.notes-pane__body p { margin: 0 0 28px; }
.notes-pane__body p:last-of-type { margin-bottom: 0; }
.notes-pane__sign { font-family: var(--f-serif); font-style: italic; color: var(--accent); }

/* ---- slide master principles ---- */
.master { background: var(--surface); border-radius: var(--radius); margin-inline: var(--frame); }
.master__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(12px, 1.4vw, 18px); margin-top: clamp(32px, 4vw, 52px); }
.master__grid li { padding: 18px 18px 22px; border-radius: 18px; background: var(--bg); box-shadow: inset 0 0 0 1px var(--line); transition: transform .45s var(--ease-out), box-shadow .3s; }
.master__grid li:hover { transform: translateY(-5px); box-shadow: inset 0 0 0 1.5px var(--accent), var(--shadow-card); }
.master__thumb { display: block; aspect-ratio: 16 / 9; margin-bottom: 16px; }
.master__thumb i {
  --b: color-mix(in srgb, var(--text) 26%, transparent); --h: var(--accent);
  display: block; height: 100%; border-radius: 8px; background-color: var(--surface); background-repeat: no-repeat;
  box-shadow: inset 0 0 0 1px var(--line);
}
.master__no { font-size: 10.5px; color: var(--accent); }
.master__grid h3 { font-size: clamp(19px, 1.6vw, 23px); font-weight: 800; letter-spacing: -.025em; font-variation-settings: "wdth" 80; margin: 6px 0 6px; }
.master__grid p { color: var(--text-soft); font-size: 15px; }

/* ---- roles ---- */
.roles__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(12px, 1.4vw, 18px); margin-top: clamp(32px, 4vw, 52px); }
.roles__grid li { padding: 26px; border-radius: 20px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); display: grid; gap: 6px; align-content: start; transition: transform .45s var(--ease-out); }
.roles__grid li:hover { transform: translateY(-5px); }
.roles__badge { width: 64px; height: 64px; border-radius: 50%; display: grid; place-items: center; margin-bottom: 14px; background: var(--accent); color: var(--accent-ink); font: 800 20px var(--f-sans); letter-spacing: -.02em; box-shadow: 0 0 0 6px color-mix(in srgb, var(--accent) 15%, transparent); }
.roles__grid li:nth-child(2) .roles__badge { background: var(--text); color: var(--bg); box-shadow: 0 0 0 6px var(--line); }
.roles__grid li:nth-child(3) .roles__badge { background: var(--accent-2); color: var(--text); box-shadow: 0 0 0 6px color-mix(in srgb, var(--accent-2) 25%, transparent); }
.roles__tag { font-size: 10.5px; color: var(--muted); }
.roles__grid h3 { font-size: clamp(22px, 2vw, 28px); font-weight: 800; letter-spacing: -.03em; font-variation-settings: "wdth" 78; }
.roles__grid p { color: var(--text-soft); font-size: 15.5px; }

/* ---- numbers ---- */
.numbers { background: var(--accent); color: var(--accent-ink); border-radius: var(--radius); margin-inline: var(--frame); }
.numbers__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }
.numbers__grid li { border-top: 1px solid color-mix(in srgb, var(--accent-ink) 30%, transparent); padding-top: 18px; }
.numbers__grid b { display: block; font-size: clamp(3.2rem, 7vw, 6.4rem); line-height: .9; font-weight: 800; letter-spacing: -.05em; font-variation-settings: "wdth" 62; font-variant-numeric: tabular-nums; }
.numbers__grid span { display: block; margin-top: 10px; opacity: .8; font-size: 15px; }

@media (max-width: 980px) {
  .story__grid { grid-template-columns: 1fr; }
  .notes-pane { position: static; }
  .master__grid, .roles__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .numbers__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 36px; }
}
@media (max-width: 560px) {
  .blank__slide { min-width: 0; aspect-ratio: 4 / 3; padding: 8% 7%; }
  .ph--title .ph__text { font-size: 9cqw; }
  .ph--title .ph__hint { font-size: 7.4cqw; }
  .ph--sub .ph__text { font-size: 4cqw; }
  .ph--sub .ph__hint { font-size: 4cqw; }
  .master__grid, .roles__grid { grid-template-columns: 1fr; }
}

/* =========================================================
   LEGAL PAGES — PowerPoint "Outline view"
   ========================================================= */
.legal-page { position: relative; z-index: 2; padding: clamp(120px, 15vh, 160px) 0 clamp(60px, 8vw, 110px); }
.legal-head { margin-bottom: clamp(36px, 5vw, 60px); }
.legal-head__title { max-width: 14ch; }
.legal-head__meta { font-size: 11px; color: var(--muted); }
.legal-head__meta .link-under { font: inherit; color: var(--text); text-transform: none; letter-spacing: 0; }

.legal { display: grid; grid-template-columns: 270px minmax(0, 1fr); gap: clamp(28px, 5vw, 80px); align-items: start; }

/* outline (table of contents) */
.outline { position: sticky; top: 104px; }
.outline__box { border-radius: 18px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); padding: 14px; }
.outline__box summary { list-style: none; font-size: 10.5px; color: var(--muted); padding: 2px 4px 12px; cursor: pointer; display: flex; justify-content: space-between; }
.outline__box summary::-webkit-details-marker { display: none; }
.outline__box summary::after { content: "▾"; transition: transform .3s; }
.outline__box:not([open]) summary { padding-bottom: 2px; }
.outline__box:not([open]) summary::after { transform: rotate(-90deg); }
.outline ol { counter-reset: o; display: grid; gap: 2px; max-height: calc(100vh - 200px); overflow-y: auto; scrollbar-width: thin; }
.outline li:not(:first-child) { counter-increment: o; }
.outline a {
  display: grid; grid-template-columns: 26px 14px 1fr; align-items: center; gap: 8px;
  padding: 7px 8px; border-radius: 9px; font-size: 14px; color: var(--text-soft);
  transition: background-color .25s, color .25s;
}
.outline a::before { content: counter(o, decimal-leading-zero); font: 500 10.5px var(--f-mono); color: var(--muted); }
.outline li:first-child a::before { content: "•"; }
.outline a::after {                     /* tiny slide icon, like Outline view */
  content: ""; grid-column: 2; grid-row: 1; width: 14px; height: 10px; border-radius: 2px;
  box-shadow: inset 0 0 0 1.5px var(--muted); transition: background-color .25s, box-shadow .25s;
}
.outline a:hover { background: var(--bg); color: var(--text); }
.outline a.is-active { background: var(--bg); color: var(--text); font-weight: 600; box-shadow: inset 0 0 0 1px var(--line); }
.outline a.is-active::before { color: var(--accent); }
.outline a.is-active::after { background: var(--accent); box-shadow: none; }

/* body copy */
.legal__body { max-width: 72ch; }
.legal__sec { padding: 0 0 clamp(32px, 4vw, 48px); margin-bottom: clamp(32px, 4vw, 48px); border-bottom: 1px solid var(--line); scroll-margin-top: 100px; }
.legal__sec:last-child { border-bottom: 0; margin-bottom: 0; }
.legal__no { font-size: 11px; color: var(--accent); }
.legal__sec h2 { font-size: clamp(24px, 2.4vw, 32px); font-weight: 800; letter-spacing: -.03em; font-variation-settings: "wdth" 78; line-height: 1.05; margin: 8px 0 14px; }
.legal__sec h3 { font-size: 16px; font-weight: 700; margin: 20px 0 8px; }
.legal__sec p, .legal__sec li { color: var(--text-soft); font-size: 16.5px; line-height: 1.65; }
.legal__sec p { margin: 0 0 12px; }
.legal__sec b { color: var(--text); font-weight: 650; }
.legal__sec ul { display: grid; gap: 10px; margin: 6px 0 12px; }
.legal__sec ul li { position: relative; padding-left: 22px; }
.legal__sec ul li::before { content: ""; position: absolute; left: 4px; top: .7em; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }
.legal__sec code { font-family: var(--f-mono); font-size: .85em; padding: 2px 6px; border-radius: 5px; background: var(--surface); color: var(--text); }
.legal__sec .link-under { font-size: inherit; color: var(--text); }
.legal__summary { padding: 24px 26px; border-radius: 20px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); border-bottom: 0; position: relative; overflow: hidden; }
.legal__summary::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--accent); }
.legal__summary li { color: var(--text); }

@media (max-width: 900px) {
  .legal { grid-template-columns: 1fr; }
  .outline { position: sticky; top: 76px; z-index: 20; }
  .outline__box { background: color-mix(in srgb, var(--surface) 92%, transparent); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
  .outline ol { max-height: 55vh; }
  .legal__sec { scroll-margin-top: 150px; }
}

/* =========================================================
   FOOTER
   ========================================================= */
.footer { position: relative; z-index: 2; background: var(--bg); padding: clamp(56px, 7vw, 96px) 0 24px; overflow: hidden; }
.footer__top { display: grid; grid-template-columns: minmax(0, 1.6fr) repeat(2, minmax(0, 1fr)); gap: 32px; }
.footer__brand p { color: var(--text-soft); max-width: 34ch; margin: 16px 0 14px; font-size: 15px; }
.footer__mail { font-weight: 650; font-size: 17px; background: linear-gradient(var(--accent), var(--accent)) 0 100% / 100% 2px no-repeat; padding-bottom: 2px; }
.footer__col { display: grid; align-content: start; gap: 10px; font-size: 15px; }
.footer__col .mono { color: var(--muted); font-size: 11px; margin-bottom: 4px; }
.footer__col a { color: var(--text-soft); justify-self: start; transition: color .25s, transform .35s var(--ease-out); }
.footer__col a:hover { color: var(--accent); transform: translateX(3px); }

.wordmark {
  display: flex; justify-content: space-between;
  margin: clamp(40px, 6vw, 80px) 0 clamp(26px, 3.2vw, 48px);
  font-size: clamp(3.2rem, 13.4vw, 15rem); line-height: .78; font-weight: 900; letter-spacing: -.04em;
  color: var(--surface-2); user-select: none;
}
.wordmark span {
  display: inline-block;
  font-variation-settings: "wdth" var(--w, 62);
  transition: font-variation-settings .5s var(--ease-out), color .4s;
}
.wordmark span.hl { color: var(--accent); }

.footer__bottom { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; padding-top: 18px; border-top: 1px solid var(--line); font-size: 11px; color: var(--muted); }
.footer__legal { display: flex; gap: 18px; }
.footer__bottom a:hover { color: var(--text); }
.footer__top-link { color: var(--text); }

/* =========================================================
   MOBILE MENU — wipes in like a slide transition
   ========================================================= */
.menu {
  position: fixed; inset: 0; z-index: 90;
  background: var(--surface);
  padding: 110px 24px 32px;
  display: flex; flex-direction: column; justify-content: space-between;
  clip-path: inset(0 0 0 100%);
  transition: clip-path .6s var(--ease-io);
}
.menu.is-open { clip-path: inset(0 0 0 0); }
.menu__links { display: grid; }
.menu__links a {
  display: flex; align-items: baseline; gap: 14px;
  font-size: clamp(38px, 11vw, 56px); font-weight: 800; letter-spacing: -.04em; font-variation-settings: "wdth" 72; line-height: 1.1;
  padding: 8px 0; border-bottom: 1px solid var(--line);
  opacity: 0; transform: translateX(30px);
  transition: opacity .4s, transform .6s var(--ease-out);
}
.menu__links a .mono { font-size: 12px; color: var(--accent); letter-spacing: .04em; font-weight: 400; }
.menu.is-open .menu__links a { opacity: 1; transform: none; }
.menu.is-open .menu__links a:nth-child(1) { transition-delay: .15s; }
.menu.is-open .menu__links a:nth-child(2) { transition-delay: .2s; }
.menu.is-open .menu__links a:nth-child(3) { transition-delay: .25s; }
.menu.is-open .menu__links a:nth-child(4) { transition-delay: .3s; }
.menu.is-open .menu__links a:nth-child(5) { transition-delay: .35s; }
.menu__foot { display: grid; gap: 18px; justify-items: start; }
body.menu-open { overflow: hidden; }

@media (max-width: 980px) {
  .closing__grid { grid-template-columns: 1fr; }
  .footer__top { grid-template-columns: 1fr 1fr; }
  .footer__brand { grid-column: 1 / -1; }
}
@media (max-width: 560px) {
  .brief__row { grid-template-columns: 1fr; }
  .footer__top { grid-template-columns: 1fr 1fr; gap: 28px 20px; }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-delay: 0s !important; transition-duration: .01ms !important; transition-delay: 0s !important; }
  html { scroll-behavior: auto; }
}
