/* Cortex Prime Technologies - design system
   Brand manual, edition 01, issued 2026-08-12. Section numbers below refer to it.
   Every value here comes from the manual. Where the manual is silent, the quieter option wins.

   Authoring rule: use the semantic aliases (--surface-page, --text-muted, --border-hairline),
   not the raw ramps. The ramps exist so the aliases have somewhere to point. */

/* ---------- 05 / TYPOGRAPHY: families, self-hosted ---------- */

/* Self-hosted, no external request. Archivo ships as one variable file per subset and
   covers 400 to 600 from it; Plex Mono is static, one file per weight. The -ext subsets
   carry the Romanian diacritics, which the founder's name needs. */

@font-face{font-family:"Archivo";font-weight:400 600;font-style:normal;font-display:swap;
  src:url("fonts/Archivo-Variable.woff2") format("woff2-variations");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,
                U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Archivo";font-weight:400 600;font-style:normal;font-display:swap;
  src:url("fonts/Archivo-Variable-ext.woff2") format("woff2-variations");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,
                U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,
                U+2113,U+2C60-2C7F,U+A720-A7FF}

@font-face{font-family:"IBM Plex Mono";font-weight:400;font-style:normal;font-display:swap;
  src:url("fonts/IBMPlexMono-Regular.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,
                U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"IBM Plex Mono";font-weight:400;font-style:normal;font-display:swap;
  src:url("fonts/IBMPlexMono-Regular-ext.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,
                U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,
                U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"IBM Plex Mono";font-weight:500;font-style:normal;font-display:swap;
  src:url("fonts/IBMPlexMono-Medium.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,
                U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"IBM Plex Mono";font-weight:500;font-style:normal;font-display:swap;
  src:url("fonts/IBMPlexMono-Medium-ext.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,
                U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,
                U+2113,U+2C60-2C7F,U+A720-A7FF}

:root{

  /* ---------- 04 / PALETTE ---------- */

  /* Basalt, the neutral spine */
  --basalt-950:#06090A; --basalt-900:#0D1113; --basalt-800:#171C1F; --basalt-700:#262D31;
  --basalt-600:#3A4349; --basalt-500:#5A656C; --basalt-400:#808B92; --basalt-300:#A9B2B7;
  --basalt-200:#CDD3D6; --basalt-100:#E7EAEB;

  /* Paper, warm survey stock. Never pure white. */
  --paper-000:#FCFBF8; --paper-050:#F6F5F1; --paper-100:#EDEBE4;

  /* Signal vermilion, the only accent. One use per view. */
  --signal-700:#8F2A0E; --signal-600:#C4360F; --signal-500:#E4441F;
  --signal-400:#F0714F; --signal-200:#F7C3B2; --signal-100:#FBE4DB;

  /* Survey teal, secondary data hue. Charts and data only, never chrome. */
  --teal-700:#0F3F3D; --teal-600:#175A57; --teal-500:#1F7370; --teal-300:#7FB3B1; --teal-100:#DCEBEA;

  /* Semantic states */
  --positive:#1E7A55; --warning:#9A6A00; --critical:#A3231A; --info:#2C5F8A;

  /* ---------- semantic aliases: paper surfaces (the default) ---------- */

  --surface-page:var(--paper-050);
  --surface-card:var(--paper-000);
  --surface-sunken:var(--paper-100);
  --surface-invert:var(--basalt-950);

  --text-strong:var(--basalt-950);
  --text-body:var(--basalt-700);
  --text-muted:var(--basalt-500);
  --text-faint:var(--basalt-400);      /* non-essential metadata only, above 11px */
  --text-invert:var(--paper-000);
  --text-link:var(--basalt-950);
  --text-link-hover:var(--signal-600);

  --accent:var(--signal-500);
  --accent-strong:var(--signal-600);

  /* 06 / hairlines do the work: ink alpha, not a fixed grey */
  --ink:6,9,10;
  --border-hairline:rgba(var(--ink),.12);
  --border-strong:rgba(var(--ink),.28);
  --border-emphasis:var(--signal-500);
  --graticule-ink:rgba(var(--ink),.08);

  --focus-ring:var(--signal-500);

  /* ---------- 05 / SCALE ---------- */

  --display-1:76px; --display-2:56px; --display-3:42px;
  --title-1:30px;   --title-2:24px;   --title-3:19px;
  --body-1:17px;    --body-2:15px;    --body-3:13px;
  --mono-1:13px;    --eyebrow:11px;

  --lh-display:1.02; --lh-title:1.18; --lh-row:1.30; --lh-body:1.55; --lh-mono:1.40;
  --tr-display:-.022em; --tr-title:-.014em; --tr-mono:.02em; --tr-eyebrow:.14em;

  --font-sans:"Archivo",system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,monospace;

  /* Measures. The manual is explicit: 64ch prose, 48ch ledes, 34ch headlines. */
  --measure-prose:64ch; --measure-lede:48ch; --measure-head:34ch;

  /* ---------- 06 / LAYOUT ---------- */

  --container:1320px; --gutter:40px; --rhythm:96px;
  --s2:2px; --s4:4px; --s8:8px; --s12:12px; --s16:16px; --s24:24px;
  --s32:32px; --s48:48px; --s64:64px; --s96:96px; --s128:128px; --s176:176px;

  --radius-panel:0; --radius-control:2px; --radius-dialog:4px;

  --shadow-1:0 1px 2px rgba(6,9,10,.06);
  --shadow-2:0 8px 24px -12px rgba(6,9,10,.22);
  --shadow-3:0 24px 64px -24px rgba(6,9,10,.34);

  /* ---------- 09 / MOTION ---------- */

  --dur-1:120ms; --dur-2:180ms; --dur-3:260ms; --dur-4:420ms;
  --ease-standard:cubic-bezier(.2,0,0,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
}

/* ---------- 04 / DARK SURFACES: the instrument scope ----------
   Not a dark mode. Basalt is the brand's primary field; the same tokens remap.
   Vermilion lightens one step to signal-400 so it clears 5:1 on basalt-950. */

[data-theme="dark"]{
  --surface-page:var(--basalt-950);
  --surface-card:var(--basalt-900);
  --surface-sunken:var(--basalt-800);
  --surface-invert:var(--paper-050);

  --text-strong:var(--paper-000);
  --text-body:var(--basalt-200);
  --text-muted:var(--basalt-300);
  --text-faint:var(--basalt-400);
  --text-invert:var(--basalt-950);
  --text-link:var(--paper-000);
  --text-link-hover:var(--signal-400);

  --accent:var(--signal-400);
  --accent-strong:var(--signal-400);

  --ink:252,251,248;
  --border-hairline:rgba(var(--ink),.14);
  --border-strong:rgba(var(--ink),.28);
  --graticule-ink:rgba(var(--ink),.08);

  --focus-ring:var(--signal-400);
}

/* ---------- base ---------- */

*,*::before,*::after{box-sizing:border-box}

html{-webkit-text-size-adjust:100%}

body{
  margin:0;
  background:var(--surface-page);
  color:var(--text-body);
  font-family:var(--font-sans);
  font-size:var(--body-2);
  line-height:var(--lh-body);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

img,svg,canvas{display:block;max-width:100%}

h1,h2,h3,h4{margin:0;color:var(--text-strong);font-weight:600;text-wrap:balance}
p{margin:0}

/* 04: no link ever renders browser blue */
a{color:var(--text-link);text-decoration-thickness:1px;text-underline-offset:.18em}
a:hover{color:var(--text-link-hover)}

/* 09 / STATES: focus is a 2px vermilion outline at 2px offset, everywhere */
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
input:focus-visible,select:focus-visible,textarea:focus-visible{box-shadow:0 0 0 3px var(--signal-100)}

::selection{background:var(--signal-200);color:var(--basalt-950)}

.skip{
  position:absolute;left:-9999px;top:0;z-index:99;
  padding:12px 16px;background:var(--basalt-950);color:var(--paper-000);
  font:500 var(--body-3)/1 var(--font-sans);
}
.skip:focus{left:0}

/* ---------- 05 / type roles ---------- */

.d1{font-size:var(--display-1);line-height:var(--lh-display);letter-spacing:var(--tr-display)}
.d2{font-size:var(--display-2);line-height:var(--lh-display);letter-spacing:var(--tr-display)}
.d3{font-size:var(--display-3);line-height:var(--lh-title);letter-spacing:var(--tr-display)}
.t1{font-size:var(--title-1);line-height:var(--lh-title);letter-spacing:var(--tr-title)}
.t2{font-size:var(--title-2);line-height:var(--lh-title);letter-spacing:var(--tr-title)}
.t3{font-size:var(--title-3);line-height:var(--lh-row);letter-spacing:var(--tr-title)}

.d1,.d2,.d3{max-width:var(--measure-head)}
/* Tracking on a display role is for that line only. If one of these ever lands on a
   container rather than a heading, its descendants must not inherit the negative value. */
.d1 *,.d2 *,.d3 *,.t1 *,.t2 *,.t3 *{letter-spacing:normal}

.lede{
  font-size:var(--body-1);line-height:var(--lh-body);
  max-width:var(--measure-lede);color:var(--text-body);
}
.prose{font-size:var(--body-2);max-width:var(--measure-prose)}
.caption{font-size:var(--body-2);color:var(--text-muted)}

/* 05: Plex Mono carries every value read as evidence */
.mono{font-family:var(--font-mono);font-size:var(--mono-1);line-height:var(--lh-mono);
  letter-spacing:var(--tr-mono);color:var(--text-muted)}

.eyebrow{
  font-family:var(--font-mono);font-size:var(--eyebrow);font-weight:500;
  line-height:1.2;letter-spacing:var(--tr-eyebrow);text-transform:uppercase;
  color:var(--text-muted);margin:0 0 var(--s16);
}
.eyebrow.accent{color:var(--accent)}

/* 05 / TYPE IN USE: the evidence line closes a block. Nothing follows it. */
.evidence{
  font-family:var(--font-mono);font-size:var(--mono-1);line-height:var(--lh-mono);
  letter-spacing:var(--tr-mono);color:var(--text-faint);margin-top:var(--s24);
}

.badge{
  display:inline-block;padding:3px 8px;border-radius:var(--radius-control);
  font-family:var(--font-mono);font-size:var(--eyebrow);font-weight:500;
  letter-spacing:var(--tr-eyebrow);text-transform:uppercase;
}
.badge.positive{background:#DCEFE6;color:var(--positive)}
.badge.info{background:#DDE8F1;color:var(--info)}

/* ---------- 06 / layout ---------- */

.wrap{width:100%;max-width:var(--container);margin:0 auto;padding:0 var(--gutter)}

.section{padding:var(--rhythm) 0}
.section.tight{padding:var(--s64) 0}

/* A band is a full-width tone change. Panels and bands take radius 0. */
.band{background:var(--surface-sunken);border-radius:var(--radius-panel)}
.band.invert{background:var(--surface-invert)}

/* 06 / THE GRATICULE: the only pattern in the system.
   48px map grid at 7-9% ink over basalt. Never behind body copy, never on paper. */
.graticule{
  background-image:
    linear-gradient(to right,var(--graticule-ink) 1px,transparent 1px),
    linear-gradient(to bottom,var(--graticule-ink) 1px,transparent 1px);
  background-size:48px 48px;
}

/* 06: a section opener is a 2px basalt rule */
.opener{border-top:2px solid var(--text-strong);padding-top:var(--s24)}
.rule{border:0;border-top:1px solid var(--border-hairline);margin:var(--s48) 0}
.rule.emphasis{border-top:2px solid var(--border-emphasis)}

/* ---------- 06 / THE 1px-GAP GRID ----------
   The brand's signature layout device. Cells are separated by border colour,
   not by space, so a grid of cards reads as a table of evidence. */

.matrix{
  display:grid;gap:1px;background:var(--border-hairline);
  border:1px solid var(--border-hairline);
  grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
}
.matrix > .cell{background:var(--surface-card);padding:var(--s32);border-radius:0;
  letter-spacing:normal;font-size:var(--body-2);line-height:var(--lh-body)}
.matrix > .cell.accent{background:var(--signal-500)}
.matrix > .cell.accent,
.matrix > .cell.accent h3{color:var(--paper-000)}
.matrix > .cell.invert{background:var(--basalt-950)}
.matrix > .cell.invert,
.matrix > .cell.invert h3{color:var(--paper-000)}

.cell .n{
  font-family:var(--font-mono);font-size:var(--eyebrow);font-weight:500;
  letter-spacing:var(--tr-eyebrow);text-transform:uppercase;color:var(--text-faint);
  margin-bottom:var(--s16);
}
.cell.accent .n,.cell.invert .n{color:rgba(252,251,248,.62)}
.cell h3{font-size:var(--title-2);line-height:var(--lh-title);letter-spacing:var(--tr-title);
  margin-bottom:var(--s12)}
.cell p{font-size:var(--body-2);letter-spacing:normal;color:var(--text-muted)}
.cell.accent p,.cell.invert p{color:rgba(252,251,248,.82)}

/* A cell that is itself a link. 09 / STATES: the surface sinks one paper step and
   the prose darkens toward basalt. No lift, no scale, no opacity fade. */
a.cell{text-decoration:none;
  transition:background var(--dur-2) var(--ease-standard),color var(--dur-2) var(--ease-standard)}
a.cell:hover{background:var(--surface-sunken)}
a.cell:hover p{color:var(--text-body)}

/* ---------- rows: a hairline table of claims ---------- */

.rows{border-top:1px solid var(--border-hairline)}
.row{
  display:grid;grid-template-columns:minmax(180px,.36fr) 1fr;gap:var(--s24);
  padding:var(--s24) 0;border-bottom:1px solid var(--border-hairline);
}
.row > b{font-size:var(--title-3);font-weight:600;line-height:var(--lh-row);
  letter-spacing:var(--tr-title);color:var(--text-strong)}
.row > span{font-size:var(--body-2);color:var(--text-muted)}
.row .num{font-family:var(--font-mono);font-size:var(--mono-1);letter-spacing:var(--tr-mono);
  color:var(--accent)}
/* the one highlighted row: the layer in between */
.row.us{background:var(--surface-invert);margin:0 calc(var(--gutter) * -1);
  padding-left:var(--gutter);padding-right:var(--gutter)}
.row.us > b{color:var(--paper-000)}
.row.us > span{color:rgba(252,251,248,.82)}

/* ---------- 09 / controls ---------- */

.btn{
  display:inline-flex;align-items:center;gap:var(--s8);
  padding:11px 18px;border:1px solid transparent;border-radius:var(--radius-control);
  font:500 var(--body-2)/1 var(--font-sans);text-decoration:none;cursor:pointer;
  transition:background var(--dur-1) var(--ease-standard),
             color var(--dur-1) var(--ease-standard),
             border-color var(--dur-2) var(--ease-standard);
}
/* Solid button: basalt at rest, vermilion on hover. This is the one accent. */
.btn-primary{background:var(--basalt-950);color:var(--paper-000)}
.btn-primary:hover{background:var(--signal-500);color:var(--paper-000)}
.btn-ghost{background:transparent;color:var(--text-strong);border-color:var(--border-strong)}
.btn-ghost:hover{color:var(--text-strong);border-color:var(--text-strong);text-decoration:underline}
.btn:active{filter:brightness(.88)}
.btn[aria-disabled="true"]{opacity:.38;pointer-events:none}

[data-theme="dark"] .btn-primary{background:var(--signal-500);color:var(--paper-000)}
[data-theme="dark"] .btn-primary:hover{background:var(--signal-400)}
[data-theme="dark"] .btn-ghost{color:var(--paper-000)}
[data-theme="dark"] .btn-ghost:hover{border-color:var(--paper-000)}

/* ---------- 10 / DIGITAL: the shared shell ---------- */

.nav{
  position:sticky;top:0;z-index:40;height:68px;
  background:var(--basalt-950);border-bottom:1px solid rgba(252,251,248,.14);
}
.nav .wrap{display:flex;align-items:center;gap:var(--s24);height:100%}

.brand{display:flex;align-items:center;gap:var(--s12);text-decoration:none;margin-right:auto}
.brand img{width:26px;height:26px}
/* 03: "Cortex Prime" semibold, "Technologies" regular and muted, -0.03em */
.brand .name{font-size:var(--body-2);font-weight:600;letter-spacing:-.03em;color:var(--paper-000)}
.brand .name span{font-weight:400;color:var(--basalt-400)}

.navlinks{display:flex;align-items:center;gap:var(--s24);list-style:none;margin:0;padding:0}
.navlinks a{
  font-size:var(--body-3);font-weight:500;color:var(--basalt-300);text-decoration:none;
  padding:4px 0;border-bottom:2px solid transparent;
  transition:color var(--dur-1) var(--ease-standard),border-color var(--dur-2) var(--ease-standard);
}
.navlinks a:hover{color:var(--paper-000)}
.navlinks a[aria-current="page"]{color:var(--paper-000);border-bottom-color:var(--signal-500)}

/* 04: the nav action stays neutral. The one vermilion element belongs to the page,
   not to a bar that is on screen at the same time as it. */
.nav .btn{padding:9px 14px;font-size:var(--body-3);
  color:var(--paper-000);border-color:rgba(252,251,248,.28);background:transparent}
.nav .btn:hover{border-color:var(--paper-000);text-decoration:underline}

.nav-burger{display:none;width:40px;height:40px;background:transparent;border:1px solid rgba(252,251,248,.28);
  border-radius:var(--radius-control);cursor:pointer;padding:0}
.nav-burger span{display:block;width:16px;height:1px;background:var(--paper-000);margin:4px auto}

/* ---------- hero ---------- */

.hero{position:relative;background:var(--basalt-950);color:var(--paper-000);overflow:hidden}
.hero .wrap{position:relative;z-index:2;padding-top:var(--s128);padding-bottom:var(--s96)}
/* the hero is the only graticule field on the page */
.hero .field{position:absolute;inset:0;z-index:0}
.hero canvas{position:absolute;inset:0;width:100%;height:100%;z-index:1}
.hero h1{color:var(--paper-000)}
.hero .lede{color:var(--basalt-200);margin-top:var(--s24)}
.hero .eyebrow{color:var(--basalt-400)}
/* the slogan is a signature, not a title: it never carries the H1 weight */
.hero .signature{color:var(--signal-400)}
.actions{display:flex;flex-wrap:wrap;gap:var(--s12);margin-top:var(--s32)}

/* mono row of domains above a hairline */
.domains{
  display:flex;flex-wrap:wrap;gap:var(--s24);margin-top:var(--s48);padding-top:var(--s16);
  border-top:1px solid rgba(252,251,248,.14);
  font-family:var(--font-mono);font-size:var(--mono-1);letter-spacing:var(--tr-mono);
  color:var(--basalt-400);
}

/* a text page opens on paper with a 2px basalt rule, no scene behind it */
.thead{padding:var(--s96) 0 var(--s48);border-bottom:1px solid var(--border-hairline)}

/* ---------- 08 / IMAGERY: full-bleed evidence band ---------- */

.frame{
  position:relative;width:100%;min-height:340px;border-radius:0;
  background:linear-gradient(135deg,var(--basalt-700),var(--basalt-500) 45%,var(--basalt-800));
  filter:saturate(.5) contrast(1.04);
}
.frame .label{
  position:absolute;left:var(--s24);bottom:var(--s24);
  font-family:var(--font-mono);font-size:var(--mono-1);letter-spacing:var(--tr-mono);
  color:rgba(252,251,248,.72);
}
/* type over imagery uses a bottom-up scrim, never a translucent capsule */
.frame .scrim{position:absolute;inset:auto 0 0;height:60%;
  background:linear-gradient(to top,rgba(6,9,10,.86),transparent)}

/* ---------- 09 / MOTION: one-time reveal, 420ms, fade and 8px rise ---------- */

/* Scoped to .js on purpose. Content must never depend on a script running to become
   visible: without the class the page renders fully, which covers no-JS readers, a blocked
   script, and any case where the observer never fires. */
.js .rv{opacity:0;transform:translateY(8px);
  transition:opacity var(--dur-4) var(--ease-out),transform var(--dur-4) var(--ease-out)}
.js .rv.in{opacity:1;transform:none}
.js .rv.delay-1{transition-delay:60ms}
.js .rv.delay-2{transition-delay:120ms}
.js .rv.delay-3{transition-delay:180ms}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:0ms !important;transition-duration:0ms !important}
  .rv{opacity:1;transform:none}
}

/* ---------- footer ---------- */

.foot{background:var(--basalt-950);color:var(--basalt-300);padding:var(--s64) 0 var(--s32)}
.foot .cols{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:var(--s48);
  padding-bottom:var(--s32);border-bottom:1px solid rgba(252,251,248,.14)}
.foot h4{font-size:var(--body-2);color:var(--paper-000);margin-bottom:var(--s16)}
.foot ul{list-style:none;margin:0;padding:0;display:grid;gap:var(--s8)}
.foot a{color:var(--basalt-300);font-size:var(--body-2);text-decoration:none}
.foot a:hover{color:var(--paper-000);text-decoration:underline}
.foot .note{font-size:var(--body-2);color:var(--basalt-400);max-width:var(--measure-lede);margin-top:var(--s12)}
.foot .legal{display:flex;flex-wrap:wrap;gap:var(--s16);justify-content:space-between;
  padding-top:var(--s24);font-family:var(--font-mono);font-size:var(--mono-1);
  letter-spacing:var(--tr-mono);color:var(--basalt-500)}

/* ---------- page furniture ---------- */

.figs{display:grid;gap:1px;background:var(--border-hairline);border:1px solid var(--border-hairline);
  grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-top:var(--s48)}
.fig{background:var(--surface-card);padding:var(--s24)}
.fig b{display:block;font-size:var(--title-1);font-weight:600;letter-spacing:var(--tr-title);
  color:var(--text-strong)}
.fig span{display:block;margin-top:var(--s8);font-size:var(--body-2);color:var(--text-muted)}

.plist{list-style:none;margin:var(--s24) 0 0;padding:0;display:grid;gap:var(--s12)}
.plist li{position:relative;padding-left:var(--s24);font-size:var(--body-2);color:var(--text-muted)}
.plist li::before{content:"";position:absolute;left:0;top:.62em;width:8px;height:1px;
  background:var(--border-strong)}

.chips{display:flex;flex-wrap:wrap;gap:var(--s8);margin-top:var(--s32)}
.chip{padding:6px 10px;border:1px solid var(--border-hairline);border-radius:var(--radius-control);
  font-family:var(--font-mono);font-size:var(--mono-1);letter-spacing:var(--tr-mono);
  color:var(--text-muted)}

.person{display:grid;grid-template-columns:auto 1fr;gap:var(--s32);align-items:start;
  margin-top:var(--s48)}
.person .initials{width:64px;height:64px;display:grid;place-items:center;
  background:var(--basalt-950);color:var(--paper-000);border-radius:var(--radius-control);
  font-family:var(--font-mono);font-size:var(--body-2);letter-spacing:var(--tr-mono)}
.person h3{font-size:var(--title-1);letter-spacing:var(--tr-title)}
.person .role{font-family:var(--font-mono);font-size:var(--mono-1);letter-spacing:var(--tr-eyebrow);
  text-transform:uppercase;color:var(--text-muted);margin:var(--s8) 0 var(--s24)}
.person p{font-size:var(--body-2);color:var(--text-muted);max-width:var(--measure-prose)}
.person p + p{margin-top:var(--s16)}

.note{border-top:1px solid var(--border-hairline);padding:var(--s32) 0}
.note .date{font-family:var(--font-mono);font-size:var(--mono-1);letter-spacing:var(--tr-mono);
  color:var(--text-faint);margin-bottom:var(--s12)}
.note h3{font-size:var(--title-2);letter-spacing:var(--tr-title);margin-bottom:var(--s12)}
.note p{font-size:var(--body-2);color:var(--text-muted);max-width:var(--measure-prose)}

.cta{display:grid;grid-template-columns:1.4fr 1fr;gap:var(--s48);align-items:end;
  padding:var(--s64);background:var(--surface-sunken)}

/* ---------- responsive ---------- */

@media (max-width:1100px){
  :root{--display-1:56px;--display-2:44px;--display-3:34px;--title-1:26px;--rhythm:72px}
  .foot .cols{grid-template-columns:1fr 1fr}
  .cta{grid-template-columns:1fr;align-items:start}
}

@media (max-width:820px){
  :root{--display-1:40px;--display-2:34px;--display-3:28px;--title-1:24px;
        --gutter:20px;--rhythm:56px}
  .navlinks{
    display:none;position:absolute;top:68px;left:0;right:0;flex-direction:column;
    align-items:flex-start;gap:0;padding:var(--s16) var(--gutter);
    background:var(--basalt-950);border-bottom:1px solid rgba(252,251,248,.14);
  }
  .navlinks.open{display:flex}
  .navlinks li{width:100%}
  .navlinks a{display:block;padding:var(--s12) 0;border-bottom:0}
  .nav-burger{display:block}
  .nav .btn-primary{display:none}
  .row{grid-template-columns:1fr;gap:var(--s8)}
  .row.us{margin:0;padding-left:var(--s16);padding-right:var(--s16)}
  .person{grid-template-columns:1fr}
  .foot .cols{grid-template-columns:1fr}
  .cta{padding:var(--s32)}
  .hero .wrap{padding-top:var(--s64);padding-bottom:var(--s64)}
}
