*{box-sizing:border-box;margin:0}:root{--bg: #0f1115;--panel: #171a21;--panel-2: #1e222b;--border: #2a2f3a;--text: #e7eaf0;--text-dim: #8b93a3;--accent: #6c5ce7;--accent-hover: #7d6ef0;--danger: #e05252;--ok: #3ecf8e}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font:14px/1.45 system-ui,Segoe UI,sans-serif}button{font:inherit;color:inherit;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:8px 14px;cursor:pointer}button:hover{border-color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent)}button.primary:hover{background:var(--accent-hover)}button.danger:hover{border-color:var(--danger);color:var(--danger)}button.active{background:var(--accent);border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}input,select{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:8px 12px;outline:none}input:focus,select:focus{border-color:var(--accent)}.join-wrap{height:100%;display:grid;place-items:center}.join-card{width:min(360px,calc(100vw - 32px));background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:28px;display:flex;flex-direction:column;gap:12px}.join-card h1{font-size:26px;letter-spacing:.5px}.join-card .tagline{color:var(--text-dim);margin-bottom:8px}.join-card .divider{display:flex;align-items:center;gap:10px;color:var(--text-dim);font-size:12px}.join-card .divider:before,.join-card .divider:after{content:"";flex:1;height:1px;background:var(--border)}.error-banner{background:color-mix(in srgb,var(--danger) 18%,transparent);border:1px solid var(--danger);border-radius:8px;padding:8px 12px;font-size:13px}.room-wrap{height:100%;display:grid;grid-template-columns:240px 1fr 280px;grid-template-rows:48px 1fr 64px;grid-template-areas:"head head head" "people stage chat" "bar bar bar"}.room-head{grid-area:head;display:flex;align-items:center;gap:12px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border)}.room-head .code{font-family:ui-monospace,monospace;background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:3px 10px;letter-spacing:2px}.room-head .spacer{flex:1}.people{grid-area:people;background:var(--panel);border-right:1px solid var(--border);overflow-y:auto;padding:10px}.person{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px}.person:hover{background:var(--panel-2)}.person .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge{font-size:10px;text-transform:uppercase;letter-spacing:.5px;border-radius:4px;padding:2px 6px;background:var(--panel-2);color:var(--text-dim);border:1px solid var(--border)}.badge.host{color:var(--accent);border-color:var(--accent)}.badge.sharing{color:var(--ok);border-color:var(--ok)}.badge.muted{color:var(--danger);border-color:var(--danger)}.person .actions{display:none;gap:4px}.person:hover .actions{display:flex}.person .actions button{padding:2px 7px;font-size:11px;border-radius:5px}.stage{grid-area:stage;display:grid;gap:10px;padding:12px;overflow-y:auto;align-content:start;grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.stage:empty:after{content:"No one is sharing a screen";color:var(--text-dim);place-self:center}.stage-tile{position:relative;background:#000;border:1px solid var(--border);border-radius:10px;overflow:hidden}.stage-tile video{width:100%;display:block;aspect-ratio:16/9;object-fit:contain}.stage-tile .label{position:absolute;left:8px;bottom:8px;background:#0009;border-radius:6px;padding:3px 8px;font-size:12px}.chat{grid-area:chat;background:var(--panel);border-left:1px solid var(--border);display:flex;flex-direction:column}.chat-log{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:6px}.chat-msg .who{color:var(--text-dim);font-size:11px}.chat-msg.own .who{color:var(--accent)}.chat-form{display:flex;gap:6px;padding:10px;border-top:1px solid var(--border)}.chat-form input{flex:1;min-width:0}.control-bar{grid-area:bar;display:flex;align-items:center;justify-content:center;gap:10px;background:var(--panel);border-top:1px solid var(--border)}.badge.control{color:var(--accent);border-color:var(--accent)}.tile-wrap{position:relative}.request-btn{position:absolute;top:8px;right:8px;background:#000000a6;border-color:var(--accent);font-size:12px;padding:4px 10px}.stage-tile.controllable{outline:2px solid var(--accent);outline-offset:-2px}.stage-tile.controllable video{cursor:crosshair}.control-hint{position:absolute;top:8px;left:8px;background:#6c5ce7d9;border-radius:6px;padding:3px 8px;font-size:11px;pointer-events:none}.control-banner{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;border-radius:8px;font-size:13px}.control-banner.sharer{background:color-mix(in srgb,var(--danger) 16%,transparent);border:1px solid var(--danger)}.control-banner.controller{background:color-mix(in srgb,var(--accent) 18%,transparent);border:1px solid var(--accent)}.control-banner.warn-browser{display:block;background:color-mix(in srgb,#e0a030 20%,transparent);border:1px solid #e0a030;font-size:13px;line-height:1.4}.warn-text{color:#e0a030!important}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:grid;place-items:center;z-index:100}.modal{width:380px;background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:22px;display:flex;flex-direction:column;gap:12px}.modal h2{font-size:18px}.modal select{width:100%}.preset-desc{color:var(--text-dim);font-size:12px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.link-btn{background:none;border:none;padding:0;color:var(--accent);font-size:12px;text-align:left;cursor:pointer;width:fit-content}.link-btn:hover{text-decoration:underline;border:none}.preset-modal{width:520px;max-height:82vh;overflow-y:auto}.preset-head{display:flex;align-items:center;justify-content:space-between}.preset-section{margin-top:6px}.preset-section-title{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim);margin:8px 0 4px}.preset-empty{color:var(--text-dim);font-size:13px;padding:4px 0}.preset-row{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--border);border-radius:8px;margin-bottom:6px}.preset-row .preset-name{font-weight:600}.preset-row .preset-sub{flex:1;color:var(--text-dim);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preset-row button{padding:3px 10px;font-size:12px}.preset-form{display:flex;flex-direction:column;gap:10px}.field{display:flex;flex-direction:column;gap:4px;font-size:13px}.field-label{font-size:13px}.field-group{display:flex;flex-wrap:wrap;gap:6px 14px;padding:8px 10px;background:var(--panel-2);border-radius:8px}.chips{display:flex;flex-wrap:wrap;gap:6px 14px}.toggle{display:flex;align-items:center;gap:6px;font-size:13px;cursor:pointer}.toggle input{width:auto}.key-chips{display:flex;flex-wrap:wrap;gap:6px;min-height:28px;align-items:center}.key-chip{display:inline-flex;align-items:center;gap:6px;font-family:ui-monospace,monospace;font-size:12px;background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:3px 6px 3px 8px}.key-chip.static{padding:3px 8px}.key-chip button{background:none;border:none;padding:0 2px;color:var(--text-dim);font-size:14px;line-height:1;cursor:pointer}.key-chip button:hover{color:var(--danger);border:none}button.recording{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 22%,transparent);animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{50%{opacity:.6}}.control-note{grid-column:1 / -1;font-size:12px;color:var(--text-dim);padding:2px 4px}.recent-presets{display:flex;flex-direction:column;gap:4px}.recent-row{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}.recent-chip{flex:0 0 auto;font-size:12px;padding:4px 10px;border-radius:999px;white-space:nowrap}.recent-chip.selected{background:var(--accent);border-color:var(--accent)}.cowatch{grid-column:1 / -1;background:var(--panel);border:1px solid var(--accent);border-radius:10px;overflow:hidden}.cowatch-head{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--border)}.cowatch-head .spacer{flex:1}.cowatch-video{width:100%;display:block;aspect-ratio:16 / 9;background:#000}.cowatch-note{padding:6px 12px;font-size:12px;color:var(--text-dim);border-top:1px solid var(--border)}.cowatch-title{color:var(--text-dim);font-size:12px;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cowatch-head button,.cowatch-head .toggle{flex:0 0 auto}.tile-fs{position:absolute;bottom:8px;right:8px;background:#0009;padding:4px 8px;font-size:13px;opacity:0;transition:opacity .12s}.stage-tile:hover .tile-fs,.stage-tile.fs-fill .tile-fs{opacity:1}.fs-fill{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;width:100vw;height:100vh;border-radius:0;background:#000}.stage-tile.fs-fill,.stage-tile:fullscreen{display:grid;place-items:center;background:#000}.stage-tile.fs-fill video,.stage-tile:fullscreen video{width:100%;height:100%;aspect-ratio:auto;object-fit:contain}.cowatch.fs-fill,.cowatch:fullscreen{display:flex;flex-direction:column;background:#000}.cowatch.fs-fill .cowatch-video,.cowatch:fullscreen .cowatch-video{flex:1;aspect-ratio:auto;height:auto}.modal input[type=file]{font-size:13px}.modal input[type=file]::file-selector-button{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:6px 10px;margin-right:10px;cursor:pointer}.mobile-tabs{display:none;grid-area:tabs}@media (max-width: 720px){.room-wrap{grid-template-columns:1fr;grid-template-rows:auto 1fr auto auto;grid-template-areas:"head" "main" "tabs" "bar"}.room-head{height:auto;flex-wrap:wrap;gap:8px;padding:8px 12px}.room-head strong{font-size:15px}.people,.stage,.chat{grid-area:main;min-height:0;border:none;border-right:none;border-left:none}.room-wrap[data-mtab=stage] .people,.room-wrap[data-mtab=stage] .chat,.room-wrap[data-mtab=people] .stage,.room-wrap[data-mtab=people] .chat,.room-wrap[data-mtab=chat] .stage,.room-wrap[data-mtab=chat] .people{display:none}.stage{grid-template-columns:1fr}.mobile-tabs{display:flex;background:var(--panel);border-top:1px solid var(--border)}.mobile-tabs button{flex:1;border:none;border-radius:0;background:transparent;padding:10px 4px;font-size:13px}.mobile-tabs button.active{background:var(--panel-2);box-shadow:inset 0 2px 0 var(--accent);color:var(--text)}.control-bar{flex-wrap:wrap;padding:8px;gap:8px}.control-bar select{display:none}.person .actions{display:flex}}
