/* 第 2 关：格莱美电视 + 欢呼人群 + 节拍轨道，作用域 .gm */
.gm{position:absolute;inset:0;overflow:hidden;background:radial-gradient(circle at 50% 30%,#3b3a7a,#15142e 70%);color:#fff;touch-action:none}

/* 老式木壳电视（art.js 画壳，屏幕是 HTML 层） */
.gm-tv{position:absolute;left:30px;top:12px;width:300px;height:232px;transform-origin:center;cursor:pointer;filter:drop-shadow(0 12px 24px rgba(0,0,0,.5))}
.gm-tv>.art{position:absolute;inset:0}
.gm-screen{position:absolute;left:18px;top:40px;width:222px;height:170px;border-radius:12px;overflow:hidden;background:linear-gradient(#1a2a6c,#2a1a4c)}
.gm-screen::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(transparent 0 2px,rgba(0,0,0,.16) 2px 4px),linear-gradient(115deg,rgba(255,255,255,.14),transparent 40%);pointer-events:none;z-index:2}
.gm-lights{position:absolute;inset:0;background:radial-gradient(circle at 15% 0%,rgba(255,220,120,.45),transparent 45%),radial-gradient(circle at 85% 0%,rgba(255,120,200,.45),transparent 45%)}
.gm-beam{position:absolute;top:-10px;width:70px;height:150px;background:linear-gradient(rgba(255,235,170,.5),transparent 85%);clip-path:polygon(42% 0,58% 0,100% 100%,0 100%);transform-origin:50% 0}
.gm-beam.b1{left:22px;animation:gmbeam 2.2s ease-in-out infinite alternate}
.gm-beam.b2{right:22px;animation:gmbeam 2.7s ease-in-out infinite alternate-reverse}
@keyframes gmbeam{from{transform:rotate(-16deg)}to{transform:rotate(16deg)}}
.gm-cap{position:absolute;top:6px;left:0;right:0;text-align:center;font-size:9.5px;letter-spacing:.12em;color:#ffd166;font-weight:800;z-index:1}
.gm-singer{position:absolute;left:50%;top:18px;width:68px;height:80px;margin-left:-34px;z-index:1;filter:drop-shadow(0 0 10px rgba(255,209,102,.5))}
.gm-title{position:absolute;left:0;right:0;top:100px;text-align:center;font-size:24px;font-weight:900;letter-spacing:.14em;text-shadow:0 0 14px #ffd166;z-index:1}
.gm-ticker{position:absolute;bottom:0;left:0;right:0;background:#c1121f;color:#fff;font-size:12px;font-weight:700;padding:3px 0;text-align:center;white-space:nowrap;z-index:1}
.gm.win .gm-tv{transform:scale(1.06);transition:transform .5s}

/* 电视雪花 */
.gm-static{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:14px;font-weight:800;color:#fff;text-shadow:0 0 6px #000;z-index:3;background:repeating-radial-gradient(circle at 30% 40%,#ddd 0 1px,#555 1px 3px,#999 3px 4px),repeating-linear-gradient(45deg,#888 0 2px,#ccc 2px 5px,#444 5px 6px);background-blend-mode:difference}
.gm-static b{font-size:20px}
.gm.snow .gm-static{display:flex;animation:gmsnow .12s steps(2) infinite}
@keyframes gmsnow{to{background-position:7px 5px,-6px 4px}}
.gm-lane-static{position:absolute;inset:0;display:none;align-items:center;justify-content:center;font-size:18px;font-weight:900;color:#fff;text-shadow:0 0 6px #000,2px 2px 0 #000;z-index:4;background:repeating-linear-gradient(0deg,#3a3a3a 0 3px,#8a8a8a 3px 5px,#555 5px 8px)}
.gm.snow .gm-lane-static{display:flex}
.gm.snow .gm-tv{animation:gmwobble .2s linear infinite}
@keyframes gmwobble{0%{transform:translate(0,0)}50%{transform:translate(1px,-1px)}100%{transform:translate(-1px,1px)}}

/* 人群 */
.gm-shout{position:absolute;left:0;right:0;top:256px;text-align:center;font-weight:900;font-size:19px;color:#ffd166;text-shadow:2px 2px 0 #000;opacity:0;transition:opacity .1s;white-space:nowrap;z-index:3}
.gm-shout.on{opacity:1}
.gm-crowd{position:absolute;left:0;right:0;top:288px;display:flex;justify-content:center}
.gm-crowd span{display:inline-block;width:56px;height:70px;transition:transform .12s}
.gm-crowd span:nth-child(even){transform:translateY(6px)}
.gm-crowd span.jump{transform:translateY(-22px) scale(1.1)}
.gm-crowd span.sad{transform:translateY(10px) scaleY(.92);filter:saturate(.4)}
.gm.shake .gm-crowd span{animation:gmshake .22s linear infinite}
@keyframes gmshake{0%{transform:rotate(-14deg)}50%{transform:rotate(14deg)}100%{transform:rotate(-14deg)}}
.gm-score{position:absolute;left:0;right:0;top:398px;text-align:center;font-size:15px;font-weight:800}

/* 节拍轨道 */
.gm-lane{position:absolute;left:0;right:0;top:440px;height:80px;background:rgba(255,255,255,.08);border-top:2px solid rgba(255,255,255,.2);border-bottom:2px solid rgba(255,255,255,.2);overflow:hidden}
.gm-target{position:absolute;left:70px;top:50%;width:64px;height:64px;margin:-32px 0 0 -32px;border-radius:50%;border:4px solid #ffd166;box-shadow:0 0 0 4px rgba(255,209,102,.25);transition:transform .08s,background .08s;z-index:5}
.gm-target.beat{transform:scale(1.14);background:rgba(255,209,102,.3)}
.gm-note{position:absolute;left:0;top:50%;width:56px;height:56px;margin-left:-28px;border-radius:50%;background:#ff4f7b;border:4px solid #fff;display:none;align-items:center;justify-content:center;text-align:center;font-size:9px;font-weight:800;line-height:1.1;padding:4px;color:#fff;box-shadow:0 4px 10px rgba(0,0,0,.4),inset 0 0 0 4px rgba(255,255,255,.22);z-index:1}
.gm-note i{position:absolute;right:-6px;top:-8px;font-style:normal;font-size:12px;background:#ffd166;color:#1c1c30;border-radius:8px;padding:0 4px;font-weight:900}
.gm-note.blank{background:transparent;border:3px dashed rgba(255,255,255,.45);color:transparent;box-shadow:none}
.gm-note.bad{background:#111;border-color:#e5383b;color:#ff6b6b}
.gm-note.mash{background:#ff9f43;border-color:#fff}
.gm-note.double{background:#b388ff}
.gm-note.left{background:#4cc9f0}
.gm-note.wobble{background:#ff7bac}
.gm-note.hit{animation:gmhit .35s ease-out forwards}
@keyframes gmhit{to{transform:translate(70px,-28px) scale(1.9);opacity:0}}
.gm-note.miss{opacity:.3;filter:grayscale(1)}
.gm-note.gone{animation:gmgone .4s ease-out forwards}
@keyframes gmgone{to{transform:translate(-40px,-28px) scale(.4);opacity:0}}
.gm-trees{position:absolute;left:186px;top:50%;width:104px;height:74px;margin-top:-37px;display:none;z-index:2;filter:drop-shadow(0 4px 4px rgba(0,0,0,.5));white-space:nowrap}
.gm-trees .art{display:inline-block;width:52px;height:74px}
.gm-song{position:absolute;left:24px;right:24px;top:528px;height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:5px 10px;background:#182334f2;border:1px solid #bdc5d177;border-radius:9px;text-align:center;pointer-events:none;z-index:5}
.gm-song small{font-size:10px;line-height:12px;letter-spacing:.05em;color:#e7d7b7}
.gm-song-name{display:block;max-width:100%;font-size:16px;line-height:20px;color:#fff;overflow-wrap:anywhere}
.gm-tip{position:absolute;left:0;right:0;top:584px;text-align:center;font-size:12px;line-height:16px;color:rgba(255,255,255,.7)}
