/* ==========================================================================
   EXPODRON CHILE 2027 · Sistema visual "Carta de Vuelo"
   Paleta y tipografía según Manual de Identidad Digital v1.0
   ========================================================================== */

:root {
  --navy: #071B33;
  --navy-2: #0B2845;
  --navy-3: #12355A;
  --azul: #0A75C2;
  --cyan: #16B9F3;
  --rojo: #E3293C;
  --ambar: #F4B223;
  --blanco: #FFFFFF;
  --ice: #F2F6FA;
  --grafito: #202833;
  --gris: #5B6778;
  --linea: #D5DFEA;
  --linea-osc: rgba(255, 255, 255, .12);

  /* Áreas de interés */
  --area-civil: #16B9F3;
  --area-seg: #F4B223;
  --area-aire: #7FD4A8;

  --f-titulo: "Montserrat", Arial, Helvetica, sans-serif;
  --f-texto: "Inter", Arial, Helvetica, sans-serif;

  --ancho: 1240px;
  --gutter: clamp(16px, 4vw, 40px);
  --header-h: 72px;
  --notch: 14px;
}

*, *::before, *::after { box-sizing: border-box; }
html { overflow-x: clip; scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { animation: none !important; transition: none !important; } }

body {
  margin: 0;
  font-family: var(--f-texto);
  font-size: 17px;
  line-height: 1.6;
  color: var(--grafito);
  background: var(--ice);
  overflow-x: clip;
}
img { max-width: 100%; display: block; }
a { color: var(--azul); }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible {
  outline: 3px solid var(--ambar); outline-offset: 3px;
}
h1, h2, h3, h4 { font-family: var(--f-titulo); line-height: 1.08; letter-spacing: -.02em; margin: 0 0 .5em; }
h1 { font-weight: 800; font-size: clamp(2.6rem, 7vw, 5.6rem); }
h2 { font-weight: 800; font-size: clamp(2rem, 4.4vw, 3.4rem); }
h3 { font-weight: 700; font-size: clamp(1.2rem, 2vw, 1.5rem); letter-spacing: -.01em; }
p { margin: 0 0 1em; }
[hidden] { display: none !important; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: absolute; left: -999px; top: 8px; z-index: 100; background: var(--ambar); color: var(--navy); padding: 10px 16px; font-weight: 700; }
.skip:focus { left: 8px; }

.wrap { max-width: var(--ancho); margin: 0 auto; padding: 0 var(--gutter); }
.section { padding: clamp(72px, 10vw, 128px) 0; position: relative; }
.dark { background: var(--navy); color: #DCE6F2; }
.dark h2, .dark h3 { color: var(--blanco); }
.dark a { color: var(--cyan); }
.ice { background: var(--ice); }
.white { background: var(--blanco); }

/* Retícula de carta aeronáutica en fondos oscuros */
.chart-grid {
  background-image:
    linear-gradient(var(--linea-osc) 1px, transparent 1px),
    linear-gradient(90deg, var(--linea-osc) 1px, transparent 1px);
  background-size: 96px 96px;
  background-position: -1px -1px;
}
.chart-grid.faint { background-image:
    linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px); }

/* Etiqueta de waypoint que abre cada sección */
.wp {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  font-family: var(--f-texto); font-weight: 600; font-size: .78rem;
  letter-spacing: .14em; text-transform: uppercase; color: var(--azul);
  margin-bottom: 22px;
}
.dark .wp { color: var(--cyan); }
.wp b { font-weight: 700; padding: 3px 8px; border: 1px solid currentColor; letter-spacing: .1em; }
.wp i { font-style: normal; opacity: .7; letter-spacing: .06em; }
.wp::after { content: ""; flex: 1 1 40px; height: 1px; background: currentColor; opacity: .3; min-width: 40px; }

.lead { font-size: clamp(1.1rem, 1.6vw, 1.3rem); line-height: 1.55; max-width: 60ch; }
.muted { color: var(--gris); }
.dark .muted { color: #9FB3C8; }

/* Subrayado a mano: trazo de rotulador ámbar (toque humano) */
.mark { position: relative; white-space: nowrap; z-index: 0; }
.mark svg { position: absolute; left: -4%; bottom: -.18em; width: 108%; height: .5em; z-index: -1; overflow: visible; }
.mark path { fill: none; stroke: var(--ambar); stroke-width: 7; stroke-linecap: round; stroke-dasharray: 400; stroke-dashoffset: 400; transition: stroke-dashoffset 1.1s cubic-bezier(.6,.1,.2,1) .3s; }
.mark.on path { stroke-dashoffset: 0; }
.circle-mark { position: relative; display: inline-block; }
.circle-mark svg { position: absolute; inset: -30% -14%; width: 128%; height: 160%; overflow: visible; pointer-events: none; }
.circle-mark path { fill: none; stroke: var(--ambar); stroke-width: 2.4; stroke-linecap: round; stroke-dasharray: 600; stroke-dashoffset: 600; transition: stroke-dashoffset 1.4s ease .5s; }
.circle-mark.on path { stroke-dashoffset: 0; }

/* ---------- Botones: etiqueta aeronáutica con esquina recortada ---------- */
.btn {
  --bg: var(--cyan); --fg: var(--navy);
  display: inline-flex; align-items: center; gap: 10px; min-height: 48px;
  padding: 12px 24px 12px 22px; border: 0; cursor: pointer;
  background: var(--bg); color: var(--fg); text-decoration: none;
  font-family: var(--f-texto); font-weight: 700; font-size: .95rem; letter-spacing: .04em; text-transform: uppercase;
  clip-path: polygon(0 0, calc(100% - var(--notch)) 0, 100% var(--notch), 100% 100%, 0 100%);
  transition: background .2s, transform .2s;
}
.btn:hover { background: #4FCBF6; transform: translateY(-2px); }
.btn .arr { transition: transform .2s; }
.btn:hover .arr { transform: translateX(4px); }
.btn.ghost { --bg: transparent; --fg: var(--blanco); box-shadow: inset 0 0 0 1.5px rgba(255,255,255,.5); clip-path: none; }
.btn.ghost:hover { background: rgba(255,255,255,.08); }
.btn.navy { --bg: var(--navy); --fg: var(--blanco); }
.btn.navy:hover { background: var(--navy-3); }
.btn.line { --bg: transparent; --fg: var(--navy); box-shadow: inset 0 0 0 1.5px var(--navy); clip-path: none; }
.btn.line:hover { background: var(--navy); color: var(--blanco); }
.btn.amber { --bg: var(--ambar); --fg: var(--navy); }
.btn.amber:hover { background: #F7C555; }
a.btn, .dark a.btn, .nav a.btn, .final a.btn, .page-head a.btn { color: var(--fg); }
.nav a.btn:hover { color: var(--fg); }
.btns { display: flex; flex-wrap: wrap; gap: 14px; }

/* ---------- Header ---------- */
.site-header {
  position: sticky; top: 0; z-index: 50; height: var(--header-h);
  background: rgba(7, 27, 51, .96);
  border-bottom: 1px solid var(--linea-osc); color: var(--blanco);
}
.site-header .wrap { height: 100%; display: flex; align-items: center; gap: 24px; }
.brand { display: flex; align-items: center; gap: 12px; text-decoration: none; color: var(--blanco); flex-shrink: 0; }
.brand img { height: 26px; width: auto; }
.brand span { font-size: .68rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: #9FB3C8; border-left: 1px solid var(--linea-osc); padding-left: 12px; line-height: 1.25; }
.nav { margin-left: auto; display: flex; align-items: center; gap: 4px; }
.nav a { color: #DCE6F2; text-decoration: none; font-size: .88rem; font-weight: 500; padding: 8px 10px; position: relative; white-space: nowrap; }
.nav a:hover, .nav a[aria-current="page"] { color: var(--blanco); }
.nav a[aria-current="page"]::after { content: ""; position: absolute; left: 10px; right: 10px; bottom: 0; height: 2px; background: var(--cyan); }
.nav a.seg { color: var(--ambar); }
.nav .btn { margin-left: 10px; min-height: 44px; padding: 10px 18px; font-size: .8rem; }
.lang { white-space: nowrap; font-size: .75rem; font-weight: 600; letter-spacing: .1em; color: #9FB3C8; border: 1px solid var(--linea-osc); padding: 6px 8px; margin-left: 6px; }
.lang b { color: var(--blanco); }
.nav a.lang { padding: 6px 8px; font-size: .75rem; }
.nav a.lang:hover { border-color: var(--cyan); color: var(--blanco); }
.burger { display: none; margin-left: auto; background: none; border: 1px solid var(--linea-osc); color: var(--blanco); width: 48px; height: 44px; cursor: pointer; }
.burger span { display: block; width: 20px; height: 2px; background: currentColor; margin: 4px auto; transition: transform .2s, opacity .2s; }
@media (max-width: 1440px) { .brand span { display: none; } .nav a { padding: 8px 7px; font-size: .85rem; } .lang { display: none; } }
[id] { scroll-margin-top: calc(var(--header-h) + 8px); }
@media (max-width: 1240px) {
  .lang { display: inline-block; }
  .burger { display: block; }
  .nav { position: fixed; inset: var(--header-h) 0 0 0; background: var(--navy); flex-direction: column; align-items: stretch; padding: 24px var(--gutter); gap: 0; transform: translateX(100%); visibility: hidden; transition: transform .3s, visibility 0s .3s; overflow-y: auto; }
  .nav.open { transform: none; visibility: visible; transition: transform .3s; }
  .nav a { font-size: 1.15rem; padding: 16px 0; border-bottom: 1px solid var(--linea-osc); }
  .nav a[aria-current="page"]::after { display: none; }
  .nav .btn { margin: 24px 0 0; justify-content: center; min-height: 52px; }
  .lang { align-self: flex-start; margin: 18px 0 0; }
  .burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
  .burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
  .burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
  .brand span { display: none; }
}

/* ---------- Hero ---------- */
.hero { position: relative; min-height: calc(100svh - var(--header-h)); display: flex; align-items: stretch; overflow: hidden; background: var(--navy); color: var(--blanco); }
.hero canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(90deg, rgba(7,27,51,.92) 0%, rgba(7,27,51,.7) 38%, rgba(7,27,51,0) 70%), linear-gradient(0deg, rgba(7,27,51,.9) 0%, rgba(7,27,51,0) 35%); }
.hero .wrap { position: relative; z-index: 2; display: grid; grid-template-columns: 1fr; align-content: end; padding-top: 56px; padding-bottom: 40px; width: 100%; }
.hero-kicker { font-size: .8rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: var(--cyan); margin-bottom: 18px; display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.hero-kicker .flag { display: inline-block; width: 28px; height: 4px; background: linear-gradient(90deg, var(--azul) 50%, var(--rojo) 50%); }
.hero h1 { color: var(--blanco); max-width: 14ch; margin-bottom: 20px; }
.hero h1 em { font-style: normal; color: var(--cyan); }
.hero .lead { color: #C9D7E6; margin-bottom: 32px; }
.alt-ladder { position: absolute; left: 0; top: 0; bottom: 0; width: 56px; z-index: 2; border-right: 1px solid var(--linea-osc); display: flex; flex-direction: column; justify-content: space-between; padding: 24px 0 110px; font-size: .64rem; font-weight: 600; color: #7F95AD; letter-spacing: .06em; text-align: right; }
.alt-ladder span { padding-right: 8px; position: relative; }
.alt-ladder span::after { content: ""; position: absolute; right: -1px; top: 50%; width: 6px; height: 1px; background: #7F95AD; }
.alt-ladder .cap { color: var(--ambar); }
@media (max-width: 720px) { .alt-ladder { display: none; } }
@media (min-width: 721px) { .hero .wrap { padding-left: calc(var(--gutter) + 56px); } }

/* Tira de progreso de vuelo (flight progress strip) */
.strip {
  margin-top: 48px; display: grid; grid-template-columns: 10px 1.3fr 1fr 1fr 1.4fr; background: #F7F9FB; color: var(--grafito);
  border: 1px solid #C8D3DF; box-shadow: 0 24px 60px -30px rgba(0,0,0,.6); max-width: 980px; position: relative;
}
.strip > div { padding: 12px 16px; border-left: 1px solid #C8D3DF; min-width: 0; }
.strip .bar { background: var(--cyan); padding: 0; border: 0; }
.strip small { display: block; font-size: .64rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--gris); }
.strip strong { display: block; font-family: var(--f-titulo); font-size: 1.15rem; font-weight: 800; color: var(--navy); letter-spacing: -.01em; line-height: 1.25; }
.strip .cd strong { font-variant-numeric: tabular-nums; }
.strip .note { font-size: .78rem; color: var(--gris); }
@media (max-width: 820px) {
  .strip { grid-template-columns: 8px 1fr 1fr; }
  .strip > div:nth-child(4) { border-left: 0; border-top: 1px solid #C8D3DF; grid-column: 2; }
  .strip > div:nth-child(5) { border-top: 1px solid #C8D3DF; grid-column: 3; }
  .strip .bar { grid-row: span 2; }
}

/* ---------- Pilares (EXPO / ACADEMY / LIVE) ---------- */
.pillars { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--linea); }
.pillar { padding: 36px 32px 36px 0; border-right: 1px solid var(--linea); position: relative; }
.pillar + .pillar { padding-left: 32px; }
.pillar:last-child { border-right: 0; }
.pillar .n { font-family: var(--f-titulo); font-weight: 800; font-size: .85rem; color: var(--azul); letter-spacing: .1em; }
.pillar h3 { font-size: clamp(1.6rem, 2.6vw, 2.2rem); font-weight: 800; margin: 10px 0 12px; color: var(--navy); }
.pillar h3 span { color: var(--azul); }
.pillar ul { list-style: none; padding: 0; margin: 18px 0 0; font-size: .93rem; }
.pillar li { padding: 8px 0; border-top: 1px dashed var(--linea); }
.pillar a.more { display: inline-block; margin-top: 18px; font-weight: 700; font-size: .85rem; letter-spacing: .06em; text-transform: uppercase; text-decoration: none; }
@media (max-width: 860px) { .pillars { grid-template-columns: 1fr; } .pillar, .pillar + .pillar { padding: 28px 0; border-right: 0; border-bottom: 1px solid var(--linea); } }

/* ---------- Tres áreas de interés ---------- */
.areas { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--linea-osc); border: 1px solid var(--linea-osc); margin-top: 48px; }
.area { background: var(--navy); padding: 32px 28px 28px; display: flex; flex-direction: column; min-height: 420px; position: relative; text-decoration: none; color: #C9D7E6; transition: background .25s; }
.area:hover { background: var(--navy-2); }
.area .code { font-size: .72rem; font-weight: 700; letter-spacing: .16em; color: var(--c); display: flex; justify-content: space-between; }
.area svg.glyph { width: 88px; height: 88px; margin: 30px 0 26px; color: var(--c); }
.area h3 { color: var(--blanco); font-size: 1.55rem; }
.area p { font-size: .95rem; }
.area .tags { margin-top: auto; display: flex; flex-wrap: wrap; gap: 6px; padding-top: 18px; }
.tag { font-size: .7rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; padding: 4px 8px; border: 1px solid currentColor; opacity: .85; }
.area .go { position: absolute; right: 24px; bottom: 24px; color: var(--c); font-weight: 700; }
.area::before { content: ""; position: absolute; left: 0; top: 0; width: 100%; height: 3px; background: var(--c); transform: scaleX(.18); transform-origin: left; transition: transform .35s; }
.area:hover::before { transform: scaleX(1); }
.dark a.area { color: #C9D7E6; }
.area::before { z-index: 3; }
/* Foto real 2025 en cada área: monocroma teñida con el color del área; a color al pasar el cursor */
.area .ph { margin: -32px -28px 22px; aspect-ratio: 16/10; position: relative; overflow: hidden; background: var(--navy-2); }
.area .ph img { width: 100%; height: 100%; object-fit: cover; display: block; filter: grayscale(1) contrast(1.08) brightness(.8); transition: filter .5s, transform .8s; }
.area .ph::before { content: ""; position: absolute; inset: 0; background: var(--c); mix-blend-mode: color; opacity: .55; transition: opacity .5s; z-index: 1; }
.area .ph::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(7,27,51,0) 45%, var(--navy) 100%); z-index: 1; }
.area .ph svg.glyph { position: absolute; left: 24px; bottom: 6px; width: 64px; height: 64px; margin: 0; z-index: 2; }
.area:hover .ph img { filter: none; transform: scale(1.04); }
.area:hover .ph::before { opacity: 0; }
.area:hover .ph::after { background: linear-gradient(180deg, rgba(10,38,69,0) 45%, var(--navy-2) 100%); }
.area .code + h3 { margin-top: 12px; }
@media (prefers-reduced-motion: reduce) { .area .ph img { transition: none; } }
@media (max-width: 900px) { .areas { grid-template-columns: 1fr; } .area { min-height: 0; } }

/* ---------- Dos columnas genéricas ---------- */
.split { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(32px, 6vw, 96px); align-items: start; }
.split.rev { grid-template-columns: 7fr 5fr; }
@media (max-width: 900px) { .split, .split.rev { grid-template-columns: 1fr; } }

/* Lista de valor con numeración aeronáutica */
.checklist { list-style: none; padding: 0; margin: 0; counter-reset: c; }
.checklist li { counter-increment: c; display: grid; grid-template-columns: 56px 1fr; gap: 16px; padding: 22px 0; border-top: 1px solid var(--linea); }
.dark .checklist li { border-color: var(--linea-osc); }
.checklist li::before { content: counter(c, decimal-leading-zero); font-family: var(--f-titulo); font-weight: 800; font-size: 1.1rem; color: var(--azul); }
.dark .checklist li::before { color: var(--cyan); }
.checklist h4 { font-size: 1.1rem; margin: 0 0 4px; color: inherit; }
.dark .checklist h4 { color: var(--blanco); }
.checklist p { margin: 0; font-size: .95rem; }

/* Sectores como fila de radiofrecuencias */
.sectors { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 0; border-top: 1px solid var(--linea); border-left: 1px solid var(--linea); margin-top: 40px; }
.sectors div { padding: 20px 20px 22px; border-right: 1px solid var(--linea); border-bottom: 1px solid var(--linea); background: var(--blanco); font-weight: 600; color: var(--navy); font-size: .98rem; line-height: 1.35; }
.sectors div small { display: block; font-size: .68rem; letter-spacing: .14em; color: var(--gris); font-weight: 700; margin-bottom: 8px; }
.sectors div.hl { background: #FFF8E6; }
.sectors div.hl small { color: #9A6B00; }

/* Bloque de fotografía real (slot) */
.photo { position: relative; background: var(--navy-2); aspect-ratio: 4/3; overflow: hidden; }
.photo.tall { aspect-ratio: 3/4; }
.photo.wide { aspect-ratio: 16/9; }
.photo img { width: 100%; height: 100%; object-fit: cover; }
.photo .slot { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; padding: 20px; color: #9FB3C8; font-size: .82rem; line-height: 1.4;
  background: radial-gradient(circle at 70% 30%, rgba(22,185,243,.18), transparent 55%), repeating-linear-gradient(135deg, rgba(255,255,255,.035) 0 2px, transparent 2px 14px), var(--navy-2); }
.photo .slot b { color: var(--blanco); font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; display: block; margin-bottom: 6px; }
.photo .cap { position: absolute; left: 0; bottom: 0; background: var(--navy); color: var(--blanco); font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; padding: 8px 12px; font-weight: 600; }
.corners::before, .corners::after { content: ""; position: absolute; width: 18px; height: 18px; border: 2px solid var(--cyan); z-index: 2; }
.corners::before { top: 10px; left: 10px; border-right: 0; border-bottom: 0; }
.corners::after { top: 10px; right: 10px; border-left: 0; border-bottom: 0; }

/* Nota manuscrita del director */
.letter { background: var(--blanco); border: 1px solid var(--linea); padding: clamp(28px, 4vw, 48px); position: relative; max-width: 780px; }
.letter::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: linear-gradient(var(--azul) 50%, var(--rojo) 50%); }
.letter p { font-size: 1.08rem; }
.letter .sig { margin-top: 26px; display: flex; align-items: center; gap: 16px; }
.letter .sig svg { width: 150px; height: 48px; color: var(--navy); }
.letter .sig img { width: 140px; height: auto; flex-shrink: 0; }
.letter .sig div { font-size: .85rem; line-height: 1.35; }
.letter .sig b { display: block; font-size: .95rem; color: var(--navy); }

/* UTM / AAM: vista de volúmenes */
.airspace { position: relative; border: 1px solid var(--linea-osc); aspect-ratio: 16/10; background: var(--navy-2); overflow: hidden; }
.airspace svg { width: 100%; height: 100%; }
.legend { display: flex; flex-wrap: wrap; gap: 18px; margin-top: 14px; font-size: .8rem; color: #9FB3C8; }
.legend i { display: inline-block; width: 18px; height: 3px; vertical-align: middle; margin-right: 6px; }

/* Disclaimer operacional (fórmula de autorización) */
.notam { display: grid; grid-template-columns: auto 1fr; gap: 16px; border: 1px solid var(--ambar); background: rgba(244,178,35,.08); padding: 18px 20px; font-size: .9rem; margin-top: 28px; }
.notam b.k { font-size: .72rem; letter-spacing: .16em; color: var(--ambar); font-weight: 800; padding-top: 2px; }
.ice .notam b.k, .white .notam b.k { color: #8A5E00; }
.ice .notam, .white .notam { border-color: #D99A12; }

/* Timeline de la red / workshops */
.timeline { position: relative; margin-top: 48px; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 0; border-top: 2px solid var(--navy); }
.timeline .t { padding: 22px 18px 8px 0; position: relative; }
.timeline .t::before { content: ""; position: absolute; top: -8px; left: 0; width: 14px; height: 14px; background: var(--ice); border: 2px solid var(--navy); transform: rotate(45deg); }
.timeline .t.live::before { background: var(--cyan); border-color: var(--cyan); }
.timeline .t.ev::before { background: var(--rojo); border-color: var(--rojo); }
.timeline small { font-size: .72rem; font-weight: 700; letter-spacing: .14em; color: var(--azul); text-transform: uppercase; }
.timeline h4 { font-family: var(--f-titulo); font-size: 1.05rem; margin: 6px 0 6px; color: var(--navy); }
.timeline p { font-size: .88rem; color: var(--gris); margin: 0; }

/* Tarjetas simples */
.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 20px; margin-top: 40px; }
.card { background: var(--blanco); border: 1px solid var(--linea); padding: 28px 26px; position: relative; display: flex; flex-direction: column; }
.card .k { font-size: .7rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--azul); margin-bottom: 14px; }
.card h3 { color: var(--navy); }
.card p { font-size: .95rem; color: var(--gris); }
.card .foot { margin-top: auto; padding-top: 14px; font-size: .82rem; font-weight: 600; color: var(--navy); border-top: 1px dashed var(--linea); }
.dark .card { background: var(--navy-2); border-color: var(--linea-osc); }
.dark .card h3 { color: var(--blanco); }
.dark .card p { color: #A9BBCE; }
.dark .card .k { color: var(--ambar); }
.dark .card .foot { color: #DCE6F2; border-color: var(--linea-osc); }

/* Formatos de participación (sin precios: Rate Card contra formulario) */
.formats { width: 100%; border-collapse: collapse; margin-top: 36px; font-size: .95rem; background: var(--blanco); }
.formats th, .formats td { text-align: left; padding: 16px 18px; border-bottom: 1px solid var(--linea); vertical-align: top; }
.formats th { font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--gris); background: var(--ice); }
.formats td:first-child { font-family: var(--f-titulo); font-weight: 800; color: var(--navy); white-space: nowrap; }
.formats td.m2 { font-variant-numeric: tabular-nums; font-weight: 600; white-space: nowrap; }
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }

/* ---------- Formularios ---------- */
.form { background: var(--blanco); border: 1px solid var(--linea); padding: clamp(24px, 4vw, 44px); }
.form .grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 20px; }
.form .full { grid-column: 1 / -1; }
@media (max-width: 640px) { .form .grid { grid-template-columns: 1fr; } }
.field label, .field legend { display: block; font-size: .8rem; font-weight: 600; color: var(--navy); margin-bottom: 6px; letter-spacing: .02em; }
.field label .req, .field legend .req { color: var(--rojo); }
.field input, .field select, .field textarea {
  width: 100%; min-height: 48px; padding: 12px 14px; font: inherit; font-size: 1rem; color: var(--grafito);
  background: var(--ice); border: 1px solid #C5D2E0; border-bottom: 2px solid var(--navy); border-radius: 0;
}
.field textarea { min-height: 120px; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus { background: var(--blanco); border-color: var(--azul); }
.field fieldset { border: 0; padding: 0; margin: 0; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chips label { display: inline-flex; align-items: center; gap: 8px; margin: 0; min-height: 44px; padding: 8px 14px; border: 1px solid #C5D2E0; background: var(--ice); cursor: pointer; font-weight: 500; font-size: .9rem; color: var(--grafito); }
.chips input { width: 18px; height: 18px; min-height: 0; accent-color: var(--azul); }
.chips label:has(input:checked) { border-color: var(--azul); background: #E3F2FC; color: var(--navy); font-weight: 600; }
.consent { display: flex; gap: 12px; align-items: flex-start; font-size: .88rem; color: var(--gris); }
.consent input { width: 22px; height: 22px; min-height: 0; margin-top: 2px; accent-color: var(--azul); flex-shrink: 0; }
.form .ok { display: none; border-left: 4px solid var(--cyan); background: #E3F6FD; padding: 18px 20px; color: var(--navy); }
.form.sent .ok { display: block; }
.form.sent .grid, .form.sent .submit-row { display: none; }
.submit-row { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; margin-top: 26px; }
.submit-row small { color: var(--gris); font-size: .8rem; max-width: 42ch; }
.err { color: var(--rojo); font-size: .8rem; margin-top: 4px; display: none; }
.field.bad .err { display: block; }
.field.bad input, .field.bad select { border-bottom-color: var(--rojo); }

/* ---------- Encabezado de página interna ---------- */
.page-head { background: var(--navy); color: var(--blanco); padding: clamp(56px, 8vw, 104px) 0 clamp(48px, 6vw, 72px); position: relative; overflow: hidden; }
.page-head h1 { font-size: clamp(2.4rem, 6vw, 4.6rem); color: var(--blanco); max-width: 16ch; }
.page-head .lead { color: #C9D7E6; }
.crumbs { font-size: .78rem; color: #9FB3C8; margin-bottom: 26px; }
.crumbs a { color: #9FB3C8; text-decoration: none; }
.crumbs a:hover { color: var(--blanco); }
.page-head.seg { background: #0A1422; }
.page-head.seg .wp { color: var(--ambar); }

/* ---------- Seguridad & Defensa ---------- */
.kill-chain { display: grid; grid-template-columns: repeat(4, 1fr); margin-top: 44px; border: 1px solid var(--linea-osc); }
.kill-chain > div { padding: 28px 22px; border-right: 1px solid var(--linea-osc); position: relative; }
.kill-chain > div:last-child { border-right: 0; }
.kill-chain .s { font-family: var(--f-titulo); font-weight: 800; font-size: 2.6rem; color: rgba(244,178,35,.25); line-height: 1; }
.kill-chain h4 { font-family: var(--f-titulo); color: var(--blanco); font-size: 1.2rem; margin: 12px 0 8px; }
.kill-chain p { font-size: .9rem; color: #A9BBCE; margin: 0; }
.kill-chain > div:not(:last-child)::after { content: "→"; position: absolute; right: -10px; top: 32px; width: 20px; height: 20px; background: var(--navy); color: var(--ambar); font-size: .9rem; text-align: center; line-height: 20px; z-index: 1; }
.kill-chain .lim { color: var(--ambar); font-size: .75rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; margin-top: 12px; display: block; }
@media (max-width: 860px) { .kill-chain { grid-template-columns: 1fr 1fr; } .kill-chain > div:nth-child(2) { border-right: 0; } .kill-chain > div:nth-child(-n+2) { border-bottom: 1px solid var(--linea-osc); } .kill-chain > div::after { display: none; } }
@media (max-width: 520px) { .kill-chain { grid-template-columns: 1fr; } .kill-chain > div { border-right: 0; border-bottom: 1px solid var(--linea-osc); } }

.principles { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 0; border-top: 1px solid var(--linea); margin-top: 36px; }
.principles div { padding: 24px 24px 24px 0; border-bottom: 1px solid var(--linea); }
.principles b { display: block; font-family: var(--f-titulo); color: var(--navy); font-size: 1.05rem; margin-bottom: 6px; }
.principles p { font-size: .92rem; color: var(--gris); margin: 0; }

/* ---------- Directorio de expositores ---------- */
.dir-controls { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; justify-content: space-between; margin: 36px 0 24px; }
.seg-ctrl { display: inline-flex; border: 1px solid var(--navy); flex-wrap: wrap; }
.seg-ctrl button { background: transparent; border: 0; min-height: 44px; padding: 10px 16px; font: inherit; font-size: .85rem; font-weight: 600; cursor: pointer; color: var(--navy); display: inline-flex; align-items: center; gap: 8px; }
.seg-ctrl button + button { border-left: 1px solid var(--navy); }
.seg-ctrl button[aria-pressed="true"] { background: var(--navy); color: var(--blanco); }
.seg-ctrl .dot { width: 10px; height: 10px; border-radius: 50%; background: var(--c, var(--gris)); }
.search { min-height: 44px; padding: 10px 14px; border: 1px solid var(--navy); font: inherit; font-size: .95rem; min-width: 240px; background: var(--blanco); border-radius: 0; }
@media (max-width: 640px) { .search { width: 100%; } }

.constellation-wrap { display: grid; grid-template-columns: 1.1fr .9fr; gap: 32px; align-items: center; }
@media (max-width: 900px) { .constellation-wrap { grid-template-columns: 1fr; } }
.constellation { width: 100%; max-width: 640px; aspect-ratio: 1; margin: 0 auto; display: block; }
.constellation .node { cursor: pointer; }
.constellation .node circle.dot { transition: r .2s; }
.constellation .node:hover circle.dot, .constellation .node:focus circle.dot, .constellation .node.sel circle.dot { r: 11; }
.constellation .node:focus { outline: none; }
.constellation .node:focus circle.ring, .constellation .node.sel circle.ring { opacity: 1; }
.constellation text { font-family: var(--f-texto); }
.peek { background: var(--navy); color: #C9D7E6; padding: 28px; min-height: 300px; border-top: 3px solid var(--c, var(--cyan)); }
.peek h3 { color: var(--blanco); margin-top: 10px; }
.peek .meta { font-size: .8rem; color: #9FB3C8; letter-spacing: .06em; }

.ex-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 18px; }
.ex { background: var(--blanco); border: 1px solid var(--linea); display: flex; flex-direction: column; text-decoration: none; color: var(--grafito); position: relative; transition: transform .2s, box-shadow .2s; }
.ex:hover { transform: translateY(-3px); box-shadow: 0 18px 40px -24px rgba(7,27,51,.45); }
.ex .top { height: 6px; background: var(--c); }
.ex .body { padding: 22px 22px 18px; display: flex; flex-direction: column; flex: 1; }
.ex .mono { width: 52px; height: 52px; display: grid; place-items: center; background: var(--navy); color: var(--blanco); font-family: var(--f-titulo); font-weight: 800; font-size: 1.1rem; margin-bottom: 16px; }
.ex h3 { font-size: 1.15rem; color: var(--navy); margin-bottom: 4px; }
.ex .sec { font-size: .82rem; color: var(--gris); }
.ex p { font-size: .9rem; margin: 12px 0 0; }
.ex .row { margin-top: auto; padding-top: 16px; display: flex; justify-content: space-between; align-items: center; font-size: .75rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--navy); }
.ex .pill-row { display: flex; gap: 4px; }
.ex .pill-row span { font-size: .62rem; padding: 3px 6px; background: var(--ice); color: var(--navy); letter-spacing: .08em; }
.badge-sample { position: absolute; top: 14px; right: 14px; font-size: .6rem; font-weight: 800; letter-spacing: .14em; color: #8A5E00; background: #FFF3D6; padding: 3px 6px; }
.empty { padding: 40px; text-align: center; color: var(--gris); border: 1px dashed var(--linea); }

/* ---------- vCard ---------- */
.vc-page { min-height: 100svh; background: var(--navy); display: grid; place-items: center; padding: 32px 16px 48px; }
.vc { width: 100%; max-width: 440px; background: var(--blanco); position: relative; box-shadow: 0 40px 80px -40px rgba(0,0,0,.8); }
.vc-head { background: var(--navy-2); color: var(--blanco); padding: 26px 26px 70px; position: relative; overflow: hidden; }
.vc-head .top { display: flex; justify-content: space-between; align-items: center; font-size: .66rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: #9FB3C8; }
.vc-head .top img { height: 18px; }
.vc-head .area-l { margin-top: 26px; font-size: .72rem; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--c); }
.vc-head .band { position: absolute; left: 0; right: 0; bottom: 0; height: 6px; background: var(--c); }
.vc-mono { position: relative; margin: -44px 0 0 26px; width: 88px; height: 88px; background: var(--navy); border: 4px solid var(--blanco); color: var(--blanco); display: grid; place-items: center; font-family: var(--f-titulo); font-weight: 800; font-size: 1.8rem; z-index: 2; }
.vc-body { padding: 16px 26px 24px; }
.vc-body h1 { font-size: 1.7rem; color: var(--navy); margin-bottom: 4px; }
.vc-body .who { font-size: .95rem; color: var(--gris); margin-bottom: 16px; }
.vc-body .who b { color: var(--grafito); }
.vc-stand { display: flex; gap: 0; border: 1px solid var(--linea); margin: 18px 0; }
.vc-stand div { flex: 1; padding: 10px 12px; border-right: 1px solid var(--linea); }
.vc-stand div:last-child { border-right: 0; }
.vc-stand small { display: block; font-size: .6rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--gris); }
.vc-stand strong { font-family: var(--f-titulo); color: var(--navy); font-size: 1.05rem; }
.vc-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 18px; }
.vc-actions .btn { justify-content: center; font-size: .78rem; padding: 12px 10px; }
.vc-actions .btn.wide { grid-column: 1 / -1; }
.vc-links a { display: flex; justify-content: space-between; padding: 14px 0; border-top: 1px solid var(--linea); text-decoration: none; color: var(--navy); font-weight: 600; font-size: .92rem; }
.vc-links a span { color: var(--gris); font-weight: 400; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 60%; }
.vc-qr { display: flex; gap: 16px; align-items: center; background: var(--ice); padding: 16px; margin-top: 18px; font-size: .8rem; color: var(--gris); }
.vc-qr #qr { background: var(--blanco); padding: 6px; flex-shrink: 0; }
.vc-qr #qr img, .vc-qr #qr canvas { width: 96px !important; height: 96px !important; }
.vc-foot { padding: 14px 26px; background: var(--ice); font-size: .72rem; color: var(--gris); display: flex; justify-content: space-between; border-top: 1px solid var(--linea); }

/* ---------- Footer ---------- */
.site-footer { background: #051427; color: #9FB3C8; padding: 72px 0 32px; font-size: .9rem; }
.site-footer .top { display: grid; grid-template-columns: 1.4fr repeat(4, 1fr); gap: 32px; padding-bottom: 48px; border-bottom: 1px solid var(--linea-osc); }
@media (max-width: 960px) { .site-footer .top { grid-template-columns: 1fr 1fr; } .site-footer .top > div:first-child { grid-column: 1 / -1; } }
.site-footer img { height: 26px; width: auto; margin-bottom: 18px; }
.site-footer h4 { font-family: var(--f-texto); font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; color: var(--blanco); margin-bottom: 16px; }
.site-footer ul { list-style: none; padding: 0; margin: 0; }
.site-footer li { margin-bottom: 8px; }
.site-footer a { color: #9FB3C8; text-decoration: none; }
.site-footer a:hover { color: var(--blanco); }
.site-footer .motto { color: #DCE6F2; font-size: .95rem; max-width: 34ch; }
.site-footer .bottom { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding-top: 24px; font-size: .78rem; }
.coords { font-variant-numeric: tabular-nums; letter-spacing: .08em; }

/* Aparición al hacer scroll */
.reveal { opacity: 0; transform: translateY(18px); transition: opacity .7s ease, transform .7s ease; }
.reveal.on { opacity: 1; transform: none; }
.no-js .reveal { opacity: 1; transform: none; }

/* Banda final CTA */
.final { background: var(--azul); color: var(--blanco); position: relative; overflow: hidden; }
.final h2 { color: var(--blanco); max-width: 18ch; }
.final .btn { --bg: var(--navy); --fg: var(--blanco); }
.final .btn:hover { background: var(--navy-3); }
.final .btn.ghost { --bg: transparent; }
.final-grid { display: grid; grid-template-columns: 1.3fr 1fr; gap: 40px; align-items: end; }
@media (max-width: 860px) { .final-grid { grid-template-columns: 1fr; } }
.final .paths a { display: flex; justify-content: space-between; align-items: center; padding: 18px 0; border-top: 1px solid rgba(255,255,255,.3); color: var(--blanco); text-decoration: none; font-weight: 600; font-size: 1.05rem; min-height: 44px; }
.final .paths a:last-child { border-bottom: 1px solid rgba(255,255,255,.3); }
.final .paths a:hover { padding-left: 8px; transition: padding .2s; }

/* ==========================================================================
   Patrones incorporados (referencia de presentación: speedbird.aero)
   ========================================================================== */

/* Banda de cifras bajo el hero, con contador animado */
.stats { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--linea-osc); }
.stats > div { padding: 28px 24px 30px 0; border-right: 1px solid var(--linea-osc); }
.stats > div + div { padding-left: 24px; }
.stats > div:last-child { border-right: 0; }
.stats strong { display: block; font-family: var(--f-titulo); font-weight: 800; font-size: clamp(2.4rem, 5vw, 3.8rem); line-height: 1; color: var(--blanco); font-variant-numeric: tabular-nums; letter-spacing: -.03em; }
.stats strong sup { font-size: .4em; color: var(--cyan); vertical-align: top; margin-left: 4px; }
.stats > div > span { display: block; margin-top: 10px; font-size: .9rem; color: #9FB3C8; }
.stats-band { background: var(--navy); }
.white .stats, .ice .stats { border-color: var(--linea); }
.white .stats > div, .ice .stats > div { border-color: var(--linea); }
.white .stats strong, .ice .stats strong { color: var(--navy); }
.white .stats > div > span, .ice .stats > div > span { color: var(--gris); }
@media (max-width: 760px) { .stats { grid-template-columns: 1fr 1fr; } .stats > div:nth-child(2) { border-right: 0; } .stats > div:nth-child(-n+2) { border-bottom: 1px solid var(--linea-osc); } .stats > div:nth-child(3) { padding-left: 0; } }

/* Sub-navegación con sección activa */
.subnav { position: sticky; top: var(--header-h); z-index: 40; background: var(--blanco); border-bottom: 1px solid var(--linea); }
.subnav .wrap { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; padding-top: 10px; padding-bottom: 10px; }
.subnav .wrap::-webkit-scrollbar { display: none; }
.subnav a { flex-shrink: 0; min-height: 40px; display: inline-flex; align-items: center; padding: 8px 14px; font-size: .85rem; font-weight: 600; color: var(--navy); text-decoration: none; border: 1px solid transparent; }
.subnav a:hover { border-color: var(--linea); }
.subnav a.on { background: var(--navy); color: var(--blanco); }
.subnav .tag-l { flex-shrink: 0; align-self: center; font-size: .7rem; font-weight: 800; letter-spacing: .16em; color: var(--azul); margin-right: 10px; }

/* Video que se expande con el scroll */
.expand { height: 220vh; position: relative; background: var(--navy); }
.expand .pin { position: sticky; top: var(--header-h); height: calc(100vh - var(--header-h)); display: grid; place-items: center; overflow: hidden; }
.expand .frame { --p: 0; position: relative; width: calc(100% - (1 - var(--p)) * 30%); height: calc(100% - (1 - var(--p)) * 36%); background: var(--navy-2); overflow: hidden; }
.expand .frame video, .expand .frame img { width: 100%; height: 100%; object-fit: cover; }
.expand .frame .slot { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: 24px; color: #9FB3C8; font-size: .9rem;
  background: radial-gradient(circle at 50% 40%, rgba(22,185,243,.16), transparent 60%), repeating-linear-gradient(135deg, rgba(255,255,255,.03) 0 2px, transparent 2px 16px), var(--navy-2); }
.expand .frame .slot b { color: var(--blanco); letter-spacing: .14em; font-size: .75rem; text-transform: uppercase; margin-bottom: 8px; }
.expand .over { position: absolute; left: 0; right: 0; bottom: 0; padding: clamp(20px, 4vw, 48px); background: linear-gradient(0deg, rgba(7,27,51,.9), transparent); color: var(--blanco); }
.expand .over h2 { color: var(--blanco); margin: 0; font-size: clamp(1.8rem, 4.5vw, 3.6rem); }
.expand .over small { font-size: .75rem; font-weight: 700; letter-spacing: .18em; color: var(--cyan); text-transform: uppercase; }
.expand .hud { position: absolute; top: 18px; left: 18px; right: 18px; display: flex; justify-content: space-between; font-size: .7rem; font-weight: 700; letter-spacing: .14em; color: rgba(255,255,255,.8); }
.expand .hud .rec::before { content: ""; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--rojo); margin-right: 8px; animation: blink 1.4s infinite; }
@keyframes blink { 50% { opacity: .2; } }
@media (max-width: 760px) { .expand { height: auto; } .expand .pin { position: relative; top: 0; height: 70vh; } .expand .frame { width: 100%; height: 100%; } }

/* Imagen fija + lista numerada */
.sticky-split { display: grid; grid-template-columns: 5fr 6fr; gap: clamp(32px, 5vw, 80px); align-items: start; }
.sticky-split .stick { position: sticky; top: calc(var(--header-h) + 80px); }
@media (max-width: 900px) { .sticky-split { grid-template-columns: 1fr; } .sticky-split .stick { position: static; } }
.numlist { list-style: none; margin: 0; padding: 0; }
.numlist li { display: grid; grid-template-columns: 64px 1fr; gap: 16px; padding: 26px 0; border-top: 1px solid var(--linea); }
.numlist li:last-child { border-bottom: 1px solid var(--linea); }
.numlist .n { font-family: var(--f-titulo); font-weight: 800; font-size: 1.1rem; color: var(--azul); }
.numlist h3 { font-size: 1.3rem; color: var(--navy); margin-bottom: 6px; }
.numlist h3 small { font-family: var(--f-texto); font-weight: 500; font-size: .8rem; color: var(--gris); letter-spacing: 0; margin-right: 8px; }
.numlist p { font-size: .95rem; color: var(--gris); margin: 0; }
.numlist .chips-s { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.numlist .chips-s span { font-size: .7rem; font-weight: 600; padding: 4px 8px; background: var(--ice); color: var(--navy); }

/* Fichas técnicas (spec cards) */
.specs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 40px; }
@media (max-width: 900px) { .specs { grid-template-columns: 1fr; } }
.spec { background: var(--blanco); border: 1px solid var(--linea); display: flex; flex-direction: column; }
.spec .hd { padding: 26px 24px 20px; border-bottom: 1px solid var(--linea); position: relative; }
.spec .hd small { font-size: .7rem; font-weight: 800; letter-spacing: .16em; color: var(--azul); }
.spec .hd h3 { font-size: 1.6rem; color: var(--navy); margin: 8px 0 4px; }
.spec .hd p { font-size: .92rem; color: var(--gris); margin: 0; }
.spec .hd .lvl { position: absolute; top: 24px; right: 24px; display: flex; gap: 3px; }
.spec .hd .lvl i { width: 6px; height: 18px; background: var(--linea); }
.spec .hd .lvl i.on { background: var(--cyan); }
.spec dl { margin: 0; padding: 8px 24px 20px; display: grid; grid-template-columns: auto 1fr; }
.spec dt { font-size: .66rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--gris); padding: 12px 16px 12px 0; border-bottom: 1px dashed var(--linea); }
.spec dd { margin: 0; padding: 12px 0; font-weight: 600; color: var(--navy); font-size: .92rem; border-bottom: 1px dashed var(--linea); text-align: right; }
.spec .ft { margin-top: auto; padding: 0 24px 24px; }
.dark .spec { background: var(--navy-2); border-color: var(--linea-osc); }
.dark .spec .hd { border-color: var(--linea-osc); }
.dark .spec .hd h3, .dark .spec dd { color: var(--blanco); }
.dark .spec .hd p, .dark .spec dt { color: #9FB3C8; }
.dark .spec dt, .dark .spec dd { border-color: var(--linea-osc); }
.dark .spec .hd small { color: var(--ambar); }
.dark .spec .hd .lvl i { background: var(--linea-osc); }
.dark .spec .hd .lvl i.on { background: var(--ambar); }

/* Línea de tiempo horizontal que se arrastra */
.htl-wrap { position: relative; margin-top: 44px; }
.htl { display: flex; gap: 0; overflow-x: auto; scroll-snap-type: x mandatory; cursor: grab; scrollbar-width: none; padding-bottom: 8px; user-select: none; }
.htl::-webkit-scrollbar { display: none; }
.htl.drag { cursor: grabbing; scroll-snap-type: none; }
.htl .st { flex: 0 0 min(300px, 78vw); scroll-snap-align: start; padding: 0 28px 0 0; position: relative; }
.htl .st::before { content: ""; display: block; height: 2px; background: var(--linea-osc); margin-bottom: 26px; }
.htl .st::after { content: ""; position: absolute; left: 0; top: -6px; width: 14px; height: 14px; border: 2px solid var(--cyan); background: var(--navy); transform: rotate(45deg); }
.htl .st.done::after { background: var(--cyan); }
.htl .st.warn::after { border-color: var(--ambar); }
.htl small { font-size: .72rem; font-weight: 800; letter-spacing: .16em; color: var(--cyan); }
.htl h4 { font-family: var(--f-titulo); font-size: 1.25rem; color: var(--blanco); margin: 8px 0 8px; }
.htl p { font-size: .9rem; color: #A9BBCE; margin: 0; }
.white .htl .st::before, .ice .htl .st::before { background: var(--linea); }
.white .htl .st::after, .ice .htl .st::after { background: var(--blanco); border-color: var(--azul); }
.white .htl small, .ice .htl small { color: var(--azul); }
.white .htl h4, .ice .htl h4 { color: var(--navy); }
.white .htl p, .ice .htl p { color: var(--gris); }
.htl-hint { display: flex; justify-content: space-between; align-items: center; margin-top: 18px; font-size: .75rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: #7F95AD; }
.htl-hint button { background: none; border: 1px solid currentColor; color: inherit; width: 44px; height: 44px; cursor: pointer; font-size: 1rem; }
.htl-hint button + button { margin-left: 6px; }

/* Agenda Academy */
.ag-controls { display: flex; flex-wrap: wrap; gap: 12px; margin: 32px 0 20px; align-items: center; }
.ag-controls select { min-height: 44px; padding: 8px 12px; border: 1px solid var(--navy); background: var(--blanco); font: inherit; font-size: .9rem; border-radius: 0; }
.agenda { border-top: 2px solid var(--navy); }
.session { display: grid; grid-template-columns: 90px 1fr 170px; gap: 20px; padding: 20px 0; border-bottom: 1px solid var(--linea); align-items: start; }
.session time { font-family: var(--f-titulo); font-weight: 800; color: var(--navy); font-size: 1.1rem; font-variant-numeric: tabular-nums; }
.session h4 { font-family: var(--f-titulo); font-size: 1.1rem; color: var(--navy); margin: 0 0 4px; }
.session p { margin: 0; font-size: .9rem; color: var(--gris); }
.session .meta { text-align: right; font-size: .78rem; color: var(--gris); display: flex; flex-direction: column; gap: 6px; align-items: flex-end; }
.stype { font-size: .64rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; padding: 4px 8px; background: var(--ice); color: var(--navy); }
.stype.spn { background: #FFF3D6; color: #8A5E00; }
.stype.rst { background: var(--navy); color: var(--ambar); }
@media (max-width: 700px) { .session { grid-template-columns: 70px 1fr; } .session .meta { grid-column: 2; align-items: flex-start; text-align: left; flex-direction: row; flex-wrap: wrap; } }

/* Tablero de demostraciones (estilo panel de vuelos) */
.fids { background: #030E1C; border: 1px solid var(--linea-osc); margin-top: 40px; font-variant-numeric: tabular-nums; }
.fids .top { display: flex; justify-content: space-between; align-items: center; padding: 14px 20px; border-bottom: 1px solid var(--linea-osc); font-size: .72rem; font-weight: 800; letter-spacing: .16em; color: var(--ambar); flex-wrap: wrap; gap: 8px; }
.fids .top span:last-child { color: #7F95AD; }
.fids table { width: 100%; border-collapse: collapse; }
.fids th { text-align: left; font-size: .64rem; font-weight: 700; letter-spacing: .16em; color: #7F95AD; padding: 12px 20px; border-bottom: 1px solid var(--linea-osc); }
.fids td { padding: 16px 20px; border-bottom: 1px solid rgba(255,255,255,.06); color: #E8EEF5; font-size: .95rem; vertical-align: top; }
.fids td.t { font-family: var(--f-titulo); font-weight: 800; color: var(--ambar); font-size: 1.1rem; }
.fids td small { display: block; color: #7F95AD; font-size: .78rem; margin-top: 2px; }
.fids .area-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--c); margin-right: 8px; }
.st-b { display: inline-block; font-size: .66rem; font-weight: 800; letter-spacing: .12em; padding: 5px 8px; border: 1px solid currentColor; white-space: nowrap; }
.st-b.prop { color: #9FB3C8; }
.st-b.eval { color: var(--ambar); }
.st-b.fact { color: var(--cyan); }
.st-b.aut { color: var(--area-aire); }
.st-b.conf { color: var(--blanco); background: rgba(127,212,168,.18); border-color: var(--area-aire); }
.fids .legend { padding: 14px 20px; display: flex; flex-wrap: wrap; gap: 10px; border-top: 1px solid var(--linea-osc); }
@media (max-width: 700px) { .fids th:nth-child(3), .fids td:nth-child(3) { display: none; } .fids td, .fids th { padding: 12px; } }

/* Zona operacional */
.zone { position: relative; border: 1px solid var(--linea-osc); background: var(--navy-2); aspect-ratio: 4/3; }
.zone svg { width: 100%; height: 100%; }

/* ==========================================================================
   Visitantes y acreditación
   ========================================================================== */
.status-bar { display: flex; flex-wrap: wrap; gap: 12px 24px; align-items: center; border: 1px solid var(--linea-osc); background: rgba(255,255,255,.04); padding: 14px 18px; margin: 0 0 40px; font-size: .9rem; color: #C9D7E6; }
.status-bar .dot { width: 10px; height: 10px; border-radius: 50%; background: var(--ambar); box-shadow: 0 0 0 4px rgba(244,178,35,.2); flex-shrink: 0; }
.status-bar.open .dot { background: var(--area-aire); box-shadow: 0 0 0 4px rgba(127,212,168,.2); }
.status-bar b { color: var(--blanco); letter-spacing: .08em; text-transform: uppercase; font-size: .78rem; }

/* Matriz de acceso por categoría */
.matrix { width: 100%; border-collapse: collapse; background: var(--blanco); margin-top: 36px; font-size: .92rem; }
.matrix th, .matrix td { padding: 16px 14px; border-bottom: 1px solid var(--linea); text-align: center; }
.matrix thead th { font-size: .66rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--gris); background: var(--ice); }
.matrix th[scope="row"] { text-align: left; font-family: var(--f-titulo); font-weight: 800; color: var(--navy); min-width: 190px; }
.matrix th[scope="row"] small { display: block; font-family: var(--f-texto); font-weight: 500; font-size: .78rem; color: var(--gris); margin-top: 3px; }
.matrix td .y, .matrix td .n, .matrix td .c { display: inline-grid; place-items: center; width: 28px; height: 28px; font-weight: 800; font-size: .85rem; }
.matrix td .y { background: #E3F2FC; color: var(--azul); }
.matrix td .c { background: #FFF3D6; color: #8A5E00; }
.matrix td .n { color: #B4C0CD; }
.matrix-legend { display: flex; flex-wrap: wrap; gap: 18px; margin-top: 14px; font-size: .8rem; color: var(--gris); }
.matrix-legend span { display: inline-flex; align-items: center; gap: 8px; }

/* Disponibilidad por día (cualitativa, sin cifras) */
.avail { display: grid; gap: 14px; margin-top: 22px; }
.avail .d { display: grid; grid-template-columns: 110px 1fr auto; gap: 14px; align-items: center; font-size: .88rem; }
.avail .d b { color: var(--navy); }
.avail .bar { height: 8px; background: var(--linea); position: relative; overflow: hidden; }
.avail .bar i { position: absolute; inset: 0 auto 0 0; background: var(--area-aire); }
.avail .bar i.mid { background: var(--ambar); }
.avail .bar i.low { background: var(--rojo); }
.avail .lbl { font-size: .72rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--gris); min-width: 110px; text-align: right; }

/* Tipo de acreditación (selector grande) */
.types { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; }
.types label { display: flex; flex-direction: column; gap: 4px; padding: 14px 16px; border: 1px solid #C5D2E0; background: var(--ice); cursor: pointer; min-height: 44px; }
.types label b { color: var(--navy); font-size: .95rem; }
.types label small { color: var(--gris); font-size: .78rem; line-height: 1.35; }
.types input { position: absolute; opacity: 0; pointer-events: none; }
.types label:has(input:checked) { border-color: var(--azul); background: #E3F2FC; box-shadow: inset 4px 0 0 var(--azul); }
.types label:has(input:focus-visible) { outline: 3px solid var(--ambar); outline-offset: 2px; }
.cond { display: none; }
.cond.show { display: block; }

/* Entradas (venta en ticketera oficial) */
.tix { background: var(--navy); color: #C9D7E6; padding: 26px 26px 22px; margin-bottom: 24px; border-top: 4px solid var(--cyan); }
.tix-head small { display: block; font-size: .66rem; font-weight: 800; letter-spacing: .16em; color: var(--cyan); }
.tix-head b { display: block; font-family: var(--f-titulo); font-size: 1.4rem; color: var(--blanco); margin: 6px 0 14px; }
.tix-row { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 14px 0; border-top: 1px dashed var(--linea-osc); }
.tix-row b { display: block; color: var(--blanco); }
.tix-row span { font-size: .8rem; color: #9FB3C8; }
.tix-row strong { font-family: var(--f-titulo); font-weight: 800; font-size: 1.6rem; color: var(--blanco); white-space: nowrap; }
.tix-note { font-size: .8rem; color: #9FB3C8; margin: 12px 0 18px; }
.tix-alt { font-size: .85rem; margin: 16px 0 0; padding-top: 14px; border-top: 1px solid var(--linea-osc); }

/* FAQ */
.faq { border-top: 1px solid var(--linea); margin-top: 32px; }
.faq details { border-bottom: 1px solid var(--linea); }
.faq summary { list-style: none; cursor: pointer; padding: 20px 44px 20px 0; font-family: var(--f-titulo); font-weight: 700; font-size: 1.08rem; color: var(--navy); position: relative; min-height: 44px; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; position: absolute; right: 6px; top: 16px; font-size: 1.5rem; font-weight: 400; color: var(--azul); transition: transform .2s; }
.faq details[open] summary::after { transform: rotate(45deg); }
.faq details p { margin: 0 0 20px; color: var(--gris); max-width: 70ch; }


/* ==========================================================================
   Noticias y Prensa
   ========================================================================== */
.cover { position: relative; aspect-ratio: 16/9; overflow: hidden; background: var(--navy-2); }
.cover svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.cover .cat { position: absolute; left: 14px; top: 14px; font-size: .64rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; padding: 5px 8px; background: var(--navy); color: var(--c); border: 1px solid var(--c); }
.cover .draft { position: absolute; right: 14px; top: 14px; font-size: .6rem; font-weight: 800; letter-spacing: .14em; padding: 4px 7px; background: #FFF3D6; color: #8A5E00; }

.news-feature { display: grid; grid-template-columns: 1.3fr 1fr; gap: 0; background: var(--blanco); border: 1px solid var(--linea); text-decoration: none; color: inherit; margin-bottom: 36px; }
.news-feature .cover { aspect-ratio: auto; min-height: 340px; }
.news-feature .tx { padding: clamp(24px, 4vw, 44px); display: flex; flex-direction: column; }
.news-feature h2 { font-size: clamp(1.6rem, 3vw, 2.4rem); color: var(--navy); margin: 12px 0; }
.news-feature p { color: var(--gris); }
.news-feature .go { margin-top: auto; font-weight: 700; font-size: .85rem; letter-spacing: .06em; text-transform: uppercase; color: var(--azul); }
.news-feature:hover h2 { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 5px; }
@media (max-width: 860px) { .news-feature { grid-template-columns: 1fr; } .news-feature .cover { min-height: 0; aspect-ratio: 16/9; } }
.meta-line { font-size: .78rem; color: var(--gris); display: flex; flex-wrap: wrap; gap: 6px 14px; }
.meta-line b { color: var(--navy); font-weight: 700; }

.news-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 24px; }
.news-card { display: flex; flex-direction: column; background: var(--blanco); border: 1px solid var(--linea); text-decoration: none; color: inherit; transition: transform .2s, box-shadow .2s; }
.news-card:hover { transform: translateY(-3px); box-shadow: 0 18px 40px -24px rgba(7,27,51,.45); }
.news-card .tx { padding: 20px 22px 22px; display: flex; flex-direction: column; flex: 1; }
.news-card h3 { font-size: 1.15rem; color: var(--navy); margin: 10px 0 8px; }
.news-card p { font-size: .9rem; color: var(--gris); margin: 0 0 14px; }
.news-card .meta-line { margin-top: auto; }
.dark .news-card { background: var(--navy-2); border-color: var(--linea-osc); }
.dark .news-card h3 { color: var(--blanco); }
.dark .news-card p, .dark .news-card .meta-line { color: #9FB3C8; }
.dark .news-card .meta-line b { color: var(--blanco); }

.cat-filter { display: flex; flex-wrap: wrap; gap: 8px; margin: 28px 0 28px; }
.cat-filter button { min-height: 40px; padding: 8px 14px; border: 1px solid var(--linea); background: var(--blanco); font: inherit; font-size: .85rem; font-weight: 600; color: var(--navy); cursor: pointer; display: inline-flex; align-items: center; gap: 8px; }
.cat-filter button i { width: 8px; height: 8px; border-radius: 50%; background: var(--c); }
.cat-filter button[aria-pressed="true"] { background: var(--navy); border-color: var(--navy); color: var(--blanco); }

/* Artículo */
.article-head { background: var(--navy); color: var(--blanco); padding: clamp(48px, 7vw, 88px) 0 0; }
.article-head h1 { font-size: clamp(2rem, 5vw, 3.6rem); color: var(--blanco); max-width: 22ch; }
.article-head .lead { color: #C9D7E6; max-width: 62ch; }
.article-head .meta-line { color: #9FB3C8; margin: 18px 0 36px; }
.article-head .meta-line b { color: var(--blanco); }
.article-head .cover { aspect-ratio: 21/8; margin-bottom: -80px; border: 1px solid var(--linea-osc); }
.article-wrap { display: grid; grid-template-columns: 1fr minmax(0, 700px) 1fr; gap: 32px; padding-top: 120px; padding-bottom: 72px; }
.article-body { grid-column: 2; font-size: 1.1rem; line-height: 1.75; }
.article-body h2 { font-size: 1.6rem; color: var(--navy); margin: 1.6em 0 .5em; }
.article-body ul { padding-left: 1.2em; }
.article-body li { margin-bottom: .5em; }
.article-body li::marker { color: var(--azul); }
.article-body blockquote { margin: 1.6em 0; padding: 4px 0 4px 24px; border-left: 4px solid var(--ambar); font-family: var(--f-titulo); font-weight: 700; font-size: 1.4rem; line-height: 1.3; color: var(--navy); }
.share { grid-column: 3; align-self: start; position: sticky; top: calc(var(--header-h) + 24px); display: flex; flex-direction: column; gap: 8px; }
.share small { font-size: .66rem; font-weight: 800; letter-spacing: .14em; color: var(--gris); }
.share a, .share button { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; padding: 8px 14px; border: 1px solid var(--linea); background: var(--blanco); color: var(--navy); font: inherit; font-size: .85rem; font-weight: 600; text-decoration: none; cursor: pointer; }
.share a:hover, .share button:hover { border-color: var(--navy); }
@media (max-width: 1000px) { .article-wrap { grid-template-columns: 1fr; } .article-body, .share { grid-column: 1; } .share { position: static; flex-direction: row; flex-wrap: wrap; } }
.draft-note { border-left: 4px solid var(--ambar); background: #FFF8E6; padding: 14px 18px; font-size: .9rem; color: #6B4A00; margin-bottom: 28px; }

/* Prensa */
.boiler { background: var(--blanco); border: 1px solid var(--linea); padding: 26px 28px; position: relative; }
.boiler + .boiler { margin-top: 16px; }
.boiler small { font-size: .66rem; font-weight: 800; letter-spacing: .14em; color: var(--azul); text-transform: uppercase; }
.boiler p { margin: 10px 0 16px; }
.copy-btn { min-height: 40px; padding: 8px 14px; border: 1px solid var(--navy); background: transparent; font: inherit; font-size: .8rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--navy); cursor: pointer; }
.copy-btn.done { background: var(--navy); color: var(--blanco); }
.facts { display: grid; grid-template-columns: auto 1fr; background: var(--navy-2); border: 1px solid var(--linea-osc); }
.facts dt, .facts dd { padding: 14px 20px; border-bottom: 1px solid var(--linea-osc); margin: 0; }
.facts dt { font-size: .66rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: #9FB3C8; }
.facts dd { color: var(--blanco); font-weight: 600; }
.facts dd small { display: block; color: #9FB3C8; font-weight: 400; font-size: .8rem; }
@media (max-width: 560px) { .facts { grid-template-columns: 1fr; } .facts dt { border-bottom: 0; padding-bottom: 0; } }
.logos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 36px; }
@media (max-width: 860px) { .logos { grid-template-columns: 1fr; } }
.logo-card { border: 1px solid var(--linea); background: var(--blanco); display: flex; flex-direction: column; }
.logo-card .pv { aspect-ratio: 16/9; display: grid; place-items: center; padding: 28px; }
.logo-card .pv img { max-width: 80%; max-height: 60px; width: auto; }
.logo-card .ft { padding: 14px 18px; border-top: 1px solid var(--linea); display: flex; justify-content: space-between; align-items: center; gap: 12px; font-size: .88rem; }
.logo-card .ft b { color: var(--navy); display: block; }
.logo-card .ft small { color: var(--gris); }
.swatches { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; margin-top: 24px; }
.swatch { border: 1px solid var(--linea); background: var(--blanco); cursor: pointer; text-align: left; padding: 0; font: inherit; }
.swatch i { display: block; height: 72px; background: var(--sw); }
.swatch span { display: block; padding: 10px 12px; font-size: .82rem; }
.swatch b { display: block; color: var(--navy); }
.swatch code { font-size: .8rem; color: var(--gris); }
.dos-donts { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 28px; }
@media (max-width: 700px) { .dos-donts { grid-template-columns: 1fr; } }
.dos-donts div { border: 1px solid var(--linea); padding: 20px 22px; background: var(--blanco); }
.dos-donts h4 { font-family: var(--f-titulo); margin: 0 0 10px; color: var(--navy); }
.dos-donts ul { margin: 0; padding-left: 1.1em; font-size: .92rem; color: var(--gris); }
.dos-donts li { margin-bottom: 6px; }
.dos-donts .yes { border-top: 3px solid var(--area-aire); }
.dos-donts .no { border-top: 3px solid var(--rojo); }
.gallery { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-top: 32px; }
.gallery .photo:first-child { grid-column: span 2; grid-row: span 2; }
@media (max-width: 760px) { .gallery { grid-template-columns: 1fr 1fr; } }

/* ==========================================================================
   Sponsors
   ========================================================================== */
.specs.four { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 1100px) { .specs.four { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px) { .specs.four { grid-template-columns: 1fr; } }
.spec.hi { background: var(--navy); border-color: var(--navy); }
.spec.hi .hd { border-color: var(--linea-osc); }
.spec.hi .hd h3, .spec.hi dd { color: var(--blanco); }
.spec.hi .hd p, .spec.hi dt { color: #9FB3C8; }
.spec.hi dt, .spec.hi dd { border-color: var(--linea-osc); }
.spec.hi .hd small { color: var(--ambar); }
.spec .seats { display: flex; gap: 4px; margin-top: 14px; align-items: center; font-size: .72rem; font-weight: 700; letter-spacing: .1em; color: var(--gris); }
.spec .seats i { width: 12px; height: 12px; border: 1.5px solid var(--azul); }
.spec.hi .seats { color: #9FB3C8; }
.spec.hi .seats i { border-color: var(--ambar); }

.asset-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1px; background: var(--linea-osc); border: 1px solid var(--linea-osc); margin-top: 40px; }
.asset { background: var(--navy); padding: 26px 24px; display: flex; flex-direction: column; min-height: 250px; position: relative; }
.asset .k { font-size: .66rem; font-weight: 800; letter-spacing: .16em; color: var(--c, var(--cyan)); }
.asset h3 { color: var(--blanco); font-size: 1.25rem; margin: 12px 0 8px; }
.asset p { font-size: .9rem; color: #A9BBCE; margin: 0; }
.asset .ft { margin-top: auto; padding-top: 18px; display: flex; justify-content: space-between; font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: #7F95AD; }
.asset::before { content: ""; position: absolute; left: 0; top: 0; width: 100%; height: 3px; background: var(--c, var(--cyan)); transform: scaleX(.15); transform-origin: left; transition: transform .35s; }
.asset:hover::before { transform: scaleX(1); }

/* Buscador de activo */
.finder { display: grid; grid-template-columns: 1fr 1fr; gap: 0; border: 1px solid var(--linea); background: var(--blanco); margin-top: 40px; }
@media (max-width: 860px) { .finder { grid-template-columns: 1fr; } }
.finder .q { padding: clamp(22px, 3vw, 36px); border-right: 1px solid var(--linea); }
@media (max-width: 860px) { .finder .q { border-right: 0; border-bottom: 1px solid var(--linea); } }
.finder .q h3 { font-size: 1rem; color: var(--navy); margin: 0 0 12px; }
.finder .q h3 + .chips { margin-bottom: 26px; }
.finder .chips input[type=radio] { width: 18px; height: 18px; min-height: 0; accent-color: var(--azul); }
.finder .a { padding: clamp(22px, 3vw, 36px); background: var(--navy); color: #C9D7E6; display: flex; flex-direction: column; }
.finder .a small { font-size: .7rem; font-weight: 800; letter-spacing: .16em; color: var(--ambar); }
.finder .a h3 { color: var(--blanco); font-size: 1.7rem; margin: 10px 0 6px; }
.finder .a .also { font-size: .85rem; color: #9FB3C8; margin-top: 8px; }
.finder .a blockquote { margin: 20px 0; padding-left: 16px; border-left: 3px solid var(--ambar); font-family: var(--f-titulo); font-weight: 700; color: var(--blanco); font-size: 1.1rem; line-height: 1.35; }
.finder .a .btn { margin-top: auto; align-self: flex-start; }

/* Partners por anunciar */
.slots { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-top: 36px; }
@media (max-width: 860px) { .slots { grid-template-columns: 1fr 1fr; } }
.slots div { min-height: 140px; min-width: 0; border: 1.5px dashed #B4C0CD; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 14px; background: var(--blanco); }
.slots div.main { grid-column: span 2; border-color: var(--azul); }
.slots b { font-family: var(--f-titulo); color: var(--navy); font-size: .95rem; }
.slots small { font-size: .7rem; font-weight: 700; letter-spacing: .14em; color: var(--gris); margin-top: 6px; text-transform: uppercase; }
.specs.four .spec dl { grid-template-columns: 1fr; }
.specs.four .spec dt { border-bottom: 0; padding: 12px 0 2px; }
.specs.four .spec dd { text-align: left; padding: 0 0 12px; }

/* ==========================================================================
   Contacto
   ========================================================================== */
.routes { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--linea); border: 1px solid var(--linea); margin-top: 40px; }
@media (max-width: 1000px) { .routes { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .routes { grid-template-columns: 1fr; } }
.route { background: var(--blanco); padding: 24px 22px 20px; display: flex; flex-direction: column; min-height: 230px; position: relative; }
.route .k { font-size: .66rem; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--c, var(--azul)); }
.route h3 { color: var(--navy); font-size: 1.15rem; margin: 10px 0 6px; }
.route p { font-size: .88rem; color: var(--gris); margin: 0 0 14px; }
.route .to { margin-top: auto; display: flex; flex-direction: column; gap: 6px; font-size: .85rem; }
.route .to a { font-weight: 700; text-decoration: none; }
.route .to a.mail { color: var(--gris); font-weight: 500; }
.route .to a:hover { text-decoration: underline; }
.route::before { content: ""; position: absolute; left: 0; top: 0; height: 3px; width: 100%; background: var(--c, var(--azul)); transform: scaleX(.12); transform-origin: left; transition: transform .3s; }
.route:hover::before { transform: scaleX(1); }
.sla { display: flex; align-items: center; gap: 12px; font-size: .9rem; color: #C9D7E6; margin-top: 26px; }
.sla .dot { width: 10px; height: 10px; border-radius: 50%; background: var(--area-aire); box-shadow: 0 0 0 4px rgba(127,212,168,.2); }
.specs.two { grid-template-columns: repeat(2, 1fr); }
@media (max-width: 900px) { .specs.two { grid-template-columns: 1fr; } }

/* ==========================================================================
   Textos legales y aviso de cookies
   ========================================================================== */
.prose { max-width: 760px; font-size: 1.02rem; line-height: 1.75; }
.prose h2 { font-size: 1.4rem; color: var(--navy); margin: 2em 0 .5em; }
.prose h3 { font-size: 1.1rem; color: var(--navy); margin: 1.5em 0 .4em; }
.prose ul { padding-left: 1.2em; } .prose li { margin-bottom: .4em; } .prose li::marker { color: var(--azul); }
.prose table { width: 100%; border-collapse: collapse; font-size: .92rem; margin: 1em 0 1.5em; }
.prose th, .prose td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--linea); vertical-align: top; }
.prose th { background: var(--ice); font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; color: var(--gris); }
.legal-meta { font-size: .85rem; color: var(--gris); margin-bottom: 2em; }
.cookie-bar { position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 60; max-width: 720px; margin: 0 auto; background: var(--navy); color: #DCE6F2; border: 1px solid var(--linea-osc); border-top: 3px solid var(--cyan); padding: 18px 20px; box-shadow: 0 20px 50px -20px rgba(0,0,0,.6); display: flex; gap: 16px; align-items: center; flex-wrap: wrap; font-size: .9rem; }
.cookie-bar p { margin: 0; flex: 1 1 320px; }
.cookie-bar a { color: var(--cyan); }
.cookie-bar .btn { min-height: 44px; font-size: .78rem; padding: 10px 16px; }
.linklike { background: none; border: 0; padding: 0; font: inherit; color: inherit; text-decoration: underline; cursor: pointer; }

/* ==========================================================================
   Bitácora 2025 (edicion-2025.html) · fotos reales de la primera edición
   ========================================================================== */
.log-hero { display: grid; grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1fr; gap: 8px; height: clamp(280px, 42vw, 520px); margin-top: 48px; padding: 0 max(16px, calc((100vw - 1240px) / 2)); }
.log-hero img { width: 100%; height: 100%; object-fit: cover; display: block; min-width: 0; }
.log-hero img:first-child { grid-row: span 2; }
@media (max-width: 700px) { .log-hero { grid-template-columns: 1fr 1fr; grid-template-rows: 2fr 1fr; } .log-hero img:first-child { grid-row: auto; grid-column: span 2; } }
.log-grid { columns: 3 280px; column-gap: 12px; margin-top: 40px; }
.log-grid figure { break-inside: avoid; margin: 0 0 12px; background: var(--navy); }
.log-grid a { display: block; overflow: hidden; cursor: zoom-in; }
.log-grid img { width: 100%; height: auto; display: block; transition: transform .6s, opacity .3s; }
.log-grid a:hover img, .log-grid a:focus-visible img { transform: scale(1.03); opacity: .92; }
.log-grid figcaption { font-size: .78rem; color: #C9D7E6; padding: 9px 12px 11px; letter-spacing: .01em; }
.log-changes { list-style: none; margin: 0; padding: 0; counter-reset: lc; }
.log-changes li { display: grid; grid-template-columns: 200px 1fr; gap: 18px; padding: 18px 0; border-bottom: 1px solid var(--linea-osc); counter-increment: lc; }
.log-changes li:first-child { border-top: 1px solid var(--linea-osc); }
.log-changes b { color: var(--ambar); font-family: var(--f-titulo); }
.log-changes b::before { content: counter(lc, decimal-leading-zero) "  "; color: #7F95AD; font-size: .75rem; letter-spacing: .12em; }
@media (max-width: 600px) { .log-changes li { grid-template-columns: 1fr; gap: 4px; } }
.log-credit { font-size: .78rem; color: #9FB3C8; margin-top: 14px; }
dialog.lb { border: 0; padding: 0; background: transparent; max-width: 100vw; max-height: 100vh; width: 100vw; height: 100vh; }
dialog.lb::backdrop { background: rgba(4,14,27,.94); }
dialog.lb figure { margin: 0; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 56px 16px 24px; }
dialog.lb img { max-width: min(1600px, 100%); max-height: calc(100vh - 130px); object-fit: contain; }
dialog.lb figcaption { color: #DCE6F2; font-size: .9rem; margin-top: 12px; text-align: center; }
dialog.lb button { position: absolute; background: none; border: 1px solid rgba(255,255,255,.3); color: #fff; width: 48px; height: 48px; font-size: 1.4rem; cursor: pointer; }
dialog.lb button:hover, dialog.lb button:focus-visible { border-color: var(--cyan); color: var(--cyan); }
dialog.lb .lb-x { top: 12px; right: 12px; }
dialog.lb .lb-p { left: 12px; top: 50%; }
dialog.lb .lb-n { right: 12px; top: 50%; }
@media (max-width: 700px) { dialog.lb .lb-p, dialog.lb .lb-n { top: auto; bottom: 12px; } }
.photo > a { display: block; height: 100%; }

/* ==========================================================================
   Exponer · vCard y código QR del expositor
   ========================================================================== */
.vcq { display: grid; grid-template-columns: 1.1fr 1fr; gap: clamp(32px, 5vw, 80px); align-items: start; }
@media (max-width: 960px) { .vcq { grid-template-columns: 1fr; } }
.vcq-steps { list-style: none; margin: 32px 0 0; padding: 0; counter-reset: none; }
.vcq-steps li { display: grid; grid-template-columns: 52px 1fr; gap: 14px; padding: 16px 0; border-top: 1px solid var(--linea-osc); }
.vcq-steps .n { font-family: var(--f-titulo); font-weight: 800; color: var(--cyan); font-size: 1.1rem; }
.vcq-steps h4 { color: var(--blanco); margin: 0 0 4px; font-family: var(--f-titulo); }
.vcq-steps p { margin: 0; font-size: .92rem; color: #C9D7E6; }
.vcq-lists { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 28px; }
@media (max-width: 600px) { .vcq-lists { grid-template-columns: 1fr; } }
.vcq-lists div { border: 1px solid var(--linea-osc); padding: 18px 20px; background: rgba(255,255,255,.02); }
.vcq-lists h4 { margin: 0 0 10px; color: var(--ambar); font-size: .75rem; letter-spacing: .16em; text-transform: uppercase; }
.vcq-lists ul { margin: 0; padding-left: 1.1em; font-size: .9rem; color: #DCE6F2; }
.vcq-lists li { margin-bottom: 6px; }
.vcq-lists code { font-size: .78rem; word-break: break-all; color: var(--cyan); background: none; }
.vcq-demo { margin: 0; position: relative; display: grid; grid-template-columns: auto auto; justify-content: center; align-items: end; gap: 0; padding-top: 12px; }
.vcq-plate { background: var(--blanco); color: var(--navy); width: 220px; padding: 20px 20px 18px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 6px; transform: rotate(-3deg) translate(28px, -40px); box-shadow: 0 30px 60px -30px rgba(0,0,0,.8); position: relative; z-index: 2; border-top: 6px solid var(--area-aire); }
.vcq-plate small { font-size: .66rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--gris); }
.vcq-code { width: 168px; height: 168px; margin: 6px 0; }
.vcq-code img, .vcq-code canvas { width: 168px !important; height: 168px !important; }
.vcq-plate strong { font-family: var(--f-titulo); font-size: 1.4rem; line-height: 1; }
.vcq-plate span { font-weight: 700; font-size: .9rem; }
.vcq-plate em { font-style: normal; font-size: .7rem; color: var(--gris); }
.vcq-phone { width: 300px; height: 610px; border: 10px solid #03101F; border-radius: 38px; overflow: hidden; background: var(--navy); box-shadow: 0 40px 80px -30px rgba(0,0,0,.9), 0 0 0 1px rgba(255,255,255,.08); position: relative; }
.vcq-phone iframe { width: 390px; height: 790px; border: 0; transform: scale(.72); transform-origin: 0 0; display: block; }
.vcq-demo figcaption { grid-column: 1 / -1; margin-top: 22px; font-size: .85rem; color: #C9D7E6; text-align: center; }
.vcq-demo figcaption b { color: var(--ambar); font-size: .7rem; letter-spacing: .16em; text-transform: uppercase; margin-right: 6px; }
@media (max-width: 600px) {
  .vcq-demo { grid-template-columns: 1fr; justify-items: center; }
  .vcq-plate { transform: none; margin-bottom: 24px; }
  .vcq-phone { width: 270px; height: 550px; }
  .vcq-phone iframe { transform: scale(.64); }
}

/* ==========================================================================
   Asistente virtual (chat.js → /api/chat)
   ========================================================================== */
.chat-fab { position: fixed; right: 16px; bottom: calc(16px + var(--chat-offset, 0px)); z-index: 90; display: inline-flex; align-items: center; gap: 10px; background: var(--navy); color: var(--blanco); border: 1px solid rgba(22,185,243,.45); padding: 10px 16px 10px 12px; font: 600 .88rem/1 var(--f-texto, Inter, sans-serif); cursor: pointer; box-shadow: 0 12px 30px -12px rgba(0,0,0,.6); clip-path: polygon(0 0, calc(100% - 12px) 0, 100% 12px, 100% 100%, 0 100%); transition: bottom .25s, background .2s; }
.chat-fab:hover, .chat-fab.on { background: var(--navy-2); }
.chat-fab:focus-visible { outline: 2px solid var(--cyan); outline-offset: 3px; }
.chat-fab-ico { width: 22px; height: 22px; border-radius: 50%; border: 2px solid var(--cyan); position: relative; flex-shrink: 0; }
.chat-fab-ico::after { content: ""; position: absolute; left: 50%; top: 50%; width: 6px; height: 6px; margin: -3px 0 0 -3px; border-radius: 50%; background: var(--ambar); box-shadow: 0 0 0 4px rgba(244,178,35,.18); }
.chat-panel { position: fixed; right: 16px; bottom: calc(76px + var(--chat-offset, 0px)); z-index: 91; width: min(380px, calc(100vw - 32px)); height: min(560px, calc(100vh - 120px - var(--chat-offset, 0px))); display: flex; flex-direction: column; background: var(--blanco); color: var(--grafito); box-shadow: 0 30px 70px -20px rgba(4,14,27,.55); border-top: 4px solid var(--cyan); }
.chat-panel[hidden] { display: none !important; }
.chat-panel header { display: flex; justify-content: space-between; align-items: center; background: var(--navy); color: var(--blanco); padding: 12px 14px; }
.chat-panel header b { font-family: var(--f-titulo); font-size: .98rem; display: block; }
.chat-panel header small { font-size: .66rem; letter-spacing: .14em; text-transform: uppercase; color: var(--cyan); font-weight: 700; }
.chat-x { background: none; border: 0; color: #C9D7E6; font-size: 1.5rem; line-height: 1; width: 40px; height: 40px; cursor: pointer; }
.chat-x:hover { color: var(--blanco); }
.chat-log { flex: 1; overflow-y: auto; padding: 14px; display: flex; flex-direction: column; gap: 10px; background: var(--ice); }
.chat-msg { max-width: 88%; padding: 10px 12px; font-size: .9rem; line-height: 1.45; white-space: pre-wrap; overflow-wrap: anywhere; }
.chat-msg.assistant { align-self: flex-start; background: var(--blanco); border: 1px solid var(--linea); }
.chat-msg.user { align-self: flex-end; background: var(--navy); color: var(--blanco); }
.chat-msg.typing { color: var(--gris); font-style: italic; }
.chat-msg.sys { background: #FFF7E3; border-color: #E9C46A; font-size: .84rem; }
.chat-msg a { color: var(--azul); }
.chat-chips { display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 14px 0; background: var(--ice); }
.chat-chips[hidden] { display: none; }
.chat-chips button { border: 1px solid #C5D2E0; background: var(--blanco); color: var(--navy); font-size: .8rem; font-weight: 600; padding: 7px 10px; cursor: pointer; }
.chat-chips button:hover { border-color: var(--azul); }
.chat-form { display: flex; gap: 8px; padding: 10px 14px; border-top: 1px solid var(--linea); background: var(--blanco); }
.chat-form textarea { flex: 1; resize: none; min-height: 40px; max-height: 120px; border: 1px solid #C5D2E0; padding: 9px 10px; font: inherit; font-size: .9rem; }
.chat-form textarea:focus { outline: 2px solid var(--azul); outline-offset: 0; border-color: var(--azul); }
.chat-send { width: 44px; border: 0; background: var(--azul); color: var(--blanco); font-size: 1.1rem; cursor: pointer; }
.chat-send:disabled { opacity: .5; cursor: wait; }
.chat-note { margin: 0; padding: 0 14px 10px; font-size: .68rem; color: var(--gris); background: var(--blanco); line-height: 1.35; }
@media (max-width: 480px) { .chat-fab span:last-child { display: none; } .chat-fab { padding: 12px; } .chat-panel { right: 8px; left: 8px; width: auto; bottom: calc(72px + var(--chat-offset, 0px)); } }
@media print { .chat-fab, .chat-panel { display: none !important; } }

/* Rebecca (Chatwoot): botón propio, misma forma que en ENAE con colores de EXPODRON */
.rebecca-launcher { position: fixed; right: 18px; bottom: calc(18px + var(--chat-offset, 0px)); z-index: 2147482000; display: flex; align-items: center; background: none; border: 0; padding: 0; cursor: pointer; font-family: var(--f-texto, Inter, sans-serif); transition: bottom .25s; }
.rebecca-launcher[hidden] { display: none; }
.rebecca-launcher span { background: var(--azul); color: #fff; font-size: 14px; font-weight: 600; padding: 10px 34px 10px 16px; border-radius: 22px; margin-right: -26px; box-shadow: 0 3px 12px rgba(0,0,0,.25); white-space: nowrap; }
.rebecca-launcher img { width: 60px; height: 60px; border-radius: 50%; border: 3px solid var(--blanco); box-shadow: 0 3px 12px rgba(0,0,0,.3); display: block; position: relative; }
.rebecca-launcher:hover span { background: var(--navy); }
.rebecca-launcher:focus-visible { outline: 2px solid var(--cyan); outline-offset: 4px; border-radius: 30px; }
@media (max-width: 480px) { .rebecca-launcher span { display: none; } }
@media print { .rebecca-launcher { display: none !important; } }

/* Rebecca · panel propio (chat.js) */
.chat-panel { bottom: calc(92px + var(--chat-offset, 0px)); }
.chat-panel header { padding: 10px 12px; }
.chat-who { display: flex; align-items: center; gap: 10px; }
.chat-who img { width: 40px; height: 40px; border-radius: 50%; border: 2px solid var(--cyan); }
.chat-msg.team { border-left: 3px solid var(--ambar); }
.chat-from { display: block; font-size: .68rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--gris); margin-bottom: 4px; }
.chat-restart { background: none; border: 0; padding: 0; color: var(--azul); font: inherit; font-size: inherit; text-decoration: underline; cursor: pointer; }
.chat-restart[hidden] { display: none; }
.rebecca-launcher.on span { background: var(--navy); }
.rebecca-badge { position: absolute; right: 0; top: 0; width: 14px; height: 14px; border-radius: 50%; background: var(--rojo); border: 2px solid var(--blanco); }
.rebecca-badge[hidden] { display: none; }
.rebecca-launcher { position: fixed; }
.rebecca-launcher > img { position: relative; }
@media (max-width: 480px) { .chat-panel { bottom: calc(86px + var(--chat-offset, 0px)); height: min(560px, calc(100vh - 110px - var(--chat-offset, 0px))); } }
