/* ==========================================================================
   Construye Group — hoja de estilos. Dos versiones (clara / oscura) con las mismas piezas.
   Marca: azules del logo #002396 · #0044CD · #0083EA · índigo #13124E. Nunito Sans + Roboto.
   ========================================================================== */
:root{
  --c1:#002396;--c2:#0044CD;--c3:#0083EA;--nv:#13124E;
  --btn1:#0035b8;--btn2:#0083EA;
  --bg:#ffffff;--bg2:#f3f6fd;--bg3:#e8effd;
  --ink:#101010;--ink2:#262626;--muted:#54595F;--card:#ffffff;--line:#dbe3f5;
  --linea-fina:rgba(0,68,205,.15);
  --head:rgba(255,255,255,.9);
  --sh:0 12px 34px rgba(0,35,150,.12);--sh-h:0 28px 60px rgba(0,35,150,.26);
  --hero:linear-gradient(135deg,#f9fbff 0%,#e7f0ff 55%,#d4e5ff 100%);
  --hero-ink:#0d0d2b;--hero-muted:#3c4668;
  --band:linear-gradient(120deg,#0c0b3a,#13124E 45%,#002396);
  --glass:rgba(255,255,255,.7);
  --r:8px;
  color-scheme:light;
}
:root[data-tema=oscuro]{
  --c1:#4C7DFF;--c2:#2F8CFF;--c3:#5CC0FF;--nv:#0c0d33;
  --btn1:#1f4fe0;--btn2:#2f8cff;
  --bg:#080926;--bg2:#0c0e37;--bg3:#12154a;
  --ink:#f1f5ff;--ink2:#dbe5ff;--muted:#a8b7e3;--card:#10134a;--line:#242a70;
  --linea-fina:rgba(92,192,255,.17);
  --head:rgba(8,9,38,.88);
  --sh:0 12px 34px rgba(0,0,0,.45);--sh-h:0 28px 64px rgba(47,140,255,.32);
  --hero:linear-gradient(135deg,#05061b 0%,#0a0c33 50%,#101b66 100%);
  --hero-ink:#ffffff;--hero-muted:#c3d0f5;
  --band:linear-gradient(120deg,#05061b,#0b0d3a 50%,#13226f);
  --glass:rgba(16,19,74,.7);
  color-scheme:dark;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:110px}
body{margin:0;font-family:'Roboto',system-ui,sans-serif;font-size:17px;line-height:1.65;color:var(--ink2);background:var(--bg);transition:background .4s,color .4s;overflow-x:hidden}
img,svg{max-width:100%}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{font-family:'Nunito Sans',system-ui,sans-serif;color:var(--ink);margin:0;line-height:1.1;letter-spacing:-.4px}
h1{font-weight:900;font-size:clamp(2.2rem,5.6vw,4.4rem)}
h2{font-weight:900;font-size:clamp(1.9rem,3.8vw,3.1rem)}
h3{font-weight:800;font-size:1.35rem;letter-spacing:-.2px}
h4{font-weight:800;font-size:.9rem;letter-spacing:3px;text-transform:uppercase}
p{margin:0 0 1em}
.wrap{width:min(1240px,100% - 48px);margin-inline:auto}
.saltar{position:absolute;left:-999px;top:8px;background:var(--c2);color:#fff;padding:10px 16px;border-radius:var(--r);z-index:100}.saltar:focus{left:8px}
.i{flex:none;vertical-align:middle}
:focus-visible{outline:3px solid var(--c3);outline-offset:3px;border-radius:4px}

/* ---------- barra superior y cabecera ---------- */
.topbar{background:#0c0b3a;color:#c9d6f5;font-size:13px;letter-spacing:.2px}
:root[data-tema=oscuro] .topbar{background:#04051a;border-bottom:1px solid #151a55}
.topbar .wrap{display:flex;flex-wrap:wrap;gap:6px 24px;justify-content:space-between;align-items:center;padding:8px 0}
.topbar a{display:inline-flex;align-items:center;gap:7px;transition:color .2s}
.topbar a:hover{color:#7cc4ff}
.topbar .i{color:#5CC0FF}
.tb-l,.tb-r{display:flex;flex-wrap:wrap;gap:6px 22px;align-items:center}
.soc{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.1);transition:background .25s,transform .25s,box-shadow .25s}
.soc:hover{background:var(--c3);color:#fff!important;transform:translateY(-3px);box-shadow:0 8px 18px rgba(0,131,234,.45)}
.cab{position:sticky;top:0;z-index:50;background:var(--head);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line);transition:box-shadow .3s,background .4s}
.cab.escrito{box-shadow:0 10px 34px rgba(0,35,150,.16)}
.cab-in{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:12px 0}
.logo{display:inline-flex;align-items:center;gap:13px}
.logo .m-o{display:none}.logo .m-c{display:block}
:root[data-tema=oscuro] .logo .m-o{display:block}:root[data-tema=oscuro] .logo .m-c{display:none}
.logo-t{display:flex;flex-direction:column;line-height:1}
.logo-t b{font-family:'Nunito Sans',system-ui,sans-serif;font-weight:900;font-size:28px;letter-spacing:1.4px;color:var(--ink)}
.logo-t i{font-style:normal;font-family:'Nunito Sans',system-ui,sans-serif;font-weight:700;font-size:12px;letter-spacing:9px;color:var(--c2);margin-top:4px}
:root[data-tema=oscuro] .logo-t i{color:var(--c3)}
.cab-logo{transition:transform .3s,filter .3s}.cab-logo:hover{transform:translateY(-2px);filter:drop-shadow(0 8px 14px rgba(0,68,205,.35))}
.menu{display:flex;align-items:center;gap:4px;margin-left:auto}
.mi{position:relative}
.mi>a{display:flex;align-items:center;gap:6px;padding:12px 14px;font-family:'Nunito Sans',system-ui,sans-serif;font-weight:800;font-size:13.5px;letter-spacing:.9px;text-transform:uppercase;color:var(--ink);position:relative}
.mi>a::after{content:"";position:absolute;left:14px;right:14px;bottom:6px;height:3px;border-radius:3px;background:linear-gradient(90deg,var(--c2),var(--c3));transform:scaleX(0);transform-origin:left;transition:transform .35s}
.mi:hover>a::after,.mi.on>a::after{transform:scaleX(1)}
.car{width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .3s}
.mi:hover .car{transform:rotate(225deg) translateY(-2px)}
.sub{position:absolute;left:0;top:100%;min-width:260px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:8px;box-shadow:var(--sh-h);opacity:0;visibility:hidden;transform:translateY(10px);transition:.3s}
.mi:hover .sub,.mi:focus-within .sub{opacity:1;visibility:visible;transform:none}
.sub a{display:block;padding:11px 14px;border-radius:6px;font-weight:500;font-size:15px;color:var(--ink2);transition:background .2s,padding .2s,color .2s}
.sub a:hover{background:linear-gradient(90deg,var(--bg3),transparent);padding-left:20px;color:var(--c2)}
:root[data-tema=oscuro] .sub a:hover{color:var(--c3)}
.tema-btn{width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--sh);transition:transform .3s,box-shadow .3s,border-color .3s}
.tema-btn:hover{transform:translateY(-3px) rotate(18deg);box-shadow:var(--sh-h);border-color:var(--c3)}
.tema-btn .t-luna{display:none}.tema-btn .t-sol{display:inline-flex}
:root[data-tema=claro] .tema-btn .t-sol{display:none}:root[data-tema=claro] .tema-btn .t-luna{display:inline-flex}
.burger{display:none;width:46px;height:46px;border:1px solid var(--line);background:var(--card);border-radius:var(--r);cursor:pointer;padding:0;flex-direction:column;gap:5px;align-items:center;justify-content:center}
.burger span{width:22px;height:2.5px;background:var(--ink);border-radius:3px;transition:.3s}
.burger[aria-expanded=true] span:nth-child(1){transform:translateY(7.5px) rotate(45deg)}.burger[aria-expanded=true] span:nth-child(2){opacity:0}.burger[aria-expanded=true] span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}

/* ---------- botones (8 px, sombra y hover) ---------- */
.btn{position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:10px;min-height:52px;padding:0 28px;border-radius:var(--r);border:0;cursor:pointer;font-family:'Nunito Sans',system-ui,sans-serif;font-weight:800;font-size:14px;letter-spacing:.9px;text-transform:uppercase;color:#fff;background:linear-gradient(100deg,var(--btn1),var(--btn2));box-shadow:0 10px 24px rgba(0,68,205,.34);transition:transform .3s,box-shadow .3s}
.btn::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.4) 50%,transparent 70%);background-size:220% 100%;background-position:-220% 0}
.btn:hover{transform:translateY(-4px);box-shadow:0 20px 40px rgba(0,68,205,.5)}.btn:hover::after{animation:shine .9s}
.btn:active{transform:translateY(-1px)}
.btn .i{transition:transform .3s}.btn:hover .i{transform:translateX(5px)}
.btn.ghost{background:transparent;color:var(--ink);border:1.5px solid currentColor;box-shadow:none}
.btn.ghost:hover{background:var(--c2);border-color:var(--c2);color:#fff;box-shadow:0 18px 36px rgba(0,68,205,.4)}
.btn.sobre{background:#fff;color:#002396;box-shadow:0 10px 26px rgba(0,0,0,.25)}
.btn.sobre:hover{box-shadow:0 22px 44px rgba(0,0,0,.35)}
.btn.sm{min-height:42px;padding:0 20px;font-size:12.5px}

/* ---------- héroe ---------- */
.hero{position:relative;background:var(--hero);overflow:hidden;color:var(--hero-ink)}
.hero .grid,.banda .grid{position:absolute;inset:0;background-image:linear-gradient(var(--linea-fina) 1px,transparent 1px),linear-gradient(90deg,var(--linea-fina) 1px,transparent 1px);background-size:56px 56px;animation:gridmove 9s linear infinite;-webkit-mask-image:linear-gradient(180deg,#000,rgba(0,0,0,.25));mask-image:linear-gradient(180deg,#000,rgba(0,0,0,.25))}
.glow{position:absolute;border-radius:50%;filter:blur(10px)}
.glow.g1{width:680px;height:680px;left:-220px;top:-260px;background:radial-gradient(circle,rgba(0,131,234,.38),transparent 66%);animation:drift1 15s ease-in-out infinite}
.glow.g2{width:760px;height:760px;right:-260px;bottom:-340px;background:radial-gradient(circle,rgba(0,68,205,.42),transparent 66%);animation:drift2 19s ease-in-out infinite}
#red{position:absolute;inset:0;width:100%;height:100%;opacity:.9}
.hero-in{position:relative;display:grid;grid-template-columns:1.05fr .95fr;gap:36px;align-items:center;padding:84px 0 150px}
.chip{display:inline-flex;align-items:center;gap:11px;padding:9px 18px;border:1px solid var(--line);background:var(--glass);backdrop-filter:blur(8px);border-radius:999px;font-family:'Nunito Sans',system-ui,sans-serif;font-weight:800;font-size:12px;letter-spacing:2.6px;text-transform:uppercase;color:var(--ink)}
.chip i{width:8px;height:8px;border-radius:50%;background:var(--c3);animation:pulse 1.8s infinite}
.hero h1{color:var(--hero-ink);margin:24px 0 22px}
.hero h1 em{font-style:normal;background:linear-gradient(100deg,var(--c1),var(--c3),var(--c1));background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shine 7s linear infinite}
:root[data-tema=oscuro] .hero h1 em{background-image:linear-gradient(100deg,#7cc4ff,#ffffff,#7cc4ff)}
.hero .lead{max-width:600px;color:var(--hero-muted);font-size:1.22rem}
.acciones{display:flex;flex-wrap:wrap;gap:14px;margin-top:30px}
.hero .btn.ghost{color:var(--hero-ink)}
.escena-w{position:relative;filter:drop-shadow(0 28px 44px rgba(0,35,150,.22));transition:transform .2s}
.escena{display:block;width:100%;height:auto;overflow:visible}
.scroll-ind{position:absolute;left:50%;bottom:110px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;font:800 11px 'Nunito Sans',system-ui,sans-serif;letter-spacing:3px;text-transform:uppercase;color:var(--hero-muted)}
.scroll-ind::after{content:"";width:1.5px;height:46px;background:linear-gradient(var(--c3),transparent);animation:caer 2s infinite}

/* escena SVG */
.escena{--c1:var(--c1)}
.dr{fill:none;stroke-dasharray:1;stroke-dashoffset:1;animation:draw 1.6s cubic-bezier(.5,0,.2,1) var(--d,0s) forwards}
.e-txt text{font:500 9.5px 'Roboto',sans-serif;letter-spacing:1.4px;fill:var(--muted);opacity:.9}
.e-brazo{transform-origin:366px 92px;animation:brazo 9s ease-in-out 2.6s infinite}
.e-carro{animation:carro 9s ease-in-out 2.6s infinite}
.e-cable{transform-origin:249px 96px;animation:cable 4.5s ease-in-out infinite}
.e-pulso{animation:blink 1.6s infinite}
.e-viga{stroke:var(--c3);stroke-dasharray:6 6;animation:dash 1.6s linear infinite}
.e-vehiculo{animation:coche 12s linear infinite}
.e-pared{fill:none;stroke:var(--c2);stroke-width:2;opacity:.8}
.e-agua{fill:none;stroke:var(--c3);stroke-width:5;stroke-linecap:round;stroke-dasharray:2 14;animation:dash 1.1s linear infinite}
.e-pozo{fill:none;stroke:var(--c2);stroke-width:2;opacity:.8}
.e-gota{fill:var(--c3);animation:gota 2.6s ease-in infinite}.e-gota.g2{animation-delay:1.3s}
.e-anillo{transform-origin:center;transform-box:fill-box;animation:anillo 2.6s ease-out infinite}.e-anillo.a2{animation-delay:1.2s}

/* ---------- secciones ---------- */
.sec{padding:104px 0;position:relative}
.sec.alt{background:var(--bg2)}
.sec-cab{max-width:820px;margin-bottom:54px}
.sec-cab.c{margin-inline:auto;text-align:center}
.kicker{display:inline-flex;align-items:center;gap:14px;font-family:'Nunito Sans',system-ui,sans-serif;font-weight:800;font-size:13px;letter-spacing:4px;text-transform:uppercase;color:var(--c2);margin-bottom:16px}
.kicker::before{content:"";width:46px;height:3px;border-radius:3px;background:linear-gradient(90deg,var(--c2),var(--c3))}
:root[data-tema=oscuro] .kicker{color:var(--c3)}
.sec-cab.c .kicker::after{content:"";width:46px;height:3px;border-radius:3px;background:linear-gradient(90deg,var(--c3),var(--c2))}
.sec-cab p{color:var(--muted);font-size:1.12rem;margin:18px 0 0}
.lead{font-size:1.2rem;color:var(--muted)}

/* rejillas: la última fila incompleta siempre centrada */
.g{display:flex;flex-wrap:wrap;justify-content:center;gap:26px}
.g>*{flex:0 1 calc((100% - 52px)/3);min-width:290px}
.g.g2>*{flex-basis:calc((100% - 26px)/2);min-width:320px}
.g.g4>*{flex-basis:calc((100% - 78px)/4);min-width:240px}
.g.g5>*{flex-basis:calc((100% - 104px)/5);min-width:190px}

/* tarjetas con foco de luz que sigue al puntero + inclinación */
.card{position:relative;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:34px 30px;box-shadow:var(--sh);transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s,border-color .35s;transform-style:preserve-3d;overflow:hidden}
.card::before{content:"";position:absolute;inset:0;background:radial-gradient(420px circle at var(--mx,50%) var(--my,0%),rgba(0,131,234,.2),transparent 45%);opacity:0;transition:opacity .35s;pointer-events:none}
.card::after{content:"";position:absolute;left:0;top:0;height:4px;width:100%;background:linear-gradient(90deg,var(--c1),var(--c2),var(--c3));transform:scaleX(0);transform-origin:left;transition:transform .5s}
.card:hover{box-shadow:var(--sh-h);border-color:var(--c3)}
.card:hover::before{opacity:1}.card:hover::after{transform:scaleX(1)}
.card h3{margin:16px 0 10px}.card p{color:var(--muted);margin:0}
.card .mas{display:inline-flex;align-items:center;gap:8px;margin-top:18px;font:800 13px 'Nunito Sans',system-ui,sans-serif;letter-spacing:1px;text-transform:uppercase;color:var(--c2)}
:root[data-tema=oscuro] .card .mas{color:var(--c3)}
.card .mas .i{transition:transform .3s}.card:hover .mas .i{transform:translateX(6px)}
.ico{width:64px;height:64px;color:var(--c2);display:block}
:root[data-tema=oscuro] .ico{color:var(--c3)}
.ico *{vector-effect:non-scaling-stroke}
.card:hover .ico *{stroke-dasharray:1;animation:draw 1.3s ease-out}
.card.dark{background:linear-gradient(160deg,#13124E,#002396);color:#fff;border-color:transparent}
.card.dark h3{color:#fff}.card.dark p{color:#d6e4ff}.card.dark .ico{color:#7cc4ff}

/* cifras */
.cifras{position:relative;z-index:3;margin-top:-84px}
.cifras .g{gap:20px}.cifras .g>*{flex-basis:calc((100% - 60px)/4)}
.cifra{background:var(--band);color:#fff;border-radius:12px;padding:30px 28px;box-shadow:var(--sh-h);position:relative;overflow:hidden;transition:transform .35s,box-shadow .35s}
.cifra:hover{transform:translateY(-9px);box-shadow:0 34px 70px rgba(0,68,205,.5)}
.cifra::before{content:"";position:absolute;right:-40px;top:-40px;width:140px;height:140px;border-radius:50%;background:radial-gradient(circle,rgba(92,192,255,.35),transparent 70%)}
.cifra b{display:block;font-family:'Nunito Sans',system-ui,sans-serif;font-weight:900;font-size:3.1rem;line-height:1;letter-spacing:-1px;background:linear-gradient(100deg,#fff,#7cc4ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.cifra span{display:block;margin-top:10px;color:#cddcff;font-size:.98rem;line-height:1.4}

/* dos columnas */
.dos{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.dos.inv>:first-child{order:2}
.visual{position:relative;border-radius:14px;overflow:hidden;min-height:440px;background:linear-gradient(155deg,#13124E,#002396 60%,#0083EA);box-shadow:var(--sh-h)}
.visual .grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px);background-size:38px 38px}
.visual svg.m{position:absolute;right:-40px;top:-20px;width:60%;opacity:.16;filter:brightness(0) invert(1);animation:floaty 10s ease-in-out infinite}
.visual .vi{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.visual.foto{background-size:cover;background-position:center}
.lista{list-style:none;margin:22px 0 0;padding:0;display:grid;gap:14px}
.lista li{display:flex;gap:14px;align-items:flex-start;color:var(--ink2)}
.lista .i{color:var(--c2);margin-top:3px}:root[data-tema=oscuro] .lista .i{color:var(--c3)}

/* línea de tiempo / pasos */
.pasos{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:22px;counter-reset:p}
.paso{position:relative;padding:28px 26px;border:1px solid var(--line);border-radius:12px;background:var(--card);box-shadow:var(--sh);transition:.35s}
.paso:hover{transform:translateY(-8px);box-shadow:var(--sh-h);border-color:var(--c3)}
.paso::before{counter-increment:p;content:"0" counter(p);display:block;font:900 2.6rem 'Nunito Sans',system-ui,sans-serif;background:linear-gradient(100deg,var(--c2),var(--c3));-webkit-background-clip:text;background-clip:text;color:transparent;margin-bottom:6px}
.paso h3{font-size:1.15rem;margin-bottom:8px}.paso p{margin:0;color:var(--muted);font-size:.98rem}

/* obras */
.filtros{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 34px}
.fil{border:1px solid var(--line);background:var(--card);color:var(--ink);padding:10px 18px;border-radius:var(--r);font:800 12.5px 'Nunito Sans',system-ui,sans-serif;letter-spacing:1px;text-transform:uppercase;cursor:pointer;box-shadow:var(--sh);transition:transform .25s,box-shadow .25s,background .25s,color .25s}
.fil:hover{transform:translateY(-3px);box-shadow:var(--sh-h)}
.fil.on{background:linear-gradient(100deg,var(--btn1),var(--btn2));color:#fff;border-color:transparent}
.obra{padding:0;cursor:pointer;display:flex;flex-direction:column;text-align:left}
.obra .foto{position:relative;height:210px;background:linear-gradient(150deg,#13124E,#0044CD);overflow:hidden}
.obra .foto::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px);background-size:30px 30px}
.obra .foto img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.obra:hover .foto img{transform:scale(1.09)}
.obra .foto svg{position:absolute;right:14px;bottom:10px;width:70px;opacity:.22;filter:brightness(0) invert(1)}
.obra .cuerpo{padding:24px 26px 28px;display:flex;flex-direction:column;gap:12px;flex:1}
.obra h3{font-size:1.02rem;line-height:1.35;letter-spacing:0;font-weight:700;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.etiq{display:inline-flex;align-self:flex-start;padding:5px 12px;border-radius:999px;background:var(--bg3);color:var(--c2);font:800 11px 'Nunito Sans',system-ui,sans-serif;letter-spacing:1.4px;text-transform:uppercase}
:root[data-tema=oscuro] .etiq{color:var(--c3)}
.entidad{display:flex;gap:9px;align-items:flex-start;margin-top:auto;color:var(--muted);font-size:.92rem;line-height:1.4}
.entidad .i{color:var(--c2);margin-top:2px}:root[data-tema=oscuro] .entidad .i{color:var(--c3)}
.obra[hidden]{display:none}
.cuenta{color:var(--muted);margin:0 0 22px;font-size:.95rem}

/* visor tipo carrusel */
.visor{position:fixed;inset:0;z-index:200;background:rgba(4,5,26,.9);backdrop-filter:blur(8px);display:none;align-items:center;justify-content:center;padding:24px}
.visor.on{display:flex;animation:fade .3s}
.visor-c{position:relative;width:min(980px,100%);background:var(--card);border-radius:14px;overflow:hidden;box-shadow:0 40px 90px rgba(0,0,0,.6)}
.visor-f{position:relative;aspect-ratio:16/9;background:linear-gradient(150deg,#13124E,#0044CD);display:flex;align-items:center;justify-content:center}
.visor-f img{width:100%;height:100%;object-fit:contain;background:#0a0b2a}
.visor-t{padding:24px 30px 30px}.visor-t h3{font-size:1.2rem;margin-bottom:10px;letter-spacing:0}
.visor-t p{margin:0;color:var(--muted)}
.vb{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;border:0;background:rgba(255,255,255,.92);color:#002396;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 24px rgba(0,0,0,.4);transition:transform .25s,box-shadow .25s}
.vb:hover{transform:translateY(-50%) scale(1.1);box-shadow:0 16px 34px rgba(0,0,0,.55)}
.vb.p{left:16px}.vb.n{right:16px}.vb.x{top:16px;right:16px;transform:none}.vb.x:hover{transform:scale(1.1)}
.vn{position:absolute;left:18px;bottom:14px;color:#cdd9ff;font:700 12px 'Nunito Sans',system-ui,sans-serif;letter-spacing:2px;background:rgba(5,6,27,.6);padding:5px 12px;border-radius:999px}

/* clientes */
.clientes{display:flex;flex-wrap:wrap;justify-content:center;gap:18px}
.cliente{flex:0 1 200px;min-height:112px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;box-shadow:var(--sh);font:800 14px 'Nunito Sans',system-ui,sans-serif;letter-spacing:1.5px;text-transform:uppercase;color:#002396;text-align:center;transition:.3s}
.cliente:hover{transform:translateY(-7px);box-shadow:var(--sh-h);border-color:var(--c3)}
.cliente img{max-height:76px;width:auto;object-fit:contain}

/* cinta */
.cinta{background:var(--band);color:#bcd0ff;overflow:hidden;border-block:1px solid rgba(124,196,255,.2)}
.cinta div{display:flex;width:max-content;animation:marquee 38s linear infinite;padding:20px 0;font:800 17px 'Nunito Sans',system-ui,sans-serif;letter-spacing:5px;text-transform:uppercase;white-space:nowrap}
.cinta:hover div{animation-play-state:paused}
.cinta span{padding:0 34px}.cinta em{font-style:normal;color:#5CC0FF;padding:0 4px}

/* franja oscura */
.franja{background:var(--band);color:#fff;position:relative;overflow:hidden}
.franja .grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:56px 56px;animation:gridmove 10s linear infinite}
.franja h2,.franja h3{color:#fff}.franja p{color:#d6e4ff}.franja .kicker{color:#7cc4ff}
.franja .card{background:linear-gradient(160deg,rgba(255,255,255,.1),rgba(255,255,255,.03));border-color:rgba(255,255,255,.17);backdrop-filter:blur(8px);box-shadow:none}
.franja .card:hover{box-shadow:0 24px 54px rgba(0,131,234,.32)}
.franja .card p{color:#cfdcff}.franja .ico{color:#7cc4ff}

/* banda de páginas interiores */
.banda{position:relative;background:var(--hero);overflow:hidden;color:var(--hero-ink)}
.banda-fx{position:absolute;inset:0}
.banda-in{position:relative;padding:74px 0 82px;max-width:none}
.banda h1{color:var(--hero-ink);font-size:clamp(2.1rem,4.6vw,3.6rem);margin:6px 0 16px;max-width:900px}
.banda .lead{color:var(--hero-muted);max-width:760px;margin:0}
.banda-tubo{position:absolute;left:0;bottom:6px;width:100%;height:46px;opacity:.9}
.t-pared{stroke:var(--c2);stroke-width:2;fill:none;opacity:.55;vector-effect:non-scaling-stroke}
.t-flujo{stroke:var(--c3);stroke-width:5;fill:none;stroke-dasharray:2 16;stroke-linecap:round;animation:dash 1.2s linear infinite;vector-effect:non-scaling-stroke}
.banda-m{position:absolute;right:5%;top:50%;margin-top:-170px;width:300px;opacity:.1;animation:floaty 10s ease-in-out infinite}
:root[data-tema=oscuro] .banda-m{filter:brightness(1.4)}
.migas{display:flex;flex-wrap:wrap;gap:9px;font-size:13px;color:var(--hero-muted);margin-bottom:22px;letter-spacing:.3px}
.migas a{transition:color .2s}.migas a:hover{color:var(--c3)}.migas b{color:var(--hero-ink);font-weight:700}

/* texto corrido */
.prosa{max-width:820px}.prosa h3{margin:34px 0 12px}.prosa p{color:var(--ink2)}
.cita{border-left:4px solid var(--c3);padding:6px 0 6px 24px;font:italic 700 1.4rem/1.45 'Nunito Sans',system-ui,sans-serif;color:var(--ink);margin:30px 0}

/* documentos */
.docs{display:grid;gap:12px}
.doc{display:flex;align-items:center;gap:16px;padding:16px 20px;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--sh);transition:transform .3s,box-shadow .3s,border-color .3s}
.doc:hover{transform:translateX(8px);box-shadow:var(--sh-h);border-color:var(--c3)}
.doc>.i{color:var(--c2)}:root[data-tema=oscuro] .doc>.i{color:var(--c3)}
.doc b{font-family:'Nunito Sans',system-ui,sans-serif;color:var(--ink);font-weight:800;line-height:1.3;flex:1}
.doc small{color:var(--muted);display:block;font:500 13px 'Roboto',system-ui,sans-serif;margin-top:2px}
.doc .desc{margin-left:auto;display:inline-flex;align-items:center;gap:8px;font:800 12px 'Nunito Sans',system-ui,sans-serif;letter-spacing:1px;text-transform:uppercase;color:#fff;background:linear-gradient(100deg,var(--btn1),var(--btn2));padding:9px 16px;border-radius:var(--r);box-shadow:0 8px 18px rgba(0,68,205,.3)}
.sub-doc{margin:42px 0 16px;display:flex;align-items:center;gap:14px}
.sub-doc::after{content:"";flex:1;height:1px;background:var(--line)}

/* formularios */
.form{display:grid;gap:18px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:36px;box-shadow:var(--sh)}
.fl2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.cmp{display:grid;gap:7px}
.cmp label{font:800 12.5px 'Nunito Sans',system-ui,sans-serif;letter-spacing:1.4px;text-transform:uppercase;color:var(--ink)}
.cmp input,.cmp select,.cmp textarea{width:100%;min-height:50px;padding:12px 15px;border:1.5px solid var(--line);border-radius:var(--r);background:var(--bg);color:var(--ink);font:400 16px 'Roboto',system-ui,sans-serif;transition:border-color .25s,box-shadow .25s}
.cmp textarea{min-height:150px;resize:vertical}
.cmp input:focus,.cmp select:focus,.cmp textarea:focus{outline:0;border-color:var(--c3);box-shadow:0 0 0 4px rgba(0,131,234,.2)}
.chk{display:flex;gap:12px;align-items:flex-start;color:var(--muted);font-size:.92rem}.chk input{width:20px;height:20px;margin-top:3px;accent-color:var(--c2)}
.nota{display:flex;gap:12px;padding:16px 20px;border-radius:10px;border:1px solid var(--line);background:var(--bg3);color:var(--ink2);font-size:.97rem}
.nota.ok{border-color:#1f9d55;background:rgba(31,157,85,.12)}.nota.err{border-color:#d33a2f;background:rgba(211,58,47,.12)}
.trampa{position:absolute;left:-9999px;opacity:0;height:0;overflow:hidden}
.mapa{border:0;width:100%;height:100%;min-height:340px;border-radius:14px;box-shadow:var(--sh);filter:saturate(.9)}
:root[data-tema=oscuro] .mapa{filter:invert(.92) hue-rotate(180deg) saturate(.8)}
.dato{display:flex;gap:16px;align-items:flex-start;padding:18px 0;border-bottom:1px solid var(--line)}
.dato .i{color:var(--c2);margin-top:3px}:root[data-tema=oscuro] .dato .i{color:var(--c3)}
.dato b{display:block;font-family:'Nunito Sans',system-ui,sans-serif;color:var(--ink)}.dato a:hover{color:var(--c2)}

/* pie */
.pie{background:#080926;color:#c9d6f5;position:relative;overflow:hidden}
:root[data-tema=oscuro] .pie{background:#04051a;border-top:1px solid #151a55}
.pie-fx{position:absolute;inset:0;pointer-events:none}
.pie-m{position:absolute;right:-60px;top:-30px;width:340px;opacity:.07;filter:brightness(2)}
.pie-g{position:relative;display:grid;grid-template-columns:1.4fr 1fr 1fr 1.3fr;gap:46px;padding:76px 0 52px}
.pie h4{color:#fff;margin-bottom:18px;font-size:.85rem}
.pie-g a,.pie-g .fl{display:flex;gap:10px;align-items:flex-start;margin:0 0 11px;transition:color .2s,transform .2s}
.pie-g a:hover{color:#7cc4ff;transform:translateX(4px)}
.pie .i{color:#5CC0FF;margin-top:3px}
.pie p{margin:20px 0}
.pie .logo-t b{color:#fff}.pie .logo-t i{color:#5CC0FF}
.pie .logo .m-o{display:block}.pie .logo .m-c{display:none}
.redes{display:flex;gap:10px}.redes a{margin:0}
.pie-leg{border-top:1px solid #1b2064;background:rgba(0,0,0,.22);position:relative}
.pie-leg .wrap{display:flex;flex-wrap:wrap;gap:14px 28px;align-items:center;justify-content:space-between;padding:22px 0;font-size:13.5px}
.razones{display:flex;flex-wrap:wrap;gap:6px 26px}.razones b{color:#fff;font-weight:700}
.pie-links{display:flex;gap:6px 24px;flex-wrap:wrap}.pie-links a:hover{color:#7cc4ff}
.lr-btn{display:inline-flex;align-items:center;gap:10px;padding:11px 20px;border-radius:var(--r);background:#fff;color:#002396;font:800 13px 'Nunito Sans',system-ui,sans-serif;letter-spacing:.9px;text-transform:uppercase;box-shadow:0 8px 22px rgba(0,0,0,.35);transition:transform .3s,box-shadow .3s}
.lr-btn:hover{transform:translateY(-4px);box-shadow:0 18px 36px rgba(0,131,234,.5)}
.lr-btn .i{color:#0044CD}
.creditos{background:#2a2f8a;color:#dfe7ff;font-size:12px;position:relative}
:root[data-tema=oscuro] .creditos{background:#0e1450}
.creditos .wrap{text-align:right;padding:9px 0}
.creditos a{color:#fff;font-weight:700}.creditos a:hover{text-decoration:underline}

/* revelado al hacer scroll */
.rv{opacity:0;transform:translateY(32px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1);transition-delay:var(--rd,0s)}
.rv.on{opacity:1;transform:none}
.sin-js .rv{opacity:1;transform:none}

/* animaciones */
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes shine{from{background-position:-200% 0}to{background-position:200% 0}}
@keyframes gridmove{to{background-position:56px 56px}}
@keyframes drift1{50%{transform:translate(9%,11%) scale(1.15)}}
@keyframes drift2{50%{transform:translate(-10%,-9%) scale(.95)}}
@keyframes floaty{50%{transform:translateY(-22px) rotate(2deg)}}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(0,131,234,.6)}100%{box-shadow:0 0 0 14px rgba(0,131,234,0)}}
@keyframes blink{50%{opacity:.2}}
@keyframes dash{to{stroke-dashoffset:-32}}
@keyframes marquee{to{transform:translateX(-50%)}}
@keyframes caer{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
@keyframes fade{from{opacity:0}}
@keyframes brazo{0%,100%{transform:rotate(-1.6deg)}50%{transform:rotate(1.4deg)}}
@keyframes carro{0%,100%{transform:translateX(0)}50%{transform:translateX(-30px)}}
@keyframes cable{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}
@keyframes coche{0%{transform:translateX(414px)}100%{transform:translateX(640px)}}
@keyframes gota{0%{transform:translateY(-26px);opacity:0}15%{opacity:1}60%{transform:translateY(0);opacity:1}100%{transform:translateY(0);opacity:0}}
@keyframes anillo{0%{transform:scale(.5);opacity:1}100%{transform:scale(2.4);opacity:0}}

/* adaptación */
@media (max-width:1100px){
  .hero-in{grid-template-columns:1fr;padding:64px 0 140px}.escena-w{max-width:640px;margin-inline:auto;width:100%}
  .dos{grid-template-columns:1fr;gap:40px}.dos.inv>:first-child{order:0}
  .pie-g{grid-template-columns:1fr 1fr}
  .scroll-ind{display:none}
}
@media (max-width:980px){
  .burger{display:flex}
  .menu{position:fixed;left:0;right:0;top:73px;bottom:0;margin:0;padding:8px 24px 40px;background:var(--bg);flex-direction:column;align-items:stretch;gap:0;overflow:auto;transform:translateX(100%);transition:transform .4s;z-index:-1}
  .menu.on{transform:none}
  .cab-in{position:relative;z-index:2}
  .mi>a{font-size:17px;padding:16px 4px;border-bottom:1px solid var(--line)}
  .mi>a::after{display:none}
  .sub{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:0;background:transparent;padding:0 0 8px 14px}
  .tema-btn{margin-left:auto}.burger{margin-left:0}
  .topbar{display:none}
  .cab{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--bg)}
  .menu{visibility:hidden;transition:transform .4s,visibility 0s .4s}.menu.on{visibility:visible;transition:transform .4s}
  .menu-pie{display:flex}
}
@media (max-width:760px){
  .cifras .g>*{flex-basis:100%}
  body{font-size:16px}.wrap{width:min(1240px,100% - 32px)}
  .sec{padding:72px 0}.fl2{grid-template-columns:1fr}.form{padding:24px}
  .pie-g{grid-template-columns:1fr;gap:34px}
  .g>*,.g.g2>*,.g.g4>*,.g.g5>*{flex-basis:100%;min-width:0}
  .cifras{margin-top:-60px}.logo-t b{font-size:23px}.logo-t i{font-size:10px;letter-spacing:7px}
  .doc{flex-wrap:wrap}.doc .desc{margin-left:0}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.rv{opacity:1;transform:none}.dr{stroke-dashoffset:0}}
@media print{.topbar,.cab,.creditos,.tema-btn,.burger{display:none!important}.rv{opacity:1;transform:none}}

/* Fotos de portada en los encabezados (si el archivo no existe, queda el fondo vectorial) */
.banda-foto{position:absolute;inset:0;background-size:cover;background-position:center;opacity:.42;mix-blend-mode:luminosity;transform:scale(1.04);transition:transform 8s ease-out}
.banda:hover .banda-foto{transform:scale(1.1)}
.banda-foto::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--hero) 8%,rgba(0,35,150,.35) 60%,rgba(0,35,150,.1))}
:root[data-tema=oscuro] .banda-foto{opacity:.3}
@media (prefers-reduced-motion:reduce){.banda-foto,.banda:hover .banda-foto{transition:none;transform:none}}

/* Altura fija de los encabezados: no cambia de una página a otra */
.banda{height:400px;display:flex;align-items:center}
.banda-in{padding:40px 0 48px;box-sizing:border-box}
.banda h1{font-size:clamp(2rem,4vw,3.2rem)}
@media (max-width:900px){.banda{height:440px}.banda-in{padding:32px 0 44px}.banda h1{font-size:1.85rem;margin:4px 0 10px}.banda .migas{display:none}.banda .lead{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}}

/* Pie del menú móvil (correo, teléfono, enlaces y redes; en escritorio van en la barra superior) */
.menu-pie{display:none;flex-direction:column;gap:4px;margin-top:28px;padding-top:20px;border-top:1px solid var(--line)}
.menu-pie>a:not(.soc){display:flex;align-items:center;gap:10px;padding:11px 4px;font-size:15px;color:var(--ink2,var(--ink));transition:color .2s}
.menu-pie>a:not(.soc):hover{color:var(--c3)}
.menu-pie .i{color:var(--c2)}
:root[data-tema=oscuro] .menu-pie .i{color:var(--c3)}
.menu-pie .redes{display:flex;gap:10px;margin-top:10px}
.menu-pie .soc{width:42px;height:42px;border-radius:50%;border:1px solid var(--line);background:var(--card);display:inline-flex;align-items:center;justify-content:center;color:var(--ink);box-shadow:var(--sh);transition:transform .3s,box-shadow .3s,border-color .3s}
.menu-pie .soc:hover{transform:translateY(-3px);box-shadow:var(--sh-h);border-color:var(--c3)}
/* Nada debe ensanchar la página en el móvil */
html,body{overflow-x:clip}

/* Carrusel de entidades: 5 a la vez en escritorio, 3 en tablet y 1 en móvil */
.carl{position:relative;display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:center}
.carl-vp{flex:1;min-width:0;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:14px 4px 22px;margin:-14px -4px -22px}
.carl-vp::-webkit-scrollbar{display:none}
.carl-pista{display:flex;gap:18px;width:100%}
.carl .cliente{flex:0 0 calc((100% - 4 * 18px) / 5);scroll-snap-align:start;box-sizing:border-box}
.carl-b{flex:0 0 auto;width:46px;height:46px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--sh);transition:transform .3s,box-shadow .3s,border-color .3s}
.carl-b:hover{transform:translateY(-3px);box-shadow:var(--sh-h);border-color:var(--c3)}
.carl-b.p .i{transform:rotate(180deg)}
.carl-pts{flex-basis:100%;display:flex;gap:8px;justify-content:center;margin-top:6px}
.carl-pts button{width:9px;height:9px;border-radius:9px;border:0;padding:0;background:var(--line);cursor:pointer;transition:width .3s,background .3s}
.carl-pts button.on{width:26px;background:var(--c2)}
:root[data-tema=oscuro] .carl-pts button.on{background:var(--c3)}
.carl.fijo .carl-b,.carl.fijo .carl-pts{display:none}
@media (max-width:1100px){.carl .cliente{flex-basis:calc((100% - 2 * 18px) / 3)}}
@media (max-width:760px){.carl{gap:8px}.carl-b{width:40px;height:40px}.carl .cliente{flex-basis:100%}.carl-vp{padding-inline:0}}

/* Logos de entidades: en gris y a color al pasar el mouse (en pantallas táctiles se ven a color) */
.cliente img{filter:grayscale(1);opacity:.72;transition:filter .35s,opacity .35s,transform .35s}
.cliente:hover img{filter:none;opacity:1;transform:scale(1.06)}
@media (hover:none){.cliente img{filter:none;opacity:1}}

/* Créditos: centrados y minimalistas */
.creditos{font-size:11px;letter-spacing:1.4px;text-transform:uppercase;color:#9fb0e8}
.creditos .wrap{text-align:center;padding:12px 0}
.creditos a{color:#dfe7ff;font-weight:700;letter-spacing:1.4px;transition:color .25s}
.creditos a:hover{color:#7cc4ff;text-decoration:none}
@media (max-width:980px){.menu-pie{display:flex}}
