:root{--n:#0f2c4c;--n2:#2a4f7c;--g:#8cc68f;--o:#e9925c;--m:#eef3f1;--bg:#fff}
*{box-sizing:border-box;margin:0}html{scroll-behavior:smooth;scroll-padding-top:72px}
body{font:400 17px/1.6 'Albert Sans',system-ui,sans-serif;color:var(--n);background:#fff;overflow-x:hidden}
a{color:inherit}svg{display:block}:focus-visible{outline:3px solid var(--o);outline-offset:3px}
h1,h2,h3{font-weight:600;letter-spacing:-.025em;line-height:1.08}
.w{width:min(1120px,92%);margin:auto}.narrow{width:min(760px,92%)}
section{padding:96px 0}.dark{background:var(--n);color:#fff}.alt{background:var(--m)}
h2{font-size:clamp(1.9rem,3.6vw,2.8rem);margin-bottom:1rem;max-width:20ch}.sub{max-width:54ch;margin-bottom:1.5rem;opacity:.85}
.btn{display:inline-block;padding:.85rem 1.6rem;border-radius:99px;font:600 1rem 'Albert Sans',sans-serif;text-decoration:none;border:2px solid transparent;cursor:pointer;margin:.3rem .5rem .3rem 0;transition:background .2s}
.wa{background:#25d366;color:var(--n)}.wa:hover{background:#4fe589}.gh{border-color:#fff8;color:#fff}.gh:hover{background:#fff2}.out{border-color:var(--n)}.out:hover{background:var(--n);color:#fff}
#loader{position:fixed;inset:0;z-index:99;background:var(--n);display:grid;place-items:center;color:#fff;transition:opacity .5s,visibility .5s}
#loader svg{height:130px;width:auto;animation:fi .8s both}@keyframes fi{from{opacity:0;scale:.92}}#loader.done{opacity:0;visibility:hidden}
header{position:fixed;top:0;left:0;right:0;z-index:50;color:#fff;transition:background .3s}header.s{background:var(--n)}
.nav{display:flex;align-items:center;justify-content:space-between;height:72px}
.brand{display:flex;gap:.7rem;align-items:center;text-decoration:none;font-weight:600;line-height:1}.brand svg{height:44px;width:auto}
.brand span{display:flex;flex-direction:column;font-size:1.2rem}.brand small{font-size:.72rem;font-weight:400}
nav{display:flex;gap:1.6rem;align-items:center}nav a:not(.btn){text-decoration:none}nav a:not(.btn):hover{text-decoration:underline;text-underline-offset:6px;text-decoration-color:var(--o)}nav .btn{padding:.55rem 1.1rem;margin:0}
#bg{display:none;background:none;border:0;width:40px;height:40px;cursor:pointer}#bg i{display:block;height:2px;background:#fff;margin:7px 8px}
.hero{background:var(--n);color:#fff;min-height:100svh;display:grid;align-items:center;padding:110px 0 70px;overflow:hidden}
.hg{display:grid;grid-template-columns:1.15fr .85fr;gap:2rem;align-items:center}
h1{font-size:clamp(2.5rem,5.2vw,4.4rem);max-width:15ch;margin-bottom:1.4rem}.lead{font-size:1.2rem;max-width:44ch;margin-bottom:1.8rem}
.ht>*{animation:up .9s cubic-bezier(.2,.7,.2,1) 1.1s both}.ht>:nth-child(2){animation-delay:1.25s}.ht>:nth-child(3){animation-delay:1.4s}
@keyframes up{from{opacity:0;translate:0 26px}}
.scene{perspective:1100px;height:480px;display:grid;place-items:center}
.tilt{transform-style:preserve-3d;transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .25s}
.stage{transform-style:preserve-3d;position:relative;width:300px;height:400px;animation:sw 14s ease-in-out infinite}
@keyframes sw{0%,100%{transform:rotateY(16deg) rotateX(-3deg)}50%{transform:rotateY(-16deg) rotateX(4deg)}}
.L{position:absolute;width:290px;height:120px}
.l1{background:var(--g);border-radius:120px 14px 14px 120px;left:-70px;top:80px;transform:translateZ(-90px);animation:il 1.2s cubic-bezier(.2,.7,.2,1) .3s both}
.l2{background:var(--o);border-radius:14px 120px 120px 14px;right:-80px;top:220px;transform:translateZ(-40px);animation:ir 1.2s cubic-bezier(.2,.7,.2,1) .5s both}
@keyframes il{from{translate:-160px 0;opacity:0}}@keyframes ir{from{translate:160px 0;opacity:0}}
.logo3d{position:absolute;height:340px;width:auto;left:50%;margin-left:-110px;top:30px;color:#fff;transform:translateZ(70px);animation:fi 1s .9s both}
.svc{border-top:1.5px solid currentColor;margin-top:2rem}
.svc article{display:grid;grid-template-columns:1fr 1.5fr;gap:.2rem 2rem;padding:1.5rem 0;border-bottom:1px solid color-mix(in srgb,currentColor 25%,transparent)}
.svc h3{font-size:1.35rem;grid-row:span 2}.svc p small{opacity:.75}
.fl{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.5rem 0 2.5rem}
.fl button{font:500 .95rem 'Albert Sans',sans-serif;padding:.5rem 1rem;border-radius:99px;border:1.5px solid #fff6;background:none;color:#fff;cursor:pointer}.fl button.on{background:#fff;color:var(--n);border-color:#fff}
.grid{display:flex;flex-direction:column}
.card{width:min(660px,100%);padding:1.5rem 2.6rem;color:var(--n);cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:1.5rem;margin-top:-10px;position:relative}
.card h3{font-size:1.3rem}.card p{font-size:.95rem;line-height:1.35;margin-top:.25rem}.card span{font-weight:600;font-size:.9rem;white-space:nowrap;text-decoration:underline;text-underline-offset:4px}
.card.g{background:var(--g);border-radius:90px 14px 14px 90px;padding-left:3.4rem}
.card.o{background:var(--o);border-radius:14px 90px 90px 14px;margin-left:auto;text-align:right;flex-direction:row-reverse;padding-right:3.4rem}
.card:hover{filter:brightness(1.06)}.card.hide{display:none}
.card.rv{opacity:0;translate:-70px 0;transition:opacity .7s,translate .7s}.card.o.rv{translate:70px 0}.card.rv.in{opacity:1;translate:0 0}
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:2.5rem;margin-top:2rem}
.steps>div{border-top:2px solid var(--n2);padding-top:1rem}.dark .steps>div{border-color:var(--g)}
.steps b{display:block;font-weight:600;color:var(--n2);margin-bottom:.3rem}.dark .steps b{color:var(--g)}.steps h3{font-size:1.3rem;margin-bottom:.4rem}
details{border-bottom:1px solid color-mix(in srgb,currentColor 25%,transparent);padding:1.1rem 0}summary{cursor:pointer;font-weight:600;font-size:1.1rem;list-style:none;display:flex;justify-content:space-between;gap:1rem}
summary::after{content:"+";font-size:1.5rem;line-height:1}details[open] summary::after{content:"–"}details p{margin-top:.7rem;max-width:60ch}
.loc{display:grid;grid-template-columns:.8fr 1.2fr;gap:3rem;margin-top:2rem;align-items:stretch}
.info h3{font-size:1.5rem;margin-bottom:.6rem}.info p{margin-bottom:1.2rem}
.map{border-radius:14px 14px 90px 14px;overflow:hidden;min-height:360px}.map iframe{width:100%;height:100%;min-height:360px;border:0}
footer{background:var(--n);color:#fff;padding:60px 0 30px}
.aviso{border-left:4px solid var(--o);padding:.4rem 0 .4rem 1.4rem;font-size:.93rem;max-width:80ch}.aviso h3{margin-bottom:.5rem;font-size:1.1rem}.aviso p+p{margin-top:.6rem;opacity:.85}
.fb{display:flex;flex-wrap:wrap;gap:1.5rem;justify-content:space-between;margin-top:2rem;font-size:.9rem;opacity:.85}
.fab{position:fixed;right:20px;bottom:20px;z-index:40;width:58px;height:58px;border-radius:50%;background:#25d366;display:grid;place-items:center}
dialog{border:0;border-radius:14px 14px 14px 70px;padding:38px;width:min(520px,92%);max-height:88vh;overflow:auto;color:var(--n)}
dialog::backdrop{background:#0f2c4ccc}dialog[open]{animation:pop .3s ease-out}@keyframes pop{from{opacity:0;translate:0 14px}}
.x{position:absolute;right:14px;top:10px;font-size:2rem;background:none;border:0;cursor:pointer;color:var(--n)}
dialog h3{font-size:1.5rem}dialog p{margin:.8rem 0}
.tg{display:inline-block;border:1.5px solid #fff7;border-radius:99px;font-size:.85rem;padding:.1rem .8rem;margin:0 .4rem .4rem 0}dialog .tg{border-color:var(--n)}
.av{display:none}
.sp{min-height:0;padding:130px 0 80px}.crumbs{display:block;font-size:.88rem;margin-bottom:1.6rem}.crumbs a{text-decoration:underline;text-underline-offset:4px}
.pill{max-width:780px;padding:2.6rem 4.2rem;color:var(--n)}.pill.g{background:var(--g);border-radius:130px 16px 16px 130px}.pill.o{background:var(--o);border-radius:16px 130px 130px 16px}
.pill h1{font-size:clamp(2rem,4.4vw,3.4rem);max-width:none;margin-bottom:.6rem}.pill .lead{margin:0;font-size:1.15rem}.pa{margin-top:1.6rem}
.sub2{margin:-.4rem 0 1rem;opacity:.85}
.pn{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;margin-top:3rem;padding-top:1.5rem;border-top:1px solid #0f2c4c33}.pn a{font-weight:600;text-underline-offset:4px}
@media(max-width:860px){.hg,.loc{grid-template-columns:1fr}.scene{height:380px;transform:scale(.78)}#bg{display:block}
nav{position:fixed;inset:72px 0 auto 0;flex-direction:column;background:var(--n);padding:24px;transform:translateY(-130%);transition:transform .35s}nav.open{transform:none}
.svc article{grid-template-columns:1fr}.svc h3{grid-row:auto}.card,.card.o{padding:1.2rem 1.8rem}.card.g{padding-left:2.4rem}.card.o{padding-right:2.4rem}.pill{padding:2rem 2.2rem}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.card.rv{opacity:1;translate:0 0}}

/* ===== v3: tipografía y composición ===== */
h1,h2,h3,.card h3,dialog h3{font-family:Marcellus,Georgia,serif;font-weight:400;letter-spacing:-.01em}
body{font-size:17px;line-height:1.65;font-weight:400}
h1{font-size:clamp(2.7rem,5.8vw,5rem);line-height:1.04;max-width:14ch}
h2{font-size:clamp(2.2rem,4.3vw,3.6rem);line-height:1.08;max-width:16ch}
.svc h3,.steps h3{font-size:1.6rem}.card h3{font-size:1.5rem}
section{position:relative;padding:120px 0}
section+section{margin-top:-100px;padding-top:230px;border-radius:110px 0 0 0}
section+section:nth-of-type(even){border-radius:0 110px 0 0}
.hero{padding-bottom:200px}.sp{padding:140px 0 190px}
footer{position:relative;margin-top:-100px;padding-top:190px;border-radius:110px 0 0 0}
#enfoques .w{display:grid;grid-template-columns:.75fr 1.4fr;gap:4rem;align-items:start}
#enfoques h2{position:sticky;top:110px}#enfoques .svc{margin-top:0;border-top:0}
.svc article{border-bottom:1px solid color-mix(in srgb,currentColor 18%,transparent);padding:1.7rem 0}
.svc article:first-child{padding-top:0}
.steps b{font:400 3.4rem/1 Marcellus,Georgia,serif;color:var(--n2);margin-bottom:.8rem}.dark .steps b{color:var(--g)}
.steps>div{border-top:0;padding-top:0}
.card{padding:1.7rem 2.8rem;width:min(700px,100%)}.card.g{padding-left:3.8rem}.card.o{padding-right:3.8rem}
.fl button.on{background:var(--g);border-color:var(--g)}
.lead{font-size:1.22rem;font-weight:300}
summary{font-family:Marcellus,Georgia,serif;font-weight:400;font-size:1.3rem}
@media(max-width:860px){section{padding:90px 0}section+section{margin-top:-60px;padding-top:150px;border-radius:60px 0 0 0}section+section:nth-of-type(even){border-radius:0 60px 0 0}
.hero{padding-bottom:130px}.sp{padding:130px 0 120px}footer{margin-top:-60px;padding-top:130px;border-radius:60px 0 0 0}
#enfoques .w{grid-template-columns:1fr;gap:1.5rem}#enfoques h2{position:static}.card.g{padding-left:2.4rem}.card.o{padding-right:2.4rem}}
