/*!
 * Morrow — Creative Studio HTML Template
 * Main stylesheet (loaded after Bootstrap 5.3)
 *
 * TABLE OF CONTENTS
 * 01. Fonts
 * 02. Design tokens (light, dark, per-home accents)
 * 03. Base & typography
 * 04. Layout (container, bands)
 * 05. Buttons
 * 06. Site header & mobile menu
 * 07. Site footer
 * 08. Shared blocks (labels, meta rows)
 * 09. Motion helpers
 * 10. Responsive (shared)
 * 11+. One block per page, built from assets/css/src/*.css
 *
 * Source files live in assets/css/src/. Run  python3 tools/build-css.py
 * to rebuild this file after editing them.
 */

/* ==========================================================================
   01. Fonts — all SIL Open Font License 1.1 (see documentation → Credits)
   ========================================================================== */
@font-face { font-family: "Big Shoulders Display"; src: url("../fonts/big-shoulders-display-100.woff2") format("woff2"); font-weight: 100; font-style: normal; font-display: swap; }
@font-face { font-family: "Big Shoulders Display"; src: url("../fonts/big-shoulders-display-900.woff2") format("woff2"); font-weight: 900; font-style: normal; font-display: swap; }
@font-face { font-family: "Geist"; src: url("../fonts/geist-300.woff2") format("woff2"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "Geist"; src: url("../fonts/geist-400.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Geist"; src: url("../fonts/geist-500.woff2") format("woff2"); font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: "JetBrains Mono"; src: url("../fonts/jetbrains-mono-200.woff2") format("woff2"); font-weight: 200; font-style: normal; font-display: swap; }
/* Weight 300 (the body weight) maps to the Regular file so mono text never falls back to ExtraLight. */
@font-face { font-family: "JetBrains Mono"; src: url("../fonts/jetbrains-mono-400.woff2") format("woff2"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "JetBrains Mono"; src: url("../fonts/jetbrains-mono-400.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "JetBrains Mono"; src: url("../fonts/jetbrains-mono-500.woff2") format("woff2"); font-weight: 500; font-style: normal; font-display: swap; }

/* ==========================================================================
   02. Design tokens
   Names match the Figma variables (Color collection, Light / Dark modes).
   Change a value here and every page follows.
   ========================================================================== */
:root {
  --base: #fcf7f3;
  --surface: #f3ece4;
  --surface-alt: #e8dfd3;
  --contrast: #111111;
  --text-primary: #111111;
  --text-muted: #5c5650;
  --text-on-contrast: #fcf7f3;
  --border: #d9d0c4;

  /* Accent of the current home — overridden per page below */
  --accent: #111111;
  --on-accent: #fcf7f3;

  /* Type */
  --font-display: "Big Shoulders Display", "Arial Narrow", sans-serif;
  --font-body: "Geist", "Helvetica Neue", sans-serif;
  --font-mono: "JetBrains Mono", "SFMono-Regular", monospace;

  /* Space scale (Figma Space collection) */
  --space-8: 8px;  --space-16: 16px; --space-24: 24px; --space-32: 32px;
  --space-40: 40px; --space-48: 48px; --space-64: 64px; --space-96: 96px; --space-128: 128px;
  --radius: 4px;

  /* Page side padding: 60 desktop / 48 tablet / 24 phone */
  --gutter: 56px;

  /* Bootstrap bridge */
  --bs-body-bg: var(--base);
  --bs-body-color: var(--text-primary);
  --bs-body-font-family: var(--font-body);
  --bs-border-color: var(--border);
}

/* Dark pages set data-bs-theme="dark" on <html> */
[data-bs-theme="dark"] {
  --base: #0f0f0f;
  --surface: #171717;
  --surface-alt: #1f1f1f;
  --contrast: #262626;
  --text-primary: #f2efe9;
  --text-muted: #a8a29a;
  --text-on-contrast: #f2efe9;
  --border: #34302c;
  --accent: #f2efe9;
  --on-accent: #0f0f0f;
}

/* Studio home (index.html): cream, paper, warm ink, oxblood */
.home-studio {
  --base: #f4efe7;
  --surface: #ebe4d8;
  --contrast: #1a1414;
  --card: #251d1d;
  --text-primary: #1a1414;
  --text-muted: rgba(26, 20, 20, 0.65);
  --text-on-contrast: #f4efe7;
  --border: rgba(26, 20, 20, 0.2);
  --accent: #7a1f2b;
  --accent-deep: #561520;
  --on-accent: #f4efe7;
}
[data-bs-theme="dark"] .home-studio,
[data-bs-theme="dark"].home-studio {
  --base: #0f0f0f;
  --surface: #171717;
  --contrast: #1a1414;
  --text-primary: #f2efe9;
  --text-muted: #a8a29a;
  --border: #34302c;
}

/* ==========================================================================
   03. Base & typography
   No italics anywhere. Display type is Big Shoulders Display 900 (or 100 for
   the thin style); body is Geist; numbers and labels are JetBrains Mono.
   ========================================================================== */
html { -webkit-text-size-adjust: 100%; }
body {
  background: var(--base);
  color: var(--text-primary);
  font-family: var(--font-body);
  font-weight: 300;
  font-size: 17px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}
em, i { font-style: normal; }
a { color: inherit; text-decoration: none; }
a:hover { color: inherit; }
img { max-width: 100%; display: block; }

.t-display {
  font-family: var(--font-display);
  font-weight: 900;
  text-transform: uppercase;
  line-height: 0.85;
  letter-spacing: -0.01em;
  margin: 0;
}
.t-display-thin { font-weight: 100; }
.t-heading {
  font-family: var(--font-body);
  font-weight: 300;
  line-height: 1.08;
  letter-spacing: -0.03em;
  margin: 0;
}
.t-body-l { font-size: 22px; line-height: 1.4; font-weight: 300; }
.t-body-s { font-size: 15px; line-height: 1.5; }
.t-label {
  font-family: var(--font-mono);
  font-size: 13px;
  font-weight: 400;
  line-height: 1.4;
  color: var(--text-muted);
}
.t-data {
  font-family: var(--font-mono);
  font-weight: 200;
  line-height: 0.9;
  letter-spacing: -0.04em;
}

/* ==========================================================================
   04. Layout
   Content width is 1320 at 1440 (Bootstrap .container at xxl), with the
   gutter above as side padding.
   ========================================================================== */
.container-morrow {
  width: 100%;
  max-width: calc(1320px + var(--gutter) * 2);
  margin-inline: auto;
  padding-inline: var(--gutter);
}
.band { position: relative; }
.band--contrast { background: var(--contrast); color: var(--text-on-contrast); --text-muted: rgba(244, 239, 231, 0.65); --border: rgba(244, 239, 231, 0.2); }
.band--surface { background: var(--surface); }
.band--accent { background: var(--accent); color: var(--on-accent); --text-muted: rgba(244, 239, 231, 0.72); --border: rgba(244, 239, 231, 0.25); }

/* ==========================================================================
   05. Buttons — 4px corners, fixed heights (Large 56 / Medium 51 / Small 40)
   ========================================================================== */
.btn-m {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  height: 51px;
  padding: 0 24px;
  border: 1px solid transparent;
  border-radius: var(--radius);
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: 13px;
  line-height: 1;
  white-space: nowrap;
  transition: background-color .25s ease, color .25s ease, border-color .25s ease, transform .25s ease;
}
.btn-m:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.btn-m .btn-m__icon { transition: transform .25s ease; }
.btn-m:hover .btn-m__icon { transform: translateX(3px); }
.btn-m--sm { height: 48px; }
.btn-m--primary { background: var(--contrast); color: var(--text-on-contrast); }
.btn-m--primary:hover { background: var(--accent); color: var(--on-accent); }
.btn-m--accent { background: var(--accent); color: var(--on-accent); }
.btn-m--accent:hover { background: var(--contrast); color: var(--text-on-contrast); }
.btn-m--outline { border-color: color-mix(in srgb, currentColor 45%, transparent); color: var(--text-primary); }
.btn-m--outline:hover { border-color: currentColor; }

/* ==========================================================================
   06. Site header — lockup left, five links centre, one button right.
   Below 1024px the links move into the offcanvas menu.
   ========================================================================== */
.site-header { display: flex; align-items: center; justify-content: space-between; gap: var(--space-24); }
.lockup { display: inline-flex; align-items: center; gap: 12px; color: var(--text-primary); }
.lockup--inherit { color: inherit; }   /* drawer title takes the drawer colour */
.lockup svg { width: 32px; height: 32px; flex: none; }
.lockup__word {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 28px;
  letter-spacing: 0.14em;
  line-height: 1;
}
.site-nav { display: flex; gap: 32px; margin: 0; padding: 0; list-style: none; }
.site-nav a { font-family: var(--font-mono); font-size: 13px; line-height: 1.4; background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat; transition: background-size .25s ease; }
.site-nav a:hover, .site-nav a[aria-current="page"] { background-size: 100% 1px; }
.site-header__actions { display: flex; align-items: center; gap: 12px; }
.theme-switch { font-family: var(--font-mono); font-size: 13px; padding: 6px 10px; border: 1px solid var(--border); border-radius: var(--radius); }
.theme-switch:hover { border-color: currentColor; }
.menu-toggle {
  display: none;
  width: 48px; height: 48px;
  align-items: center; justify-content: center;
  border: 1px solid var(--border); border-radius: var(--radius);
  background: transparent; color: var(--text-primary);
}
.offcanvas.menu-drawer { background: var(--contrast); color: var(--text-on-contrast); width: 100%; max-width: 420px; }
.menu-drawer__list { list-style: none; padding: 0; margin: 0; }
.menu-drawer__list a { display: block; font-family: var(--font-display); font-weight: 900; font-size: 56px; line-height: 1; text-transform: uppercase; padding: 8px 0; }

/* Fit-to-width display lines: main.js sizes each [data-fit] line so it
   fills its column (data-fit = share of the column, 1 = full width). */
.fit-line { white-space: nowrap; }

/* ==========================================================================
   08. Shared blocks
   ========================================================================== */
.meta-row {
  display: flex; justify-content: space-between; gap: var(--space-16);
  border-top: 1px solid var(--border); padding-top: var(--space-16);
}

/* 08.1 Section rhythm */
.section-pad { padding: var(--space-128) 0; }
.band em { font-style: normal; }

/* 08.2 Round button — the one round element, used for the main CTA */
.btn-circle { flex: none; width: 200px; height: 200px; border-radius: 50%; background: var(--contrast); color: var(--text-on-contrast); display: inline-flex; align-items: center; justify-content: center; text-align: center; font-family: var(--font-mono); font-weight: 500; font-size: 14px; line-height: 1.4; transition: transform .35s ease; }
.btn-circle:hover { color: var(--text-on-contrast); transform: scale(1.06); }


/* 08.3 Inner-page shell — title band and closing footer band (13–16 pages) */
.page-title { padding: 32px 0 var(--space-96); }
.page-title__inner { display: flex; flex-direction: column; gap: var(--space-64); }
.page-title__block { display: flex; flex-direction: column; gap: var(--space-24); }
.page-title__crumbs { font-family: var(--font-mono); font-size: 13px; color: color-mix(in srgb, var(--text-primary) 70%, transparent); margin: 0; }
.page-title__crumbs a:hover { color: var(--text-primary); }
.page-title__row { display: flex; align-items: flex-end; gap: var(--space-48); }
.page-title__title { font-size: 240px; letter-spacing: -0.01em; line-height: .82; white-space: nowrap; }
.page-title__lead { flex: 1 1 0; margin: 0; font-size: 22px; line-height: 1.4; }
.site-nav a[aria-current="page"] { font-weight: 500; }
/* On inner pages the links other than the current one are dimmed, as in the design. */
.site-nav:has(a[aria-current="page"]) a:not([aria-current="page"]) { opacity: .75; }
.site-nav:has(a[aria-current="page"]) a:hover { opacity: 1; }
.page-end { padding: var(--space-96) 0 var(--space-48); }
.page-end__cta { display: flex; align-items: center; justify-content: space-between; gap: var(--space-32); margin-bottom: var(--space-64); }
.page-end__title { font-size: 110px; }
.btn-m--light { background: var(--base); color: var(--contrast); }
.btn-m--light:hover { background: var(--accent); color: var(--on-accent); }
.btn-m--light:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
/* Dark set: the primary button turns light so it stays visible on every dark band. */
[data-bs-theme="dark"] .btn-m--primary { background: #f2efe9; color: #111111; }
[data-bs-theme="dark"] .btn-m--primary:hover { background: var(--accent); color: var(--on-accent); }
/* Light button stays light on dark grounds in the dark set. */
[data-bs-theme="dark"] .btn-m--light { background: #f2efe9; color: #111111; }
[data-bs-theme="dark"] .btn-m--light:hover { background: var(--accent); color: var(--on-accent); }

/* ==========================================================================
   07. Site footer — brand column fills, three 240px link columns, legal row.
   Colours follow the band it sits in (--text-muted, --border).
   ========================================================================== */
.site-footer { border-top: 1px solid var(--border); padding-top: var(--space-48); }
.site-footer__cols { display: flex; gap: var(--space-32); margin-bottom: var(--space-48); }
.site-footer__brand { flex: 1 1 0; display: flex; flex-direction: column; gap: var(--space-16); }
.site-footer__brand p { max-width: 300px; margin: 0; font-size: 15px; font-weight: 400; color: var(--text-muted); }
.lockup--lg { color: inherit; gap: 15.6px; }
.lockup--lg svg { width: 41.6px; height: 41.6px; }
.lockup--lg .lockup__word { font-size: 36.4px; }
.site-footer__col { flex: 0 0 240px; display: flex; flex-direction: column; gap: 12px; font-size: 17px; font-weight: 400; }
.site-footer__col h3 { margin: 0; font-family: var(--font-mono); font-size: 13px; font-weight: 400; color: var(--text-muted); }
.site-footer__col a:hover { text-decoration: underline; text-underline-offset: 3px; }
.site-footer__legal { display: flex; justify-content: space-between; gap: var(--space-16); padding-top: 24px; border-top: 1px solid var(--border); font-family: var(--font-mono); font-size: 13px; color: var(--text-muted); }

/* ==========================================================================
   09. Motion helpers
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* ==========================================================================
   10. Responsive (shared) — tablet 768 (48 gutter), phone 390 (24 gutter)
   ========================================================================== */
@media (max-width: 1199.98px) {
  .page-title__row { flex-direction: column; align-items: flex-start; gap: var(--space-24); }
  .page-title__title { font-size: 160px; white-space: normal; }
  .page-end__title { font-size: 80px; }
}
@media (max-width: 1023.98px) {
  :root { --gutter: 48px; }
  .site-nav, .site-header .btn-m { display: none; }
  .site-header__actions { margin-left: auto; }
  .menu-toggle { display: inline-flex; }
  .section-pad { padding: 96px 0; }
  .site-footer__cols { flex-wrap: wrap; }
  .site-footer__brand { flex-basis: 100%; }
  .site-footer__col { flex-basis: 150px; }
}
@media (max-width: 575.98px) {
  :root { --gutter: 24px; }
  .page-title__title { font-size: 88px; }
  .page-title__lead { font-size: 18px; }
  .page-end__cta { flex-direction: column; align-items: flex-start; }
  .page-end__title { font-size: 56px; }
  .meta-row { flex-wrap: wrap; }
  .btn-circle { width: 160px; height: 160px; }
  .site-footer__legal { flex-direction: column; }
}

/* ==========================================================================
   Motion layer (assets/js/motion.js)
   ========================================================================== */
/* Preloader: the mark rises, a counter runs to 100, the panel lifts away. */
.preloader {
  position: fixed; inset: 0; z-index: 2000;
  display: flex; flex-direction: column; justify-content: flex-end; gap: 24px;
  padding: var(--gutter); background: var(--contrast); color: var(--text-on-contrast);
}
.preloader__mark { position: absolute; left: 50%; top: 42%; width: 120px; transform: translate(-50%, -50%); overflow: hidden; }
.preloader__mark svg { width: 100%; height: auto; display: block; }
.preloader__row { display: flex; justify-content: space-between; align-items: flex-end; overflow: hidden; }
.preloader__word { font-family: var(--font-display); font-weight: 900; text-transform: uppercase; font-size: clamp(64px, 14vw, 200px); line-height: .8; letter-spacing: .02em; }
.preloader__count { font-family: var(--font-mono); font-weight: 200; font-size: clamp(40px, 7vw, 96px); line-height: .8; }
.preloader__bar { height: 2px; background: color-mix(in srgb, currentColor 20%, transparent); }
.preloader__bar i { display: block; height: 100%; background: currentColor; transform: scaleX(0); transform-origin: left; }

/* Page curtain between internal pages. */
.curtain { position: fixed; inset: 0; z-index: 1990; pointer-events: none; overflow: hidden; }
/* Early cover: a one-line script in <head> adds .is-covered on the first visit or when
   arriving from a link, so the page never flashes before the intro. motion.js removes it;
   if scripts fail, the cover fades away on its own after 4s. */
html.is-covered body::before { content: ""; position: fixed; inset: 0; z-index: 1989; background: var(--contrast); animation: cover-off 0s 4s forwards; }
@keyframes cover-off { to { visibility: hidden; } }
.curtain__panel { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: space-between; padding: 32px var(--gutter) 48px; background: var(--contrast); color: var(--base); }   /* position is set by motion.js */
.curtain__top { display: flex; align-items: center; gap: 12px; font-family: var(--font-mono); font-size: 13px; text-transform: uppercase; letter-spacing: .08em; }
.curtain__top svg { width: 28px; height: 28px; }
.curtain__bottom { display: flex; flex-direction: column; gap: 24px; }
.curtain__label { display: block; overflow: hidden; padding-top: .12em; }
.curtain__text { display: block; font-family: var(--font-display); font-weight: 900; text-transform: uppercase; font-size: clamp(56px, 9vw, 168px); line-height: .88; letter-spacing: -0.01em; max-width: 14ch; }
.curtain__bar { display: block; height: 1px; background: color-mix(in srgb, var(--base) 25%, transparent); }
.curtain__bar i { display: block; height: 100%; background: var(--base); transform: scaleX(0); transform-origin: 0 50%; }


/* Custom cursor — fine pointers only. */
.has-m-cursor, .has-m-cursor a, .has-m-cursor button { cursor: none; }
.has-m-cursor input, .has-m-cursor textarea, .has-m-cursor select { cursor: text; }
.m-cursor { position: fixed; left: 0; top: 0; z-index: 2100; pointer-events: none; mix-blend-mode: difference; color: #fff; opacity: 0; transition: opacity .3s; }
.m-cursor.is-on { opacity: 1; }
.m-cursor__dot, .m-cursor__ring { position: fixed; left: 0; top: 0; border-radius: 50%; }
.m-cursor__dot { width: 6px; height: 6px; margin: -3px 0 0 -3px; background: currentColor; }
.m-cursor__ring { width: 40px; height: 40px; margin: -20px 0 0 -20px; border: 1px solid currentColor; display: flex; align-items: center; justify-content: center;
  transition: width .35s cubic-bezier(.2,.7,.2,1), height .35s cubic-bezier(.2,.7,.2,1), margin .35s cubic-bezier(.2,.7,.2,1), background-color .3s, border-color .3s; }
.m-cursor.is-hot .m-cursor__ring { width: 64px; height: 64px; margin: -32px 0 0 -32px; }
.m-cursor.is-view .m-cursor__ring { width: 96px; height: 96px; margin: -48px 0 0 -48px; background: currentColor; }
.m-cursor.is-view .m-cursor__dot { opacity: 0; }
.m-cursor.is-text .m-cursor__ring { width: 2px; height: 28px; margin: -14px 0 0 -1px; border-radius: 1px; background: currentColor; }
.m-cursor.is-down .m-cursor__ring { transform: scale(.85); }
.m-cursor__label { font-family: var(--font-mono); font-weight: 500; font-size: 12px; color: #000; opacity: 0; transition: opacity .2s; }
.m-cursor.is-view .m-cursor__label { opacity: 1; }

/* Rolling button label: a copy below slides up on hover. */
.btn-m .roll { display: inline-block; overflow: hidden; height: 1.2em; line-height: 1.2; vertical-align: middle; }
.btn-m .roll__in { display: block; transition: transform .5s cubic-bezier(.7, 0, .2, 1); }
.btn-m .roll__in::after { content: attr(data-text); display: block; }
.btn-m:hover .roll__in, .btn-m:focus-visible .roll__in { transform: translateY(-50%); }

/* ==========================================================================
   05. Demo picker (index.html at the package root)
   ========================================================================== */
.page-picker { --pk-gap: 24px; }

/* Header bar */
.page-picker .pk-nav { display: flex; gap: 32px; margin: 0; padding: 0; list-style: none; }
.page-picker .pk-nav a { font-family: var(--font-mono); font-size: 13px; opacity: .75; }
.page-picker .pk-nav a:hover { opacity: 1; }

/* Hero: what Morrow is, in one screen */
.page-picker .pk-hero { padding: 32px 0 var(--space-96); }
.page-picker .pk-hero__grid { display: grid; grid-template-columns: 1.05fr 1fr; gap: var(--space-64); align-items: center; margin-top: var(--space-64); }
.page-picker .pk-hero__eyebrow { margin: 0 0 var(--space-24); }
.page-picker .pk-hero__title { font-size: clamp(88px, 11vw, 168px); line-height: .84; margin: 0 0 var(--space-32); }
.page-picker .pk-hero__lead { margin: 0 0 var(--space-40); max-width: 520px; font-size: 20px; line-height: 1.45; }
.page-picker .pk-hero__actions { display: flex; gap: 12px; flex-wrap: wrap; }
.page-picker .pk-stats { display: grid; grid-template-columns: repeat(5, auto); gap: var(--space-32); margin: var(--space-64) 0 0; padding: var(--space-24) 0 0; list-style: none; border-top: 1px solid var(--border); }
.page-picker .pk-stats b { display: block; font-family: var(--font-mono); font-weight: 200; font-size: 44px; line-height: 1; letter-spacing: -0.03em; }
.page-picker .pk-stats span { font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); }

/* Fan of three previews */
.page-picker .pk-fan { position: relative; aspect-ratio: 1 / .82; }
.page-picker .pk-fan figure { position: absolute; width: 64%; margin: 0; border-radius: var(--radius); overflow: hidden; box-shadow: 0 24px 60px rgba(17, 17, 17, .18); background: var(--surface); }
.page-picker .pk-fan img { width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: cover; object-position: top; }
.page-picker .pk-fan figure:nth-child(1) { left: 0; top: 18%; transform: rotate(-6deg); }
.page-picker .pk-fan figure:nth-child(2) { right: 0; top: 4%; transform: rotate(5deg); }
.page-picker .pk-fan figure:nth-child(3) { left: 18%; bottom: 0; transform: rotate(-1deg); z-index: 2; }

/* Section heads */
.page-picker .pk-head { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--space-32); margin-bottom: var(--space-48); }
.page-picker .pk-head h2 { font-size: clamp(48px, 6vw, 88px); margin: 12px 0 0; }
.page-picker .pk-head p { max-width: 420px; margin: 0; color: var(--text-muted); font-size: 16px; }

/* Home cards: 4 across */
.page-picker .pk-homes { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-48) var(--pk-gap); list-style: none; margin: 0; padding: 0; }
.page-picker .pk-card { display: flex; flex-direction: column; gap: 12px; }
.page-picker .pk-card__shot { display: block; position: relative; border-radius: var(--radius); overflow: hidden; border: 1px solid var(--border); background: var(--surface); }
.page-picker .pk-card__shot img { width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: cover; object-position: top; transition: transform .7s cubic-bezier(.2, .7, .2, 1); }
.page-picker .pk-card:hover .pk-card__shot img { transform: scale(1.05); }
.page-picker .pk-card__num { position: absolute; left: 10px; top: 10px; padding: 3px 6px; border-radius: var(--radius); background: var(--contrast); color: var(--text-on-contrast); font-family: var(--font-mono); font-size: 11px; }
.page-picker .pk-card__row { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 12px; }
.page-picker .pk-card__name { margin: 0; font-family: var(--font-display); font-weight: 900; text-transform: uppercase; font-size: 30px; line-height: .9; }
.page-picker .pk-card__links { display: flex; gap: 6px; }
.page-picker .pk-card__links a { font-family: var(--font-mono); font-size: 11px; padding: 4px 8px; border: 1px solid var(--border); border-radius: var(--radius); }
.page-picker .pk-card__links a:hover { border-color: currentColor; }
.page-picker .pk-card__note { margin: 0; font-size: 14px; line-height: 1.45; color: var(--text-muted); }

/* Inner pages: small tiles, 5 across */
.page-picker .pk-group { margin-bottom: var(--space-48); }
.page-picker .pk-group h3 { font-family: var(--font-mono); font-weight: 400; font-size: 13px; color: var(--text-muted); margin: 0 0 16px; }
.page-picker .pk-inner { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--space-32) var(--pk-gap); list-style: none; margin: 0; padding: 0; }
.page-picker .pk-inner .pk-card__name { font-family: var(--font-body); font-weight: 500; text-transform: none; font-size: 15px; line-height: 1.3; }

/* Features */
.page-picker .pk-features { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: var(--border); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; margin: 0; padding: 0; list-style: none; }
.page-picker .pk-feature { background: var(--base); padding: 32px; display: flex; flex-direction: column; gap: 12px; }
.page-picker .pk-feature i { font-size: 20px; }
.page-picker .pk-feature h3 { margin: 0; font-size: 20px; font-weight: 500; }
.page-picker .pk-feature p { margin: 0; font-size: 15px; line-height: 1.5; color: var(--text-muted); }

/* Stack strip */
.page-picker .pk-stack { display: flex; flex-wrap: wrap; gap: 10px; margin: 0; padding: 0; list-style: none; }
.page-picker .pk-stack li { font-family: var(--font-mono); font-size: 13px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius); }
.page-picker .pk-foot { display: flex; justify-content: space-between; gap: 16px; padding: 32px 0 48px; border-top: 1px solid var(--border); font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); }

@media (max-width: 1199.98px) {
  .page-picker .pk-homes { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .page-picker .pk-inner { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 1023.98px) {
  .page-picker .pk-nav { display: none; }
  .page-picker .pk-hero__grid { grid-template-columns: minmax(0, 1fr); }
  .page-picker .pk-fan { max-width: 560px; }
  .page-picker .pk-stats { grid-template-columns: repeat(3, auto); }
  .page-picker .pk-homes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-picker .pk-inner { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .page-picker .pk-features { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-picker .pk-head { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 575.98px) {
  .page-picker .pk-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-picker .pk-stats b { font-size: 34px; }
  .page-picker .pk-homes { grid-template-columns: minmax(0, 1fr); }
  .page-picker .pk-inner { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-picker .pk-features { grid-template-columns: minmax(0, 1fr); }
  .page-picker .pk-feature { padding: 24px; }
  .page-picker .pk-foot { flex-direction: column; }
}

/* ==========================================================================
   11. Home — Studio (light/index.html, dark/index.html)
   ========================================================================== */

/* 09.1 Hero & about --------------------------------------------------------- */
.studio-hero { padding: 32px 0 var(--space-128); }
.studio-hero__inner { display: flex; flex-direction: column; gap: var(--space-64); }
.studio-hero__headline { display: flex; flex-direction: column; gap: var(--space-16); }
.studio-hero__headline h1 { display: flex; flex-direction: column; gap: var(--space-16); }
/* Two lines, one weight. Sizes are fluid so each line fills the 1320 column. */
.studio-hero__line-1 { font-size: clamp(56px, 12.85vw, 185px); letter-spacing: -0.02em; line-height: .82; }
.studio-hero__line-2 { font-size: clamp(80px, 18.96vw, 273px); letter-spacing: -0.01em; line-height: .84; }

.studio-about { display: flex; align-items: flex-end; gap: var(--space-32); }
.studio-about__media { flex: 0 0 520px; aspect-ratio: 520 / 680; overflow: hidden; }
.studio-about__media img { width: 100%; height: 100%; object-fit: cover; }
.studio-about__copy { flex: 1 1 0; display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-40); }
.studio-about__lead { font-size: 56px; letter-spacing: -0.03em; line-height: 1.08; }
.studio-about__text { max-width: 460px; font-size: 18px; line-height: 1.5; color: color-mix(in srgb, var(--text-primary) 72%, transparent); margin: 0; }

/* 09.2 Still-in-use ruler ---------------------------------------------------
   Built by assets/js/home-studio.js from the <ol> of projects inside
   .ruler. Edit the list (year + label + years in use), not the drawing. */
.ruler-block { display: flex; flex-direction: column; gap: var(--space-32); }
.ruler-block__head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-24); }
.ruler-block__title { font-size: 40px; letter-spacing: -0.02em; line-height: 1.1; max-width: 640px; margin: 12px 0 0; }
.ruler-wrap { overflow-x: auto; scrollbar-width: thin; }
.ruler { position: relative; height: 230px; }
.ruler__baseline { position: absolute; left: 0; right: 0; top: 170px; height: 1px; background: var(--text-primary); }
.ruler__tick { position: absolute; top: 162px; width: 1px; height: 8px; background: color-mix(in srgb, var(--text-primary) 40%, transparent); }
.ruler__tick--major { top: 150px; height: 20px; background: var(--text-primary); }
.ruler__year { position: absolute; top: 184px; font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); transform: translateX(-50%); }
.ruler__year:first-of-type { transform: none; }
.ruler__year--last { transform: translateX(-100%); }
.ruler__flag { position: absolute; bottom: 60px; width: 1px; background: var(--accent); transition: opacity .4s ease; }
/* Flags the playhead has not reached yet are dimmed (home-studio.js adds .is-ahead). */
.ruler__flag.is-ahead { opacity: .28; }
.ruler__flag::after { content: ""; position: absolute; bottom: -4.5px; left: -4px; width: 9px; height: 9px; border-radius: 50%; background: var(--accent); }
.ruler__flag-label { position: absolute; left: 10px; top: -2px; display: flex; flex-direction: column; gap: 4px; white-space: nowrap; }
.ruler__flag-label strong { font-weight: 500; font-size: 15px; }
.ruler__flag-label span { font-family: var(--font-mono); font-size: 12px; }
/* Playhead: travels 2014 → today as the ruler scrolls through the screen. */
.ruler__head { position: absolute; top: 134px; left: var(--p, 100%); width: 1px; height: 36px; background: var(--accent); pointer-events: none; }
.ruler__head::before { content: ""; position: absolute; left: -7px; top: -9px; border-left: 7.5px solid transparent; border-right: 7.5px solid transparent; border-top: 9px solid var(--accent); }
.ruler__head-year { position: absolute; top: calc(100% + 36px); left: 0; transform: translateX(-50%); padding: 2px 6px; border-radius: 2px; background: var(--accent); color: var(--on-accent); font-family: var(--font-mono); font-weight: 500; font-size: 11px; line-height: 1.3; white-space: nowrap; }
.ruler__head.is-start .ruler__head-year { transform: none; left: -1px; }
.ruler__head.is-end .ruler__head-year { transform: translateX(-100%); left: 1px; }
/* The source list stays in the DOM for screen readers, visually hidden. */
.ruler__list { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }



/* 09.4 Selected work — collage ---------------------------------------------- */
.work-head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-24); margin-bottom: 80px; }
.work-head__title { font-size: 160px; letter-spacing: -0.01em; }
.work-head__link { font-family: var(--font-mono); font-weight: 500; font-size: 13px; }
.collage { display: flex; flex-direction: column; gap: 80px; }
.collage__row { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-24); }
.project-card { display: flex; flex-direction: column; gap: 12px; width: var(--w); padding-top: var(--drop); color: var(--text-on-contrast); translate: 0 var(--py, 0px); }
.project-card__media { display: block; height: var(--h); overflow: hidden; }
.project-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2,.7,.2,1); }
.project-card:hover .project-card__media img { transform: scale(1.04); }
.project-card__meta { display: flex; justify-content: space-between; gap: 12px; }
.project-card__meta > span:first-child { display: flex; flex-direction: column; gap: 4px; }
.project-card__meta strong { font-weight: 500; font-size: 16px; }
.project-card__meta em, .project-card__year { font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); }

/* 09.5 Services -------------------------------------------------------------- */
.services-title { font-size: min(200px, 13.9vw); letter-spacing: -0.01em; line-height: .86; white-space: nowrap; display: flex; flex-direction: column; gap: 8px; margin-bottom: 80px; }
.service-list { list-style: none; margin: 0; padding: 0; }
.service-row { display: flex; align-items: center; gap: var(--space-32); padding: 40px 0; border-top: 1px solid var(--border); color: inherit; }
.service-list li:last-child .service-row { border-bottom: 1px solid var(--border); }
.service-row__num { flex: 0 0 160px; font-family: var(--font-mono); font-size: 14px; color: color-mix(in srgb, var(--text-primary) 72%, transparent); }
.service-row__name { flex: 1 1 0; font-size: 56px; line-height: 1.2; transition: transform .35s ease; }
.service-row:hover .service-row__name, .service-row:focus-visible .service-row__name { transform: translateX(12px); }
.service-row__text { flex: 0 0 400px; margin: 0; font-size: 17px; color: color-mix(in srgb, var(--text-primary) 78%, transparent); }
.service-row__go { flex: 0 0 24px; font-size: 22px; text-align: right; opacity: 0; transform: translate(-8px, 8px); transition: opacity .3s ease, transform .35s cubic-bezier(.2,.7,.2,1); }
.service-row:hover .service-row__go, .service-row:focus-visible .service-row__go { opacity: 1; transform: none; }
.service-row:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }

/* 09.6 Clients — transcript, voice note, swatch fan --------------------------- */
.testimonial { padding: var(--space-128) 0 var(--space-96); overflow-x: clip; }
.testimonial__layout { display: flex; flex-direction: column; gap: var(--space-48); margin-bottom: var(--space-96); }
.testimonial__intro { display: flex; flex-direction: column; gap: var(--space-24); }
.testimonial__title { font-size: 72px; line-height: 1; max-width: 760px; }
/* Transcript and voice note side by side, same height. */
.testimonial__panels { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-24); align-items: stretch; }
.panel { background: var(--card); border-radius: var(--radius); padding: var(--space-32); display: flex; flex-direction: column; gap: var(--space-32); min-width: 0; }
.transcript { justify-content: space-between; }
.transcript__quote, .transcript .person, .voice__controls .person__text { transition: opacity .35s ease, transform .45s cubic-bezier(.2,.7,.2,1); }
.testimonial__layout.is-switching .transcript__quote,
.testimonial__layout.is-switching .transcript .person,
.testimonial__layout.is-switching .voice__controls .person__text { opacity: 0; transform: translateY(10px); }
.panel__label { font-family: var(--font-mono); font-size: 12px; color: rgba(244, 239, 231, 0.7); }
.transcript__quote { font-size: 28px; line-height: 1.3; letter-spacing: -0.01em; }
.person { display: flex; align-items: center; gap: var(--space-16); }
.person__avatar { flex: none; width: 56px; height: 56px; border-radius: 50%; overflow: hidden; display: grid; place-items: center; background: #3a2c2c; color: var(--text-on-contrast); font-family: var(--font-mono); font-weight: 500; font-size: 15px; }
.person__avatar img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1); }
.person strong, .person__text strong { display: block; font-weight: 500; font-size: 16px; }
.person em, .person__text em { display: block; font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); margin-top: 4px; }
.voice { justify-content: space-between; }
.voice__head { display: flex; justify-content: space-between; font-family: var(--font-mono); font-size: 12px; }
.voice__live { display: inline-flex; align-items: center; gap: 8px; font-weight: 500; }
.voice__dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.voice.is-playing .voice__dot { background: #e0455a; animation: voice-rec 1.2s ease-in-out infinite; }
@keyframes voice-rec { 50% { opacity: .25; } }
.voice__wave { display: flex; align-items: center; justify-content: space-between; gap: 3px; height: 96px; cursor: pointer; }
.voice__wave i { flex: 1 1 0; max-width: 4px; border-radius: 2px; background: rgba(235, 228, 216, 0.35); transform-origin: 50% 50%; transition: background-color .2s; }
.voice__wave:hover i { background: rgba(235, 228, 216, 0.5); }
.voice__wave i.is-played { background: var(--accent); }
.voice__controls { display: flex; align-items: center; gap: var(--space-16); }
.voice__play { flex: none; width: 56px; height: 56px; border-radius: 50%; border: 0; background: var(--accent); color: var(--on-accent); display: inline-flex; align-items: center; justify-content: center; }
.voice__controls .person__text { flex: 1 1 0; }
.voice__time { font-family: var(--font-mono); font-size: 13px; color: rgba(244, 239, 231, 0.8); }
.voice__play:hover { background: var(--on-accent); color: var(--accent); }
.voice__play:focus-visible, .voice__more:focus-visible { outline: 2px solid var(--on-accent); outline-offset: 3px; }
.voice__more { align-self: flex-start; padding: 0; border: 0; background: none; font-family: var(--font-mono); font-weight: 500; font-size: 12px; color: rgba(244, 239, 231, 0.8); }
.voice__more:hover { color: var(--text-on-contrast); }
.voice__more-arrow { display: inline-block; transition: transform .25s ease; }
.voice__more:hover .voice__more-arrow { transform: translateX(4px); }

.swatch-fan { position: relative; height: 460px; list-style: none; margin: 0; padding: 0; }
.swatch {
  --x: calc(var(--i) * 132px);
  --r: calc(var(--i) * 7deg);
  --y: calc(var(--i) * var(--i) * 7px);
  position: absolute; left: 50%; top: 70px; width: 200px;
  background: #f4ece1; color: #1d0f0e; border-radius: 6px; overflow: hidden;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.35);
  transform: translate(calc(-50% + var(--x)), var(--y)) rotate(var(--r));
  transform-origin: 50% 120%;
  transition: transform .35s cubic-bezier(.2,.7,.2,1);
}
.swatch { cursor: pointer; }
.swatch:hover, .swatch:focus-visible, .swatch.is-copied { transform: translate(calc(-50% + var(--x)), calc(var(--y) - 24px)) rotate(var(--r)); z-index: 5; }
.swatch:focus-visible { outline: 2px solid var(--text-on-contrast); outline-offset: 4px; }
.swatch__colour { display: block; height: 196px; background: var(--c); }
.swatch__label { display: flex; flex-direction: column; gap: 6px; padding: 20px; }
.swatch__label strong { font-weight: 500; font-size: 18px; }
.swatch__label em { font-family: var(--font-mono); font-size: 12px; color: rgba(29, 15, 14, 0.7); white-space: pre; }

/* 09.7 Recognition ------------------------------------------------------------ */
.recognition { display: flex; gap: var(--space-32); align-items: flex-start; }
.recognition__intro { flex: 0 0 520px; display: flex; flex-direction: column; gap: var(--space-32); }
.recognition__title { font-size: 48px; line-height: 1.1; }
.awards { flex: 1 1 0; margin: 0; }
.awards__group { position: relative; display: flex; flex-direction: column; gap: 10px; padding: 24px 0 24px 272px; border-top: 1px solid var(--border); }
.awards dt { position: absolute; left: 0; top: 24px; width: 240px; font-weight: 500; font-size: 18px; }
.awards dd { display: flex; justify-content: space-between; margin: 0; font-weight: 400; font-size: 16px; color: color-mix(in srgb, var(--text-primary) 72%, transparent); }
.awards dd b { font-family: var(--font-mono); font-weight: 400; font-size: 14px; color: var(--text-primary); }

/* 09.8 People -------------------------------------------------------------------- */
.team-head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-32); margin-bottom: var(--space-64); }
.team-head__title { font-size: 72px; line-height: 1; max-width: 760px; margin-top: 24px; }
.team-head__text { max-width: 320px; margin: 0; font-size: 18px; color: rgba(244, 239, 231, 0.72); }
.team-grid { --bs-gutter-x: 32px; }
.team-card { display: flex; flex-direction: column; gap: 4px; }
.team-card img { width: 100%; aspect-ratio: 309 / 400; object-fit: cover; filter: grayscale(1); margin-bottom: 12px; transition: filter .4s ease; }
.team-card:hover img { filter: grayscale(0); }
.team-card strong { font-weight: 500; font-size: 18px; }
.team-card em { font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); }

/* 09.9 CTA — calendar, actions, footer -------------------------------------- */
.cta { padding: var(--space-128) 0 var(--space-48); }
.calendar { display: flex; flex-direction: column; gap: var(--space-48); margin-bottom: var(--space-96); }
.calendar__title { font-size: 145px; letter-spacing: -0.01em; }
.calendar__months { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; }
.month__cell { position: relative; height: 168px; padding: 24px; border-radius: var(--radius); display: flex; flex-direction: column; justify-content: space-between; background: var(--contrast); color: var(--text-on-contrast); overflow: hidden; transition: transform .3s ease, background-color .3s ease, color .3s ease; }
.month__cell span { font-family: var(--font-mono); font-weight: 500; font-size: 13px; }
.month__cell strong { font-weight: 500; font-size: 18px; transition: transform .35s cubic-bezier(.2,.7,.2,1); }
.month[data-state="booked"] .month__cell { background: var(--accent-deep); color: rgba(244, 239, 231, 0.9); }
.month[data-state="booked"] strong { font-weight: 400; }
/* Open months are links: they lift, turn cream and offer "Book". */
.month__book { position: absolute; right: 24px; top: 24px; font-family: var(--font-mono); font-weight: 500; font-size: 13px; opacity: 0; transform: translateX(-8px); transition: opacity .3s ease, transform .35s cubic-bezier(.2,.7,.2,1); }
a.month__cell:hover, a.month__cell:focus-visible { transform: translateY(-6px); background: var(--text-on-contrast); color: var(--contrast); }
a.month__cell:hover .month__book, a.month__cell:focus-visible .month__book { opacity: 1; transform: none; }
a.month__cell:focus-visible { outline: 2px solid var(--text-on-contrast); outline-offset: 3px; }
.cta__actions { display: flex; align-items: center; gap: var(--space-48); margin-bottom: var(--space-96); }
.cta__mail { font-weight: 300; font-size: 64px; letter-spacing: -0.03em; line-height: 1.3; }
.cta__mail { background: linear-gradient(currentColor, currentColor) 0 100% / 0 2px no-repeat; transition: background-size .45s cubic-bezier(.2,.7,.2,1); }
.cta__mail:hover { background-size: 100% 2px; }
/* Full-width fit lines stay on the grid edge: no display scrub (motion.js). */
.home-studio [data-no-scrub] { transform: none !important; }
/* Footer lines on the oxblood band are drawn in ink, as in the design. */
.home-studio .cta .site-footer, .home-studio .cta .site-footer__legal { border-color: rgba(26, 20, 20, 0.25); }

@media (max-width: 1199.98px) {
  .studio-about__media { flex-basis: 420px; }
  .studio-about__lead { font-size: 44px; }
  .collage { display: grid; grid-template-columns: 1fr 1fr; gap: 48px 24px; }
  .collage__row { display: contents; }
  .project-card { --drop: 0px !important; width: auto; }
  .project-card__media { height: auto; aspect-ratio: 4 / 3; }
  .transcript__quote { font-size: 24px; }
  .recognition { flex-direction: column; align-items: stretch; }
  .recognition__intro { flex-basis: auto; }
  .cta__mail { font-size: 44px; }
}
@media (max-width: 1023.98px) {
  .studio-about { flex-direction: column; align-items: stretch; }
  .studio-about__media { flex-basis: auto; }
  .ruler-block__head { flex-direction: column; align-items: flex-start; }
  .ruler { min-width: 960px; }
  .work-head__title { font-size: 120px; }
  .service-row { flex-wrap: wrap; }
  .service-row__num { flex-basis: 100%; }
  .service-row__text { flex: 1 1 100%; }
  .service-row__name { font-size: 44px; }
  .service-row__go { display: none; }
  .testimonial__panels { grid-template-columns: 1fr; }
  .testimonial__title { font-size: 56px; }
  .swatch__colour { height: 150px; }
  /* Tablet and phone: the fan becomes a swipeable strip so every label stays readable. */
  .swatch-fan { display: flex; gap: 12px; height: auto; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: var(--gutter); margin-inline: calc(var(--gutter) * -1); padding: 24px var(--gutter) 32px; scrollbar-width: none; }
  .swatch-fan::-webkit-scrollbar { display: none; }
  .swatch, .swatch:hover, .swatch:focus-visible, .swatch.is-copied { position: relative; left: auto; top: auto; flex: 0 0 150px; transform: rotate(calc(var(--i) * 1.2deg)); scroll-snap-align: start; }
  .swatch.is-copied { transform: translateY(-10px); }
  .team-head { flex-direction: column; align-items: flex-start; }
  .team-head__title { font-size: 56px; }
  .calendar__months { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 575.98px) {
  .studio-about__lead { font-size: 32px; }
  .ruler-block__title { font-size: 28px; }
  .work-head { flex-wrap: wrap; }
  .work-head__title { font-size: 88px; order: -1; flex-basis: 100%; }
  .collage { grid-template-columns: 1fr; }
  .service-row__name { font-size: 32px; }
  .testimonial__title { font-size: 44px; }
  .panel { padding: 24px; }
  .transcript__quote { font-size: 22px; }
  .swatch-fan { height: 340px; }
  .swatch__colour { height: 120px; }
  .swatch__label { padding: 12px; }
  .recognition__title { font-size: 32px; }
  .awards__group { padding-left: 0; }
  .awards dt { position: static; width: auto; }
  .team-head__title { font-size: 44px; }
  .calendar__months { grid-template-columns: repeat(2, 1fr); }
  .month__cell { height: 120px; padding: 16px; }
  .month__book { right: 16px; top: 16px; }
  .studio-hero .meta-row__mid { display: none; }
  .voice__controls { display: grid; grid-template-columns: 56px 1fr; column-gap: 16px; row-gap: 2px; }
  .voice__play { grid-row: span 2; }
  .voice__time { font-size: 12px; }
  .cta__actions { flex-direction: column; align-items: flex-start; gap: 32px; }
  .cta__mail { font-size: 30px; }
}

/* ==========================================================================
   12. Home — Creative (light/home-creative.html, dark/home-creative.html)
   Cream, cream 2 and two inks. No accent colour: the photos carry it.
   ========================================================================== */
.home-creative {
  --base: #fcf7f3;
  --surface: #f3ece4;
  --contrast: #111111;
  --ink-2: #1d1c1c;              /* clients band */
  --paper: #fcf7f3;              /* letters */
  --paper-back: #f1efea;         /* letters behind the top one */
  --text-primary: #111111;
  --text-muted: rgba(17, 17, 17, 0.7);
  --text-on-contrast: #fcf7f3;
  --border: rgba(17, 17, 17, 0.2);
  --accent: #111111;
  --on-accent: #fcf7f3;
}
[data-bs-theme="dark"] .home-creative,
[data-bs-theme="dark"].home-creative {
  --base: #0f0f0f;
  --surface: #171717;
  --contrast: #1c1c1c;
  --ink-2: #141414;
  --paper: #1f1f1f;
  --paper-back: #171717;
  --text-primary: #f2efe9;
  --text-muted: #a8a29a;
  --text-on-contrast: #f2efe9;
  --border: #34302c;
  --accent: #f2efe9;
  --on-accent: #0f0f0f;
}
/* Dark: primary buttons sit on a raised grey, as in the Figma dark frame. */
[data-bs-theme="dark"] .home-creative .btn-m--primary { background: #262626; color: #f2efe9; }
[data-bs-theme="dark"] .home-creative .btn-m--primary:hover { background: #f2efe9; color: #0f0f0f; }
/* Dark: letters become dark sheets with light type. */
[data-bs-theme="dark"] .home-creative .cr-letter { color: #f2efe9; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); outline: 1px solid rgba(242, 239, 233, 0.08); }
[data-bs-theme="dark"] .home-creative .cr-letter__head,
[data-bs-theme="dark"] .home-creative .cr-letter__sign { color: #a8a29a; }
.home-creative .band--contrast { --text-muted: rgba(252, 247, 243, 0.72); --border: rgba(252, 247, 243, 0.2); }

/* 12.1 Hero — rising sun ----------------------------------------------------- */
.home-creative .cr-hero { padding: 32px 0 var(--space-96); overflow-x: clip; }
.home-creative .cr-hero__inner { display: flex; flex-direction: column; gap: var(--space-64); }
.home-creative .cr-sunrise { display: flex; flex-direction: column; align-items: center; gap: 56px; }
.home-creative .cr-sunrise__dates { display: flex; justify-content: space-between; gap: var(--space-16); width: 100%; }
/* One size for both lines: 154px at the 1320 column, scaled below that. */
.home-creative .cr-hero__title {
  display: flex; flex-direction: column; align-items: center; gap: 16px;
  font-size: min(154px, calc((100vw - var(--gutter) * 2) * 0.1145));
  line-height: .92; letter-spacing: -0.01em; text-align: center; white-space: nowrap;
}
.home-creative .cr-sun { display: flex; flex-direction: column; align-items: center; gap: 12px; width: 100%; }
/* Half-circle window: the image is a full circle, only its top half shows.
   --sun-focus moves the crop if the subject is not in the upper centre. */
.home-creative .cr-sun__mask { --sun-focus: 50% 4%; width: min(1000px, 100%); aspect-ratio: 2 / 1; overflow: hidden; }
.home-creative .cr-sun__img { width: 100%; height: auto; aspect-ratio: 1; border-radius: 50%; object-fit: cover; object-position: var(--sun-focus); will-change: transform; }
.home-creative .cr-sun__horizon { display: block; width: 100%; height: 16px; background: var(--text-primary); }
.home-creative .cr-sun__ground { display: block; width: 62.12%; height: 10px; background: var(--text-primary); }
.home-creative .cr-sun__labels { display: flex; justify-content: space-between; gap: var(--space-16); width: 100%; padding-top: 10px; }
.home-creative .cr-sun__labels a:hover { color: var(--text-primary); }

/* 12.2 About + day counter ---------------------------------------------------- */
.home-creative .cr-about { padding: var(--space-128) 0; }
.home-creative .cr-about .container-morrow { display: flex; flex-direction: column; gap: var(--space-64); }
.home-creative .cr-about__row { display: flex; align-items: flex-start; gap: var(--space-64); }
.home-creative .cr-about__media { flex: 0 0 520px; height: 360px; overflow: hidden; }
.home-creative .cr-about__media img { width: 100%; height: 100%; object-fit: cover; }
.home-creative .cr-about__copy { flex: 1 1 0; display: flex; flex-direction: column; gap: var(--space-24); }
.home-creative .cr-about__lead { font-size: 52px; line-height: 1.05; letter-spacing: -0.03em; }
/* Counter: big number left; the right column holds the intro (top) and the
   label (bottom, on the number's baseline). */
.home-creative .cr-counter { display: flex; align-items: stretch; gap: var(--space-64); padding-top: var(--space-32); border-top: 1px solid var(--border); }
.home-creative .cr-counter__num { flex: 0 0 auto; font-size: 260px; letter-spacing: -0.06em; line-height: .8; white-space: nowrap; font-variant-numeric: tabular-nums; }
.home-creative .cr-counter__side { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; justify-content: space-between; gap: var(--space-40); }
.home-creative .cr-counter__label { display: flex; flex-direction: column; gap: 12px; }
.home-creative .cr-counter__label .t-display { font-size: 64px; line-height: .9; }
.home-creative .cr-counter__label p + p { font-size: 16px; font-weight: 400; color: color-mix(in srgb, var(--text-primary) 72%, transparent); }
.home-creative .cr-about__actions { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-32); }
.home-creative .cr-about__actions p { flex: 0 1 420px; font-size: 17px; line-height: 1.5; color: color-mix(in srgb, var(--text-primary) 80%, transparent); }
.home-creative .cr-about__actions .btn-m { height: 49px; }

/* 12.3 Selected work — year index --------------------------------------------- */
.home-creative .cr-work { padding: var(--space-128) 0; }
.home-creative .cr-work .container-morrow { display: flex; flex-direction: column; gap: var(--space-48); }
.home-creative .cr-work__title { font-size: 320px; line-height: .8; text-align: center; }
.home-creative .cr-work__bar { display: flex; justify-content: space-between; gap: var(--space-16); color: var(--text-primary); }
.home-creative .cr-year { display: flex; align-items: flex-start; gap: var(--space-24); padding: 40px 0; border-top: 1px solid var(--border); }
.home-creative .cr-year__label { flex: 0 0 220px; display: flex; flex-direction: column; gap: 8px; }
.home-creative .cr-year__label h3 { margin: 0; font-size: 72px; line-height: 1.32; letter-spacing: -0.04em; }
.home-creative .cr-year__label span { font-family: var(--font-mono); font-weight: 400; font-size: 12px; color: var(--text-muted); }
.home-creative .cr-card { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 10px; }
.home-creative .cr-card__media { display: block; height: 230px; border-radius: var(--radius); overflow: hidden; }
.home-creative .cr-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2,.7,.2,1); }
.home-creative .cr-card:hover .cr-card__media img { transform: scale(1.04); }
.home-creative .cr-card strong { font-weight: 500; font-size: 16px; line-height: 1.3; }

/* 12.4 Services ----------------------------------------------------------------- */
.home-creative .cr-services-intro { padding: 160px 0; }
.home-creative .cr-services-intro__title { max-width: 760px; margin: 0 auto; font-size: 64px; line-height: 1; text-align: center; }
.home-creative .cr-services { padding: var(--space-128) 0; }
.home-creative .cr-service-list { list-style: none; margin: 0; padding: 0; }
.home-creative .cr-service { display: flex; align-items: flex-start; gap: var(--space-32); padding: 32px 0; border-top: 1px solid var(--border); color: inherit; }
.home-creative .cr-service-list li:last-child .cr-service { border-bottom: 1px solid var(--border); }
.home-creative .cr-service:hover { color: inherit; }
.home-creative .cr-service:focus-visible { outline: 2px solid var(--text-on-contrast); outline-offset: 4px; }
.home-creative .cr-service__go { flex: 0 0 24px; font-size: 22px; line-height: 1; text-align: right; opacity: 0; transform: translate(-8px, 8px); transition: opacity .3s ease, transform .35s cubic-bezier(.2,.7,.2,1); }
.home-creative .cr-service:hover .cr-service__go, .home-creative .cr-service:focus-visible .cr-service__go { opacity: 1; transform: none; }
.home-creative .cr-service__num { flex: 0 0 160px; font-family: var(--font-mono); font-weight: 400; font-size: 14px; color: var(--text-muted); }
.home-creative .cr-service__name { flex: 1 1 0; font-size: 60px; line-height: .95; transition: transform .35s ease; }
.home-creative .cr-service:hover .cr-service__name, .home-creative .cr-service:focus-visible .cr-service__name { transform: translateX(12px); }
.home-creative .cr-service__text { flex: 0 0 360px; margin: 0; font-size: 16px; font-weight: 400; color: rgba(252, 247, 243, 0.78); }
.home-creative .cr-guide { display: flex; align-items: flex-end; gap: var(--space-32); padding-top: var(--space-96); }
/* Label on top, text and button on the images' bottom line. */
.home-creative .cr-guide__copy { flex: 1 1 0; align-self: stretch; display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-32); }
.home-creative .cr-guide__label { margin: 0 0 auto; }
.home-creative .cr-guide__text { margin: 0; max-width: 460px; font-size: 20px; font-weight: 400; line-height: 1.4; }
.home-creative .cr-guide .btn-m--outline { color: var(--text-on-contrast); border-color: rgba(252, 247, 243, 0.4); }
.home-creative .cr-guide .btn-m--outline:hover { border-color: var(--text-on-contrast); }
.home-creative .cr-guide__small { flex: 0 0 200px; width: 200px; height: 180px; object-fit: cover; border-radius: var(--radius); }
.home-creative .cr-guide__large { flex: 0 0 460px; width: 460px; height: 440px; object-fit: cover; border-radius: var(--radius); }

/* 12.5 Clients — letter stack -----------------------------------------------------
   Letters are absolutely stacked; --pos is set by home-creative.js
   (0 = back, highest = front). Each step moves 40px right, 44px down. */
.home-creative .cr-clients { background: var(--ink-2); color: var(--text-on-contrast); padding: var(--space-128) 0 var(--space-96); --text-muted: rgba(252, 247, 243, 0.72); --border: rgba(252, 247, 243, 0.2); }
.home-creative .cr-clients__layout { display: flex; align-items: center; justify-content: space-between; gap: var(--space-64); margin-bottom: 80px; }
.home-creative .cr-clients__intro { flex: 0 1 640px; display: flex; flex-direction: column; gap: var(--space-24); }
.home-creative .cr-clients__title { font-size: 60px; line-height: 1; letter-spacing: -0.03em; }
/* Letters share one grid cell, so the stack is as tall as its longest letter.
   --depth is set by home-creative.js (0 = front). Letters behind the front one
   sit higher and slightly smaller, so only their "From" line shows — like a
   pile of post on a desk. */
.home-creative .cr-letters-wrap { flex: 0 0 520px; display: flex; flex-direction: column; gap: var(--space-24); }
.home-creative .cr-letters { --step: 44px; display: grid; padding: calc(var(--step) * 2) 0 0; list-style: none; margin: 0; cursor: pointer; }
.home-creative .cr-letter {
  --depth: 0;
  grid-area: 1 / 1;
  display: flex; flex-direction: column; gap: 24px; padding: 32px;
  background: var(--paper-back); color: #111111; border-radius: 2px;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);
  font-family: var(--font-mono); font-weight: 400; font-size: 15px; line-height: 1.6;
  transform-origin: 50% 0;
  transform: translateY(calc(var(--depth) * var(--step) * -1)) scale(calc(1 - var(--depth) * .045));
  z-index: calc(10 - var(--depth));
  transition: transform .7s cubic-bezier(.2,.7,.2,1), background-color .4s ease, opacity .35s ease;
}
.home-creative .cr-letter:not(.is-front) { filter: brightness(.96); }
.home-creative .cr-letter.is-front { background: var(--paper); }
.home-creative .cr-letter.is-leaving { opacity: 0; transform: translate(40px, 32px) rotate(3deg); }
.home-creative .cr-letters__nav { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 16px; border-top: 1px solid var(--border); }
.home-creative .cr-letters__next { padding: 0; border: 0; background: none; color: var(--text-on-contrast); font-family: var(--font-mono); font-weight: 500; font-size: 13px; }
.home-creative .cr-letters__next span { display: inline-block; transition: transform .25s ease; }
.home-creative .cr-letters__next:hover span { transform: translateX(4px); }
.home-creative .cr-letters__next:focus-visible { outline: 2px solid var(--text-on-contrast); outline-offset: 4px; }
.home-creative .cr-letter p { margin: 0; }
.home-creative .cr-letter__head { display: flex; justify-content: space-between; gap: 16px; font-size: 12px; line-height: 16px; color: #5c5650; }
.home-creative .cr-letter__hello { font-weight: 500; line-height: 20px; }
.home-creative .cr-letter__sign { font-size: 13px; line-height: 17px; color: #5c5650; }
.home-creative .cr-client-names {
  display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px 32px;
  list-style: none; margin: 0; padding: 32px 0 0; border-top: 1px solid var(--border);
  font-size: 40px; line-height: 1.07; color: #b3aea8;
}

/* 12.6 Recognition ---------------------------------------------------------------- */
.home-creative .cr-recognition { padding: var(--space-128) 0; }
.home-creative .cr-recognition__layout { display: flex; align-items: flex-start; gap: var(--space-64); }
.home-creative .cr-recognition__intro { flex: 0 0 560px; display: flex; flex-direction: column; gap: var(--space-24); }
.home-creative .cr-recognition__title { font-size: 52px; line-height: 1.05; letter-spacing: -0.03em; }
.home-creative .cr-awards { flex: 1 1 0; margin: 0; border-bottom: 1px solid var(--border); }
.home-creative .cr-recognition__intro { padding-top: 24px; }
.home-creative .cr-awards__group { position: relative; display: flex; flex-direction: column; gap: 8px; padding: 24px 0 24px 232px; border-top: 1px solid var(--border); }
.home-creative .cr-awards dt { position: absolute; left: 0; top: 24px; width: 200px; font-weight: 500; font-size: 17px; line-height: 22px; }
.home-creative .cr-awards dd { display: flex; justify-content: space-between; gap: 16px; margin: 0; font-weight: 400; font-size: 16px; line-height: 21px; color: color-mix(in srgb, var(--text-primary) 72%, transparent); }
.home-creative .cr-awards dd b { font-family: var(--font-mono); font-weight: 400; font-size: 14px; color: var(--text-primary); }

/* 12.7 Team ------------------------------------------------------------------------ */
.home-creative .cr-team { padding: var(--space-128) 0; }
.home-creative .cr-team__head { display: flex; align-items: flex-end; gap: var(--space-64); margin-bottom: 56px; }
.home-creative .cr-team__head p { flex: 0 0 280px; font-size: 16px; font-weight: 400; line-height: 1.5; color: color-mix(in srgb, var(--text-primary) 78%, transparent); }
.home-creative .cr-team__title { flex: 1 1 0; font-size: 60px; line-height: 1; letter-spacing: -0.03em; }
.home-creative .cr-team__grid { --bs-gutter-x: 24px; --bs-gutter-y: 32px; }
.home-creative .cr-person { display: flex; flex-direction: column; gap: 12px; }
.home-creative .cr-person img { width: 100%; aspect-ratio: 312 / 380; object-fit: cover; filter: grayscale(1); transition: filter .4s ease; }
.home-creative .cr-person:hover img { filter: grayscale(0); }
.home-creative .cr-person strong { font-weight: 500; font-size: 17px; line-height: 1.3; }
.home-creative .cr-person em { font-family: var(--font-mono); font-weight: 400; font-size: 12px; color: var(--text-muted); }

/* 12.8 Brief & footer ---------------------------------------------------------------- */
.home-creative .cr-brief { padding: var(--space-128) 0 var(--space-48); }
.home-creative .cr-brief__title { font-size: 205px; line-height: .85; margin-bottom: 40px; }
.home-creative .cr-brief__row { display: flex; align-items: center; flex-wrap: wrap; gap: 16px; margin-bottom: var(--space-96); }
.home-creative .cr-brief__field {
  flex: 1 1 320px; min-width: 0; height: 56px; padding: 0 24px;
  background: transparent; color: var(--text-on-contrast);
  border: 1px solid rgba(252, 247, 243, 0.4); border-radius: var(--radius);
  font-family: var(--font-body); font-weight: 300; font-size: 16px;
}
.home-creative .cr-brief__field::placeholder { color: rgba(252, 247, 243, 0.72); }
.home-creative .cr-brief__field:focus { outline: none; border-color: var(--text-on-contrast); }
.home-creative .cr-brief__budget { display: flex; align-items: center; gap: 16px; }
.home-creative .cr-brief__budget-label { font-family: var(--font-mono); font-weight: 400; font-size: 12px; color: var(--text-muted); }
.home-creative .cr-chip { position: relative; margin: 0; }
.home-creative .cr-chip input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.home-creative .cr-chip span {
  display: inline-flex; align-items: center; height: 56px; padding: 0 20px;
  border: 1px solid rgba(252, 247, 243, 0.4); border-radius: var(--radius);
  font-family: var(--font-mono); font-weight: 500; font-size: 13px; white-space: nowrap;
  transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}
.home-creative .cr-chip:hover span { border-color: var(--text-on-contrast); }
.home-creative .cr-chip input:checked + span { background: var(--text-on-contrast); color: #111111; border-color: var(--text-on-contrast); }
.home-creative .cr-chip input:focus-visible + span { outline: 2px solid var(--text-on-contrast); outline-offset: 3px; }
.home-creative .cr-brief__send {
  display: inline-flex; align-items: center; gap: 10px; height: 56px; padding: 0 32px;
  background: var(--text-on-contrast); color: #111111; border: 0; border-radius: var(--radius);
  font-family: var(--font-mono); font-weight: 500; font-size: 13px; white-space: nowrap;
}
.home-creative .cr-brief__send:hover .btn-m__icon { transform: translateX(3px); }
.home-creative .cr-brief__send .btn-m__icon { transition: transform .25s ease; }
.home-creative .cr-brief__status { flex-basis: 100%; margin: 0; }
.home-creative .cr-brief__status:empty { display: none; }
[data-bs-theme="dark"] .home-creative .cr-brief__send,
[data-bs-theme="dark"] .home-creative .cr-chip input:checked + span { color: #0f0f0f; }

/* Full-width fit lines stay on the grid edge: no display scrub (motion.js). */
.home-creative [data-no-scrub] { transform: none !important; }

/* 12.9 Responsive ------------------------------------------------------------------ */
@media (max-width: 1199.98px) {
  .home-creative .cr-about__media { flex-basis: 420px; }
  .home-creative .cr-about__lead { font-size: 42px; }
  .home-creative .cr-counter__num { font-size: 200px; }
  .home-creative .cr-about__actions { flex-direction: column; align-items: flex-start; }
  .home-creative .cr-work__title { font-size: 240px; }
  .home-creative .cr-guide__large { flex-basis: 360px; width: 360px; height: 360px; }
  .home-creative .cr-clients__layout { flex-direction: column; align-items: flex-start; }
  .home-creative .cr-clients__intro { flex-basis: auto; }
  .home-creative .cr-recognition__layout { flex-direction: column; align-items: stretch; }
  .home-creative .cr-recognition__intro { flex-basis: auto; }
  .home-creative .cr-brief__field { flex-basis: 100%; }
}
@media (max-width: 1023.98px) {
  .home-creative .cr-sunrise { gap: 40px; }
  .home-creative .cr-about__row { flex-direction: column; gap: var(--space-40); }
  .home-creative .cr-about__media { flex-basis: auto; width: 100%; height: auto; aspect-ratio: 520 / 360; }
  .home-creative .cr-counter { flex-direction: column; align-items: stretch; gap: var(--space-32); }
  .home-creative .cr-counter__side { flex-direction: column-reverse; }
  .home-creative .cr-counter__num { font-size: 180px; }
  .home-creative .cr-about__actions { gap: var(--space-24); }
  .home-creative .cr-about__actions p { flex-basis: auto; }
  .home-creative .cr-service__go { display: none; }
  .home-creative .cr-letters-wrap { flex-basis: auto; width: min(520px, 100%); }
  .home-creative .cr-work__title { font-size: 180px; }
  .home-creative .cr-year { flex-wrap: wrap; }
  .home-creative .cr-year__label { flex-basis: 100%; flex-direction: row; align-items: baseline; gap: 16px; }
  .home-creative .cr-year__label h3 { font-size: 56px; line-height: 1; }
  .home-creative .cr-card__media { height: auto; aspect-ratio: 342 / 230; }
  .home-creative .cr-services-intro { padding: 96px 0; }
  .home-creative .cr-services-intro__title { font-size: 48px; }
  .home-creative .cr-service { flex-wrap: wrap; gap: 16px 32px; }
  .home-creative .cr-service__num { flex-basis: 100%; }
  .home-creative .cr-service__name { flex-basis: 100%; font-size: 48px; }
  .home-creative .cr-service__text { flex: 1 1 100%; }
  .home-creative .cr-guide { flex-wrap: wrap; }
  .home-creative .cr-guide__copy { flex-basis: 100%; margin-bottom: var(--space-16); }
  .home-creative .cr-guide__small { flex: 1 1 0; width: auto; height: 240px; }
  .home-creative .cr-guide__large { flex: 2 1 0; width: auto; height: 400px; }
  .home-creative .cr-clients__title { font-size: 48px; }
  .home-creative .cr-client-names { justify-content: flex-start; font-size: 34px; }
  .home-creative .cr-team__head { flex-direction: column-reverse; align-items: flex-start; gap: var(--space-24); }
  .home-creative .cr-team__head p { flex-basis: auto; }
  .home-creative .cr-team__title { font-size: 48px; }
  .home-creative .cr-brief__title { font-size: 120px; }
}
@media (max-width: 575.98px) {
  .home-creative .cr-hero { padding-bottom: var(--space-64); }
  .home-creative .cr-sunrise__dates, .home-creative .cr-sun__labels { flex-wrap: wrap; font-size: 12px; }
  .home-creative .cr-sun__labels span:nth-child(2) { order: 3; flex-basis: 100%; }
  .home-creative .cr-sun__horizon { height: 10px; }
  .home-creative .cr-sun__ground { height: 6px; }
  .home-creative .cr-about, .home-creative .cr-work, .home-creative .cr-services,
  .home-creative .cr-recognition, .home-creative .cr-team { padding: var(--space-96) 0; }
  .home-creative .cr-clients { padding: var(--space-96) 0 var(--space-64); }
  .home-creative .cr-brief { padding-top: var(--space-96); }
  .home-creative .cr-about__lead { font-size: 32px; }
  .home-creative .cr-counter__num { font-size: 112px; }
  .home-creative .cr-counter__label .t-display { font-size: 44px; }
  .home-creative .cr-work__title { font-size: 120px; }
  .home-creative .cr-work .container-morrow { gap: var(--space-32); }
  .home-creative .cr-work__bar { flex-wrap: wrap; }
  .home-creative .cr-card { flex-basis: 100%; }
  .home-creative .cr-year { gap: 24px; padding: 32px 0; }
  .home-creative .cr-services-intro { padding: 80px 0; }
  .home-creative .cr-services-intro__title { font-size: 36px; }
  .home-creative .cr-service__name { font-size: 36px; }
  .home-creative .cr-guide__small { height: 160px; }
  .home-creative .cr-guide__large { height: 220px; }
  .home-creative .cr-clients__title { font-size: 36px; }
  .home-creative .cr-clients__layout { margin-bottom: var(--space-64); }
  .home-creative .cr-letters { --step: 36px; }
  .home-creative .cr-letter { padding: 20px; gap: 16px; font-size: 14px; }
  .home-creative .cr-letter__head { flex-wrap: wrap; gap: 4px 16px; }
  .home-creative .cr-client-names { font-size: 28px; gap: 8px 24px; }
  .home-creative .cr-recognition__title { font-size: 36px; }
  .home-creative .cr-awards__group { padding-left: 0; }
  .home-creative .cr-awards dt { position: static; width: auto; }
  .home-creative .cr-team__title { font-size: 36px; }
  .home-creative .cr-team__grid { --bs-gutter-x: 16px; }
  .home-creative .cr-person strong { font-size: 15px; }
  .home-creative .cr-person em { font-size: 11px; }
  .home-creative .cr-brief__title { font-size: 64px; margin-bottom: var(--space-32); }
  .home-creative .cr-brief__budget { flex-wrap: wrap; gap: 8px; width: 100%; }
  .home-creative .cr-brief__budget-label { flex-basis: 100%; }
  .home-creative .cr-chip { flex: 1 1 0; }
  .home-creative .cr-chip span { width: 100%; justify-content: center; padding: 0 8px; }
  .home-creative .cr-brief__send { width: 100%; justify-content: center; }
}

/* ==========================================================================
   13. Home — Growth (light/home-growth.html, dark/home-growth.html)
   Paper grounds, one deep green, a mint scale for the charts.
   ========================================================================== */
.home-growth {
  --base: #f4f4f1;               /* paper */
  --surface: #e9eae4;            /* statement band */
  --contrast: #111411;
  --deep: #16302a;               /* result band */
  --text-primary: #111411;
  --text-muted: rgba(17, 20, 17, 0.68);
  --text-on-contrast: #f4f1ea;
  --border: rgba(17, 20, 17, 0.18);
  --accent: #1f3d36;             /* green */
  --on-accent: #f4f1ea;
  --mint: #cfe3d7;
  --chart-line: #1f3d36;
  /* Chart scale (media mix, funnel): grounds and the ink that sits on them */
  --g1: #cfe3d7; --g2: #a8cbb8; --g3: #7fae96; --g4: #f4f1ea;
  --g1-ink: #111411; --g4-ink: #111411;
}
[data-bs-theme="dark"] .home-growth,
[data-bs-theme="dark"].home-growth {
  --base: #0f0f0f;
  --surface: #171717;
  --contrast: #262626;
  --deep: #16302a;
  --text-primary: #f2efe9;
  --text-muted: #a8a29a;
  --text-on-contrast: #f2efe9;
  --border: #34302c;
  --accent: #1f3d36;
  --on-accent: #f4f1ea;
  --chart-line: #cfe3d7;
  --g1: #262626; --g4: #262626;
  --g1-ink: #f2efe9; --g4-ink: #f2efe9;
}
.home-growth .band--accent { --text-muted: rgba(244, 241, 234, 0.72); --border: rgba(244, 241, 234, 0.25); }
.home-growth .btn-m--accent:hover { background: var(--text-primary); color: var(--base); }
.home-growth .btn-m--outline { border-color: color-mix(in srgb, var(--text-primary) 40%, transparent); }

/* 13.1 Header tagline + hero ------------------------------------------------------ */
.home-growth .gr-header__tagline { margin-inline: auto; color: var(--text-muted); white-space: nowrap; }
.home-growth .gr-hero { padding: 32px 0 var(--space-96); }
.home-growth .gr-hero__inner { display: flex; flex-direction: column; gap: 64px; }
.home-growth .gr-hero .site-header { min-height: 34px; }
.home-growth .gr-hero__copy { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-32); margin-bottom: -16px; }
.home-growth .gr-hero__title { display: flex; flex-direction: column; gap: 8px; white-space: nowrap; }
.home-growth .gr-hero__line-1 { font-size: min(226px, 15.7vw); line-height: .82; }
.home-growth .gr-hero__line-2 { font-size: min(107px, 7.43vw); line-height: .85; }
.home-growth .gr-hero__intro { flex: 0 1 440px; display: flex; flex-direction: column; gap: 24px; }
.home-growth .gr-hero__actions { display: flex; flex-wrap: wrap; gap: 16px; }
.home-growth .gr-hero__actions .btn-m { height: 52px; }

/* Compound curve — the SVG is written by assets/js/home-growth.js
   from data-values on .gr-curve. Only colours and sizes live here. */
.home-growth .gr-curve { position: relative; height: 380px; margin-top: 16px; }
.home-growth .gr-curve svg { display: block; width: 100%; height: 100%; overflow: visible; }
.home-growth .gr-curve__caption { position: absolute; left: 0; top: -4px; font-family: var(--font-mono); font-weight: 500; font-size: 13px; color: var(--chart-line); background: var(--base); padding-right: 8px; z-index: 1; }
.home-growth .gr-curve__grid { stroke: color-mix(in srgb, var(--text-primary) 12%, transparent); stroke-width: 1; }
.home-growth .gr-curve__line { fill: none; stroke: var(--chart-line); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.home-growth .gr-curve__dot { fill: var(--base); stroke: var(--chart-line); stroke-width: 2; }
.home-growth .gr-curve__dot--last { fill: var(--chart-line); }
.home-growth .gr-curve__tick { font-family: var(--font-mono); font-weight: 400; font-size: 12px; fill: var(--text-muted); }

/* 13.2 Section heads (channels, method) ------------------------------------------ */
.home-growth .gr-head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-32); }
.home-growth .gr-head__title { display: flex; flex-direction: column; gap: 20px; }
.home-growth .gr-head__title h2 { max-width: 720px; margin: 0; font-size: 60px; line-height: 1; letter-spacing: -0.03em; }
.home-growth .gr-head__note { flex: 0 0 300px; margin: 0; font-size: 16px; font-weight: 400; line-height: 1.5; color: color-mix(in srgb, currentColor 78%, transparent); }

/* 13.3 Channels — media-mix bar ----------------------------------------------------- */
.home-growth .gr-channels { padding: var(--space-128) 0; }
.home-growth .gr-channels .container-morrow { display: flex; flex-direction: column; gap: 56px; }
.home-growth .gr-mix { display: flex; gap: 4px; height: 120px; list-style: none; margin: 0; padding: 0; }
.home-growth .gr-mix__seg {
  flex: var(--grow, 1) 1 0; min-width: 0; overflow: hidden;
  display: flex; flex-direction: column; justify-content: space-between; padding: 20px 24px;
  background: var(--c); color: var(--ink, #111411); border-radius: var(--radius); white-space: nowrap; cursor: default;
  transition: flex-grow .5s cubic-bezier(.2,.7,.2,1), opacity .3s ease;
}
.home-growth .gr-mix__seg strong { font-weight: 500; font-size: 20px; line-height: 1.3; }
.home-growth .gr-mix__seg span { font-family: var(--font-mono); font-weight: 400; font-size: 14px; }
.home-growth .gr-mix__seg:focus-visible { outline: 2px solid var(--on-accent); outline-offset: 3px; }
.home-growth .gr-mix.is-active .gr-mix__seg:not(.is-on) { opacity: .55; }
.home-growth .gr-notes { display: flex; gap: var(--space-32); }
.home-growth .gr-note { flex: 1 1 0; display: flex; flex-direction: column; gap: 8px; padding-top: 20px; border-top: 1px solid var(--border); transition: opacity .3s ease, border-color .3s ease; }
.home-growth .gr-note h3 { margin: 0; font-family: var(--font-mono); font-weight: 500; font-size: 13px; line-height: 1.3; }
.home-growth .gr-note p { margin: 0; font-size: 17px; line-height: 1.45; color: rgba(244, 241, 234, 0.85); }
.home-growth .gr-notes.is-active .gr-note:not(.is-on) { opacity: .4; }
.home-growth .gr-notes.is-active .gr-note.is-on { border-color: var(--on-accent); }

/* 13.4 Selected work ----------------------------------------------------------------- */
.home-growth .gr-work { padding: var(--space-128) 0; }
.home-growth .gr-work__head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-32); margin-bottom: 56px; }
.home-growth .gr-work__title { font-size: min(117px, 8.12vw); line-height: .85; white-space: nowrap; }
.home-growth .gr-work__head .btn-m { height: 52px; }
.home-growth .gr-work__grid { display: flex; gap: 24px; }
.home-growth .gr-work__col { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 56px; }
.home-growth .gr-work__col--offset { padding-top: 120px; }
.home-growth .gr-case { display: flex; flex-direction: column; gap: 16px; }
.home-growth .gr-case__media { position: relative; display: block; height: 420px; overflow: hidden; }
.home-growth .gr-case--tall .gr-case__media { height: 620px; }
.home-growth .gr-case__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2,.7,.2,1); }
.home-growth .gr-case:hover .gr-case__media img { transform: scale(1.04); }
.home-growth .gr-case__tag { position: absolute; left: 20px; top: 20px; padding: 10px 16px; background: #f4f1ea; color: #1f3d36; border-radius: var(--radius); font-family: var(--font-mono); font-weight: 500; font-size: 13px; line-height: 17px; }
.home-growth .gr-case__meta { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; }
.home-growth .gr-case__meta strong { font-weight: 500; font-size: 20px; line-height: 1.3; }
.home-growth .gr-case__meta em { font-family: var(--font-mono); font-weight: 400; font-size: 12px; color: var(--text-muted); white-space: nowrap; }

/* 13.5 Statement ------------------------------------------------------------------------ */
.home-growth .gr-statement { background: var(--surface); padding: var(--space-128) 0; }
.home-growth .gr-statement__text { max-width: 1200px; margin: 0; font-size: 64px; line-height: 1.08; letter-spacing: -0.03em; }
.home-growth .gr-statement__text a { color: var(--accent); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 6px; }
[data-bs-theme="dark"] .home-growth .gr-statement__text a { color: var(--mint); }

/* 13.6 Method — funnel ------------------------------------------------------------------- */
.home-growth .gr-method { padding: var(--space-128) 0; }
.home-growth .gr-method .container-morrow { display: flex; flex-direction: column; gap: var(--space-48); }
.home-growth .gr-funnel { display: flex; flex-direction: column; align-items: center; gap: 8px; list-style: none; margin: 0; padding: 0; }
.home-growth .gr-stage {
  --target: var(--w);
  display: flex; align-items: center; gap: var(--space-32); height: 96px; padding: 0 32px;
  /* --narrow runs 0 → 1 as the funnel scrolls in (home-growth.js); 1 without JS */
  width: calc(100% - (100% - var(--target)) * var(--narrow, 1));
  background: var(--c); color: var(--ink, #111411); border-radius: var(--radius);
  transition: width 1.1s cubic-bezier(.65, 0, .25, 1) calc(var(--i, 0) * 90ms);
}
/* home-growth.js sets --narrow: 0 until the funnel scrolls in, then 1. */
.home-growth .gr-funnel.is-wide .gr-stage { --narrow: 0; }
.home-growth .gr-stage__num { flex: 0 0 40px; font-family: var(--font-mono); font-weight: 400; font-size: 14px; }
.home-growth .gr-stage h3 { flex: 0 0 200px; font-size: 44px; line-height: 1.2; }
.home-growth .gr-stage p { flex: 1 1 0; min-width: 0; margin: 0; font-size: 16px; font-weight: 400; }

/* 13.7 Result ------------------------------------------------------------------------------ */
.home-growth .gr-result { background: var(--deep); color: #f4f1ea; padding: var(--space-128) 0; --text-muted: rgba(244, 241, 234, 0.72); }
.home-growth .gr-result__layout { display: flex; align-items: flex-end; gap: var(--space-48); }
.home-growth .gr-result__copy { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: var(--space-24); }
.home-growth .gr-result__figure { font-size: 213px; letter-spacing: -0.06em; line-height: .9; white-space: nowrap; }
.home-growth .gr-result__text { max-width: 520px; font-size: 22px; line-height: 1.4; color: rgba(244, 241, 234, 0.85); }
.home-growth .gr-result__media { flex: 0 0 560px; width: 560px; height: 400px; object-fit: cover; border-radius: var(--radius); }

/* 13.8 Journal ------------------------------------------------------------------------------ */
.home-growth .gr-journal { padding: var(--space-128) 0; }
.home-growth .gr-journal__head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-32); margin-bottom: 40px; }
.home-growth .gr-journal__title { font-size: min(110px, 7.64vw); line-height: .85; white-space: nowrap; }
.home-growth .gr-journal__head .btn-m { height: 52px; }
.home-growth .gr-posts { display: flex; flex-direction: column; list-style: none; margin: 0; padding: 0; border-bottom: 1px solid var(--border); }
.home-growth .gr-post { display: flex; align-items: center; gap: var(--space-32); padding: 32px 0; border-top: 1px solid var(--border); }
.home-growth .gr-post:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.home-growth .gr-post img { flex: 0 0 220px; width: 220px; height: 140px; object-fit: cover; border-radius: var(--radius); }
.home-growth .gr-post h3 { flex: 1 1 0; min-width: 0; font-size: 36px; line-height: 1.3; letter-spacing: -0.02em; transition: transform .35s ease; }
.home-growth .gr-post:hover h3 { transform: translateX(8px); }
.home-growth .gr-post span { flex: 0 0 140px; font-family: var(--font-mono); font-weight: 400; font-size: 12px; color: var(--text-muted); }
.home-growth .gr-post span:last-child { text-align: right; }
.home-growth .gr-post img { transition: filter .4s ease; }
.home-growth .gr-post:hover img { filter: saturate(1.15) contrast(1.05); }

/* 13.9 Audit form & footer --------------------------------------------------------------- */
.home-growth .gr-audit { padding: var(--space-128) 0 var(--space-48); }
.home-growth .gr-audit__block { display: flex; flex-direction: column; gap: var(--space-32); margin-bottom: 80px; }
.home-growth .gr-audit__title { font-size: 178px; line-height: .82; }
.home-growth .gr-audit__text { max-width: 600px; font-size: 22px; line-height: 1.4; color: rgba(244, 241, 234, 0.85); }
.home-growth .gr-audit__row { display: flex; flex-wrap: wrap; gap: 16px; }
.home-growth .gr-audit__field {
  flex: 1 1 320px; min-width: 0; height: 60px; padding: 0 24px;
  background: transparent; color: #f4f1ea; border: 1px solid rgba(244, 241, 234, 0.4); border-radius: var(--radius);
  font-family: var(--font-mono); font-weight: 400; font-size: 15px;
}
.home-growth .gr-audit__field::placeholder { color: rgba(244, 241, 234, 0.72); }
.home-growth .gr-audit__field:focus { outline: none; border-color: #f4f1ea; }
.home-growth .gr-audit__field[aria-invalid="true"] { border-color: #f2b8a0; }
.home-growth .gr-audit__send {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px; height: 60px; padding: 0 32px;
  background: #f4f1ea; color: #1f3d36; border: 0; border-radius: var(--radius);
  font-family: var(--font-mono); font-weight: 500; font-size: 13px; white-space: nowrap;
}
.home-growth .gr-audit__send .btn-m__icon { transition: transform .25s ease; }
.home-growth .gr-audit__send:hover .btn-m__icon { transform: translateX(3px); }
.home-growth .gr-audit__status { flex-basis: 100%; color: rgba(244, 241, 234, 0.85); }
.home-growth .gr-audit__status:empty { display: none; }
.home-growth .gr-audit .site-footer__brand p { color: rgba(244, 241, 234, 0.82); }

/* Full-width fit lines stay on the grid edge: no display scrub (motion.js). */
.home-growth [data-no-scrub] { transform: none !important; }

/* 13.10 Responsive ------------------------------------------------------------------------ */
@media (max-width: 1199.98px) {
  .home-growth .gr-hero__copy { flex-direction: column; align-items: flex-start; gap: var(--space-40); margin-bottom: 0; }
  .home-growth .gr-hero__intro { flex: 0 0 auto; max-width: 560px; }
  .home-growth .gr-hero__line-1 { font-size: calc((100vw - var(--gutter) * 2) * 0.315); }
  .home-growth .gr-hero__line-2 { font-size: calc((100vw - var(--gutter) * 2) * 0.15); }
  .home-growth .gr-curve { height: 320px; }
  .home-growth .gr-statement__text { font-size: 52px; }
  .home-growth .gr-result__figure { font-size: 160px; }
  .home-growth .gr-result__media { flex-basis: 420px; width: 420px; height: 340px; }
  .home-growth .gr-post h3 { font-size: 30px; }
  .home-growth .gr-audit__title { font-size: 140px; }
}
@media (max-width: 1023.98px) {
  .home-growth .gr-header__tagline { display: none; }
  .home-growth .gr-hero__inner { gap: var(--space-48); }
  .home-growth .gr-curve { height: 280px; margin-top: 48px; }
  .home-growth .gr-curve__caption { left: 0; top: -32px; }
  .home-growth .gr-head { flex-direction: column; align-items: flex-start; gap: var(--space-24); }
  .home-growth .gr-head__note { flex-basis: auto; max-width: 420px; }
  .home-growth .gr-head__title h2 { font-size: 48px; }
  .home-growth .gr-mix { height: 104px; }
  .home-growth .gr-mix__seg { padding: 16px; }
  .home-growth .gr-mix__seg strong { font-size: 17px; }
  .home-growth .gr-notes { flex-wrap: wrap; gap: 24px 32px; }
  .home-growth .gr-note { flex: 1 1 calc(50% - 16px); }
  .home-growth .gr-work__head { flex-direction: column; align-items: flex-start; gap: var(--space-24); }
  .home-growth .gr-work__title { font-size: 96px; white-space: normal; }
  .home-growth .gr-work__col { gap: var(--space-40); }
  .home-growth .gr-work__col--offset { padding-top: 64px; }
  .home-growth .gr-case__media, .home-growth .gr-case--tall .gr-case__media { height: auto; aspect-ratio: 648 / 620; }
  .home-growth .gr-case:not(.gr-case--tall) .gr-case__media { aspect-ratio: 648 / 420; }
  .home-growth .gr-case__meta { flex-direction: column; gap: 6px; }
  .home-growth .gr-case__meta strong { font-size: 17px; }
  .home-growth .gr-statement { padding: var(--space-96) 0; }
  .home-growth .gr-statement__text { font-size: 40px; }
  .home-growth .gr-stage { --target: calc(var(--w) * 0.4 + 60%); gap: 16px 24px; padding: 0 24px; }
  .home-growth .gr-stage h3 { flex-basis: 150px; font-size: 36px; }
  .home-growth .gr-result__layout { flex-direction: column; align-items: stretch; }
  .home-growth .gr-result__figure { font-size: 22vw; }
  .home-growth .gr-result__media { flex-basis: auto; width: 100%; height: auto; aspect-ratio: 560 / 400; }
  .home-growth .gr-journal__head { flex-direction: column; align-items: flex-start; gap: var(--space-24); }
  .home-growth .gr-journal__title { font-size: 88px; white-space: normal; }
  .home-growth .gr-post { flex-wrap: wrap; gap: 12px 24px; }
  .home-growth .gr-post img { flex-basis: 180px; width: 180px; height: 116px; }
  .home-growth .gr-post h3 { flex-basis: calc(100% - 204px); font-size: 26px; }
  .home-growth .gr-post span { flex: 0 0 auto; }
  .home-growth .gr-post span:first-of-type { margin-left: 204px; }
  .home-growth .gr-audit__title { font-size: 96px; }
}
@media (max-width: 575.98px) {
  .home-growth .gr-hero { padding-bottom: var(--space-64); }
  .home-growth .gr-hero__actions .btn-m { flex: 1 1 auto; }
  .home-growth .gr-curve { height: 220px; margin-top: 32px; }
  .home-growth .gr-curve__tick { font-size: 11px; }
  .home-growth .gr-channels, .home-growth .gr-work, .home-growth .gr-method,
  .home-growth .gr-result, .home-growth .gr-journal { padding: var(--space-96) 0; }
  .home-growth .gr-audit { padding-top: var(--space-96); }
  .home-growth .gr-channels .container-morrow { gap: var(--space-40); }
  .home-growth .gr-head__title h2 { font-size: 36px; }
  .home-growth .gr-mix { flex-direction: column; height: auto; }
  .home-growth .gr-mix__seg { flex: none; width: calc(var(--share) * 1% + 34%); max-width: 100%; height: 64px; flex-direction: row; align-items: center; }
  .home-growth .gr-note { flex-basis: 100%; }
  .home-growth .gr-work__grid { flex-direction: column; gap: var(--space-40); }
  .home-growth .gr-work__col--offset { padding-top: 0; }
  .home-growth .gr-work__title { white-space: normal; font-size: 64px; }
  .home-growth .gr-statement__text { font-size: 30px; }
  .home-growth .gr-stage { --target: calc(var(--w) * 0.3 + 70%); height: auto; min-height: 88px; flex-wrap: wrap; padding: 16px; gap: 4px 16px; }
  .home-growth .gr-stage__num { flex-basis: auto; }
  .home-growth .gr-stage h3 { flex-basis: auto; font-size: 30px; }
  .home-growth .gr-stage p { flex-basis: 100%; font-size: 14px; }
  .home-growth .gr-result__figure { font-size: 25vw; }
  .home-growth .gr-result__text { font-size: 18px; }
  .home-growth .gr-journal__title { white-space: normal; font-size: 56px; }
  .home-growth .gr-post { padding: 24px 0; }
  .home-growth .gr-post span:last-child { text-align: left; }
  .home-growth .gr-post img { flex-basis: 100%; width: 100%; height: auto; aspect-ratio: 220 / 140; }
  .home-growth .gr-post h3 { flex-basis: 100%; font-size: 24px; }
  .home-growth .gr-post span:first-of-type { margin-left: 0; }
  .home-growth .gr-audit__title { font-size: 56px; }
  .home-growth .gr-audit__text { font-size: 18px; }
  .home-growth .gr-audit__send { width: 100%; }
}

/* ==========================================================================
   14. Home — Design (light/home-design.html, dark/home-design.html)
   Paper, ink, plum and pink. Every selector is scoped to .home-design.
   ========================================================================== */

/* 14.1 Page tokens ------------------------------------------------------------ */
.home-design {
  --base: #f2eee9;          /* paper */
  --surface: #e7e1da;       /* index + bleed band */
  --sheet: #fbf9f6;         /* proof sheet and spec cards */
  --guide: rgba(244, 182, 201, 0.22);
  --ink-band: #2c0f28;      /* contact sheet + brief bands */
  --plum: #3b1535;
  --pink: #f4b6c9;
  --contrast: #1a1016;
  --text-primary: #1a1016;
  --text-muted: rgba(26, 16, 22, 0.7);
  --text-on-contrast: #fbf9f6;
  --border: rgba(26, 16, 22, 0.15);
  --accent: #3b1535;
  --accent-text: #3b1535;   /* plum used as text colour (headings, counts) */
  --on-accent: #fbf9f6;
}
[data-bs-theme="dark"] .home-design {
  --base: #171717;
  --surface: #1f1f1f;
  --sheet: #1c1c1c;
  --guide: rgba(244, 182, 201, 0.04);
  --contrast: #0f0f0f;
  --text-primary: #f2efe9;
  --text-muted: #a8a29a;
  --border: #34302c;
  --accent: #3b1535;
  --accent-text: #f2efe9;
  --on-accent: #fbf9f6;
}
[data-bs-theme="dark"] .home-design .spec { background: #0f0f0f; }

/* Plum-black bands (contact sheet, brief + footer) */
.home-design .design-ink {
  background: var(--ink-band);
  color: #fbf9f6;
  --text-muted: rgba(251, 249, 246, 0.7);
  --border: rgba(251, 249, 246, 0.22);
}
.home-design .btn-m--ghost { border-color: rgba(251, 249, 246, 0.45); color: #fbf9f6; height: 52px; }
.home-design .btn-m--ghost:hover { border-color: var(--pink); color: var(--pink); }
.home-design .btn-m--accent:hover { background: var(--pink); color: #1a1016; }

/* Shared section header: label + title left, note or button right */
.home-design .design-head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-32); margin-bottom: var(--space-48); }
.home-design .design-head__title { display: flex; flex-direction: column; gap: var(--space-16); min-width: 0; }
.home-design .design-head__heading { font-size: 60px; letter-spacing: -0.03em; line-height: 1; max-width: 700px; }
.home-design .design-head__heading--wide { max-width: 760px; }
.home-design .design-head__note { flex: 0 0 320px; margin: 0; font-size: 16px; font-weight: 400; line-height: 1.5; color: color-mix(in srgb, var(--text-primary) 78%, transparent); }

/* 14.2 Hero — proof sheet ------------------------------------------------------
   Geometry (desktop): sheet inset 40px, 700 tall; crop marks 28px long,
   8px off the corner; slug line 12px under the sheet. */
.home-design .design-hero { padding: 32px 0 var(--space-96); }
.home-design .design-hero__inner { display: flex; flex-direction: column; gap: var(--space-48); }

.home-design .proof {
  --inset: 40px; --mark: 28px; --off: 8px; --gut: 20px; --cols: 12;
  position: relative;
  padding: var(--inset) var(--inset) 32px;
}
.home-design .proof__sheet { position: relative; height: 700px; background: var(--sheet); }
.home-design .proof__guides {
  position: absolute; inset: 0;
  display: grid; grid-template-columns: repeat(var(--cols), 1fr); gap: var(--gut);
}
.home-design .proof__guides span { background: var(--guide); animation: design-guide .9s ease both; animation-delay: calc(var(--i) * 60ms + .2s); }
.home-design .proof__guides span:nth-child(n + 13) { display: none; }

/* Crop marks: each corner draws one horizontal and one vertical hairline */
.home-design .proof__corner { position: absolute; width: 0; height: 0; color: var(--text-primary); z-index: 1; }
.home-design .proof__corner::before,
.home-design .proof__corner::after { content: ""; position: absolute; background: currentColor; animation: design-draw .6s cubic-bezier(.2,.7,.2,1) both .1s; }
.home-design .proof__corner::before { top: 0; width: var(--mark); height: 1px; }
.home-design .proof__corner::after { left: 0; width: 1px; height: var(--mark); }
.home-design .proof__corner--tl { left: 0; top: 0; }
.home-design .proof__corner--tr { right: 0; top: 0; }
.home-design .proof__corner--bl { left: 0; bottom: 0; }
.home-design .proof__corner--br { right: 0; bottom: 0; }
.home-design .proof__corner--tl::before, .home-design .proof__corner--bl::before { right: var(--off); transform-origin: right; }
.home-design .proof__corner--tr::before, .home-design .proof__corner--br::before { left: var(--off); transform-origin: left; }
.home-design .proof__corner--tl::after, .home-design .proof__corner--tr::after { bottom: var(--off); transform-origin: bottom; }
.home-design .proof__corner--bl::after, .home-design .proof__corner--br::after { top: var(--off); transform-origin: top; }
.home-design .proof__corner--tl::before, .home-design .proof__corner--tr::before,
.home-design .proof__corner--bl::before, .home-design .proof__corner--br::before { --axis: scaleX(0); }
.home-design .proof__corner--tl::after, .home-design .proof__corner--tr::after,
.home-design .proof__corner--bl::after, .home-design .proof__corner--br::after { --axis: scaleY(0); }
.home-design .proof__target { position: absolute; left: 50%; top: 1px; width: 32px; height: 32px; transform: translateX(-50%); color: var(--text-primary); animation: design-spin .8s cubic-bezier(.2,.7,.2,1) both .3s; }

.home-design .proof__content { position: relative; height: 100%; padding: 40px 32px; }
.home-design .proof__title { color: var(--text-primary); }
.home-design .proof__title-1 { font-size: clamp(120px, 20.56vw, 296px); line-height: .8; letter-spacing: -0.01em; white-space: nowrap; }
.home-design .proof__title-2 { font-size: clamp(40px, 5.14vw, 74px); line-height: .9; white-space: nowrap; }
.home-design .proof__media {
  position: absolute; right: 0; bottom: 40px;
  width: calc((100% - 11 * var(--gut)) / 12 * 4 + 3 * var(--gut)); height: 420px; overflow: hidden;
}
.home-design .proof__media img { width: 100%; height: 100%; object-fit: cover; }
.home-design .proof__lead { position: absolute; left: 32px; bottom: 40px; width: 505px; max-width: 45%; margin: 0; font-size: 20px; line-height: 1.4; }
.home-design .proof__slug {
  display: flex; justify-content: space-between; gap: var(--space-16);
  padding: 12px 16px 0; font-family: var(--font-mono); font-size: 12px; color: color-mix(in srgb, var(--text-primary) 72%, transparent);
}
.home-design .proof__checks { display: flex; gap: 24px; }
/* Approval tick boxes: pressing one stamps the sheet (home-design.js). */
.home-design .proof__check { display: inline-flex; align-items: center; gap: 8px; padding: 0; border: 0; background: none; color: inherit; font: inherit; cursor: pointer; }
.home-design .proof__check::before { content: ""; width: 11px; height: 11px; border: 1px solid currentColor; border-radius: 2px; background: transparent center / 9px no-repeat; transition: background-color .2s ease, border-color .2s ease; }
.home-design .proof__check:hover { color: var(--text-primary); }
.home-design .proof__check[aria-pressed="true"] { color: var(--text-primary); }
.home-design .proof__check[aria-pressed="true"]::before { border-color: var(--accent); background-color: var(--accent); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M1.5 5.2 4 7.5l4.5-5' fill='none' stroke='%23fbf9f6' stroke-width='1.6'/%3E%3C/svg%3E"); }
.home-design .proof__check:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.home-design .proof__stamp {
  position: absolute; left: 40%; top: 60%; z-index: 3; pointer-events: none;
  padding: 10px 16px 8px; border: 4px solid currentColor; border-radius: var(--radius);
  color: var(--accent-text); font-family: var(--font-display); font-weight: 900; font-size: 64px; line-height: 1; text-transform: uppercase; letter-spacing: .02em;
  mix-blend-mode: multiply; opacity: 0; transform: translate(-50%, -50%) rotate(-9deg) scale(1.6);
}
.home-design .proof__stamp.is-on { opacity: .88; transform: translate(-50%, -50%) rotate(-7deg); animation: design-stamp .45s cubic-bezier(.2,.9,.3,1.2) both; }
.home-design .proof__stamp[data-kind="Changes"] { color: #b3203f; }
[data-bs-theme="dark"] .home-design .proof__stamp { mix-blend-mode: normal; color: var(--pink); }
@keyframes design-stamp { 0% { opacity: 0; transform: translate(-50%, -50%) rotate(-9deg) scale(1.6); } 60% { opacity: .92; transform: translate(-50%, -50%) rotate(-7deg) scale(.96); } 100% { opacity: .88; transform: translate(-50%, -50%) rotate(-7deg) scale(1); } }

@keyframes design-guide { from { opacity: 0; transform: scaleY(.2); } to { opacity: 1; transform: none; } }
@keyframes design-draw { from { transform: var(--axis); } to { transform: none; } }
@keyframes design-spin { from { opacity: 0; transform: translateX(-50%) rotate(-90deg); } to { opacity: 1; transform: translateX(-50%) rotate(0); } }

/* 14.3 Contact sheet + loupe ------------------------------------------------ */
.home-design .contact-sheet { overflow-x: clip; }
.home-design .contact-sheet__title { font-size: 150px; line-height: .85; color: #fbf9f6; }
.home-design .sheet-grid-wrap { position: relative; padding-bottom: 40px; }
.home-design .sheet-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 40px 24px; }
.home-design .frame a { display: flex; flex-direction: column; gap: 10px; color: #fbf9f6; }
.home-design .frame__media { display: block; aspect-ratio: 312 / 380; border: 1px solid rgba(251, 249, 246, 0.35); overflow: hidden; }
.home-design .frame__media img { width: 100%; height: 100%; object-fit: cover; }
.home-design .frame__cap { display: flex; align-items: baseline; font-size: 15px; font-weight: 400; line-height: 1.2; }
.home-design .frame__cap b { flex: 0 0 48px; font-family: var(--font-mono); font-weight: 500; font-size: 12px; color: var(--pink); }
.home-design .frame a:hover .frame__cap { color: var(--pink); }
.home-design .frame a:focus-visible { outline: 2px solid var(--pink); outline-offset: 4px; }

.home-design .loupe { --size: 240px; position: absolute; left: 0; top: 0; width: var(--size); height: var(--size); pointer-events: none; will-change: transform; z-index: 2; }
.home-design .loupe__lens {
  position: absolute; inset: 0; border-radius: 50%;
  border: 3px solid var(--pink); background-color: var(--ink-band); overflow: hidden;
  box-shadow: 0 24px 48px rgba(0, 0, 0, 0.45);
}
.home-design .loupe__zoom { position: absolute; left: calc(100% + 10px); top: 50%; transform: translateY(-50%); font-family: var(--font-mono); font-weight: 500; font-size: 12px; color: var(--pink); white-space: nowrap; }
.home-design .loupe:not(.is-ready) { opacity: 0; }
.home-design .loupe.is-returning, .home-design .loupe.is-returning .loupe__copy { transition: transform .7s cubic-bezier(.2,.7,.2,1); }
/* Over the contact sheet the loupe replaces the site cursor (motion.js). */
.home-design:has(.sheet-grid-wrap:hover) .m-cursor { opacity: 0 !important; }
.home-design .loupe__copy { position: absolute; left: 0; top: 0; transform-origin: 0 0; }

/* 14.4 Services — spec tables ----------------------------------------------- */
.home-design .design-services .design-head { margin-bottom: 56px; }
.home-design .specs { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-24); align-items: stretch; }
.home-design .spec { background: var(--sheet); padding: 24px 24px 12px; }
.home-design .spec__head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin: 0; padding-bottom: 24px; color: var(--accent-text); font-size: 56px; line-height: 1.2; }
.home-design .spec__head span { font-family: var(--font-display); font-weight: 900; text-transform: uppercase; }
.home-design .spec__head b { font-family: var(--font-mono); font-weight: 200; }
.home-design .spec__rows { margin: 0; }
.home-design .spec__rows > div { display: flex; align-items: flex-start; justify-content: space-between; gap: 0; padding: 12px 0; border-top: 1px solid var(--border); }
.home-design .spec__rows dt { flex: 0 0 120px; font-family: var(--font-mono); font-weight: 400; font-size: 12px; line-height: 1.5; color: var(--text-muted); }
.home-design .spec__rows dd { flex: 1 1 0; margin: 0; text-align: right; font-weight: 400; font-size: 15px; line-height: 1.25; }

/* 14.5 Full-bleed image + colour bar ----------------------------------------- */
.home-design .design-bleed { background: var(--surface); }
.home-design .design-bleed__media { height: 620px; }
.home-design .design-bleed__media img { width: 100%; height: 100%; object-fit: cover; }
.home-design .colour-bar { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(12, 1fr); }
.home-design .colour-bar li { height: 44px; padding: 10px 0 0 12px; background: var(--c); color: var(--t); font-family: var(--font-mono); font-weight: 500; font-size: 11px; line-height: 1.3; white-space: nowrap; overflow: hidden; }

/* 14.6 Index A–Z ------------------------------------------------------------- */
.home-design .design-index { background: var(--surface); }
.home-design .design-index__note { font-size: 12px; white-space: nowrap; }
.home-design .az { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0 var(--space-24); }
.home-design .az__col { list-style: none; margin: 0; padding: 0; }
.home-design .az__col a { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 12px 0; border-top: 1px solid color-mix(in srgb, var(--text-primary) 18%, transparent); }
.home-design .az__col span { font-family: var(--font-display); font-weight: 900; font-size: 34px; line-height: 1.2; text-transform: uppercase; transition: transform .3s ease, color .3s ease; }
.home-design .az__col b { font-family: var(--font-mono); font-weight: 400; font-size: 14px; color: var(--accent-text); }
.home-design .az__col a:hover span { transform: translateX(8px); color: var(--accent-text); }

/* 14.7 About ------------------------------------------------------------------ */
.home-design .design-about__layout { display: flex; align-items: flex-end; gap: 80px; }
.home-design .design-about__copy { flex: 1 1 0; display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-32); }
.home-design .design-about__lead { font-size: 48px; line-height: 1.1; letter-spacing: -0.03em; }
.home-design .design-about__copy .btn-m { height: 52px; }
.home-design .design-about__media { flex: 0 0 440px; display: flex; flex-direction: column; gap: 12px; }
.home-design .design-about__media img { width: 100%; aspect-ratio: 440 / 560; height: auto; object-fit: cover; }
.home-design .design-about__media figcaption { font-size: 12px; }

/* 14.8 Recognition by year ----------------------------------------------------- */
.home-design .design-awards {
  background: var(--plum); color: #fbf9f6;
  --text-muted: rgba(251, 249, 246, 0.7);
}
.home-design .design-awards__head { display: flex; justify-content: space-between; gap: 16px; padding-bottom: var(--space-48); }
.home-design .years { list-style: none; margin: 0; padding: 0; }
.home-design .year { display: flex; align-items: center; gap: var(--space-48); padding: 24px 0; border-top: 1px solid rgba(251, 249, 246, 0.22); }
.home-design .year__num { flex: 0 0 300px; margin: 0; font-family: var(--font-mono); font-weight: 200; font-size: 96px; line-height: 1.32; color: var(--pink); }
.home-design .year__text { flex: 1 1 0; margin: 0; font-size: 22px; line-height: 1.4; }

/* 14.9 Brief drop zone + footer ---------------------------------------------- */
.home-design .design-brief { padding: var(--space-128) 0 var(--space-48); }
.home-design .brief { display: flex; flex-direction: column; gap: var(--space-32); margin-bottom: 80px; }
.home-design .brief__title { font-size: min(190px, 13.2vw); line-height: .82; color: #fbf9f6; white-space: nowrap; text-wrap: balance; }
.home-design .dropzone {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: 12px;
  padding: 64px 24px; margin: 0; text-align: center; cursor: pointer;
  border: 2px dashed var(--pink); border-radius: var(--radius);
  transition: background-color .25s ease, border-color .25s ease;
}
.home-design .dropzone:hover, .home-design .dropzone.is-over { background: rgba(244, 182, 201, 0.08); }
.home-design .dropzone.is-over { border-style: solid; }
.home-design .dropzone:focus-within { outline: 2px solid var(--pink); outline-offset: 4px; }
.home-design .dropzone.is-error { border-color: #ff8f8f; }
.home-design .dropzone__input { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; }
.home-design .dropzone__title { font-size: 32px; font-weight: 300; letter-spacing: -0.01em; line-height: 1.2; }
.home-design .dropzone__title u { text-decoration-thickness: 1px; text-underline-offset: 5px; }
.home-design .dropzone__hint { font-family: var(--font-mono); font-size: 12px; color: rgba(251, 249, 246, 0.72); }
.home-design .brief__actions { display: flex; align-items: center; gap: var(--space-24); }
.home-design .brief__actions[hidden] { display: none; }
.home-design .brief__clear { padding: 0; border: 0; background: none; color: rgba(251, 249, 246, 0.8); font-family: var(--font-mono); font-size: 13px; text-decoration: underline; text-underline-offset: 4px; }
.home-design .brief__clear:hover { color: var(--pink); }
.home-design .dropzone.is-ready { border-style: solid; background: rgba(244, 182, 201, 0.06); }
.home-design .dropzone.is-sent { border-color: rgba(251, 249, 246, 0.35); border-style: solid; }
.home-design .design-brief .site-footer__brand p { color: rgba(251, 249, 246, 0.8); }
.home-design .design-brief .site-footer__col h3,
.home-design .design-brief .site-footer__legal { color: rgba(251, 249, 246, 0.75); }

/* Titles that sit on the grid edge: no display scrub (motion.js). */
.home-design [data-no-scrub] { transform: none !important; }

/* 14.10 Responsive -------------------------------------------------------------- */
@media (max-width: 1199.98px) {
  .home-design .contact-sheet__title { font-size: 120px; }
  .home-design .spec__head { font-size: 44px; }
  .home-design .az__col span { font-size: 28px; }
  .home-design .design-about__lead { font-size: 40px; }
}
@media (max-width: 1023.98px) {
  .home-design .design-hero { padding: 48px 0 56px; }
  .home-design .proof { --inset: 20px; --mark: 14px; --off: 6px; --gut: 16px; --cols: 8; padding-bottom: 0; }
  .home-design .proof__sheet { height: 588px; }
  .home-design .proof__guides span:nth-child(n + 9) { display: none; }
  .home-design .proof__target { width: 26px; height: 26px; top: -2px; }
  .home-design .proof__content { padding: 24px 24px; }
  .home-design .proof__title-1 { font-size: 23.4vw; }
  .home-design .proof__title-2 { font-size: 7.55vw; }
  .home-design .proof__media { right: 24px; bottom: 28px; width: 41.7%; height: 300px; }
  .home-design .proof__lead { left: 24px; bottom: 28px; width: 272px; max-width: 45%; font-size: 17px; }
  .home-design .proof__slug { padding: 10px 12px 0; font-size: 11px; }
  .home-design .proof__dims { display: none; }

  .home-design .design-head { flex-wrap: wrap; }
  .home-design .design-head__heading { font-size: 40px; }
  .home-design .design-head--split .design-head__note { flex: 1 1 100%; }
  .home-design .contact-sheet__title { font-size: 72px; width: min-content; }
  .home-design .contact-sheet .design-head { flex-wrap: nowrap; align-items: flex-end; }

  .home-design .sheet-grid { grid-template-columns: repeat(2, 1fr); gap: 32px 16px; }
  .home-design .sheet-grid-wrap { padding-bottom: 0; }
  .home-design .loupe { --size: 160px; }
  .home-design .specs { grid-template-columns: 1fr; gap: var(--space-16); }
  .home-design .design-bleed__media { height: 443px; }
  /* Below desktop the three lists flow as one A–Z in two columns. */
  .home-design .az { display: block; column-count: 2; column-gap: var(--space-24); }
  .home-design .az__col { display: contents; }
  .home-design .az__col li { break-inside: avoid; }
  .home-design .az__col a { flex-direction: column; gap: 2px; }
  .home-design .az__col span { font-size: 26px; }
  .home-design .design-about__layout { gap: 40px; }
  .home-design .design-about__media { flex-basis: 45%; }
  .home-design .design-about__lead { font-size: 30px; }
  .home-design .year { flex-direction: column; align-items: flex-start; gap: 12px; }
  .home-design .year__num { flex-basis: auto; font-size: 64px; line-height: 1.2; }
  .home-design .year__text { font-size: 17px; }
  .home-design .brief__title { font-size: 15.6vw; white-space: normal; }
  .home-design .dropzone__title { font-size: 26px; }
}
@media (max-width: 575.98px) {
  .home-design .design-hero { padding: 48px 0 56px; }
  .home-design .proof { --inset: 12px; --mark: 8px; --off: 4px; --gut: 12px; --cols: 4; }
  .home-design .proof__sheet { height: auto; }
  .home-design .proof__guides span:nth-child(n + 5) { display: none; }
  .home-design .proof__target { width: 18px; height: 18px; top: -3px; }
  .home-design .proof__content { display: flex; flex-direction: column; padding: 16px 12px 24px; }
  .home-design .proof__title { color: var(--accent-text); }
  .home-design .proof__title-1 { font-size: 26.7vw; }
  .home-design .proof__title-2 { font-size: 7.7vw; font-weight: 100; color: var(--text-primary); }
  .home-design .proof__media { position: relative; right: auto; bottom: auto; width: 100%; height: auto; aspect-ratio: 294 / 220; margin-top: 24px; }
  .home-design .proof__lead { position: static; width: auto; max-width: none; margin-top: 20px; font-size: 15px; }
  .home-design .proof__slug { padding: 8px 12px 0; font-size: 10px; }
  .home-design .proof__long { display: none; }
  .home-design .proof__checks { gap: 16px; }

  .home-design .design-head__heading { font-size: 30px; }
  .home-design .design-head .btn-m--ghost { width: 100%; }
  .home-design .sheet-grid { gap: 24px 12px; }
  .home-design .frame__cap { flex-direction: column; gap: 4px; font-size: 13px; }
  .home-design .frame__cap b { flex: none; }
  .home-design .loupe { --size: 96px; }
  .home-design .loupe__zoom { display: none; }
  .home-design .specs { grid-template-columns: 1fr; }
  .home-design .spec__head { font-size: 40px; flex-direction: row; }
  .home-design .contact-sheet .design-head { flex-wrap: wrap; }
  .home-design .contact-sheet__title { font-size: 64px; }
  .home-design .design-bleed__media { height: 272px; }
  .home-design .colour-bar { grid-template-columns: repeat(6, 1fr); }
  .home-design .colour-bar li { height: 36px; padding: 8px 0 0 8px; }
  .home-design .az { column-gap: 16px; }
  .home-design .proof__stamp { font-size: 30px; border-width: 3px; padding: 6px 10px 4px; top: 52%; }
  .home-design .az__col a { flex-direction: row; }
  .home-design .az__col span { font-size: 20px; }
  .home-design .az__col b { font-size: 12px; }
  .home-design .design-index__note { white-space: normal; }
  .home-design .design-about__layout { flex-direction: column; align-items: stretch; }
  .home-design .design-about__copy .btn-m { align-self: stretch; }
  .home-design .design-about__lead { font-size: 26px; }
  .home-design .year__num { font-size: 44px; }
  .home-design .year__text { font-size: 17px; }
  .home-design .brief__title { font-size: 17.4vw; }
  .home-design .dropzone { padding: 40px 16px; align-items: flex-start; text-align: left; }
  .home-design .dropzone__title { font-size: 22px; }
}

/* ==========================================================================
   15. Home — Brand (light/home-brand.html, dark/home-brand.html)
   Bone, ink and two teals. Every selector is scoped to .home-brand.
   ========================================================================== */

/* 15.1 Page tokens ------------------------------------------------------------ */
.home-brand {
  --base: #efece6;          /* bone */
  --surface: #e4e0d8;       /* agency band */
  --contrast: #121a1a;
  --text-primary: #121a1a;
  --text-muted: rgba(18, 26, 26, 0.7);
  --text-on-contrast: #f4f2ec;
  --border: rgba(18, 26, 26, 0.2);
  --accent: #0e4f4f;        /* teal */
  --accent-text: #0e4f4f;
  --on-accent: #f4f2ec;
  --teal-deep: #0a3b3b;
  --teal-light: #9fd3cc;
  --cream: #f4f2ec;
  --board: #121a1a;
  --mark-card: #f4f2ec;
  --mark-ink: #0e4f4f;
}
[data-bs-theme="dark"] .home-brand {
  --base: #171717;
  --surface: #1f1f1f;
  --text-primary: #f2efe9;
  --text-muted: #a8a29a;
  --border: #34302c;
  --accent: #0e4f4f;
  --accent-text: #f2efe9;
  --on-accent: #f4f2ec;
  --board: #1f1f1f;
  --mark-card: #171717;
  --mark-ink: #f2efe9;
}

/* Teal bands (blocks, tone, name preview) carry light text */
.home-brand .brand-blocks,
.home-brand .brand-tone,
.home-brand .brand-end {
  color: var(--cream);
  --text-muted: rgba(244, 242, 236, 0.7);
  --border: rgba(244, 242, 236, 0.2);
}
.home-brand .btn-m--accent:hover { background: var(--teal-light); color: #121a1a; }

/* Shared section header */
.home-brand .brand-head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-32); margin-bottom: var(--space-48); }
.home-brand .brand-head__title { display: flex; flex-direction: column; gap: var(--space-16); min-width: 0; }
.home-brand .brand-head__heading { font-size: 60px; line-height: 1; letter-spacing: -0.03em; max-width: 900px; text-wrap: balance; }
.home-brand .brand-head__heading--wide { max-width: 820px; }

/* 15.2 Hero — split-flap board ------------------------------------------------ */
.home-brand .brand-hero { padding: 32px 0 var(--space-96); }
.home-brand .brand-hero__inner { display: flex; flex-direction: column; gap: var(--space-48); }
.home-brand .brand-hero__top { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-32); }
.home-brand .brand-hero__title { max-width: 820px; font-size: 64px; line-height: 1; letter-spacing: -0.03em; }
.home-brand .brand-hero__meta { line-height: 1.55; white-space: nowrap; }
.home-brand .brand-hero__caption { display: flex; justify-content: space-between; gap: var(--space-16); }
.home-brand .brand-hero__media { height: 520px; overflow: hidden; }
.home-brand .brand-hero__media img { width: 100%; height: 100%; object-fit: cover; }

/* Board: 12 cells of 100 × 190 at 1440, 8px apart, 16px frame.
   Cells scale with the board: main.js writes its width into --w. */
.home-brand .flapboard {
  --cols: 12; --gap: 8px; --pad: 16px;
  background: var(--board); border-radius: 6px; padding: var(--pad);
}
.home-brand .flapboard__names { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.home-brand .flapboard__cells { display: grid; grid-template-columns: repeat(var(--cols), 1fr); gap: var(--gap); }
.home-brand .flap {
  --h: calc((var(--w, 1208px) - var(--gap) * (var(--cols) - 1)) / var(--cols) * 1.9);
  position: relative; height: var(--h); perspective: 400px;
  font-family: var(--font-display); font-weight: 900; font-size: calc(var(--h) * 0.84); color: var(--cream);
}
.home-brand .flap__half, .home-brand .flap__leaf {
  position: absolute; left: 0; right: 0; height: 50%; overflow: hidden;
  background: var(--teal-deep); backface-visibility: hidden;
}
.home-brand .flap__half--top, .home-brand .flap__leaf--top { top: 0; border-radius: 4px 4px 0 0; transform-origin: 50% 100%; }
.home-brand .flap__half--bottom, .home-brand .flap__leaf--bottom { bottom: 0; border-radius: 0 0 4px 4px; transform-origin: 50% 0; }
.home-brand .flap__leaf--bottom { transform: rotateX(90deg); }
.home-brand .flap b {
  position: absolute; left: 0; right: 0; height: var(--h);
  font-weight: 900; line-height: var(--h); text-align: center; text-transform: uppercase;
}
.home-brand .flap__half--bottom b, .home-brand .flap__leaf--bottom b { bottom: 0; }
/* The split line and the two hinges */
.home-brand .flap::before { content: ""; position: absolute; left: 0; right: 0; top: calc(50% - 1px); height: 2px; background: var(--board); z-index: 3; }
.home-brand .flap::after { content: ""; position: absolute; left: 0; right: 0; top: calc(50% - 7px); height: 14px; z-index: 3;
  background: linear-gradient(var(--board), var(--board)) left / 4px 100% no-repeat, linear-gradient(var(--board), var(--board)) right / 4px 100% no-repeat; }
.home-brand .flap__leaf { z-index: 2; }

/* 15.3 Agency ----------------------------------------------------------------- */
.home-brand .brand-agency { background: var(--surface); }
.home-brand .brand-agency__layout { display: flex; align-items: stretch; gap: var(--space-64); }
.home-brand .brand-agency__side { flex: 0 0 420px; display: flex; flex-direction: column; gap: var(--space-32); }
.home-brand .brand-agency__side img { width: 100%; aspect-ratio: 420 / 520; height: auto; object-fit: cover; }
.home-brand .brand-agency__copy { flex: 1 1 0; display: flex; flex-direction: column; justify-content: space-between; gap: var(--space-48); padding-top: 40px; }
.home-brand .brand-agency__lead { font-size: 48px; line-height: 1.1; letter-spacing: -0.03em; }
.home-brand .brand-stats { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-24); }
.home-brand .brand-stats li { display: flex; flex-direction: column; gap: 8px; padding-top: 20px; border-top: 1px solid var(--border); }
.home-brand .brand-stats b { font-family: var(--font-mono); font-weight: 200; font-size: 96px; line-height: .9; letter-spacing: -0.04em; color: var(--accent-text); }
.home-brand .brand-stats span { font-size: 15px; font-weight: 400; line-height: 1.45; color: color-mix(in srgb, var(--text-primary) 80%, transparent); }

/* 15.4 Building blocks — tabs ------------------------------------------------ */
.home-brand .brand-blocks { background: var(--accent); }
.home-brand .brand-blocks .brand-head { margin-bottom: var(--space-40); }
.home-brand .block-tabs__list { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-bottom: var(--space-40); }
.home-brand .block-tab {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  height: 72px; padding: 0 24px; border: 0; border-radius: var(--radius);
  background: var(--teal-deep); color: var(--cream); text-align: left;
  transition: background-color .25s ease, color .25s ease;
}
.home-brand .block-tab span { font-family: var(--font-mono); font-size: 13px; color: rgba(244, 242, 236, 0.75); }
.home-brand .block-tab strong { font-family: var(--font-display); font-weight: 900; font-size: 36px; line-height: 1; text-transform: uppercase; }
.home-brand .block-tab:hover { background: #0c4545; }
.home-brand .block-tab[aria-selected="true"] { background: var(--teal-light); color: #121a1a; }
.home-brand .block-tab[aria-selected="true"] span { color: #121a1a; }
.home-brand .block-tab:focus-visible { outline: 2px solid var(--teal-light); outline-offset: 3px; }
.home-brand .block-panel { display: flex; align-items: center; gap: var(--space-48); padding: 40px; border-radius: var(--radius); background: var(--teal-deep); }
.home-brand .block-panel[hidden] { display: none; }
.home-brand .block-panel.is-entering { animation: brand-panel .45s cubic-bezier(.2,.7,.2,1); }
.home-brand .block-panel__copy { flex: 1 1 0; display: flex; flex-direction: column; gap: var(--space-24); }
.home-brand .block-panel__lead { margin: 0; font-weight: 300; font-size: 36px; line-height: 1.15; letter-spacing: -0.02em; }
.home-brand .block-panel__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-24); }
.home-brand .block-panel__list li { display: flex; align-items: baseline; gap: 16px; padding-top: 12px; border-top: 1px solid rgba(244, 242, 236, 0.2); font-weight: 400; font-size: 17px; line-height: 1.2; }
.home-brand .block-panel__list li::before { content: "—"; font-family: var(--font-mono); font-size: 14px; color: var(--teal-light); }
.home-brand .block-panel__media { flex: 0 0 420px; width: 420px; height: 420px; border-radius: var(--radius); object-fit: cover; }
@keyframes brand-panel { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }

/* 15.5 Before / after ---------------------------------------------------------- */
.home-brand .brand-ba__title { font-size: 150px; line-height: .85; }
.home-brand .brand-head--button .btn-m { height: 52px; }
.home-brand .ba-cases { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-24); }
.home-brand .ba-case { display: flex; flex-direction: column; gap: var(--space-16); }
.home-brand .ba { --pos: 50%; position: relative; height: 440px; overflow: hidden; background: var(--surface); }
.home-brand .ba__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.home-brand .ba__img--after { clip-path: inset(0 0 0 var(--pos)); }
.home-brand .ba__chip { position: absolute; top: 16px; padding: 8px 12px; border-radius: var(--radius); background: var(--cream); color: #121a1a; font-family: var(--font-mono); font-weight: 500; font-size: 12px; line-height: 1.2; z-index: 1; }
.home-brand .ba__chip--before { left: 16px; }
.home-brand .ba__chip--after { right: 16px; }
.home-brand .ba__line { position: absolute; top: 0; bottom: 0; left: var(--pos); width: 2px; margin-left: -1px; background: var(--cream); z-index: 1; pointer-events: none; }
.home-brand .ba__handle {
  position: absolute; left: 50%; top: 50%; width: 56px; height: 56px; transform: translate(-50%, -50%);
  display: flex; align-items: center; justify-content: center; border-radius: 50%;
  background: var(--cream); color: #121a1a; font-family: var(--font-mono); font-weight: 500; font-size: 20px;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.18); transition: transform .2s ease;
}
.home-brand .ba__range { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; z-index: 2; }
.home-brand .ba:hover .ba__handle, .home-brand .ba__range:active ~ .ba__line .ba__handle { transform: translate(-50%, -50%) scale(1.08); }
.home-brand .ba:has(.ba__range:focus-visible) .ba__handle { outline: 2px solid var(--accent); outline-offset: 3px; }
.home-brand .ba-case__meta { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; }
.home-brand .ba-case__meta strong { font-weight: 500; font-size: 18px; }
.home-brand .ba-case__meta span { font-family: var(--font-mono); font-size: 13px; color: var(--text-muted); white-space: nowrap; }

/* 15.6 Tone sliders -------------------------------------------------------------
   The visible rail, fill and ticks are drawn on .tone__track from --v (0–100);
   the range input sits on top, 16px wider each side so the knob centre can
   reach both ends of the rail. */
.home-brand .brand-tone { background: var(--teal-deep); }
.home-brand .brand-tone__note { font-size: 12px; color: rgba(244, 242, 236, 0.75); white-space: nowrap; }
.home-brand .tone { display: flex; align-items: center; gap: var(--space-32); padding: 20px 0; border-top: 1px solid rgba(244, 242, 236, 0.18); }
.home-brand .tone + .tone { margin-top: var(--space-48); }
.home-brand .tone__from, .home-brand .tone__to { flex: 0 0 200px; font-family: var(--font-display); font-weight: 900; font-size: 40px; line-height: 1.2; text-transform: uppercase; }
.home-brand .tone__to { text-align: right; }
.home-brand .tone__value { flex: 0 0 40px; text-align: right; font-family: var(--font-mono); font-size: 14px; color: var(--teal-light); }
.home-brand .tone__track {
  --v: 50;
  position: relative; flex: 1 1 0; height: 32px;
  background:
    linear-gradient(var(--teal-light), var(--teal-light)) 0 15px / calc(var(--v) * 1%) 2px no-repeat,
    linear-gradient(rgba(244, 242, 236, 0.3), rgba(244, 242, 236, 0.3)) 0 15px / 100% 2px no-repeat,
    linear-gradient(rgba(244, 242, 236, 0.35), rgba(244, 242, 236, 0.35)) 100% 11px / 1px 10px no-repeat,
    repeating-linear-gradient(to right, rgba(244, 242, 236, 0.35) 0 1px, transparent 1px 10%) 0 11px / 100% 10px no-repeat;
}
.home-brand .tone__track input {
  position: absolute; left: -16px; right: -16px; top: 0; width: calc(100% + 32px); height: 32px; margin: 0;
  -webkit-appearance: none; appearance: none; background: transparent; cursor: pointer;
}
.home-brand .tone__track input::-webkit-slider-runnable-track { height: 32px; background: transparent; }
.home-brand .tone__track input::-moz-range-track { height: 32px; background: transparent; }
.home-brand .tone__track input::-webkit-slider-thumb { -webkit-appearance: none; width: 32px; height: 32px; border-radius: 50%; border: 0; background: var(--teal-light); transition: transform .2s ease; }
.home-brand .tone__track input::-moz-range-thumb { width: 32px; height: 32px; border-radius: 50%; border: 0; background: var(--teal-light); }
.home-brand .tone__track input:hover::-webkit-slider-thumb, .home-brand .tone__track input:active::-webkit-slider-thumb { transform: scale(1.12); }
.home-brand .tone__track input:focus-visible { outline: none; }
.home-brand .tone__track input:focus-visible::-webkit-slider-thumb { box-shadow: 0 0 0 3px var(--teal-deep), 0 0 0 5px var(--cream); }
.home-brand .tone__track input:focus-visible::-moz-range-thumb { box-shadow: 0 0 0 3px var(--teal-deep), 0 0 0 5px var(--cream); }

/* 15.7 Name preview + footer ------------------------------------------------ */
.home-brand .brand-end { background: var(--accent); padding: var(--space-128) 0 var(--space-48); }
.home-brand .namer { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-32); margin-bottom: 80px; }
.home-brand .namer__title { align-self: stretch; font-size: 180px; line-height: .85; white-space: nowrap; }
.home-brand .namer__row { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-24); align-items: stretch; width: 100%; }
.home-brand .namer__field { display: flex; flex-direction: column; justify-content: center; gap: 16px; margin: 0; padding: 24px; border: 1px solid rgba(244, 242, 236, 0.4); border-radius: var(--radius); cursor: text; transition: border-color .2s ease; }
.home-brand .namer__field:focus-within { border-color: var(--teal-light); }
.home-brand .namer__field span, .home-brand .namer__preview span { font-family: var(--font-mono); font-size: 12px; line-height: 1.3; }
.home-brand .namer__field span { color: rgba(244, 242, 236, 0.75); }
.home-brand .namer__field input { width: 100%; padding: 0; border: 0; background: transparent; color: var(--cream); font-weight: 300; font-size: 40px; line-height: 1.2; caret-color: var(--teal-light); }
.home-brand .namer__field input:focus { outline: none; }
.home-brand .namer__preview { display: flex; flex-direction: column; justify-content: center; gap: 12px; min-width: 0; padding: 24px 32px; border-radius: var(--radius); background: var(--mark-card); overflow: hidden; }
.home-brand .namer__preview span { color: rgba(18, 26, 26, 0.72); }
[data-bs-theme="dark"] .home-brand .namer__preview span { color: rgba(242, 239, 233, 0.72); }
.home-brand .namer__mark { font-family: var(--font-display); font-weight: 900; font-size: 96px; line-height: 1.2; letter-spacing: 0.08em; color: var(--mark-ink); white-space: nowrap; }
.home-brand .brand-btn-light { height: 52px; background: var(--cream); color: var(--accent); }
.home-brand .brand-btn-light:hover { background: var(--teal-light); color: #121a1a; }
.home-brand .brand-end .site-footer__brand p { color: rgba(244, 242, 236, 0.82); }
.home-brand .brand-end .site-footer__col h3, .home-brand .brand-end .site-footer__legal { color: rgba(244, 242, 236, 0.75); }

/* 15.8 Responsive ---------------------------------------------------------------- */
@media (max-width: 1199.98px) {
  .home-brand .brand-hero__title { font-size: 52px; }
  .home-brand .brand-agency__side { flex-basis: 340px; }
  .home-brand .brand-agency__lead { font-size: 38px; }
  .home-brand .brand-stats b { font-size: 72px; }
  .home-brand .block-panel__media { flex-basis: 340px; width: 340px; height: 340px; }
  .home-brand .brand-ba__title { font-size: 120px; }
  .home-brand .tone__from, .home-brand .tone__to { flex-basis: 150px; font-size: 34px; }
  .home-brand .namer__title { font-size: 150px; }
  .home-brand .namer__mark { font-size: 72px; }
}
@media (max-width: 1023.98px) {
  .home-brand .brand-hero { padding: 48px 0 var(--space-64); }
  .home-brand .brand-hero__inner { gap: 40px; }
  .home-brand .brand-hero__top { flex-direction: column; align-items: flex-start; gap: 8px; }
  .home-brand .brand-hero__title { font-size: 36px; }
  .home-brand .brand-hero__caption { flex-direction: column; gap: 4px; }
  .home-brand .brand-hero__media { height: 280px; }
  .home-brand .flapboard { --gap: 4px; --pad: 12px; border-radius: 4px; }

  .home-brand .brand-head { flex-wrap: wrap; }
  .home-brand .brand-head__heading { font-size: 36px; }
  .home-brand .brand-agency__layout { flex-direction: column; gap: 40px; }
  .home-brand .brand-agency__copy { padding-top: 0; }
  .home-brand .brand-agency__side { flex-basis: auto; width: 62%; }
  .home-brand .brand-agency__lead { font-size: 32px; }
  .home-brand .brand-stats b { font-size: 56px; }
  .home-brand .block-tab { flex-direction: column; align-items: flex-start; justify-content: space-between; height: 72px; padding: 8px 16px 10px; }
  .home-brand .block-tab strong { font-size: 28px; }
  .home-brand .block-panel { flex-direction: column; align-items: stretch; padding: 32px 24px; }
  .home-brand .block-panel__lead { font-size: 28px; }
  .home-brand .block-panel__media { flex-basis: auto; width: 100%; height: auto; aspect-ratio: 1; }
  .home-brand .brand-ba__title { font-size: 88px; max-width: 440px; }
  .home-brand .brand-head--button { flex-wrap: nowrap; }
  .home-brand .ba { height: 300px; }
  .home-brand .ba-case__meta { flex-direction: column; gap: 4px; }
  .home-brand .brand-tone__note { white-space: normal; }
  .home-brand .tone { flex-wrap: wrap; gap: 16px 24px; padding: 24px 0; }
  .home-brand .tone + .tone { margin-top: 0; }
  .home-brand .tone__from { order: 1; flex: 1 1 auto; font-size: 32px; }
  .home-brand .tone__to { order: 2; flex: 0 0 auto; font-size: 32px; }
  .home-brand .tone__value { order: 3; flex: 0 0 32px; }
  .home-brand .tone__track { order: 4; flex: 1 1 100%; margin: 0 16px; }
  .home-brand .namer__title { font-size: 104px; }
  .home-brand .namer__mark { font-size: 56px; }
  .home-brand .namer__field input { font-size: 30px; }
}
@media (max-width: 575.98px) {
  .home-brand .brand-hero__title { font-size: 26px; }
  /* Keep all 12 cells on one row so a name never breaks across lines. */
  .home-brand .flapboard { --gap: 3px; --pad: 8px; }
  .home-brand .flap::after { background-size: 2px 100%; }
  .home-brand .brand-stats { gap: 12px; }
  .home-brand .brand-hero__media { height: 220px; }
  .home-brand .brand-agency__side { width: 100%; }
  .home-brand .brand-agency__lead { font-size: 26px; }
  .home-brand .brand-stats b { font-size: 40px; }
  .home-brand .brand-stats span { font-size: 13px; }
  .home-brand .brand-head__heading { font-size: 26px; }
  .home-brand .block-tabs__list { grid-template-columns: repeat(2, 1fr); }
  .home-brand .block-tab { flex-direction: row; align-items: center; justify-content: flex-start; height: 72px; padding: 0 12px; gap: 6px; }
  .home-brand .block-tab strong { font-size: 24px; }
  .home-brand .block-panel { padding: 24px 20px; }
  .home-brand .block-panel__lead { font-size: 22px; }
  .home-brand .brand-ba__title { font-size: 60px; max-width: none; white-space: nowrap; }
  .home-brand .brand-head--button { flex-wrap: wrap; }
  .home-brand .brand-head--button .btn-m { width: 100%; }
  .home-brand .ba-cases { grid-template-columns: 1fr; }
  .home-brand .ba { height: 232px; }
  .home-brand .ba__handle { width: 40px; height: 40px; font-size: 16px; }
  .home-brand .ba__chip { top: 8px; padding: 4px 8px; font-size: 10px; }
  .home-brand .ba__chip--before { left: 8px; }
  .home-brand .ba__chip--after { right: 8px; }
  .home-brand .tone__from, .home-brand .tone__to { font-size: 26px; }
  .home-brand .namer__row { grid-template-columns: 1fr; gap: 16px; }
  .home-brand .namer__mark { font-size: 44px; }
  .home-brand .namer__field input { font-size: 26px; }
}

/* ==========================================================================
   16. Home — Product (light/home-product.html, dark/home-product.html)
   Palette: paper #f6f6f4 · graphite #17191c · lavender #d9d6f2
   Signature: changelog card, sprint Gantt, keycap services, estimator.
   ========================================================================== */
.home-product {
  --base: #f6f6f4;
  --surface: #ececea;
  --contrast: #17191c;
  --contrast-deep: #202328;          /* estimator band, keycaps */
  --text-primary: #17191c;
  --text-muted: rgba(23, 25, 28, 0.7);
  --text-on-contrast: #f6f6f4;
  --border: rgba(23, 25, 28, 0.15);
  --accent: #d9d6f2;                 /* lavender */
  --on-accent: #17191c;
  --chip-line: rgba(23, 25, 28, 0.3);
  --bar-light: #d9d6f2;              /* Gantt bars */
  --bar-strong: #17191c;
  --card: #17191c;                   /* changelog card */
  --estimate: #d9d6f2;               /* estimate card */
  --on-estimate: #17191c;
  --pulse: #2f9e5f;
}
[data-bs-theme="dark"] .home-product {
  --base: #0f0f0f;
  --surface: #171717;
  --contrast: #171717;
  --contrast-deep: #1f1f1f;
  --text-primary: #f2efe9;
  --text-muted: #a8a29a;
  --text-on-contrast: #f2efe9;
  --border: #34302c;
  --chip-line: rgba(242, 239, 233, 0.3);
  --bar-light: #d9d6f2;
  --bar-strong: #f2efe9;
  --card: #1f1f1f;
  --estimate: #171717;
  --on-estimate: #f2efe9;
}
[data-bs-theme="dark"] .home-product .btn-m--primary { background: #262626; color: #f2efe9; }
[data-bs-theme="dark"] .home-product .btn-m--primary:hover { background: var(--accent); color: var(--on-accent); }

/* 16.1 Shared pieces ------------------------------------------------------- */
.home-product .product-band { padding: var(--space-128) 0; background: var(--base); }
.home-product .product-band--surface { background: var(--surface); }
.home-product .product-band--ink,
.home-product .product-band--deep {
  background: var(--contrast);
  color: var(--text-on-contrast);
  --text-muted: rgba(246, 246, 244, 0.75);
  --border: rgba(246, 246, 244, 0.16);
}
.home-product .product-band--deep { background: var(--contrast-deep); }
.home-product .t-label { color: var(--text-muted); }

/* Chips: stack chips (outline), version / launch chips (accent) */
.home-product .chip {
  display: inline-flex; align-items: center;
  padding: 6px 12px; border: 1px solid var(--chip-line); border-radius: var(--radius);
  font-family: var(--font-mono); font-weight: 500; font-size: 12px; line-height: 1.25; white-space: nowrap;
}
.home-product .chip--accent { background: var(--accent); border-color: var(--accent); color: var(--on-accent); }
.home-product .chip-row { display: flex; flex-wrap: wrap; gap: 8px; }

/* Status pill in the header */
.home-product .status-pill {
  display: inline-flex; align-items: center; gap: 10px; padding: 10px 16px;
  background: var(--surface); border-radius: var(--radius);
  font-family: var(--font-mono); font-weight: 500; font-size: 12px; line-height: 1.25; white-space: nowrap;
}
.home-product .status-pill__pulse { position: relative; width: 10px; height: 10px; border-radius: 50%; background: var(--pulse); flex: none; }
.home-product .status-pill__pulse::after {
  content: ""; position: absolute; inset: 0; border-radius: 50%; background: var(--pulse);
  animation: product-pulse 1.8s ease-out infinite;
}
@keyframes product-pulse { from { transform: scale(1); opacity: .6; } to { transform: scale(2.6); opacity: 0; } }

/* 16.2 Hero + changelog ----------------------------------------------------- */
.home-product .product-hero { padding: 32px 0 112px; background: var(--base); }
.home-product .product-hero__inner { display: flex; flex-direction: column; gap: 64px; }
.home-product .product-hero__row { display: flex; align-items: flex-end; gap: var(--space-64); }
.home-product .product-hero__copy { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-32); }
.home-product .product-hero__title { display: flex; flex-direction: column; gap: var(--space-16); width: 100%; }
.home-product .product-hero__line-1 { font-size: 220px; line-height: .84; }
.home-product .product-hero__line-2 { font-size: 102px; line-height: .84; }
.home-product .product-hero__lead { max-width: 560px; margin: 0; }
.home-product .product-hero__actions { display: flex; flex-wrap: wrap; gap: var(--space-16); }
.home-product .product-hero .btn-m { height: 52px; }

.home-product .changelog {
  flex: 0 0 520px; max-width: 100%;
  background: var(--card); color: #f6f6f4; border-radius: var(--radius);
  padding: 20px 24px 8px; overflow: hidden;
  --chip-line: rgba(246, 246, 244, 0.3);
}
.home-product .changelog__head { display: flex; justify-content: space-between; padding-bottom: var(--space-16); font-family: var(--font-mono); font-size: 13px; color: rgba(246, 246, 244, 0.75); }
.home-product .changelog__list { list-style: none; margin: 0; padding: 0; overflow: hidden; }
.home-product .release { display: flex; align-items: center; gap: var(--space-16); padding: 16px 0; border-top: 1px solid rgba(246, 246, 244, 0.14); overflow: hidden; }
.home-product .release__ver { flex: 0 0 64px; font-family: var(--font-mono); font-weight: 500; font-size: 13px; color: #d9d6f2; }
.home-product .release__text { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.home-product .release__text strong { font-weight: 500; font-size: 15px; line-height: 1.25; }
.home-product .release__text em { font-weight: 400; font-size: 14px; line-height: 1.25; color: rgba(246, 246, 244, 0.8); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.home-product .release__when { flex: 0 0 44px; text-align: right; font-family: var(--font-mono); font-size: 12px; color: rgba(246, 246, 244, 0.75); }
.home-product .release .chip { min-width: 76px; justify-content: center; }
.home-product .changelog .chip--accent { background: #d9d6f2; border-color: #d9d6f2; color: #17191c; }

/* 16.3 Products -------------------------------------------------------------- */
.home-product .products-head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-64); margin-bottom: 56px; }
.home-product .products-head__copy { display: flex; flex-direction: column; gap: var(--space-24); max-width: 900px; }
.home-product .products-head__title { font-size: 60px; line-height: 1; }
.home-product .products-head .btn-m, .home-product .process-head .btn-m { height: 52px; }
.home-product .products-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-48) var(--space-24); }
.home-product .product-card { display: flex; flex-direction: column; gap: var(--space-16); color: var(--text-primary); }
.home-product .product-card__media { display: block; height: 420px; border-radius: var(--radius); overflow: hidden; }
.home-product .product-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2, .7, .2, 1); }
.home-product .product-card:hover .product-card__media img { transform: scale(1.03); }
.home-product .product-card__meta { display: flex; align-items: center; justify-content: space-between; gap: var(--space-16); }
.home-product .product-card__meta > span:first-child { display: flex; flex-direction: column; gap: 4px; }
.home-product .product-card__meta strong { font-weight: 500; font-size: 22px; line-height: 1.2; }
.home-product .product-card__meta em { font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); }

/* 16.4 Process — sprint Gantt ---------------------------------------------------
   Bars are placed with CSS variables that home-product.js reads from the
   data-attributes: --weeks on .gantt, --s (start) and --l (length) on each row. */
.home-product .process-head { display: flex; align-items: flex-end; gap: var(--space-64); margin-bottom: var(--space-64); }
.home-product .process-head__copy { flex: 1 1 0; display: flex; flex-direction: column; gap: var(--space-24); }
.home-product .process-head__title { font-size: 52px; line-height: 1.05; }
.home-product .gantt { --label: 200px; --weeks: 6; display: flex; flex-direction: column; gap: 10px; margin-bottom: var(--space-64); }
.home-product .gantt__weeks { display: flex; padding-left: var(--label); }
.home-product .gantt__weeks span { flex: 1 1 0; padding-bottom: 8px; font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); white-space: nowrap; }
.home-product .gantt__phases { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.home-product .gantt__phases li { position: relative; height: 56px; }
.home-product .gantt__name { position: absolute; left: 0; top: 16px; font-weight: 500; font-size: 17px; line-height: 1.25; }
.home-product .gantt__phases li::after { content: ""; position: absolute; left: var(--label); right: 0; bottom: 0; height: 1px; background: var(--border); }
.home-product .gantt__bar {
  position: absolute; top: 6px; height: 44px; border-radius: var(--radius);
  left: calc(var(--label) + (100% - var(--label)) * var(--s) / var(--weeks));
  width: calc((100% - var(--label)) * var(--l) / var(--weeks) - 6px);
  background: var(--bar-light); transform-origin: left center;
}
.home-product .gantt__bar--strong { background: var(--bar-strong); }
.home-product .process-photo { height: 520px; border-radius: var(--radius); overflow: hidden; }
.home-product .process-photo img { width: 100%; height: 100%; object-fit: cover; }

/* 16.5 Services — keycap rows ------------------------------------------------ */
.home-product .keys-head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-32); padding-bottom: var(--space-48); }
.home-product .keys-head__copy { display: flex; flex-direction: column; gap: var(--space-16); }
.home-product .keys-head__hint { display: flex; align-items: center; gap: 6px; white-space: nowrap; }
.home-product .keys-head__hint kbd { padding: 2px 6px 3px; border: 1px solid rgba(246, 246, 244, 0.3); border-bottom-width: 2px; border-radius: var(--radius); background: transparent; color: #d9d6f2; font-family: var(--font-mono); font-size: 12px; }
.home-product .keys-head__title { font-size: 60px; line-height: 1; }
.home-product .key-list { list-style: none; margin: 0; padding: 0; }
.home-product .key-row {
  display: flex; align-items: center; gap: var(--space-32); padding: 32px 0;
  border-top: 1px solid var(--border); color: var(--text-on-contrast); outline: 0;
}
.home-product .keycap {
  flex: none; min-width: 48px; text-align: center; padding: 10px 12px 12px; border: 1px solid rgba(246, 246, 244, 0.3); border-bottom-width: 3px; border-radius: var(--radius);
  background: var(--contrast-deep); color: #d9d6f2;
  font-family: var(--font-mono); font-weight: 500; font-size: 16px; line-height: 1.25;
  transition: transform .15s ease, border-bottom-width .15s ease, background-color .2s ease, color .2s ease;
}
.home-product .key-row__name { flex: 1 1 0; font-family: var(--font-display); font-weight: 900; font-size: 56px; line-height: 1.2; text-transform: uppercase; transition: color .2s ease, transform .35s ease; }
.home-product .key-row__text { flex: 0 0 380px; font-weight: 400; font-size: 16px; line-height: 1.5; color: rgba(246, 246, 244, 0.8); }
.home-product .key-row__time { flex: 0 0 110px; text-align: right; font-family: var(--font-mono); font-size: 13px; color: var(--text-muted); }
.home-product .key-row:hover .key-row__name { transform: translateX(8px); }
/* Pressed / focused state — set by keys 1–4 or keyboard focus */
.home-product .key-row.is-active .keycap,
.home-product .key-row:focus-visible .keycap { transform: translateY(2px); border-bottom-width: 1px; margin-bottom: -2px; background: #d9d6f2; color: #17191c; }
.home-product .key-row.is-active .key-row__name,
.home-product .key-row:focus-visible .key-row__name { color: #d9d6f2; }

/* 16.6 Estimator + footer ----------------------------------------------------- */
.home-product .estimator-band { padding: var(--space-128) 0 var(--space-48); }
.home-product .estimator { display: flex; align-items: flex-end; gap: var(--space-48); margin-bottom: 80px; }
.home-product .estimator__inputs { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: var(--space-24); }
.home-product .estimator__title { font-size: 99px; line-height: .85; }
.home-product .estimator__toggles { display: flex; flex-wrap: wrap; gap: 12px; }
.home-product .estimator__inputs > .t-label { margin-top: 8px; }
.home-product .estimator__inputs > .t-label + .estimator__toggles { margin-top: -12px; }
.home-product .toggle {
  height: 52px; padding: 0 16px; border: 1px solid rgba(246, 246, 244, 0.35); border-radius: var(--radius);
  background: transparent; color: var(--text-on-contrast);
  font-family: var(--font-mono); font-weight: 500; font-size: 13px; line-height: 1;
  transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}
.home-product .toggle::before { content: "+ "; }
.home-product .toggle[aria-pressed="true"] { background: #d9d6f2; border-color: #d9d6f2; color: #17191c; }
.home-product .toggle[aria-pressed="true"]::before { content: "✓ "; }
.home-product .toggle:hover { border-color: #f6f6f4; }
.home-product .toggle:focus-visible { outline: 2px solid #d9d6f2; outline-offset: 3px; }
.home-product .estimate {
  flex: 0 0 440px; max-width: 100%; display: flex; flex-direction: column; gap: 12px; padding: var(--space-32);
  background: var(--estimate); color: var(--on-estimate); border-radius: var(--radius);
}
.home-product .estimate p { margin: 0; }
.home-product .estimate__label { font-family: var(--font-mono); font-size: 13px; color: color-mix(in srgb, var(--on-estimate) 70%, transparent); }
.home-product .estimate__weeks, .home-product .estimate__price { transition: opacity .2s ease; }
.home-product .estimate.is-updating .estimate__weeks, .home-product .estimate.is-updating .estimate__price { opacity: .35; }
.home-product .estimate__weeks { font-family: var(--font-mono); font-weight: 200; font-size: 64px; line-height: 1; letter-spacing: -0.04em; white-space: nowrap; }
.home-product .estimate__price { font-family: var(--font-mono); font-weight: 500; font-size: 20px; line-height: 1.25; }
.home-product .estimate__note { font-weight: 400; font-size: 15px; line-height: 1.45; }
.home-product .estimate .btn-m { height: 52px; }
.home-product .estimate .btn-m--primary:hover { background: #000; color: #f6f6f4; }
.home-product .menu-drawer .theme-switch { border-color: rgba(246, 246, 244, 0.3); }
.home-product .estimator-band .site-footer__brand p { color: rgba(246, 246, 244, 0.82); }

/* 16.7 Responsive ------------------------------------------------------------- */
@media (max-width: 1199.98px) {
  .home-product .product-hero__row { flex-direction: column; align-items: stretch; }
  .home-product .changelog { flex-basis: auto; }
  .home-product .products-head__title, .home-product .keys-head__title { font-size: 48px; }
  .home-product .process-head__title { font-size: 44px; }
  .home-product .product-card__media { height: auto; aspect-ratio: 648 / 420; }
  .home-product .key-row__text { flex-basis: 300px; }
  .home-product .estimator { flex-direction: column; align-items: stretch; }
  .home-product .estimate { flex-basis: auto; }
}
@media (max-width: 1023.98px) {
  .home-product .status-pill__long { display: none; }
  .home-product .product-band { padding: 96px 0; }
  .home-product .estimator-band { padding: 96px 0 var(--space-48); }
  .home-product .products-head { flex-direction: column; align-items: flex-start; gap: var(--space-24); }
  .home-product .process-head { flex-direction: column; align-items: flex-start; gap: var(--space-32); }
  .home-product .gantt { --label: 110px; }
  .home-product .gantt__name { font-size: 15px; }
  .home-product .process-photo { height: 360px; }
  .home-product .key-row { flex-wrap: wrap; gap: var(--space-16) var(--space-24); }
  .home-product .keys-head__hint { display: none; }
  .home-product .key-row__name { font-size: 44px; }
  .home-product .key-row__text { flex: 1 1 0; min-width: 240px; }
  .home-product .key-row__time { flex-basis: auto; }
}
@media (max-width: 575.98px) {
  .home-product .product-hero__inner { gap: var(--space-48); }
  .home-product .product-hero__title { gap: var(--space-16); }
  .home-product .product-hero__lead { font-size: 18px; }
  /* Phone header: lockup, status pill and menu. The theme link moves into the menu drawer. */
  .home-product .site-header { gap: 12px; }
  .home-product .site-header .theme-switch { display: none; }
  .home-product .site-header .lockup { gap: 10px; }
  .home-product .site-header .lockup svg { width: 28px; height: 28px; }
  .home-product .site-header .lockup__word { font-size: 24px; }
  .home-product .status-pill { gap: 8px; padding: 8px 10px; font-size: 11px; }
  .home-product .status-pill__pulse { width: 8px; height: 8px; }
  .home-product .changelog { padding: 16px 16px 4px; }
  .home-product .release { gap: 12px; flex-wrap: wrap; }
  .home-product .release__ver { flex-basis: 52px; }
  .home-product .release__text { flex-basis: calc(100% - 64px); }
  .home-product .release .chip { margin-left: 64px; }
  .home-product .release__when { flex: 1 1 0; }
  .home-product .products-head__title, .home-product .keys-head__title { font-size: 34px; }
  .home-product .process-head__title { font-size: 30px; }
  .home-product .products-grid { grid-template-columns: 1fr; gap: var(--space-40); }
  .home-product .gantt { --label: 72px; }
  .home-product .gantt__weeks span { font-size: 9px; }
  .home-product .gantt__phases li { height: 44px; }
  .home-product .gantt__name { top: 13px; font-size: 13px; }
  .home-product .gantt__bar { top: 6px; height: 32px; }
  .home-product .process-photo { height: 240px; }
  .home-product .key-row { padding: 24px 0; }
  .home-product .key-row__name { flex-basis: calc(100% - 80px); font-size: 32px; }
  .home-product .key-row__text { flex-basis: 100%; min-width: 0; font-size: 15px; }
  .home-product .key-row__time { flex-basis: 100%; text-align: left; }
  .home-product .estimate { padding: var(--space-24); }
  .home-product .estimate__weeks, .home-product .estimate__price { transition: opacity .2s ease; }
.home-product .estimate.is-updating .estimate__weeks, .home-product .estimate.is-updating .estimate__price { opacity: .35; }
.home-product .estimate__weeks { font-size: 48px; }
  .home-product .toggle { height: 44px; padding: 0 12px; }
}

/* ==========================================================================
   17. Home — Web (light/home-web.html, dark/home-web.html)
   Palette: paper #faf8f3 · slate #22252b · butter #f2e3a0
   Signature: live browser mock with breakpoint toggles, artefact steps,
   score rings, three packages (middle one recommended).
   ========================================================================== */
.home-web {
  --base: #faf8f3;
  --surface: #f1ede4;
  --contrast: #22252b;               /* scores band, package cards */
  --contrast-deep: #1a1c21;          /* packages band, ring cards */
  --text-primary: #22252b;
  --text-muted: rgba(34, 37, 43, 0.7);
  --text-on-contrast: #faf8f3;
  --border: rgba(34, 37, 43, 0.15);
  --accent: #f2e3a0;                 /* butter */
  --on-accent: #22252b;
  --step-card: #faf8f3;
  --featured: #f2e3a0;               /* recommended package */
  --on-featured: #22252b;
}
[data-bs-theme="dark"] .home-web {
  --base: #0f0f0f;
  --surface: #171717;
  --contrast: #262626;
  --contrast-deep: #171717;
  --text-primary: #f2efe9;
  --text-muted: #a8a29a;
  --text-on-contrast: #f2efe9;
  --border: #34302c;
  --step-card: #1f1f1f;
  --featured: #2d2a1e;
  --on-featured: #f2efe9;
}
[data-bs-theme="dark"] .home-web .btn-m--primary { background: #262626; color: #f2efe9; }
[data-bs-theme="dark"] .home-web .btn-m--primary:hover { background: var(--accent); color: var(--on-accent); }
[data-bs-theme="dark"] .home-web .packages-band { background: #0f0f0f; }

/* 17.1 Shared pieces -------------------------------------------------------- */
.home-web .web-band { padding: var(--space-128) 0; background: var(--base); }
.home-web .web-band--surface { background: var(--surface); }
.home-web .web-band--ink,
.home-web .web-band--deep {
  background: var(--contrast);
  color: var(--text-on-contrast);
  --text-muted: rgba(250, 248, 243, 0.75);
  --border: rgba(250, 248, 243, 0.18);
}
.home-web .web-band--deep { background: var(--contrast-deep); }
.home-web .t-label { color: var(--text-muted); }
.home-web .web-head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-32); margin-bottom: 56px; }
.home-web .web-head__title { display: flex; flex-direction: column; gap: var(--space-16); }
.home-web .web-head__title h2 { max-width: 760px; font-size: 60px; line-height: 1; }
.home-web .web-head__text { flex: 0 0 320px; margin: 0; font-weight: 400; font-size: 16px; line-height: 1.5; color: color-mix(in srgb, currentColor 80%, transparent); }

/* 17.2 Hero ------------------------------------------------------------------- */
.home-web .web-hero { padding: 32px 0 112px; background: var(--base); overflow-x: clip; }
.home-web .web-hero__inner { display: flex; flex-direction: column; gap: var(--space-64); }
.home-web .web-hero__row { display: flex; align-items: stretch; gap: 56px; }
.home-web .web-hero__copy { flex: 0 0 480px; display: flex; flex-direction: column; gap: var(--space-40); }
.home-web .web-hero__title { display: flex; flex-direction: column; gap: 8px; }
.home-web .web-hero__line-1 { font-size: 132px; line-height: .84; white-space: nowrap; }
.home-web .web-hero__line-2 { font-size: 96px; line-height: .88; }
.home-web .web-hero__intro { display: flex; flex-direction: column; gap: 24px; }
.home-web .web-hero__lead { margin: 0; font-size: 20px; line-height: 1.45; }
.home-web .web-hero__actions { display: flex; flex-wrap: wrap; gap: var(--space-16); }
.home-web .web-hero .btn-m:not(.btn-m--sm) { height: 52px; }

/* Browser mock — fills the rest of the hero row, inside the container.
   home-web.js loads the live page into an <iframe>, renders it at the chosen
   viewport width and scales it to fit. */
.home-web .browser {
  flex: 1 1 0; min-width: 0; display: flex; flex-direction: column;
  background: #22252b; color: #faf8f3; border-radius: var(--radius); overflow: hidden;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.18);
}
.home-web .browser__bar { display: flex; align-items: center; gap: var(--space-16); padding: 12px 16px; }
.home-web .browser__dots { display: flex; gap: 6px; flex: none; }
.home-web .browser__dots i { width: 10px; height: 10px; border-radius: 50%; background: rgba(250, 248, 243, 0.3); }
.home-web .browser__url {
  flex: 1 1 0; min-width: 0; padding: 6px 12px; border-radius: var(--radius); background: #1a1c21;
  font-family: var(--font-mono); font-size: 12px; line-height: 1.25; color: rgba(250, 248, 243, 0.8);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.home-web .browser__url:hover { color: #faf8f3; }
.home-web .browser__toggles { display: flex; gap: 4px; padding: 4px; border-radius: var(--radius); background: #1a1c21; flex: none; }
.home-web .browser__toggles button {
  padding: 4px 10px; border: 0; border-radius: var(--radius); background: transparent;
  font-family: var(--font-mono); font-weight: 500; font-size: 12px; line-height: 1.25; color: rgba(250, 248, 243, 0.75);
  transition: background-color .2s ease, color .2s ease;
}
.home-web .browser__toggles button:hover { color: #faf8f3; }
.home-web .browser__toggles button[aria-pressed="true"] { background: #f2e3a0; color: #22252b; }
.home-web .browser__toggles button:focus-visible { outline: 2px solid #f2e3a0; outline-offset: 2px; }
.home-web .browser__view {
  position: relative; flex: 1 1 auto; height: 500px; overflow: hidden;
  background: #1a1c21 linear-gradient(90deg, rgba(250, 248, 243, 0.05) 1px, transparent 1px) 0 0 / 24px 24px;
}
.home-web .browser__poster { width: 100%; height: 100%; object-fit: cover; object-position: top left; }
.home-web .browser__frame {
  position: absolute; top: 0; left: 0; border: 0; background: #fff; transform-origin: 0 0;
  pointer-events: none; opacity: 0; transition: opacity .4s ease, left .5s cubic-bezier(.2, .7, .2, 1), width .5s cubic-bezier(.2, .7, .2, 1);
}
.home-web .browser.is-live .browser__frame { opacity: 1; }
.home-web .browser.is-live .browser__poster { visibility: hidden; }
.home-web .browser__meta { display: flex; justify-content: space-between; gap: var(--space-16); padding: 10px 16px; font-family: var(--font-mono); font-size: 12px; line-height: 1.25; color: rgba(250, 248, 243, 0.75); }
.home-web .browser__lcp { color: #f2e3a0; }

/* 17.3 Process — artefact steps ----------------------------------------------
   Each drawing is a 280 × 150 canvas of absolutely placed blocks, centred in
   its card. Colours follow the text colour so they work in dark mode too. */
.home-web .steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-24); }
.home-web .step { display: flex; flex-direction: column; gap: var(--space-16); padding: var(--space-24); background: var(--step-card); border-radius: var(--radius); }
.home-web .step__head { display: flex; justify-content: space-between; align-items: flex-start; }
.home-web .step__head h3 { margin: 0; font-family: var(--font-display); font-weight: 900; font-size: 36px; line-height: 1.2; text-transform: uppercase; }
.home-web .step__head span { font-family: var(--font-mono); font-size: 14px; color: var(--text-muted); }
.home-web .step p { margin: 0; font-weight: 400; font-size: 15px; line-height: 1.5; color: color-mix(in srgb, var(--text-primary) 85%, transparent); }
.home-web .artefact { position: relative; height: 150px; border-radius: var(--radius); background: var(--surface); overflow: hidden; }
.home-web .artefact__canvas { --ink: var(--text-primary); position: absolute; left: 50%; top: 0; width: 280px; height: 150px; margin-left: -140px; }
.home-web .artefact__canvas i { position: absolute; display: block; }
.home-web .artefact--sitemap .a-node { top: 72px; width: 60px; height: 26px; border-radius: var(--radius); background: color-mix(in srgb, var(--ink) 70%, transparent); }
.home-web .artefact--sitemap .a-node--root { left: 110px; top: 16px; background: var(--ink); }
.home-web .artefact--sitemap .a-node--1 { left: 30px; }
.home-web .artefact--sitemap .a-node--2 { left: 120px; }
.home-web .artefact--sitemap .a-node--3 { left: 210px; }
.home-web .artefact--sitemap .a-leaf--1 { left: 40px; }
.home-web .artefact--sitemap .a-leaf--2 { left: 130px; }
.home-web .artefact--sitemap .a-leaf--3 { left: 220px; }
.home-web .artefact--sitemap .a-leaf { top: 112px; width: 40px; height: 18px; border-radius: var(--radius); background: color-mix(in srgb, var(--ink) 35%, transparent); }
.home-web .artefact--sitemap .a-link { left: 139px; top: 42px; width: 2px; height: 20px; background: color-mix(in srgb, var(--ink) 50%, transparent); }
.home-web .artefact--sitemap .a-bus { left: 60px; top: 62px; width: 180px; height: 2px; background: color-mix(in srgb, var(--ink) 50%, transparent); }
.home-web .artefact--wire .a-frame { left: 40px; top: 10px; width: 200px; height: 130px; border-radius: var(--radius); background: var(--base); }
.home-web .artefact--wire .a-nav { left: 52px; top: 20px; width: 176px; height: 10px; background: color-mix(in srgb, var(--ink) 30%, transparent); }
.home-web .artefact--wire .a-hero { left: 52px; top: 38px; width: 110px; height: 40px; background: color-mix(in srgb, var(--ink) 20%, transparent); }
.home-web .artefact--wire .a-img { left: 170px; top: 38px; width: 58px; height: 40px; background: color-mix(in srgb, var(--ink) 35%, transparent); }
.home-web .artefact--wire .a-card--1 { left: 52px; }
.home-web .artefact--wire .a-card--2 { left: 112px; }
.home-web .artefact--wire .a-card--3 { left: 172px; }
.home-web .artefact--wire .a-card { top: 88px; width: 54px; height: 40px; background: color-mix(in srgb, var(--ink) 15%, transparent); }
.home-web .artefact--design .a-frame { left: 40px; top: 10px; width: 200px; height: 130px; border-radius: var(--radius); background: #f2e3a0; }
.home-web .artefact--design .a-head { left: 52px; top: 24px; width: 120px; height: 24px; background: #22252b; }
.home-web .artefact--design .a-line { left: 52px; top: 56px; width: 90px; height: 6px; background: rgba(34, 37, 43, 0.5); }
.home-web .artefact--design .a-btn { left: 52px; top: 72px; width: 56px; height: 16px; border-radius: var(--radius); background: #22252b; }
.home-web .artefact--design .a-img { left: 160px; top: 24px; width: 68px; height: 104px; border-radius: var(--radius); background: rgba(34, 37, 43, 0.6); }
.home-web .artefact--live .a-frame { left: 40px; top: 10px; width: 200px; height: 130px; border-radius: var(--radius); background: #22252b; }
.home-web .artefact--live .a-bar { left: 40px; top: 10px; width: 200px; height: 14px; border-radius: var(--radius) var(--radius) 0 0; background: #1a1c21; }
.home-web .artefact--live .a-dot { left: 222px; top: 13px; width: 8px; height: 8px; border-radius: 50%; background: #3fa66b; }
.home-web .artefact--live .a-head { left: 52px; top: 36px; width: 120px; height: 20px; background: rgba(250, 248, 243, 0.9); }
.home-web .artefact--live .a-line { left: 52px; top: 64px; width: 90px; height: 6px; background: rgba(250, 248, 243, 0.5); }
.home-web .artefact--live .a-btn { left: 52px; top: 80px; width: 56px; height: 16px; border-radius: var(--radius); background: #f2e3a0; }

/* 17.4 Score rings ------------------------------------------------------------- */
.home-web .scores { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-24); }
.home-web .score { display: flex; flex-direction: column; align-items: center; gap: 20px; padding: var(--space-32) var(--space-16); border-radius: var(--radius); background: var(--contrast-deep); }
.home-web .score__gauge { position: relative; width: 180px; height: 180px; }
.home-web .score__gauge svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.home-web .score__track { fill: none; stroke: rgba(250, 248, 243, 0.12); stroke-width: 10; }
.home-web .score__value { fill: none; stroke: var(--accent); stroke-width: 10; stroke-linecap: butt; }
.home-web .score__num { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-family: var(--font-mono); font-weight: 200; font-size: 64px; line-height: 1; letter-spacing: -0.02em; }
.home-web .score__label { font-family: var(--font-mono); font-weight: 500; font-size: 13px; line-height: 1.25; }

/* 17.5 Recently launched -------------------------------------------------------- */
.home-web .launches-head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-24); margin-bottom: var(--space-32); }
.home-web .launches-head__title { font-size: 120px; }
.home-web .launches-head .btn-m, .home-web .package .btn-m { height: 52px; }
.home-web .launches { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; border-bottom: 1px solid var(--border); }
.home-web .launch { display: flex; align-items: center; gap: var(--space-32); padding: 32px 0; border-top: 1px solid var(--border); transition: background-color .3s ease; }
.home-web .launch__text strong { transition: transform .35s cubic-bezier(.2, .7, .2, 1); }
.home-web .launch:hover .launch__text strong { transform: translateX(8px); }
.home-web .launch__media { flex: 0 0 280px; height: 175px; border-radius: var(--radius); overflow: hidden; }
.home-web .launch__media img { width: 100%; height: 100%; object-fit: cover; object-position: center top; transition: transform .6s cubic-bezier(.2, .7, .2, 1); }
.home-web .launch:hover .launch__media img { transform: scale(1.04); }
.home-web .launch__text { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.home-web .launch__text strong { font-weight: 300; font-size: 40px; line-height: 1.2; letter-spacing: -0.02em; }
.home-web .launch__text em, .home-web .launch__lcp em, .home-web .launch__date { font-family: var(--font-mono); font-size: 14px; color: var(--text-muted); }
.home-web .launch__lcp { display: flex; flex-direction: column; gap: 4px; flex: none; }
.home-web .launch__lcp b { font-family: var(--font-mono); font-weight: 200; font-size: 48px; line-height: 1.2; }
.home-web .launch__lcp em { font-size: 12px; }
.home-web .launch__date { flex: 0 0 100px; text-align: right; font-size: 13px; }

/* 17.6 FAQ ----------------------------------------------------------------------- */
.home-web .faq { display: flex; gap: var(--space-64); align-items: flex-start; }
.home-web .faq__intro { flex: 0 0 420px; display: flex; flex-direction: column; gap: var(--space-16); }
.home-web .faq__title { font-size: 48px; line-height: 1.05; }
.home-web .faq__list { flex: 1 1 0; min-width: 0; }
.home-web .faq__item { padding: 24px 0; border-top: 1px solid rgba(34, 37, 43, 0.18); }
[data-bs-theme="dark"] .home-web .faq__item { border-color: var(--border); }
.home-web .faq__item summary {
  display: flex; justify-content: space-between; align-items: center; gap: var(--space-24);
  font-weight: 500; font-size: 22px; line-height: 1.3; cursor: pointer; list-style: none;
}
.home-web .faq__item summary::-webkit-details-marker { display: none; }
.home-web .faq__item summary::after { content: "+"; flex: none; font-family: var(--font-mono); font-weight: 400; }
.home-web .faq__item[open] summary::after { content: "−"; }
.home-web .faq__item summary:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 4px; }
.home-web .faq__item p { margin: 16px 0 0; font-weight: 400; font-size: 17px; line-height: 1.5; color: color-mix(in srgb, var(--text-primary) 85%, transparent); }

/* 17.7 Packages + footer ------------------------------------------------------------ */
.home-web .packages-band { padding: var(--space-128) 0 var(--space-48); }
.home-web .packages-head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-24); margin-bottom: 80px; }
.home-web .packages-head__title { font-size: 120px; }
.home-web .packages-head .t-label { white-space: nowrap; }
.home-web .packages { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-24); margin-bottom: 80px; }
.home-web .package { display: flex; flex-direction: column; align-items: flex-start; gap: 20px; padding: var(--space-32); border-radius: var(--radius); background: var(--contrast); color: var(--text-on-contrast); --line: rgba(250, 248, 243, 0.2); }
.home-web .package--featured { background: var(--featured); color: var(--on-featured); --line: color-mix(in srgb, currentColor 20%, transparent); }
.home-web .package__head { display: flex; justify-content: space-between; align-items: flex-start; align-self: stretch; }
.home-web .package__head h3 { margin: 0; font-family: var(--font-display); font-weight: 900; font-size: 48px; line-height: 1.2; text-transform: uppercase; }
.home-web .package__head span { font-family: var(--font-mono); font-size: 13px; color: color-mix(in srgb, currentColor 80%, transparent); }
.home-web .package__price { margin: 0; font-family: var(--font-mono); font-weight: 200; font-size: 44px; line-height: 1.2; letter-spacing: -0.03em; white-space: nowrap; }
.home-web .package__list { list-style: none; margin: 0; padding: 0; align-self: stretch; display: flex; flex-direction: column; gap: 20px; }
.home-web .package__list li { display: flex; gap: 12px; padding-top: 10px; border-top: 1px solid var(--line); font-weight: 400; font-size: 16px; line-height: 1.4; }
.home-web .package__list li::before { content: "✓"; font-weight: 500; font-size: 16px; }
.home-web .packages-band .site-footer__brand p { color: rgba(250, 248, 243, 0.82); }

/* 17.8 Responsive -------------------------------------------------------------------- */
@media (max-width: 1199.98px) {
  .home-web .web-hero__row { flex-direction: column; gap: var(--space-48); }
  .home-web .web-hero__copy { flex-basis: auto; }
  .home-web .web-hero__line-1 { font-size: 120px; }
  .home-web .web-hero__line-2 { font-size: 64px; }
  .home-web .browser { flex: 0 0 auto; }
  .home-web .web-head__title h2 { font-size: 48px; }
  .home-web .steps, .home-web .scores { grid-template-columns: repeat(2, 1fr); }
  .home-web .launches-head__title, .home-web .packages-head__title { font-size: 96px; }
  .home-web .faq__intro { flex-basis: 320px; }
  .home-web .packages { grid-template-columns: repeat(2, 1fr); }
  .home-web .package:last-child { grid-column: 1 / -1; }
}
@media (max-width: 1023.98px) {
  .home-web .web-band { padding: 96px 0; }
  .home-web .packages-band { padding: 96px 0 var(--space-48); }
  .home-web .web-head { flex-direction: column; align-items: flex-start; gap: var(--space-16); margin-bottom: var(--space-40); }
  .home-web .web-head__text { flex-basis: auto; max-width: 520px; }
  .home-web .browser__view { height: 420px; }
  .home-web .launch { flex-wrap: wrap; gap: var(--space-16) var(--space-24); }
  .home-web .launch__media { flex-basis: 240px; height: 150px; }
  .home-web .launch__text { flex-basis: calc(100% - 264px); }
  .home-web .launch__text strong { font-size: 32px; }
  .home-web .launch__lcp b { font-size: 36px; }
  .home-web .launch__date { flex: 1 1 0; }
  .home-web .faq { flex-direction: column; gap: var(--space-32); }
  .home-web .faq__intro { flex-basis: auto; }
  .home-web .faq__list { align-self: stretch; }
  .home-web .packages-head { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 575.98px) {
  .home-web .web-hero__inner { gap: var(--space-48); }
  .home-web .web-hero__line-1 { font-size: 88px; }
  .home-web .web-hero__line-2 { font-size: 44px; }
  .home-web .web-hero__lead { font-size: 18px; }
  .home-web .browser__bar { flex-wrap: wrap; gap: 10px; padding: 10px 12px; }
  .home-web .browser__url { flex-basis: calc(100% - 40px); }
  .home-web .browser__toggles { width: 100%; }
  .home-web .browser__toggles button { flex: 1 1 0; padding: 6px 8px; }
  .home-web .browser__view { height: 300px; }
  .home-web .web-head__title h2 { font-size: 34px; }
  .home-web .steps, .home-web .scores { grid-template-columns: 1fr; }
  .home-web .scores { grid-template-columns: repeat(2, 1fr); gap: var(--space-16); }
  .home-web .score { padding: var(--space-24) 8px; gap: 12px; }
  .home-web .score__gauge { width: 120px; height: 120px; }
  .home-web .score__num { font-size: 40px; }
  .home-web .launches-head { flex-direction: column; align-items: flex-start; }
  .home-web .launches-head__title, .home-web .packages-head__title { font-size: 64px; }
  .home-web .launch__media { flex-basis: 100%; height: auto; aspect-ratio: 280 / 175; }
  .home-web .launch__text { flex-basis: 100%; }
  .home-web .launch__text strong { font-size: 28px; }
  .home-web .faq__title { font-size: 34px; }
  .home-web .faq__item summary { font-size: 18px; }
  .home-web .packages { grid-template-columns: 1fr; }
  .home-web .package { padding: var(--space-24); }
  .home-web .package__price { font-size: 36px; }
}

/* ==========================================================================
   18. Home — Agency (light/home-agency.html, dark/home-agency.html)
   Dark by design: near-black grounds, one hot-pink accent.
   Bands alternate between --base (#0e0e10) and --surface (#18181b).
   ========================================================================== */
.home-agency {
  --base: #0e0e10;
  --surface: #18181b;
  --card: #232327;
  --contrast: #18181b;
  --text-primary: #f4f4f5;
  --text-muted: rgba(244, 244, 245, 0.72);
  --text-on-contrast: #f4f4f5;
  --border: rgba(244, 244, 245, 0.18);
  --accent: #ff4fa3;
  --on-accent: #0e0e10;
  /* Status dots (team) */
  --status-available: #35c46a;
  --status-busy: #ff4fa3;
  --status-focus: #f5c542;
}
.home-agency .agency-band { background: var(--base); }
.home-agency .agency-band--raised { background: var(--surface); }

/* 18.1 Section heads -------------------------------------------------------- */
.home-agency .agency-head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-48); margin-bottom: 56px; }
.home-agency .agency-head__title { display: flex; flex-direction: column; gap: var(--space-16); }
.home-agency .agency-head__heading { max-width: 820px; font-size: 60px; line-height: 1; letter-spacing: -0.03em; }
.home-agency .agency-head__heading--short { max-width: 760px; }
.home-agency .agency-head__note { flex: 0 0 320px; margin: 0; font-size: 16px; font-weight: 400; line-height: 1.5; color: rgba(244, 244, 245, 0.8); }
.home-agency .agency-head--display { margin-bottom: var(--space-48); }
.home-agency .agency-head__display { font-size: 130px; line-height: .85; letter-spacing: 0; }

/* 18.2 Hero ----------------------------------------------------------------- */
.home-agency .agency-hero { background: var(--base); padding: 32px 0 var(--space-96); }
.home-agency .agency-hero__inner { display: flex; flex-direction: column; gap: 56px; }
.home-agency .agency-hero__row { display: flex; align-items: flex-end; gap: var(--space-48); }
.home-agency .agency-hero__title { flex: 1 1 0; min-width: 0; line-height: .86; }
/* Sizes follow the width of the title column (viewport minus gutters, gap
   and the 460px side column) so the three lines keep the design's ratio
   (162 : 190 : 190 at 1440) and "Full-service" always fits one line. */
.home-agency .agency-hero__line-1 { font-size: min(162px, calc((100vw - 628px) * 0.197)); letter-spacing: -0.01em; white-space: nowrap; }
.home-agency .agency-hero__line-2,
.home-agency .agency-hero__line-3 { font-size: min(190px, calc((100vw - 628px) * 0.231)); letter-spacing: -0.01em; white-space: nowrap; }
.home-agency .agency-hero__line-2 { color: var(--accent); }
.home-agency .agency-hero__side { flex: 0 0 460px; display: flex; flex-direction: column; gap: var(--space-24); }
.home-agency .agency-hero__media { aspect-ratio: 460 / 300; overflow: hidden; border-radius: var(--radius); }
.home-agency .agency-hero__media img { width: 100%; height: 100%; object-fit: cover; }
.home-agency .agency-hero__lead { margin: 0; font-size: 20px; line-height: 1.45; color: rgba(244, 244, 245, 0.9); }

/* 18.3 World clocks — times are written by assets/js/home-agency.js --------- */
.home-agency .clocks { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; }
.home-agency .clock { display: flex; flex-direction: column; gap: 8px; padding: 20px; border-radius: var(--radius); background: var(--surface); }
.home-agency .clock__head { display: flex; justify-content: space-between; gap: 8px; font-family: var(--font-mono); font-size: 12px; line-height: 16px; white-space: nowrap; }
.home-agency .clock__head strong { font-weight: 500; }
.home-agency .clock__head span { color: rgba(244, 244, 245, 0.8); }
.home-agency .clock__time { font-family: var(--font-mono); font-weight: 200; font-size: 56px; line-height: 74px; letter-spacing: -0.03em; }
.home-agency .clock--home { background: var(--accent); color: var(--on-accent); }
.home-agency .clock--home .clock__head span { color: rgba(14, 14, 16, 0.8); }
/* The colon blinks once a second while the clock is live. */
.home-agency .clock__time .colon { transition: opacity .2s; }
.home-agency .clock__time.is-tick .colon { opacity: .35; }

/* 18.4 Team diagram ---------------------------------------------------------
   Row: You — link — One lead — link — spine with one branch per team.
   The two links share the free width (220 : 140 at 1440). */
.home-agency .org { display: flex; align-items: center; height: 360px; padding: 0 40px; }
.home-agency .org__node { display: flex; flex-direction: column; gap: 4px; padding: 16px 20px; border-radius: var(--radius); background: var(--card); white-space: nowrap; }
.home-agency .org__node strong { font-weight: 500; font-size: 18px; line-height: 23px; }
.home-agency .org__node span { font-family: var(--font-mono); font-size: 12px; line-height: 16px; color: rgba(244, 244, 245, 0.8); }
.home-agency .org__node--you { flex: 0 0 220px; background: #f4f4f5; color: #0e0e10; }
.home-agency .org__node--lead { flex: 0 0 280px; background: var(--accent); color: var(--on-accent); }
.home-agency .org__node--you span,
.home-agency .org__node--lead span { color: rgba(14, 14, 16, 0.8); }
.home-agency .org__link { flex: 220 1 0; height: 2px; background: rgba(244, 244, 245, 0.6); transform-origin: left center; }
.home-agency .org__link--short { flex-grow: 140; }
.home-agency .org__teams { position: relative; flex: 0 0 260px; margin: 0 0 0 120px; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 1px; }
.home-agency .org__teams .org__node { position: relative; gap: 2px; padding: 8px 20px; }
/* Spine: from the first branch to the last */
.home-agency .org__teams::before { content: ""; position: absolute; left: -120px; top: 28.5px; bottom: 28.5px; width: 2px; background: rgba(244, 244, 245, 0.4); transform-origin: center top; }
.home-agency .org__teams .org__node::before { content: ""; position: absolute; left: -120px; top: calc(50% - 1px); width: 120px; height: 2px; background: rgba(244, 244, 245, 0.4); }

/* 18.5 Periodic table of services -------------------------------------------- */
.home-agency .elements { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(6, 1fr); gap: var(--space-48) 8px; }
.home-agency .element { position: relative; display: flex; flex-direction: column; gap: 8px; padding: 16px 20px 20px; border-radius: var(--radius); background: var(--surface); color: var(--text-primary); overflow: hidden; cursor: default; outline: none; }
.home-agency .element { transition: box-shadow .25s ease; }
.home-agency .element:not(.element--start):hover { box-shadow: inset 0 0 0 1px var(--accent); }
.home-agency .element:focus-visible { box-shadow: 0 0 0 2px var(--base), 0 0 0 4px var(--accent); }
.home-agency .element__num { font-family: var(--font-mono); font-size: 13px; line-height: 17px; color: rgba(244, 244, 245, 0.8); }
.home-agency .element__sym { font-family: var(--font-display); font-weight: 900; font-size: 88px; line-height: .9; }
.home-agency .element__name { font-family: var(--font-mono); font-weight: 500; font-size: 12px; line-height: 16px; }
.home-agency .element--start { background: var(--accent); color: var(--on-accent); }
.home-agency .element--start .element__num { color: rgba(14, 14, 16, 0.8); }
/* What is inside: slides up over the element on hover / focus */
.home-agency .element__info { position: absolute; inset: 41px 0 0; display: flex; align-items: flex-start; padding: 4px 20px 20px; background: inherit; font-size: 15px; font-weight: 400; line-height: 1.4; opacity: 0; transform: translateY(8px); transition: opacity .25s ease, transform .25s ease; }
.home-agency .element:hover .element__info,
.home-agency .element:focus .element__info { opacity: 1; transform: none; }  /* :focus so a tap opens it on touch screens */

/* 18.6 Live numbers ------------------------------------------------------------ */
.home-agency .agency-numbers { padding: var(--space-96) 0; }
.home-agency .numbers { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-24); }
.home-agency .number { display: flex; flex-direction: column; gap: 12px; padding-top: 20px; border-top: 1px solid rgba(244, 244, 245, 0.2); }
.home-agency .number__value { font-family: var(--font-mono); font-weight: 200; font-size: 80px; line-height: 106px; letter-spacing: -0.04em; white-space: nowrap; }
.home-agency .spark { display: block; width: 240px; max-width: 100%; height: 40px; overflow: visible; }
.home-agency .spark path { fill: none; stroke: var(--accent); stroke-width: 2; }
.home-agency .number__label { font-size: 16px; font-weight: 400; line-height: 21px; color: rgba(244, 244, 245, 0.85); }

/* 18.7 Leads with status --------------------------------------------------------- */
.home-agency .leads { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-24); }
.home-agency .lead-card { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.home-agency .lead-card img { width: 100%; height: 380px; object-fit: cover; border-radius: var(--radius); filter: grayscale(1); transition: filter .4s ease; }
.home-agency .lead-card:hover img { filter: grayscale(0); }
.home-agency .lead-card strong { font-weight: 500; font-size: 18px; line-height: 23px; }
.home-agency .lead-card em { font-family: var(--font-mono); font-size: 12px; line-height: 16px; color: rgba(244, 244, 245, 0.75); }
.home-agency .status { display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-mono); font-size: 12px; line-height: 16px; color: rgba(244, 244, 245, 0.85); }
.home-agency .status::before { content: ""; flex: none; width: 10px; height: 10px; border-radius: 50%; background: var(--status-available); }
.home-agency .status[data-status="busy"]::before { background: var(--status-busy); }
.home-agency .status[data-status="focus"]::before { background: var(--status-focus); }
.home-agency .status[data-status="available"]::before { animation: agency-pulse 2.4s ease-in-out infinite; }
@keyframes agency-pulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(53, 196, 106, .5); } 50% { box-shadow: 0 0 0 5px rgba(53, 196, 106, 0); } }

/* 18.8 Filmstrip ------------------------------------------------------------------ */
.home-agency .filmstrip-band { padding: var(--space-128) 0 var(--space-96); }
.home-agency .filmstrip-head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-24); margin-bottom: var(--space-40); }
.home-agency .filmstrip-head__count { margin: 0; font-family: var(--font-mono); font-size: 13px; line-height: 17px; color: var(--text-muted); white-space: nowrap; }
.home-agency .filmstrip { overflow: hidden; }
.home-agency .film-card { width: 300px; display: flex; flex-direction: column; gap: 12px; color: var(--text-primary); }
.home-agency .film-card__media { display: block; height: 420px; overflow: hidden; border-radius: var(--radius); }
.home-agency .film-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2,.7,.2,1); pointer-events: none; }
.home-agency .film-card:hover .film-card__media img { transform: scale(1.04); }
.home-agency .film-card strong { font-weight: 500; font-size: 17px; line-height: 22px; }
.home-agency .film-card em { font-family: var(--font-mono); font-size: 12px; line-height: 16px; color: rgba(244, 244, 245, 0.75); }
.home-agency .film-progress { height: 3px; margin-top: var(--space-40); background: rgba(244, 244, 245, 0.2); }
.home-agency .film-progress span { display: block; width: 25%; height: 100%; background: var(--accent); transition: width .3s ease; }

/* 18.9 Chat CTA + footer ----------------------------------------------------------- */
.home-agency .agency-cta { padding: var(--space-128) 0 var(--space-48); }
.home-agency .chat-cta { display: flex; align-items: flex-end; gap: var(--space-64); margin-bottom: 80px; }
.home-agency .chat-cta__title { flex: 0 0 560px; font-size: 150px; line-height: .85; letter-spacing: 0; }
.home-agency .chat { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.home-agency .chat__log { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; width: 100%; max-height: 360px; overflow-y: auto; scrollbar-width: thin; }
.home-agency .bubble { display: flex; flex-direction: column; gap: 6px; max-width: 100%; padding: 16px 20px; border-radius: 16px 16px 16px 4px; background: var(--card); }
.home-agency .bubble p { font-size: 20px; font-weight: 400; line-height: 26px; }
.home-agency .bubble__from { font-family: var(--font-mono); font-size: 11px; line-height: 15px; color: rgba(244, 244, 245, 0.75); }
.home-agency .bubble--you { align-self: flex-end; border-radius: 16px 16px 4px 16px; background: var(--accent); color: var(--on-accent); }
.home-agency .bubble--you .bubble__from { color: rgba(14, 14, 16, 0.75); }
.home-agency .chat__replies { display: flex; flex-wrap: wrap; gap: 8px; }
.home-agency .chat__reply { padding: 12px 16px; border: 1.5px solid var(--accent); border-radius: var(--radius); background: transparent; color: var(--text-primary); font-family: var(--font-body); font-weight: 500; font-size: 15px; line-height: 20px; transition: background-color .2s ease, color .2s ease; }
.home-agency .chat__reply:hover,
.home-agency .chat__reply:focus-visible { background: var(--accent); color: var(--on-accent); outline: none; }
.home-agency .composer { display: flex; align-items: center; gap: var(--space-16); width: 100%; padding: 8px 8px 8px 20px; border-radius: var(--radius); background: var(--surface); }
.home-agency .composer:focus-within { box-shadow: 0 0 0 1px var(--accent); }
.home-agency .composer__input { flex: 1 1 0; min-width: 0; border: 0; background: transparent; color: var(--text-primary); font-family: var(--font-body); font-weight: 400; font-size: 16px; line-height: 21px; outline: none; }
.home-agency .composer__input::placeholder { color: rgba(244, 244, 245, 0.72); }
.home-agency .composer__send { height: 52px; }
.home-agency .site-footer__brand p { color: rgba(244, 244, 245, 0.82); }

/* 18.10 Responsive ------------------------------------------------------------------ */
@media (max-width: 1199.98px) {
  .home-agency .agency-hero__side { flex-basis: 380px; }
  .home-agency .agency-hero__line-1 { font-size: calc((100vw - 120px - 48px - 380px) * 0.197); }
  .home-agency .agency-hero__line-2,
  .home-agency .agency-hero__line-3 { font-size: calc((100vw - 120px - 48px - 380px) * 0.231); }
  .home-agency .clock__time { font-size: 44px; line-height: 58px; }
  .home-agency .agency-head__heading { font-size: 52px; }
  .home-agency .agency-head__display { font-size: 104px; }
  .home-agency .org { padding: 0; }
  .home-agency .org__teams { margin-left: 64px; }
  .home-agency .org__teams::before { left: -64px; }
  .home-agency .org__teams .org__node::before { left: -64px; width: 64px; }
  .home-agency .elements { row-gap: 8px; }
  .home-agency .element__sym { font-size: 72px; }
  .home-agency .number__value { font-size: 64px; line-height: 84px; }
  .home-agency .chat-cta__title { flex-basis: 440px; font-size: 118px; }
}
@media (max-width: 1023.98px) {
  .home-agency .agency-hero__row { flex-direction: column; align-items: stretch; }
  .home-agency .agency-hero__side { flex-basis: auto; flex-direction: row; align-items: flex-end; }
  .home-agency .agency-hero__media { flex: 0 0 calc(50% - 12px); }
  .home-agency .agency-hero__lead { flex: 1 1 0; }
  .home-agency .agency-hero__line-1 { font-size: calc((100vw - 96px) * 0.2); }
  .home-agency .agency-hero__line-2,
  .home-agency .agency-hero__line-3 { font-size: calc((100vw - 96px) * 0.235); }
  .home-agency .clock { padding: 16px; }
  .home-agency .clock__head { flex-direction: column; gap: 2px; }
  .home-agency .clock__time { font-size: 30px; line-height: 40px; }
  .home-agency .agency-head { flex-direction: column; align-items: flex-start; gap: var(--space-24); margin-bottom: var(--space-48); }
  .home-agency .agency-head__note { flex-basis: auto; max-width: 420px; }
  .home-agency .agency-head__heading { font-size: 44px; }
  .home-agency .agency-head__display { font-size: 80px; }
  /* Diagram turns vertical: the links run down, teams hang off a spine. */
  .home-agency .org { height: auto; flex-direction: column; align-items: flex-start; }
  .home-agency .org__node--you,
  .home-agency .org__node--lead { flex: none; width: 280px; }
  .home-agency .org__link { flex: none; width: 2px; height: 40px; margin-left: 24px; transform-origin: center top; }
  .home-agency .org__teams { flex: none; width: calc(100% - 48px); max-width: 420px; margin-left: 48px; margin-top: 12px; }
  .home-agency .org__teams::before { left: -24px; top: -12px; }
  .home-agency .org__teams .org__node::before { left: -24px; width: 24px; }
  .home-agency .elements { grid-template-columns: repeat(4, 1fr); }
  .home-agency .numbers { grid-template-columns: repeat(2, 1fr); row-gap: var(--space-48); }
  .home-agency .leads { grid-template-columns: repeat(2, 1fr); row-gap: var(--space-48); }
  .home-agency .lead-card img { height: auto; aspect-ratio: 312 / 380; }
  .home-agency .filmstrip-band { padding-top: var(--space-96); }
  .home-agency .chat-cta { flex-direction: column; align-items: stretch; gap: var(--space-48); }
  .home-agency .chat-cta__title { flex-basis: auto; font-size: 104px; }
  .home-agency .agency-cta { padding-top: var(--space-96); }
}
@media (max-width: 575.98px) {
  .home-agency .agency-hero { padding-bottom: var(--space-64); }
  .home-agency .agency-hero__inner { gap: var(--space-40); }
  .home-agency .agency-hero__line-1 { font-size: calc((100vw - 48px) * 0.2); }
  .home-agency .agency-hero__line-2,
  .home-agency .agency-hero__line-3 { font-size: calc((100vw - 48px) * 0.235); }
  .home-agency .agency-hero__side { flex-direction: column; align-items: stretch; }
  .home-agency .agency-hero__media { flex-basis: auto; }
  .home-agency .agency-hero__lead { font-size: 18px; }
  .home-agency .clocks { grid-template-columns: repeat(2, 1fr); }
  .home-agency .clock--home { grid-column: 1 / -1; }
  .home-agency .clock__head { flex-direction: row; }
  .home-agency .clock__time { font-size: 40px; line-height: 52px; }
  .home-agency .agency-head__heading { font-size: 34px; }
  .home-agency .agency-head__display { font-size: 56px; }
  .home-agency .org__node--you,
  .home-agency .org__node--lead { width: 100%; }
  .home-agency .org__teams { width: calc(100% - 48px); }
  .home-agency .elements { grid-template-columns: repeat(3, 1fr); }
  .home-agency .element { padding: 12px 12px 12px; gap: 6px; }
  .home-agency .element__sym { font-size: 52px; }
  .home-agency .element__name { font-size: 11px; }
  .home-agency .element__info { inset: 35px 0 0; padding: 2px 12px 12px; font-size: 12px; line-height: 1.35; }
  .home-agency .agency-numbers { padding: var(--space-64) 0; }
  .home-agency .number__value { font-size: 44px; line-height: 58px; }
  .home-agency .number__label { font-size: 14px; }
  .home-agency .leads { gap: var(--space-32) var(--space-16); }
  .home-agency .film-card { width: 240px; }
  .home-agency .film-card__media { height: 336px; }
  .home-agency .filmstrip-head { flex-direction: column; align-items: flex-start; gap: var(--space-16); }
  .home-agency .chat-cta__title { font-size: 72px; }
  .home-agency .bubble p { font-size: 18px; line-height: 24px; }
  .home-agency .composer__send { height: 48px; padding: 0 16px; }
}

/* ==========================================================================
   20. Journal — index (light/journal.html, dark/journal.html)
   Title band with category chips, featured article, article grid with
   reading-time bars, pagination, newsletter band.
   ========================================================================== */
.page-journal {
  --ink-70: color-mix(in srgb, var(--text-primary) 70%, transparent);
  --ink-75: color-mix(in srgb, var(--text-primary) 75%, transparent);
  --ink-85: color-mix(in srgb, var(--text-primary) 85%, transparent);
  --ink-line: color-mix(in srgb, var(--text-primary) 35%, transparent);
  --ink-track: color-mix(in srgb, var(--text-primary) 12%, transparent);
}

/* Split headlines (motion.js) are masked per word; the display face sits
   above its tight line box, so the mask gets room above and below. */

/* 20.1 Title band — tighter rhythm than the default inner title (Figma 46:20) */
.page-journal .page-title { padding-bottom: 64px; }
.page-journal .page-title__inner { gap: 56px; }
.page-journal .page-title__block { gap: 20px; }

/* Category chips: one active (filled), the rest outlined. */
.page-journal .journal-filter { display: flex; flex-wrap: wrap; gap: var(--space-8); padding-top: var(--space-16); }
.page-journal .journal-chip {
  padding: 10px 16px;
  border: 1px solid var(--ink-line);
  border-radius: var(--radius);
  background: transparent;
  color: var(--text-primary);
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 15px;
  line-height: normal;
  transition: background-color .25s ease, color .25s ease, border-color .25s ease;
}
.page-journal .journal-chip:hover { border-color: var(--text-primary); }
.page-journal .journal-chip.is-active { background: var(--contrast); border-color: var(--contrast); color: var(--text-on-contrast); }
.page-journal .journal-chip:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 3px; }
.page-journal .journal-chip { display: inline-flex; align-items: baseline; gap: 10px; }
/* Article count added by journal.js */
.page-journal .journal-chip__count { font-family: var(--font-mono); font-weight: 400; font-size: 11px; opacity: .7; }

/* 20.2 Reading-time bar — 120px track, fill = minutes / data-scale.
   The fill width is set by assets/js/journal.js from data-minutes. */
.page-journal .read-time { display: flex; align-items: center; gap: 10px; margin: 0; }
.page-journal .read-time__bar { position: relative; flex: none; width: 120px; height: 4px; border-radius: var(--radius); background: var(--ink-track); overflow: hidden; }
.page-journal .read-time__fill { position: absolute; inset: 0 auto 0 0; width: var(--fill, 0%); border-radius: var(--radius); background: var(--text-primary); transition: width 1s cubic-bezier(.2,.7,.2,1); }
.page-journal .read-time__label { font-family: var(--font-mono); font-size: 12px; color: var(--ink-75); white-space: nowrap; }

/* 20.3 Featured article */
.page-journal .journal-featured { padding: 64px 0; }
.page-journal .featured-article { display: flex; align-items: center; gap: var(--space-48); }
.page-journal .featured-article__media { flex: 0 0 760px; height: 480px; border-radius: var(--radius); overflow: hidden; }
.page-journal .featured-article__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2,.7,.2,1); }
.page-journal .featured-article__media:hover img { transform: scale(1.03); }
.page-journal .featured-article__copy { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 20px; }
.page-journal .featured-article__meta,
.page-journal .article-card__meta { margin: 0; font-family: var(--font-mono); font-size: 13px; color: var(--ink-70); }
.page-journal .featured-article__title { margin: 0; font-weight: 300; font-size: 52px; line-height: 1.05; letter-spacing: -0.03em; }
.page-journal .featured-article__text { margin: 0; font-weight: 400; font-size: 18px; line-height: 1.5; color: var(--ink-85); }
.page-journal .featured-article .btn-m { height: 52px; }

/* 20.4 Article grid — three columns, 48px between rows */
.page-journal .journal-list { padding: var(--space-96) 0; }
.page-journal .article-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-48) var(--space-24); }
.page-journal .article-card { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.page-journal .article-card[hidden] { display: none; }
.page-journal .article-card__media { display: block; width: 100%; height: 280px; border-radius: var(--radius); overflow: hidden; }
.page-journal .article-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2,.7,.2,1); }
.page-journal .article-card:hover .article-card__media img { transform: scale(1.04); }
.page-journal .article-card__title { margin: 0; font-weight: 500; font-size: 22px; line-height: 1.25; letter-spacing: -0.01em; }
.page-journal .article-card__text { margin: -4px 0 4px; font-weight: 400; font-size: 15px; line-height: 1.5; color: var(--ink-75); }
.page-journal .featured-article__title a { background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat; transition: background-size .45s cubic-bezier(.2,.7,.2,1); }
.page-journal .featured-article:hover .featured-article__title a { background-size: 100% 1px; }
.page-journal .article-card__title a:hover { text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }
.page-journal .journal-empty { margin: 0; font-family: var(--font-mono); font-size: 13px; color: var(--ink-70); }

/* Pagination — 48px round page markers */
.page-journal .journal-pages { display: flex; justify-content: center; gap: var(--space-8); margin-top: var(--space-48); }
.page-journal .journal-pages__item {
  display: inline-flex; align-items: center; justify-content: center;
  width: 48px; height: 48px; border-radius: var(--radius);
  border: 1px solid var(--ink-line);
  font-family: var(--font-mono); font-weight: 500; font-size: 14px;
  transition: border-color .25s ease;
}
.page-journal .journal-pages__item:hover { border-color: var(--text-primary); }
.page-journal .journal-pages__item.is-current { background: var(--contrast); border-color: var(--contrast); color: var(--text-on-contrast); }

/* 20.5 Newsletter band */
.page-journal .journal-newsletter { padding: var(--space-96) 0; background: var(--surface-alt); }
.page-journal .journal-newsletter__row { display: flex; align-items: center; gap: var(--space-48); }
.page-journal .journal-newsletter__copy { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
.page-journal .journal-newsletter__title { font-size: 80px; }
.page-journal .journal-newsletter__copy p { margin: 0; font-weight: 400; font-size: 17px; color: var(--ink-85); }
.page-journal .journal-newsletter__form { flex: none; display: flex; flex-wrap: wrap; gap: 12px; max-width: 520px; }
.page-journal .journal-newsletter__status { flex: 1 0 100%; min-height: 20px; margin: 0; font-family: var(--font-mono); font-size: 13px; line-height: 1.5; color: var(--ink-85); }
.page-journal .journal-newsletter__form.is-error .journal-newsletter__field { border-color: #a1242f; }
[data-bs-theme="dark"] .page-journal .journal-newsletter__form.is-error .journal-newsletter__field { border-color: #ff8a8a; }
.page-journal .journal-newsletter__field {
  width: 360px; height: 56px; padding: 0 24px;
  border: 1px solid color-mix(in srgb, var(--text-primary) 40%, transparent);
  border-radius: var(--radius);
  background: transparent; color: var(--text-primary);
  font-family: var(--font-mono); font-size: 14px;
}
.page-journal .journal-newsletter__field::placeholder { color: color-mix(in srgb, var(--text-primary) 72%, transparent); }
.page-journal .journal-newsletter__field:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 2px; border-color: var(--text-primary); }
.page-journal .journal-newsletter__btn { height: 56px; padding: 0 32px; }

/* 20.6 Responsive */
@media (max-width: 1199.98px) {
  .page-journal .featured-article__media { flex-basis: 55%; height: 420px; }
  .page-journal .featured-article__title { font-size: 40px; }
  .page-journal .journal-newsletter__row { flex-direction: column; align-items: flex-start; }
  .page-journal .journal-newsletter__form { width: 100%; max-width: none; }
  .page-journal .journal-newsletter__field { flex: 1 1 auto; width: auto; min-width: 0; }
}
@media (max-width: 1023.98px) {
  .page-journal .journal-featured { padding: 64px 0; }
  .page-journal .featured-article { flex-direction: column; align-items: stretch; gap: var(--space-32); }
  .page-journal .featured-article__media { flex: none; height: 400px; }
  .page-journal .featured-article__title { font-size: 36px; }
  .page-journal .article-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-journal .article-card__media { height: 240px; }
  .page-journal .journal-newsletter__title { font-size: 64px; }
}
@media (max-width: 575.98px) {
  .page-journal .page-title { padding-bottom: 56px; }
  .page-journal .page-title__inner { gap: 40px; }
  .page-journal .featured-article__media { height: 260px; }
  .page-journal .featured-article__title { font-size: 30px; }
  .page-journal .featured-article .btn-m { align-self: stretch; }
  .page-journal .journal-list { padding: 64px 0; }
  .page-journal .article-grid { grid-template-columns: 1fr; gap: 40px; }
  .page-journal .article-card__media { height: 220px; }
  .page-journal .journal-newsletter { padding: 64px 0; }
  .page-journal .journal-newsletter__title { font-size: 48px; }
  .page-journal .journal-newsletter__form { flex-direction: column; }
  .page-journal .journal-newsletter__field { width: 100%; flex: none; }
}

/* ==========================================================================
   21. Journal — article (light/journal-article.html, dark/journal-article.html)
   Reading progress bar, article head, full-bleed image, sticky table of
   contents beside the text, related articles.
   ========================================================================== */
.page-journal-article {
  --ink-70: color-mix(in srgb, var(--text-primary) 70%, transparent);
  --ink-72: color-mix(in srgb, var(--text-primary) 72%, transparent);
  --ink-75: color-mix(in srgb, var(--text-primary) 75%, transparent);
  --ink-80: color-mix(in srgb, var(--text-primary) 80%, transparent);
  --ink-85: color-mix(in srgb, var(--text-primary) 85%, transparent);
  --ink-line: color-mix(in srgb, var(--text-primary) 35%, transparent);
  --ink-rule: color-mix(in srgb, var(--text-primary) 15%, transparent);
  --ink-track: color-mix(in srgb, var(--text-primary) 12%, transparent);
}

/* Split headlines (motion.js) are masked per word; give the mask room for
   ascenders and descenders so no glyph is cut. */

/* 21.1 Reading progress — fixed 4px bar; width set by journal-article.js */
.page-journal-article .reading-progress { position: fixed; inset: 0 0 auto 0; z-index: 1030; height: 4px; background: var(--surface-alt); }
.page-journal-article .reading-progress__fill { display: block; height: 100%; width: 100%; background: var(--text-primary); transform-origin: 0 50%; transform: scaleX(var(--progress, 0)); }

/* 21.2 Article head (Figma 46:170) */
.page-journal-article .page-title { padding: 32px 0 64px; }
.page-journal-article .page-title__inner { gap: var(--space-48); }
.page-journal-article .article-head { gap: var(--space-24); }
.page-journal-article .article-head__title { max-width: 1100px; margin: 0; font-weight: 300; font-size: 88px; line-height: 1; letter-spacing: -0.04em; }
.page-journal-article .article-author { display: flex; align-items: center; gap: 12px; }
.page-journal-article .article-author__avatar { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; filter: grayscale(1); }
.page-journal-article .article-author__text { display: flex; flex-direction: column; gap: 2px; margin: 0; }
.page-journal-article .article-author__text strong { font-weight: 500; font-size: 16px; }
.page-journal-article .article-author__text span { font-family: var(--font-mono); font-size: 12px; color: var(--ink-72); }

/* 21.3 Full-bleed image */
.page-journal-article .article-image img { width: 100%; height: 620px; object-fit: cover; }

/* 21.4 Body — 260px sticky contents, 96px gap, text fills */
.page-journal-article .article-body { padding: var(--space-96) 0; }
.page-journal-article .article-layout { display: flex; align-items: flex-start; gap: var(--space-96); }
.page-journal-article .article-toc { position: sticky; top: 40px; flex: 0 0 260px; display: flex; flex-direction: column; gap: 12px; }
.page-journal-article .article-toc__label { margin: 0; font-family: var(--font-mono); font-size: 13px; color: var(--ink-70); }
.page-journal-article .article-toc__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; counter-reset: toc; }
.page-journal-article .article-toc__list a {
  display: flex; gap: 10px; padding-top: 8px;
  border-top: 1px solid var(--ink-rule);
  font-size: 15px; font-weight: 400; color: var(--ink-80);
  transition: border-color .25s ease, color .25s ease;
}
.page-journal-article .article-toc__list a::before { counter-increment: toc; content: counter(toc, decimal-leading-zero); flex: none; font-family: var(--font-mono); font-size: 12px; line-height: 1.6; color: var(--ink-70); }
.page-journal-article .article-toc__list a:hover { color: var(--text-primary); }
.page-journal-article .article-toc__list a.is-current { border-top-color: var(--text-primary); color: var(--text-primary); font-weight: 500; }

.page-journal-article .article-text { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 24px; }
/* Reading measure: text runs at ~70 characters; figures use the full column. */
.page-journal-article .article-text > :not(.article-figure) { width: 100%; max-width: 760px; }
.page-journal-article .article-lede { margin: 0 0 var(--space-16); font-weight: 300; font-size: 28px; line-height: 1.35; letter-spacing: -0.015em; }
.page-journal-article .article-text > h2 {
  margin: 0; font-family: var(--font-display); font-weight: 900; font-size: 48px;
  line-height: 1; text-transform: uppercase; scroll-margin-top: 40px;
  margin-top: var(--space-24);
}
.page-journal-article .article-text > p { margin: 0; font-weight: 400; font-size: 19px; line-height: 1.65; }
.page-journal-article .article-quote { margin: var(--space-16) 0; padding: var(--space-8) 0 var(--space-8) var(--space-32); border-left: 3px solid var(--text-primary); display: flex; flex-direction: column; gap: var(--space-16); }
.page-journal-article .article-quote cite { font-style: normal; font-family: var(--font-mono); font-size: 13px; color: var(--ink-72); }
.page-journal-article .article-quote p { margin: 0; font-weight: 300; font-size: 34px; line-height: 1.2; letter-spacing: -0.02em; }
.page-journal-article .article-figure { margin: var(--space-16) 0; display: flex; flex-direction: column; gap: 10px; }
.page-journal-article .article-figure a { display: block; border-radius: var(--radius); overflow: hidden; }
.page-journal-article .article-figure img { width: 100%; height: 520px; object-fit: cover; }
.page-journal-article .article-figure figcaption { font-family: var(--font-mono); font-size: 12px; color: var(--ink-72); }

.page-journal-article .article-checks { list-style: none; margin: 0; padding: 0; counter-reset: check; border-bottom: 1px solid var(--ink-rule); }
.page-journal-article .article-checks li { counter-increment: check; display: grid; grid-template-columns: 56px minmax(0, 1fr); column-gap: var(--space-16); row-gap: 4px; padding: 20px 0; border-top: 1px solid var(--ink-rule); }
.page-journal-article .article-checks li::before { content: counter(check, decimal-leading-zero); grid-row: 1 / span 2; font-family: var(--font-mono); font-weight: 200; font-size: 32px; line-height: 1; }
.page-journal-article .article-checks strong { font-weight: 500; font-size: 19px; line-height: 1.3; }
.page-journal-article .article-checks span { font-weight: 400; font-size: 16px; line-height: 1.5; color: var(--ink-80); }

.page-journal-article .article-foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-16); margin-top: var(--space-16); padding-top: var(--space-24); border-top: 1px solid var(--ink-rule); }
.page-journal-article .article-share { display: flex; align-items: center; gap: var(--space-8); }
.page-journal-article .article-share__label { margin-right: var(--space-8); font-family: var(--font-mono); font-size: 12px; color: var(--ink-72); }
.page-journal-article .article-share a,
.page-journal-article .article-share__copy {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  height: 40px; min-width: 40px; padding: 0 12px;
  border: 1px solid var(--ink-line); border-radius: var(--radius);
  background: transparent; color: var(--text-primary);
  font-family: var(--font-mono); font-size: 12px;
  transition: border-color .25s ease, background-color .25s ease, color .25s ease;
}
.page-journal-article .article-share a:hover,
.page-journal-article .article-share__copy:hover { border-color: var(--text-primary); }
.page-journal-article .article-share__copy.is-done { background: var(--contrast); border-color: var(--contrast); color: var(--text-on-contrast); }
.page-journal-article .article-share a:focus-visible,
.page-journal-article .article-share__copy:focus-visible,
.page-journal-article .article-tags a:focus-visible,
.page-journal-article .article-pager__item:focus-visible,
.page-journal-article .article-toc__list a:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 3px; }

.page-journal-article .author-card__link { align-self: flex-start; margin-top: 4px; font-family: var(--font-mono); font-size: 12px; background: linear-gradient(currentColor, currentColor) 0 100% / 100% 1px no-repeat; }

.page-journal-article .article-pager { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-24); margin-top: var(--space-16); }
.page-journal-article .article-pager__item { display: flex; flex-direction: column; gap: 8px; padding: 20px 0 0; border-top: 2px solid var(--text-primary); }
.page-journal-article .article-pager__item span { font-family: var(--font-mono); font-size: 12px; color: var(--ink-72); }
.page-journal-article .article-pager__item strong { font-weight: 400; font-size: 18px; line-height: 1.3; }
.page-journal-article .article-pager__item:hover strong { text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }
.page-journal-article .article-pager__item--next { text-align: right; }

.page-journal-article .article-tags { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--space-8); }
.page-journal-article .article-tags a { display: inline-block; padding: 8px 12px; border: 1px solid var(--ink-line); border-radius: var(--radius); font-family: var(--font-mono); font-size: 12px; }
.page-journal-article .article-tags a:hover { border-color: var(--text-primary); }

.page-journal-article .author-card { display: flex; align-items: center; gap: 20px; padding: var(--space-24); border-radius: var(--radius); background: var(--surface); }
.page-journal-article .author-card__avatar { flex: none; width: 80px; height: 80px; border-radius: 50%; object-fit: cover; filter: grayscale(1); }
.page-journal-article .author-card__bio { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.page-journal-article .author-card__bio p { margin: 0; font-weight: 400; font-size: 15px; line-height: 1.5; color: var(--ink-85); }
.page-journal-article .author-card__bio .author-card__name { font-weight: 500; font-size: 18px; line-height: normal; color: var(--text-primary); }

/* 21.5 Related */
.page-journal-article .article-related { padding: var(--space-96) 0; }
.page-journal-article .article-related__title { font-size: 80px; margin-bottom: var(--space-32); }
.page-journal-article .related-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-24); }
.page-journal-article .related-card { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.page-journal-article .related-card__media { display: block; width: 100%; height: 240px; border-radius: var(--radius); overflow: hidden; }
.page-journal-article .related-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2,.7,.2,1); }
.page-journal-article .related-card:hover .related-card__media img { transform: scale(1.04); }
.page-journal-article .related-card__title { margin: 0; font-weight: 500; font-size: 20px; line-height: 1.25; }
.page-journal-article .related-card__title a:hover { text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }

.page-journal-article .read-time { display: flex; align-items: center; gap: 10px; margin: 0; }
.page-journal-article .read-time__bar { position: relative; flex: none; width: 120px; height: 4px; border-radius: var(--radius); background: var(--ink-track); overflow: hidden; }
.page-journal-article .read-time__fill { position: absolute; inset: 0 auto 0 0; width: var(--fill, 0%); border-radius: var(--radius); background: var(--text-primary); }
.page-journal-article .read-time__label { font-family: var(--font-mono); font-size: 12px; color: var(--ink-75); }

/* 21.6 Responsive */
@media (max-width: 1199.98px) {
  .page-journal-article .article-head__title { font-size: 72px; }
  .page-journal-article .article-layout { gap: var(--space-48); }
  .page-journal-article .article-toc { flex-basis: 220px; }
}
@media (max-width: 1023.98px) {
  .page-journal-article .article-head__title { font-size: 56px; }
  .page-journal-article .article-image img { height: 420px; }
  .page-journal-article .article-layout { flex-direction: column; gap: var(--space-40); }
  /* Contents sit above the text as a plain list once there is no side column. */
  .page-journal-article .article-toc { position: static; flex: none; width: 100%; }
  .page-journal-article .article-text { width: 100%; }
  .page-journal-article .article-text > h2 { font-size: 40px; }
  .page-journal-article .article-figure img { height: 400px; }
  .page-journal-article .related-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: var(--space-40); }
  .page-journal-article .article-related__title { font-size: 64px; }
}
@media (max-width: 575.98px) {
  .page-journal-article .page-title { padding-bottom: 48px; }
  .page-journal-article .page-title__inner { gap: var(--space-40); }
  .page-journal-article .article-head__title { font-size: 40px; letter-spacing: -0.03em; }
  .page-journal-article .article-image img { height: 280px; }
  .page-journal-article .article-body { padding: 64px 0; }
  .page-journal-article .article-text { gap: 24px; }
  .page-journal-article .article-text > h2 { font-size: 32px; }
  .page-journal-article .article-text > p { font-size: 17px; }
  .page-journal-article .article-quote { padding-left: var(--space-24); }
  .page-journal-article .article-quote p { font-size: 26px; }
  .page-journal-article .article-lede { font-size: 22px; }
  .page-journal-article .article-checks li { grid-template-columns: 40px minmax(0, 1fr); }
  .page-journal-article .article-checks li::before { font-size: 24px; }
  .page-journal-article .article-pager { grid-template-columns: 1fr; }
  .page-journal-article .article-pager__item--next { text-align: left; }
  .page-journal-article .article-figure img { height: 260px; }
  .page-journal-article .author-card { flex-direction: column; align-items: flex-start; }
  .page-journal-article .article-related { padding: 64px 0; }
  .page-journal-article .article-related__title { font-size: 48px; }
  .page-journal-article .related-grid { grid-template-columns: 1fr; }
  .page-journal-article .related-card__media { height: 220px; }
}

/* ==========================================================================
   22. Services — rows (light/services.html, dark/services.html)
   One row per discipline: number · name + line · includes · photo.
   ========================================================================== */
.page-services {
  --ink-70: color-mix(in srgb, var(--text-primary) 70%, transparent);
  --ink-80: color-mix(in srgb, var(--text-primary) 80%, transparent);
  --ink-85: color-mix(in srgb, var(--text-primary) 85%, transparent);
  --ink-rule: color-mix(in srgb, var(--text-primary) 18%, transparent);
}

.page-services .svc-rows { padding: var(--space-96) 0 var(--space-128); }
.page-services .svc-list { list-style: none; margin: 0; padding: 0; }
.page-services .svc-row { position: relative; display: flex; align-items: flex-start; gap: var(--space-32); padding: var(--space-32) 0; border-top: 1px solid var(--ink-rule); }
.page-services .svc-row:last-child { border-bottom: 1px solid var(--ink-rule); }
/* A thin rule sweeps across the top of the row on hover. */
.page-services .svc-row::before { content: ""; position: absolute; left: 0; right: 0; top: -1px; height: 1px; background: var(--text-primary); transform: scaleX(0); transform-origin: 0 50%; transition: transform .6s cubic-bezier(.2,.7,.2,1); }
.page-services .svc-row:hover::before, .page-services .svc-row:focus-within::before { transform: scaleX(1); }
.page-services .svc-row__num { flex: 0 0 100px; font-family: var(--font-mono); font-size: 14px; color: var(--ink-70); }
.page-services .svc-row__copy { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
.page-services .svc-row__name { margin: 0; font-weight: 300; font-size: 48px; line-height: normal; letter-spacing: -0.03em; transition: transform .35s ease; }
/* The name link covers the whole row, so the row is one click target. */
.page-services .svc-row__name a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.page-services .svc-row__name a:focus-visible { outline: none; }
.page-services .svc-row:has(.svc-row__name a:focus-visible) { outline: 2px solid var(--text-primary); outline-offset: 4px; }
.page-services .svc-row:hover .svc-row__name { transform: translateX(12px); }
.page-services .svc-row__text { margin: 0; font-weight: 400; font-size: 16px; color: var(--ink-80); }
.page-services .svc-row__includes { flex: 0 0 220px; list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; font-weight: 400; font-size: 15px; line-height: normal; color: var(--ink-85); }
.page-services .svc-row__media { order: 4; flex: 0 0 240px; height: 160px; border-radius: var(--radius); overflow: hidden; }
.page-services .svc-row__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2,.7,.2,1); }
.page-services .svc-row:hover .svc-row__media img { transform: scale(1.05); }

/* Proof band — client quote beside three numbers */
.page-services .svc-proof { padding: var(--space-128) 0; }
.page-services .svc-proof__row { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--space-96); align-items: start; }
.page-services .svc-quote { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: var(--space-32); margin: 0; }
.page-services .svc-quote__photo { grid-row: 1 / span 2; width: 120px; height: 150px; object-fit: cover; border-radius: var(--radius); filter: grayscale(1); }
.page-services .svc-quote__text { margin: 0; }
.page-services .svc-quote__text p { margin: 0; font-weight: 300; font-size: 36px; line-height: 1.2; letter-spacing: -0.02em; }
.page-services .svc-quote__text p::before { content: "“"; }
.page-services .svc-quote__text p::after { content: "”"; }
.page-services .svc-quote__who { display: flex; flex-direction: column; gap: 4px; }
.page-services .svc-quote__who strong { font-weight: 500; font-size: 16px; }
.page-services .svc-quote__who span { font-family: var(--font-mono); font-size: 12px; color: var(--ink-70); }
.page-services .svc-stats { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-24); }
.page-services .svc-stats__title { margin: 0; color: var(--ink-70); }
.page-services .svc-stats__list { width: 100%; margin: 0; }
.page-services .svc-stats__list > div { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-24); padding: 20px 0; border-top: 1px solid var(--ink-rule); }
.page-services .svc-stats__list dt { max-width: 200px; font-weight: 400; font-size: 15px; line-height: 1.4; color: var(--ink-80); }
.page-services .svc-stats__list dd { margin: 0; font-family: var(--font-mono); font-weight: 200; font-size: 72px; line-height: .9; letter-spacing: -0.04em; white-space: nowrap; }

/* Responsive */
@media (max-width: 1199.98px) {
  .page-services .svc-row__num { flex-basis: 60px; }
  .page-services .svc-row__name { font-size: 40px; }
  .page-services .svc-row__includes { flex-basis: 180px; }
  .page-services .svc-row__media { flex-basis: 200px; height: 140px; }
  .page-services .svc-proof__row { gap: var(--space-48); }
  .page-services .svc-quote__text p { font-size: 30px; }
}
@media (max-width: 1023.98px) {
  /* Tablet: number, name, line and includes stacked on the left; photo on the right. */
  .page-services .svc-rows { padding: var(--space-64) 0 var(--space-96); }
  .page-services .svc-row { display: grid; grid-template-columns: minmax(0, 1fr) 240px; grid-template-rows: auto auto 1fr; gap: var(--space-16) var(--space-32); }
  .page-services .svc-row__num { grid-column: 1; grid-row: 1; }
  .page-services .svc-row__copy { grid-column: 1; grid-row: 2; }
  .page-services .svc-row__includes { grid-column: 1; grid-row: 3; flex-direction: row; flex-wrap: wrap; gap: 6px 20px; }
  .page-services .svc-row__media { grid-column: 2; grid-row: 1 / span 3; height: 180px; }
  .page-services .svc-row__name { font-size: 36px; }
  .page-services .svc-proof { padding: var(--space-96) 0; }
  .page-services .svc-proof__row { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 575.98px) {
  .page-services .svc-row { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; gap: var(--space-16); }
  .page-services .svc-row__num, .page-services .svc-row__copy,
  .page-services .svc-row__includes, .page-services .svc-row__media { grid-column: 1; grid-row: auto; }
  .page-services .svc-row__name { font-size: 30px; }
  .page-services .svc-row__media { height: 200px; }
  .page-services .svc-proof { padding: 64px 0; }
  .page-services .svc-quote { grid-template-columns: 72px minmax(0, 1fr); gap: var(--space-16) 20px; }
  .page-services .svc-quote__photo { width: 72px; height: 90px; grid-row: auto; }
  .page-services .svc-quote__text { grid-column: 1 / -1; grid-row: 2; }
  .page-services .svc-quote__who { grid-column: 2; grid-row: 1; align-self: center; }
  .page-services .svc-quote__text p { font-size: 24px; }
  .page-services .svc-stats__list dd { font-size: 56px; }
}

/* ==========================================================================
   23. Services — specs (light/services-specs.html, dark/services-specs.html)
   Three spec cards (name + number, four label/value rows) and a closing note.
   ========================================================================== */
.page-services-specs {
  --ink-70: color-mix(in srgb, var(--text-primary) 70%, transparent);
  --ink-rule: color-mix(in srgb, var(--text-primary) 15%, transparent);
}
.page-services-specs .page-title__title { font-size: 209px; }

.page-services-specs .specs { padding: var(--space-96) 0 var(--space-128); }
.page-services-specs .spec-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-24); }
.page-services-specs .spec-card { position: relative; display: flex; flex-direction: column; padding: 24px var(--space-24) var(--space-24); border-radius: var(--radius); background: var(--base); top: 0; transition: top .35s cubic-bezier(.2,.7,.2,1), box-shadow .35s ease; }
/* Lift with `top`: the scroll reveal owns this card's transform. */
.page-services-specs .spec-card:hover { top: -6px; box-shadow: 0 24px 48px -32px rgba(17, 17, 17, .45); }
/* The spec most clients start from: dark card with a flag on its top edge. */
.page-services-specs .spec-card--lead { background: var(--contrast); color: var(--text-on-contrast); --ink-70: color-mix(in srgb, var(--text-on-contrast) 72%, transparent); --ink-rule: color-mix(in srgb, var(--text-on-contrast) 20%, transparent); }
.page-services-specs .spec-card__flag { position: absolute; top: 0; right: var(--space-24); transform: translateY(-50%); margin: 0; padding: 6px 10px; border-radius: var(--radius); background: var(--text-primary); color: var(--base); font-family: var(--font-mono); font-size: 12px; line-height: 1.3; }
.page-services-specs .spec-card--lead .spec-card__flag { background: var(--base); color: var(--text-primary); box-shadow: 0 0 0 1px var(--ink-rule); }
.page-services-specs .spec-card__cta { align-self: flex-start; margin-top: auto; padding-top: var(--space-24); font-family: var(--font-mono); font-weight: 500; font-size: 13px; }
.page-services-specs .spec-card__cta span { display: inline-block; transition: transform .25s ease; }
.page-services-specs .spec-card__cta:hover span { transform: translateX(4px); }
.page-services-specs .spec-card__cta::after { content: ""; position: absolute; inset: 0; }
.page-services-specs .spec-card__cta:focus-visible { outline: none; }
.page-services-specs .spec-card:has(.spec-card__cta:focus-visible) { outline: 2px solid var(--text-primary); outline-offset: 4px; }
.page-services-specs .spec-card__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-16); padding-bottom: var(--space-24); }
.page-services-specs .spec-card__name { font-size: 56px; line-height: normal; letter-spacing: 0; }
.page-services-specs .spec-card__num { font-family: var(--font-mono); font-weight: 200; font-size: 56px; line-height: normal; }
.page-services-specs .spec-card__rows { margin: 0; border-bottom: 1px solid var(--ink-rule); }
.page-services-specs .spec-card__rows > div { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-16); padding: 12px 0; border-top: 1px solid var(--ink-rule); }
.page-services-specs .spec-card__rows dt { flex: 0 0 120px; font-family: var(--font-mono); font-weight: 400; font-size: 12px; line-height: normal; color: var(--ink-70); }
.page-services-specs .spec-card__rows dd { flex: 1 1 0; margin: 0; font-weight: 400; font-size: 15px; line-height: normal; text-align: right; }

.page-services-specs .spec-note { display: flex; align-items: center; justify-content: space-between; gap: var(--space-24); padding-top: var(--space-32); margin-top: var(--space-24); }
.page-services-specs .spec-note p { margin: 0; font-weight: 300; font-size: 28px; line-height: normal; letter-spacing: -0.01em; }
.page-services-specs .spec-note .btn-m { height: 52px; }

/* Questions */
.page-services-specs .spec-faq { padding: var(--space-128) 0; }
.page-services-specs .spec-faq__row { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--space-96); align-items: start; }
.page-services-specs .spec-faq__head { position: sticky; top: var(--space-40); display: flex; flex-direction: column; gap: var(--space-24); }
.page-services-specs .spec-faq__head .t-label { color: var(--ink-70); }
.page-services-specs .spec-faq__title { font-size: 96px; }
.page-services-specs .spec-faq__text { max-width: 420px; margin: 0; font-weight: 400; font-size: 17px; line-height: 1.5; color: color-mix(in srgb, var(--text-primary) 85%, transparent); }
.page-services-specs .spec-faq__list { border-bottom: 1px solid var(--ink-rule); }
.page-services-specs .faq-row { border-top: 1px solid var(--ink-rule); }
.page-services-specs .faq-row summary { display: flex; align-items: center; gap: var(--space-24); padding: var(--space-24) 0; cursor: pointer; list-style: none; }
.page-services-specs .faq-row summary::-webkit-details-marker { display: none; }
.page-services-specs .faq-row summary:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 4px; }
.page-services-specs .faq-row__num { flex: none; font-family: var(--font-mono); font-size: 13px; color: var(--ink-70); }
.page-services-specs .faq-row__q { flex: 1 1 0; font-weight: 400; font-size: 24px; line-height: 1.3; letter-spacing: -0.01em; }
.page-services-specs .faq-row__icon { position: relative; flex: none; width: 40px; height: 40px; border: 1px solid var(--ink-rule); border-radius: var(--radius); transition: background-color .25s ease, border-color .25s ease; }
.page-services-specs .faq-row__icon::before, .page-services-specs .faq-row__icon::after { content: ""; position: absolute; left: 50%; top: 50%; width: 14px; height: 1.5px; background: currentColor; transform: translate(-50%, -50%); transition: transform .3s ease; }
.page-services-specs .faq-row__icon::after { transform: translate(-50%, -50%) rotate(90deg); }
.page-services-specs .faq-row[open] .faq-row__icon { background: var(--contrast); border-color: var(--contrast); color: var(--text-on-contrast); }
.page-services-specs .faq-row[open] .faq-row__icon::after { transform: translate(-50%, -50%) rotate(0deg); }
.page-services-specs .faq-row summary:hover .faq-row__icon { border-color: var(--text-primary); }
.page-services-specs .faq-row p { max-width: 640px; margin: 0; padding: 0 64px var(--space-32) 40px; font-weight: 400; font-size: 17px; line-height: 1.6; color: color-mix(in srgb, var(--text-primary) 85%, transparent); }

/* Responsive */
@media (max-width: 1199.98px) {
  .page-services-specs .page-title__title { font-size: 160px; }
  .page-services-specs .spec-card__name, .page-services-specs .spec-card__num { font-size: 44px; }
  .page-services-specs .spec-card__rows dt { flex-basis: 96px; }
  .page-services-specs .spec-faq__row { gap: var(--space-48); }
  .page-services-specs .spec-faq__title { font-size: 72px; }
}
@media (max-width: 1023.98px) {
  .page-services-specs .specs { padding: var(--space-64) 0 var(--space-96); }
  .page-services-specs .spec-grid { grid-template-columns: minmax(0, 1fr); }
  .page-services-specs .spec-note { flex-direction: column; align-items: flex-start; }
  .page-services-specs .spec-note p { font-size: 24px; }
  .page-services-specs .spec-grid { row-gap: var(--space-32); }
  .page-services-specs .spec-faq { padding: var(--space-96) 0; }
  .page-services-specs .spec-faq__row { grid-template-columns: minmax(0, 1fr); gap: var(--space-40); }
  .page-services-specs .spec-faq__head { position: static; }
}
@media (max-width: 575.98px) {
  .page-services-specs .page-title__title { font-size: 88px; }
  .page-services-specs .spec-card__name, .page-services-specs .spec-card__num { font-size: 40px; }
  .page-services-specs .spec-card__rows dt { flex-basis: 88px; }
  .page-services-specs .spec-note p { font-size: 22px; }
  .page-services-specs .spec-faq { padding: 64px 0; }
  .page-services-specs .spec-faq__title { font-size: 56px; }
  .page-services-specs .faq-row summary { gap: var(--space-16); }
  .page-services-specs .faq-row__q { font-size: 19px; }
  .page-services-specs .faq-row p { padding: 0 0 var(--space-24); font-size: 16px; }
}

/* ==========================================================================
   24. Services — shortcuts (light/services-shortcuts.html, dark/…)
   Dark band of keycap rows (keyboard 1–4 selects a row, see
   assets/js/services-shortcuts.js) and a full-width image band.
   ========================================================================== */
.page-services-shortcuts {
  --on-80: color-mix(in srgb, var(--text-on-contrast) 80%, transparent);
  --on-75: color-mix(in srgb, var(--text-on-contrast) 75%, transparent);
  --on-rule: color-mix(in srgb, var(--text-on-contrast) 16%, transparent);
  --on-key: color-mix(in srgb, var(--text-on-contrast) 30%, transparent);
  --key-face: color-mix(in srgb, var(--text-on-contrast) 9%, var(--contrast));
}
.page-services-shortcuts .page-title__title { font-size: 208px; }

/* Keycap rows */
.page-services-shortcuts .key-rows { padding: var(--space-96) 0 var(--space-128); }
.page-services-shortcuts .key-head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-24); margin-bottom: var(--space-32); }
.page-services-shortcuts .key-head__title { margin: 0; color: var(--on-75); }
.page-services-shortcuts .key-head__hint { margin: 0; font-family: var(--font-mono); font-size: 13px; color: var(--on-75); }
.page-services-shortcuts .key-head__hint kbd { display: inline-block; min-width: 24px; margin: 0 2px; padding: 2px 6px 3px; border: 1px solid var(--on-key); border-bottom-width: 2px; border-radius: var(--radius); background: var(--key-face); color: var(--text-on-contrast); font-family: var(--font-mono); font-size: 12px; text-align: center; box-shadow: none; }
.page-services-shortcuts .key-list { list-style: none; margin: 0; padding: 0; border-bottom: 1px solid var(--on-rule); }
.page-services-shortcuts .key-row {
  display: flex; align-items: center; gap: var(--space-32);
  position: relative;
  padding: 32px 0; border-top: 1px solid var(--on-rule);
  color: var(--text-on-contrast);
}
/* Selected / hovered row: a faint ground slides in behind it. */
.page-services-shortcuts .key-row::before { content: ""; position: absolute; inset: 0 calc(var(--gutter) * -1); z-index: -1; background: color-mix(in srgb, var(--text-on-contrast) 6%, transparent); opacity: 0; transition: opacity .3s ease; }
.page-services-shortcuts .key-list > li { position: relative; z-index: 0; }
.page-services-shortcuts .key-row:hover::before, .page-services-shortcuts .key-row.is-active::before { opacity: 1; }
.page-services-shortcuts .key-row__go { position: absolute; right: 0; top: 50%; font-family: var(--font-mono); font-size: 20px; line-height: 1; opacity: 0; transform: translate(-10px, -50%); transition: opacity .3s ease, transform .35s ease; }
.page-services-shortcuts .key-row:hover .key-row__time, .page-services-shortcuts .key-row.is-active .key-row__time { transform: translateX(-40px); }
.page-services-shortcuts .key-row:hover .key-row__go, .page-services-shortcuts .key-row.is-active .key-row__go { opacity: 1; transform: translate(0, -50%); }
.page-services-shortcuts .key-row:hover,
.page-services-shortcuts .key-row:focus-visible { color: var(--text-on-contrast); }
.page-services-shortcuts .key-row:focus-visible { outline: 2px solid var(--text-on-contrast); outline-offset: 4px; }

/* The keycap: 1px sides, 3px bottom edge; it sinks when pressed. */
.page-services-shortcuts .keycap {
  flex: none;
  min-width: 52px; text-align: center;
  padding: 12px 16px 12px;
  border: 1px solid var(--on-key);
  border-bottom-width: 3px;
  border-radius: var(--radius);
  background: var(--key-face);
  color: var(--text-on-contrast);
  font-family: var(--font-mono); font-weight: 500; font-size: 18px; line-height: normal;
  box-shadow: none;
  transition: transform .12s ease, border-bottom-width .12s ease, background-color .2s ease;
}
.page-services-shortcuts .key-row__name { flex: 1 1 0; min-width: 0; font-size: 72px; line-height: normal; letter-spacing: 0; transition: transform .35s ease; }
.page-services-shortcuts .key-row__text { flex: 0 0 380px; font-weight: 400; font-size: 16px; line-height: 1.5; color: var(--on-80); }
.page-services-shortcuts .key-row__time { flex: 0 0 110px; text-align: right; font-family: var(--font-mono); font-size: 13px; color: var(--on-75); transition: transform .35s ease; }

.page-services-shortcuts .key-row:hover .key-row__name,
.page-services-shortcuts .key-row.is-active .key-row__name { transform: translateX(12px); }
.page-services-shortcuts .key-row.is-pressed .keycap { transform: translateY(2px); border-bottom-width: 1px; padding-bottom: 16px; }
.page-services-shortcuts .key-row.is-active .keycap { background: var(--text-on-contrast); color: var(--contrast); }

/* Image band — sits flush between the keycap band and the footer */
.page-services-shortcuts .key-image { background: var(--contrast); color: var(--text-on-contrast); padding-bottom: var(--space-48); }
.page-services-shortcuts .key-image__frame { height: 640px; overflow: hidden; }
.page-services-shortcuts .key-image__frame img { width: 100%; height: 100%; object-fit: cover; }
.page-services-shortcuts .key-image__caption { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-24); padding-top: var(--space-24); }
.page-services-shortcuts .key-image__caption p { max-width: 560px; margin: 0; font-weight: 400; font-size: 17px; line-height: 1.5; color: var(--on-80); }
.page-services-shortcuts .key-image__caption span { flex: none; font-family: var(--font-mono); font-size: 13px; color: var(--on-75); }
/* The dark end band follows directly: a rule separates it from the caption. */
.page-services-shortcuts .key-image + .page-end { border-top: 1px solid var(--on-rule); }

/* Responsive */
@media (max-width: 1199.98px) {
  .page-services-shortcuts .page-title__title { font-size: 160px; }
  .page-services-shortcuts .key-row__name { font-size: 60px; }
  .page-services-shortcuts .key-row__text { flex-basis: 300px; }
}
@media (max-width: 1023.98px) {
  .page-services-shortcuts .key-rows { padding: var(--space-64) 0 var(--space-96); }
  .page-services-shortcuts .key-row { flex-wrap: wrap; gap: var(--space-16) var(--space-24); padding: 32px 0; }
  .page-services-shortcuts .key-row__name { font-size: 56px; }
  .page-services-shortcuts .key-row__text { flex: 1 1 0; }
  .page-services-shortcuts .key-row__time { flex: none; }
  .page-services-shortcuts .key-row__text { order: 3; }
  .page-services-shortcuts .key-row__time { order: 4; }
  .page-services-shortcuts .key-row__name { flex-basis: calc(100% - 100px); }
  .page-services-shortcuts .key-head__hint { display: none; }
  .page-services-shortcuts .key-row__go { display: none; }
  .page-services-shortcuts .key-row:hover .key-row__time, .page-services-shortcuts .key-row.is-active .key-row__time { transform: none; }
  .page-services-shortcuts .key-image__frame { height: 420px; }
}
@media (max-width: 575.98px) {
  .page-services-shortcuts .page-title__title { font-size: 80px; }
  .page-services-shortcuts .key-row { flex-direction: column; align-items: flex-start; gap: var(--space-16); }
  .page-services-shortcuts .key-row__name { flex-basis: auto; font-size: 40px; }
  .page-services-shortcuts .key-row__time { align-self: flex-end; }
  .page-services-shortcuts .key-image__frame { height: 280px; }
  .page-services-shortcuts .key-image__caption { flex-direction: column; gap: var(--space-8); }
}

/* ==========================================================================
   25. Services — Elements (light/services-elements.html)
   Twelve services as a table of elements. Dark tiles (.element--core) are
   where most projects start; each tile reveals a one-line description on
   hover or keyboard focus.
   ========================================================================== */
.page-services-elements {
  --tile: var(--base);            /* "added later" tile */
  --tile-core: var(--contrast);   /* "most projects start here" tile */
  --tile-core-text: var(--text-on-contrast);
}
/* Dark set: the "start here" tiles turn light so the two states stay distinct. */
[data-bs-theme="dark"] .page-services-elements { --tile: var(--surface-alt); --tile-core: #f2efe9; --tile-core-text: #111111; }

/* Title band: the one-word title is set a touch smaller than the 240 default
   so the lead keeps a comfortable column beside it. */
@media (min-width: 1200px) {
  .page-services-elements .page-title__title { font-size: 229px; }
}

/* 25.1 Element table ------------------------------------------------------- */
.page-services-elements .elements { padding: var(--space-96) 0 var(--space-128); }
.page-services-elements .element-table {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: var(--space-8);
  margin: 0;
  padding: 0;
  list-style: none;
}
.page-services-elements .element-table > li { display: flex; }
.page-services-elements .element {
  position: relative;
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-8);
  padding: var(--space-16) 20px 20px;
  border-radius: var(--radius);
  background: var(--tile);
  color: var(--text-primary);
  overflow: hidden;
  transition: transform .3s ease;
}
.page-services-elements .element:hover { color: var(--text-primary); transform: translateY(-4px); }
.page-services-elements .element:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 3px; }
.page-services-elements .element__num {
  font-family: var(--font-mono);
  font-size: 13px;
  line-height: 1.3;
  color: color-mix(in srgb, currentColor 75%, transparent);
}
.page-services-elements .element__symbol {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 96px;
  line-height: .9;
}
.page-services-elements .element__name {
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: 12px;
  line-height: 1.3;
}
/* Description layer: sits over the symbol, same ground as the tile. */
.page-services-elements .element__info {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: flex-end;
  padding: 20px;
  background: inherit;
  font-size: 15px;
  font-weight: 400;
  line-height: 1.4;
  opacity: 0;
  transition: opacity .25s ease;
}
.page-services-elements .element:hover .element__info,
.page-services-elements .element:focus-visible .element__info { opacity: 1; }

.page-services-elements .element--core,
.page-services-elements .element--core:hover { background: var(--tile-core); color: var(--tile-core-text); }
.page-services-elements .element--core:focus-visible { outline-color: var(--tile-core); }

/* 25.2 Legend ---------------------------------------------------------------- */
.page-services-elements .element-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px var(--space-32);
  margin: 0;
  padding: var(--space-32) 0 0;
  list-style: none;
  font-family: var(--font-mono);
  font-size: 13px;
  line-height: 1.3;
  color: color-mix(in srgb, var(--text-primary) 75%, transparent);
}
.page-services-elements .element-legend__core { color: var(--text-primary); }

/* 25.3 Compounds ----------------------------------------------------------- */
.page-services-elements .compounds { padding: var(--space-128) 0; }
.page-services-elements .compounds__head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-48); margin-bottom: var(--space-48); }
.page-services-elements .compounds__title { font-size: 96px; }
.page-services-elements .compounds__text { max-width: 420px; margin: 0; font-weight: 400; font-size: 17px; line-height: 1.5; color: color-mix(in srgb, var(--text-primary) 85%, transparent); }
.page-services-elements .compound-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-24); }
.page-services-elements .compound {
  display: flex; flex-direction: column; gap: var(--space-16);
  padding: var(--space-32) var(--space-24) var(--space-24);
  border: 1px solid color-mix(in srgb, var(--text-primary) 18%, transparent);
  border-radius: var(--radius);
  color: var(--text-primary);
  transition: border-color .3s ease, background-color .3s ease;
}
.page-services-elements .compound:hover { color: var(--text-primary); border-color: var(--text-primary); }
.page-services-elements .compound:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 3px; }
.page-services-elements .compound--dark { background: var(--tile-core); border-color: var(--tile-core); color: var(--tile-core-text); }
.page-services-elements .compound--dark:hover { color: var(--tile-core-text); }
.page-services-elements .compound__formula { display: flex; gap: 6px; margin: 0 0 var(--space-16); padding: 0; list-style: none; }
.page-services-elements .compound__formula li {
  display: flex; align-items: flex-end; width: 72px; height: 72px; padding: 8px 10px;
  border-radius: var(--radius);
  background: color-mix(in srgb, currentColor 8%, transparent);
  font-family: var(--font-display); font-weight: 900; font-size: 40px; line-height: .9;
  transition: transform .35s cubic-bezier(.2,.7,.2,1);
}
.page-services-elements .compound:hover .compound__formula li:nth-child(1) { transform: translateY(-6px); }
.page-services-elements .compound:hover .compound__formula li:nth-child(2) { transform: translateY(-6px); transition-delay: .05s; }
.page-services-elements .compound:hover .compound__formula li:nth-child(3) { transform: translateY(-6px); transition-delay: .1s; }
.page-services-elements .compound__formula li + li { position: relative; margin-left: 16px; }
.page-services-elements .compound__formula li + li::before { content: "+"; position: absolute; left: -18px; top: 50%; width: 18px; transform: translateY(-50%); text-align: center; font-family: var(--font-mono); font-weight: 400; font-size: 14px; opacity: .6; }
.page-services-elements .compound__name { margin: 0; font-weight: 400; font-size: 28px; line-height: 1.15; letter-spacing: -0.02em; }
.page-services-elements .compound__text { margin: 0; font-weight: 400; font-size: 16px; line-height: 1.5; opacity: .85; }
.page-services-elements .compound__meta { display: flex; justify-content: space-between; gap: var(--space-16); margin: auto 0 0; padding-top: var(--space-16); border-top: 1px solid color-mix(in srgb, currentColor 20%, transparent); font-family: var(--font-mono); font-size: 13px; }

/* 25.4 Responsive ------------------------------------------------------------ */
@media (max-width: 1199.98px) {
  .page-services-elements .element-table { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .page-services-elements .compounds__title { font-size: 72px; }
}
@media (max-width: 1023.98px) {
  .page-services-elements .elements { padding: var(--space-64) 0 80px; }
  .page-services-elements .element__symbol { font-size: 58px; }
  .page-services-elements .compounds { padding: var(--space-96) 0; }
  .page-services-elements .compounds__head { flex-direction: column; align-items: flex-start; gap: var(--space-24); }
  .page-services-elements .compound-grid { grid-template-columns: minmax(0, 1fr); }
}
/* Touch screens have no hover: the description sits under the name instead. */
@media (hover: none) {
  .page-services-elements .element__info { position: static; inset: auto; padding: 0; background: none; opacity: .8; font-size: 13px; }
  .page-services-elements .element:hover { transform: none; }
}
@media (max-width: 575.98px) {
  .page-services-elements .elements { padding: 56px 0 64px; }
  .page-services-elements .element-table { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-services-elements .element__symbol { font-size: 38px; }
  .page-services-elements .element__info { font-size: 13px; padding: 16px; }
  .page-services-elements .element-legend { flex-direction: column; gap: 16px; }
  .page-services-elements .compounds { padding: 64px 0; }
  .page-services-elements .compounds__title { font-size: 56px; }
  .page-services-elements .compound__formula li { width: 60px; height: 60px; font-size: 34px; }
  .page-services-elements .compound__name { font-size: 24px; }
}

/* ==========================================================================
   26. Services — Budget (light/services-budget.html)
   A year-one budget as one bar of four segments. Each segment's width is
   its share (--share, set by assets/js/services-budget.js from data-share);
   the edges between segments are draggable handles.
   ========================================================================== */
.page-services-budget {
  --seg-1: var(--contrast);  --seg-1-text: var(--text-on-contrast);
  --seg-2: #3a3634;          --seg-2-text: #fcf7f3;
  --seg-3: #bfb6aa;          --seg-3-text: #111111;
  --seg-4: #e0d6c9;          --seg-4-text: #111111;
}
[data-bs-theme="dark"] .page-services-budget {
  --seg-2-text: #f2efe9;
  --seg-4: #201f1d;          --seg-4-text: #f2efe9;
}

/* 26.1 Bar -------------------------------------------------------------------- */
.page-services-budget .budget-mix { padding: var(--space-96) 0 var(--space-128); }
.page-services-budget .budget { display: flex; flex-direction: column; gap: var(--space-40); }
.page-services-budget .budget-controls { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-32); flex-wrap: wrap; }
.page-services-budget .budget-total { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: baseline; column-gap: var(--space-24); row-gap: var(--space-16); width: min(100%, 560px); }
.page-services-budget .budget-total__label { font-family: var(--font-mono); font-size: 13px; color: color-mix(in srgb, var(--text-primary) 75%, transparent); }
.page-services-budget .budget-total__value { font-family: var(--font-mono); font-weight: 200; font-size: 72px; line-height: .9; letter-spacing: -0.04em; grid-row: 2; grid-column: 1 / -1; }
/* Range: 2px track, filled up to the thumb (--pos is set by the script). */
.page-services-budget .budget-total__range {
  grid-column: 1 / -1; width: 100%; height: 24px; margin: 0; background: transparent; cursor: pointer;
  -webkit-appearance: none; appearance: none;
  --pos: 22%;
}
.page-services-budget .budget-total__range::-webkit-slider-runnable-track { height: 2px; background: linear-gradient(var(--text-primary), var(--text-primary)) 0 0 / var(--pos) 100% no-repeat, color-mix(in srgb, var(--text-primary) 20%, transparent); }
.page-services-budget .budget-total__range::-moz-range-track { height: 2px; background: color-mix(in srgb, var(--text-primary) 20%, transparent); }
.page-services-budget .budget-total__range::-moz-range-progress { height: 2px; background: var(--text-primary); }
.page-services-budget .budget-total__range::-webkit-slider-thumb { -webkit-appearance: none; width: 12px; height: 24px; margin-top: -11px; border: 0; border-radius: 2px; background: var(--text-primary); transition: transform .2s ease; }
.page-services-budget .budget-total__range::-moz-range-thumb { width: 12px; height: 24px; border: 0; border-radius: 2px; background: var(--text-primary); }
.page-services-budget .budget-total__range:hover::-webkit-slider-thumb { transform: scaleX(1.4); }
.page-services-budget .budget-total__range:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 6px; }
.page-services-budget .budget-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.page-services-budget .budget-actions .btn-m:disabled { opacity: .4; pointer-events: none; }
.page-services-budget .budget-hint { display: flex; align-items: center; gap: 10px; margin: 0 0 calc(var(--space-24) * -1); font-family: var(--font-mono); font-size: 12px; color: color-mix(in srgb, var(--text-primary) 75%, transparent); }
.page-services-budget .budget-hint__grip { width: 4px; height: 16px; border-radius: 2px; background: var(--text-primary); }

.page-services-budget .budget-bar { display: flex; height: 200px; }
.page-services-budget .budget-seg {
  --share: 25;
  flex: var(--share) 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 20px var(--space-24);
  border-radius: var(--radius);
  overflow: hidden;
  white-space: nowrap;
  transition: flex-grow .15s ease-out;
}
/* Without the script the segments still sit 4px apart. */
.page-services-budget .budget-seg + .budget-seg { margin-left: 4px; }
.page-services-budget .budget-seg__name { font-weight: 500; font-size: 22px; line-height: 1.3; }
/* The share shrinks with its segment so a thin slice still shows its number. */
.page-services-budget .budget-seg__pct { font-family: var(--font-mono); font-weight: 200; font-size: clamp(16px, calc(var(--w, 200px) * .3), 64px); line-height: .9; letter-spacing: -0.04em; }
.page-services-budget .budget-seg__pct [data-pct] { font-variant-numeric: tabular-nums; }
.page-services-budget .budget-seg__pct small { margin-left: .08em; font-size: .45em; vertical-align: .9em; }
.page-services-budget .budget-seg--identity { background: var(--seg-1); color: var(--seg-1-text); }
.page-services-budget .budget-seg--website  { background: var(--seg-2); color: var(--seg-2-text); }
.page-services-budget .budget-seg--content  { background: var(--seg-3); color: var(--seg-3-text); }
.page-services-budget .budget-seg--campaign { background: var(--seg-4); color: var(--seg-4-text); }

/* Handle: 4px wide (the gap), with a wider invisible grab area and a grip
   line that shows on hover, focus and while dragging. */
.page-services-budget .budget-handle {
  position: relative;
  flex: 0 0 4px;
  cursor: col-resize;
  touch-action: none;
  outline: none;
  z-index: 1;
}
.page-services-budget .budget-handle::before { content: ""; position: absolute; inset: 0 -10px; }
.page-services-budget .budget-handle::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 4px;
  height: 56px;
  border-radius: 2px;
  background: var(--text-primary);
  box-shadow: 0 0 0 2px var(--surface);
  transform: translate(-50%, -50%) scaleY(.5);
  opacity: .9;
  transition: opacity .2s ease, transform .2s ease;
}
.page-services-budget .budget-handle:hover::after,
.page-services-budget .budget-handle:focus-visible::after,
.page-services-budget .budget-handle.is-dragging::after { opacity: 1; transform: translate(-50%, -50%) scaleY(1); }
.page-services-budget .budget-bar:has(.is-dragging) .budget-seg { transition: none; }

/* 26.2 Notes ------------------------------------------------------------------ */
.page-services-budget .budget-notes { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-24) var(--space-32); }
.page-services-budget .budget-note {
  display: flex;
  flex-direction: column;
  gap: var(--space-8);
  padding-top: 20px;
  border-top: 1px solid color-mix(in srgb, var(--text-primary) 25%, transparent);
}
.page-services-budget .budget-note__swatch { display: inline-block; width: 10px; height: 10px; margin-right: 8px; border-radius: 2px; vertical-align: 0; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--text-primary) 25%, transparent); }
.page-services-budget .budget-note:nth-child(1) .budget-note__swatch { background: var(--seg-1); }
.page-services-budget .budget-note:nth-child(2) .budget-note__swatch { background: var(--seg-2); }
.page-services-budget .budget-note:nth-child(3) .budget-note__swatch { background: var(--seg-3); }
.page-services-budget .budget-note:nth-child(4) .budget-note__swatch { background: var(--seg-4); }
.page-services-budget .budget-note__title { margin: 0; font-family: var(--font-mono); font-weight: 500; font-size: 13px; line-height: 1.3; }
.page-services-budget .budget-note__amount { font-weight: 400; color: color-mix(in srgb, var(--text-primary) 75%, transparent); }
.page-services-budget .budget-note p { margin: 0; font-size: 17px; line-height: 1.45; color: color-mix(in srgb, var(--text-primary) 85%, transparent); }

/* 26.3 Responsive ------------------------------------------------------------- */
@media (max-width: 1023.98px) {
  .page-services-budget .budget-mix { padding: var(--space-64) 0 80px; }
  .page-services-budget .budget-seg { min-width: 0; padding: 20px var(--space-16); }
  .page-services-budget .budget-seg__pct { font-size: clamp(16px, calc(var(--w, 200px) * .3), 40px); }
  .page-services-budget .budget-bar { height: 160px; }
  .page-services-budget .budget-seg__name { font-size: 17px; }
  .page-services-budget .budget-notes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
/* Phone: the bar stays horizontal and draggable; names move to the notes
   (each note carries its segment's colour swatch). */
@media (max-width: 575.98px) {
  .page-services-budget .budget-mix { padding: 56px 0 64px; }
  .page-services-budget .budget-total__value { font-size: 56px; }
  .page-services-budget .budget-actions, .page-services-budget .budget-actions .btn-m { width: 100%; }
  .page-services-budget .budget-bar { height: 120px; }
  .page-services-budget .budget-seg { min-width: 0; padding: 12px 10px; }
  .page-services-budget .budget-seg__name { display: none; }
  .page-services-budget .budget-seg__pct { margin-top: auto; font-size: clamp(12px, calc(var(--w, 200px) * .3), 24px); }
  .page-services-budget .budget-handle::before { inset: 0 -12px; }
  .page-services-budget .budget-notes { grid-template-columns: minmax(0, 1fr); gap: var(--space-16); }
  .page-services-budget .budget-note p { font-size: 16px; }
}

/* ==========================================================================
   27. Services — Blocks / tabs (light/services-tabs.html)
   Four equal tabs above one dark panel. Behaviour is Bootstrap's tab
   plugin (data-bs-toggle="tab"); no page script needed.
   ========================================================================== */
.page-services-tabs {
  --tab: var(--base);
  --tab-active: var(--contrast);
  --panel: var(--contrast);
  --panel-text: var(--text-on-contrast);
}

/* 27.1 Tab bar ---------------------------------------------------------------- */
.page-services-tabs .blocks { padding: var(--space-96) 0 var(--space-128); }
.page-services-tabs .block-tabs {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-8);
  margin: 0 0 var(--space-16);
  padding: 0;
  list-style: none;
}
.page-services-tabs .block-tabs__item { display: flex; }
.page-services-tabs .block-tab {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-16);
  height: 76px;
  padding: 0 var(--space-24);
  border: 0;
  border-radius: var(--radius);
  background: var(--tab);
  color: var(--text-primary);
  text-align: left;
  transition: background-color .25s ease, color .25s ease;
}
.page-services-tabs .block-tab__num {
  font-family: var(--font-mono);
  font-size: 13px;
  line-height: 1.3;
  color: color-mix(in srgb, currentColor 75%, transparent);
}
.page-services-tabs .block-tab__name {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 38px;
  line-height: 1.2;
  text-transform: uppercase;
  white-space: nowrap;
}
.page-services-tabs .block-tab:hover { background: color-mix(in srgb, var(--tab) 92%, var(--text-primary)); }
.page-services-tabs .block-tab:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 3px; }
.page-services-tabs .block-tab.active,
.page-services-tabs .block-tab.active:hover { background: var(--tab-active); color: var(--panel-text); }

/* 27.2 Panel ------------------------------------------------------------------ */
.page-services-tabs .block-panel {
  gap: var(--space-48);
  align-items: center;
  padding: var(--space-40);
  border-radius: var(--radius);
  background: var(--panel);
  color: var(--panel-text);
}
.page-services-tabs .block-panel.active { display: flex; }
.page-services-tabs .block-panel:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 3px; }
.page-services-tabs .block-panel__copy { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 20px; }
.page-services-tabs .block-panel__lead { margin: 0; font-weight: 300; font-size: 36px; line-height: 1.15; letter-spacing: -0.02em; }
.page-services-tabs .block-panel__list { display: flex; flex-direction: column; gap: 20px; margin: 0; padding: 0; list-style: none; }
.page-services-tabs .block-panel__list li {
  display: flex;
  gap: var(--space-16);
  padding-top: 12px;
  border-top: 1px solid color-mix(in srgb, var(--panel-text) 20%, transparent);
  font-weight: 400;
  font-size: 17px;
  line-height: 1.3;
}
.page-services-tabs .block-panel__list li span { font-family: var(--font-mono); font-size: 14px; }
.page-services-tabs .block-panel__media { flex: 0 0 420px; aspect-ratio: 1; border-radius: var(--radius); overflow: hidden; }
.page-services-tabs .block-panel__media img { width: 100%; height: 100%; object-fit: cover; }

/* Panels fade and rise a little when a tab opens. */
.page-services-tabs .block-panel.fade { transition: opacity .35s ease; }
.page-services-tabs .block-panel.active .block-panel__lead,
.page-services-tabs .block-panel.active .block-panel__list li { animation: blocks-rise .6s cubic-bezier(.2,.7,.2,1) both; }
.page-services-tabs .block-panel.active .block-panel__list li:nth-child(1) { animation-delay: .08s; }
.page-services-tabs .block-panel.active .block-panel__list li:nth-child(2) { animation-delay: .14s; }
.page-services-tabs .block-panel.active .block-panel__list li:nth-child(3) { animation-delay: .2s; }
.page-services-tabs .block-panel.active .block-panel__list li:nth-child(4) { animation-delay: .26s; }
.page-services-tabs .block-panel.active .block-panel__media img { animation: blocks-zoom 1s cubic-bezier(.2,.7,.2,1) both; }
@keyframes blocks-rise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@keyframes blocks-zoom { from { transform: scale(1.08); } to { transform: none; } }

/* 27.3 Side by side ---------------------------------------------------------- */
.page-services-tabs .blocks-compare { padding: var(--space-128) 0; }
.page-services-tabs .blocks-compare__head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-48); margin-bottom: var(--space-48); }
.page-services-tabs .blocks-compare__title { font-size: 96px; }
.page-services-tabs .blocks-compare__text { max-width: 440px; margin: 0; font-weight: 400; font-size: 17px; line-height: 1.5; color: color-mix(in srgb, var(--text-primary) 85%, transparent); }
.page-services-tabs .blocks-compare__frame { overflow-x: auto; }
.page-services-tabs .blocks-compare__frame:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 4px; }
.page-services-tabs .blocks-table { width: 100%; min-width: 720px; border-collapse: collapse; }
.page-services-tabs .blocks-table th, .page-services-tabs .blocks-table td { padding: 16px 20px; border-top: 1px solid color-mix(in srgb, var(--text-primary) 18%, transparent); text-align: left; vertical-align: top; }
.page-services-tabs .blocks-table tbody tr:last-child > * { border-bottom: 1px solid color-mix(in srgb, var(--text-primary) 18%, transparent); }
.page-services-tabs .blocks-table thead th { padding-top: 0; border-top: 0; font-family: var(--font-display); font-weight: 900; font-size: 32px; line-height: 1; text-transform: uppercase; }
.page-services-tabs .blocks-table tbody th { width: 20%; padding-left: 0; font-family: var(--font-mono); font-weight: 400; font-size: 13px; color: color-mix(in srgb, var(--text-primary) 75%, transparent); }
.page-services-tabs .blocks-table td { font-weight: 400; font-size: 17px; line-height: 1.4; }
.page-services-tabs .blocks-table tbody tr { transition: background-color .2s ease; }
.page-services-tabs .blocks-table tbody tr:hover { background: color-mix(in srgb, var(--text-primary) 4%, transparent); }
/* The block the page recommends (Voice) is set on the contrast ground. */
.page-services-tabs .blocks-table .is-lead { background: var(--contrast); color: var(--text-on-contrast); border-top-color: color-mix(in srgb, var(--text-on-contrast) 18%, transparent); }
.page-services-tabs .blocks-table thead .is-lead { padding-top: 20px; border-radius: var(--radius) var(--radius) 0 0; }
.page-services-tabs .blocks-table tbody tr:last-child .is-lead { border-radius: 0 0 var(--radius) var(--radius); }

/* 27.4 Responsive ------------------------------------------------------------- */
@media (max-width: 1199.98px) {
  .page-services-tabs .blocks-compare__title { font-size: 72px; }
  .page-services-tabs .block-tab__name { font-size: 30px; }
  .page-services-tabs .block-panel__media { flex-basis: 340px; }
}
@media (max-width: 1023.98px) {
  .page-services-tabs .block-tab { flex-direction: column; align-items: flex-start; justify-content: center; gap: 4px; }
  .page-services-tabs .block-tab__name { font-size: 26px; line-height: 1.1; }
  .page-services-tabs .block-panel.active { flex-direction: column; align-items: stretch; gap: 32px; }
  .page-services-tabs .block-panel__media { flex-basis: auto; }
  .page-services-tabs .block-panel__lead { font-size: 29px; }
  .page-services-tabs .blocks-compare { padding: var(--space-96) 0; }
  .page-services-tabs .blocks-compare__head { flex-direction: column; align-items: flex-start; gap: var(--space-24); }
  .page-services-tabs .blocks-table { min-width: 640px; }
  .page-services-tabs .blocks-table th, .page-services-tabs .blocks-table td { padding: 16px 12px; }
  .page-services-tabs .blocks-table td { font-size: 15px; }
}
@media (max-width: 575.98px) {
  .page-services-tabs .blocks { padding: 64px 0 96px; }
  .page-services-tabs .block-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-services-tabs .block-tab { padding: 0 20px; }
  .page-services-tabs .block-tab__name { font-size: 24px; }
  .page-services-tabs .block-panel { padding: var(--space-24); }
  .page-services-tabs .block-panel__lead { font-size: 22px; }
  .page-services-tabs .block-panel__list li { font-size: 16px; }
  .page-services-tabs .blocks-compare { padding: 64px 0; }
  .page-services-tabs .blocks-compare__title { font-size: 56px; }
  .page-services-tabs .blocks-table thead th { font-size: 24px; }
  .page-services-tabs .blocks-table td { font-size: 15px; }
}

/* ==========================================================================
   28. Service details — Brand identity (light/service-details.html)
   Title with key facts, one wide photo, what is included, the four
   checkpoints of the process, and related services.
   ========================================================================== */
.page-service-details { --rule: color-mix(in srgb, var(--text-primary) 18%, transparent); }

/* 28.1 Title band: 200px title and a row of key facts ----------------------- */
@media (min-width: 1200px) {
  .page-service-details .page-title { padding-bottom: 64px; }
  .page-service-details .page-title__inner { gap: 56px; }
  .page-service-details .service-title { font-size: 200px; }
}
.page-service-details .page-title__crumbs span[aria-current] { color: var(--text-primary); }
.page-service-details .service-meta {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-24);
  margin: 0;
  padding-top: var(--space-24);
  border-top: 1px solid color-mix(in srgb, var(--text-primary) 20%, transparent);
}
.page-service-details .service-meta div { display: flex; flex-direction: column; gap: 6px; }
.page-service-details .service-meta dt { font-family: var(--font-mono); font-weight: 400; font-size: 12px; line-height: 1.3; color: color-mix(in srgb, var(--text-primary) 70%, transparent); }
.page-service-details .service-meta dd { margin: 0; font-weight: 500; font-size: 22px; line-height: 1.3; }

/* 28.2 Service image ----------------------------------------------------------- */
.page-service-details .service-image { padding-bottom: var(--space-96); }
.page-service-details .service-image__media { aspect-ratio: 1320 / 560; border-radius: var(--radius); overflow: hidden; }
.page-service-details .service-image__media img { width: 100%; height: 100%; object-fit: cover; }

/* 28.3 Included ---------------------------------------------------------------- */
.page-service-details .service-included { padding: var(--space-128) 0; }
.page-service-details .included-head { display: flex; gap: var(--space-64); margin-bottom: var(--space-48); }
.page-service-details .included-head .t-label { flex: 1 1 0; color: color-mix(in srgb, var(--text-primary) 70%, transparent); }
.page-service-details .included-head__title { flex: 0 1 1092px; font-size: 44px; line-height: 1.1; letter-spacing: -0.045em; }
.page-service-details .included-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 var(--space-24); }
.page-service-details .included-col { margin: 0; padding: 0; list-style: none; }
.page-service-details .included-item { display: flex; flex-direction: column; gap: var(--space-8); padding: var(--space-24) 0; border-top: 1px solid var(--rule); }
.page-service-details .included-item h3 { margin: 0; font-family: var(--font-display); font-weight: 900; font-size: 36px; line-height: 1.2; text-transform: uppercase; }
.page-service-details .included-item p { margin: 0; font-weight: 400; font-size: 16px; line-height: 1.3; color: color-mix(in srgb, var(--text-primary) 85%, transparent); }

/* 28.4 Process (dark band) ----------------------------------------------------- */
.page-service-details .service-process { padding: var(--space-128) 0; }
.page-service-details .process-title { font-size: 110px; line-height: .85; margin-bottom: var(--space-48); }
.page-service-details .checkpoints { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-24); margin: 0; padding: 0; list-style: none; }
.page-service-details .checkpoint { display: flex; flex-direction: column; gap: 10px; padding-top: 20px; border-top: 1px solid rgba(252, 247, 243, 0.3); }
.page-service-details .checkpoint__weeks { font-family: var(--font-mono); font-size: 12px; line-height: 1.3; color: color-mix(in srgb, var(--text-on-contrast) 75%, transparent); }
.page-service-details .checkpoint__name { margin: 0; font-family: var(--font-display); font-weight: 900; font-size: 44px; line-height: 1.2; text-transform: uppercase; }
.page-service-details .checkpoint p { margin: 0; font-weight: 400; font-size: 16px; line-height: 1.45; color: color-mix(in srgb, var(--text-on-contrast) 85%, transparent); }

/* 28.5 Related services -------------------------------------------------------- */
.page-service-details .related-services { padding: var(--space-128) 0; }
.page-service-details .related-title { font-size: 90px; line-height: .85; margin-bottom: var(--space-32); }
.page-service-details .related-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-24); }
.page-service-details .related-card { display: flex; flex-direction: column; gap: 12px; color: var(--text-primary); }
.page-service-details .related-card__media { display: block; aspect-ratio: 424 / 300; border-radius: var(--radius); overflow: hidden; }
.page-service-details .related-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2, .7, .2, 1); }
.page-service-details .related-card:hover .related-card__media img { transform: scale(1.04); }
.page-service-details .related-card__meta { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; column-gap: var(--space-16); row-gap: 2px; }
.page-service-details .related-card__line { grid-column: 1; grid-row: 2; font-style: normal; font-weight: 400; font-size: 15px; color: color-mix(in srgb, var(--text-primary) 75%, transparent); }
.page-service-details .related-card__meta strong { font-weight: 500; font-size: 20px; line-height: 1.3; }
.page-service-details .related-card__meta > span { font-family: var(--font-mono); font-size: 13px; white-space: nowrap; }
.page-service-details .related-card:hover .related-card__meta > span { text-decoration: underline; text-underline-offset: 3px; }
.page-service-details .related-card:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 4px; }

/* 28.6 Questions ---------------------------------------------------------------- */
.page-service-details .service-faq { padding: var(--space-128) 0; }
.page-service-details .service-faq__row { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--space-96); align-items: start; }
.page-service-details .service-faq__head { position: sticky; top: var(--space-40); display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-24); }
.page-service-details .service-faq__head .t-label { color: color-mix(in srgb, var(--text-primary) 70%, transparent); }
.page-service-details .service-faq__title { font-size: 96px; }
.page-service-details .service-faq__list { border-bottom: 1px solid var(--rule); }
.page-service-details .faq-row { border-top: 1px solid var(--rule); }
.page-service-details .faq-row summary { display: flex; align-items: center; gap: var(--space-24); padding: var(--space-24) 0; cursor: pointer; list-style: none; }
.page-service-details .faq-row summary::-webkit-details-marker { display: none; }
.page-service-details .faq-row summary:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 4px; }
.page-service-details .faq-row__q { flex: 1 1 0; font-weight: 400; font-size: 24px; line-height: 1.3; letter-spacing: -0.01em; }
.page-service-details .faq-row__icon { position: relative; flex: none; width: 40px; height: 40px; border: 1px solid var(--rule); border-radius: var(--radius); transition: background-color .25s ease, border-color .25s ease; }
.page-service-details .faq-row__icon::before, .page-service-details .faq-row__icon::after { content: ""; position: absolute; left: 50%; top: 50%; width: 14px; height: 1.5px; background: currentColor; transform: translate(-50%, -50%); transition: transform .3s ease; }
.page-service-details .faq-row__icon::after { transform: translate(-50%, -50%) rotate(90deg); }
.page-service-details .faq-row[open] .faq-row__icon { background: var(--contrast); border-color: var(--contrast); color: var(--text-on-contrast); }
.page-service-details .faq-row[open] .faq-row__icon::after { transform: translate(-50%, -50%) rotate(0deg); }
.page-service-details .faq-row summary:hover .faq-row__icon { border-color: var(--text-primary); }
.page-service-details .faq-row p { max-width: 640px; margin: 0; padding: 0 64px var(--space-32) 0; font-weight: 400; font-size: 17px; line-height: 1.6; color: color-mix(in srgb, var(--text-primary) 85%, transparent); }

/* 28.7 Responsive -------------------------------------------------------------- */
@media (max-width: 1199.98px) {
  .page-service-details .service-title { font-size: 120px; }
  .page-service-details .included-head__title { font-size: 36px; }
  .page-service-details .process-title { font-size: 80px; }
  .page-service-details .service-faq__row { gap: var(--space-48); }
  .page-service-details .service-faq__title { font-size: 72px; }
}
@media (max-width: 1023.98px) {
  .page-service-details .service-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-service-details .service-image { padding-bottom: var(--space-64); }
  .page-service-details .service-included,
  .page-service-details .service-process,
  .page-service-details .related-services { padding: 80px 0; }
  .page-service-details .included-head { flex-direction: column; gap: var(--space-24); }
  .page-service-details .included-head__title { flex-basis: auto; font-size: 31px; }
  .page-service-details .included-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-service-details .process-title { font-size: 66px; }
  .page-service-details .checkpoint__name { font-size: 31px; }
  .page-service-details .related-title { font-size: 54px; }
  .page-service-details .related-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-32) var(--space-16); }
  .page-service-details .related-card__meta { grid-template-columns: minmax(0, 1fr); }
  .page-service-details .related-card__meta > span:not(.related-card__line) { display: none; }
  .page-service-details .service-faq { padding: 80px 0; }
  .page-service-details .service-faq__row { grid-template-columns: minmax(0, 1fr); gap: var(--space-40); }
  .page-service-details .service-faq__head { position: static; }
}
@media (max-width: 575.98px) {
  .page-service-details .service-title { font-size: 76px; }
  .page-service-details .service-meta { gap: var(--space-24) var(--space-16); }
  .page-service-details .service-meta dd { font-size: 19px; }
  .page-service-details .service-image { padding-bottom: 56px; }
  .page-service-details .service-included,
  .page-service-details .service-process,
  .page-service-details .related-services { padding: 64px 0; }
  .page-service-details .included-head__title { font-size: 22px; line-height: 1.25; }
  .page-service-details .included-grid { gap: 0 var(--space-16); }
  .page-service-details .included-item h3 { font-size: 26px; }
  .page-service-details .process-title { font-size: 44px; }
  .page-service-details .checkpoints { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-24) var(--space-16); }
  .page-service-details .checkpoint__name { font-size: 22px; }
  .page-service-details .related-title { font-size: 36px; }
  .page-service-details .related-grid { grid-template-columns: 1fr; }
  .page-service-details .related-card__meta { grid-template-columns: minmax(0, 1fr) auto; }
  .page-service-details .related-card__meta > span:not(.related-card__line) { display: inline; }
  .page-service-details .service-faq { padding: 64px 0; }
  .page-service-details .service-faq__title { font-size: 56px; }
  .page-service-details .faq-row__q { font-size: 19px; }
  .page-service-details .faq-row p { padding: 0 0 var(--space-24); font-size: 16px; }
}

/* ==========================================================================
   30. Work — index (light/work.html, dark/work.html)
   One row per project: year · client · discipline · result. On hover the
   client name swaps to the display face and a preview image follows the
   cursor (assets/js/work.js).
   ========================================================================== */
.page-work .page-title { padding-bottom: 80px; }

.page-work .work-index { padding: var(--space-32) 0 var(--space-128); }
.page-work .work-index__inner { position: relative; }

/* Columns: year 100 · client fills · discipline 300 · result 260 */
.page-work .index-head,
.page-work .index-row { display: flex; align-items: center; gap: var(--space-32); }
.page-work .index-head > :nth-child(1), .page-work .index-row__year { flex: 0 0 100px; }
.page-work .index-head > :nth-child(2), .page-work .index-row__client { flex: 1 1 0; min-width: 0; }
.page-work .index-head > :nth-child(3), .page-work .index-row__disc { flex: 0 0 300px; }
.page-work .index-head > :nth-child(4), .page-work .index-row__result { flex: 0 0 260px; }

.page-work .index-head {
  padding-bottom: var(--space-16);
  font-family: var(--font-mono);
  font-size: 12px;
  color: color-mix(in srgb, var(--text-primary) 70%, transparent);
}
.page-work .index-list { list-style: none; margin: 0; padding: 0; }
.page-work .index-row {
  padding: var(--space-16) 0;
  border-top: 1px solid color-mix(in srgb, var(--text-primary) 15%, transparent);
  color: var(--text-primary);
}
.page-work .index-row { transition: opacity .35s ease; }
.page-work .index-row:hover { color: var(--text-primary); }
/* While a preview is showing, the other rows step back */
.page-work .is-previewing .index-list li:not(:hover) .index-row:not(:focus-visible) { opacity: .38; }
.page-work .index-row__result { display: flex; justify-content: space-between; align-items: center; gap: var(--space-16); }
.page-work .index-row__arrow { order: 2; font-family: var(--font-body); font-size: 22px; line-height: 1; opacity: 0; transform: translateX(-12px); transition: opacity .3s ease, transform .45s cubic-bezier(.2, .7, .2, 1); }
.page-work .index-row:hover .index-row__arrow,
.page-work .index-row:focus-visible .index-row__arrow { opacity: 1; transform: none; }
.page-work .index-row:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 2px; }
.page-work .index-row__year { font-family: var(--font-mono); font-size: 14px; }
.page-work .index-row__disc { font-weight: 400; font-size: 15px; color: color-mix(in srgb, var(--text-primary) 85%, transparent); }
.page-work .index-row__result { font-family: var(--font-mono); font-size: 13px; }

/* Client name: two copies in a fixed-height window. The light one slides
   out and the display one slides in, so the row never changes height. */
.page-work .index-row__client { position: relative; height: 58px; overflow: hidden; }
.page-work .index-row__name {
  display: block;
  height: 58px;
  line-height: 58px;
  font-weight: 300;
  font-size: 34px;
  letter-spacing: -0.01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: transform .45s cubic-bezier(.2, .7, .2, 1);
}
.page-work .index-row__name--hover {
  position: absolute;
  inset: 0 0 auto 0;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 48px;
  letter-spacing: 0;
  text-transform: uppercase;
  transform: translateY(100%);
}
.page-work .index-row:hover .index-row__name,
.page-work .index-row:focus-visible .index-row__name { transform: translateY(-100%); }
.page-work .index-row:hover .index-row__name--hover,
.page-work .index-row:focus-visible .index-row__name--hover { transform: translateY(0); }

/* Hover preview — positioned by work.js through --x / --y */
.page-work .index-preview {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 3;
  width: 200px;
  height: 260px;
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.25);
  pointer-events: none;
  opacity: 0;
  translate: var(--x, 0) var(--y, 0);
  rotate: var(--r, 0deg);
  scale: .9;
  transition: opacity .25s ease, scale .35s cubic-bezier(.2, .7, .2, 1);
}
.page-work .index-preview.is-visible { opacity: 1; scale: 1; }
.page-work .index-preview img { width: 100%; height: 100%; object-fit: cover; }

@media (max-width: 1199.98px) {
  .page-work .index-head > :nth-child(3), .page-work .index-row__disc { flex-basis: 220px; }
  .page-work .index-head > :nth-child(4), .page-work .index-row__result { flex-basis: 200px; }
}
/* Tablet: two-by-two grid — year | client, discipline | result */
@media (max-width: 1023.98px) {
  .page-work .page-title { padding-bottom: var(--space-64); }
  .page-work .index-head,
  .page-work .index-row { display: grid; grid-template-columns: 160px minmax(0, 1fr); column-gap: var(--space-24); row-gap: var(--space-8); }
  .page-work .index-row { padding: var(--space-24) 0; }
  .page-work .index-row__client, .page-work .index-row__name { height: 44px; line-height: 44px; }
  .page-work .index-row__name { font-size: 28px; }
  .page-work .index-row__name--hover { font-size: 38px; }
  .page-work .index-preview { display: none; }
  .page-work .index-row__arrow { display: none; }
}
/* Phone: one column, head row hidden (each value reads on its own) */
@media (max-width: 575.98px) {
  .page-work .index-head { display: none; }
  .page-work .index-row { grid-template-columns: minmax(0, 1fr); row-gap: 6px; }
  .page-work .index-row__client, .page-work .index-row__name { height: 36px; line-height: 36px; }
  .page-work .index-row__name { font-size: 24px; }
  .page-work .index-row__name--hover { font-size: 30px; }
}

/* ==========================================================================
   31. Work — contact sheet (light/work-contact-sheet.html)
   Numbered frames on the dark band, four per row. The round loupe is
   driven by assets/js/work-contact-sheet.js.
   ========================================================================== */
.page-work-contact-sheet {
  --proof-code: #f4b6c9;               /* frame numbers + loupe ring */
}
.page-work-contact-sheet .page-title { padding-bottom: 80px; }

.page-work-contact-sheet .proof-band { padding: var(--space-96) 0 var(--space-128); }
.page-work-contact-sheet .proof-sheet { position: relative; }
.page-work-contact-sheet .proof-sheet__frames {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-40) var(--space-24);
}
.page-work-contact-sheet .proof__link { display: flex; flex-direction: column; gap: 10px; color: var(--text-on-contrast); }
.page-work-contact-sheet .proof__link:hover { color: var(--text-on-contrast); }
.page-work-contact-sheet .proof__link:focus-visible { outline: 2px solid var(--proof-code); outline-offset: 4px; }
.page-work-contact-sheet .proof__media {
  display: block;
  aspect-ratio: 312 / 360;
  border: 1px solid color-mix(in srgb, var(--text-on-contrast) 30%, transparent);
  overflow: hidden;
}
.page-work-contact-sheet .proof__media img { width: 100%; height: 100%; object-fit: cover; }
.page-work-contact-sheet .proof__caption { display: flex; align-items: baseline; font-weight: 400; font-size: 15px; line-height: 1.3; }
.page-work-contact-sheet .proof__caption b { flex: 0 0 48px; font-family: var(--font-mono); font-weight: 500; font-size: 12px; color: var(--proof-code); }

/* Loupe: a 240px lens holding a magnified copy of the frame below it */
.page-work-contact-sheet .loupe {
  --size: 240px;
  position: absolute;
  left: 0;
  top: 0;
  z-index: 2;
  width: var(--size);
  height: var(--size);
  border-radius: 50%;
  border: 3px solid var(--proof-code);
  background: var(--contrast);
  box-shadow: 0 16px 40px rgba(0, 0, 0, 0.45);
  overflow: hidden;
  pointer-events: none;
  opacity: 0;
  transition: opacity .25s ease, scale .3s cubic-bezier(.2, .7, .2, 1);
}
.page-work-contact-sheet .loupe.is-ready { opacity: 1; }
.page-work-contact-sheet .loupe.is-away { opacity: 0; scale: .6; }
.page-work-contact-sheet .loupe.is-returning { transition: opacity .25s ease, scale .3s ease, transform .55s cubic-bezier(.2, .7, .2, 1); }
/* Over the sheet the loupe is the cursor: motion.js's ring steps aside, its dot marks the centre */
.page-work-contact-sheet:has(.proof-sheet:hover) .m-cursor__ring { opacity: 0; }
.page-work-contact-sheet:has(.proof-sheet:hover) .m-cursor__dot { opacity: 1; }
/* The frame edge takes the code colour under the pointer */
.page-work-contact-sheet .proof__media { transition: border-color .3s ease; }
.page-work-contact-sheet .proof__link:hover .proof__media { border-color: var(--proof-code); }
.page-work-contact-sheet .loupe img { position: absolute; max-width: none; object-fit: cover; }

@media (max-width: 1023.98px) {
  .page-work-contact-sheet .page-title { padding-bottom: var(--space-64); }
  .page-work-contact-sheet .proof-band { padding: var(--space-48) 0 var(--space-96); }
  .page-work-contact-sheet .proof-sheet__frames { gap: var(--space-24) var(--space-16); }
  .page-work-contact-sheet .proof__caption { flex-direction: column; gap: 2px; font-size: 12px; }
  .page-work-contact-sheet .proof__caption b { flex: none; font-size: 11px; }
  .page-work-contact-sheet .loupe { --size: 150px; }
}
@media (max-width: 575.98px) {
  .page-work-contact-sheet .proof-sheet__frames { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-work-contact-sheet .proof__caption { font-size: 13px; }
  .page-work-contact-sheet .loupe { display: none; }
}

/* ==========================================================================
   32. Work — filter grid (light/work-filter.html)
   Filter buttons above a three-column project grid. Filtering and the
   "Show more" button live in assets/js/work-filter.js.
   ========================================================================== */
.page-work-filter .page-title { padding-bottom: 80px; }

.page-work-filter .filter-band { padding: var(--space-64) 0 var(--space-128); }
.page-work-filter .filter-band__inner { display: flex; flex-direction: column; gap: var(--space-40); }

/* Filter bar: buttons left, live count right */
.page-work-filter .filter-bar { display: flex; align-items: center; justify-content: space-between; gap: var(--space-24); }
.page-work-filter .filter-status { margin: 0; flex: none; font-family: var(--font-mono); font-size: 13px; color: color-mix(in srgb, var(--text-primary) 72%, transparent); }

/* Filter buttons — the pressed one is filled */
.page-work-filter .filters { display: flex; flex-wrap: wrap; gap: var(--space-8); }
.page-work-filter .filter {
  display: inline-flex;
  align-items: flex-start;
  gap: var(--space-8);
  padding: 12px 16px;
  border: 1px solid color-mix(in srgb, var(--text-primary) 35%, transparent);
  border-radius: var(--radius);
  background: transparent;
  color: var(--text-primary);
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 15px;
  line-height: 1.2;
  transition: background-color .25s ease, color .25s ease, border-color .25s ease;
}
.page-work-filter .filter:hover { border-color: var(--text-primary); }
.page-work-filter .filter:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 3px; }
.page-work-filter .filter__count { font-family: var(--font-mono); font-weight: 400; font-size: 12px; color: color-mix(in srgb, currentColor 75%, transparent); }
.page-work-filter .filter[aria-pressed="true"] { background: var(--text-primary); border-color: var(--text-primary); color: var(--base); }

/* Grid */
.page-work-filter .filter-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-40) var(--space-24);
}
.page-work-filter .filter-card.is-hidden { display: none; }
.page-work-filter .project { display: flex; flex-direction: column; gap: 12px; color: var(--text-primary); }
.page-work-filter .project:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 4px; }
.page-work-filter .project__media { display: block; aspect-ratio: 424 / 320; border-radius: var(--radius); overflow: hidden; }
.page-work-filter .project__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2, .7, .2, 1); }
.page-work-filter .project:hover .project__media img { transform: scale(1.04); }
.page-work-filter .project__meta strong { background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat; transition: background-size .45s cubic-bezier(.2, .7, .2, 1); }
.page-work-filter .project:hover .project__meta strong,
.page-work-filter .project:focus-visible .project__meta strong { background-size: 100% 1px; }
.page-work-filter .project__meta { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-16); }
.page-work-filter .project__meta strong { font-weight: 500; font-size: 18px; line-height: 1.25; }
.page-work-filter .project__meta em,
.page-work-filter .project__tags { font-family: var(--font-mono); font-size: 12px; line-height: 1.3; color: color-mix(in srgb, var(--text-primary) 70%, transparent); }
.page-work-filter .project__meta em { flex: none; }

.page-work-filter .filter-more { display: flex; justify-content: center; }
.page-work-filter .filter-more[hidden] { display: none; }

@media (max-width: 1023.98px) {
  .page-work-filter .page-title { padding-bottom: var(--space-64); }
  .page-work-filter .filter-band { padding: var(--space-48) 0 var(--space-96); }
  .page-work-filter .filter-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  /* Set by work-filter.js when the count is odd */
  .page-work-filter .filter-card.is-wide { grid-column: 1 / -1; }
  .page-work-filter .filter-card.is-wide .project__media { aspect-ratio: 16 / 8; }
}
@media (max-width: 575.98px) {
  .page-work-filter .filter-bar { flex-direction: column; align-items: flex-start; gap: var(--space-16); }
  .page-work-filter .filter-band__inner { gap: var(--space-32); }
  .page-work-filter .filter-grid { grid-template-columns: minmax(0, 1fr); gap: var(--space-32); }
  .page-work-filter .filter-card.is-wide .project__media { aspect-ratio: 424 / 320; }
}

/* ==========================================================================
   33. Work — by year (light/work-by-year.html)
   One row per year: the year in thin mono, then its projects. Three cards
   fit a row; more scroll sideways (arrows + mouse drag: work-by-year.js).
   ========================================================================== */
.page-work-by-year .page-title { padding-bottom: 80px; }

.page-work-by-year .years-band { padding: var(--space-64) 0 var(--space-128); }
.page-work-by-year .years { list-style: none; margin: 0; padding: 0; }
.page-work-by-year .year {
  display: flex;
  align-items: flex-start;
  gap: var(--space-24);
  padding: var(--space-40) 0;
  border-top: 1px solid color-mix(in srgb, var(--text-primary) 20%, transparent);
}
.page-work-by-year .year__label { flex: 0 0 220px; display: flex; flex-direction: column; gap: var(--space-8); }
.page-work-by-year .year__num {
  margin: 0;
  font-family: var(--font-mono);
  font-weight: 200;
  font-size: 72px;
  line-height: 1.1;
  letter-spacing: -0.04em;
}
.page-work-by-year .year__count { margin: 0; font-family: var(--font-mono); font-size: 12px; color: color-mix(in srgb, var(--text-primary) 70%, transparent); }
.page-work-by-year .year__nav { display: flex; gap: var(--space-8); margin-top: var(--space-16); }
.page-work-by-year .year__nav[hidden] { display: none; }
.page-work-by-year .year__arrow {
  width: 48px; height: 48px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid color-mix(in srgb, var(--text-primary) 35%, transparent);
  border-radius: var(--radius);
  background: transparent; color: var(--text-primary);
  font-size: 18px; line-height: 1;
  transition: background-color .25s ease, color .25s ease, border-color .25s ease, opacity .25s ease;
}
.page-work-by-year .year__arrow:hover:not(:disabled) { background: var(--text-primary); border-color: var(--text-primary); color: var(--base); }
.page-work-by-year .year__arrow:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 3px; }
.page-work-by-year .year__arrow:disabled { opacity: .3; cursor: default; }

/* Cards: share the row; below ~300px each, the row scrolls sideways */
.page-work-by-year .year__cards {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  gap: var(--space-24);
  list-style: none;
  margin: 0;
  padding: 0;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
}
.page-work-by-year .year__cards::-webkit-scrollbar { display: none; }
/* Exactly three cards per view; the fourth one onwards waits to the right */
.page-work-by-year .year__cards > li { flex: 0 0 calc((100% - 2 * var(--space-24)) / 3); scroll-snap-align: start; }
.page-work-by-year .is-scrollable .year__cards { cursor: grab; }
.page-work-by-year .is-dragging .year__cards { cursor: grabbing; scroll-snap-type: none; user-select: none; }
.page-work-by-year .is-dragging .year-card { pointer-events: none; }
.page-work-by-year .year-card { display: flex; flex-direction: column; gap: 10px; color: var(--text-primary); }
.page-work-by-year .year-card:focus-visible { outline: 2px solid var(--text-primary); outline-offset: -2px; }
.page-work-by-year .year-card__media { display: block; height: 230px; border-radius: var(--radius); overflow: hidden; }
.page-work-by-year .year-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2, .7, .2, 1); }
.page-work-by-year .year-card:hover .year-card__media img { transform: scale(1.04); }
.page-work-by-year .year-card__name { font-weight: 500; font-size: 16px; line-height: 1.25; }
.page-work-by-year .year-card__tags { margin-top: -6px; font-family: var(--font-mono); font-size: 12px; line-height: 1.3; color: color-mix(in srgb, var(--text-primary) 70%, transparent); }

@media (max-width: 1199.98px) {
  .page-work-by-year .year__label { flex-basis: 180px; }
  .page-work-by-year .year__num { font-size: 60px; }
}
/* Tablet: year above its row; the row scrolls sideways */
@media (max-width: 1023.98px) {
  .page-work-by-year .page-title { padding-bottom: var(--space-64); }
  .page-work-by-year .years-band { padding: var(--space-48) 0 var(--space-96); }
  .page-work-by-year .year { flex-direction: column; align-items: stretch; }
  .page-work-by-year .year__label { flex-basis: auto; flex-direction: row; flex-wrap: wrap; align-items: baseline; column-gap: var(--space-16); }
  .page-work-by-year .year__nav { margin: 0 0 0 auto; align-self: center; }
  .page-work-by-year .year__num { font-size: 56px; }
  .page-work-by-year .year__cards { flex: none; }
  .page-work-by-year .year__cards > li { flex: 0 0 280px; }
  /* The row runs out to the screen edge so the next card visibly peeks in */
  .page-work-by-year .year__cards { margin-right: -48px; padding-right: 48px; scroll-padding-right: 48px; }
  .page-work-by-year .year__arrow { width: 40px; height: 40px; }
}
/* Phone: the row keeps sliding; the next card peeks in from the edge */
@media (max-width: 575.98px) {
  .page-work-by-year .year { padding: var(--space-32) 0; }
  .page-work-by-year .year__num { font-size: 48px; }
  .page-work-by-year .year__cards { gap: var(--space-16); margin-right: -24px; padding-right: 24px; scroll-padding-right: 24px; }
  .page-work-by-year .year__cards > li { flex: 0 0 82%; }
  .page-work-by-year .year-card__media { height: auto; aspect-ratio: 342 / 230; }
}

/* ==========================================================================
   34. Work — colour cards (light/work-colour.html, dark/work-colour.html)
   Three-up grid of project cards. Each card = photo, brand-colour strip
   (set with --brand on the strip) and a name / hex row.
   ========================================================================== */

/* 34.1 Title band — this page's title runs at 228px with an 80px foot */
.page-work-colour .page-title { padding-bottom: 80px; }
.page-work-colour .page-title__title { font-size: 228px; }

/* 34.2 Grid ------------------------------------------------------------------ */
.page-work-colour .colour-cards { padding: var(--space-32) 0 var(--space-128); }
.page-work-colour .colour-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-24);
  margin: 0;
  padding: 0;
  list-style: none;
}

/* 34.3 Card ------------------------------------------------------------------ */
.page-work-colour .colour-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  background: var(--surface);
  border-radius: var(--radius);
  overflow: hidden;
  color: var(--text-primary);
}
.page-work-colour .colour-card__media { display: block; height: 300px; overflow: hidden; }
.page-work-colour .colour-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2, .7, .2, 1); }
.page-work-colour .colour-card__strip { position: relative; z-index: 1; display: block; height: 56px; background: var(--brand); transition: height .45s cubic-bezier(.2, .7, .2, 1), margin-top .45s cubic-bezier(.2, .7, .2, 1); }
.page-work-colour .colour-card:hover .colour-card__media img { transform: scale(1.04); }
/* The strip rises into the photo on hover; the card itself keeps its height */
.page-work-colour .colour-card:hover .colour-card__strip,
.page-work-colour .colour-card:focus-visible .colour-card__strip { height: 112px; margin-top: -56px; }
.page-work-colour .colour-card:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 3px; }
.page-work-colour .colour-card__meta {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-16);
  padding: 20px;
  margin-top: auto;
}
.page-work-colour .colour-card__meta strong { font-weight: 500; font-size: 18px; line-height: 1.3; }
.page-work-colour .colour-card__code {
  flex: none;
  font-family: var(--font-mono);
  font-size: 12px;
  line-height: 1.35;
  color: color-mix(in srgb, var(--text-primary) 75%, transparent);
}

/* 34.4 Responsive ------------------------------------------------------------ */
@media (max-width: 1199.98px) {
  .page-work-colour .page-title__title { font-size: 160px; }
}
@media (max-width: 1023.98px) {
  .page-work-colour .colour-cards { padding-bottom: var(--space-96); }
  .page-work-colour .colour-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-work-colour .colour-card__media { height: auto; aspect-ratio: 424 / 300; }
  /* Nine cards on two columns: the first runs full width so the last row is full.
     With an even number of cards, delete this rule. */
  .page-work-colour .colour-grid > li:first-child { grid-column: 1 / -1; }
  .page-work-colour .colour-grid > li:first-child .colour-card__media { aspect-ratio: 16 / 8; }
}
@media (max-width: 575.98px) {
  .page-work-colour .page-title { padding-bottom: 64px; }
  .page-work-colour .page-title__title { font-size: 88px; }
  .page-work-colour .colour-grid { grid-template-columns: minmax(0, 1fr); gap: var(--space-16); }
  .page-work-colour .colour-grid > li:first-child .colour-card__media { aspect-ratio: 424 / 300; }
  .page-work-colour .colour-card__meta { padding: 16px 20px; }
  .page-work-colour .colour-card__meta strong { font-size: 16px; }
}

/* ==========================================================================
   35. Work — showcase (light/work-showcase.html, dark/work-showcase.html)
   One project at a time on a dark band, in both the light and dark sets.
   Slider: Swiper (fade) driven by assets/js/work-showcase.js; the thumbnail
   rail under it is a list of buttons.
   ========================================================================== */

/* 35.1 Band — dark in both sets; tokens flip to light-on-dark inside it */
.page-work-showcase .showcase {
  --text-primary: #fcf7f3;
  --text-muted: rgba(252, 247, 243, 0.72);
  --border: rgba(252, 247, 243, 0.2);
  background: #111111;
  color: var(--text-primary);
  padding: 32px 0 var(--space-96);
}
[data-bs-theme="dark"] .page-work-showcase .showcase { --text-primary: #f2efe9; background: var(--base); }
.page-work-showcase .showcase .menu-toggle { color: var(--text-primary); }
/* Header button: a light key on the dark band (fixed colours so it reads in both sets) */
.page-work-showcase .showcase .btn-m--light { background: var(--text-primary); color: #111111; }
.page-work-showcase .showcase .btn-m--light:hover { background: #e8dfd3; color: #111111; }
.page-work-showcase .showcase__inner { display: flex; flex-direction: column; gap: var(--space-40); }

/* 35.2 Head — breadcrumb + project name left, counter right */
.page-work-showcase .showcase__head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-32); }
.page-work-showcase .showcase__title { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.page-work-showcase .showcase__name { font-size: 144px; line-height: .82; white-space: nowrap; }
/* Letter masks for the title change (work-showcase.js); the padding keeps accents and tails inside the mask */
.page-work-showcase .showcase__word { display: inline-block; overflow: hidden; padding: .1em 0; margin: -.1em 0; vertical-align: top; }
.page-work-showcase .showcase__char { display: inline-block; }
.page-work-showcase .showcase__side { flex: none; display: flex; flex-direction: column; align-items: flex-end; gap: var(--space-16); }
.page-work-showcase .showcase__count { margin: 0; font-size: 96px; line-height: 1; white-space: nowrap; }
.page-work-showcase .showcase__arrows { display: flex; gap: var(--space-8); }
.page-work-showcase .showcase__arrow {
  width: 56px; height: 56px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--border); border-radius: var(--radius);
  background: transparent; color: var(--text-primary);
  font-size: 20px; line-height: 1;
  transition: background-color .25s ease, color .25s ease, border-color .25s ease;
}
.page-work-showcase .showcase__arrow:hover { background: var(--text-primary); border-color: var(--text-primary); color: #111111; }
.page-work-showcase .showcase__arrow:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 3px; }

/* 35.3 Slider — photo 640 high, then the four facts */
.page-work-showcase .showcase__slider { width: 100%; }
.page-work-showcase .showcase__slide { display: flex; flex-direction: column; gap: var(--space-40); background: inherit; }
.page-work-showcase .showcase__media { display: block; height: 640px; border-radius: var(--radius); overflow: hidden; }
.page-work-showcase .showcase__media img { width: 100%; height: 100%; object-fit: cover; }
.page-work-showcase .showcase__meta {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-24);
  margin: 0;
  padding-top: 20px;
  border-top: 1px solid var(--border);
}
.page-work-showcase .showcase__meta > div { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.page-work-showcase .showcase__meta dt { font-family: var(--font-mono); font-weight: 400; font-size: 12px; line-height: 1.3; color: var(--text-muted); }
.page-work-showcase .showcase__meta dd { margin: 0; font-weight: 500; font-size: 18px; line-height: 1.3; }

/* 35.4 Thumbnail rail — six across; scrolls sideways when there are more */
.page-work-showcase .showcase__rail { padding-top: var(--space-24); overflow-x: auto; scrollbar-width: none; scroll-behavior: smooth; }
.page-work-showcase .showcase__rail::-webkit-scrollbar { display: none; }
.page-work-showcase .showcase__thumbs { display: flex; gap: var(--space-16); margin: 0; padding: 0; list-style: none; }
.page-work-showcase .showcase__thumbs li { flex: 0 0 calc((100% - 80px) / 6); }
.page-work-showcase .showcase__thumb {
  display: flex; flex-direction: column; gap: 10px; width: 100%;
  padding: 0; border: 0; background: none; color: var(--text-muted); text-align: left;
  font-family: var(--font-mono); font-size: 12px; line-height: 1.3;
}
.page-work-showcase .showcase__thumb img {
  width: 100%; height: 130px; object-fit: cover;
  border: 2px solid transparent; border-radius: var(--radius);
  opacity: .5; transition: opacity .3s ease, border-color .3s ease;
}
.page-work-showcase .showcase__thumb:hover img { opacity: .8; }
.page-work-showcase .showcase__thumb.is-active { color: var(--text-primary); }
.page-work-showcase .showcase__thumb.is-active img { opacity: 1; border-color: var(--text-primary); }
.page-work-showcase .showcase__thumb:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 4px; border-radius: var(--radius); }

/* 35.5 Responsive ------------------------------------------------------------ */
@media (max-width: 1199.98px) {
  .page-work-showcase .showcase__name { font-size: 112px; }
  .page-work-showcase .showcase__count { font-size: 72px; }
  .page-work-showcase .showcase__thumbs li { flex-basis: calc((100% - 64px) / 5); }
  .page-work-showcase .showcase__media { height: 520px; }
}
@media (max-width: 1023.98px) {
  .page-work-showcase .showcase__head { flex-direction: column; align-items: flex-start; gap: 12px; }
  .page-work-showcase .showcase__name { font-size: 96px; white-space: normal; }
  .page-work-showcase .showcase__side { width: 100%; flex-direction: row; justify-content: space-between; align-items: center; }
  .page-work-showcase .showcase__count { font-size: 56px; line-height: 1; }
  .page-work-showcase .showcase__arrow { width: 48px; height: 48px; }
  .page-work-showcase .showcase__media { height: 400px; }
  .page-work-showcase .showcase__meta { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: var(--space-24); }
  .page-work-showcase .showcase__thumbs li { flex-basis: calc((100% - 32px) / 3); }
  .page-work-showcase .showcase__thumb img { height: auto; aspect-ratio: 251 / 150; }
}
@media (max-width: 575.98px) {
  .page-work-showcase .showcase__inner { gap: var(--space-32); }
  .page-work-showcase .showcase__head { gap: 8px; }
  .page-work-showcase .showcase__name { font-size: 56px; line-height: .85; }
  .page-work-showcase .showcase__count { font-size: 40px; }
  .page-work-showcase .showcase__media { height: auto; aspect-ratio: 342 / 170; }
  .page-work-showcase .showcase__slide { gap: var(--space-32); }
  .page-work-showcase .showcase__meta dd { font-size: 16px; }
  /* Phone: the rail becomes a two-column grid (as in the 390 frame) */
  .page-work-showcase .showcase__rail { overflow: visible; padding-top: var(--space-16); }
  .page-work-showcase .showcase__thumbs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-24) var(--space-16); }
}

/* ==========================================================================
   36. Work — case study (light/case-study.html, dark/case-study.html)
   Title + facts, full-bleed photo, story columns with metrics, image pair,
   client quote, next project. Photos open in the lightbox (main.js),
   metric numbers count up (main.js, data-counter).
   ========================================================================== */

/* 36.1 Title band ------------------------------------------------------------ */
.page-case-study .page-title { padding-bottom: 64px; }
.page-case-study .page-title__inner { gap: var(--space-48); }
/* The title is a fit-line: main.js sizes it to fill the column (≈197px at 1440). */
.page-case-study .case-title { font-size: 197px; white-space: nowrap; }
.page-case-study .case-meta {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-24);
  margin: 0;
  padding-top: var(--space-24);
  border-top: 1px solid color-mix(in srgb, var(--text-primary) 20%, transparent);
}
.page-case-study .case-meta > div { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.page-case-study .case-meta dt { font-family: var(--font-mono); font-weight: 400; font-size: 12px; line-height: 1.3; color: color-mix(in srgb, var(--text-primary) 70%, transparent); }
.page-case-study .case-meta dd { margin: 0; font-weight: 500; font-size: 20px; line-height: 1.3; }

/* 36.2 Full-bleed image ------------------------------------------------------- */
.page-case-study .case-bleed__link { display: block; height: 700px; overflow: hidden; cursor: zoom-in; }
.page-case-study .case-bleed__link img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s cubic-bezier(.2, .7, .2, 1); }
.page-case-study .case-bleed__link:hover img { transform: scale(1.02); }

/* 36.3 Story + metrics -------------------------------------------------------- */
.page-case-study .case-story { padding: var(--space-128) 0; }
.page-case-study .case-story__cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-32); margin-bottom: 56px; }
.page-case-study .case-story__col { display: flex; flex-direction: column; gap: var(--space-16); padding-top: var(--space-24); border-top: 1px solid color-mix(in srgb, var(--text-primary) 25%, transparent); }
.page-case-study .case-story__title { font-size: 44px; line-height: 1.2; }
.page-case-study .case-story__col p { margin: 0; font-size: 20px; line-height: 1.5; }
.page-case-study .case-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-32); margin: 0; padding: 0; list-style: none; }
.page-case-study .case-metrics li { display: flex; flex-direction: column; gap: var(--space-8); }
.page-case-study .case-metrics__num { font-family: var(--font-mono); font-weight: 200; font-size: 96px; line-height: 1.32; letter-spacing: -0.04em; white-space: nowrap; }
.page-case-study .case-metrics__unit { margin-left: .06em; font-size: .5em; vertical-align: .72em; }
.page-case-study .case-metrics__label { font-weight: 400; font-size: 16px; line-height: 1.3; color: color-mix(in srgb, var(--text-primary) 85%, transparent); }

/* 36.4 Image pair --------------------------------------------------------------- */
.page-case-study .case-pair { padding: var(--space-96) 0; }
.page-case-study .case-pair__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-24); }
.page-case-study .case-pair__item { display: block; height: 760px; border-radius: var(--radius); overflow: hidden; cursor: zoom-in; }
.page-case-study .case-pair__item img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2, .7, .2, 1); }
.page-case-study .case-pair__item:hover img { transform: scale(1.03); }

/* 36.4b The system: swatches + typeface ------------------------------------------ */
.page-case-study .case-system { padding: var(--space-96) 0 var(--space-128); }
.page-case-study .case-system__head { display: flex; flex-direction: column; gap: var(--space-16); margin-bottom: var(--space-48); }
.page-case-study .case-system__head .t-label { color: color-mix(in srgb, var(--text-primary) 70%, transparent); }
.page-case-study .case-system__title { font-size: 96px; line-height: .85; }
.page-case-study .case-system__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--space-24); }
.page-case-study .case-swatches { display: grid; grid-template-columns: 5fr 2fr 2fr; gap: 0; margin: 0; padding: 0; list-style: none; height: 420px; border-radius: var(--radius); overflow: hidden; }
.page-case-study .case-swatch { display: flex; flex-direction: column; justify-content: flex-end; gap: 4px; min-width: 0; padding: var(--space-24) 20px; background: var(--swatch); color: #1a1414; box-shadow: inset 0 0 0 1px rgba(26, 20, 20, .08); }
.page-case-study .case-swatch--ink { color: #f4efe7; }
.page-case-study .case-swatch__name { font-weight: 500; font-size: 18px; line-height: 1.25; }
.page-case-study .case-swatch__code { font-family: var(--font-mono); font-size: 12px; line-height: 1.3; }
.page-case-study .case-type { display: flex; flex-direction: column; justify-content: space-between; gap: var(--space-24); padding: var(--space-24); border-radius: var(--radius); background: var(--base); }
.page-case-study .case-type__glyphs { margin: 0; font-family: var(--font-display); font-weight: 900; font-size: 200px; line-height: .8; }
.page-case-study .case-type__facts { margin: 0; }
.page-case-study .case-type__facts > div { display: flex; justify-content: space-between; gap: var(--space-24); padding: 12px 0; border-top: 1px solid color-mix(in srgb, var(--text-primary) 15%, transparent); }
.page-case-study .case-type__facts dt { flex: none; font-family: var(--font-mono); font-weight: 400; font-size: 12px; line-height: 1.5; color: color-mix(in srgb, var(--text-primary) 70%, transparent); }
.page-case-study .case-type__facts dd { margin: 0; max-width: 300px; font-size: 15px; line-height: 1.4; text-align: right; }

/* 36.5 Quote --------------------------------------------------------------------- */
.page-case-study .case-quote { padding: var(--space-128) 0; }
.page-case-study .case-quote figure { display: flex; flex-direction: column; gap: var(--space-32); }
.page-case-study .case-quote__text { max-width: 1100px; font-size: 56px; line-height: 1.1; }
.page-case-study .case-quote__cite { font-family: var(--font-mono); font-size: 13px; color: color-mix(in srgb, var(--text-on-contrast) 75%, transparent); }

/* 36.6 Next project ---------------------------------------------------------------- */
.page-case-study .case-next { padding: var(--space-96) 0; }
.page-case-study .case-next__label { margin: 0 0 var(--space-24); color: color-mix(in srgb, var(--text-primary) 70%, transparent); }
.page-case-study .case-next__row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-48); }
.page-case-study .case-next__title { font-size: 120px; white-space: nowrap; }
.page-case-study .case-next__arrow { display: inline-block; margin-left: .4em; font-family: var(--font-body); font-weight: 300; transition: transform .35s ease; }
.page-case-study .case-next__row:hover .case-next__arrow { transform: translateX(16px); }
.page-case-study .case-next__media { flex: 0 0 360px; height: 220px; border-radius: var(--radius); overflow: hidden; }
.page-case-study .case-next__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2, .7, .2, 1); }
.page-case-study .case-next__row:hover .case-next__media img { transform: scale(1.05); }

/* 36.7 Responsive ---------------------------------------------------------------- */
@media (max-width: 1199.98px) {
  .page-case-study .case-bleed__link { height: 560px; }
  .page-case-study .case-metrics__num { font-size: 72px; }
  .page-case-study .case-pair__item { height: 600px; }
  .page-case-study .case-quote__text { font-size: 48px; }
  .page-case-study .case-next__title { font-size: 88px; }
  .page-case-study .case-system__grid { grid-template-columns: minmax(0, 1fr); }
  .page-case-study .case-swatches { height: 320px; }
  .page-case-study .case-type__glyphs { font-size: 160px; }
  .page-case-study .case-next__media { flex-basis: 280px; height: 180px; }
}
@media (max-width: 1023.98px) {
  .page-case-study .case-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: var(--space-24); }
  .page-case-study .case-bleed__link { height: 440px; }
  .page-case-study .case-story { padding: var(--space-96) 0; }
  .page-case-study .case-story__cols { grid-template-columns: minmax(0, 1fr); gap: var(--space-40); margin-bottom: var(--space-64); }
  .page-case-study .case-story__title { font-size: 40px; }
  .page-case-study .case-story__col p { font-size: 18px; }
  .page-case-study .case-metrics { gap: var(--space-24); }
  .page-case-study .case-metrics__num { font-size: 52px; }
  .page-case-study .case-metrics__unit { margin-left: .06em; font-size: .5em; vertical-align: .72em; }
.page-case-study .case-metrics__label { font-size: 15px; }
  .page-case-study .case-pair { padding: var(--space-64) 0; }
  .page-case-study .case-system { padding: var(--space-64) 0 var(--space-96); }
  .page-case-study .case-system__title { font-size: 72px; }
  .page-case-study .case-pair__grid { gap: var(--space-16); }
  .page-case-study .case-pair__item { height: 420px; }
  .page-case-study .case-quote { padding: var(--space-96) 0; }
  .page-case-study .case-quote__text { font-size: 40px; }
  .page-case-study .case-next { padding: var(--space-64) 0; }
  .page-case-study .case-next__row { flex-direction: column; align-items: flex-start; gap: var(--space-24); }
  .page-case-study .case-next__title { font-size: 80px; }
  .page-case-study .case-next__media { flex: none; width: 100%; height: auto; aspect-ratio: 360 / 220; }
}
@media (max-width: 575.98px) {
  .page-case-study .page-title { padding-bottom: var(--space-48); }
  .page-case-study .page-title__inner { gap: var(--space-40); }
  .page-case-study .case-meta dd { font-size: 17px; }
  .page-case-study .case-bleed__link { height: 300px; }
  .page-case-study .case-story__title { font-size: 36px; }
  .page-case-study .case-story__col p { font-size: 17px; }
  .page-case-study .case-metrics { grid-template-columns: minmax(0, 1fr); gap: var(--space-24); }
  .page-case-study .case-metrics__num { font-size: 72px; }
  .page-case-study .case-pair__grid { grid-template-columns: minmax(0, 1fr); }
  .page-case-study .case-pair__item { height: auto; aspect-ratio: 648 / 760; }
  .page-case-study .case-quote__text { font-size: 30px; line-height: 1.15; }
  .page-case-study .case-system__head { margin-bottom: var(--space-32); }
  .page-case-study .case-system__title { font-size: 48px; }
  .page-case-study .case-swatches { grid-template-columns: minmax(0, 1fr); height: auto; }
  .page-case-study .case-swatch { min-height: 96px; }
  .page-case-study .case-swatch--lead { min-height: 200px; }
  .page-case-study .case-type__glyphs { font-size: 120px; }
  .page-case-study .case-type__facts > div { flex-direction: column; gap: 4px; }
  .page-case-study .case-type__facts dd { text-align: left; }
  .page-case-study .case-next__title { font-size: 48px; white-space: normal; }
}

/* ==========================================================================
   40. Studio — Team (light/team.html, dark/team.html)
   Title band, lead cards, people list with status dots, hiring band.
   ========================================================================== */
.page-team {
  --ink-70: color-mix(in srgb, var(--text-primary) 70%, transparent);
  --ink-72: color-mix(in srgb, var(--text-primary) 72%, transparent);
  --ink-85: color-mix(in srgb, var(--text-primary) 85%, transparent);
  --ink-line: color-mix(in srgb, var(--text-primary) 15%, transparent);
  /* Status dots: in the studio / remote / off today */
  --status-studio: #2e7d4f;
  --status-remote: #b7791f;
  --status-off: color-mix(in srgb, var(--text-primary) 35%, transparent);
}
.page-team .page-title { padding-bottom: 80px; }

/* 40.1 Leads ------------------------------------------------------------------ */
.page-team .team-leads { padding: var(--space-96) 0; }
.page-team .team-leads__label { margin: 0 0 var(--space-32); color: var(--ink-70); }
.page-team .lead__meta strong { background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat; transition: background-size .45s cubic-bezier(.2, .7, .2, 1); }
.page-team .lead:hover .lead__meta strong, .page-team .lead:focus-visible .lead__meta strong { background-size: 100% 1px; }
.page-team .team-leads__grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-24); }
.page-team .lead { display: flex; flex-direction: column; gap: 12px; color: var(--text-primary); }
.page-team .lead__media { display: block; height: 400px; overflow: hidden; border-radius: var(--radius); }
.page-team .lead__media img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1); transition: filter .4s ease, transform .6s cubic-bezier(.2,.7,.2,1); }
.page-team .lead:hover .lead__media img { filter: grayscale(0); transform: scale(1.03); }
.page-team .lead__meta { display: flex; justify-content: space-between; gap: 12px; }
.page-team .lead__meta strong { font-weight: 500; font-size: 18px; line-height: 23px; }
.page-team .lead__meta span { font-family: var(--font-mono); font-size: 16px; line-height: 21px; transition: transform .25s ease; }
.page-team .lead:hover .lead__meta span { transform: translate(3px, -3px); }
.page-team .lead__roles { display: flex; flex-direction: column; gap: 2px; }
.page-team .lead__role { font-family: var(--font-mono); font-size: 12px; line-height: 16px; color: var(--ink-72); }

/* 40.2 People list ------------------------------------------------------------- */
.page-team .team-list-band { padding: var(--space-96) 0; }
.page-team .people { width: 100%; border-collapse: collapse; }
.page-team .people th, .page-team .people td { padding: 16px 24px 16px 0; vertical-align: middle; text-align: left; }
.page-team .people tr > :last-child { padding-right: 0; }
.page-team .people thead th { padding-top: 0; font-family: var(--font-mono); font-size: 12px; font-weight: 400; line-height: 16px; color: var(--ink-70); }
.page-team .people thead th:nth-child(2) { width: 344px; }
.page-team .people thead th:nth-child(3) { width: 164px; }
.page-team .people thead th:nth-child(4) { width: 260px; }
.page-team .people tbody tr { border-top: 1px solid var(--ink-line); }
.page-team .people tbody tr:hover .people__initials { background: var(--text-primary); color: var(--base); }
.page-team .people-head { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-24); margin-bottom: var(--space-32); }
.page-team .people-head .t-label { color: var(--ink-70); }
.page-team .status-legend { display: flex; flex-wrap: wrap; gap: 8px var(--space-24); margin: 0; padding: 0; list-style: none; font-family: var(--font-mono); font-size: 12px; color: var(--ink-72); }
.page-team .people tbody th { display: flex; align-items: center; gap: var(--space-16); font-weight: 300; font-size: 28px; line-height: 36px; letter-spacing: -0.01em; white-space: nowrap; }
.page-team .people__initials { flex: none; width: 48px; height: 48px; border-radius: var(--radius); display: inline-flex; align-items: center; justify-content: center; background: var(--surface-alt); transition: background-color .25s ease, color .25s ease; font-family: var(--font-mono); font-weight: 500; font-size: 14px; letter-spacing: 0; }
.page-team .people td { font-weight: 400; font-size: 16px; color: var(--ink-85); }
.page-team .people .people__year { font-family: var(--font-mono); font-size: 14px; color: var(--text-primary); }
.page-team .people .people__now { font-family: var(--font-mono); font-size: 13px; }
.page-team .status-dot { display: inline-block; width: 8px; height: 8px; margin-right: 10px; border-radius: 50%; background: var(--status-studio); vertical-align: 1px; }
.page-team .status-dot[data-status="remote"] { background: var(--status-remote); }
.page-team .status-dot[data-status="off"] { background: var(--status-off); }

/* 40.3 Hiring ------------------------------------------------------------------ */
.page-team .team-hiring { padding: var(--space-96) 0; background: var(--surface-alt); }
.page-team .team-hiring__row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-32); }
.page-team .team-hiring__copy { display: flex; flex-direction: column; gap: 12px; }
.page-team .team-hiring__title { font-size: 96px; line-height: .85; letter-spacing: 0; }
.page-team .team-hiring__copy p { font-weight: 400; font-size: 18px; color: var(--ink-85); }

/* 40.4 Responsive ---------------------------------------------------------------- */
@media (max-width: 1199.98px) {
  .page-team .lead__media { height: auto; aspect-ratio: 312 / 400; }
  .page-team .people thead th:nth-child(2) { width: 260px; }
  .page-team .people thead th:nth-child(4) { width: 200px; }
}
@media (max-width: 1023.98px) {
  .page-team .page-title { padding-bottom: 64px; }
  .page-team .team-leads, .page-team .team-list-band, .page-team .team-hiring { padding: 64px 0; }
  .page-team .team-leads__grid { grid-template-columns: repeat(2, 1fr); row-gap: var(--space-40); }
  /* The joined year drops out; name, role and project stay. */
  .page-team .people tr > :nth-child(3) { display: none; }
  .page-team .people thead th:nth-child(2) { width: 200px; }
  .page-team .people thead th:nth-child(4) { width: 170px; }
  .page-team .people tbody th { font-size: 22px; line-height: 30px; gap: 12px; }
  .page-team .people__initials { width: 40px; height: 40px; font-size: 13px; }
  .page-team .team-hiring__row { flex-direction: column; align-items: flex-start; }
  .page-team .team-hiring__title { font-size: 72px; }
}
@media (max-width: 575.98px) {
  .page-team .team-leads, .page-team .team-list-band, .page-team .team-hiring { padding: 56px 0; }
  .page-team .team-leads__grid { gap: var(--space-32) var(--space-16); }
  .page-team .lead__meta strong { font-size: 16px; }
  /* Rows become cards: name on top, role and project beneath. */
  .page-team .people thead { display: none; }
  .page-team .people-head { flex-direction: column; gap: var(--space-16); }
  .page-team .people tbody tr { display: grid; grid-template-columns: 1fr auto; gap: 6px 12px; padding: 16px 0; }
  .page-team .people th, .page-team .people td { padding: 0; }
  .page-team .people tbody th { grid-column: 1 / -1; font-size: 22px; white-space: normal; }
  .page-team .people td:nth-child(2) { padding-left: 48px; }
  .page-team .people .people__now { text-align: right; }
  .page-team .team-hiring__title { font-size: 56px; }
}

/* ==========================================================================
   41. Studio — Team member (light/team-member.html, dark/team-member.html)
   Person band (name, bio, status, facts, portrait) and projects led.
   ========================================================================== */
.page-team-member {
  --ink-72: color-mix(in srgb, var(--text-primary) 72%, transparent);
  --ink-line: color-mix(in srgb, var(--text-primary) 15%, transparent);
  --status-studio: #2e7d4f;
  --status-remote: #b7791f;
  --status-off: color-mix(in srgb, var(--text-primary) 35%, transparent);
}

/* 41.1 Person ------------------------------------------------------------------- */
.page-team-member .member-hero { padding: 32px 0 var(--space-96); }
.page-team-member .member-hero__inner { display: flex; flex-direction: column; gap: 56px; }
.page-team-member .member { display: flex; align-items: flex-start; gap: var(--space-64); }
.page-team-member .member__copy { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 24px; }
.page-team-member .member__name { width: 100%; font-size: 166px; line-height: .82; }
/* motion.js masks each word of the name; give the mask room above the caps so the accent on "Tomás" is not cut */
.page-team-member .member__bio { margin: 0; font-size: 26px; line-height: 1.4; letter-spacing: -0.01em; }
.page-team-member .member__now { display: inline-flex; align-items: center; gap: 12px; margin: 0; padding: 16px 20px; border-radius: var(--radius); background: var(--surface); font-weight: 400; font-size: 16px; line-height: 21px; }
.page-team-member .status-dot { flex: none; width: 10px; height: 10px; border-radius: 50%; background: var(--status-studio); }
.page-team-member .status-dot[data-status="remote"] { background: var(--status-remote); }
.page-team-member .status-dot[data-status="off"] { background: var(--status-off); }
.page-team-member .member__facts { width: 100%; margin: 0; }
.page-team-member .member__facts > div { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-24); padding: 12px 0; border-top: 1px solid var(--ink-line); }
.page-team-member .member__facts dt { font-family: var(--font-mono); font-weight: 400; font-size: 12px; line-height: 16px; color: var(--ink-72); }
.page-team-member .member__facts dd { margin: 0; font-weight: 400; font-size: 16px; line-height: 21px; text-align: right; }
.page-team-member .member__facts a { text-decoration: underline; text-decoration-color: var(--ink-line); text-underline-offset: 3px; }
.page-team-member .member__facts a:hover { text-decoration-color: currentColor; }
.page-team-member .member__media { flex: 0 0 520px; aspect-ratio: 520 / 680; overflow: hidden; border-radius: var(--radius); }
.page-team-member .member__media img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1); }

/* 41.2 Projects led --------------------------------------------------------------- */
.page-team-member .member-projects { padding: var(--space-96) 0; }
.page-team-member .member-projects__title { margin-bottom: var(--space-32); font-size: 80px; line-height: .85; letter-spacing: 0; }
.page-team-member .member-projects__grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-24); }
.page-team-member .project { display: flex; flex-direction: column; gap: 12px; color: var(--text-primary); }
.page-team-member .project__media { display: block; height: 280px; overflow: hidden; border-radius: var(--radius); }
.page-team-member .project__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2,.7,.2,1); }
.page-team-member .project:hover .project__media img { transform: scale(1.04); }
.page-team-member .project__meta { display: flex; justify-content: space-between; gap: 12px; }
.page-team-member .project__meta strong { font-weight: 500; font-size: 18px; line-height: 23px; }
.page-team-member .project__meta span { font-family: var(--font-mono); font-size: 12px; line-height: 16px; color: var(--ink-72); }

/* 41.2b Other leads ------------------------------------------------------------------ */
.page-team-member .member-others { padding: var(--space-96) 0; }
.page-team-member .member-others__head { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-24); margin-bottom: var(--space-24); }
.page-team-member .member-others__head .t-label { color: var(--ink-72); }
.page-team-member .member-others__all { font-family: var(--font-mono); font-size: 13px; text-decoration: underline; text-decoration-color: var(--ink-line); text-underline-offset: 4px; }
.page-team-member .member-others__all:hover { text-decoration-color: currentColor; }
.page-team-member .member-others__list { list-style: none; margin: 0; padding: 0; }
.page-team-member .other { display: grid; grid-template-columns: 72px minmax(0, 1fr) minmax(0, 1fr) 24px; align-items: center; gap: var(--space-24); padding: var(--space-16) 0; border-top: 1px solid var(--ink-line); color: var(--text-primary); }
.page-team-member .member-others__list li:last-child .other { border-bottom: 1px solid var(--ink-line); }
.page-team-member .other__media { display: block; width: 72px; height: 92px; overflow: hidden; border-radius: var(--radius); }
.page-team-member .other__media img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1); transition: filter .4s ease; }
.page-team-member .other__name { font-weight: 300; font-size: 36px; line-height: 1.1; letter-spacing: -0.01em; }
.page-team-member .other__role { font-family: var(--font-mono); font-size: 13px; color: var(--ink-72); }
.page-team-member .other__arrow { font-size: 22px; transition: transform .35s cubic-bezier(.2, .7, .2, 1); }
.page-team-member .other:hover .other__media img { filter: none; }
.page-team-member .other:hover .other__arrow, .page-team-member .other:focus-visible .other__arrow { transform: translateX(8px); }
.page-team-member .other:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 2px; }

/* 41.3 Responsive ------------------------------------------------------------------ */
@media (max-width: 1199.98px) {
  .page-team-member .member { gap: var(--space-48); }
  .page-team-member .member__media { flex-basis: 400px; }
  .page-team-member .member__bio { font-size: 22px; }
}
@media (max-width: 1023.98px) {
  .page-team-member .member-hero { padding-bottom: 64px; }
  .page-team-member .member-hero__inner { gap: var(--space-40); }
  .page-team-member .member { flex-direction: column; align-items: stretch; }
  .page-team-member .member__media { flex: none; width: 100%; aspect-ratio: 4 / 3; }
  .page-team-member .member__media img { object-position: 50% 25%; }
  .page-team-member .member-projects { padding: 64px 0; }
  .page-team-member .member-projects__title { font-size: 64px; }
  .page-team-member .project__media { height: 180px; }
  .page-team-member .project__meta { flex-direction: column; gap: 4px; }
  .page-team-member .member-others { padding: 64px 0; }
  .page-team-member .other { grid-template-columns: 72px minmax(0, 1fr) 24px; row-gap: 4px; }
  .page-team-member .other__media { grid-row: span 2; }
  .page-team-member .other__name { font-size: 28px; }
  .page-team-member .other__role { grid-column: 2; }
  .page-team-member .other__arrow { grid-column: 3; grid-row: 1 / span 2; }
}
@media (max-width: 575.98px) {
  .page-team-member .member__copy { gap: 20px; }
  .page-team-member .member__bio { font-size: 19px; }
  .page-team-member .member__now { align-items: flex-start; padding: 12px 16px; font-size: 15px; }
  .page-team-member .member__now .status-dot { margin-top: 6px; }
  .page-team-member .member__facts > div { flex-direction: column; gap: 4px; }
  .page-team-member .member__facts dd { text-align: left; }
  .page-team-member .member__media { aspect-ratio: 4 / 5; }
  .page-team-member .member-projects { padding: 56px 0; }
  .page-team-member .member-projects__title { font-size: 48px; }
  .page-team-member .member-projects__grid { grid-template-columns: 1fr; gap: var(--space-32); }
  .page-team-member .project__media { height: auto; aspect-ratio: 424 / 280; }
  .page-team-member .project__meta { flex-direction: row; }
  .page-team-member .member-others { padding: 56px 0; }
  .page-team-member .member-others__head { flex-direction: column; gap: 8px; }
  .page-team-member .other { grid-template-columns: 56px minmax(0, 1fr) 24px; gap: 4px var(--space-16); }
  .page-team-member .other__media { width: 56px; height: 72px; }
  .page-team-member .other__name { font-size: 22px; }
}

/* ==========================================================================
   42. Studio — FAQ (light/faq.html, dark/faq.html)
   Category pills (Bootstrap tab) beside an accordion (Bootstrap collapse),
   then an "ask a person" band.
   ========================================================================== */
.page-faq {
  --ink-75: color-mix(in srgb, var(--text-primary) 75%, transparent);
  --ink-85: color-mix(in srgb, var(--text-primary) 85%, transparent);
  --ink-line: color-mix(in srgb, var(--text-primary) 18%, transparent);
}
.page-faq .page-title { padding-bottom: 80px; }
.page-faq .page-title__title { font-size: 217px; }

/* 42.1 Layout ----------------------------------------------------------------------- */
.page-faq .faq-band { padding: var(--space-96) 0; }
.page-faq .faq { display: flex; align-items: flex-start; gap: var(--space-64); }
.page-faq .faq__panes { flex: 1 1 0; min-width: 0; }

/* 42.2 Categories ------------------------------------------------------------------- */
.page-faq .faq__cats { flex: 0 0 300px; display: flex; flex-direction: column; gap: 4px; position: sticky; top: 24px; }
.page-faq .faq__cat { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-16); width: 100%; padding: 16px 20px; border: 0; border-radius: var(--radius); background: transparent; color: var(--text-primary); font-family: var(--font-body); font-weight: 500; font-size: 17px; line-height: 22px; text-align: left; transition: background-color .2s ease, color .2s ease; }
.page-faq .faq__cat:hover { background: var(--surface-alt); }
.page-faq .faq__cat:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 2px; }
.page-faq .faq__cat.active { background: var(--text-primary); color: var(--base); }
.page-faq .faq__count { font-family: var(--font-mono); font-weight: 400; font-size: 13px; line-height: 17px; color: var(--ink-75); }
.page-faq .faq__cat.active .faq__count { color: color-mix(in srgb, var(--base) 75%, transparent); }

/* 42.3 Accordion ---------------------------------------------------------------------- */
.page-faq .faq__list { counter-reset: faq; border-bottom: 1px solid var(--ink-line); }
.page-faq .faq-item { border-top: 1px solid var(--ink-line); }
/* Question numbers are counted by CSS, so adding a question renumbers the list */
.page-faq .faq-item__btn::before { counter-increment: faq; content: counter(faq, decimal-leading-zero); flex: 0 0 48px; align-self: flex-start; padding-top: 12px; font-family: var(--font-mono); font-weight: 400; font-size: 13px; line-height: 1; letter-spacing: 0; color: var(--ink-75); }
.page-faq .faq-item__btn .faq-item__icon { margin-left: auto; }
.page-faq .faq-item__btn:hover { color: var(--text-primary); }
.page-faq .faq-item__q { margin: 0; }
.page-faq .faq-item__btn { display: flex; justify-content: flex-start; align-items: center; gap: var(--space-24); width: 100%; padding: 24px 0; border: 0; background: none; color: var(--text-primary); font-family: var(--font-body); font-weight: 300; font-size: 30px; line-height: 39px; letter-spacing: -0.01em; text-align: left; }
.page-faq .faq-item__btn:focus-visible { outline: 2px solid var(--text-primary); outline-offset: 4px; }
/* Plus / minus drawn with two bars; the vertical one folds away when open. */
.page-faq .faq-item__icon { position: relative; flex: none; width: 15px; height: 15px; }
.page-faq .faq-item__icon::before,
.page-faq .faq-item__icon::after { content: ""; position: absolute; left: 0; top: 7px; width: 15px; height: 1.5px; background: currentColor; transition: transform .25s ease; }
.page-faq .faq-item__icon::after { transform: rotate(90deg); }
.page-faq .faq-item__btn:not(.collapsed) .faq-item__icon::after { transform: rotate(0deg); }
.page-faq .faq-item__a { max-width: 760px; margin: -10px 0 0 64px; padding: 0 0 24px; font-weight: 400; font-size: 18px; line-height: 1.55; color: var(--ink-85); }

/* 42.4 Ask ---------------------------------------------------------------------------- */
.page-faq .faq-ask { padding: var(--space-96) 0; background: var(--surface-alt); }
.page-faq .faq-ask__row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-32); }
.page-faq .faq-ask__copy { display: flex; flex-direction: column; gap: 12px; }
.page-faq .faq-ask__title { font-size: 96px; line-height: .85; letter-spacing: 0; }
.page-faq .faq-ask__copy p { font-weight: 400; font-size: 18px; color: var(--ink-85); }

/* 42.5 Responsive ---------------------------------------------------------------------- */
@media (max-width: 1199.98px) {
  .page-faq .page-title__title { font-size: 160px; }
  .page-faq .faq__cats { flex-basis: 240px; }
  .page-faq .faq { gap: var(--space-40); }
  .page-faq .faq-item__btn { font-size: 26px; line-height: 34px; }
}
@media (max-width: 1023.98px) {
  .page-faq .page-title { padding-bottom: 64px; }
  .page-faq .faq-band, .page-faq .faq-ask { padding: 64px 0; }
  .page-faq .faq { flex-direction: column; gap: var(--space-32); }
  .page-faq .faq__cats { position: static; flex: none; flex-direction: row; flex-wrap: wrap; gap: 8px; }
  .page-faq .faq__cat { width: auto; gap: 12px; padding: 12px 16px; box-shadow: inset 0 0 0 1px var(--ink-line); }
  .page-faq .faq__cat.active { box-shadow: none; }
  .page-faq .faq__panes { width: 100%; }
  .page-faq .faq-item__btn { font-size: 24px; line-height: 32px; }
  .page-faq .faq-ask__row { flex-direction: column; align-items: flex-start; }
  .page-faq .faq-ask__title { font-size: 72px; }
}
@media (max-width: 575.98px) {
  .page-faq .page-title__title { font-size: 80px; }
  .page-faq .faq-band, .page-faq .faq-ask { padding: 56px 0; }
  .page-faq .faq__cat { font-size: 15px; padding: 10px 12px; }
  .page-faq .faq-item__btn { padding: 20px 0; font-size: 20px; line-height: 27px; }
  .page-faq .faq-item__a { margin: -6px 0 0; padding-bottom: 20px; font-size: 16px; }
  .page-faq .faq-item__btn { gap: var(--space-16); }
  .page-faq .faq-item__btn::before { flex-basis: 24px; padding-top: 8px; font-size: 12px; }
  .page-faq .faq-ask__title { font-size: 56px; }
}

/* ==========================================================================
   43. Studio — 404 (light/404.html, dark/404.html)
   "This page has set": the sun sinks below the horizon on load (CSS only).
   ========================================================================== */
.page-404 {
  --ink-85: color-mix(in srgb, var(--text-primary) 85%, transparent);
  --sun: color-mix(in srgb, var(--text-primary) 12%, transparent);
}
.page-404 .nf { padding: 32px 0 var(--space-128); }
.page-404 .nf__inner { display: flex; flex-direction: column; gap: var(--space-64); }

/* 43.1 Stage: 404 on the horizon, half sun below it -------------------------------- */
.page-404 .nf__stage { display: flex; flex-direction: column; align-items: center; }
.page-404 .nf__code { font-size: 360px; line-height: .8; letter-spacing: 0; text-transform: none; white-space: nowrap; }
/* motion.js lifts the digits inside a clipping mask; at this tight line-height the
   mask would shave the tops off, so it gets room above and below */
.page-404 .nf__horizon { display: flex; flex-direction: column; align-items: center; width: 100%; }
.page-404 .nf__line { display: block; width: 100%; height: 16px; background: var(--text-primary); }
/* The clip box is the space under the horizon; the sun is centred on its top
   edge, so only its lower half shows. It starts above the edge (hidden) and
   sinks into place. Change the size with the width of .nf__below. */
.page-404 .nf__below { position: relative; display: block; width: min(520px, 100%); aspect-ratio: 2 / 1; overflow: hidden; }
.page-404 .nf__sun { position: absolute; left: 0; top: -100%; width: 100%; aspect-ratio: 1; border-radius: 50%; background: var(--sun); animation: nf-set 2.2s cubic-bezier(.3,.6,.2,1) 1s both; }
@keyframes nf-set { from { transform: translateY(-50%); } to { transform: none; } }

/* 43.2 Copy ------------------------------------------------------------------------ */
.page-404 .nf__copy { display: flex; flex-direction: column; align-items: center; gap: var(--space-24); text-align: center; }
.page-404 .nf__title { margin: 0; font-weight: 300; font-size: 56px; line-height: 73px; letter-spacing: -0.03em; }
.page-404 .nf__text { max-width: 560px; margin: 0; font-weight: 400; font-size: 18px; line-height: 1.5; color: var(--ink-85); }
.page-404 .nf__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-16); }
.page-404 .nf__actions .btn-m { height: 52px; }

/* 43.3 Responsive ------------------------------------------------------------------ */
@media (max-width: 1023.98px) {
  .page-404 .nf { padding-bottom: var(--space-96); }
  .page-404 .nf__inner { gap: var(--space-48); }
  .page-404 .nf__code { font-size: 260px; }
  .page-404 .nf__below { width: min(400px, 100%); }
  .page-404 .nf__line { height: 12px; }
}
@media (max-width: 575.98px) {
  .page-404 .nf { padding-bottom: var(--space-64); }
  .page-404 .nf__inner { gap: var(--space-40); }
  .page-404 .nf__code { font-size: 150px; }
  .page-404 .nf__line { height: 8px; }
  .page-404 .nf__below { width: 260px; }
  .page-404 .nf__title { font-size: 40px; line-height: 1.2; }
  .page-404 .nf__text { font-size: 16px; }
  .page-404 .nf__actions { flex-direction: column; align-items: stretch; width: 100%; }
  .page-404 .nf__actions .btn-m { height: 48px; }
}

/* ==========================================================================
   44. Legal (light/legal.html)
   Sticky section list + a reading column capped at 720px.
   ========================================================================== */
.page-legal .legal__grid { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: var(--space-96); align-items: start; }

.page-legal .legal__nav { position: sticky; top: var(--space-32); }
.page-legal .legal__nav ol { margin: var(--space-16) 0 0; padding: 0; list-style: none; counter-reset: legal; border-top: 1px solid var(--border); }
.page-legal .legal__nav li { counter-increment: legal; border-bottom: 1px solid var(--border); }
.page-legal .legal__nav a { display: flex; gap: var(--space-16); padding: 12px 0; font-size: 16px; transition: color .2s ease, padding .3s ease; }
.page-legal .legal__nav a::before { content: counter(legal, decimal-leading-zero); font-family: var(--font-mono); font-size: 13px; color: var(--text-muted); padding-top: 2px; }
.page-legal .legal__nav a:hover, .page-legal .legal__nav a:focus-visible { color: var(--accent); padding-left: 8px; }

.page-legal .legal__body { max-width: 720px; }
.page-legal .legal__section { padding: 0 0 var(--space-64); scroll-margin-top: var(--space-32); }
.page-legal .legal__section + .legal__section { padding-top: var(--space-48); border-top: 1px solid var(--border); }
.page-legal .legal__title { margin: 0 0 var(--space-24); font-family: var(--font-display); font-weight: 900; text-transform: uppercase; font-size: 56px; line-height: .9; }
.page-legal .legal__section p { margin: 0 0 var(--space-16); font-size: 18px; line-height: 1.6; }
.page-legal .legal__section a { text-decoration: underline; text-underline-offset: 3px; }
.page-legal .legal__list { margin: var(--space-24) 0 0; padding: 0; list-style: none; }
.page-legal .legal__list li { padding: 12px 0; border-top: 1px solid var(--border); font-size: 16px; line-height: 1.5; }
.page-legal .legal__list strong { font-weight: 500; }

.page-legal .legal__facts { margin: 0; }
.page-legal .legal__facts div { display: grid; grid-template-columns: 160px minmax(0, 1fr); gap: var(--space-24); padding: 12px 0; border-top: 1px solid var(--border); }
.page-legal .legal__facts dt { font-family: var(--font-mono); font-weight: 400; font-size: 13px; color: var(--text-muted); padding-top: 3px; }
.page-legal .legal__facts dd { margin: 0; font-size: 16px; }

@media (max-width: 1023.98px) {
  .page-legal .legal__grid { grid-template-columns: minmax(0, 1fr); gap: var(--space-48); }
  .page-legal .legal__nav { position: static; }
}
@media (max-width: 575.98px) {
  .page-legal .legal__title { font-size: 40px; }
  .page-legal .legal__facts div { grid-template-columns: minmax(0, 1fr); gap: 4px; }
}
