/* hosting-admin — global tokens + base. Component styles live in co-located
   *.module.css files (stylance), bundled into bundle.css. */

/* Self-hosted variable fonts (latin subset) — no external CDN. Copied into
   dist/fonts by trunk (rel="copy-dir" in index.html). */
@font-face {
  font-family: "Space Grotesk"; font-style: normal; font-weight: 300 700;
  font-display: swap; src: url("fonts/space-grotesk.woff2") format("woff2");
}
@font-face {
  font-family: "Inter"; font-style: normal; font-weight: 100 900;
  font-display: swap; src: url("fonts/inter.woff2") format("woff2");
}
@font-face {
  font-family: "JetBrains Mono"; font-style: normal; font-weight: 100 800;
  font-display: swap; src: url("fonts/jetbrains-mono.woff2") format("woff2");
}

:root {
  /* Hostplane reference palette: off-white workspace, teal accent, navy rail. */
  --bg: oklch(98.5% .003 240);
  --panel: oklch(100% 0 0);
  --panel-2: oklch(96.5% .005 240);
  --line: oklch(91.5% .008 240);
  --line-2: oklch(86% .012 240);
  --ink: oklch(22% .02 250);
  --muted: oklch(53% .018 250);
  --faint: oklch(68% .014 245);
  --ok: oklch(55% .11 205);
  --warn: oklch(55% .13 75);
  --err: oklch(55% .19 22);
  --accent: oklch(55% .11 205);
  --accent-ink: oklch(99% .005 200);
  --sidebar: oklch(24% .02 250);
  --sidebar-ink: oklch(88% .01 240);
  --sidebar-muted: oklch(70% .01 240);
  --sidebar-accent: oklch(30% .022 250);
  --sidebar-line: oklch(32% .02 250);

  --font-display: "Space Grotesk", ui-sans-serif, system-ui, sans-serif;
  --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", monospace;

  --rail-w: 208px;
}

/* Dark variant from the same reference theme. */
:root[data-theme="dark"] {
  --bg: oklch(19% .018 250);
  --panel: oklch(23% .02 250);
  --panel-2: oklch(26% .02 250);
  --line: oklch(32% .02 250);
  --line-2: oklch(40% .022 250);
  --ink: oklch(93% .008 240);
  --muted: oklch(68% .015 245);
  --faint: oklch(55% .014 245);
  --ok: oklch(72% .12 200);
  --warn: oklch(79% .14 80);
  --err: oklch(63% .18 24);
  --accent: oklch(72% .12 200);
  --accent-ink: oklch(18% .02 250);
  --sidebar: oklch(16% .016 250);
  --sidebar-ink: oklch(86% .01 240);
  --sidebar-muted: oklch(68% .01 240);
  --sidebar-accent: oklch(24% .02 250);
  --sidebar-line: oklch(26% .02 250);
}

*, *::before, *::after { box-sizing: border-box; }

html, body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-sans);
  font-size: 14px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

a { color: inherit; text-decoration: none; }
button { font: inherit; cursor: pointer; }

/* Identifiers are machine names — always mono. */
code, .mono { font-family: var(--font-mono); }

:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}
