:root {
  /* ---- neutrales: rampa fija de 6, nada fuera de aquí ---- */
  --ink-0: #060606;
  --ink-1: #0F0F0F;
  --ink-2: #181818;
  --ink-3: #2B2B2B;
  /* #7A7A7A daba 4.13:1 sobre --ink-2 (por debajo del mínimo AA de 4.5 en texto
     pequeño). #8A8A8A sube a 5.14:1 sin alterar la jerarquía visual. */
  --ink-4: #8A8A8A;
  --ink-5: #B4B4B4;
  --white: #FFFFFF;

  --paper: #EDEAE3;
  --paper-ink: #17160F;
  --paper-muted: #5E5D53;
  --paper-line: #D9D5C8;
  --paper-raised: #F5F3ED;

  /* ---- acento: cada color tiene UN trabajo. Nunca se funden ---- */
  --lime: #A8E04A;        /* resultado: lo que gana el cliente */
  --lime-ink: #3E6008;    /* el lima sobre papel (el lima puro no vale como texto) */
  --teal: #32D9A0;        /* sistema: lo que hace la máquina */
  --teal-ink: #0E6B4C;
  --alert: #FF5A5A;       /* problema. Nunca decorativo */
  --alert-ink: #A82C2C;

  /* ---- lima en capas: el color es luz, se mide en opacidad ---- */
  --lime-04: rgba(168, 224, 74, 0.04);
  --lime-08: rgba(168, 224, 74, 0.08);
  --lime-14: rgba(168, 224, 74, 0.14);
  --lime-24: rgba(168, 224, 74, 0.24);
  --lime-40: rgba(168, 224, 74, 0.40);
  --teal-10: rgba(50, 217, 160, 0.10);
  --alert-10: rgba(255, 90, 90, 0.10);
  --shade-72: rgba(6, 6, 6, 0.72);
  --shade-88: rgba(6, 6, 6, 0.88);
  --hair-light: rgba(255, 255, 255, 0.06);

  /* ---- tipografía: tres voces ---- */
  --font-display: 'Archivo', sans-serif;   /* titulares */
  --font-body: 'Montserrat', sans-serif;   /* cuerpo y UI */
  --font-mono: 'JetBrains Mono', monospace; /* datos, horas, registro */

  /* ---- escala tipográfica: 8 pasos. No se inventan tamaños ---- */
  --text-display: clamp(54px, 9vw, 132px);
  --text-h1:      clamp(40px, 6.2vw, 92px);
  --text-h2:      clamp(32px, 3.6vw, 54px);
  --text-h3:      clamp(21px, 1.9vw, 27px);
  --text-lead:    clamp(19px, 1.45vw, 24px);
  --text-body:    17px;
  --text-cap:     14px;
  --text-micro:   12px;

  --lh-tight: 0.98;
  --lh-snug: 1.15;
  --lh-normal: 1.45;
  --lh-relaxed: 1.65;

  --track-tight: -0.035em;
  --track-normal: 0;
  --track-wide: 0.08em;
  --track-wider: 0.16em;

  /* ---- espacio ---- */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 48px;
  --space-8: 64px;
  --space-9: 96px;
  --space-10: 140px;

  --pad-inline: clamp(20px, 5.5vw, 84px);
  --pad-section: clamp(72px, 11vw, 160px);
  --content-max: 1280px;

  /* ---- forma: 3 radios. Nada más ---- */
  --r-card: 18px;
  --r-chip: 8px;
  --r-pill: 999px;

  /* ---- movimiento ---- */
  --ease-out-expo: cubic-bezier(.16, 1, .3, 1);
  --ease-in-out-quart: cubic-bezier(.76, 0, .24, 1);
  --dur-fast: 200ms;
  --dur-base: 480ms;
  --dur-slow: 900ms;
  --dur-reveal: 1100ms;

  --shadow-card: 0 1px 0 var(--hair-light) inset, 0 30px 60px -30px rgba(0,0,0,0.7);
  --shadow-paper: 0 1px 2px rgba(23,22,15,0.06), 0 16px 32px -20px rgba(23,22,15,0.22);
  --shadow-pop: 0 20px 50px -18px rgba(0,0,0,0.55);
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --dur-fast: 1ms;
    --dur-base: 1ms;
    --dur-slow: 1ms;
    --dur-reveal: 1ms;
  }
}
