﻿/* ============================================================
   screen.css — on-site big screen displays (4K friendly dark)
   ============================================================ */
:root{
  --gold:#fbbf24; --gold2:#f59e0b; --pink:#ec4899; --violet:#8b5cf6; --cyan:#22d3ee;
  --font:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
/* 真实二维码：老版 qrcode.js 同时生成 canvas 和 img，只显示一个 */
.qr canvas{display:block!important;width:100%!important;height:100%!important}
.qr img{display:none!important}
html,body{height:100%;overflow:hidden}
body{font-family:var(--font);color:#fff;background:#0d0824}
.screen{position:fixed;inset:0;display:flex;flex-direction:column;
  background:radial-gradient(1100px 600px at 80% -10%,#3b1d80 0%,transparent 58%),radial-gradient(900px 600px at 5% 110%,#831843 0%,transparent 55%),linear-gradient(160deg,#100a26,#1c0f40 55%,#241145);}
.screen::before{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);
  background-size:56px 56px;mask-image:radial-gradient(circle at 50% 40%,#000,transparent 82%)}
.particles{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.particles span{position:absolute;bottom:-40px;border-radius:50%;background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.9),rgba(255,255,255,.15));opacity:.5;animation:rise linear infinite}
@keyframes rise{to{transform:translateY(-110vh) translateX(40px);opacity:0}}

/* header */
.sc-head{position:relative;z-index:5;display:flex;align-items:center;gap:22px;padding:26px 46px 18px}
.sc-head .sc-logo{width:58px;height:58px;border-radius:16px;background:linear-gradient(135deg,#7c3aed,#db2777);display:grid;place-items:center;font-size:30px;box-shadow:0 10px 30px rgba(219,39,119,.45)}
.sc-head h1{font-size:34px;font-weight:900;letter-spacing:1px;text-shadow:0 4px 24px rgba(0,0,0,.4)}
.sc-head h1 small{display:block;font-size:14px;font-weight:600;letter-spacing:4px;color:rgba(255,255,255,.55);margin-top:2px}
.sc-head .sc-right{margin-left:auto;display:flex;align-items:center;gap:22px}
.sc-code{text-align:right;font-size:14px;color:rgba(255,255,255,.75)}
.sc-code b{font-size:30px;font-weight:900;letter-spacing:4px;background:linear-gradient(100deg,#f0abfc,#fdba74);-webkit-background-clip:text;background-clip:text;color:transparent;display:block;line-height:1.1}
.sc-clock{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums;color:#e9d5ff}
.sc-live{background:#ef4444;font-size:13px;font-weight:800;padding:6px 13px;border-radius:8px;display:flex;gap:6px;align-items:center}
.sc-live::before{content:"";width:8px;height:8px;border-radius:50%;background:#fff;animation:pulse 1.3s infinite}
@keyframes pulse{50%{opacity:.25}}
.sc-body{position:relative;z-index:4;flex:1;padding:8px 46px 34px;display:flex;flex-direction:column;min-height:0}
.sc-foot{position:relative;z-index:5;text-align:center;padding-bottom:18px;font-size:14px;color:rgba(255,255,255,.5);letter-spacing:1px}

/* ---------- CHECK-IN ---------- */
.ci-top{display:flex;gap:26px;margin-bottom:22px}
.ci-count{flex:1;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);border-radius:22px;padding:24px 32px;display:flex;align-items:center;gap:26px;backdrop-filter:blur(12px)}
.ci-num{font-size:74px;font-weight:900;line-height:1;background:linear-gradient(100deg,#a5f3fc,#c4b5fd 55%,#f9a8d4);-webkit-background-clip:text;background-clip:text;color:transparent}
.ci-num small{font-size:26px;color:rgba(255,255,255,.5);-webkit-text-fill-color:rgba(255,255,255,.5)}
.ci-count .lab{font-size:19px;font-weight:700;color:rgba(255,255,255,.85)}
.ci-count .sub{font-size:14px;color:rgba(255,255,255,.5);margin-top:6px}
.ci-rate{width:220px}
.ci-rate .ring{width:130px;height:130px;margin:0 auto}
.ci-wall{flex:1;display:flex;flex-wrap:wrap;gap:14px;align-content:flex-start;justify-content:center;overflow:hidden;mask-image:linear-gradient(180deg,#000 70%,transparent)}
.ci-ava{width:66px;height:66px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:19px;color:#fff;position:relative;box-shadow:0 8px 20px rgba(0,0,0,.35);animation:ciPop .55s cubic-bezier(.2,.9,.3,1.5)}
.ci-ava.hot{box-shadow:0 0 0 4px rgba(251,191,36,.35),0 0 30px rgba(251,191,36,.8)}
.ci-ava.hot::after{content:"NEW";position:absolute;top:-8px;right:-10px;background:var(--gold);color:#7c2d12;font-size:10px;font-weight:900;padding:2px 6px;border-radius:7px}
@keyframes ciPop{0%{transform:scale(0) rotate(-25deg);opacity:0}70%{transform:scale(1.18)}100%{transform:scale(1) rotate(0);opacity:1}}
.ci-flash{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;z-index:8;opacity:0;transition:opacity .3s}
.ci-flash.show{opacity:1}
.ci-flash .card{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.25);backdrop-filter:blur(20px);border-radius:30px;padding:40px 70px;text-align:center;animation:flashIn .6s cubic-bezier(.2,.9,.3,1.3)}
@keyframes flashIn{0%{transform:translateY(40px) scale(.8);opacity:0}100%{transform:none;opacity:1}}
.ci-flash .big-ava{width:120px;height:120px;border-radius:50%;margin:0 auto 18px;display:grid;place-items:center;font-size:42px;font-weight:900;border:4px solid rgba(255,255,255,.6);box-shadow:0 0 50px rgba(236,72,153,.7)}
.ci-flash .fn{font-size:42px;font-weight:900}
.ci-flash .fd{font-size:18px;color:rgba(255,255,255,.7);margin:6px 0 12px}
.ci-flash .ok{display:inline-flex;gap:8px;align-items:center;background:rgba(16,185,129,.25);border:1px solid rgba(52,211,153,.5);padding:8px 18px;border-radius:99px;font-weight:700}

/* ---------- LOTTERY ---------- */
/* 当前奖品卡片：只展示当前抽奖奖品，左右箭头切换 */
.lt-prize-card{display:flex;align-items:center;justify-content:center;gap:22px;margin-bottom:18px}
.lt-pz-arrow{flex:none;width:56px;height:56px;border-radius:50%;border:1.5px solid rgba(255,255,255,.25);background:rgba(255,255,255,.08);backdrop-filter:blur(10px);color:#fff;font-size:40px;line-height:1;font-weight:700;cursor:pointer;transition:.18s;display:grid;place-items:center;padding-bottom:6px}
.lt-pz-arrow:hover:not(:disabled){background:rgba(255,255,255,.2);transform:scale(1.08)}
.lt-pz-arrow:disabled{opacity:.3;cursor:not-allowed}
.lt-pz-cur{min-width:min(620px,80%)}
.lt-pz-box{display:flex;align-items:center;gap:18px;padding:14px 30px;border-radius:18px;background:linear-gradient(135deg,rgba(251,191,36,.22),rgba(249,115,22,.16));border:1.5px solid var(--gold);box-shadow:0 0 34px rgba(251,191,36,.3);backdrop-filter:blur(10px);transition:.25s}
.lt-pz-box.out{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.18);box-shadow:none;opacity:.55}
.lt-pz-no{flex:none;font-size:14px;font-weight:800;letter-spacing:1px;color:#1f2937;background:linear-gradient(135deg,#fde68a,#fbbf24);border-radius:99px;padding:5px 14px}
.lt-pz-emoji{font-size:42px;line-height:1}
.lt-pz-info{flex:1;min-width:0}
.lt-pz-info b{font-size:24px;display:block;letter-spacing:2px}
.lt-pz-info span{font-size:15px;color:rgba(255,255,255,.72);display:block;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lt-pz-rm{flex:none;font-size:15px;color:rgba(255,255,255,.85);background:rgba(0,0,0,.28);border-radius:99px;padding:7px 18px;font-weight:700;white-space:nowrap}
.lt-pz-rm b{color:var(--gold);font-size:18px}
.lt-stage{flex:1;display:grid;place-items:start center;align-content:start;padding-top:20px;position:relative;min-height:0}
.lt-box{position:relative;text-align:center;width:min(860px,90%)}
.lt-roll{height:230px;border-radius:30px;background:linear-gradient(160deg,rgba(255,255,255,.12),rgba(255,255,255,.04));border:2px solid rgba(255,255,255,.18);display:grid;place-items:center;position:relative;overflow:hidden;backdrop-filter:blur(14px)}
.lt-roll::before,.lt-roll::after{content:"";position:absolute;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--gold),transparent);top:50%;opacity:.5}
.lt-roll .ph{font-size:30px;color:rgba(255,255,255,.55);font-weight:800;letter-spacing:3px}
.lt-roll .ph small{display:block;font-size:16px;margin-top:10px;letter-spacing:1px;color:rgba(255,255,255,.4)}
.lt-name{font-size:108px;font-weight:900;letter-spacing:12px;text-indent:12px;line-height:1.1;text-shadow:0 0 60px rgba(236,72,153,.6)}
.lt-dept{font-size:26px;color:rgba(255,255,255,.75);margin-top:8px;font-weight:700}
.lt-roll.rolling .lt-name{background:linear-gradient(100deg,#a5f3fc,#c4b5fd,#f9a8d4,#fdba74,#a5f3fc);background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shine 1s linear infinite}
@keyframes shine{to{background-position:300% 0}}
.lt-roll.winner{border-color:var(--gold);background:linear-gradient(160deg,rgba(251,191,36,.22),rgba(249,115,22,.12));box-shadow:0 0 80px rgba(251,191,36,.45);animation:winGlow 1.4s ease-in-out infinite}
@keyframes winGlow{50%{box-shadow:0 0 120px rgba(251,191,36,.7)}}
.lt-roll.winner .lt-name{color:var(--gold);text-shadow:0 0 60px rgba(251,191,36,.8)}
.lt-go{margin-top:34px;width:180px;height:180px;border-radius:50%;border:none;background:radial-gradient(circle at 32% 30%,#fb7185,#db2777 55%,#9d174d);color:#fff;font-size:30px;font-weight:900;letter-spacing:4px;cursor:pointer;box-shadow:0 0 0 14px rgba(219,39,119,.15),0 24px 60px rgba(219,39,119,.55);transition:.18s;animation:breathe 2.4s infinite}
@keyframes breathe{50%{box-shadow:0 0 0 26px rgba(219,39,119,.05),0 24px 60px rgba(219,39,119,.55)}}
.lt-go:active{transform:scale(.94)}
.lt-go:disabled{filter:grayscale(.7);cursor:not-allowed;animation:none;opacity:.6}
.lt-go.pausing{background:radial-gradient(circle at 32% 30%,#fbbf24,#f59e0b 55%,#b45309);box-shadow:0 0 0 14px rgba(245,158,11,.18),0 24px 60px rgba(245,158,11,.55);animation:breatheAmber 1.1s infinite}
@keyframes breatheAmber{50%{box-shadow:0 0 0 30px rgba(245,158,11,.04),0 24px 60px rgba(245,158,11,.55)}}
.lt-winners{position:absolute;right:0;top:0;bottom:0;width:230px;display:flex;flex-direction:column;gap:10px;overflow:hidden;mask-image:linear-gradient(180deg,transparent,#000 8%,#000 92%,transparent)}
.lt-win{display:flex;align-items:center;gap:11px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.13);border-radius:14px;padding:10px 14px;backdrop-filter:blur(10px);animation:slideR .5s}
@keyframes slideR{from{transform:translateX(40px);opacity:0}}
.lt-win .wa{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;font-weight:800;font-size:15px;flex:none}
.lt-win b{font-size:14.5px;display:block}.lt-win span{font-size:11.5px;color:rgba(255,255,255,.55)}
.lt-win .we{margin-left:auto;font-size:22px}
.confetti{position:absolute;inset:0;pointer-events:none;z-index:20;overflow:hidden}
.confetti i{position:absolute;top:-20px;width:12px;height:16px;border-radius:2px;animation:fall linear forwards}
@keyframes fall{to{transform:translateY(110vh) rotate(720deg);opacity:.9}}
.lt-curtip{margin-top:18px;font-size:15px;color:rgba(255,255,255,.5)}
.lt-curtip kbd{background:rgba(255,255,255,.15);border-radius:6px;padding:2px 10px;font-family:inherit;font-weight:700}

/* ---------- DANMAKU ---------- */
.dm-stage{flex:1;position:relative;overflow:hidden;border-radius:22px;background:rgba(0,0,0,.18)}
.dm-lane{position:absolute;left:0;right:0;height:56px;pointer-events:none}
.dm-item{position:absolute;white-space:nowrap;display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);backdrop-filter:blur(8px);padding:9px 20px;border-radius:99px;font-size:24px;font-weight:700;animation:dmMove linear forwards}
.dm-item .da{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:14px;font-weight:800;flex:none}
.dm-item small{font-size:15px;font-weight:600;opacity:.65}
@keyframes dmMove{from{transform:translateX(100vw)}to{transform:translateX(-110%)}}
.dm-hint{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:rgba(255,255,255,.7);text-align:center;background:rgba(12,10,32,.72);backdrop-filter:blur(6px);z-index:20;border-radius:24px}
.dm-hint-card{display:flex;flex-direction:column;align-items:center;gap:14px}
.dm-hint-card .qr{width:180px;height:180px;background:#fff;border-radius:18px;padding:14px;box-shadow:0 8px 30px rgba(0,0,0,.4)}
.dm-hint-card b{font-size:26px;color:#fff}.dm-hint-card p{font-size:17px}
.dm-hide{display:none}

/* ---- 弹幕悬浮二维码（始终可见，右下角）---- */
.dm-floating-qr{position:absolute;right:18px;bottom:18px;z-index:15}
.dfq-inner{background:linear-gradient(135deg,rgba(255,255,255,.14),rgba(255,255,255,.06));border:1px solid rgba(255,255,255,.22);backdrop-filter:blur(16px);border-radius:16px;padding:10px 10px 8px;text-align:center;box-shadow:0 10px 36px rgba(0,0,0,.5)}
.dfq-code .qr{background:#fff;padding:6px;border-radius:10px;display:block}
.dfq-code .qr canvas{display:block!important;width:98px!important;height:98px!important}
.dfq-tip{color:#fff;font-size:13px;font-weight:800;margin-top:6px;letter-spacing:1px}

/* ---------- ALBUM ---------- */
.ab-stage{flex:1;position:relative;border-radius:24px;overflow:hidden;border:1px solid rgba(255,255,255,.14)}
.ab-slide{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .9s;transform:scale(1.06)}
.ab-slide.on{opacity:1;transform:scale(1)}
.ab-tile{width:78%;height:86%;border-radius:28px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;position:relative;box-shadow:0 40px 100px rgba(0,0,0,.5)}
.ab-tile .ae{font-size:200px;filter:drop-shadow(0 20px 50px rgba(0,0,0,.35));animation:floaty 5s ease-in-out infinite}
@keyframes floaty{50%{transform:translateY(-18px)}}
.ab-tile .cap{font-size:44px;font-weight:900;text-shadow:0 4px 24px rgba(0,0,0,.4)}
.ab-tile .by{font-size:20px;color:rgba(255,255,255,.85);display:flex;gap:18px;align-items:center;margin-top:10px}
.ab-tile .likes{background:rgba(0,0,0,.28);padding:7px 18px;border-radius:99px;font-weight:800}
.ab-real{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#000}
.ab-overlay{position:absolute;bottom:0;left:0;right:0;padding:40px 50px 80px;background:linear-gradient(to top,rgba(0,0,0,.85) 0%,rgba(0,0,0,.4) 60%,transparent 100%);color:#fff}
.ab-overlay .cap{font-size:38px;font-weight:900;text-shadow:0 4px 20px rgba(0,0,0,.6);margin-bottom:12px}
.ab-overlay .by{font-size:18px;color:rgba(255,255,255,.85);display:flex;gap:18px;align-items:center}
.ab-overlay .likes{background:rgba(255,255,255,.18);padding:6px 16px;border-radius:99px;font-weight:800}

/* ---- 网格照片墙（≥6张时）---- */
.ab-wall{position:absolute;inset:14px;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:10px}
.ab-wall-item{position:relative;border-radius:14px;overflow:hidden;background:#1e293b;box-shadow:0 6px 24px rgba(0,0,0,.4);transform:scale(.3);opacity:0}
.ab-wall-item img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ab-wall-item .ab-wall-emoji{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:72px}
.ab-wall-meta{position:absolute;bottom:0;left:0;right:0;padding:10px 12px;background:linear-gradient(to top,rgba(0,0,0,.85),transparent);color:#fff;display:flex;justify-content:space-between;align-items:center;font-size:14px;font-weight:600;opacity:0;transform:translateY(8px);transition:.3s}
.ab-wall-item.pop-in{animation:abPopIn .55s cubic-bezier(.2,1.3,.4,1) forwards}
.ab-wall-item.pop-in .ab-wall-meta{opacity:1;transform:translateY(0)}
.ab-wall-item.fade-out{animation:abFadeOut .28s ease forwards}
@keyframes abPopIn{
  0%{transform:scale(.3) rotate(-8deg);opacity:0}
  55%{transform:scale(1.08) rotate(2deg);opacity:1}
  100%{transform:scale(1) rotate(0);opacity:1}
}
@keyframes abFadeOut{
  0%{transform:scale(1);opacity:1}
  100%{transform:scale(.5);opacity:0}
}
.ab-dots{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);display:flex;gap:9px;z-index:5}
.ab-dots i{width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.35);transition:.25s}
.ab-dots i.on{width:30px;border-radius:6px;background:#fff}
.ab-count{position:absolute;top:20px;right:24px;background:rgba(0,0,0,.3);padding:8px 18px;border-radius:99px;font-weight:700;z-index:5;font-size:15px}
.ab-empty{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:rgba(255,255,255,.6);background:rgba(12,10,32,.72);backdrop-filter:blur(6px);z-index:20;border-radius:24px}
.ab-empty-card{display:flex;flex-direction:column;align-items:center;gap:12px}
.ab-empty-card b{font-size:26px;color:#fff}
.ab-empty-card p{font-size:17px}
.ab-empty-card .qr{width:180px;height:180px;background:#fff;border-radius:18px;padding:14px;box-shadow:0 8px 30px rgba(0,0,0,.4)}
.heart{position:absolute;font-size:34px;animation:heartUp 2.4s ease-out forwards;z-index:6;pointer-events:none}
@keyframes heartUp{0%{transform:translateY(0) scale(.5);opacity:0}20%{opacity:1}100%{transform:translateY(-300px) scale(1.4);opacity:0}}

/* ---- 相册悬浮二维码（始终可见，右下角）---- */
.ab-floating-qr{position:absolute;right:18px;bottom:18px;z-index:15}
.afq-inner{background:linear-gradient(135deg,rgba(255,255,255,.14),rgba(255,255,255,.06));border:1px solid rgba(255,255,255,.22);backdrop-filter:blur(16px);border-radius:16px;padding:10px 10px 8px;text-align:center;box-shadow:0 10px 36px rgba(0,0,0,.5)}
.afq-code .qr{background:#fff;padding:6px;border-radius:10px;display:block}
.afq-code .qr canvas{display:block!important;width:98px!important;height:98px!important}
.afq-tip{color:#fff;font-size:13px;font-weight:800;margin-top:6px;letter-spacing:1px}

/* ---------- VOTE ---------- */
/* ---------- VOTE 互动投票（仿参考站风格） ---------- */
.vote-stage{flex:1;min-height:0;position:relative;display:flex;flex-direction:column;overflow:hidden;
  background:linear-gradient(180deg,#3d0a1a 0%,#5c0e1e 30%,#4a0c19 60%,#2d060f 100%);
}
.vote-bg{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.vote-bg-glow{position:absolute;inset:0;
  background:
    radial-gradient(ellipse 60% 40% at 50% 100%,rgba(220,38,38,.4),transparent 70%),
    radial-gradient(ellipse 80% 50% at 50% 0%,rgba(251,146,60,.15),transparent 60%);
}
.vote-bg-particles{position:absolute;inset:0}
.vote-bg-particles span{position:absolute;border-radius:50%;
  background:radial-gradient(circle,rgba(255,200,100,.8),transparent 70%);
}
@keyframes bgFloat{
  0%{transform:translate(0,0) scale(1)}
  25%{transform:translate(30px,-20px) scale(1.1)}
  50%{transform:translate(-20px,-40px) scale(.9)}
  75%{transform:translate(-30px,-10px) scale(1.05)}
  100%{transform:translate(0,0) scale(1)}
}

/* 烟花效果 */
.vote-fireworks{position:absolute;top:10%;width:200px;height:200px;pointer-events:none}
.vote-fireworks.left{left:5%}
.vote-fireworks.right{right:5%}
.vote-fireworks::before,.vote-fireworks::after{
  content:"";position:absolute;left:50%;top:50%;width:4px;height:4px;border-radius:50%;
  background:#fbbf24;box-shadow:0 0 10px #fbbf24;
  animation:firework 3s ease-out infinite;
}
.vote-fireworks::before{animation-delay:0s}
.vote-fireworks::after{animation-delay:1.5s}
.vote-fireworks.right::before{animation-delay:.8s}
.vote-fireworks.right::after{animation-delay:2.2s}
@keyframes firework{
  0%{transform:translate(-50%,-50%) scale(1);opacity:1}
  50%{transform:translate(-50%,-50%) scale(20);opacity:.6}
  100%{transform:translate(-50%,-50%) scale(40);opacity:0}
}

/* 顶部 */
.vote-header{padding:16px 50px 10px;display:flex;justify-content:space-between;align-items:center;z-index:5;position:relative}
.vote-brand{display:flex;align-items:center;gap:10px}
.vote-brand-icon{font-size:30px;filter:drop-shadow(0 2px 10px rgba(251,191,36,.4))}
.vote-brand-text{font-size:20px;font-weight:900;color:#fff;letter-spacing:2px;
  text-shadow:0 2px 12px rgba(220,38,38,.6)}
.vote-participants{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.15);border-radius:99px;padding:6px 16px;backdrop-filter:blur(10px)}
.vp-icon{font-size:16px}
.vote-participants b{font-size:20px;font-weight:900;color:#fbbf24;line-height:1}
.vote-participants span{font-size:12px;color:rgba(255,255,255,.7);font-weight:600}

/* 主体 */
.vote-main{flex:1;min-height:0;display:flex;flex-direction:column;padding:0 60px 10px;position:relative;z-index:2}
.vote-topic-area{text-align:center;margin-bottom:10px}
.vote-topic-badge{display:inline-block;font-size:13px;font-weight:800;color:#fcd34d;
  background:rgba(251,191,36,.15);padding:5px 16px;border-radius:99px;
  border:1px solid rgba(251,191,36,.3);letter-spacing:2px;margin-bottom:10px}
.vote-topic-title{font-size:36px;font-weight:900;color:#fff;margin:0 0 6px;
  text-shadow:0 4px 20px rgba(0,0,0,.4)}
.vote-topic-sub{font-size:15px;color:rgba(255,255,255,.6);font-weight:600}

.vote-content{flex:1;min-height:0;display:flex;gap:30px;align-items:flex-end;padding-bottom:0}
.vote-bars-wrap{flex:1;min-height:0;position:relative;height:100%}
.vote-bars{position:absolute;bottom:0;left:0;right:0;height:100%;
  display:flex;justify-content:center;align-items:flex-end;gap:36px;padding-bottom:0}
.vote-particles{position:absolute;inset:0;pointer-events:none;z-index:3}

/* 柱子列 */
.vb-col{display:flex;flex-direction:column;align-items:center;flex-shrink:0;width:var(--bar-w,100px);position:relative;height:100%}
.vb-top-info{position:absolute;left:50%;transform:translateX(-50%);z-index:5;
  display:flex;flex-direction:column;align-items:center;gap:5px;white-space:nowrap;
  transition:bottom 1.2s cubic-bezier(.2,.9,.3,1.1)}
.vb-votes{display:flex;align-items:baseline;gap:4px}
.vb-votes b{font-size:38px;font-weight:900;color:#fff;line-height:1;
  text-shadow:0 2px 12px rgba(0,0,0,.5),0 0 25px rgba(251,191,36,.5)}
.vb-votes span{font-size:16px;font-weight:700;color:rgba(255,255,255,.9)}
.vb-pct-top{font-size:18px;font-weight:800;color:#fbbf24;
  text-shadow:0 2px 6px rgba(0,0,0,.5);line-height:1;
  background:rgba(0,0,0,.3);padding:3px 12px;border-radius:99px;backdrop-filter:blur(6px)}

/* 柱子 */
.vb-bar-wrap{width:100%;height:calc(100% - 45px);position:relative;display:flex;flex-direction:column;margin-top:auto}
.vb-bar{position:relative;width:100%;margin-top:auto;
  background:linear-gradient(180deg,#fbbf24 0%,#f97316 15%,#dc2626 50%,#991b1b 100%);
  border-radius:14px 14px 8px 8px;
  transition:height 1.2s cubic-bezier(.2,.9,.3,1.1);
  box-shadow:
    0 0 40px rgba(220,38,38,.6),
    0 0 80px rgba(220,38,38,.3),
    0 0 120px rgba(251,191,36,.15),
    inset 0 3px 15px rgba(255,255,255,.4),
    inset 0 -3px 10px rgba(0,0,0,.2);
  overflow:hidden;
}
.vb-bar-shine{position:absolute;top:0;left:0;right:0;height:45%;
  background:linear-gradient(180deg,rgba(255,255,255,.5),transparent 75%);
  border-radius:14px 14px 0 0;pointer-events:none}
.vb-bar-flow{position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 0%,rgba(255,220,120,.3) 50%,transparent 100%);
  background-size:100% 200%;
  animation:barFlow 2.5s ease-in-out infinite;
  pointer-events:none}
@keyframes barFlow{
  0%,100%{background-position:0 0}
  50%{background-position:0 100%}
}
.vb-bar-top-cap{position:absolute;top:0;left:0;right:0;height:16px;
  background:linear-gradient(180deg,rgba(255,255,255,.8),rgba(255,220,100,.4));
  border-radius:14px 14px 0 0;
  box-shadow:0 -4px 15px rgba(255,220,100,.5),0 -2px 6px rgba(255,255,255,.4);
  pointer-events:none}

/* 底部排名区 */
.vb-bottom{width:100%;height:44px;margin-top:-2px;
  background:linear-gradient(180deg,#78350f,#451a03);
  border-radius:0 0 10px 10px;
  display:grid;place-items:center;
  position:relative;
  box-shadow:0 4px 15px rgba(0,0,0,.3),inset 0 2px 4px rgba(255,255,255,.1);
}
.vb-bottom::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,transparent,rgba(251,191,36,.9),transparent)}
.vb-rank-num{font-size:22px;font-weight:900;color:#fbbf24;
  text-shadow:0 2px 6px rgba(0,0,0,.5),0 0 15px rgba(251,191,36,.4);
  letter-spacing:1px}

/* 名称 */
.vb-name{font-size:15px;font-weight:700;color:#fff;max-width:170px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;
  margin-top:6px;text-shadow:0 2px 8px rgba(0,0,0,.5)}

/* 右侧二维码 */
.vote-qr-side{width:200px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.vote-qr-card{width:100%;background:linear-gradient(180deg,rgba(255,255,255,.1),rgba(255,255,255,.04));
  border:1px solid rgba(255,255,255,.15);border-radius:20px;padding:20px 16px;text-align:center;
  backdrop-filter:blur(12px);box-shadow:0 8px 30px rgba(0,0,0,.3)}
.vqr-label{font-size:14px;font-weight:800;color:#fcd34d;letter-spacing:2px;margin-bottom:12px}
.vqr-code{background:#fff;border-radius:12px;padding:10px;display:inline-block;margin-bottom:10px}
.vqr-code .qr{width:140px;height:140px}
.vqr-tip{font-size:13px;color:rgba(255,255,255,.7);font-weight:600}

/* 底部话题点 */
.vote-topic-dots{display:flex;justify-content:center;gap:10px;padding:16px 0 24px;z-index:5;position:relative}
.vtd{width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.2);cursor:pointer;transition:.3s}
.vtd:hover{background:rgba(255,255,255,.4)}
.vtd.on{background:#fbbf24;width:30px;border-radius:5px;box-shadow:0 0 12px rgba(251,191,36,.6)}

.vote-empty{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:rgba(255,255,255,.6);text-align:center;background:rgba(13,8,36,.85);z-index:10;border-radius:24px}
.vote-empty .qr{width:150px;height:150px;background:#fff;border-radius:18px;padding:14px}
.vote-empty b{font-size:26px}.vote-empty p{font-size:17px}

/* ---------- QUESTION 互动提问 ---------- */
.question-stage{flex:1;position:relative;display:flex;flex-direction:column;border-radius:24px;overflow:hidden;background:linear-gradient(160deg,#0f0b2e 0%,#1e1b4b 40%,#312e81 100%)}
/* 提问页已有醒目右侧二维码，隐藏 header 重复提示，避免用户以为有两个码 */
.mode-question .sc-code{display:none}
.question-stage::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 20% 0%,rgba(99,102,241,.18),transparent 50%),radial-gradient(ellipse at 80% 100%,rgba(236,72,153,.12),transparent 45%);pointer-events:none}

.q-stage-header{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:28px 36px 20px;border-bottom:1px solid rgba(255,255,255,.08)}
.qsh-title{display:flex;align-items:center;gap:16px}
.qsh-icon{font-size:42px;filter:drop-shadow(0 4px 12px rgba(251,191,36,.3))}
.qsh-title h2{margin:0;font-size:32px;font-weight:900;color:#fff;letter-spacing:2px}
.qsh-sub{font-size:14px;color:rgba(255,255,255,.6);margin-left:4px;font-weight:600;letter-spacing:1px}
.qsh-stats{display:flex;gap:16px}
.qsh-stat{text-align:center;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:12px 22px;backdrop-filter:blur(12px)}
.qsh-num{font-size:32px;font-weight:900;line-height:1;background:linear-gradient(100deg,#fbbf24,#f59e0b);-webkit-background-clip:text;background-clip:text;color:transparent}
.qsh-lab{font-size:12px;color:rgba(255,255,255,.6);margin-top:4px;font-weight:600;letter-spacing:2px}

.q-stage-body{position:relative;z-index:2;flex:1;display:flex;gap:24px;padding:24px 32px 32px;min-height:0}

.q-rank-list{flex:1;overflow-y:auto;padding-right:8px;display:flex;flex-direction:column;gap:14px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent}
.q-rank-list::-webkit-scrollbar{width:6px}
.q-rank-list::-webkit-scrollbar-track{background:transparent}
.q-rank-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.15);border-radius:3px}

.q-rank-item{display:flex;gap:16px;align-items:stretch;background:linear-gradient(135deg,rgba(255,255,255,.08),rgba(255,255,255,.04));border:1px solid rgba(255,255,255,.1);border-radius:18px;padding:18px 22px;backdrop-filter:blur(12px);transition:transform .3s,box-shadow .3s;animation:qriIn .6s cubic-bezier(.2,.9,.3,1) both;animation-delay:var(--delay,0s)}
.q-rank-item:hover{transform:translateX(4px);box-shadow:0 8px 30px rgba(0,0,0,.3),0 0 0 1px rgba(251,191,36,.2)}
@keyframes qriIn{from{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}

.qri-rank{flex-shrink:0;width:52px;height:52px;border-radius:14px;display:grid;place-items:center;font-size:22px;font-weight:900;color:#fff;box-shadow:0 4px 16px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.3);text-shadow:0 1px 2px rgba(0,0,0,.3)}

.qri-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}
.qri-content{font-size:18px;font-weight:700;color:#fff;line-height:1.6;word-break:break-word}
.qri-bar{height:8px;border-radius:4px;background:rgba(255,255,255,.08);overflow:hidden}
.qri-bar-fill{height:100%;border-radius:4px;transition:width .8s cubic-bezier(.2,.9,.3,1);box-shadow:0 0 12px rgba(251,191,36,.3)}

.qri-footer{display:flex;align-items:center;justify-content:space-between}
.qri-user{display:flex;align-items:center;gap:10px}
.qri-avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:12px;font-weight:700;box-shadow:0 2px 8px rgba(0,0,0,.25)}
.qri-name{font-size:14px;font-weight:600;color:rgba(255,255,255,.85)}
.qri-time{font-size:12px;color:rgba(255,255,255,.45)}
.qri-likes{display:flex;align-items:center;gap:6px;background:rgba(251,191,36,.12);border:1px solid rgba(251,191,36,.25);border-radius:20px;padding:4px 12px}
.qri-like-icon{font-size:14px}
.qri-like-count{font-size:15px;font-weight:800;color:#fbbf24}

.q-side{width:260px;display:flex;flex-direction:column;gap:16px;flex-shrink:0}
.q-qr-card{background:linear-gradient(135deg,rgba(255,255,255,.1),rgba(255,255,255,.05));border:1px solid rgba(255,255,255,.15);border-radius:20px;padding:20px;text-align:center;backdrop-filter:blur(12px);box-shadow:0 8px 30px rgba(0,0,0,.25)}
.q-qr-card .qr{width:130px;height:130px;background:#fff;border-radius:16px;padding:12px;margin:0 auto 14px;box-shadow:0 4px 20px rgba(0,0,0,.25)}
.q-qr-card p{font-size:15px;color:#fff;font-weight:700;margin:0 0 4px}
.q-qr-card small{font-size:12px;color:rgba(255,255,255,.55)}

.q-hot-tip{background:linear-gradient(135deg,rgba(251,191,36,.15),rgba(249,115,22,.1));border:1px solid rgba(251,191,36,.25);border-radius:18px;padding:18px 20px}
.qht-title{font-size:17px;font-weight:800;color:#fbbf24;margin-bottom:8px;letter-spacing:1px}
.qht-desc{font-size:13px;line-height:1.7;color:rgba(255,255,255,.7)}

.question-empty{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;gap:18px;color:rgba(255,255,255,.65);text-align:center;background:rgba(12,10,32,.85);z-index:30;border-radius:24px}
.question-empty .qr{width:150px;height:150px;background:#fff;border-radius:18px;padding:14px;box-shadow:0 8px 30px rgba(0,0,0,.3)}
.question-empty b{font-size:26px;color:#fff}.question-empty p{font-size:17px}

/* ---------- BIG LOTTERY 巨幕抽奖 ---------- */
.biglottery{position:relative;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden;background:#0a0612}
.bl-bg-particles{position:absolute;inset:0;pointer-events:none;overflow:hidden}
/* 底部放射光线 */
.bl-bg-particles::before{content:"";position:absolute;left:50%;bottom:0;width:200%;height:70%;
  transform:translateX(-50%);
  background:
    radial-gradient(ellipse 80% 60% at 50% 100%, rgba(234,179,8,.25), transparent 60%),
    conic-gradient(from 180deg at 50% 100%,
      transparent 0deg,
      rgba(234,179,8,.06) 10deg,
      transparent 20deg,
      rgba(251,191,36,.08) 35deg,
      transparent 50deg,
      rgba(245,158,11,.06) 65deg,
      transparent 80deg,
      rgba(252,211,77,.07) 95deg,
      transparent 110deg,
      rgba(234,179,8,.05) 130deg,
      transparent 150deg,
      rgba(251,191,36,.08) 170deg,
      transparent 180deg,
      rgba(245,158,11,.06) 190deg,
      transparent 210deg,
      rgba(252,211,77,.07) 230deg,
      transparent 250deg,
      rgba(234,179,8,.05) 265deg,
      transparent 280deg,
      rgba(251,191,36,.08) 295deg,
      transparent 310deg,
      rgba(245,158,11,.06) 325deg,
      transparent 340deg,
      rgba(252,211,77,.07) 350deg,
      transparent 360deg
    );
  animation:blRays 8s ease-in-out infinite alternate;
  mask-image:linear-gradient(to top, black 0%, transparent 90%);
  -webkit-mask-image:linear-gradient(to top, black 0%, transparent 90%)}
@keyframes blRays{from{transform:translateX(-50%) rotate(-3deg)}to{transform:translateX(-50%) rotate(3deg)}}
/* 金色粒子 */
.bl-bg-particles::after{content:"";position:absolute;inset:0;
  background-image:
    radial-gradient(2.5px 2.5px at 8% 15%,#fbbf24 50%,transparent 100%),
    radial-gradient(2px 2px at 22% 72%,#fcd34d 50%,transparent 100%),
    radial-gradient(3px 3px at 38% 28%,#f59e0b 50%,transparent 100%),
    radial-gradient(1.5px 1.5px at 52% 85%,#fde68a 50%,transparent 100%),
    radial-gradient(2.5px 2.5px at 68% 18%,#fbbf24 50%,transparent 100%),
    radial-gradient(2px 2px at 82% 65%,#fcd34d 50%,transparent 100%),
    radial-gradient(3px 3px at 12% 55%,#f59e0b 50%,transparent 100%),
    radial-gradient(1.5px 1.5px at 28% 40%,#fde68a 50%,transparent 100%),
    radial-gradient(2.5px 2.5px at 45% 60%,#fbbf24 50%,transparent 100%),
    radial-gradient(2px 2px at 62% 45%,#fcd34d 50%,transparent 100%),
    radial-gradient(3px 3px at 78% 80%,#f59e0b 50%,transparent 100%),
    radial-gradient(1.5px 1.5px at 92% 35%,#fde68a 50%,transparent 100%),
    radial-gradient(2px 2px at 5% 88%,#fbbf24 50%,transparent 100%),
    radial-gradient(2.5px 2.5px at 35% 10%,#fcd34d 50%,transparent 100%),
    radial-gradient(1.5px 1.5px at 58% 25%,#f59e0b 50%,transparent 100%),
    radial-gradient(2px 2px at 75% 55%,#fde68a 50%,transparent 100%),
    radial-gradient(3px 3px at 88% 75%,#fbbf24 50%,transparent 100%),
    radial-gradient(1.5px 1.5px at 18% 30%,#fcd34d 50%,transparent 100%),
    radial-gradient(2.5px 2.5px at 48% 92%,#f59e0b 50%,transparent 100%),
    radial-gradient(2px 2px at 95% 50%,#fde68a 50%,transparent 100%),
    radial-gradient(1.5px 1.5px at 30% 85%,#fbbf24 50%,transparent 100%),
    radial-gradient(2px 2px at 65% 68%,#fcd34d 50%,transparent 100%),
    radial-gradient(2.5px 2.5px at 42% 48%,#f59e0b 50%,transparent 100%),
    radial-gradient(1.5px 1.5px at 15% 62%,#fde68a 50%,transparent 100%),
    radial-gradient(3px 3px at 85% 12%,#fbbf24 50%,transparent 100%),
    radial-gradient(2px 2px at 55% 38%,#fcd34d 50%,transparent 100%),
    radial-gradient(1.5px 1.5px at 72% 92%,#f59e0b 50%,transparent 100%),
    radial-gradient(2.5px 2.5px at 25% 20%,#fde68a 50%,transparent 100%),
    radial-gradient(2px 2px at 95% 90%,#fbbf24 50%,transparent 100%),
    radial-gradient(1.5px 1.5px at 5% 45%,#fcd34d 50%,transparent 100%);
  animation:blParticle 6s ease-in-out infinite alternate;opacity:.8}
@keyframes blParticle{
  0%{transform:translate(0,0) scale(1);opacity:.6}
  50%{opacity:.9}
  100%{transform:translate(-8px,-15px) scale(1.1);opacity:.7}
}
.bl-bg-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:.5;z-index:1}
.bl-fiber-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}

.bl-stage{flex:1;position:relative;display:flex;align-items:center;justify-content:center;min-height:0;z-index:5}
.bl-center{position:relative;z-index:20;display:flex;flex-direction:column;align-items:center;gap:12px}

/* 左右两侧头像墙 */
.bl-avatar-wall{position:absolute;left:0;right:0;bottom:120px;
  display:flex;flex-direction:column;align-items:center;justify-content:flex-end;
  gap:8px;z-index:5;pointer-events:none}
.bl-wall-row{display:flex;gap:6px;justify-content:center;align-items:center;
  opacity:0;animation:blWallRowIn .7s ease-out forwards}
@keyframes blWallRowIn{from{opacity:0;transform:translateY(15px)}to{opacity:var(--row-opacity, 1);transform:translateY(0)}}
.bl-wall-gap{flex-shrink:0}
.bl-wall-item{border-radius:8px;overflow:hidden;flex-shrink:0;
  border:2px solid rgba(251,191,36,.35);box-shadow:0 3px 12px rgba(0,0,0,.45);
  animation:blItemBreath 3s ease-in-out infinite;
  animation-delay:var(--breath-delay,0s)}
@keyframes blItemBreath{
  0%,100%{transform:scale(1);box-shadow:0 3px 12px rgba(0,0,0,.45)}
  50%{transform:scale(1.2);box-shadow:0 6px 24px rgba(0,0,0,.55),0 0 30px rgba(251,191,36,.5)}
}
.bl-wall-item-inner{width:100%;height:100%;display:grid;place-items:center;font-weight:700;color:#fff;font-size:18px;
  text-shadow:0 1px 3px rgba(0,0,0,.45)}

/* 右侧二维码 */
.bl-qr-side{position:absolute;right:50px;top:25%;transform:translateY(-50%);z-index:15;
  display:flex;flex-direction:column;align-items:center;gap:12px}
.bl-qr-side .qr{background:#fff;padding:12px;border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,.4)}
.bl-qr-text{color:#fff;font-size:16px;opacity:.85;text-shadow:0 1px 3px rgba(0,0,0,.5)}

/* 奖项标题 */
.bl-prize-title{font-size:46px;font-weight:900;color:#fde047;
  text-shadow:0 0 40px rgba(250,204,21,.7),0 2px 10px rgba(0,0,0,.6);letter-spacing:6px;
  margin-bottom:8px}
.bl-prize-sub{font-size:16px;color:#fbbf24;opacity:.75;margin-top:-8px;display:none}

/* 3D魔方 */
.bl-cube-wrap{position:relative;width:300px;height:300px;display:flex;align-items:center;justify-content:center;margin:10px 0}
.bl-cube{position:relative;width:220px;height:220px;transform-style:preserve-3d;animation:blCubeSpin 10s linear infinite}
.bl-cube-face{position:absolute;width:220px;height:220px;display:grid;place-items:center;font-size:100px;font-weight:900;color:#fde047;
  background:linear-gradient(135deg,#dc2626 0%,#b91c1c 50%,#991b1b 100%);
  border:5px solid #fbbf24;box-shadow:inset 0 0 50px rgba(0,0,0,.45),0 0 40px rgba(251,191,36,.35);
  text-shadow:0 0 25px rgba(250,204,21,.9)}
.bl-cube-face::before{content:"";position:absolute;inset:12px;border:3px solid rgba(251,191,36,.5);border-radius:6px}
.bl-cube-face::after{content:"";position:absolute;top:12px;left:12px;width:18px;height:18px;
  border-top:4px solid #fde047;border-left:4px solid #fde047;border-radius:2px 0 0 0}
.bl-cube-front{transform:translateZ(110px)}
.bl-cube-back{transform:rotateY(180deg) translateZ(110px)}
.bl-cube-right{transform:rotateY(90deg) translateZ(110px)}
.bl-cube-left{transform:rotateY(-90deg) translateZ(110px)}
.bl-cube-top{transform:rotateX(90deg) translateZ(110px)}
.bl-cube-bottom{transform:rotateX(-90deg) translateZ(110px)}

@keyframes blCubeSpin{
  from{transform:rotateX(-18deg) rotateY(0deg)}
  to{transform:rotateX(-18deg) rotateY(360deg)}
}
.bl-cube-fast{animation-duration:0.4s!important;animation-timing-function:linear}
.bl-cube-rolling .bl-cube-face{box-shadow:inset 0 0 50px rgba(0,0,0,.45),0 0 80px rgba(251,191,36,.7)}

.bl-cube-glow{position:absolute;inset:-50px;border-radius:50%;
  background:radial-gradient(circle,rgba(251,191,36,.3),transparent 65%);
  animation:blGlow 2.5s ease-in-out infinite alternate;pointer-events:none}
@keyframes blGlow{from{opacity:.4;transform:scale(.85)}to{opacity:1;transform:scale(1.15)}}

/* 中奖者展示 */
.bl-winners-box{display:flex;flex-direction:column;align-items:center;gap:20px;min-width:400px}
.bl-winners-title{font-size:44px;font-weight:900;color:#fde047;
  text-shadow:0 0 30px rgba(250,204,21,.7),0 2px 10px rgba(0,0,0,.6);
  animation:blWinnerBounce 1s ease-out;letter-spacing:4px}
@keyframes blWinnerBounce{0%{transform:scale(0);opacity:0}60%{transform:scale(1.15)}100%{transform:scale(1);opacity:1}}

.bl-winners-list{display:flex;flex-wrap:wrap;justify-content:center;gap:20px;width:100%}
.bl-winner-card{display:flex;flex-direction:column;align-items:center;gap:12px;opacity:0;
  transform:translateY(40px) scale(.7);transition:all .6s cubic-bezier(.34,1.56,.64,1)}
.bl-winner-card.show{opacity:1;transform:translateY(0) scale(1)}
.bl-winner-avatar{width:110px;height:110px;border-radius:50%;display:grid;place-items:center;font-size:46px;
  background:linear-gradient(135deg,#f59e0b,#dc2626);
  border:4px solid #fde047;
  box-shadow:0 0 30px rgba(251,191,36,.6),0 8px 20px rgba(0,0,0,.4),inset 0 2px 8px rgba(255,255,255,.3)}
.bl-winner-name{font-size:24px;font-weight:700;color:#fff;
  text-shadow:0 2px 10px rgba(0,0,0,.6),0 0 15px rgba(251,191,36,.4)}

/* 参与人数栏 */
.bl-count-bar{text-align:center;padding:12px 0;font-size:22px;color:#fde047;font-weight:600;
  text-shadow:0 0 20px rgba(250,204,21,.5),0 2px 8px rgba(0,0,0,.5);letter-spacing:3px;
  background:rgba(0,0,0,.3);z-index:25;position:relative}

/* 控制区 */
.bl-controls{display:flex;align-items:center;justify-content:center;gap:36px;padding:28px 40px;
  background:rgba(0,0,0,.5);border-top:1px solid rgba(251,191,36,.25);z-index:30;position:relative}
.bl-ctrl-item{display:flex;align-items:center;gap:10px;color:#fde047;font-size:18px;font-weight:600}
.bl-ctrl-item select{padding:10px 24px;border:2px solid #fbbf24;border-radius:6px;
  background:rgba(0,0,0,.7);color:#fde047;font-size:18px;font-weight:600;cursor:pointer;outline:none;min-width:180px;
  appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23fbbf24' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'></polyline></svg>");
  background-repeat:no-repeat;background-position:right 12px center;padding-right:40px}
.bl-ctrl-item select option{background:#1f2937;color:#fde047}
.bl-src-info{color:#fff;font-size:16px;font-weight:500;opacity:.9}
.bl-winners-record span{color:#fbbf24;cursor:pointer;opacity:.85;transition:opacity .2s;text-decoration:underline}
.bl-winners-record span:hover{opacity:1}
.bl-start-btn{padding:16px 60px;font-size:28px;font-weight:900;color:#78350f;
  background:linear-gradient(180deg,#fef08a 0%,#fde047 20%,#f59e0b 60%,#d97706 100%);
  border:3px solid #fbbf24;border-radius:10px;cursor:pointer;
  box-shadow:0 6px 24px rgba(251,191,36,.5),inset 0 2px 4px rgba(255,255,255,.6),inset 0 -2px 4px rgba(0,0,0,.1);
  transition:all .2s;letter-spacing:6px;position:relative}
.bl-start-btn::before{content:"";position:absolute;top:4px;left:12px;right:12px;height:6px;
  background:linear-gradient(180deg,rgba(255,255,255,.6),transparent);border-radius:3px}
.bl-start-btn::after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent)}
.bl-start-btn:hover{transform:translateY(-2px);box-shadow:0 10px 30px rgba(251,191,36,.6),inset 0 2px 4px rgba(255,255,255,.6)}
.bl-start-btn:active{transform:translateY(0)}
.bl-start-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}

/* ---------- QUIZ 闯关答题 ---------- */
.quiz-stage{position:relative;height:100%;width:100%}
.quiz{position:relative;height:100%;width:100%;overflow:hidden;border-radius:24px;
  background:linear-gradient(135deg,#f97316 0%,#ea580c 30%,#dc2626 70%,#b91c1c 100%)}
.quiz-bg{position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(ellipse at 20% 20%,rgba(255,255,255,.12),transparent 50%),
    radial-gradient(ellipse at 80% 60%,rgba(251,191,36,.15),transparent 45%),
    radial-gradient(circle at 50% 100%,rgba(0,0,0,.2),transparent 60%);
}
.quiz-bg::before{content:"";position:absolute;inset:0;
  background-image:
    linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px),
    linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px);
  background-size:80px 80px;opacity:.6}

/* 等待页面 */
.quiz-waiting{display:flex;flex-direction:column}
.quiz-header{display:flex;align-items:center;justify-content:center;gap:60px;padding:50px 60px 20px;position:relative;z-index:5}
.quiz-books{position:relative;width:200px;height:180px;flex-shrink:0}
.quiz-books .book{position:absolute;border-radius:6px;box-shadow:0 10px 30px rgba(0,0,0,.3)}
.quiz-books .book::before{content:"";position:absolute;left:8px;top:6px;bottom:6px;width:3px;background:rgba(255,255,255,.3);border-radius:2px}
.quiz-books .book-red{left:20px;top:0;width:160px;height:52px;
  background:linear-gradient(135deg,#ef4444,#dc2626);border:3px solid #fca5a5}
.quiz-books .book-blue{left:10px;top:50px;width:170px;height:55px;
  background:linear-gradient(135deg,#3b82f6,#2563eb);border:3px solid #93c5fd}
.quiz-books .book-yellow{left:0;top:105px;width:180px;height:60px;
  background:linear-gradient(135deg,#eab308,#ca8a04);border:3px solid #fde047}

.quiz-title{text-align:center;flex-shrink:0}
.quiz-title h1{font-size:84px;color:#fff;font-weight:900;margin:0;
  text-shadow:0 4px 12px rgba(0,0,0,.3),0 0 40px rgba(251,191,36,.4);
  -webkit-text-stroke:2px #fff;letter-spacing:8px}
.quiz-subtitle{display:inline-block;margin-top:16px;padding:12px 40px;
  background:#fff;color:#dc2626;font-size:28px;font-weight:800;border-radius:50px;
  box-shadow:0 8px 24px rgba(0,0,0,.25);letter-spacing:4px}

.quiz-qr{background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.25);
  border-radius:20px;padding:20px;text-align:center;backdrop-filter:blur(10px)}
.quiz-qr .qr{width:130px;height:130px;background:#fff;border-radius:14px;padding:10px;margin:0 auto 12px;box-shadow:0 4px 16px rgba(0,0,0,.2)}
.quiz-qr-tip{font-size:14px;color:#fff;font-weight:600;opacity:.9}

.quiz-online{display:flex;align-items:center;justify-content:center;gap:30px;padding:20px 60px;position:relative;z-index:5}
.quiz-online-label{font-size:32px;color:#fff;font-weight:700;text-shadow:0 2px 8px rgba(0,0,0,.2)}
.quiz-online-count{font-size:64px;color:#fef08a;font-weight:900;text-shadow:0 4px 12px rgba(0,0,0,.3);min-width:100px;text-align:center}
.quiz-start-btn{padding:16px 50px;font-size:28px;font-weight:800;color:#dc2626;
  background:linear-gradient(180deg,#fef08a,#fbbf24);border:none;border-radius:50px;cursor:pointer;
  box-shadow:0 8px 24px rgba(0,0,0,.3),inset 0 2px 4px rgba(255,255,255,.6);
  transition:all .2s;letter-spacing:4px;position:relative}
.quiz-start-btn:hover{transform:translateY(-2px);box-shadow:0 12px 32px rgba(0,0,0,.35)}
.quiz-start-btn:active{transform:translateY(0)}

.quiz-avatars{display:grid;grid-template-columns:repeat(10,1fr);gap:16px;padding:20px 60px 40px;position:relative;z-index:5}
.quiz-avatar-item{display:flex;flex-direction:column;align-items:center;gap:8px}
.quiz-avatar{width:60px;height:60px;border-radius:50%;display:grid;place-items:center;
  color:#fff;font-weight:700;font-size:16px;border:3px solid rgba(255,255,255,.5);
  box-shadow:0 4px 12px rgba(0,0,0,.25)}
.quiz-avatar-empty{background:rgba(255,255,255,.15);color:rgba(255,255,255,.5);font-size:24px}
.quiz-avatar-name{font-size:13px;color:#fff;font-weight:600;text-shadow:0 1px 4px rgba(0,0,0,.3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:70px}

/* 答题页面 */
.quiz-question{display:flex;flex-direction:column;padding:40px 60px}
.quiz-question-head{display:flex;align-items:center;justify-content:space-between;padding:0 20px 20px;position:relative;z-index:5}
.quiz-q-no{font-size:28px;color:#fff;font-weight:700;text-shadow:0 2px 8px rgba(0,0,0,.2)}
.quiz-q-level{padding:8px 24px;background:rgba(255,255,255,.2);color:#fff;border-radius:20px;font-size:18px;font-weight:600}
.quiz-timer{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,#fbbf24,#f59e0b);
  display:grid;place-items:center;font-size:32px;font-weight:900;color:#fff;
  box-shadow:0 6px 20px rgba(0,0,0,.3),0 0 30px rgba(251,191,36,.4);
  transition:all .3s}
.quiz-timer.warning{background:linear-gradient(135deg,#ef4444,#dc2626);
  animation:quizTimerPulse .5s ease-in-out infinite alternate}
@keyframes quizTimerPulse{from{transform:scale(1)}to{transform:scale(1.1)}}

.quiz-q-content{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:40px;position:relative;z-index:5}
.quiz-q-text{font-size:42px;color:#fff;font-weight:700;text-align:center;
  text-shadow:0 3px 10px rgba(0,0,0,.3);line-height:1.4;max-width:900px}
.quiz-q-options{display:grid;grid-template-columns:1fr 1fr;gap:24px;width:100%;max-width:900px}
.quiz-q-opt{display:flex;align-items:center;gap:16px;padding:24px 32px;
  background:rgba(255,255,255,.95);border-radius:16px;
  box-shadow:0 6px 20px rgba(0,0,0,.2);position:relative;overflow:hidden}
.quiz-q-opt.correct{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff}
.quiz-q-opt .opt-letter{width:44px;height:44px;border-radius:50%;
  background:linear-gradient(135deg,#f97316,#ea580c);color:#fff;
  display:grid;place-items:center;font-size:22px;font-weight:800;flex-shrink:0}
.quiz-q-opt.correct .opt-letter{background:rgba(255,255,255,.3)}
.quiz-q-opt .opt-text{font-size:22px;font-weight:600;color:#1f2937;flex:1}
.quiz-q-opt.correct .opt-text{color:#fff}
.quiz-q-opt .opt-correct-tag{font-size:16px;font-weight:700;color:#fff;background:rgba(255,255,255,.25);padding:6px 14px;border-radius:20px}

/* 实时排行小卡片 */
.quiz-ranking-mini{position:absolute;right:40px;bottom:40px;width:300px;
  background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);
  border-radius:16px;padding:20px;backdrop-filter:blur(10px);z-index:10}
.quiz-rank-title{font-size:20px;color:#fff;font-weight:700;margin-bottom:12px;text-align:center;text-shadow:0 2px 6px rgba(0,0,0,.2)}
.quiz-rank-list{display:flex;flex-direction:column;gap:8px}
.quiz-rank-item{display:flex;align-items:center;gap:10px;padding:8px 12px;
  background:rgba(255,255,255,.08);border-radius:10px;font-size:14px;color:#fff}
.quiz-rank-no{width:24px;height:24px;border-radius:50%;background:rgba(255,255,255,.2);
  display:grid;place-items:center;font-weight:700;font-size:12px;flex-shrink:0}
.quiz-rank-no.top{background:linear-gradient(135deg,#fbbf24,#f59e0b)}
.quiz-rank-name{flex:1;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.quiz-rank-score{font-size:12px;opacity:.8;flex-shrink:0}

/* 结果页 */
.quiz-result{display:flex;flex-direction:column;padding:40px 60px}
.quiz-result-head{text-align:center;padding:0 20px 20px;position:relative;z-index:5}
.quiz-result-title{font-size:36px;color:#fff;font-weight:800;text-shadow:0 3px 10px rgba(0,0,0,.3)}
.quiz-answer-count{font-size:20px;color:#fef08a;font-weight:600;margin-top:8px}
.quiz-next-btn{width:100%;margin-top:16px;padding:14px;font-size:18px;font-weight:700;
  color:#dc2626;background:linear-gradient(180deg,#fef08a,#fbbf24);border:none;border-radius:12px;cursor:pointer;
  box-shadow:0 4px 12px rgba(0,0,0,.2);transition:all .2s}
.quiz-next-btn:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(0,0,0,.25)}

/* 最终排名 */
.quiz-ranking{display:flex;flex-direction:column;padding:40px 60px;align-items:center}
.quiz-ranking-top{text-align:center;margin-bottom:30px;position:relative;z-index:5}
.quiz-ranking-top h1{font-size:52px;color:#fff;font-weight:900;margin:0;
  text-shadow:0 4px 12px rgba(0,0,0,.3);letter-spacing:4px}
.quiz-ranking-sub{font-size:22px;color:#fef08a;font-weight:600;margin-top:10px}

.quiz-podium{display:flex;align-items:flex-end;justify-content:center;gap:30px;margin-bottom:30px;position:relative;z-index:5}
.podium-item{display:flex;flex-direction:column;align-items:center;gap:10px}
.podium-item.podium-1{order:2}
.podium-item.podium-2{order:1}
.podium-item.podium-3{order:3}
.podium-avatar{width:90px;height:90px;border-radius:50%;display:grid;place-items:center;
  color:#fff;font-weight:800;font-size:24px;border:4px solid rgba(255,255,255,.6);
  box-shadow:0 8px 24px rgba(0,0,0,.3)}
.podium-1 .podium-avatar{width:120px;height:120px;font-size:30px;border-color:#fef08a;box-shadow:0 0 40px rgba(251,191,36,.5)}
.podium-name{font-size:22px;color:#fff;font-weight:700;text-shadow:0 2px 8px rgba(0,0,0,.3)}
.podium-1 .podium-name{font-size:28px}
.podium-score{font-size:16px;color:#fef08a;font-weight:600}
.podium-rank{font-size:18px;color:#fff;font-weight:700;padding:6px 20px;
  background:rgba(255,255,255,.2);border-radius:20px}

.quiz-ranking-list{width:100%;max-width:600px;display:flex;flex-direction:column;gap:8px;position:relative;z-index:5}
.quiz-rank-row{display:flex;align-items:center;gap:16px;padding:12px 20px;
  background:rgba(255,255,255,.1);border-radius:12px;color:#fff}
.quiz-rank-row .rank-no{width:32px;font-size:18px;font-weight:700;opacity:.8}
.quiz-rank-row .rank-name{flex:1;font-size:18px;font-weight:600}
.quiz-rank-row .rank-score{font-size:15px;opacity:.8}

.quiz-restart-btn{margin-top:30px;padding:16px 60px;font-size:24px;font-weight:800;color:#dc2626;
  background:linear-gradient(180deg,#fef08a,#fbbf24);border:none;border-radius:50px;cursor:pointer;
  box-shadow:0 8px 24px rgba(0,0,0,.3);transition:all .2s;letter-spacing:4px;position:relative;z-index:5}
.quiz-restart-btn:hover{transform:translateY(-2px);box-shadow:0 12px 32px rgba(0,0,0,.35)}

/* ---------- WISH 许愿树 ---------- */
.wish-stage{flex:1;position:relative;overflow:hidden;border-radius:24px;background:linear-gradient(180deg,#0a0820 0%,#1a0f3d 25%,#2d1b5e 55%,#3b1f6b 75%,#1e293b 100%)}
.wish-stage::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 30% 20%,rgba(139,92,246,.15),transparent 50%),radial-gradient(ellipse at 70% 40%,rgba(236,72,153,.1),transparent 45%);pointer-events:none}

/* 月亮 */
.wish-moon{position:absolute;top:35px;left:55px;width:100px;height:100px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fefce8,#fef08a 40%,#fbbf24 75%,#f59e0b 100%);box-shadow:0 0 50px rgba(251,191,36,.5),0 0 100px rgba(251,191,36,.25),inset -10px -10px 25px rgba(217,119,6,.3)}
.wish-moon::before{content:"";position:absolute;top:22px;left:28px;width:15px;height:15px;border-radius:50%;background:rgba(217,119,6,.2)}
.wish-moon::after{content:"";position:absolute;top:48px;left:55px;width:10px;height:10px;border-radius:50%;background:rgba(217,119,6,.15)}

/* 星星 */
.wish-stars{position:absolute;inset:0;pointer-events:none}
.wish-stars span{position:absolute;border-radius:50%;background:#fff;box-shadow:0 0 8px rgba(255,255,255,.9);animation:twinkle ease-in-out infinite alternate}
.wish-stars .star-big{width:3px;height:3px}
.wish-stars .star-med{width:2px;height:2px}
.wish-stars .star-sm{width:1.5px;height:1.5px;box-shadow:0 0 4px rgba(255,255,255,.7)}
@keyframes twinkle{from{opacity:.25;transform:scale(.8)}to{opacity:1;transform:scale(1.3)}}

/* 萤火虫 */
.wish-fireflies{position:absolute;inset:0;pointer-events:none;z-index:3}
.wish-fireflies span{position:absolute;width:4px;height:4px;border-radius:50%;background:#fef08a;box-shadow:0 0 10px #fde047,0 0 20px rgba(250,204,21,.6);animation:firefly 8s ease-in-out infinite}
@keyframes firefly{
  0%,100%{opacity:.2;transform:translate(0,0)}
  25%{opacity:1;transform:translate(20px,-30px)}
  50%{opacity:.6;transform:translate(-10px,-50px)}
  75%{opacity:.9;transform:translate(30px,-20px)}
}

/* 树整体 */
.wish-tree-wrap{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end}
.wish-tree{position:relative;width:62%;height:90%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end}

/* 树干 */
.wt-trunk{position:relative;width:95px;height:22%;background:linear-gradient(90deg,#5c2a0a 0%,#7c3d12 25%,#8b4513 50%,#7c3d12 75%,#5c2a0a 100%);border-radius:20px 20px 0 0;display:grid;place-items:start center;padding-top:22px;z-index:2;box-shadow:inset -12px 0 30px rgba(0,0,0,.5),inset 12px 0 30px rgba(255,255,255,.06),0 4px 20px rgba(0,0,0,.3)}
.wt-trunk-texture{position:absolute;inset:0;border-radius:20px 20px 0 0;pointer-events:none;background:
  repeating-linear-gradient(90deg,transparent 0 6px,rgba(0,0,0,.12) 6px 7px,transparent 7px 14px),
  radial-gradient(ellipse at 30% 60%,rgba(139,69,19,.4) 0%,transparent 30%),
  radial-gradient(ellipse at 70% 40%,rgba(139,69,19,.3) 0%,transparent 25%)}
.wt-logo{width:52px;height:52px;border-radius:14px;background:rgba(255,255,255,.97);display:grid;place-items:center;z-index:3;box-shadow:0 6px 24px rgba(0,0,0,.35),0 0 0 3px rgba(251,191,36,.3)}
.wt-logo img{width:100%;height:100%;object-fit:contain;border-radius:10px;padding:4px}
.wt-logo-emoji{font-size:26px}

/* 树冠 - 6层递进，更高更尖 */
.wt-canopy{position:absolute;left:50%;transform:translateX(-50%);box-shadow:0 12px 40px rgba(0,0,0,.35)}
.wt-canopy::before{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(ellipse at 30% 30%,rgba(255,255,255,.14),transparent 50%);pointer-events:none}
.wt-canopy-1{bottom:20%;width:100%;height:18%;background:linear-gradient(180deg,#15803d 0%,#166534 50%,#14532d 100%);border-radius:50% 50% 48% 48% / 65% 65% 35% 35%}
.wt-canopy-2{bottom:33%;width:88%;height:17%;background:linear-gradient(180deg,#16a34a 0%,#15803d 50%,#166534 100%);border-radius:50% 50% 45% 45% / 60% 60% 40% 40%}
.wt-canopy-3{bottom:45%;width:75%;height:17%;background:linear-gradient(180deg,#22c55e 0%,#16a34a 50%,#15803d 100%);border-radius:50% 50% 42% 42% / 55% 55% 45% 45%}
.wt-canopy-4{bottom:56%;width:60%;height:16%;background:linear-gradient(180deg,#4ade80 0%,#22c55e 55%,#16a34a 100%);border-radius:50% 50% 40% 40% / 50% 50% 50% 50%}
.wt-canopy-5{bottom:66%;width:45%;height:15%;background:linear-gradient(180deg,#86efac 0%,#4ade80 50%,#22c55e 100%);border-radius:50% 50% 38% 38% / 45% 45% 55% 55%}
.wt-canopy-6{bottom:75%;width:28%;height:13%;background:linear-gradient(180deg,#bbf7d0 0%,#86efac 45%,#4ade80 100%);border-radius:50% 50% 35% 35% / 40% 40% 60% 60%}

/* 树冠上的积雪/高光点缀 */
.wt-canopy::after{content:"";position:absolute;top:8%;left:15%;right:15%;height:20%;background:linear-gradient(180deg,rgba(255,255,255,.15),transparent);border-radius:50%;pointer-events:none}

/* 灯笼 */
.wt-lanterns{position:absolute;inset:0;z-index:4}
.wt-lantern{position:absolute;cursor:pointer;transform-origin:50% -10px;animation:lanternSway 3s ease-in-out infinite alternate;transition:transform .25s}
.wt-lantern:hover{transform:scale(1.2)!important;z-index:20}
.wt-lantern:hover .wl-glow{opacity:1}
.wt-lantern.is-new{animation:lanternAppear 1.2s cubic-bezier(.2,.9,.3,1.4) both, lanternSway 3s ease-in-out 1.2s infinite alternate}

.wl-body{position:relative;width:100%;height:100%;border-radius:50% 50% 42% 42% / 55% 55% 45% 45%;background:
  radial-gradient(ellipse at 30% 25%,rgba(255,255,255,.45) 0%,transparent 40%),
  radial-gradient(ellipse at 70% 80%,rgba(0,0,0,.2) 0%,transparent 50%),
  var(--lc,#ef4444);
  box-shadow:
    0 4px 14px rgba(0,0,0,.4),
    inset 0 -6px 14px rgba(0,0,0,.3),
    inset 0 3px 8px rgba(255,255,255,.25)}
.wl-body::before{content:"";position:absolute;top:-4px;left:50%;transform:translateX(-50%);width:38%;height:6px;background:linear-gradient(180deg,#fcd34d,#d97706);border-radius:4px 4px 0 0;box-shadow:0 2px 4px rgba(0,0,0,.2)}
.wl-body::after{content:"";position:absolute;bottom:-4px;left:50%;transform:translateX(-50%);width:38%;height:6px;background:linear-gradient(0deg,#fcd34d,#d97706);border-radius:0 0 4px 4px;box-shadow:0 -2px 4px rgba(0,0,0,.15)}
.wl-line{position:absolute;top:-18px;left:50%;transform:translateX(-50%);width:1.5px;height:18px;background:rgba(255,255,255,.4)}
.wl-tassel{position:absolute;bottom:-20px;left:50%;transform:translateX(-50%);width:2px;height:18px;background:linear-gradient(180deg,#fbbf24,#f59e0b);border-radius:0 0 2px 2px}
.wl-tassel::after{content:"";position:absolute;bottom:-5px;left:50%;transform:translateX(-50%);width:10px;height:10px;border-radius:50%;background:radial-gradient(circle,#fde047 0%,#f59e0b 70%,#d97706 100%);box-shadow:0 0 8px rgba(251,191,36,.7),0 0 16px rgba(251,191,36,.4)}
.wl-glow{position:absolute;inset:-50%;border-radius:50%;background:radial-gradient(circle,var(--lc,#ef4444) 0%,transparent 65%);opacity:.45;pointer-events:none;transition:opacity .3s;animation:lanternGlow 2.5s ease-in-out infinite alternate;filter:blur(2px)}
@keyframes lanternGlow{from{opacity:.3}to{opacity:.7}}

@keyframes lanternSway{from{transform:rotate(calc(var(--rot,0deg) - 5deg))}to{transform:rotate(calc(var(--rot,0deg) + 5deg))}}
@keyframes lanternAppear{
  0%{opacity:0;transform:translateY(100px) scale(.3) rotate(-20deg)}
  50%{opacity:1;transform:translateY(-15px) scale(1.15) rotate(5deg)}
  75%{transform:translateY(5px) scale(.95) rotate(-2deg)}
  100%{opacity:1;transform:translateY(0) scale(1) rotate(0)}
}

/* 地面 + 雪地 */
.wish-ground{position:relative;height:60px;width:110%;background:linear-gradient(180deg,rgba(148,163,184,.25) 0%,rgba(100,116,139,.4) 40%,rgba(71,85,105,.6) 100%);border-radius:50% 50% 0 0 / 100% 100% 0 0;margin:0 -5% -6px;z-index:1}
.wish-ground::before{content:"";position:absolute;top:0;left:10%;right:10%;height:12px;background:linear-gradient(180deg,rgba(255,255,255,.35),transparent);border-radius:50%;filter:blur(2px)}

/* 右侧信息卡 */
.wish-side{position:absolute;top:28px;right:30px;display:flex;flex-direction:column;gap:14px;z-index:20}
.wish-stat-card{background:linear-gradient(135deg,rgba(255,255,255,.12),rgba(255,255,255,.06));border:1px solid rgba(255,255,255,.2);border-radius:20px;padding:18px 26px;text-align:center;backdrop-filter:blur(16px);box-shadow:0 8px 32px rgba(0,0,0,.25)}
.ws-icon{font-size:36px;margin-bottom:6px;filter:drop-shadow(0 2px 8px rgba(251,191,36,.4))}
.ws-num{font-size:48px;font-weight:900;line-height:1;background:linear-gradient(100deg,#fef08a,#fbbf24 50%,#f59e0b);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 2px 8px rgba(251,191,36,.3))}
.ws-lab{font-size:14px;color:rgba(255,255,255,.7);margin-top:6px;font-weight:600;letter-spacing:3px}

.wish-qr-card{background:linear-gradient(135deg,rgba(255,255,255,.12),rgba(255,255,255,.06));border:1px solid rgba(255,255,255,.2);border-radius:20px;padding:18px;text-align:center;backdrop-filter:blur(16px);box-shadow:0 8px 32px rgba(0,0,0,.25)}
.wish-qr-card .qr{width:110px;height:110px;background:#fff;border-radius:14px;padding:10px;margin:0 auto 12px;box-shadow:0 4px 16px rgba(0,0,0,.2)}
.wish-qr-card p{font-size:15px;color:#fff;font-weight:700;margin:0 0 3px}
.wish-qr-card small{font-size:12px;color:rgba(255,255,255,.6)}

/* 浮动愿望卡片 */
.wish-float-card{position:absolute;left:36px;bottom:50px;max-width:380px;background:linear-gradient(145deg,#fffbeb,#fef3c7);border:1px solid #fde68a;border-radius:22px;padding:24px 28px;box-shadow:0 24px 60px rgba(0,0,0,.35),0 0 40px rgba(251,191,36,.15);z-index:20;opacity:0;transform:translateY(20px);transition:opacity .7s cubic-bezier(.2,.9,.3,1),transform .7s cubic-bezier(.2,.9,.3,1);pointer-events:none}
.wish-float-card::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;border-radius:22px;background:linear-gradient(135deg,rgba(251,191,36,.5),transparent 30%,rgba(236,72,153,.3));z-index:-1;opacity:.6}
.wish-float-card.show{opacity:1;transform:translateY(0)}
.wfc-tag{font-size:48px;text-align:center;margin-bottom:12px;animation:wdSway 2s ease-in-out infinite alternate;filter:drop-shadow(0 4px 12px rgba(251,191,36,.4))}
@keyframes wdSway{from{transform:rotate(-6deg)}to{transform:rotate(6deg)}}
.wfc-content{font-size:19px;font-weight:700;color:#78350f;line-height:1.8;text-align:center;margin-bottom:16px;text-shadow:0 1px 0 rgba(255,255,255,.5)}
.wfc-user{display:flex;align-items:center;justify-content:center;gap:10px;font-size:13px;color:#a16207}
.wfc-user b{font-weight:700;color:#92400e}
.wfc-av{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:12px;font-weight:700;box-shadow:0 2px 8px rgba(0,0,0,.2)}

/* 空状态 */
.wish-empty{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:rgba(255,255,255,.6);text-align:center;background:rgba(12,10,32,.8);z-index:30;border-radius:24px}
.wish-empty .qr{width:150px;height:150px;background:#fff;border-radius:18px;padding:14px;box-shadow:0 8px 30px rgba(0,0,0,.3)}
.wish-empty b{font-size:26px}.wish-empty p{font-size:17px}

/* error */
.sc-error{position:fixed;inset:0;display:grid;place-items:center;text-align:center;padding:40px}
.sc-error .box{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.15);border-radius:24px;padding:50px 70px}
.sc-error .e{font-size:70px;margin-bottom:16px}
.sc-error h2{font-size:30px;margin-bottom:10px}
.sc-error p{color:rgba(255,255,255,.6);margin-bottom:24px}
.sc-error a{color:#f9a8d4;font-weight:700}

/* mode switch (bottom bar) */
.sc-modes{position:absolute;bottom:54px;right:46px;left:46px;z-index:30;display:flex;gap:8px;justify-content:center;
  opacity:0;transform:translateY(20px);pointer-events:none;
  transition:opacity .35s ease,transform .35s ease;
}
.sc-modes.show{opacity:1;transform:translateY(0);pointer-events:auto}
.sc-modes a{font-size:12.5px;color:rgba(255,255,255,.55);background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);padding:6px 13px;border-radius:9px;transition:.2s}
.sc-modes a:hover{color:#fff;background:rgba(255,255,255,.15)}
.sc-modes a.on{color:#fff;background:linear-gradient(135deg,#7c3aed,#db2777)}
/* 底部触发热区 */
.sc-bottom-trigger{position:absolute;bottom:0;left:0;right:0;height:90px;z-index:29;pointer-events:none}
@media(max-width:900px){
  .sc-head{padding:16px 20px}.sc-head h1{font-size:22px}.sc-code b{font-size:22px}
  .sc-body{padding:6px 18px 20px}.lt-name{font-size:60px}.lt-winners{display:none}
  .ci-num{font-size:48px}.ci-rate{display:none}.ab-tile .ae{font-size:110px}
}

/* ============================================================
   3D 签到墙
   ============================================================ */
.w3d-top{display:flex;align-items:center;gap:20px;margin-bottom:10px}
.w3d-stat{display:flex;align-items:center;gap:22px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);border-radius:20px;padding:16px 28px;backdrop-filter:blur(12px)}
.w3d-num{font-size:58px;font-weight:900;line-height:1;background:linear-gradient(100deg,#a5f3fc,#c4b5fd 55%,#f9a8d4);-webkit-background-clip:text;background-clip:text;color:transparent}
.w3d-num small{font-size:22px;color:rgba(255,255,255,.5);-webkit-text-fill-color:rgba(255,255,255,.5)}
.w3d-stat .lab{font-size:17px;font-weight:700;color:rgba(255,255,255,.88)}
.w3d-stat .sub{font-size:13px;color:rgba(255,255,255,.5);margin-top:4px}
.w3d-shapes{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.w3d-shape{font-size:14px;font-weight:700;color:rgba(255,255,255,.65);background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);padding:9px 16px;border-radius:99px;cursor:pointer;transition:.2s;font-family:inherit}
.w3d-shape:hover{background:rgba(255,255,255,.18);color:#fff}
.w3d-shape.on{color:#fff;background:linear-gradient(135deg,#7c3aed,#db2777);border-color:transparent;box-shadow:0 6px 22px rgba(124,58,237,.5)}
.w3d-viewport{flex:1;position:relative;perspective:1800px;overflow:hidden;min-height:420px}
/* 3D签到墙右下角扫码卡片（可拖动） */
.w3d-qr-card{position:absolute;right:22px;bottom:18px;z-index:20;background:rgba(15,11,33,.62);border:1px solid rgba(255,255,255,.2);backdrop-filter:blur(14px);border-radius:16px;padding:12px 14px 10px;text-align:center;box-shadow:0 12px 40px rgba(0,0,0,.45)}
.w3d-qr-card .qr{background:#fff;padding:8px;border-radius:10px;display:inline-block;line-height:0;width:148px;height:148px}
.w3d-qr-card .qr img,.w3d-qr-card .qr canvas{display:block;width:132px;height:132px;margin:0 auto}
.w3d-qr-text{color:#fff;font-size:15px;font-weight:800;margin-top:9px;letter-spacing:1px}
.w3d-qr-sub{color:rgba(255,255,255,.6);font-size:12px;margin-top:2px}
.w3d-tilt{position:absolute;inset:0;transform-style:preserve-3d;transition:transform 1.2s ease}
.w3d-tilt.galaxy{transform:rotateX(56deg)}
.w3d-spin{position:absolute;inset:0;transform-style:preserve-3d;animation:w3dRotate 50s linear infinite}
.w3d-stage{position:absolute;left:50%;top:50%;transform-style:preserve-3d}
.w3d-tile{position:absolute;left:-40px;top:-40px;width:80px;height:80px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:24px;color:#fff;
  box-shadow:0 8px 24px rgba(0,0,0,.4),inset 0 3px 8px rgba(255,255,255,.35),inset 0 -4px 10px rgba(0,0,0,.25);
  border:3px solid rgba(255,255,255,.35);transition:transform 1.25s cubic-bezier(.25,.8,.25,1);backface-visibility:hidden;transform-style:preserve-3d}
.w3d-stage.morph .w3d-tile{transition:transform 1.25s cubic-bezier(.34,1.3,.5,1)}
.w3d-core{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:200px;height:200px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.35),rgba(124,58,237,.25) 45%,transparent 72%);
  display:grid;place-items:center;pointer-events:none;animation:corePulse 3s ease-in-out infinite}
.w3d-core span{font-size:72px;filter:drop-shadow(0 0 32px rgba(236,72,153,.8))}
.w3d-logo{width:160px;height:160px;border-radius:32px;background:rgba(255,255,255,.94);padding:16px;
  display:grid;place-items:center;box-shadow:0 16px 50px rgba(0,0,0,.35),0 0 60px rgba(167,139,250,.55);
  border:3px solid rgba(255,255,255,.75)}
.w3d-logo img{max-width:100%;max-height:100%;object-fit:contain;display:block}
.w3d-tilt.galaxy .w3d-core{opacity:.25}
@keyframes w3dRotate{from{transform:rotateY(0deg) rotateZ(0deg)}to{transform:rotateY(360deg) rotateZ(0deg)}}
@keyframes corePulse{50%{transform:translate(-50%,-50%) scale(1.12);opacity:.75}}

/* ============================================================
   Logo签到大屏
   ============================================================ */
.ls-screen{position:relative;width:100%;height:100%;display:flex;flex-direction:column}
.ls-header{padding:24px 40px 16px;display:flex;justify-content:space-between;align-items:center;z-index:10}
.ls-title{display:flex;align-items:center;gap:14px}
.ls-icon{font-size:38px}
.ls-title h2{font-size:28px;font-weight:900;color:#fff;margin:0;text-shadow:0 2px 16px rgba(139,92,246,.5)}
.ls-count{display:flex;align-items:baseline;gap:6px;background:rgba(139,92,246,.2);backdrop-filter:blur(10px);padding:10px 22px;border-radius:20px;border:1px solid rgba(139,92,246,.3)}
.ls-count b{font-size:32px;font-weight:900;color:#fff;line-height:1}
.ls-count span{font-size:14px;color:rgba(255,255,255,.7);font-weight:600}
.ls-canvas-wrap{flex:1;position:relative;min-height:0}
.ls-canvas-wrap canvas{position:absolute;left:0;top:0;display:block}
.ls-footer{position:absolute;bottom:30px;right:40px;z-index:10}
.ls-qr-card{background:rgba(255,255,255,.1);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.2);border-radius:16px;padding:16px;text-align:center}
.ls-qr-card .qr{background:#fff;padding:8px;border-radius:10px;display:inline-block}
.ls-qr-card .qr img{display:block}
.ls-qr-text{margin-top:10px;font-size:13px;color:rgba(255,255,255,.85);font-weight:600}

/* ============================================================
   抽奖中心：玩法切换 / 开奖设置
   ============================================================ */
.lt-styles{display:flex;gap:10px;justify-content:center;margin-bottom:16px}
.lt-styles a{font-size:15px;font-weight:700;color:rgba(255,255,255,.62);background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.13);padding:9px 22px;border-radius:99px}
.lt-styles a.on{color:#fff;background:linear-gradient(135deg,#f59e0b,#db2777);border-color:transparent;box-shadow:0 8px 24px rgba(219,39,119,.4)}
.lt-no-prize{color:rgba(255,255,255,.6);font-size:17px;padding:16px;text-align:center;width:100%}
.lt-stage-roll{flex-direction:column;justify-content:center;gap:18px}
/* 滚动/弹幕/名单抽奖右下角扫码卡片（可拖动） */
.roll-qr-card{position:absolute;right:24px;bottom:20px;z-index:15;background:rgba(15,11,33,.58);border:1px solid rgba(255,255,255,.2);backdrop-filter:blur(12px);border-radius:16px;padding:12px 14px;text-align:center;box-shadow:0 10px 34px rgba(0,0,0,.4)}
.roll-qr-card .rqr-code{width:120px;height:120px;background:#fff;border-radius:10px;padding:7px;margin:0 auto;display:grid;place-items:center;line-height:0}
.roll-qr-card .rqr-code img{width:100%;height:100%;display:block}
.roll-qr-card .rqr-label{font-size:13px;font-weight:700;color:rgba(255,255,255,.88);margin-top:9px;white-space:nowrap}
.lt-roll-wrap{position:relative;width:min(1000px,94%);text-align:center}
/* 每轮抽取人数调节器 */
.count-adjuster{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:16px}
.ca-label{font-size:14px;color:rgba(255,255,255,.6);letter-spacing:2px}
.ca-box{display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.15);border-radius:40px;padding:4px 8px}
.ca-btn{width:36px;height:36px;border-radius:50%;border:2px solid rgba(251,191,36,.5);background:rgba(251,191,36,.1);color:#fbbf24;font-size:22px;font-weight:900;cursor:pointer;transition:.2s;display:grid;place-items:center;line-height:1;padding:0}
.ca-btn:hover{background:rgba(251,191,36,.25);transform:scale(1.08)}
.ca-btn:active{transform:scale(.92)}
.ca-btn:disabled{opacity:.3;cursor:not-allowed;transform:none}
.ca-num{font-size:32px;font-weight:900;color:#fbbf24;font-family:var(--font-mono),'Courier New',monospace;min-width:42px;text-align:center;text-shadow:0 0 15px rgba(251,191,36,.5)}
.lt-pooltip{font-size:15px;color:rgba(255,255,255,.62);margin-bottom:14px}
.lt-pooltip b{color:#fcd34d;font-size:18px}
.lt-slots{display:grid;gap:16px;grid-template-columns:1fr}
/* 密度：根据人数自动调整卡片大小 */
.lt-slots[data-density="loose"] .lt-slot{min-height:190px;border-radius:26px}
.lt-slots[data-density="loose"] .lt-slot .lt-name{font-size:62px;letter-spacing:8px}
.lt-slots[data-density="normal"] .lt-slot{min-height:140px;border-radius:20px}
.lt-slots[data-density="normal"] .lt-slot .lt-name{font-size:46px;letter-spacing:5px}
.lt-slots[data-density="dense"] .lt-slot{min-height:110px;border-radius:16px}
.lt-slots[data-density="dense"] .lt-slot .lt-name{font-size:34px;letter-spacing:3px}
.lt-slots[data-density="dense"] .lt-slot .lt-dept{font-size:13px}
.lt-slot{background:linear-gradient(160deg,rgba(255,255,255,.12),rgba(255,255,255,.04));border:2px solid rgba(255,255,255,.18);
  display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden;backdrop-filter:blur(14px);padding:18px}
.lt-slot .ph{font-size:26px;color:rgba(255,255,255,.55);font-weight:800;letter-spacing:2px}
.lt-slot .ph small{display:block;font-size:14px;margin-top:8px;letter-spacing:0;color:rgba(255,255,255,.4)}
.lt-slot .lt-name{font-size:62px;font-weight:900;letter-spacing:8px;line-height:1.15;text-shadow:0 0 50px rgba(236,72,153,.55)}
.lt-slot .lt-dept{font-size:17px;color:rgba(255,255,255,.7);margin-top:6px;font-weight:600}
.lt-slot.rolling .lt-name{background:linear-gradient(100deg,#a5f3fc,#c4b5fd,#f9a8d4,#fdba74,#a5f3fc);background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shine 1s linear infinite}
.lt-slot.winner{border-color:var(--gold);background:linear-gradient(160deg,rgba(251,191,36,.22),rgba(249,115,22,.12));box-shadow:0 0 70px rgba(251,191,36,.4);animation:winGlow 1.4s ease-in-out infinite}
.lt-slot.winner .lt-name{color:var(--gold);text-shadow:0 0 50px rgba(251,191,36,.8)}
.lt-slot .win-rank{position:absolute;top:10px;left:14px;font-size:13px;font-weight:800;color:rgba(251,191,36,.85);letter-spacing:1px}
.lt-slot .win-prize{margin-top:10px;font-size:17px;font-weight:800;color:#fde68a;background:rgba(0,0,0,.25);padding:6px 18px;border-radius:99px}
/* 0% 必不中：谢谢参与 */
.lt-slot.thanks{border-color:rgba(94,234,212,.5);background:linear-gradient(160deg,rgba(45,212,191,.16),rgba(59,130,246,.1));box-shadow:0 0 60px rgba(45,212,191,.28)}
.lt-slot.thanks .lt-name{color:#5eead4;text-shadow:0 0 44px rgba(45,212,191,.7);letter-spacing:10px}
.lt-slot .thanks-ic{font-size:64px;line-height:1;margin-bottom:8px;animation:thanksBob 1.6s ease-in-out infinite}
@keyframes thanksBob{0%,100%{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-10px) rotate(6deg)}}
.lt-stage.danmaku .lt-slot,.lt-stage.list .lt-slot{max-width:760px;margin:0 auto}
.lt-stage.danmaku .lt-slot{border-color:rgba(34,211,238,.35);background:linear-gradient(160deg,rgba(34,211,238,.14),rgba(124,58,237,.1))}
.lt-stage.list .lt-slot{border-color:rgba(52,211,153,.35);background:linear-gradient(160deg,rgba(16,185,129,.14),rgba(6,182,212,.08))}
.lt-ava{border-radius:50%;display:inline-grid;place-items:center;font-weight:800;color:#fff}

/* 开奖设置面板 */
.lt-cfg{position:absolute;left:46px;bottom:62px;z-index:40}
.lt-cfg-toggle{font-family:inherit;font-size:14px;font-weight:700;color:rgba(255,255,255,.75);background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);padding:9px 18px;border-radius:12px;cursor:pointer;backdrop-filter:blur(10px)}
.lt-cfg-toggle:hover{background:rgba(255,255,255,.2);color:#fff}
.lt-cfg-panel{position:absolute;bottom:46px;left:0;width:300px;background:rgba(20,14,42,.92);border:1px solid rgba(255,255,255,.18);border-radius:18px;padding:20px;
  backdrop-filter:blur(24px);box-shadow:0 30px 70px rgba(0,0,0,.5);display:none;animation:flashIn .25s ease}
.lt-cfg.open .lt-cfg-panel{display:block}
.cfg-lab{display:block;font-size:13px;font-weight:700;color:rgba(255,255,255,.75);margin:12px 0 8px}
.cfg-lab:first-child{margin-top:0}
.cfg-src,.cfg-cnt{display:flex;gap:7px;flex-wrap:wrap}
.cfg-src button,.cfg-cnt button{font-family:inherit;font-size:13px;font-weight:700;color:rgba(255,255,255,.7);background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.15);padding:7px 13px;border-radius:10px;cursor:pointer}
.cfg-src button.on,.cfg-cnt button.on{background:linear-gradient(135deg,#7c3aed,#db2777);color:#fff;border-color:transparent}
#cfgEx{width:100%;min-height:74px;resize:vertical;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.15);border-radius:10px;color:#fff;font-size:13px;padding:10px 12px;font-family:inherit}
.cfg-hint{font-size:12px;color:rgba(255,255,255,.45);margin-top:10px}

/* ============================================================
   九宫格抽奖
   ============================================================ */
.lt-stage-grid{flex-direction:row;align-items:center;justify-content:center;gap:50px}
.grid-wrap{display:flex;align-items:center;gap:56px}
.grid-board{display:grid;grid-template-columns:repeat(3,170px);grid-template-rows:repeat(3,170px);gap:16px}
.grid-cell{border-radius:22px;background:linear-gradient(160deg,rgba(255,255,255,.12),rgba(255,255,255,.04));border:2px solid rgba(255,255,255,.16);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;transition:transform .12s;backdrop-filter:blur(12px)}
.grid-cell .gc-emoji{font-size:46px;line-height:1;filter:drop-shadow(0 6px 14px rgba(0,0,0,.4))}
.grid-cell .gc-name{font-size:19px;font-weight:900;color:#fde68a}
.grid-cell .gc-sub{font-size:12.5px;color:rgba(255,255,255,.6);text-align:center;padding:0 8px}
.grid-cell.thanks .gc-name{color:rgba(255,255,255,.55)}
.grid-cell.lit{background:linear-gradient(160deg,rgba(251,191,36,.95),rgba(249,115,22,.85));border-color:#fff;transform:scale(1.07);
  box-shadow:0 0 46px rgba(251,191,36,.85);z-index:2}
.grid-cell.lit .gc-name,.grid-cell.lit .gc-sub{color:#fff}
.grid-center{grid-column:2;grid-row:2;border:none;border-radius:22px;cursor:pointer;font-family:inherit;
  background:radial-gradient(circle at 32% 30%,#fb7185,#db2777 55%,#9d174d);color:#fff;font-size:28px;font-weight:900;letter-spacing:4px;
  box-shadow:0 0 0 10px rgba(219,39,119,.15),0 18px 44px rgba(219,39,119,.5);animation:breathe 2.4s infinite}
.grid-center:active{transform:scale(.95)}
.grid-center:disabled{filter:grayscale(.7);cursor:not-allowed;animation:none;opacity:.65}
.grid-side{width:270px;display:flex;flex-direction:column;gap:18px}
.grid-prize-now{font-size:24px;font-weight:900;line-height:1.5;color:#fde68a;text-shadow:0 4px 24px rgba(251,191,36,.4)}
.grid-prize-now b{font-size:30px}
.grid-pool{font-size:15px;color:rgba(255,255,255,.65);background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.13);border-radius:14px;padding:13px 18px}
.grid-pool b{color:#fcd34d;font-size:18px}
.grid-count-row{display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.13);border-radius:14px;padding:10px 16px;flex-wrap:wrap}
.gcr-label{font-size:13px;color:rgba(255,255,255,.6);letter-spacing:1px}
.gcr-btn{width:30px;height:30px;border-radius:50%;border:2px solid rgba(251,191,36,.5);background:rgba(251,191,36,.1);color:#fbbf24;font-size:18px;font-weight:900;cursor:pointer;transition:.2s;display:grid;place-items:center;line-height:1;padding:0}
.gcr-btn:hover{background:rgba(251,191,36,.25);transform:scale(1.08)}
.gcr-btn:active{transform:scale(.92)}
.gcr-btn:disabled{opacity:.3;cursor:not-allowed;transform:none}
.gcr-num{font-size:24px;font-weight:900;color:#fbbf24;font-family:var(--font-mono),'Courier New',monospace;min-width:32px;text-align:center;text-shadow:0 0 12px rgba(251,191,36,.5)}
.gcr-tip{font-size:13px;color:rgba(255,255,255,.6)}
.grid-legend{font-size:13.5px;line-height:1.8;color:rgba(255,255,255,.5)}
.grid-qr-card{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);border-radius:16px;padding:16px;text-align:center;backdrop-filter:blur(10px)}
.gqr-label{font-size:14px;font-weight:700;color:#fcd34d;margin-bottom:12px}
.gqr-code{width:140px;height:140px;margin:0 auto;background:#fff;border-radius:12px;padding:8px;display:grid;place-items:center}
.gqr-code img{width:100%;height:100%}
.gqr-tip{font-size:12.5px;color:rgba(255,255,255,.55);margin-top:10px}
.grid-win-overlay{position:absolute;inset:0;z-index:50;display:grid;place-items:center;background:rgba(10,6,24,.55);backdrop-filter:blur(4px);animation:flashIn .3s}
.gwo-box{background:linear-gradient(160deg,rgba(251,191,36,.2),rgba(219,39,119,.18));border:2px solid rgba(251,191,36,.7);border-radius:32px;padding:44px 70px;text-align:center;box-shadow:0 0 100px rgba(251,191,36,.5);animation:popIn .5s cubic-bezier(.2,.9,.3,1.4)}
.gwo-tag{font-size:22px;font-weight:800;letter-spacing:4px;color:#fde68a;margin-bottom:20px}
.gwo-ava{width:110px;height:110px;font-size:40px;font-weight:900;margin:0 auto 16px;border:3px solid rgba(255,255,255,.55);box-shadow:0 0 40px rgba(236,72,153,.6)}
.gwo-name{font-size:58px;font-weight:900;text-shadow:0 0 50px rgba(251,191,36,.7)}
.gwo-dept{font-size:19px;color:rgba(255,255,255,.75);margin-top:8px}
.gwo-prize{margin-top:18px;font-size:24px;font-weight:900;color:#fff;background:linear-gradient(135deg,#f59e0b,#db2777);display:inline-block;padding:10px 30px;border-radius:99px}
.grid-win-overlay.thanks .gwo-box{background:linear-gradient(160deg,rgba(45,212,191,.18),rgba(59,130,246,.16));border-color:rgba(94,234,212,.7);box-shadow:0 0 100px rgba(45,212,191,.4)}
.grid-win-overlay.thanks .gwo-tag{color:#5eead4}
.gwo-thanks-ic{font-size:96px;line-height:1;margin-bottom:14px;animation:thanksBob 1.6s ease-in-out infinite}
@keyframes popIn{from{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}

/* ============================================================
   座位安排大屏
   ============================================================ */
.st-stage{flex:1;display:flex;flex-direction:column;min-height:0;min-width:0}
.st-summary{align-self:center;font-size:17px;font-weight:700;color:rgba(255,255,255,.82);background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);
  padding:10px 28px;border-radius:99px;margin-bottom:10px;flex:none;backdrop-filter:blur(10px)}
.st-summary b{color:#fcd34d}
.st-hall{flex:1;position:relative;min-height:0;min-width:0}
.st-hall-inner{position:absolute;left:50%;top:50%;transform-origin:center center}
.st-cell{position:absolute;transform:translate(-50%,-50%)}
.st-table{display:grid;place-items:center;perspective:900px}
.st-round{position:relative;width:300px;height:300px;transform-style:preserve-3d}
.st-round-in{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:128px;height:128px;border-radius:50%;
  background:radial-gradient(circle at 34% 30%,#a78bfa,#7c3aed 55%,#4c1d95);border:3px solid rgba(255,255,255,.4);
  display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;box-shadow:0 16px 40px rgba(0,0,0,.45),0 0 40px rgba(124,58,237,.4);z-index:2}
.st-round-in b{font-size:22px;font-weight:900;letter-spacing:1px}
.st-round-in span{font-size:13px;opacity:.85;margin-top:2px}
.st-seat{position:absolute;left:50%;top:50%;width:0;height:0}
.st-seat-name{position:absolute;left:0;top:0;transform:translate(-50%,-50%);white-space:nowrap;font-size:14.5px;font-weight:800;color:#fff;
  background:rgba(255,255,255,.12);border:1.5px solid rgba(255,255,255,.28);padding:5px 13px;border-radius:99px;backdrop-filter:blur(8px)}
.st-seat-name.in{background:linear-gradient(135deg,rgba(16,185,129,.4),rgba(6,182,212,.3));border-color:rgba(52,211,153,.6)}
.st-pager{display:flex;gap:9px;justify-content:center;margin-top:10px;flex:none}
.st-pager i{width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.3)}
.st-pager i.on{width:28px;border-radius:6px;background:linear-gradient(135deg,#7c3aed,#db2777)}
.st-empty{flex:1;display:grid;place-items:center;text-align:center}
.st-empty-box{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.15);border-radius:26px;padding:46px 70px}
.st-empty-box .e{font-size:64px;margin-bottom:14px}
.st-empty-box h2{font-size:28px;margin-bottom:10px}
.st-empty-box p{color:rgba(255,255,255,.6)}

/* ============================================================
   幸运号码抽奖
   ============================================================ */
/* ===== 幸运号码抽奖（老虎机垂直滚动模式） ===== */
.lt-stage-lucky{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:10px;min-height:calc(100vh - 120px)}
.lucky-center{display:flex;flex-direction:column;align-items:center;gap:30px;width:100%;max-width:1200px;position:relative}
.lucky-title{font-size:36px;font-weight:900;color:#fff;text-shadow:0 4px 30px rgba(251,191,36,.4);letter-spacing:6px;position:relative}
.lucky-title::before,.lucky-title::after{content:'';position:absolute;top:50%;width:80px;height:2px;background:linear-gradient(90deg,transparent,#fbbf24,transparent)}
.lucky-title::before{right:calc(100% + 20px)}
.lucky-title::after{left:calc(100% + 20px);background:linear-gradient(90deg,#fbbf24,transparent)}

/* 人数超限提示横幅（页面中间） */
.lucky-overlimit-banner{display:flex;align-items:center;gap:16px;padding:18px 28px;background:linear-gradient(135deg,rgba(239,68,68,.18),rgba(239,68,68,.08));border:2px solid rgba(239,68,68,.5);border-radius:16px;backdrop-filter:blur(10px);box-shadow:0 8px 32px rgba(239,68,68,.25);animation:lobPulse 2s ease-in-out infinite}
.lob-icon{font-size:36px;flex-shrink:0}
.lob-text{color:#fff;text-align:left}
.lob-title{font-size:20px;font-weight:800;color:#fca5a5;margin-bottom:4px}
.lob-desc{font-size:14px;color:rgba(255,255,255,.8);line-height:1.5}
@keyframes lobPulse{0%,100%{box-shadow:0 8px 32px rgba(239,68,68,.25)}50%{box-shadow:0 8px 48px rgba(239,68,68,.45)}}
.lucky-go-big.disabled{opacity:.4;cursor:not-allowed;filter:grayscale(.5)}

/* 滚动模式超限横幅 */
.roll-overlimit-banner{display:flex;align-items:center;gap:16px;padding:18px 28px;margin:0 auto 10px;background:linear-gradient(135deg,rgba(239,68,68,.18),rgba(239,68,68,.08));border:2px solid rgba(239,68,68,.5);border-radius:16px;backdrop-filter:blur(10px);box-shadow:0 8px 32px rgba(239,68,68,.25);animation:lobPulse 2s ease-in-out infinite;max-width:560px}
.lt-go.disabled{opacity:.4;cursor:not-allowed;filter:grayscale(.5)}

/* 三栏布局 */
.lucky-stage-wrap{display:flex;align-items:stretch;justify-content:center;gap:30px;width:100%}

/* 左侧：抽取人数 */
.lucky-left{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;min-width:140px;padding:24px 20px;background:rgba(255,255,255,.05);border:2px solid rgba(255,255,255,.1);border-radius:16px;backdrop-filter:blur(10px)}
.ll-label{font-size:14px;color:#c4b5fd;letter-spacing:2px;font-weight:700}
.ll-count-box{display:flex;align-items:center;gap:12px}
.ll-btn{width:40px;height:40px;border-radius:50%;border:2px solid rgba(251,191,36,.5);background:rgba(251,191,36,.1);color:#fbbf24;font-size:24px;font-weight:900;cursor:pointer;transition:.2s;display:grid;place-items:center;line-height:1}
.ll-btn:hover{background:rgba(251,191,36,.25);transform:scale(1.1)}
.ll-btn:active{transform:scale(.95)}
.ll-num{font-size:48px;font-weight:900;color:#fbbf24;font-family:var(--font-mono),'Courier New',monospace;min-width:50px;text-align:center;text-shadow:0 0 20px rgba(251,191,36,.6)}
.ll-tip{font-size:13px;color:rgba(255,255,255,.5)}
.ll-tip b{color:#fbbf24;font-weight:800;font-size:16px;margin:0 3px}

/* 中间：大抽奖滚动框 */
.lucky-main-roll{flex:1;display:flex;flex-direction:column;align-items:center;gap:20px;max-width:480px}
.lmr-frame{position:relative;width:100%;height:420px;background:linear-gradient(180deg,#0f0a2e,#1a1045);border:3px solid rgba(251,191,36,.4);border-radius:20px;overflow:hidden;box-shadow:0 0 60px rgba(251,191,36,.2),inset 0 0 60px rgba(0,0,0,.5)}
.lmr-glow{position:absolute;top:0;bottom:0;width:60px;pointer-events:none;z-index:2}
.lmr-glow-left{left:0;background:linear-gradient(90deg,rgba(251,191,36,.15),transparent)}
.lmr-glow-right{right:0;background:linear-gradient(-90deg,rgba(251,191,36,.15),transparent)}
.lmr-window{position:absolute;inset:0;overflow:hidden}
.lmr-track{position:absolute;left:0;right:0;top:0;will-change:transform}
.lmr-item{height:70px;display:grid;place-items:center;font-size:48px;font-weight:900;color:rgba(255,255,255,.3);font-family:var(--font-mono),'Courier New',monospace;letter-spacing:6px;transition:.2s}
.lmr-item.lmr-winner{color:#fbbf24}
.lmr-item.lmr-winner.active{color:#fef3c7;text-shadow:0 0 30px #fbbf24,0 0 60px #f59e0b,0 0 90px #f59e0b;animation:luckyNumPop .6s ease-out;transform:scale(1.1)}
@keyframes luckyNumPop{0%{transform:scale(1)}50%{transform:scale(1.2)}100%{transform:scale(1.1)}}
.lmr-mask{position:absolute;left:0;right:0;height:80px;pointer-events:none;z-index:3}
.lmr-mask-top{top:0;background:linear-gradient(180deg,#0f0a2e,transparent)}
.lmr-mask-bottom{bottom:0;background:linear-gradient(0deg,#0f0a2e,transparent)}
.lmr-center-line{position:absolute;left:10%;right:10%;top:50%;height:2px;background:linear-gradient(90deg,transparent,rgba(251,191,36,.6),transparent);transform:translateY(-50%);z-index:2;pointer-events:none}

/* 中奖信息卡片 */
.lmr-winner-info{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;min-height:80px}
.lwi-card{background:linear-gradient(135deg,rgba(251,191,36,.15),rgba(245,158,11,.15));border:1px solid rgba(251,191,36,.4);border-radius:12px;padding:12px 20px;text-align:center;animation:luckyFadeIn .5s ease-out}
.lwi-num-big{font-size:28px;font-weight:900;color:#fbbf24;font-family:var(--font-mono),'Courier New',monospace;letter-spacing:3px;text-shadow:0 0 15px rgba(251,191,36,.5)}
.lwi-person{display:flex;align-items:center;gap:10px;margin-top:6px;justify-content:center}
.lwi-person .lwi-name{font-size:15px;font-weight:700;color:#fff}
.lwi-person .lwi-dept{font-size:12px;color:rgba(255,255,255,.5)}

/* 右侧：已中奖名单 */
.lucky-right{display:flex;flex-direction:column;gap:12px;min-width:200px;max-width:260px;padding:20px;background:rgba(255,255,255,.05);border:2px solid rgba(255,255,255,.1);border-radius:16px;backdrop-filter:blur(10px)}
.lr-title{font-size:16px;font-weight:800;color:#fbbf24;text-align:center;letter-spacing:2px}
.lr-count{font-size:13px;color:rgba(255,255,255,.5);text-align:center}
.lr-count b{color:#fbbf24;font-size:18px;font-weight:800;margin:0 3px}
.lr-list{flex:1;overflow-y:auto;max-height:320px;padding-right:4px;display:flex;flex-direction:column;gap:6px}
.lr-list::-webkit-scrollbar{width:4px}
.lr-list::-webkit-scrollbar-thumb{background:rgba(251,191,36,.4);border-radius:2px}
.lr-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:rgba(251,191,36,.08);border:1px solid rgba(251,191,36,.2);border-radius:8px;animation:luckyFadeIn .4s ease-out}
.lri-num{font-family:var(--font-mono),'Courier New',monospace;font-size:15px;font-weight:800;color:#fbbf24}
.lri-name{font-size:13px;color:rgba(255,255,255,.7);font-weight:600;max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lw-empty{text-align:center;color:rgba(255,255,255,.3);padding:40px 0;font-size:13px}

/* 底部：开始/停止大按钮 */
.lucky-bottom{display:flex;justify-content:center}
.lucky-go-big{display:flex;align-items:center;gap:12px;padding:18px 50px;font-size:22px;font-weight:900;color:#fff;background:linear-gradient(135deg,#f59e0b,#ef4444);border:none;border-radius:60px;cursor:pointer;box-shadow:0 10px 40px rgba(245,158,11,.5);transition:.2s;letter-spacing:4px}
.lucky-go-big:hover{transform:translateY(-3px);box-shadow:0 15px 50px rgba(245,158,11,.6)}
.lucky-go-big:active{transform:translateY(0)}
.lucky-go-big.rolling{background:linear-gradient(135deg,#ef4444,#dc2626);box-shadow:0 10px 40px rgba(239,68,68,.5);animation:luckyPulse 1.5s ease-in-out infinite}
@keyframes luckyPulse{0%,100%{box-shadow:0 10px 40px rgba(239,68,68,.5)}50%{box-shadow:0 10px 60px rgba(239,68,68,.7)}}
.lgb-icon{font-size:20px;display:grid;place-items:center}
.lgb-text{font-size:22px}

/* 二维码 */
.lucky-qr-wrap{position:absolute;right:0;bottom:0}
.lq-box{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.15);border-radius:12px;padding:12px;text-align:center;backdrop-filter:blur(10px)}
.lq-img img{width:80px!important;height:80px!important;border-radius:8px}
.lq-tip{font-size:11px;color:rgba(255,255,255,.5);margin-top:6px}

@keyframes luckyFadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}


@media(max-width:1100px){
  .grid-wrap{flex-direction:column;gap:24px}.grid-side{width:auto;text-align:center}
  .lt-cfg{left:18px}
}

/* ============================================================
   Logo 版头部图标
   ============================================================ */
.sc-head .sc-logo.is-logo{background:rgba(255,255,255,.95);padding:6px;overflow:hidden}
.sc-head .sc-logo.is-logo img{width:100%;height:100%;object-fit:contain;border-radius:10px}

/* ============================================================
   声音悬浮开关（右下角喇叭）
   ============================================================ */
.sound-toggle{position:fixed;right:20px;bottom:20px;z-index:9000;width:46px;height:46px;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:rgba(15,23,42,.65);backdrop-filter:blur(8px);color:#fff;font-size:20px;cursor:pointer;transition:.2s;box-shadow:0 8px 24px rgba(0,0,0,.35)}
.sound-toggle:hover{transform:scale(1.1)}
.sound-toggle.mute{opacity:.65}

/* ============================================================
   闭幕式大屏
   ============================================================ */
.cl-stage{position:fixed;inset:0;overflow:hidden;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 30%,#241648 0%,#0c0a22 62%,#07061a 100%)}
.cl-bg{position:absolute;inset:0;background-size:cover;background-position:center;filter:saturate(.85)}
.cl-veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,6,26,.78) 0%,rgba(20,12,48,.62) 45%,rgba(7,6,26,.85) 100%)}
.cl-inner{position:relative;z-index:2;text-align:center;color:#fff;max-width:1080px;padding:0 60px;animation:clIn 1.4s cubic-bezier(.2,.8,.2,1) both}
@keyframes clIn{from{opacity:0;transform:translateY(34px)}to{opacity:1;transform:translateY(0)}}
.cl-brand{display:flex;justify-content:center;margin-bottom:26px}
.cl-logo{width:118px;height:118px;border-radius:26px;background:rgba(255,255,255,.96);padding:14px;box-shadow:0 24px 60px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.2)}
.cl-logo img{width:100%;height:100%;object-fit:contain}
.cl-emoji{width:118px;height:118px;border-radius:26px;background:linear-gradient(135deg,rgba(124,58,237,.9),rgba(219,39,119,.85));display:grid;place-items:center;font-size:62px;box-shadow:0 24px 60px rgba(219,39,119,.4)}
.cl-title{font-size:72px;font-weight:900;letter-spacing:6px;background:linear-gradient(135deg,#fef3c7 0%,#fbbf24 38%,#f59e0b 62%,#fde68a 100%);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 60px rgba(251,191,36,.25);margin-bottom:18px}
.cl-sub{font-size:26px;font-weight:600;letter-spacing:4px;color:rgba(255,255,255,.88)}
.cl-divider{display:flex;align-items:center;justify-content:center;gap:18px;margin:30px 0}
.cl-divider span{width:120px;height:2px;background:linear-gradient(90deg,transparent,rgba(251,191,36,.8))}
.cl-divider span:last-child{background:linear-gradient(90deg,rgba(251,191,36,.8),transparent)}
.cl-divider i{font-size:24px;font-style:normal}
.cl-msg{font-size:25px;line-height:2;font-weight:500;color:rgba(255,255,255,.92);letter-spacing:1.5px;max-width:860px;margin:0 auto 34px;text-shadow:0 4px 24px rgba(0,0,0,.5)}
.cl-event{display:inline-block;font-size:16px;letter-spacing:2px;color:rgba(255,255,255,.75);border:1px solid rgba(255,255,255,.25);border-radius:99px;padding:9px 28px;background:rgba(255,255,255,.06);backdrop-filter:blur(6px)}
.cl-thanks{margin-top:42px;font-size:40px;font-weight:900;letter-spacing:18px;color:transparent;-webkit-text-stroke:1.5px rgba(251,191,36,.75)}
.cl-confetti{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.cl-confetti i{position:absolute;width:8px;height:8px;border-radius:2px;animation:clBurst 2.2s ease-out forwards}
@keyframes clBurst{0%{opacity:1;transform:translate(0,0) scale(1) rotate(0)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.4) rotate(540deg)}}
@media(max-width:1100px){
  .cl-title{font-size:44px;letter-spacing:3px}
  .cl-sub{font-size:19px}.cl-msg{font-size:18px;line-height:1.8}
  .cl-thanks{font-size:28px;letter-spacing:10px}
  .cl-inner{padding:0 26px}
}

/* ============================================================
   开幕式大屏（喜庆红金）
   ============================================================ */
.op-stage{position:fixed;inset:0;overflow:hidden;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 28%,#5b1418 0%,#320a10 58%,#1c0509 100%)}
.op-bg{position:absolute;inset:0;background-size:cover;background-position:center;filter:saturate(.9)}
.op-veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(28,5,9,.8) 0%,rgba(74,14,18,.58) 45%,rgba(28,5,9,.86) 100%)}
/* 顶部聚光灯束 */
.op-beams{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.op-beams i{position:absolute;top:-12%;width:220px;height:130%;background:linear-gradient(180deg,rgba(251,191,36,.22),rgba(251,191,36,0) 70%);filter:blur(18px);transform-origin:top center;animation:opBeam 7s ease-in-out infinite alternate}
.op-beams i:nth-child(1){left:12%;transform:rotate(14deg)}
.op-beams i:nth-child(2){left:34%;animation-delay:-2s;transform:rotate(-8deg)}
.op-beams i:nth-child(3){right:30%;animation-delay:-4s;transform:rotate(8deg)}
.op-beams i:nth-child(4){right:10%;animation-delay:-1s;transform:rotate(-14deg)}
@keyframes opBeam{from{opacity:.45}to{opacity:.9}}
.op-inner{position:relative;z-index:2;text-align:center;color:#fff;max-width:1080px;padding:0 60px;animation:opIn 1.4s cubic-bezier(.2,.8,.2,1) both}
@keyframes opIn{from{opacity:0;transform:translateY(34px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
.op-brand{display:flex;justify-content:center;margin-bottom:22px}
.op-logo{width:118px;height:118px;border-radius:26px;background:rgba(255,255,255,.96);padding:14px;box-shadow:0 24px 60px rgba(0,0,0,.45),0 0 0 1px rgba(251,191,36,.35),0 0 46px rgba(251,191,36,.35)}
.op-logo img{width:100%;height:100%;object-fit:contain}
.op-emoji{width:118px;height:118px;border-radius:26px;background:linear-gradient(135deg,#f59e0b,#dc2626);display:grid;place-items:center;font-size:62px;box-shadow:0 24px 60px rgba(220,38,38,.45),0 0 46px rgba(251,191,36,.4)}
.op-welcome{font-size:24px;font-weight:900;letter-spacing:20px;color:transparent;-webkit-text-stroke:1.5px rgba(251,191,36,.8);margin-bottom:14px;text-indent:20px}
.op-title{font-size:72px;font-weight:900;letter-spacing:6px;background:linear-gradient(135deg,#fef3c7 0%,#fbbf24 38%,#f59e0b 62%,#fde68a 100%);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 60px rgba(251,191,36,.3);margin-bottom:18px}
.op-sub{font-size:26px;font-weight:600;letter-spacing:4px;color:rgba(255,255,255,.9)}
.op-divider{display:flex;align-items:center;justify-content:center;gap:18px;margin:28px 0}
.op-divider span{width:120px;height:2px;background:linear-gradient(90deg,transparent,rgba(251,191,36,.85))}
.op-divider span:last-child{background:linear-gradient(90deg,rgba(251,191,36,.85),transparent)}
.op-divider i{font-size:24px;font-style:normal}
.op-msg{font-size:25px;line-height:2;font-weight:500;color:rgba(255,255,255,.94);letter-spacing:1.5px;max-width:860px;margin:0 auto 34px;text-shadow:0 4px 24px rgba(0,0,0,.5)}
.op-event{display:inline-block;font-size:16px;letter-spacing:2px;color:rgba(255,255,255,.8);border:1px solid rgba(251,191,36,.4);border-radius:99px;padding:9px 28px;background:rgba(251,191,36,.1);backdrop-filter:blur(6px)}
.op-confetti{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.op-confetti i{position:absolute;width:8px;height:8px;border-radius:2px;animation:opBurst 2.2s ease-out forwards}
@keyframes opBurst{0%{opacity:1;transform:translate(0,0) scale(1) rotate(0)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.4) rotate(540deg)}}
@media(max-width:1100px){
  .op-title{font-size:44px;letter-spacing:3px}
  .op-welcome{font-size:17px;letter-spacing:12px}
  .op-sub{font-size:19px}.op-msg{font-size:18px;line-height:1.8}
  .op-inner{padding:0 26px}
}

/* ============================ 红包墙大屏 ============================ */
.rp-stage{position:fixed;inset:0;overflow:hidden;background:linear-gradient(135deg,#8b0e1a 0%,#a41620 30%,#991b24 60%,#7f0f18 100%)}
.rp-bg-pattern{position:absolute;inset:0;opacity:.06;background-image:radial-gradient(circle at 20% 30%,#fbbf24 1.5px,transparent 1.5px),radial-gradient(circle at 80% 70%,#fbbf24 1px,transparent 1px);background-size:60px 60px,40px 40px;pointer-events:none}
.rp-layout{position:relative;z-index:1;display:flex;height:100%;padding:70px 28px 60px;gap:24px}

/* 左侧面板 */
.rp-side{width:280px;flex-shrink:0;display:flex;flex-direction:column;gap:18px}
/* 奖品池卷轴 */
.rp-pool-scroll{flex-shrink:0}
.rp-scroll-top,.rp-scroll-bottom{height:18px;background:linear-gradient(180deg,#d4a017,#b8860b);border-radius:9px;box-shadow:0 2px 8px rgba(0,0,0,.3);margin:0 -6px}
.rp-scroll-body{background:linear-gradient(180deg,#fef3c7,#fde68a);border-left:3px solid #b8860b;border-right:3px solid #b8860b;padding:14px 12px;min-height:180px;max-height:340px;overflow-y:auto}
.rp-scroll-title{text-align:center;font-size:18px;font-weight:900;color:#92400e;letter-spacing:6px;margin-bottom:10px;padding-bottom:8px;border-bottom:2px solid rgba(180,83,9,.2)}
.rp-pool-list{display:grid;gap:8px}
.rp-pool-item{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.6);border-radius:8px;padding:6px 8px}
.rp-pool-emoji{font-size:22px}
.rp-pool-info b{display:block;font-size:13px;color:#78350f;font-weight:700}
.rp-pool-info small{font-size:11px;color:#a16207}
.rp-pool-empty{text-align:center;color:#a16207;font-size:13px;padding:20px 0}

/* 规则面板 */
.rp-rules-frame{flex:1;background:rgba(0,0,0,.18);border:2px solid rgba(251,191,36,.5);border-radius:14px;padding:16px;display:flex;flex-direction:column;backdrop-filter:blur(4px)}
.rp-rules-title{text-align:center;font-size:17px;font-weight:900;color:#fbbf24;letter-spacing:8px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid rgba(251,191,36,.3)}
.rp-rules-text{font-size:14px;line-height:1.8;color:rgba(255,255,255,.85);flex:1}
.rp-rules-qr{text-align:center;margin-top:14px}
.rp-rules-qr .qr{display:inline-block;background:#fff;padding:8px;border-radius:10px}
.rp-rules-qr .qr>div{width:110px;height:110px}
.rp-rules-qr p{font-size:12px;color:rgba(255,255,255,.7);margin-top:8px;line-height:1.6}
.rp-rules-qr b{color:#fbbf24;letter-spacing:2px}

/* 主区域 */
.rp-main{flex:1;display:flex;flex-direction:column;min-width:0;position:relative}
.rp-round-tag{position:absolute;top:-10px;right:0;background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#7c2d12;font-size:14px;font-weight:800;padding:5px 18px;border-radius:99px;z-index:2;box-shadow:0 4px 14px rgba(245,158,11,.4)}
.rp-wall{flex:1;display:grid;grid-template-columns:repeat(var(--rp-cols,7),1fr);gap:10px 12px;align-content:center;padding:10px 4px;overflow-y:auto}

/* 红包信封 */
.rp-envelope{display:flex;flex-direction:column;align-items:center;gap:5px;animation:rpFloat 3s ease-in-out infinite alternate}
.rp-envelope:nth-child(odd){animation-delay:-1.5s}
.rp-envelope:nth-child(3n){animation-delay:-.8s}
@keyframes rpFloat{from{transform:translateY(0)}to{transform:translateY(-5px)}}
.rpe-body{position:relative;width:100%;max-width:110px;aspect-ratio:3/4;background:linear-gradient(160deg,#dc2626 0%,#b91c1c 50%,#991b1b 100%);border-radius:8px 8px 6px 6px;box-shadow:0 6px 20px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.15);overflow:hidden}
.rpe-flap{position:absolute;top:0;left:0;right:0;height:38%;background:linear-gradient(180deg,#ef4444,#dc2626);clip-path:polygon(0 0,100% 0,50% 100%);border-bottom:1px solid rgba(0,0,0,.1)}
.rpe-seal{position:absolute;top:30%;left:50%;transform:translate(-50%,-50%);width:38%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fde68a,#d4a017 60%,#b8860b);display:grid;place-items:center;font-size:calc(10px + 1vw);font-weight:900;color:#7c2d12;box-shadow:0 2px 8px rgba(0,0,0,.3),inset 0 -1px 3px rgba(0,0,0,.2);z-index:2}
.rpe-brand{position:absolute;bottom:12%;left:0;right:0;text-align:center;font-size:calc(8px + .6vw);font-weight:700;color:rgba(255,255,255,.35);letter-spacing:1px}
.rpe-brand img{max-width:60%;max-height:18px;object-fit:contain;vertical-align:middle}
.rpe-num{font-size:13px;font-weight:800;color:#fbbf24;background:rgba(0,0,0,.3);padding:2px 10px;border-radius:4px;letter-spacing:2px}

/* 已拆开的红包 */
.rp-envelope.opened .rpe-body{background:linear-gradient(160deg,#9ca3af,#6b7280);box-shadow:none}
.rp-envelope.opened .rpe-flap{background:linear-gradient(180deg,#9ca3af,#6b7280)}
.rp-envelope.opened .rpe-seal{background:radial-gradient(circle,#d1d5db,#9ca3af);color:#4b5563}
.rp-envelope.opened .rpe-brand{color:rgba(255,255,255,.3)}
.rp-envelope.opened{animation:none;opacity:.75}
/* 中奖的红包 - 金色高亮 */
.rp-envelope.opened.is-won .rpe-body{background:linear-gradient(160deg,#f59e0b,#d97706);box-shadow:0 0 24px rgba(251,191,36,.5)}
.rp-envelope.opened.is-won .rpe-flap{background:linear-gradient(180deg,#fbbf24,#f59e0b)}
.rp-envelope.opened.is-won .rpe-seal{background:radial-gradient(circle,#fef3c7,#fbbf24);color:#92400e}
.rp-envelope.opened.is-won{opacity:1}

/* 状态栏 */
.rp-status-bar{display:flex;justify-content:center;gap:28px;padding:10px 0 0;font-size:15px;font-weight:700;color:rgba(255,255,255,.85)}
.rp-status-bar .rp-paused{color:#fca5a5;background:rgba(220,38,38,.3);padding:2px 14px;border-radius:99px}

/* 中奖庆祝弹层 */
.rp-celebrate{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.75);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .4s}
.rp-celebrate.show{opacity:1}
.rp-celebrate-card{text-align:center;transform:scale(.7);transition:transform .5s cubic-bezier(.34,1.56,.64,1)}
.rp-celebrate.show .rp-celebrate-card{transform:scale(1)}
.rp-celebrate-packet{font-size:120px;animation:rpShake .6s ease-in-out 3;margin-bottom:16px;filter:drop-shadow(0 12px 30px rgba(0,0,0,.5))}
@keyframes rpShake{0%,100%{transform:rotate(0) scale(1)}25%{transform:rotate(-12deg) scale(1.1)}75%{transform:rotate(12deg) scale(1.1)}}
.rp-celebrate-name{font-size:32px;font-weight:900;color:#fbbf24;margin-bottom:10px;text-shadow:0 4px 20px rgba(0,0,0,.5)}
.rp-celebrate-prize small{display:block;font-size:18px;color:rgba(255,255,255,.7);margin-bottom:6px}
.rp-celebrate-prize b{display:block;font-size:42px;font-weight:900;color:#fff;text-shadow:0 0 40px rgba(251,191,36,.6)}
.rp-celebrate-packet.is-thanks{filter:grayscale(.4)}
/* 礼花 */
.rp-confetti{position:absolute;top:-20px;border-radius:2px;animation:rpFall linear forwards;z-index:-1}
@keyframes rpFall{to{transform:translateY(110vh) rotate(720deg);opacity:0}}

@media(max-width:1100px){
  .rp-side{width:220px}
  .rp-wall{gap:6px 8px}
  .rpe-body{max-width:80px}
  .rp-celebrate-packet{font-size:80px}
  .rp-celebrate-prize b{font-size:30px}
}

/* ===== 未开通功能锁定页 ===== */
.screen-locked{min-height:100vh;display:grid;place-items:center;text-align:center;color:#fff;padding:40px 20px}
.sl-icon{font-size:80px;margin-bottom:24px;opacity:.6}
.sl-title{font-size:42px;font-weight:900;letter-spacing:4px;margin-bottom:16px;background:linear-gradient(100deg,#fcd34d,#f59e0b);-webkit-background-clip:text;background-clip:text;color:transparent}
.sl-desc{font-size:18px;color:rgba(255,255,255,.65);margin-bottom:36px;letter-spacing:2px}
.sl-back{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
