/* ============================================================
   Langham.ai — "Aperture" design system (web)
   Single source of truth for the site's visual language.
   Ported from the Langham Design System token layers:
   iris #5326E0 on a warm-cool neutral ramp · Bricolage Grotesque
   display · IBM Plex Sans body · IBM Plex Mono labels/data ·
   hairline structure · flat color-blocking (never gradients) ·
   the aperture motif (nested keyline squares) + mono (01) markers.
   ============================================================ */

/* ── Layer 1 — primitives ────────────────────────────────── */
:root {
  /* Iris — brand / primary (a modernised heritage violet) */
  --iris-50:#F2EEFD; --iris-100:#E6DEFB; --iris-200:#CDBCF6; --iris-300:#AF95EF;
  --iris-400:#8A62E9; --iris-500:#5326E0; --iris-600:#4A21C4; --iris-700:#3B1A9C;
  --iris-800:#2C1573; --iris-900:#1E0F4D; --iris-bright:#7A55FF;

  /* Neutrals — ink→surface ramp, faint violet-cool cast */
  --n-0:#FFFFFF; --n-25:#FBFAFD; --n-50:#F6F4FB; --n-100:#ECE9F4; --n-150:#E2DEEE;
  --n-200:#CFCADD; --n-300:#B2ACC5; --n-400:#918AA6; --n-500:#6F6987; --n-600:#565070;
  --n-700:#403A57; --n-800:#2A2540; --n-900:#1B1727; --n-950:#141019;

  /* Functional (used sparingly on marketing) */
  --green-500:#12996B; --amber-500:#D98A0B; --red-500:#E5484D; --blue-500:#2570E8;

  /* ── Layer 2 — semantic ── */
  --color-bg:            var(--n-25);
  --color-bg-subtle:     var(--n-50);
  --color-surface:       var(--n-0);
  --color-surface-sunken:var(--n-50);
  --color-ink:           var(--n-950);   /* dark panels / footer */
  --color-overlay:       rgba(20,16,25,0.48);

  --color-text:          var(--n-950);
  --color-text-secondary:var(--n-600);
  --color-text-muted:    var(--n-500);
  --color-text-faint:    var(--n-400);
  --color-text-inverse:  var(--n-0);

  --color-border:        var(--n-100);
  --color-border-strong: var(--n-200);
  --color-hairline:      var(--n-150);

  --color-accent:        var(--iris-500);
  --color-accent-hover:  var(--iris-600);
  --color-accent-active: var(--iris-700);
  --color-accent-subtle: var(--iris-50);
  --color-accent-border: var(--iris-200);
  --color-accent-text:   var(--iris-600);  /* links on light */

  /* Type */
  --font-display:"Bricolage Grotesque","Segoe UI",system-ui,-apple-system,sans-serif;
  --font-sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,"SF Mono","Cascadia Code",Menlo,Consolas,monospace;

  --fs-2xs:11px; --fs-xs:12px; --fs-sm:13px; --fs-md:14px; --fs-base:16px;
  --fs-lg:18px; --fs-xl:20px; --fs-2xl:24px; --fs-3xl:30px; --fs-4xl:38px;
  --fs-5xl:48px; --fs-6xl:60px; --fs-7xl:76px;

  --lh-none:1; --lh-tight:1.04; --lh-snug:1.15; --lh-normal:1.4; --lh-relaxed:1.6;
  --tracking-tighter:-0.035em; --tracking-tight:-0.02em; --tracking-snug:-0.01em;
  --tracking-label:0.14em;
  --fw-regular:400; --fw-medium:500; --fw-semibold:600; --fw-bold:700;

  /* Space (4px base) */
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px; --space-5:20px;
  --space-6:24px; --space-8:32px; --space-10:40px; --space-12:48px; --space-14:56px;
  --space-16:64px; --space-20:80px; --space-24:96px; --space-32:128px;
  --container:1200px; --page-margin:clamp(20px,5vw,80px);

  /* Radius */
  --radius-xs:4px; --radius-sm:6px; --radius-md:10px; --radius-lg:14px; --radius-full:9999px;

  /* Elevation / borders / motion */
  --shadow-xs:0 1px 2px rgba(20,16,25,.06);
  --shadow-sm:0 1px 2px rgba(20,16,25,.06),0 2px 6px -2px rgba(20,16,25,.08);
  --shadow-md:0 2px 4px rgba(20,16,25,.06),0 8px 20px -6px rgba(20,16,25,.12);
  --shadow-lg:0 4px 8px rgba(20,16,25,.06),0 24px 48px -16px rgba(20,16,25,.18);
  --shadow-xl:0 8px 16px rgba(20,16,25,.08),0 40px 80px -32px rgba(20,16,25,.28);
  --border-hairline:1px; --border-strong:1.5px;
  --focus-ring:0 0 0 3px rgba(83,38,224,.32);
  --focus-ring-inverse:0 0 0 3px rgba(122,85,255,.45);
  --dur-fast:140ms; --dur-base:220ms; --dur-slow:360ms;
  --ease-out:cubic-bezier(.22,1,.36,1);
}

@media (prefers-reduced-motion: reduce){
  :root{ --dur-fast:0ms; --dur-base:0ms; --dur-slow:0ms; }
}

/* ── Reset / base ────────────────────────────────────────── */
*,*::before,*::after{ box-sizing:border-box; border:0; margin:0; padding:0; }
html{
  scroll-behavior:smooth; font-size:16px; scroll-padding-top:88px;
  -webkit-text-size-adjust:100%;
}
body{
  background-color:var(--color-bg);
  color:var(--color-text);
  font-family:var(--font-sans);
  font-size:var(--fs-base);
  line-height:var(--lh-relaxed);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}
img,svg,video{ max-width:100%; height:auto; display:block; }
a{ color:inherit; text-decoration:none; }
button,input,select,textarea{
  font-family:inherit; font-size:100%; line-height:inherit; color:inherit;
  background:none; border:none; outline:none; margin:0; padding:0;
}
button{ cursor:pointer; }
::selection{ background:var(--iris-200); color:var(--n-950); }
:focus-visible{ outline:2px solid var(--color-accent); outline-offset:2px; border-radius:var(--radius-xs); }

/* ── Typography helpers ──────────────────────────────────── */
.overline{
  font-family:var(--font-mono); font-size:var(--fs-xs); font-weight:var(--fw-medium);
  text-transform:uppercase; letter-spacing:var(--tracking-label); color:var(--color-accent-text);
}
.display{
  font-family:var(--font-display); font-weight:var(--fw-bold);
  letter-spacing:var(--tracking-tight); line-height:var(--lh-snug);
}
.mono{ font-family:var(--font-mono); }

/* ── Buttons ─────────────────────────────────────────────── */
.btn-primary{
  display:inline-flex; align-items:center; gap:var(--space-2);
  padding:13px 22px; background-color:var(--color-accent); color:var(--n-0);
  font-family:var(--font-sans); font-size:var(--fs-md); font-weight:var(--fw-semibold);
  letter-spacing:0; border-radius:var(--radius-md); white-space:nowrap;
  transition:background-color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), transform var(--dur-fast) var(--ease-out);
}
.btn-primary:hover{ background-color:var(--color-accent-hover); box-shadow:var(--shadow-md); }
.btn-primary:active{ background-color:var(--color-accent-active); transform:translateY(1px); }
.btn-primary:focus-visible{ box-shadow:var(--focus-ring); outline:none; }

.btn-ghost{
  display:inline-flex; align-items:center; gap:var(--space-2);
  font-family:var(--font-mono); font-size:var(--fs-xs); font-weight:var(--fw-medium);
  text-transform:uppercase; letter-spacing:var(--tracking-label);
  color:var(--color-text-secondary); min-height:44px; padding:0 2px;
  transition:color var(--dur-fast) var(--ease-out);
}
.btn-ghost:hover{ color:var(--color-accent-text); }

/* ── Layout ──────────────────────────────────────────────── */
.wrap{ max-width:var(--container); margin-inline:auto; padding-inline:var(--page-margin); }
.section{ padding:var(--space-20) 0; }
@media (min-width:1024px){ .section{ padding:var(--space-24) 0; } }
.section--subtle{ background-color:var(--color-bg-subtle); }
.rule{ height:1px; background-color:var(--color-border); }

/* Aperture keyline mark (nested squares) — the signature device */
.aperture-mark{
  display:inline-block; width:1em; height:1em; position:relative; vertical-align:-0.08em;
}
.aperture-mark::before,.aperture-mark::after{
  content:""; position:absolute; inset:0; border:1.5px solid currentColor;
}
.aperture-mark::after{ inset:28%; }

/* ── Nav ─────────────────────────────────────────────────── */
.nav{
  position:fixed; top:0; left:0; right:0; z-index:50; height:64px;
  display:flex; align-items:center; overflow:hidden;
  background-color:rgba(251,250,253,0.86);
  backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
  border-bottom:1px solid var(--color-border);
  transition:box-shadow var(--dur-base) var(--ease-out);
}
.nav.scrolled{ box-shadow:0 1px 12px rgba(20,16,25,.06); }
.nav > .wrap{ width:100%; min-width:0; }
.nav-inner{ display:flex; align-items:center; justify-content:space-between; width:100%; min-width:0; }
.nav-wordmark{
  font-family:var(--font-display); font-weight:var(--fw-bold); font-size:22px;
  letter-spacing:var(--tracking-tight); color:var(--color-text); line-height:1;
  display:inline-flex; align-items:center; gap:8px;
}
.nav-wordmark .period{ color:var(--color-accent); }
.nav-wordmark .aperture-mark{ width:16px; height:16px; color:var(--color-accent); }
@media (max-width:639px){ .nav-wordmark{ font-size:20px; } }
.nav-links{ display:flex; align-items:center; gap:var(--space-4); flex-shrink:0; min-width:0; }
@media (max-width:479px){ .nav-links{ gap:var(--space-2); } }
.nav-link{
  font-family:var(--font-mono); font-size:var(--fs-xs); font-weight:var(--fw-medium);
  text-transform:uppercase; letter-spacing:var(--tracking-label); color:var(--color-text-secondary);
  display:inline-flex; align-items:center; min-height:44px; padding:0 4px;
  transition:color var(--dur-fast) var(--ease-out);
}
.nav-link:hover,.nav-link.active{ color:var(--color-accent-text); }
.nav-cta{ margin-left:0; flex-shrink:0; padding:9px 16px; }
.nav-cta .nav-cta-short{ display:none; }
@media (max-width:479px){
  .nav-cta .nav-cta-full{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
  .nav-cta .nav-cta-short{ display:inline; position:static; width:auto; height:auto; margin:0; overflow:visible; clip:auto; white-space:normal; }
  .nav-cta{ padding-inline:14px; }
}

/* ── Hero ────────────────────────────────────────────────── */
.hero{ padding-top:8rem; padding-bottom:var(--space-16); position:relative; }
@media (min-width:768px){ .hero{ padding-top:9rem; padding-bottom:var(--space-20); } }
@media (min-width:1024px){ .hero{ padding-top:10rem; } }
.hero-overline{ margin-bottom:var(--space-6); display:flex; align-items:center; gap:10px; }
.hero-overline .aperture-mark{ width:13px; height:13px; color:var(--color-accent); }
.hero-h1{
  font-family:var(--font-display); font-weight:var(--fw-bold);
  font-size:clamp(2.6rem,6vw,4.5rem); line-height:1.02; letter-spacing:var(--tracking-tighter);
  max-width:20ch; margin-bottom:var(--space-6); color:var(--color-text);
}
.hero-body{ font-size:var(--fs-xl); line-height:1.6; color:var(--color-text-secondary); max-width:42rem; margin-bottom:var(--space-4); }
.hero-kicker{ font-size:var(--fs-lg); line-height:1.6; color:var(--color-text-muted); max-width:38rem; margin-bottom:var(--space-10); }
.hero-actions{ display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-5); }

/* ── Proof bar ───────────────────────────────────────────── */
.proof-bar{ border-top:1px solid var(--color-border); border-bottom:1px solid var(--color-border); background-color:var(--color-surface); }
.proof-bar-inner{ display:grid; grid-template-columns:1fr; }
@media (min-width:768px){ .proof-bar-inner{ grid-template-columns:repeat(3,1fr); } }
.proof-bar-cell{
  padding:var(--space-8) var(--space-8); display:flex; flex-direction:column; gap:var(--space-2);
  border-bottom:1px solid var(--color-border);
}
@media (min-width:768px){
  .proof-bar-cell{ border-bottom:none; border-right:1px solid var(--color-border); }
  .proof-bar-cell:last-child{ border-right:none; }
  .proof-bar-cell:first-child{ padding-left:0; }
  .proof-bar-cell:last-child{ padding-right:0; }
}
.proof-bar-number{
  font-family:var(--font-display); font-weight:var(--fw-bold); font-size:44px;
  letter-spacing:var(--tracking-tight); line-height:1; color:var(--color-text);
}
.proof-bar-number .u-accent{ color:var(--color-accent); }
.proof-bar-label{ font-family:var(--font-mono); font-size:var(--fs-2xs); text-transform:uppercase; letter-spacing:var(--tracking-label); color:var(--color-text-muted); line-height:1.4; }

/* ── Sections ────────────────────────────────────────────── */
.section-overline{ margin-bottom:var(--space-5); }
.section-h2{
  font-family:var(--font-display); font-weight:var(--fw-bold);
  font-size:clamp(2rem,4.5vw,3rem); line-height:1.08; letter-spacing:var(--tracking-tight);
  margin-bottom:var(--space-6); color:var(--color-text); max-width:24ch;
}
.section-intro{ font-size:var(--fs-lg); line-height:1.7; color:var(--color-text-secondary); max-width:44rem; }

/* ── Cards ───────────────────────────────────────────────── */
.cards-grid{ display:grid; grid-template-columns:1fr; gap:var(--space-4); margin-top:var(--space-12); }
@media (min-width:1024px){ .cards-grid{ grid-template-columns:repeat(3,1fr); } }
.cards-grid--two{ max-width:none; }
@media (min-width:768px){ .cards-grid--two{ grid-template-columns:repeat(2,1fr); } }
.card{
  padding:var(--space-8) var(--space-6); background-color:var(--color-surface);
  border:1px solid var(--color-border); border-radius:var(--radius-lg); box-shadow:var(--shadow-sm);
  position:relative; transition:box-shadow var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);
}
.card:hover{ box-shadow:var(--shadow-md); transform:translateY(-2px); }
.card-num{ font-family:var(--font-mono); font-size:var(--fs-2xs); text-transform:uppercase; letter-spacing:var(--tracking-label); color:var(--color-accent-text); margin-bottom:var(--space-4); }
.card-title{ font-family:var(--font-display); font-weight:var(--fw-bold); font-size:var(--fs-2xl); letter-spacing:var(--tracking-snug); margin-bottom:var(--space-3); }
.card-body{ font-size:var(--fs-base); line-height:1.65; color:var(--color-text-secondary); }
.cards-footer{ margin-top:var(--space-8); padding-top:var(--space-6); border-top:1px solid var(--color-border); font-size:var(--fs-base); color:var(--color-text-secondary); line-height:1.65; }

/* ── ICP band ────────────────────────────────────────────── */
.icp-band{
  margin-top:var(--space-10); padding:var(--space-6) var(--space-8);
  background-color:var(--color-accent-subtle); border:1px solid var(--color-accent-border);
  border-radius:var(--radius-lg); display:flex; gap:var(--space-5); align-items:flex-start;
}
.icp-band .aperture-mark{ width:22px; height:22px; color:var(--color-accent); flex-shrink:0; margin-top:3px; }
.icp-band-text{ font-size:var(--fs-lg); line-height:1.55; color:var(--color-text); }
.icp-band-text strong{ font-weight:var(--fw-semibold); }

/* ── Ticker ──────────────────────────────────────────────── */
.ticker-wrap{ overflow:hidden; border-top:1px solid var(--color-border); border-bottom:1px solid var(--color-border); padding:12px 0; background-color:var(--color-bg-subtle); margin-top:var(--space-8); }
.ticker-track{ display:flex; width:max-content; animation:ticker-scroll 26s linear infinite; }
.ticker-track:hover{ animation-play-state:paused; }
.ticker-item{ font-family:var(--font-mono); font-size:var(--fs-2xs); text-transform:uppercase; letter-spacing:var(--tracking-label); color:var(--color-text-muted); white-space:nowrap; padding:0 var(--space-10); }
.ticker-sep{ font-family:var(--font-mono); font-size:var(--fs-2xs); color:var(--color-accent); padding:0 var(--space-2); }
@keyframes ticker-scroll{ 0%{ transform:translateX(0); } 100%{ transform:translateX(-50%); } }
@media (prefers-reduced-motion: reduce){ .ticker-track{ animation:none; } }

/* ── Questions ───────────────────────────────────────────── */
.questions-list{ margin-top:var(--space-10); list-style:none; }
.question-item{ display:flex; align-items:baseline; gap:var(--space-5); padding:var(--space-5) 0; border-bottom:1px solid var(--color-border); }
.question-item:first-child{ border-top:1px solid var(--color-border); }
.question-num{ font-family:var(--font-mono); font-size:var(--fs-xs); letter-spacing:var(--tracking-label); color:var(--color-accent-text); flex-shrink:0; min-width:1.75rem; }
.question-text{ font-size:var(--fs-xl); line-height:1.5; color:var(--color-text); }
.questions-closer{ margin-top:var(--space-8); font-size:var(--fs-lg); color:var(--color-text-secondary); }

/* ── Retainer / pullquote ────────────────────────────────── */
.retainer-body{ max-width:44rem; }
.retainer-p{ font-size:var(--fs-lg); line-height:1.7; color:var(--color-text-secondary); margin-bottom:var(--space-5); }
.pullquote{
  margin:var(--space-10) 0; padding-left:var(--space-6); border-left:var(--border-strong) solid var(--color-accent);
  font-family:var(--font-display); font-weight:var(--fw-semibold); font-size:clamp(1.35rem,2.6vw,1.7rem);
  line-height:1.3; letter-spacing:var(--tracking-snug); color:var(--color-text);
}

/* ── The math ────────────────────────────────────────────── */
.math-eq{ background-color:var(--color-surface-sunken); border:1px solid var(--color-border); border-radius:var(--radius-lg); padding:var(--space-10) var(--space-8); margin:var(--space-10) 0; max-width:52rem; }
.math-eq-text{ font-family:var(--font-display); font-weight:var(--fw-bold); font-size:clamp(1.2rem,2.6vw,1.75rem); color:var(--color-text); line-height:1.4; letter-spacing:var(--tracking-snug); }
.math-eq-text .lt{ color:var(--color-accent); }
.math-body{ font-size:var(--fs-lg); line-height:1.7; color:var(--color-text-secondary); max-width:44rem; }

/* ── The work ────────────────────────────────────────────── */
.work-intro{ font-size:var(--fs-lg); line-height:1.7; color:var(--color-text-secondary); max-width:44rem; margin-bottom:var(--space-12); }
.work-cases{ display:flex; flex-direction:column; gap:var(--space-4); }
.work-case{
  display:flex; flex-direction:column; gap:var(--space-3);
  padding:var(--space-6) var(--space-6); background-color:var(--color-surface);
  border:1px solid var(--color-border); border-radius:var(--radius-lg); box-shadow:var(--shadow-xs);
}
@media (min-width:768px){ .work-case{ flex-direction:row; align-items:flex-start; gap:var(--space-8); padding:var(--space-6) var(--space-8); } }
.work-case-left{ flex-shrink:0; min-width:11rem; }
.work-case-name{ font-family:var(--font-mono); font-size:var(--fs-sm); font-weight:var(--fw-medium); text-transform:uppercase; letter-spacing:var(--tracking-label); color:var(--color-text); margin-bottom:var(--space-2); }
.work-case-badge{ display:inline-flex; padding:4px 9px; background-color:var(--color-accent-subtle); border-radius:var(--radius-full); font-family:var(--font-mono); font-size:var(--fs-2xs); text-transform:uppercase; letter-spacing:0.1em; color:var(--color-accent-text); }
.work-case-body{ font-size:var(--fs-base); line-height:1.65; color:var(--color-text-secondary); }

/* ── Fleet / practice ────────────────────────────────────── */
.fleet-body,.practice-body{ max-width:44rem; }
.fleet-p,.practice-p{ font-size:var(--fs-lg); line-height:1.7; color:var(--color-text-secondary); margin-bottom:var(--space-5); }
.fleet-link{
  display:inline-flex; align-items:center; gap:var(--space-2);
  font-family:var(--font-mono); font-size:var(--fs-xs); font-weight:var(--fw-medium);
  text-transform:uppercase; letter-spacing:var(--tracking-label); color:var(--color-accent-text);
  margin-top:var(--space-3); transition:gap var(--dur-base) var(--ease-out);
}
.fleet-link:hover{ gap:var(--space-3); }

/* Fleet roster chips */
.fleet-roster{ display:flex; flex-wrap:wrap; gap:var(--space-3); margin:var(--space-6) 0 var(--space-2); }
.fleet-chip{ display:inline-flex; flex-direction:column; gap:2px; padding:var(--space-3) var(--space-4); background-color:var(--color-surface); border:1px solid var(--color-border); border-radius:var(--radius-md); min-width:9.5rem; }
.fleet-chip-name{ font-family:var(--font-display); font-weight:var(--fw-bold); font-size:var(--fs-base); }
.fleet-chip-role{ font-family:var(--font-mono); font-size:var(--fs-2xs); text-transform:uppercase; letter-spacing:0.1em; color:var(--color-text-muted); }

/* ── Fit check ───────────────────────────────────────────── */
.fit-grid{ display:grid; grid-template-columns:1fr; gap:var(--space-4); margin-top:var(--space-10); }
@media (min-width:768px){ .fit-grid{ grid-template-columns:1fr 1fr; } }
.fit-col{ padding:var(--space-8); background-color:var(--color-surface); border:1px solid var(--color-border); border-radius:var(--radius-lg); }
.fit-col-label{ font-family:var(--font-mono); font-size:var(--fs-2xs); text-transform:uppercase; letter-spacing:var(--tracking-label); color:var(--color-accent-text); margin-bottom:var(--space-5); }
.fit-list{ list-style:none; }
.fit-item{ font-size:var(--fs-base); line-height:1.55; color:var(--color-text-secondary); padding:var(--space-3) 0; border-bottom:1px solid var(--color-border); display:flex; align-items:baseline; gap:var(--space-3); }
.fit-item::before{ content:''; width:6px; height:6px; margin-top:8px; flex-shrink:0; border:1.5px solid var(--color-accent); }
.fit-item:last-child{ border-bottom:none; }
.fit-closer{ margin-top:var(--space-8); font-size:var(--fs-base); color:var(--color-text-muted); }

/* ── Steps ───────────────────────────────────────────────── */
.steps{ margin-top:var(--space-10); display:flex; flex-direction:column; gap:0; }
.step{ display:flex; align-items:flex-start; gap:var(--space-6); padding:var(--space-6) 0; border-bottom:1px solid var(--color-border); }
.step:first-child{ border-top:1px solid var(--color-border); }
.step-num{ font-family:var(--font-mono); font-size:var(--fs-sm); letter-spacing:var(--tracking-label); color:var(--color-accent-text); flex-shrink:0; min-width:2rem; padding-top:3px; }
.step-title{ font-family:var(--font-display); font-weight:var(--fw-bold); font-size:var(--fs-xl); margin-bottom:var(--space-1); letter-spacing:var(--tracking-snug); }
.step-body{ font-size:var(--fs-base); line-height:1.6; color:var(--color-text-secondary); }

/* ── Dark closer + footer (ink panel, iris-bright accents) ── */
.close-section{ padding:var(--space-24) 0; background-color:var(--color-ink); color:var(--n-0); position:relative; overflow:hidden; }
.close-section .aperture-bg{ position:absolute; top:-40px; right:-40px; width:280px; height:280px; color:rgba(122,85,255,.16); pointer-events:none; }
.close-section .section-h2{ color:var(--n-0); max-width:20ch; position:relative; }
.close-body{ font-size:var(--fs-lg); line-height:1.7; color:rgba(255,255,255,.72); max-width:36rem; margin-bottom:var(--space-10); position:relative; }
.close-section .btn-primary{ background-color:var(--iris-bright); }
.close-section .btn-primary:hover{ background-color:#8E6EFF; }
.close-overline{ color:var(--iris-bright); margin-bottom:var(--space-5); position:relative; }

.footer{ padding:var(--space-12) 0; background-color:var(--color-ink); color:var(--n-0); border-top:1px solid rgba(255,255,255,.10); }
.footer-inner{ display:flex; flex-direction:column; gap:var(--space-6); align-items:flex-start; }
@media (min-width:768px){ .footer-inner{ flex-direction:row; align-items:center; justify-content:space-between; } }
.footer-wordmark{ font-family:var(--font-display); font-weight:var(--fw-bold); font-size:var(--fs-xl); letter-spacing:var(--tracking-tight); color:var(--n-0); display:inline-flex; align-items:center; gap:8px; }
.footer-wordmark .period{ color:var(--iris-bright); }
.footer-wordmark .aperture-mark{ width:15px; height:15px; color:var(--iris-bright); }
.footer-links{ display:flex; flex-wrap:wrap; gap:var(--space-5); }
.footer-link{ font-family:var(--font-mono); font-size:var(--fs-2xs); text-transform:uppercase; letter-spacing:var(--tracking-label); color:rgba(255,255,255,.6); transition:color var(--dur-fast) var(--ease-out); }
.footer-link:hover{ color:var(--iris-bright); }
.footer-legal{ font-size:var(--fs-xs); color:rgba(255,255,255,.5); line-height:1.5; }

/* ── Modal ───────────────────────────────────────────────── */
.modal-overlay{
  position:fixed; inset:0; z-index:100; background-color:var(--color-overlay);
  backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px);
  display:flex; align-items:center; justify-content:center; padding:1rem;
  opacity:0; pointer-events:none; transition:opacity var(--dur-base) var(--ease-out);
}
.modal-overlay.open{ opacity:1; pointer-events:all; }
.modal-card{
  background-color:var(--color-surface); border:1px solid var(--color-border); border-radius:var(--radius-lg);
  width:100%; max-width:480px; padding:var(--space-10) var(--space-8); box-shadow:var(--shadow-xl);
  transform:translateY(16px); transition:transform var(--dur-slow) var(--ease-out); max-height:90vh; overflow-y:auto;
}
.modal-overlay.open .modal-card{ transform:translateY(0); }
@media (max-width:639px){
  .modal-overlay{ align-items:flex-end; padding:0; }
  .modal-card{ max-width:100%; width:100%; padding:var(--space-8) var(--space-5) var(--space-8); padding-bottom:calc(var(--space-8) + env(safe-area-inset-bottom,0px)); border-radius:14px 14px 0 0; transform:translateY(24px); max-height:92vh; }
}
.modal-header{ display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:var(--space-5); }
.modal-title{ font-family:var(--font-display); font-weight:var(--fw-bold); font-size:var(--fs-3xl); letter-spacing:var(--tracking-tight); line-height:1.1; }
.modal-close{ color:var(--color-text-muted); font-size:1.5rem; line-height:1; min-width:44px; min-height:44px; display:inline-flex; align-items:center; justify-content:center; margin:-.5rem -.5rem 0 .5rem; flex-shrink:0; transition:color var(--dur-fast) var(--ease-out); }
.modal-close:hover{ color:var(--color-text); }
.modal-intro{ font-size:var(--fs-md); line-height:1.65; color:var(--color-text-secondary); margin-bottom:var(--space-6); }
.field{ margin-bottom:var(--space-5); }
.field-label{ display:block; font-family:var(--font-mono); font-size:var(--fs-2xs); text-transform:uppercase; letter-spacing:var(--tracking-label); color:var(--color-text-muted); margin-bottom:var(--space-2); }
.field-input,.field-textarea{
  width:100%; padding:11px 13px; background-color:var(--color-surface);
  border:1px solid var(--color-border-strong); border-radius:var(--radius-md);
  font-family:var(--font-sans); font-size:16px; color:var(--color-text); transition:border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out); appearance:none;
}
.field-input:focus,.field-textarea:focus{ border-color:var(--color-accent); box-shadow:var(--focus-ring); outline:none; }
.field-input::placeholder,.field-textarea::placeholder{ color:var(--color-text-faint); }
.field-textarea{ resize:vertical; min-height:100px; }
.field-error{ display:none; margin-top:var(--space-2); font-size:var(--fs-xs); color:var(--red-500); }
.field.invalid .field-error{ display:block; }
.field.invalid .field-input,.field.invalid .field-textarea{ border-color:var(--red-500); }
.honeypot{ display:none; }
.modal-submit{ width:100%; margin-top:var(--space-2); }
.modal-success{ display:none; text-align:center; padding:var(--space-10) var(--space-4); }
.modal-overlay.success .modal-form{ display:none; }
.modal-overlay.success .modal-success{ display:block; }
.modal-success-text{ font-family:var(--font-display); font-weight:var(--fw-bold); font-size:var(--fs-2xl); color:var(--color-text); }

/* ── Scroll reveal ───────────────────────────────────────── */
.reveal{ opacity:0; transform:translateY(12px); transition:opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out); }
.reveal.in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){ .reveal{ opacity:1; transform:none; transition:none; } }
.no-js .reveal{ opacity:1; transform:none; }

/* ── Utilities ───────────────────────────────────────────── */
.hidden{ display:none; }
.sr-only{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); border:0; }
