:root{font-family:Onest,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#29223f;background:#f7f6fb;font-synthesis:none;text-rendering:optimizeLegibility;--purple:#59439a;--purple2:#7856bd;--red:#e82c3b;--ink:#29223f;--muted:#89839b;--line:#ebe7f1}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 20% 20%,#fce8ed,transparent 35%),radial-gradient(circle at 85% 85%,#e9e2f8,transparent 35%),#f8f7fb}.login-card{width:min(420px,100%);background:#fff;border:1px solid var(--line);border-radius:24px;padding:38px;box-shadow:0 24px 80px #39245c12}.login-logo{width:112px;height:112px;object-fit:contain;display:block;margin:0 auto 22px}.login-card h1{text-align:center;font-size:32px;margin:7px 0}.login-card>.eyebrow{text-align:center}.muted{text-align:center;color:var(--muted);font-size:13px;margin:0 0 28px}.shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:250px;background:#fff;border-right:1px solid var(--line);padding:25px 18px;display:flex;flex-direction:column;z-index:2}.brand{display:flex;align-items:center;gap:10px;padding:0 8px 32px;font-size:22px;font-weight:800;color:var(--purple)}.brand img{width:42px;height:42px;object-fit:contain}.school-label,.eyebrow{font-size:10px;letter-spacing:1.5px;font-weight:800;color:#a49bb4}.school-label{padding:0 11px 12px}.sidebar nav{display:grid;gap:6px}.sidebar nav button,.logout{display:flex;align-items:center;gap:12px;border:0;background:transparent;color:#716b80;padding:12px;border-radius:11px;text-align:left;font-size:13px;font-weight:700}.sidebar nav button svg,.logout svg{width:18px;height:18px}.sidebar nav button.active{background:#f0ebf9;color:var(--purple)}.sidebar nav button i{margin-left:auto;font-style:normal;font-size:11px;background:#f2eff6;padding:3px 7px;border-radius:20px}.sidebar-bottom{margin-top:auto}.logout{margin-top:12px;width:100%}.main{margin-left:250px;min-height:100vh}.topbar{height:70px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 34px}.topbar>div{display:flex;align-items:center;gap:9px;color:#a39bad;font-size:12px}.topbar svg{width:15px}.topbar b{color:var(--ink)}.content{max-width:1400px;margin:auto;padding:34px}.page-title{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:25px}.page-title h1{font-size:29px;letter-spacing:-1px;margin:7px 0}.page-title p,.section-head p{color:var(--muted);font-size:12px;margin:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:10px 14px;font-size:12px;font-weight:800;background:#fff;color:var(--ink)}.btn svg{width:16px;height:16px}.btn.primary{background:var(--purple);border-color:var(--purple);color:#fff;box-shadow:0 6px 18px #59439a24}.btn.primary:hover{background:#483581}.btn.ghost{background:#faf9fc}.btn.small{padding:8px 10px;font-size:11px}.btn.outline{color:var(--purple)}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:20px}.metric{background:#fff;border:1px solid var(--line);border-radius:15px;padding:17px;display:grid;grid-template-columns:34px 1fr;align-items:center;column-gap:10px}.metric svg{grid-row:span 2;width:22px;color:var(--purple)}.metric span{font-size:11px;color:var(--muted)}.metric b{font-size:22px}.graph-panel,.user-list,.chat-layout{background:#fff;border:1px solid var(--line);border-radius:17px;padding:22px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:25px}.section-head h2{font-size:17px;margin:0 0 5px}.legend{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:10px}.legend span{width:8px;height:8px;border-radius:50%;margin-left:9px}.teacher-dot{background:var(--purple)}.student-dot{background:#e84b56}.root-node{width:230px;margin:auto;display:flex;align-items:center;gap:10px;padding:12px;border:1px solid #e7dff3;background:#faf8fd;border-radius:13px}.root-node img{width:40px;height:40px;object-fit:contain}.root-node b,.root-node small{display:block}.root-node b{font-size:12px}.root-node small{font-size:10px;color:var(--muted);margin-top:3px}.root-node>span{margin-left:auto;font-size:9px;font-weight:800;color:var(--purple);background:#eee8f7;padding:5px 7px;border-radius:6px}.teacher-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(255px,1fr));gap:18px;align-items:start}.teacher-branch{position:relative;padding-top:0}.person-card{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fff}.teacher-card{border-color:#e4dcf1;background:#fcfaff}.person-main{display:flex;align-items:center;gap:9px;min-width:0}.avatar{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;flex:none;background:#f0eafa;color:var(--purple)}.avatar svg{width:18px}.teacher-avatar{background:#eee8f8;color:var(--purple)}.student-avatar,.avatar.student{background:#fff0f1;color:var(--red)}.person-info{min-width:0}.person-info b,.person-info small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.person-info b{font-size:12px}.person-info small{font-size:9px;color:var(--muted);margin-top:4px}.person-actions{display:flex;gap:4px;flex:none}.person-actions button,.icon-btn{width:30px;height:30px;border:1px solid transparent;border-radius:8px;background:transparent;color:#898198;display:grid;place-items:center}.person-actions button:hover,.icon-btn:hover{background:#f3eff8;color:var(--purple)}.person-actions svg,.icon-btn svg{width:15px;height:15px}.person-actions .danger-icon:hover,.danger-icon:hover{background:#fff0f1;color:var(--red)}.student-list{display:grid;gap:7px;margin:12px 0 0 22px;padding-left:14px;border-left:1px solid #e6dfea}.student-card{padding:9px 10px}.empty-students{padding:13px;border:1px dashed #e7e1ec;border-radius:10px;color:#a69fb0;font-size:10px;text-align:center}.add-student{margin:10px 0 0 36px;border:0;background:transparent;color:var(--purple);font-size:10px;font-weight:800;display:flex;align-items:center;gap:6px;padding:5px}.add-student svg{width:14px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:40px 15px;text-align:center;color:var(--muted);font-size:12px}.empty-state>svg{width:30px;height:30px;color:var(--purple)}.toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;color:var(--muted);font-size:11px}.search{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:0 10px;width:min(360px,100%);height:40px}.search svg{width:16px;color:#aaa2b5}.search input{border:0;outline:0;width:100%;font-size:11px}.user-list{padding:0}.user-row{display:flex;align-items:center;gap:12px;padding:13px 17px;border-bottom:1px solid #f1eef4}.user-row:last-child{border:0}.user-row .person-info{flex:1}.role-tag{font-size:10px;font-weight:800;padding:5px 8px;border-radius:7px;background:#f0eafa;color:var(--purple)}.role-tag.student{background:#fff0f1;color:var(--red)}.chat-layout{display:grid;grid-template-columns:310px minmax(0,1fr);padding:0;min-height:500px;overflow:hidden}.chat-list{border-right:1px solid var(--line);padding:8px}.chat-item{display:grid;gap:6px;width:100%;text-align:left;padding:13px;border:0;border-radius:10px;background:#fff;color:var(--ink)}.chat-item.selected,.chat-item:hover{background:#f7f4fb}.chat-item b{font-size:11px}.chat-item small{font-size:10px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-item span{font-size:9px;color:var(--purple)}.chat-detail{min-width:0}.chat-head{padding:17px;border-bottom:1px solid var(--line)}.chat-head b{font-size:12px}.chat-head small{font-size:10px;color:var(--muted);margin-top:4px}.messages{padding:18px;display:grid;align-content:start;gap:10px;max-height:600px;overflow:auto}.message{max-width:85%;padding:10px 12px;background:#f6f3fa;border-radius:10px}.message.teacher{justify-self:end;background:#fff0f1}.message b{font-size:10px}.message b small{font-weight:500;color:var(--muted);margin-left:6px}.message p{font-size:11px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0 0}.main footer{padding:0 34px 25px;color:#aaa3b4;font-size:10px}.main footer span{color:var(--red);padding:0 4px}.stack{display:grid;gap:14px}.stack label{display:grid;gap:7px;color:#6e687b;font-size:11px;font-weight:700}.stack input,.stack select{height:42px;border:1px solid var(--line);border-radius:9px;padding:0 11px;background:#fff;color:var(--ink);outline:0}.stack input:focus,.stack select:focus{border-color:#a997cf;box-shadow:0 0 0 3px #7856bd16}.alert{background:#fff0f1;color:#b82c3b;border:1px solid #f6d4d8;padding:11px 13px;border-radius:9px;font-size:11px}.alert-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.alert-row button{border:0;background:none;color:inherit}.alert-row svg{width:15px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#241b3580;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:grid;place-items:center;padding:20px;z-index:5}.modal{width:min(440px,100%);background:#fff;border-radius:18px;padding:24px;box-shadow:0 25px 90px #21163145}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:22px}.modal-head h2{font-size:19px;margin:6px 0 0}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.hint{font-size:10px;color:var(--muted);line-height:1.5;margin:0}.invite-code{font:800 28px ui-monospace,monospace;letter-spacing:4px;text-align:center;color:var(--purple);background:#f5f0fb;border:1px dashed #cfc0e3;padding:18px;border-radius:12px;margin-bottom:13px}.toast{position:fixed;right:24px;bottom:24px;display:flex;align-items:center;gap:8px;padding:12px 16px;border-radius:11px;background:#2f2446;color:#fff;font-size:11px;z-index:8;box-shadow:0 10px 30px #21163135}.toast svg{width:16px;color:#e9a0a8}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1000px){.sidebar{width:210px}.main{margin-left:210px}.content{padding:25px}.metrics{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.sidebar{position:static;width:auto;height:auto;padding:12px;display:block;border-right:0;border-bottom:1px solid var(--line)}.brand{padding:0 4px 12px}.brand img{width:32px;height:32px}.school-label,.sidebar-bottom{display:none}.sidebar nav{display:flex;gap:5px}.sidebar nav button{flex:1;justify-content:center;padding:10px 5px;font-size:10px}.sidebar nav button i{display:none}.main{margin:0}.topbar{height:54px;padding:0 16px}.content{padding:20px 14px}.page-title{align-items:flex-start;flex-direction:column}.page-title h1{font-size:25px}.metrics{gap:8px}.metric{padding:12px}.graph-panel{padding:14px}.section-head{align-items:flex-start;flex-direction:column}.teacher-grid{grid-template-columns:1fr}.user-row{flex-wrap:wrap}.user-row .person-info{min-width:calc(100% - 65px)}.role-tag{margin-left:45px}.chat-layout{grid-template-columns:1fr}.chat-list{border-right:0;border-bottom:1px solid var(--line);max-height:220px;overflow:auto}.main footer{padding:0 14px 18px}.login-card{padding:26px}.login-logo{width:90px;height:90px}}.unassigned{margin-top:28px;padding-top:20px;border-top:1px solid var(--line)}.unassigned .section-head{margin-bottom:12px}.unassigned .section-head h2{font-size:14px}.unassigned-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:9px}.unassigned-grid .person-card{flex-wrap:wrap;background:snow;border-color:#f2e5e7}:root{font-size:15px}.sidebar{width:280px;padding:28px 20px}.main{margin-left:280px}.brand{gap:13px;padding:0 9px 38px;font-size:27px}.brand img{width:60px;height:60px}.sidebar nav button,.logout{font-size:15px;padding:14px}.sidebar nav button svg,.logout svg{width:20px;height:20px}.login-card{width:min(460px,100%);padding:42px}.login-logo{width:150px;height:150px;margin-bottom:25px}.login-card h1{font-size:36px}.muted{font-size:15px}.stack label{font-size:13px}.stack input,.stack select{height:46px;font-size:14px}.topbar{padding:0 40px}.topbar>div{font-size:14px}.content{max-width:1680px;padding:38px 42px}.page-title h1{font-size:35px}.page-title p,.section-head p{font-size:14px}.btn{font-size:13px;padding:12px 16px}.btn.small{font-size:12px}.eyebrow,.school-label{font-size:11px;letter-spacing:1.6px}.metrics{gap:11px;margin-bottom:16px}.metric{min-height:64px;padding:8px 12px;grid-template-columns:25px 1fr;column-gap:8px;border-radius:12px}.metric svg{width:17px}.metric span{font-size:10px}.metric b{font-size:18px;line-height:1.1}.graph-panel{padding:30px;border-radius:20px}.section-head{margin-bottom:31px}.section-head h2{font-size:20px}.legend{font-size:12px}.root-node{width:290px;padding:16px;gap:13px;border-radius:16px}.root-node img{width:55px;height:55px}.root-node b{font-size:15px}.root-node small{font-size:12px}.teacher-grid{grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:26px}.person-card{padding:16px;gap:12px;border-radius:14px}.teacher-card{min-height:82px}.person-main{gap:12px}.avatar{width:44px;height:44px;border-radius:12px}.avatar svg{width:21px;height:21px}.person-info b{font-size:14px}.person-info small{font-size:11px}.person-actions button,.icon-btn{width:36px;height:36px}.person-actions svg,.icon-btn svg{width:17px;height:17px}.student-list{gap:9px;margin:14px 0 0 27px;padding-left:17px}.student-card{padding:13px 14px}.empty-students{padding:16px;font-size:12px}.add-student{margin:13px 0 0 43px;font-size:12px}.toolbar,.user-row .person-info b{font-size:13px}.user-row .person-info small,.role-tag{font-size:11px}.chat-item b,.chat-head b,.message b{font-size:13px}.chat-item small,.chat-head small,.message p{font-size:12px}.messages{gap:13px;padding:22px}.message{padding:13px 15px}@media(max-width:1000px){.sidebar{width:230px}.main{margin-left:230px}.content{padding:28px 24px}.brand img{width:52px;height:52px}}@media(max-width:700px){.sidebar{width:auto;padding:14px}.brand{font-size:22px;padding-bottom:14px}.brand img{width:40px;height:40px}.sidebar nav button{font-size:11px}.main{margin:0}.content{padding:23px 15px}.page-title h1{font-size:29px}.graph-panel{padding:17px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.metric{min-height:60px}.root-node{max-width:100%}}.telegram-connected{color:#16834a;font-weight:700}.user-row .avatar.student{background:#e8f7ee;color:#16834a}.user-row .avatar.teacher{background:#eee8f8;color:var(--purple)}.user-row .role-tag.student{background:#e8f7ee;color:#16834a}.user-row .role-tag.teacher{background:#eee8f8;color:var(--purple)}:root{color-scheme:light;--purple: #573e99;--purple2: #7654bd;--red: #e72530;--ink: #29223f;--muted: #817b91;--line: #e9e3f2;--surface: #ffffff;--canvas: #f7f5fb;--lavender: #c299ff;--lavender-soft: #f0e9fb;--purple-glow: rgba(194, 153, 255, .34);--red-glow: rgba(231, 37, 48, .2);--amber: #e4a12f;--amber-dark: #986116;--amber-soft: #fff2d8}body{background:var(--canvas);color:var(--ink)}.login-screen{background:radial-gradient(ellipse at 12% 14%,rgba(194,153,255,.23),transparent 35%),radial-gradient(ellipse at 88% 82%,rgba(231,37,48,.1),transparent 32%),linear-gradient(135deg,#f8f6fc,#f2eef9 52%,#faf6f7)}.login-card{background:#fffffff0;border:1px solid #e7def4;border-radius:24px;box-shadow:0 22px 70px #37235f1f,0 0 28px #c299ff1f}.login-logo{filter:drop-shadow(0 5px 14px rgba(87,62,153,.16))}.brand{color:var(--purple)}.brand span span{color:var(--red)}.school-label,.eyebrow{color:#8977a8}.sidebar{background:#fff;border-right:1px solid var(--line);box-shadow:8px 0 28px #2f1f5409}.sidebar nav button,.logout{color:#706982;border-radius:12px;transition:background .18s ease,color .18s ease,box-shadow .18s ease,transform .18s ease}.sidebar nav button:hover,.logout:hover{background:#f6f1fc;color:var(--purple)}.sidebar nav button.active{color:#fff;background:linear-gradient(105deg,#573e99,#7856bd);box-shadow:0 5px 18px #573e993d,0 0 16px #c299ff33}.sidebar nav button.active i{color:#fff;background:#ffffff2e}.topbar{background:#fffffff0;border-bottom-color:var(--line);box-shadow:0 4px 18px #2f1f5406}.topbar>div{color:#9a91aa}.topbar b,.content{color:var(--ink)}.page-title h1{color:#29223f;letter-spacing:-.9px}.page-title p,.section-head p{color:var(--muted)}.btn{background:#fff;color:var(--ink);border:1px solid #e5deef;border-radius:11px;transition:transform .16s ease,box-shadow .16s ease,background .16s ease,border-color .16s ease}.btn:hover{transform:translateY(-1px);background:#faf7ff;border-color:#cdb9eb;box-shadow:0 5px 16px #573e991a}.btn:active{transform:translateY(0)}.btn.primary{color:#fff;border-color:transparent;background:linear-gradient(105deg,#573e99,#7856bd);box-shadow:0 6px 18px #573e993b,0 0 15px #c299ff29}.btn.primary:hover{background:linear-gradient(105deg,#493281,#6949aa);box-shadow:0 8px 22px #573e994d,0 0 20px #c299ff3d}.btn.ghost{background:#f7f4fb}.btn.outline{color:var(--purple);border-color:#d8c9ed;background:#faf7ff}.btn.outline:hover{background:#f0e9fb}.metrics{gap:12px}.metric{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 5px 20px #2f1f5409}.metric svg{color:var(--purple)}.metric:nth-child(2) svg{color:var(--amber)}.metric:nth-child(3) svg{color:var(--red)}.metric:nth-child(4) svg{color:var(--lavender)}.metric span{color:var(--muted)}.metric b{color:var(--ink)}.graph-panel,.user-list,.chat-layout{background:#fff;border-color:var(--line);box-shadow:0 8px 28px #2f1f540a}.graph-panel{border-radius:20px}.section-head h2{color:var(--ink)}.legend{color:var(--muted)}.teacher-dot{background:#7654bd;box-shadow:0 0 9px #7654bd73}.student-dot{background:var(--amber);box-shadow:0 0 9px #e4a12f73}.root-node{background:linear-gradient(130deg,#f5efff,#fff7f7);border:1px solid #dfd1f3;border-radius:15px;box-shadow:0 0 20px #c299ff21}.person-card{background:#fff;border-color:#e9e3f2;border-radius:13px;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.person-card:hover{border-color:#cdb9eb;box-shadow:0 5px 17px #573e9914;transform:translateY(-1px)}.teacher-card{background:linear-gradient(115deg,#faf7ff,#fff);border-color:#dfd2f0;box-shadow:0 0 0 1px #c299ff12}.teacher-card:hover{box-shadow:0 0 18px #c299ff3b}.teacher-card .avatar,.avatar.teacher,.teacher-avatar{background:#eee6fb;color:#6847a8}.student-card{background:linear-gradient(115deg,#fffaf0,#fff);border-color:#f0dfb9}.student-card:hover{border-color:#e9bd69;box-shadow:0 0 16px #e4a12f2b}.student-card .avatar,.avatar.student,.student-avatar{background:#fff0ce;color:#a76d16}.student-list{border-left-color:#ecd8ae}.empty-students{border-color:#eee2c9;background:#fffcf5;color:#95866b;border-radius:11px}.add-student{color:var(--amber-dark);border-radius:9px}.add-student:hover{background:var(--amber-soft)}.unassigned{border-top-color:#eee2c9}.unassigned-grid .person-card{background:#fffbf2;border-color:#f0dfb9}.toolbar{color:var(--muted)}.search{background:#fff;border-color:#e5deef;border-radius:11px}.search:focus-within{border-color:#a98bd8;box-shadow:0 0 0 3px #7654bd1f,0 0 14px #c299ff24}.search svg{color:#998eaa}.search input{background:transparent;color:var(--ink)}.search input::placeholder{color:#aaa3b4}.user-row{border-bottom-color:#f0ecf5;transition:background .16s ease}.user-row:hover{background:#fbf9fe}.user-row .avatar.student,.user-row .avatar.student-avatar{background:#fff0ce;color:#a76d16}.user-row .avatar.teacher,.user-row .avatar.teacher-avatar{background:#eee6fb;color:#6847a8}.role-tag{background:#eee6fb;color:#6847a8;border-radius:999px;padding:6px 10px}.role-tag.student{background:#fff0ce;color:#986114}.role-tag.teacher{background:#eee6fb;color:#6847a8}.telegram-connected{color:#21844f}.person-actions button,.icon-btn{color:#898198;border-radius:9px;transition:background .16s ease,color .16s ease,box-shadow .16s ease}.person-actions button:hover,.icon-btn:hover{background:#f1eafb;color:var(--purple);box-shadow:0 0 10px #c299ff2e}.person-actions .danger-icon:hover,.danger-icon:hover{background:#fff0f1;color:var(--red);box-shadow:0 0 10px var(--red-glow)}.chat-layout{border-radius:18px}.chat-list{border-right-color:var(--line)}.chat-item{background:transparent;border-radius:11px}.chat-item.selected,.chat-item:hover{background:#f3eefb}.chat-item span{color:var(--purple)}.chat-head{border-bottom-color:var(--line)}.message{background:#f2edf9;border-radius:12px 12px 12px 4px}.message.teacher{background:#eee6fb;border:1px solid #e3d6f5;border-radius:12px 12px 4px}.message p{color:#393149}.stack label{color:#6d657d}.stack input,.stack select{background:#fff;border-color:#e5deef;border-radius:10px;color:var(--ink)}.stack input:focus,.stack select:focus{border-color:#a98bd8;box-shadow:0 0 0 3px #7654bd1f,0 0 12px #c299ff21}.alert{background:#fff0f1;color:#b3222d;border-color:#f5cfd2;border-radius:10px}.modal{background:#fff;border:1px solid #e6dcf2;border-radius:19px;box-shadow:0 24px 80px #1f143847,0 0 22px #c299ff1f}.overlay{background:#2319379e}.invite-code{color:var(--purple);background:#f3edfc;border-color:#cdb9eb;box-shadow:inset 0 0 18px #c299ff1f}.hint{color:var(--muted)}.toast{background:linear-gradient(105deg,#493281,#573e99);box-shadow:0 10px 30px #311f5847,0 0 18px #c299ff26;border-radius:12px}.toast svg{color:#f4a4aa}.empty-state{color:var(--muted)}.empty-state>svg{color:var(--purple2)}.empty-state b{color:var(--ink)}.main footer{color:#a49caf}.main footer span{color:var(--red)}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(194,153,255,.58);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.btn.disconnect{color:#a34b43;border-color:#f0d2cd;background:#fff8f6}.btn.disconnect:hover{color:#923b35;border-color:#e7b6ad;background:#fff0ed;box-shadow:0 0 13px #e725301a}.chat-media-image{display:block;max-width:min(100%,360px);max-height:360px;object-fit:contain;border-radius:10px;margin-top:9px}.chat-media-player{display:block;width:min(100%,340px);margin-top:9px}.chat-media-video{display:block;width:min(100%,340px);max-height:420px;background:#17131f;border-radius:12px;margin-top:9px}.chat-media-download{display:inline-block;margin-top:9px;color:var(--purple);font-weight:650;overflow-wrap:anywhere}.chat-media-status{display:block;margin-top:8px;color:#8a6b3c}.graph-panel{background-color:#fff;background-image:radial-gradient(ellipse at 10% 0%,rgba(194,153,255,.19),transparent 38%),radial-gradient(ellipse at 100% 100%,rgba(231,37,48,.055),transparent 34%),radial-gradient(circle,rgba(118,84,189,.075) .8px,transparent 1px);background-size:auto,auto,20px 20px}.graph-panel .student-list{border-left:0}.graph-panel{position:relative;overflow:hidden;padding:27px;border:1px solid #e8e0f2;background:radial-gradient(ellipse at 4% 2%,rgba(194,153,255,.22),transparent 34%),radial-gradient(ellipse at 96% 98%,rgba(255,220,176,.23),transparent 31%),radial-gradient(ellipse at 86% 0%,rgba(231,37,48,.045),transparent 25%),linear-gradient(145deg,#fff,#fdfbff 54%,#fffdfa);box-shadow:0 12px 34px #422d690e,inset 0 1px #fffffff2}.graph-panel .section-head{align-items:center;margin-bottom:23px}.graph-panel .section-head h2{font-size:21px;letter-spacing:-.55px}.graph-panel .section-head p{margin-top:4px;color:#89819a}.graph-panel .legend{padding:8px 11px;border:1px solid rgba(226,218,239,.9);border-radius:999px;background:#ffffffc2}.graph-panel .legend span{width:9px;height:9px}.graph-panel .root-node{position:relative;overflow:hidden;width:min(330px,100%);min-height:82px;margin:0 auto 24px;padding:14px 17px;border:1px solid #ded2f0;border-radius:17px;background:linear-gradient(112deg,#f3ecfff7,#fffffffa 62%,#fff7f6f5);box-shadow:0 8px 22px #563d8b17,inset 0 1px #fffffff2}.graph-panel .root-node:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:linear-gradient(180deg,#8b6bc7,#d1b4ee 58%,#e8a5a8)}.graph-panel .root-node img{width:48px;height:48px;padding:3px;border-radius:12px;background:#fffc;box-shadow:0 3px 10px #573e9917}.graph-panel .root-node b{font-size:14px;letter-spacing:-.2px}.graph-panel .root-node small{color:#89809b}.graph-panel .teacher-grid{grid-template-columns:repeat(auto-fit,minmax(290px,1fr));align-items:stretch;gap:17px}.graph-panel .teacher-branch{min-width:0;padding:13px;border:1px solid #e9e2f2;border-radius:17px;background:linear-gradient(155deg,#faf7fff5,#fffffff7 54%,#fffcf8f0);box-shadow:0 5px 18px #432f690b,inset 0 1px #fffffff2;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.graph-panel .teacher-branch:hover{border-color:#d8c9ed;box-shadow:0 9px 24px #573e9916;transform:translateY(-1px)}.graph-panel .teacher-card{min-height:76px;padding:12px 13px;border:1px solid #e3d8f1;border-radius:13px;background:linear-gradient(110deg,#f0e9fb,#fff 78%);box-shadow:0 3px 10px #573e990b}.graph-panel .teacher-card .avatar{width:42px;height:42px;border-radius:12px;background:#e7dcf7;color:#62459b}.graph-panel .teacher-card .person-info b,.graph-panel .student-card .person-info b{font-size:13px}.graph-panel .teacher-card .person-info small,.graph-panel .student-card .person-info small{margin-top:5px;font-size:10px}.graph-panel .student-list{display:grid;gap:8px;margin:11px 0 0;padding:0;border:0}.graph-panel .student-card{min-height:61px;padding:9px 11px;border:1px solid #f0e5ce;border-radius:12px;background:linear-gradient(105deg,#fff8e9,#fff 78%);box-shadow:0 2px 8px #9b712b09}.graph-panel .student-card .avatar{width:37px;height:37px;border-radius:11px;background:#fff0ce;color:#a76d16}.graph-panel .empty-students{margin-top:11px;padding:17px 12px;border:1px dashed #e8dcbf;border-radius:12px;background:#fffbf1d1;color:#9b896a}.graph-panel .add-student{align-self:flex-start;margin:11px 0 0 3px;padding:8px 10px;border:1px solid #e5daf2;border-radius:9px;background:#ffffffc2;color:#7052a9;transition:background .18s ease,border-color .18s ease,transform .18s ease}.graph-panel .add-student:hover{border-color:#cdb9eb;background:#f4effb;transform:translateY(-1px)}.graph-panel .unassigned{margin-top:23px;padding-top:19px;border-top:1px solid #e9e1f1}.graph-panel .unassigned .section-head{margin-bottom:11px}@media(max-width:700px){.graph-panel{padding:17px}.graph-panel .section-head{margin-bottom:17px}.graph-panel .legend{border-radius:11px}.graph-panel .teacher-grid{grid-template-columns:1fr;gap:13px}}html,body,#root{width:100%;min-height:100%}body{overflow-x:hidden}.shell,.main,.content{min-width:0;max-width:100%}img,video,audio{max-width:100%}@media(max-width:760px){.sidebar{position:sticky;inset:auto;z-index:30;display:block;width:100%;height:auto;padding:10px 12px 9px;border-right:0;border-bottom:1px solid var(--line);box-shadow:0 5px 18px #2f1f5412}.brand{padding:0 42px 9px 2px;font-size:19px;gap:8px}.brand img{width:32px;height:32px}.school-label{display:none}.sidebar nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.sidebar nav button{min-width:0;justify-content:center;gap:6px;padding:10px 5px;font-size:11px;white-space:nowrap}.sidebar nav button svg{width:16px;height:16px;flex:none}.sidebar nav button i{display:none}.sidebar-bottom{display:block;position:absolute;top:8px;right:10px;margin:0}.logout{width:34px;height:34px;justify-content:center;padding:7px;margin:0;font-size:0}.logout svg{width:17px;height:17px}.main{margin:0;width:100%;min-width:0}.topbar{height:48px;padding:0 14px}.topbar>div{min-width:0;gap:5px;font-size:11px}.topbar>div span{display:none}.content{width:100%;padding:18px 12px 24px}.page-title{align-items:stretch;flex-direction:column;gap:12px;margin-bottom:17px}.page-title>div{min-width:0}.page-title h1{font-size:clamp(23px,6vw,28px);line-height:1.15;overflow-wrap:anywhere}.page-title p{font-size:12px;line-height:1.5}.page-title>.btn{width:100%;min-height:42px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.metric{min-width:0;padding:11px 9px;grid-template-columns:25px minmax(0,1fr);column-gap:7px}.metric span{overflow-wrap:anywhere}.metric b{font-size:19px}.graph-panel,.user-list,.chat-layout{min-width:0;width:100%;padding:13px;border-radius:15px}.graph-panel{overflow:hidden}.graph-panel .section-head{align-items:flex-start;flex-direction:column;gap:10px}.graph-panel .legend{max-width:100%;flex-wrap:wrap}.graph-panel .teacher-grid{grid-template-columns:minmax(0,1fr);gap:11px}.graph-panel .teacher-branch{min-width:0;padding:10px}.graph-panel .person-card{min-width:0}.graph-panel .person-main{min-width:0;flex:1}.graph-panel .person-info{min-width:0}.graph-panel .person-info b{overflow-wrap:anywhere;white-space:normal}.graph-panel .person-actions{flex:none}.graph-panel .root-node{width:100%;max-width:100%}.unassigned-grid{grid-template-columns:minmax(0,1fr)}.toolbar{align-items:stretch;flex-direction:column;gap:9px}.search{width:100%;min-width:0}.search input{min-width:0;width:100%}.user-list{padding:5px 12px}.user-row{display:flex;flex-wrap:wrap;align-items:center;gap:9px;min-width:0;padding:13px 0}.user-row>.avatar{flex:0 0 36px}.user-row>.person-info{flex:1 1 calc(100% - 50px);min-width:0}.user-row .person-info b{white-space:normal;overflow-wrap:anywhere;line-height:1.35}.user-row .person-info small{white-space:normal;overflow-wrap:anywhere;line-height:1.5}.user-row>.role-tag{margin:0 0 0 45px}.user-row>.btn{flex:1 1 auto;min-height:38px;padding:8px 9px;white-space:normal}.user-row>.icon-btn{flex:0 0 38px}.chat-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}.chat-list{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;max-height:220px;min-width:0;overflow-y:auto;overflow-x:hidden;border-right:0;border-bottom:1px solid var(--line);padding:0 0 10px}.chat-item{min-width:0;width:100%;padding:11px;text-align:left}.chat-item b,.chat-item small{display:block;max-width:100%;overflow-wrap:anywhere;white-space:normal}.chat-detail{min-width:0;width:100%}.chat-head{min-width:0;padding:12px 2px}.chat-head b{overflow-wrap:anywhere}.messages{min-width:0;padding:12px 2px}.message{max-width:100%;min-width:0;overflow-wrap:anywhere}.message p{overflow-wrap:anywhere;white-space:pre-wrap}.chat-media-video,.chat-media-player{width:100%;max-width:100%}.overlay{align-items:flex-end;padding:10px}.modal{width:100%;max-width:100%;max-height:calc(100dvh - 20px);overflow-y:auto;padding:18px;border-radius:18px}.modal-head{gap:10px}.modal-head h2{font-size:20px;overflow-wrap:anywhere}.modal-actions{flex-wrap:wrap}.modal-actions .btn{flex:1 1 120px}.stack input,.stack select{width:100%;min-width:0}.main footer{padding:0 12px 16px}}@media(max-width:380px){.sidebar nav button{font-size:10px;gap:4px}.sidebar nav button svg{width:14px;height:14px}.content{padding-right:9px;padding-left:9px}.graph-panel,.user-list,.chat-layout{padding:10px}.graph-panel .teacher-branch{padding:8px}.graph-panel .person-card{padding:8px;gap:5px}.graph-panel .avatar{width:32px;height:32px}.graph-panel .person-actions button{width:28px;height:28px}.metric{grid-template-columns:21px minmax(0,1fr);padding:9px 7px}.metric svg{width:17px}}@media(max-width:760px){button,.btn,.sidebar nav button,.logout,.person-actions button,.icon-btn,.add-student{-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn:not(.primary):not(.disconnect){background:#f0eef3;border-color:#e2dce9;color:#393149}.btn.ghost{background:#eae7ef;border-color:#ded8e6}.btn.outline{background:#f1edf7;border-color:#d8c9ed;color:var(--purple)}.sidebar nav button{background:#f0eef3;border:1px solid #e4deea;color:#625b70;border-radius:11px}.sidebar nav button.active{background:linear-gradient(105deg,#573e99,#7856bd);border-color:transparent;color:#fff}.person-actions button,.icon-btn{background:#f0eef3;border:1px solid #e4deea;color:#716981}.add-student{background:#f3eff8;border-color:#e2d8ef}}@media screen and (max-width:900px){button:not(.primary):not(.disconnect):not(.danger-icon),.btn:not(.primary):not(.disconnect),.sidebar nav button,.person-actions button:not(.danger-icon),.icon-btn:not(.danger-icon),.add-student,.chat-item,.alert-row button,.modal-head button{-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;background-color:#f0eef3!important;border:1px solid #e2dce9!important;color:#393149!important;box-shadow:none!important}.btn.ghost{background-color:#eae7ef!important}.btn.outline,.add-student{background-color:#f1edf7!important;color:var(--purple)!important}.sidebar nav button.active{background:linear-gradient(105deg,#573e99,#7856bd)!important;border-color:transparent!important;color:#fff!important}.chat-item.selected{background-color:#eae4f4!important;color:var(--purple)!important}.btn.primary{background:linear-gradient(105deg,#573e99,#7856bd)!important;border-color:transparent!important;color:#fff!important}.btn.disconnect{background-color:#fff0f1!important;border-color:#f2d5d9!important;color:#b82c3b!important}}@media screen and (max-width:900px){.sidebar nav button.active:not(.primary):not(.disconnect):not(.danger-icon){background:linear-gradient(105deg,#573e99,#7856bd)!important;border-color:transparent!important;color:#fff!important}.btn.ghost:not(.primary):not(.disconnect):not(.danger-icon){background-color:#eae7ef!important}.btn.outline:not(.primary):not(.disconnect):not(.danger-icon),button.add-student:not(.primary):not(.disconnect):not(.danger-icon){background-color:#f1edf7!important;color:var(--purple)!important}button.chat-item.selected:not(.primary):not(.disconnect):not(.danger-icon){background-color:#eae4f4!important;color:var(--purple)!important}}@media(hover:none),(pointer:coarse){button,button.btn,.sidebar nav button,.logout,.person-actions button,.icon-btn,.add-student,.chat-item,.alert-row button,.modal-head button{-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;background:#f0eef3!important;border:1px solid #e2dce9!important;color:#393149!important;box-shadow:0 2px 5px #29223f0f!important}.sidebar nav button.active,.btn.primary{background:linear-gradient(105deg,#573e99,#7856bd)!important;border-color:transparent!important;color:#fff!important;box-shadow:0 4px 12px #573e9933!important}.btn.ghost{background:#eae7ef!important;border-color:#ded8e6!important}.btn.outline,.add-student{background:#f1edf7!important;border-color:#d8c9ed!important;color:#573e99!important}.btn.disconnect,.person-actions button.danger-icon,.icon-btn.danger-icon{background:#fff0f1!important;border-color:#f2d5d9!important;color:#b82c3b!important}.chat-item.selected{background:#eae4f4!important;border-color:#d8c9ed!important;color:#573e99!important}button:disabled{opacity:.5!important}}.topbar-user{margin-left:12px;color:var(--purple);font-weight:700;font-size:11px}.chat-layout{display:grid;grid-template-columns:minmax(250px,330px) minmax(0,1fr);gap:0;min-height:620px;padding:0;overflow:hidden}.chat-list{border-right:1px solid var(--line);display:grid;align-content:start;gap:7px;max-height:75vh;overflow:auto;padding:14px}.chat-item{width:100%;display:grid;gap:6px;text-align:left;padding:14px;border:1px solid transparent;border-radius:12px;background:#faf9fc;color:var(--ink)}.chat-item:hover{background:#f5f1fa}.chat-item.selected{background:#f0ebf9;border-color:#ded2ef;color:var(--purple)}.chat-item b{font-size:13px}.chat-item small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-item span{color:#a49bad;font-size:10px}.chat-detail{min-width:0;display:flex;flex-direction:column}.chat-head{position:sticky;top:0;display:flex;justify-content:space-between;align-items:center;gap:12px;background:#fff;border-bottom:1px solid var(--line);padding:17px 20px;z-index:1}.chat-head b,.chat-head small{display:block}.chat-head b{font-size:15px}.chat-head small{color:var(--muted);font-size:11px;margin-top:4px}.messages{flex:1;min-height:350px;max-height:65vh;overflow:auto;display:flex;flex-direction:column;gap:12px;padding:18px 20px;background:#fcfbfd}.message{max-width:min(78%,720px);padding:12px 14px;border-radius:14px;background:#fff;border:1px solid var(--line);box-shadow:0 2px 8px #29223f09}.message.student{align-self:flex-start;border-top-left-radius:5px}.message.teacher{align-self:flex-end;background:#f2eef9;border-color:#e4daf2;border-top-right-radius:5px}.message.admin{align-self:center;max-width:90%;background:#fff8e8;border-color:#f0dfb7}.chat-composer{border-top:1px solid var(--line);padding:14px 18px;display:grid;gap:10px;background:#fff}.chat-composer textarea{display:block;width:100%;min-width:0;max-width:100%;box-sizing:border-box;resize:none;min-height:58px;max-height:120px;overflow-x:hidden;overflow-y:auto;border:1px solid var(--line);border-radius:12px;padding:12px;outline:none;color:var(--ink);background:#fcfbfd}.chat-composer textarea:focus{border-color:#b6a3d7;box-shadow:0 0 0 3px #59439a12}.composer-footer{display:flex;justify-content:space-between;align-items:center;gap:12px}.composer-footer small{color:var(--muted);font-size:10px;line-height:1.4}@media(max-width:760px){.topbar-user{display:none}.chat-layout{grid-template-columns:minmax(0,1fr);min-height:0}.chat-list{max-height:190px;border-right:0;border-bottom:1px solid var(--line);padding:8px}.messages{min-height:300px;max-height:55vh;padding:12px}.chat-head,.chat-composer{padding:12px}.composer-footer{align-items:stretch;flex-direction:column}.composer-footer .btn{width:100%}.message{max-width:94%}}.chat-list-tools{display:grid;gap:8px;padding-bottom:8px;border-bottom:1px solid var(--line)}.chat-list-tools input,.chat-list-tools select{width:100%;min-width:0;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);padding:10px 11px;font-size:12px;outline:none}.chat-list-tools input:focus,.chat-list-tools select:focus{border-color:#b6a3d7;box-shadow:0 0 0 3px #59439a12}.chat-composer .composer-footer{display:grid;gap:10px}.composer-tools{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.attach-control{display:inline-flex;align-items:center;gap:7px;width:fit-content;padding:9px 12px;border:1px solid var(--line);border-radius:9px;color:var(--purple);background:#f8f5fc;font-size:11px;font-weight:800;cursor:pointer}.attach-control input{display:none}.selected-file{display:inline-flex;align-items:center;gap:6px;max-width:100%;color:#625b70;background:#f2eff6;border-radius:8px;padding:7px 9px;font-size:11px;overflow-wrap:anywhere}.selected-file button{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:6px;background:transparent;padding:3px;color:#766d84}.composer-send{display:flex;justify-content:space-between;align-items:center;gap:12px}.message-time{display:block;color:#a49bad;font-size:9px;font-weight:500;margin-top:3px}@media(max-width:760px){.chat-list-tools{grid-template-columns:minmax(0,1fr) minmax(110px,.8fr);gap:6px}.chat-list-tools input,.chat-list-tools select{font-size:11px;padding:9px 7px}.composer-send{align-items:stretch;flex-direction:column}.composer-send .btn{width:100%}}.teacher-readonly-graph{background:#fff;border:1px solid var(--line);border-radius:18px;padding:24px}.teacher-graph-root{max-width:960px;margin:20px auto}.teacher-graph-card{display:flex;align-items:center;gap:13px;min-width:0;padding:16px;border:1px solid #ded2ef;background:linear-gradient(110deg,#f8f5fc,#fff);border-radius:14px;box-shadow:0 4px 14px #29223f09}.teacher-graph-card .avatar{flex:0 0 44px;width:44px;height:44px}.teacher-graph-card b,.teacher-graph-card small{display:block}.teacher-graph-card b{font-size:14px}.teacher-graph-card small{margin-top:4px;color:var(--muted);font-size:11px}.teacher-graph-card .readonly-tag{margin-left:auto;flex:none;border-radius:20px;padding:6px 9px;color:#75658f;background:#f1edf7;font-size:10px;font-weight:800}.teacher-graph-connector{width:1px;height:26px;margin:0 auto;background:#d8cde7}.teacher-graph-student-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.teacher-graph-card.student{border-color:#f0e5ce;background:linear-gradient(110deg,#fff8e9,#fff)}.teacher-graph-summary{display:flex;align-items:center;gap:9px;max-width:960px;margin:20px auto 0;color:var(--muted);font-size:12px}.teacher-graph-summary svg{color:var(--purple)}.teacher-graph-summary b{color:var(--ink);font-size:18px}@media(max-width:760px){.teacher-readonly-graph{padding:14px}.teacher-graph-card{padding:12px;gap:9px}.teacher-graph-card b{font-size:12px;overflow-wrap:anywhere}.teacher-graph-card .readonly-tag{font-size:9px;padding:5px 7px}.teacher-graph-student-grid{grid-template-columns:minmax(0,1fr);gap:8px}}.chat-head-tools{display:flex;align-items:center;justify-content:flex-end;gap:8px}.chat-head-tools select{max-width:155px;min-width:0;border:1px solid var(--line);border-radius:9px;padding:7px 9px;background:#faf9fc;color:var(--ink);font-size:10px}.message-delivery{display:block;margin-top:7px;color:#a49bad;font-size:9px}@media(max-width:760px){.sidebar nav{grid-template-columns:repeat(auto-fit,minmax(105px,1fr))}.chat-head-tools{flex-wrap:wrap}.chat-head-tools select{max-width:145px}}.message-delivery{color:#b45a37;line-height:1.4}.graph-panel .graph-actions{display:flex;justify-content:center;margin-top:22px;padding-top:18px;border-top:1px solid #eee8f4}@media(max-width:760px){.graph-panel .graph-actions .btn{width:100%;justify-content:center}}.chat-list-tools{display:grid;gap:11px;padding:13px 10px 12px;border-bottom:1px solid #eeeaf3}.chat-search-control{min-width:0;height:42px;display:flex;align-items:center;gap:9px;padding:0 11px;border:1px solid #e8e2f0;border-radius:12px;background:#fbfaff;color:#9186a5;transition:border-color .18s,box-shadow .18s,background .18s}.chat-search-control:focus-within{border-color:#b6a3d7;background:#fff;box-shadow:0 0 0 3px #59439a12}.chat-search-control>svg{flex:0 0 auto;color:#8877a7}.chat-search-control input{width:100%;min-width:0;height:100%;padding:0;border:0;outline:0;background:transparent;color:var(--ink);font-size:12px}.chat-search-control input::placeholder{color:#aaa2b5}.chat-search-control button{flex:0 0 24px;width:24px;height:24px;display:grid;place-items:center;border:0;border-radius:7px;background:#f0ebf7;color:#75658f}.chat-filter-segment{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:4px;padding:4px;border:1px solid #eee9f4;border-radius:12px;background:#f7f5fa}.chat-filter-segment button{min-width:0;min-height:36px;display:flex;align-items:center;justify-content:center;gap:6px;padding:7px 6px;border:1px solid transparent;border-radius:9px;background:transparent;color:#81798f;font-size:10px;font-weight:750;transition:background .18s,color .18s,box-shadow .18s}.chat-filter-segment button:hover{color:var(--purple);background:#fff9}.chat-filter-segment button.active{border-color:#e6def0;background:#fff;color:var(--purple);box-shadow:0 2px 7px #29223f0f}.chat-filter-segment button svg{flex:0 0 auto}.chat-filter-segment button span{min-width:18px;padding:2px 5px;border-radius:20px;background:#eee9f5;color:#74658e;font-size:9px;line-height:1.2;text-align:center}.chat-filter-segment button.active span{background:#eee7f8;color:var(--purple)}.chat-list-caption{padding:0 2px;color:#a29aaa;font-size:9px;letter-spacing:.15px}.password-actions{display:grid;gap:10px}.password-info{display:flex;align-items:flex-start;gap:9px;padding:11px 12px;border:1px solid #e9e1f2;border-radius:11px;background:#faf8fd;color:#7c718e;font-size:10px;line-height:1.5}.password-info svg{flex:0 0 auto;color:var(--purple);margin-top:1px}.password-info b{color:var(--purple);letter-spacing:1px}.credential-modal{width:min(470px,100%)}.credential-row{display:flex;align-items:center;gap:12px;padding:12px 13px;border:1px solid var(--line);border-radius:11px;background:#fbfaff}.credential-row span,.credential-password span{min-width:48px;color:var(--muted);font-size:10px;font-weight:700}.credential-row b{min-width:0;flex:1;overflow-wrap:anywhere;color:var(--ink);font-size:13px}.credential-password{display:grid;gap:9px;margin:10px 0 13px;padding:15px;border:1px dashed #cfc0e3;border-radius:12px;background:#f5f0fb}.credential-password b{color:var(--purple);font:800 27px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:3px;text-align:center}@media(max-width:760px){.chat-list-tools{grid-template-columns:minmax(0,1fr);padding:10px 8px}.chat-filter-segment button{font-size:9px;gap:4px}.credential-password b{font-size:24px}}.topbar-actions{display:flex;align-items:center;gap:8px}.theme-toggle{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:10px;background:#faf9fc;color:var(--purple);transition:background .18s,border-color .18s,transform .18s}.theme-toggle:hover{background:#f0ebf9;border-color:#dcd2ed;transform:translateY(-1px)}.theme-toggle svg{width:17px;height:17px}.login-card{position:relative}.login-theme-toggle{position:absolute;top:15px;right:15px}.timezone-control{min-width:0;display:grid;gap:5px}.timezone-control>span{padding-left:2px;color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.35px}.timezone-control select{width:100%;min-width:0;height:38px;padding:0 10px;border:1px solid var(--line);border-radius:10px;outline:none;background:#fff;color:var(--ink);font-size:11px}.timezone-control select:focus{border-color:#a99bcc;box-shadow:0 0 0 3px #59439a12}@media(max-width:760px){.topbar-actions{gap:5px}.theme-toggle{width:33px;height:33px;flex:0 0 33px}.timezone-control select{height:36px}}:root[data-theme=dark-soft]{color-scheme:dark;color:#e4e8f0;background:#171b25;--purple: #aaa0d8;--purple2: #9185c4;--red: #d97883;--ink: #e4e8f0;--muted: #9ba6b8;--line: #343d4d}:root[data-theme=dark-soft] body{background:#171b25!important;color:#e4e8f0!important}:root[data-theme=dark-soft] .login-screen{background:radial-gradient(circle at 18% 18%,#3b2e46 0,transparent 34%),radial-gradient(circle at 86% 84%,#29374b 0,transparent 38%),#171b25!important}:root[data-theme=dark-soft] .login-card,:root[data-theme=dark-soft] .sidebar,:root[data-theme=dark-soft] .topbar,:root[data-theme=dark-soft] .graph-panel,:root[data-theme=dark-soft] .user-list,:root[data-theme=dark-soft] .chat-layout,:root[data-theme=dark-soft] .teacher-readonly-graph,:root[data-theme=dark-soft] .metric,:root[data-theme=dark-soft] .chat-head,:root[data-theme=dark-soft] .chat-composer,:root[data-theme=dark-soft] .credential-row,:root[data-theme=dark-soft] .modal{background:#202633!important;color:#e4e8f0!important;border-color:#343d4d!important;box-shadow:0 12px 35px #00000029}:root[data-theme=dark-soft] .main,:root[data-theme=dark-soft] .shell{background:#171b25!important}:root[data-theme=dark-soft] .school-label,:root[data-theme=dark-soft] .eyebrow,:root[data-theme=dark-soft] .muted,:root[data-theme=dark-soft] .page-title p,:root[data-theme=dark-soft] .section-head p,:root[data-theme=dark-soft] .person-info small,:root[data-theme=dark-soft] .chat-head small,:root[data-theme=dark-soft] .chat-item small,:root[data-theme=dark-soft] .chat-item span,:root[data-theme=dark-soft] .chat-list-caption,:root[data-theme=dark-soft] .timezone-control>span,:root[data-theme=dark-soft] .composer-footer small,:root[data-theme=dark-soft] .message-time,:root[data-theme=dark-soft] .credential-row span,:root[data-theme=dark-soft] .credential-password span{color:#9ba6b8!important}:root[data-theme=dark-soft] .topbar>div,:root[data-theme=dark-soft] .topbar b,:root[data-theme=dark-soft] .page-title h1,:root[data-theme=dark-soft] .section-head h2,:root[data-theme=dark-soft] .person-info b,:root[data-theme=dark-soft] .metric b,:root[data-theme=dark-soft] .chat-head b,:root[data-theme=dark-soft] .chat-item b,:root[data-theme=dark-soft] .credential-row b,:root[data-theme=dark-soft] .empty-state b{color:#e4e8f0!important}:root[data-theme=dark-soft] .sidebar nav button,:root[data-theme=dark-soft] .logout{background:transparent!important;color:#aeb7c7!important}:root[data-theme=dark-soft] .sidebar nav button:hover,:root[data-theme=dark-soft] .logout:hover{background:#293142!important;color:#e4e8f0!important}:root[data-theme=dark-soft] .sidebar nav button.active{background:#353149!important;color:#c6bdf0!important;border-color:#49415f!important}:root[data-theme=dark-soft] .sidebar nav button i{background:#303849!important;color:#c5bddf!important}:root[data-theme=dark-soft] .chat-list{background:#1d2430!important;border-color:#343d4d!important}:root[data-theme=dark-soft] .chat-item,:root[data-theme=dark-soft] .person-card,:root[data-theme=dark-soft] .root-node,:root[data-theme=dark-soft] .teacher-graph-card{background:#252d3b!important;color:#e4e8f0!important;border-color:#394457!important}:root[data-theme=dark-soft] .chat-item:hover,:root[data-theme=dark-soft] .chat-item.selected{background:#343449!important;border-color:#514b6d!important;color:#d1c9f4!important}:root[data-theme=dark-soft] .messages{background:#191f2a!important}:root[data-theme=dark-soft] .message{background:#252d3a!important;color:#e4e8f0!important;border-color:#394456!important;box-shadow:0 3px 12px #00000024!important}:root[data-theme=dark-soft] .message.teacher{background:#302e43!important;border-color:#4c4667!important}:root[data-theme=dark-soft] .message.admin{background:#393445!important;border-color:#66546a!important}:root[data-theme=dark-soft] .message p{color:#e4e8f0!important}:root[data-theme=dark-soft] .chat-composer,:root[data-theme=dark-soft] .chat-head{background:#202633!important}:root[data-theme=dark-soft] .chat-composer textarea,:root[data-theme=dark-soft] input,:root[data-theme=dark-soft] select,:root[data-theme=dark-soft] textarea,:root[data-theme=dark-soft] .chat-search-control,:root[data-theme=dark-soft] .timezone-control select,:root[data-theme=dark-soft] .chat-head-tools select{background:#262f3d!important;color:#e4e8f0!important;border-color:#414c60!important}:root[data-theme=dark-soft] input::placeholder,:root[data-theme=dark-soft] textarea::placeholder,:root[data-theme=dark-soft] .chat-search-control input::placeholder{color:#8793a7!important}:root[data-theme=dark-soft] .chat-search-control:focus-within,:root[data-theme=dark-soft] .chat-composer textarea:focus,:root[data-theme=dark-soft] .timezone-control select:focus{background:#2b3545!important;border-color:#8579b7!important;box-shadow:0 0 0 3px #aaa0d821!important}:root[data-theme=dark-soft] .chat-list-tools,:root[data-theme=dark-soft] .chat-head,:root[data-theme=dark-soft] .chat-composer,:root[data-theme=dark-soft] .user-row{border-color:#343d4d!important}:root[data-theme=dark-soft] .chat-filter-segment{background:#1a202b!important;border-color:#343d4d!important}:root[data-theme=dark-soft] .chat-filter-segment button{color:#a4aec0!important}:root[data-theme=dark-soft] .chat-filter-segment button.active{background:#333149!important;border-color:#514b6d!important;color:#d1c9f4!important;box-shadow:none!important}:root[data-theme=dark-soft] .chat-filter-segment button span{background:#424057!important;color:#d1c9f4!important}:root[data-theme=dark-soft] .btn:not(.primary):not(.disconnect),:root[data-theme=dark-soft] .icon-btn,:root[data-theme=dark-soft] .person-actions button,:root[data-theme=dark-soft] .chat-list-tools button,:root[data-theme=dark-soft] .theme-toggle,:root[data-theme=dark-soft] .modal-head button,:root[data-theme=dark-soft] .attach-control,:root[data-theme=dark-soft] .selected-file{background:#2b3443!important;color:#c6cddd!important;border-color:#414c60!important}:root[data-theme=dark-soft] .btn.primary{background:#71679e!important;border-color:#8b80b8!important;color:#fff!important;box-shadow:0 5px 16px #0000002e!important}:root[data-theme=dark-soft] .btn.primary:hover{background:#8176b0!important}:root[data-theme=dark-soft] .btn.outline,:root[data-theme=dark-soft] .add-student{background:#353149!important;border-color:#514b6d!important;color:#c9c0ef!important}:root[data-theme=dark-soft] .btn.disconnect,:root[data-theme=dark-soft] .danger-icon{background:#402b36!important;border-color:#68414d!important;color:#e69aa4!important}:root[data-theme=dark-soft] .role-tag,:root[data-theme=dark-soft] .avatar,:root[data-theme=dark-soft] .teacher-graph-card .readonly-tag{background:#353149!important;color:#c6bdf0!important}:root[data-theme=dark-soft] .role-tag.student,:root[data-theme=dark-soft] .student-avatar,:root[data-theme=dark-soft] .avatar.student{background:#402b36!important;color:#e69aa4!important}:root[data-theme=dark-soft] .teacher-graph-card.student{background:#302d32!important;border-color:#51474a!important}:root[data-theme=dark-soft] .password-info,:root[data-theme=dark-soft] .credential-password,:root[data-theme=dark-soft] .invite-code{background:#2b2d3e!important;border-color:#4b4662!important;color:#c6cddd!important}:root[data-theme=dark-soft] .credential-password b,:root[data-theme=dark-soft] .password-info b{color:#c9c0ef!important}:root[data-theme=dark-soft] .alert{background:#3b2b35!important;border-color:#65404b!important;color:#edabb4!important}:root[data-theme=dark-soft] .empty-state{color:#9ba6b8!important}:root[data-theme=dark-soft] .chat-media-status,:root[data-theme=dark-soft] .message-delivery{color:#d59a83!important}:root[data-theme=dark-soft] .topbar svg,:root[data-theme=dark-soft] .theme-toggle svg{color:inherit}@media(max-width:900px),(hover:none),(pointer:coarse){:root[data-theme=dark-soft] button:not(.primary):not(.disconnect):not(.danger-icon),:root[data-theme=dark-soft] .btn:not(.primary):not(.disconnect):not(.danger-icon),:root[data-theme=dark-soft] .sidebar nav button,:root[data-theme=dark-soft] .person-actions button:not(.danger-icon),:root[data-theme=dark-soft] .icon-btn:not(.danger-icon),:root[data-theme=dark-soft] .add-student,:root[data-theme=dark-soft] .chat-item,:root[data-theme=dark-soft] .alert-row button,:root[data-theme=dark-soft] .modal-head button{background:#2b3443!important;border-color:#414c60!important;color:#c6cddd!important;box-shadow:none!important}:root[data-theme=dark-soft] .sidebar nav button.active,:root[data-theme=dark-soft] .btn.primary{background:#71679e!important;border-color:#8b80b8!important;color:#fff!important}:root[data-theme=dark-soft] .chat-item.selected,:root[data-theme=dark-soft] button.chat-item.selected{background:#343449!important;border-color:#514b6d!important;color:#d1c9f4!important}}:root[data-theme=dark-soft] .chat-search-control input{background:transparent!important;border:0!important;box-shadow:none!important}:root[data-theme=dark-soft] .graph-panel{background-color:#1e2531!important;background-image:radial-gradient(ellipse at 12% 0%,rgba(126,109,174,.11),transparent 38%),radial-gradient(ellipse at 100% 100%,rgba(121,75,87,.08),transparent 34%)!important;border:1px solid #3a4659!important;box-shadow:0 10px 30px #0003!important}:root[data-theme=dark-soft] .graph-panel .legend{color:#d1d7e3!important;background:#2a3342!important;border:1px solid #46536a!important;box-shadow:none!important}:root[data-theme=dark-soft] .graph-panel .teacher-dot{background:#a99bd7!important;box-shadow:0 0 0 2px #a99bd729}:root[data-theme=dark-soft] .graph-panel .student-dot{background:#d98b94!important;box-shadow:0 0 0 2px #d98b9424}:root[data-theme=dark-soft] .graph-panel .root-node{background:#293241!important;background-image:none!important;border:1px solid #49566d!important;box-shadow:0 8px 18px #00000038!important;color:#edf0f6!important}:root[data-theme=dark-soft] .graph-panel .root-node:before{width:3px;background:#9687c7!important;opacity:.9}:root[data-theme=dark-soft] .graph-panel .root-node img{background:transparent!important;box-shadow:none!important;border-radius:0!important}:root[data-theme=dark-soft] .graph-panel .root-node b{color:#edf0f6!important}:root[data-theme=dark-soft] .graph-panel .root-node small{color:#aab4c5!important}:root[data-theme=dark-soft] .graph-panel .teacher-branch{background:#242d3a!important;background-image:none!important;border:1px solid #3f4d61!important;box-shadow:0 4px 12px #00000024!important;transform:none!important}:root[data-theme=dark-soft] .graph-panel .teacher-branch:hover{background:#293343!important;border-color:#69749a!important;box-shadow:0 5px 15px #0003!important;transform:none!important}:root[data-theme=dark-soft] .graph-panel .teacher-card{background:#303144!important;background-image:none!important;border:1px solid #4c4b69!important;box-shadow:none!important}:root[data-theme=dark-soft] .graph-panel .teacher-card .avatar{background:#3e3a58!important;color:#c5b9ef!important}:root[data-theme=dark-soft] .graph-panel .student-card{background:#2b3541!important;background-image:none!important;border:1px solid #4a5864!important;box-shadow:none!important}:root[data-theme=dark-soft] .graph-panel .student-card .avatar{background:#41414b!important;color:#e0b1a8!important}:root[data-theme=dark-soft] .graph-panel .empty-students{background:#252e3a!important;border:1px dashed #566176!important;color:#aab4c5!important}:root[data-theme=dark-soft] .graph-panel .add-student{background:#303448!important;border:1px solid #4b4c69!important;color:#c7bdf0!important;box-shadow:none!important}:root[data-theme=dark-soft] .graph-panel .add-student:hover{background:#3b3a55!important;border-color:#77729d!important}:root[data-theme=dark-soft] .graph-panel .unassigned{border-top:1px solid #414d60!important}:root[data-theme=dark-soft] .graph-panel .graph-actions{border-top:1px solid #414d60!important}:root[data-theme=dark-soft] .graph-panel .person-card,:root[data-theme=dark-soft] .user-list .person-card{color:#e4e8f0!important}:root[data-theme=dark-soft] .graph-panel .person-card:hover,:root[data-theme=dark-soft] .user-row:hover,:root[data-theme=dark-soft] .unassigned-grid .person-card:hover{background:#30394a!important;border-color:#66728c!important;box-shadow:0 4px 13px #0003!important;transform:none!important}:root[data-theme=dark-soft] .graph-panel .person-actions button:hover,:root[data-theme=dark-soft] .graph-panel .icon-btn:hover{background:#3b4057!important;border-color:#525b78!important;color:#d3cafa!important;box-shadow:none!important}:root[data-theme=dark-soft] .graph-panel .person-actions .danger-icon:hover,:root[data-theme=dark-soft] .graph-panel .danger-icon:hover{background:#482f3b!important;border-color:#78505f!important;color:#f0aab4!important}:root[data-theme=dark-soft] .toolbar .search,:root[data-theme=dark-soft] .search{background:#262f3d!important;border:1px solid #414e62!important;box-shadow:none!important}:root[data-theme=dark-soft] .search:focus-within{background:#2c3747!important;border-color:#8c82ba!important;box-shadow:0 0 0 3px #aaa0d821!important}:root[data-theme=dark-soft] .search svg{color:#aab4c5!important}:root[data-theme=dark-soft] .search input{background:transparent!important;color:#e4e8f0!important}:root[data-theme=dark-soft] .search input::placeholder{color:#8895a9!important}:root[data-theme=dark-soft] .user-row{background:transparent!important;border-bottom:1px solid #343f52!important}:root[data-theme=dark-soft] .user-row:hover{background:#293343!important}:root[data-theme=dark-soft] .user-row .role-tag.teacher{background:#393650!important;color:#c8c0ef!important}:root[data-theme=dark-soft] .user-row .role-tag.student{background:#47333c!important;color:#e8b4bd!important}:root[data-theme=dark-soft] .graph-panel,:root[data-theme=dark-soft] .graph-panel *{-webkit-font-smoothing:antialiased}.graph-panel .root-node,.graph-panel .teacher-branch,.graph-panel .teacher-card,.graph-panel .student-card{border-width:1px;border-style:solid;transform:none}.graph-panel .teacher-branch,.graph-panel .person-card{transition:border-color .16s ease,background-color .16s ease,box-shadow .16s ease}.graph-panel .teacher-branch:hover,.graph-panel .person-card:hover{transform:none}@media(max-width:760px){.content{padding:16px 12px}.graph-panel{min-width:0;padding:12px;border-radius:15px}.graph-panel .section-head{align-items:flex-start;margin-bottom:13px}.graph-panel .legend{display:inline-flex;align-items:center;gap:7px;max-width:100%;padding:8px 10px;border-radius:11px;line-height:1.3}.graph-panel .root-node{width:min(100%,330px);min-height:66px;gap:10px;margin-bottom:13px;padding:10px 12px}.graph-panel .root-node img{flex:0 0 42px;width:42px;height:42px}.graph-panel .teacher-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}.graph-panel .teacher-branch{min-width:0;padding:9px;border-radius:13px}.graph-panel .teacher-card,.graph-panel .student-card{min-width:0;min-height:58px;padding:9px;gap:8px;border-radius:10px}.graph-panel .person-main,.graph-panel .person-info{min-width:0}.graph-panel .person-info b{overflow-wrap:anywhere;white-space:normal;line-height:1.35}.graph-panel .person-actions{gap:3px}.graph-panel .person-actions button{flex:0 0 30px;width:30px;height:30px}.graph-panel .student-list{gap:7px;margin-top:8px}.graph-panel .add-student{min-height:36px;margin-top:8px}.user-row:hover,.person-card:hover,.teacher-branch:hover{transform:none}}@media(max-width:380px){.content{padding:12px 9px}.graph-panel{padding:9px}.graph-panel .teacher-branch{padding:7px}.graph-panel .person-card{padding:7px;gap:5px}.graph-panel .person-actions button{width:28px;height:28px;flex-basis:28px}}@media(hover:none),(pointer:coarse){:root[data-theme=dark-soft] .user-row:hover,:root[data-theme=dark-soft] .person-card:hover,:root[data-theme=dark-soft] .teacher-branch:hover{background:#293343!important;border-color:#59657b!important;box-shadow:none!important;transform:none!important}}@media(max-width:760px){.chat-layout{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:12px;min-width:0;min-height:0;padding:0;overflow:visible;border:0;border-radius:0;background:transparent;box-shadow:none}.chat-list{display:grid;grid-template-columns:minmax(0,1fr);align-content:start;gap:7px;width:100%;min-width:0;max-height:min(36dvh,290px);overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;border:1px solid var(--line);border-radius:15px;background:#fff;padding:9px;touch-action:pan-y}.chat-list-tools{position:sticky;top:0;z-index:2;padding:3px 0 9px;background:inherit;border-bottom:1px solid var(--line)}.chat-item{min-width:0;width:100%;border-radius:10px}.chat-detail{display:flex;flex-direction:column;width:100%;min-width:0;min-height:360px;height:min(66dvh,620px);max-height:620px;overflow:hidden;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:0 5px 18px #29223f0b}.chat-head{position:relative;top:auto;z-index:1;flex:0 0 auto;min-width:0;padding:12px;background:inherit}.chat-head>div:first-child{min-width:0}.chat-head-tools{min-width:0;flex:0 1 auto;justify-content:flex-end}.chat-head-tools select{max-width:min(145px,42vw)}.messages{flex:1 1 0;min-width:0;min-height:0;height:auto;max-height:none;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;padding:12px;touch-action:pan-y}.chat-composer{position:relative;z-index:1;flex:0 0 auto;min-width:0;max-height:42%;overflow-x:hidden;overflow-y:auto;padding:10px 12px;background:inherit}.chat-composer textarea{min-height:48px;max-height:120px;resize:none;box-sizing:border-box}}@media(max-width:760px)and (max-height:700px){.chat-list{max-height:min(34dvh,230px)}.chat-detail{min-height:320px;height:min(64dvh,520px);max-height:520px}.messages{padding:9px}.chat-composer{max-height:44%;padding:8px 10px}}@media(max-width:760px){:root[data-theme=dark-soft] .chat-layout{background:transparent!important;border:0!important;box-shadow:none!important}:root[data-theme=dark-soft] .chat-list{background:#1d2430!important;border:1px solid #39465a!important;box-shadow:0 5px 18px #00000029!important}:root[data-theme=dark-soft] .chat-list-tools{background:#1d2430!important;border-bottom-color:#39465a!important}:root[data-theme=dark-soft] .chat-detail{background:#202633!important;border:1px solid #3a4659!important;box-shadow:0 5px 18px #0000002e!important}:root[data-theme=dark-soft] .chat-head,:root[data-theme=dark-soft] .chat-composer{background:#202633!important;border-color:#39465a!important}:root[data-theme=dark-soft] .messages{background:#191f2a!important}}@media(min-width:761px){.chat-layout{height:clamp(480px,calc(100dvh - 300px),760px);min-height:480px;max-height:760px;align-items:stretch;overflow:hidden}.chat-list{height:100%;min-height:0;max-height:none;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-width:thin}.chat-detail{display:flex;flex-direction:column;height:100%;min-width:0;min-height:0;overflow:hidden}.chat-head{position:relative;top:auto;flex:0 0 auto}.messages{flex:1 1 0;height:0;min-height:0;max-height:none;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-width:thin}.chat-composer{flex:0 0 auto}}@media(min-width:761px){.sidebar{width:232px;padding:18px 14px}.main{margin-left:232px}.brand{gap:10px;padding:0 7px 22px;font-size:22px}.brand img{width:48px;height:48px}.sidebar nav{gap:4px}.sidebar nav button,.logout{gap:10px;padding:11px;font-size:13px}.topbar{height:56px;padding:0 22px}.topbar-context{gap:12px}.topbar-context b{font-size:13px;font-weight:800}.topbar-user{margin-left:0;font-size:10px}.content{width:100%;max-width:1900px;padding:14px 20px 18px}.page-title{display:none}.metrics{gap:10px;margin-bottom:12px}.metric{min-height:56px;padding:9px 12px}.graph-panel{padding:19px;border-radius:16px}.graph-panel .section-head{margin-bottom:12px}.graph-panel .root-node{min-height:68px;margin-bottom:14px;padding:10px 14px}.graph-panel .root-node img{width:44px;height:44px}.graph-panel .teacher-grid{gap:12px}.graph-panel .teacher-branch{padding:10px;border-radius:13px}.graph-panel .teacher-card{min-height:64px;padding:9px 11px}.graph-panel .student-list{gap:6px;margin:9px 0 0 20px}.graph-panel .student-card{min-height:52px;padding:7px 9px}.graph-panel .add-student{margin-top:7px}.graph-panel .unassigned{margin-top:15px;padding-top:13px}.graph-panel .graph-actions{margin-top:12px;padding-top:12px}.teacher-readonly-graph{padding:18px}.teacher-graph-root,.teacher-graph-summary{max-width:none}.teacher-graph-root{margin:10px 0}.teacher-graph-summary{margin:12px 0 0}.toolbar.user-toolbar{display:flex;align-items:center;gap:10px;margin:0 0 10px}.user-toolbar .search{width:min(580px,100%);flex:1 1 360px;height:40px}.user-toolbar>span{font-size:11px;white-space:nowrap}.user-toolbar>.btn{flex:0 0 auto}.user-row{gap:10px;padding:9px 14px}.chat-layout{height:clamp(440px,calc(100dvh - 88px),980px);min-height:440px;max-height:980px;grid-template-columns:minmax(270px,320px) minmax(0,1fr)}.chat-list{height:100%;min-height:0;max-height:none;padding:10px}.chat-item{gap:4px;padding:10px}.chat-detail{height:100%;min-height:0;overflow:hidden}.chat-head{flex:0 0 auto;padding:11px 15px}.messages{flex:1 1 0;height:0;min-height:0;max-height:none;padding:14px 16px}.chat-composer{flex:0 0 auto;padding:10px 14px;gap:8px}.chat-composer textarea{min-height:50px;max-height:100px}}@media(max-width:760px){.content{padding:12px 10px 16px}.topbar{height:46px;padding:0 12px}.topbar-context{gap:7px}.topbar-context b{font-size:12px}.toolbar.user-toolbar{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;gap:8px;margin:0 0 9px}.user-toolbar .search{width:auto;min-width:0;max-width:none;flex:1 1 180px;height:40px}.user-toolbar>span{flex:1 1 auto;margin-right:auto;font-size:10px}.user-toolbar>.btn{flex:0 0 auto;width:auto;min-height:40px;padding:8px 11px;white-space:nowrap}.metrics,.graph-panel .section-head{margin-bottom:10px}.teacher-readonly-graph{padding:12px}.teacher-graph-root,.teacher-graph-summary{max-width:none}.teacher-graph-root{margin:10px 0}.teacher-graph-summary{margin:10px 0 0}}.chat-item-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:9px;min-width:0}.chat-item-participants{display:flex;flex:1 1 auto;flex-direction:column;align-items:flex-start;gap:4px;min-width:0;text-align:left}.chat-item-participants>span{display:block;width:100%;min-width:0;overflow:hidden;color:inherit;font-weight:700;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}.chat-item-participants small{display:inline-block;margin-right:6px;color:#91899d;font-size:10px;font-weight:600}:root[data-theme=dark-soft] .chat-item-participants small{color:#a7a0b7}.chat-item .unread-badge{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-width:22px;height:22px;padding:0 7px;border-radius:999px;background:#d99532;color:#fff!important;font-size:10px;line-height:1;font-weight:800;box-shadow:0 2px 6px #b4771f2e}.chat-item.has-unread:not(.selected){background:#fffaf0;border:1px solid #f0d9ab;border-left:3px solid #d99532;padding-left:12px}.chat-item.has-unread:not(.selected):hover{background:#fff5df}.chat-item .chat-item-meta{color:#8e8798}:root[data-theme=dark-soft] .chat-item.has-unread:not(.selected){background:#302d29!important;border-color:#68543a!important;border-left-color:#d49a46!important;color:#f0e7d8!important}:root[data-theme=dark-soft] .chat-item.has-unread:not(.selected):hover{background:#383228!important}:root[data-theme=dark-soft] .chat-item.selected.has-unread{background:#393548!important;border-color:#756449!important;border-left-color:#e1ad57!important;color:#e8e2f6!important}:root[data-theme=dark-soft] .chat-item .chat-item-meta{color:#9ba6b8!important}@media(min-width:761px){.chat-composer textarea{min-height:58px;max-height:112px}}@media(max-width:760px){.chat-composer textarea{min-height:54px;max-height:120px}}.graph-panel .graph-legend{display:flex;align-items:center;flex-wrap:wrap;gap:14px;max-width:100%}.graph-panel .graph-legend-item{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:11px;font-weight:700;white-space:nowrap}.graph-panel .graph-legend-item>span{flex:0 0 9px;width:9px;height:9px;margin:0}.graph-panel .graph-legend-item b{display:inline-flex;align-items:center;justify-content:center;min-width:23px;padding:3px 7px;border-radius:999px;background:#f0ebf9;color:#573e99;font-size:11px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}:root[data-theme=dark-soft] .graph-panel .graph-legend-item{color:#d1d7e3!important}:root[data-theme=dark-soft] .graph-panel .graph-legend-item b{background:#394253!important;color:#e4e8f0!important}@media(max-width:760px){.graph-panel .graph-legend{gap:9px;padding:7px 9px}.graph-panel .graph-legend-item{gap:6px;font-size:10px}}.chat-media-video.chat-media-video-note{width:min(100%,260px);aspect-ratio:1;max-height:none;object-fit:cover;border-radius:50%;background:#17131f}.graph-panel .graph-legend-row{display:flex;align-items:flex-start;justify-content:flex-start;width:100%;margin:0 0 17px}.graph-panel .graph-legend{justify-content:flex-start}.graph-panel .root-node{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:min(300px,100%);min-height:0;margin:0 auto 22px;padding:18px 22px 16px;text-align:center}.graph-panel .root-node:before{inset:0 0 auto;width:100%;height:4px}.graph-panel .root-node img{flex:0 0 auto;width:50px;height:50px}.graph-panel .root-node>div{display:grid;justify-items:center;gap:4px;min-width:0;width:100%;text-align:center}.graph-panel .root-node b,.graph-panel .root-node small{width:100%;text-align:center}.graph-panel .teacher-branch,.graph-panel .student-list,.graph-panel .student-card,.graph-panel .student-card .person-main,.graph-panel .student-card .person-info{min-width:0}.graph-panel .teacher-branch{width:100%}.graph-panel .student-list{display:grid;grid-template-columns:minmax(0,1fr);width:100%}.graph-panel .student-card{display:flex;align-items:center;width:100%;gap:7px}.graph-panel .student-card .person-main{display:flex;flex:1 1 0;width:0;align-items:center;gap:8px;overflow:hidden}.graph-panel .student-card .avatar{flex:0 0 34px;width:34px;height:34px}.graph-panel .student-card .person-info{flex:1 1 0;width:0;overflow:hidden}.graph-panel .student-card .person-info b{display:block;max-width:100%;overflow:visible;white-space:normal;overflow-wrap:anywhere;word-break:break-word;text-overflow:clip;line-height:1.25}.graph-panel .student-card .person-info small{white-space:normal;overflow-wrap:anywhere}.graph-panel .student-card .person-actions{flex:0 0 auto;gap:1px}.graph-panel .student-card .person-actions button{flex:0 0 28px;width:28px;height:28px}.graph-panel .student-card .person-actions svg{width:14px;height:14px}:root[data-theme=dark-soft] .graph-panel .root-node:before{inset:0 0 auto;width:100%;height:3px}@media(max-width:760px){.graph-panel .graph-legend-row{margin-bottom:14px}.graph-panel .root-node{width:min(300px,100%);margin-bottom:17px;padding:16px 14px 14px}.graph-panel .student-card .person-actions button{flex-basis:28px;width:28px;height:28px}}.graph-panel .graph-legend-row{align-items:center;justify-content:space-between;gap:12px}.graph-panel .graph-add-participant{flex:0 0 auto;min-height:38px;padding:9px 13px;white-space:nowrap}@media(max-width:520px){.graph-panel .graph-legend-row{align-items:flex-start;flex-wrap:wrap}.graph-panel .graph-add-participant{min-height:36px}}.graph-panel .root-node{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:11px;width:fit-content;max-width:100%;min-height:0;margin:0 auto 20px;padding:11px 16px;text-align:left;box-sizing:border-box}.graph-panel .root-node img{flex:0 0 42px;width:42px;height:42px}.graph-panel .root-node>div{display:flex;flex:0 1 auto;flex-wrap:wrap;align-items:baseline;justify-items:initial;justify-content:center;gap:3px 9px;width:auto;min-width:0;text-align:left}.graph-panel .root-node b,.graph-panel .root-node small{display:inline;width:auto;margin:0;text-align:left}.graph-panel .root-node b{white-space:nowrap;font-size:12px}.graph-panel .root-node small{white-space:nowrap;font-size:10px}.graph-panel .teacher-grid,.graph-panel .teacher-branch,.graph-panel .student-list{min-width:0;max-width:100%;box-sizing:border-box}.graph-panel .teacher-grid{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.graph-panel .student-list{margin-left:0;padding-left:12px;overflow:hidden}.graph-panel .student-card{display:flex;width:100%;max-width:100%;min-width:0;box-sizing:border-box;overflow:hidden}.graph-panel .student-card .person-main{display:flex;flex:1 1 0%;width:auto;min-width:0;max-width:100%;overflow:hidden}.graph-panel .student-card .person-info{flex:1 1 0%;width:auto;min-width:0;max-width:100%;overflow:hidden}.graph-panel .student-card .person-info b,.graph-panel .student-card .person-info small{max-width:100%;white-space:normal;overflow-wrap:anywhere;word-break:normal;text-overflow:clip}.graph-panel .student-card .person-actions{flex:0 0 auto;min-width:0}.graph-panel .student-card .person-actions button{flex:0 0 27px;width:27px;height:27px}@media(max-width:760px){.graph-panel .root-node{width:fit-content;max-width:100%;margin-bottom:15px;padding:10px 12px}.graph-panel .root-node>div{justify-content:flex-start;gap:2px 7px}.graph-panel .student-list{padding-left:9px}.graph-panel .student-card{gap:5px;padding:8px 7px}.graph-panel .student-card .avatar{flex-basis:30px;width:30px;height:30px}.graph-panel .student-card .person-actions button{flex-basis:25px;width:25px;height:25px}}@media(max-width:360px){.graph-panel .root-node{gap:8px;padding:9px 10px}.graph-panel .root-node img{flex-basis:36px;width:36px;height:36px}.graph-panel .root-node>div{gap:2px 6px}.graph-panel .root-node b{font-size:11px}.graph-panel .root-node small{font-size:9px}}.graph-panel .teacher-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr))}.user-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:13px}.user-toolbar .search{flex:1 1 320px;width:auto;min-width:180px;max-width:560px;height:42px;background:var(--surface, #fff)}.user-sort{display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;height:40px;padding:0 10px;border:1px solid var(--line);border-radius:10px;color:var(--muted);background:#fff}.user-sort svg{flex:0 0 auto}.user-sort select{max-width:150px;border:0;outline:0;color:var(--ink);background:transparent;font:inherit;font-size:11px;cursor:pointer}.user-toolbar>span{flex:0 0 auto;min-width:20px;text-align:center;font-variant-numeric:tabular-nums}.user-list{overflow:hidden;padding:0}.user-row{display:flex;align-items:center;gap:13px;min-width:0;padding:11px 14px;border-bottom:1px solid var(--line);transition:background .15s ease}.user-row:hover{background:#f8f7fb}.user-row:last-child{border-bottom:0}.user-row>.avatar{flex:0 0 38px;width:38px;height:38px;border-radius:11px}.user-person-info{flex:1 1 auto;min-width:0}.user-person-info>b{display:block;overflow:hidden;color:var(--ink);font-size:12px;font-weight:750;text-overflow:ellipsis;white-space:nowrap}.user-meta{display:flex;align-items:center;flex-wrap:wrap;gap:5px 10px;min-width:0;margin-top:4px;color:var(--muted);font-size:10px;line-height:1.35}.user-status-dot{width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:#9ba3b2}.user-status-dot.is-active{background:#35b47b;box-shadow:0 0 0 3px #35b47b1f}.user-status-dot.is-inactive{background:#d49a46}.telegram-state{display:inline-flex;align-items:center;gap:4px;color:var(--muted)}.telegram-state.is-connected{color:#32a879}.telegram-state svg{flex:0 0 auto}.user-login{overflow:hidden;max-width:260px;text-overflow:ellipsis;white-space:nowrap}.user-actions{display:flex;align-items:center;gap:5px;flex:0 0 auto;margin-left:8px}.user-action-btn{display:grid;place-items:center;width:34px;height:34px;flex:0 0 34px;padding:0;border:1px solid transparent;border-radius:9px;color:#aeb8c9;background:transparent;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.user-action-btn svg{width:16px;height:16px;stroke-width:1.9}.user-action-btn:hover{border-color:var(--line);color:var(--ink);background:#828ca01a}.user-action-btn.disconnect{color:#d99a9f}.user-action-btn.disconnect:hover{border-color:#d9788447;background:#d978841f}.user-action-btn.user-delete{margin-left:4px;color:#d7838d;border-color:#d7838d38;background:#d7838d14}.user-action-btn.user-delete:hover{color:#fff;border-color:#c45d6b;background:#b94d5d}:root[data-theme=dark-soft] .user-row:hover{background:#262f3d!important}:root[data-theme=dark-soft] .user-sort select{color:#e4e8f0}:root[data-theme=dark-soft] .user-action-btn{color:#b6c0d0}:root[data-theme=dark-soft] .user-action-btn:hover{background:#303b4d;border-color:#4b5870;color:#f0f2f7}@media(max-width:760px){.user-toolbar{flex-wrap:wrap;gap:8px}.user-toolbar .search{flex:1 1 100%;max-width:none}.user-sort{flex:1 1 auto}.user-toolbar>span{margin-left:auto}.user-row{gap:9px;padding:10px}.user-row>.avatar{flex-basis:34px;width:34px;height:34px}.user-actions{gap:1px;margin-left:0}.user-action-btn{width:30px;height:30px;flex-basis:30px}.user-login{max-width:100%}}@media(max-width:420px){.user-meta{gap:4px 7px}.user-row{align-items:flex-start}.user-actions{align-self:center}.user-action-btn{width:28px;height:28px;flex-basis:28px}}.graph-panel .teacher-card{display:flex;align-items:center;width:100%;max-width:100%;min-width:0;box-sizing:border-box;overflow:hidden;gap:8px}.graph-panel .teacher-card>.person-main{display:flex;flex:1 1 0%;width:0;min-width:0;max-width:100%;overflow:hidden;gap:8px}.graph-panel .teacher-card .avatar{flex:0 0 auto}.graph-panel .teacher-card .person-info{flex:1 1 0%;width:0;min-width:0;max-width:100%;overflow:hidden}.graph-panel .teacher-card .person-info b{display:block;max-width:100%;overflow:visible;white-space:normal;overflow-wrap:anywhere;word-break:normal;text-overflow:clip;line-height:1.25}.graph-panel .teacher-card .person-info small{display:block;max-width:100%;white-space:normal;overflow-wrap:anywhere;line-height:1.25}.graph-panel .teacher-card .person-actions{display:flex;flex:0 0 auto;min-width:0;gap:1px}.graph-panel .teacher-card .person-actions button{flex:0 0 28px;width:28px;height:28px}@media(max-width:760px){.graph-panel .teacher-card{gap:6px}.graph-panel .teacher-card>.person-main{gap:7px}.graph-panel .teacher-card .person-actions button{flex-basis:27px;width:27px;height:27px}}@media(max-width:380px){.graph-panel .teacher-card{gap:5px;padding:7px}.graph-panel .teacher-card .person-actions button{flex-basis:25px;width:25px;height:25px}}.graph-panel .graph-legend{gap:18px}.graph-panel .graph-legend-item{gap:9px;font-size:12px;font-weight:750}.graph-panel .graph-legend-item b{min-width:36px;min-height:32px;padding:0 11px;border-radius:11px;font-size:16px;font-weight:900;line-height:1;box-shadow:0 3px 10px #573e991f;transition:transform .18s ease,box-shadow .18s ease}.graph-panel .graph-legend-item:first-child b{background:linear-gradient(145deg,#eee8fb,#e2d8f5);color:#6243a2}.graph-panel .graph-legend-item:last-child b{background:linear-gradient(145deg,#fff0f1,#f9dfe3);color:#c24b60;box-shadow:0 3px 10px #c24b601f}.graph-panel .graph-legend-item b:hover{transform:translateY(-1px);box-shadow:0 5px 13px #573e9929}:root[data-theme=dark-soft] .graph-panel .graph-legend-item:first-child b{background:linear-gradient(145deg,#45405e,#3c3853)!important;color:#d9cdfb!important;box-shadow:0 3px 12px #00000029}:root[data-theme=dark-soft] .graph-panel .graph-legend-item:last-child b{background:linear-gradient(145deg,#563b47,#49333e)!important;color:#ffc3cc!important;box-shadow:0 3px 12px #00000029}@media(max-width:760px){.graph-panel .graph-legend{gap:12px}.graph-panel .graph-legend-item{gap:7px;font-size:11px}.graph-panel .graph-legend-item b{min-width:33px;min-height:29px;padding:0 9px;font-size:15px;border-radius:9px}}@media(max-width:380px){.graph-panel .graph-legend{gap:8px}.graph-panel .graph-legend-item{gap:6px;font-size:10px}.graph-panel .graph-legend-item b{min-width:30px;min-height:27px;padding:0 8px;font-size:14px}}@media(max-width:760px){.chat-list{display:flex;flex-direction:column;align-items:stretch;gap:0;max-height:min(36dvh,290px);min-height:0;overflow:hidden;padding:8px}.chat-list-tools{position:relative;z-index:1;flex:0 0 auto;width:100%;padding:2px 0 9px;margin:0;background:#fff;border-bottom:1px solid var(--line);box-sizing:border-box}.chat-items-scroll{display:grid;flex:1 1 auto;align-content:start;gap:7px;width:100%;min-width:0;min-height:0;padding-top:8px;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;touch-action:pan-y}.chat-items-scroll>.empty-state{padding:14px 8px}:root[data-theme=dark-soft] .chat-list-tools{background:#1d2430!important;border-bottom-color:#39465a!important}}.chat-composer textarea{min-height:66px;max-height:132px;resize:none}@media(max-width:760px){.chat-composer textarea{min-height:62px;max-height:136px}}:root:not([data-theme=dark-soft]){--ink: #514d5a;--muted: #898493;--line: #ded9e5}:root:not([data-theme=dark-soft]) body{color:#514d5a}:root:not([data-theme=dark-soft]) .topbar,:root:not([data-theme=dark-soft]) .sidebar,:root:not([data-theme=dark-soft]) .graph-panel,:root:not([data-theme=dark-soft]) .user-list,:root:not([data-theme=dark-soft]) .chat-layout,:root:not([data-theme=dark-soft]) .chat-list,:root:not([data-theme=dark-soft]) .chat-detail{border-color:#ded9e5}:root:not([data-theme=dark-soft]) .person-card,:root:not([data-theme=dark-soft]) .chat-item,:root:not([data-theme=dark-soft]) .search,:root:not([data-theme=dark-soft]) .chat-search-control,:root:not([data-theme=dark-soft]) .chat-composer textarea,:root:not([data-theme=dark-soft]) .chat-head-tools select{border-color:#dcd6e3}:root:not([data-theme=dark-soft]) .person-info b,:root:not([data-theme=dark-soft]) .chat-item b,:root:not([data-theme=dark-soft]) .chat-head b,:root:not([data-theme=dark-soft]) .message b{color:#56515f}:root:not([data-theme=dark-soft]) .person-info small,:root:not([data-theme=dark-soft]) .chat-item small,:root:not([data-theme=dark-soft]) .chat-item-meta,:root:not([data-theme=dark-soft]) .chat-head small,:root:not([data-theme=dark-soft]) .message-time,:root:not([data-theme=dark-soft]) .toolbar,:root:not([data-theme=dark-soft]) .hint{color:#918b9a}:root:not([data-theme=dark-soft]) .chat-list-tools{border-bottom-color:#ded9e5}.user-toolbar{align-items:center;gap:12px;margin-bottom:17px}.user-toolbar .search{flex:1 1 340px;min-width:220px;max-width:620px;height:48px;padding:0 14px;border-radius:12px}.user-toolbar .search svg{width:18px;height:18px}.user-toolbar .search input{font-size:13px}.user-sort{min-height:48px;height:48px;padding:0 14px;gap:9px;border-radius:12px}.user-sort svg{width:17px;height:17px}.user-sort select{max-width:185px;font-size:13px}.user-count{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;min-height:44px;padding:0 13px;border:1px solid #e4deed;border-radius:12px;color:#7f788d;background:#faf8fd;font-size:12px;font-weight:650;white-space:nowrap}.user-count b{display:inline-grid;place-items:center;min-width:28px;height:28px;padding:0 7px;border-radius:9px;color:#62439d;background:#eee8fa;font-size:14px;font-weight:850;font-variant-numeric:tabular-nums}.user-add-btn{min-height:48px;padding:0 18px;border-radius:12px;font-size:13px;white-space:nowrap}.user-add-btn svg{width:18px;height:18px}.user-list{border-radius:17px}.user-row{min-height:86px;gap:16px;padding:16px 20px}.user-row>.avatar{flex:0 0 48px;width:48px;height:48px;border-radius:14px}.user-row>.avatar svg{width:22px;height:22px}.user-person-info>b{font-size:15px;line-height:1.35}.user-meta{gap:7px 13px;margin-top:6px;font-size:11px;line-height:1.45}.user-status-dot{width:8px;height:8px;flex-basis:8px}.telegram-state{gap:5px}.telegram-state svg{width:14px;height:14px}.user-login{max-width:300px;font-size:11px}.user-actions{align-items:center;gap:7px;margin-left:auto}.user-action-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:42px;height:42px;flex:0 0 42px;padding:0;border:1px solid #e5dfed;border-radius:11px;color:#777085;background:#faf9fc}.user-action-btn svg{width:18px;height:18px}.user-action-btn.code-btn{width:auto;min-width:88px;flex:0 0 auto;padding:0 13px;border-color:#d9ccef;color:#64469e;background:#f4effb;font-size:12px;font-weight:800}.user-action-btn.code-btn:hover{border-color:#bca7df;color:#513486;background:#ece4f8}.user-action-btn.disconnect{color:#c77983;border-color:#f0d8dc;background:#fff8f8}.user-action-btn.edit-btn{color:#756a91;background:#f8f6fb}.user-action-btn.user-delete{margin-left:3px;color:#c66f7a;border-color:#efd4d8;background:#fff5f6}.user-action-btn.user-delete:hover{color:#fff;border-color:#bd5968;background:#bd5968}:root[data-theme=dark-soft] .user-count{color:#c2cad8;border-color:#414e62;background:#252e3d}:root[data-theme=dark-soft] .user-count b{color:#e0d5ff;background:#403956}:root[data-theme=dark-soft] .user-sort{background:#262f3d;border-color:#414e62}:root[data-theme=dark-soft] .user-action-btn{color:#c0c8d6;border-color:#414e62;background:#252e3d}:root[data-theme=dark-soft] .user-action-btn.code-btn{color:#dfd2ff;border-color:#62547f;background:#39334c}:root[data-theme=dark-soft] .user-action-btn.code-btn:hover{background:#49405f;border-color:#79699a}:root[data-theme=dark-soft] .user-action-btn.disconnect,:root[data-theme=dark-soft] .user-action-btn.user-delete{color:#f0aab3;border-color:#66444e;background:#382d38}:root[data-theme=dark-soft] .user-action-btn.user-delete:hover{color:#fff;background:#a94e60}@media(max-width:760px){.user-toolbar{gap:9px;margin-bottom:12px}.user-toolbar .search{flex:1 1 100%;max-width:none;height:46px}.user-sort{min-height:44px;height:44px;flex:1 1 170px}.user-sort select{max-width:none;width:100%}.user-count{min-height:42px;padding:0 10px;font-size:11px}.user-add-btn{min-height:44px;padding:0 13px}.user-row{min-height:80px;gap:11px;padding:13px 14px}.user-row>.avatar{flex-basis:44px;width:44px;height:44px}.user-person-info>b{font-size:14px}.user-meta{gap:5px 9px;font-size:11px}.user-actions{gap:6px;margin-left:auto}.user-action-btn{width:40px;height:40px;flex-basis:40px}.user-action-btn.code-btn{min-width:78px;flex-basis:auto}}@media(max-width:520px){.user-toolbar>.user-count{order:3;flex:1 1 auto}.user-toolbar>.user-add-btn{order:4}.user-row{flex-wrap:wrap;align-items:center}.user-row>.avatar{flex-basis:42px;width:42px;height:42px}.user-row>.user-person-info{flex:1 1 calc(100% - 58px);min-width:0}.user-actions{flex:1 1 100%;justify-content:flex-end;margin:2px 0 0;padding-top:10px;border-top:1px solid var(--line)}}@media(max-width:360px){.user-toolbar .search input{font-size:12px}.user-sort{padding:0 9px}.user-count{gap:6px;font-size:10px}.user-row{padding:12px 10px}}.user-list{overflow:visible}.user-row{position:relative}.user-row.is-info-open{z-index:12}.user-actions{position:relative}.user-action-btn.connect-toggle{width:auto;min-width:126px;height:42px;flex:0 0 auto;padding:0 13px;gap:8px;font-size:12px;font-weight:800;white-space:nowrap}.user-action-btn.connect-toggle svg{width:17px;height:17px}.user-action-btn.connect-toggle.connect{color:#62439d;border-color:#d9ccef;background:#f4effb}.user-action-btn.connect-toggle.connect:hover:not(:disabled){color:#503483;border-color:#bba7df;background:#ece4f8}.user-action-btn.connect-toggle.disconnect{color:#b85f6b;border-color:#efd1d6;background:#fff3f5}.user-action-btn.connect-toggle.disconnect:hover{color:#a34654;border-color:#e3b2ba;background:#ffe9ec}.user-action-btn.connect-toggle:disabled{opacity:.45;cursor:not-allowed}.user-info-wrap{position:relative;display:inline-flex;flex:0 0 auto}.user-action-btn.user-info-btn{width:42px;height:42px;flex-basis:42px;color:#8a7da4;border-color:#e5dfed;background:#faf9fc}.user-action-btn.user-info-btn:hover,.user-action-btn.user-info-btn.is-open{color:#62439d;border-color:#cbb9e7;background:#f2ecfa}.user-info-popover{position:absolute;top:calc(100% + 9px);right:0;z-index:30;width:min(270px,calc(100vw - 34px));padding:13px 14px;border:1px solid #e5deed;border-radius:13px;background:#fff;box-shadow:0 14px 38px #2a1e442e;color:#655f70;font-size:12px;line-height:1.4}.user-info-popover:before{content:"";position:absolute;right:14px;top:-6px;width:10px;height:10px;transform:rotate(45deg);border-left:1px solid #e5deed;border-top:1px solid #e5deed;background:#fff}.user-info-popover-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:11px;color:#514a60}.user-info-popover-head b{font-size:12px;font-weight:850}.user-info-popover-head button{display:grid;place-items:center;width:25px;height:25px;padding:0;border:0;border-radius:7px;color:#958da2;background:#f5f2f8}.user-info-line{display:flex;align-items:center;gap:8px;min-height:25px;color:#777183}.user-info-line>svg{width:14px;height:14px;flex:0 0 14px;color:#8d82a4}.user-info-line .user-status-dot{margin:0 3px 0 2px}.user-info-login{display:grid;gap:3px;margin-top:8px;padding-top:9px;border-top:1px solid #eeeaf2}.user-info-login>span{color:#9a93a4;font-size:10px}.user-info-login>b{color:#5c5568;font-size:12px;overflow-wrap:anywhere}:root[data-theme=dark-soft] .user-action-btn.connect-toggle.connect{color:#dfd2ff;border-color:#62547f;background:#39334c}:root[data-theme=dark-soft] .user-action-btn.connect-toggle.connect:hover:not(:disabled){background:#49405f;border-color:#79699a}:root[data-theme=dark-soft] .user-action-btn.connect-toggle.disconnect{color:#f0aab3;border-color:#66444e;background:#382d38}:root[data-theme=dark-soft] .user-action-btn.user-info-btn{color:#c0b7d7;border-color:#414e62;background:#252e3d}:root[data-theme=dark-soft] .user-action-btn.user-info-btn:hover,:root[data-theme=dark-soft] .user-action-btn.user-info-btn.is-open{color:#e4d7ff;border-color:#665980;background:#39334c}:root[data-theme=dark-soft] .user-info-popover{color:#c4ccda;border-color:#46536a;background:#252e3d;box-shadow:0 14px 38px #00000059}:root[data-theme=dark-soft] .user-info-popover:before{border-color:#46536a;background:#252e3d}:root[data-theme=dark-soft] .user-info-popover-head{color:#edf0f6}:root[data-theme=dark-soft] .user-info-popover-head button{color:#c4ccda;background:#354155}:root[data-theme=dark-soft] .user-info-line,:root[data-theme=dark-soft] .user-info-login>span{color:#bbc4d3}:root[data-theme=dark-soft] .user-info-login{border-top-color:#414e62}:root[data-theme=dark-soft] .user-info-login>b{color:#edf0f6}@media(max-width:760px){.user-action-btn.connect-toggle{min-width:118px;height:40px;padding:0 11px}.user-action-btn.user-info-btn{width:40px;height:40px;flex-basis:40px}}@media(max-width:520px){.user-info-popover{right:-48px}}.graph-panel .unassigned{width:100%;min-width:0}.graph-panel .unassigned-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));align-items:stretch;gap:26px;width:100%;min-width:0}.graph-panel .unassigned-grid .unassigned-student-card{display:flex;flex-direction:column;align-items:stretch;justify-content:space-between;gap:12px;width:100%;max-width:100%;min-width:0;min-height:112px;padding:13px 14px;box-sizing:border-box;overflow:hidden}.graph-panel .unassigned-student-card>.person-main{display:flex;align-items:center;width:100%;min-width:0;max-width:100%;gap:12px;overflow:hidden}.graph-panel .unassigned-student-card>.person-main>.avatar{flex:0 0 44px;width:44px;height:44px}.graph-panel .unassigned-student-card .person-info{flex:1 1 0%;width:0;min-width:0;max-width:100%;overflow:hidden}.graph-panel .unassigned-student-card .person-info b{display:block;max-width:100%;overflow:visible;white-space:normal;overflow-wrap:anywhere;word-break:normal;text-overflow:clip;line-height:1.25}.graph-panel .unassigned-student-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-width:0;margin-top:auto}.graph-panel .unassigned-student-actions .person-actions{display:flex;align-items:center;flex:0 0 auto;gap:4px}.graph-panel .unassigned-student-actions .person-actions button{flex:0 0 34px;width:34px;height:34px}.graph-panel .unassigned-student-actions .btn{flex:0 0 auto;min-height:36px;padding:8px 13px;white-space:nowrap}.graph-panel .unassigned-grid .unassigned-student-card{background:#fff;border-color:#e9e3f2}.graph-panel .unassigned-grid .unassigned-student-card:hover{border-color:#d8c8eb;box-shadow:0 5px 17px #573e9914}:root[data-theme=dark-soft] .graph-panel .unassigned-grid .unassigned-student-card{background:#2b3541!important;background-image:none!important;border-color:#4a5864!important;box-shadow:none!important;color:#e4e8f0!important}:root[data-theme=dark-soft] .graph-panel .unassigned-grid .unassigned-student-card .avatar{background:#41414b!important;color:#e0b1a8!important}:root[data-theme=dark-soft] .graph-panel .unassigned-grid .unassigned-student-card:hover{background:#30394a!important;border-color:#66728c!important}@media(max-width:760px){.graph-panel .unassigned-grid{grid-template-columns:minmax(0,1fr);gap:11px}.graph-panel .unassigned-student-card{min-height:0;padding:12px}.graph-panel .unassigned-student-actions .person-actions button{flex-basis:32px;width:32px;height:32px}}@media(max-width:380px){.graph-panel .unassigned-student-card{padding:10px;gap:10px}.graph-panel .unassigned-student-card>.person-main{gap:9px}.graph-panel .unassigned-student-card>.person-main>.avatar{flex-basis:38px;width:38px;height:38px}.graph-panel .unassigned-student-actions{gap:7px}.graph-panel .unassigned-student-actions .btn{padding:7px 10px}}.confirm-delete-modal .modal-head{align-items:center;margin-bottom:14px}.confirm-delete-modal .modal-head h2{color:var(--ink)}.confirm-delete-modal>.hint{margin:0 0 20px;font-size:13px;line-height:1.6}.confirm-delete-modal>.hint b{color:var(--ink);font-weight:800}.confirm-delete-modal .modal-actions{justify-content:flex-end;gap:10px}.confirm-delete-modal .btn{min-height:42px;padding:10px 15px;border-radius:11px}.confirm-delete-modal .btn.danger{color:#fff;border-color:#c95767;background:linear-gradient(110deg,#bf5263,#d46b78);box-shadow:0 5px 16px #bf526330}.confirm-delete-modal .btn.danger:hover:not(:disabled){background:linear-gradient(110deg,#a94455,#c45b69);box-shadow:0 7px 19px #bf526340}.confirm-delete-modal .btn.danger svg{width:16px;height:16px}:root[data-theme=dark-soft] .confirm-delete-modal .modal-head h2,:root[data-theme=dark-soft] .confirm-delete-modal>.hint b{color:#edf0f6}:root[data-theme=dark-soft] .confirm-delete-modal .btn.danger{color:#fff;border-color:#97505c;background:linear-gradient(110deg,#934656,#aa5967);box-shadow:0 5px 16px #00000038}@media(max-width:760px){.confirm-delete-modal .modal-actions{flex-wrap:nowrap}.confirm-delete-modal .modal-actions .btn{flex:1 1 0;min-width:0}}html,body,button,input,select,textarea{font-family:Onest,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.user-person-info>b{font-size:16px;font-weight:700;letter-spacing:-.18px;line-height:1.35}@media(max-width:760px){.user-person-info>b{font-size:15px}}@media(min-width:761px){.chat-layout{min-height:620px;height:min(760px,calc(100vh - 230px));max-height:calc(100vh - 190px);min-width:0}.chat-list{display:flex;flex-direction:column;align-items:stretch;min-width:0;min-height:0;max-height:none;overflow:hidden;gap:0;box-sizing:border-box}.chat-list-tools{position:relative;z-index:1;flex:0 0 auto;width:100%;box-sizing:border-box;margin:0}.chat-items-scroll{display:flex;flex:1 1 auto;flex-direction:column;align-items:stretch;gap:7px;width:100%;min-width:0;min-height:0;padding-top:10px;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-width:thin}.chat-items-scroll>.chat-item{display:grid;flex:0 0 auto;width:100%;min-width:0;min-height:max-content;box-sizing:border-box}}.chat-layout{height:clamp(480px,calc(100dvh - 275px),1100px);min-height:0;align-items:stretch}.chat-list{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.chat-list-tools{flex:0 0 auto;min-width:0}.chat-items-scroll{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-width:thin}.chat-detail{display:flex;flex-direction:column;min-height:0;overflow:hidden}.chat-detail>.messages{flex:1 1 auto;min-height:0;max-height:none;overflow-y:auto}@media(max-width:760px){.chat-layout{height:clamp(520px,calc(100dvh - 205px),1000px);min-height:0;grid-template-rows:clamp(150px,27dvh,245px) minmax(0,1fr)}.chat-list{height:100%;max-height:none;min-height:0;border-right:0;border-bottom:1px solid var(--line)}.chat-detail{min-height:0;height:100%}.chat-detail>.messages{max-height:none}}@media(max-height:650px)and (min-width:761px){.chat-layout{height:max(420px,calc(100dvh - 220px))}}@media(min-width:761px){.chats-shell{height:100dvh;min-height:0;overflow:hidden}.chats-main{height:100dvh;min-height:0;display:flex;flex-direction:column;overflow:hidden}.chats-content{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding-bottom:24px}.chats-content>.chat-layout{flex:1 1 auto;height:auto;min-height:0;max-height:none}}@media(max-width:760px){.chats-shell{height:100dvh;min-height:0;display:flex;flex-direction:column;overflow:hidden}.chats-shell>.sidebar{flex:0 0 auto}.chats-main{flex:1 1 auto;height:auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}.chats-main>.topbar{flex:0 0 54px}.chats-content{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding-bottom:14px}.chats-content>.chat-layout{flex:1 1 auto;height:auto;min-height:0;max-height:none;grid-template-rows:clamp(130px,25dvh,210px) minmax(0,1fr)}}
