/* Avance de obra: el edificio se arma solo, una etapa cada 3 segundos. Se marca la etapa actual. */
.avance{position:relative;padding:100px 6%;display:flex;flex-direction:column;gap:32px;
  background-color:var(--dark);
  background-image:radial-gradient(ellipse 80% 40% at 50% 0%,rgba(123,158,171,.08) 0%,transparent 100%),linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);
  background-size:auto,60px 60px,60px 60px}

/* El envoltorio de la versión anterior no hace nada: sus hijos son los de .avance */
.avance-pin{display:contents}

/* Cabecera: título y estado, a la izquierda */
.avance-head .section-tag{display:none}
.avance-head .section-title{font-size:clamp(32px,3.5vw,52px);margin-bottom:12px;line-height:1.1}
.avance-head .obra-status-badge{margin:0;font-size:14px;white-space:nowrap}

.avance-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr);gap:48px;align-items:start}

/* Escena: cada etapa es la misma toma; la anterior queda debajo y la siguiente se funde encima */
.avance-stage{position:relative;aspect-ratio:16/9;width:100%;overflow:hidden;border-radius:var(--radius);background:var(--void);box-shadow:0 18px 50px rgba(0,0,0,.35)}
.avance-slide{position:absolute;inset:0;margin:0;opacity:0;z-index:0;transition:opacity .9s ease}
.avance-slide.was-on{opacity:1;z-index:1;transition:none}
.avance-slide.is-on{opacity:1;z-index:2}
.avance-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 60%}
.avance-shade{position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(to top,rgba(17,24,32,.82) 0%,rgba(17,24,32,.4) 22%,rgba(17,24,32,0) 46%)}
.avance-caps{position:absolute;left:24px;right:24px;bottom:20px;z-index:4;color:#fff;text-shadow:0 1px 12px rgba(0,0,0,.55)}
.avance-cap{display:none}
.avance-cap.on{display:block}
.avance-cap.on>*{animation:avanceUp .5s ease both}
.avance-cap-tag{font-size:14px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#fff;margin-bottom:6px}
.avance-cap-title{font-family: 'Montserrat', sans-serif;font-weight:400;font-size:clamp(26px,3vw,40px);line-height:1.1;color:#fff}
.avance-chip{position:absolute;top:18px;left:18px;z-index:5;display:none;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:var(--sand-light);color:var(--void);font-size:14px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.avance-chip::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--void);animation:avancePulse 1.8s ease infinite}
.avance.en-actual .avance-chip{display:inline-flex}
.avance-note{position:absolute;top:18px;right:18px;z-index:5;max-width:30ch;font-size:14px;color:#fff;text-align:right;line-height:1.35;text-shadow:0 1px 10px rgba(0,0,0,.6)}

/* Columna derecha: porcentaje de avance y etapas */
.avance-side{display:flex;flex-direction:column;gap:18px}
.avance .obra-metric{margin:0;padding-bottom:18px;border-bottom:1px solid rgba(255,255,255,.18);display:grid;grid-template-columns:auto 1fr;column-gap:18px;align-items:center;text-align:left}
.avance .obra-metric-number{grid-column:1;grid-row:1/3;font-size:clamp(48px,5vw,68px);margin:0;justify-content:flex-start}
.avance .obra-metric-percent{color:var(--sand-light);font-size:30px;padding-top:6px}
.avance .obra-metric-track-wrap{display:none}
.avance .obra-metric-phase{grid-column:2;grid-row:1;align-self:end;font-size:14px;color:#fff}
.avance .obra-metric-delivery{grid-column:2;grid-row:2;align-self:start;margin-top:4px;font-size:14px;color:var(--sand-light)}

/* Lista de etapas: la actual marcada, las siguientes son la obra por venir */
.avance-steps{list-style:none;display:flex;flex-direction:column;gap:6px;position:relative}
.avance-step{position:relative}
.avance-step-btn{all:unset;box-sizing:border-box;display:grid;grid-template-columns:44px 1fr;column-gap:16px;align-items:center;width:100%;padding:10px 12px;border-radius:var(--radius);cursor:pointer;color:#fff;border:1px solid transparent;transition:background .25s,border-color .25s}
.avance-step-btn:hover{background:rgba(255,255,255,.06)}
.avance-step-btn:focus-visible{outline:2px solid var(--sand-light);outline-offset:2px}
.avance-step.is-view .avance-step-btn{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.28)}
.avance-dot{grid-row:1/3;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:600;font-family:'Inter',sans-serif}
.avance-step.done .avance-dot{background:var(--slate);color:#fff;box-shadow:0 0 0 4px rgba(123,158,171,.2)}
.avance-step.actual .avance-dot{background:var(--sand-light);color:var(--void);box-shadow:0 0 0 4px rgba(196,170,140,.3),0 0 0 9px rgba(196,170,140,.12)}
.avance-step.pending .avance-dot{background:var(--noche-mid);color:#fff;border:1px solid rgba(255,255,255,.45)}
.avance-step-name{font-size:15px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#fff}
.avance-step-state{font-size:14px;color:var(--slate-light);line-height:1.4}
.avance-step.actual .avance-step-state{color:var(--sand-light);font-weight:600}

/* Barra con la etapa que se está mostrando y la marca de «hoy» */
.avance-bar{position:relative;width:100%}
.avance-track{position:relative;height:4px;background:rgba(255,255,255,.28);border-radius:2px}
.avance-fill{position:absolute;left:0;top:0;height:100%;width:0;background:var(--sand-light);border-radius:2px;transition:width .9s ease}
.avance-hoy{position:absolute;top:-5px;width:14px;height:14px;margin-left:-7px;border-radius:50%;background:var(--sand-light);border:3px solid var(--void);box-shadow:0 0 0 2px var(--sand-light)}
.avance-hoy-label{position:absolute;top:16px;left:50%;transform:translateX(-50%);font-size:14px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--sand-light);white-space:nowrap}
.avance-foot{display:flex;align-items:center;justify-content:flex-start;gap:16px;margin-top:30px;min-height:42px}
.avance-ir{all:unset;box-sizing:border-box;cursor:pointer;font-size:14px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--void);background:var(--sand-light);padding:10px 18px;border-radius:var(--radius);transition:background .25s}
.avance-ir:hover{background:#fff}
.avance-ir:focus-visible{outline:2px solid #fff;outline-offset:2px}
.avance.en-actual .avance-ir{display:none}

/* Detalle de la etapa en pantallas chicas */
.avance-detail{display:none}

@keyframes avanceUp{from{transform:translateY(10px)}to{transform:none}}
@keyframes avancePulse{0%,100%{transform:scale(1)}50%{transform:scale(.6)}}

@media (max-width:900px){
  .avance{padding:72px 5%;gap:20px}
  .avance-head .section-title{font-size:30px;margin-bottom:8px}
  .avance-grid{grid-template-columns:1fr;gap:18px}
  .avance-stage{aspect-ratio:4/3}
  .avance-img{object-position:50% 55%}
  .avance-caps{left:16px;right:16px;bottom:14px}
  .avance-cap-title{font-size:24px}
  .avance-note{display:none}
  .avance .obra-metric-number{font-size:44px}
  .avance .obra-metric-percent{font-size:24px}
  .avance-steps{flex-direction:row;justify-content:space-between;gap:4px}
  .avance-step{flex:1}
  .avance-step-btn{grid-template-columns:1fr;justify-items:center;padding:6px 2px}
  .avance-dot{grid-row:auto;width:40px;height:40px;font-size:15px}
  .avance-step-name,.avance-step-state{display:none}
  .avance-detail{display:block;min-height:70px;color:#fff}
  .avance-detail-name{font-size:15px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px}
  .avance-detail-state{font-size:14px;line-height:1.45;color:var(--slate-light)}
  .avance-detail.es-actual .avance-detail-state{color:var(--sand-light);font-weight:600}
  .avance-foot{margin-top:26px}
}
@media (prefers-reduced-motion:reduce){
  .avance-slide{transition:none}
  .avance-fill{transition:none}
  .avance-cap.on>*{animation:none}
  .avance-chip::before{animation:none}
}
