/* Snag design tokens.
   Three voices: Mona Sans wide = display and telemetry (SpaceX), Mona Sans normal = reading (Apple),
   Fragment Mono = machine strings: ids, paths, commits, keys. Colour is reserved for meaning. */

@font-face {
  font-family: "Mona Sans";
  src: url("../fonts/MonaSans-latin.woff2") format("woff2");
  font-weight: 200 900; font-stretch: 75% 125%; font-style: normal; font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Mona Sans";
  src: url("../fonts/MonaSans-latin-ext.woff2") format("woff2");
  font-weight: 200 900; font-stretch: 75% 125%; font-style: normal; font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Fragment Mono";
  src: url("../fonts/FragmentMono-latin.woff2") format("woff2");
  font-weight: 400; font-style: normal; font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Fragment Mono";
  src: url("../fonts/FragmentMono-latin-ext.woff2") format("woff2");
  font-weight: 400; font-style: normal; font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
  color-scheme: dark;

  /* Ink: true black, lifted a hair per layer */
  --ink-0: #000000;
  --ink-1: #07070a;
  --ink-2: #0c0c0f;
  --ink-3: #121216;
  --ink-4: #19191e;
  --ink-5: #222228;
  --ink-6: #2c2c33;

  /* Hairlines */
  --line-1: rgba(255, 255, 255, 0.055);
  --line-2: rgba(255, 255, 255, 0.09);
  --line-3: rgba(255, 255, 255, 0.14);
  --line-4: rgba(255, 255, 255, 0.22);

  /* Text */
  --text-1: #f4f4f6;
  --text-2: rgba(235, 235, 245, 0.66);
  --text-3: rgba(235, 235, 245, 0.42);
  --text-4: rgba(235, 235, 245, 0.26);
  --text-on-light: #050507;

  /* Meaning */
  --sev-blocker: #ff5a4f;
  --sev-major: #ff9f2e;
  --sev-minor: #e6c04a;
  --sev-polish: #7cc6ff;
  --ok: #30d158;
  --live: #ff453a;
  --agent: #8ec9ff;

  /* Atmosphere: the light on Earth's limb, used only while Snag listens */
  --atmo-deep: #1747ff;
  --atmo-mid: #4aa8ff;
  --atmo-edge: #cfeeff;

  --focus: rgba(142, 201, 255, 0.6);
  --selection: rgba(74, 168, 255, 0.32);

  /* Glass */
  --glass: rgba(16, 16, 20, 0.72);
  --glass-strong: rgba(10, 10, 13, 0.9);
  --glass-blur: blur(28px) saturate(165%);

  /* Type */
  --font-ui: "Mona Sans", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-mono: "Fragment Mono", ui-monospace, "SF Mono", Menlo, monospace;
  --wide: 112%;
  --wider: 118%;
  --widest: 125%;

  --fs-caption: 11.5px;
  --fs-meta: 12.5px;
  --fs-ui: 13.5px;
  --fs-body: 14.5px;
  --fs-row: 15px;
  --fs-h3: 17px;
  --fs-h2: 21px;
  --fs-display: 25px;
  --fs-live: 26px;

  /* Space (4 px grid) */
  --s-1: 4px; --s-2: 8px; --s-3: 12px; --s-4: 16px; --s-5: 20px; --s-6: 24px; --s-8: 32px; --s-10: 40px; --s-12: 48px;

  /* Radii */
  --r-xs: 6px; --r-sm: 8px; --r-md: 12px; --r-lg: 16px; --r-xl: 22px; --r-2xl: 28px; --r-pill: 999px;

  /* Depth */
  --edge: inset 0 1px 0 rgba(255, 255, 255, 0.045);
  --shadow-pop: inset 0 1px 0 rgba(255, 255, 255, 0.05), 0 0 0 1px var(--line-2), 0 24px 64px -16px rgba(0, 0, 0, 0.8), 0 8px 24px -8px rgba(0, 0, 0, 0.6);
  --shadow-sheet: inset 0 1px 0 rgba(255, 255, 255, 0.05), 0 0 0 1px var(--line-2), 0 40px 120px -24px rgba(0, 0, 0, 0.9);

  /* Layout */
  --topbar-h: 56px;
  --rail-w: 236px;
  --traffic-w: 0px;

  /* Motion: curves */
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);       /* entrances: fast start, long soft landing */
  --ease-in: cubic-bezier(0.4, 0, 0.84, 0.36);      /* exits: accelerate away */
  --ease-inout: cubic-bezier(0.65, 0, 0.35, 1);     /* crossfades and morphs without a spring */
  --ease-standard: cubic-bezier(0.2, 0, 0, 1);      /* small state changes (hover, colour) */

  /* Motion: durations */
  --d-1: 90ms;    /* press */
  --d-2: 140ms;   /* hover, colour */
  --d-3: 220ms;   /* exits, small entrances */
  --d-4: 340ms;   /* panel content */
  --d-5: 520ms;   /* large entrances */

  /* Motion: springs (damped oscillator sampled into linear()) */
  /* spring snappy: stiffness 420, damping 36, mass 1 — settles in 460 ms, overshoot 0.3% */
  --spring-snappy: linear(0.0001, 0.0197, 0.0651, 0.1275, 0.1997, 0.2767, 0.3546, 0.4344, 0.5063, 0.5731, 0.6342, 0.6893, 0.7383, 0.7835, 0.8209, 0.8531, 0.8806, 0.904, 0.9236, 0.9407, 0.9541, 0.9651, 0.974, 0.9811, 0.9868, 0.9914, 0.9948, 0.9973, 0.9992, 1.0006, 1.0016, 1.0022, 1.0026, 1.0027, 1.0028, 1.0027, 1.0026, 1.0024, 1.0022, 1.002, 1.0017, 1.0015, 1.0013, 1.0011, 1.001, 1.0008, 1.0007, 1.0006, 1);
  --spring-snappy-ms: 460ms;
  /* spring bouncy: stiffness 300, damping 19, mass 1 — settles in 789 ms, overshoot 12.6% */
  --spring-bouncy: linear(0.0001, 0.0378, 0.1327, 0.2626, 0.409, 0.5571, 0.6962, 0.8189, 0.9211, 1.0013, 1.0582, 1.0972, 1.1189, 1.1264, 1.123, 1.112, 1.0961, 1.0777, 1.0589, 1.0411, 1.0257, 1.0122, 1.0015, 0.9937, 0.9883, 0.9853, 0.9841, 0.9843, 0.9856, 0.9874, 0.9897, 0.9921, 0.9944, 0.9965, 0.9982, 0.9996, 1.0007, 1.0014, 1.0018, 1.002, 1.002, 1.0019, 1.0016, 1.0013, 1.001, 1.0008, 1.0005, 1.0003, 1);
  --spring-bouncy-ms: 789ms;
  /* spring soft: stiffness 170, damping 24, mass 1 — settles in 568 ms, no overshoot */
  --spring-soft: linear(0, 0.0116, 0.0414, 0.0842, 0.1334, 0.1903, 0.2501, 0.3083, 0.3686, 0.4271, 0.4809, 0.534, 0.5837, 0.628, 0.6705, 0.7094, 0.7433, 0.7753, 0.804, 0.8297, 0.8517, 0.8721, 0.89, 0.9052, 0.9191, 0.9313, 0.9414, 0.9506, 0.9585, 0.9651, 0.971, 0.976, 0.9801, 0.9838, 0.9868, 0.9894, 0.9915, 0.9933, 0.9948, 0.996, 0.997, 0.9978, 0.9985, 0.999, 0.9994, 0.9997, 1, 1.0002, 1);
  --spring-soft-ms: 568ms;
  /* spring morph: stiffness 260, damping 24, mass 1 — settles in 663 ms, overshoot 2.9% */
  --spring-morph: linear(0.0001, 0.0236, 0.0828, 0.1615, 0.2558, 0.3553, 0.4507, 0.5451, 0.6321, 0.7075, 0.776, 0.8346, 0.882, 0.9222, 0.9543, 0.9784, 0.9972, 1.0104, 1.0197, 1.0255, 1.0285, 1.0295, 1.0289, 1.0273, 1.025, 1.0222, 1.0194, 1.0165, 1.0137, 1.0112, 1.0088, 1.0068, 1.0051, 1.0036, 1.0024, 1.0015, 1.0007, 1.0001, 0.9997, 0.9994, 0.9993, 0.9992, 0.9991, 0.9991, 0.9992, 0.9993, 0.9993, 0.9994, 1);
  --spring-morph-ms: 663ms;
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --d-3: 120ms; --d-4: 140ms; --d-5: 160ms;
    --spring-snappy: ease; --spring-bouncy: ease; --spring-soft: ease; --spring-morph: ease;
    --spring-snappy-ms: 140ms; --spring-bouncy-ms: 160ms; --spring-soft-ms: 140ms; --spring-morph-ms: 160ms;
  }
}
