/* HeapCrash brand layer — generated from the HeapCrash design system (tokens.json).
   Dark is the default theme (theme.js); light via data-theme="light". */

/* ---------- Fonts (self-hosted) ---------- */
@font-face{font-family:"Archivo";src:url("fonts/archivo-latin-700-normal.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Archivo";src:url("fonts/archivo-latin-800-normal.woff2") format("woff2");font-weight:800;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("fonts/ibm-plex-sans-latin-400-normal.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("fonts/ibm-plex-sans-latin-400-italic.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("fonts/ibm-plex-sans-latin-500-normal.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("fonts/ibm-plex-sans-latin-600-normal.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("fonts/jetbrains-mono-latin-400-normal.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("fonts/jetbrains-mono-latin-600-normal.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}

/* ---------- Tokens ---------- */
:root,:root[data-theme="dark"]{
  --hf-page:#0b0c0e; --hf-surface:#15171b; --hf-surface-sunken:#101114;
  --hf-ink:#f3f2ee; --hf-ink-muted:#a6a9b0; --hf-ink-subtle:#8e9199;
  --hf-line:#2b2e35; --hf-line-strong:#686c76;
  --hf-orange:#ff7a2b; --hf-on-orange:#0d0d0f; --hf-orange-ink:#ff9a5c; --hf-orange-soft:#3a2214;
  --hf-navy:#22355f; --hf-on-navy:#ffffff; --hf-navy-ink:#a9bdf0; --hf-navy-soft:#18223a;
  --hf-pass:#4fc3d9; --hf-pass-soft:#0e2a31; --hf-fault:#ff7b6b; --hf-fault-soft:#3a1714;
  --hf-code-bg:#0a0f1c; --hf-code-ink:#e6e9f0; --hf-code-muted:#8d97ad; --hf-code-accent:#ff8a47;
  --hf-inverse:#f3f2ee; --hf-on-inverse:#0d0d0f; --hf-focus:#ff9a5c;
  --hf-bar:#101114;                 /* app top bar and dark bands */
  --hf-shadow-float:0 8px 24px rgba(0,0,0,.5),0 1px 2px rgba(0,0,0,.4);
  color-scheme:dark;
}
:root[data-theme="light"]{
  --hf-page:#f1efe9; --hf-surface:#f9f8f4; --hf-surface-sunken:#e9e7e0;
  --hf-ink:#0d0d0f; --hf-ink-muted:#525459; --hf-ink-subtle:#66696f;
  --hf-line:#d9d6cd; --hf-line-strong:#838589;
  --hf-orange:#ff6a13; --hf-on-orange:#0d0d0f; --hf-orange-ink:#ab4400; --hf-orange-soft:#fbe3d2;
  --hf-navy:#14213d; --hf-on-navy:#ffffff; --hf-navy-ink:#14213d; --hf-navy-soft:#e1e5ee;
  --hf-pass:#006b80; --hf-pass-soft:#d6ebef; --hf-fault:#b52617; --hf-fault-soft:#f6dcd8;
  --hf-code-bg:#0f1524; --hf-code-ink:#e6e9f0; --hf-code-muted:#8d97ad; --hf-code-accent:#ff8a47;
  --hf-inverse:#0d0d0f; --hf-on-inverse:#f3f2ee; --hf-focus:#14213d;
  --hf-bar:#14213d;
  --hf-shadow-float:0 8px 24px rgba(13,13,15,.12),0 1px 2px rgba(13,13,15,.08);
  color-scheme:light;
}
:root{
  --hf-display:Archivo,"Arial Narrow",system-ui,sans-serif;
  --hf-sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --hf-mono:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  --hf-r-sm:3px; --hf-r-md:6px; --hf-r-lg:10px;
  /* Syntax colours on code-bg (developer leeway: a little richer than the base tokens) */
  --hf-syn-kw:#ff8a47; --hf-syn-type:#a9bdf0; --hf-syn-num:#ffb37a; --hf-syn-str:#f2c48d; --hf-syn-com:#8d97ad; --hf-syn-pre:#c9b6ff;
}

/* ---------- Base ---------- */
code,pre,kbd,samp,.hf-mono{font-family:var(--hf-mono);font-variant-ligatures:none;font-feature-settings:"calt" 0,"liga" 0}
:focus-visible{outline:2px solid var(--hf-focus);outline-offset:2px}

/* ---------- Eyebrow (mono label) ---------- */
.hf-eyebrow{font:600 12px/16px var(--hf-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--hf-navy-ink)}

/* ---------- Register bit-field ---------- */
.hf-bits{display:flex;flex-wrap:wrap;gap:4px}
.hf-bits i{width:10px;height:10px;border-radius:var(--hf-r-sm);background:var(--hf-line);display:block}
.hf-bits i.on{background:var(--hf-orange)}
.hf-bits i.pass{background:var(--hf-pass)}
.hf-bits i.fault{background:var(--hf-fault)}
.hf-bits i.now{box-shadow:0 0 0 2px var(--hf-page),0 0 0 3px var(--hf-orange)}

/* ---------- Verdict ---------- */
.hf-verdict{display:inline-flex;align-items:center;gap:6px;font:600 12px/18px var(--hf-mono);letter-spacing:.08em;padding:2px 8px;border-radius:var(--hf-r-sm);border:1px solid currentColor;vertical-align:middle}
.hf-verdict svg{flex:none}
.hf-verdict-pass{background:var(--hf-pass-soft);color:var(--hf-pass)}
.hf-verdict-fault{background:var(--hf-fault-soft);color:var(--hf-fault)}
.hf-verdict-partial{background:var(--hf-orange-soft);color:var(--hf-orange-ink)}

/* ---------- Tags ---------- */
.hf-tag{display:inline-flex;align-items:center;font:600 12px/16px var(--hf-mono);letter-spacing:.04em;padding:3px 8px;border-radius:var(--hf-r-sm);background:var(--hf-surface-sunken);color:var(--hf-ink);white-space:nowrap}
.hf-tag-orange{background:var(--hf-orange-soft);color:var(--hf-ink)}
.hf-tag-navy{background:var(--hf-navy-soft);color:var(--hf-navy-ink)}
.hf-tag-pro{background:var(--hf-navy);color:var(--hf-on-navy)}
