/* ============================================================
   NBJJ FRAMING INC · projects.css — Projects / Proyectos (§16)
   G1 BENTO EXPANDIDO (F6: 36 fotos reales en bandas de 12 col;
   covers -sm en grid, lightbox muestra completa) +
   R4 RUTA SOBRE PLANO + lightbox 05 §7A
   ============================================================ */

/* ---------- galeria G1 BENTO ---------- */
.gal{background:var(--paper);padding-top:clamp(6rem,7.8vw,7.5rem);padding-bottom:clamp(4rem,5.5vw,6.5rem);overflow:clip;}
.gal .ghost-n{right:-1%;top:-1%;font-size:min(15vw,210px);}
.gal-head{position:relative;z-index:2;max-width:1360px;margin:0 auto clamp(30px,4vw,48px);}
.gal-head h2{font-size:clamp(2rem,3.6vw,3.4rem);color:var(--ink);max-width:22ch;}
.gal-head p{margin-top:14px;font-size:16.5px;color:var(--steel-1);max-width:60ch;}
.bentoG{
  position:relative;z-index:2;display:grid;max-width:1360px;margin:0 auto;
  grid-template-columns:repeat(12,1fr);grid-auto-rows:190px;grid-auto-flow:dense;gap:14px;
}
.g-tile{
  position:relative;border-radius:16px;overflow:hidden;display:block;width:100%;
  background:var(--steel-1);border:0;padding:0;cursor:pointer;text-align:left;
  will-change:transform;
}
.g-tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;will-change:transform;}
.g-tile::after{ /* anillo inset estatico que aparece por opacidad (§16.D) */
  content:'';position:absolute;inset:10px;border:1px solid rgba(249,249,249,.65);
  border-radius:9px;opacity:0;transition:opacity .25s;pointer-events:none;
}
.g-tile:hover::after,.g-tile:focus-visible::after{opacity:1;}
.g-scrim{
  position:absolute;inset:auto 0 0 0;height:56%;
  background:linear-gradient(180deg,rgba(22,23,23,0),rgba(22,23,23,.72));pointer-events:none;
}
.g-tag{
  position:absolute;left:14px;bottom:12px;z-index:2;
  display:inline-flex;align-items:center;gap:7px;border-radius:999px;
  background:rgba(22,23,23,.72);color:var(--paper);
  font-family:var(--body);font-weight:600;font-size:11.5px;letter-spacing:.06em;
  text-transform:uppercase;padding:7px 13px;
}
.g-tag::before{content:'';width:5px;height:5px;background:var(--accent);border-radius:0;}
/* mapa del bento F6 (12 col · filas de 190px · flujo dense) —
   clases de TAMAÑO; cada banda del HTML suma 12 col = cero celdas vacias (k4):
   t-a = destacada 2x2 (6x2) · t-b = vertical (3x2) · t-c = estandar (4x1)
   t-w = ancha (6x1) · t-cf = la 3ra de cada trio (llena fila en mobile) */
.t-a{grid-column:span 6;grid-row:span 2;}
.t-b{grid-column:span 3;grid-row:span 2;}
.t-c{grid-column:span 4;}
.t-w{grid-column:span 6;}
.g-stat{grid-column:span 4;}
.g-stat--wide{grid-column:span 6;grid-row:span 2;}
.g-stat{ /* tile "respiro" de marca con stat permitido (G1) */
  position:relative;border-radius:16px;background:var(--accent);color:var(--paper);
  display:flex;flex-direction:column;justify-content:center;gap:6px;padding:22px 26px;overflow:hidden;
}
.g-stat b{font-family:var(--display);font-weight:800;font-size:clamp(2rem,3vw,3rem);line-height:1;}
.g-stat span{font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:rgba(249,249,249,.85);}
.g-stat svg{
  position:absolute;right:-8%;bottom:-18%;width:52%;stroke:rgba(249,249,249,.25);
  stroke-width:1.5;fill:none;pointer-events:none;
}

/* ---------- R4 · RUTA SOBRE PLANO (paso a paso, §16 C-ii) ---------- */
.route{
  background:var(--surface-2);overflow:clip;
  padding-top:clamp(5.5rem,7.5vw,8rem);padding-bottom:clamp(6rem,8vw,8.5rem);
}
.route-plan{ /* plano hairline de fondo a scrub (jamas background-attachment) */
  position:absolute;inset:-6% 0;z-index:0;opacity:.5;will-change:transform;
}
.route-plan svg{width:100%;height:100%;}
.route-plan path,.route-plan polyline{stroke:rgba(116,119,123,.25);stroke-width:1;fill:none;}
.route-plan text{font-family:'IBM Plex Sans',Arial,sans-serif;font-size:11px;letter-spacing:2.4px;fill:rgba(116,119,123,.4);}
.route-head{position:relative;z-index:2;text-align:center;margin-bottom:clamp(40px,5.5vw,70px);}
.route-head .eyebrow{margin-bottom:10px;}
.route-head h2{font-size:clamp(2rem,3.4vw,3.2rem);color:var(--ink);}
.route-head p{margin-top:12px;font-size:15.5px;color:var(--steel-1);max-width:52ch;margin-left:auto;margin-right:auto;}
.route-row{
  position:relative;z-index:2;display:grid;grid-template-columns:repeat(4,1fr);
  gap:clamp(16px,2.6vw,34px);max-width:1200px;margin:0 auto;
}
.route-path{ /* camino punteado que se dibuja */
  position:absolute;left:6%;right:6%;top:clamp(50px,6vw,86px);height:60px;z-index:0;
}
.route-path svg{width:100%;height:100%;overflow:visible;}
.route-path path{stroke:var(--accent);stroke-width:2;stroke-dasharray:3 9;fill:none;}
.rstep{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;text-align:center;}
.rstep:nth-child(3),.rstep:nth-child(4){transform:translateY(24px);} /* arco suave */
.r-circle{
  position:relative;width:clamp(130px,12vw,172px);height:clamp(130px,12vw,172px);border-radius:50%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  background:var(--ink);color:var(--paper);box-shadow:0 18px 40px rgba(22,23,23,.22);
}
.rstep:nth-child(3) .r-circle,.rstep:nth-child(5) .r-circle{background:var(--accent);}
.r-circle svg{width:34px;height:34px;stroke:currentColor;stroke-width:1.8;fill:none;}
.r-circle h3{font-size:clamp(.95rem,1.1vw,1.1rem);color:inherit;max-width:11ch;line-height:1;}
.r-badge{ /* badge mordiendo el borde sup-der (satelite relativo al circulo) */
  position:absolute;top:2px;right:2px;transform:translate(24%,-24%);
  width:34px;height:34px;border-radius:50%;background:var(--paper);color:var(--ink);
  border:1px solid var(--hairline);display:flex;align-items:center;justify-content:center;
  font-family:var(--display);font-weight:800;font-size:14px;box-shadow:0 8px 18px rgba(22,23,23,.16);
}
.rstep p{margin-top:16px;font-size:14.5px;color:var(--steel-1);max-width:24ch;}

/* ---------- LIGHTBOX accesible (verbatim 05 §7A; z-index 150) ---------- */
.lb{
  position:fixed;inset:0;z-index:150;display:none;
  align-items:center;justify-content:center;padding:clamp(14px,3vw,48px);
}
.lb.is-open{display:flex;}
.lb-backdrop{position:absolute;inset:0;background:rgba(22,23,23,.92);}
.lb-stage{position:relative;z-index:2;width:min(1100px,94vw);height:min(82vh,860px);}
.lb-stage img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:contain; /* muestra COMPLETA (m1) */
}
.lb-cap{
  position:absolute;left:0;right:0;bottom:-38px;z-index:2;display:flex;justify-content:space-between;
  gap:14px;color:var(--steel-3);font-size:13px;letter-spacing:.06em;
}
.lb-btn{
  position:absolute;z-index:3;width:46px;height:46px;border-radius:50%;cursor:pointer;
  background:rgba(249,249,249,.1);border:1px solid rgba(249,249,249,.4);color:var(--paper);
  display:flex;align-items:center;justify-content:center;font-size:18px;line-height:1;
}
.lb-btn:hover{background:rgba(249,249,249,.22);}
.lb-close{top:18px;right:18px;}
.lb-prev{left:10px;top:50%;transform:translateY(-50%);}
.lb-next{right:10px;top:50%;transform:translateY(-50%);}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .bentoG{grid-auto-rows:150px;}
  .t-a{grid-column:1/-1;grid-row:span 2;}
  .t-b{grid-column:span 6;grid-row:span 2;}
  .t-c{grid-column:span 6;}
  .t-cf{grid-column:1/-1;}
  .t-w{grid-column:1/-1;}
  .g-stat{grid-column:1/-1;}
  .g-stat--wide{grid-column:1/-1;grid-row:span 1;}
  .route-row{grid-template-columns:1fr 1fr;gap:38px 20px;}
  .rstep:nth-child(3),.rstep:nth-child(4){transform:none;}
  .route-path{display:none;}
  .lb-cap{bottom:-52px;flex-direction:column;gap:4px;}
}
@media (max-width:560px){
  .route-row{grid-template-columns:1fr;}
}
