/* ═══════════════════════════════════════════════════════════════════════════
   RD-NIGHT — the committed night system for the 2026-07-23 hero/funnel estate.
   War-room ruling: FULL NIGHT, ONE SCENE. "Night world, paper evidence."
   Loaded ONLY by the rebuilt surfaces (/, /billing-companies, /litigation,
   /renewal-season, /private-practice*, /group). rd-tokens.css?v=rt1 is FROZEN;
   this file layers after it and pins the night pole permanently. No scene
   engine, no crossfade: light exists only as bounded .paper artifacts.
   Laws encoded here: 3-ink ramp (never #FFF), teal #16E0C8 rationed, radii
   4/8/16/20 (pills dead), easeOutExpo/easeOutQuart only (springs dead),
   128px beat + 224px close silence, 4% grain, two-mode type, transform/opacity
   motion only, reduced-motion honored.
   ═══════════════════════════════════════════════════════════════════════════ */

:root, [data-scene], html{
  /* night world */
  --nw-bg:#04060C;
  --nw-bg2:#070B14;
  --nw-ink:#EAF2FF;         /* primary ink · never #FFFFFF */
  --nw-ink2:#9FB0CC;        /* secondary */
  --nw-ink3:#7A89A6;        /* tertiary · gray-manifesto statements */
  --nw-line:rgba(234,242,255,.08);
  --nw-line2:rgba(234,242,255,.14);
  /* the ONE teal, rationed: CTA fill · live-data accents · glows ≤8% · one gradient border */
  --nw-teal:#16E0C8;
  --nw-teal-ink:#03110E;    /* near-black ink on teal fills */
  --nw-glow:rgba(22,224,200,.08);
  /* semantic accents */
  --nw-gold:#D9A84E;        /* money */
  --nw-pain:#FF7D9C;        /* below-median / pain */
  --nw-lock:#A78BFF;        /* locked / P90 target */
  /* paper evidence */
  --paper:#FAF9F5;
  --paper-ink:#0B1917;
  --paper-ink2:rgba(11,25,23,.62);
  --paper-line:rgba(11,25,23,.11);
  /* rhythm */
  --beat:128px;
  --silence:224px;
  --wrap:1120px;
  /* motion */
  --exp:cubic-bezier(.16,1,.3,1);
  --quart:cubic-bezier(.165,.84,.44,1);
  /* type */
  --disp:'Fraunces','FR Fallback',Georgia,serif;
  --ui:'Space Grotesk','SG Fallback',system-ui,sans-serif;
  --mono:'IBM Plex Mono','PM Fallback',ui-monospace,monospace;
}

html{background:var(--nw-bg);color-scheme:dark}
body{
  margin:0;background:var(--nw-bg);color:var(--nw-ink2);
  font:400 16px/1.55 var(--ui);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:clip; /* body only — never on html, sticky guard per the trap ledger */
}
.nw-wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px}
@media(max-width:480px){.nw-wrap{padding:0 18px}}

/* ── the one fixed backdrop: instant CSS paint, no JS gate ─────────────────── */
#nw-bd{position:fixed;inset:0;z-index:-2;pointer-events:none;background:
  radial-gradient(120% 90% at 78% -10%, rgba(22,224,200,.07), transparent 55%),
  radial-gradient(90% 70% at 8% 108%, rgba(167,139,255,.05), transparent 60%),
  linear-gradient(180deg,#04060C 0%,#060A12 52%,#04060C 100%)}
/* grain 4%: the cheapest anti-plastic layer */
#nw-grain{position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.04;
  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='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E")}

/* ── two-mode type law ─────────────────────────────────────────────────────── */
.nw-display{font-family:var(--disp);font-weight:520;line-height:1.04;letter-spacing:-.02em;color:var(--nw-ink)}
.nw-kick{font:600 12px/1.35 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--nw-ink3)}
.nw-mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
/* gray-manifesto: the statement sits in tertiary, only the payoff carries primary ink */
.nw-h1{font-family:var(--disp);font-size:clamp(38px,6.2vw,76px);line-height:1.02;letter-spacing:-.022em;margin:0}
.nw-h1 .st{color:var(--nw-ink3);font-weight:480;display:block}
.nw-h1 .pay{color:var(--nw-teal);font-style:italic;font-weight:560;display:block}
.nw-h2{font-family:var(--disp);font-size:clamp(26px,3.4vw,40px);line-height:1.06;letter-spacing:-.02em;color:var(--nw-ink);font-weight:500;margin:0}
.nw-h2 .st{color:var(--nw-ink3)}
.nw-lede{font-size:clamp(16px,1.6vw,19px);line-height:1.55;color:var(--nw-ink2);max-width:34em}
.nw-lede b,.nw-lede strong{color:var(--nw-ink);font-weight:600}

/* ── sections: the metronome ───────────────────────────────────────────────── */
.nw-act{padding:var(--beat) 0;position:relative}
.nw-act--close{padding-top:var(--silence)}
@media(max-width:640px){:root{--beat:88px;--silence:150px}}

/* ── CTAs: exactly two classes ─────────────────────────────────────────────── */
.nw-cta{display:inline-flex;align-items:center;justify-content:center;gap:9px;
  font:600 15.5px/1 var(--ui);letter-spacing:.01em;border-radius:8px;cursor:pointer;
  padding:15px 26px;border:0;text-decoration:none;
  transition:transform .45s var(--exp),box-shadow .45s var(--exp),background .3s var(--exp);
  will-change:transform}
.nw-cta--fill{background:var(--nw-teal);color:var(--nw-teal-ink)}
.nw-cta--fill:hover{transform:translateY(-2px);box-shadow:0 10px 34px -10px var(--nw-glow),0 4px 18px -6px rgba(22,224,200,.35)}
.nw-cta--line{background:transparent;color:var(--nw-ink);border:1px solid var(--nw-line2)}
.nw-cta--line:hover{transform:translateY(-2px);border-color:rgba(234,242,255,.3)}
.nw-cta__sub{font:500 12px/1 var(--mono);opacity:.72;letter-spacing:.02em}
.nw-micro{font:500 13px/1.5 var(--ui);color:var(--nw-ink3)}
.nw-micro b{color:var(--nw-ink2);font-weight:600}

/* ── paper evidence: light as a bounded artifact, never a scene ────────────── */
.paper{background:var(--paper);color:var(--paper-ink);border-radius:16px;
  box-shadow:0 1px 0 rgba(234,242,255,.06),0 24px 70px -28px rgba(0,0,0,.85),0 6px 22px -10px rgba(0,0,0,.6);
  position:relative;overflow:hidden}
.paper::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23p)' opacity='.5'/%3E%3C/svg%3E")}
.paper h3{font-family:var(--disp);color:var(--paper-ink);letter-spacing:-.015em;line-height:1.08;margin:0}
.paper .pmuted{color:var(--paper-ink2)}
.paper .pline{border-top:1px solid var(--paper-line)}

/* ── switchboard ledger rows (the router; never a card grid) ───────────────── */
.swb{border-top:1px solid var(--nw-line)}
.swb__row{display:grid;grid-template-columns:minmax(150px,220px) 1fr auto;gap:18px;align-items:center;
  padding:19px 14px 19px 18px;border-bottom:1px solid var(--nw-line);text-decoration:none;
  position:relative;transition:transform .5s var(--exp),background .35s var(--exp)}
.swb__row::before{content:"";position:absolute;left:0;top:14%;bottom:14%;width:2px;background:var(--nw-teal);
  opacity:0;transform:scaleY(.4);transition:opacity .35s var(--exp),transform .5s var(--exp)}
.swb__row:hover{transform:translateX(8px);background:rgba(234,242,255,.02)}
.swb__row:hover::before{opacity:1;transform:scaleY(1)}
.swb__who{font:600 15px/1.3 var(--ui);color:var(--nw-ink)}
.swb__val{font:400 14.5px/1.45 var(--ui);color:var(--nw-ink3)}
.swb__go{font:600 13px/1 var(--mono);letter-spacing:.05em;color:var(--nw-teal);white-space:nowrap;opacity:.85}
@media(max-width:640px){.swb__row{grid-template-columns:1fr auto}.swb__val{grid-column:1/-1;order:3}}

/* ── the instrument shell (night chrome around the live scorecard) ─────────── */
.inst{position:relative;border:1px solid var(--nw-line);border-radius:20px;overflow:hidden;
  background:linear-gradient(180deg,rgba(234,242,255,.035),rgba(234,242,255,.012) 42%,rgba(4,6,12,0) 100%)}
.inst__frame{position:relative;z-index:2;padding:22px}
@media(max-width:480px){.inst__frame{padding:14px}}

.inst__cap{font:500 12.5px/1.5 var(--mono);color:var(--nw-ink3);letter-spacing:.01em}
.inst__cap b{color:var(--nw-gold);font-weight:600}

/* ── the one-field console ─────────────────────────────────────────────────── */
.console{display:flex;gap:10px;background:rgba(234,242,255,.045);border:1px solid var(--nw-line2);
  border-radius:12px;padding:8px;transition:border-color .3s var(--exp),box-shadow .3s var(--exp)}
.console:focus-within{border-color:rgba(22,224,200,.55);box-shadow:0 0 0 4px var(--nw-glow)}
.console input{flex:1;min-width:0;background:transparent;border:0;outline:0;color:var(--nw-ink);
  font:500 17px/1.2 var(--mono);letter-spacing:.04em;padding:10px 12px}
.console input::placeholder{color:var(--nw-ink3);font-family:var(--ui);letter-spacing:0;font-weight:400}

/* ── provenance strip ──────────────────────────────────────────────────────── */
.prov{display:flex;flex-wrap:wrap;gap:10px 26px;align-items:baseline;
  border-top:1px solid var(--nw-line);padding-top:16px}
.prov__it{font:600 13px/1.4 var(--mono);color:var(--nw-ink2);letter-spacing:.02em}
.prov__it b{color:var(--nw-ink);font-weight:700}
.prov__live{font:500 12px/1.4 var(--mono);color:var(--nw-ink3);width:100%}
.prov__live b{color:var(--nw-teal);font-weight:600}

/* ── glossary chips (the ⓘ law) ────────────────────────────────────────────── */
.gi{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border-radius:8px;
  border:1px solid rgba(22,224,200,.4);background:rgba(22,224,200,.07);color:var(--nw-teal);
  font:700 10.5px/1 var(--mono);cursor:pointer;vertical-align:2px;margin:0 1px;
  transition:background .25s var(--exp);animation:giGlow 3.2s ease-in-out infinite}
.gi:hover{background:rgba(22,224,200,.16)}
@keyframes giGlow{0%,100%{box-shadow:0 0 0 0 rgba(22,224,200,0)}50%{box-shadow:0 0 10px 0 rgba(22,224,200,.22)}}
@media(prefers-reduced-motion:reduce){.gi{animation:none}}

/* ── reveals: transform/opacity only ───────────────────────────────────────── */
.nrv{opacity:0;transform:translateY(18px);transition:opacity .8s var(--exp),transform .8s var(--exp);transition-delay:var(--d,0ms)}
.nrv.in{opacity:1;transform:none}
html[data-fx="min"] .nrv,.no-js .nrv{opacity:1;transform:none;transition:none}
@media(prefers-reduced-motion:reduce){.nrv{opacity:1;transform:none;transition:none}}

/* ── mobile sticky bar ─────────────────────────────────────────────────────── */
.nw-sticky{position:fixed;left:0;right:0;bottom:0;z-index:60;display:none;gap:10px;
  padding:10px max(12px,env(safe-area-inset-left)) max(10px,env(safe-area-inset-bottom));
  background:rgba(4,6,12,.92);backdrop-filter:blur(14px);border-top:1px solid var(--nw-line);
  transform:translateY(102%);transition:transform .5s var(--exp)}
.nw-sticky.show{transform:none}
.nw-sticky .nw-cta{flex:1;padding:16px 10px;min-height:56px;font-size:15px}
@media(max-width:768px){.nw-sticky{display:flex}}

/* ── payer board strip ─────────────────────────────────────────────────────── */
.pbs{display:flex;gap:12px;flex-wrap:wrap}
.pbs__card{flex:1 1 150px;min-width:140px;border:1px solid var(--nw-line);border-radius:12px;padding:14px 16px;
  background:rgba(234,242,255,.02)}
.pbs__payer{font:600 13px/1.3 var(--ui);color:var(--nw-ink2)}
.pbs__grade{font:700 30px/1 var(--mono);margin-top:6px}
.pbs__score{font:500 12px/1.4 var(--mono);color:var(--nw-ink3)}
.gA{color:var(--nw-teal)}.gB{color:#7BD8A8}.gC{color:var(--nw-gold)}.gD{color:#E58B6B}.gF{color:var(--nw-pain)}

/* ── the close ─────────────────────────────────────────────────────────────── */
.close-grid{display:grid;grid-template-columns:1fr 1fr;gap:34px;align-items:start}
@media(max-width:880px){.close-grid{grid-template-columns:1fr}}
.cal-shell{border-radius:16px;overflow:hidden;min-height:540px;position:relative} /* R4 1.3: dark shell bg removed; .paper owns the surface */
.cal-shell iframe{width:100%;height:640px;border:0;display:block}
.cal-wait{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:500 13px/1 var(--mono);color:var(--nw-ink3)}

/* audio chip: the premium night player */
.nw-audio{display:inline-flex;align-items:center;gap:13px;border:1px solid var(--nw-line);border-radius:12px;padding:11px 18px 11px 12px;background:rgba(234,242,255,.025)}
.nw-audio button{width:38px;height:38px;border-radius:8px;border:1px solid rgba(22,224,200,.4);background:rgba(22,224,200,.08);color:var(--nw-teal);cursor:pointer;display:grid;place-items:center;transition:background .25s var(--exp)}
.nw-audio button:hover{background:rgba(22,224,200,.16)}
.nw-audio svg{width:15px;height:15px;fill:currentColor}
.nw-audio p{margin:0;font:500 13.5px/1.3 var(--ui);color:var(--nw-ink2)}
.nw-audio .dur{font:600 11px/1 var(--mono);color:var(--nw-ink3);letter-spacing:.08em}

/* footer */
.nw-foot{border-top:1px solid var(--nw-line);padding:44px 0 120px;font:400 13.5px/1.7 var(--ui);color:var(--nw-ink3)}
.nw-foot a{color:var(--nw-ink2);text-decoration:none}
.nw-foot a:hover{color:var(--nw-ink)}
.nw-foot .cols{display:flex;flex-wrap:wrap;gap:28px 54px}
.nw-foot .qual{margin-top:26px;max-width:62em;font-size:12.5px}

/* focus */
:focus-visible{outline:2px solid var(--nw-teal);outline-offset:2px;border-radius:4px}

/* ══ DEPLOY 3 WOW PASS (war-room r4 §3, 2026-07-24) ══════════════════════════ */
/* W2a: the ONE gradient border (the page's single ration) + W2b elevation */
.inst{border-color:transparent;position:relative;
  box-shadow:0 40px 120px -40px rgba(0,0,0,.9),0 0 80px -30px rgba(22,224,200,.08)}
.inst::before{content:"";position:absolute;inset:0;border-radius:20px;padding:1px;z-index:3;pointer-events:none;
  background:conic-gradient(from 210deg,rgba(22,224,200,.45),rgba(234,242,255,.07) 28%,rgba(167,139,255,.20) 62%,rgba(22,224,200,.45));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
/* W2c: quiet tilt (ultra + pointer:fine only; JS drives --rx/--ry) */
@media(hover:hover) and (pointer:fine){
  html[data-fx="ultra"] .inst-wrap .inst{transform:perspective(1200px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .5s var(--exp);will-change:transform}
}
/* W3: the press plate — bounded one-shot clip-path (<=700ms amendment) */
.press{clip-path:inset(48% 6% 48% 6% round 16px);opacity:0;transform:translateY(12px) scale(.986);
  transition:clip-path .64s var(--exp),opacity .64s var(--exp),transform .64s var(--exp);transition-delay:var(--d,0ms)}
.press.in{clip-path:inset(0 0 0 0 round 16px);opacity:1;transform:none}
html[data-fx="efficient"] .press,.no-js .press{clip-path:none;opacity:1;transform:none;transition:none}
@media(prefers-reduced-motion:reduce){.press{clip-path:none;opacity:1;transform:none;transition:none}}
.paper .pmoney{font-family:var(--mono);font-weight:600;white-space:nowrap}
/* W4: door cross-light (desktop enrichment) */
@media(hover:hover) and (pointer:fine){
  .swb:hover .swb__row{opacity:.5}
  .swb:hover .swb__row:hover{opacity:1;transform:translateX(8px)}
  .swb__row{transition:transform .5s var(--exp),background .35s var(--exp),opacity .35s var(--exp)}
  .swb__row::after{content:"";position:absolute;inset:0;transform:translateX(-110%);pointer-events:none;
    background:linear-gradient(100deg,transparent 30%,rgba(234,242,255,.045) 50%,transparent 70%)}
  .swb__row:hover::after{transition:transform .55s var(--quart);transform:translateX(110%)}
  .swb__row:hover .swb__go{transform:translateX(4px)}
  .swb__go{transition:transform .4s var(--exp)}
  .swb__row{overflow:hidden}
}
.swb__row.lit::before{opacity:1;transform:scaleY(1)}
/* W5: grade seals */
.pbs__seal{position:relative;width:48px;height:48px;flex:none}
.pbs__seal svg{position:absolute;inset:0;transform:rotate(-90deg)}
.pbs__seal b{position:absolute;inset:0;display:grid;place-items:center;font:700 20px/1 var(--mono)}
.pbs__card{display:flex;align-items:center;gap:14px;transition:transform .45s var(--exp),border-color .35s var(--exp)}
@media(hover:hover){.pbs__card:hover{transform:translateY(-3px);border-color:rgba(234,242,255,.22)}}
/* W6: type polish */
.nw-h1,.nw-h2,.paper h3{text-wrap:balance}
.nw-lede{text-wrap:pretty}
.nw-kick{position:relative;padding-left:32px}
.nw-kick::before{content:"";position:absolute;left:0;top:60%;width:22px;height:1px;background:var(--nw-teal)}
.hero-caption b,#pbs-note b{font-family:var(--mono)}
::selection{background:rgba(22,224,200,.25)}

/* W1: the constellation bezel layers (canvas z0 · vignette z1 · content z2) */
#instrument{position:relative}
.hero-field{position:absolute;inset:0;z-index:0;pointer-events:none}
#instrument::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(75% 70% at 62% 44%,transparent 42%,rgba(2,3,7,.5) 100%)}
#instrument .nw-wrap{position:relative;z-index:2}
.fld-strip{display:none}
@media(max-width:639px){.fld-strip{display:block;height:64px;margin-bottom:6px;position:relative}}
