/* nerp.css - generado por preparar-sitio.ps1 a partir del design system NERP.
   No editar a mano: vuelve a correr el script. Estilos propios del sitio van en css/sitio.css. */

/* ===== fonts/fonts.css ===== */
/* Fuentes NERP — servidas localmente.
   SUSTITUCION PENDIENTE: no se entregaron los archivos tipograficos de la marca.
   Solo cuerpo (Archivo) y dato (JetBrains Mono).
   La display vive en tokens/fonts.css: es Eurostile, archivo real de la marca. */

/* Archivo 400 · latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url("../fonts/Archivo-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;
}

/* Archivo 400 · latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url("../fonts/Archivo-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;
}

/* Archivo 500 · latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url("../fonts/Archivo-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;
}

/* Archivo 500 · latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url("../fonts/Archivo-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;
}

/* Archivo 600 · latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url("../fonts/Archivo-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;
}

/* Archivo 600 · latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url("../fonts/Archivo-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;
}

/* Archivo 700 · latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url("../fonts/Archivo-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;
}

/* Archivo 700 · latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url("../fonts/Archivo-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;
}

/* JetBrains Mono 400 · latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/JetBrainsMono-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;
}

/* JetBrains Mono 400 · latin */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/JetBrainsMono-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;
}

/* JetBrains Mono 500 · latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/JetBrainsMono-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;
}

/* JetBrains Mono 500 · latin */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/JetBrainsMono-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;
}

/* JetBrains Mono 700 · latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/JetBrainsMono-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;
}

/* JetBrains Mono 700 · latin */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/JetBrainsMono-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;
}

/* ===== tokens/fonts.css ===== */
/* Tipografia del sistema NERP.

   DISPLAY: Eurostile, servido desde assets/fonts/ (woff2 primero, ttf de
   respaldo). Es la tipografia de ACOMPANAMIENTO del logotipo, no la del
   logotipo: el wordmark NERP se dibujo a mano en Illustrator con trazos y
   curvas, no hay fuente detras de el. Sustituye a Chakra Petch, que era una
   aproximacion provisional de Google Fonts y ya no forma parte del sistema.

   CUERPO y DATO: Archivo y JetBrains Mono siguen siendo Google Fonts. No se
   cargan por @import remoto sino desde fonts/, empaquetadas como woff2, para
   que el sistema no dependa de un host externo al renderizar. Son las mismas
   familias y los mismos pesos que antes; solo cambia de donde se sirven.

   ── LOS CUATRO PESOS APUNTAN AL MISMO ARCHIVO, A PROPOSITO ──────────────
   ESTO ES DEFINITIVO, NO UN APANO TEMPORAL. La display entra al sistema con
   un solo peso y no hay un Bold "de la marca" que esperar: el logotipo no
   esta tipografiado, asi que no existe tal archivo.

   Si se declarara solo el 400, cualquier regla que pidiera 600 o 700 haria
   que el navegador FALSIFIQUE la negrita: engorda los trazos por calculo y
   destruye la geometria cuadrada que hace reconocible a la familia.

   Declarando 400, 500, 600 y 700 contra el mismo archivo, el navegador nunca
   sintetiza: sirve el trazo real en cualquier peso que se le pida. Se pierde
   contraste de peso, que en este sistema ya se apoya sobre todo en el salto
   de tamano y en el cambio de familia.

   El peso como recurso jerarquico vive en --font-body (Archivo), que si trae
   600. Botones, badges y etiquetas no se tocan.
   Ver README, "Sustituciones que necesitan tu material", punto 1.
   ──────────────────────────────────────────────────────────────────────── */

/* Las reglas @import deben ir antes que cualquier otra regla. */

@font-face {
  font-family: "Eurostile";
  src: url("../fonts/Eurostile-Regular.woff2") format("woff2"),
       url("../fonts/Eurostile-Regular.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Eurostile";
  src: url("../fonts/Eurostile-Regular.woff2") format("woff2"),
       url("../fonts/Eurostile-Regular.ttf") format("truetype");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Eurostile";
  src: url("../fonts/Eurostile-Regular.woff2") format("woff2"),
       url("../fonts/Eurostile-Regular.ttf") format("truetype");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Eurostile";
  src: url("../fonts/Eurostile-Regular.woff2") format("woff2"),
       url("../fonts/Eurostile-Regular.ttf") format("truetype");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* ===== tokens/colors.css ===== */
:root {
  /* Escala neutra: del negro de pantalla apagada al plata pulido */
  --nerp-black: #050607;
  --nerp-carbon: #0F1113;
  --nerp-graphite: #1A1D21;
  --nerp-slate: #24282D;
  --nerp-steel-800: #3C4147;
  --nerp-steel-600: #6B727B;
  --nerp-silver-400: #9AA1AA;
  --nerp-silver-300: #C8CED6;
  --nerp-silver-200: #DCE1E7;
  --nerp-silver-100: #E3E8EE;
  --nerp-white: #FFFFFF;

  /* Acento de marca. Dominante en marketing y empaque, contenido en interfaz. */
  --nerp-red: #C8102E;
  --nerp-red-press: #A60D26;
  --nerp-red-hover: #DE1735;
  --nerp-red-tint: rgba(200, 16, 46, 0.12);

  /* Semánticos de estado */
  --nerp-success: #3BA55C;
  --nerp-warning: #E0A526;
  --nerp-danger: #C8102E;
  --nerp-info: #1E90C8;

  /* Alias semánticos: superficies oscuras (interfaz de dispositivo, presentaciones) */
  --surface-base: var(--nerp-black);
  --surface-raised: var(--nerp-carbon);
  --surface-card: var(--nerp-graphite);
  --surface-overlay: rgba(5, 6, 7, 0.82);
  --surface-inset: #0A0C0E;

  /* Alias semánticos: superficies claras (sitio web, catálogo, empaque) */
  --surface-light-base: var(--nerp-white);
  --surface-light-card: #F4F6F8;
  --surface-light-inset: var(--nerp-silver-100);

  /* Texto sobre oscuro */
  --text-primary: var(--nerp-white);
  --text-body: var(--nerp-silver-300);
  --text-muted: var(--nerp-silver-400);
  --text-disabled: var(--nerp-steel-600);
  --text-accent: var(--nerp-red);

  /* Texto sobre claro */
  --text-on-light: var(--nerp-black);
  --text-on-light-body: var(--nerp-slate);
  --text-on-light-muted: var(--nerp-steel-600);

  /* Bordes: hairlines, nunca gruesos */
  --border-subtle: rgba(226, 232, 239, 0.10);
  --border-default: rgba(226, 232, 239, 0.18);
  --border-strong: rgba(226, 232, 239, 0.34);
  --border-on-light: rgba(5, 6, 7, 0.12);
  --border-focus: var(--nerp-silver-100);

  /* Gradientes de marca */
  --grad-steel: linear-gradient(180deg, #1B1E22 0%, #8F959D 8%, #C8CED6 30%, #9AA1A9 62%, #6D737B 88%, #2A2D31 100%);
  --grad-mark: linear-gradient(115deg, #E3E8EE 0%, #FFFFFF 44%, #AEB6C1 100%);
  --grad-stage: radial-gradient(ellipse 78% 66% at 50% 104%, #6F757E 0%, #3A3E45 26%, #191C20 56%, #0A0B0D 80%, #07080A 100%);
  --grad-protect: linear-gradient(180deg, rgba(5,6,7,0) 0%, rgba(5,6,7,0.78) 100%);
}

/* ===== tokens/typography.css ===== */
:root {
  --font-display: "Eurostile", "Bahnschrift", sans-serif;
  --font-body: "Archivo", "Helvetica Neue", Arial, sans-serif;
  --font-mono: "JetBrains Mono", "SF Mono", Consolas, monospace;

  --fs-display-xl: 88px;
  --fs-display-l: 64px;
  --fs-display-m: 44px;
  --fs-title-l: 32px;
  --fs-title-m: 24px;
  --fs-title-s: 20px;
  --fs-body-l: 18px;
  --fs-body-m: 16px;
  --fs-body-s: 14px;
  --fs-caption: 12px;
  --fs-micro: 11px;

  --lh-tight: 1.02;
  --lh-display: 1.08;
  --lh-title: 1.18;
  --lh-body: 1.55;
  --lh-loose: 1.7;

  --fw-regular: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --fw-bold: 700;

  /* El display siempre va apretado; los micro-labels siempre abiertos y en caja alta */
  --ls-display: -0.03em;
  --ls-title: -0.015em;
  --ls-body: 0;
  --ls-label: 0.14em;
  --ls-eyebrow: 0.22em;
}

/* ===== tokens/spacing.css ===== */
:root {
  --space-0: 0;
  --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: 128px;

  --gutter-web: 64px;
  --gutter-mobile: 20px;
  --gutter-tv: 80px;
  --max-content: 1240px;

  /* Área mínima de toque en panel de electrodoméstico y app móvil */
  --hit-min: 44px;
  --hit-tv: 56px;
}

/* ===== tokens/radius.css ===== */
:root {
  /* Radios cortos: el hardware es de esquinas vivas, la interfaz lo acompaña */
  --radius-none: 0;
  --radius-xs: 2px;
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 14px;
  --radius-pill: 999px;
}

/* ===== tokens/elevation.css ===== */
:root {
  /* Sobre oscuro la elevación es luz de canto, no sombra */
  --edge-top: inset 0 1px 0 rgba(255, 255, 255, 0.10);
  --edge-top-strong: inset 0 1px 0 rgba(255, 255, 255, 0.24);
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.45);
  --shadow-md: 0 8px 24px rgba(0, 0, 0, 0.48);
  --shadow-lg: 0 24px 64px rgba(0, 0, 0, 0.58);
  --shadow-light-sm: 0 1px 2px rgba(5, 6, 7, 0.08);
  --shadow-light-md: 0 8px 28px rgba(5, 6, 7, 0.10);
  --glow-mark: 0 0 48px rgba(190, 205, 225, 0.16);
  --glow-accent: 0 0 24px rgba(200, 16, 46, 0.34);
  --ring-focus: 0 0 0 2px var(--nerp-black), 0 0 0 4px var(--nerp-silver-100);
}

/* ===== tokens/motion.css ===== */
:root {
  /* Movimiento mecánico: arranca decidido, frena largo. Nada rebota. */
  --ease-out: cubic-bezier(0.22, 0.61, 0.36, 1);
  --ease-in-out: cubic-bezier(0.45, 0.05, 0.55, 0.95);
  --ease-enter: cubic-bezier(0.16, 1, 0.3, 1);

  --dur-instant: 90ms;
  --dur-fast: 160ms;
  --dur-base: 240ms;
  --dur-slow: 420ms;
  --dur-reveal: 900ms;
  --dur-sweep: 1600ms;
}

/* ===== tokens/base.css ===== */
*, *::before, *::after { box-sizing: border-box; }

body {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--fs-body-m);
  line-height: var(--lh-body);
  color: var(--text-body);
  background: var(--surface-base);
  -webkit-font-smoothing: antialiased;
  text-wrap: pretty;
}

h1, h2, h3, h4 {
  font-family: var(--font-display);
  /* La display (Eurostile) entra con un solo peso: pedir semibold obligaria al
     navegador a falsificar la negrita y le quitaria la geometria. La jerarquia
     la hacen el tamano y el tracking. Es definitivo — no hay un Bold de la
     marca, porque el logotipo esta dibujado a mano y no tiene fuente detras. */
  font-weight: var(--fw-regular);
  letter-spacing: var(--ls-title);
  line-height: var(--lh-title);
  color: var(--text-primary);
  margin: 0;
}

a { color: var(--nerp-silver-100); text-decoration: none; border-bottom: 1px solid var(--border-default); transition: color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out); }
a:hover { color: var(--nerp-white); border-color: var(--border-strong); }

::selection { background: var(--nerp-red); color: var(--nerp-white); }
