:root{--text:#6b7280;--text-h:#1f2937;--text-muted:#9ca3af;--bg:#f7f8fa;--card:#fff;--border:#e5e7eb;--primary:#f7c948;--primary-hover:#c98a1d;--accent-bg:#fff3c4;--accent-border:#f7c94880;--code-bg:#fff3c4;--danger:#ef4444;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (width<=1024px){:root{font-size:16px}}body{background:var(--bg);margin:0}#root{background:var(--bg);box-sizing:border-box;flex-direction:column;width:100%;min-height:100svh;display:flex}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:600}h1{letter-spacing:-1px;margin:32px 0;font-size:42px;line-height:1.2}@media (width<=1024px){h1{margin:20px 0;font-size:32px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:8px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}.card{background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:16px;padding:24px}button{background:var(--primary);color:#1f2937;cursor:pointer;border:none;border-radius:12px;padding:12px 24px;font-size:16px;font-weight:600;transition:background .2s,transform .2s}button:hover{background:var(--primary-hover);transform:translateY(-1px)}button:active{transform:translateY(0)}input,select,textarea{background:var(--card);color:var(--text-h);border:1px solid var(--border);border-radius:12px;outline:none;padding:12px 14px;font-size:16px;transition:border .2s}input:focus,select:focus,textarea:focus{border-color:var(--primary)}.upload-area{background:var(--card);border:2px dashed var(--primary);box-shadow:var(--shadow);border-radius:16px;padding:40px;transition:all .2s}.upload-area:hover{background:#fffdf5}table{border-collapse:collapse;background:var(--card);border-radius:16px;width:100%;overflow:visible}th{background:var(--accent-bg);color:var(--text-h);padding:14px;font-weight:600}td{border-bottom:1px solid var(--border);color:var(--text);padding:14px}.grade{background:var(--primary);color:#1f2937;border-radius:999px;padding:5px 12px;font-weight:700;display:inline-flex}.badge{background:var(--accent-bg);color:var(--text-h);border-radius:8px;padding:5px 10px;font-size:14px;font-weight:600}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:20px}.sidebar{background:var(--card);border-right:1px solid var(--border);box-sizing:border-box;flex-direction:column;width:300px;min-width:300px;height:100svh;padding:28px 20px;display:flex;position:sticky;top:0}.sidebar-brand{align-items:center;gap:12px;margin-bottom:32px;display:flex}.sidebar-logo{object-fit:contain;flex-shrink:0;width:52px;height:52px}.sidebar-brand h1{letter-spacing:-.6px;color:var(--text-h);margin:0;font-size:30px;font-weight:800;line-height:1.08}.brand-accent{color:var(--primary)}.sidebar-nav{flex-direction:column;gap:6px;display:flex}.sidebar-nav-item{text-align:left;width:100%;color:var(--text-muted);cursor:pointer;box-sizing:border-box;background:0 0;border:none;border-radius:14px;align-items:center;gap:12px;padding:12px 14px;font-size:15px;font-weight:500;line-height:1.25;transition:background .15s,color .15s;display:flex}.sidebar-nav-item:hover{background:var(--accent-bg);color:var(--text-h)}.sidebar-nav-item.active{background:var(--accent-bg);color:var(--primary-hover);font-weight:600}.sidebar-nav-icon{flex-shrink:0}.sidebar-bobby-logo-icon{object-fit:contain;width:20px;height:20px}.sidebar-nav-label{white-space:nowrap;flex:1;min-width:0}.sidebar-chat-unread-badge{box-sizing:border-box;color:#fff;background:#dc2626;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;min-width:24px;height:20px;padding:0 5px;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.sidebar-signout{color:var(--danger);cursor:pointer;background:0 0;border:none;border-radius:14px;align-items:center;gap:10px;margin-top:auto;padding:12px 14px;font-size:15px;font-weight:600;transition:background .15s;display:flex}.sidebar-signout:hover{background:#fef2f2}@media (width<=900px){.sidebar{border-right:none;border-bottom:1px solid var(--border);flex-flow:wrap;align-items:center;gap:8px;width:100%;min-width:0;height:auto;position:relative}.sidebar-brand{gap:8px;margin-bottom:0;margin-right:12px}.sidebar-logo{width:38px;height:38px}.sidebar-brand h1{margin:0;font-size:20px}.sidebar-nav{flex-flow:wrap}.sidebar-nav-label{display:none}.sidebar-signout{margin-top:0;margin-left:auto}.sidebar-signout span{display:none}}.topbar{justify-content:flex-end;align-items:center;gap:16px;padding:28px 40px 0;display:flex}.topbar-bot{background:var(--card);border:1px solid var(--border);width:48px;height:48px;color:var(--text-muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;transition:border-color .15s,color .15s,transform .15s;display:flex}.topbar-bot:hover{border-color:var(--primary);color:var(--primary-hover);transform:none}.topbar-user{align-items:center;gap:12px;display:flex}.topbar-avatar{background:var(--border);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.topbar-identity{flex-direction:column;line-height:1.3;display:flex}.topbar-id{color:var(--text-h);font-size:15px}.topbar-name{color:var(--text-h);font-size:15px;font-weight:600}@media (width<=900px){.topbar{padding:16px 20px 0}}.chatbot-icon{object-fit:contain;width:26px;height:26px}.topbar-notification{width:42px;height:42px;color:var(--text-h);border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:background .15s,transform .15s,box-shadow .15s;display:flex;position:relative}.topbar-notification:hover{background:#fff;transform:translateY(-1px);box-shadow:0 2px 8px #00000014}.topbar-notification-badge{color:#fff;box-sizing:border-box;background:#dc2626;border:2px solid #fff;border-radius:999px;justify-content:center;align-items:center;min-width:19px;height:19px;padding:0 5px;font-size:10px;font-weight:700;line-height:1;display:inline-flex;position:absolute;top:-6px;right:-6px}.topbar-actions{align-items:center;gap:10px;display:flex}.topbar-notification{width:42px;height:42px;color:var(--text-h);border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex;position:relative}.topbar-notification:hover{color:var(--primary-hover);background:#fff;box-shadow:0 2px 8px #00000014}.topbar-notification-badge{color:#fff;background:#dc2626;border:2px solid #fff;border-radius:999px;justify-content:center;align-items:center;min-width:19px;height:19px;padding:0 5px;font-size:10px;font-weight:700;line-height:1;display:inline-flex;position:absolute;top:-6px;right:-6px}.dashboard{flex-direction:column;gap:24px;display:flex}.dashboard-actions{justify-content:flex-end;gap:12px;display:flex}.upload-grade-btn{background:var(--primary);color:var(--text-h);cursor:pointer;border:none;border-radius:12px;align-items:center;gap:8px;padding:12px 20px;font-size:15px;font-weight:600;transition:background .15s,transform .15s;display:inline-flex}.upload-grade-btn:hover{background:var(--primary-hover);color:#fff;transform:none}.upload-grade-btn.secondary{background:var(--card);color:var(--text-h);border:1px solid var(--border)}.upload-grade-btn.secondary:hover{background:var(--accent-bg);color:var(--text-h);border-color:var(--accent-border)}.stat-grid{grid-template-columns:repeat(2,minmax(200px,1fr));gap:24px;display:grid}.stat-card{background:var(--card);border-radius:20px;flex-direction:column;justify-content:center;align-items:center;gap:14px;min-height:150px;padding:24px;display:flex;box-shadow:0 1px 2px #1018280a,0 1px 3px #1018280f}.stat-label{color:var(--text-h);text-align:center;font-size:20px;font-weight:700;line-height:1.2}.stat-value{min-height:42px;color:var(--text-h);text-align:center;justify-content:center;align-items:center;font-size:34px;font-weight:500;line-height:1;display:flex}.progress-card{background:var(--card);border-radius:20px;padding:26px 28px 22px;box-shadow:0 1px 2px #1018280a,0 1px 3px #1018280f}.progress-header{justify-content:space-between;align-items:baseline;margin-bottom:16px;display:flex}.progress-title,.progress-pct{color:var(--text-h);font-size:24px}.progress-track{background:var(--border);border-radius:999px;width:100%;height:16px;overflow:hidden}.progress-fill{background:var(--primary);border-radius:999px;height:100%;transition:width .4s,background-color .4s}.progress-footer{color:var(--text-h);justify-content:flex-end;margin-top:10px;font-size:20px;display:flex}.grad-status-card{background:var(--card);color:var(--text-h);border-radius:20px;padding:20px 28px;font-size:18px;box-shadow:0 1px 2px #1018280a,0 1px 3px #1018280f}.major-courses-card{background:var(--card);border-radius:20px;padding:26px 28px 30px;box-shadow:0 1px 2px #1018280a,0 1px 3px #1018280f}.major-courses-card h3{color:var(--text-h);margin:0 0 16px;font-size:19px;font-weight:600}.major-courses-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.major-courses-list li{color:var(--text-h);align-items:center;gap:10px;font-size:17px;display:flex}.course-code{font-weight:600}.course-status{color:var(--text);font-weight:500}.status-complete{color:#16a34a}.status-retry{color:#d97706}.status-withdraw{color:var(--danger)}.status-register{color:#2563eb}.status-incomplete{color:var(--text-muted)}.status-not-taken{color:var(--text-muted);opacity:.7}@media (width<=640px){.stat-grid{grid-template-columns:1fr}}.grade-list-page{flex-direction:column;gap:20px;display:flex}.grade-list-back{color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-self:flex-start;align-items:center;gap:6px;padding:4px;font-size:14px;font-weight:600;display:inline-flex}.grade-list-back:hover{color:var(--text-h)}.grade-term-card{background:var(--card);border-radius:20px;padding:22px 30px 26px;box-shadow:0 1px 2px #1018280a,0 1px 3px #1018280f}.grade-term-wrap{position:relative}.grade-term-actions{justify-content:flex-end;gap:8px;margin:0 4px 8px;display:flex}.grade-term-edit,.grade-term-save{cursor:pointer;border-radius:9px;align-items:center;gap:6px;height:36px;padding:0 14px;font-size:14px;font-weight:700;display:inline-flex}.grade-term-edit{border:1px solid var(--border);background:var(--card);color:var(--text-h)}.grade-term-save{color:#fff;background:#16a34a;border:0}.grade-term-card h3{color:var(--text-h);margin:0 0 14px;font-size:20px;font-weight:700}.grade-term-card ul{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.grade-course-box{background:var(--bg,#f9fafb);border:1px solid var(--border);border-radius:14px;justify-content:space-between;align-items:center;gap:20px;padding:14px 46px 14px 18px;display:flex;position:relative}.grade-course{color:var(--text-h);font-size:16px}.grade-value{background:var(--accent-bg);color:var(--text-h);border:none;border-radius:999px;flex-shrink:0;padding:4px 14px;font-size:15px;font-weight:700}button.grade-value{cursor:default}button.grade-value.is-editable{cursor:pointer;outline-offset:2px;outline:2px dashed #d59b14}.grade-inline-select{cursor:pointer;appearance:auto}.term-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.term-header h3{margin:0}.term-credits{color:var(--text-muted,#667085);font-size:13px;font-weight:500}.term-average-value{min-width:48px;color:var(--text-h);background:#fef3c7;border-radius:999px;justify-content:center;align-items:center;padding:5px 12px;font-weight:700;display:inline-flex}.grade-edit-btn{border:1px solid var(--border);background:var(--card);width:26px;height:26px;color:var(--text-muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex;position:absolute;top:8px;right:8px}.grade-edit-btn:hover{background:var(--accent-bg);color:var(--text-h)}.grade-edit-row{background:var(--accent-bg);border-radius:12px;flex-direction:column;padding:12px;align-items:stretch!important;gap:8px!important}.grade-edit-fields{flex-wrap:wrap;gap:8px;display:flex}.grade-edit-fields input,.grade-edit-fields select{border:1px solid var(--border);color:var(--text-h);background:var(--card);border-radius:8px;padding:6px 10px;font-size:14px}.grade-edit-name{flex:1;min-width:160px}.grade-edit-select,.grade-edit-credits{width:90px}.grade-edit-actions{gap:8px;display:flex}.grade-edit-save,.grade-edit-cancel{cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;gap:4px;padding:6px 14px;font-size:13px;font-weight:600;display:inline-flex}.grade-edit-save{color:#fff;background:#16a34a}.grade-edit-save:disabled,.grade-edit-cancel:disabled{opacity:.6;cursor:not-allowed}.grade-edit-cancel{background:var(--border);color:var(--text-h)}.grade-edit-error{color:#b91c1c;margin:0;font-size:13px}.grade-upload{flex-direction:column;gap:20px;display:flex}.grade-upload-intro h2{margin:0 0 4px}.grade-upload-intro p{color:var(--text-muted)}.selected-file{color:var(--text);margin:12px 0 0}.upload-message{color:var(--text-h);margin:12px 0 0;font-weight:600}.course-rec-card{background:var(--card);border-radius:20px;padding:26px 32px 30px;box-shadow:0 1px 2px #1018280a,0 1px 3px #1018280f}.course-rec-card h3{color:var(--text-h);align-items:center;gap:8px;margin:0 0 16px;font-size:20px;font-weight:600;display:flex}.course-rec-header{margin-bottom:16px}.course-rec-header h3{margin-bottom:6px}.course-rec-based-on{color:var(--text-muted);margin:0;font-size:13px}.course-rec-list{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.course-rec-list li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:24px;padding:14px 0;display:flex}.course-rec-list li:last-child{border-bottom:none;padding-bottom:0}.course-rec-info{flex-direction:column;gap:6px;display:flex}.course-rec-reason{color:var(--text-h);margin:0;font-size:14px;font-style:italic}.course-rec-error{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.course-rec-notice{color:#92400e;background:#fef3c7;border-radius:10px;align-items:center;gap:8px;margin-bottom:16px;padding:10px 14px;font-size:13px;display:flex}.course-rec-goals-btn{background:var(--accent-bg);color:var(--text-h);cursor:pointer;border:none;border-radius:999px;padding:8px 18px;font-size:14px;font-weight:500}.course-rec-goals-btn:hover{background:var(--primary)}.course-rec-item{color:var(--text-h);font-size:19px}.course-rec-not-open{vertical-align:middle;color:#92400e;background:#fef3c7;border-radius:999px;margin-left:10px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-block}.add-to-plan-btn{background:var(--accent-bg);color:var(--text-h);cursor:pointer;border:none;border-radius:999px;flex-shrink:0;align-items:center;gap:6px;padding:10px 22px;font-size:15px;font-weight:500;transition:background .15s,color .15s,transform .15s;display:flex}.add-to-plan-btn:hover{background:var(--primary);transform:none}.add-to-plan-btn.added{background:var(--border);color:var(--text-muted)}.add-to-plan-btn.added:hover{background:var(--border)}@media (width<=640px){.course-rec-list li{flex-direction:column;align-items:flex-start;gap:8px}.add-to-plan-btn{align-self:flex-end}}.course-rec-modal-backdrop{z-index:100;background:#0f172a73;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.course-rec-modal{background:var(--card);border-radius:18px;flex-direction:column;gap:14px;width:100%;max-width:380px;padding:24px;display:flex;box-shadow:0 20px 45px #0f172a40}.course-rec-modal-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.course-rec-modal-head h4{color:var(--text-h);margin:0;font-size:16px;font-weight:700}.course-rec-modal-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:2px;display:flex}.course-rec-modal-close:disabled{opacity:.5;cursor:default}.course-rec-modal-notice{margin-bottom:0}.course-rec-section-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.course-rec-section-box{border:1.5px solid var(--border);background:var(--card);cursor:pointer;text-align:center;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:14px 10px;transition:border-color .15s,background .15s,transform .1s;display:flex}.course-rec-section-box:hover:not(:disabled){border-color:var(--primary,#2f6feb);background:#2f6feb0f;transform:translateY(-1px)}.course-rec-section-box:disabled{cursor:default;opacity:.75}.course-rec-section-box-title{color:var(--text-h);font-size:14px;font-weight:700}.course-rec-section-schedule{color:var(--text-muted,#667085);font-size:12.5px;font-weight:500}.multi-choice{width:100%}.multi-choice-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.multi-choice-option{border:1px solid var(--border);background:var(--bg);min-height:46px;color:var(--text-h);text-align:left;cursor:pointer;border-radius:12px;align-items:center;gap:10px;padding:10px 12px;font-family:inherit;font-size:16px;font-weight:500;line-height:1.35;transition:all .15s;display:flex}.multi-choice-option:hover:not(:disabled),.multi-choice-option.selected{border-color:var(--primary);background:var(--accent-bg)}.multi-choice-option.selected{font-weight:600}.multi-choice-option:disabled{opacity:.6;cursor:not-allowed}.multi-choice-check{border:1.5px solid var(--border);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.multi-choice-option.selected .multi-choice-check{background:var(--primary);border-color:var(--primary);color:#fff}.multi-choice-text{overflow-wrap:anywhere;flex:1}.multi-choice-custom-badge{white-space:nowrap;background:#f7c9482e;border-radius:999px;padding:3px 7px;font-size:10px;font-weight:700}.multi-choice-custom{border-top:1px solid var(--border);margin-top:16px;padding-top:14px}.multi-choice-custom p{color:var(--text-muted);margin:0 0 8px;font-size:13px}.multi-choice-custom form{gap:8px;display:flex}.multi-choice-custom input{border:1px solid var(--border);background:var(--card);min-width:0;height:44px;color:var(--text-h);font:inherit;border-radius:10px;outline:none;flex:1;padding:0 14px}.multi-choice-custom input:focus{border-color:var(--primary)}.multi-choice-custom form button{background:var(--primary);height:44px;color:var(--text-h);cursor:pointer;border:0;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:0 16px;font-weight:700;display:flex}.multi-choice-custom form button:hover:not(:disabled){background:var(--primary-hover)}.multi-choice-custom form button:disabled{opacity:.5;cursor:not-allowed}.multi-choice-custom small{color:var(--text-muted);margin-top:8px;display:block}@media (width<=640px){.multi-choice-grid{grid-template-columns:1fr}.multi-choice-custom form{flex-direction:column}.multi-choice-custom form button{width:100%}}.goals-page{flex-direction:column;gap:24px;display:flex}.goals-card{background:var(--card);border-radius:20px;padding:28px 32px 36px;box-shadow:0 1px 2px #1018280a,0 1px 3px #1018280f}.goals-card h3{color:var(--text-h);margin:0 0 14px;font-size:20px;font-weight:600}.goals-card ul{margin:0;padding:0;list-style:none}.goals-group-hint{color:var(--text-muted,#64748b);margin:0 0 14px;font-size:14px;line-height:1.5}.goals-search-wrap{width:100%;max-width:520px;position:relative}.goals-search-wrap input{box-sizing:border-box;width:100%;color:var(--text-h);background:var(--bg);border:1px solid var(--border,#e2e8f0);border-radius:10px;outline:none;padding:11px 14px;font-family:inherit;font-size:15px;transition:border-color .15s,box-shadow .15s}.goals-search-wrap input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--accent-bg)}.goals-search-wrap input:disabled{cursor:not-allowed;opacity:.65}.goals-search-dropdown{z-index:200;background:var(--card);border:1px solid var(--border,#e2e8f0);border-radius:12px;max-height:260px;margin:0;padding:6px;list-style:none;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #0000001f}.goals-search-item{cursor:pointer;border-radius:8px;flex-direction:column;gap:2px;padding:10px 12px;transition:background .15s;display:flex}.goals-search-item:hover{background:var(--accent-bg)}.goals-search-item strong{color:var(--text-h);font-size:14px;font-weight:600}.goals-group-row{align-items:flex-start;gap:10px;display:flex}.goals-group-row .goals-search-wrap{flex:1}.goals-group-save-btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:10px;flex:none;height:44px;padding:0 20px;font-size:14px;font-weight:600;transition:background .15s,opacity .15s}.goals-group-save-btn:hover:not(:disabled){background:var(--primary-hover)}.goals-group-save-btn:disabled{background:var(--border,#cbd5e1);color:var(--text-muted,#64748b);cursor:not-allowed}.goals-group-error{color:#dc2626;margin:10px 0 0;font-size:13px}.goals-group-done{color:#16a34a;margin:10px 0 0;font-size:13px;font-weight:600}.goals-group-summary{background:var(--accent-bg);border:1px solid var(--accent-border);border-radius:12px;margin-top:16px;padding:14px 16px}.goals-group-summary p{color:var(--text-h);margin:0 0 6px;font-size:14px;line-height:1.5}.goals-group-summary p:last-of-type{margin-bottom:10px}.goals-group-summary .goals-group-done{color:#16a34a;font-weight:600}.goals-group-planner-btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:9px 16px;font-size:13px;font-weight:600;transition:background .15s}.goals-group-planner-btn:hover{background:var(--primary-hover)}.goals-save-status{color:var(--text-muted,#64748b);margin:14px 0 0;font-size:13px;line-height:1.5}@media (width<=640px){.goals-card{padding:22px 20px 28px}.goals-group-row{flex-direction:column}.goals-search-wrap{max-width:none}.goals-group-save-btn{width:100%}}.editable-list ul{flex-direction:column;gap:8px;margin:0 0 16px;padding:0;list-style:none;display:flex}.editable-list-empty{color:var(--text-muted);margin:0 0 16px;font-size:15px}.editable-list li{justify-content:space-between;align-items:center;gap:16px;padding:4px 0;display:flex}.editable-list-label{color:var(--text-h);font-size:19px}.editable-list-actions{flex-shrink:0;align-items:center;gap:6px;display:flex}.editable-list-actions button{border:1px solid var(--border);background:var(--bg);height:34px;color:var(--text);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;padding:0 14px;font-size:14px;font-weight:600;transition:background .15s,color .15s,border-color .15s,transform .15s;display:flex}.editable-list-actions button:hover{background:var(--accent-bg);border-color:var(--accent-border);color:var(--text-h);transform:none}.editable-list-actions button.delete-btn{color:var(--danger);background:#fef2f2;border-color:#fecaca}.editable-list-actions button.delete-btn:hover{background:var(--danger);border-color:var(--danger);color:#fff}.editable-list-actions button.save-btn:hover{color:#16a34a;background:#f0fdf4;border-color:#bbf7d0}.editable-list-input{border:1px solid var(--border);color:var(--text-h);border-radius:10px;outline:none;flex:1;padding:8px 12px;font-size:17px}.editable-list-input:focus{border-color:var(--primary)}.editable-list-add{border-top:1px solid var(--border);align-items:flex-start;gap:10px;padding-top:16px;display:flex}.editable-list-add input{box-sizing:border-box;background:var(--bg);border:1px solid var(--border);width:100%;color:var(--text-h);border-radius:10px;outline:none;padding:10px 14px;font-size:15px}.editable-list-add input:focus{border-color:var(--primary)}.editable-list-add input::placeholder{color:var(--text-muted)}.editable-list-suggestions{background:var(--bg);border:1px solid var(--border);z-index:1000;border-radius:10px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:hidden;box-shadow:0 4px 12px #0000001f}.editable-list-suggestions button{background:var(--bg);text-align:left;cursor:pointer;width:100%;color:var(--text);border:none;flex-direction:column;align-items:flex-start;padding:10px 12px;font-size:14px;display:flex}.editable-list-search{flex:1;position:relative}.editable-list-suggestions{z-index:1000;background:#fff;border:1px solid #ddd;border-radius:8px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:hidden;box-shadow:0 4px 12px #0000001f}.editable-list-suggestions button{align-items:left;text-align:left;cursor:pointer;width:100%;color:var(--text);padding:10px 12px;font-size:14px;display:flex}.editable-list-suggestions button strong,.editable-list-suggestions button span{color:var(--text-h);margin-right:8px}.editable-list-suggestions button:hover{background:#f3f4f6}.prereq-student-page{flex-direction:column;gap:14px;display:flex}.prereq-student-page h2{margin:0}.prereq-student-sub{color:var(--text-muted);margin:0;font-size:14px}.prereq-student-group-picker{background:var(--card);border:1px solid var(--border);border-radius:14px;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 16px;display:flex}.prereq-student-group-picker .prereq-student-group-label{color:var(--text-h);font-size:14px;font-weight:600}.prereq-student-group-value{color:var(--primary,#2f6feb);font-size:14px;font-weight:700}.prereq-student-group-hint{color:var(--text-muted);font-size:12.5px}.prereq-student-error{color:var(--danger);font-weight:600}.prereq-student-empty{color:var(--text-muted)}.prereq-student-list{flex-direction:column;gap:10px;display:flex}.prereq-student-row{background:var(--card);border:1px solid var(--border);border-radius:14px;grid-template-columns:220px 1fr 220px;align-items:center;gap:14px;padding:14px 18px;display:grid}.prereq-student-row-main{flex-direction:column;gap:2px;display:flex}.prereq-student-code{color:var(--text-h);font-size:14.5px;font-weight:700}.prereq-student-title{color:var(--text-muted);font-size:13px}.prereq-student-row-rule{color:var(--text);font-size:13.5px;line-height:1.5}.prereq-student-row-status{justify-content:flex-end;display:flex}.prereq-status{white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:6px 10px;font-size:12.5px;font-weight:600;display:inline-flex}.prereq-status-ok{color:#16a34a;background:#dcfce7}.prereq-status-blocked{color:var(--danger);background:#fef2f2}.prereq-status-manual{color:#92700b;background:#fef9c3}@media (width<=800px){.prereq-student-row{grid-template-columns:1fr}.prereq-student-row-status{justify-content:flex-start}}.planner-page{flex-direction:column;gap:20px;display:flex}.planner-title{color:var(--text-h);margin:0 0 4px;font-size:30px;font-weight:500}.planner-card{background:var(--card);border-radius:20px;padding:26px 32px 32px;box-shadow:0 1px 2px #1018280a,0 1px 3px #1018280f}.planner-card h3{color:var(--text-h);margin:0 0 14px;font-size:19px;font-weight:700}.planner-card-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.planner-card-head h3{margin:0 0 14px}.planner-card-head-actions{flex-shrink:0;align-items:center;gap:10px;display:flex}.planner-course-left-modal{width:100%;max-width:640px}.planner-course-left-groups{flex-direction:column;gap:16px;max-height:60vh;display:flex;overflow-y:auto}.planner-course-left-block{border:1px solid var(--border);border-radius:12px;padding:14px 16px}.planner-course-left-block-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:4px;display:flex}.planner-course-left-status{color:var(--text-muted);font-size:13px;font-weight:700}.planner-course-left-status.done{color:#16a34a}.planner-course-left-group-tag{color:var(--text-muted);margin-bottom:8px;font-size:12px;font-weight:600;display:inline-block}.planner-course-left-open{color:var(--text-muted);margin:0;font-size:13px}.planner-course-left-hint{background:var(--role-accent-bg,var(--accent-bg,#ede9fe));color:var(--text-h);border-radius:10px;margin:0 0 4px;padding:10px 14px;font-size:13px}.planner-course-left-course-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.planner-course-left-course-list li{background:var(--bg-muted,#7f7f7f14);border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:6px 10px;font-size:13px;display:flex}.planner-course-left-tag{white-space:nowrap;font-size:12px;font-weight:700}.course-status-completed .planner-course-left-tag{color:#16a34a}.course-status-in-progress .planner-course-left-tag{color:#ca8a04}.course-status-not-taken .planner-course-left-tag{color:var(--text-muted)}.planner-schedule-btn{background:var(--primary);color:#111827;cursor:pointer;border:none;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;min-width:104px;height:38px;margin-top:-6px;padding:0 16px;font-size:13px;font-weight:700;display:flex}.planner-calendar-icon{box-sizing:content-box;border:3px solid #5b5c6c;border-radius:4px;grid-template-rows:repeat(2,5px);grid-template-columns:repeat(4,5px);gap:3px 5px;width:27px;height:20px;padding:8px 5px 4px;display:grid;position:relative}.planner-schedule-modal{width:min(1180px,100vw - 32px);max-width:none;padding:20px}.planner-schedule-modal .sp-grid-scroll{overflow:visible}.planner-schedule-modal .sp-grid{width:100%;min-width:0}.planner-schedule-modal .sp-header,.planner-schedule-modal .sp-row{grid-template-columns:48px minmax(0,1fr)}.planner-schedule-modal .sp-time-label{font-size:clamp(9px,1.7vw,11px)}.sp-schedule-block{cursor:default}.planner-calendar-icon:before{content:"";background:#5b5c6c;border-radius:3px 3px 0 0;height:6px;position:absolute;top:-3px;left:-3px;right:-3px}.planner-calendar-icon i{background:#5b5c6c;border-radius:1px;width:5px;height:5px}.planner-calendar-icon i:first-child{background:#ffc665;grid-column:2/span 2}.planner-calendar-icon i:nth-child(5){background:#5cdb78;grid-column:1/span 2}.planner-schedule-btn:hover{background:var(--primary-hover);color:#111827}.planner-save-row{justify-content:flex-end;align-items:center;gap:12px;margin-top:12px;display:flex}.planner-save-btn{color:#fff;cursor:pointer;background:#16a34a;border:none;border-radius:10px;justify-content:center;align-items:center;gap:8px;height:40px;padding:0 20px;font-size:15px;font-weight:600;transition:background .15s;display:flex}.planner-save-btn:hover:not(:disabled){background:#15803d}.planner-save-btn:disabled{opacity:.7;cursor:default}.planner-save-error{color:var(--danger,#dc2626);font-size:13px}.planner-blocked-modal .sp-modal-head h4{color:var(--danger,#dc2626);align-items:center;gap:8px;display:flex}.planner-blocked-reason{color:var(--text-h);margin:0;font-size:15px}.planner-blocked-ok{background:var(--primary,#2f6feb);color:#fff;cursor:pointer;border:none;border-radius:10px;align-self:flex-end;height:38px;padding:0 20px;font-size:14px;font-weight:600}.planner-schedule-list{flex-direction:column;gap:10px;max-height:340px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.planner-schedule-list li{border:1px solid var(--border);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.planner-schedule-code{color:var(--text-h);font-size:14px;font-weight:700}.planner-schedule-time{color:var(--text-muted,#667085);font-size:13px}.planner-card ul{flex-direction:column;gap:8px;margin:0;padding-left:22px;display:flex}.planner-card li{color:var(--text-h);font-size:17px;font-weight:600}.planner-empty{color:var(--text-muted,#667085);margin:0;font-size:15px}.sp-grid-scroll{overflow-x:auto}.sp-grid{min-width:720px}.sp-header,.sp-row{grid-template-columns:64px 1fr;display:grid}.sp-label-col{color:var(--text-muted,#667085);justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.sp-time-track{border-bottom:1px solid var(--border);grid-template-columns:repeat(8,1fr);padding-bottom:6px;display:grid}.sp-time-label{color:var(--text-muted,#667085);text-align:left;font-size:11px}.sp-row{border-bottom:1px solid var(--border)}.sp-row:last-child{border-bottom:none}.sp-day-track{background-image:repeating-linear-gradient(to right, var(--border) 0, var(--border) 1px, transparent 1px, transparent calc(100% / 8));position:relative}.sp-block{color:#fff;cursor:pointer;text-align:center;border:none;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:2px;margin:0 4px;padding:6px 10px;transition:filter .15s,transform .15s;display:flex;position:absolute;overflow:hidden;box-shadow:0 1px 2px #00000014}.sp-block:hover{filter:brightness(.95);transform:translateY(-1px)}.sp-block.is-added{opacity:.55}.sp-block-code{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:13px;font-weight:700;overflow:hidden}.sp-block-name{opacity:.9;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:11px;overflow:hidden}.sp-modal-backdrop{z-index:100;background:#0f172a73;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.sp-modal{background:var(--card);border-radius:18px;flex-direction:column;gap:14px;width:100%;max-width:380px;padding:24px;display:flex;box-shadow:0 20px 45px #0f172a40}.sp-modal.planner-schedule-modal{width:min(1360px,100vw - 32px);max-width:none;padding:30px 34px 34px}.sp-modal.planner-schedule-modal .sp-grid-scroll{overflow:visible}.sp-modal.planner-schedule-modal .sp-grid{width:100%;min-width:0}.sp-modal.planner-schedule-modal .sp-header,.sp-modal.planner-schedule-modal .sp-row{grid-template-columns:72px minmax(0,1fr)}.sp-modal.planner-schedule-modal .sp-time-track{white-space:nowrap}.sp-modal.planner-schedule-modal .sp-time-label{text-align:center;font-size:clamp(11px,1.2vw,15px)}.sp-modal.planner-schedule-modal .sp-label-col{font-size:14px}.sp-modal-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.sp-modal-head h4{color:var(--text-h);margin:0;font-size:16px;font-weight:700}.sp-modal-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:2px;display:flex}.sp-section-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.sp-section-box{border:1.5px solid var(--border);background:var(--card);cursor:pointer;text-align:center;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:14px 10px;transition:border-color .15s,background .15s,transform .1s;display:flex}.sp-section-box:hover:not(:disabled){border-color:var(--primary,#2f6feb);background:#2f6feb0f;transform:translateY(-1px)}.sp-section-box-title{color:var(--text-h);font-size:14px;font-weight:700}.sp-section-schedule{color:var(--text-muted,#667085);font-size:12.5px;font-weight:500}.sp-section-box.is-added{background:var(--border);cursor:default}.sp-section-box:disabled{cursor:default;opacity:.75}.sp-section-added-tag{color:var(--primary,#2f6feb);text-transform:uppercase;letter-spacing:.3px;margin-top:2px;font-size:11px;font-weight:700}.sp-hint{color:var(--text-muted,#667085);margin:10px 2px 0;font-size:12.5px}@media (width<=640px){.sp-block-name{display:none}}.planner-row{background:var(--card);border:1px solid var(--border);color:var(--text-h);border-radius:16px;justify-content:space-between;align-items:center;gap:16px;padding:16px 24px;font-size:16px;font-weight:600;display:flex}@media (width<=640px){.planner-row{flex-direction:column;align-items:flex-start;gap:4px}}.planner-tabs{background:var(--accent-bg);border-radius:14px;gap:6px;width:fit-content;padding:4px;display:flex}.planner-tab{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:10px;padding:8px 18px;font-size:13.5px;font-weight:600}.planner-tab:hover{color:var(--text-h);transform:none}.planner-tab.active{background:var(--card);color:var(--text-h);box-shadow:0 1px 2px #10182814}.planner-recommendation-list{flex-direction:column;gap:12px;display:flex}.planner-recommendation-item{border:1px solid var(--border);background:var(--bg);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;display:flex}.student-req-card{background:var(--card);border-radius:20px;padding:26px 32px 30px;box-shadow:0 1px 2px #1018280a,0 1px 3px #1018280f}.student-req-card h3{color:var(--text-h);align-items:center;gap:8px;margin:0 0 8px;font-size:20px;font-weight:600;display:flex}.student-req-hint{color:var(--text-muted);margin:0 0 20px;font-size:13px}.student-req-error{color:var(--danger,#dc2626);font-size:14px}.student-req-empty{color:var(--text-muted);flex-direction:column;align-items:flex-start;gap:12px;padding:12px 0;display:flex}.student-req-cta{background:var(--accent-bg);color:var(--text-h);cursor:pointer;border:none;border-radius:999px;padding:10px 22px;font-size:14px;font-weight:600}.student-req-cta:hover{background:var(--primary)}.student-req-save-row{justify-content:flex-end;align-items:center;gap:12px;margin-top:12px;display:flex}.student-req-save-btn{color:#fff;cursor:pointer;background:#16a34a;border:none;border-radius:10px;justify-content:center;align-items:center;gap:8px;height:40px;padding:0 20px;font-size:15px;font-weight:600;transition:background .15s;display:flex}.student-req-save-btn:hover:not(:disabled){background:#15803d}.student-req-save-btn:disabled{opacity:.7;cursor:default}.student-req-save-error{color:var(--danger,#dc2626);font-size:13px}.gc-page{flex-direction:column;gap:20px;display:flex}.gc-header{flex-direction:column;gap:4px;display:flex}.gc-title{color:var(--text-h);align-items:center;gap:10px;margin:0;font-size:28px;font-weight:600;display:flex}.gc-program-name{color:var(--text-muted);margin:0;font-size:14px}.gc-error{color:var(--danger);font-weight:600}.gc-empty{color:var(--text-muted)}.gc-summary-cards{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;display:grid}.gc-summary-card{background:var(--card);border:1px solid var(--border);border-radius:16px;flex-direction:column;gap:6px;padding:16px 18px;display:flex}.gc-summary-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.02em;font-size:12px;font-weight:600}.gc-summary-value{color:var(--text-h);font-size:24px;font-weight:700}.gc-summary-status.gc-ready .gc-summary-value{color:#16a34a}.gc-blocks{flex-direction:column;gap:16px;display:flex}.gc-block{background:var(--card);border:1px solid var(--border);border-radius:18px;flex-direction:column;gap:12px;padding:20px 24px;display:flex}.gc-block-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.gc-block-head strong{color:var(--text-h);font-size:16px;display:block}.gc-block-group-tag{color:var(--text-muted);margin-top:2px;font-size:12px;font-weight:600;display:inline-block}.gc-block-status{color:var(--text-muted);white-space:nowrap;font-size:13px;font-weight:700}.gc-block-head-right{align-items:center;gap:12px;display:flex}.gc-elective-group-edit,.gc-elective-group-save{cursor:pointer;white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:6px 12px;font-size:12.5px;font-weight:600;display:inline-flex}.gc-elective-group-edit{border:1px solid var(--border);color:var(--text-h);background:0 0}.gc-elective-group-edit:hover{background:var(--accent-bg,#0000000f)}.gc-elective-group-save{background:var(--primary);color:var(--text-h);border:none}.gc-elective-group-save:hover:not(:disabled){background:var(--primary-hover);color:#fff}.gc-elective-group-save:disabled{opacity:.6;cursor:default}.gc-block-status.gc-satisfied{color:#16a34a}.gc-open-block{color:var(--text-muted);margin:0;font-size:13px}.gc-course-table{border-collapse:collapse;width:100%;font-size:13.5px}.gc-course-table th{text-align:left;color:var(--text-muted);border-bottom:1px solid var(--border);padding:8px 10px;font-weight:600}.gc-course-table th:nth-child(3),.gc-course-table td:nth-child(3),.gc-course-table th:nth-child(4),.gc-course-table td:nth-child(4){width:90px}.gc-course-table th:nth-child(5),.gc-course-table td:nth-child(5){width:170px}.gc-course-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:8px 10px}.gc-course-table tr:last-child td{border-bottom:none}.gc-status-cell{vertical-align:middle}.gc-status-content{white-space:nowrap;justify-content:flex-start;align-items:center;gap:6px;min-height:20px;font-weight:700;text-decoration:none;display:inline-flex}.gc-status-completed,.gc-status-inprogress,.gc-status-nottaken,.gc-status-regrade{font-weight:700}.gc-status-completed{color:#16a34a}.gc-status-inprogress{color:#ca8a04}.gc-status-nottaken{color:var(--text-muted)}.gc-status-regrade{color:#dc2626}.gc-elective-panel{flex-direction:column;gap:12px;display:flex}.gc-elective-row-actions{white-space:nowrap;align-items:center;gap:4px;display:flex}.gc-elective-remove{color:var(--danger);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:4px;display:inline-flex}.gc-elective-remove:hover{background:#dc26261a}.gc-status-select{border:1px solid var(--border);background:var(--card);color:var(--text-h);border-radius:6px;padding:4px 8px;font-size:13px;text-decoration:none}.gc-elective-add-btn{border:1px dashed var(--border);color:var(--text-h);cursor:pointer;background:0 0;border-radius:10px;align-self:flex-start;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:600;display:inline-flex}.gc-elective-add-btn:hover{border-color:var(--text-muted)}.gc-elective-form{background:var(--bg);border:1px solid var(--border);border-radius:12px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;padding:14px;display:grid}.gc-elective-form input,.gc-elective-form select{border:1px solid var(--border);background:var(--card);color:var(--text-h);border-radius:8px;padding:8px 10px;font-size:13.5px}.gc-elective-form-actions{align-items:center;gap:8px;display:flex}.gc-elective-save-btn{background:var(--primary);color:var(--text-h);cursor:pointer;border:none;border-radius:8px;padding:8px 16px;font-size:13px;font-weight:600}.gc-elective-save-btn:hover:not(:disabled){background:var(--primary-hover);color:#fff}.gc-elective-save-btn:disabled{opacity:.6;cursor:default}.gc-elective-cancel-btn{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:8px;padding:8px 16px;font-size:13px;font-weight:600}.gc-elective-error{grid-column:1/-1;margin:0;font-size:12.5px}.chatbot-page{flex-direction:column;gap:20px;height:calc(100svh - 140px);display:flex}.chatbot-title-pill{background:var(--accent-bg);color:var(--text-h);border-radius:16px;align-self:flex-start;padding:14px 28px;font-size:20px;font-weight:500}.chatbot-card{background:var(--card);border-radius:20px;flex-direction:column;flex:1;display:flex;overflow:hidden;box-shadow:0 1px 2px #1018280a,0 1px 3px #1018280f}.chatbot-messages{flex-direction:column;flex:1;gap:16px;padding:28px 32px;display:flex;overflow-y:auto}.chatbot-row{align-items:flex-start;gap:14px;display:flex}.chatbot-row.user{justify-content:flex-end}.chatbot-avatar{border:1px solid var(--border);width:44px;height:44px;color:var(--text);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.chatbot-avatar-logo{object-fit:contain;width:30px;height:30px}.chatbot-empty-logo{object-fit:contain;width:64px;height:64px}.chatbot-bubble{max-width:70%;color:var(--text-h);margin:0;font-size:18px;font-weight:600;line-height:1.4}.chatbot-bubble.user{background:var(--accent-bg);border-radius:16px;padding:12px 18px;font-weight:500}.chatbot-input-row{border-top:1px solid var(--border);align-items:center;gap:12px;padding:20px 28px;display:flex}.chatbot-input-row input{background:var(--accent-bg);letter-spacing:.3px;color:var(--text-h);border:none;border-radius:14px;outline:none;flex:1;padding:16px 20px;font-size:15px}.chatbot-input-row input::placeholder{color:var(--text-muted)}.chatbot-input-row button{background:var(--accent-bg);width:48px;height:48px;color:var(--text-h);cursor:pointer;border:none;border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s,transform .15s;display:flex}.chatbot-input-row button:hover{background:var(--primary);transform:none}.chatbot-input-row input:disabled,.chatbot-input-row button:disabled{opacity:.6;cursor:not-allowed}.chatbot-error-row{color:var(--danger,#dc2626);background:var(--danger-bg,#fef2f2);align-items:center;gap:8px;padding:10px 28px;font-size:13px;display:flex}.chatbot-typing{background:var(--accent-bg);border-radius:16px;align-items:center;gap:5px;padding:14px 18px;display:flex}.chatbot-typing span{background:var(--text-muted);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite chatbot-typing-bounce}.chatbot-typing span:nth-child(2){animation-delay:.15s}.chatbot-typing span:nth-child(3){animation-delay:.3s}@keyframes chatbot-typing-bounce{0%,60%,to{opacity:.5;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}@media (width<=640px){.chatbot-bubble{max-width:85%}}.chatbot-markdown{line-height:1.6}.chatbot-markdown p{margin:0 0 10px}.chatbot-markdown p:last-child{margin-bottom:0}.chatbot-markdown h1,.chatbot-markdown h2,.chatbot-markdown h3{margin:16px 0 8px;line-height:1.3}.chatbot-markdown h1{font-size:20px}.chatbot-markdown h2{font-size:18px}.chatbot-markdown h3{font-size:16px}.chatbot-markdown ul,.chatbot-markdown ol{margin:8px 0 12px;padding-left:22px}.chatbot-markdown li{margin:4px 0}.chatbot-markdown strong{font-weight:700}.chatbot-empty{text-align:center;color:var(--text-muted);margin:auto;padding:50px 24px}.chatbot-empty h3{color:var(--text-h);margin:12px 0 6px}.chatbot-empty p{max-width:420px;margin:0 auto;line-height:1.6}.student-list-card{background:var(--card);border:1px solid var(--border);border-radius:24px;padding:32px 40px 40px}.student-list-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 60px;display:grid}.student-list-item{color:var(--text-muted);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:14px;align-items:center;gap:16px;padding:8px 12px;font-size:19px;transition:background .15s,color .15s;display:flex}.student-list-item:hover{background:var(--accent-bg);color:var(--text-h)}.student-list-item.has-unread-message{color:var(--text-h)}.student-avatar{color:#6b7280;background:#e5e7eb;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.student-list-name{flex:1;min-width:0}.student-chat-unread-badge{color:#fff;background:#dc2626;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;min-width:22px;height:22px;padding:0 7px;font-size:12px;font-weight:700;line-height:1;display:inline-flex}@media (width<=640px){.student-list-grid{grid-template-columns:1fr}}.analytics-page{flex-direction:column;gap:20px;display:flex}.analytics-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.analytics-title-pill{background:var(--accent-bg);color:var(--text-h);border-radius:16px;padding:14px 28px;font-size:22px;font-weight:500}.analytics-header-actions{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.analytics-back{color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:8px 4px;font-size:14px;font-weight:600;display:inline-flex}.analytics-back:hover{color:var(--text-h)}.analytics-graduation-btn{background:var(--card);color:var(--text-h);border:1px solid var(--border);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:10px 20px;font-size:14px;font-weight:600;transition:background .15s,border-color .15s;display:inline-flex}.analytics-graduation-btn:hover{background:var(--accent-bg);border-color:var(--accent-border,var(--border))}.analytics-graduation-card{padding:0;overflow:hidden}.analytics-graduation-card .gc-page{padding:24px 30px 28px}.analytics-chat-btn{background:var(--primary);color:var(--text-h);cursor:pointer;border:none;border-radius:999px;align-items:center;gap:8px;padding:10px 20px;font-size:14px;font-weight:600;transition:background .15s,color .15s;display:inline-flex}.analytics-chat-btn:hover{background:var(--primary-hover);color:#fff}.analytics-card{background:var(--card);border:1px solid var(--border);border-radius:20px;padding:24px 30px 28px}.analytics-card h3{color:var(--text-h);margin:0 0 12px;font-size:18px;font-weight:700}.analytics-card ul{flex-direction:column;gap:6px;margin:0;padding-left:20px;display:flex}.analytics-card li{color:var(--text-h);font-size:16px;font-weight:600}.analytics-empty{background:var(--card);border:1px solid var(--border);text-align:center;color:var(--text-muted);border-radius:20px;padding:40px}.analytics-empty-note{color:var(--text-muted,#667085);margin:0;font-size:14px}.analytics-chat-btn:disabled{opacity:.6;cursor:not-allowed}.analytics-recommend-form{flex-direction:column;gap:16px;display:flex}.analytics-recommend-form select,.analytics-recommend-form input{box-sizing:border-box;border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text-h);border-radius:10px;padding:10px 12px;font-size:14px}.analytics-course-search{position:relative}.analytics-course-search input{width:100%}.analytics-course-suggestions{z-index:20;background:var(--bg);border:1px solid var(--border);border-radius:10px;flex-direction:column;max-height:240px;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #0000001f}.analytics-course-suggestion{width:100%;color:var(--text-h);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 10px;font-size:13.5px;display:flex}.analytics-course-suggestion:hover,.analytics-course-suggestion:focus{background:var(--bg-hover,#0000000f)}.analytics-course-suggestion span{color:var(--text-muted);font-size:12.5px}.analytics-course-no-match{color:var(--text-muted);margin:0;padding:8px 10px;font-size:13px}.analytics-recommend-form>.analytics-chat-btn{align-self:flex-end;width:fit-content;padding:10px 20px}.analytics-recommend-message{color:var(--text-muted);margin:0;font-size:13.5px;font-weight:600}.analytics-message-btn{align-items:center;gap:7px;display:inline-flex}.analytics-message-unread-badge{color:#fff;background:#dc2626;border-radius:999px;justify-content:center;align-items:center;min-width:20px;height:20px;margin-left:2px;padding:0 6px;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.advisor-chat-page{flex-direction:column;gap:16px;height:calc(100svh - 140px);display:flex}.advisor-chat-header{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.advisor-chat-back{color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:4px;font-size:14px;font-weight:600;display:inline-flex}.advisor-chat-back:hover{color:var(--text-h)}.advisor-chat-status{background:var(--accent-bg);color:var(--text-muted);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600}.advisor-chat-status.online{color:#16a34a;background:#dcfce7}.advisor-chat-empty{text-align:center;color:var(--text-muted);padding:40px}.advisor-chat-error{color:#991b1b;background:#fee2e2;border-radius:12px;margin:0;padding:10px 16px;font-size:14px}.chatbot-bubble.advisor{background:var(--accent-bg);border-radius:16px;padding:12px 18px;font-weight:500}.chatbot-row.advisor{justify-content:flex-start}.chatbot-input-row button:disabled{opacity:.5;cursor:not-allowed}.reg-admin-page{flex-direction:column;gap:18px;display:flex}.reg-admin-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.reg-admin-refresh{background:var(--card);color:var(--text-h);border:1px solid var(--border);cursor:pointer;border-radius:10px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:600;display:flex}.reg-admin-refresh:hover{background:var(--role-accent-bg,#ede9fe);color:var(--role-primary-hover,#6d28d9);transform:none}.reg-admin-help{max-width:720px;color:var(--text-muted,#667085);margin:0;font-size:14px}.reg-admin-error{color:var(--danger,#dc2626)}.reg-admin-empty{color:var(--text-muted,#667085)}.reg-admin-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));align-items:start;gap:16px;display:grid}.reg-admin-card{background:var(--card);border:1px solid var(--border);border-radius:16px;flex-direction:column;gap:12px;padding:18px 20px;transition:box-shadow .15s;display:flex}.reg-admin-card:hover{box-shadow:0 4px 16px #10182814}.reg-admin-card-head{justify-content:space-between;align-items:center;display:flex}.reg-admin-summary{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.reg-admin-summary>span{align-items:center;gap:5px;display:inline-flex}.reg-admin-card-head h4{color:var(--text-h);margin:0;font-size:16px;font-weight:700}.reg-admin-count{color:var(--role-primary-hover,#6d28d9);align-items:center;gap:5px;font-size:13px;font-weight:600;display:flex}.reg-admin-sections{flex-direction:column;display:flex}.reg-admin-section{border-bottom:1px solid var(--border);position:relative}.reg-admin-section:last-child{border-bottom:none}.reg-admin-section-row{width:100%;font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;margin:0 -8px;padding:8px;display:flex}.reg-admin-section-row:hover{background:var(--bg)}.reg-admin-section-label{min-width:0;color:var(--text-h);flex:1;font-size:13.5px;font-weight:700}.reg-admin-section-count{color:var(--text-muted,#667085);flex-shrink:0;align-items:center;gap:4px;font-size:12.5px;font-weight:600;display:flex}.reg-admin-section-detail{color:var(--text-muted,#667085);flex-shrink:0;align-items:center;gap:3px;font-size:12px;font-weight:600;display:flex}.reg-admin-chevron{transition:transform .15s}.reg-admin-chevron.open{transform:rotate(180deg)}.reg-admin-student-list{z-index:5;background:var(--card);border:1px solid var(--border);border-radius:10px;flex-direction:column;margin:2px 0 0;display:flex;position:absolute;top:100%;left:0;right:0;overflow:hidden;box-shadow:0 8px 20px #1018281f}.reg-admin-student-list-head{background:var(--accent-bg);border-bottom:1px solid var(--border);color:var(--primary-hover);flex-shrink:0;padding:8px 12px;font-size:12px;font-weight:700}.reg-admin-student-list-items{max-height:168px;margin:0;padding:4px 12px;list-style:none;overflow-y:auto}.reg-admin-student-list-items li{border-top:1px solid var(--border);flex-direction:column;flex-shrink:0;padding:8px 0;font-size:13px;display:flex}.reg-admin-student-list-items li:first-child{border-top:none}.reg-admin-student-id{color:var(--text-h);font-weight:700}.reg-admin-student-num{color:var(--text-muted,#667085);font-variant-numeric:tabular-nums;margin-right:4px;font-weight:500;display:inline-block}.reg-admin-student-name{color:var(--text-muted,#667085)}.hdc-page{flex-direction:column;gap:18px;display:flex}.hdc-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.hdc-refresh{border:1px solid var(--border);background:var(--card);color:var(--text-h);cursor:pointer;border-radius:10px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:600;display:flex}.hdc-refresh:hover{background:var(--accent-bg)}.hdc-help{color:var(--text-muted,#667085);max-width:720px;margin:0;font-size:14px}.hdc-summary{color:var(--text-h);gap:24px;font-size:14px;display:flex}.hdc-error{color:var(--danger,#dc2626)}.hdc-empty{color:var(--text-muted,#667085)}.hdc-list{background:var(--card);border:1px solid var(--border);border-radius:16px;overflow:hidden}.hdc-row{border-bottom:1px solid var(--border);align-items:center;gap:14px;padding:14px 18px;display:flex}.hdc-row:last-child{border-bottom:none}.hdc-row:hover{background:var(--bg)}.hdc-rank{width:22px;color:var(--text-muted,#667085);text-align:center;font-variant-numeric:tabular-nums;flex-shrink:0;font-size:13px;font-weight:600}.hdc-row-info{flex-wrap:wrap;flex:1;align-items:baseline;gap:4px 8px;min-width:0;display:flex}.hdc-row-code{color:var(--text-h);font-size:15px;font-weight:700}.hdc-row-name{color:var(--text-muted,#667085);font-size:13.5px}.hdc-count{background:var(--accent-bg);color:var(--primary-hover);white-space:nowrap;border-radius:999px;flex-shrink:0;align-items:center;gap:6px;padding:6px 12px;font-size:13px;font-weight:700;display:flex}.hdc-count svg{flex-shrink:0}@media (width<=640px){.hdc-row{flex-wrap:wrap}.hdc-row-info{flex-basis:100%;order:1;padding-left:36px}.hdc-count{order:2;margin-left:36px}}.profile-page{flex-direction:column;gap:20px;max-width:640px;display:flex}.profile-card{background:var(--card);border:1px solid var(--border);border-radius:20px;flex-direction:column;gap:16px;padding:24px 30px 28px;display:flex}.profile-header{align-items:center;gap:16px;display:flex}.profile-avatar{background:var(--role-accent-bg,var(--accent-bg));width:52px;height:52px;color:var(--role-primary-hover,var(--text-h));border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.profile-header h3{color:var(--text-h);margin:0;font-size:19px;font-weight:700}.profile-header p{color:var(--text-muted);margin:2px 0 0;font-size:14px}.profile-row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding-top:16px;display:flex}.profile-row-label{color:var(--text-muted);font-size:14px}.profile-row-value{color:var(--text-h);font-size:15px;font-weight:600}.profile-section-title{color:var(--text-h);align-items:center;gap:8px;margin:0;font-size:16px;display:flex}.profile-advisor-form{flex-direction:column;gap:14px;display:flex}.profile-advisor-form select{box-sizing:border-box;width:100%}.profile-advisor-form button{background:var(--role-primary,var(--primary));color:#fff;align-self:flex-start}.profile-advisor-form button:hover:not(:disabled){background:var(--role-primary-hover,var(--primary))}.profile-advisor-form button:disabled{opacity:.5;cursor:not-allowed}.profile-advisor-form button:disabled:hover{background:var(--role-primary,var(--primary));transform:none}.profile-saved-note{color:#16a34a;align-items:center;gap:8px;margin:0;font-size:14px;font-weight:600;display:flex}.profile-prereq-note{color:var(--text-muted);margin:4px 0 0;font-size:12.5px}.theme-instructor{--role-primary:#14b8a6;--role-primary-hover:#0f766e;--role-accent-bg:#ccfbf1;--role-accent-border:#14b8a666}.theme-admin{--role-primary:#8b5cf6;--role-primary-hover:#6d28d9;--role-accent-bg:#ede9fe;--role-accent-border:#8b5cf666}.role-shell{background:var(--bg);width:100%;min-height:100svh;display:flex}.role-sidebar{background:var(--card);border-right:1px solid var(--border);box-sizing:border-box;flex-direction:column;width:240px;min-width:240px;height:100svh;padding:28px 20px;display:flex;position:sticky;top:0}.role-brand h1{letter-spacing:-.5px;color:var(--text-h);margin:0 0 32px;font-size:26px;font-weight:800;line-height:1.15}.role-accent{color:var(--role-primary)}.role-nav{flex-direction:column;gap:6px;display:flex}.role-nav-item{text-align:left;width:100%;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:14px;align-items:center;gap:12px;padding:12px 14px;font-size:15px;font-weight:500;transition:background .15s,color .15s;display:flex}.theme-admin .role-nav-item:hover{background:var(--role-primary);color:#fff}.role-nav-item.active{background:var(--role-accent-bg);color:var(--role-primary-hover);font-weight:600}.role-signout{color:var(--danger);cursor:pointer;background:0 0;border:none;border-radius:14px;align-items:center;gap:10px;margin-top:auto;padding:12px 14px;font-size:15px;font-weight:600;transition:background .15s;display:flex}.role-signout:hover{background:#fef2f2}.role-main{flex-direction:column;flex:1;min-width:0;display:flex}.role-topbar{justify-content:flex-end;padding:24px 40px 0;display:flex}.role-identity{align-items:center;gap:10px;display:flex}.role-id{color:var(--text-h);background:var(--role-accent-bg);border-radius:999px;padding:10px 18px;font-size:15px;font-weight:600}.role-name{color:var(--text-muted);font-size:14px;font-weight:500}.role-content{flex:1;padding:24px 40px 48px}@media (width<=900px){.role-shell{flex-direction:column}.role-sidebar{border-right:none;border-bottom:1px solid var(--border);flex-direction:row;align-items:center;width:100%;min-width:0;height:auto;position:relative}.role-brand h1{margin:0 12px 0 0;font-size:18px}.role-brand h1 br,.role-nav-item span{display:none}.role-signout{margin-top:0;margin-left:auto}.role-signout span{display:none}.role-topbar{padding:16px 20px 0}.role-content{padding:20px}}.admin-summary-page{flex-direction:column;gap:20px;display:flex}.admin-summary-title-pill{background:var(--role-accent-bg);color:var(--text-h);border-radius:16px;align-self:flex-start;padding:14px 28px;font-size:22px;font-weight:500;display:inline-block}.admin-summary-card{background:var(--card);border:1px solid var(--border);border-radius:20px;padding:24px 30px 28px}.admin-summary-card h3{color:var(--text-h);margin:0 0 10px;font-size:19px;font-weight:700}.admin-summary-card p{color:var(--text-h);margin:0 0 8px;font-size:16px;font-weight:700}.admin-summary-card ul{flex-direction:column;gap:4px;margin:0;padding-left:40px;display:flex}.admin-summary-card li{color:var(--text-h);font-size:16px;font-weight:700}.timetable-page{flex-direction:column;gap:20px;display:flex}.timetable-title-pill{background:var(--role-accent-bg);color:var(--text-h);border-radius:16px;align-self:flex-start;padding:14px 28px;font-size:22px;font-weight:500;display:inline-block}.timetable-upload-card,.timetable-card{background:var(--card);border:1px solid var(--border);border-radius:20px;padding:24px 30px 28px}.timetable-upload-card h3,.timetable-card h3{color:var(--text-h);margin:0 0 8px;font-size:18px;font-weight:700}.timetable-upload-card p{color:var(--text-muted);max-width:640px;margin:0 0 16px;font-size:14px;line-height:1.5}.timetable-upload-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.timetable-upload-row input[type=file]{color:var(--text);font-size:14px}.timetable-upload-row button{background:var(--role-primary);color:#fff;cursor:pointer;border:none;border-radius:10px;align-items:center;gap:6px;padding:10px 20px;font-size:14px;font-weight:600;transition:background .15s;display:inline-flex}.timetable-upload-row button:hover{background:var(--role-primary-hover)}.timetable-selected-file,.timetable-current-file,.timetable-message{color:var(--text-h);margin:12px 0 0;font-size:14px}.timetable-template-preview{margin-top:16px}.timetable-template-preview img{border:1px solid var(--border);object-fit:contain;background:var(--bg);border-radius:12px;max-width:100%;max-height:420px;display:block}.timetable-template-file{border:1px solid var(--border);color:var(--text-h);background:var(--bg);border-radius:10px;align-items:center;gap:8px;padding:10px 16px;font-size:14px;display:inline-flex}.timetable-review-card{background:var(--card);border:1px solid #f2c94c;border-radius:20px;padding:20px 30px 24px}.timetable-review-card h3{color:var(--text-h);margin:0 0 8px;font-size:18px;font-weight:700}.timetable-review-card p{color:var(--text-muted);max-width:640px;margin:0 0 16px;font-size:14px;line-height:1.5}.timetable-review-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.timetable-review-list li{border:1px solid var(--border);background:#fffbeb;border-radius:12px;justify-content:space-between;align-items:center;gap:16px;padding:10px 16px;display:flex}.timetable-review-info{color:var(--text-h);flex-direction:column;gap:2px;font-size:14px;display:flex}.timetable-review-missing{color:#b45309;font-size:12px;font-weight:600}.timetable-review-actions{flex-shrink:0;gap:8px;display:flex}.timetable-review-actions button{cursor:pointer;background:var(--role-primary);color:#fff;border:none;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600}.timetable-review-actions button.timetable-review-discard{color:var(--text-muted);border:1px solid var(--border);background:0 0}@media (width<=640px){.timetable-review-list li{flex-direction:column;align-items:flex-start}}.timetable-card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.timetable-add-btn{background:var(--role-primary);color:#fff;cursor:pointer;border:none;border-radius:10px;align-items:center;gap:6px;padding:8px 16px;font-size:14px;font-weight:600;transition:background .15s;display:inline-flex}.timetable-add-btn:hover{background:var(--role-primary-hover)}.timetable-note-input{box-sizing:border-box;width:100%;color:var(--text-muted);background:0 0;border:1px solid #0000;margin:0;padding:4px 0 16px;font-size:14px;font-weight:600}.timetable-note-input:hover,.timetable-note-input:focus{border-bottom:1px dashed var(--border);outline:none}.timetable-hint{color:var(--text-muted);margin:14px 0 0;font-size:12.5px}.tt-grid-scroll{overflow-x:auto}.tt-grid{min-width:720px}.tt-header,.tt-row{grid-template-columns:76px 1fr;display:grid}.tt-label-col{color:var(--text-h);letter-spacing:.4px;align-items:center;font-size:13px;font-weight:700;display:flex}.tt-header{border-bottom:1px solid var(--border);padding-bottom:10px}.tt-time-track{justify-content:space-between;display:flex;position:relative}.tt-time-label{color:var(--text-muted);white-space:nowrap;font-size:13px}.tt-row{border-top:1px solid var(--border);min-height:84px}.tt-row:last-child{border-bottom:1px solid var(--border)}.tt-day-track{background-image:repeating-linear-gradient(to right, var(--border) 0, var(--border) 1px, transparent 1px, transparent calc(100% / 8));position:relative}.tt-block{color:#fff;cursor:pointer;text-align:center;border:none;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:2px;margin:0 4px;padding:8px 12px;transition:filter .15s,transform .15s;display:flex;position:absolute;overflow:hidden;box-shadow:0 1px 2px #00000014}.tt-block:hover{filter:brightness(.95);transform:translateY(-1px)}.tt-block-code{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:14px;font-weight:700;overflow:hidden}.tt-block-name{opacity:.95;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:11px;font-weight:500;overflow:hidden}.timetable-db-warning{color:#92400e;background:#fffbeb;border:1px solid #f2c94c;border-radius:12px;margin:0;padding:10px 16px;font-size:13px;line-height:1.5}.timetable-db-warning code{background:#92400e1a;border-radius:5px;padding:1px 5px;font-size:12px}.tt-row-add{border:1px dashed var(--border);background:var(--card);width:26px;height:26px;color:var(--text-muted);cursor:pointer;opacity:0;z-index:2;border-radius:50%;justify-content:center;align-items:center;transition:opacity .15s,color .15s,border-color .15s;display:flex;position:absolute;top:10px;right:8px}.tt-day-track:hover .tt-row-add{opacity:1}.tt-row-add:hover{color:var(--role-primary-hover);border-color:var(--role-primary)}.tt-modal-backdrop{z-index:100;background:#0f172a73;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.tt-modal{background:var(--card);border-radius:18px;flex-direction:column;gap:14px;width:100%;max-width:400px;padding:24px;display:flex;box-shadow:0 20px 45px #0f172a40}.tt-modal-head{justify-content:space-between;align-items:center;display:flex}.tt-modal-head h4{color:var(--text-h);margin:0;font-size:17px;font-weight:700}.tt-modal-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:2px;display:flex}.tt-field{color:var(--text-h);flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.tt-field input,.tt-field select{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text-h);box-sizing:border-box;border-radius:10px;padding:9px 10px;font-weight:400}.tt-field input:focus,.tt-field select:focus{border-color:var(--role-primary);outline:none}.tt-field-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.tt-field-error{color:var(--danger);margin:-6px 0 0;font-size:12.5px}.tt-time-input{font:inherit;border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text-h);box-sizing:border-box;cursor:pointer;border-radius:10px;padding:12px 14px;font-weight:400}.tt-time-input:focus{border-color:var(--role-primary);outline:none}.tt-color-row{flex-wrap:wrap;gap:10px;display:flex}.tt-color-swatch{cursor:pointer;border:3px solid #0000;border-radius:50%;width:30px;height:30px}.tt-color-swatch.is-selected{border-color:var(--text-h);box-shadow:0 0 0 2px var(--card)}.tt-color-help{color:var(--text-muted);margin-top:8px;font-size:12px}.tt-modal-actions{justify-content:space-between;align-items:center;gap:10px;margin-top:4px;display:flex}.tt-modal-actions-right{gap:10px;margin-left:auto;display:flex}.tt-btn-primary,.tt-btn-ghost,.tt-btn-danger{cursor:pointer;border:none;border-radius:10px;align-items:center;gap:6px;padding:9px 16px;font-size:14px;font-weight:600;display:inline-flex}.tt-btn-primary{background:var(--role-primary);color:#fff}.tt-btn-primary:hover{background:var(--role-primary-hover)}.tt-btn-primary:disabled{opacity:.5;cursor:not-allowed}.tt-btn-ghost{color:var(--text-muted);border:1px solid var(--border);background:0 0}.tt-btn-ghost:hover{color:var(--text-h)}.tt-btn-danger{color:var(--danger);background:0 0}.tt-btn-danger:hover{text-decoration:underline}.grad-check-page{flex-direction:column;gap:20px;display:flex}.grad-check-search{background:var(--card);border:1px solid var(--border);border-radius:16px;align-items:center;gap:12px;padding:10px 18px;transition:border-color .15s,box-shadow .15s;display:flex}.grad-check-search:focus-within{border-color:var(--role-primary);box-shadow:0 0 0 3px var(--role-accent-bg)}.grad-check-search svg{color:var(--role-primary);flex-shrink:0}.grad-check-search input{min-width:0;color:var(--text-h);background:0 0;border:none;outline:none;flex:1;padding:8px 0;font-size:16px}.grad-check-search input::placeholder{color:var(--text-muted)}.grad-check-search button{background:var(--role-primary);color:#fff;cursor:pointer;border:none;border-radius:10px;flex-shrink:0;padding:9px 20px;font-weight:600;transition:background .15s}.grad-check-search button:hover{background:var(--role-primary-hover);color:#fff;transform:none}.grad-check-search button:disabled{opacity:.6;cursor:not-allowed}.grad-check-card{background:var(--card);border:1px solid var(--border);border-radius:20px;flex-direction:column;gap:16px;padding:24px 30px 28px;display:flex}.grad-check-error{color:var(--danger);font-weight:600}.grad-check-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.grad-check-header h3{color:var(--text-h);margin:0 0 4px;font-size:20px;font-weight:700}.grad-check-sub{color:#4b5563;margin:0;font-size:14px;font-weight:500}.grad-status-badge{border-radius:999px;flex-shrink:0;align-items:center;gap:8px;padding:8px 18px;font-size:15px;font-weight:700;display:inline-flex}.grad-status-badge.graduated{color:#15803d;background:#f0fdf4}.grad-status-badge.not-graduated{color:var(--danger);background:#fef2f2}.grad-check-section{flex-direction:column;gap:10px;display:flex}.grad-check-section h4{color:var(--text-h);margin:0;font-size:16px;font-weight:700}.grad-check-table-wrap{border:1px solid var(--border);border-radius:14px;width:100%;overflow-x:auto}.grad-check-data-table{background:var(--card);border-collapse:collapse;width:100%;min-width:650px}.grad-check-data-table th{background:var(--role-primary);color:#fff;text-align:left;text-transform:uppercase;letter-spacing:.03em;padding:11px 14px;font-size:13px;font-weight:700}.grad-check-data-table td{color:#1f2937;border-bottom:1px solid var(--border);padding:11px 14px;font-size:14px;font-weight:500}.grad-check-data-table tbody tr{transition:background .15s}.grad-check-data-table tbody tr:hover{background:var(--role-accent-bg)}.grad-check-data-table tbody tr:last-child td{border-bottom:none}.grad-grade{background:var(--role-accent-bg);min-width:28px;color:var(--role-primary-hover);border-radius:999px;justify-content:center;padding:4px 8px;font-weight:700;display:inline-flex}.grad-course-status{border-radius:999px;padding:5px 10px;font-size:12.5px;font-weight:700;display:inline-flex}.grad-course-status.completed{color:#15803d}.grad-course-status.not-completed,.grad-course-status.incomplete{color:#dc2626}.grad-course-status.withdrawn{color:#c2410c}.grad-check-pass-note{color:#15803d;background:#f0fdf4;border-radius:12px;padding:12px 16px;font-size:15px;font-weight:600}.grad-check-reasons{background:var(--role-accent-bg);border-left:4px solid var(--role-primary);border-radius:12px;padding:16px 18px}.grad-check-reasons h4{color:var(--role-primary-hover);margin:0 0 8px;font-size:15px;font-weight:700}.grad-check-reasons ul{flex-direction:column;gap:6px;margin:0;padding-left:20px;display:flex}.grad-check-reasons li{color:#374151;font-size:15px;font-weight:500}@media (width<=600px){.grad-check-search{flex-wrap:wrap}.grad-check-search input{min-width:180px}.grad-check-search button{width:100%}.grad-check-card{padding:20px}.grad-check-header{flex-direction:column}}.upload-data-page{flex-direction:column;gap:20px;display:flex}.upload-data-layout{grid-template-columns:220px 1fr;align-items:start;gap:20px;display:grid}.upload-data-sidebar{background:var(--card);border:1px solid var(--border);border-radius:20px;flex-direction:column;gap:12px;padding:20px;display:flex}.upload-data-sidebar h4{color:var(--text-h);margin:0;font-size:15px}.upload-data-year-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.upload-data-year-list li{align-items:center;gap:6px;display:flex}.upload-data-year-list button:first-child{text-align:left;color:var(--text);background:0 0;border:1px solid #0000;border-radius:10px;flex:1;padding:8px 12px;font-size:14px;font-weight:600}.upload-data-year-list button:first-child.active{color:#7c3aed;background:#ede9fe;border-color:#c4b5fd}.upload-data-year-list button:first-child:hover{background:#ede9fe;transform:none}.upload-data-delete{width:32px;height:32px;color:var(--danger);background:#fef2f2;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.upload-data-delete:hover{background:var(--danger);color:#fff}.upload-data-add-year{border:1px dashed var(--border);color:var(--text);background:0 0;justify-content:center;align-items:center;gap:8px;font-size:14px;display:flex}.upload-data-add-year:hover{background:var(--bg);transform:none}.upload-data-editor{background:var(--card);border:1px solid var(--border);border-radius:20px;flex-direction:column;gap:16px;padding:24px 30px 28px;display:flex}.upload-data-empty{color:var(--text-muted);font-size:15px}.upload-data-form-row{flex-direction:column;gap:6px;display:flex}.upload-data-form-row label{color:var(--text-h);font-size:14px;font-weight:600}.upload-data-form-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.upload-data-courses-title{color:var(--text-h);margin:8px 0 0;font-size:16px}.upload-data-table{width:100%;overflow:visible}.upload-data-table thead,.upload-data-table thead tr,.upload-data-table thead th{background:#ede9fe!important}.upload-data-table input{box-sizing:border-box;width:100%;padding:8px 10px;font-size:14px}.upload-data-credits-cell{width:90px}.upload-data-add-course{border:1px dashed var(--border);color:var(--text);background:0 0;align-self:flex-start;align-items:center;gap:8px;font-size:14px;display:flex}.upload-data-add-course:hover{background:var(--bg);transform:none}.upload-data-message{color:#16a34a;font-size:14px;font-weight:600}.upload-data-save{align-self:flex-start;align-items:center;gap:8px;display:flex;color:#fff!important;background:#7c3aed!important;border-color:#0000!important}.upload-data-excel-box{border:1px dashed var(--border);background:var(--bg);border-radius:14px;flex-direction:column;gap:10px;padding:16px 18px;display:flex}.upload-data-excel-hint{color:var(--text-muted);margin:0;font-size:13px}.upload-data-excel-input{border:1px solid var(--border);cursor:pointer;background:var(--card);color:var(--text-h);border-radius:9px;align-self:flex-start;align-items:center;gap:8px;padding:8px 14px;font-size:14px;font-weight:600;display:inline-flex}.upload-data-excel-error{color:var(--danger);margin:0;font-size:13px;font-weight:600}.upload-data-excel-preview{border-top:1px solid var(--border);flex-direction:column;gap:8px;padding-top:10px;display:flex}.upload-data-excel-preview p{align-items:center;gap:8px;margin:0;font-size:14px;display:flex}.upload-data-excel-preview ul{color:var(--text-muted);flex-direction:column;gap:3px;margin:0;padding-left:18px;font-size:13px;display:flex}.upload-data-excel-preview .upload-data-save{margin-top:4px}.upload-data-block{border:1px solid var(--border);border-radius:14px;flex-direction:column;gap:12px;padding:16px 18px;transition:border-color .12s,box-shadow .12s,opacity .12s;display:flex}.upload-data-block-dragging{opacity:.5}.upload-data-block-drop-target{border-color:#a78bfa;box-shadow:0 0 0 2px #ede9fe}.upload-data-block-head{align-items:center;gap:10px;display:flex}.upload-data-drag-handle{width:28px;height:32px;color:var(--text-muted,var(--text));cursor:grab;background:0 0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.upload-data-drag-handle:active{cursor:grabbing}.upload-data-drag-handle:hover{background:var(--bg-hover,var(--border))}.upload-data-block-reorder-btns{flex-direction:column;flex-shrink:0;gap:2px;display:flex}.upload-data-block-reorder-btns button{width:20px;height:15px;color:var(--text-muted,var(--text));background:0 0;border-radius:4px;justify-content:center;align-items:center;padding:0;display:flex}.upload-data-block-reorder-btns button:hover:not(:disabled){background:var(--bg-hover,var(--border))}.upload-data-block-reorder-btns button:disabled{opacity:.3;cursor:default}.upload-data-block-label-wrap{flex:1}.upload-data-block-label{box-sizing:border-box;width:100%;padding:8px 10px;font-size:15px;font-weight:700}.upload-data-block-fields{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;display:grid}.upload-data-block-fields label{color:var(--text-h);flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.upload-data-block-fields input,.upload-data-block-fields select{border:1px solid var(--border);background:var(--bg);color:var(--text);font:inherit;border-radius:8px;padding:8px 10px}.upload-data-choose-one-field{color:var(--text-h);align-items:center;gap:8px;margin:4px 0 12px;font-size:13px;font-weight:600;display:flex}.upload-data-choose-one-field input[type=checkbox]{accent-color:#7c3aed;width:16px;height:16px;padding:0}@media (width<=900px){.upload-data-layout{grid-template-columns:1fr}}.upload-data-search-wrap{width:100%;position:relative}.upload-data-search-dropdown{z-index:200;background:var(--card,#fff);border:1px solid var(--border,#e2e8f0);border-radius:12px;max-height:240px;margin:0;padding:6px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #0000001f}.upload-data-search-item{cursor:pointer;border-radius:8px;flex-direction:column;gap:2px;padding:8px 10px;font-size:13px;transition:background .15s;display:flex}.upload-data-search-item:hover{background:#ede9fe!important}.upload-data-search-item strong{color:var(--text-h);letter-spacing:.03em;font-size:12.5px;font-weight:700}.upload-data-search-item span{color:var(--text-muted,#64748b);font-size:12px}.upload-data-page .admin-summary-title-pill{color:#111827!important}.upload-data-mingrade-cell{text-align:center;width:90px}.upload-data-mingrade-cell input{box-sizing:content-box;width:auto;padding:0}.excel-check-page{flex-direction:column;gap:20px;display:flex}.excel-check-upload p{color:var(--text);margin:0 0 16px;font-size:15px}.excel-check-filename{color:var(--text-h);align-items:center;gap:8px;margin:14px 0 0;font-size:14px;display:flex}.excel-check-loading{color:var(--text-muted);margin:10px 0 0;font-size:14px}.excel-check-error{color:var(--danger);margin:10px 0 0;font-size:14px;font-weight:600}.excel-check-summary{flex-wrap:wrap;gap:10px;display:flex}.excel-check-badge-graduated{color:#16a34a;background:#f0fdf4;align-items:center;gap:6px;display:inline-flex}.excel-check-badge-not-graduated{color:var(--danger);background:#fef2f2;align-items:center;gap:6px;display:inline-flex}.excel-check-badge-unresolved{color:#92610c;background:#fff3c4;align-items:center;gap:6px;display:inline-flex}.excel-check-table{font-size:14px}.excel-status-pill{border-radius:999px;padding:4px 12px;font-size:12px;font-weight:700;display:inline-flex}.excel-status-pill.graduated{color:#16a34a;background:#f0fdf4}.excel-status-pill.not-graduated{color:var(--danger);background:#fef2f2}.excel-status-pill.unresolved{color:#92610c;background:#fff3c4}.excel-check-reasons-list{flex-direction:column;gap:4px;margin:0;padding-left:18px;display:flex}.excel-check-reasons-list li{color:var(--text);font-size:13px}.excel-check-upload{background:var(--card);border:2px dashed #c4b5fd}.excel-check-upload:hover{background:var(--card);box-shadow:none;border-color:#c4b5fd;transform:none}.prereq-admin-page{flex-direction:column;gap:16px;display:flex}.prereq-admin-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.prereq-admin-refresh{border:1px solid var(--border);color:var(--text);background:0 0;align-items:center;gap:6px;padding:6px 12px;font-size:13px;display:flex}.prereq-admin-refresh:hover{background:var(--role-accent-bg);color:var(--role-primary-hover);transform:none}.prereq-admin-help{color:var(--text-muted);background:var(--card);border:1px solid var(--border);border-radius:14px;margin:0;padding:14px 18px;font-size:13.5px;line-height:1.6}.prereq-admin-help code{background:var(--bg);border-radius:6px;padding:1px 6px;font-size:12.5px}.prereq-admin-error{color:var(--danger);font-size:14px;font-weight:600}.prereq-admin-message{color:#16a34a;font-size:14px;font-weight:600}.prereq-admin-table-wrap{z-index:1;background:var(--card);border:1px solid var(--border);border-radius:20px;flex-direction:column;gap:14px;padding:20px;display:flex;position:relative;overflow:visible}.prereq-admin-table{z-index:1;border-collapse:collapse;width:100%;min-width:900px;position:relative}.prereq-admin-table:focus-within{z-index:5000}.prereq-admin-table th{text-align:left;background:var(--role-primary);color:#fff;border-bottom:1px solid var(--role-primary-hover);text-transform:uppercase;letter-spacing:.04em;padding:10px;font-size:13px;font-weight:700}.prereq-admin-table td{vertical-align:top;border-bottom:1px solid var(--border);color:#1f2937;padding:6px;font-weight:500;position:relative;overflow:visible}.prereq-admin-table tbody tr{z-index:0;transition:background .15s;position:relative}.prereq-admin-table tbody tr:focus-within{z-index:5000}.prereq-admin-table tbody tr:hover{background:var(--role-accent-bg)}.prereq-admin-table input,.prereq-admin-table textarea{box-sizing:border-box;color:#1f2937;resize:vertical;background:#fff;width:100%;padding:8px 10px;font-family:inherit;font-size:13.5px;font-weight:500}.prereq-admin-table input::placeholder,.prereq-admin-table textarea::placeholder{color:#6b7280;opacity:1}.prereq-admin-row-actions{align-items:flex-start;gap:6px;padding-top:10px;display:flex}.prereq-admin-save,.prereq-admin-delete{border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;padding:0;display:flex}.prereq-admin-save{background:var(--role-primary);color:#fff}.prereq-admin-save:hover{background:var(--role-primary-hover);color:#fff}.prereq-admin-delete{color:var(--danger);background:#fef2f2}.prereq-admin-delete:hover{background:var(--danger);color:#fff}.prereq-admin-add{z-index:0;border:1px dashed var(--border);color:var(--text);background:0 0;align-self:flex-start;align-items:center;gap:8px;font-size:14px;display:flex;position:relative}.prereq-admin-add:hover{background:var(--role-accent-bg);color:var(--role-primary-hover);border-color:var(--role-primary);transform:none}.prereq-admin-upload-card{background:var(--card);border:1px solid var(--border);border-radius:16px;flex-direction:column;gap:8px;padding:16px 18px;display:flex}.prereq-admin-upload-card h4{color:var(--text-h);margin:0;font-size:14.5px}.prereq-admin-upload-card p{color:var(--text-muted);margin:0;font-size:13px;line-height:1.6}.prereq-admin-upload-row{flex-wrap:wrap;align-items:center;gap:10px;margin-top:4px;display:flex}.prereq-admin-upload-btn{background:var(--role-primary);color:#fff;border:none;border-radius:10px;align-items:center;gap:6px;padding:8px 16px;font-size:13.5px;font-weight:600;display:inline-flex}.prereq-admin-upload-btn:hover{background:var(--role-primary-hover);color:#fff}.prereq-admin-upload-btn:disabled{opacity:.6;cursor:not-allowed}.prereq-admin-selected-file{color:var(--text);align-items:center;gap:6px;font-size:13px;display:flex}.prereq-admin-upload-message{color:var(--text-h);font-size:13px;font-weight:600}.prereq-admin-preview{border:1px solid var(--border);object-fit:contain;border-radius:12px;max-width:100%;max-height:320px;margin-top:4px}.prereq-search-wrap{z-index:1;width:100%;position:relative}.prereq-search-wrap:focus-within{z-index:6000}.prereq-search-wrap input{box-sizing:border-box;color:#1f2937;width:100%;padding:8px 10px;font-family:inherit;font-size:13.5px}.prereq-ta-wrap textarea{box-sizing:border-box;color:#1f2937;resize:vertical;width:100%;padding:8px 10px;font-family:inherit;font-size:13.5px}.prereq-search-dropdown{z-index:7000;background:var(--card,#fff);border:1px solid var(--border,#e2e8f0);border-radius:12px;max-height:260px;margin:0;padding:6px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #0000001f}.prereq-search-item{cursor:pointer;border-radius:8px;flex-direction:column;gap:2px;padding:8px 10px;transition:background .15s;display:flex}.prereq-search-item:hover{background:var(--role-accent-bg,#ede9fe)}.prereq-search-code{color:var(--text-h,#1e1b4b);letter-spacing:.03em;font-size:12.5px;font-weight:700}.prereq-search-name{color:#4b5563;white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.admin-courses-page{flex-direction:column;gap:18px;display:flex}.admin-courses-header{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.admin-courses-help{color:var(--text-muted);max-width:760px;margin:12px 0 0}.admin-courses-actions,.admin-course-editor-actions{align-items:center;gap:10px;display:flex}.admin-courses-actions button,.admin-course-editor-actions button,.admin-courses-table button,.admin-course-editor .icon-only{border:1px solid var(--border);background:var(--bg);min-height:36px;color:var(--text-h);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:7px;padding:0 14px;font-weight:700;display:inline-flex}.admin-courses-primary{color:#fff!important;background:#7c3aed!important;border-color:#0000!important}.admin-courses-error{border:1px solid #ef4444;border-radius:10px;padding:12px 14px}.admin-course-group-manager{border:1px solid var(--border);background:var(--bg);border-radius:14px;padding:16px 20px}.admin-course-group-manager h4{margin:0 0 10px}.admin-course-group-manager ul{flex-direction:column;gap:8px;margin:0 0 12px;padding:0;list-style:none;display:flex}.admin-course-group-manager li{border:1px solid var(--border);border-radius:9px;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;display:flex}.admin-course-group-manager-actions{gap:8px;display:flex}.admin-course-group-manager-actions button,.admin-course-group-manager>button{border:1px solid var(--border);background:var(--bg);color:var(--text-h);cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:5px 10px;font-weight:600;display:inline-flex}.admin-course-editor{border:1px solid var(--border);background:var(--bg);border-radius:14px;padding:20px}.admin-course-editor-head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;display:flex}.admin-course-editor-head h3{margin:0}.admin-course-form-grid{grid-template-columns:1fr 2fr .7fr;gap:14px;display:grid}.admin-course-form-grid label{color:var(--text-h);flex-direction:column;gap:7px;font-weight:700;display:flex}.admin-course-form-grid input,.admin-course-form-grid select,.admin-course-form-grid textarea{box-sizing:border-box;border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);font:inherit;border-radius:9px;padding:10px 12px}.admin-course-description-field{grid-column:1/-1}.admin-course-editor-actions{justify-content:flex-end;margin-top:16px}.admin-courses-table-wrap{border:1px solid var(--border);background:var(--bg);border-radius:14px;overflow-x:auto}.admin-courses-table{border-collapse:collapse;width:100%}.admin-courses-table thead th{background:#ede9fe!important}.admin-courses-table th,.admin-courses-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:14px 16px}.admin-courses-table th{color:var(--text-h);font-size:14px}.admin-courses-table tr:last-child td{border-bottom:0}.admin-course-description-cell{white-space:normal;min-width:320px;max-width:560px;line-height:1.45}.admin-courses-empty{text-align:center;color:var(--text-muted);border:1px dashed var(--border);border-radius:12px;padding:24px}@media (width<=900px){.admin-courses-header{flex-direction:column}.admin-course-form-grid{grid-template-columns:1fr}.admin-course-description-field{grid-column:auto}}.mu-page{flex-direction:column;gap:16px;display:flex}.mu-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.mu-refresh{background:var(--card);border:1px solid var(--border);color:var(--text-h);cursor:pointer;border-radius:10px;align-items:center;gap:8px;padding:9px 16px;font-size:14px;font-weight:600;display:inline-flex}.mu-refresh:hover:not(:disabled){border-color:var(--role-primary);color:var(--role-primary-hover)}.mu-refresh:disabled{opacity:.6;cursor:not-allowed}.mu-help{color:var(--text-muted);max-width:720px;margin:0;font-size:14px;line-height:1.5}.mu-toolbar{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.mu-search{background:var(--card);border:1px solid var(--border);min-width:200px;color:var(--text-muted);border-radius:10px;flex:240px;align-items:center;gap:8px;padding:9px 14px;display:flex}.mu-search input{color:var(--text-h);background:0 0;border:none;outline:none;flex:1;font-size:14px}.mu-role-tabs{flex-wrap:wrap;gap:6px;display:flex}.mu-role-tab{background:var(--card);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:600;display:inline-flex}.mu-role-tab.is-active{background:var(--role-accent-bg);border-color:var(--role-accent-border);color:var(--role-primary-hover)}.mu-role-count{opacity:.75;font-size:11px;font-weight:700}.mu-add-advisor-btn{background:var(--role-primary);color:#fff;cursor:pointer;border:none;border-radius:10px;align-items:center;gap:8px;margin-left:auto;padding:10px 18px;font-size:14px;font-weight:600;display:inline-flex}.mu-add-advisor-btn:hover{background:var(--role-primary-hover)}.mu-error-banner{color:var(--danger,#dc2626);background:#dc262614;border:1px solid #dc262640;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;font-size:14px;display:flex}.mu-error-banner button{color:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:1px solid;border-radius:8px;padding:6px 12px;font-size:13px;font-weight:600}.mu-error-inline{color:var(--danger,#dc2626);margin:-6px 0 0;font-size:13px}.mu-table-wrap{background:var(--card);border:1px solid var(--border);border-radius:20px;overflow-x:auto}.mu-table{border-collapse:collapse;width:100%;font-size:14px}.mu-table th{text-align:left;text-transform:uppercase;letter-spacing:.4px;background:var(--role-primary);color:#fff;border-bottom:1px solid var(--border);white-space:nowrap;padding:14px 18px;font-size:12px;font-weight:700}.mu-table td{border-bottom:1px solid var(--border);color:var(--text-h);vertical-align:middle;padding:12px 18px}.mu-table tr:last-child td{border-bottom:none}.mu-id-cell{white-space:nowrap;font-weight:700}.mu-empty-row{text-align:center;color:var(--text-muted);padding:32px 18px}.mu-role-badge{white-space:nowrap;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700;display:inline-block}.mu-role-student{color:#1d4ed8;background:#3b82f61f}.mu-role-instructor{color:#0f766e;background:#14b8a624}.mu-role-admin{color:#6d28d9;background:#8b5cf624}.mu-advisor-select{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text-h);border-radius:8px;max-width:220px;padding:6px 8px;font-size:13px}.mu-actions-cell{text-align:right;white-space:nowrap}.mu-remove-btn{border:1px solid var(--border);width:30px;height:30px;color:var(--danger,#dc2626);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.mu-remove-btn:hover{background:#dc262614;border-color:#dc26264d}.mu-modal-backdrop{z-index:100;background:#0f172a73;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.mu-modal{background:var(--card);border-radius:18px;flex-direction:column;gap:14px;width:100%;max-width:400px;padding:24px;display:flex;box-shadow:0 20px 45px #0f172a40}.mu-modal-head{justify-content:space-between;align-items:center;display:flex}.mu-modal-head h4{color:var(--text-h);align-items:center;gap:8px;margin:0;font-size:17px;font-weight:700;display:flex}.mu-modal-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:2px;display:flex}.mu-modal-form{flex-direction:column;gap:14px;display:flex}.mu-field{color:var(--text-h);flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.mu-field input{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text-h);box-sizing:border-box;border-radius:10px;padding:9px 10px;font-weight:400}.mu-field input:focus{border-color:var(--role-primary);outline:none}.mu-modal-errors{color:var(--danger,#dc2626);margin:0;padding-left:18px;font-size:13px;line-height:1.5}.mu-modal-actions{justify-content:flex-end;gap:10px;margin-top:4px;display:flex}.mu-btn-primary,.mu-btn-ghost{cursor:pointer;border:none;border-radius:10px;align-items:center;gap:6px;padding:9px 16px;font-size:14px;font-weight:600;display:inline-flex}.mu-btn-primary{background:var(--role-primary);color:#fff}.mu-btn-primary:hover{background:var(--role-primary-hover)}.mu-btn-ghost{color:var(--text-muted);border:1px solid var(--border);background:0 0}.mu-btn-ghost:hover{color:var(--text-h)}.login-page{background:var(--bg);box-sizing:border-box;justify-content:center;align-items:center;width:100%;min-height:100svh;padding:24px;display:flex;position:relative;overflow:hidden}.login-blob-cluster{z-index:0;pointer-events:none;width:320px;height:320px;position:absolute}.login-blob-cluster .blob{background:var(--primary);border-radius:50%;position:absolute}.blob-top-right{top:-90px;right:-90px}.blob-top-right .blob:first-child{width:230px;height:230px;top:0;right:60px}.blob-top-right .blob:nth-child(2){width:150px;height:150px;top:130px;right:-20px}.blob-top-right .blob:nth-child(3){width:110px;height:110px;top:220px;right:90px}.blob-bottom-left{bottom:-90px;left:-90px}.blob-bottom-left .blob:first-child{width:200px;height:200px;bottom:140px;left:40px}.blob-bottom-left .blob:nth-child(2){width:170px;height:170px;bottom:40px;left:110px}.blob-bottom-left .blob:nth-child(3){width:130px;height:130px;bottom:0;left:0}.login-card{z-index:1;background:var(--card);border:1px solid var(--border);box-sizing:border-box;border-radius:24px;width:100%;max-width:620px;padding:48px 56px 56px;position:relative;box-shadow:0 1px 2px #1018280a,0 4px 12px #1018280f}.login-logo{justify-content:center;align-items:center;gap:14px;margin-bottom:40px;display:flex}.login-logo-image{object-fit:contain;width:52px;height:52px}.login-logo h1{letter-spacing:-.5px;color:var(--text-h);margin:0;font-size:34px;font-weight:800}.login-form{flex-direction:column;display:flex}.login-form label{color:var(--text-h);margin-bottom:8px;font-size:15px}.login-input{color:var(--text-muted);background:#ededed;border-radius:12px;align-items:center;gap:12px;margin-bottom:22px;padding:14px 18px;display:flex}.login-input input{color:var(--text-h);background:0 0;border:none;outline:none;flex:1;font-size:15px}.login-input input::placeholder{color:var(--text-muted)}.login-error{color:var(--danger);margin:-8px 0 16px;font-size:14px}.login-notice{color:#15803d;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:12px;margin:0 0 20px;padding:12px 14px;font-size:14px;font-weight:600}.login-link-row{justify-content:flex-end;margin:-12px 0 10px;display:flex}.login-text-btn{color:var(--primary-hover);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;gap:6px;padding:4px;font-size:14px;font-weight:600;text-decoration:underline;display:inline-flex}.login-text-btn:hover{color:var(--text-h);background:0 0;transform:none}.login-resend-btn{align-self:center;margin-bottom:10px}.login-back-btn{align-self:center;margin-top:20px;margin-bottom:10px}.login-form-title{text-align:center;margin:0 0 8px}.login-form-help{color:var(--text-muted);text-align:center;margin:0 0 22px;font-size:14px;line-height:1.5}.login-btn{background:var(--primary);color:var(--text-h);cursor:pointer;border:none;border-radius:999px;align-self:center;align-items:center;gap:10px;margin-top:12px;padding:14px 36px;font-size:17px;font-weight:600;transition:background .15s,transform .15s;display:inline-flex}.login-btn:hover{background:var(--primary-hover);color:#fff;transform:none}.login-btn:disabled,.login-text-btn:disabled{opacity:.6;cursor:not-allowed}.login-divider{color:var(--text-muted);align-items:center;gap:12px;margin:22px 0 18px;font-size:13px;display:flex}.login-divider:before,.login-divider:after{content:"";background:var(--border);flex:1;height:1px}.login-ms-btn{color:#1f1f1f;border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:10px;padding:12px 20px;font-size:15px;font-weight:600;transition:background .15s,box-shadow .15s;display:inline-flex}.login-ms-btn:hover{background:#f5f5f5;box-shadow:0 1px 3px #1018281a}.login-ms-btn:disabled{opacity:.6;cursor:not-allowed}.login-register-link{color:var(--text);cursor:pointer;background:0 0;border:none;align-self:center;margin-top:16px;padding:4px;font-size:14px;font-weight:500;text-decoration:underline}.login-register-link:hover{color:var(--text-h);background:0 0;transform:none}@media (width<=560px){.login-card{padding:36px 24px 44px}.login-logo h1{font-size:26px}}.register-page{background:var(--bg);box-sizing:border-box;justify-content:center;align-items:center;width:100%;min-height:100svh;padding:24px;display:flex;position:relative;overflow:hidden}.register-card{z-index:1;background:var(--card);border:1px solid var(--border);box-sizing:border-box;border-radius:24px;width:100%;max-width:620px;padding:48px 56px 56px;position:relative;box-shadow:0 1px 2px #1018280a,0 4px 12px #1018280f}.register-logo{justify-content:center;align-items:center;gap:14px;margin-bottom:32px;display:flex}.register-logo-image{object-fit:contain;flex-shrink:0;width:52px;height:52px}.register-logo-icon{border:1px solid var(--border);width:52px;height:52px;color:var(--text);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.register-logo h1{letter-spacing:-.5px;color:var(--text-h);margin:0;font-size:30px;font-weight:800}.register-form{flex-direction:column;display:flex}.register-form label{color:var(--text-h);margin-bottom:8px;font-size:15px}.register-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}.register-input{color:var(--text-muted);background:#ededed;border-radius:12px;align-items:center;gap:12px;margin-bottom:22px;padding:14px 18px;display:flex}.register-input input,.register-input select{color:var(--text-h);background:0 0;border:none;outline:none;flex:1;padding:0;font-size:15px}.register-input input::placeholder{color:var(--text-muted)}.register-input-with-action{gap:10px}.register-input-with-action input:disabled{color:var(--text-h);opacity:.85}.register-input.is-verified{background:#f0fdf4}.register-input-readonly{background:#f5f5f5;margin-top:-10px}.register-input-readonly input{color:var(--text-muted);letter-spacing:.5px;font-style:italic}.register-inline-btn{background:var(--role-primary,var(--primary));color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:999px;flex-shrink:0;padding:8px 16px;font-size:13px;font-weight:600}.register-inline-btn:hover:not(:disabled){background:var(--role-primary-hover,var(--primary-hover))}.register-inline-btn:disabled{opacity:.6;cursor:not-allowed}.register-verified-badge{color:#16a34a;white-space:nowrap;flex-shrink:0;align-items:center;gap:6px;font-size:13px;font-weight:700;display:inline-flex}.register-field-error{color:var(--danger);margin:-14px 0 20px;font-size:13px}.register-error-box{background:#fef2f2;border:1px solid #fecaca;border-radius:12px;margin:-6px 0 20px;padding:14px 18px}.register-error-title{color:var(--danger);align-items:center;gap:8px;margin-bottom:6px;font-size:14px;font-weight:700;display:flex}.register-error-box ul{color:var(--danger);flex-direction:column;gap:4px;margin:0;padding-left:20px;font-size:14px;display:flex}.register-success-box{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:12px;flex-direction:column;gap:6px;margin-bottom:20px;padding:18px 22px;display:flex}.register-success-box p{color:var(--text-h);margin:0;font-size:15px}.register-success-note{color:var(--text);text-align:center;margin-bottom:24px;font-size:14px}.register-hint{color:var(--text-muted);margin:-14px 0 20px;font-size:12.5px}.register-verify-box{background:#fffbeb;border:1px solid #fde68a;border-radius:12px;flex-direction:column;gap:10px;margin-bottom:20px;padding:18px 22px;display:flex}.register-verify-title{color:var(--text-h);align-items:center;gap:8px;margin:0;font-size:15px;font-weight:700;display:flex}.register-verify-desc{color:var(--text-muted);margin:0;font-size:13.5px}.register-verified-box{color:#16a34a;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:12px;align-items:center;gap:8px;margin-bottom:20px;padding:14px 18px;font-size:14px;font-weight:600;display:flex}.register-btn{background:var(--primary);color:var(--text-h);cursor:pointer;border:none;border-radius:999px;align-self:center;align-items:center;gap:10px;margin-top:4px;padding:14px 36px;font-size:17px;font-weight:600;transition:background .15s,transform .15s;display:inline-flex}.register-btn:hover{background:var(--primary-hover);color:#fff;transform:none}.register-btn:disabled{opacity:.5;cursor:not-allowed}.register-btn:disabled:hover{background:var(--primary);color:var(--text-h)}.register-link-btn{color:var(--text);cursor:pointer;background:0 0;border:none;align-self:center;margin-top:16px;padding:4px;font-size:14px;font-weight:500;text-decoration:underline}.register-link-btn:hover{color:var(--text-h);background:0 0;transform:none}@media (width<=560px){.register-card{padding:36px 24px 44px}.register-logo h1{font-size:24px}.register-grid{grid-template-columns:1fr;gap:0}}.choose-advisor-page{background:var(--bg);box-sizing:border-box;justify-content:center;align-items:center;width:100%;min-height:100svh;padding:24px;display:flex;position:relative}.choose-advisor-card{background:var(--card);border:1px solid var(--border);box-sizing:border-box;border-radius:24px;width:100%;max-width:640px;padding:48px 56px 44px;box-shadow:0 1px 2px #1018280a,0 4px 12px #1018280f}.choose-advisor-logo{justify-content:center;align-items:center;gap:14px;margin-bottom:16px;display:flex}.choose-advisor-logo-icon{border:1px solid var(--border);width:52px;height:52px;color:var(--text);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.choose-advisor-logo h1{letter-spacing:-.5px;color:var(--text-h);margin:0;font-size:26px;font-weight:800}.choose-advisor-intro{text-align:center;color:var(--text);margin:0 0 28px;font-size:15px;line-height:1.5}.choose-advisor-options{flex-direction:column;gap:10px;margin-bottom:20px;display:flex}.choose-advisor-option{border:1px solid var(--border);cursor:pointer;background:#f7f8fa;border-radius:14px;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:14px 18px;transition:background .15s,border-color .15s;display:grid}.choose-advisor-option:hover{background:var(--accent-bg)}.choose-advisor-option.selected{background:var(--accent-bg);border-color:var(--accent-border)}.choose-advisor-option input{width:auto;accent-color:var(--primary-hover);margin:0;padding:0}.choose-advisor-name{color:var(--text-h);font-size:15px;font-weight:600}.choose-advisor-dept{color:var(--text-muted);text-align:right;font-size:13px}.choose-advisor-error{color:var(--danger);margin:-8px 0 16px;font-size:14px}.choose-advisor-actions{justify-content:space-between;align-items:center;gap:12px;display:flex}.choose-advisor-signout{color:var(--danger);background:0 0;align-items:center;gap:8px;padding:10px 14px;font-size:14px;font-weight:600;display:inline-flex}.choose-advisor-signout:hover{background:#fef2f2;transform:none}.choose-advisor-submit{background:var(--primary);color:var(--text-h);border-radius:999px;align-items:center;gap:10px;padding:14px 32px;font-size:16px;font-weight:600;display:inline-flex}.choose-advisor-submit:hover{background:var(--primary-hover);color:#fff;transform:none}@media (width<=560px){.choose-advisor-card{padding:36px 24px 32px}.choose-advisor-option{grid-template-columns:auto 1fr}.choose-advisor-dept{text-align:left;grid-column:2}}.welcome-goals-page{background:var(--bg);box-sizing:border-box;justify-content:center;align-items:center;width:100%;min-height:100svh;padding:24px;display:flex;position:relative}.welcome-goals-card{background:var(--card);border:1px solid var(--border);box-sizing:border-box;border-radius:24px;width:100%;max-width:640px;padding:48px 56px 44px;box-shadow:0 1px 2px #1018280a,0 4px 12px #1018280f}.welcome-goals-logo{justify-content:center;align-items:center;gap:14px;margin-bottom:16px;display:flex}.welcome-goals-logo-icon{border:1px solid var(--border);width:52px;height:52px;color:var(--text);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.welcome-goals-logo h1{letter-spacing:-.5px;color:var(--text-h);text-align:center;margin:0;font-size:24px;font-weight:800}.welcome-goals-intro{text-align:center;max-width:760px;color:var(--text-muted);margin:24px auto 48px;font-size:17px;line-height:1.55}.welcome-goals-section{margin-bottom:20px}.welcome-goals-section h3{color:var(--text-h);margin:0 0 10px;font-size:15px;font-weight:600}.welcome-goals-error{color:var(--danger);margin:-4px 0 16px;font-size:14px}.welcome-goals-actions{justify-content:space-between;align-items:center;gap:12px;margin-top:8px;display:flex}.welcome-goals-actions-right{align-items:center;gap:12px;display:flex}.welcome-goals-signout{color:var(--danger);background:0 0;align-items:center;gap:8px;padding:10px 14px;font-size:14px;font-weight:600;display:inline-flex}.welcome-goals-signout:hover{background:#fef2f2;transform:none}.welcome-goals-skip{color:var(--text-muted);background:0 0;padding:10px 14px;font-size:14px;font-weight:600}.welcome-goals-skip:hover{background:#f7f8fa;transform:none}.welcome-goals-submit{background:var(--primary);color:var(--text-h);border-radius:999px;align-items:center;gap:10px;padding:14px 32px;font-size:16px;font-weight:600;display:inline-flex}.welcome-goals-submit:hover{background:var(--primary-hover);color:#fff;transform:none}.welcome-goals-submit:disabled,.welcome-goals-skip:disabled{opacity:.6;cursor:not-allowed}@media (width<=560px){.welcome-goals-card{padding:36px 24px 32px}.welcome-goals-actions{flex-direction:column-reverse;align-items:stretch}.welcome-goals-actions-right{justify-content:space-between}}.welcome-goals-choice-help{color:var(--text-muted);margin:-2px 0 10px;font-size:13px}.app-shell{width:100%;min-height:100svh;display:flex}.app-main{flex-direction:column;flex:1;min-width:0;display:flex}.app-content{padding:24px 40px 48px}@media (width<=900px){.app-shell{flex-direction:column}.app-content{padding:20px}}
