:root{--bg: #0f1115;--bg-elev: #171a21;--bg-hover: #1f232c;--border: #2a2f3a;--text: #e6e8ee;--muted: #8a92a6;--accent: #5b8cff;--accent-text: #0b1020;--danger: #ff6b6b;--radius: 8px;--gap: 8px}*{box-sizing:border-box}html{height:100%}body{min-height:100%;min-height:100dvh;margin:0}body{background:var(--bg);color:var(--text);font:15px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;display:flex;flex-direction:column}a{color:inherit}h1,h2{margin:0;font-weight:600}h2{font-size:14px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.hidden{display:none!important}.topbar{display:flex;align-items:center;gap:calc(var(--gap) * 2);padding:var(--gap) calc(var(--gap) * 2);border-bottom:1px solid var(--border);background:var(--bg-elev)}.brand{display:flex;align-items:center;gap:var(--gap);font-weight:700;text-decoration:none}.logo{width:24px;height:24px}.logo-lg{width:64px;height:64px}.room-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--border);border-radius:999px;background:var(--bg-hover);color:var(--muted);font:inherit;cursor:pointer}.room-chip:hover{color:var(--text);border-color:var(--muted)}.room-code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px}.chip-icon{font-size:14px;line-height:1}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:var(--gap)}.icon-btn-lg{font-size:18px;line-height:1;padding:4px 8px}.pill{padding:2px 10px;border-radius:999px;font-size:12px;background:var(--bg-hover);color:var(--muted)}.pill[data-status=connected]{color:#7ee2a8}.pill[data-status=reconnecting]{color:#ffd166}.pill[data-status=disconnected]{color:var(--danger)}.layout{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:calc(var(--gap) * 2);padding:calc(var(--gap) * 2);min-height:0}@media (max-width: 960px){.layout{grid-template-columns:1fr}}.stage{display:flex;flex-direction:column;gap:var(--gap);min-width:0}.player-wrap{position:relative;width:100%;aspect-ratio:16 / 9;background:#000;border-radius:var(--radius);overflow:hidden}.player-wrap iframe,#player{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0f1115d9;color:var(--muted);text-align:center;padding:calc(var(--gap) * 3)}.add-form{display:flex;gap:var(--gap)}.add-form .btn{white-space:nowrap}.add-form input{flex:1;min-width:0;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev);color:var(--text);font:inherit}.add-form input:focus{outline:2px solid var(--accent);outline-offset:-1px}.add-form input:disabled,.btn:disabled{opacity:.5;cursor:not-allowed}.btn{padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-hover);color:var(--text);font:inherit;cursor:pointer;text-decoration:none;white-space:nowrap}.btn:hover:not(:disabled){border-color:var(--muted)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}.btn-ghost{background:transparent}.btn-small{padding:4px 10px;font-size:13px}.link{background:none;border:0;color:var(--muted);font:inherit;font-size:13px;cursor:pointer;padding:0}.link:hover{color:var(--text);text-decoration:underline}.error{color:var(--danger);margin:0;font-size:13px}.error.note{color:var(--muted)}.landing-error{min-height:1.4em;visibility:hidden}.landing-error.show{visibility:visible}.sidebar{display:flex;flex-direction:column;gap:calc(var(--gap) * 2);min-width:0}.panel{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:calc(var(--gap) * 1.5);display:flex;flex-direction:column;gap:var(--gap)}.panel-head{display:flex;align-items:center;justify-content:space-between}.list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.row{display:flex;align-items:center;gap:var(--gap);padding:6px 8px;border-radius:6px}.row:hover{background:var(--bg-hover)}.row.offline{opacity:.45}.row .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .muted{color:var(--muted);font-size:13px}.thumb{width:48px;height:36px;object-fit:cover;border-radius:4px;flex:none;background:var(--bg)}.row[draggable=true]{cursor:grab}.row.dragging{opacity:.4}.row.drop-before{box-shadow:0 -2px 0 0 var(--accent)}.row.drop-after{box-shadow:0 2px 0 0 var(--accent)}.grip{color:var(--muted);font-size:14px;flex:none;-webkit-user-select:none;user-select:none;touch-action:none;padding:4px}@media (pointer: coarse){.grip{font-size:20px;padding:8px 6px}}.badge{font-size:11px;padding:1px 6px;border-radius:4px;background:var(--bg-hover);color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.badge.host{background:var(--accent);color:var(--accent-text)}.badge.control{border:1px solid var(--accent);color:var(--accent)}.icon-btn{background:none;border:0;color:var(--muted);cursor:pointer;font:inherit;padding:2px 6px;border-radius:4px}.icon-btn:hover:not(:disabled){background:var(--border);color:var(--text)}.icon-btn:disabled{opacity:.3;cursor:default}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%);background:var(--bg-hover);border:1px solid var(--border);padding:10px 16px;border-radius:var(--radius);box-shadow:0 8px 24px #0006}dialog{background:var(--bg-elev);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:calc(var(--gap) * 3);min-width:320px}dialog::backdrop{background:#0009}dialog form{display:flex;flex-direction:column;gap:calc(var(--gap) * 2)}dialog h2{color:var(--text);text-transform:none;letter-spacing:0;font-size:18px}dialog input{padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);font:inherit}.screen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--gap) * 2);background:var(--bg);text-align:center;padding:calc(var(--gap) * 3)}.screen p{color:var(--muted);margin:0}.landing{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--gap) * 3);padding:calc(var(--gap) * 3);text-align:center}.landing h1{font-size:32px}.landing p{color:var(--muted);margin:0;max-width:420px}.landing .actions{display:flex;gap:var(--gap);width:min(480px,100%)}.landing .actions .btn{flex:1;min-width:0;font-size:17px;padding:14px 16px;white-space:normal}.landing .or{color:var(--muted);font-size:13px}.footer{padding:calc(var(--gap) * 2);color:var(--muted);font-size:13px;display:flex;justify-content:center;gap:var(--gap)}.footer a{color:var(--muted)}.footer a:hover{color:var(--text)}.prose{max-width:640px;margin:0 auto;padding:calc(var(--gap) * 4) calc(var(--gap) * 2);line-height:1.6}.prose h1{font-size:26px;margin-bottom:calc(var(--gap) * 2)}.prose h2{color:var(--text);text-transform:none;letter-spacing:0;font-size:17px;margin:calc(var(--gap) * 3) 0 var(--gap)}.prose p{margin:0 0 var(--gap);color:var(--muted)}.prose a{color:var(--accent)}.landing form{display:flex;gap:var(--gap);width:min(480px,100%)}.landing form input{flex:1;min-width:0;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev);color:var(--text);font:inherit}.btn,.icon-btn,.link{touch-action:manipulation}.add-form input,dialog input,.landing form input{font-size:16px}@media (max-width: 600px){.topbar{flex-wrap:wrap;row-gap:var(--gap)}.layout{padding:var(--gap);gap:var(--gap)}.add-form{flex-wrap:wrap}.add-form input{flex-basis:100%}.add-form .btn{flex:1}.panel{padding:var(--gap)}dialog{min-width:0;width:90vw}.btn{min-height:44px}}.results{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:var(--gap);display:flex;flex-direction:column;gap:4px}.results-head{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:12px;padding:0 4px 4px}.results-list{display:flex;flex-direction:column;gap:2px;max-height:340px;overflow:auto}.result{display:flex;align-items:center;gap:var(--gap);width:100%;padding:6px;border:0;border-radius:6px;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.result:hover{background:var(--bg-hover)}.result img{width:80px;height:45px;object-fit:cover;border-radius:4px;flex:none;background:var(--bg)}.result .text{min-width:0;display:flex;flex-direction:column;gap:2px}.result .title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result .meta{color:var(--muted);font-size:12px}
