/* ============================================================
   MENDOZA RODRIGUEZ · Drywall & Roof — projects.css
   Página PROJECTS (EN /projects/ + ES /es/proyectos/) · §16
   Banner B4 editorial lateral (scrim izq HORNEADO en la foto)
   Galería 1 = G1 bento protagonista · Galería 2 = G2 muro denso
   ③ = R1 ruta de círculos · CTA surface · footer/base en base.css
   ============================================================ */

/* ---------- P-① BANNER — abre OSCURO cinematográfico (§12.11) ---------- */
.banner{
  position:relative;
  min-height:clamp(340px,54vh,580px);
  display:flex;align-items:flex-end;
  background:var(--ink);
  overflow:clip;
  color:var(--paper);
}
/* contenedor oversized 118%: el parallax (±8%) jamás muestra el borde */
.banner-media{position:absolute;left:0;right:0;top:-9%;bottom:-9%;z-index:0}
.banner-media img{width:100%;height:100%;object-fit:cover;object-position:center 42%}
.banner-content{
  position:relative;z-index:2;
  padding-block:calc(var(--nav-h) + 3rem) clamp(2.4rem,4.5vw,3.6rem);
}
.banner-crumb{
  display:flex;align-items:center;gap:.55rem;
  font-size:.78rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:rgba(247,247,248,.74);
}
.banner-crumb a{position:relative;color:rgba(247,247,248,.9)}
/* subrayado del link Home: CSS solo opacidad (GSAP no posee este nodo) */
.banner-crumb a::after{
  content:"";position:absolute;left:0;right:0;bottom:-3px;height:1px;
  background:var(--paper);opacity:0;transition:opacity .25s;
}
.banner-crumb a:hover::after{opacity:1}
.banner-crumb .c-sep{color:var(--accent);font-weight:600}
.banner-eyebrow{margin-top:1.1rem;color:#F2A7AA}
.banner-eyebrow .eb-mut{color:rgba(247,247,248,.55)}
.banner-h1{
  font-size:clamp(2.6rem,5.5vw,5.6rem);
  color:var(--paper);margin-top:.55rem;letter-spacing:-.012em;
}
.banner-sub{
  margin-top:1rem;max-width:46ch;
  color:rgba(247,247,248,.86);font-size:clamp(.95rem,1.1vw,1.05rem);
}
/* deco 1: chip de hechos (gutter inf-der, sobre la foto) */
.banner-chip{
  position:absolute;right:max(4vw,24px);bottom:clamp(2.4rem,4.5vw,3.6rem);z-index:2;
  background:rgba(27,28,30,.55);border-color:rgba(247,247,248,.28);color:var(--paper);
}
/* deco 2: tick-ruler vertical familia D, borde derecho */
.banner-ruler{
  position:absolute;top:16%;bottom:16%;right:max(2vw,14px);width:10px;z-index:2;
  background:
    repeating-linear-gradient(to bottom,rgba(247,247,248,.55) 0 1px,transparent 1px 14px) right/6px 100% no-repeat,
    repeating-linear-gradient(to bottom,rgba(247,247,248,.85) 0 1px,transparent 1px 70px) right/10px 100% no-repeat;
  pointer-events:none;
}

/* ============================================================
   GALERÍAS — cabecera común
   ============================================================ */
.gal{padding-block:clamp(5.5rem,7.8vw,8.25rem) clamp(4.2rem,6.5vw,6.5rem)}
.gal--two{background:var(--paper);padding-top:clamp(4.5rem,7vw,7rem)}
.gal-head{max-width:780px}
.gal-h{font-size:clamp(2.2rem,4.6vw,4.4rem);color:var(--ink);margin-top:.9rem}
.gal-p{margin-top:1rem;max-width:56ch;color:var(--ink-soft)}

/* filtros chip (aria-pressed; taxonomía espejo de Services) */
.filters{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:clamp(1.6rem,2.6vw,2.3rem)}
.fchip{
  display:inline-flex;align-items:center;gap:.5rem;
  font-size:.8rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;
  padding:.55rem 1.05rem;border-radius:999px;
  border:1px solid var(--hairline);background:var(--paper);color:var(--ink-soft);
  transition:border-color .25s,background-color .25s,color .25s;
}
.fchip:hover{border-color:var(--steel);color:var(--ink)}
.fchip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.fchip .f-n{font-weight:400;color:inherit;opacity:.6;font-size:.72rem}

/* ---------- P-② GALERÍA 1 · G1 BENTO PROTAGONISTA (4 col, dense) ---------- */
.grid-bento{
  --gp:clamp(.8rem,1.2vw,1.05rem);
  display:grid;gap:var(--gp);
  grid-template-columns:repeat(4,1fr);
  grid-auto-flow:dense;
  /* unidad de fila = mitad de un tile 3:4 → featured 2×2 conserva el ratio */
  grid-auto-rows:calc((min(92vw,1360px) - 3*var(--gp)) / 4 * 2 / 3);
  margin-top:clamp(2.4rem,4vw,3.6rem);
}
.grid-bento .tile{grid-row:span 2}
.grid-bento .tile--f{grid-column:span 2;grid-row:span 4}
.grid-bento .tile--w{grid-column:span 2;grid-row:span 2}

/* ---------- P-④ GALERÍA 2 · G2 MURO DENSO (1/1, gap apretado) ---------- */
.grid-wall{
  --gp:clamp(.5rem,1vw,.9rem);
  display:grid;gap:var(--gp);
  grid-template-columns:repeat(4,1fr);
  grid-auto-flow:dense;
  grid-auto-rows:calc((min(92vw,1360px) - 3*var(--gp)) / 4);
  margin-top:clamp(2.4rem,4vw,3.6rem);
}
.grid-wall .tile{grid-row:span 1}
.grid-wall .tile--d{grid-column:span 2}

/* ---------- tiles (hover: GSAP escala la IMG dentro de overflow:hidden;
     el tile jamás cambia de tamaño; anillo ::after por opacidad) ---------- */
.tile{position:relative;border-radius:10px;overflow:hidden;background:var(--surface)}
.tile-btn{
  display:block;width:100%;height:100%;position:relative;
  cursor:zoom-in;border-radius:10px;overflow:hidden;
}
.tile-btn img{width:100%;height:100%;object-fit:cover;will-change:transform}
.tile-btn::after{ /* anillo estático que aparece por opacidad */
  content:"";position:absolute;inset:10px;border:1px solid rgba(247,247,248,.9);
  border-radius:6px;opacity:0;transition:opacity .3s;pointer-events:none;
}
.tile-btn:hover::after,.tile-btn:focus-visible::after{opacity:1}
.tile-tag{
  position:absolute;left:.7rem;bottom:.7rem;z-index:2;
  font-size:.68rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  padding:.3rem .65rem;border-radius:999px;
  background:rgba(247,247,248,.92);color:var(--ink-soft);
  pointer-events:none;
}

/* ============================================================
   P-③ · R1 RUTA DE CÍRCULOS — "Trabajar juntos, paso a paso"
   ============================================================ */
.ruta{
  position:relative;background:var(--surface);
  padding-block:clamp(5rem,8vw,8rem);
  overflow:clip;
}
.ruta-map{ /* mapa punteado tone-on-tone 5–8%, a scrub */
  position:absolute;left:0;right:0;top:-12%;bottom:-12%;
  background-image:radial-gradient(rgba(27,28,30,.5) 1px,transparent 1.4px);
  background-size:26px 26px;opacity:.07;pointer-events:none;
}
.ruta-head{position:relative;text-align:center;max-width:640px;margin-inline:auto}
.ruta-h{font-size:clamp(2rem,4vw,3.6rem);color:var(--ink);margin-top:.9rem}
.ruta-row{
  position:relative;
  max-width:1200px;margin:clamp(3.2rem,5vw,4.8rem) auto 0;
}
.ruta-list{
  display:flex;justify-content:space-between;align-items:flex-start;
  gap:clamp(.8rem,2vw,1.6rem);
}
.ruta-path{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.ruta-path path{fill:none}
.rstep{position:relative;z-index:1;flex:0 1 clamp(150px,16vw,240px);text-align:center}
/* silueta de ruta: los círculos 2 y 3 bajan 24px (margen, no transform) */
.rstep:nth-child(2),.rstep:nth-child(3){margin-top:24px}
.rcircle{
  position:relative;width:clamp(150px,16vw,240px);height:clamp(150px,16vw,240px);
  margin-inline:auto;border-radius:50%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.55rem;
  padding:1.1rem;
}
.rstep:nth-child(odd) .rcircle{background:var(--ink);color:var(--paper)}
.rstep:nth-child(even) .rcircle{background:var(--accent);color:var(--paper)}
.rbadge{ /* muerde el borde sup-der del círculo (satélite relativo al objeto) */
  position:absolute;top:2%;right:6%;z-index:2;
  font-family:var(--font-d);font-weight:800;font-size:.9rem;letter-spacing:.02em;
  background:var(--paper);color:var(--ink);border:1px solid var(--hairline);
  padding:.22rem .5rem;border-radius:8px;
}
.ricon{width:clamp(26px,2.4vw,34px);height:clamp(26px,2.4vw,34px)}
.ricon svg{width:100%;height:100%;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
.rtitle{
  font-family:var(--font-d);font-weight:900;
  font-size:clamp(.92rem,1.3vw,1.22rem);line-height:1.08;letter-spacing:0;
  max-width:9ch;
}
.rline{margin-top:1rem;font-size:.92rem;color:var(--ink-soft);max-width:22ch;margin-inline:auto}

/* ============================================================
   P-⑤ · CTA DE CIERRE (surface fría; deco + atmósfera 0702-d §4)
   ============================================================ */
.pcta{
  position:relative;background:var(--surface);
  padding-block:clamp(5rem,9vw,8.5rem);
  text-align:center;overflow:clip;
}
.pcta-ghost{ /* hueco: JAMÁS se rellena (estado final) */
  position:absolute;left:0;right:0;top:6%;z-index:0;
  font-family:var(--font-d);font-weight:900;text-align:center;white-space:nowrap;
  font-size:min(11vw,190px);line-height:1;
  color:transparent;-webkit-text-stroke:2px rgba(27,28,30,.08);
  pointer-events:none;user-select:none;
}
.pcta-inner{position:relative;z-index:1}
.pcta-h{font-size:clamp(2rem,3.6vw,3.4rem);color:var(--ink);margin-top:1rem}
.pcta-sub{margin-top:1.1rem;max-width:52ch;margin-inline:auto;color:var(--ink-soft)}
.pcta-btns{
  display:flex;gap:1rem;justify-content:center;align-items:center;
  flex-wrap:wrap;margin-top:clamp(1.8rem,3vw,2.4rem);
}
.pcta-ruler{ /* tick-ruler horizontal, eco familia D */
  position:absolute;left:50%;bottom:clamp(1.6rem,3vw,2.6rem);z-index:0;
  width:min(46vw,520px);height:10px;margin-left:calc(min(46vw,520px)/-2);
  background:
    repeating-linear-gradient(to right,rgba(27,28,30,.3) 0 1px,transparent 1px 14px) bottom/100% 6px no-repeat,
    repeating-linear-gradient(to right,rgba(27,28,30,.45) 0 1px,transparent 1px 70px) bottom/100% 10px no-repeat;
  pointer-events:none;
}

/* ============================================================
   LIGHTBOX accesible (05 §7A) — z-index 150
   ============================================================ */
body.lb-open{overflow:hidden}
.lb{position:fixed;inset:0;z-index:150;display:flex;align-items:center;justify-content:center}
.lb[hidden]{display:none}
.lb-backdrop{position:absolute;inset:0;background:rgba(15,16,20,.93)}
.lb-fig{
  position:relative;z-index:1;margin:0;
  max-width:min(92vw,880px);max-height:88vh;
  display:flex;flex-direction:column;
}
.lb-img{
  max-width:100%;max-height:76vh;width:auto;height:auto;
  margin-inline:auto;border-radius:8px;background:rgba(236,236,237,.06);
}
.lb-cap{
  display:flex;gap:1rem;align-items:baseline;justify-content:center;
  margin-top:.9rem;color:rgba(247,247,248,.82);font-size:.86rem;
}
.lb-count{font-family:var(--font-d);font-weight:800;color:rgba(247,247,248,.55);white-space:nowrap}
.lb button{
  position:absolute;z-index:2;width:48px;height:48px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  background:rgba(247,247,248,.1);color:var(--paper);
  transition:background-color .25s;
}
.lb button:hover{background:rgba(247,247,248,.22)}
.lb button svg{width:22px;height:22px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
.lb-close{top:max(2vh,14px);right:max(2vw,14px)}
.lb-prev{left:max(2vw,10px);top:50%;margin-top:-24px}
.lb-next{right:max(2vw,10px);top:50%;margin-top:-24px}

/* ============================================================
   RESPONSIVE (ley l — 390/768/1440/1920/2560; todo vw con techo px)
   ============================================================ */
@media (max-width:1080px){
  .ruta-row{max-width:640px}
  .ruta-list{flex-wrap:wrap;justify-content:center;gap:2rem 1.4rem}
  .rstep{flex:0 1 calc(50% - .7rem)}
  .rstep:nth-child(2),.rstep:nth-child(3){margin-top:0}
  .ruta-path{display:none}
}
@media (max-width:760px){
  .banner{min-height:clamp(420px,62svh,560px)}
  .banner-chip{right:auto;left:max(4vw,24px);bottom:1.1rem;position:absolute}
  .banner-content{padding-bottom:4.2rem}
  .banner-ruler{display:none}
  .grid-bento{
    grid-template-columns:repeat(2,1fr);
    grid-auto-rows:calc((92vw - var(--gp)) / 2 * 2 / 3);
  }
  .grid-wall{
    grid-template-columns:repeat(2,1fr);
    grid-auto-rows:calc((92vw - var(--gp)) / 2);
  }
  .tile-tag{left:.55rem;bottom:.55rem}
  .pcta-btns{flex-direction:column}
  .lb-prev{left:6px}
  .lb-next{right:6px}
  .lb button{width:44px;height:44px}
}
@media (max-width:560px){
  .rstep{flex:0 1 100%;max-width:280px}
  .rcircle{width:min(62vw,240px);height:min(62vw,240px)}
}
@media (prefers-reduced-motion:reduce){
  .tile-btn img{will-change:auto}
}
