/* LuxForm · sitio público (v4)
   Una sola familia (Switzer), fondo blanco, tinta casi negra y grises neutros.
   El único color del sitio es el punto dorado del logotipo.
   v4 agrega movimiento: portada a pantalla completa, revelado de imágenes y títulos,
   paralaje, sección fijada de casas y transición entre páginas. Todo se apaga con prefers-reduced-motion. */
@font-face{font-family:"Switzer";src:url("/fonts/switzer.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
:root{
  --bg:#fff;
  --ink:#151513;
  --mute:#6d6c67;
  --faint:#9c9b95;
  --line:#e2e1dc;
  --tint:#f4f3f0;
  --err:#a3341c;
  --sans:"Switzer","Helvetica Neue",Helvetica,Arial,sans-serif;
  --gutter:clamp(18px,3.4vw,48px);
  --maxw:1560px;
  --gap:clamp(12px,1.4vw,20px);
  --sec:clamp(56px,7.5vw,116px);
  --hdh:64px;
  --e:cubic-bezier(.22,1,.36,1);
  --io:cubic-bezier(.76,0,.24,1);
  color-scheme:light;
}
*,*:before,*:after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--hdh) + 70px)}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-weight:400;font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0;padding:0}
h1,h2,h3,h4,p,ul,ol,dl,dd,figure,blockquote{margin:0;padding:0}
ul,ol{list-style:none}
::selection{background:var(--ink);color:#fff}
:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.skip{position:absolute;left:12px;top:-60px;z-index:200;background:var(--ink);color:#fff;padding:10px 14px;font-size:14px}
.skip:focus{top:12px}
[hidden]{display:none!important}

.wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:max(var(--gutter),env(safe-area-inset-left,0px)) max(var(--gutter),env(safe-area-inset-right,0px))}
.sec{padding-block:var(--sec)}
.sec.top0{padding-top:0}
.sec.sm{padding-block:clamp(40px,5vw,72px)}
.tint{background:var(--tint)}
.rule{border-top:1px solid var(--line)}

/* ---------- Tipografía ---------- */
.h1{font-weight:400;font-size:clamp(34px,5vw,84px);line-height:1;letter-spacing:-.035em;text-wrap:balance}
.h2{font-weight:400;font-size:clamp(26px,3vw,46px);line-height:1.08;letter-spacing:-.028em;text-wrap:balance}
.h3{font-weight:500;font-size:16px;line-height:1.35}
.lede{font-size:clamp(16px,1.25vw,18px);line-height:1.5;max-width:56ch;text-wrap:pretty}
.txt{max-width:60ch;color:var(--mute);text-wrap:pretty}
.small{font-size:13px;line-height:1.5;color:var(--mute)}
.label{font-size:13px;line-height:1.4;color:var(--mute)}
.label a:hover{color:var(--ink)}
.count{font-size:13px;color:var(--mute);font-variant-numeric:tabular-nums}
.mute{color:var(--mute)}

/* ---------- Botones y enlaces ---------- */
.btn{position:relative;isolation:isolate;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 26px;border:1px solid var(--ink);font-size:14px;font-weight:500;white-space:nowrap;transition:color .35s var(--e),border-color .35s}
.btn:before{content:"";position:absolute;inset:-1px;z-index:-1;background:var(--ink);transform:translateY(102%);transition:transform .55s var(--e)}
.btn:hover{color:#fff}
.btn:hover:before{transform:none}
.btn:active{transform:translateY(1px)}
.btn.solid{background:var(--ink);color:#fff}
.btn.solid:before{background:#fff}
.btn.solid:hover{color:var(--ink)}
.btn[disabled]{opacity:.5;pointer-events:none}
.tlink{display:inline-block;font-size:14px;font-weight:500;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;transition:color .15s}
.tlink:hover{color:var(--mute)}
.cta{display:flex;flex-wrap:wrap;align-items:center;gap:12px 22px}

/* ---------- Cabecera ---------- */
.hd{position:sticky;top:0;z-index:60;background:var(--bg);border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top,0);transition:background-color .4s,border-color .4s,color .4s}
.hd .logo img{transition:filter .4s}
html:not(.open) .hd.over:not(.solid):not(:hover):not(:focus-within){background:transparent;border-color:transparent;color:#fff}
html:not(.open) .hd.over:not(.solid):not(:hover):not(:focus-within) .logo img{filter:brightness(0) invert(1)}
html:not(.open) .hd.over:not(.solid):not(:hover):not(:focus-within) [data-sel-n]{color:inherit}
.hd-in{display:flex;align-items:center;gap:clamp(18px,2.6vw,44px);height:var(--hdh)}
.logo{display:block;flex:0 0 auto;width:clamp(132px,11.5vw,172px)}
.logo img{width:100%}
.hd-nav{display:flex;align-self:stretch;gap:clamp(14px,1.9vw,30px);margin-right:auto}
.mi{display:flex;align-items:center}
.mi-a{font-size:14px;white-space:nowrap;padding-block:6px;border-bottom:1px solid transparent;transition:border-color .15s}
.mi:hover .mi-a,.mi-a.on{border-color:var(--ink)}
.mega{position:absolute;left:0;right:0;top:100%;background:var(--bg);border-top:1px solid var(--line);border-bottom:1px solid var(--line);opacity:0;visibility:hidden;transition:opacity .15s,visibility 0s .15s}
.mi:hover .mega,.mi:focus-within .mega{opacity:1;visibility:visible;transition:opacity .15s .06s,visibility 0s .06s}
.mega-in{display:flex;gap:clamp(40px,6vw,96px);padding-block:30px 38px;opacity:0;transform:translateY(-10px);transition:opacity .3s,transform .5s var(--e)}
.mi:hover .mega-in,.mi:focus-within .mega-in{opacity:1;transform:none;transition-delay:.08s}
.mg-col h4{font-weight:400;font-size:13px;color:var(--mute);margin-bottom:12px;min-height:18px}
.mg-col li{margin-bottom:6px}
.mg-col a{font-size:15px}
.mg-col a:hover{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}
.mg-all{margin-left:auto;align-self:flex-end}
.hd-r{display:flex;align-items:center;gap:clamp(14px,1.8vw,26px)}
.hd-t{font-size:14px;white-space:nowrap;min-height:44px;display:inline-flex;align-items:center;gap:6px}
.hd-t:hover{color:var(--mute)}
[data-sel-n]{font-weight:400;font-variant-numeric:tabular-nums;color:var(--mute)}
[data-sel-n]:before{content:"("}
[data-sel-n]:after{content:")"}
.burger{display:none;width:44px;height:44px;position:relative;margin-left:-12px;flex:0 0 auto}
.burger span{position:absolute;left:12px;right:12px;height:1px;background:currentColor;transition:transform .2s,top .2s}
.burger span:nth-child(1){top:18px}
.burger span:nth-child(2){top:26px}
.open .burger span:nth-child(1){top:22px;transform:rotate(45deg)}
.open .burger span:nth-child(2){top:22px;transform:rotate(-45deg)}
.drawer{position:fixed;inset:0;z-index:55;background:var(--bg);visibility:hidden;opacity:0;transition:opacity .2s,visibility 0s .2s;overflow-y:auto;-webkit-overflow-scrolling:touch}
.open .drawer{visibility:visible;opacity:1;transition:opacity .2s}
.drawer-in{padding:calc(var(--hdh) + 12px + env(safe-area-inset-top,0px)) max(var(--gutter),env(safe-area-inset-right,0px)) calc(36px + env(safe-area-inset-bottom,0px)) max(var(--gutter),env(safe-area-inset-left,0px))}
.drawer details{border-bottom:1px solid var(--line)}
.drawer summary{list-style:none;display:flex;justify-content:space-between;align-items:center;padding:15px 0;font-size:20px;letter-spacing:-.01em;cursor:pointer}
.drawer summary::-webkit-details-marker{display:none}
.drawer summary:after{content:"+";font-size:20px;font-weight:300;color:var(--mute)}
.drawer details[open] summary:after{content:"−"}
.drawer ul{padding:0 0 16px}
.drawer li a{display:block;padding:8px 0;font-size:15px;color:var(--mute)}
.drawer li:first-child a{color:var(--ink)}
.drawer-foot{display:grid;gap:12px;margin-top:28px;justify-items:start;font-size:15px}

/* ---------- Búsqueda y aviso ---------- */
.search{position:fixed;inset:0;z-index:80;background:var(--bg);visibility:hidden;opacity:0;transition:opacity .15s,visibility 0s .15s;overflow-y:auto}
.search.on{visibility:visible;opacity:1;transition:opacity .15s}
.search-in{padding-block:calc(10px + env(safe-area-inset-top,0)) 80px}
.search-bar{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:center;border-bottom:1px solid var(--ink)}
.search-bar input{border:0;background:none;font-size:clamp(20px,2.2vw,28px);letter-spacing:-.01em;padding:12px 0;width:100%;outline:0;border-radius:0;-webkit-appearance:none;appearance:none}
.search-bar input::placeholder{color:var(--faint)}
.search-bar input::-webkit-search-cancel-button{display:none}
.search-bar button{font-size:14px;min-height:44px}
.search-hint{display:flex;flex-wrap:wrap;gap:8px 22px;align-items:baseline;margin-top:22px;font-size:15px}
.search-hint span{font-size:13px;color:var(--mute)}
.search-hint a{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}
.search-res{margin-top:30px}
.search-res .count{margin-bottom:18px}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0));z-index:90;transform:translate(-50%,12px);opacity:0;pointer-events:none;background:var(--ink);color:#fff;padding:13px 18px;font-size:14px;display:flex;gap:20px;align-items:center;max-width:calc(100vw - 32px);transition:opacity .2s,transform .2s}
.toast.on{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.toast a{text-decoration:underline;text-underline-offset:4px;white-space:nowrap}

/* ---------- Ruta y encabezado de página ---------- */
.crumbs{display:flex;flex-wrap:wrap;gap:4px 8px;font-size:13px;color:var(--mute)}
.crumbs i{font-style:normal;color:var(--faint)}
.crumbs a:hover{color:var(--ink)}
.ph{padding-block:clamp(20px,2.2vw,30px) clamp(30px,3.6vw,52px)}
.ph-in{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);row-gap:18px;align-items:start;margin-top:clamp(30px,4.6vw,72px)}
.ph-in .h1{grid-column:1/span 7}
.ph-side{grid-column:9/span 4;display:grid;gap:18px;justify-items:start;padding-top:.7em}
.lead-img{aspect-ratio:2/1;max-height:76svh;width:100%;overflow:hidden;background:var(--tint)}
.lead-img img{width:100%;height:100%;object-fit:cover}
.subnav{border-block:1px solid var(--line);position:sticky;top:calc(var(--hdh) + env(safe-area-inset-top,0px));z-index:20;background:var(--bg)}
.subnav .wrap{display:flex;gap:clamp(16px,2vw,28px);overflow-x:auto;scrollbar-width:none;height:48px;align-items:center}
.subnav .wrap::-webkit-scrollbar{display:none}
.subnav a{font-size:14px;white-space:nowrap;color:var(--mute);padding-block:4px;border-bottom:1px solid transparent}
.subnav a:hover,.subnav a.on{color:var(--ink)}
.subnav a.on{border-color:var(--ink)}

/* ---------- Encabezado de sección ---------- */
.sh{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);row-gap:12px;align-items:end;margin-bottom:clamp(24px,3vw,44px)}
.sh .h2{grid-column:1/span 5}
.sh > .txt,.sh > .lede{grid-column:7/span 4}
.sh > .tlink,.sh > .count{grid-column:11/span 2;justify-self:end}
.sh.solo .h2{grid-column:1/-1}
.grp{margin:clamp(40px,4.6vw,64px) 0 16px;padding-top:16px;border-top:1px solid var(--line)}
.grp:first-child{margin-top:0}

/* ---------- Portada ---------- */
.hero{position:relative;height:100svh;min-height:520px;margin-top:calc(-1*var(--hdh) - env(safe-area-inset-top,0px) - 1px);overflow:hidden;background:#1b1a18;color:#fff}
.hero-bg{position:absolute;inset:0}
.hero .slide{position:absolute;inset:0;visibility:hidden}
.hero .slide.on{visibility:visible;z-index:1}
.hero .slide.enter{visibility:visible;z-index:2}
.hero .slide img{width:100%;height:100%;object-fit:cover}
.hero-sh{position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(180deg,rgba(12,11,10,.4) 0,rgba(12,11,10,0) 22%,rgba(12,11,10,0) 58%,rgba(12,11,10,.62) 100%)}
.hero-tx{position:absolute;left:0;right:0;bottom:0;z-index:4;display:grid;gap:clamp(16px,1.6vw,26px);padding-bottom:clamp(18px,2.2vw,30px)}
.hero-hd{display:flex;justify-content:space-between;align-items:flex-end;gap:20px 48px;flex-wrap:wrap}
.hero-h{font-weight:400;font-size:clamp(32px,3.9vw,68px);line-height:1;letter-spacing:-.035em}
.hero-sub{display:flex;align-items:baseline;gap:10px 34px;flex-wrap:wrap;font-size:clamp(14px,1.05vw,16px);line-height:1.35;padding-bottom:.35em}
.hero-sub p{opacity:.86;max-width:34ch}
.hero-go{display:inline-flex;align-items:center;gap:10px;min-height:32px;border-bottom:1px solid rgba(255,255,255,.6);transition:border-color .3s}
.hero-go svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.2;transition:transform .5s var(--e)}
.hero-go:hover{border-color:#fff}.hero-go:hover svg{transform:translateX(5px)}
.hero-ft{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid rgba(255,255,255,.34);padding-top:12px;font-size:13px}
.hero-ft .cap{display:flex;gap:.5em;min-height:32px;align-items:center}
.hero-ft .cap b{font-weight:500}
.hero-ft .cap span{opacity:.72}
.hero-ft .cap:hover b{text-decoration:underline;text-underline-offset:4px}
.hero-nav{display:flex;align-items:center;gap:18px}
.hero-n{font-variant-numeric:tabular-nums;opacity:.8}
.hero-n b{font-weight:400}
.dots{display:flex;gap:6px}
.dots button{width:46px;height:32px;position:relative}
.dots button:before,.dots button:after{content:"";position:absolute;left:0;right:0;top:15px;height:2px;background:rgba(255,255,255,.3)}
.dots button:after{background:#fff;transform:scaleX(0);transform-origin:0 50%}
.dots button.on:after{transform:none}
.opening{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);row-gap:clamp(28px,3.4vw,52px);align-items:start;padding-block:clamp(32px,4vw,60px) clamp(72px,10vw,170px)}
/* Banda de piezas: las fotos de estudio pasan sobre un fondo del mismo gris, sin texto */
.parade{background:#d4d0c8;overflow:hidden;padding-block:clamp(22px,3.4vw,56px);display:grid;gap:clamp(2px,.6vw,10px)}
.pr-row{overflow-x:auto;scrollbar-width:none}
.pr-row::-webkit-scrollbar{display:none}
.pr-track{display:flex;width:max-content}
.pr-i{flex:0 0 auto;display:block;width:clamp(250px,30vw,540px);aspect-ratio:4/3;margin-inline:clamp(-44px,-2.3vw,-14px)}
.pr-row.sm .pr-i{width:clamp(180px,20vw,360px);margin-inline:clamp(-28px,-1.5vw,-9px)}
.pr-i img{width:100%;height:100%;object-fit:cover;-webkit-mask-image:radial-gradient(ellipse 53% 56% at 50% 52%,#000 70%,transparent 100%);mask-image:radial-gradient(ellipse 53% 56% at 50% 52%,#000 70%,transparent 100%);transition:transform .9s var(--e)}
@media (hover:hover){.pr-i:hover{position:relative;z-index:1}.pr-i:hover img{transform:scale(1.07)}}
.pr-i:focus-visible{outline:2px solid var(--ink);outline-offset:-10px}
html.js .parade.run .pr-row{overflow:hidden}
html.js .parade.run .pr-track{will-change:transform}
.opening .side{grid-column:1/-1;display:grid;gap:24px;justify-items:start}

.index{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);row-gap:28px;align-items:start}
.index-list{grid-column:1/span 5;border-top:1px solid var(--line)}
.index-list a{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:clamp(9px,.9vw,14px) 0;border-bottom:1px solid var(--line);font-size:clamp(20px,2vw,30px);letter-spacing:-.022em;transition:padding .5s var(--e),opacity .3s}
.index-list a span{font-size:13px;letter-spacing:0;color:var(--mute);font-variant-numeric:tabular-nums}
.index-list a:hover{padding-left:14px}
@media (hover:hover){.index-list:hover a:not(:hover){opacity:.38}}
.index-img{grid-column:7/span 6;aspect-ratio:5/4;overflow:hidden;background:var(--tint);display:block;position:relative;position:sticky;top:calc(var(--hdh) + 24px)}
.index-img img{width:100%;height:100%;object-fit:cover}
.index-img img.lay{position:absolute;inset:0;clip-path:inset(100% 0 0 0);transition:clip-path .8s var(--io)}
.index-img img.lay.on{clip-path:inset(0)}

.mix{display:grid;grid-template-columns:6fr 3fr 3fr;gap:var(--gap);align-items:end}
.pair{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,4vw,64px) var(--gap)}
.cols3{display:grid;grid-template-columns:repeat(3,1fr);gap:28px var(--gap);border-top:1px solid var(--line);padding-top:22px}
.cols3 > a{display:grid;gap:6px;align-content:start}
.cols3 p{color:var(--mute);max-width:36ch}
.cols3 > a:hover .h3{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}

.rail{display:flex;gap:var(--gap);overflow-x:auto;scroll-snap-type:x mandatory;padding-inline:max(var(--gutter),env(safe-area-inset-left,0px),calc((100vw - var(--maxw))/2 + var(--gutter))) max(var(--gutter),env(safe-area-inset-right,0px),calc((100vw - var(--maxw))/2 + var(--gutter)));scroll-padding-inline:max(var(--gutter),env(safe-area-inset-left,0px),calc((100vw - var(--maxw))/2 + var(--gutter)));scrollbar-width:none;-webkit-overflow-scrolling:touch}
.rail::-webkit-scrollbar{display:none}
.rail.drag{cursor:grabbing;scroll-snap-type:none}
.rail.drag a{pointer-events:none}
.fam{flex:0 0 clamp(250px,30vw,470px);scroll-snap-align:start;-webkit-user-drag:none;user-select:none}
.hpin{margin-bottom:var(--sec)}
.fam img{-webkit-user-drag:none;pointer-events:none}
.arrows{display:flex;gap:6px;justify-self:end;grid-column:11/span 2}
.arrows button{width:42px;height:42px;border:1px solid var(--line);display:grid;place-items:center;transition:border-color .15s}
.arrows button:hover{border-color:var(--ink)}
.arrows button[disabled]{opacity:.35;pointer-events:none}
.arrows svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.2}

/* ---------- Losetas ---------- */
.g2,.g3,.g4{display:grid;gap:clamp(28px,3.2vw,48px) var(--gap)}
.g2{grid-template-columns:repeat(2,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
.tl{display:block}
.tl-img{overflow:hidden;background:var(--tint);aspect-ratio:4/3}
.tl.r45 .tl-img{aspect-ratio:4/5}
.tl.r11 .tl-img{aspect-ratio:1}
.tl.r1610 .tl-img{aspect-ratio:16/10}
.tl.r32 .tl-img{aspect-ratio:3/2}
.tl-img img{width:100%;height:100%;object-fit:cover}
:is(.tl-img,.sc-img,.pc-img,.ci,.pd-amb > div) img{transition:transform 1.3s var(--e)}
@media (hover:hover){a.tl:hover .tl-img img,.sc:hover .sc-img img,.pc a:hover .pc-img img,.cat:hover .ci img,.pd-amb:hover img{transform:scale(1.045)}}
.tl-tx{padding-top:10px;display:grid;gap:1px}
.tl-tx b{font-weight:500;font-size:15px}
.tl-tx span{font-size:13px;color:var(--mute)}
.pair .tl-tx{padding-top:16px;gap:8px;justify-items:start}
.pair .tl-tx b{font-weight:400;font-size:clamp(26px,3vw,46px);letter-spacing:-.028em;line-height:1.08}
.pair .tl-tx span{font-size:15px;max-width:48ch}

.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(24px,2.6vw,40px) var(--gap)}
.pc{position:relative}
.pc-img{background:#dfddd7;aspect-ratio:4/3;overflow:hidden}
.pc-img img{width:100%;height:100%;object-fit:cover}
.pc-tx{display:grid;gap:1px;padding-top:9px}
.pc-tx b{font-weight:500;font-size:14px}
.pc-tx span{font-size:13px;color:var(--mute);display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.fav{position:absolute;right:8px;top:8px;width:36px;height:36px;display:grid;place-items:center;background:rgba(255,255,255,.82);transition:background-color .15s,color .15s}
.fav svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.3;grid-area:1/1}
.fav .ck{display:none}
.fav:hover{background:#fff}
.fav.on{background:var(--ink);color:#fff}
.fav.on .pl{display:none}
.fav.on .ck{display:block}
.pc.amb .pc-img{aspect-ratio:16/10}
.amb-grid{grid-template-columns:repeat(3,1fr)}
.filt{display:flex;flex-wrap:wrap;gap:6px 20px;margin-bottom:clamp(20px,2.4vw,32px)}
.filt button{min-height:36px;font-size:14px;color:var(--mute);border-bottom:1px solid transparent}
.filt button i{font-style:normal;font-size:12px;color:var(--faint);font-variant-numeric:tabular-nums;margin-left:3px}
.filt button:hover{color:var(--ink)}
.filt button.on{color:var(--ink);border-color:var(--ink)}
.sc{display:block}
.sc-img{overflow:hidden;background:var(--tint);aspect-ratio:16/10}
.sc-img img{width:100%;height:100%;object-fit:cover}
.sc-tx{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding-top:10px}
.sc-tx b{font-weight:500;font-size:15px}
.sc-tx span{font-size:13px;color:var(--mute);text-align:right}

/* ---------- Bloques ---------- */
.feat-img{display:block;aspect-ratio:2/1;max-height:80svh;width:100%;overflow:hidden;background:var(--tint)}
.feat-img img{width:100%;height:100%;object-fit:cover}
.feat-tx{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);row-gap:12px;align-items:start;padding-top:18px}
.feat-tx .h2{grid-column:1/span 5}
.feat-tx .side{grid-column:6/span 6;display:grid;gap:14px;justify-items:start}
.split{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);row-gap:28px;align-items:start}
.split > .tx{grid-column:1/span 5}
.split > .im{grid-column:7/span 6}
.split.rev > .tx{grid-column:8/span 5;grid-row:1}
.split.rev > .im{grid-column:1/span 6;grid-row:1}
.split .im{overflow:hidden;background:var(--tint);aspect-ratio:5/4}
.split .im.free{aspect-ratio:auto;background:none;display:grid;gap:var(--gap)}
.split .im img{width:100%;height:100%;object-fit:cover}
.split .tx > .lede,.split .tx > .txt{margin-top:14px}
.rows{margin-top:24px;border-top:1px solid var(--line)}
.row{display:grid;grid-template-columns:minmax(120px,4fr) 8fr;gap:6px 20px;padding:13px 0;border-bottom:1px solid var(--line)}
.row dt{font-weight:500}
.row dd{color:var(--mute)}
.rows + p{margin-top:24px}
.facts{display:grid;grid-template-columns:repeat(4,1fr);gap:0 var(--gap);border-top:1px solid var(--line)}
.fact{display:flex;flex-direction:column-reverse;justify-content:flex-end;padding:14px 0 18px;border-bottom:1px solid var(--line)}
.fact dd{font-size:clamp(26px,3vw,46px);letter-spacing:-.03em;line-height:1.1;font-variant-numeric:tabular-nums}
.fact dt{font-size:13px;color:var(--mute);margin-top:4px;max-width:26ch}
.pasos{display:grid;grid-template-columns:repeat(3,1fr);gap:0 var(--gap);counter-reset:p;border-top:1px solid var(--line)}
.pasos li{counter-increment:p;display:grid;grid-template-columns:28px 1fr;gap:2px 0;padding:16px 16px 20px 0;border-bottom:1px solid var(--line)}
.pasos li:before{content:counter(p);font-size:13px;color:var(--mute);font-variant-numeric:tabular-nums;padding-top:2px;grid-row:1/span 2}
.pasos h3{font-weight:500;font-size:15px}
.pasos p{color:var(--mute);grid-column:2}
.qlist{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(28px,4vw,64px);border-top:1px solid var(--line)}
.qlist > div{padding:18px 0 22px;border-bottom:1px solid var(--line)}
.qlist dt{font-weight:500;margin-bottom:6px}
.qlist dd{color:var(--mute);max-width:58ch}
.qa{border-top:1px solid var(--line);margin-top:28px}
.qa details{border-bottom:1px solid var(--line)}
.qa summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:13px 0;font-size:14px;font-weight:500}
.qa summary::-webkit-details-marker{display:none}
.qa summary:after{content:"+";font-weight:300;font-size:18px;line-height:1;color:var(--mute)}
.qa details[open] summary:after{content:"−"}
.qa .ans{padding:0 28px 16px 0;font-size:14px;color:var(--mute)}
.plist{border-top:1px solid var(--line)}
.prow{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);row-gap:4px;align-items:baseline;padding:16px 0;border-bottom:1px solid var(--line)}
.prow b{grid-column:1/span 4;font-weight:400;font-size:clamp(18px,1.5vw,21px);letter-spacing:-.012em}
.prow .pl{grid-column:5/span 2;font-size:13px;color:var(--mute)}
.prow p{grid-column:7/span 4;color:var(--mute)}
.prow .st{grid-column:11/span 2;justify-self:end;font-size:13px;white-space:nowrap}
.checks{columns:4;column-gap:var(--gap);border-top:1px solid var(--line);padding-top:16px;font-size:clamp(17px,1.4vw,20px);letter-spacing:-.01em}
.checks li{padding:4px 0;break-inside:avoid}
.names{font-size:clamp(17px,1.4vw,20px);letter-spacing:-.01em;line-height:1.6;max-width:70ch;margin-top:12px}
.names span{color:var(--faint);margin-inline:.4em}
.gal{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(28px,3.2vw,48px) var(--gap);counter-reset:g}
.gf{counter-increment:g;position:relative}
.gf figcaption:before{content:"(" counter(g) ")";position:absolute;right:0;font-size:12px;color:var(--faint);font-variant-numeric:tabular-nums}
.gf > div{overflow:hidden;background:var(--tint);aspect-ratio:3/2}
.gf img{width:100%;height:100%;object-fit:cover}
.gf figcaption{margin-top:10px;font-size:13px;color:var(--mute);display:grid;gap:1px}
.gf figcaption b{font-weight:500;font-size:15px;color:var(--ink)}
.sws{display:grid;grid-template-columns:repeat(4,1fr);gap:28px var(--gap)}
.sw img{width:100%;aspect-ratio:1;object-fit:cover;background:var(--tint)}
.sw figcaption{display:grid;gap:2px;padding-top:10px}
.sw b{font-weight:500}
.sw span{font-size:13px;color:var(--mute);max-width:32ch}
.sws + .facts{margin-top:clamp(40px,5vw,72px)}
.tbl{overflow-x:auto}
.tbl table{width:100%;border-collapse:collapse;min-width:700px}
.tbl th,.tbl td{text-align:left;padding:13px 16px 13px 0;border-bottom:1px solid var(--line);font-weight:400;vertical-align:top}
.tbl thead th{font-size:13px;color:var(--mute);border-bottom-color:var(--ink)}
.tbl thead .us,.tbl td.us{color:var(--ink);font-weight:500}
.tbl tbody th{width:38%}
.tbl td{color:var(--mute)}
.duo2{display:grid;grid-template-columns:1fr 1fr;gap:32px clamp(28px,4vw,64px)}
.duo2 > div{border-top:1px solid var(--ink);padding-top:16px;display:grid;gap:10px;align-content:start;justify-items:start}
.duo2 .txt{margin-bottom:6px}
.pn{display:grid;grid-template-columns:1fr 1fr;border-block:1px solid var(--line)}
.pn a{display:grid;gap:2px;padding:20px var(--gutter)}
.pn a:hover b{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}
.pn a + a{border-left:1px solid var(--line);text-align:right}
.pn span{font-size:13px;color:var(--mute)}
.pn b{font-weight:400;font-size:clamp(18px,1.5vw,21px);letter-spacing:-.012em}
.cierre{border-top:1px solid var(--line);padding-block:clamp(56px,8vw,130px)}
.cierre .wrap{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);row-gap:16px;align-items:start}
.cierre .h2{grid-column:1/span 7;font-size:clamp(32px,5vw,84px);line-height:1;letter-spacing:-.04em}
.cierre .side{grid-column:9/span 4;display:grid;gap:20px;justify-items:start;padding-top:.8em}

/* ---------- Casa, ambiente ---------- */
.casa-pics{display:grid;grid-template-columns:7fr 5fr;gap:var(--gap);align-items:start}
.casa-pics figure{overflow:hidden;aspect-ratio:4/5;background:var(--tint)}
.casa-pics figure:first-child{aspect-ratio:7/6.2}
.casa-pics img{width:100%;height:100%;object-fit:cover}
.amb-img{margin-top:clamp(14px,1.6vw,22px);background:var(--tint);max-height:82svh;overflow:hidden;aspect-ratio:16/9;width:100%}
.amb-img img{width:100%;height:100%;object-fit:cover}

/* ---------- Pieza ---------- */
.pd{padding-block:clamp(20px,2.2vw,30px) clamp(48px,6vw,88px)}
.pd-in{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);row-gap:28px;align-items:start;margin-top:clamp(16px,1.8vw,24px)}
.pd-gal{grid-column:1/span 8;display:grid;gap:var(--gap)}
.pd-main{background:#dfddd7;aspect-ratio:4/3;overflow:hidden}
.pd-main.wide{aspect-ratio:16/10;background:var(--tint)}
.pd-main img,.pd-amb img{width:100%;height:100%;object-fit:cover}
.pd-fig figcaption,.pd-amb span{display:block;font-size:13px;color:var(--mute);padding-top:8px}
.pd-amb{display:block}
.pd-amb > div{aspect-ratio:16/10;overflow:hidden;background:var(--tint)}
.pd-amb:hover span,.pd-fig figcaption a:hover{color:var(--ink)}
.pd-info{grid-column:9/span 4;position:sticky;top:calc(var(--hdh) + 24px);padding-left:clamp(0px,1.4vw,24px)}
.pd-info .h1{font-size:clamp(26px,2.6vw,40px);line-height:1.05;letter-spacing:-.025em;margin-top:6px}
.ref{margin-top:6px;font-size:13px;color:var(--mute)}
.spec{margin-top:20px;padding-top:14px;border-top:1px solid var(--line);display:grid;grid-template-columns:96px 1fr;gap:12px}
.spec h3{font-weight:400;font-size:13px;color:var(--mute);padding-top:1px}
.spec li{font-size:14px;line-height:1.55;font-variant-numeric:tabular-nums}
.pd-cta{display:grid;gap:12px;margin-top:26px;justify-items:start}
.pd-cta .btn{width:100%}
.addsel .b{display:none}
.addsel.on{background:var(--bg);color:var(--ink)}
.addsel.on:before{background:var(--ink)}
.addsel.on:hover{color:#fff}
.addsel.on .a{display:none}
.addsel.on .b{display:inline}
.pd-info > .small{margin-top:14px}

/* ---------- Formularios ---------- */
.request{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);row-gap:32px;align-items:start}
.request .info{grid-column:1/span 4;position:sticky;top:calc(var(--hdh) + 24px);display:grid;gap:16px}
.request .info ul{display:grid;gap:8px;color:var(--mute)}
.request .info ul li{padding-left:16px;position:relative}
.request .info ul li:before{content:"–";position:absolute;left:0;color:var(--faint)}
.request form.lead{grid-column:6/span 7}
.cats + .request{margin-top:clamp(48px,6vw,88px)}
form.lead{display:grid;grid-template-columns:1fr 1fr;gap:20px var(--gap)}
.f{display:grid;align-content:start}
.f.w{grid-column:1/-1}
.f label,.f legend{font-size:13px;color:var(--mute);padding:0;margin-bottom:6px}
.f label em{font-style:normal;color:var(--faint)}
.f input,.f select,.f textarea{width:100%;background:var(--bg);border:1px solid #c9c8c2;border-radius:0;padding:11px 12px;font-size:16px;line-height:1.35;transition:border-color .15s;-webkit-appearance:none;appearance:none}
.f textarea{resize:vertical;min-height:96px}
.f select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%23151513' stroke-width='1.2'%3E%3Cpath d='M1 1.5l5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:34px;cursor:pointer}
.f input::placeholder,.f textarea::placeholder{color:var(--faint)}
.f input:focus,.f select:focus,.f textarea:focus{outline:0;border-color:var(--ink)}
.f.bad input,.f.bad select{border-color:var(--err)}
.f .err{font-size:13px;color:var(--err);margin-top:5px}
.f .err:empty{display:none}
fieldset.f{border:0;margin:0;padding:0;min-width:0}
.chips{display:grid;grid-template-columns:1fr 1fr;gap:8px 20px}
.chips label,.consent{display:grid;grid-template-columns:18px 1fr;gap:10px;align-items:start;cursor:pointer;margin:0;font-size:14px;color:var(--ink)}
.chips input,.consent input{width:18px;height:18px;margin:1px 0 0;padding:0;border:1px solid #9c9b95;border-radius:0;background:var(--bg);display:grid;place-items:center;cursor:pointer;-webkit-appearance:none;appearance:none}
.chips input:checked,.consent input:checked{background:var(--ink);border-color:var(--ink)}
.chips input:checked:after,.consent input:checked:after{content:"";width:9px;height:5px;border-left:1.5px solid #fff;border-bottom:1.5px solid #fff;transform:rotate(-45deg) translate(1px,-1px)}
.consent{grid-column:1/-1;font-size:13px;color:var(--mute)}
.consent a{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.consent.bad{color:var(--err)}
.send{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px}
.send .msg{font-size:14px;color:var(--err);flex:1 1 240px}
.send .msg a{text-decoration:underline}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.done{grid-column:1/-1;display:grid;gap:12px;justify-items:start;padding-block:8px 24px}
.done:focus{outline:0}
.ct{padding-bottom:14px;border-bottom:1px solid var(--line)}
.ct h3{font-weight:400;font-size:13px;color:var(--mute);margin-bottom:2px}
.ct a,.ct p{font-size:clamp(18px,1.5vw,21px);letter-spacing:-.012em;line-height:1.35}
.ct a:hover{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}
.cats{display:grid;grid-template-columns:repeat(4,1fr);gap:28px var(--gap)}
.cat{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;text-align:left;width:100%}
.cat .ci{display:block;aspect-ratio:4/5;overflow:hidden;background:var(--tint);outline:1px solid transparent;outline-offset:-1px;transition:outline-color .15s}
.cat img{width:100%;height:100%;object-fit:cover}
.cat .cb{display:grid;grid-template-rows:auto 1fr auto;gap:2px;padding-top:10px;flex:1 1 auto;justify-items:start}
.cat b{font-weight:500}
.cat .d{font-size:13px;color:var(--mute);max-width:34ch;align-self:start}
.cat u{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px;font-size:13px;margin-top:6px}
.cat u .y,.cat.sel u .n{display:none}
.cat.sel u .y{display:inline}
.cat.sel .ci{outline:2px solid var(--ink);outline-offset:3px}

/* ---------- Selección ---------- */
.sel{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);row-gap:32px;align-items:start}
.sel-list{grid-column:1/span 7}
.sel-head{display:flex;justify-content:space-between;align-items:center;min-height:40px;border-bottom:1px solid var(--ink)}
.sel-item{display:grid;grid-template-columns:132px 1fr auto;gap:18px;align-items:center;padding:16px 0;border-bottom:1px solid var(--line)}
.sel-item .im{background:#dfddd7;aspect-ratio:4/3;overflow:hidden;display:block}
.sel-item .im img{width:100%;height:100%;object-fit:cover}
.sel-item b{font-weight:500;display:block}
.sel-item .m{font-size:13px;color:var(--mute);margin-top:2px}
.sel-item .rm{font-size:13px;color:var(--mute);margin-top:8px;text-decoration:underline;text-underline-offset:3px}
.sel-item .rm:hover{color:var(--ink)}
.qty{display:inline-grid;grid-template-columns:38px 34px 38px;align-items:center;border:1px solid var(--line);height:40px}
.qty button{height:100%;font-size:16px}
.qty button:hover{background:var(--tint)}
.qty output{text-align:center;font-size:14px;font-variant-numeric:tabular-nums}
.sel-empty{padding:clamp(32px,5vw,72px) 0;display:grid;gap:14px;justify-items:start}
.sel-form{grid-column:9/span 4;position:sticky;top:calc(var(--hdh) + 24px);border-top:1px solid var(--ink);padding-top:16px}
.sel-form form.lead{grid-template-columns:1fr;margin-top:20px}
.sel-form .f{grid-column:1/-1}
.sel-form .send .btn{width:100%}

/* ---------- Pie ---------- */
.foot{background:var(--tint);padding-block:clamp(44px,5vw,72px) 26px;font-size:14px}
.foot-top{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);row-gap:32px;padding-bottom:clamp(40px,5vw,72px)}
.foot .brand{grid-column:1/span 4;display:grid;gap:14px;align-content:start;justify-items:start}
.foot .brand img{width:150px}
.foot .brand p{color:var(--mute);max-width:32ch}
.foot .fc{grid-column:span 2}
.foot h4{font-weight:400;font-size:13px;color:var(--mute);margin-bottom:10px}
.foot li{margin-bottom:5px}
.foot li a:hover{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}
.foot-bot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px 40px;padding-top:18px;border-top:1px solid var(--line);font-size:12.5px;color:var(--mute)}
.foot-bot p{max-width:86ch}
.foot-bot a{text-decoration:underline;text-underline-offset:3px}

/* ---------- Legal ---------- */
.legal article{max-width:680px}
.legal h1{font-weight:400;font-size:clamp(28px,3vw,40px);letter-spacing:-.02em;line-height:1.1;margin:clamp(30px,4.6vw,64px) 0 28px}
.legal h2{font-weight:500;font-size:16px;margin:30px 0 8px}
.legal p,.legal li{color:#3d3c39}
.legal p + p{margin-top:12px}
.legal article ul{list-style:disc;padding-left:20px;display:grid;gap:4px;margin-top:8px}
.legal article a{text-decoration:underline;text-underline-offset:3px}

/* ---------- Movimiento (v4) ---------- */
.curtain{display:none}
.cur{display:none}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}
.lenis.lenis-stopped{overflow:hidden}
@media (prefers-reduced-motion:no-preference){
  @view-transition{navigation:auto}
  ::view-transition-old(root){animation:vtOut .3s ease both}
  ::view-transition-new(root){animation:vtIn .55s var(--e) both}
  @keyframes vtOut{to{opacity:0}}
  @keyframes vtIn{from{opacity:0;transform:translateY(14px)}}

  /* Cortina de entrada (solo la primera visita a la portada en la sesión) */
  html.intro .curtain{display:grid;place-items:center;position:fixed;inset:0;z-index:300;background:#fff;animation:introOut .95s var(--io) 1.2s both}
  .curtain > div{overflow:hidden;width:min(52vw,320px);padding-block:6px}
  .curtain img{width:100%;animation:introLogo 1s var(--e) .12s both}
  @keyframes introLogo{from{transform:translateY(130%)}}
  @keyframes introOut{to{transform:translateY(-100%);visibility:hidden}}

  /* Portada */
  .hero .slide.enter{animation:wipe 1.25s var(--io) both}
  .hero .slide.on img,.hero .slide.enter img{animation:settle 8s cubic-bezier(.16,.6,.2,1) both}
  html.intro .hero .slide.on img{animation-delay:1.1s}
  @keyframes wipe{from{clip-path:inset(0 0 0 100%)}to{clip-path:inset(0)}}
  @keyframes settle{from{transform:scale(1.16)}to{transform:none}}
  .dots button.on:after{animation:fill 7s linear both}
  @keyframes fill{from{transform:scaleX(0)}to{transform:none}}
  html.js :is(.hero-ft,.hero-sub){opacity:0;transform:translateY(14px);transition:opacity .9s .7s,transform 1.1s var(--e) .7s}
  html.js .hero.rdy :is(.hero-ft,.hero-sub){opacity:1;transform:none}
  html.js .hero-sub{transition-delay:.45s}
  html.intro :is(.hero-ft,.hero-sub){transition-delay:2s}
  html.intro .hero-h .w > span{transition-delay:calc(1.45s + var(--l,0)*90ms)}

  /* Títulos: cada línea sube desde su máscara */
  html.js main :is(.h1,.h2,.hero-h):not(.sp){opacity:0}
  .sp .w{display:inline-block;overflow:hidden;vertical-align:top;padding:.08em .04em .16em;margin:-.08em -.04em -.16em}
  .sp .w > span{display:inline-block;transform:translateY(118%);transition:transform 1.05s var(--e) calc(var(--l,0)*90ms)}
  .sp.in .w > span{transform:none}

  /* Imágenes: se descubren de abajo hacia arriba mientras la foto se asienta.
     El recorte va en la <img> y no en su caja: una caja recortada no cuenta como visible para IntersectionObserver. */
  html.js main :is(.tl-img,.sc-img,.pc-img,.feat-img,.lead-img,.split > .im:not(.free),.gf > div,.index-img,.casa-pics figure,.amb-img,.pd-main,.pd-amb > div,.sw,.ci) img{transition:clip-path 1.25s var(--io) var(--d,0ms),transform 1.7s var(--e) var(--d,0ms)}
  html.js main :is(.tl-img,.sc-img,.pc-img,.feat-img,.lead-img,.split > .im:not(.free),.gf > div,.index-img,.casa-pics figure,.amb-img,.pd-main,.pd-amb > div,.sw,.ci):not(.in) img{clip-path:inset(100% 0 0 0)}
  html.js main :is(.tl-img,.sc-img,.pc-img,.gf > div,.casa-pics figure,.pd-main,.ci):not(.in) img{transform:scale(1.22)}
  html.js main :is(.tl-img,.sc-img,.pc-img,.pd-main,.pd-amb > div,.ci).in img{transition:transform 1.3s var(--e)}

  /* Texto de apoyo */
  html.js main :is(.ph-side,.sh > .txt,.sh > .tlink,.sh > .count,.feat-tx .side,.split > .tx > :not(.h2),.cierre .side,.fact,.pasos li,.qlist > div,.cols3 > a,.prow,.duo2 > div,.opening .side,.tl-tx,.sc-tx,.gf figcaption,.crumbs){opacity:0;transform:translateY(22px);transition:opacity .9s var(--d,0ms),transform 1.1s var(--e) var(--d,0ms)}
  html.js main :is(.ph-side,.sh > .txt,.sh > .tlink,.sh > .count,.feat-tx .side,.split > .tx > :not(.h2),.cierre .side,.fact,.pasos li,.qlist > div,.cols3 > a,.prow,.duo2 > div,.opening .side,.tl-tx,.sc-tx,.gf figcaption,.crumbs).in{opacity:1;transform:none}

  /* Declaración: las palabras se encienden con el scroll */

  /* Paralaje y barra de avance (solo donde el navegador lo anima con el scroll) */
  @supports (animation-timeline:view()){
    main :is(.feat-img,.lead-img,.amb-img,.split > .im:not(.free),.index-img) img{animation:par linear both;animation-timeline:view();animation-range:entry 0% exit 100%}
    @keyframes par{from{transform:scale(1.18) translateY(-6.5%)}to{transform:scale(1.18) translateY(6.5%)}}
    .hero-bg{animation:heroPar linear both;animation-timeline:scroll(root);animation-range:0 100svh}
    .hero-tx{animation:heroTx linear both;animation-timeline:scroll(root);animation-range:0 80svh}
    @keyframes heroPar{to{transform:translateY(24%)}}
    @keyframes heroTx{to{transform:translateY(-12%);opacity:0}}
    .hd:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:currentColor;transform-origin:0 50%;animation:prog linear both;animation-timeline:scroll(root)}
    @keyframes prog{from{transform:scaleX(0)}to{transform:none}}
  }
}

/* Casas: la fila avanza en horizontal mientras la página baja */
@media (min-width:901px) and (hover:hover) and (prefers-reduced-motion:no-preference){
  html.js .hpin{height:calc(100svh + var(--hx,0px))}
  html.js .hpin-st{position:sticky;top:0;height:100svh;display:flex;flex-direction:column;justify-content:center;padding-top:var(--hdh);overflow:hidden}
  html.js .hpin .rail{overflow:visible;scroll-snap-type:none;will-change:transform}
  html.js .hpin .fam{flex-basis:clamp(380px,46vw,760px)}
  html.js .hpin .arrows{display:none}
}

/* Cursor sobre fotografías */
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  html.js .cur{display:block;position:fixed;left:0;top:0;z-index:120;pointer-events:none;will-change:transform}
  .cur span{display:grid;place-items:center;width:84px;height:84px;margin:-42px 0 0 -42px;border-radius:50%;background:#fff;color:var(--ink);font-size:13px;font-weight:500;transform:scale(0);transition:transform .5s var(--e)}
  .cur.on span{transform:none}
}

/* ---------- Adaptación ---------- */
@media (max-width:1180px){
  .hd-nav,.hd-r .cat-l{display:none}
  .burger{display:block}
  .hd-in{gap:8px}
  .hd-r{margin-left:auto}
  .grid{grid-template-columns:repeat(3,1fr)}
  .pasos{grid-template-columns:repeat(2,1fr)}
  .checks{columns:3}
  .prow b{grid-column:1/span 6}
  .prow .pl{grid-column:7/span 6;justify-self:end}
  .prow p{grid-column:1/span 9}
  .prow .st{grid-column:10/span 3}
  .pd-gal{grid-column:1/span 7}
  .pd-info{grid-column:8/span 5}
}
@media (max-width:900px){
  :root{--hdh:56px}
  .ph-in .h1,.ph-side,.opening .side,.sh .h2,.sh > .txt,.sh > .lede,.feat-tx .h2,.feat-tx .side,.cierre .h2,.cierre .side,
  .index-list,.index-img,.split > .tx,.split > .im,.split.rev > .tx,.split.rev > .im,.pd-gal,.pd-info,.request .info,.request form.lead,.sel-list,.sel-form,.foot .brand{grid-column:1/-1;grid-row:auto}
  .sh > .tlink,.sh > .count,.arrows{grid-column:1/-1;justify-self:start}
  .ph-in{margin-top:22px}
  .pd-info,.request .info,.sel-form{position:static;padding-left:0}
  .index-img{order:-1}
  .split.rev > .im{order:-1}
  .lead-img,.feat-img{aspect-ratio:4/3}
  .hero{height:92svh}
  .index-img{position:relative;top:0}
  .hero-ft .cap span{display:none}
  .dots button{width:30px}
  .mix{grid-template-columns:1fr 1fr}
  .mix > :first-child{grid-column:1/-1}
  .pair,.g2,.gal,.qlist,.duo2,.cols3{grid-template-columns:1fr}
  .g3,.g4,.grid,.sws,.cats{grid-template-columns:repeat(2,1fr)}
  .amb-grid{grid-template-columns:1fr}
  .facts{grid-template-columns:repeat(2,1fr)}
  .pasos{grid-template-columns:1fr}
  .checks{columns:2}
  .foot .fc{grid-column:span 6}
  .sel-item{grid-template-columns:92px 1fr;gap:14px}
  .sel-item .qty{grid-column:2;justify-self:start}
  .amb-img{aspect-ratio:4/3}
  .fam{flex-basis:74vw}
  .sc-tx{flex-direction:column;gap:1px}
  .sc-tx span{text-align:left}
  .row{grid-template-columns:1fr}
  .prow b,.prow .pl,.prow p,.prow .st{grid-column:1/-1;justify-self:start}
  .casa-pics{grid-template-columns:1fr 1fr}
  .casa-pics figure,.casa-pics figure:first-child{aspect-ratio:4/5}
}
@media (max-width:560px){
  form.lead,.chips{grid-template-columns:1fr}
  .f{grid-column:1/-1}
  .cta .btn,.send .btn{width:100%}
  .hd-t.bus span{display:none}
  .filt{flex-wrap:nowrap;overflow-x:auto;margin-inline:calc(var(--gutter)*-1);padding-inline:var(--gutter);scrollbar-width:none}
  .filt::-webkit-scrollbar{display:none}
  .filt button{flex:0 0 auto}
  .toast{left:12px;right:12px;transform:translateY(12px);max-width:none;justify-content:space-between}
  .toast.on{transform:none}
  .pn a{padding-inline:var(--gutter)}
}
/* ---------- Ajustes para iPhone y iPad (v5) ---------- */
/* iPad horizontal y iPad Pro vertical: cuatro piezas por fila, como en escritorio */
@media (min-width:901px) and (max-width:1180px){
  .grid{grid-template-columns:repeat(4,1fr)}
  .amb-grid{grid-template-columns:repeat(3,1fr)}
}
/* iPad vertical: se recuperan las columnas del escritorio en lugar de heredar el diseño de teléfono */
@media (min-width:700px) and (max-width:900px){
  .ph-in .h1{grid-column:1/span 7}
  .ph-side{grid-column:8/span 5}
  .sh .h2{grid-column:1/span 5}
  .sh > .txt,.sh > .lede{grid-column:6/span 5}
  .sh > .tlink,.sh > .count,.arrows{grid-column:11/span 2;justify-self:end}
  .feat-tx .h2{grid-column:1/span 5}
  .feat-tx .side{grid-column:6/span 7}
  .cierre .h2{grid-column:1/span 7}
  .cierre .side{grid-column:8/span 5}
  .index-list{grid-column:1/span 5}
  .index-img{grid-column:6/span 7;order:0;position:sticky;top:calc(var(--hdh) + 24px)}
  .split > .tx{grid-column:1/span 6}
  .split > .im{grid-column:7/span 6}
  .split.rev > .tx{grid-column:7/span 6;grid-row:1}
  .split.rev > .im{grid-column:1/span 6;grid-row:1;order:0}
  .pd-gal{grid-column:1/span 7}
  .pd-info{grid-column:8/span 5;position:sticky;top:calc(var(--hdh) + 24px);padding-left:clamp(0px,1.4vw,24px)}
  .sel-list{grid-column:1/span 7}
  .sel-form{grid-column:8/span 5;position:sticky;top:calc(var(--hdh) + 24px)}
  .request .info{grid-column:1/span 4;position:sticky;top:calc(var(--hdh) + 24px)}
  .request form.lead{grid-column:5/span 8}
  .lead-img,.feat-img,.amb-img{aspect-ratio:16/9}
  .mix{grid-template-columns:6fr 3fr 3fr}
  .mix > :first-child{grid-column:auto}
  .pair,.g2,.gal,.qlist,.duo2,.pasos{grid-template-columns:1fr 1fr}
  .cols3,.g3,.grid{grid-template-columns:repeat(3,1fr)}
  .g4,.sws,.cats{grid-template-columns:repeat(4,1fr)}
  .amb-grid{grid-template-columns:1fr 1fr}
  .grid.mas > :nth-child(n+4){display:none}
  .checks{columns:3}
  .foot .brand{grid-column:1/-1}
  .foot .fc{grid-column:span 3}
  .fam{flex-basis:44vw}
  .sc-tx{flex-direction:row;gap:16px}
  .sc-tx span{text-align:right}
}
/* Teléfono: rejillas de dos columnas sin huérfanos y con filas parejas */
@media (max-width:699px){
  :is(.g3,.g4) > :last-child:nth-child(odd){grid-column:1/-1}
  :is(.g3,.g4) > :last-child:nth-child(odd) .tl-img{aspect-ratio:16/9}
  .grid:not(.amb-grid) .pc-tx{align-content:start;min-height:calc(9px + 14px*1.55*2 + 1px + 13px*1.55)}
  /* Ficha: primero la foto, luego nombre, medidas y botón; el resto de las fotos va después */
  .pd-in{row-gap:20px}
  .pd-gal{display:contents}
  .pd-gal > *{grid-column:1/-1}
  .pd-gal > :first-child{order:-2}
  .pd-info{order:-1}
}
@media (max-width:560px){
  .cta,.ph-side > .btn,.drawer-foot .btn{width:100%}
  .cierre .side,.ph-side,.sel-empty{justify-items:stretch}
  .cierre .side > *,.ph-side > *,.sel-empty > *{justify-self:start}
  .cierre .side > .cta,.ph-side > .cta,.ph-side > .btn,.sel-empty > .cta{justify-self:stretch}
}
/* Pantallas táctiles: todo lo que se toca mide al menos 44 px */
@media (pointer:coarse){
  .logo{padding-block:15px}
  :is(.tlink,.hero-go,.crumbs a,.label a,.foot-bot a,.ct a,.search-hint a,.sel-item .rm,.subnav a,.small a,.pd-fig figcaption a){position:relative}
  :is(.tlink,.hero-go,.crumbs a,.label a,.foot-bot a,.ct a,.search-hint a,.sel-item .rm,.subnav a,.small a,.pd-fig figcaption a):after{content:"";position:absolute;inset:-12px -6px}
  .foot li{margin-bottom:0;padding-block:11px}
  .foot li a{display:inline-block;margin-block:-11px;padding-block:11px}
  .drawer li a{padding:11px 0}
  .drawer-foot{gap:0}
  .drawer-foot .btn{margin-bottom:10px}
  .drawer-foot a:not(.btn){display:inline-flex;align-items:center;gap:6px;min-height:44px}
  .hero-ft .cap{min-height:44px}
  .dots button{height:44px}
  .dots button:before,.dots button:after{top:21px}
  .arrows button{width:44px;height:44px}
  .filt button{min-height:44px}
  .fav{width:44px;height:44px;right:6px;top:6px}
  .qty{grid-template-columns:44px 34px 44px;height:44px}
  .chips{row-gap:0}
  .chips label,.consent{min-height:44px;align-content:center}
  .search-bar button{padding-inline:10px;margin-right:-10px}
}
@media (prefers-reduced-motion:reduce){
  *,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}
}
