:root{
  --night:#0b0618; --violet:#2a1050; --lava:#ff5a1f; --gold:#ffc93c; --turq:#2ee6c9; --cop:#ff2d6f; --stone:#8b8178; --cream:#fff4e0;
  --a0:#ff5a1f; --a1:#14b8a6; --a2:#e8336d; --a3:#e9a21f;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{width:100%;height:100%;background:#000;overflow:hidden;font-family:Rubik,system-ui,sans-serif;color:var(--cream);cursor:default}
#stage{position:absolute;left:50%;top:50%;width:1920px;height:1080px;transform-origin:center;overflow:hidden;background:#04030d}
#stage canvas{position:absolute;inset:0}
#fxc{pointer-events:none;z-index:40}
#scene{position:absolute;inset:0;z-index:20}
#hud{position:absolute;inset:0;z-index:25;pointer-events:none}
#hud *{pointer-events:auto}
.hidden{display:none!important}

/* ---------- moái ---------- */
#moaiWrap{position:absolute;z-index:15;width:400px;height:640px;left:50%;top:50%;transition:transform 1.4s cubic-bezier(.6,-0.1,.25,1.15), opacity .8s;transform-origin:center;will-change:transform}
#moaiWrap svg{width:100%;height:100%;overflow:visible}
.m-hidden{transform:translate(-50%,120%) scale(1.2)}
.m-center{transform:translate(-50%,-46%) scale(1.45)}
.m-intro{transform:translate(-50%,-50%) scale(1.55)}
.m-left{transform:translate(-50%,-50%) translate(-740px,60px) scale(.8)}
.m-right{transform:translate(-50%,-50%) translate(690px,60px) scale(.95)}
.m-corner{transform:translate(-50%,-50%) translate(-810px,-300px) scale(.42)}
.m-low{transform:translate(-50%,-50%) translate(-760px,250px) scale(.6)}



/* ---------- subtítulos ---------- */
#subtitle{position:absolute;z-index:30;left:50%;bottom:170px;transform:translateX(-50%);max-width:1300px;padding:14px 28px;border-radius:18px;background:rgba(8,3,16,.62);text-align:center;font:600 34px/1.3 Rubik;color:#fff;text-shadow:0 2px 0 #000,0 0 18px #000;opacity:0;transition:opacity .3s}
#subtitle.on{opacity:1}
#subtitle b{color:var(--gold);font-family:Cinzel;font-weight:900;letter-spacing:.06em;margin-right:12px}

/* ---------- logo ---------- */
.logo{display:flex;flex-direction:column;align-items:center;line-height:.9}
.logo span{font-family:'Cinzel Decorative',serif;font-weight:900;font-size:200px;letter-spacing:.06em;background:linear-gradient(180deg,#fff6d0 0%,#ffc93c 35%,#ff5a1f 70%,#9b1b0a 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 6px 0 #3b0d05) drop-shadow(0 0 40px rgba(255,120,40,.6))}
.logo small{font-family:Cinzel;font-weight:800;font-size:38px;letter-spacing:.45em;color:var(--cream);margin-top:10px;text-shadow:0 0 20px rgba(255,140,60,.7)}
.logo.mid span{font-size:110px}.logo.mid small{font-size:22px}
.logo.sm span{font-size:64px}.logo.sm small{font-size:13px;letter-spacing:.35em;margin-top:4px}

/* ---------- pantalla inicio ---------- */
#start{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 80%,#5a1408 0%,#1a0718 45%,#05030c 100%)}
.startInner{display:flex;flex-direction:column;align-items:center;gap:40px;text-align:center}
#start .logo span{font-size:min(22vw,220px)}
#startBtn{font:900 30px Cinzel;letter-spacing:.12em;text-transform:uppercase;padding:26px 60px;border-radius:999px;border:0;cursor:pointer;color:#2a0a02;background:linear-gradient(180deg,#ffe08a,#ff9a2e 50%,#e2470f);box-shadow:0 0 0 4px rgba(255,200,120,.25),0 0 60px rgba(255,100,30,.6);animation:breathe 2.4s ease-in-out infinite}
#startBtn:hover{filter:brightness(1.1)}
.hint{color:#cdb8c8;font-size:18px;max-width:560px}
@keyframes breathe{50%{transform:scale(1.05);box-shadow:0 0 0 8px rgba(255,200,120,.15),0 0 90px rgba(255,100,30,.8)}}

/* ---------- HUD ---------- */
#roomTag{position:absolute;right:36px;top:28px;font:800 26px Rubik;letter-spacing:.08em;padding:10px 20px;border-radius:14px;background:rgba(10,4,20,.6);border:2px solid rgba(255,201,60,.35);color:var(--gold);opacity:.85}
#roomTag small{color:#bba;font-weight:600;letter-spacing:.02em;margin-right:8px;font-size:18px}
#timer{position:absolute;right:60px;top:110px;width:150px;height:150px}
#timer svg{width:100%;height:100%;transform:rotate(-90deg)}
#timer .tr{fill:rgba(10,4,20,.7);stroke:rgba(255,255,255,.12);stroke-width:10}
#timer .tp{fill:none;stroke:var(--gold);stroke-width:10;stroke-linecap:round;stroke-dasharray:327;transition:stroke .3s}
#timer.low .tp{stroke:var(--cop)}
#timer.low{animation:pulse .5s infinite}
#timerNum{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:900 60px Rubik}
@keyframes pulse{50%{transform:scale(1.08)}}
#bar{position:absolute;left:0;right:0;bottom:22px;display:flex;justify-content:center;gap:14px;transition:transform .6s cubic-bezier(.5,0,.2,1.3)}
#bar.off{transform:translateY(220px)}
.pb{position:relative;width:118px;display:flex;flex-direction:column;align-items:center;gap:6px;transition:transform .3s}
.pb .av{width:92px;height:92px}
.pb .nm{font:800 18px Rubik;max-width:118px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 2px 4px #000}
.pb .sc{font:700 16px Rubik;color:var(--gold);text-shadow:0 2px 4px #000}
.pb.done .av{box-shadow:0 0 0 5px var(--turq),0 0 30px var(--turq)}
.pb.done::after{content:"✓";position:absolute;top:-8px;right:4px;width:34px;height:34px;border-radius:50%;background:var(--turq);color:#032;font:900 22px/34px Rubik;text-align:center;animation:popIn .3s}
.pb.off{opacity:.35;filter:grayscale(1)}
.pb .curse{position:absolute;top:-14px;left:0;font-size:30px;animation:wob 1s infinite}
.pb .gain{position:absolute;top:-40px;font:900 30px Rubik;color:var(--gold);text-shadow:0 0 12px #000,0 2px 0 #000;animation:floatUp 2.2s forwards}
.pb .tteam{position:absolute;bottom:58px;right:6px;font-size:24px}
@keyframes floatUp{0%{opacity:0;transform:translateY(20px) scale(.6)}15%{opacity:1;transform:translateY(0) scale(1.15)}80%{opacity:1}100%{opacity:0;transform:translateY(-40px)}}
@keyframes popIn{from{transform:scale(0)}to{transform:scale(1)}}
@keyframes wob{50%{transform:rotate(15deg) scale(1.15)}}

/* ---------- avatar ---------- */
.av{position:relative;border-radius:50%;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.25),rgba(0,0,0,.25)),var(--pc,#555);display:flex;align-items:center;justify-content:center;overflow:hidden;box-shadow:0 0 0 4px var(--pc,#555),0 8px 18px rgba(0,0,0,.5);flex:none}
.av img{width:100%;height:100%;object-fit:cover}
.av{container-type:size}.av .em{font-size:62cqw;line-height:1}

/* ---------- escenas comunes ---------- */
.center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.panel{background:linear-gradient(180deg,rgba(30,12,50,.85),rgba(12,5,24,.9));border:2px solid rgba(255,201,60,.25);border-radius:28px;box-shadow:0 20px 60px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.08)}
.stoneTitle{font-family:Cinzel;font-weight:900;letter-spacing:.06em;text-transform:uppercase;background:linear-gradient(180deg,#fff3d6,#ffc93c 50%,#e2601f);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 4px 0 #3b0d05) drop-shadow(0 0 30px rgba(255,120,40,.5))}
.enter{animation:enter .7s cubic-bezier(.3,1.4,.5,1) both}
.fadeIn{animation:fadeIn .6s both}
@keyframes enter{from{opacity:0;transform:translateY(60px) scale(.85)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slam{0%{opacity:0;transform:scale(3) rotate(-4deg)}60%{opacity:1;transform:scale(.95)}100%{transform:scale(1)}}

/* lobby */
.lobby{position:absolute;inset:0}
.lobby .logoBox{position:absolute;top:40px;left:0;right:0;display:flex;justify-content:center}
.lobby .join{position:absolute;left:90px;top:300px;width:520px;padding:34px;display:flex;flex-direction:column;align-items:center;gap:18px}
.lobby .qr{width:380px;height:380px;border-radius:22px;background:#fff4e0;padding:14px;box-shadow:0 0 0 6px #ffc93c55,0 0 60px rgba(255,180,60,.4)}
.lobby .qr img{width:100%;height:100%}
.lobby .url{font:600 22px Rubik;color:#d8c8dd}
.lobby .code{font:900 64px Rubik;letter-spacing:.2em;color:var(--gold)}
.lobby .grid{position:absolute;left:680px;right:520px;top:300px;bottom:150px;display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:170px;gap:16px;align-content:start}
.lobby .slot{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border-radius:22px;border:2px dashed rgba(255,255,255,.12);background:rgba(10,4,20,.35)}
.lobby .slot .av{width:100px;height:100px;animation:popIn .5s cubic-bezier(.3,1.6,.5,1)}
.lobby .slot .nm{font:800 22px Rubik;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lobby .slot.filled{border:2px solid rgba(255,255,255,.15);background:rgba(30,12,50,.6)}
.lobby .slot.empty .q{font:900 48px Cinzel;color:rgba(255,255,255,.1)}
.lobby .teams{position:absolute;left:680px;right:520px;top:300px;bottom:190px;display:flex;gap:18px}
.lobby .team{flex:1;padding:18px;display:flex;flex-direction:column;gap:12px;border-radius:24px;background:rgba(10,4,20,.5);border:3px solid var(--tc)}
.lobby .team h3{font:900 34px Cinzel;color:var(--tc);text-align:center}
.lobby .team .mem{display:flex;align-items:center;gap:14px;font:800 22px Rubik}
.lobby .team .mem .av{width:58px;height:58px}
.lobby .opts{position:absolute;left:680px;bottom:50px;display:flex;gap:16px;align-items:center}
.opt{font:800 22px Rubik;padding:14px 24px;border-radius:16px;border:2px solid rgba(255,255,255,.18);background:rgba(10,4,20,.6);color:#ddd;cursor:pointer}
.opt.on{background:var(--gold);color:#2a0a02;border-color:var(--gold)}
.goBtn{font:900 28px Cinzel;letter-spacing:.1em;padding:18px 40px;border-radius:999px;border:0;cursor:pointer;color:#2a0a02;background:linear-gradient(180deg,#ffe08a,#ff9a2e 50%,#e2470f);box-shadow:0 0 40px rgba(255,100,30,.6)}
.goBtn:disabled{filter:grayscale(1) brightness(.6);cursor:default}
.lobby .count{font:700 22px Rubik;color:#cbb}

/* wipe title */
#wipeTitle{position:absolute;inset:0;z-index:45;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;text-align:center}
#wipeTitle .k{font:800 40px Cinzel;letter-spacing:.5em;color:#3b0a02;opacity:.85;animation:slam .6s both}
#wipeTitle .t{font:900 150px/1 Cinzel;letter-spacing:.04em;color:#fff4d0;text-shadow:0 8px 0 #7a1405,0 0 60px #ffcf6e;animation:slam .7s .1s both;max-width:1700px}
#wipeTitle .s{font:700 40px Rubik;color:#2a0602;margin-top:24px;animation:fadeIn .6s .5s both}

/* categorías */
.cats{display:flex;gap:44px;margin-top:40px}
.cat{width:400px;height:420px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;border-radius:30px;background:linear-gradient(170deg,#3a1666,#16082a);border:3px solid rgba(255,201,60,.4);box-shadow:0 20px 50px rgba(0,0,0,.6);transition:all .7s cubic-bezier(.5,0,.2,1.3)}
.cat .ic{font-size:130px;filter:drop-shadow(0 8px 12px rgba(0,0,0,.5))}
.cat .cn{font:900 40px/1.1 Cinzel;text-align:center;padding:0 20px}
.cat.chosen{transform:scale(1.25);border-color:var(--gold);box-shadow:0 0 0 6px var(--gold),0 0 120px rgba(255,200,60,.8)}
.cat.gone{opacity:0;transform:translateY(300px) rotate(10deg) scale(.7)}
.pickerTag{display:flex;align-items:center;gap:22px;font:800 46px Rubik}
.pickerTag .av{width:110px;height:110px}

/* pregunta */
.qwrap{position:absolute;left:330px;right:250px;top:110px;display:flex;flex-direction:column;align-items:center;gap:34px}
.qmeta{display:flex;gap:18px;align-items:center;font:800 26px Rubik;color:#e9d}
.qmeta .chip{padding:10px 22px;border-radius:999px;background:rgba(255,201,60,.15);border:2px solid rgba(255,201,60,.4);color:var(--gold)}
.qtext{font:800 64px/1.18 Rubik;text-align:center;text-shadow:0 4px 0 rgba(0,0,0,.5);max-width:1300px}
.qtext.small{font-size:52px}
.answers{display:grid;grid-template-columns:1fr 1fr;gap:26px;width:1300px;margin-top:20px}
.ans{position:relative;display:flex;align-items:center;gap:22px;min-height:120px;padding:18px 28px;border-radius:24px;font:800 42px/1.1 Rubik;color:#fff;background:var(--ac);box-shadow:0 10px 0 rgba(0,0,0,.35),inset 0 2px 0 rgba(255,255,255,.3);animation:enter .5s both;transition:all .5s}
.ans .sym{width:72px;height:72px;flex:none;filter:drop-shadow(0 3px 0 rgba(0,0,0,.3))}
.ans.dim{opacity:.22;filter:grayscale(.8);transform:scale(.96)}
.ans.right{transform:scale(1.06);box-shadow:0 0 0 6px #fff,0 0 60px var(--ac),0 10px 0 rgba(0,0,0,.35);z-index:2}
.ans .pickers{position:absolute;right:-14px;top:-28px;display:flex}
.ans .pickers .av{width:58px;height:58px;margin-left:-14px;animation:popIn .4s cubic-bezier(.3,1.6,.5,1) both}
.fact{margin-top:20px;max-width:1200px;text-align:center;font:600 34px/1.3 Rubik;color:#ffe9c4;padding:20px 36px;border-radius:20px;background:rgba(0,0,0,.4);border-left:6px solid var(--gold)}

/* marcador */
.scores{position:absolute;left:380px;right:200px;top:80px;bottom:60px;display:flex;flex-direction:column;align-items:center;gap:20px}
.rows{position:relative;width:1100px;flex:1}
.row{position:absolute;left:0;right:0;height:64px;display:flex;align-items:center;gap:20px;padding:0 24px;border-radius:18px;background:rgba(20,8,40,.75);border:2px solid rgba(255,255,255,.08);transition:top .9s cubic-bezier(.6,0,.2,1.2)}
.row .rk{width:52px;font:900 34px Cinzel;color:var(--gold);text-align:center}
.row .av{width:48px;height:48px}
.row .nm{font:800 30px Rubik;width:280px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .bar{flex:1;height:22px;border-radius:12px;background:rgba(255,255,255,.07);overflow:hidden}
.row .bar i{display:block;height:100%;width:0;border-radius:12px;background:linear-gradient(90deg,var(--pc),#fff);transition:width 1.2s cubic-bezier(.5,0,.2,1)}
.row .pts{width:150px;text-align:right;font:900 34px Rubik}
.row .gn{position:absolute;right:-110px;font:900 28px Rubik;color:var(--turq);animation:fadeIn .4s both}
.row.first{background:linear-gradient(90deg,rgba(255,201,60,.35),rgba(20,8,40,.75));border-color:var(--gold)}
.teamScores{display:flex;gap:26px}
.tscore{min-width:300px;padding:18px 30px;border-radius:24px;text-align:center;background:rgba(10,4,20,.6);border:3px solid var(--tc)}
.tscore h4{font:900 32px Cinzel;color:var(--tc)}
.tscore b{font:900 60px Rubik}
.tscore small{display:block;color:var(--turq);font:800 24px Rubik}

/* maldiciones */
.curseScreen{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:30px;background:radial-gradient(ellipse at center,rgba(120,0,20,.25),rgba(20,0,5,.7))}
.curseScreen .big{font:900 130px Cinzel;color:#ff2a3d;text-shadow:0 0 50px #ff0020,0 6px 0 #3a0008;animation:slam .6s both}
.cast{display:flex;align-items:center;gap:70px}
.cast .who{display:flex;flex-direction:column;align-items:center;gap:14px;font:800 36px Rubik}
.cast .who .av{width:170px;height:170px}
.cast .arrow{font-size:110px;animation:zap .5s infinite alternate}
.cast .card{width:430px;padding:30px;border-radius:30px;text-align:center;background:linear-gradient(170deg,#4a0a1c,#14030a);border:4px solid #ff2a3d;box-shadow:0 0 80px rgba(255,30,60,.7);animation:slam .6s .3s both}
.cast .card .ci{font-size:150px}
.cast .card .cn{font:900 50px Cinzel;color:#ffd0d6}
.cast .card .cd{font:600 24px Rubik;color:#e6b;margin-top:10px}
.cast .victim .av{animation:victim 1.2s .8s both}
@keyframes zap{from{transform:translateX(-12px) scale(.95)}to{transform:translateX(12px) scale(1.08)}}
@keyframes victim{0%{filter:none}30%{filter:brightness(2) hue-rotate(-30deg);transform:scale(1.1) rotate(-6deg)}60%{transform:scale(.95) rotate(5deg)}100%{filter:grayscale(.4) sepia(.5) hue-rotate(-30deg);transform:none}}
.cracks{position:absolute;inset:0;pointer-events:none}
.cracks path{fill:none;stroke:#ffb0a0;stroke-width:4;filter:drop-shadow(0 0 8px #ff2040);stroke-dasharray:1600;stroke-dashoffset:1600;animation:draw .6s forwards}
@keyframes draw{to{stroke-dashoffset:0}}

/* minijuegos */
.countdown{font:900 420px Cinzel;color:#fff4d0;text-shadow:0 0 80px #ff7a1a,0 12px 0 #7a1405;animation:slam .5s both}
.volcs{position:absolute;left:300px;right:120px;bottom:190px;top:220px;display:flex;justify-content:center;align-items:flex-end;gap:22px}
.volc{position:relative;flex:1;max-width:150px;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end}
.volc .tube{position:relative;width:76%;height:82%;border-radius:20px 20px 10px 10px;background:linear-gradient(90deg,#1b0e24,#2b1838,#1b0e24);border:3px solid rgba(255,255,255,.12);overflow:hidden}
.volc .lava{position:absolute;left:0;right:0;bottom:0;height:0;background:linear-gradient(0deg,#8b1505,#ff3d00 40%,#ffb02e 92%,#fff1c1);box-shadow:0 0 30px #ff5a1f;transition:height .15s linear}
.volc .lava::before{content:"";position:absolute;left:-10%;right:-10%;top:-10px;height:20px;border-radius:50%;background:#ffd36e;filter:blur(2px)}
.volc .cnt{font:900 36px Rubik;margin-top:8px}
.volc .av{width:80px;height:80px;margin-top:10px}
.volc.win .tube{box-shadow:0 0 0 4px var(--gold),0 0 60px var(--gold)}
.numline{position:relative;width:1300px;height:260px;margin-top:40px}
.numline .axis{position:absolute;left:0;right:0;top:150px;height:8px;border-radius:4px;background:linear-gradient(90deg,rgba(255,255,255,.1),rgba(255,255,255,.4),rgba(255,255,255,.1))}
.numline .mk{position:absolute;top:58px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:4px;transition:left 1s cubic-bezier(.5,0,.2,1.2)}
.numline .mk .av{width:64px;height:64px}
.numline .mk span{font:800 20px Rubik;white-space:nowrap;background:rgba(0,0,0,.6);padding:2px 10px;border-radius:8px}
.numline .truth{position:absolute;top:0;bottom:0;width:6px;margin-left:-3px;background:var(--gold);box-shadow:0 0 30px var(--gold);animation:fadeIn .6s both}
.bigNum{font:900 150px Rubik;color:var(--gold);text-shadow:0 0 50px rgba(255,200,60,.6)}
.ordItems{display:flex;gap:26px;margin-top:30px}
.ordItem{width:320px;min-height:180px;padding:22px;border-radius:24px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;font:800 34px/1.15 Rubik;background:linear-gradient(170deg,#2c1452,#140828);border:3px solid rgba(255,255,255,.15);transition:all .8s cubic-bezier(.5,0,.2,1.3)}
.ordItem .n{font:900 50px Cinzel;color:var(--gold)}
.ordItem .lb{font:700 26px Rubik;color:var(--turq)}
.doors{display:flex;gap:60px;margin-top:20px}
.door{position:relative;width:360px;height:560px;perspective:1200px}
.door .frame{position:absolute;inset:-18px;border-radius:30px 30px 8px 8px;background:linear-gradient(180deg,#6b6158,#3a332e);box-shadow:0 20px 50px rgba(0,0,0,.7)}
.door .inside{position:absolute;inset:0;border-radius:22px 22px 4px 4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#0c0410;overflow:hidden}
.door .inside .pz{font-size:130px}
.door .inside .pv{font:900 54px Rubik}
.door .inside .who{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;max-width:320px}
.door .inside .who .av{width:56px;height:56px}
.door .leaf{position:absolute;inset:0;border-radius:22px 22px 4px 4px;transform-origin:left center;transition:transform 1.4s cubic-bezier(.6,0,.2,1);background:repeating-linear-gradient(0deg,#7f756b 0 60px,#6d645b 60px 64px),#7f756b;display:flex;align-items:center;justify-content:center;font:900 140px Cinzel;color:rgba(30,20,15,.55);box-shadow:inset 0 0 60px rgba(0,0,0,.5);backface-visibility:hidden}
.door.open .leaf{transform:rotateY(-105deg)}
.door.tesoro .inside{background:radial-gradient(circle,#7a5300,#1a0d00);box-shadow:inset 0 0 80px #ffc93c}
.door.migajas .inside{background:radial-gradient(circle,#3a3550,#0c0814)}
.door.maldicion .inside{background:radial-gradient(circle,#6a0012,#120004);box-shadow:inset 0 0 80px #ff1f3a}
.tf{display:flex;gap:60px;margin-top:40px}
.tfSide{width:560px;height:300px;border-radius:30px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;font:900 64px Cinzel;transition:all .5s}
.tfSide.v{background:linear-gradient(170deg,#0f8f80,#064a43);border:4px solid var(--turq)}
.tfSide.f{background:linear-gradient(170deg,#b0174d,#4d0620);border:4px solid var(--cop)}
.tfSide.dim{opacity:.2;transform:scale(.92)}
.tfSide.right{transform:scale(1.06);box-shadow:0 0 80px currentColor}
.tfSide .who{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:500px;min-height:60px}
.tfSide .who .av{width:56px;height:56px;animation:popIn .4s both}
.tfBar{width:1180px;height:16px;border-radius:8px;background:rgba(255,255,255,.1);overflow:hidden;margin-top:20px}
.tfBar i{display:block;height:100%;width:100%;background:linear-gradient(90deg,var(--cop),var(--gold));transform-origin:left}

/* final */
.mountain{position:absolute;left:900px;right:30px;top:40px;bottom:20px}
.mountain svg{position:absolute;inset:0;width:100%;height:100%}
.token{position:absolute;transform:translate(-50%,-100%);transition:left .5s cubic-bezier(.4,0,.3,1.4),top .5s cubic-bezier(.4,0,.3,1.4);display:flex;flex-direction:column;align-items:center;z-index:3}
.token .av{width:74px;height:74px}
.token .tb{width:96px;height:96px;border-radius:24px;display:flex;align-items:center;justify-content:center;font-size:56px;background:var(--tc);box-shadow:0 0 0 4px #fff,0 0 30px var(--tc)}
.token .mv{position:absolute;top:-40px;font:900 30px Rubik;text-shadow:0 2px 0 #000;animation:floatUp 2.2s forwards}
.fprompt{position:absolute;left:70px;width:820px;top:110px;text-align:center;font:900 52px/1.15 Rubik;text-shadow:0 4px 0 rgba(0,0,0,.6)}
.fitems{position:absolute;left:70px;width:820px;top:330px;display:grid;grid-template-columns:1fr 1fr;gap:18px;z-index:4}
.fitem{padding:18px 12px;border-radius:18px;text-align:center;font:800 30px/1.1 Rubik;background:rgba(30,12,60,.88);border:3px solid rgba(255,255,255,.18);transition:all .5s;animation:enter .5s both}
.fitem.ok{background:linear-gradient(170deg,#11a38f,#065248);border-color:var(--turq);transform:scale(1.05)}
.fitem.no{opacity:.35;text-decoration:line-through}
.fitem .cnt{display:block;font:700 18px Rubik;color:#fde;margin-top:6px}

/* victoria */
.victory{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px}
.victory .crown{font-size:120px;animation:slam .6s 1s both}
.victory .winAv{width:300px;height:300px;animation:slam .9s .4s both;box-shadow:0 0 0 10px var(--gold),0 0 140px var(--gold)!important}
.victory .winName{font:900 110px Cinzel;animation:enter .8s 1.2s both}
.victory .podium{display:flex;gap:18px;align-items:flex-end;margin-top:20px;flex-wrap:wrap;justify-content:center;max-width:1600px}
.victory .pod{display:flex;flex-direction:column;align-items:center;gap:6px;font:800 22px Rubik;animation:enter .6s both}
.victory .pod .av{width:70px;height:70px}
.victory .pod b{color:var(--gold)}
.victory .again{margin-top:30px;animation:fadeIn 1s 4s both}
.shake{animation:shk .5s}
@keyframes shk{20%{transform:translate(-14px,6px)}40%{transform:translate(12px,-8px)}60%{transform:translate(-8px,4px)}80%{transform:translate(6px,-3px)}}
#moai{position:absolute;inset:0}
#moai .ml{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
#moai img.ml{will-change:transform}
.mglow{opacity:.55;position:absolute;left:-40%;right:-40%;top:-10%;bottom:-10%;background:radial-gradient(ellipse at 50% 50%,rgba(255,110,40,.35),rgba(255,60,20,.12) 40%,transparent 68%);transition:opacity .5s;pointer-events:none}
#moaiWrap.talk .mglow{opacity:1}

#subtitle.top{bottom:auto;top:30px}

/* ===== V2: personajes ===== */
.pb .chw{width:84px;height:126px;margin:-10px 0 -12px}
.pb .nm{font-size:17px}
.pb .curse{z-index:2}
.pb.done::after{top:2px}
.lobby .slot{gap:2px}
.lobby .slot .chw{width:96px;height:144px;margin-top:-6px}
.lobby .grid{grid-auto-rows:190px}
.lobby .slot .nm{font-size:20px;margin-top:-6px}
.av svg.ch{width:118%;height:118%;margin-top:4%}
.chw.big{width:240px;height:360px}
.who .chw.big{width:200px;height:300px}
/* duelo de maldición */
.curseScreen.v2{justify-content:flex-start;padding-top:70px}
.ccard{display:flex;align-items:center;gap:26px;padding:22px 40px;border-radius:28px;background:linear-gradient(170deg,#4a0a1c,#14030a);border:4px solid #ff2a3d;box-shadow:0 0 80px rgba(255,30,60,.6)}
.ccard .ci{font-size:96px}.ccard .cn{font:900 58px Cinzel;color:#ffd0d6}.ccard .cd{font:600 26px Rubik;color:#e6b}
.duel{position:absolute;left:0;right:0;top:290px;display:flex;justify-content:center;align-items:flex-end;gap:260px}
.duel .side{display:flex;flex-direction:column;align-items:center;gap:10px;font:900 40px Rubik;text-shadow:0 3px 0 #000}
.duel .side .chw{width:260px;height:390px}
.duel .vs{font-size:110px;align-self:center;animation:zap .5s infinite alternate;filter:drop-shadow(0 0 20px #ff2040)}
.pjw{position:absolute;left:0;top:0;z-index:30;pointer-events:none;will-change:transform}
.pj{width:70px;height:70px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.pj-ash{background:radial-gradient(circle at 35% 35%,#8a8590,#3a3540 60%,#1d1a22);box-shadow:0 0 30px #000}
.pj-ice{font-size:80px;color:#e9fdff;text-shadow:0 0 30px #62e1ff,0 0 60px #62e1ff}
.pj-wave{width:220px;height:50px;border-radius:50%;border:8px solid #c9a46a;box-shadow:0 0 30px #8b6b4a,inset 0 0 20px #8b6b4a;background:transparent}
.pj-fog{width:180px;height:100px;background:radial-gradient(ellipse,#f2f2fa 0%,#d6d6e6 50%,transparent 70%);filter:blur(2px)}
.pj-spit{width:56px;height:56px;background:radial-gradient(circle at 35% 35%,#f4ffd6,#c9e78f 50%,#8fb54a);box-shadow:0 0 20px #c9e78f}
.pj-orb{background:radial-gradient(circle at 35% 35%,#f3ddff,#c56bff 50%,#4a1a7a);font:900 44px Rubik;color:#fff;box-shadow:0 0 40px #c56bff}
/* tiempos */
.times{position:absolute;inset:0}
.times .stoneTitle{position:absolute;top:70px;left:0;right:0;text-align:center}
.times .track{position:absolute;left:120px;right:120px;top:640px;height:16px;border-radius:8px;background:linear-gradient(90deg,rgba(255,255,255,.05),rgba(255,201,60,.5));box-shadow:0 0 30px rgba(255,201,60,.25)}
.tslot{position:absolute;top:330px;display:flex;flex-direction:column;align-items:center;gap:8px;opacity:0;transform:translateX(-260px) scale(.7);transition:opacity .35s,transform .55s cubic-bezier(.3,1.5,.5,1)}
.tslot.in{opacity:1;transform:none}
.tslot .chw{width:130px;height:195px}
.tslot .tbadge{font:900 30px Rubik;padding:6px 14px;border-radius:14px;background:rgba(10,4,20,.75);border:2px solid rgba(255,255,255,.2)}
.tslot .tbadge.ok{color:var(--turq);border-color:var(--turq)}
.tslot .tbadge.bad{color:#ff8fa8}
.tslot .tname{font:800 22px Rubik;max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tslot.best{z-index:3}
.tslot.best .chw{width:160px;height:240px;margin-top:-60px;filter:drop-shadow(0 0 30px #ffc93c)}
.tslot.best .tbadge{background:var(--gold);color:#2a0a02;border-color:#fff;font-size:36px}
.tslot.best::before{content:"";position:absolute;left:50%;top:-300px;width:260px;height:760px;transform:translateX(-50%);background:linear-gradient(180deg,rgba(255,230,150,.35),transparent 80%);clip-path:polygon(40% 0,60% 0,100% 100%,0 100%);pointer-events:none;z-index:-1}
/* erupción */
.volc .chw{width:96px;height:144px;margin-top:-6px}
/* final */
.token .chw{width:64px;height:96px}
.chargers{position:absolute;left:0;top:0;width:900px;height:1080px}
.chTitle{position:absolute;left:60px;width:820px;top:60px;text-align:center;font-size:50px}
.charger{position:absolute;display:flex;flex-direction:column;align-items:center;opacity:.35;transition:opacity .3s}
.charger.on{opacity:1}
.charger .cwho .chw{width:72px;height:108px}
.charger .cwho .tb{width:80px;height:80px;font-size:48px}
.charger .mvol{width:min(120px,90%);height:auto;margin-top:-10px}
.charger .lv{transition:transform .9s cubic-bezier(.4,0,.2,1)}
.charger .cpts{font:900 28px Rubik;color:var(--gold)}
.charger .cnm{font:800 18px Rubik;max-width:130px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.flyer .chw{width:72px;height:108px}
.flyer .tb{width:80px;height:80px;border-radius:24px;display:flex;align-items:center;justify-content:center;font-size:48px;background:var(--tc)}
/* victoria */
.winFig .chw{width:300px;height:450px}
.winFig{margin-top:-30px;animation:slam .9s .4s both}
.victory .pod .chw{width:84px;height:126px}
.victory{gap:10px}
.victory .winName{font-size:96px}
.victory{justify-content:flex-end;padding-bottom:50px}
.winFig .chw{width:240px;height:360px}
.winFig{margin-top:0}

/* ===== V3 ===== */
.curseScreen.pickMode{justify-content:flex-start;padding-top:40px;gap:10px}
.curseScreen.pickMode .big{font-size:96px}
.cpWrap{display:flex;align-items:center;gap:80px;margin-top:10px}
.cpWrap .cast{gap:40px}
.cpWrap .who{position:relative}
.cstat{font:800 22px Rubik;color:#ffb3c0;padding:4px 14px;border-radius:12px;background:rgba(0,0,0,.45)}
.who.ready .cstat{color:#2a0a02;background:var(--gold)}
.who.ready .chw{filter:drop-shadow(0 0 20px #ff2040)}
.rankBox{width:560px;padding:20px 26px;border-radius:24px;background:rgba(12,4,20,.82);border:2px solid rgba(255,201,60,.35)}
.rankBox h4{font:900 30px Cinzel;color:var(--gold);margin-bottom:10px;text-align:center}
.miniRank{display:flex;flex-direction:column;gap:6px}
.mrRow{display:flex;align-items:center;gap:12px;font:800 24px Rubik;padding:3px 10px;border-radius:12px}
.mrRow.first{background:rgba(255,201,60,.18)}
.mrRow .rk{width:30px;font:900 24px Cinzel;color:var(--gold)}
.mrRow .av{width:40px;height:40px}
.mrRow .nm{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mrRow .pts{color:var(--gold)}
.mrTeams{display:flex;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.mrTeams span{font:800 20px Rubik;padding:4px 10px;border-radius:10px;border:2px solid var(--tc)}
/* final nueva */
.fq{position:absolute;left:50px;width:860px;top:60px;bottom:40px;display:flex;flex-direction:column;align-items:center;gap:22px;z-index:4}
.fqText{font:800 44px/1.2 Rubik;text-align:center;text-shadow:0 3px 0 rgba(0,0,0,.5)}
.answers.fin{width:840px;grid-template-columns:1fr 1fr;gap:16px;margin-top:4px}
.answers.fin .ans{min-height:96px;font-size:30px;padding:12px 18px;gap:12px}
.answers.fin .ans .sym{width:48px;height:48px}
.answers.fin .ans .pickers .av{width:44px;height:44px}
.rpod{display:flex;gap:22px;margin-top:6px}
.rp{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 18px;border-radius:20px;background:rgba(10,4,20,.8);border:2px solid var(--gold);min-width:150px}
.rp .rpn{font:900 30px Cinzel;color:var(--gold)}
.rp .av{width:70px;height:70px}
.rp .rpname{font:800 20px Rubik}
.rp b{font:900 34px Rubik;color:var(--turq)}
.rp small{font:700 16px Rubik;color:#cbb}
.fcurse{display:flex;flex-direction:column;align-items:center;gap:16px;margin-top:140px;text-align:center}
.fcurse p{font:700 26px Rubik;color:#ffd0d6;max-width:700px}
.fcList{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;max-width:820px}
.fcList .who{display:flex;flex-direction:column;align-items:center;gap:6px;font:800 20px Rubik}
.fcList .who .av{width:76px;height:76px}
.fcList .cstat{font-size:16px}
.fcList.big{flex-direction:column;align-items:center}
.castRow{display:flex;align-items:center;gap:16px;font:900 40px Rubik}
.castRow .av{width:70px;height:70px}
.castRow small{font:800 22px Rubik}
.lgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;width:1400px}
.lgrid .fitem{font-size:34px;padding:26px 14px}
.rules{display:flex;flex-direction:column;gap:12px;margin-top:24px;font:700 30px Rubik;text-align:left}
.rules b{color:var(--gold);font-family:Cinzel;font-size:34px;margin-right:8px}
.rules span{color:var(--turq);font-weight:900}
.chExplain{position:absolute;left:60px;width:820px;top:140px;text-align:center;font:700 24px/1.3 Rubik;color:#ffe9c4}
