:root{
  --bg:#0f1220; --card:#1a1e35; --ink:#e8ecff; --muted:#8a92b2;
  --accent:#5b8def; --accent-2:#8a5bef; --danger:#e0546e; --ok:#4bd48b;
  --line:#2a2f4a;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);
  font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
button, .button{
  background:var(--accent);color:#fff;border:0;border-radius:8px;
  padding:8px 14px;cursor:pointer;font:inherit
}
button.secondary{background:transparent;border:1px solid var(--line);color:var(--ink)}
button.danger{background:var(--danger)}
button.link{background:none;color:var(--ink);padding:0;border:0;cursor:pointer;text-decoration:underline}
.muted{color:var(--muted)}

.topbar{
  display:flex;justify-content:space-between;align-items:center;
  padding:10px 20px;border-bottom:1px solid var(--line);background:#12162a
}
.topbar .brand{font-weight:700;font-size:18px;color:var(--ink)}
.topbar nav{display:flex;gap:14px;align-items:center}

main{padding:20px}
.messages{padding:0 20px}
.msg{padding:8px 12px;margin:6px 0;border-radius:8px;background:#26305a}
.msg.error{background:#4a1f30}
.msg.success{background:#1f4a3a}

.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px}
.card.narrow{max-width:520px;margin:0 auto}
.stack > * + *{margin-top:10px}
.stack input,.stack select,.stack textarea{
  width:100%;padding:9px 11px;background:#12162a;color:var(--ink);
  border:1px solid var(--line);border-radius:8px;font:inherit
}
form p{margin:8px 0}
.grid.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.lesson-list{list-style:none;padding:0;margin:0}
.lesson-list li{padding:8px 0;border-bottom:1px dashed var(--line)}

/* Комната урока */
.room-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px}
.room-body{display:grid;grid-template-columns:1fr 340px;gap:16px;height:calc(100vh - 180px);min-height:520px}
.stage{background:var(--card);border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;overflow:hidden}
.tabs{display:flex;border-bottom:1px solid var(--line)}
.tabs button{background:transparent;color:var(--muted);border-radius:0;padding:12px 18px}
.tabs button.active{color:var(--ink);border-bottom:2px solid var(--accent)}
.tab-pane{display:none;flex:1;padding:12px;overflow:auto}
.tab-pane.active{display:flex;flex-direction:column}

.video-grid{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:1fr;gap:10px;flex:1;min-height:300px}
.video-tile{position:relative;background:#000;border-radius:10px;overflow:hidden;display:flex}
.video-tile video{width:100%;height:100%;object-fit:cover;background:#000}
.video-tile span{position:absolute;left:8px;bottom:6px;font-size:12px;background:#0009;padding:2px 6px;border-radius:6px}
.video-tile.screen{outline:1px dashed #444}
.controls{display:flex;gap:10px;padding-top:10px;align-items:center;flex-wrap:wrap}
.controls button.on{background:var(--ok)}
.controls button.off{background:#444}

.chat{background:var(--card);border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;padding:12px}
.chat h2{margin:0 0 8px}
.chat-log{flex:1;overflow-y:auto;padding-right:6px}
.chat-item{margin:6px 0;padding:8px 10px;background:#12162a;border-radius:10px;max-width:90%}
.chat-item.mine{background:#26305a;margin-left:auto}
.chat-item .meta{font-size:11px;color:var(--muted);margin-bottom:2px}
.chat-item img{max-width:100%;border-radius:8px;margin-top:6px}
.chat-form{border-top:1px solid var(--line);padding-top:8px;display:flex;flex-direction:column;gap:6px}
.chat-form textarea{width:100%;padding:8px;background:#12162a;color:var(--ink);border:1px solid var(--line);border-radius:8px;font:inherit;resize:vertical}
.chat-actions{display:flex;align-items:center;gap:8px}
.file-btn{cursor:pointer;padding:6px 10px;background:#12162a;border:1px solid var(--line);border-radius:8px}
.file-btn input{display:none}

.board-tools{display:flex;gap:8px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
#whiteboard{background:#fff;border-radius:8px;width:100%;height:auto;max-height:calc(100% - 40px);touch-action:none;cursor:crosshair}

/* Presence и звонки */
.status-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#666;margin-right:6px;vertical-align:middle}
.status-dot.online{background:var(--ok);box-shadow:0 0 6px var(--ok)}
.status-dot.offline{background:#555}
.friends-list{list-style:none;padding:0;margin:0}
.friends-list li{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px dashed var(--line)}
.friends-list li .name{flex:1}
.friends-list li button{padding:5px 10px;font-size:13px}
.friends-list li button:disabled{opacity:.5;cursor:not-allowed;background:#444}
.grid.three{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}
.request-item{display:flex;align-items:center;gap:8px;padding:6px 0}
.request-item .name{flex:1}
.request-item form{display:inline}
.request-item button{padding:5px 10px;font-size:13px}

.call-modal{position:fixed;inset:0;background:#000c;display:none;align-items:center;justify-content:center;z-index:1000}
.call-modal.open{display:flex}
.call-modal-inner{background:var(--card);padding:24px;border-radius:14px;min-width:280px;text-align:center;border:1px solid var(--line)}
.call-modal-inner h2{margin:0 0 8px}
.call-modal-actions{margin-top:14px;display:flex;gap:10px;justify-content:center}
.call-modal button.ok{background:var(--ok)}

.call-overlay{position:absolute;top:12px;left:12px;background:#0009;padding:8px 12px;border-radius:8px;font-size:13px;z-index:10}
