/* =========================================================================
   HORNETS DESIGN SYSTEM — tokens + base. Palette RESAMPLED from the crest
   (we-all-we-got.png) and approved 2026-09-06. Shared by the public site
   (public.css) and the portal (portal.css).

   Token NAMES are preserved so existing rules keep working; their VALUES are
   the approved crest palette. New closed-set tokens (--sp/--fs/--ls/--dur/
   --el/--z) are added. Dark mode is gated on [data-theme="dark"] only (NOT
   prefers-color-scheme) — inert until the account toggle + component audit ship.
   ========================================================================= */
:root{
  /* ── Greens — 5-stop ramp on the crest hue (138°), anchored at the crest ── */
  --g-900:#062810;   /* deepest — gradient ends, hero grounds */
  --g-800:#093F1B;   /* PRIMARY / identity — true crest green */
  --g-700:#125C28;   /* mid accent — links, pill text (8:1 on white) */
  --g-600:#308048;   /* avatars, hover green (white text 4.9:1) */
  --g-500:#559E6B;   /* lightest accent / UI borders */
  --green-soft:#447554;  /* secondary / subdued green (hover) */
  --green-ink:#093F1B;   /* GREEN USED AS TEXT — dark on light, brightens in dark mode */

  /* ── Gold — sampled crest gold + readable text variant ── */
  --gold:#DFAB31;    /* accent FILL — crest gold */
  --gold-2:#F7BB2D;  /* bright / hover */
  --gold-3:#705107;  /* readable gold TEXT on light (7.3:1) */
  --gold-ink:#705107;
  --warn-ink:#664605;/* warning TEXT (dark gold, 8.6:1) */

  /* ── Ink / surfaces ── */
  --ink:#141611; --ink-2:#3A423C; --ink-3:#5A635C;
  --paper:#FFFFFF; --paper-2:#F6F8F5; --line:#E0E6E1;
  --on-dark:#FFFFFF; --on-dark-muted:#BECDC4;

  /* ── Semantic ── */
  --ok:#12603A; --warn:#B8860B; --bad:#B0332E;

  /* ── Fonts ── */
  --display:"Oswald","Arial Narrow",sans-serif;
  --display2:"Barlow Condensed","Oswald",sans-serif;
  --display3:"Anton","Barlow Condensed",sans-serif;
  --body:"Inter","Helvetica Neue",Arial,sans-serif;

  /* ── Radius (closed set) ── */
  --r:10px; --r-sm:6px; --r-pill:999px;

  /* ── Spacing (closed set) 4·8·12·16·20·24·32 ── */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px; --sp-6:24px; --sp-7:32px;

  /* ── Type scale (closed set) 10 steps, no half-pixels ── */
  --fs-1:11px; --fs-2:12px; --fs-3:13px; --fs-4:14px; --fs-5:16px;
  --fs-6:18px; --fs-7:22px; --fs-8:26px; --fs-9:32px; --fs-10:42px;

  /* ── Letter-spacing (closed set) 4 named ── */
  --ls-1:.02em; --ls-2:.05em; --ls-3:.10em; --ls-4:.16em;

  /* ── Motion ── */
  --dur-1:.15s; --dur-2:.25s; --ease:cubic-bezier(.4,0,.2,1);

  /* ── Elevation (3 flat levels) — shadows kept for back-compat, aliased ── */
  --sh-1:0 1px 2px rgba(6,26,15,.08),0 2px 6px rgba(6,26,15,.06);
  --sh-2:0 2px 4px rgba(6,26,15,.10),0 12px 28px rgba(6,26,15,.14);
  --sh-3:0 6px 12px rgba(6,26,15,.14),0 28px 60px rgba(6,26,15,.24);
  --el-1:var(--sh-1); --el-2:var(--sh-2); --el-3:var(--sh-3);

  /* ── Z-index (6 named layers) ── */
  --z-base:0; --z-sticky:100; --z-drawer:200; --z-scrim:300; --z-modal:400; --z-toast:500;

  --hex:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='84' height='96' viewBox='0 0 84 96'><path d='M42 2 80 24v48L42 94 4 72V24Z' fill='none' stroke='white' stroke-opacity='.10' stroke-width='1.4'/></svg>");
}

/* ── Dark mode — staged, activates ONLY when the root carries data-theme="dark"
   (the account toggle). Not wired to prefers-color-scheme yet: the component
   colour audit (hardcoded #fff/rgba surfaces) lands in the same stage as the
   toggle, so nothing half-converted can be triggered by an OS setting. ── */
:root[data-theme="dark"]{
  --g-900:#04160C; --g-800:#0E5528; --g-700:#2E8B4E; --g-600:#3FA05F; --g-500:#5CB87A;
  --green-soft:#4F8A63; --green-ink:#5CB87A;   /* bright green text on near-black */
  --gold:#DFAB31; --gold-2:#F7BB2D; --gold-3:#E7C878; --gold-ink:#E7C878; --warn-ink:#E7C878;
  --ink:#FFFFFF; --ink-2:#BECDC4; --ink-3:#8CA093;
  --paper:#151D17; --paper-2:#090E0B; --line:#28332C;
  --on-dark:#FFFFFF; --on-dark-muted:#BECDC4;
  --ok:#5CB87A; --warn:#E7C878; --bad:#E06A63;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--body);color:var(--ink);background:var(--paper);line-height:1.55;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
/* Lucide icon system (shared) — 20px / 1.5 stroke / currentColor */
.ic-svg{width:20px;height:20px;stroke:currentColor;stroke-width:1.5;fill:none;stroke-linecap:round;stroke-linejoin:round;flex:none;vertical-align:-.15em;display:inline-block}
.ic-svg.lg{width:26px;height:26px}.ic-svg.sm{width:16px;height:16px}.ic-svg.xl{width:34px;height:34px}
a{color:var(--green-ink);text-decoration:none}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}

.display{font-family:var(--display);font-weight:700;text-transform:uppercase;letter-spacing:.005em;line-height:.95}
.eyebrow{font-family:var(--display);font-weight:600;font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-3)}

/* hex logo mark (used in headers, login, sidebar) */
.hex-bg{position:relative;isolation:isolate}
.hex-bg::before{content:"";position:absolute;inset:0;background:var(--hex);opacity:.9;pointer-events:none;z-index:-1;mask-image:radial-gradient(120% 90% at 20% 30%,#000 30%,transparent 80%)}
.mark{width:52px;height:58px;position:relative;display:grid;place-items:center;flex:none}
.mark svg{position:absolute;inset:0;width:100%;height:100%}
.mark span{position:relative;font-family:var(--display);font-weight:700;font-size:28px;color:var(--g-900);line-height:1;margin-top:2px}

/* flash messages (portal + public) */
.flashes{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:200;display:grid;gap:8px;width:min(520px,92vw)}
.flash{padding:12px 16px;border-radius:var(--r-sm);box-shadow:var(--sh-2);font-size:14px;font-weight:500;color:#fff}
.flash.ok{background:var(--g-600)} .flash.warn{background:var(--gold-3)} .flash.bad{background:#B0332E}
