:root{--bg:#f7f7f5;--fg:#1c1c1c;--muted:#6b6b6b;--line:#e2e2df;--card:#fff;--accent:#1f5f8b;--accent-fg:#fff;--ok:#2e7d32;--bad:#c62828;--rec:#e53935;--r:12px}
@media (prefers-color-scheme:dark){:root{--bg:#121212;--fg:#eaeaea;--muted:#9a9a9a;--line:#2b2b2b;--card:#1c1c1c;--accent:#6fb1e0;--accent-fg:#0d1b26}}
*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--fg);font:16px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;-webkit-text-size-adjust:100%}
body{display:flex;flex-direction:column;min-height:100dvh}
.hidden{display:none !important}
button{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--fg);border-radius:var(--r);padding:12px 18px;cursor:pointer}
button.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}
input{font:inherit;width:100%;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--fg)}
label{display:block;font-size:13px;color:var(--muted);margin:14px 0 4px}
.muted{color:var(--muted)}.small{font-size:13px}a{color:var(--accent)}
/* Lobby */
#lobby{flex:1;display:flex;align-items:center;justify-content:center;padding:24px 16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:28px 24px;width:100%;max-width:420px}
.card h1{font-size:24px;margin:0 0 4px}.card .sub{margin:0 0 10px}
.msg{background:#fff4e5;color:#7a3e00;border:1px solid #f7d8a8;border-radius:10px;padding:10px 12px;margin:12px 0}
.hint{display:flex;gap:10px;align-items:flex-start;margin-top:18px;font-size:13px;color:var(--muted)}
/* Raum */
#room{flex:1;display:flex;flex-direction:column}
#top{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--card)}
#top .title{font-weight:700}#top .spacer{flex:1}
.rec{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--rec);font-weight:600}.rec::before{content:"";width:10px;height:10px;border-radius:50%;background:var(--rec);animation:blink 1.2s infinite}
@keyframes blink{50%{opacity:.25}}
#timer{font-variant-numeric:tabular-nums;color:var(--muted);font-size:14px}
#tiles{flex:1;min-height:0;display:grid;gap:12px;padding:16px;grid-template-columns:repeat(var(--cols,1),minmax(0,1fr));grid-auto-rows:minmax(0,1fr)}
.tile{position:relative;background:var(--card);border:2px solid var(--line);border-radius:16px;min-height:120px;display:flex;align-items:center;justify-content:center;overflow:hidden;transition:border-color .15s,box-shadow .15s}
.tile.speaking{border-color:var(--ok);box-shadow:0 0 0 4px rgba(46,125,50,.18)}
.tile video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#000;display:block}
.tile.screen video{object-fit:contain}
.tile.me video{transform:scaleX(-1)}
.tile .avatar{width:72px;height:72px;border-radius:50%;background:var(--accent);color:var(--accent-fg);display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:700}
.tile .name{position:absolute;left:10px;bottom:8px;background:rgba(0,0,0,.55);color:#fff;padding:3px 10px;border-radius:20px;font-size:13px}
.tile .flag{position:absolute;right:10px;top:8px;background:rgba(0,0,0,.55);color:#fff;padding:2px 8px;border-radius:20px;font-size:12px}
.tile.muted .name::after{content:" · stumm"}
/* Leiste */
#bar{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;padding:12px 16px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--card)}
#bar button{min-width:120px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 14px;font-size:14px}
#bar button .k{font-size:11px;color:var(--muted)}#bar button.on{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}#bar button.on .k{color:inherit;opacity:.8}
#bar button.danger{color:var(--bad);border-color:var(--bad)}
#toasts{position:fixed;left:50%;bottom:110px;transform:translateX(-50%);display:flex;flex-direction:column;gap:6px;align-items:center;z-index:5;pointer-events:none}
.toast{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:8px 16px;font-size:14px;box-shadow:0 4px 16px rgba(0,0,0,.15);animation:fade 6s forwards}
@keyframes fade{0%{opacity:0;transform:translateY(8px)}8%{opacity:1;transform:none}85%{opacity:1}100%{opacity:0}}
#unblock{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:9}
@media (max-width:600px){#bar button{min-width:0;flex:1}}
