/* 大屏样式 —— 霓虹风格，分辨率自适应（基准 16:9） */
:root{
    --blue:#39b6ff; --blue2:#2f7bff;
    --pink:#ff4fa3; --pink2:#ff2e97;
    --gold:#ffd15c; --purple:#b06cff; --green:#3ef0a8;
}
*{box-sizing:border-box;margin:0;padding:0}
html{font-size:min(0.86vw,1.53vh)} /* 1rem 随屏幕缩放，锁定 16:9 比例观感 */
body{
    font-family:"Microsoft YaHei","PingFang SC","Segoe UI",sans-serif;
    background:#05060c center/cover no-repeat fixed;
    color:#fff; height:100vh; overflow:hidden;
}
#screen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center}
.stage{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
    padding:3rem 4rem;opacity:0;transition:opacity .4s;pointer-events:none}
.stage.show{opacity:1;pointer-events:auto}

/* 顶部轮次标签 */
.round-tag{font-size:2.2rem;font-weight:800;letter-spacing:.3rem;
    color:#fff;text-shadow:0 0 1.2rem rgba(176,108,255,.9);
    padding:.4rem 2.4rem;border-radius:3rem;border:.12rem solid rgba(176,108,255,.7);
    background:rgba(30,16,60,.35)}
.round-tag .sep{color:var(--gold);margin:0 .6rem}

/* 倒计时环 */
.cd-wrap{display:flex;flex-direction:column;align-items:center;gap:.6rem}
.cd{--deg:360deg;width:13rem;height:13rem;border-radius:50%;position:relative;
    background:conic-gradient(var(--gold) var(--deg), rgba(255,255,255,.09) 0);
    filter:drop-shadow(0 0 1.4rem rgba(255,209,92,.55))}
.cd.pk{background:conic-gradient(from 0deg, var(--blue) 0deg, var(--purple) 180deg, var(--pink) var(--deg), rgba(255,255,255,.09) 0)}
.cd::before{content:"";position:absolute;inset:.9rem;border-radius:50%;background:#0a0b16;
    box-shadow:inset 0 0 2rem rgba(0,0,0,.7)}
.cd .inner{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.cd .num{font-size:5.4rem;font-weight:900;line-height:1;font-variant-numeric:tabular-nums;
    background:linear-gradient(180deg,#fff,var(--gold));-webkit-background-clip:text;background-clip:text;color:transparent}
.cd .unit{font-size:1.5rem;color:#cfd6f5;margin-top:.2rem}
.cd .lbl{font-size:1.4rem;color:#aab4d4;letter-spacing:.3rem}

/* 选手卡片 */
.player-card{position:relative;width:26rem;border-radius:1.4rem;padding:1.4rem 1.4rem 1.8rem;
    background:linear-gradient(180deg,rgba(20,24,48,.55),rgba(8,10,22,.6));
    border:.16rem solid var(--cc,#5a6cff);
    box-shadow:0 0 2.4rem var(--glow,rgba(80,120,255,.5)),inset 0 0 1.6rem rgba(0,0,0,.4)}
.player-card.a{--cc:var(--blue);--glow:rgba(57,182,255,.55)}
.player-card.b{--cc:var(--pink);--glow:rgba(255,79,163,.55)}
.pc-title{text-align:center;font-size:2.1rem;font-weight:800;margin-bottom:1rem;
    color:#fff;text-shadow:0 0 1rem var(--cc)}
.pc-avatar{width:100%;aspect-ratio:1/1;border-radius:1rem;object-fit:cover;
    border:.12rem solid var(--cc);box-shadow:0 0 1.4rem var(--glow);background:#12162e}
.pc-plate{margin-top:1rem;text-align:center;padding:.7rem 1rem;border-radius:.7rem;
    border:.1rem solid rgba(255,255,255,.18);background:rgba(255,255,255,.04);font-size:1.5rem}
.pc-plate .mus{color:var(--cc)}
.pc-votes{margin-top:1rem;text-align:center;padding:.6rem;border-radius:.8rem;
    border:.12rem solid var(--cc);background:rgba(0,0,0,.25)}
.pc-votes .cap{font-size:1.4rem;color:#b9c1e2}
.pc-votes .n{font-size:4.4rem;font-weight:900;line-height:1.05;font-variant-numeric:tabular-nums;
    color:#fff;text-shadow:0 0 1.3rem var(--glow)}
.player-card.win{animation:winpulse 1.2s infinite alternate}
.player-card .crown{position:absolute;top:-2.4rem;left:50%;transform:translateX(-50%);font-size:2.6rem}
@keyframes winpulse{from{box-shadow:0 0 2rem var(--glow)}to{box-shadow:0 0 4rem var(--glow),0 0 6rem var(--glow)}}

/* PK 中列 */
.pk-center{display:flex;flex-direction:column;align-items:center;gap:1.4rem;width:22rem}
.pk-word{font-size:4.2rem;font-weight:900;letter-spacing:.4rem;
    background:linear-gradient(90deg,var(--blue),var(--pink));-webkit-background-clip:text;background-clip:text;color:transparent;
    filter:drop-shadow(0 0 1rem rgba(255,79,163,.5))}
.row-3{display:grid;grid-template-columns:auto auto auto;gap:2.4rem;align-items:center}

/* 二维码 */
.qr-box{display:flex;flex-direction:column;align-items:center;gap:.6rem}
.qr-inner{width:9.5rem;height:9.5rem;background:#fff;border-radius:.8rem;padding:.5rem;
    box-shadow:0 0 1.4rem rgba(255,255,255,.25)}
.qr-inner svg{width:100%;height:100%;display:block}
.qr-cap{font-size:1.5rem;letter-spacing:.4rem;color:#e8ecff}

/* solo 单人（第三轮） */
.solo-card{display:flex;gap:2rem;align-items:center;width:64rem;border-radius:1.6rem;padding:1.8rem;
    background:linear-gradient(180deg,rgba(24,16,48,.55),rgba(8,10,22,.6));
    border:.16rem solid var(--purple);box-shadow:0 0 2.6rem rgba(176,108,255,.5)}
.solo-card .pc-avatar{width:20rem;height:20rem;flex-shrink:0;border-color:var(--purple);box-shadow:0 0 1.6rem rgba(176,108,255,.5)}
.solo-info{flex:1}
.solo-name{font-size:3.4rem;font-weight:900;background:linear-gradient(90deg,#fff,var(--gold));
    -webkit-background-clip:text;background-clip:text;color:transparent}
.solo-song{font-size:1.9rem;color:#cfd6f5;margin-top:.6rem}
.solo-song .mus{color:var(--pink)}
.solo-votes{margin-top:1.2rem}
.solo-votes .cap{font-size:1.5rem;color:#b9c1e2}
.solo-votes .n{font-size:5.2rem;font-weight:900;font-variant-numeric:tabular-nums;
    background:linear-gradient(180deg,#fff,var(--gold));-webkit-background-clip:text;background-clip:text;color:transparent}
.solo-votes .n .t{font-size:2rem;color:#cfd6f5;-webkit-text-fill-color:#cfd6f5}

/* 决赛：评委 + 选手 */
.final-head{font-size:2rem;font-weight:800;letter-spacing:.2rem;color:#fff;margin-bottom:1.6rem;
    padding:.4rem 2rem;border-radius:2rem;border:.12rem solid rgba(255,79,163,.6);text-shadow:0 0 1rem rgba(255,79,163,.8)}
.final-grid{display:grid;gap:1.6rem;width:100%;max-width:96rem}
.jf-col{display:flex;flex-direction:column;align-items:center;gap:1rem}
.judge-card{width:100%;border-radius:1rem;padding:1rem 1.2rem;border:.12rem solid var(--jc,#39b6ff);
    background:rgba(10,14,30,.5);box-shadow:0 0 1.4rem var(--jg,rgba(57,182,255,.4))}
.judge-card .jt{font-size:1.7rem;font-weight:800;color:#fff}
.judge-card .jpick{font-size:1.9rem;font-weight:800;margin-top:.4rem;color:var(--jc)}
.arrow{font-size:2.2rem;color:#8b93c8}
.finalist-card{width:100%;border-radius:1.1rem;padding:1.2rem;display:flex;align-items:center;gap:1.2rem;
    border:.14rem solid var(--jc,#39b6ff);background:rgba(8,10,22,.6);box-shadow:0 0 1.6rem var(--jg)}
.finalist-card img{width:6.5rem;height:6.5rem;border-radius:.8rem;object-fit:cover;border:.1rem solid var(--jc)}
.finalist-card .fn{font-size:2rem;font-weight:800}
.finalist-card .ft{font-size:1.3rem;color:#b9c1e2}
.finalist-card .fv{font-size:3.4rem;font-weight:900;font-variant-numeric:tabular-nums;color:#fff;text-shadow:0 0 1rem var(--jg)}
.jf-col:nth-child(1){--jc:var(--blue);--jg:rgba(57,182,255,.45)}
.jf-col:nth-child(2){--jc:var(--purple);--jg:rgba(176,108,255,.45)}
.jf-col:nth-child(3){--jc:var(--gold);--jg:rgba(255,209,92,.45)}

/* 最终排名 podium */
.podium{display:flex;align-items:flex-end;justify-content:center;gap:2.4rem}
.pod{display:flex;flex-direction:column;align-items:center;gap:1rem;border-radius:1.2rem;padding:1.6rem 1.4rem;
    border:.16rem solid var(--pc,#c0c8e0);background:rgba(10,12,26,.6)}
.pod img{width:12rem;height:12rem;border-radius:1rem;object-fit:cover;border:.14rem solid var(--pc);box-shadow:0 0 1.6rem var(--pg)}
.pod .medal{font-size:3.4rem}
.pod .pn{font-size:2.4rem;font-weight:900}
.pod .pt{font-size:1.5rem;color:#b9c1e2}
.pod .pv{font-size:2.8rem;font-weight:900;color:var(--gold)}
.pod.c1{--pc:var(--gold);--pg:rgba(255,209,92,.6);transform:scale(1.14)}
.pod.c2{--pc:#cfd6f5;--pg:rgba(200,210,240,.4)}
.pod.c3{--pc:#e6a76b;--pg:rgba(230,167,107,.4)}
.rank-title{font-size:3rem;font-weight:900;margin-bottom:2.4rem;
    background:linear-gradient(90deg,var(--blue),var(--pink),var(--gold));-webkit-background-clip:text;background-clip:text;color:transparent}

/* 海报 */
.poster{position:absolute;inset:0;background:center/cover no-repeat}
.poster .qr-corner{position:absolute;bottom:3rem;left:50%;transform:translateX(-50%)}

/* 晋级名单 overlay */
.overlay{position:fixed;inset:0;background:rgba(4,5,12,.9);display:flex;flex-direction:column;
    align-items:center;justify-content:center;gap:2rem;z-index:50}
.overlay .ot{font-size:3.2rem;font-weight:900;
    background:linear-gradient(90deg,var(--green),var(--blue));-webkit-background-clip:text;background-clip:text;color:transparent}
.adv-grid{display:flex;flex-wrap:wrap;gap:1.6rem;justify-content:center;max-width:90rem}
.adv-card{width:14rem;border-radius:1rem;padding:1rem;text-align:center;
    border:.14rem solid var(--green);background:rgba(10,20,18,.6);box-shadow:0 0 1.4rem rgba(62,240,168,.4)}
.adv-card.rev{--green:var(--gold);border-color:var(--gold);box-shadow:0 0 1.4rem rgba(255,209,92,.4)}
.adv-card img{width:100%;aspect-ratio:1/1;border-radius:.7rem;object-fit:cover;border:.1rem solid currentColor}
.adv-card .an{font-size:1.8rem;font-weight:800;margin-top:.6rem;color:#fff}
.adv-card .atag{font-size:1.2rem;color:var(--green)}

/* 提示/等待 */
.wait{font-size:2.2rem;color:#aab4d4;letter-spacing:.2rem}
.status-strip{position:absolute;top:2rem;left:50%;transform:translateX(-50%);
    font-size:1.6rem;padding:.3rem 1.6rem;border-radius:2rem;background:rgba(0,0,0,.4);border:.1rem solid rgba(255,255,255,.15)}
.gap{height:1.6rem}
