*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;font-size:14px}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:Roboto,sans-serif}input,select,textarea,button{font-family:Roboto,sans-serif}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.screen{min-height:100vh;display:none}.screen.active{flex-direction:column;display:flex}#screen-login{justify-content:center;align-items:center;padding:1rem;position:relative;overflow:hidden}#screen-login:before{content:"";background:radial-gradient(at 75% 40%,#ffffff14 0%,#0000 60%);position:absolute;inset:0}.login-circles{pointer-events:none;position:absolute;inset:0;overflow:hidden}.login-circles:before{content:"";border:1px solid #ffffff12;border-radius:50%;width:500px;height:500px;position:absolute;top:-150px;right:-150px}.login-circles:after{content:"";border:1px solid #ffffff0d;border-radius:50%;width:350px;height:350px;position:absolute;bottom:-100px;left:-100px}.login-card{background:var(--surface);border:1px solid var(--border);width:100%;max-width:400px;box-shadow:var(--shadow);z-index:1;border-radius:12px;padding:2.5rem 2rem;animation:.4s loginIn;position:relative}@keyframes loginIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}.login-logo{text-align:center;margin-bottom:1.75rem}.login-logo-icon{background:var(--gradient);border-radius:14px;justify-content:center;align-items:center;width:52px;height:52px;margin:0 auto .75rem;display:flex;box-shadow:0 6px 20px #3b82f64d}.login-logo-icon svg{fill:none;stroke:#fff;stroke-width:2.2px;width:26px;height:26px}.login-logo h1{color:var(--text);letter-spacing:-.5px;font-family:Google Sans,sans-serif;font-size:1.5rem;font-weight:700}.login-logo p{color:var(--text-muted);margin-top:4px;font-size:.78rem}.login-tabs{background:var(--bg);border-radius:8px;margin-bottom:1.5rem;padding:3px;display:flex}.ltab{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:6px;flex:1;padding:.45rem;font-size:.82rem;font-weight:500;transition:all .2s}.ltab.active{background:var(--surface);color:var(--primary);box-shadow:var(--shadow-sm);font-weight:700}.auth-view{display:none}.auth-view.active{animation:.3s loginIn;display:block}.auth-link{color:var(--primary);cursor:pointer;font-size:.8rem;font-weight:600;text-decoration:none}.auth-link:hover{text-decoration:underline}.auth-row{justify-content:space-between;align-items:center;margin-top:.6rem;display:flex}.pw-wrap{position:relative}.pw-wrap .form-input{padding-right:2.5rem}.pw-eye{cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:2px;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.pw-eye:hover{color:var(--text)}.pw-eye svg{stroke:currentColor;fill:none;stroke-width:2px;width:16px;height:16px}.pw-strength{background:#e8eaed;border-radius:2px;height:3px;margin-top:4px;transition:all .3s}.pw-strength-bar{border-radius:2px;width:0;height:100%;transition:all .3s}.pw-hint{color:var(--text-muted);margin-top:3px;font-size:.68rem}.input-valid{border-color:#137333!important}.input-invalid{border-color:#c5221f!important}.field-err{color:var(--danger);margin-top:3px;font-size:.7rem;display:none}.auth-divider{color:var(--text-muted);align-items:center;gap:10px;margin:.9rem 0;font-size:.75rem;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border);flex:1;height:1px}.profile-avatar-lg{background:var(--gradient);color:#fff;cursor:pointer;border:3px solid #e8f0fe;border-radius:50%;place-items:center;width:72px;height:72px;margin:0 auto .75rem;font-size:1.4rem;font-weight:800;display:grid;position:relative}.profile-avatar-lg:after{content:"✏️";background:var(--surface);border-radius:50%;place-items:center;width:22px;height:22px;font-size:.75rem;display:grid;position:absolute;bottom:0;right:0;box-shadow:0 2px 6px #00000026}.otp-wrap{justify-content:center;gap:8px;margin:1rem 0;display:flex}.otp-input{text-align:center;width:46px;height:52px;color:var(--text);border:1.5px solid #dadce0;border-radius:8px;outline:none;font-size:1.3rem;font-weight:700;transition:border-color .2s}.otp-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #3b82f61f}.session-info{color:var(--text-muted);text-align:center;margin-top:.5rem;font-size:.7rem}.form-group{margin-bottom:1rem}.form-label{color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;margin-bottom:.3rem;font-size:.72rem;font-weight:700;display:block}.form-input,.form-select,.form-textarea{border:1.5px solid var(--border);width:100%;color:var(--text);background:var(--bg);border-radius:8px;outline:none;padding:.65rem .85rem;font-size:.875rem;transition:border-color .2s,box-shadow .2s}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #3b82f61f}.form-textarea{resize:vertical;min-height:90px;line-height:1.6}.form-row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.login-btn{cursor:pointer;background:var(--gradient);color:#fff;width:100%;box-shadow:var(--shadow-sm);border:none;border-radius:8px;padding:.7rem;font-family:Google Sans,sans-serif;font-size:.9rem;font-weight:700;transition:all .2s}.login-btn:hover{transform:translateY(-1px);box-shadow:0 8px 20px #3b82f64d}.login-err{color:var(--danger);background:#fce8e6;border-radius:8px;margin-bottom:.85rem;padding:.55rem .85rem;font-size:.78rem;display:none}.login-demo{text-align:center;color:var(--text-muted);margin-top:1rem;font-size:.73rem}.login-demo a{color:var(--primary);cursor:pointer;font-weight:600;text-decoration:underline}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:500;flex-shrink:0;align-items:center;gap:8px;height:56px;padding:0 1rem;display:flex;box-shadow:0 1px 3px #00000014}.topbar-logo{align-items:center;gap:8px;min-width:200px;display:flex}.topbar-logo-icon{background:var(--gradient);border-radius:8px;place-items:center;width:30px;height:30px;display:grid}.topbar-logo-icon svg{stroke:#fff;fill:none;stroke-width:2.5px;width:16px;height:16px}.topbar-logo-name{color:var(--text);font-family:Google Sans,sans-serif;font-size:1.1rem;font-weight:700}.topbar-logo-name span{color:#0288d1}.topbar-search{flex:1;max-width:480px;margin:0 auto}.search-wrap{position:relative}.search-wrap svg{stroke:#9aa0a6;fill:none;stroke-width:2px;width:16px;height:16px;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.search-input{background:var(--bg-muted);width:100%;color:var(--text);border:1.5px solid #e8eaed;border-radius:24px;outline:none;padding:.45rem .75rem .45rem 2.2rem;font-size:.85rem;transition:all .2s}.search-input:focus{background:var(--surface);border-color:var(--primary);box-shadow:0 0 0 3px #3b82f61a}.topbar-right{align-items:center;gap:6px;margin-left:auto;display:flex}.icon-btn{cursor:pointer;background:0 0;border:none;border-radius:50%;place-items:center;width:36px;height:36px;transition:background .15s;display:grid;position:relative}.icon-btn:hover{background:var(--bg)}.icon-btn svg{width:18px;height:18px;stroke:var(--text-muted);fill:none;stroke-width:2px}.notif-badge{background:#d93025;border:2px solid #fff;border-radius:50%;width:8px;height:8px;position:absolute;top:4px;right:4px}.user-avatar-btn{background:var(--gradient);cursor:pointer;color:#fff;border:2px solid var(--border);border-radius:50%;place-items:center;width:36px;height:36px;font-size:.8rem;font-weight:700;transition:box-shadow .2s;display:grid}.user-avatar-btn:hover{box-shadow:0 2px 8px #0003}.app-layout{flex:1;display:flex;overflow:hidden}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:256px;height:100%;padding:0 0 8px;transition:width .22s;display:flex;overflow:hidden}.sidebar.collapsed{width:72px}.sidebar-brand-row{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:6px;padding:10px 8px 12px 10px;display:flex}.sidebar.collapsed .sidebar-brand-row{justify-content:center;padding:10px 8px}.sidebar-hamburger{cursor:pointer;width:40px;height:40px;color:var(--text-muted);background:0 0;border:none;border-radius:50%;flex-shrink:0;place-items:center;transition:background .15s;display:grid}.sidebar-hamburger:hover{background:var(--bg);color:var(--text)}.sidebar-hamburger svg{stroke:currentColor;fill:none;stroke-width:2px;stroke-linecap:round;width:20px;height:20px}.sidebar-nav-scroll{flex:1;padding-top:6px;overflow:hidden auto}.nav-label{flex:1;min-width:0}.sidebar.collapsed .nav-label,.sidebar.collapsed .nav-course-text,.sidebar.collapsed .nav-chevron,.sidebar.collapsed .nav-section-toggle-text,.sidebar.collapsed .nav-section-label{display:none}.sidebar.collapsed .nav-item,.sidebar.collapsed .nav-course-row,.sidebar.collapsed .nav-section-toggle{justify-content:center;padding-left:8px;padding-right:8px}.sidebar.collapsed .nav-badge{border-radius:50%;min-width:8px;height:8px;margin:0;padding:0;font-size:0;position:absolute;top:4px;right:4px}.sidebar.collapsed .nav-item,.sidebar.collapsed .nav-course-row{position:relative}.nav-collapsible{margin:2px 0 4px}.nav-section-toggle{cursor:pointer;width:calc(100% - 8px);color:var(--text);background:0 0;border:none;border-radius:0 24px 24px 0;justify-content:space-between;align-items:center;margin:2px 8px 2px 0;padding:8px 10px 8px 12px;font-size:.875rem;font-weight:600;transition:background .15s;display:flex}.nav-section-toggle:hover{background:var(--bg)}.nav-section-toggle-left{align-items:center;gap:12px;min-width:0;display:flex}.nav-section-ico{stroke:currentColor;fill:none;stroke-width:2px;flex-shrink:0;width:18px;height:18px}.nav-chevron{width:16px;height:16px;stroke:var(--text-muted);fill:none;stroke-width:2px;flex-shrink:0;transition:transform .2s}.nav-section-toggle.open .nav-chevron{transform:rotate(180deg)}.nav-collapsible-body{padding-bottom:4px}.nav-item-nested{margin-left:4px;border-radius:0 20px 20px 0!important}.nav-course-row{cursor:pointer;border-radius:0 24px 24px 0;align-items:center;gap:10px;margin:1px 8px 1px 0;padding:7px 12px 7px 14px;transition:background .15s;display:flex}.nav-course-row:hover{background:var(--bg)}.nav-course-row.active{background:#3b82f626}.nav-course-avatar{color:#fff;border-radius:50%;flex-shrink:0;place-items:center;width:28px;height:28px;font-size:.78rem;font-weight:800;display:grid}.nav-course-text{flex-direction:column;flex:1;min-width:0;display:flex}.nav-course-title{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:.82rem;font-weight:600;overflow:hidden}.nav-course-sub{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.68rem;overflow:hidden}.nav-course-row.active .nav-course-title{color:var(--primary);font-weight:700}#panel-calendar{isolation:isolate;min-width:0;position:relative}.calendar-layout{grid-template-columns:minmax(0,420px) minmax(0,1fr);align-items:start;gap:1.5rem;width:100%;min-width:0;display:grid}@media (width<=900px){.calendar-layout{grid-template-columns:minmax(0,1fr)}}.calendar-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:12px;min-width:0;max-width:100%;padding:1rem;overflow:hidden}.calendar-toolbar{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.calendar-month-label{color:var(--text);font-family:Google Sans,sans-serif;font-size:1rem;font-weight:700}.calendar-weekdays{grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;width:100%;min-width:0;margin-bottom:4px;display:grid}.calendar-wd{text-align:center;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.65rem;font-weight:700}.calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;width:100%;min-width:0;display:grid}.calendar-cell{aspect-ratio:1;min-width:0;min-height:36px;color:var(--text-muted);z-index:0;cursor:pointer;box-sizing:border-box;background:0 0;border:none;border-radius:8px;flex-direction:column;justify-content:flex-start;align-items:center;width:100%;max-width:100%;padding:4px 2px;font-family:inherit;font-size:.78rem;transition:background .15s,box-shadow .15s;display:flex;position:relative}.calendar-cell:hover{background:var(--bg-muted)}.calendar-cell:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.calendar-cell.empty{visibility:hidden;pointer-events:none}.calendar-cell.today{outline:2px solid var(--primary);color:var(--primary);font-weight:800}.calendar-cell.has-deadline{background:#3b82f614}.calendar-cell.selected{background:#3b82f62e;box-shadow:inset 0 0 0 1px #3b82f659}.calendar-cell.has-reminder:not(.has-deadline){background:#10b98112}.calendar-cell-badges{flex-direction:column;align-items:center;gap:2px;min-height:10px;margin-top:2px;display:flex}.calendar-reminder-pin{background:#10b981;border-radius:50%;flex-shrink:0;width:6px;height:6px}.calendar-day-num{line-height:1.2}.calendar-dots{flex-wrap:wrap;justify-content:center;gap:2px;display:flex}.calendar-dot{border-radius:50%;width:5px;height:5px}.calendar-today-reminder{color:var(--text);background:linear-gradient(135deg,#10b9811f,#3b82f61a);border:1px solid #10b98159;border-radius:10px;margin-bottom:1rem;padding:12px 14px;font-size:.88rem;line-height:1.45}.calendar-today-reminder strong{color:var(--primary);margin-bottom:8px;display:block}.calendar-today-reminder-list{margin:0;padding:0;list-style:none}.calendar-today-reminder-list li{border-top:1px solid #3b82f626;padding:6px 0;font-size:.86rem;line-height:1.45}.calendar-today-reminder-list li:first-child{border-top:none;padding-top:0}.calendar-reminder-subject,.calendar-reminder-subject-chip{color:var(--primary);font-weight:700}.calendar-reminder-subject-chip{vertical-align:top;background:#3b82f61f;border-radius:6px;margin-right:8px;padding:2px 8px;font-size:.72rem;display:inline-block}.calendar-day-reminders-readout{background:var(--bg);border:1px solid var(--border);border-radius:10px;margin:1rem 0;padding:12px 14px}.calendar-day-reminders-title{color:var(--text);margin-bottom:10px;font-size:.8rem;font-weight:700}.calendar-day-reminders-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.calendar-day-reminders-list li.calendar-day-reminder-row{color:var(--text);flex-wrap:nowrap;justify-content:space-between;align-items:flex-start;gap:10px;font-size:.84rem;line-height:1.45;display:flex}.calendar-day-reminder-main{flex-wrap:wrap;flex:1;align-items:baseline;gap:6px 8px;min-width:0;display:flex}.calendar-reminder-body{min-width:0;color:var(--text-muted);flex:1}.calendar-side-stack{z-index:2;flex-direction:column;gap:1.5rem;min-width:0;display:flex;position:relative}.calendar-day-detail{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);z-index:1;border-radius:12px;min-width:0;padding:1.5rem;position:relative}.calendar-deadline-heading{color:#ef4444;border-bottom:2px solid var(--border);text-transform:uppercase;letter-spacing:.05em;margin-top:1.5rem;margin-bottom:1rem;padding-bottom:8px;font-family:Google Sans,sans-serif;font-size:1.1rem;font-weight:900}.calendar-day-detail .calendar-upcoming-title{color:var(--primary);margin-bottom:.75rem;font-size:1.2rem}.calendar-day-empty{color:var(--text-muted);margin-bottom:.75rem;font-size:.82rem}.calendar-day-assign-list{margin:0 0 1rem;padding:0;list-style:none}.calendar-day-assign-list li{border-bottom:1px solid var(--border);align-items:flex-start;gap:12px;padding:12px 0;font-size:.9rem;display:flex}.calendar-day-assign-list li:last-child{border-bottom:none}.calendar-day-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:5px}.calendar-day-assign-title{color:var(--text);font-weight:700}.calendar-day-assign-sub{color:var(--text-muted);margin-top:2px;font-size:.72rem}.calendar-teacher-notes{border-top:1px solid var(--border);margin-top:.5rem;padding-top:1rem}.calendar-teacher-notes h4{color:var(--text);margin-bottom:6px;font-size:.85rem;font-weight:700}.calendar-teacher-hint{color:var(--text-muted);margin-bottom:8px;font-size:.72rem;line-height:1.4}.calendar-note-input{min-height:88px;margin-bottom:8px}.calendar-note-actions{flex-wrap:wrap;gap:8px;display:flex}.nav-item{color:var(--text);cursor:pointer;border-radius:0 24px 24px 0;align-items:center;gap:12px;margin:1px 8px 1px 0;padding:9px 16px 9px 12px;font-size:.875rem;font-weight:500;transition:background .15s;display:flex}.nav-item:hover{background:var(--bg)}.nav-item.active{color:#3b82f6;background:#eef2ff;font-weight:700}.nav-item.active svg{color:#3b82f6;stroke-width:2.5px}.nav-item svg{stroke:currentColor;fill:none;stroke-width:2px;flex-shrink:0;width:18px;height:18px}.nav-badge{background:var(--primary);color:#fff;text-align:center;border-radius:10px;min-width:18px;margin-left:auto;padding:1px 6px;font-size:.62rem;font-weight:700}.nav-badge.red{background:#d93025}.nav-divider{background:#e8eaed;height:1px;margin:8px 0}.nav-section-label{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;padding:8px 16px 4px;font-size:.68rem;font-weight:700}.main-content{flex:1;min-width:0;height:100%;padding:1.5rem;overflow-y:auto}.panel{display:none}.panel.active{animation:.28s cubic-bezier(.22,.68,0,1.2) panelIn;display:block}@keyframes panelIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes fadeSlideIn{0%{opacity:0;transform:translate(-14px)}to{opacity:1;transform:none}}@keyframes popIn{0%{opacity:0;transform:scale(.88)}70%{transform:scale(1.04)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{background-position:-600px 0}to{background-position:600px 0}}@keyframes pulse-ring{0%{box-shadow:0 0 #1565c059}70%{box-shadow:0 0 0 10px #1565c000}to{box-shadow:0 0 #1565c000}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes ripple{to{opacity:0;transform:scale(4)}}.anim-card{animation:.38s cubic-bezier(.22,.68,0,1.2) both fadeSlideUp}.anim-card:first-child{animation-delay:40ms}.anim-card:nth-child(2){animation-delay:90ms}.anim-card:nth-child(3){animation-delay:.14s}.anim-card:nth-child(4){animation-delay:.19s}.anim-card:nth-child(5){animation-delay:.24s}.anim-card:nth-child(6){animation-delay:.29s}.anim-card:nth-child(7){animation-delay:.34s}.anim-card:nth-child(n+8){animation-delay:.38s}.anim-row{animation:.3s cubic-bezier(.22,.68,0,1.2) both fadeSlideIn}.anim-row:first-child{animation-delay:50ms}.anim-row:nth-child(2){animation-delay:.1s}.anim-row:nth-child(3){animation-delay:.15s}.anim-row:nth-child(n+4){animation-delay:.2s}.anim-pop{animation:.28s cubic-bezier(.22,.68,0,1.2) both popIn}.page-hd{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem;display:flex}.page-hd h2{color:var(--text);font-family:Google Sans,sans-serif;font-size:1.4rem;font-weight:700}.page-hd p{color:var(--text-muted);margin-top:2px;font-size:.82rem}.page-hd-actions{flex-wrap:wrap;gap:8px;display:flex}.btn{cursor:pointer;white-space:nowrap;border:none;border-radius:8px;align-items:center;gap:6px;padding:.55rem 1.1rem;font-family:Roboto,sans-serif;font-size:.82rem;font-weight:700;transition:all .15s;display:inline-flex}.btn svg{stroke:currentColor;fill:none;stroke-width:2.5px;flex-shrink:0;width:14px;height:14px}.btn-primary{background:var(--primary);color:#fff;position:relative;overflow:hidden;box-shadow:0 2px 8px #1565c04d}.btn-primary:hover{background:#1251a3;transform:translateY(-2px);box-shadow:0 6px 18px #1565c073}.btn-primary:active{transform:translateY(0);box-shadow:0 2px 6px #1565c04d}.btn-outline{background:var(--surface);color:var(--primary);border:1.5px solid var(--border)}.btn-outline:hover{background:var(--bg);border-color:var(--primary)}.btn-ghost{color:var(--text-muted);background:0 0;padding:.45rem .8rem}.btn-ghost:hover{background:var(--bg);color:var(--text)}.btn-red{color:var(--danger);background:#fce8e6}.btn-red:hover{background:#f5c6c3}.btn-green{color:var(--success);background:#e6f4ea}.btn-green:hover{background:#ceead6}.btn-sm{padding:.35rem .75rem;font-size:.75rem}.btn-xs{padding:.25rem .6rem;font-size:.7rem}.fab{color:#fff;cursor:pointer;z-index:200;background:#1565c0;border:none;border-radius:50%;place-items:center;width:52px;height:52px;transition:all .2s;display:grid;position:fixed;bottom:28px;right:28px;box-shadow:0 6px 20px #1565c066}.fab:hover{transform:scale(1.08);box-shadow:0 10px 28px #1565c080}.fab svg{stroke:#fff;fill:none;stroke-width:2.5px;width:22px;height:22px}.subjects-grid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:16px;display:grid}.subject-card{background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:12px;flex-direction:column;transition:box-shadow .25s,transform .25s;display:flex;overflow:hidden;box-shadow:0 1px 3px #00000014}.subject-card:hover{transform:translateY(-4px);box-shadow:0 8px 24px #00000026}.subject-card:active{transform:translateY(-1px);box-shadow:0 3px 8px #0000001f}.sc-header{flex-direction:column;justify-content:flex-end;height:96px;padding:16px;display:flex;position:relative;overflow:hidden}.sc-header:before{content:"";background:#0000001f;position:absolute;inset:0}.sc-header:after{content:"";background:#ffffff26;border-radius:50%;width:68px;height:68px;animation:3s ease-in-out infinite float;position:absolute;bottom:-8px;right:-8px}.sc-dots-deco{opacity:.25;position:absolute;top:10px;right:10px}.sc-dots-deco svg{fill:#fff;width:36px;height:36px}.sc-title{color:#fff;z-index:1;white-space:nowrap;text-overflow:ellipsis;font-family:Google Sans,sans-serif;font-size:1.15rem;font-weight:700;line-height:1.3;position:relative;overflow:hidden}.sc-section{color:#ffffffd9;z-index:1;margin-top:2px;font-size:.95rem;position:relative}.sc-teacher{color:#fffc;z-index:1;font-size:.85rem;position:relative}.sc-avatar-wrap{z-index:2;position:absolute;top:12px;right:52px}.sc-avatar{object-fit:cover;color:#fff;background:#fff3;border:2px solid #fff9;border-radius:50%;justify-content:center;align-items:center;width:46px;height:46px;font-size:1.2rem;font-weight:700;display:flex;overflow:hidden}.sc-body{flex:1;padding:12px 16px}.sc-meta{color:var(--text-muted);margin-bottom:4px;font-size:.75rem}.sc-stats{gap:12px;margin-top:8px;display:flex}.sc-stat{color:var(--text-muted);align-items:center;gap:3px;font-size:.72rem;display:flex}.sc-stat svg{stroke:currentColor;fill:none;stroke-width:2px;width:12px;height:12px}.sc-footer{border-top:1px solid #e8eaed;justify-content:flex-end;align-items:center;gap:0;padding:6px 8px;display:flex}.sc-action{cursor:pointer;width:32px;height:32px;color:var(--text-muted);background:0 0;border:none;border-radius:50%;place-items:center;transition:background .15s;display:grid}.sc-action:hover{background:var(--bg-muted);color:var(--text)}.sc-action svg{stroke:currentColor;fill:none;stroke-width:2px;width:16px;height:16px}.sc-code-tag{color:var(--text-muted);letter-spacing:.06em;margin-right:auto;padding:0 8px;font-family:monospace;font-size:.65rem}.scc-0{background:linear-gradient(135deg,#2563eb 0%,#7c3aed 100%)}.scc-1{background:linear-gradient(135deg,#0891b2 0%,#22c55e 100%)}.scc-2{background:linear-gradient(135deg,#7c3aed 0%,#ec4899 100%)}.scc-3{background:linear-gradient(135deg,#f97316 0%,#ef4444 100%)}.scc-4{background:linear-gradient(135deg,#10b981 0%,#0ea5e9 100%)}.scc-5{background:linear-gradient(135deg,#0ea5e9 0%,#1d4ed8 100%)}.scc-6{background:linear-gradient(135deg,#111827 0%,#374151 100%)}.scc-7{background:linear-gradient(135deg,#9a3412 0%,#f59e0b 100%)}.scc-avatar{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid #ffffff4d;color:#fff!important;background:#fff3!important}.subject-detail-header{color:#fff;border-radius:8px;margin-bottom:1.25rem;padding:20px 24px;position:relative;overflow:hidden}.subject-detail-header:after{content:"";background:#ffffff12;border-radius:50%;width:160px;height:160px;position:absolute;top:-30px;right:-30px}.sdh-back{color:#fffc;cursor:pointer;background:0 0;border:none;align-items:center;gap:5px;margin-bottom:12px;padding:0;font-size:.78rem;transition:color .15s;display:inline-flex}.sdh-back:hover{color:#fff}.sdh-back svg{stroke:currentColor;fill:none;stroke-width:2.5px;width:14px;height:14px}.sdh-title{z-index:1;margin-bottom:6px;font-family:Google Sans,sans-serif;font-size:1.65rem;font-weight:700;position:relative}.sdh-meta{opacity:.85;flex-wrap:wrap;gap:16px;display:flex}.sdh-meta-item{align-items:center;gap:5px;font-size:.8rem;display:flex}.sdh-meta-item svg{stroke:currentColor;fill:none;stroke-width:2px;width:13px;height:13px}.sdh-code-chip{letter-spacing:.06em;background:#fff3;border-radius:20px;padding:3px 10px;font-size:.7rem;font-weight:700}.sd-tabs{border-bottom:2px solid var(--border);gap:0;margin-bottom:1.25rem;display:flex}.sd-tab{color:var(--text-muted);cursor:pointer;border-bottom:3px solid #0000;margin-bottom:-2px;padding:10px 18px;font-size:.85rem;font-weight:500;transition:color .2s,border-color .2s,background .15s;position:relative}.sd-tab:hover{color:var(--text);background:var(--bg-muted)}.sd-tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:700;animation:.22s cubic-bezier(.22,.68,0,1.2) popIn}.assign-stream{flex-direction:column;gap:10px;display:flex}.stream-card{background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:10px;align-items:center;gap:14px;padding:14px 16px;transition:box-shadow .22s,transform .22s,border-color .2s;display:flex;box-shadow:0 1px 3px #0000000f}.stream-card:hover{border-color:#c5cae9;transform:translateY(-2px);box-shadow:0 6px 18px #0000001f}.stream-card:active{transform:translateY(0);box-shadow:0 2px 6px #00000014}.stream-icon{border-radius:50%;flex-shrink:0;place-items:center;width:40px;height:40px;display:grid}.stream-icon svg{stroke:currentColor;fill:none;stroke-width:2px;width:20px;height:20px}.stream-info{flex:1;min-width:0}.stream-title{color:var(--text);white-space:nowrap;text-overflow:ellipsis;margin-bottom:2px;font-size:.88rem;font-weight:700;overflow:hidden}.stream-sub{color:var(--text-muted);font-size:.75rem}.stream-chips{flex-wrap:wrap;gap:5px;margin-top:5px;display:flex}.stream-right{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:5px;min-width:90px;display:flex}.due-label{border-radius:20px;padding:3px 9px;font-size:.72rem;font-weight:700}.due-open{color:#1565c0;background:#e8f0fe}.due-soon{color:var(--danger);background:#fce8e6}.due-closed{color:var(--text-muted);background:#f1f3f4}.marks-label{color:var(--text-muted);font-size:.7rem}.chip{border-radius:20px;align-items:center;gap:3px;padding:2px 7px;font-size:.67rem;font-weight:700;display:inline-flex}.chip-blue{color:#1565c0;background:#e8f0fe}.chip-green{color:var(--success);background:#e6f4ea}.chip-amber{color:#e37400;background:#fef9e7}.chip-red{color:var(--danger);background:#fce8e6}.chip-teal{color:#00838f;background:#e0f7fa}.chip-purple{color:#7b1fa2;background:#f3e5f5}.chip-grey{color:var(--text-muted);background:#f1f3f4}.chip-pink{color:#c2185b;background:#fce4ec}.assign-detail-grid{grid-template-columns:1fr 320px;align-items:start;gap:1.25rem;display:grid}.ad-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:8px;overflow:hidden}.ad-card-hd{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.ad-card-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.82rem;font-weight:700}.ad-card-body{padding:16px}.assign-desc-text{color:var(--text-muted);white-space:pre-wrap;word-break:break-word;font-size:.85rem;line-height:1.7}.stats-row{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:1.25rem;display:grid}.stat-card{background:var(--surface);border:1px solid #e0e0e0;border-radius:8px;align-items:center;gap:12px;padding:14px 16px;transition:box-shadow .15s;display:flex;box-shadow:0 1px 2px #0000000f}.stat-card:hover{box-shadow:0 3px 10px #0000001a}.stat-icon{border-radius:10px;flex-shrink:0;place-items:center;width:40px;height:40px;display:grid}.stat-icon svg{stroke:currentColor;fill:none;stroke-width:2px;width:20px;height:20px}.stat-val{color:var(--text);font-size:1.4rem;font-weight:800;line-height:1}.stat-lbl{color:#9aa0a6;margin-top:2px;font-size:.7rem}.data-table{border-collapse:collapse;width:100%}.data-table th{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);text-align:left;border-bottom:1px solid var(--border);background:var(--bg);padding:10px 14px;font-size:.7rem;font-weight:700}.data-table td{color:var(--text-muted);border-bottom:1px solid var(--border);vertical-align:middle;padding:10px 14px;font-size:.82rem}.data-table tr:last-child td{border-bottom:none}.data-table tbody tr:hover td{background:var(--bg)}.st-cell{align-items:center;gap:9px;display:flex}.st-av{color:#fff;border-radius:50%;flex-shrink:0;place-items:center;width:28px;height:28px;font-size:.68rem;font-weight:700;display:grid}.st-name{color:var(--text);font-size:.82rem;font-weight:700}.st-roll{color:var(--text-muted);font-size:.68rem}.modal-overlay{z-index:999;opacity:0;pointer-events:none;background:#00000080;place-items:center;padding:1rem;transition:opacity .2s;display:grid;position:fixed;inset:0}.modal-overlay.open{opacity:1;pointer-events:all}.modal{background:var(--surface);border-radius:12px;width:100%;max-width:560px;max-height:92vh;transition:transform .22s;overflow-y:auto;transform:scale(.96)translateY(16px);box-shadow:0 24px 64px #00000040}.modal-overlay.open .modal{transform:scale(1)translateY(0)}.modal-lg{max-width:700px}.modal-hd{border-bottom:1px solid var(--border);background:var(--surface);z-index:10;border-radius:12px 12px 0 0;justify-content:space-between;align-items:center;padding:20px 24px 14px;display:flex;position:sticky;top:0}.modal-title{color:var(--text);font-family:Google Sans,sans-serif;font-size:1.1rem;font-weight:700}.modal-close{cursor:pointer;color:#5f6368;background:0 0;border:none;border-radius:50%;place-items:center;width:32px;height:32px;transition:background .15s;display:grid}.modal-close:hover{background:var(--bg)}.modal-close svg{stroke:currentColor;fill:none;stroke-width:2.5px;width:16px;height:16px}.modal-body{padding:20px 24px}.modal-ft{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:14px 24px;display:flex}.rich-wrap{border:1.5px solid #dadce0;border-radius:8px;transition:border-color .2s;overflow:hidden}.rich-wrap:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px #1565c01a}.rich-toolbar{background:var(--bg);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:2px;padding:5px 8px;display:flex}.tb{cursor:pointer;color:#5f6368;background:0 0;border:none;border-radius:5px;place-items:center;width:27px;height:27px;font-family:Roboto,sans-serif;font-size:.75rem;font-weight:700;transition:background .15s;display:grid}.tb:hover{background:var(--border);color:var(--text)}.tb-sep{background:#e0e0e0;width:1px;height:16px;margin:0 3px}.rich-content{min-height:110px;color:var(--text);outline:none;padding:10px 12px;font-size:.875rem;line-height:1.7}@keyframes shake{0%{transform:translate(0)}25%{transform:translate(-5px)}50%{transform:translate(5px)}75%{transform:translate(-5px)}to{transform:translate(0)}}.editor-content:empty:before{content:attr(data-placeholder);color:#94a3b8;pointer-events:none;display:block}.rich-content:empty:before{content:attr(data-ph);color:#bdc1c6;pointer-events:none}.file-drop{text-align:center;cursor:pointer;background:var(--bg);border:2px dashed #dadce0;border-radius:8px;padding:1.5rem;transition:all .2s}.file-drop:hover,.file-drop.drag{border-color:var(--primary);background:#e8f0fe}.fdi{background:#e8f0fe;border-radius:10px;place-items:center;width:40px;height:40px;margin:0 auto .65rem;display:grid}.fdi svg{stroke:#1565c0;fill:none;stroke-width:2px;width:20px;height:20px}.file-drop p{color:#5f6368;font-size:.82rem}.file-drop p b{color:var(--primary);cursor:pointer}.file-drop small{color:#bdc1c6;margin-top:3px;font-size:.7rem;display:block}.file-item{background:var(--surface);border:1px solid var(--border);border-radius:8px;align-items:center;gap:8px;padding:.45rem .75rem;font-size:.78rem;display:flex}.fi-ico svg{stroke:#1565c0;fill:none;stroke-width:2px;width:14px;height:14px}.fi-name{color:#3c4043;text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:500;overflow:hidden}.fi-size{color:#bdc1c6;font-size:.7rem}.fi-rm{cursor:pointer;color:#bdc1c6;background:0 0;border:none;padding:2px;transition:color .15s}.fi-rm:hover{color:var(--danger)}.fi-rm svg{stroke:currentColor;fill:none;stroke-width:2.5px;width:13px;height:13px}.sub-tabs{gap:6px;margin-bottom:1rem;display:flex}.tier-tabs{border-bottom:1px solid var(--border);gap:24px;margin-bottom:1.25rem;display:flex}.tier-tab{color:var(--text-muted);cursor:pointer;padding:8px 4px;font-size:.92rem;font-weight:700;transition:color .2s;position:relative}.tier-tab.active{color:var(--primary)}.tier-tab.active:after{content:"";background:var(--primary);border-radius:3px 3px 0 0;height:3px;position:absolute;bottom:-1px;left:0;right:0}.stab{color:var(--text-muted);background:var(--bg-muted);cursor:pointer;border:1.5px solid #0000;border-radius:20px;padding:7px 18px;font-size:.8rem;font-weight:700;transition:all .2s}.stab:hover{color:var(--primary);background:#e8f0fe}.stab.active{background:var(--primary);color:#fff}.notif-panel{background:var(--surface);border-left:1px solid var(--border);z-index:400;width:340px;height:calc(100vh - 56px);transition:transform .25s;position:fixed;top:56px;right:0;overflow-y:auto;transform:translate(100%);box-shadow:-4px 0 20px #00000014}.notif-panel.open{transform:none}.notif-ph{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.notif-ph-title{color:var(--text);font-family:Google Sans,sans-serif;font-size:.95rem;font-weight:700}.notif-item{cursor:pointer;border-bottom:1px solid #f1f3f4;gap:10px;padding:12px 16px;transition:background .15s;display:flex}.notif-item:hover{background:var(--bg)}.notif-item.unread{background:#e8f0fe}.ni-icon{border-radius:50%;flex-shrink:0;place-items:center;width:32px;height:32px;display:grid}.ni-icon svg{stroke:currentColor;fill:none;stroke-width:2px;width:15px;height:15px}.ni-text{color:#3c4043;font-size:.78rem;line-height:1.4}.ni-text strong{color:var(--text)}.ni-time{color:#bdc1c6;margin-top:2px;font-size:.67rem}.toast{color:#fff;z-index:9999;opacity:0;background:#323232;border-radius:8px;align-items:center;gap:8px;min-width:200px;max-width:340px;padding:.65rem 1.25rem;font-size:.82rem;transition:transform .3s,opacity .3s;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)translateY(80px);box-shadow:0 6px 20px #0000004d}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}.toast-ic{border-radius:50%;flex-shrink:0;place-items:center;width:18px;height:18px;display:grid}.toast-success .toast-ic{background:#137333}.toast-error .toast-ic{background:#c5221f}.toast-ic svg{stroke:#fff;fill:none;stroke-width:3px;width:10px;height:10px}.color-picker{flex-wrap:wrap;gap:8px;display:flex}.cp-dot{cursor:pointer;border:3px solid #0000;border-radius:50%;width:28px;height:28px;transition:all .15s}.cp-dot.sel{border-color:#fff;box-shadow:0 0 0 2px #1565c0}.cp-dot:hover{transform:scale(1.1)}.grade-circle{color:#fff;background:linear-gradient(135deg,#1565c0,#0288d1);border-radius:50%;place-items:center;width:60px;height:60px;font-size:1rem;font-weight:800;display:grid;box-shadow:0 4px 14px #1565c059}.feedback-box{color:#3c4043;background:#e8f0fe;border-left:3px solid #1565c0;border-radius:0 8px 8px 0;padding:10px 14px;font-size:.82rem;font-style:italic;line-height:1.6}.sub-content-box{background:var(--bg);border:1px solid var(--border);color:#3c4043;border-radius:8px;min-height:80px;padding:12px;font-size:.82rem;line-height:1.7}.empty{text-align:center;padding:2.5rem 1rem}.empty-ic{background:#e8f0fe;border-radius:14px;place-items:center;width:56px;height:56px;margin:0 auto .85rem;display:grid}.empty-ic svg{stroke:#1565c0;fill:none;stroke-width:1.8px;width:26px;height:26px}.empty h3{color:#3c4043;font-size:.95rem;font-weight:700}.empty p{color:#9aa0a6;margin-top:.3rem;font-size:.78rem}.divider{background:#e8eaed;height:1px;margin:.75rem 0}.info-box{color:var(--primary);background:#e8f0fe;border-radius:8px;align-items:flex-start;gap:7px;padding:10px 14px;font-size:.78rem;display:flex}.info-box svg{stroke:currentColor;fill:none;stroke-width:2px;flex-shrink:0;width:14px;height:14px;margin-top:1px}@media (width<=860px){.sidebar{display:none}.main-content{padding:1rem}.assign-detail-grid{grid-template-columns:1fr}}@media (width<=580px){.form-row{grid-template-columns:1fr}.stats-row{grid-template-columns:1fr 1fr}.subjects-grid{grid-template-columns:1fr}}.theme-root{--bg:#f8fafc;--surface:#fff;--surface-glass:#fffc;--text:#0f172a;--text-muted:#475569;--primary:#3b82f6;--primary-hover:#2563eb;--border:#e2e8f0;--bg-muted:#f1f5f9;--success:#10b981;--warning:#f59e0b;--danger:#ef4444;--shadow:0 10px 40px #0000000d;--shadow-sm:0 4px 6px -1px #0000000d;--gradient:linear-gradient(135deg, #3b82f6, #8b5cf6);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:Google Sans,sans-serif;transition:background .3s,color .3s;overflow:hidden auto}.theme-root[data-theme=dark]{--bg:#0f172a;--surface:#1e293b;--surface-glass:#1e293bcc;--text:#fff;--text-muted:#cbd5e1;--primary:#60a5fa;--primary-hover:#3b82f6;--border:#334155;--bg-muted:#ffffff0d;--success:#34d399;--warning:#fbbf24;--danger:#f87171;--shadow:0 10px 40px #0009;--shadow-sm:0 4px 6px -1px #0006;--gradient:linear-gradient(135deg, #60a5fa, #a78bfa)}.theme-root[data-theme=dark] .chip-blue{color:#93c5fd;background:#2563eb40;border:1px solid #2563eb66}.theme-root[data-theme=dark] .chip-green{color:#6ee7b7;background:#05966940;border:1px solid #05966966}.theme-root[data-theme=dark] .chip-amber{color:#fcd34d;background:#d9770640;border:1px solid #d9770666}.theme-root[data-theme=dark] .chip-red{color:#fca5a5;background:#dc262640;border:1px solid #dc262666}.theme-root[data-theme=dark] .chip-grey{color:#fff;background:#ffffff26;border:1px solid #ffffff40}.theme-root[data-theme=dark] .chip-purple{color:#c4b5fd;background:#7c3aed40;border:1px solid #7c3aed66}.theme-root[data-theme=dark] .chip-teal{color:#5eead4;background:#0d948840;border:1px solid #0d948866}.theme-root[data-theme=dark] .chip-pink{color:#f9a8d4;background:#db277740;border:1px solid #db277766}.landing-container{box-sizing:border-box;max-width:1200px;margin:0 auto;padding:0 24px}.landing-nav{z-index:10000;background:var(--surface-glass);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);padding:1rem 0;transition:background .3s,border-color .3s;position:fixed;top:0;left:0;right:0}.landing-nav-inner{justify-content:space-between;align-items:center;display:flex}.landing-logo{color:var(--text);cursor:pointer;align-items:center;gap:10px;font-size:1.4rem;font-weight:800;text-decoration:none;transition:color .3s;display:flex}.landing-logo svg{fill:none;stroke:var(--primary);stroke-width:2.5px}.landing-links{align-items:center;gap:2.5rem;display:none}@media (width>=900px){.landing-links{display:flex}}.landing-link{color:var(--text-muted);cursor:pointer;font-size:.95rem;font-weight:600;text-decoration:none;transition:color .2s}.landing-link:hover{color:var(--primary)}.landing-btn{cursor:pointer;border:none;border-radius:99px;align-items:center;gap:8px;padding:10px 22px;font-family:inherit;font-size:.95rem;font-weight:700;transition:all .2s;display:inline-flex}.landing-btn-primary{background:var(--gradient);color:#fff;box-shadow:var(--shadow-sm)}.landing-btn-primary:hover{color:#fff;transform:translateY(-2px);box-shadow:0 8px 20px #3b82f64d}.landing-btn-outline{color:var(--text);border:2px solid var(--border);background:0 0}.landing-btn-outline:hover{border-color:var(--primary);color:var(--primary)}.theme-toggle{border:1px solid var(--border);background:var(--surface);width:40px;height:40px;color:var(--text);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;transition:all .2s;display:inline-flex}.theme-toggle:hover{background:var(--border)}.theme-toggle svg{fill:none;stroke:currentColor;stroke-width:2px;width:18px;height:18px}#screen-landing{flex-direction:column;min-height:100vh;padding-top:72px;display:flex!important}#features,#how-to,#vision,#contact-footer{scroll-margin-top:92px}.landing-hero-wrap{border-bottom:1px solid var(--border);background:linear-gradient(135deg,#3b82f617 0%,#8b5cf612 50%,#ec48990a 100%);width:100%}.landing-hero{align-items:center;gap:4rem;padding:6rem 0;display:flex}.landing-hero-content{flex:1.1}.landing-hero-graphic{flex:.9;justify-content:center;display:flex;position:relative}.landing-h1{letter-spacing:-1px;color:var(--text);margin-bottom:1.5rem;font-size:3.2rem;font-weight:800;line-height:1.25}.landing-gradient-text{background:var(--gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;padding-bottom:5px}.landing-hero p{color:var(--text-muted);max-width:500px;margin-bottom:2.5rem;font-size:1.15rem;line-height:1.7}.landing-actions{flex-wrap:wrap;gap:1rem;display:flex}.hero-placeholder{aspect-ratio:1;background:var(--surface);border:1px solid var(--border);width:100%;max-width:450px;box-shadow:var(--shadow);border-radius:24px;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.hero-blob{background:var(--primary);opacity:.15;filter:blur(60px);border-radius:50%;width:300px;height:300px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.landing-section{text-align:center;padding:5rem 0}.landing-badge{color:var(--primary);letter-spacing:1px;background:#3b82f61a;border-radius:99px;margin-bottom:1rem;padding:6px 16px;font-size:.85rem;font-weight:700;display:inline-block}.landing-section h2{color:var(--text);margin-bottom:1rem;font-size:2.5rem;font-weight:800;line-height:1.2}.landing-section p.sub{color:var(--text-muted);max-width:600px;margin:0 auto 4rem;font-size:1.1rem;line-height:1.6}.landing-grid{text-align:left;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem;display:grid}.landing-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:20px;padding:2.5rem;transition:transform .3s,box-shadow .3s}.landing-card:hover{box-shadow:var(--shadow);transform:translateY(-5px)}.landing-card-icon{width:50px;height:50px;color:var(--primary);background:#3b82f61a;border-radius:14px;justify-content:center;align-items:center;margin-bottom:1.5rem;display:flex}.landing-card-icon svg{stroke-width:2px;width:24px;height:24px}.landing-card h3{color:var(--text);margin-bottom:.75rem;font-size:1.25rem;font-weight:700}.landing-card p{color:var(--text-muted);font-size:1rem;line-height:1.6}.setup-wrap{background:var(--surface);border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:5rem 0}.setup-grid{text-align:left;grid-template-columns:1fr 1fr;gap:3rem;margin-top:3rem;display:grid}@media (width<=900px){.setup-grid{grid-template-columns:1fr}}.setup-col{background:var(--bg);border:1px solid var(--border);border-radius:24px;padding:3rem}.setup-header{align-items:center;gap:1rem;margin-bottom:2.5rem;display:flex}.setup-icon{background:var(--gradient);color:#fff;border-radius:12px;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.setup-header h3{color:var(--text);margin:0;font-size:1.5rem;font-weight:800}.setup-header p{color:var(--text-muted);letter-spacing:1px;text-transform:uppercase;margin:4px 0 0;font-size:.85rem;font-weight:700}.setup-step{gap:1.25rem;margin-bottom:1.5rem;display:flex}.setup-num{background:var(--primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-weight:700;display:flex}.setup-text{padding-top:4px}.setup-text span{color:var(--text);margin-bottom:4px;font-size:1.05rem;font-weight:700;display:block}.setup-text p{color:var(--text-muted);margin:0;font-size:.95rem;line-height:1.5}.vision-wrap{text-align:center;padding:6rem 0}.vision-wrap h2{max-width:800px;margin:0 auto 1.5rem;line-height:1.3}.vision-wrap p.vision-body{max-width:700px;color:var(--text-muted);margin:0 auto 2rem;font-size:1.15rem;line-height:1.7}.vision-features{flex-wrap:wrap;justify-content:center;gap:2rem;margin-top:3rem;display:flex}.v-feat{color:var(--text);align-items:center;gap:10px;font-size:1.05rem;font-weight:700;display:flex}.v-feat svg{color:var(--primary);width:22px;height:22px}.landing-footer{border-top:1px solid var(--border);background:var(--surface);padding:3rem 0}.landing-footer-inner{justify-content:space-between;align-items:flex-start;gap:2rem;display:flex}.footer-copy{color:var(--text-muted);margin-top:8px;font-size:.9rem}.footer-links{gap:2rem;display:flex}.footer-links a{color:var(--text-muted);font-size:.95rem;font-weight:500;text-decoration:none;transition:color .2s}.footer-links a:hover{color:var(--text)}@media (width<=900px){.landing-hero{text-align:center;flex-direction:column;gap:3rem;padding:4rem 0}.landing-actions{justify-content:center}.landing-h1{font-size:2.2rem}.hero-placeholder{aspect-ratio:16/9}}.modal-overlay{-webkit-backdrop-filter:blur(4px);z-index:10000;opacity:0;visibility:hidden;justify-content:center;align-items:center;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;inset:0;background:#0009!important}.modal-overlay.open{opacity:1;visibility:visible}.modal-container{border:1px solid var(--border);border-radius:16px;width:95%;transition:all .3s cubic-bezier(.4,0,.2,1);overflow:hidden;transform:scale(.95)translateY(10px);box-shadow:0 25px 50px -12px #00000080;background:var(--surface)!important}.modal-overlay.open .modal-container{transform:scale(1)translateY(0)}.modal-header{border-bottom:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;display:flex}.modal-header h2{color:var(--text);margin:0;font-size:1.25rem;font-weight:700}.modal-close{background:var(--bg);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;transition:all .2s;display:flex}.modal-close:hover{color:#ef4444;background:#fee2e2;border-color:#fecaca}.modal-close svg{stroke-width:2.5px;width:18px;height:18px}.modal-body{background:var(--surface);padding:1.5rem}.modal-footer{background:var(--bg);border-top:1px solid var(--border);justify-content:flex-end;gap:12px;padding:1rem 1.5rem;display:flex}.rich-editor-container{border:1.5px solid var(--border);background:var(--surface);border-radius:12px;flex-direction:column;transition:border-color .2s,box-shadow .2s;display:flex;overflow:hidden}.rich-editor-container:focus-within{border-color:var(--primary);box-shadow:0 0 0 4px #3b82f61a}.editor-toolbar{background:var(--bg);border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none;flex-wrap:wrap;align-items:center;gap:6px;padding:8px;display:flex}.toolbar-group{align-items:center;gap:4px;display:flex}.toolbar-separator{background:var(--border);width:1.5px;height:20px;margin:0 4px}.tb-btn{width:32px;height:32px;color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;transition:all .2s;display:flex}.tb-btn:hover{background:var(--border);color:var(--primary)}.tb-select{border:1px solid var(--border);background:var(--surface);height:32px;color:var(--text);cursor:pointer;border-radius:6px;outline:none;padding:0 8px;font-size:.8rem}.tb-color{border:1.5px solid var(--border);background:var(--surface);cursor:pointer;border-radius:6px;width:32px;height:32px;padding:3px}.editor-content{min-height:250px;max-height:450px;color:var(--text);outline:none;padding:1.25rem;font-size:.95rem;line-height:1.6;overflow-y:auto}.editor-content:empty:before{content:attr(data-placeholder);color:var(--text-muted);font-style:italic}.upload-zone{border:2px dashed var(--border);text-align:center;cursor:pointer;background:var(--bg);border-radius:12px;margin-top:1.5rem;padding:1.5rem;transition:all .2s}.upload-zone:hover{border-color:var(--primary);background:#3b82f60d}.upload-zone-inner{color:var(--text-muted);flex-direction:column;align-items:center;gap:10px;display:flex}.upload-zone-inner svg{width:32px;height:32px;color:var(--primary)}.file-list{flex-direction:column;gap:8px;margin-top:1rem;display:flex}.file-item{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:10px;justify-content:space-between;align-items:center;padding:10px 14px;font-size:.85rem;display:flex}.file-item-left{align-items:center;gap:10px;display:flex}.file-item-icon{color:#0369a1;background:#e0f2fe;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.btn-remove{color:#ef4444;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:6px;transition:background .2s;display:flex}.spinner{border:3px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:24px;height:24px;animation:.8s linear infinite spin}.annotator-overlay{z-index:5000;background:#000000d9;justify-content:center;align-items:stretch;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.annotator-container{flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}.annotator-toolbar{background:#1e293b;border-bottom:1px solid #334155;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:10px;padding:10px 18px;display:flex}.annotator-toolbar-group{align-items:center;gap:6px;display:flex}.annotator-toolbar-right{margin-left:auto}.annotator-divider{background:#475569;flex-shrink:0;width:1px;height:28px}.annotator-label{color:#94a3b8;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;font-size:.72rem;font-weight:600}.annotator-tool-btn{color:#cbd5e1;cursor:pointer;background:0 0;border:1.5px solid #0000;border-radius:8px;align-items:center;gap:5px;padding:7px 12px;font-size:.78rem;font-weight:600;transition:all .15s;display:flex}.annotator-tool-btn:hover{color:#f1f5f9;background:#334155}.annotator-tool-btn.active{color:#60a5fa;background:#3b82f633;border-color:#3b82f6}.annotator-tool-btn svg{flex-shrink:0}.annotator-color-row{gap:4px;display:flex}.annotator-color-btn{cursor:pointer;border:2.5px solid #0000;border-radius:50%;width:22px;height:22px;transition:all .15s;box-shadow:0 1px 3px #0000004d}.annotator-color-btn:hover{transform:scale(1.2)}.annotator-color-btn.active{border-color:#fff;transform:scale(1.25);box-shadow:0 0 0 2px #ffffff4d}.annotator-slider{accent-color:#3b82f6;cursor:pointer;width:80px}.annotator-action-btn{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:7px;align-items:center;gap:4px;padding:6px 10px;font-size:.72rem;font-weight:600;transition:all .15s;display:flex}.annotator-action-btn:hover:not(:disabled){color:#f1f5f9;background:#334155}.annotator-action-btn:disabled{opacity:.35;cursor:not-allowed}.annotator-canvas-area{background:#0f172a;flex:1;justify-content:center;align-items:center;padding:20px;display:flex;overflow:auto}.annotator-canvas-wrap{border-radius:4px;line-height:0;box-shadow:0 8px 40px #00000080}.annotator-canvas-wrap canvas{display:block}.annotator-loading{color:#94a3b8;flex-direction:column;align-items:center;gap:12px;font-size:.9rem;display:flex}.annotator-spinner{border:3px solid #334155;border-top-color:#3b82f6;border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}.topbar-mobile-hamburger{color:var(--text);cursor:pointer;background:0 0;border:none;margin-right:8px;padding:4px;display:none}.topbar-mobile-hamburger svg{width:24px;height:24px}.mobile-backdrop{z-index:1500;-webkit-backdrop-filter:blur(2px);background:#00000080;position:fixed;inset:0}@keyframes mobileDrawerSlideIn{0%{transform:translate(-100%)}to{transform:translate(0)}}@media (width<=768px){.topbar-mobile-hamburger{display:block}#screen-app,.app-layout{overflow:visible!important}.topbar-logo-name{display:none}.topbar-search{flex:1;margin:0 10px}.search-wrap{width:100%}.sidebar{z-index:2000;background:var(--surface);width:280px;height:100vh;box-shadow:none;transition:transform .3s cubic-bezier(.4,0,.2,1);position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-100%)}.sidebar.mobile-open{transform:translate(0);box-shadow:4px 0 24px #00000040}.sidebar-hamburger{display:none}.sidebar{display:none!important}.main-content{width:100%!important}.subject-grid{grid-template-columns:1fr;gap:16px}.subject-detail-header{padding:1.5rem}.sdh-meta{flex-direction:column;align-items:flex-start;gap:10px}.data-table-container,.ad-card{overflow-x:auto}table.data-table{min-width:600px}.user-avatar-btn{width:30px;height:30px}.dropdown-menu.profile-dropdown{width:calc(100vw - 20px);margin:0 10px;right:0}}
