:root{--ground: #080a0c;--block: #111418;--ink: #e4edf5;--pop: #ff4d5e;--popD: #d62839;--trough: #060709;--onPop: #0b0d10;--edge: #121519;--line: color-mix(in srgb, var(--ink) 22%, transparent);--bad: #ff4d4d;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}html{background:var(--ground)}body{padding:0;font-family:Noto Sans KR,system-ui,-apple-system,Segoe UI,sans-serif;font-size:.9375rem;line-height:1.45;-webkit-font-smoothing:antialiased}body.loading main{visibility:hidden}[hidden]{display:none!important}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;text-decoration-color:var(--pop);text-decoration-thickness:2px}button{font:inherit;color:inherit;cursor:pointer}input,select{font:inherit;color:var(--ink)}:focus-visible{outline:2px solid var(--pop);outline-offset:2px}.btn{background:transparent;color:var(--ink);border:2px solid var(--edge);border-radius:0;padding:.5rem .875rem;font-weight:800;letter-spacing:.04em}.btn:hover{background:var(--ink);color:var(--ground)}.btn:active{transform:translate(2px,2px)}.btn.primary{background:var(--pop);border-color:var(--pop);color:var(--onPop);box-shadow:3px 3px 0 var(--ink)}.btn.primary:hover{background:var(--popD);border-color:var(--popD)}.btn.primary:active{box-shadow:1px 1px 0 var(--ink)}.btn.danger{border-color:var(--bad);color:var(--bad)}.btn.danger:hover{background:var(--bad);color:#0e0f10}.btn.small{padding:.1875rem .5625rem;font-size:.85rem}.btn.wide{width:100%}.btn.chzzk{background:#00ffa3;color:#000;border-color:#00ffa3;width:100%}.btn.chzzk:hover{background:#00d488;border-color:#00d488}#conn-lost{position:fixed;top:0;left:0;right:0;z-index:50;background:var(--bad);color:#0e0f10;text-align:center;padding:.25rem;font-size:.85rem;font-weight:800;letter-spacing:.08em}.titlebar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin:1.125rem 0 .75rem}.pl-title{margin:0;font-size:1.6rem;font-weight:900;letter-spacing:-.01em}.online-badge,.open-badge,.random-badge{display:inline-flex;align-items:center;justify-content:center;position:relative;height:1.625rem;padding:0 .625rem;border-radius:0;font-size:.75rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;font-family:inherit;line-height:1}.online-badge{border:2px solid var(--edge);color:var(--ink);font-variant-numeric:tabular-nums}.open-badge{border:2px dashed var(--mut);color:var(--mut);background:transparent}.open-badge.is-open{border:2px solid var(--pop);background:var(--pop);color:var(--onPop)}button.open-badge{cursor:pointer}button.open-badge:hover{border-color:var(--edge)}button.open-badge.is-open:hover{box-shadow:3px 3px 0 var(--ink)}.random-badge{border:2px solid var(--pop);color:var(--pop);background:transparent}.random-badge.is-plus{background:var(--pop);color:var(--onPop);box-shadow:3px 3px 0 var(--ink)}.section-head .random-badge{align-self:center;height:1.375rem;font-size:.66rem;padding:0 .4375rem}.random-badge:after{content:attr(data-hint);position:absolute;top:calc(100% + .5rem);left:50%;transform:translate(-50%);width:max-content;max-width:min(17.5rem,80vw);white-space:normal;text-transform:none;letter-spacing:0;background:var(--block);color:var(--ink);font-weight:600;font-size:.8rem;line-height:1.45;padding:.375rem .625rem;border:2px solid var(--edge);box-shadow:4px 4px 0 var(--pop);opacity:0;pointer-events:none;transition:opacity .15s;z-index:20}.random-badge.show-hint:after,body.is-admin .random-badge:hover:after{opacity:1}.section-head{display:flex;align-items:center;gap:.5rem;margin:1.375rem 0 .625rem}.section-head h3,.nominee-title{margin:0;font-size:.95rem;font-weight:900;letter-spacing:.08em;color:var(--ground);background:var(--ink);padding:.25rem .625rem;display:inline-block;transform:rotate(-1deg)}.queue-count{margin-left:auto;color:var(--mut);font-size:.8rem;font-weight:700;font-variant-numeric:tabular-nums}.song-list,.nominee-list{list-style:none;margin:0;padding:0}.song-row{display:flex;align-items:center;gap:.625rem;padding:.5rem .375rem;border-bottom:1px dashed var(--line)}.thumb{width:6rem;height:3.375rem;object-fit:cover;border-radius:0;flex:none;background:var(--trough);border:2px solid var(--edge)}.row-text{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}.row-title{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left;padding:0;background:none;border:0}.row-title.as-link:hover{color:var(--pop)}.row-meta{display:flex;gap:.5rem;color:var(--mut);font-size:.82rem;font-weight:600;min-width:0}.row-channel{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-dur{flex:none;font-variant-numeric:tabular-nums}.row-right{display:flex;align-items:center;gap:.375rem;flex:none;max-width:40%}.requester{color:var(--ink);font-size:.85rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pick-badge{font-size:.9rem}.pick-btn,.del-btn{background:none;border:2px dashed var(--line);border-radius:0;padding:0 .375rem}.pick-btn{opacity:.5}.pick-btn.on{opacity:1;border:2px solid var(--pop);color:var(--pop)}.del-btn:hover{border:2px solid var(--bad)}.song-row.mine{background:var(--block);box-shadow:inset 5px 0 0 var(--pop);padding-left:.75rem}.flash{animation:flash 2s ease-out}@keyframes flash{0%,30%{box-shadow:0 0 0 3px var(--pop)}to{box-shadow:0 0 0 3px transparent}}.history-section{margin-top:1.125rem}.history-section summary{cursor:pointer;font-weight:800;padding:.375rem .25rem;font-size:.8rem;letter-spacing:.12em;color:var(--mut)}.history-section[open] summary{color:var(--ink)}.backup-btn{margin-top:.625rem}.banner-card{border:2px dashed var(--edge);border-radius:0;padding:.625rem .75rem;margin:.75rem 0;background:var(--block)}.banner-card.now{border:2px solid var(--pop);box-shadow:5px 5px 0 var(--pop);margin-bottom:1rem}.banner-card.next{border-style:solid}.banner-label{font-size:.66rem;font-weight:900;letter-spacing:.22em;text-transform:uppercase;color:var(--mut);margin-bottom:.4375rem}.banner-card.now .banner-label{display:inline-block;background:var(--pop);color:var(--onPop);padding:2px .4375rem}.banner-body{display:flex;gap:.625rem;align-items:center}.banner-text{min-width:0;display:flex;flex-direction:column;gap:2px}.banner-title{font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.banner-sub{color:var(--mut);font-size:.85rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.banner-sub .requester{color:var(--ink)}.banner-empty{color:var(--mut)}.nominees-section{margin-top:1.375rem}.nominee-title{cursor:zoom-in;margin:0 0 .75rem;font-size:1.15rem}.nominee-list{max-width:46rem}.nominee>.requester{margin:0 .75rem 0 1.25rem;flex:none;max-width:30%}.nominee .row-text{flex:1}#stage .nominee-list{max-width:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.875rem 1rem;align-items:stretch}#stage .nominee-list>.nominee{margin-bottom:0}@media(max-width:1100px){#stage .nominee-list{grid-template-columns:minmax(0,1fr)}}.nominee{display:flex;align-items:center;gap:.625rem;padding:.5rem;border:2px solid var(--edge);border-radius:0;margin-bottom:.625rem;background:var(--block)}.nominee-no{width:1.75rem;height:1.75rem;flex:none;display:grid;place-items:center;border:2px solid var(--edge);font-weight:900;font-variant-numeric:tabular-nums}.nominee.winner{position:relative;border:3px solid var(--pop);box-shadow:6px 6px 0 var(--pop);padding:.75rem .625rem;margin-bottom:.875rem}.thumb-wrap{position:relative;flex:none;display:inline-flex}.crown-big{position:absolute;left:-.875rem;top:-1.375rem;z-index:3;font-size:2.5rem;line-height:1;transform:rotate(-18deg);pointer-events:none;filter:drop-shadow(3px 3px 0 var(--ground))}body.nominee-zoom .crown-big{font-size:3.75rem;left:-1.25rem;top:-2rem}.req-crown{font-size:1.3em;vertical-align:-.1em}.spark{position:absolute;z-index:4;color:var(--pop);font-size:.875rem;pointer-events:none;animation:spark-twinkle 1.8s ease-in-out infinite both}@keyframes spark-twinkle{0%,to{opacity:0;transform:scale(.3) rotate(0)}50%{opacity:1;transform:scale(1.2) rotate(90deg)}}.just-won .crown-big{animation:crown-pop .7s cubic-bezier(.2,1.8,.4,1) .15s both}.just-won{animation:winner-bump .5s ease-out both}@keyframes crown-pop{0%{transform:rotate(-18deg) scale(0);opacity:0}to{transform:rotate(-18deg) scale(1);opacity:1}}@keyframes winner-bump{0%{transform:scale(1)}40%{transform:scale(1.04)}to{transform:scale(1)}}.confetti-layer{position:fixed;z-index:90;pointer-events:none}.confetti{position:absolute;top:50%;width:.5rem;height:.75rem;animation:confetti-burst 1.6s cubic-bezier(.15,.7,.4,1) var(--delay) both}@keyframes confetti-burst{0%{transform:translate(0) rotate(0);opacity:1}70%{opacity:1}to{transform:translate(var(--dx),calc(var(--dy) + 140px)) rotate(var(--rot));opacity:0}}.nominee.winner .row-title{font-size:1.1rem}.nominee.winner .nominee-no{background:var(--pop);border-color:var(--pop);color:var(--onPop)}.requester.crown{color:var(--pop);font-weight:800}body.nominee-zoom .nominees-section{position:fixed;z-index:40;top:6vh;bottom:auto;left:50%;transform:translate(-50%);width:min(50rem,88vw);max-height:88vh;overflow:auto;background:var(--block);border:3px solid var(--edge);border-radius:0;box-shadow:9px 9px 0 var(--pop);padding:1.5rem;font-size:1.25rem}body.nominee-zoom .nominees-section .nominee-list,body.nominee-zoom #stage .nominee-list{max-width:none;padding-top:1.5rem;display:block}body.nominee-zoom .nominees-section .nominee-list>.nominee,body.nominee-zoom #stage .nominee-list>.nominee{margin-bottom:.75rem}body.nominee-zoom .nominees-section{text-align:center}body.nominee-zoom .nominees-section .nominee{text-align:left}body.nominee-zoom .nominee-title{font-size:2rem;margin-bottom:.25rem;cursor:zoom-out}body.nominee-zoom:before{content:"";position:fixed;inset:0;z-index:39;background:#000000b8}body.nominee-zoom .nominees-section .thumb{width:10rem;height:5.625rem}#viewer{max-width:35rem;margin:0 auto;padding:1.25rem 1rem 3rem}.v-header{background:var(--block);border:3px solid var(--edge);box-shadow:7px 7px 0 var(--pop);padding:1rem 1rem .875rem;margin-bottom:.5rem}.v-header h1{margin:0 0 .75rem;font-size:1.45rem;font-weight:900;line-height:1.3}.v-header h1 small{display:table;margin:.375rem 0 0;font-size:.66rem;font-weight:900;letter-spacing:.22em;text-transform:uppercase;color:var(--ground);background:var(--ink);padding:2px .5rem;transform:rotate(-1deg)}.v-links{display:flex;gap:.5em;flex-wrap:nowrap;font-size:1rem;white-space:nowrap}.chip{display:inline-flex;align-items:center;gap:.375em;flex:none;padding:.4375em .6875em;border-radius:0;border:2px solid var(--edge);background:transparent;font-size:.88em;font-weight:700}.chip img{width:1em;height:1em}.v-links.squeeze #nick-btn{flex:0 1 auto;min-width:0}.v-links.squeeze #nick{min-width:0;overflow:hidden;text-overflow:ellipsis}.chip:hover{text-decoration:none;background:var(--ink);color:var(--ground)}#nick-btn{border-color:var(--pop)}#nick-btn b{color:var(--pop)}#nick-btn:hover b{color:var(--ground)}#viewer .titlebar{margin-top:1.25rem}.request-form{display:flex;gap:.5rem}.request-form input{flex:1;min-width:0;padding:.6875rem .75rem;border-radius:0;border:2px solid var(--edge);background:var(--trough);font-size:16px;font-weight:600}.request-form input::placeholder{color:var(--mut)}.request-form input:focus{outline:none;border-color:var(--pop)}.notice-error{color:var(--bad);font-weight:700}#admin{padding:1rem}.player-box{position:relative;aspect-ratio:16 / 9;background:var(--trough);border:3px solid var(--edge);border-radius:0;box-shadow:7px 7px 0 var(--pop);overflow:hidden}.player-box .yt-slot,.player-box .yt-slot>*{position:absolute;inset:0;width:100%;height:100%}.player-box iframe{border:0;width:100%;height:100%}.player-empty{display:none;position:absolute;inset:0;place-items:center;color:var(--mut);font-weight:800;letter-spacing:.12em}.player-box.empty{border-style:dashed;box-shadow:none}.player-box.empty .player-empty{display:grid}.player-box.empty .yt-slot{visibility:hidden}.now-row{display:flex;align-items:flex-start;gap:1rem;padding:1.125rem .25rem .75rem;border-bottom:2px solid var(--edge)}.now-text{flex:1;min-width:0}.now-title{display:block;font-size:1.6rem;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.now-meta{display:flex;align-items:center;gap:.375rem;color:var(--mut);font-size:.92rem;font-weight:600;margin-top:.25rem;flex-wrap:wrap}.now-meta .requester{color:var(--ink)}.now-channel{display:inline-flex;align-items:center;gap:.375rem}.avatar{width:1.375rem;height:1.375rem;border-radius:0;border:2px solid var(--edge)}.dot{opacity:.6}.controls{display:flex;gap:.5rem;flex:none}.ctl{min-width:2.75rem;height:2.5rem;padding:0 .75rem;border-radius:0;border:2px solid var(--edge);background:transparent;font-size:1rem;font-weight:800}.ctl:hover{background:var(--ink);color:var(--ground)}.ctl:active{transform:translate(2px,2px)}.ctl.like.on,.ctl.nominate.on{color:var(--onPop);background:var(--pop);border-color:var(--pop);box-shadow:3px 3px 0 var(--ink)}.ctl.skip{letter-spacing:.06em}#sidebar{margin-top:1rem}.sb-resize{display:none}.settings-fallback{position:fixed;z-index:60;right:1.25rem;top:1.25rem;width:27.5rem;height:80vh;border:3px solid var(--edge);border-radius:0;background:var(--ground);box-shadow:7px 7px 0 var(--pop)}.settings-fallback-close{position:fixed;z-index:61;right:1.75rem;top:1.625rem}@media(min-width:1600px){#admin{padding:3% calc(24% + 1.4375rem) 8vh 3%}#sidebar{position:fixed;top:3vw;right:1.5vw;width:calc(21vw + 1.25rem);height:calc(61vh - 3vw);min-height:13.75rem;max-height:calc(100vh - 3vw - .75rem);display:flex;flex-direction:column;overflow:hidden;margin:0;padding:.75rem;border:2px solid var(--edge);border-radius:0;background:var(--block)}.next-wrap{flex:none}.next-wrap .banner-card{margin-top:0}.sb-scroll{flex:1 1 auto;min-height:0;overflow-y:auto}.sb-resize{display:block;flex:none;height:.625rem;margin:.25rem -.75rem -.75rem;cursor:ns-resize}.sb-resize:before{content:"";display:block;width:2.5rem;height:.1875rem;margin:.1875rem auto;background:var(--mut)}#sidebar .row-title{font-size:.92rem}#sidebar .thumb{width:5rem;height:2.8125rem}#sidebar .banner-card{background:var(--ground)}}.modal-overlay{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:#000000b8;padding:1rem}.modal{width:min(25rem,100%);background:var(--block);border:3px solid var(--edge);border-radius:0;box-shadow:7px 7px 0 var(--pop);padding:1.375rem;display:flex;flex-direction:column;gap:.75rem}.modal-title{margin:0 0 .25rem;align-self:flex-start;font-size:.85rem;font-weight:900;letter-spacing:.16em;color:var(--ground);background:var(--ink);padding:.25rem .625rem;transform:rotate(-1deg)}.modal-msg{margin:0;white-space:pre-line;word-break:break-word;max-height:60vh;overflow:auto}.modal-error{margin:0;color:var(--bad);font-weight:700;white-space:pre-line;font-size:.9rem}.modal-input{padding:.625rem .75rem;border-radius:0;border:2px solid var(--edge);background:var(--trough);font-size:16px;font-weight:600}.modal-input:focus{outline:none;border-color:var(--pop)}.modal-input::placeholder{color:var(--mut)}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem}.modal-or{display:flex;align-items:center;gap:.5rem;color:var(--mut);font-size:.8rem;font-weight:700;letter-spacing:.12em}.modal-or:before,.modal-or:after{content:"";flex:1;border-top:2px dashed var(--line)}.toast{position:fixed;left:50%;bottom:1.5rem;transform:translate(-50%,20px);z-index:120;max-width:min(26.25rem,calc(100vw - 2rem));padding:.625rem 1rem;border-radius:0;background:var(--ink);color:var(--ground);font-weight:700;box-shadow:5px 5px 0 var(--pop);white-space:pre-line;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}.toast.show{opacity:1;transform:translate(-50%)}.toast.error{background:var(--bad);color:#0e0f10;box-shadow:5px 5px 0 var(--ink)}.settings-page{padding:1rem 1rem 1.5rem;font-size:.875rem}.yt-warn{margin:0 0 1rem;padding:.625rem .75rem;border:2px solid var(--bad);background:var(--block);box-shadow:4px 4px 0 var(--bad)}.panel{background:var(--block);border:2px solid var(--edge);border-radius:0;padding:.875rem;margin-bottom:1rem}section.panel:first-of-type{border-width:3px;box-shadow:7px 7px 0 var(--pop);margin-bottom:1.25rem}.panel h2{margin:0 0 .75rem;font-size:.8rem;font-weight:900;letter-spacing:.18em;text-transform:uppercase;color:var(--ground);background:var(--ink);padding:.25rem .625rem;display:inline-block;transform:rotate(-1deg)}.panel .row{display:flex;align-items:center;justify-content:space-between;gap:.625rem;padding:.5rem 0;border-bottom:1px dashed var(--line);font-weight:600}.panel .row.col{flex-direction:column;align-items:stretch}.panel small,.muted{color:var(--mut);font-size:.8rem}.panel input[type=text],.panel input[type=search],.panel input.num,.panel select,#s-user-q{background:var(--trough);border:2px solid var(--edge);border-radius:0;padding:.375rem .5rem;font-weight:600;-webkit-appearance:none;appearance:none}.panel input:focus,.panel select:focus,#s-user-q:focus{outline:none;border-color:var(--pop)}.panel select{background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:calc(100% - 14px) 50%,calc(100% - 9px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:1.75rem}#s-user-q{width:100%}.panel input.num{width:4.5rem;font-variant-numeric:tabular-nums}.inline{display:inline-flex;align-items:center;gap:.375rem}.panel input[type=checkbox]:not(.switch){accent-color:var(--pop);width:1.0625rem;height:1.0625rem}.btn-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:.875rem}.switch{-webkit-appearance:none;appearance:none;margin:0;cursor:pointer;flex:none;width:2.75rem;height:1.5rem;border:2px dashed var(--edge);background:transparent;position:relative}.switch:after{content:"";position:absolute;top:2px;left:2px;width:1rem;height:1rem;background:var(--mut);transition:left .15s,background .15s}.switch:checked{border:2px solid var(--pop);background:var(--pop);box-shadow:3px 3px 0 var(--ink)}.switch:checked:after{left:calc(100% - 1rem - 2px);background:var(--onPop)}.user-list{list-style:none;margin:.5rem 0 0;padding:0;max-height:40vh;overflow:auto}.user-row{display:flex;align-items:center;gap:.375rem;padding:.4375rem 0;border-bottom:1px dashed var(--line)}.user-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.user-row.banned .user-name{color:var(--bad);text-decoration:line-through}.user-actions{display:flex;gap:.25rem;flex:none}.tag{font-size:.66rem;font-weight:800;letter-spacing:.08em;padding:1px .375rem;border-radius:0;border:1.5px solid var(--mut);color:var(--mut)}.tag.danger{color:var(--bad);border-color:var(--bad)}@media(max-width:480px){.thumb{width:4.5rem;height:2.5rem}.row-right{max-width:35%}.now-row{flex-direction:column}.toast{top:1rem;bottom:auto;transform:translate(-50%,-20px)}}
