/* =====================================================================
   THE PREPARED ROOM v2 - sitewide design language, all eight pages.
   Loads AFTER site.css on every page. Phase 2, 2026-07-03.

   Final plane - "the prospectus": warm vellum is the page ground after
   the cinematic hero/masthead. No boxed sheets; structure comes from
   spacing, mono margin stamps, and a consistent left ledger-margin axis
   (the Docket Broadsheet + Margin Ledger hybrid). Dark appears only where
   it earns its place - the homepage video hero, the homepage advisory
   band, the Axus annexes (index, our-edge), and the footer - and those
   bands are ink-night (#0B0F18 family) - almost black with a blue undertone,
   not neutral black and not a separate blue band.

   Trust-blue is the only accent. Components consume ONLY
   --accent/--accent-bright/--accent-dim. The Axus device is colorless.
   Exactly ONE full-strength accent moment per page: the Seal. Sanctioned
   micro-dots: Fix intersection point only.

   Newsreader (display) / Instrument Sans (body) / IBM Plex Mono
   (metadata - folio codes, stamps, tags, field labels; never prose).
   ===================================================================== */

/* ---------- fonts (self-hosted, OFL; latin subsets; variable TTF-in-woff2) ---------- */
@font-face{font-family:'Newsreader';src:url('../fonts/newsreader-latin-opsz-normal.woff2') format('woff2');font-weight:200 800;font-style:normal;font-display:swap;}
@font-face{font-family:'Newsreader';src:url('../fonts/newsreader-latin-opsz-italic.woff2') format('woff2');font-weight:200 800;font-style:italic;font-display:swap;}
@font-face{font-family:'Instrument Sans';src:url('../fonts/instrument-sans-latin-wght-normal.woff2') format('woff2');font-weight:400 700;font-style:normal;font-display:swap;}
@font-face{font-family:'IBM Plex Mono';src:url('../fonts/ibm-plex-mono-latin-400-normal.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:'IBM Plex Mono';src:url('../fonts/ibm-plex-mono-latin-500-normal.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap;}

/* ---------- tokens ---------- */
:root{
  /* fixed palette */
  /* ink-night - one dark family: navy-duotone imagery on almost-black blue */
  --night:#0B0F18;
  --night-deep:#080C14;
  --night-mid:#101520;
  --night-lift:#161C2A;
  --chamber:var(--night);
  --chamber-mid:var(--night-mid);
  --vault:var(--night);
  --vault-deep:var(--night-deep);
  --vault-foot:var(--night);
  --vault-plate:var(--night-mid);
  --vault-plate-2:var(--night-lift);
  --vellum:#F2EFE6;
  --vellum-pressed:#E8E4D9;
  --ink:#121316;
  --ink-body:#3C3B36;
  --ink-lede:#2E2D29;
  --ash:#5C5A54;
  --fog:#9A968C;
  /* neutral accent slots - every accent-driven device reads ONLY these */
  --accent:#1D63FF;
  --accent-bright:#4D84FF;
  --accent-dim:rgba(29,99,255,.35);
  --line-dark:rgba(242,239,230,.14);
  --line-paper:rgba(18,19,22,.16);
  --line-paper-strong:rgba(18,19,22,.32);
  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
  --settle-dur:.85s;
  --reveal-dur:.8s;
  --room-serif:'Newsreader',Georgia,'Times New Roman',serif;
  --room-sans:'Instrument Sans',system-ui,-apple-system,'Helvetica Neue',sans-serif;
  --room-mono:'IBM Plex Mono','SF Mono',Menlo,Consolas,monospace;
  /* fluid scale - 18px base, ~1.333 ratio */
  --t-hero:clamp(2.5rem,5.5vw,5rem);
  --t-h2:clamp(2rem,3.6vw,3.25rem);
  --t-stmt:clamp(1.375rem,2.4vw,2.125rem);
  --t-lede:1.25rem;
  --room-pad:clamp(22px,5vw,68px);
  --room-max:1240px; /* matches .site-nav .bar so lockups align with the wordmark */
  /* homepage plane rhythm - generous vertical air (five-plane whitespace pass) */
  --plane-pad:clamp(120px,15vw,220px);
  --head-gap:clamp(40px,5vw,72px);
  --hero-stack-gap:clamp(16px,2.5vw,28px);
  --vellum-dim:rgba(242,239,230,.62);
  --vellum-mid:rgba(242,239,230,.82);

  /* ---- ground-dependent slots (DEFAULT = prospectus / paper) ---- */
  --ground:var(--vellum);            /* page ground after hero/masthead */
  --ground-body:var(--ink-body);     /* default body text on the ground */
  --band:var(--vault);               /* earned dark band surface */
  --band-deep:var(--vault-deep);
  --plate-lift:var(--vault-plate);   /* tonal column plate on the band */
  --plate-lift-2:var(--vault-plate-2);
  --foot-bg:var(--night);
  --redact-bar:var(--night-deep);
  --page-fade-out:.18s;
  --page-fade-in:.26s;
  --veil:var(--vellum);              /* legacy; veil disabled for opacity-only fades */
  --seam:var(--line-paper);          /* hairline between consecutive sheets */
  --docket-rule:rgba(18,19,22,.22);  /* on paper: neutral, not accent-dim */
  --sel-bg:var(--ink);
  --sel-ink:var(--vellum);
  /* masthead (inner pages) */
  --mast-bg:var(--vellum);
  --mast-ink:var(--ink);
  --mast-lab:var(--ash);
  --mast-code:var(--ash);
  --mast-lede:#4A4944;
  /* nav over the current ground (light-ground pages) */
  --nav-ink:var(--ink);
  --nav-dim:rgba(18,19,22,.62);
  --nav-tint:rgba(242,239,230,.88);
  --nav-line:rgba(18,19,22,.14);
  --nav-menu-bg:var(--vellum);
}

/* the homepage carries the frozen video hero: its nav reads on chamber in
   the static body class in index.html */
body.room-cover{
  --nav-ink:var(--vellum);
  --nav-dim:var(--vellum-dim);
  --nav-tint:rgba(11,15,24,.84);
  --nav-line:var(--line-dark);
  --nav-menu-bg:var(--chamber);
}

/* =====================================================================
   LEGACY NEUTRALIZATION - site.css rules that would otherwise leak in
   through the kept check.py hook classes (.home-signal/.home-focus/
   .home-method/.home-platform) or global element rules. Audit 2026-07-02:
   tonal strips, border sandwiches, corner devices, offset frames, the
   navy→paper gradient hack, and the negative figure margin - all dead
   here. Section paddings/backgrounds are re-established by rules LATER
   in this file (order matters; keep this block early).
   ===================================================================== */
.home-signal,.home-focus,.home-method,.home-platform{
  border:0;background:none;padding:0;margin:0;overflow:visible;z-index:auto;isolation:auto;}
.home-signal::before,.home-signal::after,
.home-focus::before,.home-focus::after,
.home-method::before,.home-method::after,
.home-platform::before,.home-platform::after{
  content:none;border:0;width:auto;height:auto;background:none;}
@media (min-width:901px){
  .home-signal,.home-focus,.home-method,.home-platform{padding:0;background:none;}
  .home-method__fig{margin-top:0;}
}

/* global element overrides for the current ground */
html{background:var(--ground);}
body{font-family:var(--room-sans);font-weight:400;font-size:18px;line-height:1.65;
  color:var(--ground-body);background:var(--ground);font-optical-sizing:auto;}
::selection{background:var(--sel-bg);color:var(--sel-ink);}

/* =====================================================================
   TYPE
   ===================================================================== */
.lab{font-family:var(--room-mono);font-weight:500;font-size:12.5px;letter-spacing:.12em;
  text-transform:none;color:var(--fog);display:block;}
.lab--onpaper{color:var(--ash);}
/* Mason: label → headline needs air; no rule jammed against the headline. */
.lab + h1,.lab + h2,.lab + .disp,.lab + .h2r{margin-top:clamp(26px,3.2vw,44px);}
.disp{font-family:var(--room-serif);font-weight:380;font-size:var(--t-hero);
  line-height:1.08;letter-spacing:-.02em;color:var(--mast-ink);}
.room-hero .disp{color:var(--vellum);} /* frozen hero keeps its vellum lockup */
.room-hero__lockup .disp{font-size:clamp(2.25rem,4.5vw,3.75rem);line-height:1.1;}
.h2r{font-family:var(--room-serif);font-weight:500;font-size:var(--t-h2);
  line-height:1.06;letter-spacing:-.014em;color:var(--ink);max-width:16em;}
.room-dark .h2r,.room-annex .h2r{color:var(--vellum);font-weight:420;}
.stmt{font-family:var(--room-serif);font-style:italic;font-weight:400;
  font-size:var(--t-stmt);line-height:1.34;letter-spacing:-.008em;color:var(--ink);}
.room-dark .stmt,.room-annex .stmt{color:var(--vellum);}
.leder{font-size:var(--t-lede);line-height:1.55;font-weight:400;max-width:34em;color:var(--ink-lede);}
.room-dark .leder,.room-annex .leder{color:var(--vellum-mid);}
.prose{color:var(--ink-body);}
.prose p{max-width:38em;}
.prose p + p{margin-top:1.1em;}
.h2r + .prose{margin-top:clamp(26px,3vw,40px);}
.room-dark .prose,.room-annex .prose{color:rgba(242,239,230,.75);}
.mono-note{font-family:var(--room-mono);font-weight:400;font-size:12px;
  letter-spacing:.12em;color:var(--fog);}

.room-rail{width:100%;max-width:var(--room-max);margin-inline:auto;padding-inline:var(--room-pad);}

/* quiet text link (no accent; the accent belongs to the Seal alone) */
.room-link{display:inline-flex;align-items:baseline;gap:10px;font-family:var(--room-sans);
  font-weight:500;font-size:14.5px;letter-spacing:.02em;color:var(--ink);
  border-bottom:1px solid var(--line-paper);padding-bottom:5px;width:fit-content;
  transition:border-color .3s var(--ease),color .3s var(--ease);}
.room-link:hover{border-bottom-color:var(--ink);}
.room-dark .room-link,.room-annex .room-link{color:var(--vellum-mid);border-bottom-color:var(--line-dark);}
.room-dark .room-link:hover,.room-annex .room-link:hover{color:var(--vellum);border-bottom-color:var(--vellum);}
a:focus-visible{outline:1px solid var(--fog);outline-offset:5px;}

/* =====================================================================
   GRAIN - dark surfaces only, both planes; felt, not seen
   ===================================================================== */
.room-hero::after,.room-dark::after,.room-annex::after,.site-footer::after{
  content:"";display:block;position:absolute;inset:0;width:auto;height:auto;border:0;
  z-index:0;pointer-events:none;opacity:.026;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");}
.room-hero>*,.room-dark>*,.room-annex>*,.room-masthead>*,.room-close-sec>*{
  position:relative;z-index:1;}
/* .site-footer>.wrap already carries position:relative;z-index:1 (site.css),
   so the grain above sits behind all footer content, compliance text included */

/* =====================================================================
   NAV - same markup/behavior as site, dressed for the current ground
   ===================================================================== */
.site-nav.scrolled{border-bottom-color:var(--nav-line);}
.site-nav::before{background:rgba(11,15,24,0);}
.site-nav.scrolled::before{background:var(--nav-tint);}
.brand .wm{font-family:var(--room-serif);font-weight:420;color:var(--nav-ink);}
/* overlay ground only while the burger menu exists (mobile); desktop row stays transparent */
@media (max-width:900px){
  .nav-links{background:var(--nav-menu-bg);}
  .site-nav.open{background:var(--nav-menu-bg);}
}
.nav-links a:not(.btn){font-family:var(--room-sans);font-weight:500;font-size:15px;
  letter-spacing:.02em;text-transform:none;color:var(--nav-dim);}
.nav-links a:not(.btn):hover{color:var(--nav-ink);}
/* active page: hairline underline (neutral; not accent) */
.nav-links a.active{color:var(--nav-ink);position:relative;}
.nav-links a.active::after{content:"";position:absolute;left:0;right:0;bottom:-9px;
  height:1px;background:var(--nav-line);}
@media (min-width:901px){
  .nav-links a:not(.btn){font-size:13px;letter-spacing:.02em;text-transform:none;
    color:var(--nav-dim);font-weight:500;}
  .nav-links a:not(.btn):hover,.nav-links a:not(.btn).active{color:var(--nav-ink);}
}
@media (max-width:900px){
  .nav-links a:not(.btn){font-family:var(--room-serif);font-weight:400;
    font-size:clamp(1.7rem,6vw,2.2rem);letter-spacing:-.01em;}
  .nav-links a.active::after{bottom:-6px;}
}
/* 44px min touch target (site.css sets 36×36) */
.nav-burger{width:44px;height:44px;margin:-4px -4px -4px 0;}
.nav-burger span{background:var(--nav-ink);}

/* =====================================================================
   HERO (homepage) - FROZEN per Mason 2026-07-03: full-bleed video, warm
   ink wash, nav-aligned lockup (left-of-center), mono coords.
   ===================================================================== */
.room-hero{position:relative;min-height:100vh;min-height:100svh;display:grid;
  grid-template-columns:minmax(0,1fr);justify-items:stretch;align-content:center;
  padding:78px 0 0;box-sizing:border-box;overflow:hidden;
  background:var(--chamber) url('../img/hero-poster.jpg') center/cover no-repeat;
  background-blend-mode:luminosity;}
.room-hero__video{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;
  filter:saturate(.42) contrast(1.12) brightness(.68);
  opacity:0;transition:opacity 1.4s var(--ease-out);}
.room-hero__video.is-playing{opacity:1;}
/* ink-night wash — brand navy #0C111C duotone field over hero video */
.room-hero__wash{position:absolute;inset:0;z-index:1;pointer-events:none;background:
  linear-gradient(180deg,rgba(12,17,28,.74) 0%,rgba(12,17,28,.36) 38%,rgba(12,17,28,.54) 66%,rgba(8,12,20,.98) 100%),
  linear-gradient(82deg,rgba(12,17,28,.82) 0%,rgba(12,17,28,.38) 46%,rgba(12,17,28,.06) 74%),
  rgba(12,17,28,.28);}
.room-hero::after{z-index:2;}
.room-hero .room-rail{position:relative;z-index:3;
  width:100%;max-width:var(--room-max);margin-inline:auto;
  padding-inline:var(--room-pad);padding-block:0;}
.room-hero__lockup{display:flex;flex-direction:column;align-items:flex-start;max-width:40em;}
.room-hero__lede{margin-top:var(--hero-stack-gap);font-size:var(--t-lede);line-height:1.55;
  color:rgba(242,239,230,.86);max-width:30em;}
.room-hero__base{margin-top:var(--hero-stack-gap);display:flex;align-items:baseline;
  justify-content:flex-start;gap:24px;max-width:40em;flex-wrap:wrap;}
.coords{font-family:var(--room-mono);font-weight:400;font-size:12px;letter-spacing:.14em;
  color:var(--fog);}
/* entrance: one settle pass after intro splits (gated on html.room-js) */
@media (prefers-reduced-motion:no-preference){
  html.intro-running .room-hero__lockup>*,html.intro-running .room-hero__base{
    opacity:0;animation:none;}
  html.room-js:not(.intro-running) .room-hero__lockup>*,html.room-js:not(.intro-running) .room-hero__base{
    opacity:0;transform:translate3d(0,6px,0);animation:roomSettle var(--settle-dur) var(--ease-out) forwards;}
  html.room-js:not(.intro-running) .room-hero__lockup>:nth-child(1){animation-delay:.28s;}
  html.room-js:not(.intro-running) .room-hero__lockup>:nth-child(2){animation-delay:.42s;}
  html.room-js:not(.intro-running) .room-hero__lockup>:nth-child(3){animation-delay:.56s;}
  html.room-js:not(.intro-running) .room-hero__base{animation-delay:.72s;}
  @keyframes roomSettle{to{opacity:1;transform:translate3d(0,0,0);}}
}
/* full-screen intro hold — ink field, no page chrome or hero flash */
html.intro-running{background:var(--night-deep);}
html.intro-running body{background:var(--night-deep);}
html.intro-running .room-hero,html.intro-running main,html.intro-running .site-footer{
  visibility:hidden;}
.intro__panel{background:var(--night-deep);}
.intro__seam{background:rgba(242,239,230,.28);}
.intro__brand::before{background:var(--night-deep);}
.intro__wm-inner{color:var(--vellum);font-family:var(--room-serif);font-weight:380;}

/* =====================================================================
   MASTHEAD (inner pages) - the letterhead. Paper ground; mono folio code
   in the top-right corner.
   ===================================================================== */
.room-masthead{position:relative;background:var(--mast-bg);
  padding:calc(78px + clamp(60px,10vw,140px)) 0 clamp(56px,8vw,110px);overflow:hidden;}
/* letterhead seam — same quiet rule as sheet boundaries */
.room-masthead::after{content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);
  width:min(calc(100% - var(--room-pad)*2),calc(var(--room-max) - var(--room-pad)*2));
  height:1px;background:var(--seam);}
.room-masthead .room-rail{position:relative;}
.room-masthead__code{position:absolute;top:0;right:var(--room-pad);
  font-family:var(--room-mono);font-weight:500;font-size:12px;letter-spacing:.16em;color:var(--mast-code);}
.room-masthead .lab{color:var(--mast-lab);}
.room-masthead .disp{max-width:12em;}
.room-masthead__lede{margin-top:clamp(28px,3.6vw,46px);font-size:var(--t-lede);line-height:1.55;
  color:var(--mast-lede);max-width:34em;}
.room-masthead .seal-line{margin-top:clamp(38px,5vh,58px);}
.room-masthead .seal-link{color:var(--mast-ink);}
/* compact letterhead so the intake form clears the fold */
.room-masthead--intake{padding:calc(78px + clamp(44px,7vw,92px)) 0 clamp(32px,4vw,52px);}
/* minimal rooms (thank-you / 404): taller presence, same grammar */
.room-masthead--min{padding:calc(78px + clamp(96px,16vh,180px)) 0 clamp(96px,14vh,180px);}

/* =====================================================================
   THE SHEET - full-bleed broadsheet section. Left ledger margin (mono
   stamp, label, the page's one Fix) + confident reading column. Plain
   grid columns, no sticky.
   ===================================================================== */
.sheet{position:relative;padding:clamp(64px,8.5vw,128px) 0;}
.sheet--tight{padding-top:clamp(40px,5vw,72px);}
/* one hairline where two sheets of the same paper meet - page separation,
   nothing else. .sheet--seam marks the first sheet under a letterhead masthead. */
.sheet--seam::before,
.sheet--paper + .sheet--paper::before,
.sheet--paper + .room-close-sec::before{
  content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:min(calc(100% - var(--room-pad)*2),calc(var(--room-max) - var(--room-pad)*2));
  height:1px;background:var(--seam);}
.sheet__grid{display:block;}
.sheet__grid > .sheet__body{min-width:0;}
.sheet__cols{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1fr);
  gap:clamp(30px,5vw,72px);margin-top:clamp(36px,4.5vw,60px);align-items:start;}
.sheet__figure{margin:clamp(44px,5.5vw,72px) 0 0;}
.sheet__link{margin-top:clamp(30px,3.6vw,48px);}
/* navy duotone stills - warm ink on paper, night-mid on dark bands */
.plate{position:relative;overflow:hidden;background:var(--chamber-mid);}
.sheet--paper .plate{background:var(--vellum-pressed);}
.plate img{width:100%;height:100%;object-fit:cover;display:block;
  filter:saturate(.5) contrast(1.08) brightness(.85);
  transition:transform .75s var(--ease);will-change:transform;}
.sheet--paper .plate img{filter:saturate(.5) contrast(1.06) brightness(.9);}
.plate::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(165deg,rgba(11,15,24,.1) 30%,rgba(8,12,20,.4) 100%);}
.sheet--paper .plate::after{
  background:linear-gradient(165deg,rgba(242,239,230,.02) 28%,rgba(11,15,24,.22) 100%);}
@media (hover:hover){
  .plate:hover img{transform:scale(1.035);}
}
.plate--wide{aspect-ratio:16/7;}
.plate--tall{aspect-ratio:4/5;}
.plate--card{aspect-ratio:5/3;}
.plate-cap{margin-top:12px;display:flex;justify-content:space-between;gap:16px;
  font-family:var(--room-mono);font-weight:400;font-size:11.5px;letter-spacing:.12em;color:var(--ash);}

/* doctrine - floating statements, no rules at all (de-lined by design) */
.doctrine{margin-top:clamp(38px,4.6vw,60px);display:flex;flex-direction:column;
  gap:clamp(30px,3.8vw,48px);}
.doctrine--lead{margin-top:0;}
.doctrine__k{font-family:var(--room-sans);font-weight:500;font-size:12.5px;
  letter-spacing:.01em;color:var(--ash);display:block;margin-bottom:12px;}
.doctrine__s{max-width:24em;}
/* 2x2 variant (about.html closing spread) - same maxims, quiet grid instead
   of a single stacked column; collapses back to one column under 900px. */
.doctrine--grid{display:grid;grid-template-columns:1fr 1fr;
  gap:clamp(36px,4.5vw,56px) clamp(32px,4.5vw,64px);}
/* 3-across variant (advisory-focus lens row) - collapses at the same
   breakpoint as the tri register, since both are 3-up grids. */
.doctrine--row{display:grid;grid-template-columns:repeat(3,1fr);
  gap:clamp(32px,4vw,48px);}

/* method split (homepage approach sheet): maxims beside one tall plate */
.method-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,380px);
  gap:clamp(32px,5.5vw,84px);margin-top:clamp(36px,4.5vw,60px);align-items:start;}

/* charter extras (about) */
.charter__closer{margin-top:1.4em;font-family:var(--room-serif);font-style:italic;
  font-weight:400;font-size:1.3rem;line-height:1.5;color:var(--ash);max-width:30em;}
.kvrow{display:flex;flex-wrap:wrap;gap:clamp(24px,3.6vw,56px);margin-top:clamp(32px,4vw,52px);}
.kv{min-width:150px;}
.kv__k{font-family:var(--room-sans);font-weight:500;font-size:12px;
  letter-spacing:.01em;color:var(--ash);display:block;margin-bottom:9px;}
.kv__v{font-family:var(--room-serif);font-weight:460;font-size:1.12rem;
  line-height:1.3;color:var(--ink);}

/* mono tag set (sector coverage) - tags, not lines; no leaders, no rules */
.tagset{margin-top:clamp(36px,4.5vw,60px);}
.tagset__lbl{display:flex;justify-content:space-between;gap:16px;
  font-family:var(--room-sans);font-weight:500;font-size:12.5px;letter-spacing:.01em;
  color:var(--ash);margin-bottom:clamp(16px,2vw,24px);}
.tagset__line{font-family:var(--room-sans);font-weight:400;font-size:15px;
  letter-spacing:.005em;line-height:1.75;color:#4A4944;max-width:54em;}

/* =====================================================================
   THE DOCKET ROW - list language for pillars, process steps, and
   capability registers. Hairlines only (no fills); static layout.
   ===================================================================== */
.docket{--dk-ix:var(--ash);--dk-name:var(--ink);--dk-desc:#4A4944;
  margin-top:clamp(38px,4.6vw,60px);position:relative;}
.docket::before{content:"";display:block;height:1px;width:100%;
  background:var(--docket-rule);}
.room-dark .docket,.room-annex .docket{--dk-ix:var(--fog);
  --dk-name:var(--vellum);--dk-desc:rgba(242,239,230,.72);}
.room-dark .docket::before,.room-annex .docket::before{background:var(--line-dark);}
.docket__row{position:relative;display:grid;
  grid-template-columns:4em minmax(10em,.68fr) minmax(0,1fr);
  gap:clamp(20px,3.2vw,52px);align-items:baseline;
  padding:clamp(28px,3.2vw,42px) 0 clamp(30px,3.4vw,44px);color:inherit;}
.docket__row::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;
  background:var(--docket-rule);}
.room-dark .docket__row::after{background:var(--line-dark);}
.room-annex .docket__row::after{background:var(--line-dark);}
.docket__ix{font-family:var(--room-sans);font-weight:600;font-size:12px;
  letter-spacing:.01em;color:var(--dk-ix);}
.docket__name{font-family:var(--room-serif);font-weight:460;
  font-size:clamp(1.7rem,2.55vw,2.4rem);line-height:1.06;letter-spacing:-.014em;
  color:var(--dk-name);}
.docket__desc{font-family:var(--room-sans);font-weight:400;font-size:16.5px;
  line-height:1.58;color:var(--dk-desc);max-width:30em;}
.docket--wide .docket__desc{max-width:34em;}
/* Stacked editorial — process sequences (approach) */
.docket--stack .docket__row{grid-template-columns:1fr;
  gap:clamp(14px,1.8vw,20px);align-items:start;
  padding:clamp(40px,4.8vw,56px) 0;}
.docket--stack .docket__ix{font-size:11px;letter-spacing:.04em;}
.docket--stack .docket__name{font-size:clamp(1.85rem,2.8vw,2.55rem);}
.docket--stack .docket__desc{max-width:42em;font-size:17px;line-height:1.62;}

/* =====================================================================
   THE TRI REGISTER - three transaction settings as quiet tonal plates on
   the earned dark band (Mason 2026-07-03: no stacked-row showcase, no
   boxed outlines). Separation from tone and spacing; equal heights; the
   five capabilities ride underneath as mono tags.
   ===================================================================== */
.tri{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2vw,26px);
  margin-top:clamp(40px,5vw,64px);}
.tri__col{position:relative;display:flex;flex-direction:column;min-width:0;min-height:260px;
  background:var(--plate-lift);padding:clamp(26px,3vw,40px) clamp(22px,2.6vw,32px)
  clamp(24px,2.8vw,36px);color:inherit;
  transition:background .4s var(--ease),transform .45s var(--ease);}
.tri__ix{font-family:var(--room-sans);font-weight:600;font-size:12px;
  letter-spacing:.01em;color:var(--fog);opacity:.72;transition:opacity .35s var(--ease);}
.tri__name{margin-top:clamp(18px,2.2vw,28px);font-family:var(--room-serif);
  font-weight:440;font-size:clamp(1.5rem,1.9vw,1.95rem);line-height:1.12;
  letter-spacing:-.012em;color:var(--vellum);transition:transform .45s var(--ease);}
.tri__desc{margin-top:14px;font-family:var(--room-sans);font-weight:400;
  font-size:15.5px;line-height:1.6;color:rgba(242,239,230,.74);}
.tri__tags{margin-top:auto;padding-top:clamp(22px,2.6vw,34px);
  font-family:var(--room-sans);font-weight:400;font-size:13px;
  letter-spacing:.005em;line-height:1.75;color:rgba(242,239,230,.68);}
@media (hover:hover){
  a.tri__col:hover{background:var(--plate-lift-2);transform:translateY(-4px);}
  a.tri__col:hover .tri__name{transform:translateX(4px);}
  a.tri__col:hover .tri__ix{opacity:1;}
}
a.tri__col:focus-visible{outline:1px solid var(--fog);outline-offset:4px;}

/* =====================================================================
   DARK BANDS - content directly on the vault (navy) / chamber ground
   ===================================================================== */
.room-dark{position:relative;background:var(--band);color:var(--vellum-mid);
  padding:clamp(72px,10vw,150px) 0;}
/* paper → ink-night: earned band reads as one field, not a boxed insert */
.sheet--paper + .room-dark{padding-top:clamp(88px,11vw,148px);}
.sheet--paper + .room-dark::before{content:"";position:absolute;top:0;left:50%;
  transform:translateX(-50%);
  width:min(calc(100% - var(--room-pad)*2),calc(var(--room-max) - var(--room-pad)*2));
  height:1px;background:var(--line-dark);}
.room-dark .sheet__grid{align-items:start;}
.room-dark .lab{color:var(--fog);}
/* deep-link target (homepage tri → advisory-focus#transactions): clear the
   fixed nav (78px) on arrival */
#transactions{scroll-margin-top:78px;}
.room-dark__head{max-width:44em;}
.room-dark__copy{margin-top:clamp(24px,3vw,38px);font-size:var(--t-lede);line-height:1.55;
  color:rgba(242,239,230,.78);max-width:33em;}

/* =====================================================================
   THE FIX - the mark's crossing strokes, carried on the ledger margin
   beside one key claim per page. Two hairlines draw in from opposite
   corners, cross at center, accent point lands at the intersection.
   Single pass, then still.
   ===================================================================== */
.fix{position:relative;flex:none;width:clamp(34px,3.4vw,46px);height:clamp(34px,3.4vw,46px);}
/* strokes are the square's diagonals: length 141.42% of the side */
.fix i{position:absolute;top:0;height:1px;width:141.42%;background:rgba(18,19,22,.5);}
.room-dark .fix i,.room-annex .fix i{background:rgba(242,239,230,.5);}
.fix i:nth-child(1){left:0;transform-origin:left center;transform:rotate(45deg) scaleX(1);}
.fix i:nth-child(2){left:-41.42%;transform-origin:right center;transform:rotate(-45deg) scaleX(1);}
.fix b{position:absolute;top:50%;left:50%;width:4px;height:4px;margin:-2px 0 0 -2px;
  border-radius:50%;background:var(--accent);opacity:.95;}
/* drawn state, only when room.js is present */
html.room-js .fix i:nth-child(1){transform:rotate(45deg) scaleX(0);
  transition:transform .6s var(--ease) .1s;}
html.room-js .fix i:nth-child(2){transform:rotate(-45deg) scaleX(0);
  transition:transform .6s var(--ease) .24s;}
html.room-js .fix b{opacity:0;transition:opacity .45s ease .78s;}
html.room-js .in .fix i:nth-child(1),html.room-js .fix.in i:nth-child(1){transform:rotate(45deg) scaleX(1);}
html.room-js .in .fix i:nth-child(2),html.room-js .fix.in i:nth-child(2){transform:rotate(-45deg) scaleX(1);}
html.room-js .in .fix b,html.room-js .fix.in b{opacity:.95;}

/* Axus glimpse layout (homepage) */
.glimpse{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,460px);
  gap:clamp(40px,6vw,100px);align-items:center;margin-top:clamp(36px,4.5vw,60px);}
.glimpse__body .prose{color:rgba(242,239,230,.78);}
.glimpse__body .prose p{max-width:32em;}
.glimpse__thesis{max-width:22em;margin-bottom:clamp(28px,3.5vw,44px);font-style:normal;
  font-weight:460;font-size:clamp(1.35rem,2.2vw,1.85rem);line-height:1.32;color:var(--vellum);}

/* Our Edge - quiet page label, sans not mono */
.edge-kicker{display:block;margin-bottom:0;font-family:var(--room-sans);
  font-weight:600;font-size:12px;line-height:1.2;letter-spacing:.055em;
  text-transform:uppercase;color:var(--ash);}
.edge-kicker + .h2r{margin-top:clamp(26px,3.2vw,44px);}
.edge-kicker--dark{color:var(--fog);}

/* Our Edge mandate applications - hairline-only institutional grid */
.edge-applications{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0;margin-top:clamp(44px,5.5vw,68px);
  border-top:1px solid var(--line-paper);border-bottom:1px solid var(--line-paper);}
.edge-applications__item{min-width:0;padding:clamp(30px,3.6vw,46px)
  clamp(24px,3vw,38px) clamp(30px,3.8vw,48px);
  border-right:1px solid var(--line-paper);}
.edge-applications__item:last-child{border-right:0;}
.edge-applications__label{font-family:var(--room-sans);font-weight:600;
  font-size:12px;letter-spacing:.01em;color:var(--ash);}
.edge-applications__name{margin-top:clamp(22px,2.6vw,32px);
  font-family:var(--room-serif);font-weight:440;
  font-size:clamp(1.35rem,1.65vw,1.7rem);line-height:1.12;
  letter-spacing:-.012em;color:var(--ink);max-width:11em;}
.edge-applications__desc{margin-top:clamp(16px,1.9vw,22px);
  font-family:var(--room-sans);font-size:15.5px;line-height:1.64;
  color:var(--ink-body);max-width:26em;}

/* edge contrast - typographic pairing, no cards */
.edge-set{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(28px,5vw,64px);margin-top:clamp(36px,4.5vw,56px);}
.edge-set__lab{font-family:var(--room-sans);font-weight:500;font-size:12px;
  letter-spacing:.01em;color:var(--ash);display:block;margin-bottom:clamp(14px,1.6vw,18px);}
.edge-set__col--dim .edge-set__line{color:var(--ash);font-weight:400;}
.edge-set__line{font-family:var(--room-serif);font-weight:460;
  font-size:clamp(1.18rem,1.55vw,1.42rem);line-height:1.36;color:var(--ink);}
.edge-set__line + .edge-set__line{margin-top:clamp(14px,1.8vw,20px);}
.edge-set + .leder{margin-top:clamp(32px,4vw,48px);}
.pull{margin:clamp(32px,4vw,48px) 0 0;padding:0;max-width:30em;}
.pull p{font-family:var(--room-serif);font-style:italic;font-weight:400;
  font-size:clamp(1.2rem,1.8vw,1.5rem);line-height:1.38;color:var(--ink-lede);}
.room-dark .pull p,.room-annex .pull p{color:var(--vellum-mid);}

/* homepage institutional thesis - prose left, navy-toned plate right */
.home-thesis{padding:var(--plane-pad) 0;}
.home-thesis .h2r{max-width:13em;}
.home-thesis__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,380px);
  gap:clamp(36px,5.5vw,84px);margin-top:var(--head-gap);align-items:start;}
.home-thesis__body{max-width:none;margin-top:0;min-width:0;}
.home-thesis__body .prose{margin-top:clamp(24px,3vw,36px);}
.home-thesis__body .prose p{max-width:34em;}
.home-thesis__fig{margin:0;min-width:0;}
.home-thesis__fig .plate--tall{min-height:clamp(320px,38vw,520px);}

/* homepage mandate cards - hairline-bordered panels on paper ground */
.home-mandates{padding:var(--plane-pad) 0;}
.home-focus .h2r{max-width:13em;}
.mandate-cards__head{max-width:44em;}
.mandate-cards__lede{margin-top:clamp(22px,2.8vw,36px);font-size:var(--t-lede);line-height:1.55;
  font-weight:400;max-width:34em;color:var(--ink-lede);}
.mandate-cards__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(20px,2.4vw,32px);margin-top:clamp(44px,5.5vw,68px);}
.mandate-card{display:flex;flex-direction:column;min-width:0;color:inherit;
  text-decoration:none;border:1px solid var(--line-paper);
  transition:border-color .35s var(--ease);}
.mandate-card__fig{margin:0;}
.mandate-card__body{display:flex;flex-direction:column;flex:1;position:relative;
  padding:clamp(26px,3vw,36px) clamp(24px,2.8vw,32px) clamp(28px,3.2vw,38px);}
.mandate-card__arrow{position:absolute;top:clamp(26px,3vw,36px);
  right:clamp(24px,2.8vw,32px);width:32px;height:32px;flex:none;
  display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line-paper);color:var(--ash);
  transition:border-color .35s var(--ease),color .35s var(--ease),transform .35s var(--ease);}
.mandate-card__arrow svg{width:13px;height:13px;display:block;}
.mandate-card__name{font-family:var(--room-serif);font-weight:440;
  font-size:clamp(1.35rem,1.6vw,1.65rem);line-height:1.14;letter-spacing:-.01em;
  color:var(--ink);transition:color .35s var(--ease);padding-right:40px;}
.mandate-card__desc{margin-top:clamp(14px,1.6vw,18px);font-family:var(--room-sans);
  font-weight:400;font-size:15.5px;line-height:1.62;color:var(--ink-body);flex:1;}
.mandate-card__tags{margin-top:clamp(22px,2.6vw,30px);padding-top:clamp(18px,2.2vw,24px);
  border-top:1px solid var(--line-paper);
  font-family:var(--room-sans);font-weight:400;font-size:13px;letter-spacing:.005em;
  line-height:1.65;color:var(--ash);}
@media (hover:hover){
  a.mandate-card:hover{border-color:var(--line-paper-strong);}
  a.mandate-card:hover .mandate-card__name{color:var(--ink-lede);}
  a.mandate-card:hover .mandate-card__arrow{border-color:var(--line-paper-strong);
    color:var(--ink);transform:translate(2px,-2px);}
}
a.mandate-card:focus-visible{outline:1px solid var(--fog);outline-offset:4px;}
@media (max-width:980px){
  .mandate-cards__grid{grid-template-columns:1fr;gap:clamp(20px,4vw,28px);}
}

/* mandate cards - dark ground variant (advisory-focus transactions) */
.mandate-cards--dark{margin-top:clamp(44px,5.5vw,68px);}
.mandate-cards--dark .mandate-card{border-color:rgba(242,239,230,.13);background:transparent;}
.mandate-cards--dark .mandate-card__name{color:var(--vellum);padding-right:0;}
.mandate-cards--dark .mandate-card__desc{color:rgba(242,239,230,.72);}
.mandate-cards--dark .mandate-card__tags{border-top-color:rgba(242,239,230,.12);
  color:rgba(242,239,230,.52);}

/* mandate register - institutional ruled index on dark ground */
.txn-reg{margin-top:clamp(44px,5.5vw,68px);}
.txn-reg__row{display:grid;grid-template-columns:3.2em minmax(0,1fr);
  gap:clamp(18px,3vw,44px);align-items:baseline;padding:clamp(26px,3.2vw,40px) 0;
  border-top:1px solid var(--line-dark);color:inherit;
  transition:padding-left .4s var(--ease);}
.txn-reg__row:last-child{border-bottom:1px solid var(--line-dark);}
.txn-reg__ix{font-family:var(--room-sans);font-weight:600;font-size:12px;
  letter-spacing:.01em;color:var(--fog);}
.txn-reg__main{display:flex;flex-direction:column;gap:10px;}
.txn-reg__name{font-family:var(--room-serif);font-weight:440;
  font-size:clamp(1.5rem,2vw,2rem);line-height:1.1;letter-spacing:-.012em;color:var(--vellum);
  transition:transform .4s var(--ease);}
.txn-reg__desc{font-family:var(--room-sans);font-size:16px;line-height:1.58;
  color:rgba(242,239,230,.72);max-width:38em;}
.txn-reg__tags{margin-top:clamp(14px,1.6vw,18px);font-family:var(--room-sans);font-weight:400;
  font-size:13px;letter-spacing:.005em;line-height:1.65;color:rgba(242,239,230,.58);}
@media (hover:hover){
  .txn-reg:not(.txn-reg--cols) a.txn-reg__row:hover{padding-left:6px;}
  .txn-reg:not(.txn-reg--cols) a.txn-reg__row:hover .txn-reg__name{transform:translateX(4px);}
}
a.txn-reg__row:focus-visible{outline:1px solid var(--fog);outline-offset:6px;}

/* mandate register - three-column editorial panels (homepage focus).
   Mason 2026-07-03: dropped the ledger/mono treatment entirely - eyebrow,
   tags, and cue now run sans (same fix as .edge-kicker replacing .lab).
   Cards carry no fill and no per-card box (hairlines-only rule); separation
   comes from the column dividers and whitespace alone, with a small
   hairline arrow mark standing in for the reference's image corner-icon
   as the "click through" affordance. */
.txn-reg--cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0;border-top:1px solid var(--line-dark);border-bottom:1px solid var(--line-dark);}
.txn-reg--cols .txn-reg__row{display:flex;flex-direction:column;align-items:stretch;
  position:relative;gap:0;grid-template-columns:unset;
  padding:clamp(36px,4.2vw,52px) clamp(28px,3.4vw,44px) clamp(32px,3.8vw,44px);
  border-top:none;border-bottom:none;border-right:1px solid rgba(242,239,230,.13);
  min-height:clamp(290px,26vw,352px);text-decoration:none;cursor:pointer;}
.txn-reg--cols .txn-reg__row:not(a){cursor:default;}
.txn-reg--cols .txn-reg__row:last-child{border-right:none;border-bottom:none;}
.txn-reg--cols .txn-reg__head{display:flex;align-items:baseline;min-height:1.2em;}
.txn-reg--cols .txn-reg__ix{font-family:var(--room-sans);font-weight:600;font-size:12px;
  letter-spacing:.01em;color:rgba(242,239,230,.42);}
.txn-reg--cols .txn-reg__ix::after{content:"·";display:inline-block;margin:0 8px;
  color:rgba(242,239,230,.28);}
.txn-reg--cols .txn-reg__meta{font-family:var(--room-sans);font-weight:400;font-size:12.5px;
  letter-spacing:.01em;color:rgba(242,239,230,.42);white-space:nowrap;}
.txn-reg--cols .txn-reg__arrow{position:absolute;top:clamp(34px,4vw,50px);
  right:clamp(26px,3.2vw,42px);width:32px;height:32px;flex:none;
  display:flex;align-items:center;justify-content:center;
  border:1px solid rgba(242,239,230,.24);color:rgba(242,239,230,.56);
  transition:border-color .25s ease-out,color .25s ease-out,transform .25s ease-out;}
.txn-reg--cols .txn-reg__arrow svg{width:13px;height:13px;display:block;}
.txn-reg--cols .txn-reg__main{gap:0;flex:1;margin-top:clamp(28px,3.4vw,44px);}
.txn-reg--cols .txn-reg__name{font-size:clamp(1.5rem,1.8vw,1.9rem);
  line-height:1.1;max-width:11em;}
.txn-reg--cols .txn-reg__desc{margin-top:clamp(16px,1.9vw,24px);font-size:15.5px;
  line-height:1.68;color:rgba(242,239,230,.72);max-width:25em;}
.txn-reg--cols .txn-reg__tags{margin-top:auto;padding-top:clamp(22px,2.6vw,32px);
  border-top:1px solid rgba(242,239,230,.12);color:rgba(242,239,230,.52);
  font-family:var(--room-sans);font-weight:400;font-size:13px;letter-spacing:.005em;
  line-height:1.65;}
.txn-reg--cols .txn-reg__cue{align-self:flex-start;margin-top:clamp(20px,2.4vw,28px);
  padding-bottom:5px;border-bottom:1px solid rgba(242,239,230,.24);
  font-family:var(--room-sans);font-weight:500;font-size:13px;letter-spacing:.01em;
  color:rgba(242,239,230,.62);transition:color .25s ease-out,border-color .25s ease-out;}
@media (hover:hover){
  .txn-reg--cols a.txn-reg__row:hover .txn-reg__arrow{border-color:rgba(242,239,230,.55);
    color:var(--vellum);transform:translate(2px,-2px);}
  .txn-reg--cols a.txn-reg__row:hover .txn-reg__cue{color:var(--vellum);
    border-bottom-color:rgba(242,239,230,.5);}
}
@media (max-width:980px){
  .txn-reg--cols{grid-template-columns:1fr;border-top:1px solid var(--line-dark);
    border-bottom:1px solid var(--line-dark);}
  .txn-reg--cols .txn-reg__row{border-right:none;border-top:1px solid var(--line-dark);
    min-height:0;padding:clamp(32px,5vw,44px) 0;}
  .txn-reg--cols .txn-reg__row:first-child{border-top:none;}
  .txn-reg--cols .txn-reg__arrow{top:clamp(32px,5vw,44px);right:0;}
  .txn-reg--cols .txn-reg__main{margin-top:clamp(22px,4vw,32px);}
  .txn-reg--cols .txn-reg__name{max-width:none;}
  .txn-reg--cols .txn-reg__desc{max-width:42em;}
  .txn-reg--cols .txn-reg__tags{padding-top:clamp(20px,3.8vw,30px);}
}

/* homepage edge - proprietary-technology close on paper ground.
   home-method/home-platform stay as inert check.py hook classes; every
   visual rule below targets home-edge. Closes the page: extra bottom
   padding lets it exhale into the footer. */
.room-dark + .home-edge::before{content:"";position:absolute;top:0;left:50%;
  transform:translateX(-50%);
  width:min(calc(100% - var(--room-pad)*2),calc(var(--room-max) - var(--room-pad)*2));
  height:1px;background:var(--seam);}
.home-edge{background:var(--ground);padding:var(--plane-pad) 0;}
.home-edge.home-platform{padding-bottom:calc(var(--plane-pad) * 1.5);}
.home-edge .lab{margin-bottom:0;}
.home-edge .h2r{max-width:13em;color:var(--ink);}
.home-edge .leder{color:var(--ink-lede);}
.home-edge .prose{color:var(--ink-body);}
.home-edge .room-link{color:var(--ink);border-bottom-color:var(--line-paper);}
.home-edge .room-link:hover{color:var(--ink);border-bottom-color:var(--ink);}
.home-edge__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,460px);
  gap:clamp(42px,6vw,92px);margin-top:var(--head-gap);align-items:center;}
.home-edge__body{min-width:0;}
.home-edge__body .leder{margin-top:0;max-width:34em;}
.home-edge__body .prose{margin-top:clamp(24px,3vw,36px);}
.home-edge__body .prose p{max-width:34em;}

.home-edge__fig{margin:0;min-width:0;}
.home-edge__fig .plate--edge{aspect-ratio:4/5;min-height:clamp(360px,40vw,560px);
  background:var(--vellum-pressed);}
.home-edge__fig .plate--edge img{filter:saturate(.5) contrast(1.06) brightness(.9);}
.home-edge__fig .plate--edge::after{
  background:linear-gradient(165deg,rgba(242,239,230,.02) 28%,rgba(11,15,24,.22) 100%);}

/* =====================================================================
   AXUS ANNEX (our-edge) - internal infrastructure, plain editorial form
   ===================================================================== */
.room-annex{position:relative;color:var(--vellum-mid);padding:clamp(88px,11vw,170px) 0;
  background:var(--band);}
.room-annex::before{content:"";position:absolute;inset:0 auto 0 50%;z-index:0;
  transform:translateX(-50%);width:min(calc(100% - var(--room-pad)*2),calc(var(--room-max) - var(--room-pad)*2));
  pointer-events:none;background:
    linear-gradient(var(--line-dark),var(--line-dark)) top / 100% 1px no-repeat,
    linear-gradient(var(--line-dark),var(--line-dark)) bottom / 100% 1px no-repeat;}
.room-annex__grid{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1fr);
  gap:clamp(44px,6.5vw,110px);align-items:start;}
.room-annex .h2r{max-width:12em;}
.room-annex__lede{margin-top:clamp(28px,3.6vw,46px);max-width:34em;color:rgba(242,239,230,.78);}
.room-annex__body{font-size:clamp(1.02rem,1.25vw,1.12rem);line-height:1.68;
  color:rgba(242,239,230,.76);max-width:36em;}
.room-annex__body p{max-width:36em;}
.room-annex__body p + p{margin-top:clamp(24px,3vw,34px);padding-top:clamp(22px,2.8vw,32px);
  border-top:1px solid var(--line-dark);}
.edge-system{margin-top:clamp(34px,4.2vw,54px);border-top:1px solid var(--line-dark);
  border-bottom:1px solid var(--line-dark);}
.edge-system__row{display:grid;grid-template-columns:minmax(9em,.62fr) minmax(0,1fr);
  gap:clamp(20px,3.4vw,48px);align-items:baseline;padding:clamp(20px,2.6vw,30px) 0;
  border-top:1px solid var(--line-dark);}
.edge-system__row:first-child{border-top:0;}
.edge-system__row span{font-family:var(--room-serif);font-weight:440;
  font-size:clamp(1.15rem,1.45vw,1.38rem);line-height:1.18;
  letter-spacing:-.01em;color:var(--vellum);}
.edge-system__row p{margin:0;font-family:var(--room-sans);font-size:15.5px;
  line-height:1.58;color:rgba(242,239,230,.7);max-width:30em;}

/* =====================================================================
   THE SEAL - the page's single full-strength accent moment
   ===================================================================== */
.seal-line{display:inline-flex;align-items:center;gap:16px;}
.seal{flex:none;display:inline-flex;align-items:center;gap:10px;}
.seal::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);
  transition:transform .35s var(--ease);}
.seal::after{content:"";width:26px;height:1px;background:var(--accent-dim);
  transition:width .45s var(--ease),background .45s var(--ease);}
.seal-link{font-family:var(--room-sans);font-weight:500;font-size:15px;letter-spacing:.02em;
  color:var(--ink);padding-bottom:4px;border-bottom:1px solid transparent;
  transition:border-color .3s var(--ease);}
.room-dark .seal-link,.room-annex .seal-link{color:var(--vellum);}
.seal-line:hover .seal::before{transform:scale(1.25);}
.seal-line:hover .seal::after{width:44px;background:var(--accent);}
.seal-line:hover .seal-link{border-bottom-color:var(--line-paper-strong);}
.room-dark .seal-line:hover .seal-link,.room-annex .seal-line:hover .seal-link{
  border-bottom-color:var(--line-dark);}

/* seal-cta - vertical accent rail layout (homepage close) */
.seal-cta{display:grid;grid-template-columns:3px minmax(0,1fr);gap:clamp(18px,2.6vw,28px);
  align-items:stretch;margin-top:clamp(40px,5vw,60px);max-width:32em;
  transition:gap .35s var(--ease);}
.seal-cta__rail{background:linear-gradient(180deg,var(--accent-dim) 0%,var(--accent) 55%,var(--accent-dim) 100%);
  border-radius:1px;transition:opacity .35s var(--ease);}
.seal-cta__action{display:flex;flex-direction:column;gap:10px;color:inherit;text-decoration:none;
  padding:4px 0 2px;}
.seal-cta__dot{width:7px;height:7px;border-radius:50%;background:var(--accent);flex:none;
  transition:transform .35s var(--ease);}
.seal-cta__label{font-family:var(--room-sans);font-weight:500;
  font-size:clamp(1.02rem,1.35vw,1.15rem);letter-spacing:.01em;color:var(--vellum);}
.seal-cta__sub{font-family:var(--room-mono);font-weight:400;font-size:11px;
  letter-spacing:.12em;color:var(--fog);}
@media (hover:hover){
  .seal-cta:hover{gap:clamp(22px,3vw,34px);}
  .seal-cta:hover .seal-cta__dot{transform:scale(1.2);}
  .seal-cta:hover .seal-cta__label{color:#fff;}
}
.seal-cta:focus-visible{outline:1px solid var(--fog);outline-offset:6px;}

/* threshold close inside a dark band (homepage) */
.room-close{margin-top:clamp(72px,10vw,150px);max-width:40em;padding-top:clamp(40px,5vw,64px);
  border-top:1px solid var(--line-dark);}
.room-close .stmt{color:var(--vellum);font-size:clamp(1.85rem,3.2vw,3rem);
  line-height:1.2;font-style:normal;font-weight:480;max-width:20em;}
/* standalone close (inner pages): paper */
.room-close-sec{position:relative;padding:clamp(80px,10.5vw,150px) 0 clamp(96px,12vw,160px);}
/* inner-page close matches homepage threshold — institutional, not memo italic */
.room-close-sec .stmt{font-style:normal;font-weight:480;
  font-size:clamp(1.75rem,3vw,2.75rem);line-height:1.18;letter-spacing:-.01em;
  max-width:18em;color:var(--ink);}
.room-close-sec .seal-line{margin-top:clamp(34px,4.2vw,54px);gap:0;}
.room-close-sec .seal{display:none;}
.room-close-sec .seal-link{border-bottom-color:var(--line-paper);padding-bottom:5px;}
.room-close-sec .seal-line:hover .seal-link{border-bottom-color:var(--ink);}

/* =====================================================================
   THE INTAKE (contact) - the form is the room's primary object. Mono
   field labels, vellum-pressed grounds, ONE underline per field; submit
   is a quiet hairline link (no seal accent).
   ===================================================================== */
.intake__cols{display:grid;grid-template-columns:minmax(230px,330px) minmax(0,1fr);
  gap:clamp(34px,5.5vw,88px);align-items:start;}
.intake__aside{grid-column:1;grid-row:1;}
.intake__aside .h2r{font-size:clamp(1.45rem,2vw,1.9rem);}
.intake__lede{margin-top:clamp(18px,2.2vw,28px);font-size:16.5px;line-height:1.6;
  color:var(--ink-body);}
.intake__specs{margin:clamp(26px,3vw,40px) 0 0;}
.intake__specs .spec{display:grid;grid-template-columns:minmax(7.5em,9em) minmax(0,1fr);
  gap:14px;padding:9px 0;}
.intake__specs dt{font-family:var(--room-sans);font-weight:600;font-size:12px;
  letter-spacing:.01em;color:var(--ash);padding-top:3px;}
.intake__specs dd{margin:0;font-size:15px;line-height:1.55;color:var(--ink-lede);
  min-width:0;overflow-wrap:anywhere;}
.intake__specs dd a{color:var(--ink-lede);text-decoration:underline;
  text-underline-offset:4px;text-decoration-color:rgba(18,19,22,.25);
  transition:text-decoration-color .2s ease;}
.intake__specs dd a:hover{text-decoration-color:var(--ink);}
.intake__note{margin-top:clamp(22px,2.6vw,32px);font-family:var(--room-serif);
  font-style:italic;font-weight:400;font-size:1.05rem;line-height:1.6;
  color:var(--ash);max-width:24em;}
.intake__form{grid-column:2;grid-row:1;display:grid;grid-template-columns:1fr 1fr;
  gap:clamp(24px,3vw,38px) clamp(20px,2.6vw,34px);}
.intake__form label{display:flex;flex-direction:column;justify-content:flex-end;gap:9px;
  font-family:var(--room-mono);font-weight:500;font-size:11.5px;
  letter-spacing:.12em;color:var(--ash);}
.intake__form .wide{grid-column:1 / -1;}
.intake__form input,.intake__form select,.intake__form textarea{
  font-family:var(--room-sans);font-weight:400;font-size:16.5px;color:var(--ink);
  background:var(--vellum-pressed);border:0;border-radius:0;
  border-bottom:1px solid var(--line-paper-strong);padding:12px 13px;width:100%;
  letter-spacing:normal;transition:border-color .3s var(--ease);}
.intake__form input:focus,.intake__form select:focus,.intake__form textarea:focus{
  outline:none;border-bottom-color:var(--ink);}
.intake__form select{appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:34px;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1.5 L6 6.5 L11 1.5' stroke='%235C5A54' fill='none' stroke-width='1.2'/></svg>");
  background-repeat:no-repeat;background-position:right 13px center;}
.intake__form textarea{min-height:148px;resize:vertical;line-height:1.5;}
.intake__form .hp{position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}
.intake__actions{grid-column:1 / -1;margin-top:6px;}
button.seal-line{background:none;border:0;padding:0;cursor:pointer;font:inherit;
  text-align:left;}
button.seal-line:focus-visible{outline:1px solid var(--fog);outline-offset:6px;}
.intake__actions .seal-line{gap:0;}
.intake__actions .seal{display:none;}
.intake__actions .seal-link{border-bottom-color:var(--line-paper);padding-bottom:5px;}
.intake__actions .seal-line:hover .seal-link{border-bottom-color:var(--ink);}

/* =====================================================================
   FOOTER - same words (compliance verbatim), banker's-navy dress in the
   paper/navy plane
   ===================================================================== */
.site-footer{background:var(--foot-bg);border-top-color:var(--line-dark);
  color:rgba(242,239,230,.7);}
.site-footer .brand .wm{font-family:var(--room-serif);font-weight:420;color:var(--vellum);}
.site-footer .tagline{font-family:var(--room-serif);color:rgba(242,239,230,.6);}
.site-footer .col h4{font-family:var(--room-sans);font-weight:600;font-size:12px;
  letter-spacing:.02em;text-transform:none;color:var(--fog);}
.site-footer .col a{color:rgba(242,239,230,.72);}
.site-footer .col a:hover{color:var(--vellum);}
.contact-lines{color:rgba(242,239,230,.55);}
.contact-lines a{color:rgba(242,239,230,.78);text-decoration-color:rgba(242,239,230,.25);}
.contact-lines a:hover{color:var(--vellum);}
.site-footer .legal{border-top-color:var(--line-dark);color:rgba(242,239,230,.46);}
.site-footer .legal a{color:rgba(242,239,230,.6);}
.site-footer .legal a:hover{color:var(--vellum);}

/* =====================================================================
   MOTION - one easing; entrances settle once; nothing loops or pulses.
   Initial hidden states exist ONLY under html.room-js (no-JS = complete).
   ===================================================================== */
html.room-js .rm{opacity:0;transform:translate3d(0,6px,0);
  transition:opacity var(--reveal-dur) var(--ease-out),transform var(--reveal-dur) var(--ease-out);}
html.room-js .rm.in{opacity:1;transform:translate3d(0,0,0);}
/* actants - hover affordances beyond scroll reveals */
.room-link{transition:border-color .3s var(--ease),color .3s var(--ease),gap .3s var(--ease);}
@media (hover:hover){
  .room-link:hover{gap:14px;}
}
.sheet__stamp{transition:opacity .5s var(--ease),letter-spacing .5s var(--ease);}
html.room-js .in .sheet__stamp{letter-spacing:.2em;}
.coords{transition:opacity .4s var(--ease);}
@media (hover:hover){
  .room-hero:hover .coords{opacity:.92;}
}

/* =====================================================================
   RESPONSIVE
   ===================================================================== */
@media (max-width:1080px){
  .glimpse{grid-template-columns:1fr;gap:52px;align-items:start;}
  .room-annex__grid{grid-template-columns:1fr;gap:56px;}
  .edge-set{grid-template-columns:1fr;gap:36px;}
  .axus-body{grid-template-columns:1fr;gap:48px;}
}
@media (max-width:980px){
  .tri{grid-template-columns:1fr;gap:clamp(14px,2vw,20px);}
  .tri__tags{padding-top:20px;}
  .doctrine--row{grid-template-columns:1fr;gap:clamp(30px,3.8vw,48px);}
  .edge-applications{grid-template-columns:1fr;}
  .edge-applications__item{border-right:0;border-top:1px solid var(--line-paper);
    padding-inline:0;}
  .edge-applications__item:first-child{border-top:0;}
  .edge-applications__name,.edge-applications__desc{max-width:40em;}
}
@media (max-width:900px){
  .sheet__cols{grid-template-columns:1fr;gap:34px;}
  .method-cols{grid-template-columns:1fr;gap:40px;}
  .method-cols .plate--tall{max-width:520px;}
  .home-thesis__grid{grid-template-columns:1fr;gap:clamp(36px,6vw,52px);}
  .home-thesis__fig{order:-1;max-width:min(520px,100%);}
  .home-thesis__fig .plate--tall{min-height:0;aspect-ratio:4/3;max-height:none;}
  .home-edge__grid{grid-template-columns:1fr;gap:clamp(36px,6vw,48px);}
  .home-edge__fig{max-width:min(560px,100%);margin:clamp(8px,1.5vw,16px) 0 0;}
  .home-edge__fig .plate--edge{aspect-ratio:16/10;min-height:0;}
  .doctrine--grid{grid-template-columns:1fr;}
  .intake__cols{grid-template-columns:1fr;gap:52px;}
  .intake__form{grid-column:1;grid-row:auto;order:1;}
  .intake__aside{grid-column:1;grid-row:auto;order:2;}
  .docket__row{grid-template-columns:2.6em 1fr;row-gap:10px;}
  .docket--stack .docket__row{grid-template-columns:1fr;row-gap:clamp(14px,1.8vw,20px);}
  .docket__desc{grid-column:2;}
  .docket--stack .docket__desc{grid-column:1;}
  .edge-system__row{grid-template-columns:1fr;gap:10px;}
}
@media (max-width:620px){
  :root{--room-pad:22px;}
  .room-masthead .disp .brk{display:none;}
  .docket__row{grid-template-columns:1fr;gap:8px;padding:22px 0 24px;}
  .docket--stack .docket__row{gap:clamp(14px,1.8vw,20px);padding:clamp(36px,8vw,48px) 0;}
  .docket__desc{grid-column:1;}
  .docket__ix{margin-bottom:2px;}
  .room-hero__base{flex-direction:column;gap:18px;align-items:flex-start;}
  .intake__form{grid-template-columns:1fr;}
  .intake__specs .spec{grid-template-columns:minmax(6em,7.5em) minmax(0,1fr);}
  .kvrow{gap:22px;}
}

/* =====================================================================
   PAGE TRANSITIONS — opacity fade on internal navigation (~400ms total).
   room.js arms html:not(.is-ready) before paint; site.js releases on
   double-rAF. Browsers with cross-document view transitions use native
   fades via <meta name="view-transition">; site.js skips click override.
   ===================================================================== */
html.room-js:not(.is-ready):not(.intro-running) body{opacity:0;}
body{transition:opacity var(--page-fade-in) var(--ease-out);}
body.is-leaving{opacity:0;transition-duration:var(--page-fade-out);}
@supports (view-transition-name:root){
  @view-transition{navigation:auto;}
  ::view-transition-old(root){animation:pageFadeOut var(--page-fade-out) var(--ease-out) both;}
  ::view-transition-new(root){animation:pageFadeIn var(--page-fade-in) var(--ease-out) both;}
  @keyframes pageFadeOut{to{opacity:0;}}
  @keyframes pageFadeIn{from{opacity:0;}to{opacity:1;}}
}

/* =====================================================================
   REDUCED MOTION - opacity only; nothing translates or draws
   ===================================================================== */
@media (prefers-reduced-motion:reduce){
  html.room-js:not(.is-ready) body{opacity:1;}
  body{transition:none;}
  @supports (view-transition-name:root){
    ::view-transition-old(root),::view-transition-new(root){animation:none;}
  }
  .room-hero__video{display:none;}
  html.room-js:not(.intro-running) .room-hero__lockup>*,html.room-js:not(.intro-running) .room-hero__base{
    opacity:1;transform:none;animation:none;}
  html.room-js .rm{opacity:0;transform:none;transition:opacity .5s ease;}
  html.room-js .rm.in{opacity:1;}
  html.room-js .fix i:nth-child(1){transform:rotate(45deg) scaleX(1);opacity:0;transition:opacity .5s ease;}
  html.room-js .fix i:nth-child(2){transform:rotate(-45deg) scaleX(1);opacity:0;transition:opacity .5s ease;}
  html.room-js .in .fix i,html.room-js .fix.in i{opacity:1;}
  .plate img,.tri__col,.tri__name,.mandate-card,.mandate-card__name,.mandate-card__arrow,.txn-reg__row,.txn-reg__name,.txn-reg__arrow,.seal::before,.seal-cta__dot{transition:none;transform:none!important;}
  .seal::after,.seal-link,.room-link{transition:none;}
}
