/* =========================================================
   POSEIDON TECNOLOGÍAS MARÍTIMAS
   Hoja de estilos principal
   ========================================================= */

/* ---------- 1. Tokens ---------- */
:root{
  /* Profundidades */
  --abyss:#02060D;
  --deep:#04101F;
  --navy:#08192E;
  --navy-2:#0E2743;
  --navy-3:#16395E;

  /* Metales del escudo */
  --gold:#D8B25F;
  --gold-lt:#F2DCA6;
  --gold-dk:#9C7A2C;
  --steel:#9DB2CC;
  --steel-dk:#5A7492;

  /* Agua */
  --cyan:#4FC9E3;
  --cyan-dk:#1B7C95;
  --foam:#E9F2FB;

  /* Texto */
  --ink:#EAF2FB;
  --ink-2:#A9BDD4;
  --ink-3:#6D85A1;

  /* Líneas */
  --line:rgba(157,178,204,.16);
  --line-2:rgba(157,178,204,.10);

  /* Tipografía */
  --f-display:"Montserrat","Segoe UI",system-ui,sans-serif;
  --f-body:"Inter","Segoe UI",system-ui,sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,"Cascadia Mono",Consolas,monospace;

  /* Ritmo */
  --wrap:1200px;
  --gut:clamp(20px,4vw,48px);
  --sec-y:clamp(88px,11vw,168px);
  --r:16px;
  --r-lg:24px;

  /* Curvas */
  --ease:cubic-bezier(.22,.68,0,1);
  --ease-out:cubic-bezier(.16,1,.3,1);

  /* Estado de scroll (lo escribe JS) */
  --scroll:0;
  --nav-h:74px;
}

@media (min-width:1800px){:root{--wrap:1330px}}
@media (min-width:2400px){:root{--wrap:1440px}}

/* ---------- 2. Reset ---------- */
*,*::before,*::after{box-sizing:border-box}
html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
  scroll-padding-top:calc(var(--nav-h) + 6px);
}
body{
  margin:0;
  font-family:var(--f-body);
  font-size:clamp(15.5px,.42vw + 14.5px,17.5px);
  line-height:1.68;
  font-weight:350;
  color:var(--ink-2);
  background:var(--abyss);
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
/* Degradado de profundidad global, ligado al scroll */
body::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:-2;
  background:
    radial-gradient(120% 70% at 50% -10%, #123253 0%, #08192E 38%, #04101F 66%, #02060D 100%);
  transform:translateY(calc(var(--scroll) * -4%));
  transition:opacity .4s linear;
}
body::after{
  content:"";
  position:fixed;
  inset:0;
  z-index:-1;
  pointer-events:none;
  background:
    radial-gradient(80% 50% at 50% 100%, rgba(2,6,13,.85), transparent 70%);
  opacity:calc(.25 + var(--scroll) * .6);
}
img,svg,canvas{display:block;max-width:100%}
img{height:auto}
a{color:inherit;text-decoration:none}
button,input,textarea{font:inherit;color:inherit}
h1,h2,h3,h4{
  font-family:var(--f-display);
  font-weight:800;
  line-height:1.06;
  letter-spacing:-.022em;
  color:var(--ink);
  margin:0;
  text-wrap:balance;
}
p{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
::selection{background:var(--gold);color:#0A1421}

.skip{
  position:fixed;top:-100px;left:16px;z-index:200;
  background:var(--gold);color:#0A1421;padding:10px 18px;border-radius:10px;
  font-weight:600;transition:top .2s;
}
.skip:focus{top:16px}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:6px}

/* ---------- 3. Utilidades ---------- */
.wrap{
  width:100%;
  max-width:var(--wrap);
  margin-inline:auto;
  padding-inline:var(--gut);
}
.section{position:relative;padding-block:var(--sec-y)}

/* El ancla del menu descuenta el relleno propio de la seccion, para que el
   contenido caiga siempre a la misma altura bajo la barra. */
.section[id],.metrics{scroll-margin-top:calc(34px - var(--sec-y))}
.voyage[id]{scroll-margin-top:calc(-1 * var(--nav-h) - 6px)}

/* Transicion entre secciones: un halo de luz que se abre al llegar,
   en lugar de una linea divisoria. */
.section::before,.metrics::before,.foot::before{
  content:"";
  position:absolute;top:0;left:50%;translate:-50% 0;
  width:min(1500px,98vw);height:clamp(170px,21vw,300px);
  pointer-events:none;z-index:0;
  background:radial-gradient(64% 54% at 50% 44%,
    rgba(79,201,227,.17) 0%,
    rgba(216,178,95,.07) 44%,
    transparent 72%);
  opacity:0;transform:scaleX(.4);
  transition:opacity 1.2s var(--ease),transform 1.8s var(--ease-out);
}
.section.seen::before,.metrics.seen::before,.foot.seen::before{
  opacity:1;transform:scaleX(1);
}
.section > .wrap,.metrics > .wrap,.foot > .wrap{position:relative;z-index:1}

.eyebrow{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--f-mono);
  font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--gold);
  margin-bottom:22px;
}
.eyebrow b{
  font-family:var(--f-mono);font-weight:400;font-size:11px;letter-spacing:.14em;
  color:var(--gold-dk);margin-right:2px;
}
.dot{
  width:6px;height:6px;border-radius:50%;
  background:var(--gold);
  box-shadow:0 0 0 4px rgba(216,178,95,.14);
  flex:none;
}
.pulse{
  width:7px;height:7px;border-radius:50%;background:#4ADE80;
  box-shadow:0 0 0 0 rgba(74,222,128,.6);
  animation:pulse 2.4s infinite;flex:none;display:inline-block;
}
.pulse--cyan{background:var(--cyan);box-shadow:0 0 0 0 rgba(79,201,227,.6)}
@keyframes pulse{
  0%{box-shadow:0 0 0 0 rgba(74,222,128,.55)}
  70%{box-shadow:0 0 0 9px rgba(74,222,128,0)}
  100%{box-shadow:0 0 0 0 rgba(74,222,128,0)}
}

.shead{max-width:760px;margin-bottom:clamp(44px,5vw,72px)}
.shead__title{font-size:clamp(32px,4.4vw,54px);margin-bottom:20px}
.shead__lead{font-size:clamp(16px,1.2vw,18.5px);color:var(--ink-2);max-width:62ch}

.pill{
  display:inline-flex;align-items:center;gap:7px;
  font-family:var(--f-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  padding:5px 11px;border-radius:999px;border:1px solid var(--line);
  background:rgba(157,178,204,.05);color:var(--ink-3);
  white-space:nowrap;
}
.pill i{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.pill--live{color:#5FD79A;border-color:rgba(95,215,154,.28);background:rgba(95,215,154,.08)}
.pill--dev{color:var(--gold);border-color:rgba(216,178,95,.3);background:rgba(216,178,95,.08)}
.pill--rnd{color:var(--cyan);border-color:rgba(79,201,227,.28);background:rgba(79,201,227,.08)}

/* ---------- 4. Botones ---------- */
.btn{
  --bg:transparent;--fg:var(--ink);--bd:var(--line);
  position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:15px 26px;border:1px solid var(--bd);border-radius:999px;
  background:var(--bg);color:var(--fg);
  font-family:var(--f-display);font-weight:700;font-size:14.5px;letter-spacing:.01em;
  cursor:pointer;overflow:hidden;isolation:isolate;
  transition:transform .35s var(--ease-out),box-shadow .35s var(--ease-out),border-color .3s,background .3s;
}
.btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .35s var(--ease-out)}
.btn:hover{transform:translateY(-2px)}
.btn:hover svg{transform:translateX(3px)}
.btn:active{transform:translateY(0)}
.btn--gold{
  --fg:#0A1421;--bd:transparent;
  background:linear-gradient(135deg,var(--gold-lt) 0%,var(--gold) 42%,var(--gold-dk) 100%);
  box-shadow:0 8px 26px -10px rgba(216,178,95,.65);
}
.btn--gold:hover{box-shadow:0 16px 38px -12px rgba(216,178,95,.85)}
.btn--gold::after{
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.55) 48%,transparent 62%);
  transform:translateX(-130%);
}
.btn--gold:hover::after{transform:translateX(130%);transition:transform .85s var(--ease-out)}
.btn--ghost{
  background:rgba(157,178,204,.05);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
}
.btn--ghost:hover{border-color:rgba(216,178,95,.5);background:rgba(216,178,95,.08)}
.btn--sm{padding:10px 20px;font-size:13.5px}
.btn--full{width:100%}

/* ---------- 5. Rail de profundidad ---------- */
.depth-rail{
  position:fixed;left:22px;top:50%;transform:translateY(-50%);
  z-index:40;display:flex;flex-direction:column;align-items:center;gap:12px;
  font-family:var(--f-mono);font-size:9.5px;letter-spacing:.18em;color:var(--ink-3);
  opacity:0;transition:opacity .5s;pointer-events:none;
}
.depth-rail.on{opacity:1}
.depth-rail__track{
  width:1.5px;height:150px;background:var(--line);border-radius:2px;overflow:hidden;
}
.depth-rail__fill{
  display:block;width:100%;height:0%;
  background:linear-gradient(180deg,var(--gold-lt),var(--gold),var(--cyan));
  box-shadow:0 0 10px rgba(216,178,95,.5);
}
.depth-rail__value{color:var(--gold);font-size:10px;letter-spacing:.06em}

/* ---------- 6. Navegación ---------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  height:var(--nav-h);
  display:flex;align-items:center;gap:24px;
  padding-inline:var(--gut);
  transition:background .4s,backdrop-filter .4s,border-color .4s,height .4s var(--ease);
  border-bottom:1px solid transparent;
}
.nav.stuck{
  height:64px;
  background:rgba(4,16,31,.72);
  backdrop-filter:blur(18px) saturate(160%);
  -webkit-backdrop-filter:blur(18px) saturate(160%);
  border-bottom-color:var(--line-2);
}
.nav.hide{transform:translateY(-110%);transition:transform .45s var(--ease)}
/* La barra se esconde al bajar sólo en teléfono, donde el alto de pantalla
   es escaso. De tablet para arriba se queda siempre a la vista. */
@media (min-width:768px){
  .nav.hide{transform:none}
}
.nav__brand{display:flex;align-items:center;gap:11px;margin-right:auto}
.nav__brand img{width:auto;height:40px;transition:height .4s var(--ease)}
.nav.stuck .nav__brand img{height:34px}
.nav__brand-text{display:flex;flex-direction:column;line-height:1}
.nav__brand-text b{
  font-family:var(--f-display);font-weight:800;font-size:15.5px;letter-spacing:.15em;
  background:linear-gradient(100deg,var(--gold-lt),var(--gold) 55%,var(--gold-dk));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.nav__brand-text small{
  font-family:var(--f-mono);font-size:8px;letter-spacing:.28em;color:var(--ink-3);margin-top:4px;
}
.nav__links{display:flex;gap:4px}
.nav__links a{
  position:relative;padding:9px 15px;border-radius:999px;
  font-size:14.5px;font-weight:450;color:var(--ink-2);
  transition:color .25s,background .25s;
}
.nav__links a::after{
  content:"";position:absolute;left:15px;right:15px;bottom:4px;height:1.5px;
  background:var(--gold);transform:scaleX(0);transform-origin:left;
  transition:transform .35s var(--ease-out);
}
.nav__links a:hover{color:var(--ink)}
.nav__links a:hover::after,.nav__links a.active::after{transform:scaleX(1)}
.nav__links a.active{color:var(--gold)}
.nav__burger{
  display:none;width:42px;height:42px;border:1px solid var(--line);border-radius:12px;
  background:rgba(157,178,204,.05);cursor:pointer;
  flex-direction:column;align-items:center;justify-content:center;gap:5px;
}
.nav__burger span{width:17px;height:1.6px;background:var(--ink);border-radius:2px;transition:.3s var(--ease)}
.nav__burger.open span:nth-child(1){transform:translateY(6.6px) rotate(45deg)}
.nav__burger.open span:nth-child(2){opacity:0}
.nav__burger.open span:nth-child(3){transform:translateY(-6.6px) rotate(-45deg)}

.mobilemenu{
  position:fixed;inset:0;z-index:99;
  background:rgba(2,6,13,.94);
  backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  animation:mmIn .35s var(--ease-out);
}
.mobilemenu[hidden]{display:none}
@keyframes mmIn{from{opacity:0}to{opacity:1}}
.mobilemenu a{
  font-family:var(--f-display);font-weight:700;font-size:26px;color:var(--ink);
  padding:14px 24px;letter-spacing:-.01em;
}
.mobilemenu a:hover{color:var(--gold)}

/* ---------- 7. Hero ---------- */
.hero{
  position:relative;
  min-height:100svh;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:calc(var(--nav-h) + 26px) var(--gut) 106px;
  text-align:center;
  overflow:hidden;
}
.hero__canvas{
  position:absolute;inset:0;width:100%;height:100%;z-index:0;
  /* el lienzo se disuelve por abajo: sin canto donde termina la portada */
  -webkit-mask-image:linear-gradient(180deg,#000 88%,transparent 100%);
  mask-image:linear-gradient(180deg,#000 88%,transparent 100%);
}
.hero__vignette{
  /* Va en su propia capa: está quieta, pero se apoya sobre un lienzo que
     se repinta en cada cuadro, y sin promoverla el navegador rehace sus
     dos degradados a pantalla completa cada vez. */
  will-change:opacity;
  position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    radial-gradient(78% 62% at 50% 44%, transparent 0%, rgba(2,6,13,.26) 74%, rgba(2,6,13,.66) 100%),
    linear-gradient(180deg, rgba(2,6,13,.5) 0%, transparent 20%, transparent 82%, rgba(2,6,13,.16) 100%);
}
.hero__inner{
  position:relative;z-index:2;will-change:transform;
  max-width:880px;
  display:flex;flex-direction:column;align-items:center;
  transform:translateY(calc(var(--hero-p,0) * -60px));
  opacity:calc(1 - var(--hero-p,0) * 1.15);
}
.hero__logo{
  /* El resplandor viene horneado en el PNG. Calculado por CSS, la
     animación de balanceo obligaba a rehacer dos drop-shadow de 46 px
     en cada cuadro: costaba catorce cuadros por segundo. */
  width:clamp(170px,17.6vw,258px);height:auto;
  margin-top:calc(-1 * clamp(27px,2.8vw,41px));
  margin-bottom:calc(clamp(16px,2vw,26px) - clamp(27px,2.8vw,41px));
  will-change:translate;
  animation:logoIn 1.5s var(--ease-out) both, bob 7s ease-in-out 1.5s infinite;
}
@keyframes logoIn{
  from{opacity:0;transform:translateY(26px) scale(.94);filter:blur(9px) drop-shadow(0 0 0 transparent)}
  to{opacity:1;transform:none}
}
@keyframes bob{0%,100%{translate:0 0}50%{translate:0 -9px}}

.hero .eyebrow{animation:up .9s .35s var(--ease-out) both}
.hero__title{
  font-size:clamp(34px,5.8vw,70px);
  letter-spacing:-.035em;
  margin-bottom:22px;
}
.hero__title .line{display:block;overflow:hidden}
.hero__title .line:nth-child(1){animation:up 1s .45s var(--ease-out) both}
.hero__title .line:nth-child(2){animation:up 1s .58s var(--ease-out) both}
.hero__title em{
  font-style:normal;
  background:linear-gradient(100deg,var(--gold-lt) 0%,var(--gold) 40%,#B8913D 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.hero__sub{
  max-width:56ch;font-size:clamp(15.5px,1.1vw,18px);color:var(--ink-2);
  animation:up 1s .72s var(--ease-out) both;
}
.hero__cta{
  display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin-top:32px;
  animation:up 1s .86s var(--ease-out) both;
}
@keyframes up{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}

.hero__hud{
  position:absolute;right:var(--gut);bottom:clamp(24px,3.4vh,44px);z-index:2;
  font-family:var(--f-mono);font-size:10.5px;letter-spacing:.13em;color:var(--ink-3);
  text-align:right;line-height:2.1;
  animation:up 1s 1.1s var(--ease-out) both;
}
.hud__row span{color:rgba(157,178,204,.45);margin-right:8px}
.hud__row--ok{color:#5FD79A;display:flex;align-items:center;gap:7px;justify-content:flex-end}

.hero__scroll{
  position:absolute;left:50%;translate:-50% 0;bottom:22px;z-index:2;
  display:flex;flex-direction:column;align-items:center;gap:10px;
  font-family:var(--f-mono);font-size:9.5px;letter-spacing:.3em;color:var(--ink-3);
  animation:up 1s 1.2s var(--ease-out) both;
  transition:color .3s;
}
.hero__scroll:hover{color:var(--gold)}
.hero__scroll-line{
  width:1px;height:44px;background:linear-gradient(180deg,var(--gold),transparent);
  position:relative;overflow:hidden;
}
.hero__scroll-line::after{
  content:"";position:absolute;top:0;left:0;width:100%;height:16px;
  background:var(--gold-lt);animation:trickle 2.2s var(--ease) infinite;
}
@keyframes trickle{0%{transform:translateY(-18px);opacity:0}30%{opacity:1}100%{transform:translateY(56px);opacity:0}}

@media (max-height:800px) and (min-width:861px){
  .hero{padding-top:calc(var(--nav-h) + 16px);padding-bottom:92px}
  .hero__logo{width:clamp(96px,9vw,132px);margin-bottom:14px}
  .hero__title{font-size:clamp(30px,4.4vw,52px);margin-bottom:16px}
  .hero__sub{font-size:16px;max-width:62ch}
  .hero__cta{margin-top:24px}
  .hero .eyebrow{margin-bottom:16px}
}

/* ---------- 8. Travesía (scroll narrativo) ---------- */
.voyage{position:relative}
.voyage__scroller{height:340vh}
.voyage__stage{
  position:sticky;top:0;height:100svh;overflow:hidden;
  display:flex;align-items:center;
}
.voyage__canvas{
  position:absolute;inset:0;width:100%;height:100%;
  -webkit-mask-image:linear-gradient(180deg,#000 86%,transparent 100%);
  mask-image:linear-gradient(180deg,#000 86%,transparent 100%);
}
.voyage__hud{
  position:absolute;right:var(--gut);top:calc(var(--nav-h) + 32px);
  display:flex;flex-direction:column;gap:20px;text-align:right;
  font-family:var(--f-mono);
}
.vhud__block{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.vhud__k{font-size:9px;letter-spacing:.26em;color:rgba(157,178,204,.5)}
.vhud__v{font-size:clamp(24px,2.6vw,34px);font-weight:500;color:var(--gold-lt);line-height:1;letter-spacing:-.02em}
.vhud__v--sm{font-size:13px;letter-spacing:.14em;color:var(--cyan)}
.vhud__u{font-size:11px;color:var(--ink-3);margin-top:2px}

.voyage__captions{
  position:relative;z-index:3;
  width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut);
}
.vcap{
  position:absolute;top:50%;
  max-width:520px;
  opacity:0;transform:translateY(calc(-50% + 30px));
  transition:opacity .6s var(--ease),transform .8s var(--ease-out);
  pointer-events:none;
}
.vcap.on{opacity:1;transform:translateY(-50%);pointer-events:auto}
.vcap__idx{
  display:block;font-family:var(--f-mono);font-size:10.5px;letter-spacing:.24em;
  color:var(--gold);margin-bottom:18px;
}
.vcap h2{font-size:clamp(28px,3.9vw,48px);margin-bottom:18px}
.vcap p{font-size:clamp(15.5px,1.15vw,18px);color:var(--ink-2)}

/* ---------- 9. Servicios ---------- */
.services{position:relative}
.cards{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:18px;
}
@media (max-width:1180px){.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}}
@media (max-width:339px){.cards{grid-template-columns:1fr}}
.card{
  position:relative;
  padding:32px 28px 28px;
  border:1px solid var(--line-2);border-radius:var(--r-lg);
  background:linear-gradient(165deg,rgba(157,178,204,.07),rgba(157,178,204,.02));
  overflow:hidden;isolation:isolate;
  transition:transform .5s var(--ease-out),border-color .4s,background .4s;
}
.card::before{
  content:"";position:absolute;inset:0;z-index:-1;opacity:0;
  background:radial-gradient(420px 300px at var(--mx,50%) var(--my,0%),rgba(216,178,95,.16),transparent 68%);
  transition:opacity .45s;
}
.card:hover{transform:translateY(-6px);border-color:rgba(216,178,95,.34)}
.card:hover::before{opacity:1}
.card__icon{
  width:46px;height:46px;margin-bottom:22px;
  display:grid;place-items:center;border-radius:13px;
  border:1px solid rgba(216,178,95,.26);
  background:rgba(216,178,95,.08);
}
.card__icon svg{
  width:25px;height:25px;fill:none;stroke:var(--gold);
  stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;
}
.card .pill{margin-bottom:14px}
.card h3{font-size:20.5px;letter-spacing:-.012em;margin-bottom:11px}
.card p{font-size:15px;color:var(--ink-2);margin-bottom:20px}
.card__link{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--f-display);font-weight:700;font-size:13.5px;color:var(--gold);
}
.card__link svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .3s var(--ease-out)}
.card__link:hover svg{transform:translateX(4px)}

/* ---------- 10. Producto (Marvital) ---------- */
.product{overflow:hidden}
.product__glow{
  position:absolute;top:8%;left:-12%;width:640px;height:640px;pointer-events:none;
  background:radial-gradient(circle,rgba(79,201,227,.16),transparent 66%);
  filter:blur(24px);
}
.product__grid{
  display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(40px,6vw,86px);align-items:center;
}
.product__title{
  font-size:clamp(46px,7vw,82px);letter-spacing:-.04em;line-height:.95;margin-bottom:22px;
  background:linear-gradient(100deg,#FFFDF7 0%,var(--gold-lt) 32%,var(--gold) 74%,#B08F3E 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.product__lead{font-size:clamp(16.5px,1.3vw,19.5px);color:var(--ink-2);margin-bottom:38px;max-width:56ch}
.flist{display:flex;flex-direction:column;gap:2px;margin-bottom:38px}
.flist li{
  position:relative;padding:16px 0 16px 32px;
  border-bottom:1px solid var(--line-2);
  font-size:15.5px;color:var(--ink-2);
}
.flist li:last-child{border-bottom:0}
.flist li::before{
  content:"";position:absolute;left:2px;top:25px;
  width:9px;height:9px;border-radius:50%;
  border:1.6px solid var(--gold);
  box-shadow:0 0 0 3px rgba(216,178,95,.12);
}
.flist b{color:var(--ink);font-weight:600}
.product__cta{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:20px}
.product__note{font-size:13px;color:var(--ink-3);max-width:58ch;line-height:1.65}

/* Mock de dispositivo */
.product__device{display:flex;flex-direction:column;align-items:center;gap:18px}
.device{
  position:relative;width:min(300px,84vw);aspect-ratio:9/18.6;
  border-radius:42px;padding:11px;
  background:linear-gradient(160deg,#2C3B50,#0B1524 42%,#1A2740);
  box-shadow:
    0 0 0 1px rgba(216,178,95,.18),
    0 40px 90px -30px rgba(0,0,0,.95),
    0 0 70px -20px rgba(79,201,227,.22);
  transform:rotateY(-11deg) rotateX(3deg) translateZ(0);
  transform-style:preserve-3d;
  animation:bob 8s ease-in-out infinite;
}
.device__notch{
  position:absolute;top:11px;left:50%;translate:-50% 0;z-index:3;
  width:92px;height:20px;border-radius:0 0 13px 13px;background:#0B1524;
}
.device__screen{
  width:100%;height:100%;border-radius:32px;overflow:hidden;
  background:linear-gradient(180deg,#061426,#020A14);
  border:1px solid rgba(157,178,204,.1);
}
.app{display:flex;flex-direction:column;height:100%;padding:30px 15px 0;font-size:11px}
.app__bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.app__title{font-family:var(--f-display);font-weight:800;font-size:15px;letter-spacing:.13em;color:var(--gold)}
.app__status{
  display:flex;align-items:center;gap:5px;
  font-family:var(--f-mono);font-size:7.5px;letter-spacing:.14em;color:var(--cyan);
}
/* ---- las cuatro pantallas del teléfono ---- */
.app__body{position:relative;flex:1;min-height:0}
.pantalla{
  position:absolute;inset:0;display:flex;flex-direction:column;
  opacity:0;visibility:hidden;transform:translateY(9px);
  transition:opacity .55s var(--ease),transform .7s var(--ease-out),visibility .55s;
}
.pantalla.is-on{opacity:1;visibility:visible;transform:none}
.pantalla:not(.is-on) *{animation-play-state:paused}

/* encabezado común de pantalla */
.p-hd{display:flex;flex-direction:column;gap:1px;margin-bottom:11px}
.p-hd b{font-family:var(--f-display);font-size:13px;color:var(--ink);letter-spacing:-.01em}
.p-hd span{font-family:var(--f-mono);font-size:7.5px;letter-spacing:.13em;color:var(--ink-3)}
.p-hd--alerta b{color:#F58A6E}
.p-sub{
  font-family:var(--f-mono);font-size:6.8px;letter-spacing:.14em;
  color:var(--ink-3);margin:10px 0 6px;
}

/* ---- chat ---- */
.avatar--med{background:linear-gradient(140deg,#5FD79A,#1E7F55);color:#04101F}
.burbujas{display:flex;flex-direction:column;gap:6px;margin-top:2px}
.bur{
  max-width:82%;padding:7px 10px;border-radius:12px;font-size:9.5px;line-height:1.45;
}
.bur--ent{
  align-self:flex-end;border-bottom-right-radius:4px;
  background:rgba(216,178,95,.14);border:1px solid rgba(216,178,95,.22);color:var(--ink);
}
.bur--rec{
  align-self:flex-start;border-bottom-left-radius:4px;
  background:rgba(157,178,204,.08);border:1px solid var(--line-2);color:var(--ink-2);
}
.bur--esc{display:flex;gap:3px;padding:9px 11px}
.bur--esc i{
  width:4px;height:4px;border-radius:50%;background:var(--ink-3);
  animation:escribe 1.3s ease-in-out infinite;
}
.bur--esc i:nth-child(2){animation-delay:.18s}
.bur--esc i:nth-child(3){animation-delay:.36s}
@keyframes escribe{0%,60%,100%{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-2px)}}
.entrada{
  margin-top:auto;display:flex;align-items:center;justify-content:space-between;
  padding:8px 10px;border-radius:999px;
  background:rgba(2,6,13,.5);border:1px solid var(--line-2);
  font-size:9px;color:var(--ink-3);
}
.entrada b{width:16px;height:16px;border-radius:50%;background:rgba(216,178,95,.7);flex:none}

/* ---- flota: radar ---- */
.radar{
  position:relative;height:152px;margin-bottom:11px;border-radius:12px;overflow:hidden;
  background:radial-gradient(circle at 50% 50%,rgba(79,201,227,.07),transparent 68%);
  border:1px solid var(--line-2);
}
.radar__ring{
  position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;
  border:1px solid rgba(240,110,90,.5);border-radius:50%;
  animation:ping 3.4s cubic-bezier(.2,.6,.35,1) infinite;
}
.radar__ring:nth-child(2){animation-delay:1.13s}
.radar__ring:nth-child(3){animation-delay:2.26s}
@keyframes ping{
  0%{transform:scale(1);opacity:.85}
  100%{transform:scale(11);opacity:0}
}
.radar__mob{
  position:absolute;left:50%;top:50%;width:8px;height:8px;margin:-4px 0 0 -4px;
  border-radius:50%;background:#F58A6E;box-shadow:0 0 10px rgba(245,138,110,.9);
}
.radar__ves{
  position:absolute;left:var(--x);top:var(--y);width:5px;height:5px;margin:-2.5px 0 0 -2.5px;
  border-radius:50%;background:var(--cyan);opacity:.8;
}
.p-list{display:flex;flex-direction:column;gap:4px}
.p-list li{
  display:flex;align-items:baseline;justify-content:space-between;
  padding:7px 9px;border-radius:8px;
  background:rgba(157,178,204,.05);border:1px solid var(--line-2);
}
.p-list b{font-size:10px;font-weight:600;color:var(--ink)}
.p-list span{font-family:var(--f-mono);font-size:9px;color:var(--gold)}

/* ---- SAR: deriva y tiempos ---- */
.deriva{
  position:relative;height:124px;border-radius:12px;overflow:hidden;
  background:rgba(2,6,13,.45);border:1px solid var(--line-2);
}
.deriva__area{
  position:absolute;left:42%;top:52%;width:78px;height:46px;margin:-23px 0 0 -39px;
  border-radius:50%;rotate:-22deg;
  border:1px dashed rgba(216,178,95,.5);background:rgba(216,178,95,.08);
  animation:deriva 6s ease-in-out infinite;
}
@keyframes deriva{
  0%,100%{transform:scale(.72) translate(-6px,3px)}
  50%{transform:scale(1.06) translate(7px,-3px)}
}
.deriva__pt{
  position:absolute;left:30%;top:56%;width:7px;height:7px;margin:-3.5px 0 0 -3.5px;
  border-radius:50%;background:#F58A6E;box-shadow:0 0 9px rgba(245,138,110,.85);
}
.deriva__lbl{
  position:absolute;left:9px;bottom:7px;
  font-family:var(--f-mono);font-size:6.6px;letter-spacing:.14em;color:var(--gold);
}
.p-eta{display:flex;flex-direction:column;gap:5px}
.p-eta li{display:grid;grid-template-columns:64px 1fr 42px;align-items:center;gap:7px}
.p-eta span{font-family:var(--f-mono);font-size:7.2px;letter-spacing:.04em;color:var(--ink-3);white-space:nowrap}
.p-eta i{
  height:4px;border-radius:3px;background:rgba(157,178,204,.12);position:relative;
}
.p-eta i::after{
  content:"";position:absolute;inset:0 auto 0 0;width:var(--w);border-radius:3px;
  background:linear-gradient(90deg,var(--gold-lt),var(--gold));
}
.p-eta li:first-child i::after{background:linear-gradient(90deg,#7FE3A0,#3FA870)}
.p-eta b{font-family:var(--f-mono);font-size:8.5px;color:var(--ink);text-align:right}
.p-eta li:first-child b{color:#7FE3A0}

.app__crew{display:flex;align-items:center;gap:9px;margin-bottom:14px}
.avatar{
  width:32px;height:32px;border-radius:10px;flex:none;display:grid;place-items:center;
  background:linear-gradient(140deg,var(--gold),var(--gold-dk));
  color:#0A1421;font-family:var(--f-display);font-weight:800;font-size:11px;
}
.app__crew b{display:block;color:var(--ink);font-size:12px;font-weight:600;line-height:1.3}
.app__crew small{color:var(--ink-3);font-size:9px}
.ecg{
  height:58px;margin-bottom:12px;border-radius:10px;overflow:hidden;
  background:rgba(79,201,227,.05);border:1px solid rgba(79,201,227,.14);
}
.ecg canvas{width:100%;height:100%;display:block}

/* aviso que aparece solo cuando el puntaje cruza el umbral */
.alerta{
  display:flex;align-items:center;gap:6px;
  margin:-4px 0 9px;padding:5px 8px;border-radius:8px;
  background:rgba(240,110,90,.14);border:1px solid rgba(240,110,90,.38);
  color:#F58A6E;font-family:var(--f-mono);font-size:7px;letter-spacing:.09em;
  animation:alertaIn .45s var(--ease-out);
}
.alerta[hidden]{display:none}
.alerta i{
  width:5px;height:5px;border-radius:50%;background:currentColor;flex:none;
  animation:blink 1.5s ease-in-out infinite;
}
@keyframes alertaIn{from{opacity:0;transform:translateY(-7px)}to{opacity:1;transform:none}}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}

/* punto que late al ritmo del corazón */
.vital__beat{
  width:5px;height:5px;border-radius:50%;background:var(--cyan);flex:none;
  margin-right:1px;transform-origin:center;
}
.vitals{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px}
.vital{
  padding:8px 9px;border-radius:9px;
  background:rgba(157,178,204,.06);border:1px solid var(--line-2);
  display:flex;align-items:baseline;gap:5px;
}
.vital__k{font-family:var(--f-mono);font-size:8px;letter-spacing:.1em;color:var(--ink-3);width:22px;flex:none}
.vital__v{font-family:var(--f-mono);font-size:15px;font-weight:500;color:var(--ink);line-height:1}
.vital__u{font-size:8px;color:var(--ink-3)}
.scores{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.score{
  padding:9px;border-radius:9px;text-align:center;
  background:rgba(157,178,204,.06);border:1px solid var(--line-2);
}
.score span{display:block;font-family:var(--f-mono);font-size:7.5px;letter-spacing:.14em;color:var(--ink-3)}
.score b{display:block;font-family:var(--f-display);font-size:19px;color:var(--ink);line-height:1.25}
.score small{font-size:8px;color:var(--ink-3)}
.score{transition:background .5s,border-color .5s}
.score b{transition:color .5s}
.score--warn{background:rgba(240,110,90,.1);border-color:rgba(240,110,90,.3)}
.score--warn b,.score--warn small{color:#F58A6E}
.score--mid{background:rgba(216,178,95,.1);border-color:rgba(216,178,95,.32)}
.score--mid b,.score--mid small{color:var(--gold)}
/* tendencia y asistente: lo que llenaba el hueco bajo los puntajes */
.trend{
  margin-top:10px;padding:8px 9px 4px;border-radius:10px;
  background:rgba(157,178,204,.05);border:1px solid var(--line-2);
}
.trend__hd{
  display:flex;justify-content:space-between;
  font-family:var(--f-mono);font-size:6.6px;letter-spacing:.14em;color:var(--ink-3);
  margin-bottom:4px;
}
.trend canvas{width:100%;height:40px;display:block}
.asist{
  margin-top:9px;padding:9px 10px;border-radius:10px;
  background:rgba(79,201,227,.05);border:1px solid rgba(79,201,227,.16);
}
.asist__k{
  display:block;font-family:var(--f-mono);font-size:6.6px;letter-spacing:.16em;
  color:var(--cyan);margin-bottom:5px;
}
.asist p{font-size:9.5px;line-height:1.5;color:var(--ink-2)}

.app__nav{
  margin-top:auto;display:flex;justify-content:space-between;
  padding:11px 2px 16px;border-top:1px solid var(--line-2);
  font-family:var(--f-mono);font-size:6.8px;letter-spacing:.1em;color:var(--ink-3);
}
.app__nav span{transition:color .4s}
.app__nav .on{color:var(--gold)}
.device__cap{font-family:var(--f-mono);font-size:10px;letter-spacing:.14em;color:var(--ink-3);text-transform:uppercase}

/* ---------- 11. Métricas ---------- */
.metrics{
  position:relative;padding-block:clamp(64px,7.5vw,100px);
}
.metrics__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:34px}
.metric b{
  display:block;font-family:var(--f-display);font-weight:800;white-space:nowrap;
  font-size:clamp(32px,3.5vw,48px);letter-spacing:-.035em;line-height:1.06;margin-bottom:14px;
  background:linear-gradient(100deg,var(--gold-lt),var(--gold) 55%,var(--gold-dk));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.metric b i{font-style:normal;font-size:.40em;letter-spacing:-.005em;margin-left:.18em}
.metric > span{font-size:14.5px;color:var(--ink-2);display:block;max-width:34ch}

/* ---------- 11b. Área de operación ---------- */
.area{overflow:hidden}
.area__grid{
  display:grid;grid-template-columns:1fr minmax(300px,420px);
  gap:clamp(40px,6vw,86px);align-items:center;
}
.area__lead{font-size:clamp(16px,1.2vw,18.5px);color:var(--ink-2);max-width:52ch;margin-bottom:34px}
.area__facts{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:30px}
.area__facts li{
  padding:16px 20px;border:1px solid var(--line-2);border-radius:14px;
  background:rgba(157,178,204,.04);
}
.area__facts b{
  display:block;font-family:var(--f-display);font-size:15.5px;letter-spacing:-.01em;
  background:linear-gradient(100deg,var(--gold-lt),var(--gold) 60%,var(--gold-dk));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.area__facts span{
  font-family:var(--f-mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--ink-3);
}
.area__note{font-size:12.5px;color:var(--ink-3);max-width:52ch;line-height:1.6}
.area__map{
  position:relative;margin:0;display:grid;place-items:center;
}
.area__map::before{
  content:"";position:absolute;inset:-8% -14%;pointer-events:none;
  background:radial-gradient(58% 46% at 42% 46%,rgba(79,201,227,.13),transparent 72%);
}
.mapa{position:relative;width:100%;height:auto;max-height:74vh}
.mapa__grid line{stroke:rgba(157,178,204,.09);stroke-width:.6}
.mapa__coord{fill:rgba(109,133,161,.5);font-family:var(--f-mono);font-size:7px;letter-spacing:.1em}
.mapa__eez{
  fill:none;stroke:rgba(216,178,95,.5);stroke-width:1.2;stroke-dasharray:5 4;
  stroke-linecap:round;
}
.mapa__tierra path,.mapa__malvinas path,.mapa__malvinas circle{
  fill:#091626;stroke:rgba(157,178,204,.42);stroke-width:.9;
  stroke-linejoin:round;vector-effect:non-scaling-stroke;
}
.mapa__isla{fill:rgba(216,178,95,.82);font-family:var(--f-mono);font-size:8px;letter-spacing:.18em}
.mapa__agua{fill:rgba(109,133,161,.40);font-family:var(--f-mono);font-size:8.5px;letter-spacing:.24em}
.mapa__eezlbl{fill:rgba(216,178,95,.48);font-family:var(--f-mono);font-size:7px;letter-spacing:.16em}
.puerto__pt{fill:var(--steel)}
.puerto__lbl{fill:rgba(233,242,251,.72);font-family:var(--f-mono);font-size:8px;letter-spacing:.05em}
.puerto--base .puerto__pt{fill:var(--gold-lt)}
.puerto--base .puerto__lbl{fill:var(--gold-lt)}
.puerto__halo{fill:rgba(216,178,95,.14)}
.barco{cursor:pointer;outline:none}
.barco__hit{fill:transparent;pointer-events:all}
.barco__eco{fill:rgba(79,201,227,.055);pointer-events:none;transition:fill .25s}
.barco__casco{fill:rgba(79,201,227,.85);pointer-events:none;transition:fill .25s}
.barco.on .barco__eco,.barco:focus-visible .barco__eco{fill:rgba(242,220,166,.16)}
.barco.on .barco__casco,.barco:focus-visible .barco__casco{fill:#F2DCA6}

/* rótulo de la embarcación señalada */
.mapa__tip{
  position:absolute;left:0;top:0;z-index:3;pointer-events:none;
  will-change:transform;
}
.mapa__tip[hidden]{display:none}
.mapa__tip-box{
  display:block;transform:translate(-50%,calc(-100% - 13px));
  padding:8px 11px;border-radius:10px;white-space:nowrap;
  background:rgba(4,16,31,.94);border:1px solid rgba(216,178,95,.34);
  box-shadow:0 10px 26px -12px rgba(0,0,0,.9);
  animation:tipIn .18s var(--ease-out);
}
.mapa__tip-box::after{
  content:"";position:absolute;left:50%;bottom:-5px;translate:-50% 0;
  width:8px;height:8px;rotate:45deg;
  background:rgba(4,16,31,.94);
  border-right:1px solid rgba(216,178,95,.34);
  border-bottom:1px solid rgba(216,178,95,.34);
}
.mapa__tip b{
  display:block;font-family:var(--f-display);font-weight:700;font-size:13px;
  color:var(--gold-lt);letter-spacing:-.005em;
}
.mapa__tip i{
  display:block;font-style:normal;margin-top:2px;
  font-family:var(--f-mono);font-size:9px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink-3);
}
@keyframes tipIn{from{opacity:0;transform:translate(-50%,calc(-100% - 6px))}}

/* ---------- 12. Desarrollo / I+D ---------- */
.rnd{overflow:hidden}
.rnd__canvas{
  position:absolute;inset:0;width:100%;height:100%;z-index:0;opacity:.85;
  -webkit-mask-image:linear-gradient(180deg,transparent 0%,#000 11%,#000 89%,transparent 100%);
  mask-image:linear-gradient(180deg,transparent 0%,#000 11%,#000 89%,transparent 100%);
}
.rnd__scrim{
  position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    radial-gradient(72% 64% at 26% 50%,rgba(2,6,13,.93),rgba(2,6,13,.5) 60%,transparent 86%);
}
.rnd::before{z-index:2}
.rnd .wrap{position:relative;z-index:3}
.road{display:flex;flex-direction:column;gap:2px}
.road__item{display:grid;grid-template-columns:56px 1fr;gap:0}
.road__mark{position:relative;display:flex;justify-content:center;padding-top:6px}
.road__mark::before{
  content:"";position:absolute;top:0;bottom:-2px;width:1px;
  background:linear-gradient(180deg,rgba(216,178,95,.4),rgba(216,178,95,.08));
}
.road__item:last-child .road__mark::before{background:linear-gradient(180deg,rgba(216,178,95,.4),transparent)}
.road__mark i{
  position:relative;width:11px;height:11px;border-radius:50%;
  background:var(--abyss);border:1.6px solid var(--gold);
  box-shadow:0 0 0 5px rgba(216,178,95,.1),0 0 16px rgba(216,178,95,.5);
}
.road__body{
  padding:0 0 46px 26px;
  max-width:66ch;
}
.road__head{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:12px}
.road__head h3{font-size:clamp(20px,2vw,26px);letter-spacing:-.018em}
.road__body p{font-size:15.5px;color:var(--ink-2);margin-bottom:16px}
.tags{display:flex;flex-wrap:wrap;gap:8px}
.tags li{
  font-family:var(--f-mono);font-size:10.5px;letter-spacing:.09em;
  padding:5px 11px;border-radius:7px;
  border:1px solid var(--line-2);background:rgba(157,178,204,.045);color:var(--ink-3);
}

/* ---------- 13. Empresa ---------- */
.about{position:relative;overflow:hidden}

/* Rosa de los vientos: marca de agua de carta portulana, quieta —una rosa
   no gira— y muy tenue, para que sea textura y no ilustración. */
.rosa{
  position:absolute;right:-13%;top:50%;translate:0 -50%;
  width:min(720px,62vw);height:auto;pointer-events:none;z-index:0;
  opacity:0;transition:opacity 2.2s var(--ease) .3s;
}
.about.seen .rosa{opacity:1}
.rosa__rumbos line{stroke:rgba(157,178,204,.055);stroke-width:.7}
.rosa__aros circle{fill:none;stroke:rgba(157,178,204,.07);stroke-width:.8}
.rosa__puntas path{fill:rgba(216,178,95,.035)}
.rosa__letras text{
  fill:rgba(216,178,95,.14);font-family:var(--f-mono);font-size:13px;letter-spacing:.16em;
}

/* El credo: cuatro cosas que la empresa sostiene. */
.credo{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:2px 0;margin-bottom:clamp(48px,6vw,80px);
}
.credo li{
  position:relative;padding:30px 34px 30px 0;
  border-top:1px solid var(--line-2);
}
.credo li:nth-child(odd){padding-right:clamp(34px,5vw,64px)}
.credo__n{
  display:block;font-family:var(--f-mono);font-size:11px;letter-spacing:.2em;
  color:var(--gold-dk);margin-bottom:12px;
}
.credo h3{
  font-size:clamp(19px,1.7vw,23px);letter-spacing:-.016em;margin-bottom:11px;
  text-wrap:balance;
}
.credo p{font-size:15px;color:var(--ink-2);max-width:44ch}

/* Firma: el sello y el lema */
.firma{
  display:flex;align-items:center;gap:clamp(28px,4vw,56px);flex-wrap:wrap;
  padding-top:clamp(28px,4vw,44px);border-top:1px solid var(--line-2);
}
.sello{position:relative;width:132px;height:132px;flex:none;display:grid;place-items:center}
.sello svg{position:absolute;inset:0;width:100%;height:100%}
.sello__giro{
  transform-box:fill-box;transform-origin:center;
  animation:girarSello 48s linear infinite;
}
@keyframes girarSello{to{rotate:360deg}}
.sello text{
  fill:rgba(216,178,95,.62);font-family:var(--f-mono);font-size:11.4px;letter-spacing:.055em;
}
.sello__aro{fill:none;stroke:rgba(216,178,95,.26);stroke-width:1}
.sello__aro--fino{stroke:rgba(216,178,95,.14)}
.sello img{
  position:relative;width:62px;height:auto;
  filter:drop-shadow(0 6px 18px rgba(0,0,0,.6));
}
.firma__txt{flex:1 1 300px}
.firma__lema{
  font-family:var(--f-display);font-weight:700;
  font-size:clamp(20px,2.2vw,29px);letter-spacing:-.022em;line-height:1.2;
  margin-bottom:26px;
  background:linear-gradient(100deg,#FFFDF7,var(--gold-lt) 42%,var(--gold) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.about__facts{display:flex;flex-wrap:wrap;gap:12px}
.about__facts div{
  padding:16px 20px;border:1px solid var(--line-2);border-radius:14px;
  background:rgba(157,178,204,.04);
}
.about__facts b{display:block;font-family:var(--f-display);font-size:15px;color:var(--ink);letter-spacing:-.01em}
.about__facts span{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3)}

/* ---------- 13b. Equipo ---------- */
.people{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:18px;max-width:940px;
}
.person{
  display:flex;gap:22px;align-items:flex-start;
  padding:28px 28px 26px;
  border:1px solid var(--line-2);border-radius:var(--r-lg);
  background:linear-gradient(165deg,rgba(157,178,204,.07),rgba(157,178,204,.02));
  transition:transform .5s var(--ease-out),border-color .4s;
}
.person:hover{transform:translateY(-4px);border-color:rgba(216,178,95,.32)}
.person__avatar{
  position:relative;flex:none;
  width:66px;height:66px;border-radius:50%;
  display:grid;place-items:center;
  border:1px solid rgba(216,178,95,.34);
  background:radial-gradient(circle at 34% 30%,rgba(216,178,95,.20),rgba(216,178,95,.05) 62%,transparent);
}
.person__avatar::after{
  content:"";position:absolute;inset:-7px;border-radius:50%;
  border:1px solid rgba(216,178,95,.16);
  opacity:0;
}
.person:hover .person__avatar::after{animation:ping 2s var(--ease) infinite}
@keyframes ping{
  0%{opacity:.9;transform:scale(.86)}
  70%{opacity:0;transform:scale(1.22)}
  100%{opacity:0;transform:scale(1.22)}
}
.person__avatar span{
  font-family:var(--f-display);font-weight:800;font-size:20px;letter-spacing:.04em;
  background:linear-gradient(120deg,var(--gold-lt),var(--gold) 60%,var(--gold-dk));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.person h3{font-size:21px;letter-spacing:-.015em;margin-bottom:5px}
.person__role{
  font-family:var(--f-mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--gold);margin-bottom:5px;
}
/* el oficio va en voz de texto, no de etiqueta: es lo que la persona hace */
.person__oficio{
  font-size:14px;line-height:1.45;color:var(--ink-2);margin-bottom:18px;
}
.person__links{display:flex;flex-direction:column;gap:9px}
.person__links li{display:flex;align-items:baseline;gap:12px}
.person__links span{
  font-family:var(--f-mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--ink-3);width:66px;flex:none;
}
.person__links a{
  font-size:15px;color:var(--ink);
  border-bottom:1px solid transparent;transition:color .25s,border-color .25s;
}
.person__links a:hover{color:var(--gold);border-bottom-color:rgba(216,178,95,.45)}

/* ---------- 14. Contacto ---------- */
.contact{position:relative}
.contact__grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(40px,6vw,80px);align-items:start}
.contact__copy p{margin-bottom:34px;max-width:46ch}
.contact__list{display:flex;flex-direction:column;gap:2px}
.contact__list li{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:10px 20px;
  padding:17px 0;border-bottom:1px solid var(--line-2);
}
.contact__list span{
  font-family:var(--f-mono);font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--ink-3);width:88px;flex:none;
}
/* Los valores van agrupados: si no, al envolverse el enlace de WhatsApp
   arrancaba en la columna de la etiqueta en vez de alinearse con los
   numeros. */
.contact__vals{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:9px 20px;
  flex:1 1 0;min-width:0;
}
.contact__list a,.contact__list b{
  font-family:var(--f-display);font-weight:700;font-size:16.5px;color:var(--ink);
  letter-spacing:-.012em;transition:color .25s;
}
.contact__list a:hover{color:var(--gold)}

.contact__form{
  padding:clamp(26px,3vw,40px);
  border:1px solid var(--line-2);border-radius:var(--r-lg);
  background:linear-gradient(165deg,rgba(157,178,204,.07),rgba(157,178,204,.02));
  display:flex;flex-direction:column;gap:16px;
}
.field{display:flex;flex-direction:column;gap:8px}
.field label{
  font-family:var(--f-mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);
}
.field input,.field textarea{
  width:100%;padding:14px 16px;border-radius:12px;resize:vertical;
  border:1px solid var(--line);background:rgba(2,6,13,.45);color:var(--ink);
  font-size:15px;transition:border-color .25s,background .25s,box-shadow .25s;
}
.field input::placeholder,.field textarea::placeholder{color:rgba(109,133,161,.65)}
.field input:focus,.field textarea:focus{
  outline:none;border-color:rgba(216,178,95,.55);background:rgba(2,6,13,.7);
  box-shadow:0 0 0 3px rgba(216,178,95,.1);
}
.field.err input,.field.err textarea{border-color:rgba(240,110,90,.65)}
.form__hint{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.06em;color:var(--ink-3);text-align:center}
.form__hint.ok{color:#5FD79A}
.form__hint.bad{color:#F58A6E}

/* ---------- 15. Footer ---------- */
.foot{position:relative;padding-top:clamp(76px,8vw,116px);overflow:hidden}
.foot__waves{position:absolute;left:0;right:0;bottom:0;width:100%;height:200px;z-index:0;opacity:.8}
.foot .wrap{position:relative;z-index:1}
.foot__grid{
  display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:40px;
  padding-bottom:56px;
}
.foot__brand img{height:60px;width:auto;margin-bottom:18px;opacity:.95}
.foot__brand p{font-size:14.5px;color:var(--ink-3);max-width:30ch}
.foot__col{display:flex;flex-direction:column;gap:11px}
.foot__col h4{
  font-family:var(--f-mono);font-weight:500;font-size:10px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--gold);margin-bottom:6px;
}
.foot__col a,.foot__col span{font-size:14.5px;color:var(--ink-2);transition:color .25s}
.foot__col a:hover{color:var(--gold)}
.foot__legal{
  display:flex;flex-wrap:wrap;gap:18px;justify-content:space-between;
  padding-block:26px 34px;border-top:1px solid var(--line-2);
  font-size:11.5px;color:var(--ink-3);line-height:1.6;
}
.foot__legal span:last-child{max-width:56ch;text-align:right}

/* ---------- 15b. WhatsApp ---------- */
.wa{
  position:fixed;right:clamp(16px,2.4vw,28px);bottom:clamp(16px,2.4vw,28px);z-index:90;
  display:flex;align-items:center;gap:0;
  height:54px;padding:0 5px 0 5px;border-radius:999px;
  border:1px solid rgba(37,211,102,.34);
  background:rgba(4,16,31,.82);
  backdrop-filter:blur(14px) saturate(150%);-webkit-backdrop-filter:blur(14px) saturate(150%);
  box-shadow:0 12px 34px -14px rgba(0,0,0,.9),0 0 0 0 rgba(37,211,102,.28);
  opacity:0;transform:translateY(18px) scale(.9);pointer-events:none;
  transition:opacity .5s var(--ease),transform .6s var(--ease-out),
             border-color .3s,box-shadow .4s,gap .4s var(--ease-out);
}
.wa.on{opacity:1;transform:none;pointer-events:auto}
.wa.oculto{opacity:0;transform:translateY(14px) scale(.94);pointer-events:none}
.wa__icon{
  width:44px;height:44px;flex:none;border-radius:50%;
  display:grid;place-items:center;
  background:linear-gradient(150deg,#2BE072,#12A34E);
}
.wa__icon svg{width:23px;height:23px;fill:#04101F}
.wa__label{
  max-width:0;overflow:hidden;white-space:nowrap;
  font-family:var(--f-display);font-weight:700;font-size:14.5px;color:var(--ink);
  transition:max-width .45s var(--ease-out),padding .45s var(--ease-out);
}
.wa:hover,.wa:focus-visible{
  border-color:rgba(37,211,102,.6);
  box-shadow:0 16px 40px -14px rgba(0,0,0,.9),0 0 0 4px rgba(37,211,102,.10);
}
.wa:hover .wa__label,.wa:focus-visible .wa__label{max-width:120px;padding:0 16px 0 10px}
@media (hover:none){
  .wa__label{display:none}
}

.contact__wa{
  display:inline-flex;align-items:center;gap:9px;
}
.contact__wa svg{width:17px;height:17px;fill:#2BE072;flex:none}

/* ---------- 16. Revelados al scroll ---------- */
.reveal{
  opacity:0;transform:translateY(30px);
  transition:opacity .85s var(--ease) var(--d,0ms),transform 1s var(--ease-out) var(--d,0ms);
  will-change:opacity,transform;
}
.reveal.in{opacity:1;transform:none}

/* ---------- 17. Adaptativo ---------- */
@media (max-width:1024px){
  .product__grid,.contact__grid{grid-template-columns:1fr}
  .credo li:nth-child(odd){padding-right:clamp(16px,3vw,40px)}
  .rosa{right:-38%;width:min(620px,90vw);opacity:0}
  .about.seen .rosa{opacity:.75}
  .area__grid{grid-template-columns:1fr;justify-items:center}
  .area__facts{width:100%}
  .area__facts li{flex:1 1 220px}
  .area__map{max-width:380px;width:100%}
  .people{grid-template-columns:1fr;max-width:560px}
  .product__device{margin-top:8px}
  .device{width:min(268px,74vw)}
    .foot__grid{grid-template-columns:1fr 1fr}
  .depth-rail{display:none}
}
@media (max-width:1000px){
  .nav__links,.nav__cta{display:none}
  .nav__burger{display:flex}
}
@media (max-width:860px){
  .voyage__scroller{height:300vh}
  /* el boton flotante de WhatsApp vive abajo a la derecha: el HUD se
     corre por encima para que no le tape el sonar */
  .voyage__hud{top:auto;bottom:88px;right:var(--gut);flex-direction:row;gap:22px;align-items:flex-end}
  .vcap{max-width:none;padding-right:8px}
  /* en pantalla angosta el texto ocupa todo el ancho: los cardúmenes ceden */
  .rnd__canvas{opacity:.42}
  .rnd__scrim{background:radial-gradient(125% 72% at 42% 50%,rgba(2,6,13,.93),rgba(2,6,13,.58) 66%,transparent 94%)}
  .vcap h2{font-size:clamp(26px,6.2vw,36px)}
  .voyage__captions{padding-bottom:96px}
  .hero__hud{display:none}
  .foot__legal span:last-child{text-align:left}
}
@media (max-width:600px){
  .foot__grid{grid-template-columns:1fr;gap:32px}
  .road__item{grid-template-columns:34px 1fr}
  .road__body{padding-left:18px;padding-bottom:38px}
  .card{padding:26px 22px 24px}
  .hero__title{font-size:clamp(32px,9vw,46px)}
}

/* ---------- 18. Movimiento reducido ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
  .reveal{opacity:1;transform:none}
  .sello__giro{animation:none}
  .wa{opacity:1;transform:none;pointer-events:auto}
  .section::before,.metrics::before,.foot::before{opacity:1;transform:scaleX(1)}
  .vcap{opacity:1;position:relative;top:auto;transform:none;margin-bottom:40px}
  .voyage__scroller{height:auto}
  .voyage__stage{position:relative;height:auto;padding-block:80px}
  .voyage__captions{display:flex;flex-direction:column;gap:40px}
}


/* =========================================================
   19. Responsive fino

   La auditoría recorre trece resoluciones, de 320x568 a 3440x1440,
   y mide tres cosas: si algo se sale del ancho, si la llamada a la
   acción de la portada queda bajo el pliegue, y si algún blanco táctil
   baja de 40 px. Lo de acá abajo sale de esa medición.
   ========================================================= */

/* ---- teléfonos: la portada tiene que entrar ---- */
@media (max-width:560px){
  .hero{
    padding-top:calc(var(--nav-h) + 6px);
    padding-bottom:74px;
  }
  .hero__logo{
    width:clamp(132px,40vw,168px);
    margin-top:calc(-1 * clamp(21px,6.36vw,27px));
    margin-bottom:calc(12px - clamp(21px,6.36vw,27px));
  }
  .hero .eyebrow{font-size:10.5px;margin-bottom:14px}
  .hero__title{font-size:clamp(30px,8.6vw,40px);margin-bottom:16px}
  .hero__sub{font-size:14.5px;line-height:1.58;max-width:38ch}
  .hero__cta{margin-top:22px;gap:10px}
  .hero__cta .btn{padding:13px 20px;font-size:13.5px}
  .hero__scroll{bottom:14px}
  .hero__scroll-line{height:32px}
}

/* ---- teléfono apaisado: hay 390 px de alto y nada más ---- */
@media (orientation:landscape) and (max-height:560px){
  .hero{
    padding-top:calc(var(--nav-h) + 2px);
    padding-bottom:32px;
  }
  .hero__logo{
    width:clamp(84px,22vh,112px);
    margin-top:calc(-1 * clamp(13px,3.5vh,18px));
    margin-bottom:calc(4px - clamp(13px,3.5vh,18px));
  }
  .hero .eyebrow{font-size:10px;margin-bottom:9px}
  .hero__title{font-size:clamp(26px,8.4vh,36px);margin-bottom:10px}
  .hero__sub{font-size:13.5px;line-height:1.5;max-width:74ch}
  .hero__cta{margin-top:15px;gap:10px}
  .hero__cta .btn{padding:11px 19px;font-size:13px}
  .hero__scroll{display:none}
  .hero__hud{display:none}
  .mobilemenu{overflow-y:auto;padding-block:16px}
  .mobilemenu a{font-size:19px;padding:7px 20px}

  /* la travesía también vive de la altura */
  .voyage__scroller{height:260vh}
  .vcap h2{font-size:clamp(22px,7.6vh,30px)}
  .vcap p{font-size:14px}
  .vhud__v{font-size:22px}
}

/* ---- pantallas muy angostas: hay que rascar cada píxel de alto ---- */
@media (max-width:400px){
  .hero{padding-bottom:56px}
  .hero__logo{width:clamp(112px,36vw,132px)}
  .hero .eyebrow{margin-bottom:10px}
  .hero__title{margin-bottom:12px}
  .hero__sub{font-size:13.8px;line-height:1.5;max-width:36ch}
  .hero__cta{margin-top:18px}
  .hero__scroll{display:none}
}

@media (max-width:380px){
  /* el botón flotante tapa menos en una pantalla de 320 px */
  .wa{height:46px}
  .wa__icon{width:38px;height:38px}
  .wa__icon svg{width:20px;height:20px}
  .hero__cta{flex-direction:column;align-items:stretch;width:100%}
  .hero__cta .btn{width:100%}
  .product__cta{flex-direction:column;align-items:stretch}
  .product__cta .btn{width:100%}
  .nav__brand-text small{font-size:7.4px;letter-spacing:.2em}
  .area__facts li,.about__facts div{flex:1 1 100%}
  .person{flex-direction:column;gap:16px}
  .contact__list span{width:100%}
}

/* ---- sin puntero: los blancos se agrandan ---- */
@media (hover:none){
  .card__link{padding:12px 0 9px}
  .device__cap{font-size:10.5px}
  .contact__list li{padding:19px 0}
  .person__links li{padding:3px 0}
  .foot__col a{padding:4px 0}
  .nav__brand-text small{font-size:8.6px}
  .hero__scroll{font-size:10px}
  .vhud__k{font-size:10px}
}

/* ---- alto reducido en escritorio: la travesía se acorta ---- */
@media (min-width:861px) and (max-height:700px){
  .voyage__scroller{height:280vh}
  .vcap h2{font-size:clamp(26px,4.6vh,38px)}
}

/* ---- pantallas muy anchas: el mapa y el teléfono no se estiran ---- */
@media (min-width:1800px){
  .area__grid{grid-template-columns:1fr minmax(340px,470px)}
  .mapa{max-height:78vh}
}


/* =========================================================
   20. Dos por fila en teléfono

   Una tarjeta por fila obligaba a demasiado scroll. Van de a dos hasta
   los 340 px, pero para que el texto no quede en columnas de quince
   caracteres hay que achicar también el interior: relleno, ícono y
   cuerpo tipográfico.
   ========================================================= */
@media (max-width:700px){
  .cards{gap:12px}
  .card{padding:20px 15px 17px;border-radius:18px}
  .card__icon{width:38px;height:38px;border-radius:11px;margin-bottom:15px}
  .card__icon svg{width:21px;height:21px}
  .card .pill{font-size:9px;padding:4px 8px;gap:5px;margin-bottom:11px}
  .card h3{font-size:16.5px;margin-bottom:8px}
  .card p{font-size:13px;line-height:1.5;margin-bottom:14px}
  .card__link{font-size:12.5px;gap:6px}
  .card__link svg{width:13px;height:13px}

  .credo{gap:0 clamp(14px,3vw,26px)}
  .credo li{padding:20px 0 20px}
  .credo__n{font-size:9.5px;margin-bottom:8px}
  .credo h3{font-size:16.5px;margin-bottom:8px}
  .credo p{font-size:13px;line-height:1.5}
}

@media (max-width:430px){
  .card{padding:16px 12px 14px}
  .card h3{font-size:15px;letter-spacing:-.01em}
  .card p{font-size:12.4px;line-height:1.48}
  .card__link{font-size:11.5px}
  .credo h3{font-size:15px}
  .credo p{font-size:12.4px;line-height:1.48}
}

/* ---- el pie, en filas ordenadas en vez de una columna larga ---- */
@media (max-width:600px){
  .foot__grid{
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:26px 14px;padding-bottom:40px;
  }
  .foot__brand{grid-column:1 / -1}
  .foot__brand img{height:46px;margin-bottom:12px}
  .foot__brand p{font-size:13px}
  .foot__col{gap:8px}
  .foot__col h4{font-size:9px;margin-bottom:3px}
  .foot__col a,.foot__col span{font-size:12.5px;line-height:1.35}
}
@media (max-width:420px){
  .foot__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 14px}
}
