:root{--font:"Pretendard", "Pretendard Variable", "Apple SD Gothic Neo", "Noto Sans KR", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--bg:#f4f3ef;--surface:#fff;--surface-2:#ebe9e3;--surface-hover:#f6f5f1;--border:#d6d2c9;--border-strong:#8c877d;--text:#17191e;--text-muted:#57524a;--text-disabled:#8c877d;--focus:#17191e;--danger:#a8231a;--danger-text:#8a1c14;--danger-bg:#fdecea;--danger-border:#f0b4ad;--warn-text:#6b4300;--warn-bg:#fff3d6;--warn-border:#e2b04a;--toast-bg:#1f2329;--toast-error-bg:#a8231a;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--radius-sm:8px;--radius:12px;--tap:44px;--shadow-sm:0 1px 2px #17191e14;--shadow-lift:0 8px 24px #17191e38;--header-h:56px;--main-row-h:56px;--col-w:392px}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;line-height:1.5}h1,h2,h3{line-height:1.25}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}button{min-height:var(--tap);font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;touch-action:manipulation;padding:0 14px;font-weight:600;transition:background-color .12s,border-color .12s,transform 60ms}button:where(:hover:enabled){background:var(--surface-hover)}button:where(:active:enabled){background:var(--surface-2);transform:translateY(1px)}button:where(:disabled){color:var(--text-disabled);background:var(--surface-2);border-color:var(--border);cursor:not-allowed}button[type=submit]:enabled{background:var(--team-color);color:var(--team-on-color);border-color:var(--team-color)}button[type=submit]:enabled:hover{box-shadow:inset 0 0 0 999px #00000014}:where(select,input[type=text],input[type=search],input:not([type])){min-height:var(--tap);font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:0 12px}:where(input:disabled,select:disabled){color:var(--text-disabled);background:var(--surface-2)}:where(input[type=range]){accent-color:var(--team-color)}kbd{min-width:1.7em;height:1.7em;font:700 .72rem/1 var(--mono);color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:5px;justify-content:center;align-items:center;padding:0 .35em;display:inline-flex}.link-button{min-height:var(--tap);border-radius:var(--radius-sm);background:var(--team-color);color:var(--team-on-color);justify-content:center;align-items:center;padding:0 18px;font-weight:700;text-decoration:none;display:inline-flex}.app{--team-tint:color-mix(in srgb, var(--team-color) 7%, var(--bg));--team-line:color-mix(in srgb, var(--team-color) 60%, var(--border));background:var(--team-tint);min-height:100dvh}.app-header{--focus:var(--team-on-color);background:var(--team-color);color:var(--team-on-color);box-shadow:inset 0 -3px 0 color-mix(in srgb, var(--team-on-color) 22%, transparent)}.header-row{align-items:center;gap:var(--space-2);min-height:var(--header-h);padding:6px var(--space-3);display:flex}.brand{letter-spacing:.08em;white-space:nowrap;margin:0;font-size:.8rem;font-weight:800;display:none}.team-picker{color-scheme:var(--team-scheme);min-width:0;max-width:12rem;color:var(--team-on-color);border:1px solid var(--team-on-color);cursor:pointer;background:0 0;padding:0 6px 0 10px;font-size:1.05rem;font-weight:800}.team-picker option{color:canvastext;background:canvas}.prev-team,.menu-toggle{color:var(--team-on-color);border-color:var(--team-on-color);background:0 0;flex:none}.prev-team:hover:enabled,.menu-toggle:hover,.team-picker:hover{box-shadow:inset 0 0 0 1px var(--team-on-color)}.prev-team:disabled{color:var(--team-on-color);border-color:color-mix(in srgb, var(--team-on-color) 30%, transparent);opacity:.6;background:0 0}.menu-toggle{min-width:var(--tap);margin-left:auto;padding:0;font-size:1.2rem}.header-nav{display:none}.header-menu{padding:0 var(--space-3) var(--space-2);flex-direction:column;display:flex}.header-nav a,.header-menu a{min-height:var(--tap);padding:0 var(--space-3);color:var(--team-on-color);border-radius:var(--radius-sm);align-items:center;font-weight:600;text-decoration:none;display:flex}.header-nav a.active,.header-menu a.active{text-underline-offset:6px;font-weight:800;text-decoration:underline;text-decoration-thickness:3px}.app-body{--sit-h:0px;--extra-h:0px;padding-bottom:calc(var(--main-row-h) + var(--sit-h) + var(--extra-h) + var(--space-4))}.app-body:has(.situation-bar){--sit-h:57px}.app-body:has(.player-panel.is-expanded){--extra-h:80px}.app-main{min-width:0;max-width:960px;padding:var(--space-4);margin:0 auto}.app-main h2{margin:4px 0 var(--space-4);font-size:1.3rem;font-weight:800}.main-page{flex-direction:column;gap:20px;display:flex}.section-head{justify-content:space-between;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-bottom:10px;display:flex}.app-main .section-head h2,.situation-title{align-items:center;gap:var(--space-2);margin:0;font-size:1.05rem;font-weight:800;display:flex}.section-head h2:before,.situation-title:before{content:"";background:var(--team-color);border-radius:2px;width:4px;height:1.1em}.search-field{position:relative}.search-box{border-radius:var(--radius);width:100%;min-height:48px;box-shadow:var(--shadow-sm);padding:0 48px 0 16px;font-size:1rem}.search-key{pointer-events:none;display:none;position:absolute;top:50%;right:14px;transform:translateY(-50%)}.search-box:focus+.search-key,.search-box:not(:placeholder-shown)+.search-key{display:none}.sort-toggle,.tabs{background:var(--surface-2);border-radius:10px;gap:2px;padding:3px;display:flex}.sort-toggle button,.tabs button{border-radius:var(--radius-sm);background:0 0;border:0}.sort-toggle button{font-size:.875rem}.tabs{margin-bottom:var(--space-3)}.tabs button{flex:1}.sort-toggle button:hover:not([aria-pressed=true]),.tabs button:hover:not([aria-selected=true]){background:var(--surface)}.sort-toggle button[aria-pressed=true],.tabs button[aria-selected=true]{background:var(--team-color);color:var(--team-on-color);font-weight:800}.player-grid{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(96px,1fr));display:grid}.play-btn{min-width:var(--tap);border-color:var(--border);min-height:48px;box-shadow:var(--shadow-sm);overflow-wrap:anywhere;border-radius:10px;padding:6px 10px;line-height:1.25}@media (hover:hover){.play-btn:hover:not(.is-playing){background:var(--surface);border-color:var(--team-line)}}.play-btn:active{background:var(--surface-2);transform:scale(.97)}.play-btn.is-playing{background:var(--team-color);color:var(--team-on-color);border-color:var(--team-color);box-shadow:0 0 0 3px color-mix(in srgb, var(--team-color) 28%, transparent);font-weight:800}.play-btn.is-playing:before,.player-panel.is-playing .now-title:before{content:"";vertical-align:-1px;background:linear-gradient(currentColor,currentColor) 0 100%/3px 40% no-repeat,linear-gradient(currentColor,currentColor) 50% 100%/3px 100% no-repeat,linear-gradient(currentColor,currentColor) 100% 100%/3px 60% no-repeat;flex:none;width:12px;height:12px;margin-right:6px;animation:.9s ease-in-out infinite alternate eq;display:inline-block}@keyframes eq{0%{background-size:3px 40%,3px 100%,3px 60%}50%{background-size:3px 95%,3px 35%,3px 100%}to{background-size:3px 55%,3px 75%,3px 30%}}.team-song-list,.result-list{gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.team-song-list .play-btn{border-radius:999px;padding:6px 16px}.result-list{flex-direction:column}.result-btn{text-align:left;width:100%;padding:10px 14px}.result-team{color:var(--text-muted);font-weight:600}.is-playing .result-team{color:inherit}.status-message{align-items:center;gap:var(--space-2) var(--space-3);margin:var(--space-3) 0;padding:var(--space-3) 14px;border-radius:var(--radius);border:1px solid #0000;flex-wrap:wrap;display:flex}.status-text{overflow-wrap:anywhere;flex:12em;min-width:0;margin:0}.status-empty{padding:28px var(--space-4);text-align:center;color:var(--text-muted);background:var(--surface);border:1px dashed var(--border-strong);flex-direction:column}.status-empty .status-text{flex:none;font-weight:700}.status-loading{background:var(--surface);border-color:var(--border)}.status-loading .status-text:before{content:"";width:1em;height:1em;margin-right:var(--space-2);vertical-align:-.15em;border:2px solid var(--border);border-top-color:var(--text);border-radius:50%;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.status-error{color:var(--danger-text);background:var(--danger-bg);border-color:var(--danger-border)}.status-info{color:var(--warn-text);background:var(--warn-bg);border-color:var(--warn-border)}.player-host{background:#000;width:100%;height:200px}.player-host iframe{border:0;width:100%;height:100%;display:block}.dock{z-index:20;flex-direction:column;display:flex;position:fixed;bottom:0;left:0;right:0}.dock-situations{order:-1}.dock-situations:empty{display:none}.toast-region{left:var(--space-2);right:var(--space-2);bottom:calc(100% + var(--space-2));pointer-events:none;justify-content:center;display:flex;position:absolute}.toast,.toast:hover,.toast:active{align-items:center;gap:var(--space-3);text-align:left;color:#fff;background:var(--toast-bg);border-radius:var(--radius);width:100%;max-width:480px;min-height:48px;box-shadow:var(--shadow-lift);pointer-events:auto;border:0;padding:10px 14px;animation:.16s ease-out toast-in;display:flex;transform:none}.toast-error,.toast-error:hover,.toast-error:active{background:var(--toast-error-bg)}.toast{--focus:#fff}.toast-text{overflow-wrap:anywhere;flex:1;min-width:0}.toast-close{flex:none;font-size:.9rem}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}}.panel-controls{grid-template-columns:minmax(0,1fr) auto auto auto;grid-template-areas:"extra extra extra extra""now toggle skip stop";grid-template-rows:auto var(--main-row-h);align-items:center;column-gap:var(--space-2);padding:0 var(--space-2);background:var(--surface);box-shadow:0 -1px 0 var(--border);display:grid;position:relative}.now{grid-area:now;min-width:0}.panel-toggle{min-width:var(--tap);grid-area:toggle;padding:0}.skip-btn{grid-area:skip}.stop-btn{grid-area:stop}.panel-extra{align-items:center;gap:var(--space-2);border-bottom:1px solid color-mix(in srgb, currentColor 20%, transparent);grid-area:extra;height:80px;display:none}.player-panel.is-expanded .panel-extra{display:flex}.player-panel button{flex:none}.now-label{display:none}.now-title{white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:.95rem;font-weight:800;overflow:hidden}.now-team{font-weight:600}.now-time{font-variant-numeric:tabular-nums;color:var(--text-muted);margin:0;font-size:.75rem}.now-cheer{display:none}.progress{left:0;right:0;bottom:var(--main-row-h);background:color-mix(in srgb, currentColor 18%, transparent);height:3px;position:absolute}.progress-fill{background:currentColor;height:100%;transition:width .25s linear}.progress-cheer{background:currentColor;border-radius:2px;width:3px;margin-left:-1px;position:absolute;top:-3px;bottom:-3px}.volume{flex:1;min-width:0}.volume-label{align-items:center;gap:var(--space-2);min-height:var(--tap);display:flex}.volume-label input{min-width:0;min-height:var(--tap);flex:1;margin:0}.volume-value{text-align:right;font-variant-numeric:tabular-nums;min-width:2.5em}.volume-note{margin:0;font-size:.75rem;line-height:1.3}.situation-bar{background:var(--surface-2);box-shadow:0 -1px 0 var(--border);position:relative}.situation-title{display:none}.situation-scroll{overscroll-behavior-x:contain;scrollbar-width:none;overflow-x:auto}.situation-scroll::-webkit-scrollbar{display:none}.situation-track{gap:var(--space-2);width:max-content;padding:6px var(--space-2);display:flex}.situation-btn{align-items:center;gap:var(--space-2);min-height:var(--tap);padding:0 14px 0 var(--space-2);white-space:nowrap;flex:none;display:inline-flex}.situation-btn.is-playing:before{margin-right:0}.situation-index{color:var(--text-muted);background:var(--surface-2);border-color:var(--border);flex:none}.situation-btn.is-playing .situation-index{color:inherit;background:0 0;border-color:currentColor}.situation-more{width:48px;color:var(--text);pointer-events:none;opacity:0;align-items:center;font-size:1.5rem;font-weight:800;line-height:1;transition:opacity .15s;display:flex;position:absolute;top:0;bottom:0}.situation-more.is-left{background:linear-gradient(to left, transparent, var(--surface-2) 60%);justify-content:flex-start;padding-left:6px;left:0}.situation-more.is-right{background:linear-gradient(to right, transparent, var(--surface-2) 60%);justify-content:flex-end;padding-right:6px;right:0}.more-left .situation-more.is-left,.more-right .situation-more.is-right{opacity:1}.shortcut-hint{padding-top:var(--space-3);border-top:1px solid var(--border);color:var(--text-muted);margin:0;font-size:.8rem;line-height:2.1;display:none}@media (width<=899px){.player-panel.is-live .panel-controls{--focus:var(--team-on-color);background:var(--team-color);color:var(--team-on-color)}.player-panel.is-live .now-time{color:inherit}.player-panel.is-live input[type=range]{accent-color:var(--team-on-color)}}@media (width>=900px){:root{--header-h:64px}.app-header{z-index:30;position:sticky;top:0}.header-row{height:var(--header-h);gap:var(--space-3);padding:0 var(--space-4)}.brand{display:block}.header-nav{gap:var(--space-1);margin-left:auto;display:flex}.menu-toggle,.header-menu{display:none}.app-body{grid-template-columns:minmax(0, 1fr) var(--col-w);align-items:start;padding:0;display:grid}.app-main{width:100%;max-width:none;padding:20px var(--space-5) 40px;grid-area:1/1;margin:0}.search-key{display:inline-flex}.player-panel{top:var(--header-h);z-index:10;gap:var(--space-3);height:calc(100vh - var(--header-h));height:calc(100dvh - var(--header-h));padding:var(--space-4);background:var(--surface);border-left:1px solid var(--border);flex-direction:column;grid-area:1/2;display:flex;position:sticky}.player-host{aspect-ratio:16/9;border-radius:var(--radius);flex:none;height:auto;min-height:200px;overflow:hidden}.dock{gap:var(--space-4);flex:1;min-height:0;margin:0 -6px;padding:2px 6px 6px;position:static;overflow-y:auto}.dock-situations{gap:var(--space-4);flex-direction:column;flex:1 0 auto;order:0;display:flex}.toast-region{left:var(--space-5);right:auto;bottom:var(--space-5);z-index:40;width:min(440px, calc(100vw - var(--col-w) - 2 * var(--space-5)));justify-content:flex-start;position:fixed}.panel-controls{gap:var(--space-2);box-shadow:none;background:0 0;grid-template-rows:none;grid-template-columns:1fr 1fr;grid-template-areas:"now now""skip stop""extra extra";padding:0;position:static}.panel-toggle{display:none}.skip-btn,.stop-btn{min-height:52px;font-size:1.05rem}.skip-btn:enabled{background:var(--team-color);color:var(--team-on-color);border-color:var(--team-color)}.skip-btn:enabled:hover{box-shadow:inset 0 0 0 999px #00000014}.panel-extra{border:0;flex-direction:column;align-items:stretch;height:auto;display:flex}.now{padding:14px var(--space-4) 18px;border-radius:var(--radius);background:var(--surface-2);position:relative}.player-panel.is-live .now{--focus:var(--team-on-color);background:var(--team-color);color:var(--team-on-color)}.now-label{letter-spacing:.06em;margin:0 0 2px;font-size:.75rem;font-weight:700;display:block}.now-title{white-space:normal;overflow-wrap:anywhere;font-size:1.35rem}.now-time{margin-top:var(--space-1);color:inherit;font-size:.875rem}.now-cheer{display:inline}.progress{border-radius:3px;height:6px;margin-top:10px;position:relative;bottom:auto}.progress-fill{border-radius:3px}.progress-cheer{top:-4px;bottom:-4px}.situation-bar{box-shadow:none;background:0 0}.situation-title{margin-bottom:10px;display:flex}.situation-scroll{overflow:visible}.situation-track{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));width:auto;padding:0;display:grid}.situation-btn{white-space:normal;text-align:left}.situation-more{display:none}.shortcut-hint{margin-top:auto;display:block}}.team-grid{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.team-button{border-radius:var(--radius);min-height:72px;box-shadow:var(--shadow-sm);border:0;font-size:1.15rem;font-weight:800}.team-button:hover{box-shadow:inset 0 0 0 999px #00000014}.field{gap:var(--space-1);min-width:0;margin-bottom:var(--space-3);flex-direction:column;font-weight:600;display:flex}.field input,.field select{width:100%;min-width:0;min-height:var(--tap);font:inherit;padding:0 12px;font-weight:400}.form-error{margin:var(--space-1) 0;color:var(--danger);font-weight:600}.form-warning{color:var(--warn-text)}.button-row{align-items:center;gap:var(--space-2);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.search-results{gap:var(--space-2);margin:var(--space-3) 0 0;padding:0;list-style:none;display:grid}.search-result{gap:var(--space-3);width:100%;min-width:0;padding:var(--space-2);text-align:left;border-color:var(--border);border-radius:var(--radius);font-weight:400;display:flex}.search-result img{object-fit:cover;border-radius:6px;flex:none}.search-result-text{overflow-wrap:anywhere;flex-direction:column;min-width:0;display:flex}.video-summary{margin-bottom:var(--space-2);overflow-wrap:anywhere;flex-direction:column;display:flex}.import-summary{font-weight:700}.candidates{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.candidate{align-items:center;gap:var(--space-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:10px;display:grid}.candidate input[type=text],.candidate select{width:100%;min-width:0;padding:0 var(--space-2)}.candidate-check{align-items:center;gap:var(--space-1);min-height:var(--tap);display:flex}.candidate-check input{width:24px;height:24px;accent-color:var(--team-color)}.candidate-title{grid-column:1/-1}.candidate-notes,.candidate-warn-detail{gap:var(--space-1) var(--space-2);overflow-wrap:anywhere;flex-wrap:wrap;grid-column:1/-1;display:flex}.candidate-warn-detail{flex-direction:column}.candidate-warn-detail p{margin:0}.candidate-warn-detail a{min-height:var(--tap);color:var(--text);align-items:center;display:inline-flex}.candidate-warning{background:var(--warn-bg);border-color:var(--warn-border)}.badge{padding:2px var(--space-2);background:var(--surface-2);color:var(--text);border-radius:999px;font-size:.85rem}.badge-error{background:var(--danger-bg);color:var(--danger-text)}.song-group h3,.settings-block h3{margin:var(--space-4) 0 var(--space-2)}.song-rows{margin:0;padding:0;list-style:none}.song-row{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;display:flex}.song-row-info{align-items:baseline;gap:var(--space-1) var(--space-3);flex-wrap:wrap;flex:200px;min-width:0;display:flex}.song-row-title{overflow-wrap:anywhere}.song-row-kind,.song-row-range,.song-row-cheer{color:var(--text-muted);font-size:.875rem}.song-row-range{font-variant-numeric:tabular-nums}.song-row-actions{gap:var(--space-2);display:flex}.song-row-actions button{min-width:64px}.settings-block{min-width:0;margin-bottom:var(--space-4);padding:var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.settings-block h3{margin-top:0}.settings-block p{overflow-wrap:anywhere}.settings-block input[type=file]{max-width:100%;min-height:var(--tap)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
