/* ===========================================================================
   NEON//DUSK — design tokens
   Übernommen 1:1 aus dem Design System (Projekt "NEON//DUSK Design System").
   Reihenfolge entspricht der originalen styles.css @import-Kette.
   NICHT von Hand anpassen — Änderungen gehören ins Design System.
   =========================================================================== */

/* --------------------------------------------------------------- colors --- */
:root {
  /* ---- VOID: deep blue-black surfaces ---- */
  --void-950: #02040c;
  --void-900: #050815;
  --void-850: #070c1d;
  --void-800: #0a1128;
  --void-700: #0f1936;
  --void-600: #16234a;
  --void-500: #1f3062;
  --void-400: #2c4180;

  /* ---- STEEL: cold neutral text/lines ---- */
  --steel-600: #3a4a72;
  --steel-500: #55679a;
  --steel-400: #7887b5;
  --steel-300: #9fabd0;
  --steel-200: #c6cfe8;
  --steel-100: #e6ebfa;

  /* ---- EMBER: primary neon orange ---- */
  --ember-700: #a83400;
  --ember-600: #d94b00;
  --ember-500: #ff6a00;
  --ember-400: #ff8c2b;
  --ember-300: #ffab5e;
  --ember-200: #ffcb9b;

  /* ---- ICE: secondary neon cyan ---- */
  --ice-600: #00a3b8;
  --ice-500: #00e5ff;
  --ice-400: #5cf2ff;
  --ice-300: #a3f8ff;

  /* ---- SIGNAL: states ---- */
  --sig-danger: #ff2247;
  --sig-warn: #ffb800;
  --sig-ok: #00ff9d;

  /* ---- alpha utilities ---- */
  --ember-a08: rgba(255, 106, 0, 0.08);
  --ember-a16: rgba(255, 106, 0, 0.16);
  --ember-a32: rgba(255, 106, 0, 0.32);
  --ember-a64: rgba(255, 106, 0, 0.64);
  --ice-a16: rgba(0, 229, 255, 0.16);
  --ice-a32: rgba(0, 229, 255, 0.32);
  --void-a72: rgba(5, 8, 21, 0.72);

  /* ---- semantic aliases ---- */
  --bg-root: var(--void-950);
  --bg-deck: var(--void-900);
  --surface-card: var(--void-850);
  --surface-raised: var(--void-800);
  --surface-inset: var(--void-950);
  --surface-hover: var(--void-700);

  --text-primary: var(--steel-100);
  --text-body: var(--steel-300);
  --text-muted: var(--steel-500);
  --text-accent: var(--ember-500);
  --text-on-accent: var(--void-950);
  --text-link: var(--ember-400);
  --text-link-hover: var(--ember-200);

  --line-hairline: rgba(85, 103, 154, 0.28);
  --line-strong: var(--steel-600);
  --line-accent: var(--ember-500);
  --line-accent-soft: var(--ember-a32);

  --accent: var(--ember-500);
  --accent-hot: var(--ember-400);
  --accent-2: var(--ice-500);
}

/* -------------------------------------------------------------- effects --- */
:root {
  /* ---- GLOW: the core visual currency ---- */
  --glow-ember-s: 0 0 6px rgba(255, 106, 0, 0.55);
  --glow-ember-m: 0 0 10px rgba(255, 106, 0, 0.6), 0 0 24px rgba(255, 106, 0, 0.28);
  --glow-ember-l: 0 0 14px rgba(255, 106, 0, 0.75), 0 0 40px rgba(255, 106, 0, 0.35), 0 0 80px rgba(255, 106, 0, 0.18);
  --glow-ice-m: 0 0 10px rgba(0, 229, 255, 0.6), 0 0 24px rgba(0, 229, 255, 0.25);
  --glow-danger-m: 0 0 10px rgba(255, 34, 71, 0.6), 0 0 24px rgba(255, 34, 71, 0.25);

  /* text glow (text-shadow) */
  --tglow-ember: 0 0 8px rgba(255, 106, 0, 0.8), 0 0 22px rgba(255, 106, 0, 0.35);
  --tglow-ice: 0 0 8px rgba(0, 229, 255, 0.8), 0 0 22px rgba(0, 229, 255, 0.3);
  --tglow-soft: 0 0 12px rgba(198, 207, 232, 0.25);

  /* chromatic aberration — the resting-state glitch */
  --tglow-chroma: 1px 0 0 rgba(255, 34, 71, 0.65), -1px 0 0 rgba(0, 229, 255, 0.65);

  /* ---- ELEVATION: black wells, never soft grey shadows ---- */
  --shadow-1: 0 2px 0 rgba(2, 4, 12, 0.9);
  --shadow-2: 0 8px 24px rgba(2, 4, 12, 0.85);
  --shadow-3: 0 24px 64px rgba(2, 4, 12, 0.9);
  --inset-well: inset 0 0 0 1px rgba(85, 103, 154, 0.2), inset 0 2px 12px rgba(2, 4, 12, 0.9);
  --ring-focus: 0 0 0 1px var(--ember-500), 0 0 0 4px rgba(255, 106, 0, 0.22);

  /* ---- TEXTURES: scanlines, grid, noise-free ---- */
  --scanlines: repeating-linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0) 0px,
    rgba(0, 0, 0, 0) 2px,
    rgba(0, 0, 0, 0.35) 3px,
    rgba(0, 0, 0, 0.35) 4px
  );
  --grid-fine: linear-gradient(rgba(85, 103, 154, 0.08) 1px, transparent 1px) 0 0 / 100% 24px,
    linear-gradient(90deg, rgba(85, 103, 154, 0.08) 1px, transparent 1px) 0 0 / 24px 100%;
  --haze-ember: radial-gradient(60% 80% at 50% 0%, rgba(255, 106, 0, 0.16), transparent 70%);
  --haze-ice: radial-gradient(60% 80% at 100% 100%, rgba(0, 229, 255, 0.12), transparent 70%);

  /* ---- CLIPS: the cut-corner chassis ---- */
  --clip-notch-s: polygon(0 6px, 6px 0, 100% 0, 100% calc(100% - 6px), calc(100% - 6px) 100%, 0 100%);
  --clip-notch-m: polygon(0 10px, 10px 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%);
  --clip-notch-l: polygon(0 16px, 16px 0, 100% 0, 100% calc(100% - 16px), calc(100% - 16px) 100%, 0 100%);
  --clip-tag: polygon(0 0, 100% 0, 100% calc(100% - 8px), calc(100% - 8px) 100%, 0 100%);
}

/* ----------------------------------------------------------- typography --- */
:root {
  --font-display: "Orbitron", "Chakra Petch", system-ui, sans-serif;
  --font-ui: "Chakra Petch", "Orbitron", system-ui, sans-serif;
  --font-mono: "Share Tech Mono", ui-monospace, "SFMono-Regular", monospace;

  --fw-light: 300;
  --fw-regular: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --fw-bold: 700;
  --fw-black: 900;

  /* size ramp — display uses tight leading, body 1.55 */
  --fs-display-xl: 72px;
  --fs-display-l: 52px;
  --fs-display-m: 38px;
  --fs-title: 26px;
  --fs-subtitle: 19px;
  --fs-body-l: 17px;
  --fs-body: 15px;
  --fs-caption: 13px;
  --fs-micro: 11px;

  --lh-display: 0.96;
  --lh-title: 1.15;
  --lh-body: 1.55;
  --lh-tight: 1.25;

  /* cyberpunk relies on wide tracking for display + labels */
  --ls-display: 0.06em;
  --ls-title: 0.04em;
  --ls-body: 0.01em;
  --ls-label: 0.18em;
  --ls-mono: 0.05em;

  --text-transform-label: uppercase;
}

/* -------------------------------------------------------------- spacing --- */
:root {
  /* 4px base grid; 2px available for hairline insets */
  --sp-0: 0px;
  --sp-1: 2px;
  --sp-2: 4px;
  --sp-3: 8px;
  --sp-4: 12px;
  --sp-5: 16px;
  --sp-6: 20px;
  --sp-7: 24px;
  --sp-8: 32px;
  --sp-9: 40px;
  --sp-10: 56px;
  --sp-11: 72px;
  --sp-12: 96px;

  /* radii: the system is near-square. Corners are CUT, not rounded. */
  --radius-0: 0px;
  --radius-1: 2px;
  --radius-2: 3px;
  --radius-pill: 999px;

  /* notch sizes used by the clip-path corner-cut motif */
  --notch-s: 6px;
  --notch-m: 10px;
  --notch-l: 16px;

  --border-hair: 1px;
  --border-strong: 2px;

  --container-max: 1240px;
  --gutter: var(--sp-7);
}

/* --------------------------------------------------------------- motion --- */
:root {
  --dur-instant: 60ms;
  --dur-fast: 120ms;
  --dur-base: 200ms;
  --dur-slow: 420ms;
  --dur-flicker: 3.2s;
  --dur-scan: 6s;

  /* hard, mechanical easing — nothing bouncy, nothing organic */
  --ease-snap: cubic-bezier(0.2, 0, 0, 1);
  --ease-step: steps(4, end);
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes cp-flicker {
  0%, 100% { opacity: 1; }
  92% { opacity: 1; }
  93% { opacity: 0.42; }
  94% { opacity: 1; }
  96% { opacity: 0.7; }
  97% { opacity: 1; }
}

@keyframes cp-glitch-x {
  0%, 100% { transform: translate3d(0, 0, 0); clip-path: inset(0 0 0 0); }
  82% { transform: translate3d(0, 0, 0); }
  84% { transform: translate3d(-3px, 1px, 0); clip-path: inset(12% 0 62% 0); }
  86% { transform: translate3d(3px, -1px, 0); clip-path: inset(58% 0 18% 0); }
  88% { transform: translate3d(-2px, 0, 0); clip-path: inset(32% 0 44% 0); }
  90% { transform: translate3d(0, 0, 0); clip-path: inset(0 0 0 0); }
}

@keyframes cp-scan {
  from { transform: translateY(-100%); }
  to { transform: translateY(100%); }
}

@keyframes cp-pulse-glow {
  0%, 100% { box-shadow: var(--glow-ember-s); }
  50% { box-shadow: var(--glow-ember-m); }
}

@keyframes cp-caret {
  0%, 49% { opacity: 1; }
  50%, 100% { opacity: 0; }
}

@keyframes cp-marquee {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

@media (prefers-reduced-motion: reduce) {
  * { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; }
}

/* ----------------------------------------------------------------- base --- */
html {
  background: var(--bg-root);
  color-scheme: dark;
}

body {
  margin: 0;
  background:
    var(--haze-ember),
    var(--haze-ice),
    var(--grid-fine),
    var(--bg-root);
  color: var(--text-body);
  font-family: var(--font-ui);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  letter-spacing: var(--ls-body);
  -webkit-font-smoothing: antialiased;
  text-wrap: pretty;
}

h1, h2, h3, h4 {
  font-family: var(--font-display);
  color: var(--text-primary);
  letter-spacing: var(--ls-display);
  line-height: var(--lh-display);
  margin: 0;
  text-transform: uppercase;
}

a {
  color: var(--text-link);
  text-decoration: none;
  border-bottom: 1px solid var(--ember-a32);
  transition: color var(--dur-fast) var(--ease-snap), text-shadow var(--dur-fast) var(--ease-snap);
}
a:hover {
  color: var(--text-link-hover);
  text-shadow: var(--tglow-ember);
  border-bottom-color: var(--ember-500);
}

code, kbd, pre { font-family: var(--font-mono); letter-spacing: var(--ls-mono); }

::selection { background: var(--ember-500); color: var(--text-on-accent); }

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--void-950); }
::-webkit-scrollbar-thumb { background: var(--void-600); border: 2px solid var(--void-950); }
::-webkit-scrollbar-thumb:hover { background: var(--ember-600); }

/* ---------------------------------------------------------------- fonts --- */
/* NEON//DUSK typefaces — vendored woff2, served from ../fonts (no CDN dependency) */

@font-face {
  font-family: 'Chakra Petch';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('../fonts/ChakraPetch-300-latin-ext.woff2') format('woff2');
  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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Chakra Petch';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('../fonts/ChakraPetch-300-latin.woff2') format('woff2');
  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: 'Chakra Petch';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/ChakraPetch-400-latin-ext.woff2') format('woff2');
  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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Chakra Petch';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/ChakraPetch-400-latin.woff2') format('woff2');
  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: 'Chakra Petch';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/ChakraPetch-500-latin-ext.woff2') format('woff2');
  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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Chakra Petch';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/ChakraPetch-500-latin.woff2') format('woff2');
  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: 'Chakra Petch';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('../fonts/ChakraPetch-600-latin-ext.woff2') format('woff2');
  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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Chakra Petch';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('../fonts/ChakraPetch-600-latin.woff2') format('woff2');
  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: 'Chakra Petch';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/ChakraPetch-700-latin-ext.woff2') format('woff2');
  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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Chakra Petch';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/ChakraPetch-700-latin.woff2') format('woff2');
  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: 'Orbitron';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url('../fonts/Orbitron-var400-900-latin.woff2') format('woff2');
  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: 'Share Tech Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/ShareTechMono-400-latin.woff2') format('woff2');
  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;
}
