/* =========================================================================
   E.T.C. "Andrés Bello" — landing
   Tokens en tres niveles (crudo → rol → componente). Tema claro / oscuro.
   ========================================================================= */

:root {
  /* Tier 1 — crudos */
  --raw-ice-50: #f7fafb;
  --raw-ice-100: #ebeef1;
  --raw-ice-200: #dfe5e9;
  --raw-steel-400: #b6c1c8;
  --raw-ink-950: #090a0b;
  --raw-ink-900: #0e0f14;
  --raw-ink-800: #1b1d24;
  --raw-ink-700: #2a2d36;
  --raw-blue-700: #1c47c4;   /* azul institucional del logo, sobre claro */
  --raw-blue-400: #5b8dff;   /* el mismo azul, legible sobre oscuro */
  --raw-laurel-600: #2e8b3d; /* verde laurel del logo */
  --raw-laurel-400: #63c873;
  --raw-gold-500: #c9a24b;
  --raw-white: #ffffff;

  --raw-font-size-96: 6rem;
  --raw-font-size-70: 4.375rem;
  --raw-font-size-52: 3.25rem;
  --raw-font-size-38: 2.375rem;
  --raw-font-size-20: 1.25rem;
  --raw-font-size-18: 1.125rem;
  --raw-font-size-16: 1rem;
  --raw-font-size-14: 0.875rem;
  --raw-font-size-12: 0.75rem;

  /* Tier 2 — roles (tema claro en toda la página) */
  --background: var(--raw-ice-50);
  --foreground: var(--raw-ink-950);
  --foreground-muted: rgb(9 10 11 / 0.52);
  --surface-dark: var(--raw-ink-900);
  --surface-dark-raised: var(--raw-ink-800);
  --surface-black: #e8eef5;
  --surface-muted: var(--raw-ice-100);
  --surface-soft: var(--raw-ice-200);
  --foreground-on-dark: var(--raw-ink-950);
  --foreground-on-dark-muted: #3d4756;
  --foreground-on-dark-faint: rgb(9 10 11 / 0.46);
  --border-muted: #d8e0ea;
  --border-on-dark: #c5d1e0;
  --map-dot: #8796ac;
  --map-grid: #72839b;
  --map-grid-ghost: #d2dce8;
  --map-mark: var(--raw-ink-950);
  --timeline-outline: #b3c0d1;
  --timeline-fill: rgb(9 10 11 / 0.03);
  --timeline-rail: rgb(9 10 11 / 0.18);
  --paddock-contour: rgb(9 10 11 / 0.07);
  --footer-contour: rgb(9 10 11 / 0.07);
  --stack-shade-bg: #090a0b;
  --accent: var(--raw-blue-700);
  --accent-bright: var(--raw-blue-400);
  --accent-muted: rgb(28 71 196 / 0.25);
  --laurel: var(--raw-laurel-600);
  --gold: var(--raw-gold-500);
  --reveal-a: 0.62;
  --reveal-b: 0.44;

  --type-impact: var(--raw-font-size-96);
  --type-display-lg: var(--raw-font-size-70);
  --type-display: var(--raw-font-size-52);
  --type-heading: var(--raw-font-size-38);
  --type-title: var(--raw-font-size-20);
  --type-lead: var(--raw-font-size-18);
  --type-label: var(--raw-font-size-16);
  --type-body: var(--raw-font-size-14);
  --type-eyebrow: var(--raw-font-size-12);

  --duration-fast: 150ms;
  --duration-normal: 250ms;
  --duration-plate: 700ms;
  --ease-entrance: cubic-bezier(0.2, 0, 0, 1);
  --ease-plate: cubic-bezier(0.33, 0, 0, 1);

  --font-sans: "Space Grotesk", system-ui, sans-serif;
  --font-display: "Bebas Neue", "Oswald", Impact, sans-serif;
  --font-figure: "Oswald", Impact, sans-serif;
  --font-text: "Inter", system-ui, sans-serif;

  color-scheme: light;
}

/* Tema oscuro — mismos roles, otra paleta */
[data-theme="dark"] {
  --background: #0c0f14;
  --foreground: #eef1f5;
  --foreground-muted: rgb(238 241 245 / 0.48);
  --surface-dark: #161b26;
  --surface-dark-raised: #1d2330;
  --surface-black: #040507;
  --surface-muted: #141820;
  --surface-soft: #1a202b;
  --foreground-on-dark: var(--raw-white);
  --foreground-on-dark-muted: var(--raw-steel-400);
  --foreground-on-dark-faint: rgb(255 255 255 / 0.42);
  --border-muted: #232a36;
  --border-on-dark: #252c3a;
  --map-dot: #5b616c;
  --map-grid: #454b57;
  --map-grid-ghost: #181c24;
  --map-mark: #e9eef5;
  --timeline-outline: #3d4352;
  --timeline-fill: rgb(255 255 255 / 0.06);
  --timeline-rail: rgb(255 255 255 / 0.2);
  --paddock-contour: rgb(255 255 255 / 0.06);
  --footer-contour: rgb(255 255 255 / 0.09);
  --stack-shade-bg: #040507;
  --accent: var(--raw-blue-400);
  --accent-muted: rgb(91 141 255 / 0.25);
  --laurel: var(--raw-laurel-400);
  --reveal-a: 0.14;
  --reveal-b: 0.09;
  color-scheme: dark;
}

/* Las superficies oscuras usan siempre el azul brillante */
.on-dark {
  --accent: var(--accent-bright);
  --laurel: var(--raw-laurel-400);
}

/* Bandas de tamaño raíz: escalado equilibrado sin sobredimensionar pantallas grandes */
html { font-size: 16px; }
@media (max-width: 1920px) { html { font-size: clamp(14.5px, 0.833333vw, 16px); } }
@media (max-width: 1440px) { html { font-size: clamp(14.5px, 1.111111vw, 16px); } }
@media (max-width: 1279px) { html { font-size: 16px; } }

@media (min-width: 1441px) and (max-width: 1920px) {
  [data-hero] {
    --hero-base: 1.08;
    --type-impact: calc(5.5rem * var(--hero-base));
    --type-display-lg: calc(4.125rem * var(--hero-base));
    --type-display: calc(3.125rem * var(--hero-base));
    --type-heading: calc(2.25rem * var(--hero-base));
    --type-title: calc(1.2rem * var(--hero-base));
    --type-lead: calc(1.0625rem * var(--hero-base));
    --type-label: calc(0.95rem * var(--hero-base));
    --type-body: calc(0.875rem * var(--hero-base));
    --type-eyebrow: calc(0.75rem * var(--hero-base));
  }
  [data-hero] [data-hero-panels] { width: calc(13.625rem * var(--hero-base, 1)); }
  [data-hero] [data-hero-stats] { width: calc(10.75rem * var(--hero-base, 1)); }
  [data-hero] .bpanel-map { height: calc(3.125rem * var(--hero-base, 1)); width: calc(4.875rem * var(--hero-base, 1)); }
  [data-season] {
    --season-base: 1.08;
  }
}

*, *::before, *::after { box-sizing: border-box; }
body {
  margin: 0;
  min-height: 100lvh;
  background: var(--background);
  color: var(--foreground);
  font-family: var(--font-sans);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
img, svg, canvas { display: block; }
a { color: inherit; text-decoration: none; }
ul, ol, dl, dd, p, h1, h2, h3, figure { margin: 0; padding: 0; }
ul, ol { list-style: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
address { font-style: normal; }
::selection { background: var(--accent); color: #fff; }

/* Lenis */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }
html.is-locked { position: relative; overflow: hidden; height: 100%; }

.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* ---------- Motor de texto ---------- */
.split { display: flex; flex-wrap: wrap; column-gap: 0.3em; }
.split > span, .split-word { display: inline-block; will-change: transform, opacity; }
.split-word { display: inline-flex; white-space: nowrap; }
.split-word > span { display: inline-block; }

/* Antes de la entrada */
[data-anim], [data-hero-mast], [data-hero-id], [data-hero-meta], [data-hero-panels], [data-hero-actions] { opacity: 0; }
.no-motion [data-anim], .no-motion [data-hero-mast], .no-motion [data-hero-id], .no-motion [data-hero-meta], .no-motion [data-hero-panels], .no-motion [data-hero-actions] { opacity: 1; }

/* ---------- Utilidades ---------- */
.eyebrow {
  font-size: var(--type-eyebrow);
  font-weight: 500;
  text-transform: uppercase;
  line-height: 0.9;
  letter-spacing: -0.02em;
}
.accent { color: var(--accent); }

/* Esquinas de corchete (las añade JS en [data-bracket]) */
[data-bracket] { position: relative; }
.bracket-corner {
  position: absolute; width: 0.625rem; height: 0.625rem;
  fill: none; stroke: currentColor; stroke-width: 1; pointer-events: none;
}
.bracket-corner.tr { top: 0; right: 0; }
.bracket-corner.tl { top: 0; left: 0; transform: scaleX(-1); }
.bracket-corner.bl { bottom: 0; left: 0; transform: scale(-1); }
.bracket-corner.br { bottom: 0; right: 0; transform: scaleY(-1); }

/* Botón de tema */
.theme-toggle {
  width: 2rem; height: 2rem; display: grid; place-items: center;
  color: var(--foreground);
  transition: color var(--duration-fast) var(--ease-entrance);
}
.theme-toggle svg { width: 1.125rem; height: 1.125rem; transition: transform 500ms var(--ease-plate); }
[data-theme="dark"] .theme-toggle svg { transform: rotate(180deg); }
.theme-toggle:hover { color: var(--accent); }

/* =========================================================================
   VELO DE CARGA
   ========================================================================= */
.loader {
  position: fixed; inset: 0; z-index: 60;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  background: var(--background);
  pointer-events: auto;
}
.loader-content { display: flex; flex-direction: column; align-items: center; }
.loader-medal {
  position: relative; width: 8.5rem; height: 8.5rem;
  border-radius: 50%; overflow: hidden;
}
.loader-shell { position: absolute; inset: 0; background: var(--foreground); opacity: 0.12; }
.loader-fill {
  position: absolute; inset: 0; background: var(--foreground);
  transform-origin: top; transform: scaleY(0);
}
.loader-stars { position: absolute; inset: 0; width: 100%; height: 100%; fill: var(--background); opacity: 0.9; }
.loader-name {
  margin-top: 1.75rem;
  font-size: var(--type-lead); text-transform: uppercase; line-height: 0.9;
  letter-spacing: 0.18em; opacity: 0;
}
.loader-cue {
  margin-top: 1.5rem;
  display: inline-flex; align-items: center; gap: 0.55rem;
  padding: 0.55rem 0.95rem;
  font-size: var(--type-eyebrow); text-transform: uppercase; letter-spacing: 0.12em;
  color: var(--foreground);
  border: 1px solid var(--border-muted);
  background: color-mix(in srgb, var(--surface-soft) 55%, transparent);
  opacity: 0; transform: translateY(0.4rem);
  pointer-events: none;
  transition: opacity 320ms var(--ease-entrance), transform 320ms var(--ease-entrance), border-color 150ms;
}
.loader-cue.is-ready {
  opacity: 1; transform: translateY(0);
  pointer-events: auto;
}
.loader-cue:hover { border-color: var(--accent); }
.loader-cue-dot {
  width: 0.45rem; height: 0.45rem; border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 10px var(--accent);
}
.loader-cue kbd {
  font-family: var(--font-sans); font-weight: 700;
  padding: 0.15rem 0.4rem;
  border: 1px solid var(--accent);
  color: var(--accent);
  font-size: 0.95em;
}
.loader-meter { position: absolute; left: 0; right: 0; bottom: 0; height: 4px; background: var(--border-muted); }
.loader-meter-fill { height: 100%; background: var(--foreground); transform-origin: left; transform: scaleX(0); }

/* =========================================================================
   STACK
   ========================================================================= */
.stack { position: relative; background: var(--surface-black); }
.stack-layer { position: sticky; top: 0; }
.stack-inner { transform-origin: center; }
.stack-shade {
  position: absolute; inset: 0; background: var(--stack-shade-bg);
  opacity: 0; pointer-events: none;
}
.stack-last { position: relative; z-index: 20; }

/* =========================================================================
   1 — HERO
   ========================================================================= */
.hero {
  position: relative; isolation: isolate;
  min-height: 100lvh; overflow: hidden;
  background: var(--background);
}
.hero-canvas {
  position: absolute; inset: 0; z-index: 0;
  width: 100%; height: 100%;
  pointer-events: none;
  transform: translateZ(0); backface-visibility: hidden; will-change: transform;
}
.hero-fit { position: absolute; inset: 0; margin: 0 -1.5rem; pointer-events: none; visibility: hidden; }
.hero-box { position: absolute; left: 0; right: 0; bottom: 0; height: calc(100% - 4rem); }
@media (min-width: 768px) { .hero-box { height: calc(100% - 2rem); } }
@media (max-width: 1023px) { .hero-fit { top: 30%; } .hero-box { height: 100%; } }
@media (max-width: 639px) { .hero-fit { top: 36%; } }
@media (min-width: 1280px) { .hero-fit { display: none; } }

.hero-ramp {
  position: absolute; left: 0; right: 0; bottom: 0; height: 22%; z-index: 10; pointer-events: none;
  background-image: linear-gradient(to bottom,
    color-mix(in srgb, var(--background) 0%, transparent) 0%,
    color-mix(in srgb, var(--background) 6%, transparent) 26%,
    color-mix(in srgb, var(--background) 20%, transparent) 46%,
    color-mix(in srgb, var(--background) 45%, transparent) 64%,
    color-mix(in srgb, var(--background) 74%, transparent) 80%,
    color-mix(in srgb, var(--background) 93%, transparent) 91%,
    var(--background) 100%);
}
.hero-ramp-2 { display: none; }
@media (max-width: 767px) {
  .hero-ramp-2 {
    display: block; position: absolute; left: 0; right: 0; bottom: -13rem; height: 26rem; z-index: 10; pointer-events: none;
    background: linear-gradient(to bottom, transparent, var(--background) 60%, var(--background));
  }
}
@media (min-width: 1280px) { .hero-ramp { display: none; } }

.hero-content {
  position: relative; z-index: 20;
  min-height: 100lvh;
  display: flex; flex-direction: column;
  padding: 1.5rem;
  gap: 1rem;
}
@media (min-width: 640px) { .hero-content { padding-inline: 2rem; } }
@media (max-width: 639px) { .hero-content { gap: 0.5rem; } }
@media (max-height: 500px) { .hero-content { padding-block: 0.75rem; } }

/* Masthead */
.mast {
  display: flex; align-items: center; justify-content: space-between;
  position: relative; z-index: 30;
}
.mast-logo { display: flex; align-items: center; gap: 0.625rem; }
.mast-logo img { height: 2.25rem; width: 2.25rem; object-fit: contain; border-radius: 50%; }
.mast-logo-text {
  font-size: 0.6875rem; text-transform: uppercase; line-height: 1; letter-spacing: 0.04em;
}
.mast-logo-text b { font-family: var(--font-display); font-weight: 400; font-size: 1.125rem; letter-spacing: 0.02em; }
.mast-nav { display: none; }
.mast-nav ul { display: flex; gap: 4rem; }
.mast-nav a, .mast-cta {
  font-size: var(--type-label); text-transform: uppercase; line-height: 0.9;
  color: var(--foreground);
  transition: color var(--duration-fast) var(--ease-entrance);
}
.mast-nav a:hover, .mast-cta:hover { color: var(--accent); }
.mast-cta { font-weight: 700; }
.mast-right { display: none; align-items: center; gap: 1.5rem; }
.mast-mobile { display: flex; align-items: center; gap: 0.5rem; }
@media (min-width: 1280px) {
  .mast-nav { display: block; position: absolute; left: 50%; transform: translateX(-50%); }
  .mast-right { display: flex; }
  .mast-mobile { display: none; }
}
.burger { padding: 0.5rem; margin-right: -0.5rem; display: flex; flex-direction: column; gap: 0.3125rem; }
.burger span { display: block; width: 1.5rem; height: 1px; background: var(--foreground); }

/* Hoja de menú móvil */
.sheet {
  position: fixed; inset: 0; z-index: 50;
  background: var(--background); color: var(--foreground);
  padding: 1.5rem 2rem;
  display: flex; flex-direction: column;
  opacity: 0;
}
.sheet[hidden] { display: none; }
.sheet-top { display: flex; align-items: center; justify-content: space-between; }
.sheet-actions { display: flex; align-items: center; gap: 0.5rem; }
.sheet-close { position: relative; width: 2.5rem; height: 2.5rem; margin-right: -0.5rem; }
.sheet-close span { position: absolute; left: 0.5rem; top: 50%; width: 1.5rem; height: 1px; background: var(--foreground); }
.sheet-close span:first-child { transform: rotate(45deg); }
.sheet-close span:last-child { transform: rotate(-45deg); }
.sheet-nav { flex: 1; display: flex; flex-direction: column; justify-content: center; gap: 1rem; }
.sheet-nav a {
  font-family: var(--font-display); font-size: calc(var(--type-heading) * 1.25);
  text-transform: uppercase; line-height: 0.95;
  transition: color var(--duration-fast) var(--ease-entrance);
  opacity: 0;
}
.sheet-nav a:hover, .sheet-nav a.is-accent { color: var(--accent); }
@media (min-width: 640px) { .sheet-nav { gap: 1.5rem; } .sheet-nav a { font-size: calc(var(--type-display) * 1.25); } }

/* Identidad */
.hero-middle { display: flex; flex-direction: column; gap: 1.25rem; }
.hero-identity { order: 2; display: flex; flex-direction: column; gap: 1.25rem; }
.hero-panels { order: 3; display: grid; grid-template-columns: 1fr; gap: 0.65rem; }
.hero-namewrap { position: relative; }
.hero-id {
  font-size: var(--type-label); text-transform: uppercase; line-height: 0.9;
  color: var(--foreground-muted); margin-bottom: 1rem;
}
@media (max-height: 500px) { .hero-id { margin-bottom: 0.25rem; } }
.hero-name {
  font-family: var(--font-display); font-weight: 400;
  font-size: calc(var(--type-display-lg) * 1.25);
  text-transform: uppercase; line-height: 0.95;
  max-width: 6em; text-align: left;
}
.hero-name .split { justify-content: flex-start; column-gap: 0.18em; }
@media (max-height: 500px) { .hero-name { font-size: calc(var(--type-heading) * 1.25); } }
@media (min-width: 768px) { .hero-name { font-size: calc(var(--type-impact) * 1.25); } }
@media (min-width: 1024px) { .hero-name { font-size: calc(var(--type-display-lg) * 1.25); } }
@media (min-width: 1280px) { .hero-name { font-size: calc(var(--type-impact) * 1.25); } }

.hero-meta { display: flex; flex-direction: column; gap: 1rem; }
@media (max-height: 500px) { .hero-meta { gap: 0.25rem; } }
.hero-meta li {
  display: flex; align-items: center; gap: 0.5rem;
  font-size: var(--type-lead); text-transform: uppercase; line-height: 0.9;
}
.hero-meta .flag { width: 1.125rem; height: 0.75rem; }
.hero-meta .icon-star { width: 1rem; height: 1rem; color: var(--accent); }
.hero-meta .icon-logo { width: 1rem; height: 1rem; border-radius: 50%; object-fit: contain; }

@media (min-width: 640px) {
  .hero-panels { display: flex; flex-wrap: wrap; gap: 2rem; }
}
@media (min-width: 768px) {
  .hero-middle { flex-direction: row; justify-content: space-between; align-items: flex-start; gap: 2rem; }
  .hero-panels { flex-direction: column; flex-wrap: nowrap; width: 13.625rem; }
}
@media (min-width: 1280px) {
  .hero-middle { flex: 1; align-items: center; }
  .hero-identity { max-width: 30rem; gap: 6.0625rem; }
  .hero-id { position: absolute; left: 13.75rem; top: 0.5625rem; margin: 0; }
}

/* Paneles de corchete */
.bpanel { padding: 0.85rem; color: var(--foreground); background: color-mix(in srgb, var(--background) 65%, transparent); backdrop-filter: blur(4px); }
@media (min-width: 640px) { .bpanel { padding: 1rem 1.375rem 1.1875rem; background: transparent; backdrop-filter: none; } }
.bpanel-row { display: flex; justify-content: space-between; gap: 0.75rem; }
@media (min-width: 768px) { .bpanel-row { flex-direction: column; justify-content: flex-start; gap: 1rem; } }
.bpanel-list {
  margin-top: 0.75rem; display: flex; flex-direction: column; gap: 0.35rem;
  font-size: var(--type-body); text-transform: uppercase; line-height: 0.95;
}
.bpanel-list dt { font-weight: 700; }
.bpanel-map { width: 3.75rem; height: 2.5rem; margin-top: 0.75rem; flex-shrink: 0; }
@media (min-width: 640px) { .bpanel-map { width: 4.875rem; height: 3.125rem; margin-top: 1rem; } }
@media (min-width: 768px) { .bpanel-map { margin-top: 1.5rem; } }
.bpanel-map path { fill: none; stroke: var(--foreground); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.bpanel-map circle { fill: var(--accent); }
.bpanel-stats {
  margin-top: 0.85rem;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.5rem;
}
@media (min-width: 640px) { .bpanel-stats { margin-top: 1.5rem; display: flex; justify-content: space-between; width: 10.75rem; gap: 1rem; } .bpanel-stats > div { text-align: center; } }
.bpanel-stats > div { display: flex; flex-direction: column; gap: 0.625rem; }
.bpanel-stats dt {
  font-size: var(--type-eyebrow); text-transform: uppercase; letter-spacing: -0.04em; white-space: nowrap; line-height: 0.9;
}
.bpanel-stats dd {
  font-family: var(--font-figure); font-weight: 500;
  font-size: var(--type-heading); line-height: 0.72; letter-spacing: -0.08em;
}
.bpanel-stats dd .split { column-gap: 0; justify-content: center; }
@media (max-width: 639px) { .bpanel-stats dd .split { justify-content: flex-start; } }

/* Acciones */
.hero-actions {
  margin-top: auto; padding-top: 0.5rem;
  display: flex; flex-direction: column; gap: 1rem;
}
@media (min-width: 640px) {
  .hero-actions { padding-top: 0; flex-direction: row; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 1rem 1.5rem; }
}
@media (min-width: 1024px) {
  .hero-actions { display: grid; grid-template-columns: 1fr auto 1fr; align-items: end; gap: 1.5rem 2rem; }
}
.hero-trailer { display: none; align-items: center; gap: 0.75rem; }
.hero-trailer svg { width: 2rem; height: 2rem; color: var(--foreground); }
.hero-trailer-text { display: flex; flex-direction: column; gap: 0.375rem; font-size: var(--type-body); text-transform: uppercase; line-height: 0.9; }
.hero-trailer-text b { font-weight: 500; transition: color var(--duration-fast) var(--ease-entrance); }
.hero-trailer-text span { color: var(--foreground-muted); }
.hero-trailer:hover b { color: var(--accent); }
.hero-socials { display: none; justify-content: flex-end; gap: 2rem; font-size: var(--type-body); text-transform: uppercase; }
.hero-socials a { transition: color var(--duration-fast) var(--ease-entrance); }
.hero-socials a:hover { color: var(--accent); }
@media (min-width: 640px) { .hero-trailer, .hero-socials { display: flex; } }
@media (min-width: 1280px) { .hero-socials { gap: 3.6875rem; } }

/* CTA chaflanado */
.cta {
  position: relative; display: flex; align-items: center; justify-content: center; gap: 1.6em;
  font-size: var(--type-title);
  width: 100%; height: 3.5rem;
  color: var(--accent-bright);
  --cta-fill: #0e0f14;
}
@media (min-width: 640px) { .cta { width: 11em; height: 2.5em; } }
.cta-frame { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.cta-body { fill: var(--cta-fill); }
.cta-flood {
  fill: var(--accent-bright); transform-box: fill-box; transform-origin: left; transform: scaleX(0);
  transition: transform var(--duration-normal) var(--ease-plate);
}
.cta-ring { fill: none; stroke: var(--accent-bright); stroke-opacity: 0.25; vector-effect: non-scaling-stroke; }
.cta-brackets { fill: none; stroke: var(--accent-bright); vector-effect: non-scaling-stroke; }
.cta-label {
  position: relative; text-transform: uppercase; line-height: 0.9;
  transition: color var(--duration-normal) var(--ease-plate);
}
.cta-arrow {
  position: relative; width: 0.65em; height: 0.5em; fill: none; stroke: currentColor;
  transition: transform var(--duration-fast) var(--ease-entrance), stroke var(--duration-normal);
}
.cta:hover .cta-flood { transform: scaleX(1); }
.cta:hover { color: #090a0b; }
.cta:hover .cta-arrow { transform: translateX(0.25rem); }

/* =========================================================================
   2 — NUESTRA ESCUELA
   ========================================================================= */
.season {
  container-type: inline-size;
  position: relative; isolation: isolate;
  min-height: var(--season-h, 100lvh);
  overflow: hidden;
  background: var(--surface-black);
  color: var(--foreground-on-dark);
}
@media (max-width: 1023px) {
  .season { --gutter-min: 32px; --type-min: 13px; --copy-min-size: 17px; --copy-min-w: 15rem; --head-min: 9cqw;
    --plate-w: 296px; --plate-h: 82px; --plate-cell: 83px; --plate-badge-gap: 11px; --plate-globe-w: 37px; --plate-globe-h: 23px;
    --plate-stats-left: 16px; --plate-stats-gap: 8px; --plate-eyebrow: 12px; --plate-body: 14px; }
}
@media (max-width: 639px) { .season { --head-min: 56px; --head-air: 20px; --season-h: 680px; } }

.season-frame {
  position: absolute; inset: 0; overflow: hidden;
  -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 10%, #000 90%, transparent 100%);
          mask-image: linear-gradient(to bottom, transparent 0, #000 10%, #000 90%, transparent 100%);
}
@media (max-width: 1023px) { .season-frame { -webkit-mask-image: none; mask-image: none; } }
.season-stage { position: absolute; left: 0; top: 0; width: 1440px; height: 800px; transform-origin: top left; }
.season-stage > * { position: absolute; left: 0; top: 0; width: 1440px; height: 800px; }
.season-map { overflow: visible; }

.checker { position: absolute; left: 0; right: 0; top: 0; width: 100%; height: 34svh; pointer-events: none; z-index: 10; }
@media (max-width: 639px) { .season .checker { z-index: 0; } }

.season-copy {
  position: relative; z-index: 20;
  min-height: var(--season-h, 100lvh);
  display: flex; flex-direction: column; justify-content: space-between;
  padding: 4.8611cqw 1.5rem 2rem;
  pointer-events: none;
}
.season-copy > * { pointer-events: auto; }
@media (min-width: 640px) {
  .season-copy { --season-gutter: max(2.2222cqw, var(--gutter-min, 0px)); padding: max(4.8611cqw, 3.5rem) var(--season-gutter) var(--season-gutter); }
}
.season-left {
  max-width: max(24cqw, 21rem);
}
.season-left .eyebrow { margin-bottom: 0.65rem; }
.season-title {
  font-family: var(--font-display); font-weight: 400; text-transform: uppercase; line-height: 0.92;
  color: var(--accent);
  font-size: max(5.5556cqw, var(--head-min, 0px));
  display: flex; flex-direction: column;
}
.season-title .split { justify-content: flex-start; }
.season-title-last { display: flex; align-items: baseline; }
.season-title .dot { color: var(--foreground-on-dark); }
.season-rule {
  display: block; width: 1.6667cqw; min-width: 24px; height: max(0.1389cqw, 2px); background: var(--accent);
  margin-top: max(1.6667cqw, var(--head-air, 0px)); transform-origin: left;
}
.season-intro {
  margin-top: max(1.85cqw, var(--head-air, 0px));
  width: max(21.5cqw, var(--copy-min-w, 0px));
  font-size: max(1.12cqw, var(--copy-min-size, 15px));
  text-transform: uppercase; line-height: 1.15;
  color: var(--foreground-on-dark);
}

/* Ficha compacta de ubicación en el riel izquierdo */
.loc-grid {
  margin-top: max(1.85cqw, 1.25rem);
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: max(1cqw, 0.75rem) max(1.25cqw, 1rem);
  padding-top: max(1.1cqw, 0.85rem);
  border-top: 1px solid var(--border-on-dark);
  width: max(22.5cqw, 19.5rem);
}
@media (max-width: 479px) {
  .loc-grid { grid-template-columns: 1fr; width: 100%; }
}
.loc-grid > div {
  display: flex; flex-direction: column; gap: 0.3rem;
}
.loc-grid dt {
  font-size: max(0.74cqw, 10.5px);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--accent);
  font-weight: 700;
  line-height: 1;
}
.loc-grid dd {
  font-size: max(0.86cqw, 12px);
  text-transform: uppercase;
  line-height: 1.2;
  color: var(--foreground-on-dark-muted);
}

/* Placa */
.plate {
  position: relative; align-self: flex-end;
  width: var(--plate-w, 21.5cqw); height: var(--plate-h, 5.6cqw);
  display: grid; grid-template-columns: var(--plate-cell, 5.8cqw) 1fr;
}
.plate-frame { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.plate-frame path { fill: var(--surface-black); stroke: var(--accent); stroke-width: 1; vector-effect: non-scaling-stroke; }
.plate-frame line { stroke: var(--accent); stroke-width: 1; vector-effect: non-scaling-stroke; }
.plate-badge {
  position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: var(--plate-badge-gap, 0.7639cqw);
}
.plate-globe {
  width: var(--plate-globe-w, 2.5694cqw); height: var(--plate-globe-h, 1.5972cqw);
  fill: none; stroke: var(--accent); stroke-width: 1; overflow: visible;
}
.plate-globe * { vector-effect: non-scaling-stroke; }
.plate-mark {
  display: flex; gap: 0.3em; text-transform: uppercase; line-height: 0.72; letter-spacing: -0.02em;
  font-size: var(--plate-eyebrow, max(0.8333cqw, var(--type-min, 0px)));
}
.plate-mark .split { column-gap: 0.3em; }
.plate-stats {
  position: relative; display: flex; flex-direction: column; justify-content: center;
  padding-left: var(--plate-stats-left, 1.1111cqw); gap: var(--plate-stats-gap, 0.5556cqw);
  text-transform: uppercase; line-height: 0.72;
  font-size: var(--plate-body, max(0.9722cqw, var(--type-min, 0px)));
}
.plate-stats > div { display: flex; gap: 0.35em; white-space: nowrap; }
.plate-stats dt { color: var(--accent); }
.plate-stats dd { flex: 1; }
.plate-stats .plate-link {
  display: inline-flex; align-items: center; justify-content: space-between; gap: 0.4em; width: 100%;
  transition: color var(--duration-fast) var(--ease-entrance), transform var(--duration-fast) var(--ease-entrance);
}
.plate-stats .plate-link::after {
  content: "→"; font-size: 0.85em; color: var(--accent); opacity: 0.55;
  transition: opacity var(--duration-fast), transform var(--duration-fast);
}
.plate-stats .plate-link:hover { color: var(--accent); transform: translateX(2px); }
.plate-stats .plate-link:hover::after { opacity: 1; transform: translateX(2px); }
.plate-stats .split { column-gap: 0; }

/* =========================================================================
   3 — RECORRIDO
   ========================================================================= */
.tl {
  container-type: inline-size;
  --u: clamp(0.76px, calc(100cqw / 1440), 1.04px);
  position: relative;
  background: var(--surface-black);
  color: var(--foreground-on-dark);
  padding-bottom: 5.5rem;
  overflow: hidden;
}
.tl .checker { z-index: 30; }
.tl-head {
  position: relative; z-index: 2;
  display: grid; grid-template-columns: 1fr 1fr; align-items: end; gap: calc(var(--u) * 48);
  padding: max(calc(var(--u) * 130), 4.75rem) max(calc(var(--u) * 32), 1.5rem) max(calc(var(--u) * 64), 2.25rem);
}
.tl-title {
  font-family: var(--font-display); font-weight: 400; text-transform: uppercase; line-height: 0.92;
  color: var(--accent);
  font-size: max(calc(var(--u) * 72), 44px);
  display: flex; flex-direction: column;
}
.tl-title .split { justify-content: flex-start; }
.tl-dot { color: var(--foreground-on-dark); }
.tl-intro {
  justify-self: end; max-width: max(calc(var(--u) * 340), 16rem);
  font-size: max(calc(var(--u) * 17), 14.5px); text-transform: uppercase; line-height: 1.15;
}
.tl-list { position: relative; }
.tl-rail { position: absolute; top: 0; bottom: 0; left: 50%; width: 1px; background: var(--timeline-rail); z-index: 3; }
.tl-thread { position: absolute; inset: 0; background: var(--foreground-on-dark); transform-origin: top; transform: scaleY(0); }
.tl-marker {
  position: absolute; left: 50%; top: 0;
  width: max(calc(var(--u) * 12), 9px); height: max(calc(var(--u) * 12), 9px);
  background: var(--surface-black); border: 1px solid var(--foreground-on-dark);
  transform: translate(-50%, -50%);
}
.tl-row {
  position: relative;
  display: grid; grid-template-columns: 1fr 1fr;
  min-height: max(calc(var(--u) * 370), 17rem);
  transition: opacity var(--duration-normal) var(--ease-entrance);
}
.tl-list:hover .tl-row:not(:hover) { opacity: 0.32; }
.tl-row:nth-of-type(even) .tl-media { order: 2; }
.tl-media { display: flex; align-items: center; padding: calc(var(--u) * 22) calc(var(--u) * 64); will-change: transform; }
.tl-copy {
  display: flex; flex-direction: column; justify-content: center; align-items: flex-start;
  gap: max(calc(var(--u) * 14), 10px);
  padding: calc(var(--u) * 22) calc(var(--u) * 80);
  will-change: transform;
}
.tl-num {
  font-family: var(--font-figure); font-weight: 500; letter-spacing: -0.04em;
  font-size: max(calc(var(--u) * 36), 28px); line-height: 0.72; color: var(--accent);
}
.tl-num .split { column-gap: 0; }
.tl-name {
  font-family: var(--font-display); font-weight: 400; text-transform: uppercase; line-height: 0.95;
  font-size: max(calc(var(--u) * 60), 38px);
}
.tl-text {
  font-family: var(--font-text); font-size: max(calc(var(--u) * 16), 15px); line-height: 1.55;
  color: var(--foreground-on-dark-muted); max-width: max(calc(var(--u) * 440), 22rem);
}
.tl-meta-pills { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.tl-tag {
  font-size: max(calc(var(--u) * 12), 11px); text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--foreground-on-dark-faint); border: 1px solid var(--border-on-dark); padding: 0.45em 0.7em;
}

/* Placa de esquinas escalonadas */
.tplate {
  --s: max(calc(var(--u) * 22), 12px);
  --inset: max(calc(var(--u) * 14), 8px);
  position: relative; width: 100%; aspect-ratio: 4 / 3;
  background: var(--timeline-outline);
  clip-path: polygon(calc(var(--s) * 2) 0, 100% 0, 100% calc(100% - var(--s) * 2), calc(100% - var(--s)) calc(100% - var(--s) * 2), calc(100% - var(--s)) calc(100% - var(--s)), calc(100% - var(--s) * 2) calc(100% - var(--s)), calc(100% - var(--s) * 2) 100%, 0 100%, 0 calc(var(--s) * 2), var(--s) calc(var(--s) * 2), var(--s) var(--s), calc(var(--s) * 2) var(--s));
}
.tplate-in, .tplate-img { position: absolute; clip-path: inherit; }
.tplate-in { inset: 1px; background: var(--surface-black); }
.tplate-in::after { content: ""; position: absolute; inset: 0; background: var(--timeline-fill); }
.tplate-img {
  inset: var(--inset); overflow: hidden;
  transition: inset var(--duration-plate) var(--ease-plate);
}
.tplate-img img { width: 100%; height: 118%; margin-top: -9%; object-fit: cover; will-change: transform; }
.tl-row:hover .tplate-img { inset: 1px; }

@media (max-width: 767px) {
  .tl-head { grid-template-columns: 1fr; }
  .tl-intro { justify-self: start; }
  .tl-rail { left: 1.25rem; }
  .tl-marker { left: 50%; }
  .tl-row { grid-template-columns: 1fr; padding-left: 2.25rem; min-height: 0; padding-bottom: 3rem; }
  .tl-row:nth-of-type(even) .tl-media { order: 0; }
  .tl-media { padding: 1.5rem 1.25rem 1rem 0.5rem; }
  .tl-copy { padding: 0 1.25rem 0 0.5rem; }
}

/* =========================================================================
   4 — DESDE EL AULA
   ========================================================================= */
.pd {
  container-type: inline-size;
  --u: clamp(0.76px, calc(100cqw / 1440), 1.04px);
  position: relative; isolation: isolate;
  background: var(--background); color: var(--foreground);
  overflow: hidden;
}
.pd .checker { z-index: 30; }
.pd-contours { position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; }
.pd-top {
  position: relative; z-index: 2;
  display: grid; grid-template-columns: 1.05fr 1fr; gap: calc(var(--u) * 56); align-items: start;
  padding: max(calc(var(--u) * 125), 4.75rem) max(calc(var(--u) * 32), 1.5rem) max(calc(var(--u) * 52), 2rem);
}
.pd-left-col {
  display: flex; flex-direction: column; gap: max(calc(var(--u) * 20), 14px);
}
.pd-title {
  font-family: var(--font-display); font-weight: 400; text-transform: uppercase; line-height: 0.88;
  font-size: max(calc(var(--u) * 116), 60px);
  display: flex; flex-direction: column;
}
.pd-title .split { justify-content: flex-start; }

/* Ficha de requisitos bajo el título izquierdo */
.pd-req-box {
  margin-top: max(calc(var(--u) * 18), 0.75rem);
  padding: max(calc(var(--u) * 24), 1.15rem);
  background: color-mix(in srgb, var(--surface-muted) 72%, transparent);
  backdrop-filter: blur(6px);
  border: 1px solid var(--border-muted);
  display: flex; flex-direction: column; gap: 1rem;
  max-width: 36rem;
}
.pd-req-head {
  display: flex; justify-content: space-between; align-items: center; gap: 0.75rem; flex-wrap: wrap;
  padding-bottom: 0.65rem; border-bottom: 1px solid var(--border-muted);
}
.pd-req-tag {
  font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em;
  padding: 0.25em 0.55em; border: 1px solid var(--border-muted); color: var(--foreground-muted);
}
.pd-req-list {
  display: flex; flex-direction: column; gap: 0.55rem;
}
.pd-req-list li {
  display: flex; align-items: baseline; gap: 0.75rem;
  font-family: var(--font-text); font-size: max(calc(var(--u) * 14), 13px); line-height: 1.4;
}
.pd-req-list li span {
  font-family: var(--font-figure); font-size: 0.85em; font-weight: 500;
  color: var(--accent); min-width: 1.6em;
}
.pd-services {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.65rem;
  padding-top: 0.75rem; border-top: 1px solid var(--border-muted);
  font-size: max(calc(var(--u) * 11.5), 11px); text-transform: uppercase; line-height: 1.25;
  color: var(--foreground-muted);
}
.pd-services b { display: block; color: var(--foreground); margin-bottom: 0.15rem; font-weight: 700; }
@media (max-width: 639px) { .pd-services { grid-template-columns: 1fr; } }

.pd-report { display: flex; flex-direction: column; align-items: flex-start; gap: max(calc(var(--u) * 20), 15px); padding-top: calc(var(--u) * 6); }
.pd-headline {
  font-family: var(--font-display); font-weight: 400; text-transform: uppercase; line-height: 0.96;
  font-size: max(calc(var(--u) * 46), 32px); max-width: 15em;
}
.pd-headline .split { column-gap: 0.22em; }
.pd-body { font-family: var(--font-text); font-size: max(calc(var(--u) * 15.5), 14.5px); line-height: 1.58; color: var(--foreground-muted); max-width: 38em; }
[data-theme="light"] .pd-body { color: rgb(9 10 11 / 0.68); }
.pd-news { width: 100%; max-width: 38rem; border-top: 1px solid var(--border-muted); }
.pd-news li {
  display: grid; grid-template-columns: 7.5rem 1fr; gap: 1.15rem; align-items: start;
  padding: 0.95rem 0; border-bottom: 1px solid var(--border-muted);
}
@media (max-width: 639px) { .pd-news li { grid-template-columns: 1fr; gap: 0.35rem; } }
.pd-news-meta { display: flex; flex-direction: column; gap: 0.25rem; text-transform: uppercase; }
.pd-news time { color: var(--accent); font-size: max(calc(var(--u) * 13), 12px); font-weight: 700; line-height: 1; }
.pd-news-cat {
  font-size: 10px; letter-spacing: 0.06em; color: var(--foreground-muted);
}
.pd-news-content { display: flex; flex-direction: column; gap: 0.25rem; }
.pd-news-content b {
  font-size: max(calc(var(--u) * 14.5), 13.5px); text-transform: uppercase; line-height: 1.2;
}
.pd-news-content p {
  font-family: var(--font-text); font-size: max(calc(var(--u) * 13.5), 12.5px); line-height: 1.45;
  color: var(--foreground-muted);
}
[data-theme="light"] .pd-news-content p { color: rgb(9 10 11 / 0.62); }

.pd-cta-row {
  display: flex; align-items: center; gap: 1.75rem; flex-wrap: wrap; margin-top: 0.35rem;
}
.pd-secondary-link {
  font-size: max(calc(var(--u) * 14), 13px); text-transform: uppercase; letter-spacing: 0.04em;
  color: var(--foreground); border-bottom: 1px solid var(--accent); padding-bottom: 0.25rem;
  transition: color var(--duration-fast);
}
.pd-secondary-link:hover { color: var(--accent); }
.cta-dark { margin-top: 0; }
[data-theme="dark"] .cta { --cta-fill: #161b26; }

.pd-photo { position: relative; z-index: 1; height: max(calc(var(--u) * 380), 220px); overflow: hidden; }
.pd-photo img { width: 100%; height: 130%; object-fit: cover; margin-top: -10%; will-change: transform; filter: saturate(0.9); }
.pd-photo::before, .pd-photo::after { content: ""; position: absolute; left: 0; right: 0; pointer-events: none; z-index: 1; }
.pd-photo::before { top: 0; height: 30%; background: linear-gradient(to bottom, var(--background), transparent); }
.pd-photo::after { bottom: 0; height: 65%; background: linear-gradient(to bottom, transparent, color-mix(in srgb, var(--surface-black) 70%, transparent) 55%, var(--surface-black)); }

.pd-band {
  position: relative; z-index: 2;
  background: var(--surface-black); color: var(--foreground-on-dark);
  padding: max(calc(var(--u) * 28), 1.5rem) max(calc(var(--u) * 32), 1.5rem) max(calc(var(--u) * 72), 3rem);
}
.pd-band-head {
  display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem; flex-wrap: wrap;
  margin-bottom: max(calc(var(--u) * 36), 1.5rem);
}
.pd-band-title {
  font-family: var(--font-display); font-weight: 400; text-transform: uppercase;
  font-size: max(calc(var(--u) * 42), 28px); line-height: 0.95; margin-top: 0.35rem;
}
.pd-band-year { font-family: var(--font-figure); font-size: max(calc(var(--u) * 15), 13px); letter-spacing: 0.06em; color: var(--foreground-on-dark-muted); }
.cal { display: flex; align-items: stretch; overflow-x: auto; scrollbar-width: none; padding-bottom: 0.5rem; }
.cal::-webkit-scrollbar { display: none; }
.cal-item {
  flex: 1 0 max(calc(var(--u) * 215), 185px); position: relative;
  display: flex; flex-direction: column; gap: max(calc(var(--u) * 10), 8px);
  padding: max(calc(var(--u) * 20), 14px) max(calc(var(--u) * 20), 14px);
  text-transform: uppercase; line-height: 0.95;
  opacity: 0;
  background: color-mix(in srgb, var(--background) 62%, transparent);
  border: 1px solid var(--border-on-dark);
  color: var(--foreground-on-dark-muted);
}
.cal-top { display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; }
.cal-round { font-family: var(--font-figure); font-size: max(calc(var(--u) * 12), 11px); color: var(--foreground-on-dark-faint); letter-spacing: 0.04em; }
.cal-date { font-family: var(--font-display); font-size: max(calc(var(--u) * 42), 30px); color: var(--foreground-on-dark); line-height: 0.88; margin-top: 0.15rem; }
.cal-name { font-size: max(calc(var(--u) * 14), 13px); font-weight: 700; color: var(--foreground-on-dark); }
.cal-desc {
  font-family: var(--font-text); font-size: max(calc(var(--u) * 12.5), 12px);
  text-transform: none; line-height: 1.42; color: var(--foreground-on-dark-muted);
  margin-top: 0.15rem;
}
.cal-state { display: flex; align-items: center; gap: 0.5em; font-size: max(calc(var(--u) * 10.5), 10px); letter-spacing: 0.06em; color: var(--foreground-on-dark-faint); }
.cal-item.is-live {
  color: var(--foreground-on-dark);
  background: color-mix(in srgb, var(--accent) 9%, var(--background));
  border-color: color-mix(in srgb, var(--accent) 42%, transparent);
}
.cal-item.is-live .cal-state, .cal-item.is-live .cal-round { color: var(--accent); }
.cal-item.is-live .bracket-corner { color: var(--accent); }
.cal-pulse { position: relative; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); display: inline-block; }
.cal-pulse::after { content: ""; position: absolute; inset: -5px; border-radius: 50%; border: 1px solid var(--accent); transform: scale(var(--pulse-s, 0.4)); opacity: var(--pulse-o, 0); }
.cal-link { flex: 0 0 28px; min-width: 24px; align-self: center; height: 2px; }
.cal-link svg { width: 100%; height: 2px; overflow: visible; }
.cal-link line { stroke: var(--foreground-on-dark-faint); stroke-width: 1; stroke-dasharray: 4 4; vector-effect: non-scaling-stroke; }

.pd-band-foot {
  margin-top: max(calc(var(--u) * 44), 2rem);
  padding-top: max(calc(var(--u) * 28), 1.25rem);
  border-top: 1px solid var(--border-on-dark);
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem;
}
@media (max-width: 900px) { .pd-band-foot { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .pd-band-foot { grid-template-columns: 1fr; } }
.pd-band-stat { display: flex; flex-direction: column; gap: 0.3rem; text-transform: uppercase; }
.pd-band-stat span {
  font-family: var(--font-figure); font-weight: 500;
  font-size: max(calc(var(--u) * 28), 22px); line-height: 0.9; color: var(--accent);
}
.pd-band-stat small {
  font-size: max(calc(var(--u) * 11.5), 11px); letter-spacing: 0.04em; color: var(--foreground-on-dark-muted);
}

@media (max-width: 900px) {
  .pd-top { grid-template-columns: 1fr; }
}

/* =========================================================================
   5 — FORJANDO EL FUTURO
   ========================================================================= */
.ft { background: var(--accent); padding: 16px; container-type: inline-size; --u: clamp(0.76px, calc(100cqw / 1440), 1.04px); }
.ft-panel {
  position: relative; isolation: isolate; overflow: hidden;
  min-height: clamp(30rem, 74lvh, 48rem);
  background: var(--surface-black); color: var(--foreground-on-dark);
  display: flex; flex-direction: column;
  padding: max(calc(var(--u) * 48), 2rem) max(calc(var(--u) * 32), 1.25rem) max(calc(var(--u) * 28), 1.25rem);
}
.ft-contours { position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: -1; pointer-events: none; }
.ft-grid { display: grid; grid-template-columns: 1.15fr 1fr; gap: calc(var(--u) * 56); position: relative; z-index: 2; }
.ft-title {
  font-family: var(--font-display); font-weight: 400; text-transform: uppercase; line-height: 0.86;
  font-size: max(calc(var(--u) * 136), 68px); color: var(--accent);
  display: flex; flex-direction: column;
}
.ft-title .split { justify-content: flex-start; }
.ft-dot { color: var(--foreground-on-dark); }
.ft-lead {
  margin-top: max(calc(var(--u) * 32), 1.25rem); max-width: 26em;
  font-family: var(--font-text); font-size: max(calc(var(--u) * 16), 15px); line-height: 1.5; color: var(--foreground-on-dark-muted);
}
.ft-nav { display: grid; grid-template-columns: repeat(3, 1fr); gap: calc(var(--u) * 32); align-content: start; padding-top: calc(var(--u) * 16); }
.ft-col { display: flex; flex-direction: column; gap: max(calc(var(--u) * 14), 11px); align-items: flex-start; }
.ft-col .eyebrow { margin-bottom: max(calc(var(--u) * 10), 6px); }
.ft-col a, .ft-col address {
  font-size: max(calc(var(--u) * 16), 14px); text-transform: uppercase; line-height: 1.1;
  transition: color var(--duration-fast) var(--ease-entrance);
}
.ft-col address { color: var(--foreground-on-dark-muted); font-size: max(calc(var(--u) * 13), 12px); line-height: 1.45; }
.ft-subnote, .ft-hours {
  font-family: var(--font-text); font-size: max(calc(var(--u) * 12.5), 11.5px);
  color: var(--foreground-on-dark-faint); line-height: 1.4;
}
.ft-col a.ft-plain { text-transform: none; font-size: max(calc(var(--u) * 14), 13px); }
.ft-col a:hover { color: var(--accent); }
.ft-col .split { column-gap: 0.3em; }

.ft-figure-wrap {
  position: absolute; right: calc(var(--u) * 96); bottom: calc(var(--u) * -40);
  width: max(calc(var(--u) * 470), 220px); aspect-ratio: 1;
  z-index: 1; pointer-events: none;
}
.ft-figure { width: 100%; height: 100%; object-fit: contain; border-radius: 50%; will-change: transform; filter: drop-shadow(0 30px 60px rgb(0 0 0 / 0.5)); }
.ft-legal {
  position: relative; z-index: 2; margin-top: auto;
  display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap;
  padding-top: 1.25rem; border-top: 1px solid var(--border-on-dark);
  font-size: max(calc(var(--u) * 12), 11px); text-transform: uppercase; color: var(--foreground-on-dark-faint);
}
.ft-top { color: var(--foreground-on-dark); transition: color var(--duration-fast); }
.ft-top:hover { color: var(--accent); }

@media (max-width: 1023px) {
  .ft-grid { grid-template-columns: 1fr; }
  .ft-figure-wrap { opacity: 0.35; right: -40px; }
}
@media (max-width: 639px) {
  .ft-nav { grid-template-columns: 1fr 1fr; row-gap: 2rem; }
  .ft-nav .ft-col:last-child { grid-column: 1 / -1; }
  .ft-legal { margin-top: 18rem; }
}
/* Grupos de acción del Hero y disparador del Orientador Vocacional */
.hero-cta-group {
  display: flex; flex-direction: column; align-items: stretch; gap: 0.75rem;
}
@media (min-width: 640px) {
  .hero-cta-group { flex-direction: row; align-items: flex-end; gap: 0.9rem; }
}
.hero-siga-stack {
  display: flex; flex-direction: column; align-items: stretch; gap: 0.35rem;
}
@media (min-width: 640px) {
  .hero-siga-stack { align-items: center; }
  .hero-siga-kicker { max-width: 17.5rem; text-wrap: balance; }
}
.hero-siga-kicker {
  display: inline-block; text-align: center;
  padding: 0.24rem 0.55rem;
  font-size: clamp(0.6rem, 0.7vw, 0.68rem); font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.08em; line-height: 1.2;
  color: var(--foreground-muted);
  border: 1px solid var(--border-muted);
  background: color-mix(in srgb, var(--background) 84%, transparent);
  backdrop-filter: blur(6px);
}
[data-theme="light"] .hero-siga-kicker { color: rgb(9 10 11 / 0.78); }
.hero-quiz-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.55rem;
  height: 3.1rem; padding: 0 1.15rem;
  font-size: clamp(0.76rem, 0.85vw, 0.85rem); font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--foreground);
  border: 1px solid var(--border-muted);
  background: color-mix(in srgb, var(--background) 82%, transparent);
  backdrop-filter: blur(8px);
  transition: border-color var(--duration-fast) var(--ease-entrance), color var(--duration-fast) var(--ease-entrance), background var(--duration-fast);
}
@media (min-width: 640px) { .hero-quiz-btn { height: 2.5em; font-size: var(--type-title); padding: 0 1.2em; } }
.hero-quiz-btn:hover {
  border-color: var(--accent); color: var(--accent);
  background: color-mix(in srgb, var(--accent) 8%, var(--background));
}
.season-quiz-btn {
  display: inline-flex; align-items: center; gap: 0.5rem; margin-top: 0.35rem;
  padding: 0.58rem 0.95rem;
  border: 1px solid color-mix(in srgb, var(--accent) 55%, var(--border-on-dark));
  background: color-mix(in srgb, var(--surface-black) 78%, transparent);
  color: var(--foreground-on-dark);
  font-size: max(0.75cqw, 11px); font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em;
  transition: border-color var(--duration-fast), background var(--duration-fast), color var(--duration-fast);
}
.season-quiz-btn:hover {
  border-color: var(--accent-bright); color: var(--accent-bright);
  background: color-mix(in srgb, var(--accent) 16%, var(--surface-black));
}

/* =========================================================================
   MODAL COMPARTIDO — ORIENTADOR VOCACIONAL ("¿Qué carrera elegir?")
   ========================================================================= */
html.or-locked { overflow: hidden; }
.or-modal {
  position: fixed; inset: 0; z-index: 120;
  display: grid; place-items: center; padding: 1.25rem;
  opacity: 0; pointer-events: none;
  transition: opacity 220ms var(--ease-entrance);
}
.or-modal[hidden] { display: none; }
.or-modal.is-open { opacity: 1; pointer-events: auto; }
.or-backdrop {
  position: absolute; inset: 0;
  background: rgb(6 8 13 / 0.78);
  backdrop-filter: blur(8px);
}
.or-dialog {
  position: relative; z-index: 1;
  width: min(56rem, 100%); max-height: calc(100svh - 2.5rem); overflow-y: auto;
  background: var(--surface-black); color: var(--foreground-on-dark);
  border: 1px solid var(--border-on-dark);
  padding: clamp(1.35rem, 3.2vw, 2.5rem);
  transform: translateY(10px) scale(0.985);
  transition: transform 240ms var(--ease-entrance);
}
.or-modal.is-open .or-dialog { transform: translateY(0) scale(1); }
.or-modal[data-winner="telematica"] { --or-accent: var(--accent-bright); }
.or-modal[data-winner="aduanas"] { --or-accent: var(--gold); }
.or-modal[data-winner="turismo"] { --or-accent: var(--laurel); }
.or-modal { --or-accent: var(--accent-bright); }

.or-head {
  display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem;
  padding-bottom: 1rem; margin-bottom: 1.25rem;
  border-bottom: 1px solid var(--border-on-dark);
}
.or-head-sub {
  margin-top: 0.35rem; font-family: var(--font-text);
  font-size: 0.85rem; line-height: 1.45; color: var(--foreground-on-dark-muted);
}
.or-close {
  width: 2.25rem; height: 2.25rem; flex-shrink: 0;
  display: grid; place-items: center;
  border: 1px solid var(--border-on-dark);
  font-size: 1.35rem; line-height: 1; color: var(--foreground-on-dark);
  transition: border-color var(--duration-fast), color var(--duration-fast);
}
.or-close:hover { border-color: var(--or-accent); color: var(--or-accent); }

.or-prog-row {
  display: flex; justify-content: space-between; align-items: center; gap: 1rem;
  margin-bottom: 0.65rem; font-size: 0.76rem; text-transform: uppercase;
  letter-spacing: 0.08em; color: var(--foreground-on-dark-muted);
}
.or-track { width: 100%; height: 3px; background: var(--border-on-dark); margin-bottom: 1.5rem; overflow: hidden; }
.or-fill { height: 100%; background: var(--or-accent); transition: width 260ms var(--ease-entrance); }
.or-q {
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(1.75rem, 3.4vw, 2.55rem); line-height: 0.98;
  text-transform: uppercase; margin-bottom: 1.25rem;
}
.or-opts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.85rem; }
@media (max-width: 767px) { .or-opts { grid-template-columns: 1fr; } }
.or-opt {
  text-align: left; padding: 1.05rem 1.1rem;
  border: 1px solid var(--border-on-dark);
  background: rgb(255 255 255 / 0.02);
  display: flex; flex-direction: column; gap: 0.4rem;
  transition: border-color var(--duration-fast), transform var(--duration-fast), background var(--duration-fast);
}
.or-opt:hover {
  border-color: var(--or-accent); transform: translateY(-2px);
  background: color-mix(in srgb, var(--or-accent) 12%, transparent);
}
.or-opt-key { font-family: var(--font-figure); font-size: 0.85rem; color: var(--or-accent); }
.or-opt-txt { font-family: var(--font-text); font-size: 0.88rem; line-height: 1.45; }

.or-foot {
  margin-top: 1.25rem; display: flex; justify-content: space-between; align-items: center;
  flex-wrap: wrap; gap: 0.85rem;
}
.or-navbtn {
  font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em;
  color: var(--foreground-on-dark-muted); transition: color var(--duration-fast);
}
.or-navbtn:hover:not(:disabled) { color: var(--foreground-on-dark); }
.or-navbtn:disabled { opacity: 0.35; cursor: default; }

.or-res-eyebrow { color: var(--or-accent); }
.or-result-title {
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(2.1rem, 4.2vw, 3.2rem); line-height: 0.95;
  text-transform: uppercase; margin-top: 0.35rem;
}
.or-tie-note {
  margin-top: 0.55rem; font-family: var(--font-text); font-size: 0.86rem;
  color: var(--gold);
}
.or-result-desc {
  margin-top: 0.75rem; font-family: var(--font-text); font-size: 0.92rem;
  line-height: 1.55; color: var(--foreground-on-dark-muted); max-width: 40rem;
}
.or-bars { margin-top: 1.35rem; display: flex; flex-direction: column; gap: 0.8rem; }
.or-bar-row {
  display: grid; grid-template-columns: 7rem 1fr 3rem; align-items: center;
  gap: 0.8rem; font-size: 0.8rem; text-transform: uppercase;
}
.or-bar-track { height: 8px; background: var(--border-on-dark); overflow: hidden; }
.or-bar-fill { height: 100%; background: var(--accent-bright); transition: width 520ms var(--ease-plate); }
.or-bar-row[data-m="aduanas"] .or-bar-fill { background: var(--gold); }
.or-bar-row[data-m="turismo"] .or-bar-fill { background: var(--laurel); }
.or-result-actions {
  margin-top: 1.6rem; display: flex; flex-wrap: wrap; align-items: center; gap: 1rem;
}
.or-dialog .cta {
  --cta-fill: #161b26;
  width: auto;
  min-width: 12.5em;
  padding-inline: 1.6em;
}
@media (max-width: 639px) { .or-dialog .cta { width: 100%; } }
.or-btn-muted {
  font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.06em;
  padding: 0.82rem 1.05rem; border: 1px solid var(--border-on-dark);
  color: var(--foreground-on-dark-muted); transition: border-color var(--duration-fast), color var(--duration-fast);
}
.or-btn-muted:hover { border-color: var(--or-accent); color: var(--foreground-on-dark); }

.ft-grid + .ft-figure-wrap ~ .ft-legal { min-height: 0; }
.ft-panel::after { content: ""; flex: 1 0 max(calc(var(--u) * 140), 72px); order: 1; }
.ft-legal { order: 2; }
