/* Battle Station v3 login tokens: graphite + IBM Plex Mono only. */
@font-face { font-family: "IBM Plex Mono"; src: url(/assets/font-plex-mono-light.woff2) format("woff2"); font-weight: 300; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url(/assets/font-plex-mono-regular.woff2) format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url(/assets/font-plex-mono-medium.woff2) format("woff2"); font-weight: 500; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url(/assets/font-plex-mono-semibold.woff2) format("woff2"); font-weight: 600 700; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url(/assets/font-ibm-plex-mono-400.woff2) format("woff2"); font-weight: 400; font-display: swap; }
/* Brand type rule (all sites): Orbitron for titles/headings and buttons; IBM Plex Mono for everything else.
   Orbitron is self-hosted (OFL, licenses/OFL-orbitron.txt; fontsource 5.3.0 latin 600 = the pharmacose.net theme file).
   One 600 file is declared across the weight range so headings at 500/700 use the real glyphs (no faux bold). */
@font-face { font-family: "Orbitron"; src: url(/assets/font-orbitron-600.woff2) format("woff2"); font-weight: 400 900; font-style: normal; font-display: swap; }

:root {
  --bg0: #0A0A0B; --s1: #111113; --s2: #18181B; --s3: #222226;
  --line: #2E2E33; --ctl: #63636B;
  --text: #F2F6F5; --muted: #A3A6AB;
  --mag: #ED1966; --mag-t: #FF5C93; --mag-fill: #D5145A; --mag-hover: #B8104D;
  --ind: #26262B; --ind-t: #FF5C93;
  --ok: #A3A6AB; --err: #FF6B6B;
  --ui: "IBM Plex Mono", ui-monospace, Menlo, monospace;
  --title: "Orbitron", "IBM Plex Mono", ui-monospace, Menlo, monospace;
  --head: var(--title);
  --mono: var(--ui);
}
* { box-sizing: border-box; }
html { color-scheme: dark; }
body { margin: 0; min-height: 100vh; background: var(--bg0); color: var(--text); font: 400 14px/1.6 var(--ui); -webkit-font-smoothing: antialiased; font-variant-ligatures: none; }
.hidden { display: none !important; }
a { color: var(--text); text-decoration-color: var(--ctl); text-underline-offset: 4px; }
a:hover { color: var(--mag-t); text-decoration-color: currentColor; }
:focus-visible { outline: 2px solid var(--mag-t); outline-offset: 2px; }
::selection { background: var(--ind); color: var(--text); }

.btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 36px; padding: 0 14px; border: 1px solid var(--ctl); border-radius: 0;
  background: transparent; color: var(--text); font: 500 13px/1 var(--ui); cursor: pointer; }
.btn:hover { background: var(--s3); border-color: var(--mag-t); }
.btn.primary { background: var(--mag-fill); border-color: var(--mag-fill); color: #fff; font-weight: 600; }
.btn.primary:hover { background: var(--mag-hover); border-color: var(--mag-hover); }

input { font: 400 14px/1.4 var(--ui); color: var(--text); background: var(--bg0); border: 1px solid var(--ctl); border-radius: 0; padding: 8px 10px;
  min-height: 36px; width: 100%; }
input:hover { border-color: var(--mag-t); }
input:focus-visible { outline: 2px solid var(--mag-t); outline-offset: 0; border-color: var(--mag-t); }
label { display: block; font: 600 12px/16px var(--ui); color: var(--muted); margin: 16px 0 4px; }
::placeholder { color: #82858B; }

/* Brand type rule, last so it wins over earlier font shorthands: titles, headings and action buttons in Orbitron.
   Nav, tabs, card/row toggles, chips, inputs, selects, tables and metrics stay IBM Plex Mono. */
h1, h2, h3, h4, h5, h6, .btn, .btn.ghost, .btn.primary, .btn.lg, .btn.sm, .btn.xs, .btn.text, button.btn { font-family: var(--title); }
