/* Layout: una pista de módulos de fondo y cinco escenas a pantalla completa; cada escena se expande desde su botón. Un solo azul en sus tramados. Tema único, a propósito. */
:root{
  --c100:#0077C8; --c80:#3392D3; --c50:#80BBE4; --c40:#99C8E9; --c20:#CCE4F4;
  --gap:#0067AD; --white:#FFFFFF;
  --f:"Gotham Rounded","Nunito","Arial Rounded MT Bold",system-ui,sans-serif;
  --side:clamp(20px,4vw,48px);
  color-scheme:light;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{margin:0;background:var(--gap);color:var(--white);font-family:var(--f);font-size:17px;line-height:1.5;-webkit-font-smoothing:antialiased;overflow:hidden}
p{margin:0}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--c50);outline-offset:4px}
h1:focus,h2:focus,.date:focus{outline:none}
.cap{font-weight:700;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase}

.stage{position:relative;height:100%;overflow:hidden}
#floor{position:absolute;inset:0;width:100%;height:100%;display:block}
.scene{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;visibility:hidden;overscroll-behavior:contain}
.scene.show{visibility:visible}
.inner{min-height:100%;max-width:1180px;margin:0 auto;padding:clamp(24px,4vw,44px) var(--side) 104px;display:flex;flex-direction:column}
.body{flex:1;display:flex;flex-direction:column;justify-content:center;gap:clamp(22px,3.4vw,36px);padding-block:24px}
.wipe{position:fixed;inset:0;z-index:45;pointer-events:none;overflow:hidden}
.wp{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;backface-visibility:hidden}
.wp.c{width:128px;height:128px;border-radius:50%}

/* entrada de cada escena: solo opacidad y transformaciones, para que sea fluida */
[data-a]{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .8s cubic-bezier(.2,.8,.1,1);transition-delay:calc(var(--i,0)*90ms + 120ms)}
.scene.in [data-a]{opacity:1;transform:none}
[data-a].x-grow{transform:translateY(18px) scaleX(.55);transform-origin:left center}
.scene.in [data-a].x-grow{transform:none}
#s0 [data-a]{opacity:1;transform:none;transition:none}
.reset [data-a]{transition:none!important}

/* botones */
.next{display:inline-flex;align-items:center;justify-content:center;gap:.7em;min-height:56px;border:0;border-radius:999px;padding:0 1.5em 0 1.7em;font-weight:800;font-size:1.05rem;line-height:1;cursor:pointer;width:fit-content;text-shadow:none;transition:gap .3s,transform .2s,box-shadow .3s}
.next:hover{gap:1.1em}
.next:active{transform:scale(.97)}
.next svg{width:20px;height:20px;flex:none}
.on-floor .next,.on-blue .next{background:var(--white);color:var(--c100);box-shadow:0 10px 28px rgba(0,40,90,.28)}
.on-white .next,.on-tint .next{background:var(--c100);color:var(--white)}

/* ===== ESCENA 0: HOME ===== */
.logo-zone{width:fit-content}
.logo{display:block;width:clamp(140px,15vw,190px);height:auto}
.home{flex:1;display:grid;grid-template-columns:minmax(0,600px) minmax(0,460px);justify-content:center;align-items:center;gap:clamp(28px,5vw,80px);padding-block:clamp(20px,4vh,48px)}
#slot{width:100%;max-width:600px;aspect-ratio:23/15;justify-self:center}
.home-text{display:grid;gap:18px;min-width:0;justify-items:start;text-shadow:0 2px 18px rgba(0,50,110,.55)}
.home-text .cap{color:var(--white)}
.anos{font-weight:250;font-size:clamp(1.6rem,3.6vw,2.6rem);line-height:1}
.lema{margin:0;font-weight:800;font-size:clamp(1.7rem,4.4vw,3.3rem);line-height:1;text-transform:uppercase;letter-spacing:.2em}
@media (prefers-reduced-motion:no-preference){.lema{animation:open 2.2s cubic-bezier(.2,.8,.1,1) .4s both}}
@keyframes open{from{letter-spacing:-.06em}to{letter-spacing:.2em}}
.lead{font-weight:400;font-size:clamp(1.05rem,1.6vw,1.2rem);max-width:32ch}
.lead b{font-weight:800}

/* ===== ESCENA 1: CUÁNDO Y DÓNDE ===== */
.on-white{background:var(--white);color:var(--c100)}
.on-blue{background:var(--c100);color:var(--white)}
.on-tint{background:var(--c20);color:var(--c100)}
.on-white .cap,.on-tint .cap{color:var(--c80)}
.on-blue .cap{color:var(--c20)}
.date{font-weight:200;font-size:clamp(4.4rem,15vw,12rem);line-height:.85;margin:0;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.date span{color:var(--c40)}
.date .v{color:var(--c100);font-weight:800;margin-right:.04em}
.date-wrap{display:grid;gap:10px;min-width:0}
.date-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:20px clamp(28px,4vw,56px)}
.dress-hero .br{display:block}
.dress-hero{display:grid;gap:10px;padding:6px 0 6px clamp(18px,2.4vw,28px);border-left:3px solid var(--c100);margin-bottom:clamp(4px,1vw,14px)}
.dress-hero strong{font-weight:800;font-size:clamp(2.2rem,4.4vw,3.6rem);line-height:.95;letter-spacing:-.02em;color:var(--c100)}
.tbc{font-weight:600;font-size:.72em;color:var(--c80);white-space:nowrap}
.date-long{font-weight:700;font-size:clamp(1.2rem,2.4vw,1.6rem)}
.maps{display:inline-flex;align-items:center;gap:8px;margin-top:6px;min-height:44px;padding:0 16px 0 12px;border-radius:999px;border:1.5px solid var(--c50);color:var(--c100);font-weight:800;font-size:.95rem;text-decoration:none;width:fit-content;transition:background .2s,color .2s,border-color .2s}
.maps:hover{background:var(--c100);border-color:var(--c100);color:var(--white)}
.maps svg{width:18px;height:18px}
.when{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--c20);max-width:980px}
.when > div{padding:20px 20px 4px 0;display:grid;gap:6px;min-width:0}
.when > div + div{padding-left:20px;border-left:1px solid var(--c20)}
.when strong{font-weight:700;font-size:1.25rem;line-height:1.2}
.when small{color:var(--c80);font-size:.92rem}
.count{display:flex;gap:18px;font-variant-numeric:tabular-nums}
.count b{display:block;font-weight:250;font-size:2.1rem;line-height:1}
.count span{font-size:.68rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--c80)}

/* ===== ESCENA 2: 28 AÑOS ===== */
#s2{isolation:isolate}
.rings{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.rings i{position:absolute;left:50%;top:50%;width:30vmax;aspect-ratio:3.5/1;border:2px solid rgba(255,255,255,.14);border-radius:999px;transform:translate(-50%,-50%) scale(.2);opacity:0}
@media (prefers-reduced-motion:no-preference){
  #s2.live .rings i{animation:ring 6s linear infinite;animation-delay:calc(var(--k)*-1.5s)}   /* arrancan cuando termina la transición */
}
@keyframes ring{0%{transform:translate(-50%,-50%) scale(.2);opacity:0}15%{opacity:1}100%{transform:translate(-50%,-50%) scale(4.2);opacity:0}}
.h{font-weight:250;font-size:clamp(2.2rem,5.6vw,4.4rem);line-height:1;letter-spacing:-.02em;margin:0;text-wrap:balance}
.h b{font-weight:800}
.span-years{display:flex;align-items:center;gap:18px;font-weight:800;font-size:.9rem;letter-spacing:.12em;font-variant-numeric:tabular-nums;max-width:1040px;width:100%;color:var(--c20)}
.span-years .line{flex:1;height:2px;background:var(--c50);transform-origin:left;transform:scaleX(0);transition:transform 1.6s cubic-bezier(.2,.8,.1,1) .5s}
.scene.in .span-years .line{transform:scaleX(1)}
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(24px,3.4vw,52px);max-width:1040px;width:100%;margin-top:clamp(4px,1vh,12px)}
.stat{display:flex;flex-direction:column;align-items:flex-start;min-width:0;padding-top:clamp(18px,2.4vh,26px);border-top:1px solid rgba(255,255,255,.28);text-align:left}
.stat b{display:flex;align-items:flex-start;font-weight:300;font-size:clamp(3.6rem,7.4vw,6rem);line-height:.82;letter-spacing:-.045em;font-variant-numeric:tabular-nums;color:var(--white)}
.stat b .pl{font-style:normal;font-weight:500;font-size:.4em;line-height:1;color:var(--c50);margin:.04em .08em 0 0;letter-spacing:0}
.stat b i{display:none}
.stat .tx{margin-top:clamp(16px,2vh,22px)}
.stat .lbl{display:block;font-weight:800;font-size:.74rem;letter-spacing:.22em;color:var(--white);line-height:1}
.stat p{margin:10px 0 0;color:var(--c20);font-weight:400;font-size:clamp(.95rem,1.15vw,1.04rem);line-height:1.5;max-width:24ch;text-wrap:pretty}

/* ===== ESCENA 3: LA NOCHE ===== */
.night{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(28px,6vw,80px);align-items:start}
.night .left{display:grid;gap:22px;align-content:start}
.dress{display:grid;gap:4px;border-left:2px solid var(--c100);padding-left:16px}
.dress strong{font-weight:250;font-size:1.7rem;line-height:1.1}
.run{list-style:none;margin:0;padding:0;display:grid}
.run li{display:grid;grid-template-columns:6rem 1fr;gap:18px;align-items:baseline;padding-block:15px;border-top:1px solid var(--c50);min-width:0}
.run li:last-child{border-bottom:1px solid var(--c50)}
.run time{font-weight:250;font-size:1.8rem;line-height:1;font-variant-numeric:tabular-nums}
.run strong{display:block;font-weight:800;font-size:1.08rem}
.run span{color:var(--c80);font-size:.95rem}
.run li:last-child time{font-weight:800}

/* ===== ESCENA 4: FORMULARIO ===== */
.form-wrap{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(28px,6vw,80px);align-items:start}
form{display:grid;gap:18px;min-width:0}
.row2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
.field{display:grid;gap:8px;min-width:0;align-content:start}
fieldset.field{display:block;border:0;margin:0;padding:0}
.field>label,.field>legend{display:block;font-weight:700;font-size:.8rem;letter-spacing:.06em;color:var(--c80);padding:0}
fieldset.field>legend{margin-bottom:8px}
input[type=text],input[type=tel],input[type=email],select,textarea{width:100%;min-height:52px;border:1.5px solid var(--c20);background:var(--white);border-radius:16px;padding:.75em 1em;color:var(--c100);font-weight:600;outline:none;transition:border-color .2s}
input[type=text]:focus,input[type=tel]:focus,input[type=email]:focus,select:focus,textarea:focus{border-color:var(--c100)}
textarea{min-height:92px;resize:vertical}
.choice{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.choice input{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}
.choice label{display:inline-flex;align-items:center;justify-content:center;min-height:48px;min-width:104px;padding:0 1.3em;border:1.5px solid var(--c20);border-radius:999px;font-weight:800;font-size:1rem;line-height:1;color:var(--c100);cursor:pointer;transition:background .2s,color .2s,border-color .2s,transform .15s}
.choice label:hover{border-color:var(--c50)}
.choice label:active{transform:scale(.97)}
.choice input:checked + label{background:var(--c100);border-color:var(--c100);color:var(--white)}
.choice input:focus-visible + label{outline:2px solid var(--c50);outline-offset:3px}
.err{color:#B3261E;font-weight:700;font-size:.9rem;min-height:1.2em}
.done{display:grid;gap:16px;justify-items:start}
.done .h{color:var(--c100)}
.done p{color:var(--c80);max-width:44ch}
.wa{display:inline-flex;align-items:center;justify-content:center;gap:.6em;min-height:56px;background:var(--c100);color:var(--white);text-decoration:none;border-radius:999px;padding:0 1.6em;font-weight:800;line-height:1}
.ghost{background:none;border:0;color:var(--c80);font-weight:700;text-decoration:underline;cursor:pointer;padding:8px 0}

/* ===== BARRA INFERIOR ===== */
.bar{position:fixed;left:0;right:0;bottom:0;z-index:50;padding:14px var(--side) calc(14px + env(safe-area-inset-bottom,0px));display:flex;justify-content:space-between;align-items:center;gap:16px;pointer-events:none}
.bar > *{pointer-events:auto}
.back{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px 0 12px;border-radius:999px;border:1.5px solid currentColor;background:transparent;font-weight:800;font-size:.92rem;line-height:1;cursor:pointer}
.back svg{width:18px;height:18px}
.back[hidden]{display:none!important}
.dots{display:flex;gap:2px;margin-left:auto}
.dots button{width:28px;height:36px;border:0;padding:0;background:none;cursor:pointer;display:grid;place-items:center}
.dots button::before{content:"";display:block;width:10px;height:10px;border-radius:5px;transition:width .3s,background .3s}
.dots button[aria-current="step"]::before{width:24px}
.bar[data-tone="light"] .back{color:var(--white)}
.bar[data-tone="light"] .dots button::before{background:rgba(255,255,255,.4)}
.bar[data-tone="light"] .dots button[aria-current="step"]::before{background:var(--white)}
.bar[data-tone="dark"] .back{color:var(--c100)}
.bar[data-tone="dark"] .dots button::before{background:var(--c40)}
.bar[data-tone="dark"] .dots button[aria-current="step"]::before{background:var(--c100)}

@media (max-width:900px){
  .home{grid-template-columns:1fr;justify-items:start;align-content:center;gap:28px}
  #slot{justify-self:start}
  .night,.form-wrap{grid-template-columns:1fr}
}
@media (max-width:620px){
  .dress-hero strong{font-size:2rem;line-height:1.05}
  .dress-hero .br{display:inline}
  #s1 .body{gap:20px}
  .when,.stats{grid-template-columns:1fr}
  .when > div + div{padding-left:0;border-left:0;border-top:1px solid var(--c20)}
  .stats{gap:0;margin-top:0}
  .stat{display:grid;grid-template-columns:6.6rem minmax(0,1fr);column-gap:14px;align-items:center;padding:16px 0}
  .stat:last-child{border-bottom:1px solid rgba(255,255,255,.28)}
  .stat b{font-size:2.9rem;justify-content:flex-start}
  .stat .tx{margin:0}
  .stat p{margin-top:6px;font-size:.93rem;line-height:1.42;max-width:none}
  .row2{grid-template-columns:1fr}
  .run li{grid-template-columns:4.8rem 1fr}
  .run time{font-size:1.45rem}
}
/* trampa para robots: invisible para las personas */
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.done .note{font-size:.9rem;color:var(--c80);margin-top:6px}
/* Barra inferior: en las escenas que hacen scroll queda sobre una franja lisa del color de la escena, así «Volver» y los puntos no se superponen con lo que pasa por detrás. */
.bar::before{content:"";position:absolute;inset:-22px 0 0;z-index:-1;opacity:0;pointer-events:none;transition:opacity .2s}
.stage:has(.scene.on-white.live) .bar::before{opacity:1;background:linear-gradient(to top,var(--white) 74%,rgba(255,255,255,0))}
@media (max-width:900px){.stage:has(.scene.on-blue.live) .bar::before{opacity:1;background:linear-gradient(to top,var(--c100) 74%,rgba(0,119,200,0))}}
