:root{--ink:#11100e;--paper:#f2efe7;--card:#fbfaf6;--orange:#ff5a36;--lime:#d8ff48;--line:rgba(17,16,14,.14);--muted:#77736b}*{box-sizing:border-box}html{height:100%}body{margin:0;min-height:100%;background:var(--paper);color:var(--ink);font-family:"Noto Sans SC",system-ui,sans-serif}.noise{position:fixed;inset:0;pointer-events:none;opacity:.14;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.12'/%3E%3C/svg%3E")}.shell{width:min(1180px,calc(100% - 40px));margin:auto;position:relative}.topbar{height:90px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:var(--ink);font-size:20px;font-weight:900}.brandmark{width:42px;height:42px;background:var(--ink);color:var(--lime);display:grid;place-items:center;border-radius:50%;transform:rotate(-8deg)}.live{font-size:13px;font-weight:600}.live span{display:inline-block;width:8px;height:8px;border-radius:50%;background:#42bd54;margin-right:8px;box-shadow:0 0 0 5px rgba(66,189,84,.13)}.view{display:none}.view.active{display:grid}.home-view{grid-template-columns:1.15fr .85fr;gap:100px;align-items:center;min-height:calc(100vh - 90px);padding:60px 0 80px}.eyebrow{font-size:12px;letter-spacing:.16em;font-weight:800;text-transform:uppercase}.hero-copy h1{font-size:clamp(54px,6vw,92px);line-height:1.02;letter-spacing:-.06em;margin:18px 0 28px;font-weight:900}.hero-copy h1 em{color:var(--orange);font-style:normal;position:relative}.hero-copy h1 em:after{content:"";height:10px;background:var(--lime);position:absolute;left:2px;right:0;bottom:2px;z-index:-1;transform:rotate(-1deg)}.lede{font-size:18px;line-height:1.8;max-width:600px;color:#57534d}.rule-row{display:flex;gap:26px;margin-top:42px;font-size:12px;font-weight:700}.entry-card,.stage-card,.score-card{background:var(--card);border:1px solid var(--line);box-shadow:8px 8px 0 var(--ink)}.entry-card{padding:38px;border-radius:4px;position:relative}.record{position:absolute;width:92px;height:92px;border-radius:50%;background:var(--ink);right:34px;top:-44px;color:var(--lime);display:grid;place-items:center;font-size:25px;box-shadow:0 0 0 8px var(--orange)}.record-ring{position:absolute;inset:17px;border:1px solid #777;border-radius:50%}.record span{position:relative}.entry-card label{display:block;font-size:13px;font-weight:700;margin:26px 0 9px}input{width:100%;height:55px;border:1.5px solid var(--ink);border-radius:3px;background:#fff;padding:0 16px;font:inherit;font-size:15px;outline:none;transition:.2s}input:focus{box-shadow:0 0 0 3px var(--lime)}button{font:inherit;cursor:pointer}.primary{height:55px;border:1.5px solid var(--ink);background:var(--orange);color:white;font-weight:800;padding:0 20px;box-shadow:4px 4px 0 var(--ink);transition:.15s}.primary:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--ink)}.primary:active{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--ink)}.entry-card>.primary{width:100%;margin-top:13px;display:flex;justify-content:space-between;align-items:center}.divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px;margin:24px 0}.divider:before,.divider:after{content:"";height:1px;flex:1;background:var(--line)}.join-row{display:flex;gap:8px}.join-row button{width:95px;background:var(--ink);color:white;border:0;font-weight:700}.legal{text-align:center;font-size:11px;color:var(--muted);margin:20px 0 0}.game-view{padding:48px 0 80px}.game-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:28px}.game-head h2{font-size:42px;margin:9px 0 0;letter-spacing:-.04em}.game-head button{border:0;background:none;padding:0;font-size:inherit}.round-pill{border:1px solid var(--ink);padding:9px 16px;border-radius:999px;font-weight:700;background:var(--lime)}.game-grid{display:grid;grid-template-columns:1fr 340px;gap:28px}.stage-card{min-height:600px;display:grid;place-items:center;padding:40px}.panel{display:none;width:100%;text-align:center}.panel.active{display:block}.panel h3{font-size:40px;margin:18px 0 12px}.panel>p:not(.eyebrow){color:var(--muted)}.pulse-stack{width:130px;height:130px;margin:0 auto;position:relative;display:grid;place-items:center}.pulse-stack i{position:absolute;inset:0;border:1px solid var(--orange);border-radius:50%;animation:pulse 2.4s infinite}.pulse-stack i:nth-child(2){inset:14px;animation-delay:.3s}.pulse-stack i:nth-child(3){inset:28px;animation-delay:.6s}.pulse-stack div{width:55px;height:55px;border-radius:50%;background:var(--ink);color:var(--lime);display:grid;place-items:center;font-size:28px;z-index:1}.panel .primary{margin-top:24px;min-width:210px}.muted{font-size:12px!important}.timer{width:90px;height:90px;margin:auto;position:relative;display:grid;place-items:center}.timer svg{position:absolute;width:100%;transform:rotate(-90deg)}.timer circle{fill:none;stroke:#dedad0;stroke-width:7}.timer circle:last-child{stroke:var(--orange);stroke-linecap:round;stroke-dasharray:283;stroke-dashoffset:0;transition:stroke-dashoffset 1s linear}.timer strong{font-size:24px}.wave{height:110px;display:flex;justify-content:center;align-items:center;gap:7px;margin:8px 0}.wave i{width:6px;height:25px;background:var(--ink);border-radius:4px;animation:wave .9s ease-in-out infinite alternate}.wave i:nth-child(2n){animation-delay:-.4s}.wave i:nth-child(3n){animation-delay:-.7s}.wave i:nth-child(4n){height:55px}.wave i:nth-child(5n){height:75px;background:var(--orange)}.ghost{border:0;background:transparent;text-decoration:underline;font-weight:700;margin-bottom:28px}#guessForm{display:flex;max-width:580px;margin:auto;gap:9px}#guessForm .primary{margin:0;min-width:130px}.feedback{height:24px;font-weight:800!important;color:var(--orange)!important}.score-card{min-height:600px;padding:24px;box-shadow:5px 5px 0 var(--ink)}.score-head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:18px}.score-head h3{margin:0;font-size:18px}.score-head span{font-size:11px;color:var(--muted)}.players,.final-ranking{padding:0;margin:16px 0;list-style:none}.player{display:grid;grid-template-columns:34px 36px 1fr auto;align-items:center;gap:10px;padding:13px 6px;border-bottom:1px solid var(--line)}.player-rank{font-size:12px;font-weight:900}.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:var(--lime);font-weight:900}.player strong{display:block;font-size:14px}.player small{font-size:10px;color:var(--muted)}.score{font-size:15px;font-weight:900}.player.me{background:rgba(216,255,72,.3)}.notice{font-size:12px;color:var(--orange);font-weight:800;text-align:center;min-height:40px;padding-top:12px}.trophy{font-size:60px;color:var(--orange)}.final-ranking{max-width:420px;margin:15px auto}.final-ranking li{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:12px;font-weight:700}.final-ranking li:first-child{background:var(--lime)}.loading-line{height:5px;background:#ddd8cd;max-width:300px;margin:30px auto;overflow:hidden}.loading-line span{display:block;width:40%;height:100%;background:var(--orange);animation:load 4.5s linear}.toast{position:fixed;left:50%;bottom:30px;transform:translate(-50%,100px);opacity:0;background:var(--ink);color:white;padding:12px 20px;border-radius:3px;font-size:13px;transition:.25s;z-index:9}.toast.show{transform:translate(-50%,0);opacity:1}@keyframes pulse{50%{transform:scale(1.08);opacity:.35}}@keyframes wave{to{height:82px}}@keyframes load{to{width:100%}}
@media(max-width:850px){.shell{width:min(100% - 24px,680px)}.home-view{grid-template-columns:1fr;gap:75px;padding-top:55px}.hero-copy h1{font-size:54px}.rule-row{gap:12px;flex-wrap:wrap}.entry-card{margin-bottom:40px}.game-grid{grid-template-columns:1fr}.score-card{min-height:auto}.stage-card{min-height:520px}.game-head h2{font-size:30px}}@media(max-width:520px){.topbar{height:72px}.home-view{min-height:auto}.hero-copy h1{font-size:44px}.lede{font-size:15px}.entry-card{padding:26px 20px}.record{width:72px;height:72px;top:-36px}.join-row{flex-direction:column}.join-row button{width:100%;height:48px}.game-head{align-items:start}.round-pill{font-size:12px}.stage-card{padding:24px 16px;min-height:500px}.panel h3{font-size:32px}#guessForm{flex-direction:column}#guessForm .primary{width:100%}}
.room-settings{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}.room-settings label{margin:0 0 7px}.room-settings select{width:100%;height:44px;border:1.5px solid var(--ink);background:#fff;padding:0 10px;font:inherit}.speed-setting{grid-column:1/-1}.speed-setting label{display:flex;justify-content:space-between}.speed-setting input{height:22px;padding:0;border:0;box-shadow:none;accent-color:var(--orange)}.settings-summary{margin:7px 0 0;color:var(--muted);font-size:12px}.admin-body{background:#e9e5db}.admin-shell{width:min(1160px,calc(100% - 32px));margin:auto;position:relative}.admin-top{height:88px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.admin-count{font-size:12px;color:var(--muted);margin-right:18px}.text-button{border:0;background:transparent;text-decoration:underline;font-weight:700;display:none}.admin-login{min-height:calc(100vh - 88px);display:grid;place-items:center}.admin-login .entry-card{width:min(430px,100%)}.admin-login h1{font-size:42px;margin:8px 0}.admin-login p{color:var(--muted)}.admin-login form label,.admin-login form input{display:block}.admin-login form .primary{width:100%;margin-top:12px}.admin-view{padding:55px 0 90px}.admin-title{display:flex;justify-content:space-between;align-items:end;margin-bottom:26px}.admin-title h1{font-size:48px;margin:5px 0}.admin-note{background:var(--lime);border:1px solid var(--ink);padding:13px 16px;font-size:12px;margin-bottom:20px}.song-list{border-top:1.5px solid var(--ink)}.song-row{display:grid;grid-template-columns:50px minmax(0,1fr) 74px auto;gap:18px;align-items:center;padding:20px 10px;border-bottom:1px solid var(--line);background:rgba(251,250,246,.6)}.song-row.disabled{opacity:.52}.song-no{font-weight:900;color:var(--orange)}.song-copy h3{margin:0 0 6px}.song-copy p{margin:0;color:var(--muted);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-tag{font-size:11px;font-weight:800}.row-actions{display:flex;gap:6px}.row-actions button,.ghost-button{border:1px solid var(--ink);background:#fff;padding:7px 11px;font-weight:700}.row-actions .danger{color:#bb321a}.empty-state{text-align:center;padding:80px;color:var(--muted)}dialog{width:min(560px,calc(100% - 28px));border:1.5px solid var(--ink);padding:0;background:var(--card);box-shadow:8px 8px 0 var(--ink)}dialog::backdrop{background:rgba(17,16,14,.55)}dialog form{padding:28px}.dialog-head{display:flex;justify-content:space-between}.dialog-head h2{font-size:32px;margin:5px 0 20px}.dialog-close{border:0;background:transparent;font-size:32px}.dialog-head+label,dialog textarea+label,dialog input+label{display:block;font-size:13px;font-weight:700;margin:14px 0 7px}dialog textarea{width:100%;resize:vertical;border:1.5px solid var(--ink);padding:13px;font:inherit}.switch-row{display:flex!important;align-items:center;gap:9px}.switch-row input{width:18px;height:18px;accent-color:var(--orange)}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.dialog-actions .primary{margin:0;min-width:130px}.form-error{min-height:20px;color:#c7361d!important;font-size:12px}.admin-login[hidden],.admin-view[hidden]{display:none}
@media(max-width:700px){.song-row{grid-template-columns:34px 1fr 60px}.row-actions{grid-column:2/-1}.admin-title h1{font-size:36px}.admin-title{align-items:center}.admin-title .primary{min-width:auto}.admin-count{display:none}}@media(max-width:520px){.room-settings{grid-template-columns:1fr}.speed-setting{grid-column:auto}.song-row{grid-template-columns:30px 1fr}.status-tag{grid-column:2}.row-actions{grid-column:2;flex-wrap:wrap}.admin-title{align-items:flex-end}.admin-title .primary{font-size:12px;padding:0 12px}.admin-top .brand span:last-child{font-size:16px}}
.punishment{position:fixed;inset:0;z-index:50;overflow:hidden;background:var(--lime);display:none;color:var(--ink)}.punishment.active{display:block;animation:punish-bg 5.6s both}.punish-copy{position:absolute;left:7vw;top:10vh;z-index:2}.punish-copy p{font-size:12px;letter-spacing:.18em;font-weight:900}.punish-copy h2{font-size:clamp(46px,7vw,108px);line-height:.92;letter-spacing:-.07em;margin:15px 0;transform:rotate(-3deg)}.loser-bubble{position:absolute;left:28%;bottom:22%;width:130px;height:130px;border-radius:50%;display:grid;place-items:center;background:var(--card);border:3px solid var(--ink);box-shadow:7px 7px 0 var(--ink);z-index:4;font-weight:900;animation:loser-eaten 5.6s both}.loser-bubble i{position:absolute;top:-28px;font-style:normal;font-size:14px;background:var(--ink);color:white;padding:5px 10px;transform:rotate(-6deg)}.seal{position:absolute;right:-500px;bottom:-60px;width:min(48vw,560px);height:min(42vw,480px);border-radius:55% 48% 42% 45%;background:#d9d5ce;border:5px solid var(--ink);box-shadow:inset -35px -25px 0 #b9b4ac;z-index:3;animation:seal-charge 5.6s cubic-bezier(.4,.02,.25,1) both}.seal-face{position:absolute;left:12%;top:19%;width:58%;height:52%;display:grid;place-items:center;font-size:58px}.seal-face:before,.seal-face:after{content:"";position:absolute;top:55%;width:90px;height:2px;background:var(--ink);box-shadow:0 12px 0 var(--ink)}.seal-face:before{right:62%;transform:rotate(8deg)}.seal-face:after{left:62%;transform:rotate(-8deg)}.seal-face b{font-weight:900;letter-spacing:4px}.seal-mouth{position:absolute;width:85px;height:28px;border:5px solid var(--ink);border-top:0;border-radius:0 0 60px 60px;bottom:13%;animation:seal-mouth 5.6s both}.seal-fin{position:absolute;width:150px;height:70px;border:4px solid var(--ink);background:#c9c4bc;border-radius:70% 30% 65% 35%;bottom:7%}.seal-fin.left{left:-80px;transform:rotate(28deg)}.seal-fin.right{right:-55px;transform:rotate(-35deg)}.chomp{position:absolute;left:43%;top:52%;font-size:clamp(60px,11vw,160px);font-weight:900;color:var(--orange);-webkit-text-stroke:3px var(--ink);transform:rotate(-10deg) scale(0);z-index:6;animation:chomp-pop 5.6s both}@keyframes punish-bg{0%{opacity:0}5%,92%{opacity:1}100%{opacity:0}}@keyframes seal-charge{0%,22%{transform:translateX(0) rotate(4deg)}48%{transform:translateX(-52vw) rotate(-5deg)}60%{transform:translateX(-46vw) rotate(3deg)}82%{transform:translateX(-42vw) rotate(0)}100%{transform:translateX(-42vw)}}@keyframes loser-eaten{0%,35%{transform:translate(0) rotate(-5deg) scale(1)}51%{transform:translate(16vw,-2vh) rotate(8deg) scale(.9)}58%,100%{transform:translate(28vw,4vh) rotate(30deg) scale(0)}}@keyframes seal-mouth{0%,42%{height:28px;width:85px}51%{height:120px;width:150px;background:var(--orange)}61%,100%{height:18px;width:65px}}@keyframes chomp-pop{0%,52%{transform:rotate(-10deg) scale(0)}57%{transform:rotate(-10deg) scale(1.15)}67%{transform:rotate(-10deg) scale(1)}80%,100%{transform:rotate(-10deg) scale(0)}}
@media(max-width:650px){.punish-copy{left:7vw;top:8vh}.punish-copy h2{font-size:48px}.loser-bubble{left:13%;bottom:25%;width:105px;height:105px}.seal{width:340px;height:310px}.seal-face{font-size:42px}.seal-face:before,.seal-face:after{width:55px}@keyframes seal-charge{0%,22%{transform:translateX(0)}48%{transform:translateX(-68vw) rotate(-5deg)}60%,100%{transform:translateX(-62vw)}}@keyframes loser-eaten{0%,35%{transform:scale(1)}51%{transform:translate(25vw,-1vh) scale(.85)}58%,100%{transform:translate(45vw,3vh) scale(0)}}}
.lyrics-hint{margin:7px 0 14px;color:var(--muted);font-size:11px}#songDialog{width:min(720px,calc(100% - 28px))}#songLyrics{line-height:1.7;min-height:260px}
.song-meta-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.song-meta-fields label{display:block;font-size:13px;font-weight:700;margin:0 0 7px}.song-copy h3 small{font-size:11px;color:var(--muted);font-weight:600;margin-left:8px}.song-meta-fields+label{display:block;font-size:13px;font-weight:700;margin:14px 0 7px}@media(max-width:520px){.song-meta-fields{grid-template-columns:1fr}}
