:root{--bg: #0f1115;--panel: #1a1d24;--border: #2a2e37;--text: #e6e8ec;--muted: #8b909b;--accent: #4f7cff;--danger: #ff5c5c}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}button{font:inherit;padding:10px 16px;border-radius:8px;border:1px solid var(--border);background:var(--panel);color:var(--text);cursor:pointer}button:hover{border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.toggle.on{border-color:var(--accent)}input,select{font:inherit;padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:#12141a;color:var(--text);width:100%}label{display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--muted)}.error{color:var(--danger);font-size:14px}.muted{color:var(--muted);font-size:14px}.home{max-width:860px;margin:0 auto;padding:48px 24px}.home-hero h1{font-size:56px;margin:0 0 8px}.home-cards{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:40px}.card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:24px;display:flex;flex-direction:column;gap:12px}.card h2{margin:0}.card p{margin:0;color:var(--muted);font-size:14px}.join-row{display:flex;gap:8px}.join-row input{flex:1}.prejoin{display:grid;grid-template-columns:1fr 380px;gap:20px;height:100vh;padding:20px}.prejoin-video{position:relative;background:#000;border-radius:12px;overflow:hidden}.prejoin-video video{width:100%;height:100%;object-fit:contain}.video-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#0009;text-align:center;padding:24px}.prejoin-panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:24px;display:flex;flex-direction:column;gap:16px}.prejoin-panel h2{margin:0}.device-row{display:flex;gap:8px}.device-row button{flex:1}.room{height:100vh;display:flex;flex-direction:column}.room-header{display:flex;justify-content:space-between;align-items:center;padding:12px 20px}.video-grid{flex:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px;padding:0 20px;align-content:center}.video-tile{position:relative;background:#000;border-radius:12px;overflow:hidden;aspect-ratio:16 / 9}.video-tile video{width:100%;height:100%;object-fit:cover}.tile-label{position:absolute;left:8px;bottom:8px;background:#0009;padding:2px 8px;border-radius:6px;font-size:13px}.avatar{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:64px;background:var(--panel)}.room-footer{display:flex;justify-content:center;padding:16px 20px}.controls{display:flex;gap:12px}.ctl{min-width:52px;height:52px;border-radius:26px;font-size:20px;display:grid;place-items:center;padding:0 16px}.ctl.on{border-color:var(--accent)}.ctl.off{border-color:var(--danger);color:var(--danger)}.ctl.leave{background:var(--danger);border-color:var(--danger);color:#fff}.fullscreen-message{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.fullscreen-message p{margin:0}.ctl svg{display:block}.tile-label{display:flex;align-items:center;gap:6px}.tile-label svg{width:13px;height:13px;flex:none}.room{position:relative}.connecting-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:#0f1115b3}.spinner{width:30px;height:30px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}button.link{background:none;border:none;padding:0;color:var(--accent);text-decoration:underline}@media(max-width:720px){.home{padding:24px 16px}.home-hero h1{font-size:40px}.home-cards{grid-template-columns:1fr;margin-top:24px}.prejoin{grid-template-columns:1fr;grid-template-rows:minmax(220px,38dvh) auto;height:auto;min-height:100vh;min-height:100dvh;gap:12px;padding:12px;overflow-y:auto}.prejoin-panel{padding:16px}.room{height:100vh;height:100dvh}.room-header{padding:8px 12px}.video-grid{grid-template-columns:1fr 1fr;gap:8px;padding:0 8px;align-content:start;overflow-y:auto}.video-tile{aspect-ratio:4 / 3}.tile-label{font-size:11px}.room-footer{padding:8px 12px calc(10px + env(safe-area-inset-bottom))}.ctl{min-width:48px;height:48px}}
