@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--bg:#f5f6fb;--panel:#fff;--ink:#202337;--muted:#85899f;--line:#eceef5;--purple:#6658d9;--purple-dark:#5546c8;--mint:#dff7ed;--shadow:0 8px 30px rgba(33,38,74,.035)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:'DM Sans',sans-serif;font-size:14px}button,input,select{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:250px;background:#fff;border-right:1px solid var(--line);padding:26px 16px 14px;display:flex;flex-direction:column;z-index:4}.brand{display:flex;align-items:center;gap:11px;padding:0 12px 27px;color:var(--ink);text-decoration:none;font-family:Manrope,sans-serif;font-weight:800;font-size:21px;letter-spacing:-.7px}.brand small{display:block;font-family:'DM Sans',sans-serif;font-size:10px;color:#a1a4b5;font-weight:500;letter-spacing:.2px;margin-top:1px}.brand-mark{width:38px;height:38px;border-radius:13px;background:var(--purple);color:#fff;display:inline-grid;place-items:center;font-family:Manrope,sans-serif;font-size:24px;font-weight:800;box-shadow:0 5px 12px #6658d933}.school-switch{border:1px solid var(--line);border-radius:12px;padding:12px 10px;display:flex;align-items:center;gap:9px;margin-bottom:30px}.school-switch b,.school-switch small{display:block}.school-switch b{font-size:11px}.school-switch small{font-size:10px;color:var(--muted);margin-top:4px}.school-dot{width:29px;height:29px;border-radius:9px;background:#f0efff;position:relative;flex-shrink:0}.school-dot:after{content:'✳';position:absolute;inset:0;display:grid;place-items:center;color:var(--purple)}.chevron{margin-left:auto;color:#a2a5b5}.nav-label{font-size:9px;font-weight:700;color:#a1a4b5;letter-spacing:1.2px;padding:0 12px 10px}.sidebar nav{display:grid;gap:5px}.nav-item{border:0;background:transparent;color:#777c92;text-align:left;padding:12px;border-radius:10px;display:flex;align-items:center;gap:13px;font-size:12px;font-weight:600}.nav-item>span{font-size:18px;width:18px;text-align:center}.nav-item.active{background:#f0efff;color:var(--purple)}.sidebar-bottom{margin-top:auto}.help-card{background:#f7f6ff;border:1px solid #eeecff;padding:14px;border-radius:13px;margin-bottom:13px}.help-icon{color:var(--purple);font-size:18px}.help-card b{display:block;font-size:11px;margin-top:7px}.help-card p{font-size:10px;line-height:1.6;color:#888ba0;margin:5px 0 0}.role-switch{width:100%;border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px;color:#777b90;font-size:11px;margin-bottom:13px}.profile-mini{border-top:1px solid var(--line);padding:15px 3px 0;display:flex;align-items:center;gap:9px}.avatar{width:34px;height:34px;border-radius:11px;background:#fce7f0;color:#b64d7b;display:grid;place-items:center;font-weight:700;font-size:12px;flex-shrink:0}.profile-mini b,.profile-mini small{display:block;max-width:135px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-mini b{font-size:10px}.profile-mini small{font-size:10px;color:var(--muted);margin-top:4px}.dots{border:0;background:none;color:#9da0b1;margin-left:auto;font-size:20px}.main-content{margin-left:250px;max-width:1800px;padding:0 42px}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e9ebf3}.breadcrumbs{font-size:11px;color:#9a9db0}.breadcrumbs span{padding:0 10px;color:#d1d3de}.breadcrumbs b{color:#5d6075;font-weight:600}.top-actions{display:flex;align-items:center;gap:18px}.live-pill{font-size:10px;color:#777c92;background:#fff;border:1px solid var(--line);border-radius:20px;padding:8px 11px}.live-pill i{display:inline-block;width:6px;height:6px;background:#37be86;border-radius:50%;margin-right:6px}.icon-button{position:relative;border:0;background:#fff;border-radius:10px;width:34px;height:34px;color:#85899f;font-size:19px}.icon-button em{position:absolute;width:5px;height:5px;border-radius:50%;background:#ed83a7;right:7px;top:7px}.small-avatar{width:32px;height:32px}.mobile-brand{display:none}.page-heading{padding:32px 0 25px;display:flex;justify-content:space-between;align-items:center;gap:20px}.eyebrow{font-size:9px;letter-spacing:1.4px;color:#9296ac;font-weight:700;margin-bottom:10px}.page-heading h1{font:800 clamp(22px,2.2vw,29px)/1.3 Manrope,sans-serif;letter-spacing:-1px;margin:0}.page-heading h1 span{font-size:20px;color:#ef9cbd;margin-left:5px}.page-heading p{color:var(--muted);font-size:12px;margin:8px 0 0}.primary-button{border:0;background:var(--purple);color:#fff;border-radius:10px;padding:12px 16px;font-size:11px;font-weight:700;box-shadow:0 5px 13px #6658d91f;transition:.2s}.primary-button:hover{background:var(--purple-dark);transform:translateY(-1px)}.primary-button span{margin-left:8px}.stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.stat-card,.panel{background:var(--panel);border:1px solid #eceef5;border-radius:15px;box-shadow:var(--shadow)}.stat-card{padding:18px 19px 16px;min-height:153px;position:relative;overflow:hidden}.stat-top{display:flex;align-items:center;justify-content:space-between;color:#7d8197;font-size:11px;font-weight:600}.stat-icon{width:29px;height:29px;display:grid;place-items:center;border-radius:9px;font-size:15px}.lilac{background:#f0efff;color:#695bd8}.mint{background:#e5f8ef;color:#39a879}.peach{background:#fff0e7;color:#dc9363}.stat-number{font:800 29px Manrope,sans-serif;letter-spacing:-1.1px;margin-top:12px}.stat-number small{font:500 11px 'DM Sans',sans-serif;letter-spacing:0;color:#9a9db0}.stat-foot{font-size:10px;margin-top:7px}.positive{color:#35a77a}.positive span,.muted{color:#9a9db0}.mini-bars{position:absolute;right:18px;bottom:17px;height:38px;display:flex;align-items:end;gap:4px;opacity:.85}.mini-bars i{width:6px;background:#b9b1ff;border-radius:4px 4px 1px 1px}.mini-bars i:nth-child(2n){background:#d7d2ff}.stat-line{height:4px;background:#f1f0fc;border-radius:10px;margin-top:17px;overflow:hidden}.stat-line span{height:100%;display:block;background:#a9a0f5;border-radius:10px}.task-dots{display:flex;gap:4px;margin-top:18px}.task-dots i{width:8px;height:8px;border-radius:3px;background:#f8d7c4}.task-dots i:nth-child(-n+8){background:#f4b995}.content-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:16px;margin-top:17px}.panel{padding:21px;margin-bottom:17px;min-width:0}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}.panel-heading h2{font:800 15px Manrope,sans-serif;letter-spacing:-.4px;margin:0}.panel-heading p{font-size:10px;color:#9a9db0;margin:6px 0 0}.text-button{border:0;background:none;color:var(--purple);font-size:10px;font-weight:700;white-space:nowrap}.grade-list{display:grid}.grade-item{display:grid;grid-template-columns:minmax(0,1fr) 35px;align-items:center;gap:10px;padding:12px 0;border-top:1px solid #f1f2f7}.grade-item:first-child{border-top:0;padding-top:0}.subject-cell{display:flex;align-items:center;gap:10px;min-width:0}.subject-symbol{width:34px;height:34px;flex-shrink:0;border-radius:10px;display:grid;place-items:center;font-weight:700;font-size:13px}.subject-cell b,.subject-cell small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.subject-cell b{font-size:11px}.subject-cell small{font-size:10px;color:#a0a3b4;margin-top:4px}.grade-badge{width:31px;height:31px;display:grid;place-items:center;border-radius:10px;font:800 14px Manrope,sans-serif}.g5{background:#e1f7eb;color:#289d6b}.g4{background:#e9e8ff;color:#6558d7}.g3{background:#fff1d9;color:#ca8c22}.g2{background:#ffe7e7;color:#d65353}.schedule-panel{padding-bottom:16px}.date-button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 10px;font-size:10px;color:#777b90}.date-button span{margin-left:9px}.timeline{display:grid;gap:0}.timeline-item{display:grid;grid-template-columns:44px 3px minmax(0,1fr);gap:10px;min-height:59px}.timeline-time{font-size:10px;color:#a1a4b5;padding-top:4px}.timeline-rail{position:relative;background:#eeeaff;border-radius:5px;margin:2px 0 0}.timeline-rail:after{content:'';position:absolute;top:3px;left:-3px;width:9px;height:9px;border-radius:50%;background:#a49bf3;border:2px solid #fff;box-shadow:0 0 0 1px #d9d5ff}.timeline-item:nth-child(2) .timeline-rail:after{background:#f2b2c9;box-shadow:0 0 0 1px #f7d9e4}.timeline-item:nth-child(3) .timeline-rail:after{background:#8fd8bc;box-shadow:0 0 0 1px #d3f0e3}.timeline-info b{font-size:11px;display:block}.timeline-info small{display:block;font-size:10px;color:#a0a3b4;margin-top:5px}.wide-secondary{width:100%;border:1px solid var(--line);background:#fff;border-radius:9px;padding:11px;color:#747990;font-size:10px;margin-top:4px}.wide-secondary span{float:right;color:var(--purple)}.homework-panel{margin-top:0}.homework-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.homework-item{border:1px solid #eff0f6;border-radius:12px;padding:13px;display:flex;gap:10px;align-items:flex-start}.homework-check{appearance:none;width:17px;height:17px;border:1px solid #d8dbea;border-radius:5px;flex-shrink:0;margin:1px 0 0;cursor:pointer}.homework-check:checked{background:var(--purple);border-color:var(--purple)}.homework-check:checked:after{content:'✓';display:block;color:white;text-align:center;font-size:11px}.homework-item b{display:block;font-size:11px;line-height:1.5}.homework-item p{font-size:10px;color:#9a9db0;margin:5px 0 8px;line-height:1.5}.deadline{font-size:9px;color:#ca8c59;background:#fff4e9;padding:5px 7px;border-radius:6px;display:inline-block}.footnote{font-size:10px;color:#a1a4b5;margin:16px 0 0}.filter-row{display:flex;gap:7px}.filter-row select,.grade-form select,.grade-form input,.login-card input,.login-card select{border:1px solid #e8eaf2;background:#fff;border-radius:8px;padding:9px;color:#656a80;font-size:11px;min-width:0}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:590px}th{text-align:left;color:#a1a4b5;font-size:9px;letter-spacing:.8px;font-weight:700;padding:12px 10px;border-bottom:1px solid var(--line)}td{padding:13px 10px;border-bottom:1px solid #f1f2f7;font-size:11px;color:#646980}td:first-child{font-weight:700;color:#303349}.teacher-tools{background:#f8f7ff;border:1px solid #eceaff;border-radius:12px;padding:15px;margin-bottom:18px}.teacher-tools h3{margin:0 0 12px;font:800 12px Manrope}.grade-form{display:grid;grid-template-columns:1fr 1fr .6fr 1.4fr auto;gap:8px;align-items:end}.grade-form label,.login-card label{display:grid;gap:6px;font-size:10px;color:#85899f}.grade-form .primary-button{padding:11px 12px;white-space:nowrap}.soft-tag{font-size:10px;color:var(--purple);background:#f0efff;padding:8px 10px;border-radius:8px}.full-schedule{display:grid;gap:9px}.full-lesson{display:grid;grid-template-columns:65px 4px minmax(0,1fr) auto;gap:14px;align-items:center;padding:13px;border:1px solid #f0f1f6;border-radius:12px}.full-lesson .lesson-time{font-size:10px;color:#969aaf}.lesson-stripe{height:39px;border-radius:5px;background:#d6d0ff}.full-lesson:nth-child(2n) .lesson-stripe{background:#f6d4e2}.full-lesson:nth-child(3n) .lesson-stripe{background:#c8efdf}.full-lesson b{display:block;font-size:12px}.full-lesson small{display:block;color:#9a9db0;font-size:10px;margin-top:5px}.room{font-size:10px;color:#85899f;background:#f7f8fc;border-radius:7px;padding:7px}.hidden{display:none!important}footer{display:flex;justify-content:space-between;color:#b1b4c3;font-size:9px;letter-spacing:1px;padding:12px 2px 25px}footer span{letter-spacing:0}.notice{border:1px solid #f3dfae;background:#fff9e9;color:#94732b;padding:12px 14px;border-radius:10px;font-size:11px;margin-bottom:16px}.modal-backdrop{position:fixed;inset:0;background:rgba(31,32,57,.38);backdrop-filter:blur(7px);display:grid;place-items:center;padding:20px;z-index:20}.login-card{background:#fff;width:min(100%,390px);border-radius:20px;padding:30px;box-shadow:0 25px 80px #22233d2e}.login-logo{margin-bottom:21px}.login-card h2{font:800 24px Manrope;margin:0;letter-spacing:-.8px}.login-card>p{font-size:11px;color:#9296a9;margin:8px 0 21px}.login-card label{margin-top:13px}.login-card input,.login-card select{width:100%;padding:12px;font-size:12px}.login-submit{width:100%;margin-top:20px;padding:14px}.demo-hint{font-size:10px;line-height:1.8;color:#a0a3b4;text-align:center;margin-top:17px}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);background:#292a40;color:#fff;padding:12px 18px;border-radius:10px;font-size:11px;opacity:0;pointer-events:none;transition:.25s;z-index:30}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:1100px){.main-content{padding:0 24px}.sidebar{width:220px}.main-content{margin-left:220px}.grade-form{grid-template-columns:1fr 1fr .7fr}.grade-form label:nth-child(4){grid-column:span 2}.grade-form button{grid-column:3}.content-grid{grid-template-columns:1fr}.homework-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.sidebar{display:none}.main-content{margin:0;padding:0 15px}.topbar{height:62px}.mobile-brand{display:flex;align-items:center;gap:8px;font:800 17px Manrope}.mobile-brand .brand-mark{width:29px;height:29px;border-radius:9px;font-size:18px}.breadcrumbs{display:none}.top-actions{gap:9px}.live-pill{font-size:0;padding:8px}.live-pill i{margin:0}.page-heading{padding:25px 0 19px;align-items:flex-start}.page-heading h1{font-size:23px}.page-heading p{font-size:11px;line-height:1.5}.page-heading>.primary-button{font-size:0;padding:11px 13px;flex-shrink:0}.page-heading>.primary-button span{display:none}.stats-grid{grid-template-columns:1fr 1fr;gap:10px}.stat-card{padding:14px;min-height:140px}.stat-card:last-child{grid-column:span 2;min-height:120px}.stat-number{font-size:26px}.mini-bars{right:12px;bottom:14px}.content-grid{gap:0;margin-top:12px}.panel{padding:15px;border-radius:13px;margin-bottom:12px}.panel-heading h2{font-size:14px}.grades-panel,.schedule-panel{margin-bottom:12px}.homework-list{grid-template-columns:1fr}.homework-item{padding:12px}.filter-row{width:100%}.panel-heading:has(.filter-row){align-items:flex-start;flex-direction:column}.filter-row select{flex:1}.grade-form{grid-template-columns:1fr 1fr}.grade-form label:nth-child(4){grid-column:span 2}.grade-form button{grid-column:span 2}.full-lesson{grid-template-columns:49px 4px minmax(0,1fr);gap:9px;padding:10px}.room{grid-column:3;justify-self:start}.page-heading .eyebrow{font-size:8px}.top-actions .small-avatar{display:none}footer{font-size:8px}footer span{max-width:150px;text-align:right}.login-card{padding:25px}.notice{line-height:1.5}}
