/* ============================================================
   DATCER · shelters — la pasarela del módulo SH-002-2
   Solo lo propio de esta página; el sistema visual sale de style.css.
   ============================================================ */

/* ---------- portada ---------- */
/* El hero arranca DENTRO de un marco redondeado —el perla se ve por los
   bordes— y al bajar el marco se abre hasta quedar a sangre. Mismo gesto que el
   inicio; `--hx` va de 1 a 0 con el scroll. */
#sh-hero{position:relative;height:100svh;min-height:600px;display:flex;align-items:flex-end;
  overflow:hidden;--bg:var(--dark);--fg:var(--light);background:var(--dark);
  --hx:1;
  clip-path:inset(
    calc(var(--hx) * clamp(84px,10.5vh,124px))
    calc(var(--hx) * clamp(12px,1.6vw,30px))
    calc(var(--hx) * clamp(12px,1.6vw,30px))
    round calc(var(--hx) * clamp(12px,1.5vw,26px)))}
@media (max-width:860px){ #sh-hero{--hx:0} }
#sh-hero .in{position:relative;z-index:3;width:100%;padding-bottom:clamp(28px,4.6vw,58px)}
#sh-hero .tag{display:inline-block;margin-bottom:clamp(18px,2.6vw,34px);color:rgba(227,230,235,.72)}
#sh-hero h1{max-width:11ch}
#sh-hero .ft{display:grid;grid-template-columns:minmax(0,36ch) 1fr auto;align-items:end;
  gap:clamp(20px,3vw,54px);margin-top:clamp(26px,3.6vw,50px);padding-top:26px;
  padding-right:clamp(0px,5vw,112px);border-top:1px solid rgba(227,230,235,.15)}
#sh-hero .ft p{color:rgba(227,230,235,.62);font-size:clamp(.95rem,1.05vw,1.1rem)}
#sh-hero .cta{grid-column:3}
/* la foto del módulo, con su parallax y el velo que sostiene el texto.
   Aquí se probó `contain` con fondo desenfocado, recogerla a la derecha y darle
   relieve al texto: el cliente volvió a esta, la primera. No rehacerlo. */
#sh-hero .sh-bg{position:absolute;inset:0;z-index:0;overflow:hidden}
#sh-hero .sh-bg img{position:absolute;left:0;top:-7%;width:100%;height:114%;
  object-fit:cover;object-position:52% 42%;will-change:transform}
#sh-hero .sh-dim{position:absolute;inset:0;
  background:
    linear-gradient(to top,rgba(2,13,31,.97) 4%,rgba(2,13,31,.86) 26%,rgba(2,13,31,.5) 58%,rgba(2,13,31,.42)),
    linear-gradient(95deg,rgba(2,13,31,.88) 6%,rgba(2,13,31,.3) 52%,rgba(2,13,31,.12))}

/* el degradado del fondo insinúa el volumen del módulo antes de que cargue */
#sh-hero::after{content:'';position:absolute;right:-8%;top:-14%;width:70%;height:96%;z-index:0;
  pointer-events:none;
  background:radial-gradient(46% 46% at 50% 50%,rgba(94,155,224,.13) 0%,rgba(2,13,31,0) 68%)}

/* ============================================================
   PASARELA
   El lienzo se queda pegado y los pasos pasan por encima. La altura de .walk
   la marca el número de pasos, no un valor fijo: añadir uno más al marcado no
   obliga a tocar el CSS.
   ============================================================ */
.walk{position:relative;background:var(--dark)}
.walk-st{position:sticky;top:0;height:100svh;overflow:hidden;z-index:0}
#shv{position:absolute;inset:0;width:100%;height:100%;display:block}
/* velo lateral: el texto vive a la izquierda y necesita una cama limpia */
.walk-gr{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(to right,rgba(2,13,31,.97) 0,rgba(2,13,31,.93) 26%,rgba(2,13,31,.55) 44%,rgba(2,13,31,.10) 62%,transparent 76%),
    linear-gradient(to top,rgba(2,13,31,.88) 0,rgba(2,13,31,.30) 22%,transparent 40%),
    linear-gradient(to bottom,rgba(2,13,31,.70),transparent 18%)}

/* ---------- el fondo técnico de la pasarela ----------
   El lienzo dejaba media pantalla de navy vacío alrededor del módulo. Estas
   capas la llenan sin competir con el modelo: una retícula de plano, la
   referencia del proyecto en grande al fondo, un halo bajo el módulo y las
   marcas de encuadre. Todo es CSS sobre el lienzo — el 3D no se toca. */
.walk-bg{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
/* La máscara va al revés de lo evidente: la retícula se APAGA donde está el
   módulo y se ve en el vacío de alrededor, que es lo que había que llenar. */
.walk-bg .rej{position:absolute;inset:-10%;
  background-image:linear-gradient(rgba(150,185,255,.1) 1px,transparent 1px),
    linear-gradient(90deg,rgba(150,185,255,.1) 1px,transparent 1px);
  background-size:clamp(46px,4.6vw,74px) clamp(46px,4.6vw,74px);
  -webkit-mask-image:radial-gradient(44% 46% at 62% 52%,transparent,#000 82%);
  mask-image:radial-gradient(44% 46% at 62% 52%,transparent,#000 82%);
  will-change:transform}
.walk-bg .halo{position:absolute;left:56%;top:48%;width:88vw;height:88vh;
  transform:translate(-50%,-50%);
  background:radial-gradient(40% 40% at 50% 50%,rgba(104,158,232,.24),rgba(2,13,31,0) 72%)}
/* ---------- la firma sobre el lienzo ----------
   Es el DWG del proyecto, no un render de catálogo: va firmado. El brillo lo
   recorre el mismo `--hs` que mueve el reflejo del marco perla, y se recorta con
   la forma del propio logo (mask), así que solo brilla la marca. */
/* arriba a la derecha: abajo a la izquierda se montaba sobre el texto del paso
   y sobre el indicador de capítulo */
.walk-firma{position:absolute;right:4.5%;top:clamp(92px,12vh,140px);z-index:3;
  display:flex;flex-direction:column;align-items:flex-end;gap:10px;pointer-events:none}
.walk-firma .sello{position:relative;display:block;width:clamp(120px,11vw,168px)}
.walk-firma .sello img{width:100%;height:auto;display:block;opacity:.3}
.walk-firma .sello i{position:absolute;inset:0;
  background:linear-gradient(105deg,rgba(255,255,255,0) 40%,rgba(255,255,255,.85) 50%,rgba(255,255,255,0) 60%);
  background-size:260% 100%;background-position:var(--hs,120%) 0;
  -webkit-mask:url(../assets/logo-dark.png) no-repeat 50% 50%/contain;
  mask:url(../assets/logo-dark.png) no-repeat 50% 50%/contain;
  opacity:.55;mix-blend-mode:screen}
.walk-firma .lbl{color:var(--fg-38);font-size:9.5px}
@media (max-width:860px){ .walk-firma{display:none} }

/* las escuadras de encuadre, como en una lámina de plano */
.walk-cr{position:absolute;inset:clamp(18px,2.2vw,34px);z-index:1;pointer-events:none}
.walk-cr i{position:absolute;width:clamp(18px,1.8vw,28px);height:clamp(18px,1.8vw,28px);
  border:0 solid var(--fg-18)}
.walk-cr i:nth-child(1){left:0;top:0;border-left-width:1px;border-top-width:1px}
.walk-cr i:nth-child(2){right:0;top:0;border-right-width:1px;border-top-width:1px}
.walk-cr i:nth-child(3){left:0;bottom:0;border-left-width:1px;border-bottom-width:1px}
.walk-cr i:nth-child(4){right:0;bottom:0;border-right-width:1px;border-bottom-width:1px}
/* el barrido que cruza al cambiar de paso */
.walk-sw{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:0;
  background:linear-gradient(100deg,transparent 42%,rgba(160,196,255,.16) 50%,transparent 58%)}

/* barra de carga del modelo */
.walk-load{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:3;
  display:grid;justify-items:center;gap:14px;width:min(280px,60vw);color:var(--fg-38);
  transition:opacity .6s var(--e)}
.walk-load.off{opacity:0;pointer-events:none}
.walk-load .bar{width:100%;height:1px;background:rgba(227,230,235,.16);position:relative}
.walk-load .bar>i{position:absolute;inset:0;background:var(--light);transform:scaleX(0);transform-origin:left}
.walk-load .pc{font-variant-numeric:tabular-nums}

/* lecturas sobre el lienzo */
.hud{position:absolute;left:0;right:0;bottom:0;z-index:2;pointer-events:none;
  display:flex;justify-content:flex-end;align-items:flex-end;gap:clamp(24px,4vw,64px);
  padding:0 var(--pad) clamp(26px,3.4vw,48px)}
/* todo el HUD a la derecha: a la izquierda vive la columna de texto y el
   contador de capítulo, y se estaban montando unos encima de otros */
.hud-l{text-align:right;border-right:1px solid var(--fg-18);padding-right:clamp(20px,2.6vw,40px)}
.hud-l .lbl{display:block;color:var(--fg-38);margin-bottom:8px}
.hud-l b{font-size:clamp(1.1rem,1.7vw,1.55rem);font-weight:200;letter-spacing:-.03em}
.hud-r{display:flex;gap:clamp(18px,2.6vw,44px);text-align:right}
.hud-r .f{display:grid;gap:6px}
.hud-r .f b{font-size:clamp(1.3rem,2.4vw,2.3rem);font-weight:200;letter-spacing:-.045em;
  line-height:1;font-variant-numeric:tabular-nums}
.hud-r .f span{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-38)}

/* La línea partida no puede volver a partirse dentro de su propia máscara: si
   lo hace, la segunda mitad queda fuera del recorte y el titular sale cortado. */
.step .ln>i,#sh-hero .ln>i{white-space:nowrap}

/* ---------- los pasos ---------- */
.steps{position:relative;z-index:2}
.step{min-height:118svh;display:flex;flex-direction:column;justify-content:center;
  padding:14svh var(--pad) 22svh;max-width:min(46ch,40vw)}
.step .idx{display:block;color:var(--fg-38);margin-bottom:18px}
.step h2{margin-bottom:clamp(18px,2.2vw,30px)}
.step .bd{margin-bottom:16px}
.step .bd-s{color:var(--fg-38)}

.sh-tbl{list-style:none;margin-top:clamp(20px,2.4vw,32px);border-top:1px solid var(--fg-18)}
.sh-tbl li{display:flex;align-items:baseline;gap:18px;padding:13px 0;border-bottom:1px solid var(--fg-10)}
.sh-tbl li b{font-size:1.5rem;font-weight:200;letter-spacing:-.04em;min-width:1.6em;
  font-variant-numeric:tabular-nums}
.sh-tbl li span{font-size:.88rem;color:var(--fg-60)}

/* ---------- ficha técnica ---------- */
.sh-spec{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(30px,5vw,80px)}
.sh-spec .r{display:flex;justify-content:space-between;align-items:baseline;gap:20px;
  padding:19px 0;border-bottom:1px solid var(--fg-18)}
.sh-spec .k{color:var(--fg-60);font-size:.92rem}
.sh-spec .v{font-size:clamp(1.15rem,1.8vw,1.7rem);font-weight:200;letter-spacing:-.03em;
  text-align:right;font-variant-numeric:tabular-nums}
.sh-spec .v em{font-style:normal;font-size:.55em;opacity:.5;margin-left:6px}

.sh-lay{margin-top:clamp(46px,5.6vw,84px);border-top:1px solid var(--fg-18);padding-top:30px}
.sh-lay .lbl{display:block;color:var(--fg-38);margin-bottom:20px}
.sh-lay .tg{display:flex;flex-wrap:wrap;gap:9px}
.sh-lay .tg span{font-size:11px;letter-spacing:.09em;text-transform:uppercase;font-weight:500;
  border:1px solid var(--fg-18);border-radius:100px;padding:8px 15px;color:var(--fg-60)}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1080px){
  .step{max-width:none}
  .walk-gr{background:
    linear-gradient(to top,rgba(2,13,31,.94) 0,rgba(2,13,31,.62) 42%,rgba(2,13,31,.30) 100%)}
  .hud{display:none}
  .sh-spec{grid-template-columns:1fr}
}
@media (max-width:860px){
  #sh-hero .ft{grid-template-columns:1fr;padding-right:0}
  #sh-hero .cta{grid-column:1}
  #sh-hero h1{max-width:none}
  .step{min-height:108svh}
}
