/* brinco. CSS diferido. Lo crítico (tokens, nav, hero) va en línea desde critical.css */
main>section{padding:9vh 0}
main>section.s-obj{padding-top:8vh}
.sh{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;align-items:end;margin-bottom:5vh}
h2{font-weight:600;font-size:clamp(28px,3.9vw,58px);line-height:1.08;letter-spacing:-.035em;margin:0;text-wrap:balance}
h3{margin:0}
.rv{--e:cubic-bezier(.16,1,.3,1);opacity:1;transform:none;transition:opacity 1s ease,transform 1.1s var(--e)}
.js .rv:not(.in){opacity:0;transform:translateY(18px)}
/* Listas: sus elementos entran escalonados, uno tras otro */
.js .rv.rvs:not(.in){opacity:1;transform:none}
.rvs>*{transition:opacity 1s ease,transform 1.1s var(--e);transition-delay:calc(var(--i,0)*110ms)}
.js .rvs:not(.in)>*{opacity:0;transform:translateY(18px)}
.linkbtn{background:none;border:0;padding:0;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;cursor:pointer;text-decoration:underline}
/* objetivos */
.obj{border-top:1px solid var(--paper)}
.orow{border-bottom:1px solid var(--line);position:relative}
.orow>h3>button{all:unset;box-sizing:border-box;cursor:pointer;display:grid;grid-template-columns:70px 1fr 40px;align-items:baseline;gap:10px;width:100%;padding:18px 0}
.orow>h3>button:focus-visible{outline:2px solid var(--yellow);outline-offset:2px}
.orow .num{font-family:"IBM Plex Mono",monospace;font-size:13px;color:var(--mute);letter-spacing:.08em}
.orow .tt{font-weight:600;font-size:clamp(22px,3vw,42px);line-height:1.15;letter-spacing:-.035em;color:var(--mute);transition:color .4s,transform .5s cubic-bezier(.2,.8,.2,1)}
.orow .pl{font-weight:500;font-size:28px;color:var(--mute);justify-self:end;transition:transform .4s,color .4s}
.orow:hover .tt{color:var(--paper)}
.orow.open .tt{color:var(--yellow);transform:translateX(12px)}
.orow.open .pl{transform:rotate(45deg);color:var(--yellow)}
.orow.open .num{color:var(--yellow)}
.orow .bd{display:grid;grid-template-rows:0fr;transition:grid-template-rows .6s cubic-bezier(.2,.8,.2,1)}
.orow.open .bd{grid-template-rows:1fr}
.orow .bd>div{overflow:hidden}
.orow .cols{display:grid;grid-template-columns:70px repeat(3,1fr);gap:24px;padding:0 0 34px}
.orow .cols>div{border-top:1px solid var(--line);padding-top:14px;font-size:16px;line-height:1.5}
.orow .cols .mono{display:block;margin-bottom:8px;color:var(--yellow)}
.orow .cols>i{display:block}
.orow .prog{position:absolute;left:0;bottom:-1px;height:2px;width:0;background:var(--yellow)}
.orow.open .prog.run{animation:prog 6s linear forwards}
@keyframes prog{to{width:100%}}
@media(max-width:760px){.orow>h3>button{grid-template-columns:36px 1fr 28px}.orow .cols{grid-template-columns:1fr;padding-left:46px;gap:14px}.orow .cols>i{display:none}}
/* puertas */
.doors{display:flex;height:min(58vh,520px);gap:10px}
.door{flex:1;position:relative;overflow:hidden;padding:30px;display:flex;flex-direction:column;justify-content:space-between;transition:flex .7s cubic-bezier(.2,.8,.2,1);cursor:pointer;border-radius:2px}
.door:hover,.door.open,.door:focus-visible{flex:2.4}
.door.nv{background:var(--navy)}.door.co{background:var(--coral);color:var(--ink)}
.door h3{font-weight:600;font-size:clamp(26px,2.8vw,42px);line-height:1.08;letter-spacing:-.035em}
.door .n{font-family:"IBM Plex Mono",monospace;font-size:12px;letter-spacing:.08em}
.door ul{list-style:none;margin:0;padding:0;max-height:0;opacity:0;transition:max-height .7s,opacity .5s .15s;font-size:16px}
.door:hover ul,.door.open ul,.door:focus-visible ul{max-height:260px;opacity:1}
.door li{padding:7px 0;border-top:1px solid rgba(255,255,255,.25)}
.door.co li{border-color:rgba(25,25,25,.3)}
.door p{margin:12px 0 0;max-width:36ch;font-size:15px}
@media(max-width:760px){.doors{flex-direction:column;height:auto}.door{min-height:220px}.door ul{max-height:260px;opacity:1}}
/* no vendo */
.nov{display:grid;gap:0}
.nov .row{display:flex;align-items:baseline;gap:18px;flex-wrap:wrap;border-top:1px solid var(--line);padding:14px 0}
.nov .no{font-family:"IBM Plex Mono",monospace;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);min-width:150px}
.strike{position:relative;display:inline-block;font-weight:600;font-size:clamp(28px,4.6vw,66px);line-height:1.1;letter-spacing:-.035em;color:var(--mute)}
.strike::after{content:"";position:absolute;left:-2%;top:54%;height:.09em;background:var(--coral);width:100%;transform-origin:left;transition:transform .8s .5s cubic-bezier(.7,0,.2,1)}
.js .rv:not(.in) .strike::after{transform:scaleX(0)}
.nov .yes{font-weight:600;font-size:clamp(26px,3.6vw,52px);line-height:1.1;letter-spacing:-.035em;margin-top:18px}
.nov .yes b{color:var(--yellow);font-weight:600;display:inline-block;transition:opacity .35s,transform .35s}
.nov .yes b.out{opacity:0;transform:translateY(.25em)}
.nov p.sub{max-width:52ch;color:var(--mute);margin:20px 0 0}
.strip{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;margin-top:6vh;padding:28px 0;border-block:1px solid var(--line)}
.strip .sth{margin:0;font-weight:600;font-size:clamp(20px,2.2vw,30px);letter-spacing:-.035em;line-height:1.1}
.strip .btns{gap:12px}
/* banner */
.band{background:var(--yellow);color:var(--ink);width:100vw;margin-left:calc(50% - 50vw);overflow:hidden;padding:10vh 0}
.band .big{font-weight:600;font-size:clamp(80px,19vw,300px);line-height:.92;letter-spacing:-.035em;white-space:nowrap;will-change:transform;display:block}
.band-t{margin:5vh auto 0;font-weight:500;font-size:clamp(18px,2vw,26px);line-height:1.35;width:min(1320px,calc(100% - 32px))}
.band-t span{display:block;max-width:40ch}
/* cifras */
.stats{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line)}
.stat{padding:30px 28px 34px;border-right:1px solid var(--line)}.stat:first-child{padding-left:0}
.stat:last-child{border:0}
.stat b{display:block;font-weight:600;font-size:clamp(34px,4.4vw,60px);line-height:1.02;letter-spacing:-.035em;color:var(--yellow)}
.stat span{display:block;margin-top:8px;font-size:14px;line-height:1.5;color:var(--mute)}
@media(max-width:760px){.stats{grid-template-columns:1fr 1fr}.stat:nth-child(2){border-right:0}.stat{border-bottom:1px solid var(--line)}.stat:nth-child(odd){padding-left:0}.stat:nth-child(even){padding-left:24px}}
/* reel */
.reel{position:relative;aspect-ratio:21/9;background:var(--ink2);overflow:hidden;border:1px solid var(--line);display:flex;align-items:center;justify-content:center}
.reel .film{position:absolute;inset:0;display:flex;gap:6px;animation:film 26s linear infinite;width:max-content}
.reel .film i{display:block;width:clamp(120px,18vw,260px);height:100%;flex:none}
.reel .film i:nth-child(5n+1){background:var(--navy)}.reel .film i:nth-child(5n+2){background:var(--coral)}.reel .film i:nth-child(5n+3){background:var(--sage)}.reel .film i:nth-child(5n+4){background:var(--yellow)}.reel .film i:nth-child(5n){background:#2d2d2b}
.reel:hover .film{animation-duration:9s}
@keyframes film{to{transform:translateX(-50%)}}
.reel .lab{position:relative;z-index:2;background:var(--ink);padding:18px 26px;font-weight:600;font-size:clamp(22px,3.4vw,46px);letter-spacing:-.035em;text-align:center}
.reel .lab small{display:block;font-family:"IBM Plex Mono",monospace;font-weight:400;font-size:11px;letter-spacing:.08em;color:var(--mute);text-transform:uppercase;margin-top:6px}
.reel-live{cursor:none}
.cur{position:fixed;left:0;top:0;width:96px;height:96px;margin:-48px 0 0 -48px;border-radius:50%;background:var(--yellow);color:var(--ink);display:grid;place-items:center;font-weight:600;font-size:15px;pointer-events:none;z-index:50;transform:scale(0);transition:transform .25s}
.cur.on{transform:scale(1)}
@media(hover:none){.cur{display:none}.reel-live{cursor:auto}}
/* casos */
.cases{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
.case{position:relative;overflow:hidden;background:var(--ink2);aspect-ratio:4/3;border-radius:2px}
.case:nth-child(1),.case:nth-child(4){grid-column:span 4}.case:nth-child(2),.case:nth-child(3){grid-column:span 2;aspect-ratio:auto}
.case:nth-child(5),.case:nth-child(6){grid-column:span 3}
.case img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1.1s cubic-bezier(.2,.8,.2,1)}
.case:hover img{transform:scale(1.06)}
.case .tag{position:absolute;left:14px;top:14px;background:var(--ink);color:var(--paper);padding:5px 10px;font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.case .ov{position:absolute;inset:0;padding:22px;display:flex;flex-direction:column;justify-content:flex-end;gap:4px;transform:translateY(100%);transition:transform .55s cubic-bezier(.2,.8,.2,1);color:var(--ink);font-size:14px;line-height:1.4}
.case .ov h3{margin:0 0 6px;font-weight:600;font-size:clamp(24px,3vw,40px);letter-spacing:-.035em;line-height:1.07}
.case .ov b{font-weight:600}
.case:hover .ov,.case:focus-within .ov,.case:focus .ov{transform:none}
.c-y .ov{background:var(--yellow)}.c-g .ov{background:var(--sage)}.c-r .ov{background:var(--coral)}.c-b .ov{background:var(--navy);color:var(--paper)}
@media(hover:none){.case .ov{transform:none;position:static;background:var(--ink2)!important;color:var(--paper)!important}.case{aspect-ratio:auto}.case img{aspect-ratio:4/3;height:auto}}
@media(max-width:760px){.cases{grid-template-columns:1fr}.case:nth-child(n){grid-column:auto}}
/* método */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:0;list-style:none;margin:0;padding:0}
.step{padding:28px 24px 28px 0;border-top:3px solid var(--line);position:relative}
.step::before{content:"";position:absolute;left:0;top:-3px;height:3px;width:0;background:var(--yellow);transition:width 1.2s .2s cubic-bezier(.2,.8,.2,1)}
.step::before{width:100%}
.js .step:not(.in)::before{width:0}
.step i{font-style:normal;font-family:"IBM Plex Mono",monospace;color:var(--yellow);font-size:13px}
.step h3{margin:10px 0 8px;font-weight:600;font-size:24px;letter-spacing:-.03em}
.step p{margin:0;color:var(--mute);font-size:15px}
@media(max-width:860px){.steps{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.steps{grid-template-columns:1fr}}
/* cierre y formulario */
main>section.close{padding:14vh 0 8vh}
.close h2{font-size:clamp(34px,6.4vw,100px);line-height:1.02}
.ct{display:grid;grid-template-columns:1.3fr 1fr;gap:5vw;margin-top:6vh}
@media(max-width:860px){.ct{grid-template-columns:1fr}}
.cform fieldset{border:0;margin:0;padding:0;min-width:0}
.cform legend{padding:0;margin:0 0 6px}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 22px!important}
.chips legend{width:100%}
.chips label{position:relative}
.chips input{position:absolute;opacity:0;pointer-events:none}
.chips span{display:inline-block;border:1.5px solid #77756c;padding:9px 14px;font-size:14px;cursor:pointer;border-radius:2px;transition:all .2s}
.chips input:checked+span{background:var(--yellow);color:var(--ink);border-color:var(--yellow);font-weight:500}
.chips input:focus-visible+span{outline:2px solid var(--paper);outline-offset:2px}
.chips span:hover{border-color:var(--paper)}
.fld{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
@media(max-width:560px){.fld{grid-template-columns:1fr}}
.lb{display:block;font-size:13px;color:var(--mute)}
.blk{display:block}
.cform input[type=text],.cform input[type=email],.cform input[type=tel],.cform textarea{width:100%;background:transparent;border:0;border-bottom:1.5px solid #77756c;color:var(--paper);font:inherit;font-size:17px;padding:8px 0 10px;outline:0;transition:border-color .2s;border-radius:0}
.cform input:focus,.cform textarea:focus{border-color:var(--yellow)}
.cform textarea{min-height:90px;resize:vertical}
.cform .bad{border-color:var(--coral)!important}
.req{color:var(--yellow);font-style:normal}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.chk{display:flex;gap:10px;align-items:flex-start;margin-top:16px;font-size:14px;color:var(--mute)}
.chk input{margin-top:4px;accent-color:#FDDF50}
.cta-lg{margin-top:18px;font-size:16px;padding:16px 26px}
.fmsg{margin-top:14px;color:var(--yellow);min-height:1.5em;font-size:15px}
.wacard{background:var(--ink2);padding:28px;border:1px solid var(--line);border-radius:2px;align-self:start}
.wacard h3{margin:0 0 8px;font-weight:600;font-size:28px;letter-spacing:-.035em;line-height:1.1}
.wacard p{color:var(--mute);margin:0 0 18px;font-size:15px}
.wacard .tel{margin:18px 0 0}
.foot{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;padding:24px 0 96px;border-top:1px solid var(--line)}
/* WhatsApp flotante y modal */
.fab{position:fixed;right:max(16px,env(safe-area-inset-right,0px));bottom:max(16px,env(safe-area-inset-bottom,0px));z-index:40;background:var(--wa);color:var(--ink);border:0;border-radius:50px;padding:14px 20px;font:600 14px/1 Poppins,sans-serif;cursor:pointer;display:flex;gap:8px;align-items:center;box-shadow:0 0 0 0 rgba(37,211,102,.6);animation:pulse 2.8s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 16px rgba(37,211,102,0)}100%{box-shadow:0 0 0 0 rgba(37,211,102,0)}}
.ov2{position:fixed;inset:0;background:rgba(25,25,25,.86);z-index:70;display:grid;place-items:center;padding:16px}
.ov2[hidden],[hidden]{display:none!important}
.modal{background:var(--paper);color:var(--ink);width:min(520px,100%);padding:30px;border-radius:2px;position:relative;animation:pop .35s cubic-bezier(.2,.8,.2,1)}
@keyframes pop{from{transform:translateY(24px);opacity:0}}
.mh{margin:0 0 6px;font-weight:600;font-size:30px;letter-spacing:-.035em;line-height:1.1}
.modal p{margin:0 0 18px;font-size:15px;color:#4a4a47}
.modal .x{position:absolute;right:14px;top:10px;background:none;border:0;font-size:28px;line-height:1;cursor:pointer;color:var(--ink);padding:4px 8px}
.opt{display:block;width:100%;text-align:left;background:var(--ink);color:var(--paper);border:0;padding:16px 18px;margin-bottom:10px;font:500 16px/1.3 Poppins,sans-serif;cursor:pointer;border-radius:2px;transition:transform .2s,background .2s}
.opt:hover,.opt:focus-visible{transform:translateX(6px);background:var(--navy)}
.opt.co:hover,.opt.co:focus-visible{background:var(--coral);color:var(--ink)}
.opt small{display:block;color:var(--mute);font-size:13px;margin-top:2px}
.opt:hover small,.opt:focus-visible small{color:inherit}
.modal textarea{width:100%;background:transparent;font:inherit;color:var(--ink);border:0;border-bottom:1.5px solid #77756c;margin-bottom:16px;min-height:80px;padding:8px 0;outline:0;resize:vertical}
.modal .back{background:none;border:0;font:inherit;font-size:13px;cursor:pointer;margin-top:12px;text-decoration:underline;color:var(--ink)}
.modal .wa{width:100%;justify-content:center;padding:14px}
/* cookies: tres botones con la misma prominencia */
.ck{position:fixed;left:max(16px,env(safe-area-inset-left,0px));bottom:max(16px,env(safe-area-inset-bottom,0px));z-index:80;width:min(460px,calc(100% - 32px));background:var(--paper);color:var(--ink);padding:22px;border-radius:2px;border:2px solid var(--ink);animation:pop .35s cubic-bezier(.2,.8,.2,1)}
.ckh{margin:0 0 6px;font-weight:600;font-size:20px;letter-spacing:-.03em}
.ck p{margin:0 0 14px;font-size:14px;line-height:1.45}
.ck a{color:var(--ink)}
.ckb{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ckbtn{font:600 14px/1.2 Poppins,sans-serif;padding:12px 8px;background:var(--ink);color:var(--paper);border:2px solid var(--ink);border-radius:2px;cursor:pointer}
.ckbtn:hover{background:var(--yellow);color:var(--ink)}
.ck :focus-visible{outline:2px solid var(--navy)}
.ckrow{display:flex;gap:10px;align-items:flex-start;margin:0 0 10px;font-size:14px}
.ck #ck2 .ckb{grid-template-columns:1fr}
body.ck-open .fab{bottom:max(190px,env(safe-area-inset-bottom,0px))}
@media(min-width:620px){body.ck-open .fab{bottom:max(16px,env(safe-area-inset-bottom,0px))}}
.fallback{padding:10vh 0}
@media(prefers-reduced-motion:reduce){.rv,.case .ov{transition:none}.js .rv:not(.in){opacity:1;transform:none}.case .ov{transform:none}.fab{animation:none}}
/* ===== Páginas interiores (Fase 2) ===== */
.sec-navy{--sec:var(--navy);--sec-ink:var(--paper)}.sec-coral{--sec:var(--coral);--sec-ink:var(--ink)}
.c-y{--sec:var(--yellow);--sec-ink:var(--ink)}.c-g{--sec:var(--sage);--sec-ink:var(--ink)}.c-r{--sec:var(--coral);--sec-ink:var(--ink)}.c-b{--sec:var(--navy);--sec-ink:var(--paper)}
.pg{padding:4vh 0 6vh}
.crumbs ol{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0 0 5vh;padding:0;font:400 12px/1.4 "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}
.crumbs li+li::before{content:"/";margin-right:6px;color:var(--line)}
.crumbs a{color:var(--mute);text-decoration:none}.crumbs a:hover{color:var(--yellow)}
.crumbs [aria-current]{color:var(--paper)}
.ph{margin-bottom:7vh}
.stag{display:inline-block;background:var(--sec,var(--yellow));color:var(--sec-ink,var(--ink));padding:5px 12px;font:500 12px/1.4 "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;border-radius:2px;margin-bottom:22px}
.ph h1{font-size:clamp(30px,4.4vw,68px);line-height:1.06;max-width:16ch}
.lead{font-size:clamp(18px,1.8vw,24px);line-height:1.45;max-width:46ch;margin:28px 0 0}
.sx{display:grid;grid-template-columns:1fr 2.2fr;gap:5vw;padding:7vh 0;border-top:1px solid var(--line)}
.sxl h2{font-size:clamp(24px,2.6vw,36px);line-height:1.1;letter-spacing:-.035em;margin-top:8px}
.sxl .mono{color:var(--yellow)}
.sxr p{max-width:68ch;margin:0 0 1.1em}
.sxr p:last-child{margin-bottom:0}
@media(max-width:860px){.sx{grid-template-columns:1fr;gap:20px}}
.steps2{display:grid;grid-template-columns:1fr 1fr;gap:28px 32px;list-style:none;margin:0;padding:0}
.steps2 li{border-top:3px solid var(--sec,var(--yellow));padding-top:16px}
.steps2 i{font:400 13px/1 "IBM Plex Mono",monospace;color:var(--yellow);font-style:normal}
.steps2 h3{font-weight:600;font-size:22px;letter-spacing:-.03em;margin:10px 0 8px}
.steps2 p{margin:0;color:var(--mute);font-size:15px}
@media(max-width:620px){.steps2{grid-template-columns:1fr}}
.ticks{list-style:none;margin:0;padding:0;display:grid;gap:0}
.ticks li{padding:14px 0 14px 34px;border-bottom:1px solid var(--line);position:relative}
.ticks li::before{content:"";position:absolute;left:0;top:22px;width:14px;height:14px;background:var(--yellow)}
.more{margin-top:26px!important}.more a{color:var(--yellow);font-weight:500}
.faq{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;list-style:none;font-weight:600;font-size:19px;letter-spacing:-.02em;padding:20px 40px 20px 0;position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:4px;top:16px;font-weight:500;font-size:28px;color:var(--yellow);transition:transform .3s}
.faq[open] summary::after{transform:rotate(45deg)}
.faq div{padding:0 0 22px;color:var(--mute)}.faq div p{margin:0 0 .8em}
.scards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.scards a{display:flex;flex-direction:column;gap:8px;height:100%;border:1px solid var(--line);padding:22px;text-decoration:none;border-radius:2px;transition:border-color .2s,transform .3s}
.scards a:hover,.scards a:focus-visible{border-color:var(--yellow);transform:translateY(-4px)}
.scards strong{font-weight:600;font-size:22px;letter-spacing:-.035em;line-height:1.05}
.scards span{color:var(--mute);font-size:15px;flex:1}
.scards em{font-style:normal;color:var(--yellow);font-weight:500;font-size:14px}
.ccards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.ccards.big{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));margin-bottom:6vh}
.ccard{display:flex;flex-direction:column;gap:6px;text-decoration:none;background:var(--ink2);border-radius:2px;overflow:hidden;border-bottom:4px solid var(--sec,var(--yellow));padding-bottom:16px}
.ccard img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;display:block;transition:transform .8s cubic-bezier(.2,.8,.2,1)}
.ccard:hover img{transform:scale(1.04)}
.ccard .cct{font:400 11px/1 "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);padding:10px 16px 0}
.ccard strong{font-weight:600;font-size:24px;letter-spacing:-.035em;padding:0 16px;line-height:1.1}
.ccard .ccs{color:var(--yellow);font-size:14px;padding:0 16px}
.ccard[hidden]{display:none}
.filter{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 4vh}
.fchip{background:none;border:1.5px solid #77756c;color:var(--paper);font:inherit;font-size:14px;padding:9px 14px;border-radius:2px;cursor:pointer}
.fchip.on{background:var(--yellow);color:var(--ink);border-color:var(--yellow)}
.facts{display:flex;gap:48px;flex-wrap:wrap;margin:0 0 6vh;padding:0}
.facts div{margin:0}.facts dt{margin-bottom:4px}.facts dd{margin:0;font-weight:600;font-size:20px;letter-spacing:-.02em}
.chero{margin:0 0 2vh}.chero img,.cgal img{width:100%;height:auto;display:block;border-radius:2px}
.cgal{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:6vh 0 2vh}.cgal figure{margin:0}
@media(max-width:700px){.cgal{grid-template-columns:1fr}}
.prose{max-width:70ch}.prose h2{font-size:clamp(28px,3.4vw,44px);margin:2em 0 .5em}.prose p,.prose li{margin:0 0 1em}.prose a{color:var(--yellow)}
.sx-cta{padding:10vh 0 4vh!important}.sx-cta h2{font-size:clamp(28px,3.9vw,58px)}
.pg .close{border-top:1px solid var(--line);margin-top:4vh}
.cgal figure:last-child:nth-child(odd){grid-column:1/-1}

.flinks{display:flex;gap:18px;flex-wrap:wrap}.flinks a{color:var(--mute);text-decoration:none}.flinks a:hover{color:var(--yellow)}
/* Sobre mí y contacto */
.tl{list-style:none;margin:0;padding:0}.tl li{display:grid;grid-template-columns:130px 1fr;gap:24px;padding:18px 0;border-bottom:1px solid var(--line)}
.tl b{font:500 13px/1.6 "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--yellow)}
.tl span{max-width:62ch}
@media(max-width:620px){.tl li{grid-template-columns:1fr;gap:4px}}
.cts{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-bottom:6vh}
.cts a,.cts div{border:1px solid var(--line);padding:22px;border-radius:2px;text-decoration:none;display:block}
.cts a:hover{border-color:var(--yellow)}
.cts .mono{display:block;margin-bottom:8px}.cts strong{font-weight:600;font-size:20px;letter-spacing:-.02em}
.mapbox{margin-top:6vh;border:1px solid var(--line);border-radius:2px;background:var(--ink2);min-height:320px;display:grid;place-items:center;text-align:center;padding:24px}
.mapbox iframe{width:100%;height:380px;border:0;display:block}
.mapbox p{color:var(--mute);font-size:14px;max-width:48ch;margin:12px auto 0}
.prose table{width:100%;border-collapse:collapse;margin:1.2em 0;font-size:15px}.prose th,.prose td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}.prose th{color:var(--yellow);font:500 12px/1.4 "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase}
.prose ul{padding-left:1.2em}.prose h2{margin-top:1.6em}

a.case{display:block;text-decoration:none;color:inherit}
.case .ov .ovh{display:block;margin:0 0 6px;font-weight:600;font-size:clamp(22px,2.6vw,36px);letter-spacing:-.035em;line-height:1.07}
.case:focus-visible .ov{transform:none}
.case .ov>span{display:block}
/* Sin JS: el acordeón de objetivos y las puertas se muestran abiertos (contenido visible en reposo) */
.orow .bd{grid-template-rows:1fr}
.js .orow:not(.open) .bd{grid-template-rows:0fr}
.door ul{max-height:none;opacity:1}
.js .door ul{max-height:0;opacity:0}
.js .door:hover ul,.js .door.open ul,.js .door:focus-visible ul{max-height:260px;opacity:1}

.prose table{display:block;overflow-x:auto;max-width:100%}

.chero.sq{max-width:760px;margin-inline:auto}
.cgal figure:last-child:nth-child(odd) img[width="1000"]{max-width:760px;margin-inline:auto}

/* Ilustraciones de las guías (SVG en assets/img/guias) */
.gfig{margin:2em 0;max-width:760px}
.gfig img{display:block;width:100%;height:auto}

/* Paginación del blog */
.pager .nav-links{display:flex;flex-wrap:wrap;gap:10px;margin:32px 0}
.pager a,.pager span.page-numbers{padding:8px 14px;border:1px solid var(--line);text-decoration:none}
.pager .current{color:var(--yellow);border-color:var(--yellow)}
.screen-reader-text{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* Vídeos de YouTube con carga al hacer clic */
.vgh{font-size:clamp(18px,1.6vw,22px);margin:34px 0 14px}.vgh:first-child{margin-top:0}
.vgrid{display:grid;grid-template-columns:1fr;gap:34px}
.vid{margin:0}.vid figcaption{color:var(--mute);font-size:15px;line-height:1.5;margin-top:12px;max-width:60ch}
.vbox{position:relative;display:block;width:100%;aspect-ratio:16/9;padding:18px;border:1px solid var(--line);border-radius:2px;background:var(--ink2);color:var(--paper);cursor:pointer;text-align:left;font:inherit;overflow:hidden}
.vbox:hover .vplay,.vbox:focus-visible .vplay{transform:scale(1.08)}
.vbox:hover{border-color:var(--yellow)}
.vbox iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.vplay{position:absolute;left:50%;top:46%;width:76px;height:76px;margin:-38px 0 0 -38px;border-radius:50%;background:var(--yellow);transition:transform .2s}
.vplay:after{content:"";position:absolute;left:30px;top:23px;border-left:23px solid var(--ink);border-top:15px solid transparent;border-bottom:15px solid transparent}
.vt{position:absolute;left:22px;right:80px;bottom:18px;font-weight:600;font-size:clamp(15px,1.8vw,20px);line-height:1.25}
.vm{position:absolute;right:22px;bottom:18px}
.vbox img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vbox:after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(25,25,25,.88),rgba(25,25,25,0) 55%)}
.vplay,.vt,.vm{z-index:1}

/* Puertas: imagen en duotono bajo el color y enlace a cada hub */
.door{color:inherit;text-decoration:none;isolation:isolate}
.door.nv{color:var(--paper)}
.door>*{position:relative;z-index:2}
.door .dimg{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.05);mix-blend-mode:luminosity;opacity:.2;transition:opacity .6s,transform 1.2s cubic-bezier(.2,.8,.2,1)}
.door:hover .dimg,.door:focus-visible .dimg{opacity:.3;transform:scale(1.04)}
.door:after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(to top,var(--dc) 8%,transparent 62%)}
.door.nv{--dc:var(--navy)}.door.co{--dc:var(--coral)}
.door .go{display:inline-block;margin-top:14px;font:500 12px/1 "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;opacity:.85}
/* Cita en amarillo y cursiva sobre negro */
.quote{padding:12vh 0 10vh;border-top:1px solid var(--line)}
.quote .mono{display:block;margin-bottom:26px}
.quote blockquote{margin:0;max-width:30ch;font-style:italic;font-weight:500;font-size:clamp(24px,3.2vw,46px);line-height:1.28;letter-spacing:-.02em;color:var(--yellow);text-wrap:balance}
/* Reel */
.reelv{max-width:none}
.reelv .vbox{aspect-ratio:16/9}
.door.co .dimg{mix-blend-mode:multiply;opacity:.45}.door.co:hover .dimg,.door.co:focus-visible .dimg{opacity:.6}
.door.nv .dimg{opacity:.15;filter:grayscale(1) brightness(.8)}.door.nv:hover .dimg,.door.nv:focus-visible .dimg{opacity:.22}
.door.nv .dimg{mix-blend-mode:overlay;opacity:.36;filter:grayscale(1) contrast(1.1)}.door.nv:hover .dimg,.door.nv:focus-visible .dimg{opacity:.5}

/* Puertas v2: bloque editorial con un caso real */
.doors{display:grid;grid-template-columns:1fr 1fr;gap:14px;height:auto}
.door{display:flex;flex-direction:column;flex:none;gap:0;padding:clamp(18px,2vw,28px);min-height:0;transition:none}
.door:hover,.door.open,.door:focus-within{flex:none}
.door:after{display:none}
.door>*{position:static;z-index:auto}
.door.nv{color:var(--paper)}.door.co{color:var(--ink)}
.dfig{position:relative;margin:0;aspect-ratio:16/10;overflow:hidden;border-radius:2px;background:var(--dc)}
.dfig img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.05);transition:filter .7s,transform 1.4s cubic-bezier(.2,.8,.2,1)}
.dfig:after{content:"";position:absolute;inset:0;background:var(--dc);mix-blend-mode:color;opacity:.92;transition:opacity .7s;pointer-events:none}
.door:hover .dfig img,.door:focus-within .dfig img{filter:none;transform:scale(1.04)}
.door:hover .dfig:after,.door:focus-within .dfig:after{opacity:0}
.dfig figcaption{position:absolute;left:0;bottom:0;z-index:2;padding:12px 14px}
.dcase{display:inline-block;background:var(--ink);color:var(--paper);padding:7px 12px;border-radius:2px;font:500 12px/1 "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;text-decoration:none}
.dcase:hover,.dcase:focus-visible{background:var(--yellow);color:var(--ink)}
.dtx{display:flex;flex-direction:column;padding-top:clamp(18px,2vw,28px)}
.dtx .n{display:block;margin-bottom:10px}
.dtx h3{margin:0}
.dgo{color:inherit;text-decoration:none}
.dgo:after{content:"";position:absolute;inset:0;z-index:1}
.door:hover .dgo,.dgo:focus-visible{text-decoration:underline;text-underline-offset:.18em;text-decoration-thickness:2px}
.dtx p{margin:10px 0 0;max-width:42ch}
.dtx ul{max-height:none;opacity:1;margin:18px 0 0;padding:0;list-style:none;display:grid;grid-template-columns:1fr 1fr;column-gap:20px}
.dtx li{padding:9px 0;border-top:1px solid rgba(255,255,255,.25);font-size:15px}
.door.co .dtx li{border-color:rgba(25,25,25,.3)}
.dtx .go{margin-top:20px}
@media(max-width:860px){.doors{grid-template-columns:1fr}}
@media(max-width:480px){.dtx ul{grid-template-columns:1fr}}
.door{position:relative}.dfig figcaption{z-index:3}
.js .door .dtx ul,.door .dtx ul{max-height:none;opacity:1;transition:none}

/* Puertas v3: bloque tipográfico */
.doors{display:grid;grid-template-columns:1fr 1fr;gap:14px;height:auto}
.door{position:relative;overflow:hidden;display:flex;flex-direction:column;flex:none;min-height:clamp(480px,46vw,620px);padding:clamp(22px,2.6vw,38px);cursor:pointer;transition:none}
.door:hover,.door.open,.door:focus-within{flex:none}
.door .gn{position:absolute;right:clamp(14px,2vw,30px);top:clamp(-6px,-.5vw,0px);z-index:0;font-weight:600;font-size:clamp(110px,12.5vw,200px);line-height:1;letter-spacing:-.05em;color:transparent;-webkit-text-stroke:1.5px var(--gs);opacity:.28;transition:opacity .6s,transform .9s cubic-bezier(.2,.8,.2,1);pointer-events:none}
.door:hover .gn,.door:focus-within .gn{opacity:.42;transform:translateY(8px)}
.door .n{position:relative;z-index:1;margin:0 0 clamp(26px,5vw,70px)}
.door h3{position:relative;z-index:1;margin:0;font-weight:600;font-size:clamp(36px,4.4vw,68px);line-height:1.02;letter-spacing:-.035em}
.dgo{color:inherit;text-decoration:none}
.dgo:after{content:"";position:absolute;inset:-9999px;z-index:2}
.door p{position:relative;z-index:1;margin:16px 0 0;max-width:34ch;font-size:clamp(15px,1.25vw,17px);line-height:1.45}
.door ul,.js .door ul{position:relative;z-index:1;list-style:none;margin:auto 0 0;padding:clamp(24px,3vw,42px) 0 0;max-height:none;opacity:1;font-size:clamp(18px,1.7vw,24px);transition:none}
.door li{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:clamp(11px,1.1vw,15px) 0;border-top:1px solid rgba(255,255,255,.28);font-weight:500;letter-spacing:-.02em;transition:padding .35s cubic-bezier(.2,.8,.2,1)}
.door.co li{border-color:rgba(25,25,25,.32)}
.door li:after{content:"\2192";font-size:.9em;opacity:0;transform:translateX(-10px);transition:opacity .35s,transform .35s}
.door:hover li:after,.door:focus-within li:after{opacity:.8;transform:none}
.door li:hover{padding-left:10px}
.door .go{position:relative;z-index:1;margin-top:20px;font:500 12px/1 "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;opacity:.85}
.door.nv{color:var(--paper)}.door.co{color:var(--ink)}
@media(max-width:860px){.doors{grid-template-columns:1fr}.door{min-height:0}.door .n{margin-bottom:22px}}
.door.nv{--gs:var(--paper)}.door.co{--gs:var(--ink)}
.door .gn{top:clamp(8px,1vw,16px)}
/* Anula el max-height de las puertas antiguas en hover/foco, que desbordaba la lista sobre "Ver servicios" */
.door:hover ul,.door:focus-within ul,.door.open ul,.door:focus-visible ul,.js .door:hover ul{max-height:none;opacity:1;overflow:visible}
.door ul{flex:none}.door .go{flex:none}
/* Galería de casos: cada imagen llena su hueco de la cuadrícula (sin huecos bajo las más bajas) */
.cgal figure{display:flex;min-height:0}
.cgal figure img{flex:1 1 auto;width:100%;height:100%;object-fit:cover;object-position:center}
.cgal figure:last-child:nth-child(odd) img{height:auto}
@media(max-width:700px){.cgal figure img{height:auto}}

/* Slider de la galería de casos */
.cgal figure.gslide{position:relative;display:block;min-height:0}
.gs-track{display:flex;height:100%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch;border-radius:2px}
.gs-track::-webkit-scrollbar{display:none}
.cgal .gs-track img{flex:0 0 100%;width:100%;height:100%;object-fit:cover;scroll-snap-align:start;border-radius:0}
.gs-btn{position:absolute;top:50%;z-index:2;width:44px;height:44px;margin-top:-22px;border:0;border-radius:50%;background:var(--ink);color:var(--paper);font:500 20px/1 "IBM Plex Mono",monospace;cursor:pointer;opacity:.85;transition:opacity .2s,background .2s}
.gs-btn:hover,.gs-btn:focus-visible{opacity:1;background:var(--yellow);color:var(--ink)}
.gs-prev{left:12px}.gs-next{right:12px}
.gs-dots{position:absolute;left:0;right:0;bottom:12px;z-index:2;display:flex;justify-content:center;gap:8px;pointer-events:none}
.gs-dots i{width:8px;height:8px;border-radius:50%;background:var(--ink);opacity:.35;transition:opacity .2s,transform .2s}
.gs-dots i.on{opacity:1;background:var(--yellow);transform:scale(1.25)}

/* Móvil: encabezado que cabe desde 320 px, sin pista de ratón y casillas tocables */
.mono .tch{display:none}
@media(hover:none){.mono .hov{display:none}.mono .tch{display:inline}}
@media(max-width:430px){
.nav{gap:8px}.logo svg{height:22px}
.navr{gap:8px}.navr .cta{padding:8px 10px;font-size:13px}.navtoggle{padding:8px 10px}
.langs{gap:2px}.langs a{padding:10px 5px}
.chk input,.ckrow input{width:20px;height:20px;margin-top:2px;flex:none}
}
@media(max-width:345px){.navr .cta{display:none}}

/* Tablas de las páginas legales: tarjetas apiladas en móvil */
@media(max-width:600px){
.prose table,.prose tbody,.prose tr,.prose td{display:block;width:100%;max-width:none;overflow:visible}
.prose thead{display:none}
.prose tr{border:1px solid var(--line);padding:6px 14px;margin:0 0 12px}
.prose td{border:0;padding:7px 0}
.prose td:before{display:block;margin-bottom:2px;font:500 11px/1.4 "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}
.prose td:nth-child(1):before{content:"Nombre"}.prose td:nth-child(2):before{content:"Tipo"}.prose td:nth-child(3):before{content:"Finalidad"}.prose td:nth-child(4):before{content:"Duración"}
html[lang^="gl"] .prose td:nth-child(1):before{content:"Nome"}html[lang^="gl"] .prose td:nth-child(3):before{content:"Finalidade"}
}

/* Mejoras gráficas: más aire, estilo editorial */
main>section{padding:13vh 0}
main>section.s-obj{padding-top:10vh}
.sh{margin-bottom:7vh}
.ph{margin-bottom:9vh}
.sx{padding:11vh 0;gap:6vw}
.ccards{gap:22px}.ccards.big{margin-bottom:8vh}
.scards{gap:18px}
.scards a{padding:28px}
.cgal{gap:18px;padding:8vh 0 3vh}
.sx-cta{padding:14vh 0 6vh!important}
/* Cita de marca y bandas de llamada: centradas para romper el ritmo */
.quote{border-top:0;text-align:center;padding:14vh 0 12vh}
.quote blockquote{margin-inline:auto;max-width:26ch}
.s-obj+#servicios,main>section.quote+section{padding-top:4vh}
.strip{flex-direction:column;justify-content:center;text-align:center;gap:26px;padding:56px 0;margin-top:9vh}
.strip .btns{justify-content:center}
/* Imágenes de antes y después: a todo el ancho y sin recorte */
.cgal figure:has(img[src*="antes-despues"]){grid-column:1/-1}
.cgal figure:has(img[src*="antes-despues"]) img{height:auto;object-fit:contain}
.chero:has(img[src*="antes-despues"]) img{object-fit:contain}
/* Sobre mí: palabras enormes y un párrafo */
.ph.about-h h1.mono{font-size:12px;line-height:1.4;max-width:none;letter-spacing:.08em;font-weight:500;margin-bottom:6vh}
.bigw{margin:0;display:flex;flex-direction:column;font-weight:600;line-height:.92;letter-spacing:-.05em;font-size:clamp(34px,10.5vw,170px);text-transform:uppercase}
.bigw span{display:block;overflow-wrap:normal}
.bigw .bw1{color:#fff}
.bigw .bw2{color:#a6a49b}
.bigw .bw3{color:#706e66}
.about-txt{max-width:44ch;margin:0 0 4vh auto;font-size:clamp(18px,1.7vw,23px);line-height:1.5}
.about-txt p{margin:0}
@media(max-width:700px){.about-txt{margin-left:0}.strip{padding:44px 0}}

/* ===== Sistema editorial: rejilla, filetes finos, imagen sin marco, mucho aire ===== */
:root{--hair:rgba(244,241,232,.16)}
/* Trabajos: portada, casos y casos relacionados comparten el mismo componente */
.cases{display:grid;grid-template-columns:repeat(12,1fr);gap:11vh 3vw;align-items:start}
.case{display:flex;flex-direction:column;background:none;aspect-ratio:auto!important;border-radius:0;overflow:visible;grid-column:span 6!important}
.case:nth-child(4n+1),.case:nth-child(4n+4){grid-column:span 7!important}
.case:nth-child(4n+2),.case:nth-child(4n+3){grid-column:span 5!important}
.case img{width:100%;height:auto!important;aspect-ratio:4/3;object-fit:cover;transition:opacity .5s}
.case:hover img{transform:none;opacity:.86}
.case .tag{position:static;order:1;background:none;padding:0;margin-top:22px;color:var(--mute)}
.case .ov{position:static!important;order:2;transform:none!important;background:none!important;color:var(--paper)!important;padding:0;margin-top:10px;gap:6px;inset:auto}
.case .ov .ovh{font-size:clamp(22px,2.2vw,32px);margin:0;transition:color .3s}
.case:hover .ovh,.case:focus-visible .ovh{color:var(--yellow)}
.case .ov>span{color:var(--mute);font-size:15px;line-height:1.5;max-width:46ch}
.case .ov>span:last-child{display:none}
.case .ov b{color:var(--paper);font-weight:500}
.ccards,.ccards.big{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:9vh 3vw}
.ccards.big{grid-template-columns:repeat(2,1fr);margin-bottom:10vh}
.ccard{background:none;border:0;padding:0;border-radius:0;overflow:visible;gap:0}
.ccard img{aspect-ratio:4/3;object-fit:cover;transition:opacity .5s}
.ccard:hover img{transform:none;opacity:.86}
.ccard .cct{padding:22px 0 0;color:var(--mute)}
.ccard strong{padding:10px 0 0;font-size:clamp(22px,2.2vw,32px);transition:color .3s}
.ccard:hover strong,.ccard:focus-visible strong{color:var(--yellow)}
.ccard .ccs{display:none}
/* Servicios, guías y blog: lista con filetes, sin cajas */
.scards{display:block;border-bottom:1px solid var(--hair)}
.scards li{border-top:1px solid var(--hair)}
.scards a{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);column-gap:4vw;row-gap:14px;align-items:baseline;height:auto;border:0;border-radius:0;padding:clamp(28px,4.5vh,44px) 0;transition:none}
.scards a:hover,.scards a:focus-visible{border:0;transform:none}
.scards strong{grid-column:1;font-size:clamp(22px,2.4vw,34px);line-height:1.1;transition:color .3s,transform .5s cubic-bezier(.2,.8,.2,1)}
.scards a:hover strong,.scards a:focus-visible strong{color:var(--yellow);transform:translateX(10px)}
.scards span{grid-column:2;font-size:16px;line-height:1.55;color:var(--mute);max-width:56ch}
.scards .mono{grid-column:1;order:-1;margin-bottom:-4px}
.scards em{grid-column:2;color:var(--yellow);font-size:13px;font-family:"IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase}
.scards strong:only-child{grid-column:1/-1}
/* Filtro: texto, no botones */
.filter{gap:10px 30px;margin:0 0 9vh}
.fchip{border:0;border-bottom:1px solid transparent;border-radius:0;padding:6px 0;background:none;color:var(--mute);font:500 12px/1.4 "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;transition:color .3s,border-color .3s}
.fchip:hover{color:var(--paper)}
.fchip.on{background:none;color:var(--paper);border-bottom-color:var(--yellow)}
@media(max-width:900px){
.cases,.ccards.big{grid-template-columns:1fr;gap:8vh}
.case:nth-child(n){grid-column:auto!important}
.scards a{grid-template-columns:1fr}
.scards strong,.scards span,.scards em,.scards .mono{grid-column:1}
.scards a:hover strong{transform:none}}
@media(max-width:600px){.filter{gap:8px 22px}}
/* Portada: las dos imágenes de cada fila miden lo mismo de alto */
.case:nth-child(4n+1) img,.case:nth-child(4n+4) img{aspect-ratio:1.9/1}
@media(max-width:900px){.case:nth-child(n) img{aspect-ratio:4/3}}
