/* ═══════════════════════════════════════════════════════════════════════════
   ARTCORE · tokens
   Tres paletas conmutables (research/01 §6), contraste WCAG verificado.
   El acento cálido tiene UN SOLO rol en todo el overlay: el pity duro. Un acento
   que aparece en cinco sitios deja de significar y empieza a decorar.
   ═══════════════════════════════════════════════════════════════════════════ */

:root {
  /* Escala: 1u = 1px cuando el viewport mide 1920. El mismo documento sirve a
     1080p, 1440p y 4K cambiando solo el tamaño del browser source — sin que OBS
     reescale (y por tanto sin resample ni texto blando). research/02 §6. */
  --u: calc(100vw / 1920);
  --band: calc(110 * var(--u));   /* alto de la banda inferior */
  --gutter: calc(28 * var(--u));
  --hair: max(1px, calc(1 * var(--u)));


  --font-display: 'Bodoni Moda', Georgia, serif;
  --font-ui: 'Schibsted Grotesk', system-ui, sans-serif;
  --font-data: 'Martian Mono', ui-monospace, monospace;

  /* Curvas. La de entrada tiene un ligero rebase; la de salida no: aparecer es
     un gesto, desaparecer no debe llamar la atención. */
  --ease-in: cubic-bezier(.16, .84, .28, 1);
  --ease-out: cubic-bezier(.4, 0, .7, .2);
  --ease-soft: cubic-bezier(.4, 0, .2, 1);

  --dur-fast: 220ms;
  --dur: 520ms;
  --dur-slow: 1100ms;

  /* Multiplicador global de movimiento, gobernado desde el panel. */
  --motion: 1;
}

/* ── A · Cathedral Frost — artcore: frío, oscuro, alto contraste ─────────── */
:root,
[data-theme='frost'] {
  --bg-void: #06070E;
  --bg-nave: #0C1024;
  --surface: #141A33;
  --hairline: #FFFFFF1F;      /* blanco 12%: filo, no borde */
  --ink: #EEF1FF;             /* 16.73:1 sobre nave */
  --ink-muted: #98A0C4;       /* 7.32:1 */
  --data: #7FE6F5;            /* 13.04:1 — cifras */
  --accent: #9B85FF;          /* 6.45:1 — texto de acento */
  --accent-fill: #7C5CFF;     /* 4.33:1 — solo relleno, nunca texto pequeño */
  --gold: #C9A24A;            /* 7.85:1 — reservado al pity duro */
  --glow: #7FE6F5;
  --scrim: #06070EA6;         /* veladura tras lo que flota sobre el vídeo */
  --ink-over: #EEF1FF;        /* tinta sobre esa veladura */
  --grain: .045;
  --ray: #FFFFFF;
  --ray-alpha: .10;
}

/* ── B · Gilded Vapour — angelcore: cálido, claro, bajo contraste ───────── */
[data-theme='vapour'] {
  --bg-void: #E7DFD1;
  --bg-nave: #F6F1E7;
  --surface: #FCFAF5;
  --hairline: #1B1A1724;
  --ink: #1B1A17;             /* 15.46:1 — negro cálido, nunca #000 */
  --ink-muted: #6E675C;       /* 4.96:1 */
  --data: #3D5F80;            /* 5.93:1 — azul de texto, no el celeste decorativo */
  --accent: #7E6320;          /* 5.05:1 — oro de texto */
  --accent-fill: #B08D3F;     /* decorativo */
  --gold: #7E6320;
  --glow: #B08D3F;
  --scrim: #F6F1E7E6;         /* en la paleta cálida la veladura es crema… */
  --ink-over: #1B1A17;        /* …y la tinta sigue siendo oscura: 15.46:1 sobre ella */
  --grain: .05;
  --ray: #7E6320;
  --ray-alpha: .07;
}

/* ── C · Soft Machine — softtech: mineral, acuosa, neutra fría ──────────── */
[data-theme='machine'] {
  --bg-void: #0A0E10;
  --bg-nave: #12171A;
  --surface: #1D2529;
  --hairline: #E6EFEF14;      /* ~8% */
  --ink: #E6EFEF;             /* 15.44:1 */
  --ink-muted: #8FA3A6;       /* 6.84:1 */
  --data: #A8C8E8;            /* 10.40:1 */
  --accent: #5FC9C2;          /* 9.13:1 */
  --accent-fill: #3E8F8A;
  --gold: #C9A24A;
  --glow: #5FC9C2;
  --scrim: #0A0E10AB;
  --ink-over: #E6EFEF;
  --grain: .035;
  --ray: #F2FBFB;
  --ray-alpha: .06;
}

/* Modo tranquilo: para tramos largos de directo. No congela el overlay —
   eso se notaría como una caída—; le baja el pulso a un tercio. */
[data-quiet='true'] {
  --motion: .34;
  --grain: .02;
  --ray-alpha: .03;
}

/* Etiquetas cortas en versalitas con tracking. Nunca tracking en texto corrido. */
.label {
  font-family: var(--font-data);
  font-size: calc(9.5 * var(--u));
  font-weight: 500;
  font-variation-settings: 'wdth' 87;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ink-muted);
}
