/* ================================================================
   CALDER v5 — shared stylesheet
   Extracted VERBATIM from prototypes/precision-02.html (the LOCKED
   homepage). Section 1 below is the shared base + home-page blocks,
   unchanged from the prototype. Section 2 adds the subpage grammar
   in the same precision language (dark canvas, hairlines, mono
   kickers, one shared grid). Body classes: .home and .subpage,
   plus a per-page class on subpages.
   ================================================================ */

/* ============================ TOKENS ============================ */
/* DEEP WATER (promoted 2026-07-07 from theme-deepwater.css, Fraser-approved).
   The base theme is the dark water; every page's field is one continuous
   arc from abyss through Calder paper and back (per-page body gradients
   below). Clay is the only warm thing and it is a MARK, never an
   atmosphere. Light-ground values live in the .surface scope. */
:root{
  --bg:#0a1013;            /* abyss */
  --bg-2:#0d181e;
  --ink:#e7edee;
  --muted:rgba(231,237,238,.62);
  --faint:rgba(231,237,238,.54);
  --hair:rgba(231,237,238,.10);
  --hair-2:rgba(231,237,238,.06);

  /* Calder clay: the accent. --copper-text is clay for SMALL TEXT on the
     dark water (AA 4.9+ at the field's palest depth); --steel is for
     borrowed-accent elements that are not copper marks. */
  --accent:#C8794A;
  --copper-text:#d4854f;
  --steel:#7fa8b8;
  --accent-soft:color-mix(in oklab, var(--accent) 55%, transparent);
  --accent-dim:color-mix(in oklab, var(--accent) 18%, transparent);
  --accent-glow:color-mix(in oklab, var(--accent) 22%, transparent);
  --accent-faint:color-mix(in oklab, var(--accent) 11%, transparent);
  --on-accent:#07090c;

  /* canonical believed/actual poles, lightened for dark. accent-independent */
  --view-think:#d08a5a;   /* believed, warm */
  --view-actual:#7fa8b8;  /* actual, cool */

  --glass:linear-gradient(160deg, rgba(231,237,238,.045), rgba(231,237,238,.012));

  /* tier colours: scorecard artefact ONLY (dark-ground ramp; the light
     ramp is scoped where the artefact sits on paper) */
  --t-critical:#d97663;
  --t-exposed:#cd7f44;
  --t-develop:#c39a4e;
  --t-solid:#8b9793;

  --sans:'Archivo',system-ui,sans-serif;
  --serif:'Source Serif 4',Georgia,serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --maxw:1200px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  font-family:var(--sans);
  background:var(--bg);
  color:var(--ink);
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{max-width:100%}
a{color:inherit;text-decoration:none}
svg{display:block}

/* grain + vignette overlays, fixed, never interactive */
.grain{position:fixed;inset:0;z-index:2;pointer-events:none;opacity:.04;transform:translateZ(0);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");}
.vignette{position:fixed;inset:0;z-index:1;pointer-events:none;transform:translateZ(0);
  background:radial-gradient(120% 80% at 50% -10%, transparent 40%, rgba(2,6,9,.42) 100%);}
/* the vignette belongs to the deep: it thins away as the page surfaces and
   returns for the final depth. Fallback: the weaker static one above. */
@supports (animation-timeline: scroll()){
  @media (prefers-reduced-motion: no-preference){
    .vignette{animation:vig-fade linear both;animation-timeline:scroll(root)}
    @keyframes vig-fade{0%,14%{opacity:1}24%,86%{opacity:0}96%,100%{opacity:1}}
  }
}
::selection{background:rgba(127,168,184,.30)}

/* ============================ LAYOUT PRIMITIVES ============================ */
.wrap{width:min(var(--maxw),90vw);margin-inline:auto}
section{position:relative;z-index:3}
.pad{padding-block:clamp(4.5rem,9vh,7.5rem)}
.kicker{
  font-family:var(--mono);font-size:.72rem;font-weight:500;letter-spacing:.22em;
  text-transform:uppercase;color:var(--copper-text);display:inline-flex;align-items:center;gap:.7em;
}
.kicker::before{content:"";width:1.8rem;height:1px;background:linear-gradient(90deg,transparent,color-mix(in oklab,var(--copper-text) 55%,transparent));}
h1,h2,h3{font-weight:600;letter-spacing:-.02em;line-height:1.05;text-wrap:balance}
h1{font-size:clamp(2.6rem,6.4vw,5.4rem)}
h2{font-size:clamp(2rem,4.6vw,3.6rem);line-height:1.08}
/* one kicker/h2 rhythm for every home section; margin-block only, so it never
   cancels the margin-inline:auto that centres .paper children onto the grid.
   Per-section ID rules and the subpage grammar still win where they exist. */
main section h2{margin-block:1.4rem 1.6rem}
.long{max-width:60ch;color:var(--muted);font-size:clamp(1rem,1.15vw,1.18rem);line-height:1.68}

/* glass card */
.glass{
  background:var(--glass);
  border:1px solid var(--hair);
  border-radius:18px;
  box-shadow:0 1px 0 rgba(231,237,238,.06) inset, 0 40px 90px -50px rgba(0,0,0,.9);
}

/* CTAs */
.cta{
  display:inline-flex;align-items:center;gap:.7em;
  font-family:var(--sans);font-weight:500;font-size:1rem;
  padding:.95em 1.7em;border-radius:100px;
  color:var(--on-accent);background:var(--accent);
  border:1px solid var(--accent);
  /* the fill is the clay mark; its light is not: the shadow is dark water */
  box-shadow:0 0 0 1px color-mix(in oklab,var(--accent) 20%,transparent), 0 18px 44px -20px rgba(2,8,10,.85);
  transition:transform .35s cubic-bezier(.2,.7,.2,1), box-shadow .35s;
}
.cta:hover{transform:translateY(-2px);box-shadow:0 0 0 1px color-mix(in oklab,var(--accent) 45%,transparent), 0 26px 54px -20px rgba(2,8,10,.9);}
.cta .arw{transition:transform .35s}
.cta:hover .arw{transform:translateX(3px)}
.quiet-link{
  display:inline-flex;align-items:center;gap:.55em;margin-top:2rem;
  font-family:var(--mono);font-size:.8rem;letter-spacing:.06em;color:var(--copper-text);
  border-bottom:1px solid color-mix(in oklab,var(--copper-text) 22%,transparent);padding-bottom:.25em;transition:border-color .3s,gap .3s;
}
.quiet-link:hover{border-color:color-mix(in oklab,var(--copper-text) 55%,transparent);gap:.85em}
.quiet-link::after{content:"\2192";font-family:var(--sans)}

/* ============================ NAV ============================ */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:20;
  display:flex;align-items:center;justify-content:space-between;
  padding:1.1rem clamp(1.2rem,5vw,3rem);
  transition:background .4s,border-color .4s;
  border-bottom:1px solid transparent;
}
.nav.scrolled{background:rgba(8,16,20,.93);border-bottom:1px solid var(--hair-2);}
.brand{display:inline-flex;flex-direction:column;line-height:1}
.brand b{font-family:var(--serif);font-weight:600;font-size:1.5rem;letter-spacing:-.01em}
.brand .stop{color:var(--accent)}
.brand small{font-family:var(--mono);font-size:.64rem;letter-spacing:.24em;text-transform:uppercase;color:var(--faint);margin-top:.4rem}
.nav ul{list-style:none;display:flex;align-items:center;gap:2rem}
.nav ul a{font-size:.9rem;color:var(--muted);transition:color .3s}
.nav ul a:hover,.nav ul a[aria-current]{color:var(--ink)}
.nav-cta{
  font-size:.85rem;color:var(--ink)!important;padding:.55em 1.2em;border-radius:100px;
  border:1px solid var(--hair);background:rgba(231,237,238,.04);transition:border-color .3s,background .3s;
}
.nav-cta:hover{border-color:var(--accent-soft);background:var(--accent-dim)}
.nav-toggle{display:none}

/* The HORIZON DEVICE is RETIRED sitewide (Fraser 2026-07-08: "all the pages
   have that line in them - please remove"; it also struck through the About
   hero's three-line lede). Do not reintroduce without a new decision. */

/* ============================ HERO ============================ */
#hero{min-height:100vh;display:flex;align-items:center;padding-top:6rem;padding-bottom:17vh;overflow:hidden}
/* hero register 2026-07-07 (rev 2, Fraser: too big, too bold, PowerPoint):
   editorial scale and weight, not display scale. The confidence is in the
   air and the timing, not the point size. Clay stop stays. */
.hero-copy{max-width:min(880px,92%)}
.hero-copy h1{margin:2rem 0 1.9rem;font-size:clamp(2.1rem,3.7vw,3.4rem);font-weight:500;
  letter-spacing:-.015em;line-height:1.14}
.hero-copy h1 .l1{display:block}
.hero-copy h1 .l2{display:block;margin-top:.18em;color:var(--muted)}
.hero-copy h1 .stop{color:var(--accent)}
.hero-copy p{color:var(--muted);font-size:clamp(1rem,1.2vw,1.18rem);max-width:50ch;line-height:1.7}
.hero-actions{display:flex;align-items:center;gap:1.6rem;margin-top:2.4rem;flex-wrap:wrap}
.hero-fine{font-family:var(--mono);font-size:.78rem;color:var(--faint);letter-spacing:.04em}
/* hero load choreography: the container's slab-rise is retired; each beat rises
   in order on the house curve (kicker, line one, line two, lede, actions). */
.hero-copy[data-io]{opacity:1;transform:none;transition:none}
.hero-copy .kicker,.hero-copy h1 .l1,.hero-copy h1 .l2,.hero-copy>p,.hero-actions{
  opacity:0;transform:translateY(16px);
  transition:opacity .7s cubic-bezier(.2,.8,.2,1),transform .7s cubic-bezier(.2,.8,.2,1)}
.hero-copy.in .kicker,.hero-copy.in h1 .l1,.hero-copy.in h1 .l2,.hero-copy.in>p,.hero-copy.in .hero-actions{
  opacity:1;transform:none}
.hero-copy.in .kicker{transition-delay:.05s}
.hero-copy.in h1 .l1{transition-delay:.18s}
.hero-copy.in h1 .l2{transition-delay:.34s}
.hero-copy.in>p{transition-delay:.5s}
.hero-copy.in .hero-actions{transition-delay:.64s}

/* ============================ PROBLEM (grid-to-interference) ============================ */
#problem{overflow:hidden}
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,5rem);align-items:center}
#problem .split{grid-template-columns:1.15fr .85fr}
#problem h2{margin:1.4rem 0 1.6rem;font-size:clamp(1.9rem,3.7vw,2.95rem);text-wrap:pretty}
#problem .long+.long{margin-top:1.2rem}
#problem .grenade-hint{color:var(--ink);font-weight:500}
/* THE SIGNAL DEVICE ("Find Them") — ported verbatim from the Claude Design
   handoff 2026-07-08 (design_handoff_signal_device, founder-approved,
   high-fidelity: do not restyle). 300 identical applicant ticks; hover reads
   a same-soup claim; the click reveals the one you lost. Replaces the
   interference cinemagraph. Panel bg #0f1e27 is part of the approved spec. */
.signal-device{position:relative;width:min(600px,100%);aspect-ratio:5/4;background:#0f1e27;
  border:1px solid rgba(231,237,238,.10);border-radius:14px;overflow:hidden;
  font-family:var(--mono)}
.sd-label{position:absolute;top:16px;left:18px;font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;color:rgba(231,237,238,.62);white-space:nowrap}
.sd-grid{position:absolute;top:44px;bottom:64px;left:18px;right:18px;display:grid;
  grid-template-columns:repeat(20,1fr);grid-template-rows:repeat(15,1fr)}
.sd-cell{display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:3px}
.sd-cell:hover{background:rgba(231,237,238,.06)}
.sd-tick{width:3px;height:58%;max-height:12px;border-radius:1px;
  background:rgba(231,237,238,var(--a,.3));transition:background .6s}
.signal-device[data-state="picked"] .sd-cell{cursor:default}
.signal-device[data-state="picked"] .sd-cell:hover{background:none}
.signal-device[data-state="picked"] .sd-tick{background:rgba(231,237,238,.08)}
.signal-device[data-state="picked"] .sd-tick.is-one{background:var(--accent)}
.sd-readout{position:absolute;bottom:14px;left:18px;right:18px;display:flex;flex-direction:column;gap:4px}
.sd-line1{font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(231,237,238,.92);white-space:nowrap;overflow:hidden}
.sd-line2-row{display:flex;gap:16px;align-items:baseline}
.sd-line2{font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(231,237,238,.62);white-space:nowrap;overflow:hidden}
.sd-again{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--steel);
  cursor:pointer;white-space:nowrap;background:none;border:none;padding:0;font-family:inherit;display:none}
.sd-again:hover{color:var(--ink)}
.signal-device[data-state="picked"] .sd-again{display:inline}
@media(max-width:420px){.sd-label,.sd-line1,.sd-line2,.sd-again{font-size:9px}}



/* ============================ THE AI ARGUMENT (grenade grown into a section, Fraser 2026-07-07) ============================ */
/* why tools scale broken hiring: the amplification rows carry the argument */
/* capped to the content's measure so the rules end with the text instead of
   running the full grid into empty water */
.amp{margin-top:clamp(2.2rem,4vw,3rem);border-top:1px solid var(--hair);max-width:56rem}
.amp-row{display:grid;grid-template-columns:minmax(180px,250px) 1fr;gap:.5rem 3rem;
  padding:1.35rem 0;border-bottom:1px solid var(--hair)}
.amp-row b{font-weight:600;color:var(--ink);font-size:1.05rem;letter-spacing:-.01em;line-height:1.4}
.amp-row p{color:var(--muted);font-size:.98rem;line-height:1.62;max-width:56ch}
#ai .pivot{margin-top:clamp(2.2rem,4vw,3rem)}
/* the dawn needs its void: the argument holds the deep, then the page surfaces
   across this space before the walk (the drift gradient does the work) */
#ai{padding-bottom:clamp(7rem,16vh,11rem)}
@media(max-width:720px){.amp-row{grid-template-columns:1fr;gap:.3rem}}



/* the DAWN (homepage insight): the light does not snap in, it dawns. No hard
   borders, no section-level fade; the ground is a static gradient from the dark
   canvas into paper and back out, interpolated in oklab so the passage stays
   clean instead of muddying. Content rises via data-io; the frame never moves. */
/* the insight owns no ground and no borders; the per-page field gradient
   carries the dawn. Its paper vars serve the walk head and the light rules. */
#insight{
  border:0;
  padding-top:42vh;padding-bottom:22vh;
  background:transparent;
  --paper-ink:#1C231E;
  --paper-muted:rgba(28,35,30,.68); --paper-faint:rgba(28,35,30,.62); --paper-hair:rgba(28,35,30,.14);
  --believed:#8a5124; --actual:#3f6673;
  --accent:#8f4e20;
  --accent-soft:color-mix(in oklab,#8f4e20 55%,transparent);
  --accent-dim:color-mix(in oklab,#8f4e20 22%,transparent);
}
#insight .kicker{color:var(--believed)}
#insight .kicker::before{background:linear-gradient(90deg,transparent,var(--believed))}

.dim-notes{display:flex;flex-direction:column;gap:1.15rem}
.dim-note{display:grid;grid-template-columns:1.8rem 1fr;column-gap:.75rem;align-items:baseline}
.dim-note .dn-num{font-family:var(--mono);font-size:.75rem;font-weight:500;color:var(--believed)}
.dim-note .dn-label{font-weight:600;font-size:1rem;letter-spacing:-.01em;color:var(--paper-ink)}
.dim-note .dn-rel{display:block;grid-column:2;font-size:.85rem;line-height:1.5;color:var(--paper-muted);margin-top:.18rem}

/* ============================ SCORECARD (tier colours live here only) ============================ */
#card{overflow:hidden}
.card-stage{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(2rem,5vw,4.5rem);align-items:center}
#card h2{margin:1.4rem 0 1.6rem}
.doc{padding:1.6rem;font-family:var(--mono)}
.doc-head{display:flex;align-items:center;gap:.8rem;padding-bottom:1rem;margin-bottom:1rem;border-bottom:1px solid var(--hair);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}
.doc-head .dot{width:8px;height:8px;border-radius:50%;background:var(--t-critical)}
.doc-head b{color:var(--muted);font-weight:500}
.doc-legend{display:flex;gap:1.2rem;margin-left:auto;font-size:.62rem}
.doc-legend em{font-style:normal;display:inline-flex;align-items:center;gap:.35em;color:var(--faint)}
.doc-legend em::before{content:"";width:.8rem;height:2px;border-radius:2px}
.doc-legend .lb::before{background:var(--faint)}
.doc-legend .la::before{background:var(--view-actual)}
.row{display:grid;grid-template-columns:1.4rem 1fr 3.4rem 3.4rem 4.6rem;align-items:center;gap:.7rem;padding:.62rem 0;border-bottom:1px solid var(--hair-2)}
.row:last-child{border-bottom:0}
.rank{font-size:.82rem;color:var(--ink);text-align:center;font-weight:500}
.rank.dim{color:var(--faint)}
/* dimension names replaced the redaction bars 2026-07-10 (real Meridian data);
   sans like the report's Figure 3, not the instrument's mono */
.dim-name{font-family:var(--sans);font-size:.8rem;font-weight:500;letter-spacing:.01em;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m{height:6px;border-radius:3px;background:rgba(231,237,238,.06);overflow:hidden}
.m i{display:block;height:100%;width:0;border-radius:3px;transition:width .9s cubic-bezier(.2,.7,.2,1)}
.m.think i{background:var(--faint)}
.m.actual i{background:var(--view-actual);box-shadow:0 0 6px color-mix(in oklab,var(--view-actual) 22%,transparent)}
.tier{font-size:.62rem;font-style:normal;letter-spacing:.1em;text-transform:uppercase;text-align:center;padding:.3em 0;border-radius:5px;border:1px solid currentColor}
.tier.t1{color:var(--t-critical)}
.tier.t3{color:var(--t-develop)}
.tier.t4{color:var(--t-solid)}
.in .m i{transition-delay:var(--d,0ms)}

/* ============================ THE INSIGHT — HIRING CHAIN (Treatment A tension cable) ============================ */
/* lives on a .paper register-break section; believed warm, actual cool, weak link clay. No tier colours. */
/* full grid width; the inner .long's 60ch cap sets the measure, so the copy
   left-aligns to the shared grid edge instead of floating as a centred column */
#insight .dims-copy{max-width:none}
/* the-audit: the full chain names all eight links below the cable */
.paper .dim-notes.cols{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem 3rem;margin-top:2.6rem}
@media(max-width:720px){.paper .dim-notes.cols{grid-template-columns:1fr;gap:1rem}}

/* ============================ THE WALK (UNFOLD grammar, horizontal): eight links, one card each ============================ */
/* CSS-native scroll-driven walk: sticky stage + named view-timeline, the track translates
   horizontally as the page scrolls. Native scroll, zero JS, no library. Fraser's rule
   (2026-07-07): anything that is a sequence is a scroll opportunity. Browsers without
   animation-timeline, and reduced motion, get the base layout: a wrapped card grid. */
.walk-act{position:relative}
.walk-head{margin-bottom:clamp(1.8rem,3.5vh,3rem)}
.walk-head .dims-copy{margin-bottom:0}
.walk-track{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.2rem}
.walk-card{background:var(--paper-card);border:1px solid var(--paper-hair);border-radius:14px;
  padding:1.7rem 1.6rem;display:flex;flex-direction:column;gap:.65rem;
  box-shadow:0 24px 55px -45px rgba(28,35,30,.5)}
.walk-card .wc-num{font-family:var(--mono);font-size:.75rem;font-weight:500;letter-spacing:.14em;color:var(--believed)}
.walk-card h3{font-size:1.35rem;font-weight:600;letter-spacing:-.01em;color:var(--paper-ink);margin-top:.4rem}
.walk-card p{font-size:.95rem;line-height:1.6;color:var(--paper-muted)}
.walk-close{border-color:color-mix(in oklab,var(--accent) 45%,transparent);
  background:linear-gradient(160deg,color-mix(in oklab,var(--accent) 9%,var(--paper-card)),var(--paper-card))}
.walk-close .wc-num{color:var(--accent)}
/* align-self keeps the underline on the words: as a stretched flex item the
   link's border drew a line across the whole card */
.walk-close .quiet-link{margin-top:auto;align-self:flex-start;color:var(--accent);border-bottom-color:var(--accent-dim)}
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion: no-preference){
    /* runway sized to the track: was 380vh for nine cards, five cards travel ~55% of that */
    .walk-act{view-timeline:--walk block;height:220vh}
    /* the whole composition pins: head stays put, only the cards travel */
    .walk-stage{position:sticky;top:clamp(4.5rem,9vh,7rem);overflow:clip}
    /* width:max-content is load-bearing: a flex container does not grow with its
       items, and at the parent's width translateX(-100%) computes to zero travel */
    .walk-track{display:flex;width:max-content;gap:clamp(1rem,2vw,1.6rem);will-change:transform;
      animation:walk-move linear both;animation-timeline:--walk;animation-range:contain 0% contain 100%}
    .walk-card{flex:0 0 clamp(270px,30vw,400px);min-height:15rem}
    @keyframes walk-move{from{transform:translateX(0)}
      to{transform:translateX(calc(-100% + min(var(--maxw),90vw)))}}
    /* short screens: the pinned head + cards must fit the viewport */
    @media (max-height:720px){
      .walk-card{flex-basis:clamp(250px,28vw,360px);min-height:11.5rem}
      .walk-head .long{font-size:.95rem;line-height:1.55}
      .walk-head{margin-bottom:1.2rem}
    }
  }
}

/* stat row merged into the scorecard act (spine v2): quiet proof line, no own section */
.card-stats{margin-top:clamp(2.6rem,5vw,4rem)}

/* ============================ THE FOUR SEATS (what-we-do bridge; FIRST PASS, pending design brief) ============================ */
.seats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--hair);border:1px solid var(--hair);
  border-radius:14px;overflow:hidden;margin-top:2.6rem}
.seat{background:var(--bg-2);padding:1.6rem 1.4rem;position:relative}
.seat .s-num{font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;color:var(--copper-text)}
.seat h3{font-size:1.05rem;font-weight:600;letter-spacing:-.01em;color:var(--ink);margin:.9rem 0 .4rem;line-height:1.2}
.seat p{font-size:.86rem;color:var(--muted);line-height:1.55;max-width:none}
/* what Calder does with that seat: the working line under the seat's view */
.seat .s-does{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--hair-2);color:var(--faint);font-size:.82rem}
.seats-cap{font-family:var(--mono);font-size:.8rem;letter-spacing:.03em;color:var(--faint);margin-top:1.4rem}

/* ============================ STAT ROW (round-3 proof device; canon-safe numbers only) ============================ */
.stat-row{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--hair);border-bottom:1px solid var(--hair)}
.stat-row.stat-row-3{grid-template-columns:repeat(3,1fr)}
.stat{padding:clamp(1.8rem,3vw,2.8rem) clamp(1rem,2vw,1.8rem);border-left:1px solid var(--hair-2)}
.stat:first-child{border-left:0}
.stat-n{display:block;font-weight:600;letter-spacing:-.03em;line-height:1;font-size:clamp(2.2rem,3.4vw,3.4rem);color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.stat-l{display:block;margin-top:.85rem;font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);line-height:1.6}

/* ============================ THE WORK ============================ */
#work h2{margin:1.4rem 0 3rem}
/* the three doors (2026-08-13): same plates grammar in the dark zone; links sit
   on a shared baseline so the three doors read as one instrument */
#doors h2{margin:1.4rem 0 3rem}
#doors .plate .quiet-link{margin-top:auto;padding-top:1rem}
.plates{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem}
.plate{padding:2rem 1.8rem;display:flex;flex-direction:column;gap:1rem;position:relative;overflow:hidden}
.plate::before{content:"";position:absolute;top:-40%;right:-30%;width:70%;height:80%;background:radial-gradient(circle,color-mix(in oklab,var(--steel) 16%,transparent),transparent 70%);opacity:0;transition:opacity .5s}
.plate:hover::before{opacity:1}
.plate svg{width:40px;height:40px;stroke:var(--steel)}
.plate h3{font-family:var(--mono);font-size:.8rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--copper-text)}
.plate .big{font-size:1.35rem;font-weight:600;letter-spacing:-.01em;color:var(--ink)}
.plate p{font-size:.92rem;color:var(--muted);line-height:1.6}

/* ============================ WHO WE ARE (the for-mark rides with #who) ============================ */
/* top-aligned columns: centring floated the right paragraph above the kicker.
   The door expansions (2026-08-13) share the shape. */
#who .split,#find .split,#run .split{align-items:start}
.for-mark{display:flex;align-items:center;gap:1.2rem;margin-top:3rem;font-family:var(--mono);font-size:.75rem;letter-spacing:.06em;color:var(--faint)}
.for-mark .line{flex:1;height:1px;background:linear-gradient(90deg,var(--hair),transparent)}

/* ============================ CLOSE ============================ */
#close{min-height:100vh;display:flex;align-items:center;justify-content:center;text-align:center;overflow:hidden}
/* close matches the hero's register (Fraser 2026-07-07): same scale, same weight */
#close h2{font-size:clamp(2.1rem,3.7vw,3.4rem);font-weight:500;letter-spacing:-.015em;line-height:1.14;max-width:22ch;margin:0 auto 1.4rem}
#close p{color:var(--muted);font-family:var(--mono);font-size:.85rem;letter-spacing:.05em;margin-bottom:2.4rem}

/* ============================ REVEAL (rise only) ============================ */
[data-io]{opacity:0;transform:translateY(14px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
[data-io].in{opacity:1;transform:none}

/* ============================ RESPONSIVE ============================ */
@media(max-width:980px){
  .hero-copy{max-width:none}
  .split,#problem .split,.card-stage,.plates{grid-template-columns:1fr}
  .signal-device{max-width:460px}
  .plates{gap:1rem}
}
@media(max-width:768px){
  .nav ul{position:fixed;inset:0 0 0 auto;width:min(78vw,320px);flex-direction:column;align-items:flex-start;
    justify-content:center;gap:1.6rem;padding:2rem;background:rgba(10,14,19,.97);
    transform:translateX(100%);transition:transform .4s cubic-bezier(.2,.7,.2,1);border-left:1px solid var(--hair)}
  .nav.open ul{transform:none}
  .nav-toggle{display:flex;flex-direction:column;gap:5px;background:none;border:0;cursor:pointer;z-index:30}
  .nav-toggle span{width:24px;height:2px;background:var(--ink);transition:transform .3s,opacity .3s}
  .nav.open .nav-toggle span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .nav.open .nav-toggle span:nth-child(2){opacity:0}
  .nav.open .nav-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .row{grid-template-columns:1.2rem 1fr 2.6rem 2.6rem 3.8rem;gap:.5rem}
  .svc{grid-template-columns:1fr;gap:.6rem}
  .pad{padding-block:clamp(4.5rem,10vh,7rem)}
}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important}
  html{scroll-behavior:auto}
  [data-io]{opacity:1;transform:none;transition:none}
  .hero-copy .kicker,.hero-copy h1 .l1,.hero-copy h1 .l2,.hero-copy>p,.hero-actions{
    opacity:1;transform:none;transition:none}
  .sd-tick{transition:none}
  .m i{transition:none}
}

/* ================================================================
   SECTION 2 — SUBPAGE GRAMMAR
   Same precision language, extended to the subpages. Dark canvas
   end to end (the-audit carries the single light .paper instrument
   section, reusing the #dims grammar above). One shared grid.
   ================================================================ */

/* subpage main flow */
.subpage main{position:relative;z-index:3}
.subpage main>section,.subpage .page-hero,.subpage .band-cta{position:relative;z-index:3}

/* page hero: left copy column, generous space, mono kicker */
.page-hero{min-height:62vh;display:flex;flex-direction:column;justify-content:center;
  padding-top:8.5rem;padding-bottom:clamp(2.5rem,6vh,5rem);overflow:hidden}
.page-hero>*{width:min(var(--maxw),90vw);margin-inline:auto}
.page-hero .kicker{margin-bottom:1.7rem}
.page-hero h1{max-width:20ch;font-size:clamp(2.35rem,5.2vw,4.1rem);letter-spacing:-.025em}
.page-hero .lede{margin-top:1.6rem;max-width:52ch;color:var(--muted);
  font-size:clamp(1.05rem,1.4vw,1.32rem);line-height:1.6}

/* subpage sections: shared grid, drafting-table rhythm */
.subpage main>section{padding-block:clamp(3.5rem,7vh,6rem)}
.subpage main>section>*{width:min(var(--maxw),90vw);margin-inline:auto}
.subpage main>section .kicker{margin-bottom:1.2rem}
.subpage main>section h2{margin:0 0 1.5rem;max-width:22ch;font-size:clamp(1.8rem,3.6vw,2.8rem)}
.subpage main>section p{color:var(--muted);max-width:64ch;font-size:clamp(1rem,1.1vw,1.12rem);line-height:1.7}
.subpage main>section p+p{margin-top:1.1rem}
.subpage main>section .quiet-link{margin-top:1.8rem}

/* ruled lists — hairline seams, mono lead numerals */
.ruled{list-style:none;border-top:1px solid var(--hair);max-width:70ch;margin-top:.4rem}
.ruled li{padding:1.35rem 0;border-bottom:1px solid var(--hair);color:var(--muted);
  font-size:clamp(1rem,1.1vw,1.12rem);line-height:1.65}
.ruled li strong{color:var(--ink);font-weight:600}
.ruled li strong:first-child{display:inline}

/* wide ruled ledger — numbered title left, prose right, fills the measure (how-it-works steps) */
.ruled.ruled-wide{max-width:none}
.ruled.ruled-wide li{display:grid;grid-template-columns:.42fr 1fr;column-gap:clamp(2rem,5vw,4rem);align-items:baseline}
.ruled.ruled-wide li strong{font-size:1.15rem;letter-spacing:-.01em}

/* bordered glass aside — "three things Calder is not" */
.aside-not{margin-top:.4rem}
.aside-not .aside-card{padding:clamp(1.8rem,3.5vw,2.8rem)}
.aside-not h2{margin:0 0 1.6rem}
.aside-not .ruled{border-top:1px solid var(--hair);max-width:none;margin-top:0}
.aside-not .ruled li:last-child{border-bottom:0;padding-bottom:0}

/* measured horizontal timeline rule — static drawn device, no motion */
.timeline{margin-top:3rem;max-width:none}
.timeline .tl-rule{position:relative;height:1px;margin:2.6rem 0 0;
  background:linear-gradient(90deg,transparent,rgba(231,237,238,.5) 8%,rgba(231,237,238,.5) 92%,transparent)}
.timeline .tl-rule::after{content:"";position:absolute;inset:-1px 0;filter:blur(4px);
  background:linear-gradient(90deg,transparent,rgba(127,168,184,.5) 42%,rgba(127,168,184,.5) 58%,transparent)}
.timeline .tl-ticks{position:relative;display:grid;grid-template-columns:repeat(4,1fr);margin-top:0}
.timeline .tl-tick{position:relative;padding-top:1.1rem}
.timeline .tl-tick::before{content:"";position:absolute;top:-1px;left:0;width:1px;height:11px;background:color-mix(in oklab,var(--steel) 55%,transparent)}
.timeline .tl-tick .tl-k{font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--copper-text);display:block}
.timeline .tl-tick .tl-t{font-family:var(--mono);font-size:.72rem;letter-spacing:.04em;color:var(--faint);display:block;margin-top:.35rem}

/* ============================ THE SCHEDULE ACT (how-it-works; the page's one UNFOLD) ============================
   The four engagement stages play out under a pinned drafting-table stage:
   the timeline's rule fills with scroll, each tick lights as the fill
   crosses it, and full ink travels down the four step rows one at a time.
   Colour only: nothing moves, nothing appears, no boxes, no horizontal
   travel (the walk owns that). Every row holds AA at all times (the .66
   paper-muted floor). Base styles ARE the finished schedule (full rule,
   all ticks lit, rows at ledger ink) so reduced-motion, non-supporting
   browsers, and mobile get the complete picture free. */
.sched-steps{margin-top:2.6rem}
.ss-num{font-family:var(--mono);font-size:.78rem;font-weight:500;letter-spacing:.14em;
  color:var(--copper-text);margin-right:1em}
.tl-fill{display:block;position:absolute;top:0;left:0;right:0;height:1px;transform-origin:left center;
  background:linear-gradient(90deg,transparent,var(--steel) 8%,var(--steel) 92%,transparent)}
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion: no-preference) and (min-width:769px){
    .sched-act{view-timeline:--sched block;height:320vh}
    .sched-stage{position:sticky;top:clamp(4.5rem,9vh,7rem)}
    .tl-fill{animation:sched-fill linear both;animation-timeline:--sched;animation-range:contain 0% contain 90%}
    /* ticks sleep at .4 until the fill reaches them (timeline is aria-hidden) */
    .sched-act .tl-tick{animation:tick-lit linear both;animation-timeline:--sched}
    .sched-act .tl-tick:nth-child(1){animation-range:contain 0% contain 2%}
    .sched-act .tl-tick:nth-child(2){animation-range:contain 21% contain 24%}
    .sched-act .tl-tick:nth-child(3){animation-range:contain 43% contain 46%}
    .sched-act .tl-tick:nth-child(4){animation-range:contain 65% contain 68%}
    /* ink travels down the rows; before and after their window they rest at
       the ledger's muted, which is itself AA on the palest water */
    .sched-step,.sched-step strong{animation:step-focus linear both;animation-timeline:--sched}
    .sched-act .sched-step:nth-child(1),.sched-act .sched-step:nth-child(1) strong{animation-range:contain 0% contain 23%}
    .sched-act .sched-step:nth-child(2),.sched-act .sched-step:nth-child(2) strong{animation-range:contain 23% contain 45%}
    .sched-act .sched-step:nth-child(3),.sched-act .sched-step:nth-child(3) strong{animation-range:contain 45% contain 68%}
    .sched-act .sched-step:nth-child(4),.sched-act .sched-step:nth-child(4) strong{animation-range:contain 68% contain 90%}
  }
}
@keyframes sched-fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes tick-lit{from{opacity:.4}to{opacity:1}}
@keyframes step-focus{
  0%,4%{color:rgba(28,35,30,.66)}
  14%,82%{color:#1C231E}
  96%,100%{color:rgba(28,35,30,.66)}
}

/* ============================ NETLIFY FORM (about) — precision grammar ============================ */
.form{margin-top:2.2rem;max-width:60ch;display:flex;flex-direction:column;gap:1.3rem}
.form .two{display:grid;grid-template-columns:1fr 1fr;gap:1.3rem}
.form label{display:block;font-family:var(--mono);font-size:.7rem;font-weight:500;letter-spacing:.14em;
  text-transform:uppercase;color:var(--faint);margin-bottom:.55rem}
.form input,.form textarea{width:100%;font-family:var(--sans);font-size:1rem;color:var(--ink);
  background:rgba(231,237,238,.03);border:1px solid var(--hair);border-radius:10px;
  padding:.85em 1em;transition:border-color .3s,background .3s,box-shadow .3s}
.form textarea{resize:vertical;min-height:8rem;line-height:1.6}
.form input::placeholder,.form textarea::placeholder{color:var(--faint)}
.form input:focus,.form textarea:focus{outline:none;border-color:color-mix(in oklab,var(--steel) 60%,transparent);
  background:rgba(231,237,238,.05);box-shadow:0 0 0 3px color-mix(in oklab,var(--steel) 22%,transparent)}
.form button{align-self:flex-start;margin-top:.4rem;display:inline-flex;align-items:center;gap:.7em;
  font-family:var(--sans);font-weight:500;font-size:1rem;padding:.95em 1.7em;border-radius:100px;cursor:pointer;
  color:var(--on-accent);background:var(--accent);border:1px solid var(--accent);
  box-shadow:0 0 0 1px var(--accent-dim),0 18px 50px -18px var(--accent-soft);
  transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s}
.form button:hover{transform:translateY(-2px);box-shadow:0 0 0 1px var(--accent-soft),0 26px 60px -18px var(--accent-soft)}
/* ghost submit — the page's one accent pill is the intro-call CTA; the form sends quietly */
.form button.ghost{color:var(--ink);background:rgba(231,237,238,.04);border:1px solid var(--hair);box-shadow:none}
.form button.ghost:hover{transform:translateY(-2px);border-color:color-mix(in oklab,var(--copper-text) 55%,transparent);background:color-mix(in oklab,var(--copper-text) 14%,transparent);box-shadow:none}

/* ============================ BAND CTA (shared close on every subpage) ============================ */
.band-cta{min-height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;overflow:hidden;padding-block:clamp(4rem,9vh,7rem)}
.band-cta h2{font-size:clamp(2.1rem,3.7vw,3.4rem);font-weight:500;letter-spacing:-.015em;line-height:1.14;max-width:22ch;margin:0 auto 1.4rem}
/* the subpage grammar's h2 margin (0 0 1.5rem) would win here and shove the
   headline off centre; restate the centring at higher specificity */
.subpage .band-cta h2{margin:0 auto 1.4rem}
.band-cta p{color:var(--muted);max-width:52ch;margin:0 auto 2rem;font-size:clamp(1rem,1.2vw,1.18rem);line-height:1.6}
.band-cta .cta-fine{color:var(--muted);font-family:var(--mono);font-size:.85rem;letter-spacing:.05em;margin:1.4rem auto 0}

/* thanks page: quiet centred */
.thanks main{min-height:88vh;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;position:relative;z-index:3;overflow:hidden;padding:8rem 0}
.thanks .page-hero{min-height:auto;padding:0;align-items:center}
.thanks .page-hero>*{text-align:center}
.thanks .page-hero .kicker{justify-content:center}
.thanks .page-hero h1{max-width:none}
.thanks .page-hero .lede{margin-inline:auto}
.thanks main>.cta{margin-top:2.6rem}

/* ============================ THE-AUDIT LIGHT INSTRUMENT SECTION (.paper) ============================ */
/* reuses the #dims paper grammar above, re-scoped to .paper for the subpage.
   Larger and more annotated than the homepage: eight dim-notes + scorecard. */
.paper{
  --paper-card:#FBFBF7; --paper-ink:#1C231E;
  --paper-muted:rgba(28,35,30,.66); --paper-faint:rgba(28,35,30,.44); --paper-hair:rgba(28,35,30,.14);
  --believed:#C8794A; --actual:#3B5C66;
  color:var(--paper-ink);
  /* clip, not hidden: hidden makes this a non-scrolling scroll container and
     kills the UNFOLD's position:sticky stage; clip clips without one */
  overflow:clip;
}
.paper>*{width:min(var(--maxw),90vw);margin-inline:auto}
/* block-level flex so the .paper>* width + margin-inline:auto actually centre
   the kicker onto the grid (inline-flex sat flush at the section's left edge) */
.paper .kicker{color:var(--believed);margin-bottom:1.2rem;display:flex}
.paper .kicker::before{background:linear-gradient(90deg,transparent,var(--believed))}
/* no max-width here: capping the width re-centres the h2 off the grid on the
   homepage (#insight has direct children). Subpage measure still capped by
   .subpage main>section h2; the homepage h2 wraps on its own break. */
.paper h2{margin-block:0 1.5rem;color:var(--paper-ink);font-size:clamp(1.9rem,3.8vw,3rem)}
.paper .long,.paper p{color:var(--paper-muted)}
.paper .dims-copy{max-width:none;margin-bottom:2.8rem}
.paper .dims-line{font-family:var(--mono);font-size:.82rem;letter-spacing:.03em;color:var(--paper-faint);margin:1.6rem 0 .2rem}

/* scored-in-plain-terms methodology block */
.paper .method{margin-top:clamp(2.5rem,5vw,4rem);display:grid;grid-template-columns:1fr 1fr;
  gap:clamp(2rem,5vw,4rem);align-items:start;border-top:1px solid var(--paper-hair);padding-top:clamp(2rem,4vw,3rem)}
.paper .method h3{font-size:1.3rem;font-weight:600;color:var(--paper-ink);margin-bottom:1rem;letter-spacing:-.01em}
.paper .method p{color:var(--paper-muted);font-size:1rem;line-height:1.7;max-width:56ch}
.paper .method p+p{margin-top:1rem}

/* light scorecard artefact (tier colours live here) */
.paper .doc,.surface .doc{background:var(--paper-card);border:1px solid var(--paper-hair);border-radius:14px;
  color:var(--paper-ink);box-shadow:0 30px 70px -50px rgba(28,35,30,.55);padding:1.9rem}
.paper .doc-head,.surface .doc-head{border-bottom-color:var(--paper-hair);color:var(--paper-faint)}
.paper .doc-head b{color:var(--paper-muted)}
.paper .doc-legend em{color:var(--paper-faint)}
.paper .doc-legend .lb::before{background:var(--paper-faint)}
.paper .doc-legend .la::before{background:var(--actual)}
.paper .row{border-bottom-color:rgba(28,35,30,.10)}
.paper .rank{color:var(--paper-ink)}
.paper .rank.dim{color:var(--paper-faint)}
.paper .m,.surface .m{background:rgba(28,35,30,.08)}
.paper .m.think i,.surface .m.think i{background:var(--paper-faint)}
.paper .m.actual i,.surface .m.actual i{background:var(--actual);box-shadow:none}
/* captions are sans, not mono (Fraser 2026-07-10: the mono face is for sparing
   use; it stays on kickers and inside the drawn instruments only) */
.paper .doc-cap,.surface .doc-cap,#card .doc-cap{font-family:var(--sans);font-size:.78rem;letter-spacing:.01em;color:var(--paper-faint);margin-top:1rem;max-width:52ch}

/* subpage responsive */
@media(max-width:980px){
  .form .two,.paper .method,.timeline .tl-ticks{grid-template-columns:1fr}
  .timeline .tl-ticks{gap:1.4rem}
  .timeline .tl-tick::before{display:none}
  .ruled.ruled-wide li{grid-template-columns:1fr;row-gap:.45rem}
  .stat-row{grid-template-columns:repeat(2,1fr)}
  .stat{border-left:0}
  .stat:nth-child(even){border-left:1px solid var(--hair-2)}
  .stat:nth-child(n+3){border-top:1px solid var(--hair-2)}
  .stat-row.stat-row-3{grid-template-columns:repeat(3,1fr)}
  .stat-row.stat-row-3 .stat:nth-child(n+3){border-top:0}
  .stat-row.stat-row-3 .stat{border-left:1px solid var(--hair-2)}
  .stat-row.stat-row-3 .stat:first-child{border-left:0}
  .seats{grid-template-columns:repeat(2,1fr)}
  .seat:nth-child(n+3){border-top:1px solid var(--hair-2)}
}
@media(max-width:768px){
  .page-hero{min-height:52vh;padding-top:7rem}
  .band-cta{min-height:60vh}
}


/* ================================================================
   SECTION 3 — THE SURFACED FIELD (Deep water, promoted 2026-07-07)
   Sections on the light part of a page's arc run warm ink on Calder
   paper. Homepage light sections are listed by id; subpage sections
   opt in with class="surface". No section paints its own ground and
   nothing rules a boundary; the per-page body gradients carry the
   field. All values AA-checked on the field and the cards.
   ================================================================ */
#find,#run,#card,#who,.surface{
  --ink:#1C231E;
  --actual:#3f6673;
  --paper-faint:rgba(28,35,30,.62);
  --muted:rgba(28,35,30,.68);
  --faint:rgba(28,35,30,.64);
  --hair:rgba(28,35,30,.14);
  --hair-2:rgba(28,35,30,.08);
  --bg-2:#FBFBF7;
  --glass:linear-gradient(160deg,rgba(28,35,30,.035),rgba(28,35,30,.012));
  --copper-text:#8f4e20;
  --steel:#3f6673;
  --view-actual:#3f6673;
  color:var(--ink);
}
#card .glass,#work .glass,.surface .glass{
  box-shadow:0 1px 0 rgba(255,255,255,.55) inset,0 30px 70px -50px rgba(28,35,30,.5)}

/* THE WALK'S BOXES: deep ink cards travelling across the pale water
   (Fraser, contrast ruling). The card vars flip locally, so the
   component rules above stay untouched. */
.walk-card{
  --paper-card:#132531;
  --paper-ink:#e7edee;
  --paper-muted:rgba(231,237,238,.66);
  --paper-hair:rgba(231,237,238,.10);
  --believed:#d4854f;
  box-shadow:0 34px 64px -42px rgba(16,26,32,.6);
}
/* the ninth card is the clay moment: clay edge, clay-washed ink, clay type */
.walk-close{
  --accent:#d4854f;
  --accent-dim:color-mix(in oklab,#d4854f 26%,transparent);
  border-color:color-mix(in oklab,#d4854f 50%,transparent);
}

/* scorecard artefact wherever it sits on light ground: bars and redactions
   take their paper form; the tier ramp takes light-ground AA values. */
#card,.paper,.surface{--t-critical:#a8483a;--t-exposed:#96521f;--t-develop:#7d6420;--t-solid:#4f5e5c}
#card .m{background:rgba(28,35,30,.08)}
#card .m.actual i{box-shadow:none}

/* the-audit paper section stops being an island: the field carries it */
.paper{
  background:transparent;
  border:0;
  --believed:#8a5124; --actual:#3f6673;
  --paper-faint:rgba(28,35,30,.62);
  --accent:#8f4e20;
  --accent-soft:color-mix(in oklab,#8f4e20 55%,transparent);
  --accent-dim:color-mix(in oklab,#8f4e20 22%,transparent);
}

/* ============================ FOOTER (shared, all six pages) ============================
   No own ground and no top rule: the field carries it (no lines between
   sections). Styles live here, not inline, so the 980px collapse works. */
.footer{position:relative;z-index:3;padding:clamp(3rem,6vw,5rem) 0 2.4rem}
.f-grid{width:min(var(--maxw),90vw);margin-inline:auto;display:grid;grid-template-columns:1.2fr 1fr;gap:2.5rem;align-items:start}
.f-tag{font-size:.9rem;color:var(--muted);margin-top:1rem;max-width:34ch}
.f-grid nav{display:grid;grid-template-columns:1fr 1fr;gap:.7rem 2rem}
.f-grid nav a{font-size:.9rem;color:var(--muted);width:fit-content;transition:color .3s}
.f-grid nav a:hover{color:var(--ink)}
.footer .fine{width:min(var(--maxw),90vw);margin:3rem auto 0;padding-top:1.6rem;
  border-top:1px solid var(--hair-2);font-family:var(--mono);font-size:.72rem;letter-spacing:.06em;color:var(--faint)}
/* the collapse lives here, after the base grid, so source order cannot undo it */
@media(max-width:980px){
  .f-grid,.f-grid nav{grid-template-columns:1fr}
}

/* ============================ THE MAP (the-audit hero: the sample report's Figure 1) ============================
   Eight spokes, two shapes: believed dashed warm, actual solid cool,
   the one widest gap in clay. The shapes settle on RISE; the clay gap
   is the page's single DRAW (grows actual to believed, once). */
.hero-split{display:grid;grid-template-columns:1fr 1.06fr;gap:clamp(2.4rem,5vw,5rem);align-items:center}
/* the type ruling: impressive is smaller, lighter, more air; the Map carries the weight */
.hero-split h1{font-size:clamp(2.2rem,3.3vw,3.15rem);font-weight:500;letter-spacing:-.02em;line-height:1.12}
.page-hero .quiet-link{margin-top:1.9rem}
.map-device{margin:0;width:min(560px,100%);justify-self:end}
.map-device svg{width:100%;height:auto;overflow:visible}
.map-ring{fill:none;stroke:var(--hair)}
.map-spoke{stroke:var(--hair-2)}
.map-label{font-family:var(--mono);font-size:12.5px;letter-spacing:.09em;fill:var(--faint)}
.map-b{fill:none;stroke:var(--view-think);stroke-width:1.6;stroke-dasharray:6 5;stroke-linejoin:round}
.map-a{fill:color-mix(in oklab,var(--view-actual) 13%,transparent);stroke:var(--view-actual);stroke-width:1.8;stroke-linejoin:round}
.map-gap{stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1}
.map-dot{fill:var(--accent);opacity:0}
.map-device .map-b,.map-device .map-a{opacity:0;transform:scale(.965);transform-box:view-box;transform-origin:50% 50%;
  transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
.map-device.in .map-b{opacity:1;transform:none;transition-delay:.15s}
.map-device.in .map-a{opacity:1;transform:none;transition-delay:.3s}
.map-device .map-gap{transition:stroke-dashoffset .7s cubic-bezier(.45,0,.2,1) .95s}
.map-device.in .map-gap{stroke-dashoffset:0}
.map-device .map-dot{transition:opacity .4s ease 1.5s}
.map-device.in .map-dot{opacity:1}
.map-device figcaption{margin-top:1.2rem;display:flex;flex-wrap:wrap;gap:.55rem 1.4rem;align-items:center}
.ml{display:inline-flex;align-items:center;gap:.55em;font-family:var(--mono);font-size:.68rem;letter-spacing:.08em;color:var(--faint);white-space:nowrap}
.ml::before{content:"";width:1.1rem;border-top:2px solid;flex:none}
.ml-b::before{border-top-style:dashed;border-color:var(--view-think)}
.ml-a::before{border-color:var(--view-actual)}
.ml-g::before{border-color:var(--accent);width:.7rem}
/* one legend row on desktop, distributed across the device (Fraser 2026-07-10);
   the tracking eases to fit the 560px device, wrap returns below 981 */
@media(min-width:981px){
  .map-device figcaption{flex-wrap:nowrap;justify-content:space-between;gap:.55rem 1rem}
  .ml{font-size:.64rem;letter-spacing:.05em}
}
.sample-cta{margin-top:2.2rem}
@media(max-width:980px){
  .hero-split{grid-template-columns:1fr;gap:2.6rem}
  .map-device{justify-self:start;width:min(440px,100%)}
}
@media(prefers-reduced-motion:reduce){
  .map-device .map-b,.map-device .map-a,.map-device .map-gap,.map-device .map-dot{
    opacity:1;transform:none;stroke-dashoffset:0;transition:none}
}

/* ============================ THE DEPTH WALK (report fragments) ============================
   Real excerpts of the v4 deliverable at fragment scale: same section
   numbers, same anatomy (band strip, gap chart, quote cards, deep dive,
   cost total, 90-day plan), same palette logic as the document itself.
   Each fragment pairs with a benefit line; entry is RISE per row.
   Tier colours, band words and dummy figures stay inside the fragments.
   Replaced the invented pg/pgc fan 2026-07-10 (Fraser: the cards must
   come from the report; the styling was wrong). */
.rp-rows{display:flex;flex-direction:column;gap:clamp(3.4rem,7vh,5rem);margin-top:3.4rem}
.rp-row{display:grid;grid-template-columns:minmax(0,.68fr) minmax(0,1fr);gap:clamp(2rem,4.5vw,4.5rem);align-items:center}
/* flip reorders the copy to the right, so the fragment takes the FIRST track:
   the wide track must swap sides with it or the fragment lands cramped */
.rp-row.flip{grid-template-columns:minmax(0,1fr) minmax(0,.68fr)}
.rp-row.flip .rp-copy{order:2}
/* the benefit line: why this page matters to the reader */
.rp-copy .rp-sec{font-family:var(--mono);font-size:.66rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--copper-text);display:flex;align-items:center;gap:.7rem}
.rp-copy .rp-sec::before{content:"";width:1.6rem;height:1px;background:color-mix(in oklab,var(--copper-text) 45%,transparent);flex:none}
.rp-copy h3{font-size:1.5rem;font-weight:500;letter-spacing:-.012em;line-height:1.25;color:var(--paper-ink);margin:.9rem 0 .75rem}
.rp-copy p{font-size:.98rem;line-height:1.75;color:var(--paper-muted);max-width:46ch;margin:0}
/* the fragment: a piece of the actual document, document grammar not site grammar */
.rp{background:var(--paper-card);border:1px solid var(--paper-hair);border-radius:10px;
  padding:1.7rem 1.8rem 1.8rem;font-family:var(--sans);color:var(--paper-ink);
  box-shadow:0 28px 60px -42px rgba(28,35,30,.5),0 2px 6px rgba(28,35,30,.05)}
.rp-kick{font-family:var(--mono);font-size:.62rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--copper-text);display:flex;align-items:center;gap:.7rem;margin-bottom:1.3rem}
.rp-kick::before{content:"";width:1.7rem;height:1px;background:color-mix(in oklab,var(--copper-text) 40%,transparent);flex:none}
/* labels inside fragments are SANS 600, like the document's own working labels;
   mono stays on kickers only (Fraser 2026-07-10: the robotic face is for
   sparing use, and it had crept into labels and captions) */
.rp-mlabel{font-size:.6rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--paper-faint)}
/* 04 · overall health: band word + four-band strip */
.rp-band-word{font-size:2.4rem;font-weight:500;letter-spacing:-.01em;line-height:1;color:var(--t-exposed);margin-top:.7rem}
.rp-band-cap{font-size:.8rem;color:var(--paper-faint);margin-top:.55rem}
.rp-strip{display:flex;gap:6px;margin-top:1.5rem}
.rp-strip .cell{flex:1}
.rp-strip .bar{height:3px;background:color-mix(in oklab,var(--paper-ink) 14%,transparent)}
/* each band's bar carries its hue (2026-07-10 colour run, mirrors the report);
   the current cell stays full-strength via the .current rules below */
.rp-strip .cell:nth-child(1) .bar{background:color-mix(in oklab,var(--t-critical) 55%,transparent)}
.rp-strip .cell:nth-child(2) .bar{background:color-mix(in oklab,var(--t-exposed) 55%,transparent)}
.rp-strip .cell:nth-child(3) .bar{background:color-mix(in oklab,var(--t-develop) 55%,transparent)}
.rp-strip .cell:nth-child(4) .bar{background:color-mix(in oklab,var(--t-solid) 55%,transparent)}
.rp-strip .word{margin-top:.55rem;font-weight:600;font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:var(--paper-faint)}
.rp-strip .desc{margin-top:.3rem;font-size:.7rem;line-height:1.5;color:var(--paper-faint)}
.rp-strip .cell.current .bar{background:var(--t-exposed)}
.rp-strip .cell.current .word{color:var(--t-exposed)}
/* 05 · the gap chart: name, rail, value; a full band or more goes clay */
.rp-gaprow{display:grid;grid-template-columns:9.6rem 1fr 2.4rem;gap:.9rem;align-items:center;padding:.32rem 0}
.rp-gaprow .gname{font-size:.78rem;font-weight:500}
.rp-gaprow .rail{position:relative;height:8px}
.rp-gaprow .bar{position:absolute;left:0;top:1px;height:6px;background:color-mix(in oklab,var(--paper-ink) 22%,transparent);width:var(--w)}
.rp-gaprow.hot .bar{background:var(--accent)}
.rp-gaprow .gval{font-size:.78rem;font-weight:500;font-variant-numeric:tabular-nums;text-align:right;color:var(--paper-faint)}
.rp-gaprow.hot .gval{color:var(--copper-text)}
.rp-foot{font-size:.72rem;line-height:1.6;color:var(--paper-faint);margin-top:.9rem}
/* 07 · quote cards: clay dash, the words, the seat */
.rp-quotes{display:grid;grid-template-columns:1fr 1fr;gap:.9rem}
.rp-quote{background:color-mix(in oklab,var(--paper-ink) 3%,var(--paper-card));border:1px solid var(--paper-hair);padding:1.15rem 1.2rem;display:flex;flex-direction:column}
.rp-quote::before{content:"";width:1.5rem;height:2px;background:var(--accent);margin-bottom:.9rem}
.rp-quote .q{font-size:.92rem;line-height:1.6;letter-spacing:-.005em;flex:1}
.rp-quote .who{margin-top:1rem;font-weight:600;font-size:.58rem;letter-spacing:.08em;text-transform:uppercase;color:var(--paper-faint)}
/* 09 · deep dive: head, working labels, the dark first-move card */
.rp-dive-head{display:flex;align-items:baseline;gap:.8rem;flex-wrap:wrap;margin-bottom:1.1rem}
.rp-dive-head .no{font-weight:600;font-size:.72rem;letter-spacing:.06em;color:var(--copper-text)}
.rp-dive-head .t{font-weight:500;font-size:1.15rem;letter-spacing:-.01em}
.rp-dive-head .tier{margin-left:auto}
.rp-h{font-size:.6rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--paper-faint);margin-bottom:.6rem}
.rp p{font-size:.85rem;line-height:1.7;color:var(--paper-muted)}
.rp p+p{margin-top:.55rem}
.rp-cost-box{margin-top:1.1rem;padding:.95rem 1.1rem;background:color-mix(in oklab,var(--paper-ink) 3%,var(--paper-card));border-left:2px solid var(--t-solid)}
.rp-move{margin-top:1.2rem;padding:1.15rem 1.25rem;background:#132531;border-radius:6px}
.rp-move .rp-h{color:var(--clay-bright,#d4854f);margin-bottom:.55rem}
.subpage .rp-move p,.rp-move p{color:#e7edee}
/* .subpage variant outranks ".subpage main > section p" (0,1,3), which
   silently won over the bare rule and painted this card's text in paper
   ink on the navy card (1.02:1). Latent since build; surfaced 2026-08-17
   when entrances-off let Lighthouse finally see the resolved page. */
/* 12 · the cost table: drivers and the conservative total */
.rp-crow{display:grid;grid-template-columns:1fr auto;gap:1.4rem;align-items:baseline;padding:.75rem 0;border-bottom:1px solid var(--paper-hair)}
.rp-crow .t{font-size:.85rem;font-weight:600}
.rp-crow .d{font-size:.74rem;line-height:1.6;color:var(--paper-faint);margin-top:.2rem}
.rp-crow .amt{font-size:.85rem;font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap}
.rp-total{display:flex;justify-content:space-between;align-items:baseline;gap:1.4rem;padding:1rem 1.1rem;margin-top:.8rem;background:color-mix(in oklab,var(--paper-ink) 3%,var(--paper-card))}
.rp-total .t{font-size:.85rem;font-weight:600}
.rp-total .d{font-size:.72rem;color:var(--paper-faint);margin-top:.2rem}
.rp-total .amt{font-size:1.3rem;font-weight:500;color:var(--copper-text);font-variant-numeric:tabular-nums;white-space:nowrap}
/* 13 · the 90-day plan: rail, checkpoints, phase intents, the day-30 proof */
.rp-tl{position:relative;height:2px;background:var(--paper-hair);margin:2.4rem 0 0}
.rp-tl .mark{position:absolute;top:-5px;width:11px;height:11px;border-radius:50%;background:var(--paper-card);border:2px solid var(--steel);transform:translateX(-50%)}
.rp-tl .mark.start{border-color:var(--paper-ink)}
.rp-tl .day{position:absolute;top:-1.9rem;transform:translateX(-50%);font-weight:600;font-size:.56rem;letter-spacing:.1em;text-transform:uppercase;color:var(--paper-faint);white-space:nowrap}
.rp-seg{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1.1rem;margin-top:.9rem}
.rp-seg .t{font-weight:600;font-size:.8rem;margin-bottom:.15rem}
.rp-seg .s{font-size:.7rem;line-height:1.55;color:var(--paper-faint)}
.rp-see{margin-top:1.3rem;padding:1rem 1.2rem;background:color-mix(in oklab,var(--paper-ink) 3%,var(--paper-card));border-left:2px solid var(--t-solid)}
.rp-see .rp-h{color:var(--t-solid)}
.rp-see ul{list-style:none;margin:0;padding:0}
.rp-see li{font-size:.8rem;line-height:1.65;padding-left:1.1rem;position:relative;margin-bottom:.35rem}
.rp-see li::before{content:"";position:absolute;left:0;top:.68em;width:.5rem;height:1.5px;background:var(--t-solid)}
/* report-true pills: tinted fill, tier colour text (the site's outline chips
   stay on the scorecard artefact; fragments carry the document's own pill) */
.rp .tier{border:0;background:color-mix(in oklab,currentColor 12%,transparent);padding:.32em .75em;font-weight:600;letter-spacing:.08em}
/* the two seats keep the two-views semantic: believed warm, actual cool */
.rp-quote.seat-a::before{background:var(--steel)}
/* 03 · about this audit: the method blocks (about page) */
.rp-method{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem 1.6rem;margin-top:1.1rem}
@media(max-width:540px){.rp-method{grid-template-columns:1fr}}
/* the walk's close: caption, the ask */
.rp-close{margin-top:3.4rem}
@media(max-width:920px){
  /* minmax(0,1fr), not 1fr: a bare 1fr's min is min-content, and a rigid
     child (nowrap amounts) inflates the track past the wrap at 390 */
  .rp-row,.rp-row.flip{grid-template-columns:minmax(0,1fr);gap:1.4rem}
  .rp-row.flip .rp-copy{order:0}
  .rp-copy p{max-width:60ch}
  .rp{padding:1.3rem 1.25rem 1.4rem}
  .rp-strip .desc{display:none}
  .rp-quotes{grid-template-columns:1fr}
  .rp-gaprow{grid-template-columns:7.4rem 1fr 2.2rem;gap:.6rem}
}

/* ================================================================
   SECTION 4 — PER-PAGE FIELDS
   One continuous arc per page: abyss, dawn, Calder paper, dusk, abyss.
   Two water-light radials give the deep zone its light source (the old
   per-section bleeds are dead). Stops are anchored to each page's
   measured geometry at 1440x900 and 390x844; re-measure both widths
   if a page's sections move. Text floors: light muted body needs
   <=#1c2f38; large display type holds to #587079; small clay/believed
   marks on paper need >=#dfe4d9.
   ================================================================ */
/* home: re-measured 2026-08-13 evening after the copy overhaul (walk, seats,
   stat row and step plates CUT; #find/#run door expansions added, #find carries
   dawnpad; docH 10168 to 7186 at 1440x900, fonts-loaded). Anchors: 0d1a22 keeps
   its 878 hero pixel; 142731 rides #ai (ai top 2256 +55); dawn dfe4d9 keeps the
   90px lead above the first light kicker, now #find's at 3736; dusk keeps the
   153px lead past #who bottom 5950; plateau stops hold their old fractions of
   the dawn-to-dusk span. */
body.home{
  background:
    radial-gradient(90vw 55vw at 78% -6vw, rgba(86,138,158,.13), transparent 68%),
    radial-gradient(70vw 45vw at -10% 12vw, rgba(86,138,158,.07), transparent 65%),
    linear-gradient(in oklab 180deg,
      #0a1013 0%, #0d1a22 12.2%, #142731 32.2%, #1c2f38 45.7%,
      #3d5a66 47.4%, #9db4bb 48.9%, #dfe4d9 50.7%,
      #e5e8de 55.5%, #eaece2 69.5%, #efefe9 79.1%,
      #dfe4d9 84.9%, #9db4bb 86.6%, #3d5a66 87.5%, #1c2f38 88.3%,
      #0e1a22 94.2%, #0a1013 100%);
}

/* the arc's breathing room on subpages: the dawn crosses the pad above the
   first light section; the dusk crosses the pad above the closing dark one */
.subpage main>section.dawnpad,.subpage .paper.dawnpad,.home main>section.dawnpad{padding-top:40vh}
.subpage main>section.duskpad,.subpage .band-cta.duskpad{padding-top:32vh}

/* light-ground variants for devices whose base values are dark-water literals */
.surface .timeline .tl-rule{background:linear-gradient(90deg,transparent,rgba(28,35,30,.35) 8%,rgba(28,35,30,.35) 92%,transparent)}
.surface .timeline .tl-rule::after{display:none}
.surface .ruled li strong{color:var(--ink)}
/* the form's input washes are light-ink tints; on paper ground they flip to paper-ink */
.surface .form input,.surface .form textarea{background:rgba(28,35,30,.03)}
.surface .form input:focus,.surface .form textarea:focus{background:rgba(28,35,30,.05)}
.surface .form button.ghost{background:rgba(28,35,30,.04)}

/* Subpage fields. Same arc as the homepage, anchored per page and per
   breakpoint to the measured geometry (the two widths diverge too far for
   one stop set). The 40vh dawnpad / 32vh duskpad create the text-free
   windows the transitions cross. Re-measure if sections move.
   ALL EIGHT SETS re-anchored 2026-07-12 late (review round 2: audit FAQ +4
   entries, hero pill, hiw next-step links, about links + bridging sentence,
   sitewide footer contact). New bases: audit 7787/10719, about 4926/6310,
   hiw 5868/5109, home 9336/11677. Per-set comments describe the anchor
   rules; the pass log holds the measurement record. */
/* the-audit: re-measured 2026-08-14 (content overhaul: doors FAQ entry added;
   docH 7910 at 1440x900, fonts-loaded; paper kicker 2193 unchanged so the dawn
   keeps its pixels; dusk re-anchored to last-surface bottom 6945, same +22
   offset; the measurement also absorbed accumulated drift since 7308) */
body.the-audit{
  background:
    radial-gradient(90vw 55vw at 78% -6vw, rgba(86,138,158,.13), transparent 68%),
    radial-gradient(70vw 45vw at -10% 12vw, rgba(86,138,158,.07), transparent 65%),
    linear-gradient(in oklab 180deg,
      #0a1013 0%, #0d1a22 6.6%, #1c2f38 21.9%,
      #9db4bb 23.8%, #dfe4d9 25.6%, #eceee5 52.7%, #dfe4d9 88.1%,
      #9db4bb 89.8%, #1c2f38 91.5%, #0e1a22 97.0%, #0a1013 100%);
}
/* how-it-works: re-measured 2026-07-10 after the plan fragment replaced the
   what-you-keep card (docH 5734 at 1440x900, fonts-loaded). The dawn MUST
   complete before the stage's natural top (932px): the pinned stage travels
   down the document during the scrub, so any transition inside the act's span
   would cross the stage itself. Dusk anchored to last-surface bottom 4806.
   (Checked 2026-07-12 after the clause cut: docH 5724, a 10px shift = 0.17%,
   below perception; stops left as measured.) */
/* re-measured 2026-08-14 (content overhaul recut: discipline section takes the
   dawnpad, search and embedded arcs inserted before the sched act, what-stays
   added; docH 7680 at 1440x900, fonts-loaded; first light kicker 926, dawn
   completes 7px before it; sched stage now at 2472, dawn completes far above;
   dusk anchored to last-surface bottom 6714, 4px lead) */
body.how-it-works{
  background:
    radial-gradient(90vw 55vw at 78% -6vw, rgba(86,138,158,.13), transparent 68%),
    radial-gradient(70vw 45vw at -10% 12vw, rgba(86,138,158,.07), transparent 65%),
    linear-gradient(in oklab 180deg,
      #0a1013 0%, #0d1a22 6.7%, #1c2f38 7.9%,
      #9db4bb 10.0%, #dfe4d9 12.0%, #eceee5 44.2%, #dfe4d9 87.4%,
      #9db4bb 89.2%, #1c2f38 91.1%, #0e1a22 97.2%, #0a1013 100%);
}
/* search: NEW page 2026-08-14 (content overhaul, architecture ruling). Measured
   docH 4773 at 1440x900, fonts-loaded; first light kicker 926, dawn completes
   7px before it; dusk anchored to last-surface bottom 3807, 4px lead. Same
   anchor grammar as how-it-works. */
body.search{
  background:
    radial-gradient(90vw 55vw at 78% -6vw, rgba(86,138,158,.13), transparent 68%),
    radial-gradient(70vw 45vw at -10% 12vw, rgba(86,138,158,.07), transparent 65%),
    linear-gradient(in oklab 180deg,
      #0a1013 0%, #0d1a22 10.7%, #1c2f38 12.6%,
      #9db4bb 16.2%, #dfe4d9 19.3%, #eceee5 45.2%, #dfe4d9 79.7%,
      #9db4bb 82.6%, #1c2f38 85.7%, #0e1a22 95.4%, #0a1013 100%);
}
/* working-with-calder merged into About 2026-07-10; its stop sets removed */
/* about: re-measured 2026-07-12 after The thinking section was cut (docH 5127
   to 4726 at 1440x900, fonts-loaded; first light kicker 926 unchanged, dawn
   keeps its pixel; dusk anchored to the new last-surface bottom 3274 with the
   same 30px lead, contact text lands as the deep settles) */
/* re-measured 2026-08-14 (content overhaul: three doors replace the five-ways
   list; docH 5103 to 4987 at 1440x900, fonts-loaded; first light kicker 926
   unchanged, dawn keeps its pixels; dusk anchored to the new last-surface
   bottom 3497, same +5 offset) */
body.about{
  background:
    radial-gradient(90vw 55vw at 78% -6vw, rgba(86,138,158,.13), transparent 68%),
    radial-gradient(70vw 45vw at -10% 12vw, rgba(86,138,158,.07), transparent 65%),
    linear-gradient(in oklab 180deg,
      #0a1013 0%, #0d1a22 9.4%, #1c2f38 11.1%,
      #9db4bb 14.5%, #dfe4d9 17.7%, #eceee5 48.4%, #dfe4d9 70.2%,
      #9db4bb 72.9%, #1c2f38 76.0%, #0e1a22 84.4%, #0a1013 100%);
}
@media(max-width:768px){
  /* stop sets re-anchored 2026-07-08 after the footer's mobile collapse grew
     every page by 153px (content px positions unchanged; stops rescaled by
     oldDocH/newDocH so each keeps its measured pixel anchor) */
  body.home{
    /* re-measured 2026-08-13 evening after the copy overhaul (docH 13377 to
       9937 at 390x844, fonts-loaded; 0d1a22 rides #problem top 2206 +195,
       142731 rides #ai top 3159 +130, dawn dfe4d9 keeps the 25px lead above
       #find's kicker at 4823, dusk keeps its 108px pre-#who-bottom anchor at
       8541; plateau stops hold their span fractions) */
    background:
      radial-gradient(90vw 55vw at 78% -6vw, rgba(86,138,158,.13), transparent 68%),
      radial-gradient(70vw 45vw at -10% 12vw, rgba(86,138,158,.07), transparent 65%),
      linear-gradient(in oklab 180deg,
        #0a1013 0%, #0d1a22 24.2%, #142731 33.1%, #1c2f38 43.8%,
        #3d5a66 45.3%, #9db4bb 46.8%, #dfe4d9 48.3%,
        #e5e8de 53.4%, #eaece2 68.3%, #efefe9 78.5%,
        #dfe4d9 84.9%, #9db4bb 86.2%, #3d5a66 87.1%, #1c2f38 87.7%,
        #0e1a22 92.3%, #0a1013 100%);
  }
  body.the-audit{
    /* re-measured 2026-08-14 (doors FAQ entry; docH 10928 at 390x844,
       fonts-loaded; paper kicker 2507, dawn keeps its pixels; dusk anchored
       to last-surface bottom 9856, same 85px lead) */
    background:
      radial-gradient(90vw 55vw at 78% -6vw, rgba(86,138,158,.13), transparent 68%),
    radial-gradient(70vw 45vw at -10% 12vw, rgba(86,138,158,.07), transparent 65%),
      linear-gradient(in oklab 180deg,
      #0a1013 0%, #0d1a22 4.7%, #1c2f38 18.8%,
      #9db4bb 20.0%, #dfe4d9 21.2%, #eceee5 51.2%, #dfe4d9 89.4%,
      #9db4bb 90.6%, #1c2f38 91.9%, #0e1a22 96.8%, #0a1013 100%);
  }
  body.how-it-works{
    /* re-measured 2026-08-14 (content overhaul recut; docH 6794 at 390x844,
       fonts-loaded; first light kicker 813, dawn completes 25px before it;
       dusk anchored to last-surface bottom 5709, same 57px lead) */
    background:
      radial-gradient(90vw 55vw at 78% -6vw, rgba(86,138,158,.13), transparent 68%),
    radial-gradient(70vw 45vw at -10% 12vw, rgba(86,138,158,.07), transparent 65%),
      linear-gradient(in oklab 180deg,
      #0a1013 0%, #0d1a22 6.5%, #1c2f38 7.1%,
      #9db4bb 9.5%, #dfe4d9 11.6%, #eceee5 40.9%, #dfe4d9 83.2%,
      #9db4bb 85.2%, #1c2f38 87.4%, #0e1a22 96.1%, #0a1013 100%);
  }
  body.search{
    /* NEW page 2026-08-14; docH 5617 at 390x844, fonts-loaded; first light
       kicker 800, dawn completes 25px before it; dusk anchored to
       last-surface bottom 4508, same 57px lead as how-it-works */
    background:
      radial-gradient(90vw 55vw at 78% -6vw, rgba(86,138,158,.13), transparent 68%),
    radial-gradient(70vw 45vw at -10% 12vw, rgba(86,138,158,.07), transparent 65%),
      linear-gradient(in oklab 180deg,
      #0a1013 0%, #0d1a22 7.8%, #1c2f38 8.7%,
      #9db4bb 11.2%, #dfe4d9 13.8%, #eceee5 40.6%, #dfe4d9 79.2%,
      #9db4bb 81.7%, #1c2f38 84.3%, #0e1a22 94.9%, #0a1013 100%);
  }
  body.about{
    /* re-measured 2026-08-14 (three doors replace five-ways; docH 6568 at
       390x844, fonts-loaded; first light kicker 785, dawn keeps its pixels;
       dusk anchored to last-surface bottom 4780, same 33px lead) */
    background:
      radial-gradient(90vw 55vw at 78% -6vw, rgba(86,138,158,.13), transparent 68%),
    radial-gradient(70vw 45vw at -10% 12vw, rgba(86,138,158,.07), transparent 65%),
      linear-gradient(in oklab 180deg,
      #0a1013 0%, #0d1a22 6.8%, #1c2f38 7.4%,
      #9db4bb 9.5%, #dfe4d9 11.7%, #eceee5 45.5%, #dfe4d9 72.3%,
      #9db4bb 74.5%, #1c2f38 76.6%, #0e1a22 85.2%, #0a1013 100%);
  }
}

/* thanks: a single dark beat, no surfacing */
body.thanks{
  background:
    radial-gradient(90vw 55vw at 78% -6vw, rgba(86,138,158,.13), transparent 68%),
    radial-gradient(70vw 45vw at -10% 12vw, rgba(86,138,158,.07), transparent 65%),
    linear-gradient(in oklab 180deg, #0a1013 0%, #11242e 45%, #0a1013 100%);
}


/* about: the contact close */
.contact{overflow:clip}
.contact .cta{margin-top:2.4rem}
.contact .cta-fine{font-family:var(--mono);font-size:.85rem;letter-spacing:.05em;color:var(--muted);margin-top:1.4rem}

/* =============================================================
   PLAIN GROUND — full port, 2026-08-17 launch eve.
   Fraser extended the mobile pass to desktop same evening ("i think
   desktop as well"). This is the complete locked override sheet from
   design-pass-2026-08/plain-ground/assets/plain.css (five rounds,
   each approved live at 1440, ruled 2026-08-15), appended verbatim:
   source order gives it the same authority it had as a second sheet.
   The superseded gradient stop-sets above are now dead weight; delete
   them in the post-launch cleanup pass, not tonight.
   ============================================================= */
/* =============================================================
   PLAIN GROUND prototype — 2026-08-15
   Fraser's direction (this session): the blue-white-blue arc does
   not work; good sites read banner-vs-tile, content popping on a
   plain background. So: the continuous field is dropped. Plain
   committed grounds per zone, clean edges, content lifted onto
   defined tiles. Palette held: abyss, Calder paper, clay marks.
   Loads AFTER site.css; equal specificity wins by source order.
   ============================================================= */

/* 1 · the field is gone: solid abyss, one light source at the top */
body.home{
  background:
    radial-gradient(90vw 55vw at 78% -6vw, rgba(86,138,158,.13), transparent 68%),
    radial-gradient(70vw 45vw at -10% 12vw, rgba(86,138,158,.07), transparent 65%),
    #0a1013;
}
@media(max-width:768px){
  body.home{
    background:
      radial-gradient(90vw 55vw at 78% -6vw, rgba(86,138,158,.13), transparent 68%),
      #0a1013;
  }
}

/* the vignette belonged to the arc's depth story; a plain ground needs none */
.vignette{display:none}

/* 2 · the 40vh transition voids die with the transitions they served */
.home main>section.dawnpad{padding-top:clamp(4.5rem,9vh,7.5rem)}
#ai{padding-bottom:clamp(4.5rem,9vh,7.5rem)}

/* 3 · the paper band: one plain ground under the three door expansions
   and the who section. Contiguous sections, one solid: one band. */
#find,#run,#card,#who{background:#fff}

/* 4 · tiles that pop */
/* dark zone: door plates become solid panels, the signal device's
   family, instead of near-invisible glass */
#doors .plate.glass{
  background:#0f1e27;
  border:1px solid rgba(231,237,238,.12);
  box-shadow:0 30px 60px -40px rgba(0,0,0,.8);
}
/* paper zone: the scorecard card gets a touch more lift off the band */
#card .doc.glass{
  background:#FBFBF7;
  border:1px solid rgba(28,35,30,.12);
  box-shadow:0 34px 70px -46px rgba(28,35,30,.55), 0 2px 8px rgba(28,35,30,.06);
}

/* 5 · the close: plain deep ground, composed not cavernous */
#close{min-height:70vh}

/* =============================================================
   SUBPAGES — same zone logic. Every subpage is dark hero, one
   contiguous light band (.surface / .paper), dark close.
   ============================================================= */

/* 6 · per-page measured arcs are gone: one solid ground for all */
body.the-audit,body.how-it-works,body.search,body.about,body.thanks{
  background:
    radial-gradient(90vw 55vw at 78% -6vw, rgba(86,138,158,.13), transparent 68%),
    radial-gradient(70vw 45vw at -10% 12vw, rgba(86,138,158,.07), transparent 65%),
    #0a1013;
}
@media(max-width:768px){
  body.the-audit,body.how-it-works,body.search,body.about,body.thanks{
    background:
      radial-gradient(90vw 55vw at 78% -6vw, rgba(86,138,158,.13), transparent 68%),
      #0a1013;
  }
}

/* 7 · the light band paints itself now (the field no longer carries it) */
.surface,.paper{background:#fff}

/* 7b · one band, no seams: adjacent band sections overlap by a pixel
   (sub-pixel rounding between painted section backgrounds draws a
   hairline of the dark body between them), and the aside's own top
   margin dies (it opened a dark stripe inside the About band) */
.surface+.surface,.surface+.paper,.paper+.surface,#run,#card,#who{margin-top:-1px}
section.aside-not{margin-top:-1px}

/* 8 · dawn and dusk voids die sitewide */
.subpage main>section.dawnpad,.subpage .paper.dawnpad{padding-top:clamp(3.5rem,7vh,6rem)}
.subpage main>section.duskpad,.subpage .band-cta.duskpad{padding-top:clamp(3.5rem,7vh,6rem)}

/* 9 · the ledger split (Fraser: no big empty fields; columns, type stays
   left-aligned). Flat subpage sections take the homepage's own split
   grammar: head column left, matter right. Markup: .split + .inner. */
.subpage .split{align-items:start}

/* heroes sit on the same left grid edge as the sections below them
   (centred blocks tried 2026-08-15 and reverted same day: out of place) */

/* 10 · more colour in the instruments (artefact-internal only; tier
   colours still never leave the artefacts) */
/* believed reads warm again on paper (it had fallen to grey), actual
   gains chroma */
#card,.paper,.surface{--view-actual:#2e6b7d;--actual:#2e6b7d}
.paper .m.think i,.surface .m.think i,#card .m.think i{background:#c2865a}
.paper .doc-legend .lb::before,.surface .doc-legend .lb::before,#card .doc-legend .lb::before{background:#c2865a}
.m{height:7px}
/* tier chips take the report's own tinted-pill grammar */
.doc .tier{border:0;background:color-mix(in oklab,currentColor 13%,transparent);font-weight:600}
/* report fragments: the gap chart runs cool, the hot rows run full clay */
.rp-gaprow .bar{background:color-mix(in oklab,#2e6b7d 55%,transparent)}
.rp-gaprow.hot .bar{background:#C8794A}
/* the band strip brightens */
.rp-strip .cell:nth-child(1) .bar{background:color-mix(in oklab,var(--t-critical) 78%,transparent)}
.rp-strip .cell:nth-child(2) .bar{background:color-mix(in oklab,var(--t-exposed) 78%,transparent)}
.rp-strip .cell:nth-child(3) .bar{background:color-mix(in oklab,var(--t-develop) 78%,transparent)}
.rp-strip .cell:nth-child(4) .bar{background:color-mix(in oklab,var(--t-solid) 78%,transparent)}
/* the audit hero map: stronger actual fill */
.map-a{fill:color-mix(in oklab,var(--view-actual) 22%,transparent)}

/* 11 · motion off on scroll (Fraser: entrances feel clunky; smooth simple
   scroll). Sections render in place; the hero's load choreography and all
   hover states stay; the signal device stays interactive. */
[data-io]{opacity:1;transform:none;transition:none}
.m i{transition:none}
/* the how-it-works schedule act flattens to its finished state (base
   styles are the resolved schedule, so this is pure subtraction) */
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion: no-preference) and (min-width:769px){
    .sched-act{height:auto}
    .sched-stage{position:static}
    .tl-fill,.sched-act .tl-tick,.sched-step,.sched-step strong{animation:none}
  }
}
/* the audit map draws itself complete, no settle */
.map-device .map-b,.map-device .map-a,.map-device .map-gap,.map-device .map-dot{
  opacity:1;transform:none;stroke-dashoffset:0;transition:none}

/* 12 · louder still: contrast up on both grounds, instruments at full voice */
/* body text steps up half a stop */
:root{--muted:rgba(231,237,238,.74);--faint:rgba(231,237,238,.6);--hair:rgba(231,237,238,.13)}
#find,#run,#card,#who,.surface{
  --muted:rgba(28,35,30,.8);--faint:rgba(28,35,30,.68);
  --paper-faint:rgba(28,35,30,.66);--hair:rgba(28,35,30,.18)}
.paper{--paper-muted:rgba(28,35,30,.8);--paper-faint:rgba(28,35,30,.66)}
/* (.56 shipped in the prototype but blends to 3.56:1 on the #E7EAE0 band;
   .66 blends to 4.75:1. AA opacity raise, pre-approved by canon.) */
/* band ruled TRUE WHITE by Fraser 2026-08-17 launch eve ("the white
   needs to be white - not off white - so it pops"); supersedes the
   prototype's deepened #E7EAE0. Tiles keep their lift via border+shadow. */
#find,#run,#card,#who,.surface,.paper{background:#fff}
/* instruments: believed takes full clay, actual goes deep steel */
#card,.paper,.surface{--view-actual:#235f72;--actual:#235f72}
.paper .m.think i,.surface .m.think i,#card .m.think i{background:#C8794A}
.paper .doc-legend .lb::before,.surface .doc-legend .lb::before,#card .doc-legend .lb::before{background:#C8794A}
.doc .tier{background:color-mix(in oklab,currentColor 12%,transparent)}
/* (18% tint put the develop chip at 4.27:1; 12% clears 4.5 at chip size) */
.rp-gaprow .bar{background:color-mix(in oklab,#235f72 75%,transparent)}
.rp-strip .cell:nth-child(1) .bar{background:var(--t-critical)}
.rp-strip .cell:nth-child(2) .bar{background:var(--t-exposed)}
.rp-strip .cell:nth-child(3) .bar{background:var(--t-develop)}
.rp-strip .cell:nth-child(4) .bar{background:var(--t-solid)}
/* tiles hold a firmer edge */
#doors .plate.glass{border-color:rgba(231,237,238,.16)}
#card .doc.glass,.paper .doc,.surface .doc,.rp{border-color:rgba(28,35,30,.16)}

/* 13 · THE SIGNAL in the hero: the mark's tick field as the banner's own
   ground. A quiet grid of ticks fading in from the right, one clay tick lit.
   Mark -> hero -> signal device -> scorecard: one grammar. No JS. */
#hero{position:relative}
#hero::before{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='34' height='38'%3E%3Crect x='15' y='13' width='3' height='12' rx='1' fill='%23e7edee' fill-opacity='.14'/%3E%3C/svg%3E");
  -webkit-mask-image:radial-gradient(66% 70% at 76% 46%, rgba(0,0,0,.95), transparent 70%);
  mask-image:radial-gradient(66% 70% at 76% 46%, rgba(0,0,0,.95), transparent 70%);
}
/* the clay tick IS one of the field's ticks: same size, sitting exactly on
   a pattern cell (cells are 34x38 anchored to the section's top-left, tick
   at +15,+13 inside its cell), just lit clay */
#hero::after{content:"";position:absolute;left:calc(34px*30 + 15px);top:calc(38px*8 + 13px);
  width:3px;height:12px;border-radius:1px;background:var(--accent);pointer-events:none}
@media(max-width:980px){
  #hero::before{-webkit-mask-image:radial-gradient(95% 55% at 62% 22%, rgba(0,0,0,.8), transparent 72%);
    mask-image:radial-gradient(95% 55% at 62% 22%, rgba(0,0,0,.8), transparent 72%)}
  #hero::after{left:calc(34px*9 + 15px);top:calc(38px*4 + 13px)}
}

/* 13b · THE HUNT (Fraser 2026-08-20, rev 2: always moving): the hero field
   is searched in an endless quiet loop. Each pass 8-10 ticks light square
   to square on the grid (discrete hops, the grid's grammar; a glide would
   break it), each candidate brighter than the last, near misses dimming to
   a faint trace, until one lights clay and dwells; the pass then fades and
   a new search begins elsewhere. Ten varied passes cycle (the first of each
   cycle lands on the canonical cell); every now and again a new load of
   ticks rushes the field first. The signal device keeps its stillness; this
   is the page's one living moment. The static composition (field + ::after
   clay tick) IS the reduced-motion, mobile, and no-JS state. JS: the hunt
   block in site.js. */
#hero .hunt{position:absolute;inset:0;pointer-events:none}
#hero.hunting::after{opacity:0}
.hunt-tick{position:absolute;width:3px;height:12px;border-radius:1px;
  background:#e7edee;opacity:0;transform:translateY(6px);
  transition:opacity .42s cubic-bezier(.2,.8,.2,1),transform .42s cubic-bezier(.2,.8,.2,1)}
.hunt-tick.found{background:var(--accent);transform:translateY(6px) scaleY(.55);
  transition:opacity .6s cubic-bezier(.2,.8,.2,1),transform .6s cubic-bezier(.34,1.4,.4,1)}
/* the rush: a fresh load arriving reads quicker than the search */
.hunt-tick.rush{transition:opacity .3s cubic-bezier(.2,.8,.2,1),transform .3s cubic-bezier(.2,.8,.2,1)}
/* the field itself breathes in on load, part of the hero choreography */
@media (prefers-reduced-motion: no-preference){
  #hero::before{animation:field-in 2s cubic-bezier(.2,.8,.2,1) both}
}
@keyframes field-in{from{opacity:0}to{opacity:1}}

/* 14 · the hero owns the first screen (Fraser 2026-08-20, supersedes the
   74vh trim of 2026-08-15): full viewport, the doors band arrives only on
   scroll. svh so mobile browser chrome does not push the fold. */
#hero{min-height:100vh;min-height:100svh;padding-top:7rem;padding-bottom:4rem}

/* 15 · one tile grammar: one radius, one edge, one lift */
.glass,.signal-device,.rp,.paper .doc,.surface .doc{border-radius:14px}
.signal-device{border-color:rgba(231,237,238,.16)}
.rp{box-shadow:0 24px 60px -44px rgba(28,35,30,.5)}

/* 16 · furniture cut: kickers lose the leading rule, the mono word carries it */
.kicker::before{display:none}

/* 18 · the optical top line: in a split, the kicker's cap height and the
   right column's first line of text sit level. The kicker's line box
   collapses to its glyphs; the right column cancels the half-leading
   above its first line; drawn rules land on the same shared line. */
.kicker{line-height:1}
.split>div>.ruled:first-child{margin-top:.1rem}
/* label-and-prose rows align on the baseline, not the box edge */
.amp-row{align-items:baseline}

/* 17 · the weight comes down: headlines run 500 and the section scale sits
   under the hero's, so the banner leads and the sections follow */
h2,h3{font-weight:500}
h2{font-size:clamp(1.9rem,4.2vw,3rem)}
#close h2{font-size:clamp(2.1rem,3.7vw,3.4rem)}
.plate .big{font-weight:500}
.amp-row b{font-weight:500}
.ruled li strong,.rp-copy h3{font-weight:500}

/* =============================================================
   LAUNCH-DAY REFINEMENT PASS — 2026-08-18
   One hero register, one section scale, one button rhythm,
   sitewide. Extends the 2026-08-15 weight ruling (all headlines
   500, the banner leads) to the subpage h1s it never reached.
   ============================================================= */

/* 19 · one hero register: every page's h1 matches the homepage banner
   (3.4rem ceiling, weight 500). The subpage heroes ran 4.1rem at 600
   and out-shouted the banner that is meant to lead; the audit hero ran
   its own 3.15rem. One scale now. */
h1{font-weight:500}
.page-hero h1{font-size:clamp(2.1rem,3.7vw,3.4rem);letter-spacing:-.015em;line-height:1.14}
.hero-split h1{font-size:clamp(2.1rem,3.7vw,3.4rem)}
/* the hero's internal rhythm matches home: kicker to h1 2rem, h1 to lede 1.9rem */
.page-hero .kicker{margin-bottom:2rem}
.page-hero .lede{margin-top:1.9rem}

/* 20 · one section scale: subpage section h2s join the home sections'
   3rem ceiling instead of their own 2.8rem */
.subpage main>section h2{font-size:clamp(1.9rem,4.2vw,3rem)}

/* 21 · one button rhythm: 2.4rem clears above a CTA, 1.4rem to its fine
   print below. The subpage closes sat the button 1.4rem under the h2
   while home cleared 2.4; the audit hero CTA had no clearance at all;
   thanks ran 2.6; the sample CTA 2.2. */
.band-cta .cta{margin-top:1rem}       /* + the h2's 1.4rem = 2.4 */
.hero-split .cta{margin-top:2.4rem}
.sample-cta{margin-top:2.4rem}
.thanks main>.cta{margin-top:2.4rem}
.form button{margin-top:1.1rem}       /* + the form's 1.3rem gap = 2.4 */
.cta-fine{margin-top:1.4rem}
/* the quiet-link's own 2rem top margin was stacking under the close and
   thanks CTAs (3.4 to 4rem of dead air below the button) */
.cta-fine .quiet-link,.hero-actions .quiet-link,.thanks main p .quiet-link{margin-top:0}
/* the contact close's intro-call CTA is the other channel, not a second
   submit: it clears the form's ghost button by a full step */
.contact .cta{margin-top:3.2rem}

/* 22 · form failure line (both delivery channels down): quiet, no colour drama */
.form-error{font-family:var(--mono);font-size:.8rem;letter-spacing:.03em;color:var(--muted);margin-top:.4rem}

/* 23 · one section rhythm sitewide: subpage sections join the home scale.
   Measured at 1440: home sections 81px pads / 28px kicker-to-h2 / 16.6px
   body; subpages ran 63px / 19px / 16px. Same site, one breath. Safe now
   the per-page gradients are dead (no stop-sets to re-measure). */
.subpage main>section{padding-block:clamp(4.5rem,9vh,7.5rem)}
.subpage main>section .kicker,.paper .kicker{margin-bottom:1.75rem}
.subpage main>section h2{margin:0 0 1.6rem}
.subpage main>section p{font-size:clamp(1rem,1.15vw,1.18rem)}
/* quiet-links take one clearance everywhere (base 2rem; the 1.8 and 1.9
   subpage variants retire) */
.subpage main>section .quiet-link,.page-hero .quiet-link{margin-top:2rem}
/* the dawn/dusk pad classes are vestiges of the dead gradient voids; they
   now mean nothing more than the shared rhythm */
.subpage main>section.dawnpad,.subpage .paper.dawnpad,
.subpage main>section.duskpad,.subpage .band-cta.duskpad{padding-top:clamp(4.5rem,9vh,7.5rem)}

/* 19 · ABOUT rework (Fraser 2026-08-20, plan: website-overhaul/
   about-rework-plan-2026-08-20.md): proof over posture. The founder's note
   (first person, fenced to its section), three failure-mode cards (deep ink
   on the paper, the walk's contrast grammar), and the ways-in doors rebuilt
   as three buyer-situation tiles standing on one discipline plinth, joined
   by the mark's ticks. Canon values only: #132531 walk-card ink, #FBFBF7
   tile, rgba(28,35,30,x) paper ink, #8f4e20 clay-on-paper AA. */
.note-sign{margin-top:2.2rem}
.note-sign b{display:block;font-weight:500;font-size:1.05rem}
.note-sign span{font-family:var(--mono);font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-top:.3rem;display:block}
.cases{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2vw,1.8rem);margin-top:2.4rem}
.subpage .cases .case{background:#132531;color:#e7edee;border-radius:14px;
  padding:1.7rem 1.5rem;box-shadow:0 34px 64px -42px rgba(16,26,32,.6)}
/* the cards are dark ground inside the paper .surface scope, so the clay
   labels take the dark AA variant explicitly (var(--copper-text) resolves
   to the paper variant here: 2.45:1 on the ink card, a11y fail 2026-08-20) */
.subpage .cases .case .ck{font-family:var(--mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:#d4854f}
.subpage .cases .case h3{margin:.7rem 0 0;font-size:1.2rem;font-weight:500;line-height:1.3;color:#e7edee}
.subpage .cases .case .cl{display:block;margin-top:1.2rem;font-family:var(--mono);font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;color:rgba(231,237,238,.62)}
.subpage .cases .case p{margin-top:.3rem;font-size:.92rem;color:rgba(231,237,238,.78);line-height:1.55;max-width:none}
.subpage .cases .case .cfy{margin-top:1.3rem;padding-top:1.1rem;border-top:1px solid rgba(231,237,238,.12)}
.subpage .cases .case .cfy .cl{margin-top:0;color:#d4854f}
@media(max-width:900px){.cases{grid-template-columns:1fr}}
.doors2{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2vw,1.8rem);margin-top:2.4rem}
.subpage .doors2 .door{display:flex;flex-direction:column;background:#FBFBF7;color:#1c231e;
  border:1px solid rgba(28,35,30,.16);border-radius:14px;padding:1.7rem 1.5rem;
  box-shadow:0 24px 60px -44px rgba(28,35,30,.5);
  transition:transform .3s cubic-bezier(.2,.9,.3,1),border-color .3s}
.subpage .doors2 .door:hover{transform:translateY(-4px);border-color:var(--accent-soft)}
.subpage .doors2 .door .dk{font-family:var(--mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:#8f4e20}
.subpage .doors2 .door h3{margin:.7rem 0 .5rem;font-size:1.2rem;font-weight:500;line-height:1.3;color:#1c231e}
.subpage .doors2 .door p{margin:0;font-size:.92rem;color:rgba(28,35,30,.75);line-height:1.55;max-width:none}
.subpage .doors2 .door .dcta{margin-top:auto;padding-top:1.1rem;font-size:.85rem;color:#8f4e20}
.plinth{position:relative;margin-top:1.6rem;background:#FBFBF7;border:1px solid rgba(28,35,30,.16);
  border-radius:14px;padding:1.2rem 1.5rem;box-shadow:0 24px 60px -44px rgba(28,35,30,.5);
  display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem 2rem}
.plinth .tk{position:absolute;top:-7px;width:3px;height:12px;border-radius:1px;background:rgba(28,35,30,.35)}
.plinth .tk:nth-child(1){left:16.6%}.plinth .tk:nth-child(2){left:50%}.plinth .tk:nth-child(3){left:83.3%}
.plinth .pl{font-family:var(--mono);font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:#8f4e20}
.subpage .plinth p{margin:0;font-size:.92rem;color:rgba(28,35,30,.8);max-width:none}
@media(max-width:900px){.doors2{grid-template-columns:1fr}.plinth .tk{display:none}}
