/* ============================================================
   SilvIA — Design system v2
   Lenguaje: instrumento cartográfico. Tipografía editorial,
   filetes finos, numeración mono, cero ornamento genérico.
   ============================================================ */
:root{
  --green:#38a169;--accent:#32af8a;
  --black:#1a202c;--grey:#2d3748;--mist:#e2e8f0;--steel:#a0aec0;
  --fire:#dd6b20;--white:#ffffff;--ink:#0e3d25;
  --font-head:'Alexandria','Poppins','Century Gothic','Avenir Next','Segoe UI',sans-serif;
  --font-body:'Instrument Sans','Inter','Segoe UI',-apple-system,'Helvetica Neue',Arial,sans-serif;
  --font-mono:'IBM Plex Mono','Cascadia Mono','Consolas',monospace;
  --r-s:3px;--r-m:8px;
  /* --- tokens de tema (claro por defecto) --- */
  color-scheme:light;
  --text:#1a202c;--text-soft:#2d3748;--text-mute:#a0aec0;
  --page-bg:#ffffff;--surface:#ffffff;--surface-alt:#f6f9f7;--surface-soft:#fbfdfc;
  --border:#e2e8f0;--card-top:#1a202c;
  --ctrl-bg:rgba(255,255,255,.5);--ctrl-border:rgba(26,32,44,.12);--ctrl-border-hover:rgba(26,32,44,.26);
  --menu-bg:rgba(255,255,255,.9);--menu-border:rgba(26,32,44,.10);--menu-inset:rgba(255,255,255,.7);
  --menu-hover:rgba(56,161,105,.10);--menu-active:rgba(56,161,105,.12);
  --nav-bg1:rgba(255,255,255,.62);--nav-bg2:rgba(255,255,255,.42);
  --nav-bg1-s:rgba(255,255,255,.82);--nav-bg2-s:rgba(255,255,255,.66);
  --nav-border:rgba(255,255,255,.45);--nav-shadow:0 8px 30px -20px rgba(26,32,44,.35);
  --h2-lg:clamp(2rem,4.4vw,3.2rem);--h2-md:clamp(1.8rem,3.6vw,2.7rem);
  --contour-dark:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='720' height='720' viewBox='0 0 720 720' fill='none'%3E%3Cg stroke='%231a202c' stroke-opacity='.05' stroke-width='1.2'%3E%3Cpath d='M-40 620C120 560 190 420 330 430s210 130 300 96 130-150 170-210'/%3E%3Cpath d='M-40 560C140 510 200 360 340 372s220 118 310 84 120-140 150-196'/%3E%3Cpath d='M-40 500C160 460 210 300 350 314s230 106 320 72 110-130 130-182'/%3E%3Cpath d='M60 720C180 660 260 560 400 560s240 60 320 20'/%3E%3Cpath d='M-40 220C80 190 170 90 300 96s230 84 320 60'/%3E%3Cpath d='M-40 160C90 130 180 30 310 36'/%3E%3C/g%3E%3C/svg%3E");
  --contour-light:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='720' height='720' viewBox='0 0 720 720' fill='none'%3E%3Cg stroke='%23ffffff' stroke-opacity='.07' stroke-width='1.2'%3E%3Cpath d='M-40 620C120 560 190 420 330 430s210 130 300 96 130-150 170-210'/%3E%3Cpath d='M-40 560C140 510 200 360 340 372s220 118 310 84 120-140 150-196'/%3E%3Cpath d='M-40 500C160 460 210 300 350 314s230 106 320 72 110-130 130-182'/%3E%3Cpath d='M60 720C180 660 260 560 400 560s240 60 320 20'/%3E%3Cpath d='M-40 220C80 190 170 90 300 96s230 84 320 60'/%3E%3Cpath d='M-40 160C90 130 180 30 310 36'/%3E%3C/g%3E%3C/svg%3E");
  --contour-green:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='720' height='720' viewBox='0 0 720 720' fill='none'%3E%3Cg stroke='%2352c48f' stroke-opacity='.55' stroke-width='1.4'%3E%3Cpath d='M-40 620C120 560 190 420 330 430s210 130 300 96 130-150 170-210'/%3E%3Cpath d='M-40 560C140 510 200 360 340 372s220 118 310 84 120-140 150-196'/%3E%3Cpath d='M-40 500C160 460 210 300 350 314s230 106 320 72 110-130 130-182'/%3E%3Cpath d='M60 720C180 660 260 560 400 560s240 60 320 20'/%3E%3Cpath d='M-40 220C80 190 170 90 300 96s230 84 320 60'/%3E%3Cpath d='M-40 160C90 130 180 30 310 36'/%3E%3C/g%3E%3C/svg%3E");
}
/* ---------- TEMA OSCURO ---------- */
:root[data-theme="dark"]{
  color-scheme:dark;
  --green:#3fb883;--accent:#37c2a0;
  --grey:#c4cdd6;--steel:#8b949e;--mist:#242c38;
  --text:#e7edf3;--text-soft:#c4cdd6;--text-mute:#8b949e;
  --page-bg:#0d1117;--surface:#161b22;--surface-alt:#12171e;--surface-soft:#11161d;
  --border:#242c38;--card-top:#e7edf3;
  --ctrl-bg:rgba(255,255,255,.06);--ctrl-border:rgba(255,255,255,.14);--ctrl-border-hover:rgba(255,255,255,.30);
  --menu-bg:rgba(22,27,34,.92);--menu-border:rgba(255,255,255,.12);--menu-inset:rgba(255,255,255,.06);
  --menu-hover:rgba(63,184,131,.14);--menu-active:rgba(63,184,131,.16);
  --nav-bg1:rgba(17,22,29,.74);--nav-bg2:rgba(17,22,29,.54);
  --nav-bg1-s:rgba(13,17,23,.88);--nav-bg2-s:rgba(13,17,23,.72);
  --nav-border:rgba(255,255,255,.08);--nav-shadow:0 8px 30px -18px rgba(0,0,0,.6);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:96px}
body{font-family:var(--font-body);color:var(--text);background:var(--page-bg);-webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3,.head{font-family:var(--font-head);font-weight:600;letter-spacing:-.02em}
a{color:inherit}
img{max-width:100%}

.skip-link{position:absolute;left:-9999px;top:0;background:var(--green);color:#fff;padding:10px 18px;border-radius:0 0 var(--r-s) 0;z-index:300;font-weight:600;text-decoration:none}
.skip-link:focus{left:0}
a:focus-visible,button:focus-visible{outline:3px solid var(--green);outline-offset:3px;border-radius:2px}
.cta a:focus-visible,.sub-hero a:focus-visible,.core a:focus-visible,.case-quote a:focus-visible,footer a:focus-visible{outline-color:#fff}

/* ---------- NAV ---------- */
nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;
  padding:16px 5vw;background:linear-gradient(135deg,var(--nav-bg1),var(--nav-bg2));
  backdrop-filter:blur(22px) saturate(185%);-webkit-backdrop-filter:blur(22px) saturate(185%);
  border-bottom:1px solid var(--nav-border);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6),var(--nav-shadow);
  transform:translateY(-100%);animation:navDrop .8s cubic-bezier(.2,.7,.2,1) .15s forwards}
@keyframes navDrop{to{transform:translateY(0)}}
.logo{display:flex;align-items:center;gap:9px;text-decoration:none;cursor:pointer}
.logo .logo-mark{height:30px;width:auto;display:block;transition:height .35s cubic-bezier(.2,.7,.2,1)}
.js nav.scrolled .logo .logo-mark{height:27px}
.logo .logo-dark{display:none}
[data-theme="dark"] .logo .logo-light{display:none}
[data-theme="dark"] .logo .logo-dark{display:block}
/* wordmark heredado (fallback si se usa texto) */
.logo-word{font-family:var(--font-head);font-size:1.3rem;font-weight:600;color:var(--text,var(--black))}
.logo-word b{color:var(--green);font-weight:600}
.nav-links{display:flex;align-items:center;gap:26px;list-style:none;margin-left:2.2vw}
.nav-links a{text-decoration:none;color:var(--grey);font-size:.9rem;font-weight:500;position:relative;padding:4px 0;transition:color .25s;cursor:pointer}
.nav-links a::after{content:'';position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--green);transform:scaleX(0);transform-origin:left;transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.nav-links a:hover{color:var(--text)}
.nav-links a:hover::after,.nav-links a.active::after,.nav-links a[aria-current="page"]::after{transform:scaleX(1)}
.nav-links a.active,.nav-links a[aria-current="page"]{color:var(--text)}
.nav-cta{background:var(--black);color:var(--white)!important;padding:9px 20px!important;border-radius:var(--r-s);font-weight:600;transition:background .25s!important}
.nav-cta::after{display:none!important}
.nav-cta:hover{background:var(--green)}
.burger{display:none}

/* ---------- REVEAL ---------- */
.reveal{transition:opacity .95s cubic-bezier(.16,.68,.2,1),transform .95s cubic-bezier(.16,.68,.2,1)}
.js .reveal{opacity:0;transform:translateY(30px)}
.reveal.in{opacity:1;transform:translateY(0)}
.d1{transition-delay:.1s}.d2{transition-delay:.2s}.d3{transition-delay:.3s}.d4{transition-delay:.4s}

/* ---------- HERO (portada) ---------- */
.hero{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:120px 5vw 72px;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;inset:0;background-image:var(--contour-green);background-size:150% auto;background-repeat:no-repeat;background-position:left center;pointer-events:none;opacity:1;
  -webkit-mask-image:linear-gradient(90deg,#000 24%,transparent 52%);mask-image:linear-gradient(90deg,#000 24%,transparent 52%)}
.hero-copy{position:relative;z-index:1}
.eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-body);font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--grey);font-weight:600;margin-bottom:26px}
.pulse-dot{width:9px;height:9px;border-radius:50%;background:var(--green);position:relative}
.pulse-dot::after{content:'';position:absolute;inset:-5px;border-radius:50%;border:1.5px solid var(--green);animation:ping 2.2s ease-out infinite}
@keyframes ping{0%{transform:scale(.4);opacity:1}80%,100%{transform:scale(1.6);opacity:0}}
.type-word{color:var(--green)}
.type-cursor{display:inline-block;width:1.5px;height:1.05em;background:var(--green);margin-left:1px;vertical-align:-.18em;animation:caret 1.1s step-end infinite}
@keyframes caret{50%{opacity:0}}
.hero h1{font-size:clamp(2.3rem,5.2vw,4.1rem);line-height:1.06;letter-spacing:-.03em;max-width:16ch;color:var(--text)}
.hero h1 .line{display:block;overflow:hidden}
.hero h1 .line span{display:block;transform:translateY(110%);animation:lineUp 1s cubic-bezier(.2,.7,.15,1) forwards}
.hero h1 .line:nth-child(1) span{animation-delay:.5s}
.hero h1 .line:nth-child(2) span{animation-delay:.65s}
.hero h1 .line:nth-child(3) span{animation-delay:.8s}
.hero h1 em{font-style:normal;color:var(--green)}
@keyframes lineUp{to{transform:translateY(0)}}
.hero-copy p{margin-top:28px;max-width:46ch;font-size:1.08rem;line-height:1.65;color:var(--grey);opacity:0;animation:rise 1s cubic-bezier(.2,.7,.2,1) 1.1s forwards}
.hero-actions{display:flex;gap:14px;margin-top:40px;flex-wrap:wrap;opacity:0;animation:rise 1s cubic-bezier(.2,.7,.2,1) 1.3s forwards}
.eyebrow.anim{opacity:0;animation:rise .9s cubic-bezier(.2,.7,.2,1) .45s forwards}
@keyframes rise{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}

.btn{text-decoration:none;font-weight:600;font-size:.95rem;padding:13px 26px;border-radius:var(--r-s);transition:transform .25s,box-shadow .25s,background .25s,color .25s,border-color .25s;display:inline-block;cursor:pointer;border:1px solid transparent}
.btn-primary{background:var(--green);color:#fff}
.btn-primary:hover{background:#2f8f5c;transform:translateY(-2px);box-shadow:0 10px 24px -12px rgba(56,161,105,.6)}
.btn-ghost{color:var(--text);border-color:var(--ctrl-border-hover)}
.btn-ghost:hover{border-color:var(--text);transform:translateY(-2px)}
.sub-hero .btn-ghost{color:#fff;border-color:rgba(255,255,255,.5)}
.sub-hero .btn-ghost:hover{color:#fff;border-color:#fff;background:rgba(255,255,255,.1)}
.btn-white{background:#fff;color:var(--black)}
.btn-white:hover{transform:translateY(-2px);box-shadow:0 12px 26px -14px rgba(0,0,0,.4)}

@keyframes fadeIn{to{opacity:1}}
.ring{transform-origin:center;transform-box:fill-box;animation:ping 2.6s ease-out infinite}

/* ---------- CARRUSEL SATELITAL (hero) ---------- */
.hero-sat{position:absolute;top:0;right:0;bottom:0;width:46vw;overflow:hidden;z-index:0;background:var(--ink);opacity:0;animation:fadeIn 1.8s ease .6s forwards}
.hero-carousel{position:absolute;inset:0}
.hero-slide{position:absolute;inset:0;opacity:0;transition:opacity 1.2s ease}
.hero-slide.is-active{opacity:1}
.hero-slide img{width:120%;max-width:none;height:100%;object-fit:cover;display:block;transform-origin:60% 50%}
.hero-slide.is-active img{animation:heroKen 48s ease-in-out infinite alternate}
@keyframes heroKen{from{transform:scale(1.03) translateX(0)}to{transform:scale(1.1) translateX(-4%)}}
@media(prefers-reduced-motion:reduce){.hero-slide.is-active img{animation:none}}
.hero-sat::after{content:'';position:absolute;inset:0;background:
  linear-gradient(180deg,rgba(255,255,255,.7) 0%,rgba(255,255,255,0) 12%),
  linear-gradient(0deg,rgba(255,255,255,.4) 0%,rgba(255,255,255,0) 9%),
  radial-gradient(130% 95% at 100% 100%,rgba(12,28,20,.52) 0%,rgba(12,28,20,0) 50%),
  linear-gradient(90deg,#fff 0%,rgba(255,255,255,.9) 6%,rgba(255,255,255,.56) 22%,rgba(255,255,255,.3) 40%,rgba(255,255,255,.1) 60%,rgba(255,255,255,0) 80%)}
.hero-sat-cap{position:absolute;right:18px;bottom:16px;z-index:1;display:flex;flex-direction:column;align-items:flex-end;gap:1px;text-align:right}
.hero-sat-cap b{font-family:var(--font-head);font-weight:500;font-size:.86rem;letter-spacing:.005em;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.55),0 1px 16px rgba(0,0,0,.35)}
.hero-sat-cap span{font-family:var(--font-body);font-size:.6rem;letter-spacing:.05em;color:rgba(255,255,255,.82);text-shadow:0 1px 3px rgba(0,0,0,.5),0 1px 10px rgba(0,0,0,.3)}
@media(max-width:1150px){
  .hero-sat{display:none}
}


section{padding:120px 5vw;position:relative}
.section-label{font-family:var(--font-body);font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;font-weight:600;color:var(--green);margin-bottom:18px;display:block}
.h2-compact{font-size:var(--h2-md);max-width:24ch}

/* ---------- CORE: MOTOR DE RIESGO (portada, bloque oscuro) ---------- */
.core{background:var(--ink);color:#fff;overflow:hidden}
.core::before{content:'';position:absolute;inset:0;background-image:var(--contour-light);background-size:130% auto;background-repeat:no-repeat;background-position:center;pointer-events:none}
.core .wrap{max-width:1080px;margin:0 auto;position:relative}
.core .section-label{color:var(--accent)}
.core h2{font-size:var(--h2-lg);line-height:1.14;max-width:22ch}
.core .lede{margin-top:22px;max-width:58ch;font-size:1.05rem;line-height:1.7;color:rgba(255,255,255,.78)}
.core-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:34px;margin-top:54px}
.core-stats .stat{border-left:1px solid rgba(255,255,255,.28);padding:4px 0 4px 18px;min-width:0;max-width:none}
.core-fig{margin-top:64px;border-top:1px solid rgba(255,255,255,.14);padding-top:44px}
.core-fig svg{width:100%;max-width:860px;height:auto;display:block}
.core-links{display:flex;gap:28px;flex-wrap:wrap;margin-top:44px}
.core-links a{color:var(--accent);font-weight:600;font-size:.94rem;text-decoration:none;display:inline-flex;align-items:center;gap:8px}
.core-links a:hover{text-decoration:underline}
.fig-cap{display:block;margin-top:12px;font-family:var(--font-mono);font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.45)}
.spark-line{stroke-dasharray:1200;stroke-dashoffset:1200;transition:stroke-dashoffset 2.4s cubic-bezier(.4,0,.2,1) .3s}
.reveal.in .spark-line,.core-fig.in .spark-line{stroke-dashoffset:0}

/* ---------- PILARES (portada, claro) ---------- */
.pillars-head{max-width:880px;margin-bottom:70px}
.pillars-head h2{font-size:var(--h2-md);line-height:1.22;font-weight:500}
.pillars-head h2 .hl{color:var(--green)}
.pillars-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:40px}
.pillar{border-left:1px solid var(--mist);padding-left:24px;text-decoration:none;display:block;transition:border-color .3s}
.pillar:hover{border-color:var(--green)}
.pillar .p-num{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.14em;color:var(--steel);display:block;margin-bottom:16px;transition:color .3s}
.pillar:hover .p-num{color:var(--green)}
.pillar h3{font-size:1.14rem;margin-bottom:10px}
.pillar p{font-size:.94rem;line-height:1.65;color:var(--grey)}
.pillars-more{margin-top:58px}
.pillars-more a{color:var(--green);font-weight:600;font-size:.94rem;text-decoration:none;display:inline-flex;align-items:center;gap:8px}
.pillars-more a:hover{text-decoration:underline;text-underline-offset:4px}
.core-links a svg,.pillars-more a svg{transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.core-links a:hover svg,.pillars-more a:hover svg{transform:translateX(5px)}

/* ---------- AUDIENCIAS ---------- */
.aud-head{max-width:800px;margin-bottom:64px}
.aud h2{font-size:var(--h2-lg);line-height:1.1}
.aud-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.card{border:1px solid var(--border);border-top:2px solid var(--card-top);border-radius:var(--r-s);padding:34px 28px 30px;position:relative;background:var(--surface);text-decoration:none;
  transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s,border-color .35s;cursor:pointer;display:flex;flex-direction:column}
.card:hover{transform:translateY(-6px);box-shadow:0 18px 40px -26px rgba(26,32,44,.35);border-top-color:var(--green)}
.card h3{font-size:1.24rem;margin-bottom:12px}
.card p{font-size:.93rem;line-height:1.62;color:var(--grey);flex:1}
.card .go{margin-top:26px;display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:.88rem;color:var(--green)}
.card .go svg{transition:transform .3s}
.card:hover .go svg{transform:translateX(5px)}

/* ---------- VALORES ---------- */
.how{background:var(--surface-alt)}
.how-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:52px;margin-top:64px}
.how-item h3{font-size:1.12rem;margin:16px 0 10px}
.how-item p{font-size:.94rem;line-height:1.6;color:var(--grey)}
.how-bar{height:2px;width:44px;background:var(--green);transform-origin:left;transform:scaleX(0);transition:transform .8s cubic-bezier(.2,.7,.2,1) .3s}
.reveal.in .how-bar{transform:scaleX(1)}

/* ---------- EQUIPO ---------- */
.team-grid{display:flex;flex-wrap:nowrap;gap:16px;margin-top:60px;overflow-x:auto;overflow-y:hidden;padding-bottom:8px;scrollbar-width:thin}
.member{flex:1 1 0;min-width:124px}
.member img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:var(--r-s);filter:saturate(.94);transition:transform .35s cubic-bezier(.2,.7,.2,1)}
.member:hover img{transform:translateY(-6px)}
.member h3{font-size:1.02rem;margin-top:16px}
.member .role{font-family:var(--font-head);font-size:.82rem;letter-spacing:.01em;text-transform:none;color:var(--steel);margin-top:5px;font-weight:500}
.member p{font-size:.85rem;color:var(--grey);margin-top:6px;line-height:1.45}

/* ---------- CTA ---------- */
.cta{background:var(--green);color:#fff;text-align:center;overflow:hidden}
.cta::before{content:'';position:absolute;inset:0;background-image:var(--contour-light);background-size:130% auto;background-repeat:no-repeat;background-position:center;pointer-events:none}
.cta h2{font-size:var(--h2-lg);max-width:20ch;margin:0 auto 22px;line-height:1.12;position:relative}
.cta p{max-width:46ch;margin:0 auto 38px;opacity:.92;line-height:1.6;position:relative}
.cta .reveal{position:relative}

/* ---------- SUB-HERO (páginas interiores) ---------- */
.sub-hero{padding:100px 5vw 56px 8.5vw;position:relative;overflow:hidden;color:#fff}
.sub-hero::before{content:'';position:absolute;inset:0;background-image:var(--contour-light);background-size:130% auto;background-repeat:no-repeat;background-position:center;pointer-events:none}
.sub-hero.green{background:var(--green)}
.sub-hero.ink{background:var(--ink)}
.sub-hero.dark{background:var(--black)}
.sub-hero>*{position:relative}
.sub-back{display:flex;width:max-content;align-items:center;gap:7px;font-size:.85rem;font-weight:600;color:rgba(255,255,255,.85);text-decoration:none;margin-bottom:30px;cursor:pointer;transition:gap .25s,color .25s}
.sub-back:hover{gap:12px;color:#fff}
.sub-hero .eyebrow{color:rgba(255,255,255,.85)}
.sub-hero h1{font-size:clamp(2.1rem,4.6vw,3.3rem);line-height:1.07;max-width:18ch}
.sub-hero p{margin-top:18px;max-width:56ch;font-size:1.05rem;line-height:1.58;color:rgba(255,255,255,.92)}
.sub-hero .hero-actions{margin-top:26px}
.sub-hero .stats{margin-top:32px}

/* franja de cifras: lectura de instrumento */
.stats{display:flex;flex-wrap:wrap;gap:30px 46px;margin-top:48px}
.stat{border-left:1px solid rgba(255,255,255,.3);padding:4px 0 4px 18px;min-width:150px;max-width:240px}
.stat b{display:block;font-family:var(--font-mono);font-size:clamp(1.2rem,4vw,1.6rem);line-height:1.1;font-weight:600;letter-spacing:-.02em}
.stat span{display:block;margin-top:8px;font-size:.8rem;color:rgba(255,255,255,.75);line-height:1.4}

/* ---------- FEATURES ---------- */
.feat{padding:110px 5vw;background:var(--surface)}
.feat.tint{background:var(--surface-alt)}
.feat-head{max-width:760px;margin-bottom:60px}
.feat-head h2{font-size:var(--h2-md);line-height:1.12}
.feat-head p{margin-top:18px;font-size:1.05rem;line-height:1.6;color:var(--grey);max-width:56ch}
.feat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;counter-reset:fcard}
.feat-card{border:1px solid var(--border);border-radius:var(--r-s);padding:30px 28px;transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s,border-color .35s;background:var(--surface);display:flex;flex-direction:column}
.feat-card:hover{transform:translateY(-4px);box-shadow:0 16px 36px -26px rgba(26,32,44,.35);border-color:var(--grey)}
.feat-card h3{font-size:1.14rem;margin-bottom:10px}
.feat-card p{font-size:.93rem;line-height:1.62;color:var(--grey)}
.feat.tint .feat-card{background:var(--surface)}
.backers .feat-card::before{content:none}
.backer-logo{align-self:flex-start;width:auto;height:34px;background:#fff;padding:14px 20px;border-radius:12px;box-sizing:content-box;margin-bottom:22px}
.backer-logo.uc-logo{height:46px}

/* ---------- PASOS NUMERADOS ---------- */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:36px;counter-reset:paso;margin-top:56px}
.step{border-top:1px solid var(--grey);padding:24px 4px 0;counter-increment:paso}
.step::before{content:counter(paso,decimal-leading-zero);display:block;font-family:var(--font-mono);font-size:.8rem;font-weight:600;color:var(--green);margin-bottom:16px}
.step h3{font-size:1.06rem;margin-bottom:8px}
.step p{font-size:.92rem;line-height:1.6;color:var(--grey)}

/* ---------- CASO / CITA ---------- */
.case{padding:0 5vw 110px;background:var(--page-bg)}
.case-quote{background:var(--ink);color:#fff;border-radius:var(--r-m);padding:56px 50px;position:relative;overflow:hidden}
.case-quote::before{content:'';position:absolute;inset:0;background-image:var(--contour-light);background-size:130% auto;background-repeat:no-repeat;background-position:center;pointer-events:none}
.case-quote>*{position:relative}
.case-quote .cq-tag{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;font-weight:600;color:var(--accent);display:block;margin-bottom:18px}
.case-quote blockquote{font-family:var(--font-head);font-weight:500;font-size:clamp(1.25rem,2.6vw,1.85rem);line-height:1.35;max-width:34ch;border:none}
.case-quote .cq-src{margin-top:20px;font-size:.86rem;color:rgba(255,255,255,.6)}
.case-quote .stats{margin-top:34px}

/* ---------- LISTAS ---------- */
.checks,.limits{list-style:none}
.checks li,.limits li{padding:9px 0 9px 30px;position:relative;font-size:.95rem;line-height:1.55;color:var(--grey)}
.checks li::before{content:'✓';position:absolute;left:0;top:9px;color:var(--green);font-weight:600;font-family:var(--font-mono)}
.limits li::before{content:'✕';position:absolute;left:0;top:9px;color:var(--fire);font-weight:600;font-family:var(--font-mono)}

/* ---------- PLANES ---------- */
.tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:56px}
.tier{border:1px solid var(--border);border-top:2px solid var(--card-top);border-radius:var(--r-s);padding:34px 28px;display:flex;flex-direction:column;background:var(--surface)}
.tier.rec{border-top-color:var(--green)}
.tier .t-name{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;font-weight:600;color:var(--green);margin-bottom:12px}
.tier h3{font-size:1.3rem;margin-bottom:6px}
.tier .t-for{font-size:.88rem;color:var(--steel);margin-bottom:8px}
.tier ul{list-style:none;margin-top:16px;flex:1}
.tier li{padding:8px 0 8px 26px;position:relative;font-size:.9rem;color:var(--grey);line-height:1.45}
.tier li::before{content:'✓';position:absolute;left:0;top:8px;color:var(--green);font-weight:600;font-family:var(--font-mono)}
.tier .btn{margin-top:24px;text-align:center}

/* ---------- TABLA COMPARATIVA ---------- */
.table-wrap{overflow-x:auto;border:1px solid var(--mist);border-radius:var(--r-s);margin-top:56px}
table.compare{width:100%;border-collapse:collapse;font-size:.92rem;min-width:560px}
.compare th{text-align:left;padding:16px 18px;background:var(--surface-alt);font-family:var(--font-head);font-weight:600;font-size:.92rem}
.compare td{padding:14px 18px;border-top:1px solid var(--mist);color:var(--grey);line-height:1.5}
.compare td:first-child{color:var(--text);font-weight:500}
.compare th:nth-child(n+2),.compare td:nth-child(n+2){text-align:center}
.compare td.c-yes{color:var(--green);font-family:var(--font-mono);font-weight:600}
.compare td.c-no{color:var(--steel);font-family:var(--font-mono)}

/* ---------- CALLOUT DE PLAN ---------- */
.plan{padding:0 5vw 110px;background:var(--page-bg)}
.plan-box{background:#f6f9f7;border:1px solid var(--mist);border-radius:var(--r-m);padding:48px 42px;display:flex;justify-content:space-between;align-items:center;gap:32px;flex-wrap:wrap}
.plan-box .pl-tag{font-family:var(--font-mono);font-size:.7rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--green);margin-bottom:12px;display:block}
.plan-box h3{font-size:1.6rem;margin-bottom:10px}
.plan-box p{font-size:.98rem;color:var(--grey);line-height:1.55;max-width:46ch}

/* ---------- FOOTER ---------- */
footer{background:var(--black);color:var(--steel);padding:60px 5vw 38px;font-size:.9rem}
.foot-top{display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap;padding-bottom:36px;border-bottom:1px solid rgba(255,255,255,.1)}
.foot-logo{height:34px;width:auto;display:block;margin-bottom:16px;filter:brightness(0) invert(1)}
.foot-tagline{max-width:32ch;margin-top:2px;line-height:1.6}
.foot-links{display:flex;gap:56px;flex-wrap:wrap}
.foot-links h4{color:#fff;font-size:.84rem;margin-bottom:14px;letter-spacing:.04em}
.foot-links a{display:block;color:var(--steel);text-decoration:none;margin-bottom:9px;transition:color .25s;cursor:pointer}
.foot-links a:hover{color:var(--accent)}
.foot-bottom{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-top:26px;font-size:.82rem}

/* ---------- RESPONSIVE ---------- */
@media(max-width:1080px){
  .nav-links{gap:18px}
  .nav-links a{font-size:.84rem}
}
@media(max-width:960px){
  .nav-links{display:none}
  nav{gap:14px}
  /* controles (tema + idioma) agrupados a la derecha, junto al burger, con aire */
  .nav-right{margin-left:auto;gap:12px}
  .burger{display:block;background:none;border:none;cursor:pointer;padding:6px;margin-left:2px}
  .burger span{display:block;width:24px;height:2px;background:var(--text);margin:5px 0;transition:.3s}
  nav.open .nav-links{display:flex;flex-direction:column;position:absolute;top:100%;left:0;right:0;margin-left:0;background:var(--page-bg);padding:22px 5vw 30px;gap:16px;border-bottom:1px solid var(--mist);align-items:flex-start}
  /* separar el botón de Contacto del resto del menú */
  nav.open .nav-links li:has(.nav-cta){margin-top:10px;padding-top:16px;border-top:1px solid var(--border);width:100%}
  nav.open .nav-links .nav-cta{display:inline-block}
  nav.open .burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  nav.open .burger span:nth-child(2){opacity:0}
  nav.open .burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
}
@media(max-width:860px){
  section,.feat,.sub-hero{padding-left:6vw;padding-right:6vw}
  .plan-box{flex-direction:column;align-items:flex-start}
  .case-quote{padding:40px 28px}
  .core-stats{gap:26px 30px}
}
@media(max-width:640px){
  section,.feat{padding-top:76px;padding-bottom:76px}
  .sub-hero,.hero{padding-top:118px}
  .sub-hero{padding-bottom:64px}
  .case,.plan{padding-top:0;padding-bottom:76px}
  .core-fig{margin-top:44px;padding-top:32px}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001s!important;animation-delay:0s!important;transition-duration:.001s!important}
  .reveal{opacity:1;transform:none}
  .hero h1 .line span{transform:none}
  nav{transform:none}
  .spark-line{stroke-dasharray:none;stroke-dashoffset:0}
  .type-cursor{display:none}
}

/* ---------- TOGGLE DE IDIOMA ---------- */
.lang-link{font-family:var(--font-mono);font-size:.72rem;font-weight:600;letter-spacing:.14em;opacity:.6;transition:opacity .25s}
.lang-link:hover{opacity:1}

/* ---------- MOVIMIENTO ENTRE PÁGINAS ---------- */
/* View Transitions cross-document: el nav queda fijo y el contenido desliza */
@view-transition{navigation:auto}
nav{view-transition-name:site-nav}
@media(prefers-reduced-motion:no-preference){
  ::view-transition-old(root){animation:vt-out .26s cubic-bezier(.55,.05,.65,.25) both}
  ::view-transition-new(root){animation:vt-in .55s cubic-bezier(.16,.68,.2,1) both}
}
@keyframes vt-out{to{opacity:0;transform:translateY(-14px)}}
@keyframes vt-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}

/* Fallback JS cuando el navegador no soporta View Transitions */
.vt-fallback main{animation:vt-in .55s cubic-bezier(.16,.68,.2,1) both}
.page-exit main{opacity:0;transform:translateY(-14px);transition:opacity .24s cubic-bezier(.55,.05,.65,.25),transform .24s cubic-bezier(.55,.05,.65,.25)}

/* Pasada de escaneo al cargar cada página */
.scan-bar{position:fixed;top:0;left:0;right:0;height:2px;z-index:220;pointer-events:none;background:linear-gradient(90deg,transparent 12%,var(--accent) 46%,#8fe3bd 50%,var(--accent) 54%,transparent 88%);transform:translateX(-100%);opacity:.95;animation:scan-pass 1s cubic-bezier(.55,.1,.3,.9) .12s forwards}
@keyframes scan-pass{70%{opacity:.95}to{transform:translateX(100%);opacity:0}}

/* Entrada escalonada de las subportadas (h1, párrafo y cifras) */
.js .sub-hero .sub-back{opacity:0;animation:rise .7s cubic-bezier(.2,.7,.2,1) .32s forwards}
.js .sub-hero h1{opacity:0;animation:rise .9s cubic-bezier(.16,.68,.2,1) .52s forwards}
.js .sub-hero>p{opacity:0;animation:rise .9s cubic-bezier(.16,.68,.2,1) .66s forwards}
.js .sub-hero .stats{opacity:0;animation:rise .9s cubic-bezier(.16,.68,.2,1) .8s forwards}

@media(prefers-reduced-motion:reduce){
  .scan-bar{display:none}
  .js .sub-hero .sub-back,.js .sub-hero h1,.js .sub-hero>p,.js .sub-hero .stats{opacity:1;animation:none}
  .vt-fallback main{animation:none}
  .page-exit main{opacity:1;transform:none}
}

/* En navegación interna el nav no vuelve a caer: permanece estable durante la transición */
.warm nav{animation:none;transform:translateY(0)}

/* ---------- REFINADO v2.1: grids estables + detalle de instrumento ---------- */
/* Columnas explícitas: sin tarjetas huérfanas a anchos intermedios */
@media(max-width:1080px){
  .feat-grid{grid-template-columns:repeat(2,1fr)}
  .aud-grid{grid-template-columns:repeat(2,1fr)}
  .tiers{grid-template-columns:1fr;max-width:560px}
}
@media(max-width:640px){
  .feat-grid,.aud-grid{grid-template-columns:1fr}
}

/* Numeración mono en tarjetas de capacidades: lenguaje de instrumento */
.feat-card{counter-increment:fcard}
.feat-card::before{content:counter(fcard,decimal-leading-zero);font-family:var(--font-mono);font-size:.7rem;letter-spacing:.16em;font-weight:600;color:var(--steel);display:block;margin-bottom:16px;transition:color .3s}
.feat-card:hover::before{color:var(--green)}
.feat-card:hover{border-color:var(--green)}

/* Retícula cartográfica sutil en heros oscuros */
.sub-hero::after,.core::after{content:'';position:absolute;inset:0;pointer-events:none;
  background-image:repeating-linear-gradient(90deg,rgba(255,255,255,.045) 0 1px,transparent 1px 140px),
  repeating-linear-gradient(0deg,rgba(255,255,255,.045) 0 1px,transparent 1px 140px)}
.core .wrap{z-index:1}

/* Franja de fuentes de datos (portada) */
.src-strip{margin-top:46px;padding-top:22px;border-top:1px solid rgba(255,255,255,.14);font-family:var(--font-mono);font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.5);display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 26px}
.src-strip b{color:var(--accent);font-weight:600}

/* Selección de texto de marca */
::selection{background:var(--green);color:#fff}


/* ============================================================
   ELEVACIÓN v2.2 — craft: profundidad, materia y precisión
   ============================================================ */
:root{--noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.055'/%3E%3C/svg%3E");
  --shadow-lift:0 2px 8px -6px rgba(26,32,44,.14),0 26px 52px -30px rgba(26,32,44,.32)}

/* Tipografía: composición y números de instrumento */
h1,h2,h3{text-wrap:balance}
p,.lede{text-wrap:pretty}
.stat b{font-variant-numeric:tabular-nums}


/* Profundidad en los bloques oscuros: luz radial + grano + retícula */
.core{background:radial-gradient(130% 100% at 10% 0%,#134e30 0%,var(--ink) 58%)}
.sub-hero.ink{background:radial-gradient(130% 100% at 10% 0%,#134e30 0%,var(--ink) 62%)}
.cta{background:radial-gradient(130% 115% at 14% 0%,#41b078 0%,var(--green) 58%)}
.case-quote{background:radial-gradient(130% 115% at 12% 0%,#134e30 0%,var(--ink) 62%)}
.sub-hero::after,.core::after,.cta::after,.case-quote::after{content:'';position:absolute;inset:0;pointer-events:none;
  background-image:var(--noise),
  repeating-linear-gradient(90deg,rgba(255,255,255,.04) 0 1px,transparent 1px 140px),
  repeating-linear-gradient(0deg,rgba(255,255,255,.04) 0 1px,transparent 1px 140px)}

/* Tarjetas: sombra en capas y marcas de esquina (crop marks) al hover */
.card,.feat-card,.tier{position:relative}
.card:hover,.feat-card:hover{box-shadow:var(--shadow-lift)}
.card::after,.feat-card::after{content:'';position:absolute;inset:9px;pointer-events:none;opacity:0;transition:opacity .4s;
  background-image:linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green));
  background-repeat:no-repeat;
  background-position:top left,top left,top right,top right,bottom left,bottom left,bottom right,bottom right;
  background-size:13px 1.5px,1.5px 13px,13px 1.5px,1.5px 13px,13px 1.5px,1.5px 13px,13px 1.5px,1.5px 13px}
.card:hover::after,.feat-card:hover::after{opacity:.9}
.tier{transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s}
.tier:hover{transform:translateY(-4px);box-shadow:var(--shadow-lift)}

/* Nav compacto al hacer scroll */
nav{transition:padding .35s cubic-bezier(.2,.7,.2,1),background .35s,box-shadow .35s}
.js nav.scrolled{padding-top:10px;padding-bottom:10px;
  background:linear-gradient(135deg,var(--nav-bg1-s),var(--nav-bg2-s));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 12px 34px -18px rgba(26,32,44,.4)}
[data-theme="dark"] .js nav.scrolled,[data-theme="dark"].js nav.scrolled{box-shadow:0 12px 34px -18px rgba(0,0,0,.7)}

/* Botones: estado de pulsación y hover del fantasma */
.btn:active{transform:translateY(0) scale(.98)}
.btn-ghost:hover{background:rgba(26,32,44,.045)}

/* Leyenda de la imagen satelital como chip de instrumento */
/* subtítulo minimalista: sin caja */

/* Tabla comparativa: cebra y fila activa */
.compare tbody tr:nth-child(even) td{background:var(--surface-alt)}
.compare tbody tr:hover td{background:var(--menu-hover)}

/* Equipo: tratamiento fotográfico unificado */
.member img{filter:saturate(.82) contrast(1.04);transition:transform .35s cubic-bezier(.2,.7,.2,1),filter .35s;border:1px solid var(--mist)}
.member:hover img{filter:saturate(1.02) contrast(1.02)}

/* Callouts y footer */
footer{border-top:2px solid var(--green)}
.foot-links a{transition:color .25s,transform .25s}
.foot-links a:hover{transform:translateX(3px)}

/* Planes apilados centrados en tablet */
@media(max-width:1080px){
  .tiers{margin-left:auto;margin-right:auto}
}

/* ============================================================
   CALLOUT DE PLAN v2.3 — marco de escuadras, sin caja genérica
   ============================================================ */
.plan{padding-top:40px}
.plan-box{background:transparent;border:none;border-radius:0;padding:54px 50px;position:relative}
.plan-box::before{content:'';position:absolute;inset:0;pointer-events:none;transition:inset .4s cubic-bezier(.2,.7,.2,1);
  background-image:linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green));
  background-repeat:no-repeat;
  background-position:top left,top left,top right,top right,bottom left,bottom left,bottom right,bottom right;
  background-size:24px 2px,2px 24px,24px 2px,2px 24px,24px 2px,2px 24px,24px 2px,2px 24px}
.plan-box:hover::before{inset:-8px}
.plan-box>*{position:relative}
@media(max-width:860px){
  .plan-box{padding:38px 30px}
}

/* ============================================================
   PANEL DE CITA v2.3 — misma pasada: aire + escuadras
   ============================================================ */
.case{padding-top:40px}
.case-quote{border-radius:var(--r-s)}
.case-quote::after{
  background-image:var(--noise),
    repeating-linear-gradient(90deg,rgba(255,255,255,.04) 0 1px,transparent 1px 140px),
    repeating-linear-gradient(0deg,rgba(255,255,255,.04) 0 1px,transparent 1px 140px),
    linear-gradient(rgba(255,255,255,.34),rgba(255,255,255,.34)),linear-gradient(rgba(255,255,255,.34),rgba(255,255,255,.34)),
    linear-gradient(rgba(255,255,255,.34),rgba(255,255,255,.34)),linear-gradient(rgba(255,255,255,.34),rgba(255,255,255,.34)),
    linear-gradient(rgba(255,255,255,.34),rgba(255,255,255,.34)),linear-gradient(rgba(255,255,255,.34),rgba(255,255,255,.34)),
    linear-gradient(rgba(255,255,255,.34),rgba(255,255,255,.34)),linear-gradient(rgba(255,255,255,.34),rgba(255,255,255,.34));
  background-repeat:repeat,repeat,repeat,no-repeat,no-repeat,no-repeat,no-repeat,no-repeat,no-repeat,no-repeat,no-repeat;
  background-position:0 0,0 0,0 0,
    top 14px left 14px,top 14px left 14px,
    top 14px right 14px,top 14px right 14px,
    bottom 14px left 14px,bottom 14px left 14px,
    bottom 14px right 14px,bottom 14px right 14px;
  background-size:auto,auto,auto,
    16px 1.5px,1.5px 16px,16px 1.5px,1.5px 16px,16px 1.5px,1.5px 16px,16px 1.5px,1.5px 16px}

/* ============================================================
   COMPOSICIÓN v2.4 — capacidades editoriales, fuera la retícula de clones
   2 columnas asimétricas; conteo impar cierra con banda horizontal.
   5 → 2+2+banda · 6 → 3×2 · 3 → 2+banda · 2 → par asimétrico
   ============================================================ */
.feat-grid{grid-template-columns:repeat(2,1fr);gap:20px}
.feat-card{padding:34px 32px}
.feat-card p{max-width:56ch}
.feat-card:first-child h3{font-size:1.3rem}
.feat-card:last-child:nth-child(odd){grid-column:1/-1;display:flex;flex-direction:row;align-items:baseline;gap:18px 44px;flex-wrap:wrap}
.feat-card:last-child:nth-child(odd) h3{flex:0 0 250px;margin-bottom:0}
.feat-card:last-child:nth-child(odd) p{flex:1;min-width:280px;max-width:none}
@media(max-width:1080px){
  .feat-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:640px){
  .feat-grid{grid-template-columns:1fr}
  .feat-card:last-child:nth-child(odd){display:block}
  .feat-card:last-child:nth-child(odd) h3{margin-bottom:10px}
}

/* ============================================================
   BARRA DE PROGRESO DE SCROLL (verde, fija arriba)
   ============================================================ */
#scrollbar{position:fixed;top:0;left:0;height:3px;width:0;z-index:200;
  background:linear-gradient(90deg,var(--green),var(--accent));
  border-radius:0 3px 3px 0;transition:width .12s linear;pointer-events:none}
@media(prefers-reduced-motion:reduce){#scrollbar{display:none}}

/* ============================================================
   CONTROLES DE LA BARRA (idioma + tema)
   ============================================================ */
.nav-right{display:flex;align-items:center;gap:11px}

/* Botón de tema (claro / oscuro) */
.theme-toggle{width:38px;height:38px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;
  background:var(--ctrl-bg);border:1px solid var(--ctrl-border);border-radius:999px;cursor:pointer;color:var(--text-soft);
  box-shadow:0 2px 10px -6px rgba(26,32,44,.3);backdrop-filter:blur(12px) saturate(160%);-webkit-backdrop-filter:blur(12px) saturate(160%);
  transition:color .2s,border-color .2s,background .2s,transform .2s}
.theme-toggle:hover{color:var(--text);border-color:var(--ctrl-border-hover);transform:translateY(-1px)}
.theme-toggle svg{width:17px;height:17px}
.theme-toggle .icon-moon{display:none}
[data-theme="dark"] .theme-toggle .icon-sun{display:none}
[data-theme="dark"] .theme-toggle .icon-moon{display:inline}

/* Selector de idioma — popup estético */
.lang-pop{position:relative;display:inline-flex}
.lang-toggle{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 13px;
  background:var(--ctrl-bg);border:1px solid var(--ctrl-border);border-radius:999px;cursor:pointer;color:var(--text-soft);
  box-shadow:0 2px 10px -6px rgba(26,32,44,.3);backdrop-filter:blur(12px) saturate(160%);-webkit-backdrop-filter:blur(12px) saturate(160%);
  font-family:var(--font-body);font-size:.8rem;font-weight:600;letter-spacing:.04em;line-height:1;
  transition:color .2s,border-color .2s,background .2s,transform .2s}
.lang-toggle:hover{color:var(--text);border-color:var(--ctrl-border-hover);transform:translateY(-1px)}
.lang-toggle .globe{width:16px;height:16px;flex-shrink:0;color:var(--green)}
.lang-toggle .chev{width:13px;height:13px;opacity:.65;transition:transform .28s cubic-bezier(.2,.7,.2,1)}
.lang-pop.open .lang-toggle{border-color:var(--ctrl-border-hover);color:var(--text)}
.lang-pop.open .lang-toggle .chev{transform:rotate(180deg)}
.lang-menu{position:absolute;top:calc(100% + 12px);right:0;min-width:186px;
  background:var(--menu-bg);backdrop-filter:blur(24px) saturate(185%);-webkit-backdrop-filter:blur(24px) saturate(185%);
  border:1px solid var(--menu-border);border-radius:16px;
  box-shadow:0 24px 50px -24px rgba(15,23,32,.55),inset 0 1px 0 var(--menu-inset);
  padding:7px;display:flex;flex-direction:column;gap:3px;
  opacity:0;visibility:hidden;transform:translateY(-8px) scale(.97);transform-origin:top right;
  transition:opacity .22s cubic-bezier(.2,.7,.2,1),transform .22s cubic-bezier(.2,.7,.2,1),visibility .22s;z-index:120}
.lang-pop.open .lang-menu{opacity:1;visibility:visible;transform:translateY(0) scale(1)}
.lang-menu .lang-head{font-family:var(--font-body);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--text-mute);font-weight:600;padding:7px 11px 5px}
.lang-opt{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:11px;
  text-decoration:none;color:var(--text-soft);font-size:.9rem;font-weight:500;transition:background .18s,color .18s;white-space:nowrap}
.lang-opt::after{display:none!important}
.lang-opt .code{flex-shrink:0;font-size:.64rem;font-weight:700;letter-spacing:.06em;color:var(--text-mute);
  border:1px solid var(--border);border-radius:6px;padding:4px 0;min-width:32px;text-align:center;transition:color .18s,border-color .18s}
.lang-opt .name{flex:1}
.lang-opt:hover{background:var(--menu-hover);color:var(--text)}
.lang-opt.active{color:var(--text);font-weight:600;background:var(--menu-active)}
.lang-opt.active .code{color:var(--green);border-color:rgba(56,161,105,.45)}
@media(max-width:960px){
  .lang-menu{right:0;transform-origin:top right}
}

/* ============================================================
   COLABORACIONES / APOYO INSTITUCIONAL (ESA · UC3M)
   ============================================================ */
.trust{padding:52px 5vw;border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--surface-soft)}
.trust-inner{max-width:1000px;margin:0 auto;display:flex;flex-direction:column;align-items:center;gap:24px}
.trust-kicker{font-family:var(--font-body);font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--steel);font-weight:600}
.trust-logos{display:flex;flex-wrap:wrap;gap:26px 64px;align-items:flex-start;justify-content:center}
.trust-badge{display:flex;flex-direction:column;align-items:center;gap:12px;opacity:.9;transition:opacity .25s,transform .25s}
.trust-badge:hover{opacity:1;transform:translateY(-2px)}
.trust-badge img{width:auto;display:block}
.trust-badge .esa-logo{height:36px}
.trust-badge .uc-logo{height:58px}
.trust-badge .trust-cap{font-size:.76rem;color:var(--steel);letter-spacing:.01em;text-align:center}

/* ============================================================
   TEMA OSCURO — ajustes específicos
   ============================================================ */
[data-theme="dark"] .nav-cta{background:var(--green);color:#08130d!important}
[data-theme="dark"] .nav-cta:hover{background:#5cc998}
[data-theme="dark"] .hero::before{background-image:var(--contour-light);opacity:.9}
/* la imagen satélite se funde hacia el fondo oscuro, no hacia blanco */
[data-theme="dark"] .hero-sat::after{background:
  linear-gradient(180deg,rgba(13,17,23,.8) 0%,rgba(13,17,23,0) 12%),
  linear-gradient(0deg,var(--page-bg) 0%,rgba(13,17,23,0) 10%),
  linear-gradient(90deg,var(--page-bg) 0%,rgba(13,17,23,.92) 8%,rgba(13,17,23,.6) 24%,rgba(13,17,23,.32) 42%,rgba(13,17,23,.1) 62%,rgba(13,17,23,0) 82%)}
/* .btn-white siempre va sobre la sección verde del CTA: se mantiene claro en ambos temas */
[data-theme="dark"] footer{background:#0a0e13;border-top-color:var(--green)}
[data-theme="dark"] .trust-badge{filter:brightness(0) invert(1) opacity(.85)}
[data-theme="dark"] .trust-badge:hover{filter:brightness(0) invert(1) opacity(1)}

/* ============================================================
   EQUIPO (Quiénes somos) — retratos circulares, monocromo verde
   ============================================================ */
.member img{width:100%;max-width:none;height:auto;aspect-ratio:4/5;object-fit:cover;border-radius:var(--r-s);
  border:1px solid var(--border);margin:0;display:block;
  filter:grayscale(1) contrast(1.05);
  transition:filter .45s ease,transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s}
.member{text-align:center}
.member:hover img{filter:grayscale(0) contrast(1.02);transform:translateY(-6px);box-shadow:0 16px 34px -20px rgba(26,32,44,.35)}
@media(prefers-reduced-motion:reduce){.member img{transition:none}}

/* ============================================================
   CONTACTO — bloque de ubicación (tarjeta + mapa)
   ============================================================ */
.loc{padding:0 5vw 110px;background:var(--page-bg)}
.loc-grid{display:grid;grid-template-columns:1.02fr 1.3fr;gap:20px;align-items:stretch;max-width:1120px;margin:0 auto}
.loc-card{background:var(--surface);border:1px solid var(--border);border-top:2px solid var(--card-top);border-radius:var(--r-s);
  padding:40px 36px;display:flex;flex-direction:column;position:relative;overflow:hidden}
.loc-card::after{content:'';position:absolute;inset:9px;pointer-events:none;opacity:0;transition:opacity .4s;
  background-image:linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green)),linear-gradient(var(--green),var(--green));
  background-repeat:no-repeat;background-position:top left,top left,top right,top right,bottom left,bottom left,bottom right,bottom right;
  background-size:14px 1.5px,1.5px 14px,14px 1.5px,1.5px 14px,14px 1.5px,1.5px 14px,14px 1.5px,1.5px 14px}
.loc-card:hover::after{opacity:.85}
.loc-icon{width:48px;height:48px;border-radius:14px;background:var(--green);color:#fff;display:flex;align-items:center;justify-content:center;margin-bottom:24px;box-shadow:0 10px 24px -12px rgba(56,161,105,.6)}
.loc-icon svg{width:24px;height:24px}
.loc-card h3{font-size:1.32rem;margin-bottom:6px}
.loc-card .loc-sub{color:var(--steel);font-size:.9rem;margin-bottom:18px}
.loc-addr{font-style:normal;color:var(--text-soft);line-height:1.75;font-size:.98rem}
.loc-addr span{display:block}
.loc-office{margin:22px 0 28px;font-size:1rem;color:var(--text-soft);line-height:1.5}
.loc-office b{color:var(--text);font-weight:600}
.loc-actions{margin-top:auto;display:flex;gap:12px;flex-wrap:wrap}
.loc-map{position:relative;border:1px solid var(--border);border-radius:var(--r-s);overflow:hidden;min-height:360px;background:var(--surface-alt)}
.loc-map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:grayscale(.28) contrast(1.02)}
[data-theme="dark"] .loc-map iframe{filter:invert(1) hue-rotate(180deg) grayscale(.22) contrast(.92) brightness(.96)}
@media(max-width:820px){
  .loc-grid{grid-template-columns:1fr}
  .loc-map{min-height:300px}
}

/* ============================================================
   QUIÉNES SOMOS — "Nuestra misión": reveal editorial (barrido + filete)
   ============================================================ */
.mission-title{will-change:transform,opacity}
.js .mission-title.reveal{opacity:0;transform:translateX(-32px);
  transition:opacity .9s cubic-bezier(.16,.68,.2,1),transform 1s cubic-bezier(.16,.68,.2,1)}
.js .mission-title.reveal.in{opacity:1;transform:translateX(0)}
.mission-rule{height:2px;width:130px;margin-top:20px;border-radius:2px;background:linear-gradient(90deg,var(--green) 60%,transparent)}
.js .mission-rule.reveal{opacity:1;transform:scaleX(0);transform-origin:left;
  transition:transform 1.1s cubic-bezier(.19,1,.22,1) .3s}
.js .mission-rule.reveal.in{transform:scaleX(1)}
@media(prefers-reduced-motion:reduce){
  .js .mission-title.reveal{opacity:1;transform:none}
  .js .mission-rule.reveal{transform:scaleX(1)}
}

/* ============================================================
   PLATAFORMA — título de subportada destacado (distinto al resto)
   ============================================================ */
.sub-hero.sub-plat{text-align:center;padding-left:5vw;padding-right:5vw}
.sub-hero.sub-plat .eyebrow{color:var(--accent)}
.sub-hero.sub-plat .sub-back{margin-left:auto;margin-right:auto}
.sub-hero.sub-plat>p{margin-left:auto;margin-right:auto}
.sub-hero.sub-plat .stats{justify-content:center}
.sub-hero.sub-plat h1{margin-left:auto;margin-right:auto;max-width:24ch}
.sub-hero.sub-plat .hero-actions{justify-content:center}
.plat-title{font-size:clamp(3rem,8vw,6rem);line-height:.98;letter-spacing:-.04em;max-width:none;margin-left:auto;margin-right:auto;font-weight:600}
.plat-title em{font-style:normal;color:var(--green)}
@media(max-width:640px){.plat-title{font-size:clamp(2.6rem,12vw,3.4rem)}}

/* ============================================================
   PANTALLAS EXTRA-ANCHAS — limitar el ancho útil y centrar
   (el max() no afecta a resoluciones normales: solo entra cuando
    (100vw-1500px)/2 supera al 5vw, es decir por encima de ~1667px)
   ============================================================ */
@media(min-width:1200px){
  nav,
  section,
  .feat,
  .cta,
  .case,
  .plan,
  .trust,
  .loc,
  .hero,
  .sub-hero,
  footer{
    padding-left:max(5vw,calc((100vw - 1500px) / 2));
    padding-right:max(5vw,calc((100vw - 1500px) / 2));
  }
  /* la imagen satelital del hero no crece sin límite en pantallas enormes */
  .hero-sat{width:clamp(0px,46vw,860px)}
}

/* ============================================================
   MÓVIL — hero centrado (sin imagen satelital, una sola columna)
   ============================================================ */
@media(max-width:768px){
  .hero-copy{text-align:center}
  .hero-copy .eyebrow{justify-content:center}
  .hero h1{margin-left:auto;margin-right:auto}
  .hero-copy p{margin-left:auto;margin-right:auto}
  .hero-actions{justify-content:center}
}

/* ============================================================
   MÓVIL — botones de acción alineados a la derecha (alcance con el pulgar)
   Afecta a CTAs tipo "Escribir a SilvIA", "Cómo llegar", callouts de plan.
   El hero de la landing se mantiene centrado (regla anterior).
   ============================================================ */
@media(max-width:860px){
  .plan-box{align-items:stretch}
  .plan-box>.btn,.plan-box .btn{align-self:flex-end}
  .loc-actions{justify-content:flex-end}
}

/* Equipo en móvil: fotos en una sola columna (en línea), todas iguales,
   con animación de aparición al hacer scroll (cada foto entra por separado) */
@media(max-width:680px){
  .team-grid{flex-wrap:wrap;overflow-x:visible;overflow-y:visible;gap:34px;padding-bottom:0;margin-top:36px}
  .team-grid .member{flex:0 0 100%;min-width:0}
  .team-grid .member img{aspect-ratio:4/5}
  .js .team-grid .member.reveal{transition-delay:0s!important;transform:translateY(38px) scale(.965)}
  .js .team-grid .member.reveal.in{transform:none}
}

/* ============================================================
   FORMULARIO DE CONTACTO
   ============================================================ */
.contact-form{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px;margin-top:8px}
.contact-form .f-row{display:flex;flex-direction:column;gap:7px}
.contact-form .f-row.f-full{grid-column:1/-1}
.contact-form label{font-size:.82rem;font-weight:600;letter-spacing:.01em;color:var(--text)}
.contact-form label .req{color:var(--green)}
.contact-form input,.contact-form select,.contact-form textarea{
  font-family:var(--font-body);font-size:.96rem;color:var(--text);
  background:var(--surface);border:1px solid var(--border);border-radius:10px;
  padding:12px 14px;width:100%;transition:border-color .2s,box-shadow .2s;appearance:none}
.contact-form textarea{min-height:118px;resize:vertical;line-height:1.5}
.contact-form select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23889' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:38px}
.contact-form input:focus,.contact-form select:focus,.contact-form textarea:focus{
  outline:none;border-color:var(--green);box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 22%,transparent)}
.contact-form input::placeholder,.contact-form textarea::placeholder{color:var(--steel)}
/* honeypot: oculto para humanos */
.contact-form .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.contact-form .f-actions{grid-column:1/-1;display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:4px}
.contact-form button[type="submit"]{cursor:pointer}
.contact-form button[type="submit"]:disabled{opacity:.6;cursor:default}
.form-status{font-size:.9rem;line-height:1.4;min-height:1.2em}
.form-status.is-sending{color:var(--steel)}
.form-status.is-ok{color:var(--green);font-weight:600}
.form-status.is-error{color:#c0392b;font-weight:600}
[data-theme="dark"] .form-status.is-error{color:#ff8b7a}
.form-alt{font-size:.86rem;color:var(--grey);margin-top:14px}
.form-alt a{color:var(--green);text-decoration:none;font-weight:600}
.form-alt a:hover{text-decoration:underline}
@media(max-width:560px){.contact-form{grid-template-columns:1fr}}
.plan-box.is-form{display:block}
.plan-box.is-form h3{margin-bottom:8px}
.plan-box.is-form>p{max-width:62ch;margin-bottom:22px}

/* Enlace LinkedIn en las fichas del equipo */
.member-li{display:inline-block;margin-top:8px;font-size:.82rem;font-weight:600;color:var(--green);text-decoration:none;letter-spacing:.02em}
.member-li:hover{text-decoration:underline}

/* TEMPORAL — ocultar el respaldo de ESA y UC3M (logos) por ahora.
   Para restaurarlos, borra estas dos reglas. */
.trust{display:none}
.feat:has(.backers){display:none}
