:root{--bg:#0f1115;--panel:#171a21;--panel-2:#1f232c;--line:#2a2f3a;--text:#e8eaef;--muted:#9097a6;--accent:#4f8cff;--accent-2:#3b74e0;--live:#ef4444;--ok:#22c55e;--warn:#f59e0b;--radius:12px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.4}*{box-sizing:border-box}html,body,#app,.app{height:100%;margin:0}body{background:var(--bg);overscroll-behavior:none;-webkit-tap-highlight-color:transparent}h1,h2,h3{margin:0;font-weight:600}.muted{color:var(--muted)}.small{font-size:13px}.error{color:#fca5a5}kbd{border:1px solid var(--line);color:var(--muted);border-radius:4px;padding:1px 5px;font:11px ui-monospace,monospace}input,select{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:8px;min-width:0;padding:10px 12px}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}.btn{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);cursor:pointer;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:8px 14px;font-weight:500;transition:background .15s;display:inline-flex}.btn:hover:not(:disabled){background:#2a2f3b}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:var(--accent-2)}.btn.danger{color:#fecaca;background:#3a1d22;border-color:#5b2730}.btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.btn.ghost{background:0 0;border-color:#0000}.btn.big{min-height:50px;padding:12px 22px;font-size:17px}.btn.small{min-height:32px;padding:4px 10px;font-size:13px}.btn.tiny{min-height:24px;margin-left:auto;padding:2px 6px}.btn.icon{width:44px;padding:8px}.btn.round{border-radius:50%;width:52px;height:52px;padding:0}.video{background:#000;width:100%;height:100%;display:block}.message,.home,.lobby{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:100%;padding:24px 16px;display:flex}.message p{max-width:460px;color:var(--muted);margin:0}.home-card,.lobby-card{text-align:left;flex-direction:column;gap:16px;width:100%;max-width:440px;display:flex}.home-card h1,.lobby-card h1{font-size:28px}.home-card p{margin:0}.join-form{border-top:1px solid var(--line);flex-direction:column;gap:8px;padding-top:16px;display:flex}.row{gap:8px;display:flex}.row input{flex:1}.lobby-preview{aspect-ratio:16/9;border-radius:var(--radius);background:var(--panel);overflow:hidden}.avatar{width:100%;height:100%;color:var(--muted);background:var(--panel-2);place-items:center;font-size:40px;font-weight:600;display:grid}.avatar.big{background:0 0;font-size:120px}.overlay{z-index:20;background:#0009;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.dialog{background:var(--panel);border:1px solid var(--line);border-radius:16px;width:100%;max-width:900px;max-height:100%;padding:20px;overflow:auto}.dialog header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.dot{border-radius:50%;width:10px;height:10px;display:inline-block}.dot.ok{background:var(--ok)}.dot.warn{background:var(--warn);animation:1s infinite alternate pulse}@keyframes pulse{to{opacity:.3}}.banner{color:#fde68a;background:#3a2e12;padding:8px 16px;font-size:14px}.teacher{flex-direction:column;height:100%;display:flex}.topbar{border-bottom:1px solid var(--line);background:var(--panel);justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.brand{align-items:center;gap:10px;display:flex}.actions{gap:8px;display:flex}.teacher-main{flex:1;grid-template-columns:minmax(320px,420px) 1fr;min-height:0;display:grid}.sources{border-right:1px solid var(--line);flex-direction:column;gap:12px;padding:16px;display:flex;overflow:auto}.sources h2,.students h2{color:var(--muted);font-size:15px;font-weight:500}.sources h2 b{color:var(--text)}.program{aspect-ratio:16/9;border-radius:var(--radius);border:2px solid var(--live);background:#000;position:relative;overflow:hidden}.live-badge{background:var(--live);color:#fff;letter-spacing:.05em;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:700;position:absolute;top:8px;left:8px}.source-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.source{background:var(--panel);border:2px solid var(--line);border-radius:10px;position:relative;overflow:hidden}.source.active{border-color:var(--live)}.source-view{aspect-ratio:16/10;cursor:pointer;background:#000;border:0;width:100%;padding:0;display:block}.source-view:disabled{cursor:default}.source-empty{background:var(--panel-2);width:100%;height:100%}.source-placeholder{text-align:center;place-items:center;padding:8px;display:grid;position:absolute;inset:0 0 34px}.source-bar{align-items:center;gap:6px;height:34px;padding:6px 8px;font-size:13px;display:flex}.source-bar kbd{margin-left:auto}.source-bar .btn.tiny{margin-left:0}.source.active .source-bar{background:var(--live);color:#fff}.source.active kbd{color:#fff;border-color:#ffffff80}.students{flex-direction:column;gap:12px;min-width:0;padding:16px;display:flex;overflow:auto}.count{background:var(--panel-2);min-width:22px;color:var(--text);text-align:center;border-radius:11px;padding:0 6px;font-size:13px;display:inline-block}.grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));align-content:start;gap:10px;display:grid}.grid.n1{grid-template-columns:minmax(240px,720px)}.grid.n2,.grid.n4{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.tile{aspect-ratio:16/9;background:var(--panel);border:1px solid var(--line);color:inherit;font:inherit;cursor:zoom-in;text-align:left;border-radius:10px;padding:0;position:relative;overflow:hidden}.tile:hover{border-color:var(--accent)}.tile-bar{background:linear-gradient(#0000,#000000b3);align-items:center;gap:6px;padding:6px 8px 8px;display:flex;position:absolute;bottom:0;left:0;right:0}.tile-name{text-overflow:ellipsis;white-space:nowrap;text-shadow:0 1px 2px #000;font-size:14px;font-weight:500;overflow:hidden}.badge-off{background:var(--live);color:#fff;border-radius:50%;flex:none;place-items:center;width:22px;height:22px;display:inline-grid}.tile-status{color:var(--warn);background:#0009;border-radius:4px;padding:2px 8px;font-size:12px;position:absolute;top:8px;left:8px}.tile-expand{opacity:0;background:#00000080;border-radius:6px;place-items:center;width:28px;height:28px;transition:opacity .15s;display:grid;position:absolute;top:8px;right:8px}.tile:hover .tile-expand,.tile:focus-visible .tile-expand{opacity:1}.level{height:3px;position:absolute;bottom:0;left:0;right:0}.level>div{background:var(--ok);transform-origin:0;height:100%;transform:scaleX(0)}.empty{color:var(--muted);border:1px dashed var(--line);border-radius:var(--radius);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;min-height:240px;display:flex}.focus{z-index:30;cursor:zoom-out;background:#000;display:grid;position:fixed;inset:0}.focus .video{background:#000}.focus-bar{cursor:default;background:#171a21e6;border-radius:12px;align-items:center;gap:12px;max-width:calc(100% - 32px);padding:6px 8px 6px 16px;display:flex;position:absolute;bottom:20px;left:50%;overflow:hidden;transform:translate(-50%)}.focus-name{align-items:center;gap:8px;font-size:17px;font-weight:600;display:flex}.pair-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:12px;display:grid}.pair-card{border-radius:var(--radius);background:var(--panel-2);text-align:center;flex-direction:column;align-items:center;gap:10px;padding:16px;display:flex}.pair-card h3{align-items:center;gap:8px;font-size:16px;display:flex}.pair-card p{margin:0}.qr{background:#fff;border-radius:8px;width:180px;height:180px;padding:6px}.qr img{width:100%;height:100%;display:block}.pair-done{width:180px;height:180px;color:var(--ok);background:#22c55e1f;border-radius:8px;place-items:center;font-weight:600;display:grid}.student,.device{background:#000;height:100%;position:relative;overflow:hidden}.stage{position:absolute;inset:0}.stage-status,.stage-label{background:#0009;border-radius:20px;padding:6px 14px;font-size:14px;position:absolute;top:16px;left:50%;transform:translate(-50%)}.stage-status{font-size:16px;top:50%}.unmute{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.self{aspect-ratio:4/3;border:1px solid #fff3;border-radius:10px;width:min(22vw,220px);position:absolute;bottom:88px;right:16px;overflow:hidden;box-shadow:0 4px 20px #00000080}.self-off{background:var(--panel);color:var(--muted);place-items:center;font-size:12px;display:grid;position:absolute;inset:0}.controls{left:50%;bottom:calc(16px + env(safe-area-inset-bottom));background:#171a21d9;border-radius:40px;align-items:center;gap:12px;padding:8px;display:flex;position:absolute;transform:translate(-50%)}.device{flex-direction:column;display:flex}.device-view{flex:1;min-height:0}.device-start{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;height:100%;padding:24px;display:flex}.device-status{text-align:center;background:var(--panel-2);color:var(--muted);padding:8px 14px;font-size:14px;font-weight:500}.device-status.ok{color:var(--ok)}.device-status.live{background:var(--live);color:#fff}.device-status.error{color:#fca5a5}.board-app{-webkit-user-select:none;user-select:none;background:#2b2f38;flex-direction:column;height:100%;display:flex}.toolbar{padding:8px 12px;padding-top:calc(8px + env(safe-area-inset-top));background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.toolbar .group{align-items:center;gap:4px;display:flex}.toolbar .device-status{border-radius:8px;margin-left:auto;padding:6px 12px}.swatch{border:2px solid var(--line);cursor:pointer;border-radius:50%;width:32px;height:32px;padding:0}.swatch.active{box-shadow:0 0 0 2px var(--accent);border-color:#fff}.size-dot{background:currentColor;border-radius:50%;display:block}.board-canvas{object-fit:contain;touch-action:none;cursor:crosshair;flex:1;width:100%;min-height:0}@media (width<=860px){.teacher-main{grid-template-columns:1fr;overflow:auto}.sources{border-right:0;border-bottom:1px solid var(--line);overflow:visible}.students{overflow:visible}.hide-sm{display:none}.self{width:30vw;bottom:96px}}
