/* ============================================================
   Puerto Seguro · capa de identidad sobre el motor (app.css)
   logo: naranja #F3832C · azul FLUVIAL #2F5BA8 · gris #B2B2B2 · tagline #6D6D6D
   UI: azul primario #2F5BA8 (texto blanco 6,4:1) · naranja de acento con texto casi negro
   ============================================================ */
:root{
  --rojo:#2F5BA8; --rojo-900:#1E3E7A; --rojo-700:#28509A; --rojo-50:#E9EFF9; --rojo-100:#C9D7EE;
  --negro:#0F1C33; --negro-2:#16264A; --negro-3:#1F3360;
  --naranja:#F3832C; --amarillo:#F3832C; --amarillo-50:#FEF0E4;
  --tinta:#121826; --tinta-70:#3B4456; --tinta-45:#556072; --tinta-25:#687387;
  --linea:#DDE3EC; --linea-fuerte:#C5CEDB; --fondo:#F3F5F9; --fondo-2:#E6EBF2;
  --disp:"Archivo Black","Inter",sans-serif;
}
body{background:var(--fondo)}
.hub-cab h2,.mod h3,.kpi__val,.paso b,.hito b,.gate__t{font-weight:400;letter-spacing:.2px}
.hub-cab h2 span{color:var(--naranja)}
/* entrada */
.gate__bg i{background:linear-gradient(90deg,transparent,#F3832C 40%,#F3832C 60%,transparent);opacity:.14}
.gate__bg i:nth-child(2){background:linear-gradient(90deg,transparent,#2F5BA8 40%,#2F5BA8 60%,transparent);opacity:.18}
.gate__bg i:nth-child(3){background:linear-gradient(90deg,transparent,#B2B2B2 40%,#B2B2B2 60%,transparent);opacity:.08}
.gate__logo{width:min(440px,86vw)}
.pin__cajas input{border-color:#2C3C5E;background:#0E1626}
.pin__cajas input:focus{border-color:#F3832C}
.pin__btn{background:#F3832C;color:#121826}
/* wipe, marca y apertura con el emblema real */
.wipe{background:linear-gradient(120deg,#1E3E7A,#2F5BA8)}
.wipe__emb,#wipe-emb.wipe__emb{width:180px;height:auto}
.emb-placa{background:#fff;border-radius:22px;padding:18px 20px;box-shadow:0 20px 50px rgba(0,0,0,.3)}
.emb-placa svg{display:block;width:100%;height:auto}
.marca__emb{width:44px;height:40px;flex:0 0 44px;background:#fff;border-radius:10px;padding:4px}
.marca__emb svg{border-radius:0;filter:none}
.boot__emb{width:min(170px,40vw);background:#fff;border-radius:22px;padding:16px}
.boot__emb svg{display:block;width:100%;height:auto}
/* colores de tarjetas */
.chip--rojo{background:var(--rojo-50);color:var(--rojo-900);border-color:var(--rojo-100)}
.chip--amarillo{background:#F3832C;color:#121826;border-color:#F3832C}
.mod--dark .chip--amarillo{background:#F3832C;color:#121826}
.card--rojo{background:linear-gradient(135deg,#2F5BA8 0%,#1E3E7A 100%);border-color:#1E3E7A}
.card--sep{margin-top:16px}
.sin-pad .card__cuerpo{padding:0}
.card--rojo .stack div{background:#F3F5F9}
.hito b{color:var(--rojo-900)}
/* fotos reales */
.galeria{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:0}
.galeria figure{margin:0;position:relative;overflow:hidden;aspect-ratio:4/3;background:#0F1C33}
.galeria img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s ease}
.galeria figure:hover img{transform:scale(1.06)}
.galeria figcaption{position:absolute;left:0;right:0;bottom:0;padding:22px 10px 8px;font-size:11px;font-weight:600;color:#fff;background:linear-gradient(transparent,rgba(10,18,34,.85))}
@media(max-width:1100px){.galeria{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:600px){.galeria{grid-template-columns:repeat(2,minmax(0,1fr))}}
.foto-card{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:10px;display:block}
/* mapa: hidrovía y ruta entre los dos puertos */
.mapa-real .hidrovia{fill:none;stroke:#7FB2E5;stroke-width:5;stroke-linecap:round;stroke-dasharray:14 12;animation:fluye 3s linear infinite;opacity:.9}
.mapa-real .ruta--psf{stroke:#F3832C;stroke-width:5;stroke-dasharray:8 8;opacity:.9}
.mapa-real .reg--rio{font-size:24px;fill:#5E8DC2}
.corredor svg{width:100%;height:auto;display:block;border-radius:12px;border:1px solid var(--linea);max-height:520px}
.corredor .ccamino{fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round}
.corredor .ccamino-flujo{fill:none;stroke:#F3832C;stroke-linecap:round;stroke-linejoin:round;animation:fluye 2.4s linear infinite}
.corredor .cet{font-weight:800;fill:#121826;paint-order:stroke;stroke:#fff;stroke-width:.5px}
.corredor .cev{font-weight:600;fill:#556072;paint-order:stroke;stroke:#fff;stroke-width:.4px}
.corredor .crio{fill:#4E7DB5;font-weight:700;letter-spacing:.08em}
.corredor .halo{fill:var(--c);opacity:.18;animation:halo 2.2s ease-out infinite;transform-box:fill-box;transform-origin:center}
.corredor .leyenda,.leyenda--flota{display:flex;flex-wrap:wrap;gap:12px;font-size:11.5px;color:var(--tinta-45);margin-top:8px}
.corredor .leyenda i,.leyenda--flota i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:-1px}
/* portal: línea de tiempo de la carga */
.tl-carga{overflow-x:auto;margin:14px 0 6px}
.tl-carga svg{width:100%;min-width:560px;height:auto;display:block}
.tl-prog{stroke-dasharray:700;stroke-dashoffset:700;animation:tlProg 1.2s ease .2s forwards}
@keyframes tlProg{to{stroke-dashoffset:0}}
.tl-cont{transform:translate(62px,0);animation:tlCont 1.2s cubic-bezier(.3,.8,.3,1) .2s forwards}
@keyframes tlCont{to{transform:translate(var(--x),0)}}
.tl-p.on circle{animation:tlLate 1.6s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes tlLate{50%{transform:scale(1.15)}}
.portal-ficha{gap:10px;margin-top:6px}
.portal-ficha>div{padding:12px;border-radius:10px;background:var(--fondo);border:1px solid var(--linea);min-width:0}
.portal-ficha small{display:block;font-size:10.5px;color:var(--tinta-45);text-transform:uppercase;letter-spacing:.06em;font-weight:700}
.portal-ficha b{display:block;font-size:14px;margin:3px 0 2px}
.portal-ficha span{font-size:11.5px;color:var(--tinta-45)}
/* playa por bloques */
.playa-svg{width:100%;height:auto;display:block}
.playa-svg .pcel{opacity:0;animation:pcel .35s ease var(--d) forwards}
@keyframes pcel{to{opacity:1}}
/* capacidad: equipos */
.eq-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.eq{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:center;padding:14px;border:1px solid var(--linea);border-radius:14px;background:#fff;transition:transform .2s,box-shadow .2s}
.eq:hover{transform:translateY(-2px);box-shadow:var(--sombra-2)}
.eq__t b{display:block;font-size:13px;line-height:1.25}
.eq__t span{display:block;font-size:11.5px;color:var(--tinta-45);margin-top:2px}
.eq__t em{display:block;font-style:normal;font-size:11.5px;color:var(--tinta-70);margin-top:4px}
.eq__l{grid-column:1/-1;display:flex;justify-content:space-between;align-items:baseline;border-top:1px dashed var(--linea);padding-top:8px}
.eq__l small{font-size:11px;color:var(--tinta-45)}
.eq__l b{font-family:var(--disp);font-size:20px;font-weight:400;color:var(--rojo-900)}
/* flota */
.flota-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(74px,1fr));gap:8px;margin-top:12px}
.cam{text-align:center;padding:6px 4px;border-radius:10px;border:1px solid var(--linea);background:#fff;animation:camIn .4s ease both}
.cam svg{width:100%;height:auto;display:block}
.cam b{font-size:10.5px;color:var(--tinta-70)}
@keyframes camIn{from{opacity:0;transform:translateX(-8px)}}
/* turnos: agenda */
.agenda-env{overflow-x:auto}
.agenda{border-collapse:separate;border-spacing:3px;width:100%;min-width:760px;font-size:11px}
.agenda th{font-weight:700;color:var(--tinta-45);text-align:center}
.agenda td:first-child{min-width:170px}
.agenda td b{display:block;font-size:12px}
.agenda td small{color:var(--tinta-45)}
.agenda td i{display:block;height:28px;border-radius:5px;background:rgba(47,91,168,var(--o));border:1px solid rgba(47,91,168,.25);transform:scaleY(0);animation:agIn .4s ease var(--d) forwards;transform-origin:bottom}
.agenda td i.fuera{background:repeating-linear-gradient(45deg,#E6EBF2 0 5px,#F3F5F9 5px 10px);border-color:#DDE3EC}
@keyframes agIn{to{transform:none}}
/* propuesta modular */
.oferta{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-top:16px}
.of{position:relative;background:#fff;border:1px solid var(--linea);border-radius:16px;padding:20px 18px 18px;display:flex;flex-direction:column;gap:12px;min-width:0;animation:modIn .5s ease both}
.of:nth-child(2){animation-delay:.06s}.of:nth-child(3){animation-delay:.12s}.of:nth-child(4){animation-delay:.18s}.of:nth-child(5){animation-delay:.24s}
.of--rec{border-color:#F3832C;box-shadow:0 0 0 3px rgba(243,131,44,.18)}
.of__rec{position:absolute;top:-11px;left:16px;background:#F3832C;color:#121826;font-size:10.5px;font-weight:800;padding:3px 10px;border-radius:999px;text-transform:uppercase;letter-spacing:.05em}
.of__cab{display:flex;gap:10px;align-items:flex-start}
.of__cab .ic{width:38px;height:38px;flex:0 0 38px;border-radius:10px;background:var(--rojo-50);color:var(--rojo);display:grid;place-items:center}
.of__cab .ic svg{width:20px;height:20px}
.of h3{margin:0;font-family:var(--disp);font-weight:400;font-size:17px;text-transform:uppercase;line-height:1.1}
.of__cab span{font-size:11.5px;color:var(--tinta-45)}
.of p{margin:0;font-size:12.5px;color:var(--tinta-70);line-height:1.5;flex:1}
.of .precios{grid-template-columns:1fr 1fr}
.of__cta{text-align:center;justify-content:center}
.btn--grande{font-size:15px;padding:12px 26px}
.g>*,.card,.lienzo-chart{min-width:0}
.h280{height:280px}.h300{height:300px}.h320{height:320px}
.kpi__spark{position:static;display:block;width:100%;height:26px;margin-top:8px}
.mapa-real .pt .et{font-size:30px;font-weight:700;paint-order:stroke;stroke:#fff;stroke-width:6px;stroke-linejoin:round}
.mapa-real .pt .ev{font-size:24px;font-weight:600;fill:var(--tinta-45);paint-order:stroke;stroke:#fff;stroke-width:6px;stroke-linejoin:round}
.mapa-real .reg{font-size:30px}
@media(max-width:700px){.mapa-real .pt .et{font-size:36px}.mapa-real .pt .ev{font-size:29px}}
.wipe{overflow:hidden}
@media (prefers-reduced-motion:reduce){.tl-prog,.tl-cont,.playa-svg .pcel,.agenda td i,.cam,.of,.corredor .ccamino-flujo,.mapa-real .hidrovia{animation:none!important;opacity:1;stroke-dashoffset:0}.tl-cont{transform:translate(var(--x),0)}.agenda td i{transform:none}}
/* ajustes QA 20-10 */
.wow-hero .wow-datos b{font-size:clamp(17px,1.55vw,23px);font-weight:400;overflow:visible;text-overflow:clip}
.wow-hero .wow-logo{background:#fff;border-radius:14px;padding:10px 14px;box-sizing:border-box;width:var(--wow-logo-w,220px)}
.of .pblo b{font-size:22px;white-space:nowrap}
.of .pblo{padding:12px 6px}
.corredor .halo{animation:none;opacity:.16}
@media(max-width:700px){.wow-hero .wow-datos b{font-size:22px}}
