@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap");:root{--primary:#2563eb;--ai:#0d9488;--ink:#0f172a;--muted:#64748b;--bg:#f8fafc;--border:#e2e8f0;--surface:#fff;--sidebar:260px;--topbar:64px;font-family:Inter,system-ui,sans-serif;color:var(--ink);background:var(--bg);font-size:14px;line-height:1.5}*{box-sizing:border-box}body{margin:0}h1,h2,h3,p{margin:0 0 12px}h1{font-size:25px;line-height:1.35;letter-spacing:-.5px}h2{font-size:18px}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}a,button,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}[tabindex]:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #93c5fd;outline-offset:3px}button,input,select,textarea{min-height:42px}input:not([type=checkbox]),select,textarea{width:100%;padding:10px 12px;border:1px solid #cbd5e1;border-radius:10px;background:white;color:var(--ink)}input[type=checkbox]{min-height:auto;width:18px;height:18px}textarea{resize:vertical}label{display:block;font-weight:500}label input,label select,label textarea{margin-top:6px}.muted,small{color:var(--muted)}small{font-size:12px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.skip-link{position:fixed;top:6px;left:6px;background:white;z-index:100;padding:10px;transform:translateY(-150%)}.skip-link:focus{transform:none}.brand{display:flex;align-items:center;gap:10px;color:var(--primary)}.brand:hover{text-decoration:none}.brand strong{font-size:25px;line-height:1.1;letter-spacing:-.5px}.brand small{display:block;font-size:10px;white-space:nowrap}.brand>svg{flex-shrink:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 1px 2px #0f172a03}.padded{padding:24px}.narrow{max-width:640px}.button{border:1px solid #cbd5e1;border-radius:10px;background:white;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;min-height:42px;font-weight:500}.button:hover{text-decoration:none;background:#f1f5f9}.button.primary{background:var(--primary);border-color:var(--primary);color:white}.button.primary:hover{background:#1d4ed8}.button.danger{color:#b91c1c;border-color:#fecaca}.icon-button{border:0;background:transparent;border-radius:8px;min-width:40px;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);font-size:24px}.actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.form-stack{display:flex;flex-direction:column;gap:18px}.form-stack small{display:block;margin-top:6px}.notice{padding:12px 16px;border:1px solid #bfdbfe;background:#eff6ff;border-radius:10px;color:#1e40af;margin:16px 0}.notice.error{background:#fef2f2;border-color:#fecaca;color:#b91c1c}.notice.success{background:#f0fdf4;border-color:#bbf7d0;color:#166534}.state-panel{text-align:center;padding:56px 24px;margin:16px 0}.state-panel h2{margin-top:16px}.state-panel p{color:var(--muted);max-width:480px;margin:0 auto 18px}.state-panel .actions{justify-content:center}.state-icon{width:52px;height:52px;background:#eff6ff;border-radius:50%;display:grid;place-items:center;color:var(--primary);margin:auto}.loader{display:inline-block;width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@media(prefers-reduced-motion:reduce){.loader{animation:none}}.standalone{max-width:820px;padding:36px 24px;margin:auto}.standalone>.brand{margin-bottom:36px}.app-shell{height:100dvh;display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr);grid-template-rows:var(--topbar) minmax(0,1fr)}.sidebar{grid-column:1;grid-row:1/3;display:flex;flex-direction:column;padding:26px 18px;background:white;border-right:1px solid var(--border);min-height:0;overflow:auto}.sidebar>.brand{margin:0 12px 30px}.sidebar nav{display:grid;grid-gap:5px;gap:5px}.nav-link{display:flex;gap:12px;align-items:center;padding:11px 14px;border-radius:9px;color:#475569;min-height:44px}.nav-link svg{flex-shrink:0}.nav-link.active{background:#eff6ff;color:var(--primary);font-weight:600}.nav-link:hover{background:#f1f5f9;text-decoration:none}.sidebar-footer{margin-top:auto;border-top:1px solid var(--border);padding:20px 12px 0}.actor{display:inline-flex;align-items:center;gap:9px;color:var(--ink);font-size:13px;font-weight:500;white-space:nowrap}.avatar{width:32px;height:32px;border-radius:50%;background:#dbeafe;color:#1d4ed8;display:grid;place-items:center;font-size:11px;font-weight:600;flex-shrink:0}.topbar{grid-column:2;grid-row:1;gap:16px;padding:0 32px;background:white;border-bottom:1px solid var(--border)}.breadcrumb,.topbar{display:flex;align-items:center;min-width:0}.breadcrumb{gap:12px;flex:1 1;color:var(--muted);font-size:12px}.breadcrumb>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main-region{grid-column:2;grid-row:2;min-width:0;min-height:0;overflow:auto;padding:24px 32px 48px}.page-heading{display:flex;gap:20px;align-items:center;justify-content:space-between;margin:8px 0 24px}.page-heading h1{margin:0}.page-heading p{margin-top:8px}.class-header{margin:0 0 26px}.class-summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:0 0 16px}.class-summary strong{font-size:16px}.class-summary .muted{font-size:12px}.tag{font-size:11px;font-weight:600;color:var(--primary);background:#eff6ff;border-radius:4px;padding:3px 7px}.status,.tag{white-space:nowrap}.status{display:inline-block;font-size:12px;color:#166534;border-radius:99px;background:#f0fdf4;padding:3px 9px}.class-tabs{display:flex;gap:24px;overflow:auto;scrollbar-width:thin;white-space:nowrap;border-bottom:1px solid var(--border)}.class-tabs a{color:#475569;display:flex;gap:7px;align-items:center;padding:12px 0;border-bottom:2px solid transparent;font-size:13px}.class-tabs a.active{color:var(--primary);border-color:var(--primary);font-weight:600}.class-tabs a:hover{text-decoration:none}.two-columns{display:grid;grid-template-columns:1.1fr 1fr;grid-gap:24px;gap:24px}.details{display:grid;grid-template-columns:140px 1fr;margin:24px 0;grid-gap:10px;gap:10px}.details dt{color:var(--muted)}.details dd{margin:0}.link-list{display:grid;grid-gap:14px;gap:14px;margin:24px 0}.check-label{gap:10px;margin:20px 0}.check-label,.section-heading{display:flex;align-items:center}.section-heading{gap:16px;justify-content:space-between;margin-bottom:20px}.section-heading h2{margin:0}.item-list{padding:0;list-style:none}.item-list li{padding:16px 0;border-bottom:1px solid var(--border)}.item-list .status{margin-left:12px}.item-list p{margin-top:10px;overflow-wrap:anywhere}.class-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));grid-gap:20px;gap:20px;margin-bottom:24px}.class-card{padding:24px}.class-card h2{margin-top:16px}.class-card-icon{display:grid;place-items:center;width:44px;height:44px;background:#eff6ff;border-radius:10px;color:var(--primary);margin-bottom:18px}.workspace-content{display:grid;grid-template-columns:minmax(0,1fr);min-width:0;grid-gap:24px;gap:24px}.table-scroll{overflow:auto;contain:inline-size layout paint;border-radius:12px}table{border-collapse:collapse;width:100%;min-width:600px}td,th{padding:16px 20px;text-align:left;border-bottom:1px solid var(--border)}th{font-size:12px;color:var(--muted);font-weight:500;background:#f8fafc}.focused-shell{height:100dvh;display:flex;flex-direction:column}.task-header{height:64px;flex-shrink:0;padding:0 28px;display:flex;align-items:center;gap:24px;background:white;border-bottom:1px solid var(--border)}.task-title{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.focused-main{padding:24px 32px 48px;overflow:auto;min-height:0}.back-link{display:inline-flex;align-items:center;gap:8px;margin:0 0 20px}.mobile-menu{display:none}dialog{border:1px solid var(--border);border-radius:14px;padding:0;width:min(520px,calc(100vw - 32px));max-height:calc(100dvh - 32px);color:var(--ink);box-shadow:0 24px 64px #0f172a33}dialog:not([open]){display:none}dialog::-webkit-backdrop{background:#0f172a66}dialog::backdrop{background:#0f172a66}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--border)}.dialog-header h2{margin:0}.dialog-body{padding:24px}.auth-shell{min-height:100dvh;display:grid;grid-template-columns:45% 55%;background:white}.auth-story{padding:44px 56px;display:flex;flex-direction:column;justify-content:space-between;background:#eff6ff;position:relative;isolation:isolate}.auth-story:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 90% 40%,#bfdbfe88,transparent 50%);z-index:-1}.auth-story h2{font-size:44px;letter-spacing:-1.5px;line-height:1.15;margin:20px 0;color:#1e3a8a}.auth-story p{color:#475569;max-width:340px;font-size:16px}.eyebrow{font-size:11px;font-weight:600;letter-spacing:1.5px;color:var(--primary)}.auth-form-region{display:flex;align-items:center;justify-content:center;padding:48px 32px}.auth-card{width:100%;max-width:400px}.auth-card h1{font-size:28px;margin-bottom:8px}.segmented{display:flex;background:#f1f5f9;padding:4px;border-radius:10px;margin:28px 0 24px}.segmented button{flex:1 1;background:transparent;border:0;border-radius:7px;padding:8px;font-size:12px;color:#64748b}.segmented button[aria-pressed=true]{background:white;color:var(--primary);box-shadow:0 1px 4px #0f172a12;font-weight:600}.auth-links{display:flex;justify-content:space-between;gap:16px;margin-top:24px;font-size:12px}.auth-mobile-brand{display:none}.book-art{position:relative;max-width:360px;text-align:center;padding-top:24px}.book-art>span{position:absolute;color:#60a5fa;font-size:40px}.book-art>span:first-child{left:0;top:36px;transform:rotate(-12deg)}.book-art>span:nth-child(2){right:5px;top:50px;transform:rotate(15deg)}.book-art>span:nth-child(3){right:70px;top:5px;font-size:25px}.preview-bar{position:fixed;bottom:0;left:0;right:0;z-index:90;background:#78350f;color:#fff7ed;font-size:12px;text-align:center;padding:6px 16px;pointer-events:none}@media(max-width:1100px){:root{--sidebar:224px}.sidebar{padding:24px 12px}.topbar{padding:0 24px}.main-region{padding:24px}.class-tabs{gap:20px}.two-columns{grid-template-columns:1fr}.auth-story{padding:36px}.auth-story h2{font-size:38px}}@media(max-width:760px){.app-shell{grid-template-columns:minmax(0,1fr)}.sidebar{display:none}.topbar{grid-column:1;padding:0 16px;gap:10px}.main-region{grid-column:1;padding:20px 16px 48px}.mobile-menu{display:inline-flex}.actor>span:last-child{display:none}.page-heading{align-items:flex-start;flex-direction:column;gap:12px}.page-heading h1{font-size:22px}.class-summary .muted{flex-basis:100%}.class-tabs{gap:20px}.class-tabs a{min-height:44px}.padded{padding:20px}.state-panel{padding:36px 20px}.auth-shell{display:block;background:#f8fafc}.auth-story{display:none}.auth-form-region{padding:32px 20px;min-height:100dvh}.auth-mobile-brand{display:block;margin-bottom:40px}.auth-card{background:white;padding:28px 20px;border:1px solid var(--border);border-radius:16px}.auth-card h1{font-size:24px}.task-header{padding:0 16px;gap:12px}.task-header .brand small{display:none}.task-header .brand strong{font-size:20px}.task-title{font-size:12px}.focused-main{padding:20px 16px 48px}.actions .button{flex:1 1}.preview-bar{font-size:10px}.dialog-body .nav-link{margin-bottom:4px}}.tag.primary{background:#eff6ff;color:#1d4ed8}.tag.secondary{background:#f1f5f9;color:#475569}.tag.danger{background:#fef2f2;color:#dc2626}.tag.info{background:#ecfeff;color:#0891b2}.tag-blue{background:#eff6ff;color:#1d4ed8}.tag-amber{background:#fffbeb;color:#b45309}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:9999px;font-size:11px;font-weight:600}.badge.primary{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}.badge.secondary{background:#f8fafc;color:#475569;border:1px solid #cbd5e1}.badge.info{background:#f0fdfa;color:#0f766e;border:1px solid #99f6e4}.text-sm{font-size:13px}.text-xs{font-size:11px}.text-primary{color:var(--primary)}.full-width{width:100%}.avatar-circle{width:36px;height:36px;border-radius:50%;background:#dbeafe;color:#1e40af;display:grid;place-items:center;font-weight:600;font-size:12px;flex-shrink:0}.link-button{display:inline-flex;align-items:center;gap:4px;color:var(--primary);font-weight:500;font-size:13px;cursor:pointer}.link-button:hover{text-decoration:underline}.notice-box{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:8px;font-size:12px;margin-top:10px}.notice-box.info{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}.notifications-layout{display:grid;grid-template-columns:360px 1fr;grid-gap:20px;gap:20px;min-height:540px}.notif-list-card{display:flex;flex-direction:column;overflow:hidden}.notif-list-header{align-items:center;justify-content:space-between;padding:16px 20px}.notif-list-header,.notif-tabs{display:flex;border-bottom:1px solid var(--border)}.notif-tabs{background:#f8fafc}.notif-tab{flex:1 1;padding:10px;border:0;background:transparent;font-weight:500;font-size:12px;color:var(--muted);border-bottom:2px solid transparent;cursor:pointer}.notif-tab.active{color:var(--primary);border-bottom-color:var(--primary);background:white;font-weight:600}.notif-items-scroll{overflow-y:auto;max-height:520px}.notif-item{display:flex;gap:12px;padding:14px 18px;border:0;border-bottom:1px solid var(--border);background:transparent;text-align:left;width:100%;cursor:pointer;transition:background .15s}.notif-item:hover{background:#f8fafc}.notif-item.active{background:#eff6ff}.notif-item.unread .notif-title{font-weight:600;color:var(--ink)}.notif-dot{width:8px;height:8px;border-radius:50%;background:var(--primary);flex-shrink:0;margin-top:6px}.notif-dot.read{background:transparent}.notif-content-preview{flex:1 1;min-width:0}.notif-title{font-size:13px;line-height:1.4;margin-bottom:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notif-meta-row{display:flex;align-items:center;justify-content:space-between;font-size:11px}.notif-detail-card{padding:28px;display:flex;flex-direction:column}.notif-detail-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px;border-bottom:1px solid var(--border);padding-bottom:14px}.notif-detail-body{font-size:14px;line-height:1.6;margin-bottom:24px}.calendar-feature{display:flex;flex-direction:column;gap:20px}.cal-top-card{padding:18px 24px;flex-wrap:wrap;justify-content:space-between;gap:16px}.cal-nav-group,.cal-top-card{display:flex;align-items:center}.cal-nav-group{gap:12px}.cal-month-title{font-size:18px;font-weight:700;min-width:160px}.cal-view-modes{display:flex;background:#f1f5f9;padding:3px;border-radius:8px}.cal-view-btn{border:0;background:transparent;padding:6px 12px;font-size:12px;border-radius:6px;color:var(--muted);font-weight:500;cursor:pointer}.cal-view-btn.active{background:white;color:var(--primary);box-shadow:0 1px 3px rgba(0,0,0,.08);font-weight:600}.cal-legend{display:flex;flex-wrap:wrap;gap:16px;font-size:12px;color:var(--muted);padding:0 4px}.cal-legend-item{display:flex;align-items:center;gap:6px}.cal-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.cal-dot.blue{background:#3b82f6}.cal-dot.amber{background:#f59e0b}.cal-dot.red{background:#ef4444}.cal-dot.green{background:#10b981}.cal-main-grid{display:grid;grid-template-columns:1fr 340px;grid-gap:20px;gap:20px}.cal-month-table{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:white}.cal-days-header{background:#f8fafc;border-bottom:1px solid var(--border);font-size:12px;font-weight:600;text-align:center;color:var(--muted);padding:10px 0}.cal-days-header,.cal-month-grid{display:grid;grid-template-columns:repeat(7,1fr)}.cal-month-grid{grid-auto-rows:minmax(90px,1fr)}.cal-day-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:6px;display:flex;flex-direction:column;gap:4px;font-size:12px;min-height:84px;transition:background .15s;cursor:pointer}.cal-day-cell:nth-child(7n){border-right:0}.cal-day-cell.other-month{background:#fafafa;color:#94a3b8}.cal-day-cell.selected{background:#eff6ff;outline:2px solid var(--primary);outline-offset:-2px}.cal-day-num{font-weight:600;margin-bottom:2px}.cal-event-pill{padding:2px 6px;border-radius:4px;font-size:11px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;border:1px solid transparent}.cal-badge-blue{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}.cal-badge-amber{background:#fffbeb;color:#b45309;border-color:#fde68a}.cal-badge-red{background:#fef2f2;color:#b91c1c;border-color:#fecaca}.cal-badge-green{background:#f0fdf4;color:#15803d;border-color:#bbf7d0}.cal-event-detail-card{padding:24px;display:flex;flex-direction:column;gap:14px}.cal-detail-badge{align-self:flex-start}.feed-container{display:flex;flex-direction:column;gap:20px;max-width:840px;margin:0 auto;width:100%}.feed-composer-card{border-radius:12px}.feed-composer-header{display:flex;align-items:center;gap:12px}.feed-posts-stream{display:flex;flex-direction:column;gap:18px}.feed-post-card{border-radius:12px;transition:box-shadow .2s}.feed-post-card.announcement-post{border-left:4px solid var(--primary);background:#fdfeff}.feed-post-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.feed-author-info{display:flex;align-items:center;gap:12px}.feed-author-name-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.feed-post-actions{display:flex;align-items:center;gap:4px}.feed-post-content{font-size:14px;line-height:1.6;margin-bottom:16px;white-space:pre-line}.feed-comments-region{border-top:1px solid var(--border);padding-top:14px;margin-top:12px}.feed-comments-list{display:flex;flex-direction:column;gap:10px;margin-top:10px}.feed-comment-item{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:10px 14px;background:#f8fafc;border-radius:8px;font-size:13px}.feed-comment-main{flex:1 1}.feed-comment-meta{display:flex;align-items:center;gap:8px;margin-bottom:4px;flex-wrap:wrap;font-size:12px}.feed-comment-text{margin:0;line-height:1.4}.feed-comment-input-row{display:flex;gap:8px;margin-top:12px}.home-section{margin-bottom:28px}.section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.home-two-col{display:grid;grid-template-columns:1fr 380px;grid-gap:24px;gap:24px}.home-side-col{gap:24px}.home-side-col,.task-list{display:flex;flex-direction:column}.task-list{gap:12px}.task-item-card{padding:16px 20px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-radius:10px}.task-item-main{flex:1 1;min-width:0}.task-item-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}.days-left-badge{font-size:11px;font-weight:600;color:#b45309}.study-list{gap:12px}.study-item-card,.study-list{display:flex;flex-direction:column}.study-item-card{padding:16px;border-radius:10px;gap:8px}.progress-bar-container{display:flex;align-items:center;gap:10px;margin:4px 0}.progress-bar-track{flex:1 1;height:8px;background:#e2e8f0;border-radius:99px;overflow:hidden}.progress-bar-fill{height:100%;background:var(--primary);border-radius:99px}.progress-bar-text{font-size:11px;color:var(--muted);white-space:nowrap;font-weight:500}.lumi-assistant-card{padding:20px;border-radius:12px;border:1px solid #99f6e4;background:linear-gradient(135deg,#f0fdfa,#f8fafc)}.lumi-badge{display:inline-flex;font-size:12px;font-weight:700;color:#0d9488;margin-bottom:4px}.tutor-suggestion-list{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-direction:column;gap:8px}.tutor-suggestion-pill{display:flex;align-items:center;gap:10px;padding:10px 14px;background:white;border:1px solid #ccfbf1;border-radius:8px;font-size:12px;color:#134e4a;font-weight:500;transition:border-color .15s,box-shadow .15s}.tutor-suggestion-pill:hover{border-color:#5eead4;box-shadow:0 2px 6px rgba(13,148,136,.1);text-decoration:none}.classes-toolbar{padding:14px 20px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.tab-group{display:flex;gap:8px}.tab-btn{border:1px solid var(--border);background:white;padding:8px 16px;border-radius:8px;font-size:13px;font-weight:500;color:var(--muted);cursor:pointer}.tab-btn.active{background:#eff6ff;color:var(--primary);border-color:var(--primary);font-weight:600}.classes-search-input{min-width:260px}.student-class-card,.teacher-class-card{display:flex;flex-direction:column;justify-content:space-between}.class-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.class-card-info{margin:8px 0 16px}.class-card-actions{display:flex;gap:8px;margin-top:auto}.teacher-name{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;margin-bottom:4px}.announcement-hero-card{padding:24px;border-radius:12px;margin-bottom:24px;border-left:4px solid var(--primary)}.announcement-badge-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.announcement-author-row{display:flex;align-items:center;gap:10px;margin-bottom:14px}.announcement-text{font-size:14px;line-height:1.6;margin-bottom:14px}.overview-two-col{display:grid;grid-template-columns:1fr 360px;grid-gap:24px;gap:24px}.activity-list{display:flex;flex-direction:column;gap:12px}.activity-item-card{padding:16px 20px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-radius:10px}.activity-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}.materials-list{display:flex;flex-direction:column;gap:10px}.material-item-card{padding:12px 16px;display:flex;align-items:center;gap:12px;border-radius:8px}.format-tag{font-size:10px;font-weight:700;padding:4px 6px;border-radius:4px;letter-spacing:.5px}.format-tag.pdf{background:#fee2e2;color:#b91c1c}.format-tag.pptx{background:#ffedd5;color:#c2410c}.format-tag.docx{background:#dbeafe;color:#1d4ed8}.material-info{flex:1 1;min-width:0}.lumi-tutor-box{padding:20px;border-radius:12px;background:#f0fdfa;border:1px solid #99f6e4;margin-top:16px}.workload-stats-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px;margin-bottom:24px}.stat-card{padding:20px;display:flex;flex-direction:column;gap:4px}.stat-card.highlight{border-color:#bfdbfe;background:#f8fafc}.stat-value{font-size:28px;font-weight:700;line-height:1.1;margin:4px 0}.teacher-two-col{display:grid;grid-template-columns:1fr 1fr;grid-gap:24px;gap:24px}.discussion-list,.schedule-list{display:flex;flex-direction:column;gap:12px}.schedule-item-card{padding:16px;display:flex;gap:14px;align-items:flex-start;border-radius:8px}.schedule-time-badge{display:flex;align-items:center;gap:6px;background:#eff6ff;color:#1d4ed8;padding:6px 10px;border-radius:6px;font-size:12px;font-weight:600;white-space:nowrap}.discussion-item-card{padding:16px;border-radius:8px;display:flex;flex-direction:column;gap:8px}.disc-header{gap:8px}.disc-header,.teacher-quick-actions-bar{display:flex;align-items:center;flex-wrap:wrap}.teacher-quick-actions-bar{padding:18px 24px;justify-content:space-between;gap:16px;margin-bottom:24px}.quick-actions-buttons{display:flex;gap:10px;flex-wrap:wrap}.class-metrics-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px;margin-bottom:24px}.metric-card{padding:18px;text-align:center}.metric-number{font-size:24px;font-weight:700;margin:4px 0}.student-history-container{display:flex;flex-direction:column;gap:20px}.history-status-banner{display:flex;gap:14px;align-items:flex-start;padding:18px 22px;border-radius:10px}.history-status-banner.warning{background:#fffbeb;border:1px solid #fde68a;color:#92400e}.history-status-banner .banner-icon{color:#d97706;font-size:20px;flex-shrink:0;margin-top:2px}.history-status-banner h3{margin:0 0 6px;font-size:15px;color:#78350f}.history-status-banner p{margin:0;font-size:13px;line-height:1.5;color:#92400e}.history-meta-card{padding:20px 24px}.history-meta-top{display:flex;align-items:center;gap:10px;margin-bottom:8px}.history-meta-details{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:6px}.history-two-col{display:grid;grid-template-columns:1.2fr .8fr;grid-gap:24px;gap:24px}.history-conv-master-detail{display:grid;grid-template-columns:280px 1fr;grid-gap:16px;gap:16px;min-height:400px}.history-conv-list{gap:8px}.conv-list-item{padding:12px 14px;border:1px solid var(--border);border-radius:8px;background:white;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}.conv-list-item.active{border-color:var(--primary);background:#eff6ff}.conv-item-top{align-items:center;margin-bottom:4px}.conv-title{font-weight:600}.conv-preview{margin:0}.history-conv-viewer{padding:20px;display:flex;flex-direction:column;min-height:380px}.viewer-header{display:flex;justify-content:space-between;align-items:flex-start;padding-bottom:12px;border-bottom:1px solid var(--border);margin-bottom:16px}.transcript-messages{display:flex;flex-direction:column;gap:14px;flex:1 1;overflow-y:auto;max-height:450px;padding-right:6px}.transcript-bubble{max-width:85%;padding:12px 16px;border-radius:12px;font-size:13px;line-height:1.5}.transcript-bubble.student{align-self:flex-end;background:#eff6ff;color:#1e3a8a;border-bottom-right-radius:2px}.transcript-bubble.assistant{align-self:flex-start;background:#f8fafc;color:var(--ink);border:1px solid var(--border);border-bottom-left-radius:2px}.bubble-meta{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:4px;font-size:11px;font-weight:600}.viewer-footer{border-top:1px solid var(--border);padding-top:12px;margin-top:14px}.notes-list{display:flex;flex-direction:column;gap:12px}.note-item-card{padding:16px;border-radius:8px}.note-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.note-item-header h4{margin:0}.note-content{margin:0;line-height:1.5;color:#334155}@media(max-width:1100px){.cal-main-grid,.history-two-col,.home-two-col,.overview-two-col{grid-template-columns:1fr}.notifications-layout{grid-template-columns:300px 1fr}.teacher-two-col{grid-template-columns:1fr}}@media(max-width:760px){.notifications-layout{grid-template-columns:1fr}.notif-items-scroll{max-height:300px}.class-metrics-grid,.history-conv-master-detail,.workload-stats-grid{grid-template-columns:1fr}.cal-month-grid{grid-auto-rows:minmax(60px,1fr)}.cal-day-cell{min-height:55px;padding:3px}.cal-event-pill{font-size:9px;padding:1px 3px}.cal-month-title{font-size:15px;min-width:auto}.classes-toolbar{flex-direction:column;align-items:stretch}.classes-search-input{min-width:100%}}.badge.success{background:#f0fdf4;color:#15803d;border:1px solid #bbf7d0}.badge.danger{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}.badge.warning{background:#fffbeb;color:#b45309;border:1px solid #fde68a}.badge.info{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}.badge.default{background:#f8fafc;color:#475569;border:1px solid #cbd5e1}.button.small{padding:6px 12px;min-height:32px;font-size:12px;border-radius:8px}.button.small.danger{color:#b91c1c;border-color:#fecaca;background:white}.button.small.danger:hover{background:#fef2f2}.button.small.warning{color:#b45309;border-color:#fde68a;background:white}.button.small.secondary{background:#f8fafc;color:#334155}.flex{display:flex}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.space-y-4>*{margin-bottom:16px}.space-y-4>:last-child{margin-bottom:0}.space-y-6>*{margin-bottom:24px}.space-y-6>:last-child{margin-bottom:0}.w-full{width:100%}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.p-2{padding:8px}.p-3{padding:12px}.p-4{padding:16px}.p-6{padding:24px}.p-8{padding:32px}.mb-1{margin-bottom:4px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.mt-0\.5{margin-top:2px}.mt-1{margin-top:4px}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mr-2{margin-right:8px}.ml-auto{margin-left:auto}.pt-3{padding-top:12px}.pt-4{padding-top:16px}.border-t{border-top:1px solid var(--border)}.border-b{border-bottom:1px solid var(--border)}.font-semibold{font-weight:600}.font-bold{font-weight:700}.text-red-500,.text-red-600{color:#dc2626}.line-clamp-1{-webkit-line-clamp:1}.line-clamp-1,.line-clamp-2{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2}.cursor-pointer{cursor:pointer}.shrink-0{flex-shrink:0}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.teacher-library-container{display:flex;flex-direction:column;gap:20px}.library-toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:16px 20px}.search-input{min-width:240px;flex:1 1}.select-input{min-width:180px;width:auto}.empty-panel{padding:48px 24px;text-align:center}.reader-workspace-root{display:flex;flex-direction:column;height:calc(100dvh - 120px);min-height:560px}.reader-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 18px;background:white;border:1px solid var(--border);border-radius:12px;margin-bottom:16px}.reader-topbar-left{display:flex;align-items:center;gap:12px;min-width:0;flex:1 1}.reader-doc-title-group{display:flex;align-items:center;gap:10px;min-width:0;flex-wrap:wrap}.reader-doc-title{font-size:16px;font-weight:700;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reader-topbar-actions{display:flex;align-items:center;gap:10px}.reader-error-pill{font-size:12px;color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;padding:4px 8px;border-radius:6px}.reader-columns-container{display:grid;grid-template-columns:260px 1fr 320px;grid-gap:16px;gap:16px;flex:1 1;min-height:0}.reader-notes-sidebar,.reader-outline-sidebar{display:flex;flex-direction:column;background:white;border:1px solid var(--border);border-radius:12px;padding:16px;overflow-y:auto}.sidebar-section-title{display:flex;align-items:center;gap:8px;padding-bottom:12px;border-bottom:1px solid var(--border);margin-bottom:12px;font-size:13px;font-weight:600}.sidebar-section-title h3{margin:0;font-size:14px}.outline-nav-list{display:flex;flex-direction:column;gap:6px}.outline-item-btn{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid transparent;background:transparent;border-radius:8px;text-align:left;font-size:12px;cursor:pointer;transition:background .15s}.outline-item-btn:hover{background:#f1f5f9}.outline-item-btn.active{background:#eff6ff;color:var(--primary);font-weight:600;border-color:#bfdbfe}.outline-page-tag{font-size:10px;font-weight:700;color:var(--muted);background:#f1f5f9;padding:2px 6px;border-radius:4px;white-space:nowrap}.outline-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reader-viewer-region{display:flex;flex-direction:column;min-width:0;min-height:0;overflow-y:auto}.reader-document-viewer{display:flex;flex-direction:column;gap:12px;height:100%}.viewer-pagination-bar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:white;border:1px solid var(--border);border-radius:10px}.viewer-page-indicator{font-size:13px;color:var(--muted)}.viewer-page-sheet{flex:1 1;padding:28px 36px;background:white;overflow-y:auto;min-height:400px}.page-sheet-header{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--border);padding-bottom:12px;margin-bottom:20px}.page-sheet-header h2{font-size:18px;font-weight:700;margin:0}.page-sheet-paragraphs{display:flex;flex-direction:column;gap:14px;font-size:14px;line-height:1.7}.page-formula-box{background:#f8fafc;border:1px solid var(--border);border-radius:10px;padding:16px 20px;margin-top:20px;display:flex;flex-direction:column;gap:8px}.formula-line code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:13px;color:#1e40af}.reader-revoked-panel{padding:48px 32px;text-align:center;max-width:600px;margin:auto}.revoked-icon-wrap{width:56px;height:56px;border-radius:50%;background:#fee2e2;color:#b91c1c;display:grid;place-items:center;margin:0 auto 16px}.revoked-reason{font-size:14px;font-weight:600;color:#991b1b;margin-bottom:12px}.revoked-policy-note{font-size:13px;color:var(--muted);line-height:1.6;margin-bottom:20px}.reader-note-composer{padding:12px;margin-bottom:16px}.note-textarea{width:100%;border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:13px;resize:vertical}.composer-footer{display:flex;justify-content:space-between;align-items:center;margin-top:8px}.reader-notes-stream{display:flex;flex-direction:column;gap:10px;overflow-y:auto}.reader-note-item{padding:12px;font-size:13px}.note-item-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.note-locator-badge{font-size:11px;font-weight:600;color:var(--primary);background:#eff6ff;padding:2px 6px;border-radius:4px}.note-quote-box{margin:6px 0 8px;padding:6px 10px;background:#f8fafc;border-left:3px solid var(--primary);font-size:12px;color:#475569;border-radius:0 6px 6px 0;font-style:italic}.quote-mark{font-weight:700;margin-right:4px}.note-user-text{margin:4px 0 8px;line-height:1.5}.note-item-actions{display:flex;gap:12px}.student-notes-container{display:flex;flex-direction:column;gap:20px}.notes-toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:14px 20px}.notes-search-wrap{min-width:280px;flex:1 1;max-width:420px}.notes-cards-matrix{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,360px),1fr));grid-gap:20px;gap:20px}.bookmark-card,.note-card{display:flex;flex-direction:column;justify-content:space-between;padding:20px}.note-card-header{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.note-title-line{display:flex;align-items:center;gap:8px}.note-doc-title-link{font-size:15px;color:var(--ink)}.note-doc-title-link:hover{text-decoration:underline;color:var(--primary)}.note-meta-badges{display:flex;gap:6px;flex-wrap:wrap}.note-card-body{margin-bottom:16px;flex:1 1}.revoked-source-strip{display:flex;align-items:center;gap:8px;background:#fef2f2;color:#b91c1c;padding:8px 12px;border-radius:6px;font-size:11px;margin-bottom:8px}.note-text-content{font-size:13px;line-height:1.6;color:#1e293b;margin:0}.note-card-footer{display:flex;align-items:center;justify-content:space-between;padding-top:12px;border-top:1px solid var(--border)}.note-actions{display:flex;gap:8px}.tutor-workspace-root{display:flex;flex-direction:column;height:calc(100dvh - 120px);min-height:560px}.tutor-mobile-controls{display:none}.tutor-workspace-grid{display:grid;grid-template-columns:260px 1fr 300px;grid-gap:16px;gap:16px;flex:1 1;min-height:0}.tutor-citations-col,.tutor-history-col{display:flex;flex-direction:column;padding:16px;overflow-y:auto}.citations-section-header,.history-col-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:12px;border-bottom:1px solid var(--border);margin-bottom:12px}.citations-section-header h3,.history-col-header h3{margin:0;font-size:14px;font-weight:700}.history-conv-list{display:flex;flex-direction:column;gap:6px}.history-conv-item{padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:white;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}.history-conv-item:hover{background:#f8fafc}.history-conv-item.active{border-color:var(--primary);background:#eff6ff}.conv-item-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:2px}.conv-title{font-size:13px}.tutor-chat-col{display:flex;flex-direction:column;padding:20px;min-height:0;overflow:hidden}.tutor-lock-banner{background:#fffbeb;border:1px solid #fde68a;color:#92400e}.lock-banner-header{display:flex;align-items:center;gap:8px;font-size:14px}.tutor-messages-stream{flex:1 1;overflow-y:auto;padding-right:8px;display:flex;flex-direction:column;gap:18px;margin-bottom:16px}.tutor-empty-splash{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;padding:32px 16px}.tutor-sparkle-icon{font-size:40px;margin-bottom:12px}.tutor-msg-wrapper{display:flex;flex-direction:column;max-width:85%}.tutor-msg-wrapper.student{align-self:flex-end}.tutor-msg-wrapper.student .msg-bubble{background:#eff6ff;color:#1e3a8a;border:1px solid #bfdbfe;border-bottom-right-radius:2px}.tutor-msg-wrapper.assistant{align-self:flex-start}.tutor-msg-wrapper.assistant .msg-bubble{background:#f8fafc;color:var(--ink);border:1px solid var(--border);border-bottom-left-radius:2px}.msg-header{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:4px;font-size:11px}.msg-bubble{padding:14px 18px;border-radius:12px;font-size:13px;line-height:1.6}.step-badge{display:inline-block;background:#f0fdf4;color:#166534;border:1px solid #bbf7d0;font-size:11px;font-weight:700;padding:2px 8px;border-radius:99px;margin-bottom:8px}.msg-content-text{white-space:pre-line}.pedagogical-hint-box{display:flex;align-items:flex-start;gap:8px;background:#f0fdfa;border:1px solid #99f6e4;color:#115e59;padding:10px 12px;border-radius:8px;margin-top:10px;font-size:12px}.citation-pill-link{display:inline-flex;align-items:center;gap:6px;background:white;border:1px solid #cbd5e1;padding:4px 8px;border-radius:6px;font-size:11px;color:var(--primary);margin:2px 4px 2px 0}.citation-pill-link:hover{background:#eff6ff;text-decoration:none}.tutor-composer-area{border-top:1px solid var(--border);padding-top:12px}.composer-mode-bar{display:flex;align-items:center;gap:8px;margin-bottom:8px}.composer-textarea{resize:none}.composer-action-bar{display:flex;justify-content:space-between;align-items:center;margin-top:8px}.citation-card{font-size:12px}.citation-card-top{display:flex;justify-content:space-between;align-items:center}.citation-quote{margin:0;padding-left:8px;border-left:2px solid var(--primary);font-style:italic}.quick-note-item{font-size:12px}.teacher-tutor-config-container{max-width:800px;margin:0 auto}@media(max-width:960px){.reader-columns-container{grid-template-columns:1fr}.reader-notes-sidebar,.reader-outline-sidebar{display:none}.mobile-only{display:inline-flex}.tutor-workspace-grid{grid-template-columns:1fr}.tutor-citations-col,.tutor-history-col{display:none}.tutor-mobile-controls{display:flex;gap:10px;margin-bottom:12px}}.practice-attempt-grid{display:grid;grid-template-columns:minmax(0,1fr) 280px;grid-gap:20px;gap:20px;align-items:start}.practice-palette-sidebar,.practice-question-main{min-width:0;max-width:100%}.table-scroll{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch}@media (max-width:900px){.practice-attempt-grid{grid-template-columns:1fr}}.brand{color:#0f172a}.brand>svg{color:#2563eb}.brand small{color:#64748b}.actor-copy{display:flex;flex-direction:column;gap:3px;line-height:1.35}.actor-copy strong{font-size:12px;font-weight:600}.actor-copy small{font-size:10px;color:#64748b}.breadcrumb{gap:8px;line-height:1.6}.breadcrumb-part{display:inline-flex;gap:8px;align-items:center;min-width:0;white-space:nowrap}.breadcrumb-part svg{width:13px;height:13px;flex-shrink:0;color:#94a3b8}.breadcrumb-part a{color:#64748b;max-width:220px;overflow:hidden;text-overflow:ellipsis}.breadcrumb>[aria-current=page]{font-weight:600;color:#2563eb}.class-summary .status.inactive{color:#475569;background:#f1f5f9}.class-tabs svg{width:18px;height:18px;flex-shrink:0}dialog[open]{display:flex;flex-direction:column;overflow:hidden}dialog .dialog-header{flex-shrink:0;gap:16px}dialog .dialog-header h2{line-height:1.5;font-size:18px}dialog .dialog-body{min-height:0;overflow:auto;overscroll-behavior:contain}dialog .dialog-body .actions{margin-top:20px}dialog .dialog-body p{line-height:1.7}.sidebar-footer a:hover{text-decoration:none}.sidebar-footer .actor{white-space:normal}.task-header .brand,.topbar>a:last-child{flex-shrink:0}@media(max-width:1100px){.breadcrumb-part a{max-width:150px}.breadcrumb-part:first-child:not(:last-child){display:none}}@media(max-width:760px){.actor-copy{display:none!important}.breadcrumb-part{display:none}.breadcrumb>[aria-current=page]{font-size:12px;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.topbar{min-height:64px}.class-summary{gap:8px}.class-summary .muted{line-height:1.7}dialog .dialog-header{padding:16px 18px}dialog .dialog-header h2{font-size:16px}dialog .dialog-body{padding:20px}.task-header .brand small{display:none}}