/* Ember Sovereignty — design tokens (source of truth: the 2026-08 design
   handoff, tokens/*). Dark-only for every digital surface. Blue is the only
   brand color: Ember, focus, links, selection, actions. It is never a success
   signal. Verdict colors are earned (see --verified/--failed). */
:root{
/* --- base: fields --- */
--ink-canvas:#0A0E14;--ink-surface:#101722;--ink-panel:#0C121B;--ink-evidence:#0D1420;--ink-well:#080C12;
/* --- base: hairlines --- */
--hairline-faint:#1A2537;--hairline:#1E2936;--hairline-strong:#24344D;
/* --- base: text --- */
--ink:#F2F7FF;--ink-ui:#C7D3E4;--ink-data:#D7E3F4;--ink-mist:#8CA0B8;--ink-haze:#7D8CA3;--ink-soft:#71809A;--ink-faint:#55627B;--ink-evidence-muted:#5C6B80;--ink-ghost:#4A5567;
/* --- base: brand --- */
--ember:#4D9FFF;--glow:#9FCBFF;--ember-deep:#7DB8FF;
--ember-a55:rgba(77,159,255,.55);--ember-a16:rgba(77,159,255,.16);--ember-a075:rgba(77,159,255,.075);
--glow-a06:rgba(159,203,255,.06);--glow-a05:rgba(159,203,255,.05);
/* --- base: public verdicts (decisive, independently checked) --- */
--verified:#4ADE80;--verified-field:#0C1712;--verified-line:#1E4D36;
--failed:#F87171;--failed-field:#1A0E12;--failed-line:#5C2330;
--unknown:#5C6B80;
/* --- base: console state (operational, quieter) --- */
--console-ok:#57C98A;--console-bad:#E5646E;--console-warn:#D9B457;--console-alarm:#E8756B;--console-alarm-line:#7E2F24;

/* --- semantic: surfaces --- */
--surface-page:var(--ink-canvas);
--surface-raised:var(--ink-surface);
--surface-panel:var(--ink-panel);
--surface-evidence:var(--ink-evidence);
--surface-terminal:var(--ink-well);
--border-hairline:var(--hairline);
--border-strong:var(--hairline-strong);
--border-quiet:var(--hairline-faint);
/* --- semantic: text --- */
--text-heading:var(--ink);
--text-body:var(--ink-mist);
--text-ui:var(--ink-ui);
--text-data:var(--ink-data);
--text-label:var(--ink-evidence-muted);
--text-muted:var(--ink-haze);
--text-footer:var(--ink-soft);
--text-placeholder:var(--ink-ghost);
/* --- semantic: action --- */
--action:var(--ember);
--action-hover:var(--glow);
--action-fg:var(--ink-canvas);
--link:var(--ember);
--link-hover:var(--glow);
--focus-ring:var(--glow);
/* --- semantic: atmosphere --- */
--page-glow:radial-gradient(640px 440px at calc(50% - 340px) -6%,var(--ember-a075),transparent 70%);
--inset-highlight:inset 0 1px 0 var(--glow-a06);
--dot-smolder:0 0 10px var(--ember-a55);

/* --- type. IBM Plex Sans for prose and headings; IBM Plex Mono for facts —
   labels, commands, measurements, hashes, status, compact actions. Mono means
   "checkable", not merely "technical": never set an explanatory paragraph in
   mono. --- */
--font-sans:"IBM Plex Sans",system-ui,sans-serif;
--font-mono:"IBM Plex Mono",ui-monospace,monospace;
--weight-regular:400;--weight-medium:500;--weight-semibold:600;
--text-hero:clamp(46px,6.2vw,76px);--text-hero-lh:1.02;--text-hero-track:-.032em;
--text-h1:clamp(39px,5vw,60px);--text-h1-lh:1.05;--text-h1-track:-.028em;
--text-h2:clamp(26px,4.5vw,34px);--text-h2-lh:1.2;--text-h2-track:-.015em;
--text-h3:20px;--text-h3-lh:1.3;
--text-lede:19px;--text-lede-lh:1.55;
--size-body:17px;--text-body-lh:1.7;
--text-body-tight:16px;--text-body-tight-lh:1.6;
--text-small:15px;--text-small-lh:1.6;
--text-console:14.5px;--text-console-lh:1.6;
--text-console-sm:13px;--text-console-sm-lh:1.5;
--text-evidence:12.5px;--text-evidence-lh:1.65;
--text-evidence-sm:11.5px;
--text-cmd:12.5px;--text-cmd-lh:1.7;
--text-code:13.5px;--text-code-lh:1.75;
--size-label:11px;--track-label:.18em;
--text-label-sm:10.5px;--track-label-sm:.14em;
--track-brand:.22em;--track-nav:.18em;--track-tight:.12em;--track-btn:.06em;
--text-btn:13px;--text-chip:10px;--track-chip:.16em;

/* --- spacing, measure and shape. Controls ~4px, evidence blocks 6px, panels
   8px, window chrome 10px. No pill shapes except compact status tokens. --- */
--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:22px;
--space-6:28px;--space-7:34px;--space-8:48px;--space-9:56px;--space-10:80px;
--radius-control:4px;--radius-evidence:6px;--radius-panel:8px;--radius-window:10px;
--radius-chip:3px;--radius-dot:50%;
--border-width:1px;
--measure-prose:640px;--measure-lede:600px;--measure-hero:680px;
--page-narrow:660px;--page-reading:760px;--page-wide:1000px;--page-max:1200px;
--page-pad-x:40px;--page-pad-x-sm:24px;--page-pad-top:30px;
--control-h:44px;--dot-size:7px;

/* --- motion is slow, low-amplitude and never load-bearing. The 4.4s smolder
   is the signature. Entrance beats land at .3s / .55s / .8s. Verdicts never
   animate into a successful state before verification completes. --- */
--ease-rise:cubic-bezier(.2,.6,.2,1);
--ease-ui:cubic-bezier(.4,0,.2,1);
--dur-hover:.15s;
--dur-state:.18s;
--dur-reveal:1s;
--dur-veil:1.6s;
--beat-1:.3s;
--beat-2:.55s;
--beat-3:.8s;
--smolder-period:4.4s;
}

@keyframes ember-rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes ember-fade{from{opacity:0}to{opacity:1}}
@keyframes ember-fadein{from{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}
@keyframes ember-smolder{0%,100%{opacity:.75;box-shadow:0 0 5px rgba(77,159,255,.3)}50%{opacity:1;box-shadow:0 0 14px rgba(77,159,255,.9)}}
@keyframes ember-smolder-verified{0%,100%{box-shadow:0 0 6px rgba(74,222,128,.35)}50%{box-shadow:0 0 12px rgba(74,222,128,.65)}}
@keyframes ember-alarm{0%,100%{box-shadow:0 0 6px rgba(248,113,113,.4)}50%{box-shadow:0 0 14px rgba(248,113,113,.85)}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
}

/* --- base element register --- */
*{box-sizing:border-box}
html,body{margin:0;background:var(--surface-page);color:var(--text-body);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}
::selection{background:var(--ember);color:var(--surface-page)}
a{text-decoration:none;color:var(--link)}
a:hover{color:var(--link-hover)}
p{text-wrap:pretty}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}
.mono{font-family:var(--font-mono)}
