/* Fuentes locales */
@font-face{font-family:'Hanken Grotesk';font-style:normal;font-weight:300;font-display:swap;src:url('../fonts/hanken-300.woff2') format('woff2')}
@font-face{font-family:'Hanken Grotesk';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/hanken-400.woff2') format('woff2')}
@font-face{font-family:'Hanken Grotesk';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/hanken-500.woff2') format('woff2')}
@font-face{font-family:'Hanken Grotesk';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/hanken-600.woff2') format('woff2')}
@font-face{font-family:'Hanken Grotesk';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/hanken-700.woff2') format('woff2')}

/* ===== Sistema de diseño (v5) ===== */
:root{
  --paper:#FBFAF6;--paper-2:#F5F1E9;--linen:#EEE9DE;--sand:#E7DECF;
  --ink:#17160F;--ink-2:#46433A;--greige:#8B8477;
  --navy:#1B2A4A;--navy-2:#243657;--gold:#B0863B;--gold-2:#CBA96A;
  --hair:rgba(23,22,15,.14);--hair-soft:rgba(23,22,15,.08);
  --sans:"Hanken Grotesk",ui-sans-serif,system-ui,-apple-system,sans-serif;
  --wrap:1400px;--gutter:clamp(20px,5vw,72px);--ease:cubic-bezier(.16,1,.3,1);color-scheme:light;
}
*,*::before,*::after{box-sizing:border-box}*{margin:0}
body{font-family:var(--sans);color:var(--ink);background:var(--paper);font-size:clamp(1rem,.96rem+.25vw,1.12rem);line-height:1.65;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%;height:auto}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:none;border:0}
h1,h2,h3,h4{font-weight:400;line-height:1.05;letter-spacing:-.02em}
html{scroll-behavior:smooth;scroll-padding-top:100px}
p{max-width:64ch}
.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter)}
.section{padding-block:clamp(76px,11vw,160px)}
.eyebrow{font-size:.76rem;font-weight:600;letter-spacing:.28em;text-transform:uppercase;color:var(--greige)}
.gold{color:var(--gold)}
.btn{display:inline-flex;align-items:center;gap:.6em;font-size:.9rem;font-weight:600;letter-spacing:.02em;padding:.95em 1.7em;border:1px solid transparent;transition:transform .25s var(--ease),background-color .3s,color .3s,border-color .3s}
.btn-solid{background:var(--navy);color:#fff}.btn-solid:hover{background:var(--navy-2);transform:translateY(-2px)}
.btn-ghost{border-color:var(--hair);color:var(--ink)}.btn-ghost:hover{border-color:var(--ink);transform:translateY(-2px)}
.btn-onphoto{border-color:rgba(255,255,255,.5);color:#fff}.btn-onphoto:hover{background:rgba(255,255,255,.12);border-color:#fff;transform:translateY(-2px)}
.arrowlink{display:inline-flex;align-items:center;gap:.6em;font-weight:600;font-size:.92rem;border-bottom:1px solid var(--hair);padding-bottom:6px;transition:gap .3s var(--ease),border-color .3s}
.arrowlink:hover{gap:1em;border-color:var(--gold)}.arrowlink .a{color:var(--gold)}
.reveal{opacity:0;transform:translateY(24px);transition:opacity 1s var(--ease),transform 1s var(--ease)}.reveal.in{opacity:1;transform:none}
.rl{display:block;overflow:hidden}.rl>span{display:block;transform:translateY(110%);transition:transform .9s var(--ease)}.rl.in>span{transform:none}
.seg{display:inline-flex;border:1px solid var(--navy);overflow:hidden}
.seg button{padding:.7em 1.5em;font-weight:700;letter-spacing:.04em;color:var(--navy);border-right:1px solid var(--navy);transition:background-color .3s,color .3s}
.seg button:last-child{border-right:0}.seg button[aria-selected="true"]{background:var(--navy);color:#fff}

/* HEADER */
.hd{position:fixed;inset:0 0 auto 0;z-index:70;display:flex;align-items:center;justify-content:space-between;height:150px;padding-left:max(var(--gutter),env(safe-area-inset-left));padding-right:max(var(--gutter),env(safe-area-inset-right));transition:background-color .5s var(--ease),height .4s,box-shadow .5s,border-color .5s;border-bottom:1px solid transparent}
.hd.solid{background:rgba(251,250,246,.93);backdrop-filter:saturate(150%) blur(14px);height:94px;border-color:var(--hair-soft);box-shadow:0 6px 30px rgba(27,42,74,.05)}
.hd__logo{position:relative;display:inline-flex;align-items:center}
/* Halo blanco muy suave y difuminado, solo alrededor del logo (sin caja/borde). Se desvanece al pasar la cabecera a fondo claro. */
.hd__logo::before{content:"";position:absolute;left:50%;top:50%;width:180%;height:200%;transform:translate(-50%,-50%);background:radial-gradient(ellipse at center,rgba(255,255,255,.5) 0%,rgba(255,255,255,.24) 40%,rgba(255,255,255,0) 72%);filter:blur(16px);z-index:-1;pointer-events:none;opacity:1;transition:opacity .5s var(--ease)}
.hd.solid .hd__logo::before{opacity:0}
.hd__logo img{height:clamp(100px,9.6vw,128px);width:auto;transition:height .4s var(--ease)}.hd.solid .hd__logo img{height:82px}
/* Halo del bloque MENÚ + icono: equivalente al del logo pero más discreto; desaparece con la cabecera clara. */
.menu-btn{position:relative}
.menu-btn::before{content:"";position:absolute;left:50%;top:50%;width:152%;height:250%;transform:translate(-50%,-50%);background:radial-gradient(ellipse at center,rgba(255,255,255,.3) 0%,rgba(255,255,255,.12) 38%,rgba(255,255,255,0) 68%);filter:blur(14px);z-index:-1;pointer-events:none;opacity:1;transition:opacity .5s var(--ease)}
.hd.solid .menu-btn::before{opacity:0}
@media(max-width:640px){.hd{height:104px}.hd.solid{height:80px}.hd__logo img{height:78px}.hd.solid .hd__logo img{height:62px}.hd__logo::before{width:120%;height:132%;filter:blur(9px);background:radial-gradient(ellipse at center,rgba(255,255,255,.3) 0%,rgba(255,255,255,.13) 32%,rgba(255,255,255,0) 58%)}.menu-btn::before{width:128%;height:168%;filter:blur(8px);background:radial-gradient(ellipse at center,rgba(255,255,255,.24) 0%,rgba(255,255,255,.1) 34%,rgba(255,255,255,0) 60%)}}
.menu-btn{display:inline-flex;align-items:center;gap:12px;color:var(--navy);font-weight:600;font-size:.82rem;letter-spacing:.18em;text-transform:uppercase}
.menu-btn .bars{display:inline-block;width:26px;height:9px;position:relative}
.menu-btn .bars::before,.menu-btn .bars::after{content:"";position:absolute;left:0;right:0;height:1.5px;background:currentColor;transition:transform .3s var(--ease)}
.menu-btn .bars::before{top:0}.menu-btn .bars::after{bottom:0}
.nav-ov{position:fixed;inset:0;z-index:80;background:var(--linen);display:flex;flex-direction:column;justify-content:center;padding:var(--gutter);opacity:0;visibility:hidden;transition:opacity .5s var(--ease),visibility .5s}
.nav-ov.open{opacity:1;visibility:visible}
.nav-ov__close{position:absolute;top:28px;right:var(--gutter);font-size:.82rem;letter-spacing:.18em;text-transform:uppercase;font-weight:600;color:var(--navy)}
.nav-ov a{display:block;font-size:clamp(1.6rem,5vw,3.4rem);font-weight:300;letter-spacing:-.02em;color:var(--ink);padding:.1em 0;transition:color .3s,padding-left .3s var(--ease)}
.nav-ov a:hover{color:var(--navy);padding-left:.2em}.nav-ov a .idx{font-size:.7rem;color:var(--gold);vertical-align:super;margin-right:.6em}
.nav-ov__foot{position:absolute;bottom:28px;left:var(--gutter);right:var(--gutter);display:flex;justify-content:space-between;font-size:.8rem;color:var(--greige)}

/* HERO */
.hero{position:relative;min-height:100dvh;overflow:hidden;color:#fff;display:flex}
.hero__media{position:absolute;inset:0;z-index:-2;clip-path:inset(0 0 0 0)}
.hero__media img{width:100%;height:100%;object-fit:cover;transform:scale(1.05);transform-origin:56% 42%}
.hero__grad{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(20,17,10,.20) 0%,rgba(20,17,10,0) 24%,rgba(20,17,10,.06) 52%,rgba(20,17,10,.82) 100%),radial-gradient(135% 95% at 10% 92%,rgba(20,17,10,.55),transparent 60%)}
.hero__inner{position:relative;z-index:2;width:100%;align-self:flex-end;padding-left:max(var(--gutter),env(safe-area-inset-left));padding-right:max(var(--gutter),env(safe-area-inset-right));padding-bottom:max(clamp(56px,9vh,110px),calc(env(safe-area-inset-bottom) + 40px))}
@media(max-width:640px){.hero__inner{padding-bottom:max(64px,calc(env(safe-area-inset-bottom) + 48px))}}
.lock{display:flex;flex-direction:column;align-items:flex-start}
.lock .mk{width:clamp(46px,5vw,84px);height:auto;margin-bottom:clamp(6px,1.2vw,16px)}.lock .mk path{stroke:var(--gold-2)}
.inf{font-weight:300;letter-spacing:.06em;line-height:.82;font-size:clamp(3.2rem,13vw,12rem);display:flex;max-width:none}.inf .ltr{display:inline-block}
.lock .subrow{display:flex;align-items:center;gap:20px;margin-top:clamp(10px,1.4vw,20px)}
.lock .subrow .ln{height:1px;width:clamp(40px,7vw,120px);background:var(--gold-2);opacity:.8}
.lock .sub{font-size:clamp(.7rem,1.5vw,1rem);letter-spacing:.42em;text-transform:uppercase;color:rgba(255,255,255,.9)}
.hero__foot{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:24px;margin-top:clamp(26px,4vh,54px)}
.hero__lead .big{font-size:clamp(1.2rem,1.05rem+.65vw,1.68rem);font-weight:300;color:#f6f0e4;max-width:22ch;line-height:1.4;letter-spacing:normal;text-shadow:0 1px 24px rgba(0,0,0,.35)}
.hero__lead .sm{margin-top:16px;font-size:.75rem;letter-spacing:.26em;text-transform:uppercase;color:rgba(255,255,255,.78)}
.hero__lead .sm b{color:var(--gold-2);font-weight:600}
.hero__cta{margin-top:clamp(18px,2.2vw,28px)}
@media(max-width:640px){.hero__cta .btn{padding:.9em 1.5em}}
.discover{position:absolute;right:var(--gutter);bottom:clamp(56px,9vh,110px);z-index:2;display:flex;flex-direction:column;align-items:center;gap:10px;color:rgba(255,255,255,.82);font-size:.72rem;letter-spacing:.24em;text-transform:uppercase}
.discover .dl{width:1px;height:46px;background:rgba(255,255,255,.5);position:relative;overflow:hidden}
.discover .dl::after{content:"";position:absolute;left:0;right:0;top:-46px;height:46px;background:var(--gold-2);animation:down 2.4s var(--ease) infinite}
@keyframes down{0%{transform:translateY(0)}60%,100%{transform:translateY(92px)}}
@media(max-width:760px){.discover{display:none}}

/* CONCEPTO */
.concepto{background:var(--linen)}
.concepto__grid{display:grid;grid-template-columns:1fr}
@media(min-width:940px){.concepto__grid{grid-template-columns:.82fr 1.18fr}}
.concepto__visual{position:relative;overflow:hidden;min-height:60vh}
.concepto__visual img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.08)}
.concepto__words{position:absolute;left:clamp(20px,3vw,44px);bottom:clamp(24px,4vw,54px);z-index:2;color:#fff;display:flex;flex-direction:column;gap:.35em;font-size:clamp(.9rem,1.4vw,1.1rem);letter-spacing:.3em;text-transform:uppercase;text-shadow:0 1px 14px rgba(0,0,0,.4)}
.concepto__words b{color:var(--gold-2);font-weight:600}
.concepto__text{padding:clamp(48px,7vw,110px) var(--gutter);display:flex;flex-direction:column;justify-content:center;max-width:760px}
.concepto__text .eyebrow{color:var(--gold)}
.concepto__text .eyebrow::before{content:"";display:inline-block;width:26px;height:1px;background:var(--gold);vertical-align:middle;margin-right:12px}
.concepto__text h2{font-size:clamp(2.3rem,1.5rem+3.1vw,4.1rem);margin-top:1.3rem;line-height:1.02}.concepto__text h2 b{font-weight:500}
.concepto__text h2 b.u{box-shadow:inset 0 -.07em 0 var(--gold-2)}
.concepto__text .body{margin-top:1.9rem;color:var(--ink-2);line-height:1.75}
.concepto__text .body p{max-width:60ch;text-align:justify;text-align-last:left;hyphens:auto}.concepto__text .body p+p{margin-top:1.25rem}
.concepto__text .body b{color:var(--ink);font-weight:600}
.mtile{opacity:0;transform:translateY(26px) scale(.985);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.mood__row.in .mtile{opacity:1;transform:none}
.mood__row.in .mtile:nth-child(2){transition-delay:.08s}.mood__row.in .mtile:nth-child(3){transition-delay:.16s}.mood__row.in .mtile:nth-child(4){transition-delay:.24s}.mood__row.in .mtile:nth-child(5){transition-delay:.32s}
.mood{border-top:1px solid var(--hair)}
.mood__row{display:grid;grid-template-columns:repeat(2,1fr);gap:2px}
@media(min-width:720px){.mood__row{grid-template-columns:repeat(5,1fr)}}
.mtile{position:relative;aspect-ratio:3/4;overflow:hidden;background:var(--sand)}
.mtile img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease)}.mtile:hover img{transform:scale(1.06)}
.mtile span{position:absolute;left:12px;bottom:10px;color:#fff;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;text-shadow:0 1px 10px rgba(0,0,0,.6)}

/* VIVIR */
.vivir{background:#100e0a;color:#fff}
.vivir__head{padding:clamp(76px,10vw,150px) 0 clamp(30px,4vw,54px)}.vivir__head .eyebrow{color:#8f887a}
.vivir__head h2{color:#fff;font-size:clamp(2rem,1.4rem+2.4vw,3.4rem)}
.vivir__stage{position:relative}
.vscene{position:relative;min-height:88vh;overflow:hidden}
.vscene__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.06)}
.vscene::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,8,5,.2) 0%,rgba(10,8,5,0) 36%,rgba(10,8,5,.5) 74%,rgba(10,8,5,.85) 100%)}
.vscene__cap{position:absolute;left:0;right:0;bottom:0;z-index:3;padding-bottom:clamp(44px,8vh,96px)}
.vscene__cap .k{font-size:.78rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-2)}
.vscene__cap h3{font-size:clamp(1.6rem,1.2rem+1.6vw,2.6rem);font-weight:300;margin-top:.6rem}.vscene__cap p{color:#eadfce;margin-top:.7rem;max-width:32ch}
.vledger{position:absolute;right:var(--gutter);top:50%;transform:translateY(-50%);z-index:4;display:flex;flex-direction:column;gap:clamp(14px,2.2vh,26px);text-align:right}
.vspec{opacity:0;transform:translateY(14px)}.vspec .n{font-size:clamp(1.7rem,1.1rem+1.5vw,2.8rem);font-weight:300;line-height:1;display:block}.vspec .u{font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.6);margin-top:.35rem;display:block}
.vprog{position:absolute;left:var(--gutter);right:var(--gutter);bottom:22px;height:1px;background:rgba(255,255,255,.2);z-index:5}.vprog i{position:absolute;inset:0 auto 0 0;width:0;background:var(--gold-2)}
.vivir.on .vivir__stage{height:100dvh}.vivir.on .vscene{position:absolute;inset:0;min-height:0;height:100%}
@media(max-width:900px){.vledger{position:static;transform:none;text-align:left;flex-direction:row;flex-wrap:wrap;gap:16px 30px;padding:24px var(--gutter) 0}.vspec{opacity:1;transform:none}}

/* ELIGE */
.elige{background:var(--paper)}
.elige__top{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:24px}
.elige__top h2{font-size:clamp(2rem,1.4rem+2.4vw,3.4rem)}.elige__top h2 em{font-style:normal;font-weight:300;letter-spacing:.04em}
.elige__top .side{color:var(--ink-2);max-width:34ch;font-size:.98rem}
.viv3{display:grid;grid-template-columns:1fr;gap:clamp(24px,3vw,36px);margin-top:clamp(40px,5vw,68px)}
@media(min-width:860px){.viv3{grid-template-columns:repeat(3,1fr)}}
.vcard{display:flex;flex-direction:column;transition:transform .4s var(--ease)}
.vcard:hover{transform:translateY(-6px)}
.vcard__img{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--paper-2)}
.vcard__img::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(12,10,6,.6) 100%)}
.vcard__img img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}.vcard:hover .vcard__img img{transform:scale(1.06)}
.vcard__letter{position:absolute;left:22px;bottom:18px;z-index:2;color:#fff;font-size:clamp(3.2rem,5.5vw,5rem);font-weight:300;line-height:.9;text-shadow:0 2px 24px rgba(0,0,0,.45)}
.vcard__letter::after{content:"";display:block;width:34px;height:2px;background:var(--gold-2);margin-top:10px;transform:scaleX(.4);transform-origin:left;transition:transform .5s var(--ease)}
.vcard:hover .vcard__letter::after{transform:scaleX(1)}
.vcard__tag{margin-top:22px;color:var(--ink);font-weight:600;letter-spacing:.01em;font-size:1rem;line-height:1.35;min-height:3.4em;position:relative;padding-left:16px;padding-bottom:22px}
.vcard__tag::before{content:"";position:absolute;left:0;top:.5em;width:6px;height:6px;background:var(--gold);border-radius:50%}
.vcard__specs{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:0;border-top:1px solid var(--hair);padding-top:20px}
.viv3 .reveal:nth-child(2){transition-delay:.12s}.viv3 .reveal:nth-child(3){transition-delay:.24s}
.vcard__specs .s .n{font-size:clamp(1.1rem,.9rem+.6vw,1.5rem);font-weight:300;display:block;line-height:1}.vcard__specs .s .u{font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;color:var(--greige);margin-top:.3rem;display:block}
.vcard__cta{margin-top:20px}

/* PLANOS */
.planos{background:var(--linen)}
.planos__grid{display:grid;grid-template-columns:1fr;gap:clamp(30px,4vw,56px);margin-top:clamp(30px,4vw,50px);align-items:start}
@media(min-width:940px){.planos__grid{grid-template-columns:1.35fr .65fr}}
.planos__fig{position:relative;background:var(--paper);border:1px solid var(--hair);padding:clamp(16px,2vw,28px);cursor:zoom-in}
.planos__fig img{width:100%;height:auto;display:block}
.planos__zoom{position:absolute;top:16px;right:16px;background:var(--navy);color:#fff;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;padding:.4em .8em;pointer-events:none}
.planos__info .letter{font-size:clamp(2.4rem,5vw,4rem);font-weight:300;color:var(--navy);letter-spacing:-.02em}
.planos__info h3{font-size:var(--step-h3,1.6rem);font-weight:400;margin-top:.4rem}
.planos__sum{margin-top:1.4rem;display:flex;flex-direction:column;gap:12px;border-top:1px solid var(--hair);padding-top:1.4rem}
.planos__sum .row{display:flex;justify-content:space-between;gap:16px;font-size:.95rem}.planos__sum .row .k{color:var(--greige)}
.terraza{margin-top:1.6rem;background:var(--navy);color:#fff;padding:20px 22px}
.terraza .k{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-2)}
.terraza .n{font-size:1.7rem;font-weight:300;margin-top:6px}.terraza p{font-size:.9rem;color:#cdd4e2;margin-top:8px;max-width:36ch}
/* lightbox */
.lb{position:fixed;inset:0;z-index:90;background:rgba(16,14,10,.93);display:flex;align-items:center;justify-content:center;padding:4vh 4vw;cursor:zoom-out;opacity:0;visibility:hidden;transition:opacity .35s var(--ease),visibility .35s}
.lb.open{opacity:1;visibility:visible}
.lb img{max-width:100%;max-height:92vh;box-shadow:0 20px 80px rgba(0,0,0,.5);transform:scale(.96);transition:transform .4s var(--ease)}
.lb.open img{transform:none}
.lb__close{position:absolute;top:24px;right:28px;color:#fff;font-size:.82rem;letter-spacing:.18em;text-transform:uppercase}

/* CALIDADES */
.cal{background:var(--paper)}
.cal__top{display:grid;grid-template-columns:1fr;gap:clamp(30px,4vw,56px);margin-top:clamp(30px,4vw,50px)}
@media(min-width:820px){.cal__top{grid-template-columns:1fr 1fr}}
.calblock h3{font-size:1.3rem;font-weight:500}
.calblock .eyebrow{color:var(--gold)}
.calblock ul{list-style:none;padding:0;margin-top:16px}
.calblock li{display:flex;gap:14px;padding:14px 0;border-bottom:1px solid var(--hair)}
.calblock li .d{width:6px;height:6px;border-radius:50%;background:var(--gold);margin-top:9px;flex:none}
.calblock li b{font-weight:600}.calblock li span{color:var(--ink-2);font-size:.92rem}
.cal__data{display:grid;grid-template-columns:1fr;gap:2px;margin-top:clamp(40px,5vw,64px);border-top:1px solid var(--hair);border-bottom:1px solid var(--hair)}
@media(min-width:720px){.cal__data{grid-template-columns:repeat(3,1fr)}}
.cal__data .d{padding:clamp(26px,3vw,40px) clamp(6px,2vw,20px)}
@media(min-width:720px){.cal__data .d+.d{border-left:1px solid var(--hair)}}
.cal__data .big{font-size:clamp(2.6rem,5vw,4.4rem);font-weight:300;color:var(--navy);line-height:.9;letter-spacing:-.03em}
.cal__data .lab{margin-top:12px;font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:var(--greige);font-weight:600}
.cal__mat{margin-top:clamp(46px,6vw,80px)}
.matcard{opacity:0;transform:translateY(22px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.matgrid.in .matcard{opacity:1;transform:none}
.matgrid.in .matcard:nth-child(2){transition-delay:.07s}.matgrid.in .matcard:nth-child(3){transition-delay:.14s}.matgrid.in .matcard:nth-child(4){transition-delay:.21s}.matgrid.in .matcard:nth-child(5){transition-delay:.28s}.matgrid.in .matcard:nth-child(6){transition-delay:.35s}
.matgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:2px;margin-top:24px}
@media(min-width:680px){.matgrid{grid-template-columns:repeat(3,1fr)}}
@media(min-width:1040px){.matgrid{grid-template-columns:repeat(6,1fr)}}
.matcard{position:relative;background:var(--sand)}
.matcard .im{aspect-ratio:1;overflow:hidden}.matcard .im img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease)}.matcard:hover .im img{transform:scale(1.07)}
.matcard .t{padding:14px}.matcard .t .br{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}.matcard .t .nm{font-size:.9rem;margin-top:4px}
.matcard .t .ap{max-height:0;opacity:0;overflow:hidden;font-size:.78rem;color:var(--ink-2);transition:max-height .4s var(--ease),opacity .4s,margin-top .4s}
.matcard:hover .t .ap{max-height:2.4em;opacity:1;margin-top:6px}

/* PERSONALIZACIÓN */
.pers{background:var(--linen)}
.pers__sel{margin-top:clamp(30px,4vw,46px);padding:clamp(20px,3vw,30px);background:var(--paper);border:1px solid var(--hair);display:flex;flex-wrap:wrap;gap:22px 40px;align-items:center;justify-content:space-between}
.pers__sel .lab{font-size:.74rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--navy)}
.tabs{display:flex;flex-wrap:wrap;gap:6px}.tabs button{padding:.6em 1.15em;border:1px solid var(--hair);color:var(--ink-2);font-weight:600;font-size:.9rem;transition:all .3s}
.tabs button[aria-selected="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.cards{display:grid;grid-template-columns:1fr;gap:22px;margin-top:clamp(26px,3.5vw,40px)}
@media(min-width:680px){.cards{grid-template-columns:1fr 1fr}}@media(min-width:1060px){.cards{grid-template-columns:repeat(3,1fr)}}
.pcard{background:var(--paper);border:1px solid var(--hair);display:flex;flex-direction:column;overflow:hidden}
.pcard__img{aspect-ratio:16/10;overflow:hidden;position:relative}.pcard__img img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}.pcard:hover .pcard__img img{transform:scale(1.05)}
.pcard__schema{aspect-ratio:16/10;background:linear-gradient(135deg,#1B2A4A,#243657);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;position:relative;overflow:hidden}
.pcard__schema::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,rgba(255,255,255,.05) 0 1px,transparent 1px 26px),repeating-linear-gradient(0deg,rgba(255,255,255,.05) 0 1px,transparent 1px 26px);opacity:.5}
.pcard__schema svg{width:56px;height:56px;stroke:var(--gold-2);fill:none;stroke-width:1.4;position:relative}
.pcard__schema .fig{font-size:1.05rem;font-weight:600;letter-spacing:.02em;position:relative}
.pcard__schema::after{content:"Esquema técnico";position:absolute;bottom:12px;font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.55)}
.pcard__for{position:absolute;top:12px;left:12px;background:var(--navy);color:#fff;font-size:.68rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:.35em .7em;z-index:2}
.pcard__b{padding:22px;display:flex;flex-direction:column;gap:8px;flex:1}.pcard__b h4{font-size:1.08rem;font-weight:500}.pcard__b p{font-size:.88rem;color:var(--ink-2);line-height:1.5}
.pcard__pr{margin-top:auto;padding-top:14px;border-top:1px solid var(--hair);display:flex;align-items:baseline;justify-content:space-between}
.pcard__pr .amt{font-size:1.2rem;font-weight:600;color:var(--navy)}.pcard__pr .lbl{font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--greige)}
.note{margin-top:22px;font-size:.8rem;color:var(--greige)}

/* CONTACTO */
.contacto{background:var(--paper);padding-block:clamp(58px,8vw,108px)}
.contacto__grid{display:grid;grid-template-columns:1fr;gap:clamp(32px,4vw,60px);align-items:start}@media(min-width:920px){.contacto__grid{grid-template-columns:.82fr 1.18fr}}
.contacto h2{font-size:clamp(1.9rem,1.4rem+2vw,3rem)}.contacto .lead{color:var(--ink-2);margin-top:.9rem;max-width:38ch}
.cinfo{margin-top:1.7rem;display:flex;flex-direction:column;gap:15px}.cinfo .row{display:flex;flex-direction:column;gap:2px}
.cinfo .row .k{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--greige)}.cinfo .row .v{font-size:1.05rem}.cinfo .row .v.pend{color:var(--greige);font-style:italic;font-size:.95rem}
.form{background:var(--paper-2);border:1px solid var(--hair);padding:clamp(24px,3.5vw,44px)}
.form .grid2{display:grid;grid-template-columns:1fr;gap:18px}@media(min-width:560px){.form .grid2{grid-template-columns:1fr 1fr}}
.field{display:flex;flex-direction:column;gap:7px}.field label{font-size:.78rem;font-weight:600;color:var(--ink-2)}
.field input,.field select,.field textarea{font:inherit;font-size:.98rem;padding:.85em .95em;border:1px solid var(--hair);background:var(--paper);color:var(--ink);transition:border-color .25s,box-shadow .25s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(27,42,74,.08)}
.field input::placeholder,.field textarea::placeholder{color:var(--greige)}.field textarea{min-height:112px;resize:vertical}
.form .full{margin-top:18px}.check{display:flex;gap:10px;align-items:flex-start;margin-top:18px;font-size:.84rem;color:var(--ink-2)}.check input{margin-top:3px}
.form__actions{margin-top:22px;display:flex;flex-wrap:wrap;gap:14px}.form__msg{margin-top:16px;font-size:.88rem;color:var(--navy);display:none}

/* EQUIPO */
.equipo{background:var(--paper);border-top:1px solid var(--hair)}
.equipo__grid{display:grid;grid-template-columns:1fr}@media(min-width:760px){.equipo__grid{grid-template-columns:repeat(3,1fr)}}
.eq{padding:clamp(22px,2.3vw,34px) clamp(20px,3vw,44px);border-top:1px solid var(--hair);text-align:center}@media(min-width:760px){.eq{border-top:0;border-left:1px solid var(--hair)}.eq:first-child{border-left:0}}
.eq .k{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--greige)}
.eq .nm{margin-top:clamp(16px,1.8vw,24px);height:104px;display:flex;align-items:center;justify-content:center}
.eq .nm img{width:auto;display:block;max-width:100%}
.eq__logo--castiller{height:90px}
.eq__logo--tez{height:46px}
.eq__logo--gestiona{height:40px}
.eq p{margin-top:clamp(14px,1.5vw,20px);font-size:.9rem;color:var(--ink-2);line-height:1.55;max-width:32ch;margin-inline:auto}
@media(max-width:759px){.eq .nm{height:92px}.eq__logo--castiller{height:78px}.eq__logo--tez{height:42px}.eq__logo--gestiona{height:36px}}

/* FOOTER */
.foot{background:var(--navy);color:#9aa2b5;padding-block:clamp(34px,4.4vw,50px);text-align:center}
.foot__in{display:flex;flex-direction:column;align-items:center;gap:clamp(10px,1.2vw,15px);max-width:720px;margin-inline:auto}
.foot__logo{height:clamp(50px,5.4vw,62px);width:auto;display:block}
.foot__tag{font-size:.76rem;letter-spacing:.2em;text-transform:uppercase;color:#8b93a6}
.foot__legal{font-size:.78rem;color:#6f7893}
.foot__roles,.foot__made{font-size:.82rem;color:#8b93a6;line-height:1.6}
/* La línea de roles se mantiene SIEMPRE en una sola línea: se encoge con el viewport en móvil (cap en .82rem en escritorio/tablet). */
.foot__roles{white-space:nowrap;max-width:none;font-size:min(.82rem,2.42vw)}
/* En móvil, esta línea (y solo esta) rompe el gutter y usa casi todo el ancho del viewport, centrada, para ganar tamaño de fuente sin partirse ni desbordar. */
@media(max-width:600px){.foot__roles{width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);padding-inline:7px;box-sizing:border-box}}
.foot__made .heart{color:#e5484d;font-style:normal}
.foot a{color:#cdd4e2;text-decoration:none;transition:color .25s var(--ease)}
.foot a:hover{color:#fff}
.foot__made a{font-weight:600}
.foot__links{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 12px;font-size:.78rem;margin-top:2px}
.foot__links .sep{color:#3a496a}
.foot__pending{color:#6f7893;cursor:default}

@media(prefers-reduced-motion:reduce){.hero__media img,.vscene__img,.concepto__visual img,.vcard__img img{transform:none}.rl>span{transform:none}.discover .dl::after{animation:none}}

/* ===== Integración WordPress (toggles server-side) ===== */
.planos__block{display:none}
.planos__block.is-active{display:block}
.pcat{display:none}
.pcat.is-active{display:grid}

/* ===== Fase 4: honeypot, mensajes de formulario, placeholder ===== */
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.form__msg.is-ok{color:var(--navy)}
.form__msg.is-err{color:#9a2b2b}
.pic-empty{display:block;width:100%;height:100%;background:var(--sand)}
