@font-face{font-family:Roobert;src:url("./assets/fonts/RoobertVF.woff2") format("woff2-variations"),url("./assets/fonts/RoobertVF.woff2") format("woff2");font-weight:300 900;font-display:swap}
@font-face{font-family:condensed;src:url("./assets/fonts/condensed-normal-400-latin-ext.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap}
@font-face{font-family:condensed;src:url("./assets/fonts/condensed-normal-400-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap}

:root{
  --primary:#009bd7;--pink:#ff8ebe;--dark:#0b0006;--light:#e8f8ff;--yellow:#f9ff8e;--cyan:#64f5f0;--green:#a2e9aa;--ice:#dafaff;
  --night:oklch(0.10 0.05 345);--magenta:oklch(0.60 0.16 345);--blue:oklch(0.65 0.16 234);
  --cond:condensed,Impact,"Arial Narrow",sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;background:var(--night)}
body{margin:0;font-family:Roobert,system-ui,sans-serif;font-size:1.0625rem;line-height:1.5;color:var(--light);background:var(--night);overflow-x:hidden;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit}
p,h1,h2,h3,ul,ol,figure,blockquote{margin:0}
ul,ol{padding:0;list-style:none}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:focus-visible{outline:3px solid var(--yellow);outline-offset:3px}

.stk{display:inline-block;font-family:var(--cond);text-transform:uppercase;letter-spacing:.1em;font-size:.95rem;line-height:1;padding:.42em .6em .36em;color:var(--dark);border-radius:3px;transform:rotate(-3deg);box-shadow:-3px 3px 0 rgba(11,0,6,.55)}
.stk-pink{background:var(--pink)}.stk-yellow{background:var(--yellow)}.stk-cyan{background:var(--cyan)}

/* ---------- TOP ---------- */
.top{position:absolute;inset:0 0 auto;z-index:20;display:flex;align-items:center;gap:.9rem;padding:1rem clamp(1rem,3vw,2rem)}
.top-logo img{width:40px;height:40px;transition:transform .25s}
.top-logo:hover img{transform:rotate(-12deg) scale(1.08)}
.top-name{font-weight:650;letter-spacing:.01em;color:#fff}
.top-name b{color:var(--pink);font-weight:800}
.top-cta{margin-left:auto;padding:.55rem 1.05rem;border-radius:2em;background:var(--pink);color:var(--dark);font-weight:600;font-size:.95rem;text-decoration:none;white-space:nowrap;transition:transform .2s}
.top-cta:hover{transform:scale(1.05)}

/* ---------- HERO ---------- */
.hero{position:relative;height:100vh;height:100svh;min-height:540px;overflow:hidden;isolation:isolate;touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;cursor:crosshair;
  background:
    radial-gradient(ellipse 50% 40% at 50% 62%,oklch(0.40 0.17 345 / .55),transparent 70%),
    radial-gradient(ellipse 90% 50% at 50% 115%,oklch(0.32 0.15 345 / .8),transparent 70%),
    var(--night)}
.hero::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.5;
  background:repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 4px)}
/* suelo synthwave */
.hero::after{content:"";position:absolute;left:-20%;right:-20%;bottom:0;height:34%;z-index:-1;pointer-events:none;
  background:
    linear-gradient(to bottom,var(--night),transparent 60%),
    repeating-linear-gradient(90deg,rgba(255,142,190,.32) 0 1px,transparent 1px 48px),
    repeating-linear-gradient(0deg,rgba(255,142,190,.32) 0 1px,transparent 1px 24px);
  transform:perspective(300px) rotateX(60deg);transform-origin:50% 100%;
  -webkit-mask-image:radial-gradient(ellipse 50% 90% at 50% 100%,#000 30%,transparent 75%);mask-image:radial-gradient(ellipse 50% 90% at 50% 100%,#000 30%,transparent 75%)}
.stage{position:absolute;inset:0;z-index:2;pointer-events:none}
.stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.ar-stain{opacity:.9}
.deco{position:absolute;z-index:0;pointer-events:none;opacity:.85}
.deco-1{width:clamp(70px,8vw,130px);right:6%;top:30%;transform:rotate(8deg)}
.deco-2{width:clamp(60px,6vw,100px);left:5%;top:64%;transform:rotate(-14deg)}

.hint{position:absolute;left:50%;top:clamp(96px,17vh,170px);z-index:4;width:min(420px,86vw);transform:translateX(-50%);pointer-events:none;text-align:center;transition:opacity .4s,transform .4s}
.hint-svg{display:block;width:100%;height:auto;overflow:visible}
.hint-line{animation:dash 1.2s linear infinite}
@keyframes dash{to{stroke-dashoffset:-24}}
.hint-label{display:inline-block;margin-top:.4rem;font-family:var(--cond);text-transform:uppercase;letter-spacing:.14em;font-size:1rem;color:var(--dark);background:var(--cyan);padding:.42em .75em .36em;border-radius:3px;transform:rotate(-2deg);box-shadow:-3px 3px 0 var(--pink)}
.for-mouse{display:none}
@media (hover:hover) and (pointer:fine){.for-mouse{display:inline}.for-touch{display:none}}
.hint.is-gone,.is-final .hint{opacity:0;transform:translateX(-50%) translateY(-12px)}

/* frase de cada melón */
.say{position:absolute;left:50%;top:clamp(86px,14vh,150px);z-index:5;width:min(660px,calc(100% - 2.4rem));transform:translateX(-50%);display:grid;pointer-events:none}
.say-card{grid-area:1/1;align-self:start;justify-self:center;padding:1.15rem 1.35rem 1rem;border-radius:5px;color:var(--dark);background:var(--bg);box-shadow:-6px 6px 0 rgba(0,0,0,.5);transform:rotate(-1.6deg);animation:say-in .55s cubic-bezier(.3,1.6,.5,1) both}
.say-card.c-yellow,.say-card.c-green{transform:rotate(1.4deg)}
.say-card blockquote{font-weight:600;font-size:clamp(1.25rem,2.4vw,1.9rem);line-height:1.22;text-wrap:pretty;letter-spacing:-.005em}
.say-card blockquote::before{content:"“";font-family:var(--cond);font-size:1.9em;line-height:0;vertical-align:-.38em;margin-right:.08em;color:rgba(11,0,6,.35)}
.say-card figcaption{margin-top:.6rem;font-family:var(--cond);text-transform:uppercase;letter-spacing:.1em;font-size:1rem}
.say-card a{pointer-events:auto;text-decoration:none;border-bottom:2px solid rgba(11,0,6,.35)}
.say-card a:hover{border-bottom-color:var(--dark)}
.say-card a::after{content:" ↗";letter-spacing:0}
.say-card.is-q blockquote{font-family:var(--cond);font-weight:400;text-transform:uppercase;letter-spacing:.04em;font-size:clamp(1.9rem,4.4vw,3.4rem);line-height:1}
.say-card.is-q blockquote::before{content:none}
.say-card.is-out{animation:say-out .35s ease-in both}
@keyframes say-in{from{opacity:0;transform:translateY(30px) scale(.7) rotate(-8deg)}}
@keyframes say-out{to{opacity:0;transform:translateY(-24px) scale(.92) rotate(4deg)}}
.c-pink{--bg:var(--pink)}.c-yellow{--bg:var(--yellow)}.c-cyan{--bg:var(--cyan)}.c-green{--bg:var(--green)}.c-ice{--bg:var(--light)}

/* portada final */
.final{position:absolute;left:50%;top:clamp(84px,13vh,140px);z-index:5;width:min(1100px,calc(100% - 2rem));transform:translateX(-50%);text-align:center;pointer-events:none;visibility:hidden}
.is-final .final{visibility:visible}
.final-title{font-family:var(--cond);font-weight:400;text-transform:uppercase;letter-spacing:.04em;line-height:.93;color:#fff;font-size:clamp(2.7rem,7vw,6.4rem);text-shadow:-3px 3px 0 var(--pink),-6px 6px 0 rgba(255,142,190,.25);text-wrap:balance}
.final-title em{font-style:normal;color:var(--yellow);text-shadow:-3px 3px 0 var(--primary),-6px 6px 0 rgba(0,155,215,.3)}
.brand{display:inline-block;margin-top:clamp(.9rem,2.4vh,1.6rem);font-family:var(--cond);text-transform:uppercase;letter-spacing:.1em;font-size:clamp(1.5rem,3vw,2.3rem);line-height:1;padding:.4em .6em .32em;background:var(--yellow);color:var(--dark);border-radius:4px;transform:rotate(-3deg);box-shadow:-4px 4px 0 var(--primary)}
.brand b{font-weight:400;color:var(--dark);text-shadow:-2px 2px 0 var(--pink)}
.final-sub{margin:1rem auto 0;max-width:40ch;font-size:clamp(1rem,1.5vw,1.2rem);color:rgba(232,248,255,.88);text-wrap:balance}
.final-cta{margin-top:1.2rem;display:flex;flex-wrap:wrap;justify-content:center;gap:.7rem}
.final-cta>*{pointer-events:auto}
.is-final:not(.no-gl) .final>*{animation:rise .7s cubic-bezier(.2,1.2,.4,1) both}
.is-final .final>:nth-child(2){animation-delay:.12s}.is-final .final>:nth-child(3){animation-delay:.22s}.is-final .final>:nth-child(4){animation-delay:.32s}
.is-final:not(.no-gl) .brand{animation-name:rise-rot}
@keyframes rise{from{opacity:0;transform:translateY(26px)}}
@keyframes rise-rot{from{opacity:0;transform:translateY(26px) rotate(-14deg) scale(.6)}}

.btn{display:inline-block;font:inherit;font-weight:650;font-size:1rem;cursor:pointer;border:0;border-radius:2em;padding:.8rem 1.4rem;background:var(--yellow);color:var(--dark);text-decoration:none;box-shadow:-3px 3px 0 var(--pink);transition:transform .15s,box-shadow .15s}
.btn:hover{transform:translate(1px,-1px);box-shadow:-5px 5px 0 var(--pink)}
.btn:active{transform:translate(-2px,2px);box-shadow:-1px 1px 0 var(--pink)}
.btn:disabled{opacity:.6;cursor:default}
.btn-ghost{font:inherit;font-weight:600;font-size:1rem;cursor:pointer;border:1.5px solid rgba(232,248,255,.5);border-radius:2em;padding:.75rem 1.3rem;background:rgba(11,0,6,.35);color:#fff;transition:background .15s,border-color .15s}
.btn-ghost:hover{background:rgba(232,248,255,.12);border-color:#fff}

.skip{position:absolute;left:50%;bottom:max(1.1rem,env(safe-area-inset-bottom));z-index:6;transform:translateX(-50%);display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.35rem .9rem;width:max-content;max-width:calc(100% - 2rem);text-decoration:none;color:rgba(232,248,255,.8);font-size:.95rem;cursor:pointer}
.skip-when{font-family:var(--cond);text-transform:uppercase;letter-spacing:.12em;color:var(--cyan)}
.skip-go{display:inline-flex;align-items:center;gap:.35rem;font-weight:600;padding:.45rem .95rem;border-radius:2em;border:1px solid rgba(100,245,240,.4);color:#fff;background:rgba(11,0,6,.35)}
.skip-go svg{width:17px;height:17px;animation:bob 1.6s ease-in-out infinite}
.skip:hover .skip-go{background:rgba(100,245,240,.12)}
@keyframes bob{50%{transform:translateY(4px)}}
.is-final .skip-when{visibility:hidden}

.no-gl .stage,.no-gl .hint{display:none}

/* ---------- FLOW (oscuro a luminoso) ---------- */
.flow{background:linear-gradient(to bottom,var(--night) 0%,oklch(0.32 0.13 345) 14%,var(--magenta) 32%,oklch(0.80 0.10 300) 42%,var(--ice) 50%,var(--ice) 84%,var(--blue) 100%)}
.flow>section{max-width:1180px;margin:0 auto;padding:clamp(4rem,9vw,7.5rem) clamp(1.1rem,4vw,2.5rem)}
.title{font-family:var(--cond);font-weight:400;text-transform:uppercase;letter-spacing:.06em;line-height:.98;font-size:clamp(2.6rem,6.4vw,5rem);text-shadow:-3px 3px 0 var(--sh,var(--pink))}
.title span{color:var(--acc,var(--yellow))}

.what{color:#fff}
.what .title{--sh:var(--primary)}
.lead{margin-top:1rem;font-size:clamp(1.15rem,2vw,1.5rem);max-width:34ch;color:rgba(255,255,255,.9)}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;margin-top:2.6rem;counter-reset:s}
.steps li{position:relative;padding:1.3rem 1.3rem 1.4rem;border:1px solid rgba(255,255,255,.18);border-radius:6px;background:rgba(11,0,6,.32);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.steps b{display:block;font-family:var(--cond);font-weight:400;font-size:3.2rem;line-height:1;color:var(--cyan);text-shadow:-3px 3px 0 var(--pink)}
.steps h3{margin-top:.5rem;font-family:var(--cond);font-weight:400;text-transform:uppercase;letter-spacing:.08em;font-size:1.45rem;line-height:1.05}
.steps p{margin-top:.4rem;color:rgba(255,255,255,.78)}
.topic{margin-top:2.2rem;max-width:62ch;font-size:1.08rem;color:rgba(255,255,255,.9)}
.topic .stk{margin-right:.5rem}
.mini-title{margin-top:4rem;font-family:var(--cond);font-weight:400;text-transform:uppercase;letter-spacing:.12em;font-size:1.2rem;color:#fff}
.princ{display:grid;grid-template-columns:repeat(4,1fr);gap:1.1rem;margin-top:1.1rem}
.princ li{background:var(--bg);color:var(--dark);font-family:var(--cond);text-transform:uppercase;letter-spacing:.06em;font-size:clamp(1.35rem,2vw,1.7rem);line-height:1.04;padding:1.2rem 1.1rem 1.4rem;border-radius:4px;box-shadow:-5px 5px 0 rgba(11,0,6,.4);transform:rotate(var(--r));transition:transform .25s cubic-bezier(.3,1.5,.5,1);min-height:8.5rem}
.princ li:nth-child(1){--r:-2deg}.princ li:nth-child(2){--r:1.5deg}.princ li:nth-child(3){--r:-1deg}.princ li:nth-child(4){--r:2.2deg}
.princ li:hover{transform:rotate(0) scale(1.03)}
.feet{display:flex;align-items:center;gap:clamp(1rem,3vw,2.2rem);margin-top:3.2rem;padding:clamp(1.3rem,3vw,2rem);background:var(--yellow);color:var(--dark);border-radius:6px;box-shadow:-6px 6px 0 var(--primary);transform:rotate(-.8deg)}
.feet-ico{width:clamp(80px,10vw,120px);flex:none}
.feet h3{font-family:var(--cond);font-weight:400;text-transform:uppercase;letter-spacing:.06em;font-size:clamp(1.9rem,4vw,3rem);line-height:1;text-shadow:-2px 2px 0 var(--pink)}
.feet p{margin-top:.5rem;font-size:1.08rem;max-width:52ch}

.come{color:var(--dark)}
.flow>.come{padding-top:clamp(2rem,5vw,4rem)}
.come .title{--sh:var(--pink);--acc:var(--primary)}
.tickets{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;margin-top:2.4rem}
.ticket{position:relative;padding:1.4rem 1.4rem 1.5rem;background:#fff;border:2.5px solid var(--dark);border-radius:6px;box-shadow:-6px 6px 0 var(--c);transform:rotate(var(--r));transition:transform .25s}
.ticket:hover{transform:rotate(0)}
.t1{--c:var(--pink);--r:-1.2deg}.t2{--c:var(--cyan);--r:.8deg}.t3{--c:var(--yellow);--r:-.6deg}
.t-k{font-family:var(--cond);text-transform:uppercase;letter-spacing:.14em;font-size:.95rem;color:var(--primary)}
.t-big{font-family:var(--cond);text-transform:uppercase;letter-spacing:.04em;font-size:clamp(1.9rem,3vw,2.5rem);line-height:1;margin:.35rem 0 .7rem}
.t3 .t-big{color:var(--dark);text-shadow:-2px 2px 0 var(--yellow)}

.start{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(1.5rem,4vw,3.5rem);align-items:center;margin-top:clamp(3rem,6vw,5rem)}
.start-time{font-family:var(--cond);font-size:clamp(4.5rem,10vw,8rem);line-height:.85;color:var(--primary);text-shadow:-4px 4px 0 var(--pink)}
.start-txt h3{margin:.7rem 0 .9rem;font-family:var(--cond);font-weight:400;text-transform:uppercase;letter-spacing:.06em;font-size:clamp(1.6rem,3vw,2.3rem);line-height:1.02}
.start-txt p+p{margin-top:.8rem}
.start-txt .spaces{margin-top:1.4rem;line-height:2.2}
.spaces .stk{font-size:.9rem;box-shadow:-2px 2px 0 var(--dark)}
.spaces .stk-cyan{transform:rotate(2deg)}
.map{background:#fff;border:2.5px solid var(--dark);border-radius:8px;padding:1rem;box-shadow:-8px 8px 0 var(--primary);transform:rotate(1deg)}
.map svg{display:block;width:100%;height:auto;max-height:640px}
.m-l{font-family:var(--cond);text-transform:uppercase;letter-spacing:.06em;font-size:16px;fill:#0b0006}
.m-s{font-family:Roobert,system-ui,sans-serif;font-weight:600;font-size:11.5px;fill:#0b0006}
.m-xl{font-family:var(--cond);font-size:26px;fill:#0b0006}
.pin{animation:pin 2s ease-in-out infinite}
@keyframes pin{0%,100%{transform:translate(132px,296px)}50%{transform:translate(132px,289px)}}

.end{text-align:center;color:var(--dark)}
.flow>.end{padding-top:clamp(2rem,5vw,3.5rem)}
.end-slice{width:clamp(110px,14vw,170px);margin:0 auto 1rem;transform:rotate(-8deg);filter:drop-shadow(-5px 5px 0 rgba(11,0,6,.25))}
.end-title{font-family:var(--cond);font-weight:400;text-transform:uppercase;letter-spacing:.06em;font-size:clamp(3.4rem,10vw,8rem);line-height:.92;color:var(--dark);text-shadow:-4px 4px 0 var(--pink)}
.end-title span{color:var(--primary);text-shadow:-4px 4px 0 var(--yellow)}
.end-sub{margin-top:1rem;font-size:clamp(1.1rem,2vw,1.4rem);font-weight:550}
.hosts{margin-top:3rem}
.hosts-k{font-family:var(--cond);text-transform:uppercase;letter-spacing:.14em}
.hosts ul{display:flex;flex-wrap:wrap;justify-content:center;gap:.8rem;margin-top:.8rem}
.hosts a{display:inline-block;padding:.65rem 1.1rem;background:#fff;border:2px solid var(--dark);border-radius:2em;text-decoration:none;font-weight:650;transition:transform .2s}
.hosts li:nth-child(1) a{transform:rotate(-2deg)}.hosts li:nth-child(3) a{transform:rotate(1.5deg)}
.hosts a:hover{transform:rotate(0) scale(1.05)}
.hosts a span{font-weight:450;color:var(--primary)}
.end-links{margin-top:2.5rem;display:flex;flex-direction:column;align-items:center;gap:1rem}
.cta{display:inline-flex;align-items:center;gap:.5rem;padding:.95rem 1.6rem;border-radius:2em;background:var(--pink);color:var(--dark);font-weight:650;text-decoration:none;box-shadow:-4px 4px 0 var(--dark);transition:transform .2s}
.cta:hover{transform:scale(1.05)}
.cta svg{width:20px;height:20px}
.mail{font-weight:500}
.mail a{font-weight:650}
.foot{display:flex;align-items:center;justify-content:center;gap:.7rem;margin-top:4rem;font-size:.9rem;color:rgba(11,0,6,.75)}

/* ---------- VOCES ---------- */
.flow>.voices{padding-top:0;color:#fff;max-width:none;padding-left:0;padding-right:0}
.voices .title{max-width:1180px;margin:0 auto;padding:0 clamp(1.1rem,4vw,2.5rem);--sh:var(--primary)}
.quotes{display:flex;gap:1.3rem;overflow-x:auto;scroll-snap-type:x mandatory;padding:2rem max(clamp(1.1rem,4vw,2.5rem),calc((100% - 1180px)/2 + 2.5rem)) 2.2rem;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.35) transparent;outline-offset:-3px}
.qc{flex:0 0 min(78vw,320px);scroll-snap-align:center}
.qc figure{height:100%;display:flex;flex-direction:column;justify-content:space-between;padding:1rem 1.15rem .85rem;border-radius:4px;color:var(--dark);background:var(--bg);box-shadow:-5px 5px 0 rgba(0,0,0,.4);transform:rotate(var(--r,-2deg));transition:transform .25s cubic-bezier(.3,1.5,.5,1)}
.qc figure:hover{transform:rotate(0) scale(1.03)}
.qc:nth-child(5n+1){--r:-2deg}.qc:nth-child(5n+2){--r:1.6deg}.qc:nth-child(5n+3){--r:-1.1deg}.qc:nth-child(5n+4){--r:2.2deg}.qc:nth-child(5n){--r:-1.6deg}
.qc blockquote{font-weight:560;font-size:1.02rem;line-height:1.32;text-wrap:pretty}
.qc blockquote::before{content:"“";font-family:var(--cond);font-size:2.6rem;line-height:0;vertical-align:-.42em;margin-right:.12em;color:rgba(11,0,6,.4)}
.qc figcaption{margin-top:.7rem;font-family:var(--cond);text-transform:uppercase;letter-spacing:.1em;font-size:.95rem}
.qc figcaption a{text-decoration:none;border-bottom:2px solid rgba(11,0,6,.35)}
.qc figcaption a:hover{border-bottom-color:var(--dark)}
.qc figcaption a::after{content:" ↗";letter-spacing:0}

/* ---------- RANKING ---------- */
.rank{color:var(--dark);text-align:center}
.flow>.rank{padding-top:clamp(2rem,5vw,4rem);padding-bottom:0}
.rank .title{--sh:var(--yellow);--acc:var(--primary);font-size:clamp(2.2rem,5vw,3.8rem)}
.rank>p{margin-top:1.4rem}
.board{width:min(440px,100%);margin:1.6rem auto 0;text-align:left;counter-reset:b}
.board li{display:flex;align-items:baseline;gap:.8rem;padding:.55rem .9rem;border-bottom:2px dashed rgba(11,0,6,.2);font-weight:600}
.board li:first-child .b-pos{background:var(--yellow)}
.b-pos{flex:none;width:2rem;height:2rem;display:grid;place-items:center;border-radius:50%;border:2px solid var(--dark);background:#fff;font-family:var(--cond);font-size:1.05rem;transform:translateY(.3rem)}
.b-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.b-score{font-family:var(--cond);font-size:1.5rem;letter-spacing:.04em;color:var(--primary)}
.board li.is-me{background:var(--pink);border-radius:4px;border-bottom-color:transparent;transform:rotate(-1deg)}
.board-msg{justify-content:center;font-weight:500!important;opacity:.75;border-bottom:0!important;text-align:center}

/* ---------- BOTÓN FIJO ---------- */
.fab{position:fixed;right:max(.9rem,env(safe-area-inset-right));bottom:max(.9rem,env(safe-area-inset-bottom));z-index:40;display:inline-flex;align-items:center;gap:.45rem;font:inherit;font-weight:650;font-size:.9rem;cursor:pointer;border:2px solid var(--dark);border-radius:2em;padding:.45rem .85rem .45rem .6rem;background:var(--yellow);color:var(--dark);box-shadow:-3px 3px 0 var(--pink);transform:rotate(-2deg);transition:transform .2s,box-shadow .2s}
.fab svg{width:30px;height:18px;flex:none}
.fab:hover{transform:rotate(0) scale(1.05);box-shadow:-5px 5px 0 var(--pink)}
.game-open .fab{display:none}
.game-open,.game-open body{overflow:hidden}

/* ---------- JUEGO ---------- */
.game{position:fixed;inset:0;z-index:100;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;outline:none;color:#fff;cursor:crosshair;
  background:
    radial-gradient(ellipse 70% 50% at 50% 60%,oklch(0.36 0.16 345 / .7),transparent 70%),
    radial-gradient(ellipse 100% 45% at 50% 112%,oklch(0.55 0.16 234 / .45),transparent 70%),
    var(--night)}
.game[hidden]{display:none}
.game::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;background:repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 4px)}
.g-stage{position:absolute;inset:0}
.g-stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.g-pops{position:absolute;inset:0;pointer-events:none;z-index:3}
.pop{position:absolute;transform:translate(-50%,-50%);font-family:var(--cond);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;animation:pop-up 1s cubic-bezier(.2,1.2,.4,1) forwards}
.p-pt{font-size:1.5rem;color:#fff;text-shadow:-2px 2px 0 var(--pink)}
.p-combo{font-size:clamp(1.6rem,4vw,2.4rem);color:var(--dark);background:var(--yellow);padding:.25em .5em .2em;border-radius:3px;box-shadow:-3px 3px 0 var(--primary);rotate:-4deg}
.p-miss{font-size:2rem;color:#ff4b5c;text-shadow:-2px 2px 0 var(--dark)}
@keyframes pop-up{0%{opacity:0;transform:translate(-50%,-30%) scale(.6)}15%{opacity:1;transform:translate(-50%,-50%) scale(1.1)}70%{opacity:1}100%{opacity:0;transform:translate(-50%,-120%) scale(1)}}
.g-hud{position:absolute;inset:0 0 auto;z-index:7;display:flex;align-items:center;gap:1rem;padding:max(.8rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) 0 max(1rem,env(safe-area-inset-left));pointer-events:none}
.g-score{font-family:var(--cond);font-size:clamp(2.6rem,6vw,3.6rem);line-height:1;color:var(--yellow);text-shadow:-3px 3px 0 var(--pink);min-width:3ch}
.g-lives{display:flex;gap:.35rem;margin-left:auto}
.g-lives i{width:30px;height:20px;background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 24'%3E%3Cpath d='M2 3a18 18 0 0 0 36 0z' fill='%233a6128'/%3E%3Cpath d='M4.5 3a15.5 15.5 0 0 0 31 0z' fill='%23a6de8a'/%3E%3Cpath d='M6 3a14 14 0 0 0 28 0z' fill='%23f3f3d2'/%3E%3Cpath d='M13 3a7 6 0 0 0 14 0z' fill='%23ecd98f'/%3E%3C/svg%3E");transition:opacity .3s,filter .3s,transform .3s}
.g-lives i.is-lost{opacity:.25;filter:grayscale(1);transform:scale(.8)}
.g-lives.is-hit{animation:shake .35s linear}
@keyframes shake{20%{transform:translate(-5px,2px)}40%{transform:translate(5px,-2px)}60%{transform:translate(-3px,1px)}80%{transform:translate(2px,0)}}
.g-close{pointer-events:auto;width:46px;height:46px;flex:none;display:grid;place-items:center;border-radius:50%;border:1.5px solid rgba(232,248,255,.45);background:rgba(11,0,6,.45);color:#fff;cursor:pointer}
.g-close svg{width:22px;height:22px}
.g-close:hover{background:rgba(232,248,255,.15)}
.game.is-boom::after{content:"";position:absolute;inset:0;z-index:5;pointer-events:none;background:radial-gradient(circle,#fff 0%,rgba(255,200,120,.6) 40%,transparent 80%);animation:boom .5s ease-out forwards}
@keyframes boom{from{opacity:1}to{opacity:0}}

.g-panel{position:absolute;inset:0;z-index:6;display:grid;place-items:center;padding:4.5rem 1rem 1.5rem;overflow-y:auto;background:rgba(11,0,6,.45);touch-action:pan-y;cursor:default}
.g-panel[hidden]{display:none}
.g-card{width:min(460px,100%);padding:clamp(1.3rem,4vw,2rem);background:var(--light);color:var(--dark);border-radius:8px;border:2.5px solid var(--dark);box-shadow:-8px 8px 0 var(--pink);text-align:center;animation:card-in .45s cubic-bezier(.3,1.4,.5,1) both}
@keyframes card-in{from{opacity:0;transform:translateY(24px) rotate(-2deg) scale(.95)}}
.g-h{font-family:var(--cond);font-weight:400;text-transform:uppercase;letter-spacing:.05em;line-height:.95;font-size:clamp(2.4rem,9vw,3.4rem);text-shadow:-3px 3px 0 var(--yellow)}
.g-h span{color:var(--primary)}
.g-how{margin:.8rem auto 1.2rem;max-width:34ch;font-size:1rem}
.g-card .btn{box-shadow:-3px 3px 0 var(--dark)}
.g-card .btn-ghost{color:var(--dark);border-color:var(--dark);background:transparent}
.g-card .btn-ghost:hover{background:rgba(11,0,6,.06)}
.g-top{margin-top:1.4rem}
.g-top h3{font-family:var(--cond);font-weight:400;text-transform:uppercase;letter-spacing:.12em;font-size:1.05rem;color:var(--primary)}
.g-top .board{margin-top:.5rem}
.g-top .board li{padding:.35rem .6rem;font-size:.95rem}
.g-top .b-pos{width:1.7rem;height:1.7rem;font-size:.95rem;transform:translateY(.2rem)}
.g-top .b-score{font-size:1.25rem}
.g-final{margin-top:.6rem;font-weight:600}
.g-final b{display:block;font-family:var(--cond);font-weight:400;font-size:clamp(4rem,16vw,5.5rem);line-height:.95;color:var(--primary);text-shadow:-4px 4px 0 var(--pink)}
.g-form{margin-top:1.1rem}
.g-form[hidden]{display:none}
.g-form label{display:block;font-weight:600;margin-bottom:.4rem}
.g-row{display:flex;gap:.5rem;justify-content:center}
.g-row input{width:9.5em;min-width:0;font:inherit;font-weight:600;font-size:1.05rem;padding:.65rem .9rem;border:2px solid var(--dark);border-radius:2em;background:#fff;color:var(--dark);-webkit-user-select:text;user-select:text}
.g-row input:focus{outline:3px solid var(--primary);outline-offset:1px}
.g-msg{min-height:1.4em;margin-top:.7rem;font-size:.95rem}
.g-msg.is-ok{font-weight:650;font-size:1.1rem}
.g-msg.is-off{opacity:.7;font-size:.88rem}
.g-actions{margin-top:1.3rem;display:flex;flex-wrap:wrap;gap:.6rem;justify-content:center}

/* ---------- RESPONSIVE ---------- */
@media (max-width:960px){
  .steps,.tickets{grid-template-columns:1fr}
  .princ{grid-template-columns:repeat(2,1fr)}
  .start{grid-template-columns:1fr}
}
@media (max-width:560px){
  .top-name{font-size:.95rem}
  .top-cta{font-size:.85rem;padding:.5rem .85rem}
  .princ li{min-height:7.5rem;font-size:1.25rem}
  .feet{flex-direction:column;align-items:flex-start}
  .skip{left:1rem;transform:none;flex-direction:column;align-items:flex-start;gap:.5rem;max-width:calc(100% - 12rem)}
  .deco-1{top:auto;bottom:22%;right:3%;width:56px}
  .deco-2{top:auto;bottom:12%;left:3%;width:52px}
}
@media (max-width:380px){.top-name{display:none}}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .hint-dot{display:none}
}
