@import"https://fonts.googleapis.com/css2?family=Syne:wght@600;700;800&family=Sora:wght@400;500;600;700&family=Space+Mono:wght@400;700&display=swap";:root{--bg: #06050b;--panel: #0e0b18;--panel2: #140f22;--hairline: #241a3a;--text: #efe9ff;--dim: #9c8fc4;--faint: #6b5f8f;--magenta: #ff2e9a;--cyan: #22e7ff;--lime: #c4ff3d;--violet: #a64dff;--gold: #f0a924;--warning: #ff3b6b;--radius: 14px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Sora,system-ui,sans-serif;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:Syne,Sora,sans-serif;letter-spacing:-.02em;margin:0 0 12px}h1{font-size:28px;font-weight:800}a{color:var(--cyan)}.wrap{max-width:960px;margin:0 auto;padding:24px 16px 64px}.kicker{font-family:Space Mono,monospace;font-size:11px;letter-spacing:1.6px;text-transform:uppercase;color:var(--cyan);margin-bottom:6px}.panel{background:var(--panel);border:1px solid var(--hairline);border-radius:var(--radius);padding:16px;margin-bottom:12px}.row{display:flex;align-items:center;gap:12px}.grow{flex:1;min-width:0}.dim{color:var(--dim);font-size:14px}.faint{color:var(--faint);font-size:12px}.input{width:100%;padding:12px 14px;margin:6px 0 12px;background:var(--panel2);color:var(--text);border:1px solid var(--hairline);border-radius:10px;font:inherit;font-size:16px}.input:focus{outline:none;border-color:var(--cyan)}label{font-family:Space Mono,monospace;font-size:11px;letter-spacing:1.2px;text-transform:uppercase;color:var(--dim)}.btn{padding:12px 18px;border-radius:10px;border:1px solid var(--hairline);background:var(--panel2);color:var(--text);font:inherit;font-weight:600;cursor:pointer}.btn:hover:not(:disabled){border-color:var(--dim)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--magenta);border-color:var(--magenta);color:#fff;box-shadow:0 0 18px #ff2e9a59}.btn-ghost{background:transparent;border-color:transparent;color:var(--dim)}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-family:Space Mono,monospace;font-size:11px;letter-spacing:1px;text-transform:uppercase}.badge-official{color:var(--lime);border:1px solid var(--lime)}.badge-pending{color:var(--gold);border:1px solid var(--gold)}.badge-verified{color:var(--cyan);border:1px solid var(--cyan)}.err{color:var(--warning);font-size:14px;margin:8px 0;border-left:2px solid var(--warning);padding-left:10px}@media(min-width:768px){.wrap{padding:40px 24px 80px}h1{font-size:36px}}.wrap-wide{max-width:1400px}.daytabs{display:flex;gap:8px;overflow-x:auto;padding:4px 0 14px}.daytab{flex:0 0 auto;padding:8px 14px;border-radius:999px;border:1px solid var(--hairline);background:var(--panel);color:var(--dim);font-family:Space Mono,monospace;font-size:13px;cursor:pointer}.daytab-on{color:var(--bg);background:var(--cyan);border-color:var(--cyan)}.grid-scroll{overflow:auto;border:1px solid var(--hairline);border-radius:var(--radius);background:var(--panel);max-height:72vh}.grid{display:grid;position:relative;min-width:max-content}.grid-corner,.grid-head{position:sticky;top:0;z-index:3;background:var(--panel2);border-bottom:1px solid var(--hairline);padding:10px 12px;font-family:Syne,Sora,sans-serif;font-weight:700;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grid-corner{left:0;z-index:4}.grid-gutter{position:relative;border-right:1px solid var(--hairline);background:var(--panel);position:sticky;left:0;z-index:2}.grid-hour{position:absolute;right:8px;transform:translateY(-50%);font-family:Space Mono,monospace;font-size:11px;color:var(--faint)}.grid-hour-last{transform:translateY(-100%)}.grid-col{position:relative;border-right:1px solid var(--hairline)}.grid-rule{position:absolute;left:0;right:0;height:1px;background:var(--hairline);opacity:.55;pointer-events:none}.slot{position:absolute;overflow:hidden;display:flex;flex-direction:column;gap:2px;text-align:left;padding:6px 8px;border-radius:10px;cursor:pointer;border:1px solid var(--violet);background:linear-gradient(180deg,#a64dff47,#a64dff1f);color:var(--text);font:inherit}.slot:hover{border-color:var(--cyan)}.slot-selected{border-color:var(--cyan);box-shadow:0 0 0 1px var(--cyan),0 0 18px #22e7ff40}.slot-clash{border-color:var(--warning);background:linear-gradient(180deg,#ff3b6b4d,#ff3b6b1f)}.slot-time{font-family:Space Mono,monospace;font-size:11px;color:var(--cyan)}.slot-clash .slot-time{color:var(--warning)}.slot-artist{font-weight:600;font-size:14px;line-height:1.2}.slot-genre{font-size:11px;color:var(--dim)}.list{display:flex;flex-direction:column;gap:8px}.listrow{display:flex;gap:12px;align-items:flex-start;text-align:left;width:100%;padding:12px 14px;border-radius:12px;cursor:pointer;font:inherit;border:1px solid var(--hairline);background:var(--panel);color:var(--text)}.listrow-selected{border-color:var(--cyan)}.listrow-clash{border-color:var(--warning)}.listrow-time{font-family:Space Mono,monospace;font-size:12px;color:var(--cyan);line-height:1.5;flex:0 0 46px}.listrow-clash .listrow-time{color:var(--warning)}.listrow-artist{font-weight:600;display:block}.notice{color:var(--gold);font-size:14px;margin:8px 0;border-left:2px solid var(--gold);padding-left:10px}.editor{display:flex;flex-direction:column;gap:12px;align-items:flex-start}.editor>.grow{width:100%;min-width:0}.editor-side{width:100%}.slotpanel{position:sticky;top:16px}@media(min-width:1080px){.editor{flex-direction:row}.editor-side{width:320px;flex:0 0 320px}}.slot{touch-action:none;-webkit-user-select:none;user-select:none}.slot-dragging{opacity:.9;box-shadow:0 10px 28px #00000080;z-index:2}.slot-grip{position:absolute;left:0;right:0;bottom:0;height:8px;cursor:ns-resize;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.slot:hover .slot-grip{background:#22e7ff59}.grid-col{cursor:copy}.wrap>.btn,.wrap>.list,.wrap>.grid-scroll,.wrap>.editor{margin-bottom:12px}.wrap>h2{margin-top:28px}.wrap>.err,.wrap>.notice{margin-bottom:14px}.panel>:last-child{margin-bottom:0}.panel>.input:last-child{margin-bottom:0}.editor-roster{width:100%}@media(min-width:1080px){.editor-roster{width:280px;flex:0 0 280px;order:-1}.roster{position:sticky;top:16px}}.roster{background:var(--panel);border:1px solid var(--hairline);border-radius:var(--radius);padding:14px}.roster-list{display:flex;flex-direction:column;gap:4px;max-height:46vh;overflow-y:auto}.roster-list{padding-right:2px}@media(min-width:1080px){.roster-list{max-height:52vh}}.roster-row{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name  status" "meta  status";row-gap:2px;column-gap:10px;align-items:center;cursor:grab;padding:8px 10px;border-radius:10px;border:1px solid transparent;background:var(--panel2);-webkit-user-select:none;user-select:none;touch-action:none}.roster-row:hover{border-color:var(--hairline)}.roster-row-armed{border-color:var(--cyan);box-shadow:0 0 0 1px var(--cyan)}.roster-row-todo .roster-name{color:var(--text)}.roster-row-hidden{opacity:.55}.roster-name{grid-area:name;font-weight:600;font-size:14px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.roster-meta{grid-area:meta;display:flex;align-items:center;gap:6px;font-size:11px;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.roster-count{grid-area:status;justify-self:end;font-family:Space Mono,monospace;font-size:10px;letter-spacing:.6px;color:var(--dim);white-space:nowrap}.roster-count-todo{color:var(--gold);border:1px solid var(--gold);border-radius:999px;padding:2px 7px}.roster-act{padding:2px 6px;font-size:11px}.roster-ghost{position:fixed;z-index:50;pointer-events:none;padding:6px 10px;border-radius:8px;font-size:13px;font-weight:600;background:var(--violet);color:#fff;box-shadow:0 8px 24px #00000080}.roster .daytabs{flex-wrap:wrap;overflow-x:visible}.roster-import{border:1px solid var(--gold);border-radius:10px;padding:10px;margin-bottom:10px}.roster-acts{position:absolute;right:8px;top:50%;transform:translateY(-50%);display:flex;gap:2px;opacity:0;pointer-events:none;transition:opacity .12s;background:var(--panel2);box-shadow:-12px 0 12px 6px var(--panel2);border-radius:8px}.roster-row:hover .roster-acts,.roster-row-armed .roster-acts{opacity:1;pointer-events:auto}@media(hover:none){.roster-acts{opacity:1;pointer-events:auto}}.roster-hidden-tag{font-family:Space Mono,monospace;font-size:10px;color:var(--gold);border:1px solid var(--gold);border-radius:999px;padding:1px 5px}.mb-sheet{position:fixed;z-index:60;left:50%;top:12vh;transform:translate(-50%);width:min(520px,calc(100vw - 32px));max-height:70vh;overflow-y:auto;background:var(--panel);border:1px solid var(--cyan);border-radius:var(--radius);padding:16px;box-shadow:0 24px 64px #0009}.mb-result{display:flex;align-items:baseline;gap:10px;width:100%;text-align:left;margin:6px 0;padding:10px 12px;border-radius:10px;font:inherit;cursor:pointer;background:var(--panel2);color:var(--text);border:1px solid var(--hairline)}.mb-result:hover:not(:disabled){border-color:var(--cyan)}.roster-add{width:100%;text-align:left;font:inherit;cursor:pointer;padding:12px 14px;margin:6px 0 12px;background:var(--panel2);color:var(--dim);border:1px solid var(--hairline);border-radius:10px}.roster-add:hover{border-color:var(--cyan);color:var(--text)}@media(min-width:1080px){.wrap-wide{max-width:none;padding-left:28px;padding-right:28px}}@media(min-width:1080px){.wrap-wide{min-height:100vh;display:flex;flex-direction:column;padding-bottom:16px}.wrap-wide>.editor{flex:1;min-height:0;align-items:stretch}.wrap-wide>.editor>.grow{display:flex;flex-direction:column;min-height:0}.wrap-wide>.editor>.grow>.grid-scroll{flex:1;min-height:0;max-height:none}}.grid-scroll{min-height:320px}.grid-scroll,.roster-list{scrollbar-width:thin;scrollbar-color:var(--hairline) transparent}.grid-scroll::-webkit-scrollbar,.roster-list::-webkit-scrollbar{width:8px;height:8px}.grid-scroll::-webkit-scrollbar-track,.roster-list::-webkit-scrollbar-track{background:transparent}.grid-scroll::-webkit-scrollbar-thumb,.roster-list::-webkit-scrollbar-thumb{background:var(--hairline);border-radius:999px;border:2px solid transparent;background-clip:content-box}.grid-scroll:hover::-webkit-scrollbar-thumb,.roster-list:hover::-webkit-scrollbar-thumb{background:var(--faint);background-clip:content-box}.grid-scroll::-webkit-scrollbar-corner{background:transparent}@media(min-width:1080px){.roster-list{max-height:calc(100vh - 480px)}}.zoom-btn{padding:4px 12px;font-size:15px;line-height:1;min-width:34px}
