*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:#e9eefb}body{background:#07101f}.landing,.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 20% 0,#1b3d75 0,transparent 36%),radial-gradient(circle at 90% 20%,#31215e 0,transparent 32%),#050a13}.landing-card,.login-card{width:min(720px,100%);padding:48px;border:1px solid #ffffff1a;background:#0b1425d9;border-radius:28px;box-shadow:0 30px 100px #0008;backdrop-filter:blur(20px)}.landing-card h1{font-size:clamp(38px,6vw,72px);line-height:.98;letter-spacing:-.05em;margin:45px 0 20px}.landing-card p,.login-card p{color:#9ba9c2;font-size:18px;line-height:1.6}.landing-actions{display:flex;gap:12px;margin-top:32px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;font-weight:900;background:linear-gradient(145deg,#68a4ff,#8a6cff);box-shadow:0 8px 24px #6289ff55}.brand-mark.big{width:70px;height:70px;border-radius:20px;font-size:28px}.brand b{display:block}.brand small{display:block;color:#7f8ca5;margin-top:2px}.btn{appearance:none;border:1px solid #ffffff1a;background:#111c30;color:#eaf1ff;border-radius:11px;padding:11px 15px;font-weight:700;text-decoration:none;cursor:pointer;transition:.2s}.btn:hover{background:#182741;transform:translateY(-1px)}.btn.primary{background:#4f7cff;border-color:#6d92ff}.btn.primary:hover{background:#6088ff}.btn.small{padding:8px 11px;font-size:13px}.btn.wide{width:100%;margin-top:12px}.input{width:100%;border:1px solid #ffffff1a;background:#08111f;color:#e9eefb;border-radius:10px;padding:12px;outline:none}.input:focus{border-color:#6d92ff}.login-card{max-width:430px}.login-card h1{margin:35px 0 8px}.form-error{color:#ff8e9b;margin-top:12px}.dashboard{background:#060b14}.topbar{height:70px;padding:0 28px;border-bottom:1px solid #ffffff12;background:#08101df0;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20;backdrop-filter:blur(16px)}.status{display:flex;align-items:center;gap:8px;color:#8e9ab0;font-size:13px}.dot{width:8px;height:8px;border-radius:50%;background:#55e6a5;box-shadow:0 0 14px #55e6a5}.top-actions{display:flex;gap:8px}.shell{width:min(1400px,calc(100% - 40px));margin:28px auto 70px}.hero-panel{border:1px solid #ffffff12;background:linear-gradient(120deg,#0d1930,#0b1323);border-radius:20px;padding:24px 28px;display:flex;justify-content:space-between;align-items:center;gap:20px;box-shadow:0 20px 60px #0004}.hero-panel h1{margin:5px 0 5px;font-size:30px}.hero-panel p{margin:0;color:#8c9ab2}.eyebrow{font-size:10px;letter-spacing:.18em;color:#7295ff;font-weight:900}.transport{display:flex;gap:9px}.round{width:46px;height:46px;border-radius:50%;border:1px solid #ffffff1c;background:#111d31;color:white;font-size:18px;cursor:pointer}.round.main{background:#4f7cff}.round.danger{color:#ff7787}.grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,.7fr);gap:18px;margin-top:18px}.panel{border:1px solid #ffffff12;background:#0a1220;border-radius:18px;padding:20px;min-width:0}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:18px}.panel h2{margin:4px 0 0;font-size:20px}.panel-actions{display:flex;gap:8px;flex-wrap:wrap}.dropzone{border:1px dashed #ffffff2b;background:#0d1727;border-radius:14px;padding:18px;text-align:center;color:#9aa8bf;display:flex;flex-direction:column;gap:4px;transition:.2s}.dropzone.drag{border-color:#6f94ff;background:#101e36}.dropzone span{font-size:12px;color:#64728a}.playlist{margin-top:12px;display:flex;flex-direction:column;gap:8px}.item{display:grid;grid-template-columns:40px minmax(140px,1fr) 90px 90px 120px 120px 38px;gap:9px;align-items:center;padding:10px;border:1px solid #ffffff0f;background:#0d1727;border-radius:12px}.item.playing{border-color:#557fff;background:#101d35;box-shadow:inset 3px 0 #557fff}.drag-handle{color:#536079;text-align:center;cursor:grab}.item-title{min-width:0}.item-title b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item-title small{color:#64728a;text-transform:uppercase;font-size:10px}.mini{padding:8px!important;font-size:12px}.item .input{padding:8px}.icon-btn{border:0;background:transparent;color:#7f8ca5;cursor:pointer;font-size:18px}.icon-btn:hover{color:#ff8190}.field{display:block;color:#9ba8bd;font-size:12px;margin:17px 0}.field span{float:right}.field input[type=range]{width:100%;margin-top:12px}.switch-row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #ffffff0d;padding:13px 0;color:#aeb9cb;font-size:13px}.color{height:42px;padding:4px}.modal{position:fixed;inset:0;background:#000a;display:none;place-items:center;z-index:100;padding:20px}.modal.open{display:grid}.modal-card{width:min(520px,100%);background:#0d1727;border:1px solid #ffffff1a;border-radius:18px;padding:24px;position:relative;box-shadow:0 30px 100px #000b}.modal-card h2{margin-top:0}.modal-card .input{margin:6px 0}.area{height:160px;resize:vertical}.modal-x{position:absolute;right:16px;top:12px;border:0;background:transparent;color:#aab5c8;font-size:28px;cursor:pointer}.hint{font-size:12px;color:#728098}.toast{position:fixed;right:24px;bottom:24px;background:#17243a;border:1px solid #ffffff1c;border-radius:12px;padding:12px 16px;opacity:0;transform:translateY(10px);pointer-events:none;transition:.25s;z-index:200}.toast.show{opacity:1;transform:none}.viewer{overflow:hidden;background:#000}.stage{position:fixed;inset:0;background:#000;overflow:hidden}.media-layer{position:absolute;inset:0;opacity:0;transform:scale(1.01);transition:opacity .65s ease,transform .65s ease;display:grid;place-items:center;overflow:hidden}.media-layer.active{opacity:1;transform:scale(1);z-index:2}.media-layer img,.media-layer video{width:100%;height:100%;object-fit:contain}.media-layer iframe{width:100%;height:100%;border:0;background:white}.media-layer audio{width:min(700px,80%)}.text-slide{width:min(1200px,84vw);text-align:center;padding:40px}.text-slide h1{font-size:clamp(42px,7vw,100px);line-height:1.02;letter-spacing:-.04em;margin:0 0 24px}.text-slide p{white-space:pre-wrap;font-size:clamp(24px,3.2vw,50px);line-height:1.35;color:#dbe5f8;margin:0}.empty-screen{position:absolute;inset:0;display:flex;z-index:1;flex-direction:column;align-items:center;justify-content:center;color:#eef4ff;background:radial-gradient(circle at 50% 35%,#14254b,#03060b 60%)}.empty-screen h1{margin:18px 0 5px}.empty-screen p{color:#6f7d94}.blackout{position:absolute;inset:0;background:#000;z-index:50;opacity:0;pointer-events:none;transition:.25s}.blackout.on{opacity:1}.viewer-clock{position:absolute;z-index:10;right:28px;top:24px;background:#0008;border:1px solid #ffffff24;border-radius:12px;padding:9px 13px;font-variant-numeric:tabular-nums;font-weight:700;display:none}.progress-wrap{position:absolute;left:0;right:0;bottom:0;height:5px;background:#ffffff18;z-index:10;display:none}.progress-wrap div{height:100%;width:0;background:#fff}.fs-btn{position:absolute;z-index:60;right:18px;bottom:18px;border:1px solid #ffffff25;background:#0008;color:#fff;border-radius:10px;width:42px;height:42px;font-size:20px;opacity:.15;cursor:pointer;transition:.2s}.fs-btn:hover{opacity:1}@media(max-width:1000px){.grid{grid-template-columns:1fr}.item{grid-template-columns:34px minmax(130px,1fr) 72px 72px}.item .schedule{display:none}.status{display:none}}@media(max-width:700px){.topbar{padding:0 14px}.topbar .brand small{display:none}.shell{width:min(100% - 20px,1400px);margin-top:12px}.hero-panel{align-items:flex-start;flex-direction:column}.panel-head{align-items:flex-start;flex-direction:column}.item{grid-template-columns:28px 1fr 60px 38px}.item .delay,.item .schedule{display:none}.landing-card{padding:28px}}
button:disabled{opacity:.45;cursor:wait;transform:none}.round[aria-pressed=true]{box-shadow:0 0 0 3px #7d9cff65;background:#315bcc}.round.danger[aria-pressed=true]{background:#862d40;box-shadow:0 0 0 3px #ff778744}button:focus-visible,a:focus-visible{outline:2px solid #9bb7ff;outline-offset:3px}.viewer-notice,.media-enable{position:absolute;z-index:61;left:50%;transform:translateX(-50%);max-width:90%;text-align:center}.viewer-notice{top:20px;background:#17243aee;border:1px solid #ffffff30;border-radius:10px;padding:12px 18px}.media-enable{bottom:50px}.media-enable[hidden],.viewer-notice[hidden]{display:none}.playlist{overflow-x:auto}.item{grid-template-columns:32px minmax(110px,1fr) 65px 65px minmax(110px,145px) minmax(110px,145px) 30px}.text-slide{max-height:100%;overflow:auto}.item input{min-width:0}@media(max-width:1000px){.item{grid-template-columns:32px minmax(110px,1fr) 65px 65px 30px}}@media(max-width:700px){.item{grid-template-columns:28px minmax(80px,1fr) 60px 30px}.transport{flex-wrap:wrap}.hero-panel{padding:20px}.topbar .brand b{font-size:14px}}
.transport .round{width:78px;height:66px;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;transition:background .15s,box-shadow .15s}.round small{font-size:10px;font-weight:700}.hero-panel .playback-status{display:inline-block;margin:6px 0 10px;padding:6px 11px;border-radius:8px;background:#133b30;color:#7df4b9;font-weight:700;font-size:13px}.hero-panel .playback-status[data-mode=paused]{background:#463518;color:#ffd68b}.hero-panel .playback-status[data-mode=blackout]{background:#451e2b;color:#ff9eb1}#commandStatus:empty{display:none}#commandStatus{font-size:12px;margin-bottom:6px}@media(max-width:700px){.transport{gap:6px;width:100%}.transport .round{flex:1;width:auto;min-width:48px;height:60px}}

/* Responsive projection: preserve the original aspect ratio in every fit mode. */
@supports(height:100dvh){.stage{height:100dvh;bottom:auto}}
.media-layer{inset:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);display:flex;align-items:center;justify-content:center;min-width:0;min-height:0}
.media-layer img,.media-layer video{display:block;flex:none;max-width:none;max-height:none;object-position:center;user-select:none}
.media-layer .text-slide{flex:none;width:min(1200px,90%);padding:clamp(12px,3vw,40px);max-height:none;overflow:visible;overflow-wrap:anywhere;transform-origin:center}
.text-slide h1{font-size:clamp(28px,7vw,100px)}.text-slide p{font-size:clamp(18px,3.2vw,50px)}
.standby-screen{display:flex;align-items:center;justify-content:center;text-align:center;visibility:hidden;background:radial-gradient(ellipse at 50% 30%,#172e52 0%,#080f20 48%,#030711 100%);padding:clamp(24px,6vw,80px);transition:opacity .25s,visibility .25s}
.standby-screen.on{visibility:visible;pointer-events:auto}.standby-card{max-width:850px;width:100%;overflow-wrap:anywhere}
.standby-symbol{display:flex;justify-content:center;align-items:center;gap:12px;width:clamp(76px,13vmin,140px);height:clamp(76px,13vmin,140px);margin:0 auto 28px;border-radius:28%;background:#77a6ff14;border:1px solid #91b4ff38;box-shadow:0 0 70px #588bff18}
.standby-symbol span{display:block;width:12%;height:38%;border-radius:4px;background:#a6c5ff}
.standby-card .standby-brand{font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:#8faedf;font-size:clamp(12px,2vmin,18px);margin:0 0 12px}
.standby-card h1{font-size:clamp(36px,9vmin,100px);line-height:1.1;letter-spacing:-.04em;margin:0 0 20px;color:#f1f6ff}
.standby-card p{font-size:clamp(16px,2.7vmin,28px);line-height:1.5;color:#a7b6cf;margin:0}
#playPause{min-width:90px}.fs-btn{right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom))}.fs-btn:focus-visible{opacity:1}
@media(max-height:400px){.standby-symbol{width:55px;height:55px;margin-bottom:12px}.standby-card h1{font-size:32px;margin-bottom:8px}.standby-card p{font-size:14px}}
@media(prefers-reduced-motion:reduce){.media-layer,.blackout{transition:none!important}}

/* Queue workspace: independent scrolling without moving the live controls. */
.dashboard{scrollbar-gutter:stable}.dashboard *{scrollbar-width:thin;scrollbar-color:#40577b #0a1220}.dashboard ::-webkit-scrollbar{width:8px;height:8px}.dashboard ::-webkit-scrollbar-thumb{background:#40577b;border:2px solid #0a1220;border-radius:10px}
.queue-panel{display:flex;flex-direction:column;min-height:0}.queue-panel .panel-head{flex:none}.queue-panel>.dropzone{padding:12px}.queue-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:8px 0 12px;flex:none}.queue-tools>.input{flex:1;min-width:160px;padding:9px}.queue-tabs{display:flex;gap:6px}.queue-tabs button[aria-pressed=true]{background:#315bcc;border-color:#7094ff}.queue-tabs span{padding:1px 6px;border-radius:6px;background:#ffffff15}.queue-tools .hint{width:100%;margin:0;line-height:1.5}.queue-panel .playlist{overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;min-height:160px;margin:0;padding-right:4px;gap:12px}
.queue-card.item{display:block;flex:none;padding:16px;background:#0d1727;border-radius:14px}.queue-card-top{display:flex;align-items:center;gap:12px;min-width:0}.queue-index{color:#94a8c8;font-variant-numeric:tabular-nums;font-size:12px}.queue-thumb{width:76px;height:50px;object-fit:contain;border-radius:6px;background:#050b15;flex:none}.file-icon{display:grid;place-items:center;font-size:24px;color:#9bbaff}.queue-card-top .item-title{flex:1}.queue-card-top small{display:block;line-height:1.6;color:#91a2bd}.queue-card-actions{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0}.queue-card-actions .archive-item{margin-left:auto;color:#f7c78d}.queue-timing{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.queue-timing label{font-size:11px;color:#a2b2cb;flex:1;min-width:100px}.queue-timing input{display:block!important;margin-top:5px}.queue-total{font-size:11px;color:#90a4c5;padding-bottom:10px}.queue-card details{margin-top:12px;color:#91a2bd;font-size:12px}.queue-card summary{cursor:pointer;padding:4px 0}.queue-schedule{display:flex;gap:12px;flex-wrap:wrap;margin-top:8px}.queue-schedule label{flex:1;min-width:150px}.queue-schedule input{margin-top:5px}.queue-card.dragging{opacity:.45}.archived-card{flex:none;border:1px solid #ffffff12;border-radius:12px;padding:14px;background:#101725}.archived-card .restore-item{margin-top:12px}.item-status{font-size:11px;color:#85b4ff}.queue-card[hidden],.archived-card[hidden],.playlist[hidden]{display:none!important}.modal-card{max-height:90vh;max-height:90dvh;overflow-y:auto;overscroll-behavior:contain}
@media(min-width:1001px){.dashboard.presenter-ready{height:100vh;height:100dvh;overflow:hidden}.dashboard .shell{height:calc(100vh - 110px);height:calc(100dvh - 110px);margin:20px auto;display:flex;flex-direction:column;min-height:0}.dashboard .hero-panel{flex:none;padding:18px 24px}.dashboard .grid{flex:1;min-height:0;grid-template-rows:minmax(0,1fr)}.dashboard .grid>aside{overflow-y:auto;overscroll-behavior:contain}.queue-panel .playlist{flex:1}}
@media(max-width:1000px){.queue-panel .playlist{max-height:65vh;max-height:65dvh}.hero-panel{position:sticky;top:70px;z-index:15}.queue-panel{padding:14px}}@media(max-width:700px){.hero-panel{position:relative;top:auto}.queue-thumb{width:56px;height:42px}.queue-card.item{padding:12px}.queue-card-actions .btn{padding:8px 10px}.queue-schedule{flex-direction:column}.queue-tools>.input{flex-basis:100%}}
.media-layer{transform:none}.media-layer.active{transform:none}

/* Large queues must scroll within the panel, never expand the grid track. */
.queue-panel{overflow:hidden;min-width:0}.queue-panel .playlist{min-width:0;overflow-x:hidden;overflow-y:auto;align-items:stretch;flex-shrink:1;overflow-anchor:none;touch-action:pan-y}.queue-card.item,.archived-card{width:100%;min-width:0;max-width:100%;box-sizing:border-box}.queue-card-top .item-title{min-width:0}.queue-card-top small{overflow-wrap:anywhere}.queue-tools{min-width:0}.queue-tabs{flex-wrap:wrap;max-width:100%}.queue-schedule input{min-width:0;max-width:100%}.queue-panel>.hint{flex:none}
@media(min-width:1001px) and (min-height:760px){.queue-panel .playlist{flex:1 1 0;min-height:0;max-height:none}.queue-panel>.dropzone,.queue-panel>.panel-head,.queue-tools{flex-shrink:0}.dashboard .grid{overflow:hidden}.queue-panel>.hint{margin:8px 0;font-size:11px;line-height:1.4}}
@media(min-width:1001px) and (max-height:759px){.dashboard.presenter-ready{height:auto;min-height:100dvh;overflow:auto}.dashboard .shell{height:auto;display:block;margin:16px auto}.dashboard .grid{grid-template-rows:auto;align-items:start}.dashboard .grid>aside{max-height:none;overflow:visible}.queue-panel .playlist{flex:0 1 auto;height:55vh;height:55dvh;min-height:180px;max-height:55dvh}}
@media(max-width:1000px){.queue-panel .playlist{height:55vh;height:55dvh;max-height:65dvh;min-height:200px;flex:0 1 auto}.queue-panel{overflow:hidden}.queue-card-actions{gap:6px}.queue-timing label{min-width:90px}}

.account-card{max-width:560px}.account-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:24px 0}.account-tabs button[aria-pressed=true]{background:#315bcc;border-color:#7094ff}.account-card h1{font-size:25px;margin:22px 0 8px}.account-card p{font-size:14px;line-height:1.6}.account-card .field{margin:14px 0}.account-card .input{margin-top:6px}.account-card .form-error.success{color:#85e8b2}.session-name{align-self:center;color:#a7b9d7;font-size:12px;max-width:140px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.upload-author{color:#a1b2cd!important;text-transform:none!important;letter-spacing:0}
.admin-page{min-height:100vh;background:#060b14;overflow-y:auto;scrollbar-gutter:stable}.admin-shell{width:min(1250px,calc(100% - 32px));margin:28px auto 60px}.admin-shell h1{font-size:30px}.admin-shell>.panel[hidden]{display:none}.user-card{display:grid;grid-template-columns:minmax(180px,1fr) minmax(130px,180px) minmax(150px,210px) auto;align-items:center;gap:14px;padding:18px 0;border-bottom:1px solid #ffffff12}.user-info{min-width:0;display:flex;flex-direction:column;gap:6px;overflow-wrap:anywhere}.user-info span{color:#aebbd1;font-size:13px}.user-info small{color:#7b8da9;font-size:11px}.user-card label{font-size:12px;color:#9eafc9}.user-card select{margin-top:6px;padding:10px}.user-actions{display:flex;gap:6px;flex-wrap:wrap}.log-filters{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;margin:20px 0}.log-filters label{flex:1;min-width:180px;font-size:12px;color:#a1b3ce}.log-filters input,.log-filters select{margin-top:7px}.audit-list{display:flex;flex-direction:column;gap:10px}.audit-card{background:#0d1727;border:1px solid #ffffff12;border-radius:12px;padding:16px;overflow-wrap:anywhere}.audit-heading{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.audit-heading time{font-size:12px;color:#a1afc5}.audit-outcome{font-size:11px;color:#91e9b8;background:#174330;border-radius:6px;padding:4px 7px}.audit-outcome.failure{color:#ffb0b0;background:#50232e}.audit-card p{margin:10px 0}.audit-card small{color:#8699b7}.audit-card details{margin-top:12px;font-size:12px}.audit-card summary{cursor:pointer;color:#a8bcdf}.audit-card pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:350px;overflow:auto;padding:12px;background:#050c17;border-radius:8px}#adminMessage{color:#a7c5ff;line-height:1.5}
@media(max-width:850px){.user-card{grid-template-columns:1fr 1fr}.user-info,.user-actions{grid-column:1/-1}.session-name{display:none}.top-actions{flex-wrap:wrap}.presenter-ready .topbar{height:auto;min-height:70px;padding-top:10px;padding-bottom:10px}}
