/* =====================================================================
   ICAN 2026 · Sistema visual
   Paleta:  midnight / atlantic / sky / brass / jade
   Tipos:   serif institucional (display) + monoespaciado aeronáutico (datos)
   ===================================================================== */
@font-face{
  font-family:"Great Vibes";
  src:url("../../assets/fonts/GreatVibes-Regular.woff2") format("woff2"),
      url("../../assets/fonts/GreatVibes-Regular.ttf") format("truetype");
  font-weight:400;font-style:normal;font-display:swap;
}
:root{
  --midnight:#06263c; --deep:#0a3352; --atlantic:#0f4f78; --azure:#2b7cb0;
  --sky:#cfe6f4; --mist:#f2f7fa; --line:#dbe7ef; --line-soft:#eaf1f6;
  --brass:#b8893f; --brass-soft:#f3e6d0; --jade:#1f6f52; --ruby:#9c3440;
  /* Oro de portada: unico origen del color del slogan y del "con el mundo"
     del titular. Cambiando esta variable cambian los dos a la vez. */
  --oro:#f0d6ab; --oro-fuerte:#e8c489;
  --ink:#122c3d; --body:#3c5a6d; --muted:#6b8497; --white:#fff;
  /* tono unico de las tarjetas: cambielo aqui y cambia en todo el sitio */
  --card-soft:#E9F2F7; --card-soft-hover:#DFEBF3;
  --org-panel:#f6fafc;
  --display:Georgia,"Noto Serif","Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
  --wrap:1240px; --pad:clamp(1.15rem,5vw,3.5rem);
  --r:14px; --r-lg:22px;
  --shadow-s:0 2px 10px rgba(6,38,60,.05);
  --shadow-m:0 14px 38px rgba(6,38,60,.09);
  --shadow-l:0 30px 70px rgba(6,38,60,.20);
}
/* El chino necesita su propia pila tipográfica: Georgia no tiene glifos CJK */
html[lang="zh"]{
  --display:"Noto Serif SC","Source Han Serif SC","Songti SC","STSong",Georgia,serif;
  --sans:"Noto Sans SC","PingFang SC","Microsoft YaHei","Hiragino Sans GB",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
html[lang="zh"] .eyebrow,html[lang="zh"] .chip,html[lang="zh"] .cd-unit span,
html[lang="zh"] .stat>span,html[lang="zh"] .utility .wrap,html[lang="zh"] .foot h4{letter-spacing:.06em}
html[lang="zh"] h1,html[lang="zh"] h2{letter-spacing:0}
html[lang="zh"] .langsel a{letter-spacing:0}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:84px;-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--sans);color:var(--body);background:var(--white);
  line-height:1.65;font-size:16.5px;overflow-x:hidden;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:var(--atlantic)}
h1,h2,h3,h4{color:var(--ink);font-weight:700;line-height:1.15;margin:0}
h1,h2{font-family:var(--display);letter-spacing:-.022em;font-weight:400}
h3,h4{letter-spacing:-.01em}
p{margin:0 0 1rem}
p:last-child{margin-bottom:0}
:focus-visible{outline:3px solid var(--brass);outline-offset:3px;border-radius:4px}

/* ---------- utilidades ---------- */
.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding-inline:var(--pad)}
.eyebrow{font-family:var(--mono);font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--azure);font-weight:600;display:block;margin-bottom:.85rem}
/* Slogan de portada: mismo tratamiento tipografico que el "con el mundo" del
   titular (serif en cursiva, oro). No es un eyebrow tecnico, por eso se le
   quita la caja monoespaciada en versales. */
.eyebrow.slogan{font-family:"Great Vibes",cursive;font-style:normal;font-weight:400;
  font-size:clamp(1.3rem,2.6vw,1.9rem);letter-spacing:0;text-transform:none;
  color:var(--oro);margin-bottom:.6rem;text-wrap:balance;line-height:1.3}
.lead{font-size:clamp(1.02rem,1.6vw,1.15rem);max-width:74ch;color:var(--body)}
.hd{max-width:80ch;margin-bottom:2.6rem}
.hd h2{font-size:clamp(1.95rem,4vw,3rem);margin-bottom:.9rem;text-wrap:balance}
/* el informe pide estos titulares y entradillas en una sola linea */
.hd.ancho{max-width:none}
.hd.ancho h2{white-space:normal;text-wrap:balance}
.hd.ancho .lead{max-width:none;text-wrap:balance}
@media(min-width:1180px){
  .hd.ancho .lead{font-size:1.06rem}
}
.chip{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--mono);font-size:.66rem;
  letter-spacing:.13em;text-transform:uppercase;font-weight:600;padding:.32rem .6rem;border-radius:5px;
  background:var(--sky);color:var(--deep);white-space:nowrap}
.chip.out{background:transparent;border:1px solid var(--line);color:var(--muted)}

/* ---------- botones ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border:0;cursor:pointer;
  font-family:var(--sans);font-size:.92rem;font-weight:650;text-decoration:none;padding:.85rem 1.5rem;
  border-radius:999px;background:var(--atlantic);color:#fff;transition:background .2s,transform .2s,box-shadow .2s;
  box-shadow:0 6px 18px rgba(15,79,120,.22)}
.btn:hover{background:var(--deep);transform:translateY(-2px);box-shadow:0 12px 26px rgba(15,79,120,.28)}
.btn.ghost{background:transparent;color:var(--deep);border:1.5px solid var(--line);box-shadow:none}
.btn.ghost:hover{background:var(--mist);border-color:var(--azure);color:var(--deep)}
.btn.brass{background:var(--brass);color:#fff;box-shadow:0 6px 18px rgba(184,137,63,.28)}
.btn.brass:hover{background:#9c7132;color:#fff}
.btn.light{background:#fff;color:var(--deep);box-shadow:0 8px 22px rgba(0,0,0,.18)}
.btn.light:hover{background:var(--sky)}

/* ---------- barra superior ---------- */
.flagrule{height:5px;background:linear-gradient(90deg,var(--jade) 0 25%,#fff 25% 50%,var(--ruby) 50% 75%,var(--atlantic) 75%)}
.utility{background:var(--midnight);color:#a9c6d8}
.utility .wrap{display:flex;justify-content:flex-end!important;align-items:center;gap:.6rem 1rem;flex-wrap:wrap;
  padding-block:.55rem;font-family:var(--mono);font-size:.68rem;letter-spacing:.11em;text-transform:uppercase}
.utility .wrap>span{min-width:0}
.utility b{color:#fff;font-weight:600}
.langsel{display:inline-flex;gap:.25rem;align-items:center;flex-wrap:wrap}
.utility .wrap>.langsel{margin-left:auto!important;margin-right:0!important}
.langsel a{display:inline-flex;align-items:center;gap:.34rem;padding:.22rem .46rem;border-radius:6px;
  text-decoration:none;font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;font-weight:700;
  border:1px solid transparent;transition:.18s;line-height:1}
.langsel .flw{display:inline-flex;width:19px;height:13px;border-radius:2.5px;overflow:hidden;flex-shrink:0;
  box-shadow:0 1px 2px rgba(0,0,0,.35);opacity:.88;transition:.18s}
.langsel .fl{display:block;width:100%;height:100%}
.langsel .nm{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0}
.langsel a:hover .flw,.langsel a.on .flw{opacity:1}
@media(max-width:620px){.langsel .cd{display:none}.langsel a{padding:.22rem .3rem}}
.langsel a{color:#a9c6d8}
.langsel a:hover{color:#fff;border-color:rgba(255,255,255,.28);background:rgba(255,255,255,.07)}
.langsel a.on{background:#fff;color:var(--midnight);border-color:#fff}
.langsel a.on .flw{box-shadow:0 1px 3px rgba(6,38,60,.4)}

/* ---------- navegación ---------- */
/* Cabecera institucional: va sobre fondo claro porque el logotipo lleva
   los colores oficiales de la OACI, del escudo y de la bandera. Sobre el
   azul de la portada seria ilegible. */
.nav{position:sticky;top:0;z-index:50;background:#fff;backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);transition:box-shadow .25s}
.nav.stuck{box-shadow:0 6px 24px rgba(6,38,60,.08)}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:.75rem;height:74px;position:relative;
  max-width:none;padding-left:0;padding-right:clamp(1rem,3vw,3.5rem)}
/* R19.1 - El logo institucional arranca en el borde fisico izquierdo del
   viewport, tambien en tablet y movil. El margen derecho de la navegacion se
   conserva para el menu/CTA; no se deja una franja blanca antes del logo. */
.nav > .wrap{padding-left:0!important}
.brand{display:flex;align-items:center;gap:.75rem;text-decoration:none;flex-shrink:0;height:100%;overflow:hidden}
/* R22 - Cabecera compuesta con solape real y bandera animada.
   La bandera tiene una capa superior al bloque ICAN/OACI, por lo que al usar
   offset negativo su extremo nunca queda tapado. El clip-path elimina la caja
   rectangular del PNG en la zona de union y crea un borde de tela mas natural.
   La animacion usa transform (no layout), asi que no provoca saltos de pagina. */
.header-brand{gap:0;align-self:stretch;min-width:0;overflow:visible!important;isolation:isolate;position:relative}
.header-flag{height:100%;width:var(--header-flag-w,110px);max-width:none;display:flex;align-items:stretch;overflow:visible;flex:0 0 auto;background:transparent;position:relative;z-index:4;perspective:650px;pointer-events:none}
.header-flag img{display:block;width:100%;height:100%;max-width:none;object-fit:cover;object-position:left center;transform-origin:left center;backface-visibility:hidden;will-change:transform,clip-path;filter:saturate(1.035) contrast(1.025) drop-shadow(3px 0 3px rgba(6,38,60,.12));clip-path:polygon(0 0,96% 0,100% 10%,96.5% 21%,100% 34%,95.5% 47%,100% 60%,96% 73%,100% 86%,95% 94%,87% 100%,0 100%)}
.header-logo-core{height:100%;margin-left:clamp(-55px,var(--header-logo-offset-x,-40px),40px);display:flex;align-items:center;justify-content:flex-start;overflow:visible;flex:0 0 auto;background:#fff;position:relative;z-index:2}
.header-logo-core img{--logo-h:58px;display:block;height:min(var(--logo-h),calc(100% - 12px));width:auto;max-width:240px;object-fit:contain;object-position:left center;position:relative;z-index:1}
.header-brand.flag-wave-on .header-flag img{animation:headerFlagWave 5.8s cubic-bezier(.45,.05,.55,.95) infinite}
@keyframes headerFlagWave{
  0%,100%{transform:perspective(650px) rotateY(0deg) skewY(0deg) translateX(0);clip-path:polygon(0 0,96% 0,100% 10%,96.5% 21%,100% 34%,95.5% 47%,100% 60%,96% 73%,100% 86%,95% 94%,87% 100%,0 100%)}
  25%{transform:perspective(650px) rotateY(var(--header-flag-wave-y,-1.49deg)) skewY(var(--header-flag-wave-skew,.44deg)) translateX(var(--header-flag-wave-shift,1.19px));clip-path:polygon(0 0,98% 1%,95% 12%,100% 25%,96% 38%,100% 51%,95% 64%,99% 77%,96% 89%,92% 97%,86% 100%,0 100%)}
  50%{transform:perspective(650px) rotateY(var(--header-flag-wave-y-rev,.67deg)) skewY(var(--header-flag-wave-skew-rev,-.24deg)) translateX(var(--header-flag-wave-shift-rev,-.42px));clip-path:polygon(0 0,95% 0,100% 13%,96% 26%,99% 39%,95% 52%,100% 66%,96% 78%,100% 91%,94% 96%,88% 100%,0 100%)}
  75%{transform:perspective(650px) rotateY(var(--header-flag-wave-y-soft,-.92deg)) skewY(var(--header-flag-wave-skew-soft,.15deg)) translateX(var(--header-flag-wave-shift-soft,.54px));clip-path:polygon(0 0,97% 0,100% 9%,95% 20%,99% 33%,96% 46%,100% 59%,95% 72%,99% 84%,96% 94%,87% 100%,0 100%)}
}
@media(prefers-reduced-motion:reduce){.header-brand.flag-wave-on .header-flag img{animation:none!important;transform:none!important}}
.header-brand .txt{margin-left:.65rem}
.brand .mark{width:46px;height:46px;border-radius:12px;background:var(--midnight);color:#fff;
  display:grid;place-items:center;font-family:var(--mono);font-size:.62rem;font-weight:700;
  letter-spacing:.04em;line-height:1.15;text-align:center;position:relative;overflow:hidden}
.brand .mark::after{content:"";position:absolute;left:-10%;right:-10%;bottom:9px;height:14px;
  border-top:1.5px solid rgba(184,137,63,.85);border-radius:50%}
/* Logo subido por el panel (Imágenes del sitio > logo_evento): libre, sin
   caja ni fondo forzado. Para agrandarlo o achicarlo solo hace falta
   cambiar --logo-h aquí, no toca layout ni rompe nada alrededor. */
.logo-subido{--logo-h:42px;height:var(--logo-h);max-height:100%;width:auto;max-width:220px;object-fit:contain;display:block;flex-shrink:0}
.foot .logo-subido{--logo-h:40px;max-height:60px}
.brand .txt b{display:block;font-family:var(--display);font-size:1.02rem;color:var(--ink);line-height:1.1;font-weight:400}
.brand .txt span{font-family:var(--mono);font-size:.6rem;letter-spacing:.19em;text-transform:uppercase;color:var(--muted)}
.navlinks{display:flex;align-items:center;justify-content:space-between;gap:.08rem;flex:1;min-width:0}
.site-navgroup{position:relative;height:74px;display:flex;align-items:center}
.site-navgroup summary{list-style:none;display:flex;align-items:center;gap:.3rem;cursor:pointer;
  color:#3f6076;font-size:.79rem;font-weight:680;padding:.62rem .52rem;border-radius:9px;white-space:nowrap;
  transition:color .18s,background .18s;user-select:none}
.site-navgroup summary::-webkit-details-marker{display:none}
.site-navgroup summary::after{content:"";width:6px;height:6px;border-right:1.7px solid currentColor;border-bottom:1.7px solid currentColor;
  transform:rotate(45deg) translateY(-2px);transition:transform .2s;margin-left:.12rem}
.site-navgroup:hover summary,.site-navgroup:focus-within summary,.site-navgroup[open] summary{background:var(--mist);color:var(--deep)}
.site-navgroup[open] summary::after{transform:rotate(225deg) translate(-1px,-1px)}
.site-drop{position:absolute;top:calc(100% - 3px);left:0;width:260px;padding:.55rem;background:#fff;
  border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 42px rgba(6,38,60,.16);
  opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .18s,transform .18s,visibility .18s;z-index:60}
.site-navgroup:last-of-type .site-drop{left:auto;right:0}
.site-navgroup:hover .site-drop,.site-navgroup:focus-within .site-drop,.site-navgroup[open] .site-drop{opacity:1;visibility:visible;transform:none}
.navlinks .site-drop a{display:flex;align-items:center;justify-content:space-between;padding:.7rem .78rem;border-radius:8px;
  font-size:.83rem;border-bottom:1px solid var(--line-soft)}
.navlinks .site-drop a:last-child{border-bottom:0}.navlinks .site-drop a::after{content:"";color:var(--azure);font-size:1.05rem}
.envivo{display:flex;align-items:center;gap:.4rem;color:#a83440;font-weight:800;margin-left:.4rem}
.envivo:hover{color:#8a2a35}
.punto{width:9px;height:9px;border-radius:50%;background:#e0323f;flex-shrink:0;animation:pulso 1.6s ease-in-out infinite}
@keyframes pulso{0%,100%{box-shadow:0 0 0 0 rgba(224,50,63,.55)}50%{box-shadow:0 0 0 6px rgba(224,50,63,0)}}
@media(prefers-reduced-motion:reduce){.punto{animation:none}}
.navlinks a{text-decoration:none;font-size:.85rem;font-weight:600;color:#3f6076;padding:.5rem .68rem;
  border-radius:8px;white-space:nowrap;transition:color .18s,background .18s}
.navlinks a:hover{background:var(--mist);color:var(--deep)}
.navlinks a.active{color:var(--atlantic)}
.navlinks a.active::after{content:"";display:block;height:2px;background:var(--brass);border-radius:2px;margin-top:3px}
.navcta{margin-left:.5rem;display:inline-flex}
/* Llamada del programa: dorada, para que destaque sobre la barra blanca sin
   competir con el azul institucional de los enlaces. */
.navcta a{padding:.62rem 1.2rem;font-size:.85rem;font-weight:700;letter-spacing:.01em;white-space:nowrap}
.burger{display:none;background:var(--mist);border:1px solid var(--line);border-radius:10px;
  width:44px;height:44px;cursor:pointer;padding:0;position:relative}
.burger span{position:absolute;left:12px;right:12px;height:2px;background:var(--deep);border-radius:2px;transition:.25s}
.burger span:nth-child(1){top:15px}.burger span:nth-child(2){top:21px}.burger span:nth-child(3){top:27px}
.burger[aria-expanded=true] span:nth-child(1){top:21px;transform:rotate(45deg)}
.burger[aria-expanded=true] span:nth-child(2){opacity:0}
.burger[aria-expanded=true] span:nth-child(3){top:21px;transform:rotate(-45deg)}
.progress{position:absolute;left:0;bottom:-1px;height:2px;width:0;background:linear-gradient(90deg,var(--atlantic),var(--brass))}

/* ---------- hero ---------- */
.hero{position:relative;background:#04203a;color:#dbeaf3;overflow:hidden;isolation:isolate;
  min-height:clamp(420px,58vh,580px);display:flex;align-items:center}
.hero::before{content:"";position:absolute;inset:0;z-index:-3;
  background:radial-gradient(ellipse 62% 58% at 72% 34%,rgba(43,124,176,.40),transparent 64%),
             radial-gradient(ellipse 48% 60% at 88% 84%,rgba(184,137,63,.20),transparent 62%),
             linear-gradient(160deg,#04203a 0%,#072e4c 55%,#0a3a5f 100%)}
/* ---- escenario aéreo del hero ---- */
.skyfield{position:absolute;inset:0;z-index:-2;pointer-events:none;overflow:hidden}
.skymap{position:absolute;inset:0;
  background:url("../../assets/mapa-mundo.svg") center center / cover no-repeat;
  opacity:.85;filter:drop-shadow(0 0 22px rgba(60,150,215,.35))}
.skyarcs{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.skyarcs .arc{fill:none;stroke:url(#arcGrad);stroke-width:1.5;stroke-linecap:round}
.skyarcs .arc.soft{stroke:rgba(150,205,240,.34);stroke-width:1}
.skyarcs .orbit{fill:none;stroke:rgba(214,170,96,.30);stroke-width:1.2}
.skyarcs .orbit.thin{stroke:rgba(214,170,96,.16);stroke-width:.9}
.skyarcs .jet{fill:#eef5fb}
.skyarcs .estela{fill:none;stroke:url(#estelaGrad);stroke-width:3.4;stroke-linecap:round;opacity:.5}
.skyarcs .spark{fill:#ffe7bb}
.skyarcs .halo{fill:none;stroke:rgba(214,170,96,.55)}
.skyarcs .hubdot{fill:#f0cf90}
.skyarcs .hublabel{fill:rgba(240,214,171,.90);font-family:var(--mono);font-size:11px;
  letter-spacing:.22em;text-transform:uppercase}
@keyframes hubPulso{0%{r:14;opacity:.75}70%{r:46;opacity:0}100%{r:46;opacity:0}}
.skyarcs .pulso{animation:hubPulso 3.4s ease-out infinite}
.skyarcs .pulso.b{animation-delay:1.7s}
/* velo para que el texto siempre se lea sobre el mapa */
.hero::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(100deg,rgba(4,32,58,.94) 0%,rgba(4,32,58,.80) 34%,rgba(4,32,58,.30) 60%,rgba(4,32,58,.10) 100%)}
@media(prefers-reduced-motion:reduce){
  .skyarcs .pulso{animation:none;opacity:.25}
  .skyarcs .plane,.skyarcs .spark{display:none}
}
.hero .wrap{position:relative;z-index:2;display:grid;grid-template-columns:1.3fr .7fr;
  gap:clamp(2rem,5vw,4.5rem);align-items:center;padding-block:clamp(.9rem,2vw,1.6rem);width:100%}
.hero h1{text-shadow:0 2px 30px rgba(2,18,34,.45)}
.hero .eyebrow{color:#8fc4e4}
.hero .eyebrow.slogan{display:block;color:var(--oro)!important;font-family:"Great Vibes",cursive!important;
  font-style:normal!important;font-weight:400;text-transform:none;letter-spacing:0;
  font-size:clamp(1.3rem,2.6vw,1.9rem);line-height:1.3}
.hero h1{color:#fff;font-size:clamp(2.4rem,5.6vw,4.35rem);line-height:1.04;letter-spacing:-.032em;margin-bottom:.6rem}
.hero h1,.hero h1 *{font-family:var(--display)!important;color:#fff!important}
.hero p.lead{color:#c3dcec;max-width:56ch;margin:.5rem 0}
.hero .actions{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:1rem}
.hero .btn.ghost{color:#dbeaf3;border-color:rgba(255,255,255,.32)}
.hero .btn.ghost:hover{background:rgba(255,255,255,.1);color:#fff;border-color:rgba(255,255,255,.5)}

/* cuenta atrás */
.countdown{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:rgba(255,255,255,.16);
  border-top:1px solid rgba(255,255,255,.16)}
.cd-unit{background:var(--deep);padding:.85rem .5rem;text-align:center}
.cd-unit b{display:block;font-family:var(--display);font-size:1.9rem;color:#fff;line-height:1;font-weight:400}
.cd-unit span{font-family:var(--mono);font-size:.56rem;letter-spacing:.14em;text-transform:uppercase;color:#8fb6ce}

/* tarjeta de datos esenciales */
/* Cabecera institucional sobre la tarjeta: aqui el fondo es blanco, que
   es lo unico que respeta los colores oficiales de la OACI, del escudo y
   de la bandera. */
.factlogo{background:#fff;padding:.85rem 1rem .7rem}
.factlogo img{display:block;width:100%;height:auto}
/* La cabecera institucional respeta el alto configurado por idioma y recorta
   unicamente el lienzo blanco sobrante superior/inferior. La imagen no se
   reescala por este recorte: el contenedor simplemente oculta esos margenes. */
.factlogo.cabecera-admin{--cabecera-offset-y:8px;padding:0;overflow:hidden;height:calc(var(--cabecera-alto,199px) - var(--cabecera-recorte-top,24px) - var(--cabecera-recorte-bottom,30px));position:relative;line-height:0}
.factlogo.cabecera-admin img{display:block;width:auto;max-width:100%;height:var(--cabecera-alto,199px);object-fit:contain;margin-inline:auto;transform:translateY(calc(var(--cabecera-offset-y,8px) - var(--cabecera-recorte-top,24px)))}
/* Franja de logotipos administrada desde el panel: reparte los que haya (uno,
   tres o siete) en una fila que se parte sola, con un alto comun y separadores
   finos. El alto se hereda de --logo-alto, que fija el panel. */
.factlogo.lista{--logo-alto:42px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
  gap:.55rem .9rem;padding:.95rem 1rem}
.factlogo.lista .factlogo-item{display:inline-flex;align-items:center;justify-content:center;
  position:relative;padding:0 .45rem;max-width:100%}
.factlogo.lista .factlogo-item+.factlogo-item::before{content:"";position:absolute;left:-.45rem;top:12%;
  bottom:12%;width:1px;background:var(--line-soft)}
.factlogo.lista img{width:auto;height:var(--logo-alto);max-height:var(--logo-alto);max-width:100%;object-fit:contain}
/* Cabecera completa en una sola imagen: manda el ancho, no el alto. */
.factlogo.lista.unica{display:block;padding:.85rem 1rem .7rem}
.factlogo.lista.unica .factlogo-item{display:block;width:100%;padding:0}
.factlogo.lista.unica img{width:100%;height:auto;max-height:none}
.ficha-enlace{color:inherit;font:inherit;letter-spacing:inherit;
  text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}
.ficha-enlace:hover{color:var(--atlantic)}
.factcard{background:#fff;color:var(--ink);border-radius:var(--r-lg);box-shadow:var(--shadow-l);
  overflow:hidden;max-width:460px;margin-left:auto}
.factcard .top{background:linear-gradient(120deg,var(--deep),var(--atlantic));color:#fff;padding:1.15rem 1.4rem}
.factcard .top b{font-family:var(--display);font-size:1.15rem;font-weight:400;display:block;color:#fff}
.factcard .top span{font-family:var(--mono);font-size:.63rem;letter-spacing:.17em;text-transform:uppercase;color:#a8cde4}
.facts{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line-soft);margin:0}
.facts>div{background:#fff;padding:.9rem 1.15rem}
.facts>div.destacado{background:linear-gradient(180deg,#f7fbfd,#fff)}
.facts>div.ancho{grid-column:1/-1}
.facts dt{font-family:var(--mono);font-size:.58rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:.15rem}
.facts dd{margin:0;font-weight:650;color:var(--ink);font-size:1rem;line-height:1.25}
.facts dd small{display:block;font-weight:500;font-size:.78rem;color:var(--muted);letter-spacing:0}
.facts dd .grande{font-family:var(--display);font-weight:400;font-size:1.35rem;letter-spacing:-.02em;color:var(--atlantic)}
/* La celda del registro es la mitad de ancha que la de fechas, asi que la
   fecha se deja en bloque para que parta limpia si hace falta, pero sin tocar
   familia ni tamano: son los mismos que los de "7-11 diciembre". */
.facts dd .grande{display:block;line-height:1.2}
.factnote{padding:1.1rem 1.4rem;background:var(--mist);border-top:1px solid var(--line-soft);font-size:.85rem;line-height:1.55}
.factnote b{color:var(--deep)}

/* ---------- secciones ---------- */
/* Ritmo vertical compacto desde la bienvenida presidencial. Al compartir una
   unica regla, las secciones conservan la misma distancia aunque el flujo se
   reordene desde JavaScript o desde los nomencladores. */
.sec{padding-block:clamp(2.25rem,4vw,3.75rem)}
/* Solo se pinta lo que se ve: alivia el coste de una pagina unica tan larga */
.gallery-viewport{content-visibility:auto;contain-intrinsic-size:auto 340px}
.sec.junto-arriba{padding-top:0}
/* Acerca estas secciones a la anterior reduciendo a la mitad su entrada. */
.sec.entrada-media{padding-top:clamp(1.35rem,2.5vw,2.25rem)}
.sec.mist{background:var(--mist)}
.sec.dark{background:var(--midnight);color:#c3dcec}
.sec.dark h2,.sec.dark h3{color:#fff}
.sec.dark .eyebrow{color:#8fc4e4}
.sec.dark .lead{color:#b7d3e5}

/* divisores de eje */
.axis{background:linear-gradient(115deg,var(--deep),var(--atlantic) 65%,#14608e);color:#fff;position:relative;overflow:hidden}
.axis::after{content:"";position:absolute;right:-60px;top:-70px;width:290px;height:290px;border-radius:50%;
  border:1px solid rgba(255,255,255,.14)}
.axis .wrap{padding-block:clamp(1.8rem,3.2vw,2.6rem);position:relative;z-index:1}
.axis .rule{width:54px;height:3px;background:#f0d6ab;border-radius:2px;margin-bottom:1rem}
.axis h2{color:#fff;font-size:clamp(1.4rem,2.8vw,2.05rem);margin-bottom:.35rem}
.axis p{margin:0;color:#c9e0ef;font-size:.96rem;max-width:none;text-wrap:balance}

/* ---------- bienvenida presidencial (una sola imagen completa) ---------- */
.pres-full{background:#001b35;padding-top:0}
.pres-full .wrap{padding-block:0;display:flex;justify-content:center}
.pres-full img{display:block;width:auto;max-width:100%;height:auto;max-height:var(--pres-h,640px);object-fit:contain}.pres-foto-vacio{display:flex;align-items:center;justify-content:center;text-align:center;
  min-height:220px;padding:2rem;color:#9fc0d6;font-size:.9rem;line-height:1.5}
/* Desde el bloque presidencial, los textos editoriales mantienen bordes
   uniformes en todos los idiomas sin alterar botones, cifras ni titulares. */
#eje1 ~ section p{text-align:justify;text-justify:inter-word;hyphens:auto}
/* Las entradillas bajo cada título son textos de presentación. En párrafos
   cortos el justificado crea huecos exagerados; se mantienen con espaciado
   natural, mientras el cuerpo editorial largo continúa justificado. */
#eje1 ~ section .hd > p.lead{text-align:start;text-justify:auto;word-spacing:normal;hyphens:none}

/* ---------- rejillas y tarjetas ---------- */
.grid{display:grid;gap:1.1rem}
.g2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(275px,1fr))}
.g4{grid-template-columns:repeat(auto-fit,minmax(232px,1fr))}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:1.5rem;
  box-shadow:var(--shadow-s);transition:transform .22s,box-shadow .22s,border-color .22s}
.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-m);border-color:var(--sky)}
.card h3{font-size:1.05rem;margin-bottom:.5rem}
.card p{font-size:.93rem}
.card .num{font-family:var(--display);font-size:2.1rem;color:var(--atlantic);line-height:1;
  display:block;margin-bottom:.7rem;font-weight:400}
.card .ic{font-size:1.6rem;line-height:1;display:block;margin-bottom:.7rem}
/* Información práctica: fondo original de sección y azul claro solo en fichas. */
#viaje .art-info{background:var(--card-soft);border-color:var(--line)}
#viaje .art-info:hover{background:var(--card-soft-hover);border-color:var(--sky)}
/* imagen de ficha (Informacion practica): NO ampliable, no reacciona al clic */
.card .ic-img{display:block;margin-bottom:.9rem;line-height:0;text-align:center}
.card .ic-img img{height:56px;width:auto;max-width:100%;object-fit:contain;display:block;
  margin-inline:auto;cursor:default;pointer-events:none;user-select:none;-webkit-user-drag:none}
.art-info .info-actions{display:flex;align-items:stretch;gap:.42rem;flex-wrap:nowrap;margin-top:.9rem}
.art-info .info-actions .btn{display:inline-flex;align-items:center;justify-content:center;flex:1 1 0;width:auto;min-width:0;min-height:34px;
  margin:0;padding:.4rem .55rem;border:1px solid var(--atlantic);border-radius:999px;background:var(--atlantic);
  color:#fff;font-size:.7rem;font-weight:700;line-height:1.12;text-align:center;white-space:normal;text-decoration:none;box-shadow:0 4px 10px rgba(15,79,120,.16)}
.art-info .info-actions .btn:hover{background:var(--deep);border-color:var(--deep);color:#fff;transform:translateY(-1px)}
.art-info .info-actions .btn:focus-visible{outline:3px solid rgba(62,131,180,.3);outline-offset:2px}
/* Tarjetas dentro de una seccion oscura: caja clara y letra oscura, con el
   mismo tono que el resto de tarjetas del sitio (--card-soft). */
.sec.dark .card{background:var(--card-soft);border-color:rgba(255,255,255,.16);box-shadow:var(--shadow-s);color:var(--body)}
.sec.dark .card:hover{background:var(--card-soft-hover);border-color:var(--azure)}
.sec.dark .card h3{color:var(--ink)}
.sec.dark .card p,.sec.dark .card li,.sec.dark .card span{color:var(--body)}
.sec.dark .card .bullets li::before{background:var(--azure)}
.sec.dark .card a{color:var(--atlantic)}

/* paneles */
.panels{display:grid;grid-template-columns:1fr 1fr;gap:1.3rem;margin-top:1.6rem}
.panel{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:1.7rem;box-shadow:var(--shadow-s)}
.panel h3{font-size:1.12rem;margin-bottom:.85rem}
.panel img{width:100%;height:210px;object-fit:cover;border-radius:var(--r);margin-bottom:1.1rem;background:var(--mist)}
.timeline{list-style:none;margin:0;padding:0}
.timeline li{display:grid;grid-template-columns:auto 1fr;gap:.95rem;padding:.7rem 0;border-bottom:1px solid var(--line-soft)}
.timeline li:last-child{border-bottom:0;padding-bottom:0}
.timeline .d{font-family:var(--mono);font-size:.68rem;letter-spacing:.09em;color:var(--deep);
  background:var(--sky);border-radius:6px;padding:.35rem .5rem;height:max-content;white-space:nowrap;font-weight:600}
.timeline .t{font-size:.93rem;color:var(--body)}
.timeline .t b{color:var(--ink);display:block;font-size:.95rem}
/* rutas del bloque de logistica: flex, para que la fila aguante con o sin
   miniatura y con o sin etiqueta corta sin descuadrarse */
.timeline.rutas li{display:flex;align-items:flex-start;gap:.95rem}
.timeline.rutas .t{flex:1;min-width:0}
.timeline .rimg{display:block;width:54px;height:54px;border-radius:8px;overflow:hidden;
  background:var(--mist);border:1px solid var(--line);flex-shrink:0}
.timeline .rimg img{width:100%;height:100%;object-fit:cover;display:block;
  cursor:default;pointer-events:none;user-select:none;-webkit-user-drag:none}
/* un solo panel visible: ocupa todo el ancho sin romper la caja */
.panels.uno{grid-template-columns:1fr}
@media(max-width:640px){
  .timeline.rutas li{flex-wrap:wrap}
  .timeline.rutas .t{flex-basis:100%}
}
.bullets{list-style:none;margin:0;padding:0}
.bullets li{position:relative;padding-left:1.3rem;margin-bottom:.7rem;font-size:.93rem}
.bullets li::before{content:"";position:absolute;left:0;top:.62em;width:7px;height:7px;border-radius:50%;background:var(--azure)}
.bullets li:last-child{margin-bottom:0}

/* avisos */
.note{border:1px solid var(--line);border-left:3px solid var(--atlantic);background:#fff;
  border-radius:0 var(--r) var(--r) 0;padding:1.05rem 1.3rem;font-size:.9rem;line-height:1.6;
  margin-top:1.8rem;color:var(--body)}
.note b{color:var(--deep)}

/* estadísticas */
.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:rgba(255,255,255,.14);
  border:1px solid rgba(255,255,255,.14);border-radius:var(--r-lg);overflow:hidden;margin-top:2.2rem}
.stat{background:var(--midnight);padding:1.5rem 1.4rem}
.stat>b{display:block;font-family:var(--display);font-size:clamp(1.7rem,3vw,2.35rem);color:#fff;
  line-height:1;margin-bottom:.5rem;letter-spacing:-.02em;font-weight:400}
.stat>span{font-family:var(--mono);font-size:.66rem;letter-spacing:.13em;text-transform:uppercase;color:#8fb6ce;line-height:1.5;display:block}
@media(max-width:1100px){.stats{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.stats{grid-template-columns:repeat(2,1fr)}}

/* buscador + directorio */
.search{position:relative;max-width:520px;margin-bottom:1.5rem}
.search input{width:100%;border:1px solid var(--line);border-radius:999px;padding:.85rem 1.15rem .85rem 2.9rem;
  font:inherit;font-size:.93rem;background:#fff;color:var(--ink)}
.search input::placeholder{color:var(--muted)}
.search svg{position:absolute;left:1.05rem;top:50%;transform:translateY(-50%);width:17px;height:17px;
  stroke:var(--muted);fill:none;stroke-width:2}
.empty{display:none;text-align:center;color:var(--muted);font-size:.9rem;padding:1.6rem;grid-column:1/-1}

/* fichas de contacto (agencias de viaje) */
.dircount{font-size:.84rem;color:var(--muted);margin:-.7rem 0 1.4rem}
.agc{background:var(--card-soft);border:1px solid var(--line);border-radius:var(--r);padding:1.5rem 1.4rem;
  box-shadow:var(--shadow-s);transition:transform .22s,box-shadow .22s,border-color .22s;
  display:flex;flex-direction:column}
.agc:hover{transform:translateY(-4px);box-shadow:var(--shadow-m);border-color:var(--sky);background:var(--card-soft-hover)}
.agc .hd{display:flex;align-items:center;gap:.85rem;margin-bottom:1.1rem}
.agc .mono{width:44px;height:44px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--atlantic),var(--azure));color:#fff;
  font-family:var(--display);font-size:1rem;font-weight:600;letter-spacing:.01em}
.agc .hd b{color:var(--ink);font-size:1.01rem;line-height:1.3}
.agc .acciones{display:flex;flex-direction:column;gap:.5rem;margin-top:auto}
.agc .acciones a{display:flex;align-items:center;gap:.6rem;font-size:.87rem;font-weight:600;
  color:var(--body);text-decoration:none;transition:color .2s}
.agc .acciones a:hover{color:var(--atlantic)}
.agc .acciones .ic{width:16px;text-align:center;flex-shrink:0;color:var(--azure);font-size:.9rem;line-height:1}

/* fichas con imagen */
.media{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;
  box-shadow:var(--shadow-s);display:flex;flex-direction:column;transition:transform .22s,box-shadow .22s}
.media:hover{transform:translateY(-5px);box-shadow:var(--shadow-m)}
.media .ph{position:relative;overflow:hidden;background:var(--mist)}
.media .ph img{width:100%;height:215px;object-fit:cover;transition:transform .5s ease;cursor:zoom-in}
.media:hover .ph img{transform:scale(1.05)}
.media .ph .code{position:absolute;top:.75rem;right:.75rem;background:rgba(6,38,60,.86);color:#fff;
  font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;padding:.32rem .58rem;border-radius:5px;
  text-transform:uppercase;max-width:75%;text-align:right;line-height:1.3}
.media .bd{padding:1.2rem 1.35rem 1.4rem;flex:1;display:flex;flex-direction:column}
.media .bd b{font-size:1.04rem;color:var(--ink);display:block;line-height:1.3}
.media .bd .meta{font-size:.87rem;color:var(--body);margin-top:.5rem;line-height:1.6;flex:1}
.media .bd .chip{margin-top:.8rem;align-self:flex-start}
.media .bd .acciones{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.85rem}
.media .bd .acciones a{font-size:.79rem;font-weight:650;text-decoration:none;color:var(--atlantic);
  border:1px solid var(--line);border-radius:999px;padding:.3rem .75rem;transition:.2s}
.media .bd .acciones a:hover{background:var(--atlantic);color:#fff;border-color:var(--atlantic)}

/* aerolíneas */
.filters{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1.5rem}
.filters button{font-family:var(--sans);font-size:.84rem;font-weight:620;border:1px solid var(--line);
  background:#fff;color:#4a6b80;border-radius:999px;padding:.5rem 1rem;cursor:pointer;transition:.2s}
.filters button:hover{border-color:var(--azure);color:var(--deep)}
.filters button.on{background:var(--midnight);border-color:var(--midnight);color:#fff}
.airline{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:1.3rem;text-align:center;
  display:flex;flex-direction:column;align-items:center;transition:transform .22s,box-shadow .22s}
.airline:hover{transform:translateY(-4px);box-shadow:var(--shadow-m)}
.airline .logo{width:100%;height:124px;display:grid;place-items:center;background:#fff;
  border:1px solid var(--line-soft);border-radius:10px;padding:.9rem;margin-bottom:1rem}
.airline .logo-link{display:block;width:100%;text-decoration:none;border-radius:10px}
.airline .logo-link .logo{transition:border-color .2s,box-shadow .2s,transform .2s}
.airline .logo-link:hover .logo{border-color:var(--azure);box-shadow:0 8px 20px rgba(15,79,120,.12);transform:translateY(-2px)}
.airline .logo-link:focus-visible{outline:3px solid rgba(43,124,176,.3);outline-offset:3px}
.airline .logo img{max-height:96px;max-width:92%;object-fit:contain;cursor:pointer}
.airline .logo .sinlogo{font-family:var(--display);font-size:1.5rem;color:var(--atlantic);line-height:1.15;text-align:center}
.airline .enlace{display:inline-block;margin-top:.65rem;font-size:.8rem;font-weight:650;text-decoration:none;
  color:var(--atlantic);border:1px solid var(--line);border-radius:999px;padding:.3rem .8rem;transition:.2s}
.airline .enlace:hover{background:var(--atlantic);color:#fff;border-color:var(--atlantic)}
.airline h3{font-size:.99rem;margin-bottom:.4rem}
.airline p{font-size:.86rem;color:var(--muted)}
.airlines-block{margin:3.5rem calc(50% - 50vw) 0;padding-block:clamp(2.2rem,4vw,3.5rem);
  padding-inline:max(var(--pad),calc((100vw - var(--wrap))/2 + var(--pad)));background:#dcecf6;border-radius:0}
.airlines-block .hd{margin-top:0!important}
.airlines-block .hd h2{color:var(--deep)}
.airlines-block .hd .eyebrow{color:var(--atlantic)}
.airlines-block .hd .lead{color:var(--body)}
.airlines-block .filters button.on{background:var(--midnight);border-color:var(--midnight)}

/* Historia aeroportuaria: misma banda azul clara de Conectividad aérea.
   El texto se extiende para respetar el ancho editorial del sitio sin quedar
   comprimido por el max-width genérico de la galería. */
.history-airport-block{
  margin:0 calc(50% - 50vw) 3.5rem;
  padding-block:clamp(2.4rem,4vw,3.8rem);
  padding-inline:max(var(--pad),calc((100vw - var(--wrap))/2 + var(--pad)));
  background:#dcecf6;
  border-radius:0;
}
.history-airport-block .gallery-head{align-items:flex-end}
.history-airport-block .gallery-head .copy{
  flex:1 1 auto;
  max-width:min(1120px,calc(100% - 140px));
}
.history-airport-block .gallery-head h2{color:var(--deep)}
.history-airport-block .gallery-head .eyebrow{color:var(--atlantic)}
.history-airport-block .gallery-head p,
.history-airport-block .gallery-head .lead{
  max-width:none;
  width:100%;
  color:var(--body);
  line-height:1.72;
}
@media (max-width:800px){
  .history-airport-block{
    margin-bottom:2.5rem;
    padding-block:2rem;
  }
  .history-airport-block .gallery-head .copy{max-width:100%}
  .history-airport-block .gallery-head{align-items:flex-start}
}

/* ---------- centro de ayuda lateral ---------- */
#helpLauncher{position:fixed;left:18px;bottom:18px;z-index:60;display:inline-flex;align-items:center;gap:.6rem;
  background:#fff;color:var(--deep);border:1px solid var(--line);border-radius:999px;padding:.7rem 1rem .7rem .72rem;
  font-family:var(--sans);font-weight:700;font-size:.88rem;cursor:pointer;box-shadow:0 14px 34px rgba(6,38,60,.20);
  transition:transform .2s,box-shadow .2s,border-color .2s,background .2s}
#helpLauncher:hover{transform:translateY(-2px);box-shadow:0 18px 40px rgba(6,38,60,.27);border-color:var(--sky);background:var(--mist)}
#helpLauncher .help-icon{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--midnight);
  color:#fff;font-family:var(--display);font-size:1.25rem;font-weight:700;line-height:1;box-shadow:0 5px 14px rgba(6,38,60,.22)}
.help-backdrop{position:fixed;inset:0;z-index:68;background:rgba(4,20,32,.54);backdrop-filter:blur(3px);
  opacity:0;visibility:hidden;pointer-events:none;transition:opacity .25s,visibility .25s}
.help-backdrop.open{opacity:1;visibility:visible;pointer-events:auto}
.help-drawer{position:fixed;inset:0 auto 0 0;z-index:69;width:min(430px,calc(100vw - 22px));background:#fff;
  box-shadow:24px 0 70px rgba(4,20,32,.26);display:flex;flex-direction:column;transform:translateX(-104%);
  visibility:hidden;transition:transform .3s cubic-bezier(.22,.61,.36,1),visibility .3s}
.help-drawer.open{transform:none;visibility:visible}
.help-head{background:linear-gradient(125deg,var(--midnight),var(--atlantic));color:#fff;padding:1.35rem 1.35rem 1.25rem;
  display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}
.help-head .help-kicker{display:block;font-family:var(--mono);font-size:.61rem;letter-spacing:.16em;text-transform:uppercase;
  color:#9fc9e2;margin-bottom:.35rem}
.help-head h2{color:#fff;font-family:var(--display);font-size:1.65rem;font-weight:400;letter-spacing:-.02em}
.help-close{width:38px;height:38px;flex:0 0 auto;border:1px solid rgba(255,255,255,.18);border-radius:50%;
  background:rgba(255,255,255,.12);color:#fff;font-size:1.45rem;line-height:1;cursor:pointer;transition:background .2s}
.help-close:hover{background:rgba(255,255,255,.23)}
.help-body{flex:1;overflow-y:auto;padding:1.25rem;background:linear-gradient(180deg,#f7fbfd 0,#fff 170px)}
.help-intro{font-size:.92rem;line-height:1.65;color:var(--body);margin-bottom:1rem}
.help-faq{display:grid;gap:.58rem}
.help-faq details{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:var(--shadow-s);
  transition:border-color .2s,box-shadow .2s}
.help-faq details[open]{border-color:var(--sky);box-shadow:0 10px 26px rgba(6,38,60,.08)}
.help-faq summary{cursor:pointer;padding:.9rem 1rem;font-weight:680;color:var(--ink);font-size:.91rem;line-height:1.4;
  list-style:none;display:flex;justify-content:space-between;align-items:center;gap:.85rem}
.help-faq summary::-webkit-details-marker{display:none}
.help-faq summary::after{content:"+";width:25px;height:25px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;
  background:var(--mist);color:var(--atlantic);font-family:var(--mono);font-size:1rem;transition:transform .22s,background .22s}
.help-faq details[open] summary::after{transform:rotate(45deg);background:var(--sky)}
.help-faq .ans{padding:0 1rem 1rem;font-size:.87rem;line-height:1.62;color:var(--body)}
.help-foot{padding:1rem 1.25rem 1.2rem;border-top:1px solid var(--line);background:#fff}
.help-foot p{font-size:.82rem;color:var(--muted);margin-bottom:.75rem}
.help-contact{width:100%;box-shadow:none}

/* recursos */
.res{display:flex;justify-content:space-between;align-items:center;gap:1.3rem;flex-wrap:wrap;
  background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:1.3rem 1.5rem;box-shadow:var(--shadow-s)}
.res b{color:var(--ink);font-size:1rem;display:block}
.res .meta{font-size:.87rem;color:var(--muted);margin-top:.2rem}
.reslist{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:.65rem;margin-top:1.3rem}
.reslist span{background:#fff;border:1px solid var(--line);border-radius:10px;padding:.75rem .95rem;
  font-size:.87rem;color:var(--body);display:flex;align-items:center;gap:.55rem}
.reslist span::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--azure);flex-shrink:0}

/* ---------- patrocinadores ---------- */
.sponsor-stack{display:flex;flex-direction:column}
.sponsor-block{min-width:0}
.tier{margin-top:2.9rem}
.tier:first-of-type{margin-top:2rem}
.tierhead{display:flex;align-items:center;gap:.85rem;flex-wrap:wrap;padding-bottom:.75rem;border-bottom:1px solid var(--line)}
.tierhead .code{font-family:var(--mono);font-size:.63rem;letter-spacing:.2em;text-transform:uppercase;
  font-weight:700;color:#fff;padding:.34rem .75rem;border-radius:5px;white-space:nowrap}
.tierhead h3{font-family:var(--display);font-weight:400;font-size:clamp(1.15rem,2.1vw,1.55rem);letter-spacing:-.02em}
.tierhead .slots{margin-left:auto;font-family:var(--mono);font-size:.65rem;letter-spacing:.13em;
  text-transform:uppercase;color:var(--muted);white-space:nowrap}
.tierdesc{font-size:.89rem;color:var(--muted);margin:.85rem 0 0;max-width:84ch}

/* niveles destacados (p. ej. Diamante, Platino): ficha ancha con logo, descripción y enlaces */
.wall.top{display:grid;gap:1.1rem;margin-top:1.5rem;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
.spot{background:#fff;border:1px solid var(--line);border-left:4px solid var(--acc,var(--atlantic));
  border-radius:var(--r-lg);overflow:hidden;display:flex;box-shadow:var(--shadow-s);
  transition:transform .22s,box-shadow .22s,border-color .22s}
.spot:hover{transform:translateY(-4px);box-shadow:var(--shadow-m)}
.spot .logo{width:150px;flex:0 0 auto;display:grid;place-items:center;padding:1.2rem;background:var(--mist)}
.spot .logo img{max-width:100%;max-height:100%;object-fit:contain}
.spot .logo .ini{font-family:var(--display);font-size:1.7rem;color:var(--atlantic);font-weight:400;
  letter-spacing:.03em;display:grid;place-items:center;width:64px;height:64px;border-radius:50%;
  background:#fff;border:1px solid var(--line)}
.spot .bd{padding:1.25rem 1.5rem;flex:1;display:flex;flex-direction:column;gap:.5rem;min-width:0}
.spot .bd b{font-size:1.06rem;color:var(--ink);line-height:1.3}
.spot .bd .meta{font-size:.87rem;color:var(--body);line-height:1.6}
.spot .links{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;margin-top:.15rem}
.spot .links a{font-size:.78rem;font-weight:640;text-decoration:none;color:var(--atlantic);
  border:1px solid var(--line);border-radius:999px;padding:.3rem .7rem;transition:.2s}
.spot .links a:hover{background:var(--atlantic);color:#fff;border-color:var(--atlantic)}

/* resto de niveles: malla limpia de solo logotipos, sin caja ni sombra individual */
.wall.logos{display:grid;gap:1.7rem 1.3rem;margin-top:1.5rem;
  grid-template-columns:repeat(auto-fill,minmax(140px,1fr));
  padding:1.7rem 1.5rem;border-radius:var(--r-lg)}
.tile{display:flex;flex-direction:column;align-items:center;gap:.6rem;text-decoration:none}
.tile .ph{width:100%;max-width:150px;aspect-ratio:16/10;display:grid;place-items:center;padding:.3rem}
.tile .ph img{max-width:100%;max-height:100%;object-fit:contain;filter:grayscale(.2);opacity:.88;
  transition:filter .2s,opacity .2s}
a.tile:hover .ph img{filter:none;opacity:1}
.tile .ph .ini{font-family:var(--display);font-size:1.15rem;color:var(--atlantic);font-weight:400;
  display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:#fff;border:1px solid var(--line)}
.tile .nm{font-size:.74rem;color:var(--muted);text-align:center;line-height:1.3;font-weight:650}
a.tile:hover .nm{color:var(--atlantic)}

.sp-vacio{background:#fff;border:1px dashed var(--line);border-radius:var(--r);padding:2.2rem;
  text-align:center;color:var(--muted);font-size:.92rem;margin-top:1.4rem}

/* tarjetas de clasificación de patrocinio */
.plans{display:grid;gap:1.3rem;margin-top:1.7rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
.plan{background:#fff;border:1px solid var(--line);border-top:4px solid var(--acc,var(--atlantic));
  border-radius:var(--r-lg);padding:1.7rem 1.5rem;display:flex;flex-direction:column;position:relative;
  box-shadow:var(--shadow-s);transition:transform .22s,box-shadow .22s}
.plan:hover{transform:translateY(-5px);box-shadow:var(--shadow-m)}
.plan.top{background:linear-gradient(165deg,var(--midnight),var(--deep));color:#fff;
  box-shadow:var(--shadow-l);border-top-color:transparent}
.plan.top .plan-cat{color:#fff}
.plan.top .plan-cod{color:#9fc6df}
.plan.top .plan-benef li{color:#c3dcec}
.plan.top .plan-benef li::before{background:#8fc4e4}
.plan.top .plan-benef.txt{color:#c3dcec}
.plan.top .plan-slots{color:#a8cde4}
.plan.top .plan-slots b{color:#fff}
.plan .ribbon{position:absolute;top:-11px;right:1.4rem;background:var(--brass);color:#fff;
  font-family:var(--mono);font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;
  padding:.32rem .75rem;border-radius:999px;font-weight:700;box-shadow:0 4px 10px rgba(0,0,0,.22)}
.plan-cat{display:flex;align-items:center;gap:.55rem;font-size:1.05rem;font-weight:700;color:var(--ink)}
.plan-cat .dot{width:11px;height:11px;border-radius:3px;flex:0 0 auto}
.plan-cod{font-family:var(--mono);font-size:.63rem;letter-spacing:.16em;color:var(--muted);
  text-transform:uppercase;margin:.55rem 0 1.15rem}
.plan-benef{list-style:none;margin:0 0 1.3rem;padding:0;flex:1}
.plan-benef li{position:relative;padding-left:1.3rem;margin-bottom:.6rem;font-size:.87rem;
  color:var(--body);line-height:1.5}
.plan-benef li::before{content:"";position:absolute;left:0;top:.5em;width:6px;height:6px;
  border-radius:50%;background:var(--azure)}
.plan-benef.txt{font-size:.87rem;color:var(--body);line-height:1.6}
.plan-slots{font-family:var(--mono);font-size:.68rem;letter-spacing:.06em;color:var(--muted);margin-bottom:1.15rem}
.plan-slots b{color:var(--jade)}
.plan-slots.lleno b{color:var(--muted)}
.plan .solicitar{display:flex;align-items:center;justify-content:center;gap:.35rem;
  font-size:.86rem;font-weight:650;text-decoration:none;color:#fff;background:var(--atlantic);
  border-radius:999px;padding:.68rem 1rem;transition:.2s;margin-top:auto}
.plan .solicitar:hover{background:var(--deep)}
.plan .solicitar::before{content:"+";font-family:var(--mono);font-weight:700}
.plan.top .solicitar{background:#fff;color:var(--deep)}
.plan.top .solicitar:hover{background:var(--sky)}
.plan .completo{display:block;text-align:center;font-size:.82rem;font-weight:650;color:var(--muted);
  margin-top:auto;padding:.68rem 0}
.plan.top .completo{color:#a8cde4}
.spcta{display:grid;grid-template-columns:1.5fr auto;gap:2rem;align-items:center;margin-top:3rem;
  background:linear-gradient(120deg,var(--midnight),var(--atlantic));color:#fff;border-radius:var(--r-lg);
  padding:clamp(1.7rem,3.5vw,2.6rem);position:relative;overflow:hidden}
.spcta::after{content:"";position:absolute;right:-70px;bottom:-90px;width:270px;height:270px;
  border-radius:50%;border:1px solid rgba(255,255,255,.16)}
.spcta>div{position:relative;z-index:1}
.spcta h3{color:#fff;font-family:var(--display);font-weight:400;font-size:clamp(1.3rem,2.6vw,1.85rem);margin-bottom:.6rem}
.spcta p{color:#c3dcec;font-size:.94rem;margin:0;max-width:64ch}

/* ---------- pie ---------- */
.foot{background:var(--midnight);color:#9fbdd0;padding-top:clamp(2.8rem,5vw,4rem)}
.footgrid{display:grid;grid-template-columns:1.45fr repeat(4,minmax(130px,1fr));gap:2rem}
.foot h4{color:#fff;font-family:var(--mono);font-size:.68rem;letter-spacing:.19em;text-transform:uppercase;
  font-weight:600;margin-bottom:1rem}
.foot a{color:#bcd6e6;text-decoration:none;font-size:.9rem;display:block;padding:.24rem 0;transition:color .18s}
.foot a:hover{color:#fff}
.foot p{font-size:.89rem;line-height:1.7}
.foot .brandline{display:flex;align-items:center;gap:.8rem;margin-bottom:1.1rem}
.foot .brandline .mark{width:44px;height:44px;border-radius:11px;background:rgba(255,255,255,.09);
  border:1px solid rgba(255,255,255,.16);color:#fff;display:grid;place-items:center;
  font-family:var(--mono);font-size:.6rem;font-weight:700;line-height:1.15;text-align:center}
.foot .brandline b{font-family:var(--display);font-size:1.1rem;color:#fff;font-weight:400}
.footbase{margin-top:2.6rem;border-top:1px solid rgba(255,255,255,.11);padding-block:1.3rem;
  display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;
  font-family:var(--mono);font-size:.65rem;letter-spacing:.11em;text-transform:uppercase;color:#7b9cb2}
.footlangs{margin-top:1.2rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.1)}
.footlangs>span{display:block;color:#fff;font-family:var(--mono);font-size:.62rem;letter-spacing:.15em;text-transform:uppercase;margin-bottom:.65rem}
.footlangs .langsel a{color:#bcd6e6}.footlangs .langsel a.on{color:var(--midnight)}

/* ---------- ampliacion progresiva del mapa web ---------- */
.arch-sec{background:#fff}.arch-sec.alt{background:var(--mist)}
.arch-intro{display:flex;justify-content:space-between;gap:2rem;align-items:end;margin-bottom:1.8rem}
.arch-intro .hd{margin-bottom:0}.arch-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:1.25rem;align-items:stretch}
.arch-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.arch-card{position:relative;min-height:220px;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:1.45rem;box-shadow:var(--shadow-s);overflow:hidden;display:flex;flex-direction:column}
.arch-sec:not(.alt) .arch-card{background:var(--card-soft)}
.arch-code{display:inline-block;font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--atlantic);margin-bottom:.75rem}
.arch-card h3{font-size:1.08rem;margin-bottom:.55rem}.arch-card p{font-size:.91rem;color:var(--body)}
.arch-meta{margin-top:.85rem;font-family:var(--mono);font-size:.65rem;letter-spacing:.08em;color:var(--muted);text-transform:uppercase}
.arch-img{aspect-ratio:16/9;min-height:170px;margin:-1.45rem -1.45rem 1.1rem;overflow:hidden;background:#dcecf6}
.arch-img img{width:100%;height:100%;object-fit:cover}.arch-card .btn{margin-top:1rem;padding:.58rem 1rem;font-size:.78rem}
.arch-card .arch-meta{margin-top:auto;padding-top:1rem}.arch-card .btn{align-self:flex-start}
.arch-plano{min-height:320px}.arch-plano .arch-img{min-height:210px}
.arch-agenda{border-top:4px solid var(--atlantic)}
.oaci-message{display:grid;grid-template-columns:minmax(0,.42fr) minmax(0,1fr);background:linear-gradient(120deg,var(--midnight),var(--atlantic));color:#fff;border-radius:var(--r-lg);overflow:hidden}
.oaci-sign{display:grid;place-items:center;min-height:250px;padding:2rem;border-right:1px solid rgba(255,255,255,.15);font-family:var(--display);font-size:clamp(2.8rem,7vw,5.5rem);color:#e7c781}
.oaci-list{display:grid;gap:1.25rem}.oaci-sign img{width:100%;height:100%;max-height:310px;object-fit:cover;border-radius:10px}
.oaci-copy{padding:clamp(1.6rem,4vw,3rem)}.oaci-copy h3{color:#fff;font-family:var(--display);font-size:clamp(1.6rem,3vw,2.35rem);font-weight:400}
.oaci-copy p{color:#c9deeb;margin-top:.8rem}.oaci-copy .arch-meta{color:#91bdd7}
.press-card{border-left:4px solid var(--brass)}
@media(max-width:820px){.arch-grid,.arch-grid.two{grid-template-columns:1fr}.arch-intro{display:block}.oaci-message{grid-template-columns:1fr}.oaci-sign{min-height:120px;border-right:0;border-bottom:1px solid rgba(255,255,255,.15)} }

/* ---------- botón subir ---------- */
.totop{position:fixed;right:18px;bottom:88px;z-index:45;width:46px;height:46px;border-radius:50%;
  background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-m);cursor:pointer;
  display:grid;place-items:center;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;color:var(--deep)}
.totop.show{opacity:1;pointer-events:auto}
.totop:hover{transform:translateY(-3px)}

/* ---------- galería visual ---------- */
.gallery-sec{padding-block:clamp(2.2rem,4vw,3.6rem);background:#fff;overflow:hidden}
.gallery-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1.5rem;margin-bottom:1.5rem}
.gallery-head .copy{max-width:760px}
.gallery-head h2{font-size:clamp(1.8rem,3.6vw,2.65rem);margin-bottom:.65rem}
.gallery-head p{color:var(--body);max-width:68ch;font-size:.96rem}
/* Cabecera de Salas: banda independiente del contenido audiovisual. */
#salas>.wrap>.salas-intro-band{position:relative;isolation:isolate;padding-block:clamp(2.25rem,4vw,3.75rem);margin-top:calc(-1 * clamp(2.25rem,4vw,3.75rem));margin-bottom:clamp(2rem,3.5vw,3rem)}
#salas>.wrap>.salas-intro-band.cabecera-azul::before{content:"";position:absolute;z-index:-1;inset:0 50%;width:100vw;transform:translateX(-50%);background:#001f3d}
#salas>.wrap>.salas-intro-band.cabecera-azul .eyebrow,
#salas>.wrap>.salas-intro-band.cabecera-azul h2,
#salas>.wrap>.salas-intro-band.cabecera-azul .lead{color:#fff!important;-webkit-text-fill-color:#fff!important;opacity:1!important}
.gallery-controls{display:flex;gap:.55rem;flex:0 0 auto}
.gallery-control{width:46px;height:46px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--deep);
  display:grid;place-items:center;cursor:pointer;box-shadow:var(--shadow-s);transition:transform .2s,background .2s,border-color .2s}
.gallery-control:hover{transform:translateY(-2px);background:var(--mist);border-color:var(--sky)}
.gallery-control svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.gallery-viewport{overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;overscroll-behavior-inline:contain;
  scrollbar-width:thin;scrollbar-color:var(--sky) transparent;padding:.25rem .1rem .8rem}
.gallery-track{display:flex;gap:1rem;width:max-content;min-width:100%}
.gallery-thumb{position:relative;flex:0 0 clamp(210px,24vw,292px);padding:0;border:1px solid var(--line);border-radius:var(--r);
  overflow:hidden;background:#fff;cursor:zoom-in;text-align:left;scroll-snap-align:start;box-shadow:var(--shadow-s);
  transition:transform .22s,box-shadow .22s,border-color .22s}
.gallery-thumb:hover{transform:translateY(-4px);box-shadow:var(--shadow-m);border-color:var(--sky)}
.gallery-thumb img{width:100%;height:178px;object-fit:cover;transition:transform .5s ease;background:var(--mist)}
.gallery-thumb:hover img{transform:scale(1.045)}
.gallery-thumb .gallery-caption{display:flex;align-items:center;justify-content:space-between;gap:.7rem;padding:.85rem 1rem;
  color:var(--ink);font-weight:650;font-size:.89rem;line-height:1.3;background:#fff}
.gallery-thumb .gallery-caption::after{content:"+";width:25px;height:25px;border-radius:50%;display:grid;place-items:center;
  flex:0 0 auto;background:var(--mist);color:var(--atlantic);font-family:var(--mono);font-size:1rem}
.gallery-status{font-family:var(--mono);font-size:.65rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:.65rem}
.gallery-viewport.compacta .gallery-thumb{flex-basis:clamp(150px,17vw,200px)}
.gallery-viewport.compacta .gallery-thumb img{height:118px}
.gallery-viewport.compacta .gallery-thumb .gallery-caption{padding:.6rem .75rem;font-size:.8rem}

/* Vídeos de las salas: bloque editorial integrado en la galería de sede. */
.room-video-headrow{display:flex;align-items:flex-end;justify-content:space-between;gap:1.5rem;margin-top:clamp(2.2rem,5vw,4.2rem);padding-top:clamp(1.4rem,3vw,2.2rem);border-top:1px solid var(--line)}
.room-video-heading{margin:0 0 1.35rem;min-width:0}
.room-video-heading h3{margin:.35rem 0 .45rem;font-family:var(--serif);font-size:clamp(1.65rem,3vw,2.35rem);font-weight:500;color:var(--deep)}
.room-video-heading p{margin:0;max-width:72ch;color:var(--body);font-size:1rem;line-height:1.65}
.room-video-controls{margin-bottom:1.35rem}
.room-video-viewport{max-width:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;overscroll-behavior-inline:contain;scrollbar-width:thin;scrollbar-color:var(--sky) transparent;padding:.25rem .15rem 1rem}
.room-video-track{display:flex;gap:clamp(.85rem,1.6vw,1.25rem);width:max-content;min-width:100%}
/* Tarjetas compactas: tres piezas visibles en un escritorio habitual, sin
   perder la proporcion 16:9 ni la lectura de los controles del reproductor. */
.room-video-card{flex:0 0 clamp(285px,28vw,370px);overflow:hidden;min-width:0;scroll-snap-align:start;border:1px solid var(--line);border-radius:calc(var(--r) + 2px);background:#fff;box-shadow:0 12px 28px rgba(6,38,60,.08);transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}
.room-video-card:hover{transform:translateY(-4px);border-color:rgba(44,132,177,.42);box-shadow:0 20px 44px rgba(6,38,60,.14)}
.room-video-media{position:relative;aspect-ratio:16/9;overflow:hidden;background:linear-gradient(135deg,#06263c,#145779)}
.room-video-media iframe,.room-video-media video,.room-video-link,.room-video-link img{display:block;width:100%;height:100%;border:0}
.room-video-media video,.room-video-link img{object-fit:cover}
.room-video-link{position:relative;color:#fff;text-decoration:none;background:radial-gradient(circle at 70% 25%,rgba(73,157,196,.55),transparent 38%),linear-gradient(135deg,#06263c,#145779)}
.room-video-link::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(1,25,42,.62));pointer-events:none}
.room-play{position:absolute;z-index:2;left:50%;top:50%;width:68px;height:68px;display:grid;place-items:center;transform:translate(-50%,-50%);border:1px solid rgba(255,255,255,.7);border-radius:50%;background:rgba(255,255,255,.94);box-shadow:0 12px 34px rgba(0,0,0,.24);transition:transform .25s ease,background .25s ease}
.room-play svg{width:27px;height:27px;margin-left:4px;fill:var(--deep)}
.room-video-link:hover .room-play{transform:translate(-50%,-50%) scale(1.08);background:#fff}
.room-video-duration{position:absolute;z-index:3;right:.75rem;bottom:.7rem;padding:.28rem .55rem;border-radius:999px;background:rgba(1,25,42,.86);color:#fff;font:700 .7rem/1.2 var(--sans);letter-spacing:.05em;box-shadow:0 4px 12px rgba(0,0,0,.18);pointer-events:none}
.room-video-copy{padding:.9rem 1rem 1rem}
.room-video-copy h4{margin:0;color:var(--deep);font-size:.98rem;line-height:1.3}
.room-video-copy p{margin:.45rem 0 0;color:var(--body);font-size:.84rem;line-height:1.5}
.organizers-section{background:#001b35;color:#fff;isolation:isolate}
.organizers-section .hd{margin-bottom:1.25rem}
/* Esta cabecera pertenece solo a su sección y queda fuera del editor visual:
   su autoridad es Admin > Organizadores. */
.organizers-section>.wrap>.hd .eyebrow,.organizers-section>.wrap>.hd h2,
.organizers-section>.wrap>.hd .lead{
  color:#fff!important;-webkit-text-fill-color:#fff!important;opacity:1!important}
.organizers-section>.wrap>.hd .eyebrow{letter-spacing:.22em}
.organizers-section>.wrap>.hd h2{font-family:var(--display);font-weight:400}
.gallery-viewport.organizadores .gallery-thumb{flex-basis:clamp(170px,19vw,230px)}
.gallery-viewport.organizadores .gallery-thumb img{height:145px;object-fit:contain;background:#fff;padding:1rem}
.gallery-viewport.organizadores .gallery-caption{justify-content:center;text-align:center;min-height:58px}
.gallery-viewport.organizadores .gallery-caption::after{display:none}

/* Organizadores: imagen + su parrafo, uno debajo de otro (orden desde el panel) */
.orglist{display:flex;flex-direction:column;gap:1.15rem;margin-top:1.6rem}
.orgitem{display:grid;grid-template-columns:210px 1fr;gap:1.6rem;align-items:start;
  background:var(--org-panel);border:1px solid var(--line);border-radius:var(--r);padding:1.5rem;
  box-shadow:var(--shadow-s);transition:box-shadow .22s,border-color .22s}
/* El blanco pertenece solo al encabezado exterior. Dentro de las tarjetas
   todos los textos recuperan contraste oscuro sobre el fondo blanco. */
.organizers-section .orgitem,.organizers-section .orgtxt,
.organizers-section .orgtxt h3,.organizers-section .orgtxt p,
.organizers-section .orgtxt span{color:var(--ink)!important}
.orgitem:hover{box-shadow:var(--shadow-m);border-color:var(--sky)}
/* La tarjeta entera va en el azul claro. Los dos recuadros interiores
   pierden fondo y borde para que el bloque se lea como una sola pieza. */
.orgimg{display:flex;align-items:center;justify-content:center;background:transparent;
  border:0;border-radius:calc(var(--r) - 4px);padding:1rem;min-height:130px;
  align-self:start}
.orgimg img{max-width:100%;max-height:110px;object-fit:contain;cursor:default;pointer-events:none;
  user-select:none;-webkit-user-drag:none}
/* con enlace externo configurado: la imagen si es pulsable */
.orgimg.con-enlace{transition:border-color .22s,background .22s}
.orgimg.con-enlace:hover img{filter:brightness(1.04)}
.orgimg.con-enlace a{display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.orgimg.con-enlace img{pointer-events:auto;cursor:pointer;transition:transform .25s ease}
.orgimg.con-enlace:hover img{transform:scale(1.04)}
.orgtxt{background:transparent;border:0;padding:0}
.orgtxt h3{font-size:1.06rem;margin-bottom:.55rem;color:var(--atlantic)}
.orgtxt p{font-size:.95rem;max-width:none}
.orgtxt p + p{margin-top:.75rem}
@media(max-width:760px){
  .room-video-headrow{align-items:flex-end;gap:.75rem}
  .room-video-heading{margin-bottom:1rem}
  .room-video-controls{margin-bottom:1rem;gap:.35rem}
  .room-video-controls .gallery-control{width:42px;height:42px}
  .room-video-card{flex-basis:min(78vw,320px)}
  .room-video-card:hover{transform:none}
  .room-play{width:58px;height:58px}
  .orgitem{grid-template-columns:1fr;gap:1.1rem;padding:1.2rem}
  .orgimg{min-height:112px;padding:.6rem}
}

/* ---------- visor de imágenes ---------- */
.visa-modal{position:fixed;inset:0;z-index:95;display:none;align-items:center;justify-content:center;
  padding:clamp(.8rem,3vw,2rem);background:rgba(4,20,32,.76);backdrop-filter:blur(4px)}
.visa-modal.open{display:flex}
.visa-dialog{position:relative;width:min(1040px,100%);max-height:min(88vh,820px);overflow:auto;background:#fff;
  border:1px solid rgba(255,255,255,.35);border-radius:var(--r-lg);box-shadow:0 28px 80px rgba(4,20,32,.42)}
.visa-head{padding:1.45rem 4.5rem 1.15rem 1.5rem;background:linear-gradient(120deg,var(--midnight),var(--atlantic));color:#fff}
.visa-head .eyebrow{color:#9fc9e2;margin-bottom:.35rem}
.visa-head h2{color:#fff;font-size:clamp(1.45rem,3vw,2rem);margin:0}
.visa-head p{color:#c8deeb;font-size:.88rem;margin:.45rem 0 0;max-width:72ch}
.visa-close{position:absolute;right:1rem;top:1rem;width:38px;height:38px;border:1px solid rgba(255,255,255,.28);
  border-radius:50%;background:rgba(255,255,255,.12);color:#fff;font-size:1.4rem;line-height:1;cursor:pointer}
.visa-close:hover{background:rgba(255,255,255,.24)}
.visa-body{padding:1.35rem 1.5rem 1.5rem}
.visa-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.visa-group{border:1px solid var(--line);border-radius:var(--r);padding:1.05rem;background:#f8fbfd}
.visa-group h3{font-size:1rem;color:var(--deep);margin:0 0 .7rem}
.visa-group p{font-size:.82rem;color:var(--body);margin:0 0 .7rem;line-height:1.5}
.visa-countries{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.42rem .7rem;list-style:none;margin:0;padding:0}
.visa-countries li{display:flex;align-items:center;gap:.48rem;min-width:0;padding:.38rem .5rem;border-radius:8px;
  background:#fff;border:1px solid var(--line-soft);font-size:.82rem;color:var(--ink);line-height:1.25}
.visa-countries .flag{display:block;width:24px;height:18px;object-fit:cover;border-radius:2px;box-shadow:0 0 0 1px rgba(6,38,60,.13);flex:0 0 auto}
.visa-note{margin:1rem 0 0;padding:.9rem 1rem;border-left:3px solid var(--brass);border-radius:0 9px 9px 0;
  background:#fff9ed;color:#5d4a2d;font-size:.8rem;line-height:1.55}
@media(max-width:720px){
  .visa-groups{grid-template-columns:1fr}
  .visa-countries{grid-template-columns:repeat(2,minmax(0,1fr))}
  .visa-head,.visa-body{padding-left:1rem;padding-right:1rem}
}
@media(max-width:430px){.visa-countries{grid-template-columns:1fr}}

.lightbox{position:fixed;inset:0;z-index:90;background:rgba(4,20,32,.93);display:none;
  place-items:center;padding:clamp(1rem,4vw,3rem)}
.lightbox.open{display:grid}
.lightbox figure{margin:0;max-width:1000px;width:100%}
.lightbox img{width:100%;max-height:74vh;object-fit:contain;border-radius:var(--r)}
.lightbox figcaption{color:#fff;text-align:center;margin-top:1.1rem}
.lightbox figcaption b{display:block;font-family:var(--display);font-size:1.2rem;font-weight:400;color:#fff}
.lightbox figcaption span{display:block;font-size:.87rem;color:#a9c6d8;margin-top:.35rem;max-width:70ch;margin-inline:auto}
.lightbox .x{position:absolute;top:1.2rem;right:1.2rem;width:44px;height:44px;border-radius:50%;
  background:rgba(255,255,255,.14);border:0;color:#fff;font-size:1.5rem;cursor:pointer;line-height:1}
.lightbox .x:hover,.lightbox .lbnav:hover{background:rgba(255,255,255,.24)}
.lightbox .lbnav{position:absolute;top:50%;transform:translateY(-50%);width:52px;height:52px;border-radius:50%;
  border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.13);color:#fff;display:grid;place-items:center;
  cursor:pointer;font-size:2rem;line-height:1;transition:background .2s,transform .2s}
.lightbox .lbnav:hover{transform:translateY(-50%) scale(1.04)}
.lightbox .lbprev{left:clamp(.65rem,2vw,1.6rem)}
.lightbox .lbnext{right:clamp(.65rem,2vw,1.6rem)}
.lightbox .lbnav[hidden],.lightbox .lbcount[hidden]{display:none}
.lightbox .lbcount{position:absolute;left:50%;top:1.35rem;transform:translateX(-50%);font-family:var(--mono);
  font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:#d7e8f2;background:rgba(6,38,60,.58);
  border:1px solid rgba(255,255,255,.14);border-radius:999px;padding:.38rem .8rem;white-space:nowrap}

/* ---------- chat ---------- */
#chatLauncher{position:fixed;right:18px;bottom:18px;z-index:60;display:inline-flex;align-items:center;gap:.55rem;
  background:var(--midnight);color:#fff;border:0;border-radius:999px;padding:.85rem 1.3rem;
  font-family:var(--sans);font-weight:650;font-size:.9rem;cursor:pointer;box-shadow:0 14px 34px rgba(6,38,60,.35);
  transition:transform .2s,background .2s}
#chatLauncher:hover{transform:translateY(-2px);background:var(--deep)}
#chatLauncher .dot{width:8px;height:8px;border-radius:50%;background:#5fd39a;box-shadow:0 0 0 4px rgba(95,211,154,.24)}
#chatPanel{position:fixed;right:18px;bottom:18px;z-index:61;width:378px;max-width:calc(100vw - 36px);
  height:min(620px,calc(100vh - 36px));background:#fff;border-radius:var(--r-lg);border:1px solid var(--line);
  box-shadow:var(--shadow-l);display:none;flex-direction:column;overflow:hidden}
#chatPanel.open{display:flex}
.chat-head{background:linear-gradient(120deg,var(--midnight),var(--atlantic));color:#fff;
  padding:1.05rem 1.2rem;display:flex;justify-content:space-between;align-items:flex-start;gap:.8rem}
.chat-head b{display:block;font-family:var(--display);font-size:1.05rem;font-weight:400;color:#fff}
.chat-head span{font-family:var(--mono);font-size:.6rem;letter-spacing:.11em;text-transform:uppercase;color:#a8cde4}
.chat-head button{background:rgba(255,255,255,.16);border:0;color:#fff;border-radius:9px;width:30px;height:30px;
  font-size:1.15rem;cursor:pointer;line-height:1;flex-shrink:0}
.chat-ticket{background:var(--sky);color:var(--deep);font-family:var(--mono);font-size:.66rem;
  letter-spacing:.11em;text-transform:uppercase;padding:.55rem;text-align:center;border-bottom:1px solid var(--line-soft)}
.chat-scroll{flex:1;overflow-y:auto;padding:1.1rem;background:var(--mist)}
.chat-form label{display:block;font-family:var(--mono);font-size:.62rem;letter-spacing:.13em;text-transform:uppercase;
  color:var(--muted);margin:.85rem 0 .3rem;font-weight:600}
.chat-form input,.chat-form select,.chat-form textarea{width:100%;border:1px solid var(--line);border-radius:9px;
  padding:.62rem .75rem;font:inherit;font-size:.9rem;background:#fff;color:var(--ink)}
.chat-form textarea{min-height:84px;resize:vertical}
.chat-form .two{display:grid;grid-template-columns:1fr 1fr;gap:.55rem}
.chat-intro{font-size:.87rem;color:var(--body);margin:0}
.chat-send{width:100%;margin-top:1.15rem;border:0;border-radius:999px;background:var(--atlantic);color:#fff;
  font-family:var(--sans);font-weight:650;font-size:.9rem;padding:.75rem;cursor:pointer}
.chat-send:hover{background:var(--deep)}
.chat-hint{font-size:.79rem;color:var(--muted);margin:.85rem 0 0;line-height:1.5}
.chat-err{background:#fbe5e7;color:#7f2b34;font-size:.83rem;font-weight:600;border-radius:9px;padding:.6rem .8rem;margin-bottom:.7rem}
.chat-msg{max-width:84%;margin-bottom:.75rem;padding:.65rem .9rem;border-radius:14px;font-size:.89rem;
  line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}
.chat-msg.me{background:var(--atlantic);color:#fff;margin-left:auto;border-bottom-right-radius:4px}
.chat-msg.them{background:#fff;border:1px solid var(--line);border-bottom-left-radius:4px;color:var(--ink)}
.chat-msg .who{font-family:var(--mono);font-size:.6rem;letter-spacing:.11em;text-transform:uppercase;opacity:.72;margin-bottom:.25rem}
.chat-msg .hr{font-size:.66rem;opacity:.62;text-align:right;margin-top:.3rem}
.chat-bar{border-top:1px solid var(--line);padding:.7rem;display:flex;gap:.5rem;background:#fff}
.chat-bar textarea{flex:1;border:1px solid var(--line);border-radius:11px;padding:.6rem .75rem;font:inherit;
  font-size:.9rem;resize:none;height:44px;max-height:110px;color:var(--ink)}
.chat-bar button{border:0;background:var(--atlantic);color:#fff;border-radius:11px;padding:0 1rem;
  font-family:var(--sans);font-weight:650;cursor:pointer;font-size:.88rem}

.chat-ai-welcome{display:flex;gap:.75rem;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:14px;padding:.85rem;margin-bottom:.85rem;box-shadow:0 4px 14px rgba(23,67,96,.05)}
.chat-ai-welcome b{color:var(--deep);font-size:.92rem}.chat-ai-welcome p{margin:.18rem 0 0;font-size:.83rem;line-height:1.5;color:var(--body)}
.chat-ai-badge{flex:0 0 34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--atlantic);color:#fff;font-family:var(--mono);font-size:.68rem;font-weight:800;letter-spacing:.08em}
.chat-msg.ai{background:#eef7fb;border:1px solid #c9e2ee;border-bottom-left-radius:4px;color:var(--ink)}
.chat-msg.ai .who{color:var(--deep);opacity:1}.chat-msg.ai .who:before{content:'AI · ';color:var(--atlantic);font-weight:900}
.chat-typing{display:flex;align-items:center;gap:.28rem;width:max-content;max-width:88%;background:#eef7fb;border:1px solid #c9e2ee;border-radius:14px;padding:.6rem .8rem;margin:.2rem 0 .8rem;color:var(--muted)}
.chat-typing span{width:6px;height:6px;border-radius:50%;background:var(--atlantic);animation:icanChatDot 1.1s infinite ease-in-out}.chat-typing span:nth-child(2){animation-delay:.15s}.chat-typing span:nth-child(3){animation-delay:.3s}.chat-typing em{font-style:normal;font-size:.72rem;margin-left:.35rem}
@keyframes icanChatDot{0%,80%,100%{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
.chat-human-form{background:#fff;border:1px solid var(--line);border-radius:14px;padding:.9rem;margin-top:.6rem}.chat-human-head b{color:var(--deep)}.chat-human-head p{font-size:.82rem;color:var(--muted);margin:.2rem 0 .5rem}
.chat-human-actions{display:grid;grid-template-columns:1fr auto;gap:.5rem;align-items:end}.chat-cancel-human{border:1px solid var(--line);background:#fff;color:var(--deep);border-radius:999px;padding:.72rem .9rem;cursor:pointer;font-weight:650}
.chat-assist-actions{display:flex;justify-content:space-between;gap:.5rem;padding:.45rem .7rem .65rem;background:#fff;border-top:1px solid var(--line-soft)}.chat-assist-actions button{border:0;background:transparent;color:var(--atlantic);font-size:.72rem;font-weight:700;cursor:pointer;padding:.25rem}.chat-assist-actions button:hover{text-decoration:underline}.chat-assist-actions #chatHandoff.attention{background:#fff5df;color:#8b5b00;border-radius:999px;padding:.35rem .65rem;text-decoration:none}


/* ---------- revelado ---------- */
.rv{opacity:0;transform:translateY(22px)}
.rv.in{opacity:1;transform:none;transition:opacity .65s cubic-bezier(.22,.61,.36,1),transform .65s cubic-bezier(.22,.61,.36,1)}

/* ---------- responsive ---------- */
@media(max-width:1080px){
  .hero .wrap{grid-template-columns:1fr;gap:2.6rem}
  /* La ficha institucional conserva la misma proporcion compacta del
     escritorio: nunca se estira al ancho de una tableta o un movil. */
  .factcard{width:min(100%,460px);max-width:460px;margin-inline:auto}
  .footgrid{grid-template-columns:1fr 1fr}
}
@media(max-width:1280px){
  .navlinks{position:absolute;top:calc(100% + 1px);left:0;right:0;flex-direction:column;align-items:stretch;
    background:#fff;padding:1rem var(--pad) 1.6rem;border-bottom:1px solid var(--line);box-shadow:var(--shadow-m);
    transform:translateY(-140%);transition:transform .3s cubic-bezier(.22,.61,.36,1);gap:.1rem;
    max-height:calc(100vh - 70px);overflow-y:auto;z-index:-1}
  .navlinks.open{transform:none;z-index:1}
  .navlinks a{padding:.85rem .5rem;font-size:.98rem;border-bottom:1px solid var(--line-soft)}
  .navlinks a.active::after{display:none}
  .site-navgroup{display:block;height:auto;border-bottom:1px solid var(--line-soft)}
  .site-navgroup summary{padding:.9rem .5rem;font-size:.98rem;justify-content:space-between}
  .site-navgroup:hover summary,.site-navgroup:focus-within summary{background:transparent}
  .site-drop{position:static;width:auto;padding:0 0 .65rem .7rem;border:0;border-radius:0;box-shadow:none;
    opacity:1;visibility:visible;transform:none;display:none;transition:none}
  .site-navgroup:hover .site-drop,.site-navgroup:focus-within .site-drop{display:none}
  .site-navgroup[open] .site-drop{display:block}
  .navlinks .site-drop a{font-size:.9rem;padding:.68rem .75rem;border-bottom:0;color:var(--body)}
  /* En movil el CTA deja de ser un enlace mas de la lista: se separa del
     bloque de navegacion y ocupa todo el ancho como boton solido. */
  .navcta{margin:1.1rem 0 .2rem;display:block}
  .navcta a{display:flex;width:100%;padding:.95rem 1rem;font-size:.95rem;border-bottom:0}
  .burger{display:block}
  .panels{grid-template-columns:1fr}
  .axis .wrap{grid-template-columns:1fr;gap:.9rem}
  .spcta{grid-template-columns:1fr}
}
@media(max-width:680px){
  .nav .wrap{height:64px;overflow:visible!important}
  /* R23 - Correccion responsive de la punta de la bandera.
     En movil la huella flex de la bandera sigue siendo compacta para no quitar
     espacio al hamburguesa, pero el PNG dispone de un pequeno "bleed" visual
     hacia la derecha. Ese excedente pinta por ENCIMA del bloque ICAN/OACI y no
     participa en el calculo del ancho, por lo que la punta nunca se recorta ni
     empuja el menu. */
  .header-brand{overflow:visible!important;isolation:isolate}
  .header-flag{
    width:min(var(--header-flag-w,110px),92px);
    overflow:visible!important;
    z-index:8;
    isolation:isolate
  }
  .header-flag img{
    position:relative;
    z-index:9;
    width:calc(100% + 18px);
    max-width:none!important;
    height:100%;
    object-fit:cover;
    object-position:left center;
    transform-origin:left center
  }
  .header-logo-core{
    margin-left:clamp(-30px,var(--header-logo-offset-x,-40px),16px);
    overflow:visible!important;
    background:transparent;
    z-index:2
  }
  .header-logo-core img{height:min(var(--logo-h),44px);max-width:152px}
  .header-brand.flag-wave-on .header-flag img{animation-name:headerFlagWaveMobile;animation-duration:7.2s}
  @keyframes headerFlagWaveMobile{
    0%,100%{transform:perspective(520px) rotateY(0deg) skewY(0deg) translateX(0);clip-path:polygon(0 0,96% 0,100% 12%,96% 26%,100% 40%,96% 55%,100% 70%,96% 84%,92% 100%,0 100%)}
    50%{transform:perspective(520px) rotateY(-.8deg) skewY(.22deg) translateX(1px);clip-path:polygon(0 0,98% 0,95% 14%,100% 29%,96% 44%,100% 59%,95% 74%,99% 88%,91% 100%,0 100%)}
  }
  .header-brand .txt{display:none}
  body{font-size:16px}
  /* La altura configurada desde Admin tambien manda en movil. Antes se
     anulaba aqui con height:auto, por eso la cabecera seguia viendose grande
     aunque el administrador redujera los px. */
  .factlogo.cabecera-admin{height:calc(var(--cabecera-alto,199px) - var(--cabecera-recorte-top,24px) - var(--cabecera-recorte-bottom,30px))}
  .factlogo.cabecera-admin img{width:auto;max-width:100%;height:var(--cabecera-alto,199px);max-height:none;object-fit:contain;margin-inline:auto;transform:translateY(calc(var(--cabecera-offset-y,8px) - var(--cabecera-recorte-top,24px)))}
  .hero .wrap{padding-block:1.4rem}
  .hero h1{font-size:clamp(1.9rem,9vw,2.5rem);margin-bottom:.45rem}
  .eyebrow.slogan{font-size:clamp(1.05rem,5.4vw,1.35rem);margin-bottom:.45rem}
  .hero p.lead{font-size:.95rem;margin:.4rem 0}
  .hero .actions{gap:.55rem;margin-top:.8rem}
  .hero .actions .btn{flex:1 1 auto;justify-content:center;text-align:center}
  .footgrid{grid-template-columns:1fr;gap:1.8rem}
  .utility .wrap{justify-content:center;text-align:center;font-size:.62rem}
  .chat-form .two{grid-template-columns:1fr}
  #chatPanel{right:8px;left:8px;bottom:8px;width:auto;height:calc(100vh - 16px);border-radius:16px}
  .totop{bottom:80px;right:12px}
  #chatLauncher{right:12px;bottom:12px}
  #helpLauncher{left:12px;bottom:12px;width:48px;height:48px;padding:0;border-radius:50%;justify-content:center}
  #helpLauncher>span:last-child{display:none}
  #helpLauncher .help-icon{width:34px;height:34px;box-shadow:none}
  .help-drawer{width:min(390px,calc(100vw - 12px))}
  .help-head{padding:1.15rem}
  .help-body{padding:1rem}
  .help-foot{padding:1rem}
  .media .ph img{height:190px}
  .gallery-head{align-items:flex-start}
  #salas>.wrap>.salas-intro-band{margin-top:-1.2rem;padding-block:1.7rem;margin-bottom:1.55rem}
  .gallery-thumb{flex-basis:78vw;max-width:290px}
  .gallery-thumb img{height:170px}
  .lightbox{padding:4.5rem .8rem 1rem}
  .lightbox figure{max-width:100%}
  .lightbox img{max-height:68vh}
  .lightbox .lbnav{top:auto;bottom:1rem;transform:none;width:46px;height:46px}
  .lightbox .lbnav:hover{transform:scale(1.04)}
  .lightbox .lbprev{left:calc(50% - 58px)}
  .lightbox .lbnext{right:calc(50% - 58px)}
  .lightbox .lbcount{top:1.35rem}
  .cd-unit{min-width:64px;padding:.5rem .6rem}
  .cd-unit b{font-size:1.3rem}
  .footbase{justify-content:center;text-align:center}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
  html{scroll-behavior:auto}
  .rv{opacity:1;transform:none}
}
@media(max-width:400px){
  .hero .wrap{padding-block:1.1rem}
  .hero h1{font-size:clamp(1.6rem,10vw,2.1rem)}
  .eyebrow.slogan{font-size:clamp(.95rem,6vw,1.15rem)}
  /* La ficha institucional conserva las dos columnas tambien en movil. */
  .facts{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .facts>div{min-width:0;padding:.78rem .82rem}
  .facts dt{font-size:.52rem;letter-spacing:.12em}
  .facts dd{font-size:.92rem;overflow-wrap:anywhere}
  .facts dd small{font-size:.72rem}
  .hero .actions{flex-direction:column}
  .hero .actions .btn{width:100%}
}
@media print{
  .nav,.utility,.flagrule,#chatLauncher,#chatPanel,#helpLauncher,.help-drawer,.help-backdrop,.totop,.lightbox,.spcta,.countdown,.gallery-controls,.skyfield{display:none!important}
  body{font-size:11pt;color:#000}
  .sec{padding-block:1.2rem}
  .hero,.sec.dark,.axis{background:#fff!important;color:#000!important;min-height:0!important;display:block!important}
  .hero::before,.hero::after{display:none!important}
  .hero h1,.sec.dark h2,.sec.dark h3,.axis h2{color:#000!important}
  .rv{opacity:1!important;transform:none!important}
}
.card.art-event,
.card.art-info {
  background: var(--card-soft);
}
.card.art-event:hover,
.card.art-info:hover {
  background: var(--card-soft-hover);
}
.panel.p-evento {
  background: #10527B;
  color: #FFFFFF;
  padding: 20px;
  border-radius: 8px;
}

.panel.p-evento h3 {
  color: #FFFFFF;
}

.panel.p-evento .timeline {
  list-style: none;
  padding-left: 0;
  color: #FFFFFF;
}

.panel.p-evento .timeline li {
  color: #FFFFFF;
  padding: 8px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}

.panel.p-evento .timeline li .d {
  font-weight: bold;
  margin-right: 10px;
  color: #FFFFFF;
  background: none;
}

.panel.p-evento .timeline li .t {
  color: #FFFFFF;
}

.panel.p-evento .timeline li .t b {
  color: #FFFFFF;
}
.reslist span.tag-evento {
  background: #10527B !important;
  color: #FFFFFF !important
}

/* ========================================================================
   R9 · Confirmacion de invitaciones dentro de la portada
   Un unico logo (logo_evento), modal limpio y sin navegar a archivos .php.
   ===================================================================== */
.carta-confirm-modal{position:fixed;inset:0;z-index:1200;display:none;align-items:center;justify-content:center;
  padding:clamp(1rem,4vw,2rem);background:rgba(3,22,35,.72);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.carta-confirm-modal.open{display:flex;animation:cartaConfirmFade .2s ease-out}
.carta-confirm-dialog{position:relative;width:min(520px,100%);overflow:hidden;background:#fff;border:1px solid rgba(255,255,255,.56);
  border-radius:24px;box-shadow:0 28px 90px rgba(2,22,35,.38);transform-origin:center;animation:cartaConfirmUp .28s cubic-bezier(.2,.78,.24,1)}
.carta-confirm-brand{min-height:112px;display:flex;align-items:center;justify-content:center;padding:22px 70px 18px;
  background:linear-gradient(180deg,#fffdf8 0%,#fbf7ed 100%);border-bottom:1px solid #eadfc9}
.carta-confirm-logo{display:block;width:auto;max-width:min(280px,82%);max-height:82px;object-fit:contain}
.carta-confirm-wordmark{font-family:var(--display);font-size:2rem;letter-spacing:.02em;color:var(--deep);font-weight:600}
.carta-confirm-x{position:absolute;z-index:2;right:16px;top:16px;width:38px;height:38px;border:1px solid #e0d7c8;border-radius:50%;
  background:rgba(255,255,255,.9);color:#587080;font:400 1.45rem/1 Arial,sans-serif;cursor:pointer;transition:.18s ease}
.carta-confirm-x:hover,.carta-confirm-x:focus-visible{background:#fff;border-color:#b8893f;color:#7f571a;outline:none;box-shadow:0 0 0 3px rgba(184,137,63,.14)}
.carta-confirm-content{padding:30px 34px 32px;text-align:center}
.carta-confirm-status{width:58px;height:58px;margin:-1px auto 17px;border-radius:50%;display:grid;place-items:center;
  background:#fff8e9;border:1px solid #ead7ae;box-shadow:0 8px 24px rgba(154,102,23,.09)}
.carta-confirm-status span{position:relative;display:block;width:21px;height:21px;border:2px solid #a96f14;border-radius:50%}
.carta-confirm-status span::after{content:"";position:absolute;left:5px;top:2px;width:5px;height:10px;border-right:2px solid #a96f14;border-bottom:2px solid #a96f14;transform:rotate(45deg);opacity:0}
.carta-confirm-kicker{font-family:var(--mono);font-size:.67rem;line-height:1.35;letter-spacing:.18em;text-transform:uppercase;color:#9a6617;font-weight:800;margin-bottom:.55rem}
.carta-confirm-content h2{margin:0;color:var(--deep);font-family:var(--display);font-size:clamp(1.65rem,5vw,2.15rem);line-height:1.08;font-weight:600}
.carta-confirm-message{max-width:430px;margin:1rem auto 0;color:#536f80;font-size:.93rem;line-height:1.65}
.carta-confirm-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:22px 0 0;text-align:left}
.carta-confirm-meta>div{min-width:0;padding:12px 13px;border:1px solid #e3eaed;border-radius:11px;background:#f7fafb}
.carta-confirm-meta span{display:block;font-family:var(--mono);font-size:.61rem;line-height:1.2;letter-spacing:.1em;text-transform:uppercase;color:#8198a6;margin-bottom:4px}
.carta-confirm-meta b{display:block;color:#173f59;font-size:.82rem;line-height:1.35;overflow-wrap:anywhere}
.carta-confirm-error{margin:16px 0 0;padding:10px 12px;border:1px solid #efc2c6;border-radius:10px;background:#fff4f5;color:#9a3340;font-size:.82rem;line-height:1.45;text-align:left}
.carta-confirm-actions{display:flex;justify-content:center;gap:10px;margin-top:24px}
.carta-confirm-actions button{min-height:46px;border-radius:10px;padding:.74rem 1.3rem;font:800 .88rem/1 var(--sans);cursor:pointer;transition:transform .18s,box-shadow .18s,background .18s,border-color .18s}
.carta-confirm-cancel{border:1px solid #d9e2e7;background:#fff;color:#526d7e}
.carta-confirm-cancel:hover,.carta-confirm-cancel:focus-visible{border-color:#9eb1bd;background:#f6f9fa;outline:none}
.carta-confirm-cancel.primary{background:var(--deep);border-color:var(--deep);color:#fff}
.carta-confirm-ok{border:1px solid #9a6617;background:linear-gradient(180deg,#b77a18,#9d6714);color:#fff;box-shadow:0 8px 20px rgba(154,102,23,.18)}
.carta-confirm-ok:hover,.carta-confirm-ok:focus-visible{transform:translateY(-1px);box-shadow:0 11px 24px rgba(154,102,23,.24);outline:none}
.carta-confirm-ok:disabled{opacity:.68;cursor:wait;transform:none}
.carta-confirm-modal.state-ok .carta-confirm-status{background:#eff8f3;border-color:#b9dbc8;box-shadow:0 8px 24px rgba(31,122,82,.09)}
.carta-confirm-modal.state-ok .carta-confirm-status span{border-color:#1f7a52}
.carta-confirm-modal.state-ok .carta-confirm-status span::after{border-color:#1f7a52;opacity:1}
.carta-confirm-modal.state-error .carta-confirm-status{background:#fff3f4;border-color:#efc6ca;box-shadow:none}
.carta-confirm-modal.state-error .carta-confirm-status span{border-color:#b3404b}
.carta-confirm-modal.state-error .carta-confirm-status span::before,.carta-confirm-modal.state-error .carta-confirm-status span::after{content:"";position:absolute;left:9px;top:3px;width:2px;height:11px;background:#b3404b;border:0;opacity:1;transform:rotate(45deg)}
.carta-confirm-modal.state-error .carta-confirm-status span::after{transform:rotate(-45deg)}
@keyframes cartaConfirmFade{from{opacity:0}to{opacity:1}}
@keyframes cartaConfirmUp{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}
@media(max-width:560px){
  .carta-confirm-modal{padding:.75rem}.carta-confirm-dialog{border-radius:19px}.carta-confirm-brand{min-height:96px;padding:18px 58px 14px}
  .carta-confirm-logo{max-width:min(235px,86%);max-height:68px}.carta-confirm-content{padding:24px 20px 24px}.carta-confirm-meta{grid-template-columns:1fr}
  .carta-confirm-actions{flex-direction:column-reverse}.carta-confirm-actions button{width:100%}
}
@media(prefers-reduced-motion:reduce){.carta-confirm-modal.open,.carta-confirm-dialog{animation:none}.carta-confirm-actions button{transition:none}}

/* R10 - hardening visual del modal de confirmacion. */
.carta-confirm-dialog{max-height:calc(100vh - 32px);overflow:auto}
@media(max-width:560px){.carta-confirm-dialog{max-height:calc(100vh - 24px)}}

/* =====================================================================
   R16.18 - PORTADA: ESPANOL DEFINE TAMANOS Y GEOMETRIA
   ---------------------------------------------------------------------
   - Un solo font-size para ES/EN/FR/PT/ZH/AR/RU.
   - Un solo tamano de tarjeta, acciones y navegacion.
   - Ningun idioma modifica columnas ni alturas del hero.
   - Las traducciones largas se resuelven con textos concisos; no reduciendo
     el tamano tipografico. Solo el titular ruso usa ajuste horizontal porque
     su nombre oficial es sensiblemente mas largo, manteniendo el MISMO
     font-size y la misma altura que el espanol.
   ===================================================================== */
@media (min-width:1081px){
  .hero .wrap{
    grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr)!important;
    align-items:center!important;
  }
  .hero-copy{min-width:0!important;width:100%!important;overflow:visible!important}
  .factcard{width:100%!important;max-width:460px!important;min-width:0!important;align-self:center!important}

  /* Titular: exactamente el mismo tamano que ES en todos los idiomas. */
  .hero h1{
    width:100%!important;max-width:100%!important;min-width:0!important;
    white-space:nowrap!important;
    font-size:clamp(2.4rem,5.6vw,4.35rem)!important;
    line-height:1.04!important;
    letter-spacing:-.032em!important;
    margin-bottom:.6rem!important;
    transform:none!important;
  }
  html[lang="zh"] .hero h1,html[lang="ar"] .hero h1{letter-spacing:0!important}
  /* El ruso mantiene el mismo font-size; se normaliza solo el ancho visual del
     nombre oficial para no invadir la ficha institucional. */
  html[lang="ru"] .hero h1{
    transform:scaleX(.79)!important;
    transform-origin:left center!important;
  }

  /* Slogan: misma tipografia, tamano y metrica de ES. */
  .hero .eyebrow.slogan{
    width:100%!important;max-width:100%!important;min-width:0!important;
    white-space:nowrap!important;
    font-size:clamp(1.3rem,2.6vw,1.9rem)!important;
    line-height:1.3!important;
    margin-bottom:.6rem!important;
    transform:none!important;
  }

  /* La presentacion reserva la misma caja vertical en todos los idiomas. */
  .hero p.lead{
    width:100%!important;max-width:56ch!important;
    height:6.6em!important;min-height:6.6em!important;
    margin:.5rem 0!important;
    font-size:clamp(1.02rem,1.6vw,1.15rem)!important;
    line-height:1.65!important;
    overflow:visible!important;
  }

  /* Las tres acciones tienen siempre exactamente las mismas cajas. */
  .hero .actions{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:.7rem!important;
    width:min(100%,680px)!important;
    min-width:0!important;
    margin-top:1rem!important;
    direction:ltr!important;
  }
  .hero .actions .btn{
    width:100%!important;min-width:0!important;
    height:54px!important;min-height:54px!important;
    padding:.62rem .7rem!important;
    white-space:nowrap!important;
    text-align:center!important;
    line-height:1.14!important;
    font-size:.88rem!important;
  }

  /* La cabecera de la ficha conserva la altura aunque cambie el idioma. */
  .factcard .top{
    min-height:84px!important;
    display:flex!important;
    flex-direction:column!important;
    justify-content:center!important;
  }

  /* Arabe: la escritura es RTL, la geometria sigue siendo la de ES. */
  html[lang="ar"] .hero .wrap{direction:ltr!important}
  html[lang="ar"] .hero-copy{direction:rtl!important;text-align:right!important}
  html[lang="ar"] .hero .actions{direction:ltr!important}
  html[lang="ar"] .hero .actions .btn{direction:rtl!important}
  html[lang="ar"] .factcard{direction:ltr!important}
  html[lang="ar"] .factcard .top,
  html[lang="ar"] .facts dt,
  html[lang="ar"] .facts dd{direction:rtl!important;text-align:right!important}

  /* Navegacion: una sola altura y un solo tamano tipografico. Los textos de
     los catalogos se han acortado para evitar saltos de linea artificiales. */
  .nav .wrap{min-width:0!important;direction:ltr!important}
  .navlinks{min-width:0!important;direction:ltr!important}
  .site-navgroup{height:74px!important;min-width:0!important}
  .site-navgroup summary{
    height:74px!important;
    min-width:0!important;
    padding:.62rem .42rem!important;
    white-space:nowrap!important;
    line-height:1.14!important;
    font-size:.76rem!important;
  }
  .navcta{flex:0 0 168px!important;width:168px!important;min-width:168px!important;margin-left:.45rem!important}
  .navcta a{
    width:100%!important;min-height:50px!important;
    padding:.55rem .65rem!important;
    display:flex!important;align-items:center!important;justify-content:center!important;
    text-align:center!important;white-space:nowrap!important;
    line-height:1.12!important;font-size:.80rem!important;
  }
  html[lang="ar"] .site-navgroup summary,
  html[lang="ar"] .site-drop,
  html[lang="ar"] .navcta a{direction:rtl!important}
}


/* =====================================================================
   R16.20 - CIERRE DE PORTADA: ESPANOL ES LA REFERENCIA REAL
   ---------------------------------------------------------------------
   - Restaura exactamente el HTML/CSS del hero de R16.18 para ES.
   - No usa spans de compresion ni transformaciones en ES/EN/FR/PT/ZH/AR.
   - Todos conservan el MISMO font-size definido por ES.
   - EN y FR solo ajustan tracking para igualar el ancho optico del titular ES.
   - RU conserva el ajuste horizontal ya existente de R16.18 porque el nombre
     cirilico es sensiblemente mas largo; no cambia su altura ni font-size.
   ===================================================================== */
@media (min-width:1081px){
  /* Referencia tipografica unica: exactamente la de ES. */
  .hero h1{
    font-size:clamp(2.4rem,5.6vw,4.35rem)!important;
    line-height:1.04!important;
    letter-spacing:-.032em!important;
    margin-bottom:.6rem!important;
    white-space:nowrap!important;
    transform:none!important;
  }

  /* Mismo tamano que ES. Solo tracking para que el ancho final sea equivalente
     al titular espanol con Georgia en el mismo viewport. */
  html[lang="en"] .hero h1{letter-spacing:-.037em!important}
  html[lang="fr"] .hero h1{letter-spacing:-.051em!important}
  html[lang="pt"] .hero h1{letter-spacing:-.032em!important}
  html[lang="zh"] .hero h1,html[lang="ar"] .hero h1{letter-spacing:0!important}

  /* El ruso sigue usando el mismo font-size/altura; solo se compacta el ancho
     visual porque el nombre oficial es notablemente mas largo. */
  html[lang="ru"] .hero h1{
    font-size:clamp(2.4rem,5.6vw,4.35rem)!important;
    line-height:1.04!important;
    letter-spacing:-.032em!important;
    transform:scaleX(.79)!important;
    transform-origin:left center!important;
  }

  /* Slogan, presentacion y botones: mismos tamanos de ES en todos los idiomas. */
  .hero .eyebrow.slogan{
    font-size:clamp(1.3rem,2.6vw,1.9rem)!important;
    line-height:1.3!important;
    letter-spacing:0!important;
    transform:none!important;
  }
  .hero p.lead{
    font-size:clamp(1.02rem,1.6vw,1.15rem)!important;
    line-height:1.65!important;
  }
  .hero .actions .btn{font-size:.88rem!important}

  /* La ficha debe pintar siempre por encima de cualquier desborde accidental. */
  .hero-copy{position:relative!important;z-index:2!important;min-width:0!important}
  .factcard{position:relative!important;z-index:3!important}
}

/* =====================================================================
   R16.22 - CAPA DE SEGURIDAD SOLO PARA TEXTO TRADUCIDO
   ES queda exactamente con el CSS de R16.20. Esta capa no cambia font-size,
   grid, gaps, alturas, anchos ni posiciones. Solo contiene el desborde del
   texto no-ES y permite su compactacion horizontal por JS.
   ===================================================================== */
@media (min-width:1081px){
  html:not([lang="es"]) .hero h1,
  html:not([lang="es"]) .hero .eyebrow.slogan,
  html:not([lang="es"]) .hero .actions .btn{overflow:hidden!important}
  html:not([lang="es"]) .hero-fit-text{display:inline-block;white-space:nowrap;max-width:none;font:inherit;color:inherit}
}
@media (max-width:1080px){
  .hero-fit-text{transform:none!important;white-space:normal!important}
}

/* =====================================================================
   R17.3 - PORTADA RESPONSIVE: MISMA METRICA EN TODOS LOS IDIOMAS
   ---------------------------------------------------------------------
   Replica los tamanos responsive que ya tenia la portada, pero los vuelve
   autoritativos para impedir que un formato heredado del editor haga que el
   titular, el slogan o la entradilla cambien de cuerpo al cambiar de idioma.
   La altura minima equivalente al espanol se calcula en index.php por JS;
   aqui solo se fijan las metricas tipograficas existentes.
   ===================================================================== */
@media (max-width:1080px){
  .hero h1{
    font-size:clamp(2.4rem,5.6vw,4.35rem)!important;
    line-height:1.04!important;
    letter-spacing:-.032em!important;
    transform:none!important;
  }
  .hero h1 *{font-size:inherit!important;line-height:inherit!important;letter-spacing:inherit!important}
  html[lang="zh"] .hero h1,html[lang="ar"] .hero h1{letter-spacing:0!important}

  .hero .eyebrow.slogan{
    font-size:clamp(1.3rem,2.6vw,1.9rem)!important;
    line-height:1.3!important;
    letter-spacing:0!important;
    transform:none!important;
  }
  .hero .eyebrow.slogan *{font-size:inherit!important;line-height:inherit!important;letter-spacing:inherit!important}

  .hero p.lead{
    font-size:clamp(1.02rem,1.6vw,1.15rem)!important;
    line-height:1.65!important;
  }
}
@media (max-width:680px){
  .hero h1{font-size:clamp(1.9rem,9vw,2.5rem)!important}
  .hero .eyebrow.slogan{font-size:clamp(1.05rem,5.4vw,1.35rem)!important}
  .hero p.lead{font-size:.95rem!important}
}
@media (max-width:400px){
  .hero h1{font-size:clamp(1.6rem,10vw,2.1rem)!important}
  .hero .eyebrow.slogan{font-size:clamp(.95rem,6vw,1.15rem)!important}
  /* Telefonos muy estrechos: reducimos solo la huella del componente, no la
     punta visible. El bleed conserva el acabado de tela sin provocar scroll. */
  .header-flag{width:min(var(--header-flag-w,110px),82px)}
  .header-flag img{width:calc(100% + 16px)}
  .header-logo-core{margin-left:clamp(-24px,var(--header-logo-offset-x,-40px),10px)}
  .header-logo-core img{max-width:134px;height:min(var(--logo-h),40px)}
}


/* =====================================================================
   R18.3 - TITULAR CANONICO EN DOS LINEAS
   ---------------------------------------------------------------------
   Todos los idiomas comparten la composicion y metrica definidas por ES:
   la primera linea conserva exactamente la marca/puntuacion escrita en el
   editor y debajo aparece el nombre traducido de Guinea Ecuatorial.
   El nombre del pais puede envolver solo si una pantalla extremadamente
   estrecha lo exige; no se reduce el cuerpo tipografico por idioma.
   ===================================================================== */
.hero h1 .ican-title-mark{display:inline-block;white-space:nowrap}
.hero h1 .ican-title-country{display:inline-block;max-width:100%}
@media (max-width:680px){
  html[lang="en"] .hero h1{letter-spacing:-.032em!important}
}

/* R18.4 - Ajuste fino de posicion de la ficha en escritorio.
   Se baja visualmente solo la tarjeta lateral del hero, sin alterar su tamano,
   el flujo del hero ni el responsive de tablet/movil. */
@media (min-width:1081px){
  .hero .factcard{transform:translateY(18px)}
}


/* R18.5 - Ajuste final: la imagen de la cabecera institucional baja 8px
   dentro de su propio recorte. No cambia el alto de la ficha ni el tamano
   de la imagen, y se aplica igual en escritorio, tableta y movil. */

/* =====================================================================
   R18.11 - JERARQUIA VISUAL DE CTA EN PORTADA
   ---------------------------------------------------------------------
   1) Planifique su viaje: accion principal, dorado solido.
   2) Descargar programa: accion secundaria, contorno.
   3) Descubra el pais: accion terciaria, tratamiento ligero.
   La geometria y el responsive existentes no cambian: solo cambia el peso
   visual. Se aplica automaticamente a todos los idiomas por posicion.
   ===================================================================== */
.hero .actions > .btn:nth-child(1){
  background:var(--brass)!important;
  color:#fff!important;
  border:1.5px solid var(--brass)!important;
  box-shadow:0 10px 24px rgba(184,137,63,.28)!important;
}
.hero .actions > .btn:nth-child(1):hover,
.hero .actions > .btn:nth-child(1):focus-visible{
  background:#9c7132!important;
  border-color:#9c7132!important;
  color:#fff!important;
  box-shadow:0 14px 30px rgba(184,137,63,.36)!important;
}

.hero .actions > .btn:nth-child(2){
  background:rgba(255,255,255,.025)!important;
  color:#fff!important;
  border:1.5px solid rgba(229,210,163,.72)!important;
  box-shadow:none!important;
}
.hero .actions > .btn:nth-child(2):hover,
.hero .actions > .btn:nth-child(2):focus-visible{
  background:rgba(229,210,163,.10)!important;
  color:#fff!important;
  border-color:#E5D2A3!important;
  box-shadow:none!important;
}

.hero .actions > .btn:nth-child(3){
  background:transparent!important;
  color:#E5D2A3!important;
  border-color:transparent!important;
  box-shadow:none!important;
  font-weight:600!important;
}
.hero .actions > .btn:nth-child(3)::after{
  content:"\2192";
  display:inline-block;
  margin-left:.28rem;
  font-size:1.05em;
  line-height:1;
  transition:transform .2s ease;
}
.hero .actions > .btn:nth-child(3):hover,
.hero .actions > .btn:nth-child(3):focus-visible{
  background:rgba(255,255,255,.045)!important;
  color:#fff!important;
  border-color:transparent!important;
  box-shadow:none!important;
}
.hero .actions > .btn:nth-child(3):hover::after,
.hero .actions > .btn:nth-child(3):focus-visible::after{
  transform:translateX(4px);
}

html[dir="rtl"] .hero .actions > .btn:nth-child(3)::after,
html[lang="ar"] .hero .actions > .btn:nth-child(3)::after{
  content:"\2190";
  margin-left:0;
  margin-right:.28rem;
}
html[dir="rtl"] .hero .actions > .btn:nth-child(3):hover::after,
html[dir="rtl"] .hero .actions > .btn:nth-child(3):focus-visible::after,
html[lang="ar"] .hero .actions > .btn:nth-child(3):hover::after,
html[lang="ar"] .hero .actions > .btn:nth-child(3):focus-visible::after{
  transform:translateX(-4px);
}

/* =====================================================================
   R24 - MOBILE HEADER CLEAN + RESPONSIVE POLISH
   ---------------------------------------------------------------------
   Objetivo:
   - En telefono la bandera conserva su proporcion original y NO invade ICAN.
   - Se elimina el bleed/clip agresivo solo en movil: la propia imagen ya
     contiene el remate ondulado sobre blanco y se integra mejor sin recortes.
   - Se reserva espacio real para el boton hamburguesa.
   - El offset de escritorio administrable no se traslada 1:1 a movil; en
     movil se usa un solape seguro y corto para evitar tapar el logotipo.
   - La animacion de bandera se mantiene en escritorio/tableta y se congela
     en telefonos para nitidez, rendimiento y estabilidad visual.
   ===================================================================== */
@media (max-width:680px){
  .nav .wrap{
    height:64px;
    gap:.45rem;
    padding-left:0!important;
    padding-right:12px!important;
    overflow:visible!important;
  }

  .header-brand{
    height:100%;
    min-width:0;
    max-width:calc(100% - 64px);
    flex:1 1 auto;
    overflow:visible!important;
    isolation:isolate;
  }

  /* 308x240 => 1.2833. A 64px de alto, 82px conserva la imagen sin deformar. */
  .header-flag{
    width:82px!important;
    height:64px!important;
    flex:0 0 82px!important;
    overflow:visible!important;
    z-index:4;
    perspective:none;
  }
  .header-flag img{
    position:relative;
    z-index:4;
    width:82px!important;
    height:64px!important;
    max-width:none!important;
    object-fit:fill!important;
    object-position:left center!important;
    clip-path:none!important;
    transform:none!important;
    filter:saturate(1.02) contrast(1.015) drop-shadow(2px 0 2px rgba(6,38,60,.08));
    will-change:auto;
  }

  /* En movil el solape es deliberadamente pequeno. El -40px de escritorio
     no puede cubrir la palabra ICAN ni comprimir el conjunto. */
  .header-logo-core{
    height:64px!important;
    margin-left:-6px!important;
    min-width:0;
    max-width:calc(100vw - 146px);
    flex:0 1 auto;
    overflow:visible!important;
    background:transparent!important;
    z-index:2;
  }
  .header-logo-core img{
    display:block;
    width:auto!important;
    height:min(var(--logo-h),40px)!important;
    max-width:148px!important;
    object-fit:contain!important;
    object-position:left center!important;
  }

  /* En telefono prima la legibilidad: el ondeo sigue activo en pantallas
     mayores, pero aqui no deforma ni mueve el lockup institucional. */
  .header-brand.flag-wave-on .header-flag img{
    animation:none!important;
    transform:none!important;
  }

  .burger{
    flex:0 0 auto;
    margin-left:auto;
    position:relative;
    z-index:10;
  }

  /* Evita los huecos excesivos que produce el texto justificado en pantallas
     estrechas. */
  .hero p.lead{
    text-align:left!important;
    text-wrap:pretty;
    hyphens:auto;
    word-spacing:normal!important;
  }

  /* Asistencia compacta en movil para no tapar los CTA de la portada. */
  #chatLauncher{
    right:12px;
    bottom:12px;
    width:48px;
    height:48px;
    padding:0;
    border-radius:50%;
    justify-content:center;
    gap:0;
    font-size:0;
  }
  #chatLauncher .dot{
    width:7px;
    height:7px;
    margin-right:3px;
    box-shadow:0 0 0 3px rgba(95,211,154,.22);
  }
  #chatLauncher::after{
    content:"AI";
    font-family:var(--mono);
    font-size:.68rem;
    font-weight:800;
    letter-spacing:.03em;
    color:#fff;
  }
}

@media (max-width:400px){
  .nav .wrap{padding-right:10px!important}
  .header-brand{max-width:calc(100% - 60px)}
  .header-flag{
    width:72px!important;
    height:56px!important;
    flex-basis:72px!important;
    align-self:center;
  }
  .header-flag img{
    width:72px!important;
    height:56px!important;
  }
  .header-logo-core{
    height:64px!important;
    margin-left:-4px!important;
    max-width:calc(100vw - 132px);
  }
  .header-logo-core img{
    height:min(var(--logo-h),36px)!important;
    max-width:124px!important;
  }
}

/* =====================================================================
   R25 - MOBILE POLISH FINAL: CABECERA PROPORCIONADA + HERO LEGIBLE
   ---------------------------------------------------------------------
   Corrige la composicion real observada en telefono (~360 CSS px):
   - La bandera conserva su proporcion y no domina la cabecera.
   - El lockup ICAN/Africa/OACI gana tamano y queda unido a la bandera.
   - El hamburguesa mantiene una zona reservada y nunca colisiona.
   - Se elimina la particion automatica de palabras (aeronautica, etc.).
   - Se mejora el ritmo vertical del hero sin alterar escritorio/tableta.
   ===================================================================== */
@media (max-width:680px){
  .nav .wrap{
    height:64px!important;
    min-height:64px!important;
    padding-left:0!important;
    padding-right:10px!important;
    gap:6px!important;
    overflow:visible!important;
  }

  .header-brand{
    height:64px!important;
    flex:0 1 auto!important;
    width:auto!important;
    max-width:calc(100% - 54px)!important;
    min-width:0!important;
    overflow:visible!important;
    isolation:isolate!important;
  }

  /* 308x240: 82x64 mantiene practicamente la proporcion nativa. */
  .header-flag{
    width:82px!important;
    height:64px!important;
    flex:0 0 82px!important;
    align-self:center!important;
    overflow:visible!important;
    z-index:6!important;
    perspective:none!important;
  }
  .header-flag img{
    display:block!important;
    width:82px!important;
    height:64px!important;
    max-width:none!important;
    object-fit:contain!important;
    object-position:left center!important;
    clip-path:none!important;
    transform:none!important;
    animation:none!important;
    filter:saturate(1.015) contrast(1.01)!important;
    will-change:auto!important;
  }

  /* El ajuste de Admin sigue influyendo, pero en telefono se limita a una
     franja segura. Con -40px en Admin el resultado movil queda en -18px. */
  .header-logo-core{
    height:64px!important;
    margin-left:clamp(-18px,var(--header-logo-offset-x,-40px),8px)!important;
    flex:0 1 auto!important;
    min-width:0!important;
    max-width:none!important;
    overflow:visible!important;
    background:transparent!important;
    z-index:3!important;
  }
  .header-logo-core img{
    display:block!important;
    width:auto!important;
    height:min(var(--logo-h),42px)!important;
    max-width:145px!important;
    object-fit:contain!important;
    object-position:left center!important;
    flex-shrink:1!important;
  }

  .burger{
    width:44px!important;
    height:44px!important;
    min-width:44px!important;
    flex:0 0 44px!important;
    margin-left:auto!important;
    margin-right:0!important;
    position:relative!important;
    z-index:12!important;
  }

  /* Portada: menos aire sobrante y lectura natural en telefono. */
  .hero .wrap{
    padding-top:1.15rem!important;
    padding-bottom:1.65rem!important;
    gap:1.45rem!important;
  }
  .hero h1{
    line-height:1.02!important;
    margin-bottom:.5rem!important;
  }
  .hero .eyebrow.slogan{
    line-height:1.34!important;
    margin-bottom:.6rem!important;
  }
  .hero p.lead{
    text-align:left!important;
    text-justify:auto!important;
    hyphens:none!important;
    -webkit-hyphens:none!important;
    word-break:normal!important;
    overflow-wrap:normal!important;
    word-spacing:normal!important;
    line-height:1.55!important;
    margin:.5rem 0!important;
  }
  .hero .actions{
    margin-top:1rem!important;
    gap:.65rem!important;
  }

  /* El lanzador deja de mostrar la sigla AI, que no era autoexplicativa. */
  #chatLauncher{
    width:62px!important;
    height:42px!important;
    padding:0 8px!important;
    border-radius:22px!important;
    gap:5px!important;
    font-size:0!important;
  }
  #chatLauncher .dot{
    width:7px!important;
    height:7px!important;
    margin:0!important;
  }
  #chatLauncher::after{
    content:"Chat"!important;
    font-family:var(--sans)!important;
    font-size:.66rem!important;
    font-weight:750!important;
    letter-spacing:0!important;
    color:#fff!important;
  }
}

@media (max-width:400px){
  /* No reducimos el lockup a 124px: era la causa de que ICAN/OACI se viera
     demasiado pequeno en telefonos normales de 360-390px. */
  .header-brand{max-width:calc(100% - 54px)!important}
  .header-flag{
    width:82px!important;
    height:64px!important;
    flex-basis:82px!important;
  }
  .header-flag img{
    width:82px!important;
    height:64px!important;
  }
  .header-logo-core{
    height:64px!important;
    margin-left:clamp(-18px,var(--header-logo-offset-x,-40px),6px)!important;
    max-width:none!important;
  }
  .header-logo-core img{
    height:min(var(--logo-h),42px)!important;
    max-width:145px!important;
  }
  .hero h1{font-size:clamp(1.82rem,9.2vw,2.08rem)!important}
  .hero .eyebrow.slogan{font-size:clamp(1rem,5.1vw,1.12rem)!important}
  .hero p.lead{font-size:.94rem!important;line-height:1.55!important}
}

@media (max-width:340px){
  .header-flag{width:76px!important;height:59px!important;flex-basis:76px!important}
  .header-flag img{width:76px!important;height:59px!important}
  .header-logo-core{margin-left:-14px!important}
  .header-logo-core img{height:min(var(--logo-h),38px)!important;max-width:128px!important}
  .burger{width:42px!important;height:42px!important;min-width:42px!important;flex-basis:42px!important}
}

/* =====================================================================
   R26 - MOBILE BRAND LOCKUP: MISMA PRESENCIA VISUAL QUE ESCRITORIO
   ---------------------------------------------------------------------
   Ajuste fino basado en comparativa real telefono/escritorio:
   - La bandera vuelve a tocar arriba/abajo de la franja blanca.
   - Se ensancha visualmente sin deformar el layout ni recortar la punta.
   - ICAN/Africa/OACI gana presencia manteniendo la separacion ya aprobada.
   - El hamburguesa conserva su zona y nunca colisiona con la marca.
   - Escritorio y tablet >680px quedan intactos.
   ===================================================================== */
@media (max-width:680px){
  .nav .wrap{
    height:70px!important;
    min-height:70px!important;
    padding-left:0!important;
    padding-right:10px!important;
    gap:6px!important;
    overflow:visible!important;
  }

  .header-brand{
    height:70px!important;
    align-self:stretch!important;
    flex:1 1 auto!important;
    width:auto!important;
    max-width:calc(100% - 50px)!important;
    min-width:0!important;
    overflow:visible!important;
    isolation:isolate!important;
  }

  /* En escritorio la bandera tiene mas presencia horizontal que la version
     movil anterior. En telefono usamos una caja ancha y object-fit:cover:
     ocupa toda la altura blanca y conserva el efecto de bandera desplegada. */
  .header-flag{
    width:clamp(108px,31vw,132px)!important;
    height:70px!important;
    flex:0 0 clamp(108px,31vw,132px)!important;
    align-self:stretch!important;
    overflow:visible!important;
    z-index:8!important;
    perspective:none!important;
  }
  .header-flag img{
    display:block!important;
    width:100%!important;
    height:100%!important;
    max-width:none!important;
    max-height:none!important;
    object-fit:cover!important;
    object-position:left center!important;
    clip-path:none!important;
    transform:none!important;
    animation:none!important;
    transform-origin:left center!important;
    filter:saturate(1.02) contrast(1.015) drop-shadow(2px 0 2px rgba(6,38,60,.08))!important;
    will-change:auto!important;
  }

  /* Conservamos el acercamiento que ya quedo aprobado. Solo aumentamos la
     escala del lockup para que bandera y logos guarden una proporcion similar
     a la cabecera de escritorio. */
  .header-logo-core{
    height:70px!important;
    margin-left:clamp(-18px,var(--header-logo-offset-x,-40px),8px)!important;
    flex:0 1 auto!important;
    min-width:0!important;
    max-width:none!important;
    overflow:visible!important;
    background:transparent!important;
    z-index:3!important;
  }
  .header-logo-core img{
    display:block!important;
    width:auto!important;
    height:min(var(--logo-h),54px)!important;
    max-width:188px!important;
    max-height:54px!important;
    object-fit:contain!important;
    object-position:left center!important;
  }

  .burger{
    width:44px!important;
    height:44px!important;
    min-width:44px!important;
    flex:0 0 44px!important;
    margin-left:auto!important;
    margin-right:0!important;
    position:relative!important;
    z-index:12!important;
  }
}

@media (max-width:400px){
  .nav .wrap{
    height:68px!important;
    min-height:68px!important;
    padding-right:8px!important;
    gap:4px!important;
  }
  .header-brand{
    height:68px!important;
    max-width:calc(100% - 48px)!important;
  }
  .header-flag{
    width:clamp(104px,30vw,118px)!important;
    height:68px!important;
    flex-basis:clamp(104px,30vw,118px)!important;
  }
  .header-logo-core{
    height:68px!important;
    margin-left:clamp(-16px,var(--header-logo-offset-x,-40px),6px)!important;
  }
  .header-logo-core img{
    height:min(var(--logo-h),50px)!important;
    max-width:170px!important;
    max-height:50px!important;
  }
}

@media (max-width:340px){
  .nav .wrap{height:64px!important;min-height:64px!important}
  .header-brand{height:64px!important;max-width:calc(100% - 46px)!important}
  .header-flag{width:96px!important;height:64px!important;flex-basis:96px!important}
  .header-logo-core{height:64px!important;margin-left:-14px!important}
  .header-logo-core img{height:min(var(--logo-h),46px)!important;max-width:155px!important;max-height:46px!important}
  .burger{width:42px!important;height:42px!important;min-width:42px!important;flex-basis:42px!important}
}

/* =====================================================================
   R27 - MOBILE HEADER LOCKUP: SIN HUECO DE MENU / PROPORCION PC
   ---------------------------------------------------------------------
   En telefono el menu desplegable no participa en el reparto horizontal.
   El bloque bandera + ICAN/Africa/OACI ocupa toda la zona util de la franja
   blanca y el hamburguesa queda flotando a la derecha en una reserva fija.
   Esto evita que el "hueco del menu" comprima o mate la marca.
   Escritorio/tableta >680px no se modifican.
   ===================================================================== */
@media (max-width:680px){
  .nav .wrap{
    display:block!important;
    position:relative!important;
    height:76px!important;
    min-height:76px!important;
    padding:0!important;
    overflow:visible!important;
  }

  /* La marca usa toda la franja salvo la reserva real del hamburguesa. */
  .header-brand{
    position:absolute!important;
    left:0!important;
    top:0!important;
    bottom:0!important;
    width:calc(100% - 58px)!important;
    max-width:none!important;
    height:76px!important;
    min-width:0!important;
    display:flex!important;
    align-items:center!important;
    overflow:visible!important;
    z-index:4!important;
  }

  /* Presencia de bandera equivalente a escritorio: llena toda la altura
     blanca y gana ancho sin tocar el ancho reservado al menu. */
  .header-flag{
    width:clamp(112px,32vw,132px)!important;
    height:76px!important;
    flex:0 0 clamp(112px,32vw,132px)!important;
    align-self:stretch!important;
    overflow:visible!important;
    z-index:8!important;
  }
  .header-flag img{
    display:block!important;
    width:100%!important;
    height:100%!important;
    max-width:none!important;
    max-height:none!important;
    object-fit:cover!important;
    object-position:left center!important;
    clip-path:none!important;
    transform:none!important;
    animation:none!important;
    filter:saturate(1.025) contrast(1.015) drop-shadow(2px 0 2px rgba(6,38,60,.08))!important;
  }

  /* El lockup crece proporcionalmente y queda pegado a la punta sin taparla. */
  .header-logo-core{
    height:76px!important;
    margin-left:clamp(-16px,var(--header-logo-offset-x,-40px),-8px)!important;
    flex:1 1 auto!important;
    min-width:0!important;
    max-width:none!important;
    overflow:visible!important;
    background:transparent!important;
    z-index:3!important;
  }
  .header-logo-core img{
    display:block!important;
    width:auto!important;
    height:clamp(54px,15vw,64px)!important;
    max-height:64px!important;
    max-width:100%!important;
    object-fit:contain!important;
    object-position:left center!important;
  }

  /* El hamburguesa deja de consumir ancho dentro del flex: tiene su propia
     reserva fija y por eso nunca empuja la bandera ni los logos. */
  .burger{
    display:block!important;
    position:absolute!important;
    right:9px!important;
    top:50%!important;
    transform:translateY(-50%)!important;
    width:46px!important;
    height:46px!important;
    min-width:46px!important;
    margin:0!important;
    z-index:20!important;
  }

  /* El panel del menu permanece fuera del flujo hasta abrirse. */
  .navlinks{
    top:100%!important;
    left:0!important;
    right:0!important;
    width:100%!important;
    margin:0!important;
  }
  .navlinks:not(.open){
    visibility:hidden!important;
    pointer-events:none!important;
  }
  .navlinks.open{
    visibility:visible!important;
    pointer-events:auto!important;
  }
}

@media (max-width:400px){
  .nav .wrap{height:72px!important;min-height:72px!important}
  .header-brand{height:72px!important;width:calc(100% - 56px)!important}
  .header-flag{
    width:clamp(108px,31vw,124px)!important;
    height:72px!important;
    flex-basis:clamp(108px,31vw,124px)!important;
  }
  .header-logo-core{height:72px!important;margin-left:-13px!important}
  .header-logo-core img{
    height:clamp(52px,15vw,59px)!important;
    max-height:59px!important;
    max-width:100%!important;
  }
  .burger{right:8px!important;width:44px!important;height:44px!important;min-width:44px!important}
}

@media (max-width:340px){
  .nav .wrap{height:66px!important;min-height:66px!important}
  .header-brand{height:66px!important;width:calc(100% - 52px)!important}
  .header-flag{width:96px!important;height:66px!important;flex-basis:96px!important}
  .header-logo-core{height:66px!important;margin-left:-11px!important}
  .header-logo-core img{height:48px!important;max-height:48px!important;max-width:100%!important}
  .burger{right:6px!important;width:42px!important;height:42px!important;min-width:42px!important}
}

/* =====================================================================
   R29 - MOVIL ESTRECHO: CONSERVAR TAMANO R27 + MOSTRAR BANDERA COMPLETA
   ---------------------------------------------------------------------
   No reduce la bandera ni el lockup cuando baja la resolucion.
   La correccion de la "punta" se hace dentro de la imagen: se conserva la
   misma caja visual de R27 (108x72) y se evita cualquier recorte interno.
   ===================================================================== */
@media (max-width:370px){
  .nav .wrap{
    height:72px!important;
    min-height:72px!important;
    overflow:visible!important;
  }

  .header-brand{
    height:72px!important;
    width:calc(100% - 52px)!important;
    max-width:none!important;
    overflow:visible!important;
  }

  /* IMPORTANTE: no achicar la bandera. Mismo tamano que R27 en 356px. */
  .header-flag{
    width:108px!important;
    height:72px!important;
    min-width:108px!important;
    flex:0 0 108px!important;
    overflow:visible!important;
    z-index:8!important;
  }
  .header-flag img{
    display:block!important;
    width:108px!important;
    height:72px!important;
    min-width:108px!important;
    max-width:none!important;
    max-height:none!important;
    /* fill conserva todo el lienzo de la bandera dentro de la MISMA caja;
       no usa contain (que la hacia pequena) ni cover (que mordia bordes). */
    object-fit:fill!important;
    object-position:left center!important;
    clip-path:none!important;
    transform:none!important;
    animation:none!important;
    overflow:visible!important;
  }

  .header-logo-core{
    height:72px!important;
    margin-left:-13px!important;
    min-width:0!important;
    max-width:none!important;
    overflow:visible!important;
  }
  .header-logo-core img{
    height:clamp(52px,15vw,59px)!important;
    max-height:59px!important;
    max-width:100%!important;
    object-fit:contain!important;
  }
}

/* =====================================================================
   R31 - MOBILE HEADER SAFE PREMIUM: R29 INTACTO, SIN CORTES NI PLACAS
   ---------------------------------------------------------------------
   Correccion conservadora despues de R30:
   - Base geometrica: R29 (bandera, lockup y hamburguesa sin reducir).
   - No usa pseudo-placas, max-width extra ni fondos que se monten encima.
   - La franja movil deja de ser blanco plano: degradado institucional muy
     suave de blanco a mist/sky para integrarla con el azul sin perder lectura.
   - Escritorio/tableta >680px permanece exactamente igual.
   ===================================================================== */
@media (max-width:680px){
  .nav{
    background:linear-gradient(90deg,
      #ffffff 0%,
      #ffffff 56%,
      #f8fbfd 70%,
      #eef5f9 84%,
      #e1edf4 100%)!important;
    border-bottom:1px solid rgba(15,79,120,.14)!important;
    box-shadow:0 4px 14px rgba(6,38,60,.08)!important;
    backdrop-filter:none!important;
    overflow:visible!important;
  }
  .nav.stuck{
    box-shadow:0 7px 20px rgba(6,38,60,.13)!important;
  }
  .nav .wrap{
    background:transparent!important;
    overflow:visible!important;
  }

  /* Neutraliza cualquier acabado de placa/capsula anterior. */
  .header-brand{
    background:transparent!important;
    box-shadow:none!important;
    filter:none!important;
    border-radius:0!important;
    overflow:visible!important;
  }
  .header-flag{
    background:transparent!important;
    box-shadow:none!important;
    border-radius:0!important;
    overflow:visible!important;
  }
  .header-logo-core{
    background:transparent!important;
    box-shadow:none!important;
    border-radius:0!important;
    overflow:visible!important;
  }
  .header-logo-core::before,
  .header-logo-core::after{
    content:none!important;
    display:none!important;
  }

  /* Hamburguesa clara y compacta; no roba ancho al lockup R29. */
  .burger{
    background:rgba(255,255,255,.94)!important;
    border:1px solid rgba(15,79,120,.20)!important;
    border-radius:13px!important;
    box-shadow:0 4px 12px rgba(6,38,60,.09)!important;
  }
  .burger span{
    background:var(--deep)!important;
  }

  /* Union limpia con la portada, sin franja residual. */
  .hero{
    margin-top:0!important;
    border-top:0!important;
  }
}

/* En telefonos estrechos NO se cambia ningun tamano: R29 manda. */
@media (max-width:370px){
  .header-flag{
    width:108px!important;
    height:72px!important;
    min-width:108px!important;
    flex:0 0 108px!important;
  }
  .header-logo-core{
    margin-left:-13px!important;
    max-width:none!important;
    flex:1 1 auto!important;
  }
  .header-logo-core img{
    max-width:100%!important;
  }
}

/* R37 - Registro interno ICAN 2026 */
.registro-modal{position:fixed;inset:0;z-index:10020;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(4,27,43,.72);backdrop-filter:blur(8px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .22s ease,visibility .22s ease}.registro-modal.open{opacity:1;visibility:visible;pointer-events:auto}.registro-dialog{width:min(1040px,100%);max-height:min(900px,92vh);display:flex;flex-direction:column;background:#fff;border:1px solid rgba(184,137,63,.28);border-radius:22px;box-shadow:0 32px 100px rgba(4,27,43,.36);overflow:hidden;transform:translateY(12px) scale(.99);transition:transform .22s ease}.registro-modal.open .registro-dialog{transform:none}.registro-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:24px 28px 22px;background:linear-gradient(135deg,#0a3049,#135c88);border-bottom:4px solid #b8893f;color:#fff}.registro-head h2{margin:.35rem 0 0;color:#fff;font-family:var(--display);font-size:clamp(1.8rem,3vw,2.6rem);line-height:1.03}.registro-kicker{font-family:var(--mono);font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:#b9d9ea}.registro-close{flex:0 0 auto;width:42px;height:42px;border:1px solid rgba(255,255,255,.35);border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.08);color:#fff;font:300 28px/1 Arial;cursor:pointer}.registro-close:hover{background:rgba(255,255,255,.18)}.registro-body{overflow:auto;padding:26px 28px 30px;overscroll-behavior:contain}.registro-intro{max-width:850px;margin:0 0 1.2rem;color:var(--body);font-size:1rem;line-height:1.65}.registro-fieldset{border:0;padding:0;margin:1.5rem 0}.registro-fieldset legend{font-family:var(--display);font-weight:700;font-size:1.42rem;color:var(--deep);padding:0;margin:0 0 .85rem}.registro-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem 1rem}.registro-grid .full{grid-column:1/-1}.registro-grid label,.registro-links label{display:block;margin:0 0 .35rem;font-family:var(--mono);font-size:.63rem;letter-spacing:.09em;text-transform:uppercase;font-weight:800;color:#557284}.registro-grid input,.registro-grid select,.registro-grid textarea,.registro-links input{width:100%;min-width:0;border:1px solid #cfdde5;border-radius:11px;background:#fff;color:var(--deep);padding:.72rem .78rem;font:inherit;box-shadow:0 1px 0 rgba(12,49,75,.02);transition:border-color .15s ease,box-shadow .15s ease}.registro-grid input:focus,.registro-grid select:focus,.registro-grid textarea:focus,.registro-links input:focus{outline:0;border-color:#1c78ad;box-shadow:0 0 0 3px rgba(28,120,173,.12)}.registro-grid textarea{resize:vertical;min-height:90px}.registro-links{margin:1rem 0;border:1px solid #d8e5eb;border-radius:14px;background:#f9fcfd;padding:.9rem 1rem}.registro-links summary{cursor:pointer;color:var(--deep);font-weight:800}.registro-links summary span{color:var(--muted);font-weight:500}.registro-links[open] summary{margin-bottom:.85rem}.registro-consent{display:flex;gap:.7rem;align-items:flex-start;padding:1rem;border:1px solid #e2e9ec;border-radius:12px;background:#fbfcfc;margin-top:1.2rem}.registro-consent input{flex:0 0 auto;width:18px;height:18px;margin-top:.1rem}.registro-consent label{margin:0;color:#4f6878;font-size:.84rem;line-height:1.5;font-weight:600;text-transform:none;letter-spacing:0}.registro-submit-row{display:flex;gap:.9rem;align-items:center;flex-wrap:wrap;margin-top:1rem}.registro-submit-row .btn:disabled{opacity:.55;cursor:wait}.registro-status{display:none;flex:1 1 300px;padding:.7rem .85rem;border-radius:10px;font-size:.87rem;font-weight:750;line-height:1.45}.registro-status.show{display:block}.registro-status.ok{background:#e4f4eb;color:#17613e;border:1px solid #bce2cc}.registro-status.err{background:#fbe8e9;color:#8d2933;border:1px solid #efc4c7}.registro-captcha-note{margin:.8rem 0 0;color:#8a9aa4;font-size:.68rem}.registro-hp{position:absolute!important;left:-10000px!important;top:auto!important;width:1px!important;height:1px!important;overflow:hidden!important}.registro-modal input[type=email],.registro-modal input[type=url],.registro-modal input[type=tel]{direction:ltr;text-align:left}html[dir="rtl"] .registro-head,html[dir="rtl"] .registro-body{text-align:right}html[dir="rtl"] .registro-consent{flex-direction:row-reverse;justify-content:flex-end}
@media(max-width:760px){.registro-modal{padding:0;align-items:stretch}.registro-dialog{max-height:100vh;height:100%;border-radius:0}.registro-head{padding:18px 16px}.registro-body{padding:20px 16px 30px}.registro-grid{grid-template-columns:1fr}.registro-grid .full{grid-column:auto}.registro-fieldset{margin:1.2rem 0}.registro-submit-row .btn{width:100%;justify-content:center}.registro-status{flex-basis:100%}}

/* ---------- Captcha propio ICAN (R38) ---------- */
.ican-captcha{margin:1.2rem 0 0;padding:1rem 1.1rem;border:1px solid #d8e5eb;border-radius:14px;background:#f9fcfd}
.ican-captcha-fila{display:flex;gap:1.1rem;flex-wrap:wrap;align-items:flex-start}
.ican-captcha-img{flex:0 0 auto}
.ican-captcha-img img{display:block;max-width:100%;height:auto;border-radius:11px;border:1px solid #d8e5eb;background:#fff;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}
.ican-captcha-pregunta{flex:1 1 260px;margin:0;font-weight:800;color:var(--deep);font-size:1rem;line-height:1.5}
.ican-captcha-campo{flex:1 1 220px;min-width:200px}
.ican-captcha-campo label{display:block;margin:0 0 .35rem;font-family:var(--mono);font-size:.63rem;letter-spacing:.09em;text-transform:uppercase;font-weight:800;color:#557284}
.ican-captcha-campo input{width:100%;border:1px solid #cfdde5;border-radius:11px;background:#fff;color:var(--deep);padding:.72rem .78rem;font:inherit;font-weight:800;font-size:1.05rem;letter-spacing:.26em;text-align:center}
.ican-captcha-campo input:focus{outline:0;border-color:#1c78ad;box-shadow:0 0 0 3px rgba(28,120,173,.12)}
.ican-captcha-campo small{display:block;margin-top:.4rem;color:var(--muted);font-size:.76rem;line-height:1.4}
.ican-captcha-acciones{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.6rem}
.ican-captcha-btn{border:1px solid #cfdde5;background:#fff;color:var(--deep);border-radius:999px;padding:.4rem .85rem;font:inherit;font-size:.76rem;font-weight:800;cursor:pointer;transition:border-color .15s ease,color .15s ease}
.ican-captcha-btn:hover{border-color:#1c78ad;color:#1c78ad}
.ican-captcha-btn.alt{color:#557284;font-weight:600}
.ican-captcha-aviso{margin-top:.6rem;font-size:.82rem;color:var(--muted)}
.ican-captcha-aviso.err{color:#8d2933;font-weight:750}
.ican-captcha-nota{margin:.6rem 0 0;font-size:.68rem;color:#8a9aa4}
html[dir="rtl"] .ican-captcha-campo input{letter-spacing:normal}
@media(max-width:760px){.ican-captcha-fila{flex-direction:column}.ican-captcha-img img{width:100%}}


/* Zonas Económicas Especiales · bloque dedicado entre Conectividad y Turismo */
.zee-sec{position:relative}
.zee-sec .hd{position:relative;padding-bottom:1.35rem}
.zee-sec .hd::after{content:"";position:absolute;left:0;bottom:0;width:64px;height:3px;
  border-radius:3px;background:var(--brass)}
html[dir="rtl"] .zee-sec .hd::after{left:auto;right:0}

.zee-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.15rem;margin-top:2.3rem}
.zee-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);
  border-radius:var(--r);padding:1.7rem 1.55rem 1.75rem;box-shadow:var(--shadow-s);
  transition:transform .24s ease,box-shadow .24s ease,border-color .24s ease}
.zee-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-m);border-color:var(--sky)}
/* La ultima ficha completa la fila: sin huecos con 4, 5 o 7 fichas. */
.zee-card:last-child:nth-child(3n+2){grid-column:span 2}
.zee-card:last-child:nth-child(3n+1){grid-column:span 3}

.zee-tag{display:block;font-family:var(--mono);font-size:.63rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);margin-bottom:1.2rem}
.zee-cifra{display:block;font-family:var(--display);font-size:clamp(1.55rem,2.3vw,2.05rem);
  color:var(--deep);line-height:1;margin-bottom:.55rem;letter-spacing:-.02em;font-weight:400}
.zee-card h3{margin:0 0 .6rem;font-size:.98rem;line-height:1.45;color:var(--ink);font-weight:700}
.zee-texto{margin:0;color:var(--body);font-size:.86rem;line-height:1.65}
.zee-link{margin-top:1.1rem;align-self:flex-start;color:var(--atlantic);font-weight:700;
  font-size:.82rem;text-decoration:none;border-bottom:1px solid rgba(15,79,120,.35);padding-bottom:.12rem}
.zee-link:hover{color:var(--deep);border-bottom-color:var(--deep)}
.zee-nota{max-width:72ch;margin:2rem auto 0;padding-top:1.25rem;border-top:1px solid var(--line);
  color:var(--muted);font-size:.8rem;line-height:1.7;text-align:center}

@media(max-width:1100px){
  .zee-grid{grid-template-columns:repeat(2,1fr)}
  .zee-card:last-child:nth-child(3n+1),
  .zee-card:last-child:nth-child(3n+2){grid-column:auto}
  .zee-card:last-child:nth-child(2n+1){grid-column:span 2}
}
@media(max-width:700px){
  .zee-grid{grid-template-columns:1fr;gap:.95rem}
  .zee-card:last-child:nth-child(3n+1),
  .zee-card:last-child:nth-child(3n+2),
  .zee-card:last-child:nth-child(2n+1){grid-column:auto}
  .zee-nota{text-align:left}
}
@media(prefers-reduced-motion:reduce){.zee-card{transition:none}.zee-card:hover{transform:none}}


/* ========================================================================== */
/* ICAN 2026 Assistant - correccion responsive movil (2026-09-11)             */
/* Evita que 100vh coloque la cabecera del chat bajo la UI de Chrome/Safari.   */
/* ========================================================================== */
@media (max-width:680px){
  #chatPanel{
    left:max(6px,env(safe-area-inset-left));
    right:max(6px,env(safe-area-inset-right));
    bottom:max(6px,env(safe-area-inset-bottom));
    width:auto;
    height:calc(100svh - 12px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    max-height:calc(100svh - 12px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    border-radius:16px;
  }

  /* dvh sigue en tiempo real el viewport visible al aparecer/desaparecer
     las barras del navegador y, en navegadores compatibles, el teclado. */
  @supports (height:100dvh){
    #chatPanel{
      height:calc(100dvh - 12px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
      max-height:calc(100dvh - 12px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    }
  }

  .chat-head{
    flex:0 0 auto;
    padding:.78rem .9rem;
  }
  .chat-head b{font-size:1rem;line-height:1.2}
  .chat-head span{font-size:.56rem;line-height:1.55}
  .chat-head button{width:34px;height:34px}

  .chat-ticket{flex:0 0 auto;padding:.48rem .55rem}

  .chat-scroll{
    min-height:0;
    padding:.8rem;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
  }

  .chat-ai-welcome{
    gap:.65rem;
    padding:.75rem;
    margin-bottom:.7rem;
  }
  .chat-ai-welcome b{font-size:.9rem}
  .chat-ai-welcome p{font-size:.8rem;line-height:1.45}
  .chat-ai-badge{flex-basis:36px;width:36px;height:36px}

  .chat-msg{max-width:90%;font-size:.86rem}

  .chat-bar{
    flex:0 0 auto;
    align-items:stretch;
    gap:.45rem;
    padding:.55rem;
  }
  .chat-bar textarea{
    min-width:0;
    width:100%;
    height:46px;
    max-height:92px;
    padding:.62rem .68rem;
    font-size:.88rem;
  }
  .chat-bar button{
    flex:0 0 auto;
    min-width:82px;
    padding:0 .82rem;
  }

  .chat-assist-actions{
    flex:0 0 auto;
    gap:.35rem;
    padding:.4rem .65rem max(.55rem,env(safe-area-inset-bottom));
  }
  .chat-assist-actions button{font-size:.7rem;white-space:nowrap}
}

@media (max-width:400px){
  #chatPanel{
    left:max(4px,env(safe-area-inset-left));
    right:max(4px,env(safe-area-inset-right));
    bottom:max(4px,env(safe-area-inset-bottom));
    height:calc(100svh - 8px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    max-height:calc(100svh - 8px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    border-radius:14px;
  }
  @supports (height:100dvh){
    #chatPanel{
      height:calc(100dvh - 8px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
      max-height:calc(100dvh - 8px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    }
  }
  .chat-head{padding:.7rem .78rem}
  .chat-head span{font-size:.53rem}
  .chat-scroll{padding:.7rem}
  .chat-ai-welcome{padding:.68rem;gap:.58rem}
  .chat-ai-welcome p{font-size:.77rem}
  .chat-bar{padding:.48rem}
  .chat-bar button{min-width:76px;padding:0 .68rem;font-size:.84rem}
  .chat-assist-actions{padding-inline:.55rem}
  .chat-assist-actions button{font-size:.66rem}
}
