/* =========================================================
   ENTRE PEDRAS DO SALNÉS — sistema de diseño
   Piedra + antracita + naranja corporativo #FF6E00
   ========================================================= */

/* ---------- 1. Tokens ---------- */
:root{
  --negro:#0B0B0C;
  --antracita:#141517;
  --grafito:#1D1F22;
  --grafito-2:#2A2D31;
  --naranja:#FF6E00;
  --naranja-h:#FF8526;
  --piedra:#B4ADA1;
  --piedra-2:#7E786E;
  --piedra-clara:#E9E5DD;
  --piedra-papel:#F4F2ED;
  --blanco:#F6F5F3;

  --ff-display:"Archivo Variable","Archivo",system-ui,sans-serif;
  --ff-body:"IBM Plex Sans",system-ui,-apple-system,sans-serif;
  --ff-mono:"IBM Plex Mono",ui-monospace,monospace;

  --wrap:1360px;
  --gut:clamp(20px,5vw,64px);
  --band:clamp(72px,10vw,148px);

  --ease:cubic-bezier(.22,.61,.36,1);
  --hairline:rgba(246,245,243,.14);
  --hairline-dark:rgba(11,11,12,.14);
}

/* ---------- 2. Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;background:var(--negro);color:var(--blanco);
  font-family:var(--ff-body);font-size:clamp(16px,1.05vw,17.5px);
  line-height:1.62;font-weight:400;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img,video{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
:focus-visible{outline:2px solid var(--naranja);outline-offset:3px}
::selection{background:var(--naranja);color:#000}

.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut)}
.wrap--wide{max-width:1660px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:absolute;left:-9999px;top:0;z-index:200;background:var(--naranja);color:#000;padding:12px 20px;font-family:var(--ff-mono);font-size:13px}
.skip:focus{left:12px;top:12px}

/* ---------- 3. Tipografía ---------- */
.display,h1,h2,h3,h4{
  font-family:var(--ff-display);font-weight:800;
  font-stretch:112%;line-height:.94;letter-spacing:-.02em;
  margin:0;text-wrap:balance;
}
h1{font-size:clamp(2.6rem,7.4vw,6.6rem)}
h2{font-size:clamp(2rem,4.6vw,4.1rem)}
h3{font-size:clamp(1.35rem,2.1vw,2.05rem);line-height:1.02}
h4{font-size:clamp(1.05rem,1.35vw,1.3rem);line-height:1.12;font-stretch:106%}
.upper{text-transform:uppercase}
p{margin:0 0 1.1em}
p:last-child{margin-bottom:0}
.lead{font-size:clamp(1.06rem,1.55vw,1.4rem);line-height:1.55;color:var(--piedra-clara);max-width:62ch}
.muted{color:var(--piedra)}
.tight{max-width:56ch}

/* Eyebrow: bloque naranja + etiqueta técnica */
.eyebrow{
  display:flex;align-items:center;gap:.7rem;
  font-family:var(--ff-mono);font-size:clamp(11px,.78vw,12.5px);
  letter-spacing:.2em;text-transform:uppercase;color:var(--naranja);
  margin:0 0 1.5rem;font-weight:500;
}
.eyebrow::before{content:"";width:22px;height:9px;background:var(--naranja);flex:none}
.eyebrow--dark{color:var(--negro)}
.eyebrow--dark::before{background:var(--negro)}
.eyebrow--stone{color:var(--piedra-2)}
.eyebrow--stone::before{background:var(--naranja)}

/* Regla de junta: hilada de sillares */
.course-rule{
  height:9px;width:100%;border-top:1px solid var(--hairline);
  background-image:repeating-linear-gradient(90deg,var(--hairline) 0 1px,transparent 1px 78px);
  opacity:.85;
}
.course-rule--dark{border-color:var(--hairline-dark);background-image:repeating-linear-gradient(90deg,var(--hairline-dark) 0 1px,transparent 1px 78px)}

/* ---------- 4. Botones ---------- */
.btn{
  display:inline-flex;align-items:center;gap:.75rem;
  font-family:var(--ff-mono);font-size:13px;font-weight:500;
  letter-spacing:.13em;text-transform:uppercase;
  padding:1.05rem 1.7rem;border:1px solid transparent;
  transition:background .35s var(--ease),color .35s var(--ease),border-color .35s var(--ease),transform .35s var(--ease);
  will-change:transform;
}
.btn .arw{transition:transform .35s var(--ease)}
.btn:hover .arw{transform:translateX(5px)}
.btn--primary{background:var(--naranja);color:#0B0B0C}
.btn--primary:hover{background:var(--naranja-h)}
.btn--ghost{border-color:rgba(246,245,243,.38);color:var(--blanco)}
.btn--ghost:hover{border-color:var(--blanco);background:rgba(246,245,243,.08)}
.btn--dark{border-color:rgba(11,11,12,.3);color:var(--negro)}
.btn--dark:hover{background:var(--negro);color:var(--blanco);border-color:var(--negro)}
.btn-row{display:flex;flex-wrap:wrap;gap:.85rem;margin-top:2.2rem}
@media(max-width:559px){
  .btn-row{flex-direction:column;align-items:stretch}
  .btn{justify-content:center}
}

.link-arrow{
  display:inline-flex;align-items:center;gap:.6rem;
  font-family:var(--ff-mono);font-size:13px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--naranja);padding-bottom:.35rem;border-bottom:1px solid rgba(255,110,0,.35);
  transition:border-color .3s var(--ease),gap .3s var(--ease);
}
.link-arrow:hover{border-color:var(--naranja);gap:.95rem}

/* ---------- 5. Header ---------- */
.site-header{
  position:fixed;inset:0 0 auto;z-index:100;
  transition:border-color .4s var(--ease);
  border-bottom:1px solid transparent;
}
/* El fondo difuminado va en un pseudoelemento a propósito: si backdrop-filter
   se aplica al propio <header>, éste pasa a ser el bloque contenedor de sus
   descendientes position:fixed y el menú móvil se recorta a la altura de la
   cabecera en cuanto la página tiene scroll. */
.site-header::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:rgba(11,11,12,.94);backdrop-filter:blur(14px);
  opacity:0;transition:opacity .4s var(--ease);
}
.site-header.is-solid::before{opacity:1}
.site-header.is-solid{border-bottom-color:var(--hairline)}
.header-in{display:flex;align-items:center;justify-content:space-between;gap:2rem;height:clamp(80px,7.6vw,108px)}
.brand{display:flex;align-items:center;flex:none;position:relative;z-index:2}
.brand img{height:clamp(40px,4.5vw,60px);width:auto}
.nav{display:flex;align-items:center;gap:clamp(1rem,2.1vw,2.3rem)}
.nav a{
  font-family:var(--ff-mono);font-size:12.5px;letter-spacing:.11em;text-transform:uppercase;
  color:var(--piedra-clara);padding:.4rem 0;position:relative;transition:color .3s var(--ease);
}
.nav a::after{
  content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--naranja);
  transition:width .35s var(--ease);
}
.nav a:hover{color:var(--blanco)}
.nav a:hover::after,.nav a[aria-current="page"]::after{width:100%}
.nav a[aria-current="page"]{color:var(--blanco)}
.nav .is-key{color:var(--blanco)}
.header-cta{display:none}
@media(min-width:1180px){.header-cta{display:inline-flex;padding:.85rem 1.4rem}}

.nav-toggle{display:flex;flex-direction:column;justify-content:center;gap:6px;width:46px;height:46px;align-items:flex-end}
.nav-toggle span{display:block;height:2px;width:26px;background:var(--blanco);transition:transform .35s var(--ease),opacity .25s}
.nav-toggle span:nth-child(2){width:18px}
body.nav-open .nav-toggle span:nth-child(1){transform:translateY(8px) rotate(45deg)}
body.nav-open .nav-toggle span:nth-child(2){opacity:0}
body.nav-open .nav-toggle span:nth-child(3){transform:translateY(-8px) rotate(-45deg);width:26px}
@media(min-width:1024px){.nav-toggle{display:none}}
@media(max-width:1023px){
  .nav{
    position:fixed;inset:0;background:var(--negro);flex-direction:column;justify-content:center;
    align-items:flex-start;gap:0;padding:0 var(--gut);
    clip-path:inset(0 0 100% 0);transition:clip-path .55s var(--ease);
  }
  body.nav-open .nav{clip-path:inset(0 0 0 0)}
  body.nav-open{overflow:hidden}
  .nav a{
    font-family:var(--ff-display);font-weight:800;font-stretch:110%;text-transform:uppercase;
    font-size:clamp(1.9rem,8vw,3rem);letter-spacing:-.01em;color:var(--blanco);
    padding:.34em 0;border-bottom:1px solid var(--hairline);width:100%;
  }
  .nav a::after{display:none}
  .nav a[aria-current="page"]{color:var(--naranja)}
}

/* ---------- 6. Hero ---------- */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;overflow:hidden;isolation:isolate}
.hero--inner{min-height:min(78svh,720px)}
.hero-media{position:absolute;inset:0;z-index:-2}
.hero-media>img{width:100%;height:100%;object-fit:cover;transform:scale(1.06);animation:heroZoom 14s var(--ease) forwards}
@keyframes heroZoom{to{transform:scale(1)}}

/* Carrusel del hero.
   La imagen saliente permanece opaca por debajo mientras la entrante aparece
   por encima: así el fundido no pasa por un punto en el que ambas son
   semitransparentes y el conjunto se oscurece. */
.hero-slide{
  position:absolute;inset:0;opacity:0;z-index:0;
  transition:opacity 2.8s linear;
  /* capa propia en GPU: evita que el navegador tenga que repintar
     la fotografía a pantalla completa en cada fotograma del fundido */
  will-change:opacity;transform:translateZ(0);backface-visibility:hidden;
}
.hero-slide.is-prev{opacity:1;z-index:1;transition:none}
.hero-slide.is-active{opacity:1;z-index:2}
.hero-slide img{
  width:100%;height:100%;object-fit:cover;transform:scale(1.07) translateZ(0);
  transition:transform 13s linear;
}
.hero-slide.is-active img{transform:scale(1) translateZ(0)}
.hero-dots{
  position:absolute;right:var(--gut);bottom:clamp(2.4rem,6vw,4.4rem);z-index:3;
  display:flex;gap:.5rem;align-items:center;
}
.hero-dots button{
  width:34px;height:3px;background:rgba(246,245,243,.28);position:relative;overflow:hidden;
  transition:background .3s var(--ease);
}
.hero-dots button:hover{background:rgba(246,245,243,.55)}
.hero-dots button[aria-current="true"]{background:rgba(246,245,243,.28)}
.hero-dots button[aria-current="true"]::after{
  content:"";position:absolute;inset:0;background:var(--naranja);transform-origin:left;
  animation:dotFill var(--slide-dur,6.5s) linear forwards;
}
@keyframes dotFill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(min-width:1024px){.hero-dots{right:calc(var(--gut) + 46px)}}
.hero-media::after{
  content:"";position:absolute;inset:0;z-index:5;
  background:
    linear-gradient(to top,rgba(11,11,12,.94) 0%,rgba(11,11,12,.66) 34%,rgba(11,11,12,.18) 64%,rgba(11,11,12,.55) 100%),
    linear-gradient(to right,rgba(11,11,12,.72) 0%,rgba(11,11,12,.12) 62%);
}
.hero-in{padding-block:0 clamp(2.4rem,6vw,4.4rem);padding-top:clamp(7rem,14vw,10rem);width:100%}
.hero h1{max-width:16ch}
.hero h1 .l1{
  display:block;font-size:clamp(1.05rem,2vw,1.9rem);font-weight:600;font-stretch:100%;
  letter-spacing:.01em;color:var(--piedra-clara);margin-bottom:.5rem;line-height:1.2;
}
.hero h1 .l2{display:block;text-transform:uppercase}
.hero .lead{margin-top:1.5rem;max-width:44ch}
.hero-tag{
  display:inline-flex;align-items:center;gap:.7rem;font-family:var(--ff-mono);
  font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--blanco);
  border:1px solid var(--hairline);padding:.5rem .9rem;margin-bottom:1.8rem;
  background:rgba(11,11,12,.35);backdrop-filter:blur(4px);
}
.hero-tag i{width:7px;height:7px;background:var(--naranja);display:block;font-style:normal}
.hero-foot{
  display:flex;flex-wrap:wrap;gap:1.4rem 2.6rem;align-items:baseline;
  margin-top:clamp(2.6rem,6vw,4.2rem);padding-top:1.4rem;border-top:1px solid var(--hairline);
}
.hero-foot span{font-family:var(--ff-mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--piedra)}
@media(max-width:559px){.hero-foot{gap:.85rem 1.6rem}.hero-foot span:last-child{display:none}}
.hero-foot b{color:var(--blanco);font-weight:500}
.scroll-hint{
  position:absolute;right:var(--gut);bottom:clamp(2.4rem,6vw,4.4rem);z-index:2;
  writing-mode:vertical-rl;font-family:var(--ff-mono);font-size:11px;letter-spacing:.24em;
  text-transform:uppercase;color:var(--piedra);display:none;align-items:center;gap:1rem;
}
.scroll-hint::after{content:"";width:1px;height:64px;background:linear-gradient(var(--naranja),transparent);animation:drop 2.6s var(--ease) infinite}
@keyframes drop{0%{transform:scaleY(.2);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
@media(min-width:1024px){.scroll-hint{display:flex}}

/* Hero interior de página */
.hero--inner .hero-in{padding-block:clamp(7rem,13vw,9rem) clamp(2.6rem,6vw,4rem)}
.hero--inner h1{font-size:clamp(2.3rem,6vw,5.2rem);text-transform:uppercase;max-width:18ch}

/* ---------- 7. Bandas ---------- */
.band{padding-block:var(--band);position:relative}
.band--tight{padding-block:clamp(56px,7vw,96px)}
.band--dark{background:var(--negro)}
.band--dark + .band--dark{padding-top:clamp(40px,5.5vw,84px)}
.feature + .band{padding-top:clamp(48px,6vw,96px)}
.band--graf{background:var(--antracita)}
.band--light{background:var(--piedra-papel);color:var(--negro)}
.band--light .lead{color:#33363a}
.band--light .muted{color:#5d6167}
.band--stone{background:var(--piedra-clara);color:var(--negro)}

/* ---------- 8. Bloque de posicionamiento ---------- */
.split{display:grid;gap:clamp(2.4rem,5vw,4.5rem);align-items:center}
.split--top{align-items:start}
@media(min-width:900px){
  .split{grid-template-columns:1fr 1.06fr}
  .split--reverse .split-media{order:2}
}
.split-media{position:relative;aspect-ratio:4/3;overflow:hidden}
.split-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.split-media--tall{aspect-ratio:3/4}
.media-note{
  position:absolute;left:0;bottom:0;background:var(--naranja);color:#0B0B0C;
  font-family:var(--ff-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  padding:.6rem .95rem;
}

/* ---------- 9. Cifras: hilada de bloques ---------- */
.stats{display:grid;grid-template-columns:repeat(2,1fr);border-top:1px solid var(--hairline)}
@media(min-width:860px){.stats{grid-template-columns:repeat(4,1fr)}}
.stat{
  padding:clamp(1.8rem,3.4vw,2.9rem) clamp(1rem,2vw,1.8rem);
  border-bottom:1px solid var(--hairline);border-right:1px solid var(--hairline);
  position:relative;background:var(--negro);
}
.stat:nth-child(2n){border-right:0}
@media(min-width:860px){
  .stat{border-right:1px solid var(--hairline)}
  .stat:nth-child(2n){border-right:1px solid var(--hairline)}
  .stat:last-child{border-right:0}
  .stat:nth-child(odd){transform:translateY(0)}
}
.stat b{
  display:flex;align-items:flex-end;min-height:clamp(2.6rem,5.4vw,4.4rem);
  font-family:var(--ff-display);font-weight:800;font-stretch:118%;
  font-size:clamp(2.9rem,6vw,4.9rem);line-height:.86;letter-spacing:-.03em;color:var(--blanco);
}
.stat .u{color:var(--naranja)}
.stat>span{
  display:block;margin-top:.85rem;font-family:var(--ff-mono);font-size:11.5px;
  letter-spacing:.16em;text-transform:uppercase;color:var(--piedra);
}
.stat b span{display:inline}
.stat--txt b{font-size:clamp(1.9rem,3.4vw,3.1rem);line-height:.98}

/* ---------- 10. Servicio principal ---------- */
.feature{position:relative;overflow:hidden;background:var(--antracita)}
.feature-media{position:relative;aspect-ratio:16/9;overflow:hidden}
.feature-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
@media(min-width:1024px){
  .feature-media{aspect-ratio:21/9}
}
.feature-body{padding-block:clamp(2.6rem,5vw,4rem)}
.feature-grid{display:grid;gap:clamp(1.6rem,3vw,3.4rem)}
@media(min-width:980px){.feature-grid{grid-template-columns:1.15fr 1fr;align-items:start}}
.tag-list{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.8rem;padding:0;list-style:none}
.tag-list li{
  font-family:var(--ff-mono);font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;
  border:1px solid var(--hairline);padding:.55rem .85rem;color:var(--piedra-clara);
}
.band--light .tag-list li{border-color:var(--hairline-dark);color:#3b3f45}

/* ---------- 11. Tarjetas de servicio ---------- */
.cards{display:grid;gap:clamp(1rem,1.6vw,1.5rem)}
@media(min-width:760px){.cards{grid-template-columns:repeat(3,1fr)}}
.card{position:relative;display:block;overflow:hidden;background:var(--grafito);isolation:isolate}
.card{aspect-ratio:4/5}
.card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--ease);filter:grayscale(.15)}
@media(min-width:760px){.card{aspect-ratio:3/4}}
.card:hover img{transform:scale(1.06)}
.card::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(11,11,12,.93) 8%,rgba(11,11,12,.28) 52%,rgba(11,11,12,.05) 100%);z-index:1}
.card-body{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:clamp(1.3rem,2.4vw,2rem)}
.card-body h3{text-transform:uppercase;font-size:clamp(1.15rem,1.7vw,1.55rem)}
.card-body p{margin:.7rem 0 0;font-size:.93rem;color:var(--piedra);max-width:34ch}
.card-body .go{
  display:inline-flex;align-items:center;gap:.5rem;margin-top:1.1rem;font-family:var(--ff-mono);
  font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--naranja);
}
.card::before{
  content:"";position:absolute;left:0;top:0;width:0;height:3px;background:var(--naranja);z-index:3;
  transition:width .5s var(--ease);
}
.card:hover::before{width:100%}

/* ---------- 12. Pilares (diferenciadores) ---------- */
.pillars{display:grid;gap:1px;background:var(--hairline);border-block:1px solid var(--hairline)}
@media(min-width:700px){.pillars{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1100px){.pillars{grid-template-columns:repeat(4,1fr)}}
.pillar{background:var(--negro);padding:0;position:relative;overflow:hidden}
.pillar-media{position:relative;overflow:hidden;aspect-ratio:5/4}
.pillar-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(.35) contrast(1.05);transition:transform 1s var(--ease),filter .7s var(--ease)}
.pillar:hover .pillar-media img{transform:scale(1.05);filter:grayscale(0) contrast(1.05)}
.pillar-num{
  position:absolute;top:0;left:0;z-index:2;background:var(--naranja);color:#0B0B0C;
  font-family:var(--ff-mono);font-size:12px;font-weight:600;letter-spacing:.1em;padding:.5rem .8rem;
}
.pillar-body{padding:clamp(1.4rem,2.2vw,1.9rem)}
.pillar-body h3{text-transform:uppercase;font-size:clamp(1.1rem,1.5vw,1.45rem)}
.pillar-body p{margin:.8rem 0 0;font-size:.94rem;color:var(--piedra)}

/* ---------- 13. Galería de trabajos (aparejo) ---------- */
.works{display:grid;gap:clamp(.75rem,1.3vw,1.15rem)}
@media(min-width:720px){.works{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1080px){
  /* Aparejo: hiladas de altura constante, anchos variables — como la traba de un muro */
  .works{grid-template-columns:repeat(12,1fr);grid-auto-rows:clamp(150px,14vw,215px);grid-auto-flow:row dense}
  .w-6{grid-column:span 6}.w-5{grid-column:span 5}.w-7{grid-column:span 7}
  .w-4{grid-column:span 4}.w-8{grid-column:span 8}.w-3{grid-column:span 3}
  .w-12{grid-column:span 12}
}
.work{position:relative;overflow:hidden;background:var(--grafito);display:block;cursor:pointer;width:100%;text-align:left;padding:0;border:0}
.work{aspect-ratio:4/3}
.work.r-tall{aspect-ratio:3/4}
.work.r-wide{aspect-ratio:16/9}
.work.r-pano{aspect-ratio:21/9}
.work img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.15s var(--ease),filter .6s var(--ease)}
.work:hover img{transform:scale(1.05)}
.work-meta{
  position:absolute;inset:auto 0 0 0;z-index:2;padding:clamp(1.1rem,2vw,1.7rem);
  background:linear-gradient(to top,rgba(11,11,12,.92),rgba(11,11,12,0));
  transform:translateY(12px);opacity:0;transition:transform .5s var(--ease),opacity .5s var(--ease);
}
.work:hover .work-meta,.work:focus-visible .work-meta{transform:none;opacity:1}
@media(hover:none){.work-meta{transform:none;opacity:1}}
.work-meta h3{font-size:clamp(1rem,1.35vw,1.3rem);text-transform:uppercase;color:var(--blanco)}
.work-meta span{
  display:block;margin-top:.45rem;font-family:var(--ff-mono);font-size:11px;
  letter-spacing:.16em;text-transform:uppercase;color:var(--naranja);
}
.filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:clamp(1.8rem,3vw,2.8rem)}
.filters button{
  font-family:var(--ff-mono);font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;
  padding:.7rem 1.1rem;border:1px solid var(--hairline);color:var(--piedra-clara);
  transition:all .3s var(--ease);
}
.filters button:hover{border-color:var(--blanco)}
.filters button[aria-pressed="true"]{background:var(--naranja);border-color:var(--naranja);color:#0B0B0C}
.work[hidden]{display:none}

/* ---------- 14. Clips verticales de obra ---------- */
.clips{display:grid;gap:clamp(1rem,2vw,1.6rem);align-items:center}
@media(min-width:900px){.clips{grid-template-columns:1fr 1.25fr}}
.clip-row{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(.6rem,1.2vw,1rem)}
.clip{position:relative;overflow:hidden;background:#000;margin:0;cursor:pointer}
.clip video{width:100%;height:auto;aspect-ratio:9/16;object-fit:cover;display:block}
.clip figcaption{
  position:absolute;left:0;bottom:0;right:0;padding:.9rem;z-index:2;
  font-family:var(--ff-mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--blanco);background:linear-gradient(to top,rgba(11,11,12,.9),transparent);
}
.clip::before{
  content:"";position:absolute;top:.7rem;left:.7rem;width:7px;height:7px;background:var(--naranja);
  z-index:3;border-radius:50%;animation:rec 2s infinite;
}
@keyframes rec{50%{opacity:.25}}

/* ---------- 15. Proceso ---------- */
.steps{display:grid;gap:1px;background:var(--hairline);border-top:1px solid var(--hairline)}
@media(min-width:760px){.steps{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1200px){.steps{grid-template-columns:repeat(4,1fr)}}
.step{background:var(--negro);padding:clamp(1.6rem,2.8vw,2.4rem)}
.band--light .steps{background:var(--hairline-dark);border-color:var(--hairline-dark)}
.band--light .step{background:var(--piedra-papel)}
.step .n{font-family:var(--ff-mono);font-size:12px;letter-spacing:.14em;color:var(--naranja);display:block;margin-bottom:1.2rem}
.step h3{font-size:clamp(1.05rem,1.4vw,1.35rem);text-transform:uppercase}
.step p{margin-top:.8rem;font-size:.94rem;color:var(--piedra)}
.band--light .step p{color:#5d6167}

/* ---------- 16. Lista técnica ---------- */
.tlist{list-style:none;margin:0;padding:0;border-top:1px solid var(--hairline)}
.band--light .tlist,.band--light .tlist li{border-color:var(--hairline-dark)}
.tlist li{
  display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:start;
  padding:1.15rem 0;border-bottom:1px solid var(--hairline);
}
.tlist .k{font-family:var(--ff-mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--naranja);padding-top:.35rem}
.tlist strong{display:block;font-family:var(--ff-display);font-weight:700;font-stretch:106%;font-size:1.08rem;text-transform:uppercase;letter-spacing:-.01em}
.tlist p{margin:.35rem 0 0;font-size:.95rem;color:var(--piedra)}
.band--light .tlist p{color:#5d6167}

/* ---------- 17. CTA ---------- */
.cta{position:relative;overflow:hidden;isolation:isolate}
.cta-bg{position:absolute;inset:0;z-index:-2}
.cta-bg img{width:100%;height:100%;object-fit:cover}
.cta-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,rgba(11,11,12,.96) 12%,rgba(11,11,12,.72) 58%,rgba(11,11,12,.5) 100%)}
.cta h2{text-transform:uppercase;max-width:16ch}

/* ---------- 18. Formulario ---------- */
.form-grid{display:grid;gap:1.1rem}
@media(min-width:700px){.form-grid{grid-template-columns:1fr 1fr}.f-full{grid-column:1/-1}}
.field label{
  display:block;font-family:var(--ff-mono);font-size:11px;letter-spacing:.15em;text-transform:uppercase;
  color:var(--piedra);margin-bottom:.55rem;
}
.field input,.field select,.field textarea{
  width:100%;background:transparent;border:1px solid var(--hairline);color:var(--blanco);
  padding:.95rem 1rem;font-family:var(--ff-body);font-size:1rem;transition:border-color .3s var(--ease);
}
.field textarea{min-height:150px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--naranja);outline:none}
.field select option{background:var(--antracita)}
.consent{display:flex;gap:.8rem;align-items:flex-start;font-size:.87rem;color:var(--piedra);margin-top:.4rem}
.consent input{width:18px;height:18px;flex:none;margin-top:3px;accent-color:var(--naranja)}
.form-note{font-family:var(--ff-mono);font-size:11px;letter-spacing:.1em;color:var(--piedra-2);text-transform:uppercase;margin-top:1.4rem}
.form-msg{margin-top:1.2rem;padding:1rem 1.2rem;border-left:3px solid var(--naranja);background:var(--grafito);font-size:.94rem}
.form-msg[hidden]{display:none}
.form-msg.is-error{border-left-color:#d64545}
.btn:disabled{opacity:.6;cursor:wait}

.contact-list{list-style:none;padding:0;margin:0}
.contact-list li{padding:1.15rem 0;border-bottom:1px solid var(--hairline)}
.contact-list .k{display:block;font-family:var(--ff-mono);font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:var(--naranja);margin-bottom:.4rem}
.contact-list a{border-bottom:1px solid transparent;transition:border-color .3s}
.contact-list a:hover{border-bottom-color:var(--naranja)}
.pending{font-family:var(--ff-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--piedra-2)}

/* ---------- 19. Footer ---------- */
.site-footer{background:var(--antracita);padding-block:clamp(3rem,6vw,5rem) 2rem;border-top:1px solid var(--hairline)}
.footer-grid{display:grid;gap:clamp(2rem,4vw,3rem)}
@media(min-width:820px){.footer-grid{grid-template-columns:1.4fr 1fr 1fr}}
.site-footer img.logo{height:clamp(44px,4vw,54px);width:auto;margin-bottom:1.4rem}
.fcol h4{font-family:var(--ff-mono);font-weight:500;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--naranja);margin-bottom:1.2rem;font-stretch:100%}
.fcol ul{list-style:none;margin:0;padding:0}
.fcol li{margin-bottom:.7rem}
.fcol a{color:var(--piedra);font-size:.94rem;transition:color .3s}
.fcol a:hover{color:var(--blanco)}
.footer-bottom{
  display:flex;flex-wrap:wrap;gap:1rem 2rem;justify-content:space-between;
  margin-top:clamp(2.4rem,4vw,3.4rem);padding-top:1.6rem;border-top:1px solid var(--hairline);
  font-family:var(--ff-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--piedra-2);
}
.footer-bottom a:hover{color:var(--blanco)}

/* ---------- 20. Lightbox ---------- */
.lb{position:fixed;inset:0;z-index:200;background:rgba(11,11,12,.985);backdrop-filter:blur(6px);display:none;place-items:center}
.lb.is-open{display:grid}
.lb img{max-width:min(94vw,1500px);max-height:84svh;object-fit:contain}
.lb-cap{
  position:absolute;left:var(--gut);bottom:clamp(1.4rem,4vw,2.6rem);max-width:46ch;
}
.lb-cap h3{font-size:1.25rem;text-transform:uppercase}
.lb-cap span{font-family:var(--ff-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--naranja)}
.lb-close,.lb-nav{position:absolute;z-index:2;width:56px;height:56px;display:grid;place-items:center;border:1px solid var(--hairline);transition:background .3s,border-color .3s}
.lb-close:hover,.lb-nav:hover{background:var(--naranja);border-color:var(--naranja);color:#000}
.lb-close{top:calc(var(--gut) / 1.4);right:var(--gut)}
.lb-prev{left:calc(var(--gut) / 1.6);top:50%;transform:translateY(-50%)}
.lb-next{right:calc(var(--gut) / 1.6);top:50%;transform:translateY(-50%)}
.lb-count{position:absolute;right:var(--gut);bottom:clamp(1.4rem,4vw,2.6rem);font-family:var(--ff-mono);font-size:12px;letter-spacing:.14em;color:var(--piedra)}
@media(max-width:700px){.lb-nav{width:46px;height:46px}.lb-cap{bottom:5rem}.lb-count{bottom:5rem}}

/* ---------- 21. Reveal ---------- */
.rv{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.rv.in{opacity:1;transform:none}
.rv-d1{transition-delay:.09s}.rv-d2{transition-delay:.18s}.rv-d3{transition-delay:.27s}.rv-d4{transition-delay:.36s}
.rv-mask{clip-path:inset(0 0 100% 0);transition:clip-path 1.15s var(--ease)}
.rv-mask.in{clip-path:inset(0 0 0 0)}
.par{will-change:transform}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .rv{opacity:1;transform:none}
  .rv-mask{clip-path:none}
  .hero-media>img,.hero-slide img{animation:none;transform:none;transition:none}
  .hero-slide{transition:none}
  .hero-dots button::after{animation:none;transform:scaleX(1)}
}

/* ---------- 22. Utilidades ---------- */
.stack-sm>*+*{margin-top:1rem}
.mt-l{margin-top:clamp(2.4rem,4.5vw,3.8rem)}
.mt-m{margin-top:clamp(1.6rem,3vw,2.4rem)}
.head-row{display:flex;flex-wrap:wrap;gap:1.6rem 3rem;justify-content:space-between;align-items:flex-end;margin-bottom:clamp(2.2rem,4vw,3.4rem)}
.head-row h2{max-width:20ch}
.bleed{padding-inline:0}
.two-col{display:grid;gap:clamp(1.6rem,3vw,3rem)}
@media(min-width:900px){.two-col{grid-template-columns:1fr 1fr}}
.prose h2{margin-top:2.6rem;font-size:clamp(1.4rem,2.2vw,2rem);text-transform:uppercase}
.prose h3{margin-top:2rem;font-size:1.15rem;text-transform:uppercase}
.prose p,.prose li{color:var(--piedra);max-width:76ch}
.prose ul{padding-left:1.1rem}
.prose li{margin-bottom:.5rem}
.prose a{color:var(--naranja);border-bottom:1px solid rgba(255,110,0,.4)}

/* Aparejo (desktop): la hilada manda sobre la proporción de cada foto.
   Va al final del archivo para ganar en orden de cascada. */
@media(min-width:1080px){
  .works .work,
  .works .work.r-tall,
  .works .work.r-wide,
  .works .work.r-pano{aspect-ratio:auto;grid-row:span 2;height:100%}
  .works .work.r-band{grid-row:span 1}
}


/* ---------- 23. Aviso de cookies ---------- */
.cookie{
  position:fixed;left:0;right:0;bottom:0;z-index:150;
  background:var(--antracita);border-top:2px solid var(--naranja);
  transform:translateY(110%);transition:transform .6s var(--ease);
  box-shadow:0 -20px 60px rgba(0,0,0,.5);
}
.cookie.is-open{transform:none}
.cookie-in{padding-block:clamp(1.4rem,3vw,2.1rem)}
.cookie-grid{display:grid;gap:1.4rem 2.6rem;align-items:center}
@media(min-width:960px){.cookie-grid{grid-template-columns:1fr auto}}
.cookie h2{font-size:clamp(1.15rem,1.7vw,1.5rem);text-transform:uppercase;margin-bottom:.6rem}
.cookie p{font-size:.92rem;color:var(--piedra);max-width:70ch;margin:0}
.cookie p a{color:var(--naranja);border-bottom:1px solid rgba(255,110,0,.4)}
.cookie-actions{display:flex;flex-wrap:wrap;gap:.6rem}
.cookie-actions .btn{padding:.85rem 1.35rem}
.cookie-panel{
  margin-top:1.6rem;padding-top:1.4rem;border-top:1px solid var(--hairline);
  display:grid;gap:1rem;
}
.cookie-panel[hidden]{display:none}
.cookie-opt{display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:start}
.cookie-opt input{width:18px;height:18px;margin-top:4px;accent-color:var(--naranja)}
.cookie-opt input:disabled{opacity:.5}
.cookie-opt strong{
  display:block;font-family:var(--ff-mono);font-size:11.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--blanco);margin-bottom:.35rem;
}
.cookie-opt span{font-size:.88rem;color:var(--piedra-2)}
.cookie-link{
  background:none;border:0;padding:0;color:var(--piedra);font-size:.94rem;cursor:pointer;
  text-align:left;transition:color .3s;
}
.cookie-link:hover{color:var(--blanco)}

@media(max-width:600px){
  .cookie-in{padding-block:1.2rem 1.4rem}
  .cookie h2{font-size:1.02rem;margin-bottom:.45rem}
  .cookie p{font-size:.84rem;line-height:1.5}
  .cookie-actions{gap:.5rem}
  .cookie-actions .btn{padding:.78rem 1.1rem;font-size:12px;flex:1 1 auto;justify-content:center}
  .cookie-grid{gap:1.1rem}
}

/* Clips de obra en móvil: tres vídeos verticales en fila quedan ilegibles,
   así que pasan a ser una tira deslizable de borde a borde. */
@media(max-width:760px){
  .clip-row{
    display:flex;gap:.7rem;overflow-x:auto;scroll-snap-type:x mandatory;
    margin-inline:calc(var(--gut) * -1);padding-inline:var(--gut);
    scrollbar-width:none;-webkit-overflow-scrolling:touch;
  }
  .clip-row::-webkit-scrollbar{display:none}
  .clip{flex:0 0 62vw;max-width:300px;scroll-snap-align:center}
  .clip figcaption{font-size:11px;padding:1rem .9rem}
}
