/* ============================================================
   PV THEME · v1.1 — tokens canónicos de Provisual (DEFINITIVO)
   Base: Document System v1.0 (2025). Extensiones selladas por
   Roberto 2026-06-12: amber al canon · --ok #5fb368 · ai-labs
   unifica piel (cyan diferencial) · timeline se unifica ·
   BODY = General Sans (reemplaza a SG/Signate Grotesk).
   Fuente única de verdad: los :root por archivo quedan solo para
   variables de layout. Hex permitidos SOLO acá y en pv-constants.js.
   Auditoría: workspace/docs/design-system-auditoria-2026-06-12.md
   ============================================================ */

/* === BODY FONT · General Sans (self-host, ITF Free Font License) === */
@font-face { font-family:'General Sans'; src:url('fonts/general-sans-400.woff2') format('woff2'); font-weight:400; font-style:normal; font-display:swap; }
@font-face { font-family:'General Sans'; src:url('fonts/general-sans-400-italic.woff2') format('woff2'); font-weight:400; font-style:italic; font-display:swap; }
@font-face { font-family:'General Sans'; src:url('fonts/general-sans-500.woff2') format('woff2'); font-weight:500; font-style:normal; font-display:swap; }
@font-face { font-family:'General Sans'; src:url('fonts/general-sans-500-italic.woff2') format('woff2'); font-weight:500; font-style:italic; font-display:swap; }
/* ESC + IBM Plex Mono siguen llegando por <link> de Google Fonts en cada página
   (o @font-face local en la web). El barrido no toca ese mecanismo. */

:root {
  /* === SUPERFICIES (Document System v1.0 — intacto) === */
  --ink:       #080808;   /* fondo primario */
  --deep:      #181818;   /* cards / paneles */
  --panel:     #1e1e1e;   /* paneles anidados */
  --rule:      #282828;   /* bordes y divisores — SIEMPRE 1px solid */
  --cream:     #F5F1EA;   /* texto primario sobre oscuro */
  --off:       #f4f4f2;   /* superficie clara */
  --gray-tech: #797373;   /* labels y meta */

  --rule-soft: rgba(245,241,234,0.08); /* divisor suave sobre paneles */

  /* === ACENTOS === */
  --cyan:        #4ec9d8; /* SOLO AI Labs + detalles interactivos · jamás de fondo */
  --cyan-bright: #5fd8e6; /* hover/estado activo del cyan (estándar de facto, 4+ archivos) */
  --cyan-deep:   #1e9baa; /* cyan sobre superficie clara */
  --amber:       #d6a64a; /* APROBADO v1.1 — acción/destacado interno; web pública: solo CTA */
  --ui-violet:   #a87bd6; /* capa ui-l3 (de facto) — etiquetas violeta */
  --ui-blue:     #4a8fdb; /* capa ui-l3 (de facto) — etiquetas azul */

  /* === SEMÁNTICOS DE ESTADO (v1.1) === */
  --ok:        #5fb368;   /* éxito, pagado, on-time */
  --warn:      #d24545;   /* alerta/peligro (manual v1.0) */
  --error:     #d24545;   /* alias semántico de --warn */
  --info:      #4ec9d8;   /* = cyan · chips/avisos */

  /* === TIPOGRAFÍA (v1.1 — stacks únicos) === */
  --esc:  'ESC', 'Encode Sans Condensed', Helvetica, Arial, sans-serif;
  --body: 'General Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  --sg:   var(--body);    /* alias de transición — SG queda deprecada */
  --mono: 'IBM Plex Mono', ui-monospace, Menlo, monospace;

  /* === CAPA UI DEL SISTEMA (v1.1 — absorbe el estándar de facto de 15 archivos,
         jerarquía L1→L4; los HTML barridos ya NO la declaran localmente) === */
  --ui-l1-color: #c8c8c8;  --ui-l1-weight: 600;
  --ui-l1-id-size: 12.5px; --ui-l1-id-family: var(--esc); --ui-l1-id-spacing: .02em;
  --ui-l1-text-size: 15px; --ui-l1-text-family: var(--esc);
  --ui-l1b-color: #a0a0a0;
  --ui-l2-color: #9a9a9a;  --ui-l2-weight: 400; --ui-l2-style: italic; --ui-l2-size: 12.5px;
  --ui-l2-family: var(--esc);
  --ui-l3-amber: var(--amber); --ui-l3-cyan: var(--cyan); --ui-l3-violet: var(--ui-violet);
  --ui-l3-blue: var(--ui-blue); --ui-l3-green: var(--ok); --ui-l3-red: var(--warn);
  --ui-l3-size: 10.5px; --ui-l3-weight: 600;
  --ui-l3-family: var(--esc); --ui-l3-spacing: .12em;
  --ui-l4-color: #5a5a5a; --ui-l4-weight: 400; --ui-l4-size: 11px;
  --ui-l4-family: var(--esc);
}

/* === BASE (boilerplate del Document System, con --body) === */
.pv-base, .pv-base body {
  background: var(--ink);
  color: var(--cream);
  font-family: var(--body);
  font-size: 13px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
.pv-base h1, .pv-base h2, .pv-base h3, .pv-base h4,
.pv-base .label, .pv-base .num { font-family: var(--esc); }

/* Reglas duras que el barrido hace cumplir:
   - border-radius: 0 en todo (única excepción: avatar IG 50%).
   - Sin box-shadow, sin gradientes decorativos, sin icon fonts.
   - Hex SOLO en este archivo y en pv-constants.js (tags/etapas).
   - Espaciado: 4/8/12/16/24/32/48-64/80-96 — nada intermedio.
   - Body al 78% de opacidad sobre oscuro; cream pleno solo títulos. */
