@import"https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,400;0,500;0,600;0,700;0,800;1,400&display=swap";:root{--font-sans: "Inter", system-ui, -apple-system, sans-serif;--color-bg: #080b12;--color-surface: #0f1520;--color-surface-elevated: #141b28;--color-surface-3: #1a2235;--color-border: rgba(255,255,255,.06);--color-border-strong: rgba(255,255,255,.11);--color-border-vivid: rgba(255,255,255,.18);--color-text-primary: #eef0f5;--color-text-secondary: #8b93a8;--color-text-muted: #4a5268;--color-accent: #7c6ffd;--color-accent-light: rgba(124,111,253,.12);--color-accent-glow: rgba(124,111,253,.28);--color-info-bg: rgba(124,111,253,.1);--color-info-text: #a8a3ff;--color-background-info: rgba(124,111,253,.1);--color-text-info: #a8a3ff;--color-success-bg: rgba(52,211,153,.1);--color-success-text: #34d399;--color-warn-bg: rgba(251,191,36,.1);--color-warn-text: #fbbf24;--color-danger-bg: rgba(248,113,113,.1);--color-danger-text: #f87171;--color-background-primary: var(--color-surface);--color-background-secondary: var(--color-surface-elevated);--color-border-tertiary: var(--color-border);--color-border-secondary: var(--color-border-strong);--color-text-danger: var(--color-danger-text);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 18px;--border-radius-md: var(--radius-md);--border-radius-lg: var(--radius-lg)}html[data-theme=light]{--color-bg: #F7F7FC;--color-surface: #FFFFFF;--color-surface-elevated: #EDEDF4;--color-surface-3: #E3E2EF;--color-border: rgba(69,68,98,.08);--color-border-strong: rgba(69,68,98,.14);--color-border-vivid: rgba(69,68,98,.22);--color-text-primary: #2A2A42;--color-text-secondary: #6B6B88;--color-text-muted: #9C9CB8;--color-accent: #5B5B8A;--color-accent-light: rgba(91,91,138,.12);--color-accent-glow: rgba(91,91,138,.28);--color-info-bg: rgba(91,91,138,.1);--color-info-text: #5B5B8A;--color-background-info: rgba(91,91,138,.1);--color-text-info: #5B5B8A;--color-success-bg: rgba(34,170,100,.1);--color-success-text: #1A9060;--color-warn-bg: rgba(210,140,20,.1);--color-warn-text: #B07010;--color-danger-bg: rgba(220,60,60,.1);--color-danger-text: #C0332D;--color-background-primary: var(--color-surface);--color-background-secondary: var(--color-surface-elevated);--color-border-tertiary: var(--color-border);--color-border-secondary: var(--color-border-strong);--color-text-danger: var(--color-danger-text)}html[data-theme=light] body:before{background:radial-gradient(ellipse at 10% 0%,rgba(91,91,138,.1) 0%,transparent 50%),radial-gradient(ellipse at 90% 95%,rgba(115,115,170,.07) 0%,transparent 50%)}html[data-theme=light] body:after{background-image:linear-gradient(rgba(91,91,138,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(91,91,138,.03) 1px,transparent 1px)}html[data-theme=light] .sidebar{background:#fdfcfaeb;border-right-color:#4544621a}html[data-theme=light] .sidebar:before{background:linear-gradient(90deg,transparent,rgba(91,91,138,.28),transparent)}html[data-theme=light] .sidebar-rail{background:#fdfcfaeb;border-right-color:#4544621a}html[data-theme=light] .nav-logo{background:linear-gradient(135deg,#5b5b8a33,#7373aa1a);border-color:#5b5b8a4d;box-shadow:0 4px 14px #5b5b8a2e}html[data-theme=light] .nav-title{background:linear-gradient(135deg,#2a2a42 40%,#5b5b8a);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}html[data-theme=light] .nav-tab.active{background:linear-gradient(135deg,#5b5b8a2e,#5b5b8a17);color:#4a4a76;border-color:#5b5b8a47;box-shadow:0 2px 12px #5b5b8a1f,inset 0 1px #ffffff80}html[data-theme=light] .nav-tab:hover{background:#4544620a;color:var(--color-text-primary)}html[data-theme=light] .active-class-summary{background:linear-gradient(135deg,#5b5b8a17,#5b5b8a0a);border-color:#5b5b8a2e}html[data-theme=light] .active-class-summary:before{background:linear-gradient(90deg,transparent,rgba(91,91,138,.35),transparent)}html[data-theme=light] .acs-stat-value{color:#5b5b8a}html[data-theme=light] .class-pill-active{border-color:#5b5b8a4d;background:#5b5b8a14;box-shadow:0 0 0 1px #5b5b8a1f}html[data-theme=light] .class-pill:hover{background:#4544620a;border-color:var(--color-border-strong)}html[data-theme=light] .class-pill-active .class-pill-meta{color:#5b5b8ab3}html[data-theme=light] .add-class-btn{border-color:#5b5b8a38}html[data-theme=light] .add-class-btn:hover{border-color:#5b5b8a80;color:#5b5b8a;background:#5b5b8a12}html[data-theme=light] .pill-btn:hover{background:#45446214}html[data-theme=light] .pill-btn-del:hover{color:var(--color-danger-text);background:var(--color-danger-bg)}html[data-theme=light] .nav-workspace{background:#5b5b8a12;border-color:#5b5b8a33}html[data-theme=light] .nav-workspace:hover{background:#5b5b8a1f}html[data-theme=light] .nav-workspace-code{color:#5b5b8a}html[data-theme=light] .nav-workspace-switch{border-color:#5b5b8a47;color:#6b6b88}html[data-theme=light] .nav-workspace-switch:hover{color:#5b5b8a;border-color:#5b5b8a8c;background:#5b5b8a1a}html[data-theme=light] .nav-user{background:#ededf4;border-color:#4544621f}html[data-theme=light] .nav-user-icon{background:#e3e2ef;border-color:#4544621f}html[data-theme=light] .nav-email{color:#6b6b88}html[data-theme=light] .rail-expand-btn{background:#ededf4;border-color:#45446224}html[data-theme=light] .rail-expand-btn:hover{background:#4544620f;border-color:#45446238}html[data-theme=light] .rail-tab.active{background:#5b5b8a24;color:#4a4a76;border-color:#5b5b8a47;box-shadow:0 2px 10px #5b5b8a26}html[data-theme=light] .rail-tab:hover{background:#4544620d}html[data-theme=light] .card:hover{border-color:#45446233;box-shadow:0 4px 24px #45446214}html[data-theme=light] input[type=text]:focus,html[data-theme=light] input[type=number]:focus,html[data-theme=light] input[type=email]:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-light);background:#5b5b8a0a}html[data-theme=light] .grade-input{background:#fff!important;border-color:#45446224!important}html[data-theme=light] .grade-input:focus{background:#ededf4!important;border-color:var(--color-accent)!important;box-shadow:0 0 0 3px var(--color-accent-light)!important}html[data-theme=light] button:hover{background:#4544620f;border-color:#45446233}html[data-theme=light] .sidebar-collapse-btn{background:#ededf4;border-color:#45446224}html[data-theme=light] .sidebar-collapse-btn:hover{background:#45446214;border-color:#45446238;color:var(--color-text-primary)}html[data-theme=light] .tag{background:#5b5b8a17;color:#4a4a76;border-color:#5b5b8a38}html[data-theme=light] .tag:hover{background:#5b5b8a29}html[data-theme=light] .metric:hover{border-color:#5b5b8a4d}html[data-theme=light] .metric:before{background:linear-gradient(90deg,#5b5b8a,#8585b8)}html[data-theme=light] .tbl th{background:#f7f4f0fc}html[data-theme=light] .tbl td{border-bottom-color:#4544620d}html[data-theme=light] .tbl tbody tr:hover{background:#5b5b8a0d!important}html[data-theme=light] .overflow-x,html[data-theme=light] .page-content{scrollbar-color:rgba(69,68,98,.1) transparent}html[data-theme=light] .enroll-roster-btn{border-color:#5b5b8a59;background:#5b5b8a17;color:#4a4a76}html[data-theme=light] .enroll-roster-btn:hover{background:#5b5b8a2e;border-color:#5b5b8a8c;color:#3a3a68;box-shadow:0 2px 12px #5b5b8a26}html[data-theme=light] .share-link-btn{border-color:#648cc847;background:#648cc80f;color:#4878b8}html[data-theme=light] .share-link-btn:hover{background:#648cc824;border-color:#648cc880;color:#2a5898;box-shadow:0 2px 12px #648cc81f}html[data-theme=light] .modal-card{background:#fff;border-color:#5b5b8a33;box-shadow:0 0 0 1px #5b5b8a12,0 40px 100px #45446238,inset 0 1px #fffc}html[data-theme=light] .modal-card:before{background:linear-gradient(90deg,transparent,rgba(91,91,138,.38),transparent)}html[data-theme=light] .modal-close{background:#ededf4;border-color:#45446224}html[data-theme=light] .modal-close:hover{background:#45446214;border-color:#45446238}html[data-theme=light] .enroll-item:hover{background:#45446208}html[data-theme=light] .enroll-item-btn{background:#5b5b8a}html[data-theme=light] .enroll-item-btn:hover{background:#4a4a76;box-shadow:0 2px 10px #5b5b8a59}html[data-theme=light] .enroll-item-btn.enrolled{background:#22aa641a;color:#1a9060;border-color:#22aa6433}html[data-theme=light] .rh-card:hover{border-color:#5b5b8a47;box-shadow:0 4px 16px #5b5b8a14}html[data-theme=light] .rh-avatar{background:linear-gradient(135deg,#5b5b8a2e,#5b5b8a12);border-color:#5b5b8a40;color:#5b5b8a}html[data-theme=light] .rh-email-link{color:#5b5b8a}html[data-theme=light] .rh-email-link:hover{color:#4a4a76}html[data-theme=light] .rh-email-add:hover{color:#5b5b8a}html[data-theme=light] .rh-pill-x:hover{color:var(--color-danger-text)}html[data-theme=light] .rh-class-pill{background:#5b5b8a17;border-color:#5b5b8a33;color:#4a4a76}html[data-theme=light] .rh-class-pill:hover{background:#5b5b8a29}html[data-theme=light] .rh-pill-x{color:#4a4a76}html[data-theme=light] .roster-class-pill{background:#5b5b8a17;border-color:#5b5b8a33;color:#4a4a76}html[data-theme=light] .roster-class-pill:hover{background:#5b5b8a29}html[data-theme=light] .roster-pill-x{color:#4a4a76}html[data-theme=light] .print-btn:hover{background:#4544620f;border-color:#45446233;box-shadow:0 4px 16px #4544621a}html[data-theme=light] .save-indicator{background:#fff;border-color:#22aa6440;box-shadow:0 8px 28px #45446226,0 0 0 1px #22aa6414}html[data-theme=light] .workspace-badge{background:#5b5b8a17;border-color:#5b5b8a47}html[data-theme=light] .workspace-code{color:#5b5b8a}html[data-theme=light] .login-overlay{background:radial-gradient(ellipse at 60% 40%,rgba(91,91,138,.14) 0%,transparent 60%),var(--color-bg)}html[data-theme=light] .login-card{box-shadow:0 0 0 1px #5b5b8a1a,0 32px 64px #4544622e,0 0 80px #5b5b8a0f}html[data-theme=light] .login-title{background:linear-gradient(135deg,#2a2a42 30%,#5b5b8a);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}html[data-theme=light] .gm-card{background:#fff!important;border:1px solid rgba(69,68,98,.1)!important;border-top:1px solid rgba(91,91,138,.18)!important;box-shadow:0 20px 50px #4544622e!important}html[data-theme=light] .gm-title{color:#2a2a42!important}html[data-theme=light] .gm-label{color:#45446280!important}html[data-theme=light] .gm-msg{color:#454462a6!important}html[data-theme=light] .gm-input{background:#4544620a!important;border-color:#4544621f!important;color:#2a2a42!important}html[data-theme=light] .gm-input:focus{border-color:#45446247!important}html[data-theme=light] .gm-field-label{color:#45446280!important}html[data-theme=light] .gm-field-input{background:#4544620a!important;border-color:#4544621f!important;color:#2a2a42!important}html[data-theme=light] .gm-field-input:focus{border-color:#45446247!important}html[data-theme=light] .gm-footer{border-top-color:#45446212!important}html[data-theme=light] .gm-btn-cancel{background:#45446212!important;color:#45446280!important}html[data-theme=light] .gm-btn-primary{background:#5b5b8a!important;color:#fff!important}html[data-theme=light] .gm-btn-danger{background:#c0332d!important;color:#fff!important}html[data-theme=light] .gm-tabs{border-bottom-color:#45446214!important}html[data-theme=light] .gm-tab{color:#45446266!important}html[data-theme=light] .gm-tab.active{color:#5b5b8a!important;border-bottom-color:#5b5b8a!important}html[data-theme=light] .tag-desc{color:#45446273!important}.theme-toggle-btn{flex-shrink:0;width:28px;height:28px;border-radius:var(--radius-md);border:1px solid var(--color-border-strong);background:var(--color-surface-elevated);color:var(--color-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:all .18s ease;font-family:var(--font-sans);font-size:14px;line-height:1}.theme-toggle-btn:hover{background:#ffffff14;border-color:#ffffff2e;color:var(--color-text-primary)}html[data-theme=light] .theme-toggle-btn{background:#ededf4;border-color:#45446224}html[data-theme=light] .theme-toggle-btn:hover{background:#45446214;border-color:#45446238;color:var(--color-text-primary)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text-primary);min-height:100vh;line-height:1.5;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 10% 0%,rgba(124,111,253,.14) 0%,transparent 50%),radial-gradient(ellipse at 90% 95%,rgba(56,189,248,.07) 0%,transparent 50%);pointer-events:none;z-index:0}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(124,111,253,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(124,111,253,.025) 1px,transparent 1px);background-size:48px 48px;pointer-events:none;z-index:0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.app-layout{display:flex;height:100vh;overflow:hidden;position:relative;z-index:1}.sidebar{width:268px;flex-shrink:0;background:#080b12e0;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-right:1px solid var(--color-border);display:flex;flex-direction:column;padding:1.25rem .9rem;overflow-y:auto;overflow-x:hidden;transition:width .28s cubic-bezier(.4,0,.2,1);position:relative;z-index:10}.sidebar:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(124,111,253,.35),transparent);pointer-events:none}.sidebar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;padding:0 2px}.nav-brand{display:flex;align-items:center;gap:10px;text-decoration:none;overflow:hidden}.nav-logo{font-size:22px;line-height:1;flex-shrink:0;width:36px;height:36px;background:linear-gradient(135deg,#7c6ffd38,#38bdf81f);border:1px solid rgba(124,111,253,.3);border-radius:10px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px #7c6ffd38}.nav-title{font-size:14px;font-weight:800;background:linear-gradient(135deg,#eef0f5 40%,#a8a3ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;white-space:nowrap;letter-spacing:-.3px;transition:opacity .2s}.sidebar-collapse-btn{flex-shrink:0;width:28px;height:28px;border-radius:var(--radius-md);border:1px solid var(--color-border-strong);background:var(--color-surface-elevated);color:var(--color-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:all .18s ease;font-family:var(--font-sans)}.sidebar-collapse-btn:hover{background:#ffffff14;border-color:#ffffff2e;color:var(--color-text-primary)}.nav-tabs{display:flex;flex-direction:column;gap:2px}.nav-tab{padding:9px 11px;border-radius:var(--radius-lg);font-size:13.5px;font-weight:500;font-family:var(--font-sans);cursor:pointer;border:none;background:transparent;color:var(--color-text-secondary);transition:all .18s ease;text-align:left;display:flex;align-items:center;gap:10px;width:100%;white-space:nowrap}.nav-tab-icon{width:17px;height:17px;flex-shrink:0;transition:transform .18s ease}.nav-tab-label{transition:opacity .2s}.nav-tab:hover{color:var(--color-text-primary);background:#ffffff0d}.nav-tab:hover .nav-tab-icon{transform:scale(1.06)}.nav-tab.active{background:linear-gradient(135deg,#7c6ffd47,#7c6ffd26);color:#c4c0ff;border:1px solid rgba(124,111,253,.28);box-shadow:0 2px 12px #7c6ffd26,inset 0 1px #ffffff14;font-weight:600}.nav-tab.active .nav-tab-icon{opacity:1}.sidebar-divider{border:none;border-top:1px solid var(--color-border);margin:.9rem 0}.active-class-summary{background:linear-gradient(135deg,#7c6ffd1a,#7c6ffd0a);border:1px solid rgba(124,111,253,.18);border-radius:var(--radius-lg);padding:11px 13px;position:relative;overflow:hidden}.active-class-summary:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(124,111,253,.4),transparent)}.acs-label{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted);margin-bottom:5px}.acs-name{font-size:13.5px;font-weight:700;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:7px}.acs-stats{display:flex;gap:6px;flex-wrap:wrap}.acs-stat{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--color-text-secondary);background:#ffffff0d;border:1px solid var(--color-border);border-radius:999px;padding:2px 8px}.acs-stat-value{font-weight:700;color:#a8a3ff}.sidebar-section-header{display:flex;align-items:center;justify-content:space-between;padding:0 3px;margin-bottom:7px}.sidebar-label{font-size:10px;font-weight:700;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.1em}.sidebar-class-count{font-size:11px;font-weight:700;background:var(--color-surface-elevated);border:1px solid var(--color-border-strong);color:var(--color-text-secondary);border-radius:999px;padding:1px 7px;min-width:22px;text-align:center}.sidebar-classes-wrap{display:flex;flex-direction:column}.class-bar{display:flex;flex-direction:column;gap:3px;margin-bottom:8px;max-height:280px;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.06) transparent;padding-right:2px}.class-bar::-webkit-scrollbar{width:3px}.class-bar::-webkit-scrollbar-track{background:transparent}.class-bar::-webkit-scrollbar-thumb{background:#ffffff14;border-radius:2px}.class-pill{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-radius:var(--radius-md);border:1px solid transparent;background:transparent;cursor:pointer;transition:all .18s ease;font-size:13px;font-weight:500;color:var(--color-text-secondary);-webkit-user-select:none;user-select:none}.class-pill:hover{border-color:var(--color-border-strong);color:var(--color-text-primary);background:#ffffff0a}.class-pill-active{border-color:#7c6ffd4d;background:#7c6ffd1a;color:var(--color-text-primary);box-shadow:0 0 0 1px #7c6ffd26}.class-pill-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:4px}.class-pill-meta{font-size:10px;color:var(--color-text-muted);margin-left:auto;margin-right:6px;white-space:nowrap;flex-shrink:0}.class-pill-active .class-pill-meta{color:#a8a3ff99}.class-pill-actions{display:flex;gap:2px;opacity:0;transition:opacity .15s;flex-shrink:0}.class-pill:hover .class-pill-actions,.class-pill-active .class-pill-actions{opacity:1}.pill-btn{background:none;border:none;padding:3px 5px;font-size:13px;cursor:pointer;color:var(--color-text-muted);border-radius:var(--radius-sm);transition:color .15s,background .15s;line-height:1;display:flex;align-items:center;justify-content:center;font-family:var(--font-sans)}.pill-btn:hover{color:var(--color-text-primary);background:#ffffff1a}.pill-btn-del:hover{color:var(--color-danger-text);background:var(--color-danger-bg)}.add-class-btn{font-size:12.5px;padding:8px 10px;border-radius:var(--radius-md);border:1px dashed rgba(124,111,253,.22);background:transparent;color:var(--color-text-muted);cursor:pointer;transition:all .18s ease;width:100%;text-align:left;font-family:var(--font-sans);display:flex;align-items:center;gap:7px}.add-class-btn:hover{border-color:#7c6ffd80;color:#a8a3ff;background:#7c6ffd12}.spacer{flex-grow:1;min-height:1.5rem}.sidebar-bottom{display:flex;flex-direction:column;gap:7px;margin-top:auto;padding-top:1rem;border-top:1px solid var(--color-border)}.nav-workspace{display:flex;align-items:center;gap:8px;border-radius:var(--radius-md);padding:8px 10px;background:#7c6ffd14;border:1px solid rgba(124,111,253,.2);overflow:hidden;transition:background .18s}.nav-workspace:hover{background:#7c6ffd1f}.nav-user{display:flex;align-items:center;gap:8px;border-radius:var(--radius-md);padding:8px 10px;background:var(--color-surface-elevated);border:1px solid var(--color-border-strong);overflow:hidden}.nav-workspace-icon{font-size:13px;flex-shrink:0}.nav-workspace-info,.nav-user-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;overflow:hidden}.nav-workspace-label,.nav-user-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted)}.nav-workspace-code{font-size:12px;font-weight:700;color:#a8a3ff;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-user-icon{font-size:14px;flex-shrink:0;width:26px;height:26px;display:flex;align-items:center;justify-content:center;background:var(--color-surface-3);border:1px solid var(--color-border-strong);border-radius:50%}.nav-email{font-size:11px;color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-workspace-switch,.nav-signout{flex-shrink:0;font-size:12px;padding:0;width:26px;height:26px;border-radius:var(--radius-sm);background:transparent;cursor:pointer;transition:all .18s ease;font-family:var(--font-sans);display:flex;align-items:center;justify-content:center}.nav-workspace-switch{border:1px solid rgba(124,111,253,.28);color:#8b93a8;font-size:10px;font-weight:600;width:auto;padding:2px 8px;border-radius:999px}.nav-workspace-switch:hover{color:#a8a3ff;border-color:#7c6ffd8c;background:#7c6ffd1f}.nav-signout{border:1px solid var(--color-border);color:var(--color-text-muted);font-size:16px}.nav-signout:hover{color:var(--color-danger-text);border-color:var(--color-danger-text);background:var(--color-danger-bg)}.sidebar-rail{width:54px;flex-shrink:0;background:#080b12e0;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-right:1px solid var(--color-border);display:flex;flex-direction:column;align-items:center;padding:1rem 0;gap:4px;z-index:10}.rail-expand-btn{width:36px;height:36px;border-radius:var(--radius-md);border:1px solid var(--color-border-strong);background:var(--color-surface-elevated);color:var(--color-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;margin-bottom:12px;transition:all .18s ease;font-family:var(--font-sans)}.rail-expand-btn:hover{background:#ffffff12;color:var(--color-text-primary);border-color:#ffffff2e}.rail-tab{width:36px;height:36px;border-radius:var(--radius-md);border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:all .18s ease;font-family:var(--font-sans)}.rail-tab svg{width:18px;height:18px}.rail-tab:hover{background:#ffffff0f;color:var(--color-text-primary)}.rail-tab.active{background:#7c6ffd33;color:#a8a3ff;border:1px solid rgba(124,111,253,.28);box-shadow:0 2px 10px #7c6ffd33}.page-content{flex:1;overflow-y:auto;padding:2.25rem 2.75rem 4rem;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.06) transparent}.page-content::-webkit-scrollbar{width:5px}.page-content::-webkit-scrollbar-thumb{background:#ffffff12;border-radius:3px}.tab-content{display:none}.tab-content.visible{display:block;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.page-content>.tab-content{max-width:960px;margin:0 auto}.card{background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-xl);padding:1.6rem 1.75rem;margin-bottom:1.25rem;transition:border-color .2s,box-shadow .2s;position:relative;overflow:hidden}.card:hover{border-color:var(--color-border-vivid);box-shadow:0 4px 24px #0000004d}.section-label{font-size:11px;font-weight:700;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:14px}.empty-msg{font-size:13px;color:var(--color-text-muted);font-style:italic;padding:4px 0}input[type=text],input[type=number],input[type=email]{background:var(--color-surface-elevated);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);color:var(--color-text-primary);font-family:var(--font-sans);font-size:13.5px;padding:7px 11px;outline:none;transition:border-color .18s,box-shadow .18s,background .18s}input[type=text]:focus,input[type=number]:focus,input[type=email]:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-light);background:#7c6ffd0a}input[type=number]{width:80px}input::placeholder{color:var(--color-text-muted)}.grade-input{width:64px!important;text-align:center;padding:6px 8px!important;font-size:15px!important;font-weight:700!important;border-radius:var(--radius-md)!important;background:var(--color-surface)!important;border-color:var(--color-border-strong)!important}.grade-input:focus{background:var(--color-surface-elevated)!important;border-color:var(--color-accent)!important;box-shadow:0 0 0 3px var(--color-accent-light)!important}button{font-family:var(--font-sans);font-size:13px;font-weight:500;padding:7px 14px;border-radius:var(--radius-md);border:1px solid var(--color-border-strong);background:var(--color-surface-elevated);color:var(--color-text-primary);cursor:pointer;transition:all .18s ease}button:hover{background:#ffffff12;border-color:#ffffff2e}.add-row{display:flex;gap:8px;margin-top:10px}.add-row input[type=text]{flex:1}.row{display:flex;align-items:center;gap:12px;margin-bottom:10px}.cat-label{font-size:13.5px;color:var(--color-text-primary);min-width:110px}.tag-area{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;min-height:38px}.tag{background:var(--color-info-bg);color:var(--color-info-text);border:1px solid rgba(124,111,253,.22);font-size:12.5px;font-weight:500;padding:4px 10px 4px 12px;border-radius:999px;display:flex;align-items:center;gap:6px;transition:background .15s,transform .15s}.tag:hover{background:#7c6ffd2e;transform:translateY(-1px)}.tag-x{cursor:pointer;font-size:15px;opacity:.5;line-height:1;transition:opacity .15s}.tag-x:hover{opacity:1}.result-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:1.25rem}.metric{background:var(--color-surface-elevated);border:1px solid var(--color-border-strong);border-radius:var(--radius-lg);padding:1rem 1.1rem;transition:border-color .2s,transform .2s;position:relative;overflow:hidden}.metric:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,#7c6ffd,#38bdf8);opacity:0;transition:opacity .2s}.metric:hover{border-color:#7c6ffd4d;transform:translateY(-2px)}.metric:hover:before{opacity:1}.metric-label{font-size:10.5px;color:var(--color-text-muted);margin-bottom:6px;font-weight:600;text-transform:uppercase;letter-spacing:.08em}.metric-value{font-size:30px;font-weight:800;color:var(--color-text-primary);letter-spacing:-.8px}hr.div{border:none;border-top:1px solid var(--color-border);margin:1rem 0}.overflow-x{overflow-x:auto;border-radius:var(--radius-lg);border:1px solid var(--color-border-strong);scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.06) transparent}.overflow-x::-webkit-scrollbar{height:4px}.overflow-x::-webkit-scrollbar-thumb{background:#ffffff14;border-radius:2px}.tbl{width:100%;border-collapse:collapse;font-size:14px}.tbl thead{position:sticky;top:0;z-index:1}.tbl th{text-align:left;font-weight:700;color:var(--color-text-muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;padding:11px 14px;background:#080b12fa;border-bottom:1px solid var(--color-border-strong);white-space:nowrap}.tbl th:not(:first-child){text-align:center}.tbl td{padding:12px 14px;border-bottom:1px solid rgba(255,255,255,.04);color:var(--color-text-primary);font-size:13.5px;vertical-align:middle}.tbl td:not(:first-child){text-align:center}.tbl tbody tr{transition:background .15s}.tbl tbody tr:hover{background:#7c6ffd0f!important}.tbl tr:last-child td{border-bottom:none}.tbl .bold{font-weight:600}.badge-pass{background:var(--color-success-bg);color:var(--color-success-text);border:1px solid rgba(52,211,153,.2);font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px}.badge-fail{background:var(--color-danger-bg);color:var(--color-danger-text);border:1px solid rgba(248,113,113,.2);font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px}.badge-warn{background:var(--color-warn-bg);color:var(--color-warn-text);border:1px solid rgba(251,191,36,.2);font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px}.del-btn{background:none;border:none;cursor:pointer;color:var(--color-text-muted);font-size:16px;padding:3px 7px;border-radius:var(--radius-sm);transition:color .15s,background .15s,transform .15s}.del-btn:hover{color:var(--color-danger-text);background:var(--color-danger-bg);transform:scale(1.1)}.enroll-roster-btn{display:inline-flex;align-items:center;gap:7px;font-size:13px;padding:7px 14px;border-radius:var(--radius-md);border:1px solid rgba(124,111,253,.35);background:var(--color-accent-light);color:#a8a3ff;cursor:pointer;transition:all .18s ease;font-family:var(--font-sans);font-weight:500}.enroll-roster-btn:hover{background:#7c6ffd33;border-color:#7c6ffd8c;color:#c4c0ff;box-shadow:0 2px 12px #7c6ffd33}.clear-roster-btn{display:inline-flex;align-items:center;gap:7px;font-size:13px;padding:7px 14px;border-radius:var(--radius-md);border:1px solid rgba(248,113,113,.28);background:#f871710f;color:var(--color-danger-text);cursor:pointer;transition:all .18s ease;font-family:var(--font-sans);font-weight:500}.clear-roster-btn:hover{background:#f8717124;border-color:#f8717180;box-shadow:0 2px 12px #f8717126}.share-link-btn{display:inline-flex;align-items:center;gap:7px;font-size:13px;padding:7px 14px;border-radius:var(--radius-md);border:1px solid rgba(56,189,248,.28);background:#38bdf80f;color:#7dd3fc;cursor:pointer;transition:all .18s ease;font-family:var(--font-sans);font-weight:500}.share-link-btn:hover{background:#38bdf824;border-color:#38bdf880;color:#bae6fd;box-shadow:0 2px 12px #38bdf826}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#000000b3;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:1.5rem}.modal-card{background:var(--color-surface);border:1px solid rgba(124,111,253,.2);border-radius:22px;width:100%;max-width:500px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 0 0 1px #7c6ffd14,0 40px 100px #000000a6,inset 0 1px #ffffff0d;animation:modalIn .28s cubic-bezier(.16,1,.3,1) both;position:relative;overflow:hidden}.modal-card:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(124,111,253,.45),transparent);pointer-events:none}@keyframes modalIn{0%{opacity:0;transform:scale(.93) translateY(16px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.2rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-title{font-size:15px;font-weight:700;color:var(--color-text-primary);letter-spacing:-.2px}.modal-close{background:var(--color-surface-elevated);border:1px solid var(--color-border-strong);border-radius:50%;color:var(--color-text-secondary);width:30px;height:30px;cursor:pointer;font-size:18px;padding:0;display:flex;align-items:center;justify-content:center;transition:all .15s;font-family:var(--font-sans);line-height:1}.modal-close:hover{color:var(--color-text-primary);background:#ffffff12;border-color:#fff3}.modal-search{padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.enroll-list{flex:1;overflow-y:auto;padding:6px 0;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.07) transparent}.enroll-list::-webkit-scrollbar{width:4px}.enroll-list::-webkit-scrollbar-thumb{background:#ffffff14;border-radius:2px}.enroll-item{display:flex;align-items:center;justify-content:space-between;padding:10px 1.5rem;gap:12px;transition:background .12s}.enroll-item:hover{background:#ffffff06}.enroll-item-name{font-size:14px;color:var(--color-text-primary)}.enroll-item-btn{flex-shrink:0;font-size:12px;padding:5px 16px;border-radius:999px;background:var(--color-accent);border:none;color:#fff;cursor:pointer;transition:all .15s;font-family:var(--font-sans);font-weight:600}.enroll-item-btn:hover{background:#6b5ef0;box-shadow:0 2px 10px #7c6ffd66}.enroll-item-btn.enrolled{background:var(--color-success-bg);color:var(--color-success-text);cursor:default;border:1px solid rgba(52,211,153,.2)}.modal-footer{padding:1rem 1.5rem;border-top:1px solid var(--color-border);display:flex;justify-content:flex-end}.roster-name{font-size:14px;color:var(--color-text-primary)}.roster-pills{display:flex;flex-wrap:wrap;gap:5px}.roster-class-pill{display:inline-flex;align-items:center;gap:5px;background:var(--color-info-bg);border:1px solid rgba(124,111,253,.22);color:var(--color-info-text);border-radius:999px;padding:3px 10px 3px 11px;font-size:12px;font-weight:500;transition:background .15s}.roster-class-pill:hover{background:#7c6ffd2e}.roster-pill-x{border:none;background:none;color:var(--color-info-text);cursor:pointer;font-size:15px;opacity:.55;padding:0;line-height:1;transition:opacity .15s;font-family:var(--font-sans)}.roster-pill-x:hover{opacity:1}.rh-list{display:flex;flex-direction:column;gap:6px}.rh-card{display:flex;align-items:center;gap:13px;background:var(--color-surface-elevated);border:1px solid var(--color-border-strong);border-radius:var(--radius-lg);padding:11px 14px;transition:border-color .18s,box-shadow .18s,transform .18s;cursor:default;-webkit-user-select:none;user-select:none;position:relative}.rh-card:hover{border-color:#7c6ffd47;box-shadow:0 4px 16px #7c6ffd14;transform:translate(2px)}.rh-card.rh-dragging{opacity:.3;border-style:dashed;border-color:var(--color-accent)}.rh-card.rh-drop-above{border-top:2.5px solid var(--color-accent);margin-top:-2px}.rh-card.rh-drop-below{border-bottom:2.5px solid var(--color-accent);margin-bottom:-2px}.rh-drag-handle{color:var(--color-text-muted);font-size:18px;cursor:grab;flex-shrink:0;opacity:0;transition:opacity .15s;line-height:1;padding:4px 2px;-webkit-user-select:none;user-select:none}.rh-card:hover .rh-drag-handle{opacity:.7}.rh-drag-handle:active{cursor:grabbing}.rh-avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,#7c6ffd38,#7c6ffd12);border:1.5px solid rgba(124,111,253,.25);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:#a8a3ff;flex-shrink:0;letter-spacing:-.3px}.rh-info{flex:1;min-width:0;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.rh-name{font-size:13.5px;color:var(--color-text-primary);white-space:nowrap;flex-shrink:0}.rh-pills{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.rh-class-pill{display:inline-flex;align-items:center;gap:4px;background:var(--color-info-bg);border:1px solid rgba(124,111,253,.2);color:var(--color-info-text);border-radius:999px;padding:2px 7px 2px 10px;font-size:11.5px;font-weight:500;transition:background .15s}.rh-class-pill:hover{background:#7c6ffd2e}.rh-pill-x{border:none;background:none;color:var(--color-info-text);cursor:pointer;font-size:14px;opacity:.5;padding:0;line-height:1;transition:opacity .15s,color .15s;font-family:var(--font-sans)}.rh-pill-x:hover{opacity:1;color:var(--color-danger-text)}.rh-not-enrolled{font-size:11.5px;color:var(--color-text-muted);font-style:italic}.rh-email{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--color-text-secondary);flex-shrink:0}.rh-email-icon{font-size:11px;opacity:.6}.rh-email-link{color:#a8a3ff;text-decoration:none;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rh-email-link:hover{text-decoration:underline;color:#c4c0ff}.rh-email-edit{background:none;border:none;color:var(--color-text-muted);cursor:pointer;font-size:12px;padding:0 2px;opacity:0;transition:opacity .15s,color .15s;font-family:var(--font-sans);line-height:1}.rh-card:hover .rh-email-edit{opacity:.6}.rh-email-edit:hover{color:var(--color-text-primary);opacity:1!important}.rh-email-empty{opacity:0;transition:opacity .15s}.rh-card:hover .rh-email-empty{opacity:1}.rh-email-add{background:none;border:none;color:var(--color-text-muted);cursor:pointer;font-size:11.5px;padding:0;font-family:var(--font-sans);transition:color .15s}.rh-email-add:hover{color:#a8a3ff}.rh-delete{flex-shrink:0;width:28px;height:28px;border-radius:50%;background:transparent;border:1px solid transparent;color:var(--color-text-muted);font-size:17px;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:all .15s;font-family:var(--font-sans);line-height:1}.rh-card:hover .rh-delete{opacity:1}.rh-delete:hover{background:var(--color-danger-bg);border-color:#f8717159;color:var(--color-danger-text);opacity:1!important}.results-toolbar{display:flex;justify-content:flex-end;gap:8px;margin-bottom:1rem}.print-btn{display:inline-flex;align-items:center;gap:7px;font-size:13px;padding:8px 18px;border-radius:var(--radius-md);border:1px solid var(--color-border-strong);background:var(--color-surface-elevated);color:var(--color-text-primary);cursor:pointer;transition:all .18s ease;font-family:var(--font-sans);font-weight:500}.print-btn:hover{background:#ffffff12;border-color:#ffffff38;box-shadow:0 4px 16px #0000004d}.print-area{display:none}@media print{body{background:#fff!important;color:#111!important;padding:0!important;font-family:Inter,system-ui,sans-serif!important}body:before,body:after{display:none!important}.sidebar,.sidebar-rail,.page-content{display:none!important}.print-area{display:block!important;padding:24px 28px;color:#111;max-width:100%}.print-header{border-bottom:2px solid #6c63ff;padding-bottom:14px;margin-bottom:20px}.print-title{font-size:20px;font-weight:700;color:#1e1b4b;margin-bottom:3px}.print-subtitle{font-size:11px;color:#6b7280;margin-bottom:2px}.print-date{font-size:11px;color:#9ca3af}#printResultsContent .card{background:#fff!important;border:1px solid #e5e7eb!important;border-radius:8px!important;padding:12px 14px!important;margin-bottom:16px!important;break-inside:avoid}#printResultsContent .section-label{font-size:9px!important;font-weight:600!important;color:#6b7280!important;text-transform:uppercase!important;letter-spacing:.08em!important;margin-bottom:8px!important}#printResultsContent .overflow-x{overflow:visible!important}#printResultsContent .tbl{width:100%!important;border-collapse:collapse!important;font-size:9.5px!important}#printResultsContent .tbl th{background:#f3f4f6!important;color:#374151!important;font-size:8.5px!important;text-transform:uppercase!important;letter-spacing:.05em!important;padding:5px 7px!important;border-bottom:1px solid #d1d5db!important;text-align:left!important;white-space:nowrap!important}#printResultsContent .tbl td{padding:5px 7px!important;border-bottom:1px solid #f3f4f6!important;color:#111!important;font-size:9.5px!important}#printResultsContent .tbl tr:last-child td{border-bottom:none!important}#printResultsContent .tbl .bold{font-weight:600!important}#printResultsContent .tbl tbody tr:hover{background:transparent!important}#printResultsContent .result-grid{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:8px!important;margin-bottom:12px!important}#printResultsContent .metric{background:#f9fafb!important;border:1px solid #e5e7eb!important;border-radius:6px!important;padding:8px 10px!important}#printResultsContent .metric-label{font-size:8px!important;color:#9ca3af!important;font-weight:600!important;text-transform:uppercase!important;letter-spacing:.05em!important;margin-bottom:4px!important}#printResultsContent .metric-value{font-size:18px!important;font-weight:700!important;color:#1e1b4b!important;letter-spacing:-.5px!important}#printResultsContent .badge-pass{background:#d1fae5!important;color:#065f46!important;font-size:8.5px!important;font-weight:600!important;padding:2px 6px!important;border-radius:999px!important}#printResultsContent .badge-warn{background:#fef3c7!important;color:#92400e!important;font-size:8.5px!important;font-weight:600!important;padding:2px 6px!important;border-radius:999px!important}#printResultsContent .badge-fail{background:#fee2e2!important;color:#991b1b!important;font-size:8.5px!important;font-weight:600!important;padding:2px 6px!important;border-radius:999px!important}}.app-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:4px}.header-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.workspace-badge{display:flex;align-items:center;gap:6px;background:#7c6ffd1a;border:1px solid rgba(124,111,253,.28);border-radius:999px;padding:4px 6px 4px 10px;flex-shrink:0}.workspace-icon{font-size:12px;line-height:1}.workspace-code{font-size:12px;font-weight:700;color:#a8a3ff;letter-spacing:.08em;text-transform:uppercase}.workspace-switch-btn{font-size:11px;padding:3px 8px;border-radius:999px;border:1px solid rgba(124,111,253,.28);background:transparent;color:#8b93a8;cursor:pointer;transition:all .18s ease;font-family:var(--font-sans)}.workspace-switch-btn:hover{color:#a8a3ff;border-color:#7c6ffd8c;background:#7c6ffd1a}.user-badge{display:flex;align-items:center;gap:8px;background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:999px;padding:4px 6px 4px 8px;flex-shrink:0}.user-name{font-size:12.5px;color:var(--color-text-secondary);max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sign-out-btn{font-size:11.5px;padding:4px 10px;border-radius:999px;border:1px solid var(--color-border);background:transparent;color:var(--color-text-muted);cursor:pointer;transition:all .18s ease;font-family:var(--font-sans)}.sign-out-btn:hover{color:var(--color-danger-text);border-color:var(--color-danger-text);background:var(--color-danger-bg)}.login-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:radial-gradient(ellipse at 60% 40%,rgba(124,111,253,.18) 0%,transparent 60%),var(--color-bg)}.login-card{background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:24px;padding:3rem 2.5rem;max-width:400px;width:100%;text-align:center;box-shadow:0 0 0 1px #7c6ffd1a,0 32px 64px #00000080,0 0 80px #7c6ffd14;animation:fadeSlideUp .4s cubic-bezier(.16,1,.3,1) both}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(24px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.login-logo{font-size:52px;margin-bottom:1.25rem;line-height:1;filter:drop-shadow(0 4px 16px rgba(124,111,253,.4))}.login-title{font-size:24px;font-weight:800;background:linear-gradient(135deg,#eef0f5 30%,#a8a3ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.6rem;letter-spacing:-.5px}.login-subtitle{font-size:14px;color:var(--color-text-secondary);margin-bottom:2rem;line-height:1.6}.login-note{font-size:12px;color:var(--color-text-muted);margin-top:.25rem}.save-indicator{position:fixed;bottom:24px;right:24px;background:var(--color-surface-elevated);border:1px solid rgba(52,211,153,.25);border-radius:12px;padding:10px 18px;font-size:13px;font-weight:600;color:var(--color-success-text);box-shadow:0 8px 28px #00000073,0 0 0 1px #34d39914,0 0 24px #34d3990f;opacity:0;transform:translateY(14px) scale(.96);transition:opacity .28s cubic-bezier(.16,1,.3,1),transform .28s cubic-bezier(.16,1,.3,1);pointer-events:none;z-index:500;display:flex;align-items:center;gap:8px}.save-indicator:before{content:"✓";font-size:14px;font-weight:800}.save-indicator.visible{opacity:1;transform:translateY(0) scale(1)}*,*:before,*:after{box-sizing:border-box}.container{width:100%;max-width:460px;text-align:center;margin:0 auto;animation:fadeUp .45s cubic-bezier(.16,1,.3,1) both}body:has(.container){display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1.5rem;background-image:radial-gradient(ellipse 80% 50% at 50% -10%,rgba(99,130,255,.14) 0%,transparent 70%)}@keyframes fadeUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.logo{width:56px;height:56px;background:var(--color-surface-elevated);border:1px solid rgba(255,255,255,.1);border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:26px;margin:0 auto 1rem;box-shadow:0 8px 32px #0006}.app-name{font-size:13px;font-weight:700;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:2.25rem}.container h1{font-size:30px;font-weight:800;letter-spacing:-.5px;color:var(--color-text-primary);margin-bottom:.4rem}.sub{font-size:15px;color:var(--color-text-secondary);line-height:1.6;margin-bottom:2.5rem}.code-input-wrap{margin-bottom:1.5rem}.code-input{width:100%;background:var(--color-surface-elevated);border:2px solid var(--color-border-strong);border-radius:1px;color:var(--color-text-primary);font-size:18px!important;font-weight:700;font-family:inherit;text-align:center;outline:none;padding:22px 24px;min-height:50px;letter-spacing:.14em;text-transform:uppercase;caret-color:var(--color-accent);transition:border-color .16s,box-shadow .16s}.code-input:focus{border-color:#6382ff8c;box-shadow:0 0 0 3px #6382ff2e}.sign-btn{width:100%;padding:16px;border-radius:14px;border:none;background:var(--color-accent);color:#fff;font-size:16px;font-weight:700;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .2s ease;position:relative;overflow:hidden}.sign-btn:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,rgba(255,255,255,.12),transparent);pointer-events:none}.sign-btn:hover:not(:disabled){filter:brightness(1.12);transform:translateY(-1.5px);box-shadow:0 8px 24px #6382ff73}.sign-btn:disabled{background:#e3e2ef;color:var(--color-text-muted);cursor:not-allowed}.btn-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .65s linear infinite;display:none}.sign-btn.loading .btn-spinner{display:block}.sign-btn.loading .btn-label{opacity:.5}@keyframes spin{to{transform:rotate(360deg)}}.overlay{text-align:center;padding:1rem 0}.overlay-spinner{width:36px;height:36px;border:3px solid rgba(99,130,255,.2);border-top-color:var(--color-accent);border-radius:50%;animation:spin .75s linear infinite;margin:0 auto 1rem}.overlay p{font-size:14px;color:var(--color-text-secondary)}.err-row{display:none;align-items:center;gap:8px;background:#f871711a;border:1px solid rgba(248,113,113,.22);border-radius:10px;padding:10px 13px;margin-top:1rem;text-align:left;animation:fadeUp .18s ease}.err-row.show{display:flex}.err-row span{font-size:13px;color:#f87171;line-height:1.5}.hint{font-size:13.5px;color:var(--color-text-muted);margin-top:1.25rem;line-height:1.6}.login-theme-btn{position:fixed;top:16px;right:16px;width:34px;height:34px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:#ffffff0f;color:#ffffff73;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:all .18s;z-index:10;font-family:inherit}.login-theme-btn:hover{background:#ffffff1f;border-color:#fff3;color:#ffffffbf}html[data-theme=light] .login-theme-btn{background:#ededf4;border-color:#45446224;color:#9c9cb8}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem 1rem;background-image:radial-gradient(ellipse 80% 50% at 50% -10%,rgba(124,111,253,.18) 0%,transparent 70%);position:relative;z-index:1}.login-card{width:100%;max-width:400px;background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:20px;padding:2.25rem 2rem;box-shadow:0 32px 64px #0006,0 0 0 1px #ffffff0a;animation:fadeUp .4s cubic-bezier(.16,1,.3,1) both}.login-logo{font-size:32px;margin-bottom:.5rem;text-align:center}.login-brand{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-muted);text-align:center;margin-bottom:1.5rem}.login-title{font-size:22px;font-weight:800;color:var(--color-text-primary);letter-spacing:-.4px;margin-bottom:.4rem;background:linear-gradient(135deg,#eef0f5 40%,#a8a3ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.login-sub{font-size:13.5px;color:var(--color-text-secondary);line-height:1.6;margin-bottom:1.75rem}.login-fields{display:flex;flex-direction:column;gap:14px;margin-bottom:1.25rem}.login-field{display:flex;flex-direction:column;gap:6px}.login-field label{font-size:12px;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.login-field input{width:100%;padding:10px 13px;background:var(--color-surface-elevated);border:1px solid var(--color-border-strong);border-radius:10px;color:var(--color-text-primary);font-size:14px;font-family:inherit;outline:none;transition:border-color .16s,box-shadow .16s}.login-field input:focus{border-color:#7c6ffd8c;box-shadow:0 0 0 3px #7c6ffd26}.login-field-hint{font-size:11.5px;color:var(--color-text-muted);line-height:1.5}.login-error{display:flex;align-items:center;gap:8px;background:#f871711a;border:1px solid rgba(248,113,113,.22);border-radius:10px;padding:10px 13px;margin-bottom:1rem;font-size:13px;color:#f87171}.login-btn{width:100%;padding:13px;border-radius:12px;border:none;background:var(--color-accent);color:#fff;font-size:14.5px;font-weight:700;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .2s ease;position:relative;overflow:hidden;margin-bottom:1rem}.login-btn:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,rgba(255,255,255,.1),transparent);pointer-events:none}.login-btn:hover:not(:disabled){filter:brightness(1.1);transform:translateY(-1.5px);box-shadow:0 8px 24px #7c6ffd66}.login-btn:disabled{opacity:.6;cursor:not-allowed}.login-hint{font-size:12px;color:var(--color-text-muted);text-align:center;line-height:1.6}.login-hint a{color:var(--color-accent);text-decoration:none}.login-hint a:hover{text-decoration:underline}html[data-theme=light] .login-card{background:#fff;border-color:#45446224;box-shadow:0 20px 50px #45446226}html[data-theme=light] .login-title{background:linear-gradient(135deg,#2a2a42 40%,#5b5b8a);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}html[data-theme=light] .login-btn{background:#5b5b8a}html[data-theme=light] .login-btn:hover:not(:disabled){box-shadow:0 8px 24px #5b5b8a66}html[data-theme=light] .login-field input{background:#ededf4;border-color:#45446224;color:#2a2a42}html[data-theme=light] .login-field input:focus{border-color:#5b5b8a8c;box-shadow:0 0 0 3px #5b5b8a24}.st-theme-btn{background:var(--color-surface-elevated);border:1px solid var(--color-border-strong);border-radius:10px;color:var(--color-text-muted);font-size:14px;width:34px;height:34px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:all .18s;flex-shrink:0;font-family:inherit}.st-theme-btn:hover{background:#ffffff12;border-color:var(--color-border-vivid);color:var(--color-text-primary)}html[data-theme=light] .st-theme-btn{background:#ededf4;border-color:#45446224}.logo-mark{width:44px;height:44px;background:#8e8ea8;border:1px solid #6B6B9A;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0;color:#fff}.brand-name{font-size:16px;font-weight:800;color:var(--color-text-primary);letter-spacing:-.2px}.topbar-right{display:flex;align-items:center;gap:9px}.signout-btn{background:var(--color-surface-elevated);border:1px solid var(--color-border-strong);border-radius:10px;color:var(--color-text-secondary);font-size:14px;font-family:inherit;padding:8px 16px;cursor:pointer;transition:all .18s;display:flex;align-items:center;gap:7px;font-weight:600}.signout-btn:hover{color:var(--color-text-primary);border-color:var(--color-border-vivid);background:#ffffff0d}.hero{margin-bottom:2.5rem}.hero-eyebrow{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:#8e8ea8;text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px}.hero-eyebrow-dot{width:6px;height:6px;background:#8e8ea8;border-radius:50%;animation:blink 2.5s ease-in-out infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.hero-name{font-size:clamp(28px,5.5vw,42px);font-weight:800;color:var(--color-text-primary);letter-spacing:-1px;line-height:1.08;margin-bottom:12px}.hero-name em{font-style:normal;color:#8e8ea8}.hero-sub{font-size:16px;color:var(--color-text-secondary);line-height:1.6}.section-header{display:flex;align-items:center;gap:10px;margin-bottom:1.25rem}.section-title{font-size:14px;font-weight:700;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.07em}.section-line{flex:1;height:1px;background:var(--color-border)}.classes-grid{display:flex;flex-direction:column;gap:1.25rem}.class-card{background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:20px;overflow:hidden;transition:border-color .22s,box-shadow .22s,transform .22s;animation:fadeUp .4s cubic-bezier(.16,1,.3,1) both;position:relative}.class-card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:#8e8ea8;opacity:0;transition:opacity .3s}.class-card:hover{border-color:#cacad8;box-shadow:0 12px 40px #8e8ea81a,0 4px 12px #0003;transform:translateY(-2px)}.class-card:hover:before{opacity:1}.class-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:1.25rem 1.5rem;border-bottom:1px solid var(--color-border);cursor:pointer;-webkit-user-select:none;user-select:none;flex-wrap:wrap}.class-header-left{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.class-initial{width:38px;height:38px;border-radius:11px;background:#e2e2ef;border:1px solid #CACAD8;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:800;color:#6b6b9a;flex-shrink:0}.class-name{font-size:17px;font-weight:700;color:var(--color-text-primary);letter-spacing:-.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.class-meta{font-size:12.5px;font-weight:500;color:var(--color-text-secondary);margin-top:2px}.class-header-right{display:flex;align-items:center;gap:10px}.chevron{color:var(--color-text-muted);transition:transform .3s cubic-bezier(.16,1,.3,1),color .2s;flex-shrink:0}.class-card.open .chevron{transform:rotate(180deg);color:#8e8ea8}.class-body{overflow:hidden;max-height:0;transition:max-height .4s cubic-bezier(.16,1,.3,1)}.class-card.open .class-body{max-height:2000px}.class-body-inner{padding:1.35rem 1.5rem;display:flex;flex-direction:column;gap:1.25rem}.sub-label{font-size:12px;font-weight:700;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.07em;margin-bottom:10px}.targets-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(68px,1fr));gap:8px}.target-chip{display:flex;flex-direction:column;align-items:center;gap:5px;background:var(--color-surface-elevated);border:1px solid var(--color-border-strong);border-radius:12px;padding:10px 8px;transition:border-color .2s,transform .2s}.target-chip:hover{transform:translateY(-2px);border-color:#cacad8}.target-chip-name{font-size:11.5px;font-weight:700;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.target-chip-score{font-size:22px;font-weight:800;line-height:1}.score-4{color:#34d399}.score-3{color:#6ee7b7}.score-2{color:#fbbf24}.score-1{color:#f87171}.score-0{color:var(--color-text-muted)}.score-na{color:var(--color-text-muted);font-size:16px}.target-chip-dots{display:flex;gap:3px}.dot{width:5px;height:5px;border-radius:50%;background:var(--color-border-strong);transition:background .2s}.dot.filled-4{background:#34d399}.dot.filled-3{background:#6ee7b7}.dot.filled-2{background:#fbbf24}.dot.filled-1{background:#f87171}.spinner-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;gap:16px}.spinner{width:42px;height:42px;border:3px solid rgba(142,142,168,.2);border-top-color:#8e8ea8;border-radius:50%;animation:spin .8s linear infinite}.spinner-label{font-size:15px;color:var(--color-text-secondary)}.state-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;text-align:center;gap:14px;padding:2rem}.state-icon-wrap{width:80px;height:80px;background:var(--color-surface-elevated);border:1px solid var(--color-border-strong);border-radius:24px;display:flex;align-items:center;justify-content:center;font-size:36px;color:#8e8ea8}.state-title{font-size:19px;font-weight:800;color:var(--color-text-primary);letter-spacing:-.3px}.state-msg{font-size:14px;color:var(--color-text-secondary);line-height:1.7;max-width:360px}html[data-theme=light] .logo-mark{background:#6b6b9a;border-color:#5b5b8a}html[data-theme=light] .brand-name{color:#3d3d5c}html[data-theme=light] .hero-eyebrow{color:#6b6b9a}html[data-theme=light] .hero-eyebrow-dot{background:#6b6b9a}html[data-theme=light] .hero-name em{color:#6b6b9a}html[data-theme=light] .class-initial{background:#e2e2ef;border-color:#cacad8;color:#5b5b8a}html[data-theme=light] .class-card:hover{border-color:#cacad8;box-shadow:0 12px 40px #6b6b9a1a,0 4px 12px #0000000f}html[data-theme=light] .class-card.open .chevron{color:#6b6b9a}html[data-theme=light] .class-card:before{background:#8e8ea8}html[data-theme=light] .state-icon-wrap{background:#e2e2ef;border-color:#cacad8;color:#6b6b9a}.page{position:relative;z-index:1;max-width:860px;margin:0 auto;padding:0 1.25rem 5rem}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:1.5rem 0 2rem;border-bottom:1px solid var(--color-border);margin-bottom:2.5rem;flex-wrap:wrap}.topbar-left{display:flex;align-items:center;gap:12px}.logo-mark{width:44px;height:44px;background:linear-gradient(135deg,#38bdf833,#818cf826);border:1px solid rgba(56,189,248,.28);border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0;box-shadow:0 4px 16px #38bdf82e}.dma-credit-login{font-size:12px;color:var(--color-text-muted);text-align:center;margin-top:2rem;line-height:1.6;opacity:.7}.dma-credit-login strong{font-weight:700;color:var(--color-text-secondary)}.dma-credit-bar{text-align:center;font-size:12px;color:var(--color-text-muted);padding:2rem 1rem 1.5rem;opacity:.65;border-top:1px solid var(--color-border);margin-top:16rem}.dma-credit-bar strong{font-weight:700}
