:root{--ui-font: system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;--ui-text: #0f172a;--ui-sub: #64748b;--ui-bg: #f5f7fb;--ui-card: #ffffff;--ui-border: rgba(148,163,184,.18);--ui-border2: rgba(148,163,184,.12);--ui-shadow-sm: 0 10px 22px rgba(2,6,23,.06);--ui-shadow-md: 0 18px 42px rgba(2,6,23,.1);--ui-blueA: #1e3a8a;--ui-blueB: #2563eb;--ui-purple: #7c3aed;--ui-r-xl: 22px;--ui-r-lg: 18px;--ui-r-md: 14px;--ui-r-sm: 12px;--ui-w-regular: 450;--ui-w-medium: 550;--ui-w-semibold: 650;--ui-w-bold: 750;--ui-title: 22px;--ui-h2: 18px;--ui-body: 13px;--ui-small: 12px}html,body{background:var(--ui-bg);color:var(--ui-text)}body{font-family:var(--ui-font)}.uiHeader{border-radius:var(--ui-r-xl);padding:18px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;background:linear-gradient(135deg,var(--ui-blueA) 0%,var(--ui-blueB) 55%,var(--ui-purple) 115%);box-shadow:0 14px 28px #0f172a29;border:1px solid rgba(255,255,255,.12)}.uiHeaderTitle{margin:0;font-size:var(--ui-title);font-weight:var(--ui-w-bold);letter-spacing:-.02em;color:#fff}.uiHeaderSub{margin-top:6px;font-size:12.5px;font-weight:var(--ui-w-medium);line-height:1.45;color:#ffffffdb}.uiCard{background:var(--ui-card);border:1px solid var(--ui-border);border-radius:var(--ui-r-lg);box-shadow:var(--ui-shadow-sm)}.uiBtn{height:40px;padding:0 14px;border-radius:var(--ui-r-sm);border:1px solid var(--ui-border);background:#fff;color:#0f172ad1;font-size:12.5px;font-weight:var(--ui-w-semibold);cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}.uiBtn:hover{transform:translateY(-1px);box-shadow:0 12px 18px #02061714}.uiBtnPrimary{border:0;color:#fff;background:linear-gradient(135deg,var(--ui-blueB),var(--ui-purple))}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{background:var(--ui-bg);color:var(--ui-text);font-family:var(--ui-font);font-size:var(--ui-body);line-height:1.55;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#64748b59;border-radius:10px}::-webkit-scrollbar-track{background:transparent}:root{--blue: #1976d2;--text: #0f172a}html,body,#root{height:100%;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}.loginPage{min-height:100vh;width:100%;position:relative;background-size:cover;background-position:center;background-repeat:no-repeat}.loginOverlay{position:absolute;inset:0;background:#0000004d}.loginCenter{position:relative;z-index:1;min-height:100vh;width:100%;display:grid;place-items:center;padding:28px 16px}.loginCard{width:min(520px,92vw);background:#ffffffe0;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:16px;box-shadow:0 18px 55px #00000047;padding:28px 28px 22px;border:1px solid rgba(255,255,255,.55)}.loginBrand{text-align:center;margin-bottom:18px}.loginLogo{width:54px;height:54px;object-fit:contain;margin-bottom:10px}.loginTitle{margin:0;font-size:32px;font-weight:750;letter-spacing:-.2px;color:var(--text)}.loginSub{margin:8px auto 0;max-width:360px;font-size:13px;line-height:1.35;color:#0f172a9e}.loginForm{display:grid;gap:12px}.loginField label{display:block;font-size:13px;color:#0f172aa6;margin-bottom:6px}.loginField input{width:100%;height:44px;padding:0 12px;border-radius:12px;border:1px solid rgba(15,23,42,.12);outline:none;background:#fffffff0;font-size:14px;color:var(--text)}.passwordFieldWrap{position:relative}.passwordFieldWrap input{padding-right:44px}.passwordToggle{position:absolute;top:50%;right:10px;transform:translateY(-50%);width:28px;height:28px;display:grid;place-items:center;border:0;padding:0;background:transparent;color:#0f172a94;cursor:pointer}.passwordToggle:hover{color:#0f172ad1}.passwordToggle:focus-visible{outline:2px solid rgba(25,118,210,.35);outline-offset:2px;border-radius:999px}.passwordToggle:disabled{cursor:default;opacity:.5}.passwordToggle svg{width:18px;height:18px}.loginField input:focus{border-color:#1976d273;box-shadow:0 0 0 4px #1976d21f}.loginBtn{height:46px;border:0;border-radius:12px;font-weight:650;font-size:14px;cursor:pointer;background:var(--blue);color:#fff;margin-top:6px}.loginBtn:hover{filter:brightness(.97)}.loginBtn:active{transform:translateY(1px)}.loginLinkBtn{border:0;background:transparent;color:#1976d2;font-weight:650;font-size:13px;cursor:pointer;justify-self:center;padding:4px 8px 0}.loginLinkBtn:hover{text-decoration:underline}.loginHelper{margin:6px 0 0;text-align:center;font-size:12px;color:#0f172a8c}.loginError{background:#dc26261a;border:1px solid rgba(220,38,38,.22);color:#b91c1c;padding:10px 12px;border-radius:12px;font-size:13px}:root{--blue:#1976d2;--blue-10:rgba(25,118,210,.1);--blue-16:rgba(25,118,210,.16);--bg:#eef3f8;--shell:rgba(255,255,255,.72);--card:rgba(255,255,255,.86);--text:#0f172a;--muted:rgba(15,23,42,.58);--line:rgba(15,23,42,.1);--shadow:0 18px 50px rgba(15,23,42,.1);--shadow2:0 10px 26px rgba(15,23,42,.08);--r-lg:22px;--r-md:18px}.uiRoot{height:100vh;background:radial-gradient(1200px 600px at 20% 10%,rgba(25,118,210,.1),transparent 60%),radial-gradient(900px 500px at 90% 40%,rgba(25,118,210,.08),transparent 55%),var(--bg);padding:22px;overflow:hidden}.uiShell{height:calc(100vh - 44px);border-radius:var(--r-lg);background:var(--shell);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.6);box-shadow:var(--shadow);display:grid;grid-template-columns:260px 1fr;overflow:hidden}.uiShell.uiShellFull{grid-template-columns:1fr}.uiSidebar{height:100%;background:#ffffffd6;border-right:1px solid var(--line);padding:16px;overflow:auto;position:sticky;top:0;display:flex;flex-direction:column}.uiBrand{display:flex;gap:10px;align-items:center;padding:10px;border-radius:var(--r-md);background:#1976d20d;border:1px solid rgba(25,118,210,.14)}.uiBrandMark{width:40px;height:40px;border-radius:14px;background:#fffffff2;border:1px solid rgba(15,23,42,.1);display:grid;place-items:center;overflow:hidden}.uiBrandMark img{width:26px;height:26px;object-fit:contain}.uiBrandText{line-height:1.1}.uiBrandName{font-weight:700;letter-spacing:.2px;color:var(--text);font-size:14px}.uiBrandTag{font-size:12px;color:var(--muted);margin-top:2px}.uiSectionLabel{margin:14px 10px 8px;font-size:11px;text-transform:uppercase;letter-spacing:.7px;color:#0f172a73;font-weight:600}.uiNav{display:grid;gap:8px}.uiNavItem{width:100%;text-align:left;border:1px solid var(--line);background:#fff;color:var(--text);cursor:pointer;border-radius:18px;padding:12px;font-weight:600;font-size:14px;display:flex;align-items:center;gap:10px}.uiNavDot{width:10px;height:10px;border-radius:999px;background:#0f172a29}.uiNavItem:hover{background:#f8fafc;border-color:var(--line)}.uiNavItem.active{background:var(--blue-10);border-color:var(--blue-16)}.uiNavItem.active .uiNavDot{background:var(--blue)}.uiSidebarSpacer{flex:1}.uiSidebarFooterCard{margin-top:12px;border-radius:20px;padding:14px;background:linear-gradient(135deg,#1976d21a,#ffffffe0);border:1px solid rgba(25,118,210,.16)}.uiFooterTitle{font-weight:700;color:var(--text);font-size:13px}.uiFooterSub{margin-top:4px;font-size:12px;color:var(--muted);line-height:1.35}.uiFooterMeta{margin-top:10px;font-size:12px;color:#1976d2f2;font-weight:600}.uiMain{height:100%;display:grid;grid-template-rows:70px 1fr;overflow:hidden}.uiTopbar{background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:14px 18px;position:sticky;top:0;z-index:5}.uiTermWrap{display:flex;gap:10px;align-items:center}.uiTermPill{display:flex;gap:8px;align-items:center;padding:10px 12px;border-radius:18px;border:1px solid rgba(15,23,42,.1);background:#fffffff2}.uiTermLabel{font-size:12px;color:#0f172a8c}.uiTermValue{font-size:13px;font-weight:650;color:var(--text)}.uiTermSelect{height:32px;border-radius:10px;border:1px solid var(--line);background:#fff;color:var(--text);font-size:13px;font-weight:600;padding:0 10px;min-width:220px}.uiTermSelect:focus{outline:none;border-color:#1976d259;box-shadow:0 0 0 3px #1976d21f}.uiTopbarRight{display:flex;align-items:center;gap:10px}.uiIconBtn{width:40px;height:40px;border-radius:16px;border:1px solid var(--line);background:#fffffff2;cursor:pointer;font-weight:600}.uiProfile{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:18px;border:1px solid var(--line);background:#fffffff2}.uiAvatar{width:34px;height:34px;border-radius:16px;background:var(--blue-10);border:1px solid var(--blue-16);display:grid;place-items:center;font-weight:700;color:var(--blue)}.uiProfileText{line-height:1.1}.uiProfileName{font-weight:700;font-size:13px}.uiProfileSub{font-size:12px;color:var(--muted);margin-top:2px}.uiLogoutBtn{height:40px;padding:0 14px;border-radius:16px;border:1px solid rgba(15,23,42,.12);background:#fffffff2;font-size:13px;font-weight:600;cursor:pointer;color:#0f172abf}.uiLogoutBtn:hover{background:#1976d214;border-color:#1976d240;color:var(--blue)}.uiContent{padding:18px;overflow:auto;height:100%}.uiHeaderRow{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:14px}.uiTitle{margin:0;font-size:24px;font-weight:700;letter-spacing:-.2px;color:var(--text)}.uiSubtitle{margin:6px 0 0;color:var(--muted);font-size:13px;line-height:1.35}.uiActions{display:flex;gap:10px}.uiPrimaryBtn{height:42px;border-radius:16px;border:0;background:var(--blue);color:#fff;font-weight:600;padding:0 14px;cursor:pointer}.uiPrimaryBtn:hover{filter:brightness(.97)}.uiGhostBtn{height:42px;border-radius:16px;border:1px solid var(--line);background:#fffffff2;color:var(--text);font-weight:600;padding:0 14px;cursor:pointer}.uiPageCard{background:#ffffffe0;border:1px solid rgba(255,255,255,.6);border-radius:20px;padding:16px;box-shadow:var(--shadow2)}@media(max-width:980px){.uiRoot{height:auto;overflow:visible}.uiShell{height:auto;min-height:calc(100vh - 44px);grid-template-columns:1fr}.uiSidebar{position:relative;top:auto;height:auto;border-right:0;border-bottom:1px solid var(--line);overflow:visible}.uiMain{height:auto;overflow:visible;grid-template-rows:auto 1fr}.uiTopbar{position:relative;top:auto}.uiContent{height:auto;overflow:visible}.uiTermWrap{flex-wrap:wrap}}@media(max-width:768px){.uiRoot{padding:0;height:auto;min-height:100vh}.uiShell{border-radius:0;box-shadow:none;min-height:100vh}.uiSidebar{padding:12px;border-bottom:1px solid var(--line)}.uiBrand{padding:8px;border-radius:14px}.uiSectionLabel{margin:10px 8px 6px;font-size:10px}.uiNav{gap:6px}.uiNavItem{padding:10px;border-radius:14px;font-size:13px}.uiSidebarFooterCard{margin-top:8px;padding:10px;border-radius:14px}.uiTopbar{padding:10px 12px;flex-wrap:wrap;gap:8px}.uiTermWrap{width:100%;justify-content:center}.uiTermPill{padding:8px 10px;border-radius:14px}.uiTermSelect{height:36px;min-width:0;width:100%;max-width:200px}.uiTopbarRight{width:100%;justify-content:center}.uiIconBtn{width:36px;height:36px;border-radius:12px}.uiProfile{padding:6px 8px;border-radius:14px}.uiAvatar{width:30px;height:30px;border-radius:12px}.uiProfileName{font-size:12px}.uiProfileSub{font-size:11px}.uiLogoutBtn{height:36px;padding:0 10px;border-radius:12px;font-size:12px}.uiContent{padding:12px}.uiHeaderRow{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:10px}.uiTitle{font-size:20px}.uiSubtitle{font-size:12px;margin-top:4px}.uiActions{width:100%;flex-wrap:wrap;gap:8px}.uiPrimaryBtn,.uiGhostBtn{height:38px;padding:0 12px;font-size:12px;border-radius:12px}.uiPageCard{padding:12px;border-radius:16px}}@media(max-width:375px){.uiRoot{padding:0}.uiSidebar{padding:10px}.uiBrand{padding:6px;border-radius:12px}.uiBrandMark{width:36px;height:36px;border-radius:12px}.uiBrandMark img{width:22px;height:22px}.uiBrandName{font-size:13px}.uiBrandTag{font-size:11px}.uiSectionLabel{margin:8px 6px 4px;font-size:9px}.uiNavItem{padding:8px;border-radius:12px;font-size:12px}.uiNavDot{width:8px;height:8px}.uiSidebarFooterCard{padding:8px;border-radius:12px}.uiFooterTitle{font-size:12px}.uiFooterSub,.uiFooterMeta{font-size:11px}.uiTopbar{padding:8px 10px}.uiTermPill{padding:6px 8px;border-radius:12px}.uiTermLabel{font-size:11px}.uiTermValue{font-size:12px}.uiTermSelect{height:34px;font-size:12px}.uiIconBtn{width:34px;height:34px;border-radius:10px}.uiProfile{padding:4px 6px;border-radius:12px}.uiAvatar{width:28px;height:28px;border-radius:10px}.uiProfileName{font-size:11px}.uiProfileSub{font-size:10px}.uiLogoutBtn{height:34px;padding:0 8px;border-radius:10px;font-size:11px}.uiContent{padding:10px}.uiHeaderRow{margin-bottom:8px}.uiTitle{font-size:18px}.uiSubtitle{font-size:11px}.uiPrimaryBtn,.uiGhostBtn{height:36px;padding:0 10px;font-size:11px;border-radius:10px}.uiPageCard{padding:10px;border-radius:14px}}.dpWrap,.dpWrap *{box-sizing:border-box;font-family:var(--ui-font)}:root{--dp-accentA: rgba(37, 99, 235, .92);--dp-accentB: rgba(124, 58, 237, .9);--dp-riskA: rgba(239, 68, 68, .92);--dp-riskB: rgba(245, 158, 11, .92);--dp-card: rgba(255, 255, 255, .92);--dp-border: rgba(148, 163, 184, .2);--dp-text: rgba(15, 23, 42, .92);--dp-muted: rgba(100, 116, 139, .95)}.dpWrap{width:100%;padding:18px;color:var(--dp-text);overflow-x:hidden}.dpHeaderCard{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:16px;border-radius:18px;border:1px solid var(--dp-border);background:radial-gradient(900px 260px at 10% -30%,rgba(37,99,235,.14),transparent 55%),radial-gradient(700px 240px at 110% 0%,rgba(124,58,237,.1),transparent 55%),var(--dp-card)}.dpHeaderLeft{min-width:260px}.dpTitle{margin:0;font-size:22px;font-weight:var(--ui-w-semibold);letter-spacing:-.02em}.dpSub{margin-top:6px;font-size:12.5px;font-weight:var(--ui-w-medium);color:var(--dp-muted)}.dpHeaderRight{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dpBtn{height:40px;border-radius:12px;padding:0 14px;border:1px solid var(--dp-border);background:#ffffffeb;color:#0f172ae0;font-size:12.5px;font-weight:var(--ui-w-semibold);cursor:pointer}.dpBtn:disabled{cursor:not-allowed;opacity:.7}.dpBtnPrimary{border:1px solid rgba(37,99,235,.18);background:linear-gradient(135deg,var(--dp-accentA),var(--dp-accentB));color:#fff}.dpBtnGhost{background:#ffffffa6}.dpBtnSoft{background:#f5f7fbf2}.dpTopRow{margin-top:14px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;align-items:stretch}@media(max-width:1200px){.dpTopRow{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){.dpTopRow{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:480px){.dpTopRow{grid-template-columns:1fr}}.dpKpiCard{padding:14px;border-radius:18px;border:1px solid var(--dp-border);background:var(--dp-card);min-width:0;display:flex;flex-direction:column;gap:10px}.dpKpiTint{background:radial-gradient(700px 210px at 15% -35%,rgba(37,99,235,.12),transparent 60%),radial-gradient(600px 200px at 110% 0%,rgba(124,58,237,.1),transparent 60%),var(--dp-card)}.dpKpiRisk{background:radial-gradient(700px 210px at 15% -35%,rgba(239,68,68,.11),transparent 60%),radial-gradient(600px 200px at 110% 0%,rgba(245,158,11,.1),transparent 60%),var(--dp-card)}.dpKpiSem{background:radial-gradient(700px 210px at 15% -35%,rgba(14,165,233,.1),transparent 60%),radial-gradient(600px 200px at 110% 0%,rgba(124,58,237,.08),transparent 60%),var(--dp-card)}.dpKpiLabel{font-size:12px;font-weight:var(--ui-w-semibold);color:#0f172ab3}.dpKpiVal{font-size:28px;font-weight:var(--ui-w-bold);letter-spacing:-.03em;color:#0f172aeb}.dpKpiSub{margin-top:-2px;font-size:12px;font-weight:var(--ui-w-medium);color:var(--dp-muted)}.dpKpiHead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.dpKpiBig{font-size:20px;font-weight:var(--ui-w-bold);color:#0f172aeb;white-space:nowrap}.dpKpiBigSub{margin-left:6px;font-size:12px;font-weight:var(--ui-w-medium);color:var(--dp-muted)}.dpKpiBody{margin-top:2px}.dpHint{margin-top:-4px;font-size:11.5px;color:var(--dp-muted)}.dpDonutMini{display:grid;grid-template-columns:110px 1fr;gap:12px;align-items:center}.dpDonutSvg{width:110px;height:110px}.dpDonutTrack{fill:none;stroke:#94a3b838;stroke-width:12}.dpDonutProg{fill:none;stroke-width:12;stroke-linecap:round;transform:rotate(-90deg);transform-origin:60px 60px}.dpDonutVal{font-size:18px;font-weight:var(--ui-w-bold);fill:#0f172aeb}.dpDonutLabel{font-size:13px;font-weight:var(--ui-w-semibold);color:#0f172aeb}.dpDonutSub{margin-top:4px;font-size:12px;font-weight:var(--ui-w-medium);color:var(--dp-muted)}.dpMain{margin-top:14px}.dpPanel{border-radius:18px;border:1px solid var(--dp-border);background:var(--dp-card);padding:12px}.dpPanelTop{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:6px 6px 10px}.dpPanelTitle{font-size:16px;font-weight:var(--ui-w-semibold);color:#0f172aeb}.dpPanelSub{margin-top:6px;font-size:12px;font-weight:var(--ui-w-medium);color:var(--dp-muted)}.dpControls{display:grid;gap:10px;justify-items:stretch;width:100%}@media(max-width:920px){.dpControls{width:100%;justify-items:stretch}.dpTabs{justify-self:stretch;margin-left:0}}.dpTabs{display:inline-flex;padding:4px;border:1px solid var(--dp-border);border-radius:999px;background:#f5f7fbf2;gap:4px;justify-self:end;margin-left:auto}.dpTab{height:34px;padding:0 12px;border-radius:999px;border:0;background:transparent;cursor:pointer;font-size:12px;font-weight:var(--ui-w-semibold);color:#0f172ab8}.dpTab:hover{background:#ffffffbf}.dpTab.active{background:#fff;color:#0f172aeb;box-shadow:0 10px 18px #0206170f}.dpSearchRow{display:grid;grid-template-columns:minmax(220px,1.4fr) repeat(3,minmax(160px,1fr)) minmax(120px,.7fr);gap:10px;align-items:center;width:100%;max-width:100%}.dpSearchRow>*{width:100%}.dpInput,.dpSelect{height:44px;border-radius:20px;border:1px solid rgba(37,99,235,.18);background:linear-gradient(180deg,#fff,#f5f7fbf2);padding:0 14px;font-size:13px;font-weight:var(--ui-w-medium);color:#0f172af0;outline:none;min-width:0;box-shadow:inset 0 1px 2px #0f172a0f;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}.dpSelect{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%231d4ed8' stroke-width='1.5' d='M1 1.5l5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:12px 8px;padding-right:40px;cursor:pointer}.dpSelect option{border-radius:20px;padding:10px 14px;background:#fff;color:#0f172af0;font-size:13px}.dpSelect option:hover,.dpSelect option:focus,.dpSelect option:checked{background:#2563eb1f;color:#0f172afa}.dpSelect option:checked{font-weight:700}.dpInput:focus,.dpSelect:focus{border-color:#2563eba6;box-shadow:0 0 0 5px #2563eb29;background:#f8fbff}.dpSelect::-ms-expand{display:none}.dpSearchRow .dpBtn{height:40px;justify-self:stretch}@media(max-width:1100px){.dpSearchRow{grid-template-columns:repeat(2,minmax(180px,1fr))}}@media(max-width:640px){.dpSearchRow{grid-template-columns:1fr}}.dpTableWrap{border:1px solid var(--dp-border);border-radius:14px;overflow:auto;background:#fff;max-width:100%}.dpTable{width:100%;border-collapse:separate;border-spacing:0;min-width:0}.dpTable thead th{position:sticky;top:0;z-index:2;background:linear-gradient(180deg,#f5f7fbf5,#f5f7fbdb);border-bottom:1px solid var(--dp-border);text-align:left;padding:10px;font-size:12px;font-weight:var(--ui-w-semibold);color:#0f172ab8;white-space:nowrap}.dpTable tbody td{border-bottom:1px solid rgba(148,163,184,.16);padding:10px;font-size:12.5px;font-weight:var(--ui-w-medium);color:#0f172adb;white-space:nowrap;vertical-align:middle}.dpRow:hover{background:#2563eb0a}.tRight{text-align:right}.dpPerson .dpName{font-weight:var(--ui-w-semibold);color:#0f172aeb}.dpMeta{margin-top:3px;font-size:11.5px;color:var(--dp-muted)}.dpMetaStrong{font-weight:var(--ui-w-semibold);color:#0f172aeb}.dpUpdated{font-size:11.5px;color:var(--dp-muted)}.dpColDrivers{white-space:normal}.dpDrivers{display:flex;flex-wrap:wrap;gap:6px;max-width:380px}.dpTag{height:24px;display:inline-flex;align-items:center;padding:0 8px;border-radius:999px;border:1px solid var(--dp-border);background:#0f172a08;font-size:11px;font-weight:var(--ui-w-semibold);color:#0f172abd}.dpTagMore{background:#2563eb14;border-color:#2563eb2e}.dpScore{display:inline-flex;min-width:64px;justify-content:flex-end;padding:4px 8px;border-radius:999px;border:1px solid var(--dp-border);font-weight:var(--ui-w-semibold);background:#ffffffe6}.scoreGood{background:#22c55e1a;border-color:#22c55e38}.scoreWarn{background:#f59e0b1f;border-color:#f59e0b38}.scoreBad{background:#ef44441a;border-color:#ef444438}.scoreOk{background:#2563eb14;border-color:#2563eb2e}.dpPill{height:26px;display:inline-flex;align-items:center;padding:0 10px;border-radius:999px;border:1px solid var(--dp-border);font-size:11.5px;font-weight:var(--ui-w-semibold);background:#ffffffe6;color:#0f172adb}.pillHigh{background:#ef44441a;border-color:#ef444438}.pillMed{background:#f59e0b1f;border-color:#f59e0b38}.pillLow{background:#22c55e1a;border-color:#22c55e38}.pillDeans{background:#7c3aed1a;border-color:#7c3aed38}.dpState{padding:18px 10px;text-align:center;color:var(--dp-muted);font-weight:var(--ui-w-medium)}.dpPanelFoot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 6px 2px;flex-wrap:wrap}.dpFootHint{font-size:12px;color:var(--dp-muted)}.dpMono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:11.5px}.dpNameBtn{border:0;background:transparent;padding:0;margin:0;font:inherit;font-weight:var(--ui-w-semibold);color:#1d4ed8;cursor:pointer;text-align:left}.dpNameBtn:hover{text-decoration:underline}.dpRank{font-weight:700;color:var(--dp-accentA);margin-right:4px}.dpInfoOverlay{position:fixed;inset:0;background:#0206177a;z-index:1200;display:grid;place-items:center;padding:18px}.dpInfoModal{width:min(1080px,95vw);max-height:92vh;overflow:auto;border-radius:16px;border:1px solid rgba(148,163,184,.22);background:#fff;box-shadow:0 30px 80px #02061759;padding:14px}.dpInfoTop{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.dpInfoTitle{font-size:16px;font-weight:700;color:#0f172a}.dpInfoClose{width:34px;height:34px;border-radius:10px;border:1px solid rgba(148,163,184,.22);background:#fff;cursor:pointer;font-weight:700;color:#334155}.dpInfoState{border:1px solid rgba(148,163,184,.24);border-radius:10px;padding:12px;color:#475569;font-size:13px}@media(max-width:768px){.dpWrap{padding:16px}.dpHeaderCard{flex-direction:column;padding:20px 16px;gap:16px;border-radius:20px;box-shadow:0 4px 20px #00000014}.dpHeaderLeft{min-width:0;width:100%;text-align:center}.dpTitle{font-size:24px;font-weight:800;letter-spacing:-.03em;background:linear-gradient(135deg,var(--dp-accentA),var(--dp-accentB));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.dpSub{font-size:13px;margin-top:8px;color:var(--dp-muted)}.dpHeaderRight{width:100%;justify-content:center;flex-wrap:wrap;gap:8px}.dpBtn{height:44px;padding:0 16px;font-size:13px;border-radius:14px;font-weight:700;transition:all .2s ease;box-shadow:0 2px 8px #0000000f}.dpBtn:active{transform:scale(.96)}.dpBtnPrimary{box-shadow:0 4px 12px #2563eb40}}@media(max-width:768px){.dpTopRow{grid-template-columns:1fr;gap:12px;margin-top:16px}.dpKpiCard{padding:20px 16px;border-radius:20px;box-shadow:0 4px 16px #0000000f;border:1px solid rgba(148,163,184,.15);transition:transform .2s ease,box-shadow .2s ease}.dpKpiCard:active{transform:scale(.98)}.dpKpiVal{font-size:32px;font-weight:800;letter-spacing:-.04em}.dpKpiBig{font-size:24px;white-space:normal;word-break:break-word;font-weight:800}.dpKpiBigSub{margin-left:6px;font-size:13px;font-weight:600}.dpKpiLabel{font-size:12px;text-transform:uppercase;letter-spacing:.05em;font-weight:700}.dpKpiSub{font-size:12px;margin-top:4px}.dpHint{font-size:11px;margin-top:0}.dpKpiHead{flex-direction:column;gap:8px}}@media(max-width:768px){.dpDonutMini{grid-template-columns:1fr;justify-items:center;text-align:center;gap:16px;padding:16px 0}.dpDonutSvg{width:120px;height:120px;filter:drop-shadow(0 4px 12px rgba(0,0,0,.1))}.dpDonutVal{font-size:20px;font-weight:800}.dpDonutLabel{font-size:14px;font-weight:700;margin-top:8px}.dpDonutSub{font-size:12px;margin-top:6px}}@media(max-width:480px){.dpDonutSvg{width:110px;height:110px}}@media(max-width:768px){.dpMain{margin-top:16px}.dpPanel{padding:16px;border-radius:20px;box-shadow:0 4px 20px #0000000f;border:1px solid rgba(148,163,184,.12)}.dpPanelTop{flex-direction:column;padding:8px 8px 16px;gap:12px;text-align:center}.dpPanelTitle{font-size:18px;font-weight:800;letter-spacing:-.02em}.dpPanelSub{font-size:12px;margin-top:8px}}@media(max-width:768px){.dpControls{gap:12px}.dpTabs{width:100%;justify-content:center;padding:6px;border-radius:16px;background:#f5f7fbfa;box-shadow:0 2px 8px #0000000a}.dpTab{height:40px;padding:0 16px;font-size:13px;font-weight:700;border-radius:12px;transition:all .2s ease}.dpTab:active{transform:scale(.96)}.dpTab.active{box-shadow:0 4px 12px #0206171a}}@media(max-width:768px){.dpSearchRow{grid-template-columns:1fr;gap:12px}.dpInput,.dpSelect,.dpMobileStudentSelect{height:48px;padding:0 16px;font-size:14px;border-radius:14px;border:2px solid var(--dp-border);transition:all .2s ease;box-shadow:0 2px 8px #0000000a}.dpInput:focus,.dpSelect:focus,.dpMobileStudentSelect:focus{border-color:var(--dp-accentA);box-shadow:0 0 0 4px #2563eb26;transform:translateY(-1px)}.dpSearchRow .dpBtn{height:48px;font-size:14px;font-weight:700;border-radius:14px;box-shadow:0 4px 12px #2563eb33}}.dpMobileStudentView{display:none}@media(max-width:768px){.dpTableWrap{display:none}.dpMobileStudentView{display:block;margin:18px 0 10px}.dpMobileLabel{display:block;margin-bottom:10px;color:#64748bf2;font-size:12px;font-weight:700;letter-spacing:.02em;text-transform:uppercase}.dpMobileCard{border-radius:20px;border:1px solid rgba(148,163,184,.18);background:var(--dp-card);padding:16px;margin-top:14px;text-align:center}.dpMobileCardHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px;background:transparent;border:none}.dpMobileName{font-size:16px;font-weight:700;color:#0f172af2}.dpMobileCardBody{display:grid;gap:12px}.dpMobileCardBody.is-closed{display:none}.dpMobileRow{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 14px;background:#f9fafbe0;border-radius:16px}.dpMobileRowLabel{font-size:12px;font-weight:700;color:#64748bf2}.dpMobileCard--high{border-left:6px solid rgba(239,68,68,.88)}.dpMobileCard--medium{border-left:6px solid rgba(245,158,11,.88)}.dpMobileCard--low,.dpMobileCard--safe{border-left:6px solid rgba(34,197,94,.88)}}@media(max-width:768px){.dpTableWrap{border-radius:16px;border:1px solid rgba(148,163,184,.12);box-shadow:0 4px 16px #0000000f}.dpTable{display:block}.dpTable thead{display:none}.dpTable tbody{display:block}.dpTable tbody tr{display:block;margin-bottom:12px;padding:16px;border-radius:14px;background:#fff;border:1px solid rgba(148,163,184,.12);box-shadow:0 2px 8px #0000000a;transition:all .2s ease}.dpTable tbody tr:active{transform:scale(.98);box-shadow:0 4px 12px #00000014}.dpTable tbody td{display:block;padding:8px 0;border-bottom:1px solid rgba(148,163,184,.1);white-space:normal;word-break:break-word;font-size:14px}.dpTable tbody td:last-child{border-bottom:none}.dpTable tbody td:before{content:attr(data-label);display:block;font-size:11px;font-weight:700;color:var(--dp-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}.dpPerson .dpName{font-size:16px;font-weight:800}.dpMeta{font-size:12px;margin-top:4px}.dpUpdated{font-size:11px;margin-top:8px;padding-top:8px;border-top:1px dashed rgba(148,163,184,.2)}.dpDrivers{max-width:100%;margin-top:8px}.dpTag{height:26px;padding:0 10px;font-size:11px;font-weight:700;border-radius:8px}.dpScore{min-width:70px;padding:6px 12px;font-size:13px;font-weight:800;border-radius:12px}.dpPill{height:28px;padding:0 12px;font-size:12px;font-weight:700;border-radius:8px}.tRight{text-align:left}}@media(max-width:768px){.dpPanelFoot{flex-direction:column;padding:12px 8px 4px;gap:12px;text-align:center}.dpFootHint{font-size:12px;font-weight:600}.dpMono{font-size:12px;padding:8px 12px;background:#f5f7fbcc;border-radius:8px}}@media(max-width:768px){.dpInfoOverlay{padding:0;align-items:flex-end}.dpInfoModal{width:100%;max-height:85vh;padding:20px 16px;border-radius:24px 24px 0 0;box-shadow:0 -10px 40px #0003}.dpInfoTop{margin-bottom:16px}.dpInfoTitle{font-size:20px;font-weight:800}.dpInfoClose{width:40px;height:40px;border-radius:12px;font-size:18px;font-weight:800}.dpInfoState{padding:16px;font-size:14px;border-radius:14px;line-height:1.5}}@media(max-width:375px){.dpWrap{padding:12px}.dpHeaderCard{padding:16px 12px;border-radius:18px}.dpTitle{font-size:22px}.dpSub{font-size:12px}.dpKpiCard{padding:16px 12px;border-radius:18px}.dpKpiVal{font-size:28px}.dpKpiBig{font-size:20px}.dpPanel{padding:12px;border-radius:18px}.dpPanelTitle{font-size:16px}.dpTable tbody tr{padding:12px;border-radius:12px}.dpTable tbody td{font-size:13px;padding:6px 0}.dpPerson .dpName{font-size:15px}.dpTag{height:24px;padding:0 8px;font-size:10px}.dpScore{min-width:60px;padding:4px 10px;font-size:12px}.dpPill{height:26px;padding:0 10px;font-size:11px}.dpInput,.dpSelect,.dpSearchRow .dpBtn{height:44px;font-size:13px}.dpInfoModal{padding:16px 12px;border-radius:20px 20px 0 0}.dpInfoTitle{font-size:18px}}.scoreMuted{color:var(--dp-text-muted, #6b7280);font-size:12px;font-weight:600;line-height:1.35;white-space:normal}.dpModalOverlay{position:fixed;inset:0;background:#0206177a;z-index:1300;display:grid;place-items:center;padding:18px}.dpModalContent{width:min(480px,95vw);max-height:90vh;overflow:auto;border-radius:16px;border:1px solid rgba(148,163,184,.22);background:#fff;box-shadow:0 30px 80px #02061759}.dpModalHeader{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 20px;border-bottom:1px solid rgba(148,163,184,.18)}.dpModalHeader h3{margin:0;font-size:18px;font-weight:700;color:#0f172a}.dpModalClose{width:34px;height:34px;border-radius:10px;border:1px solid rgba(148,163,184,.22);background:#fff;cursor:pointer;font-weight:700;color:#334155;font-size:20px}.dpModalClose:hover{background:#f1f5f9}.dpModalBody{padding:20px}.dpModalDesc{margin:0 0 16px;font-size:14px;color:#64748b}.dpModalOptions{display:flex;flex-direction:column;gap:10px}.dpModalOption{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:12px;border:1px solid rgba(148,163,184,.2);background:#fff;cursor:pointer;text-align:left;transition:all .2s ease}.dpModalOption:hover{border-color:#2563eb66;background:#2563eb0a;box-shadow:0 2px 8px #0000000f}.dpModalOptionAll{background:linear-gradient(135deg,#2563eb14,#7c3aed14);border-color:#2563eb4d}.dpModalOptionAll:hover{background:linear-gradient(135deg,#2563eb1f,#7c3aed1f)}.dpModalIcon{font-size:24px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#f5f7fbe6;border-radius:10px}.dpModalOptionAll .dpModalIcon{background:linear-gradient(135deg,#2563eb26,#7c3aed26)}.dpModalLabel{flex:1;font-size:14px;font-weight:600;color:#0f172a}.dpModalSub{font-size:12px;color:#64748b}.isiWrap{display:grid;gap:12px}.isiHeader{display:grid;gap:4px}.isiTitle{margin:0;font-size:22px;color:#0f172a;font-weight:800}.isiSub{margin:0;color:#64748b;font-size:13px}.isiGrid{display:grid;grid-template-columns:320px 1fr;gap:12px}.isiCard{border:1px solid #e2e8f0;border-radius:12px;padding:12px;background:#fff}.isiCardTitle{margin:0 0 10px;color:#1e293b;font-size:14px;font-weight:800}.isiMeta{font-size:13px;color:#0f172a;margin-bottom:6px}.isiChartWrap{border:1px solid #e2e8f0;border-radius:10px;background:#f8fafc;padding:8px}.yearSelectWrap{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:12px}.yearSelectLabel{font-weight:600;color:#333;font-size:13px}.yearSelect{padding:6px 12px;border:1px solid #ccc;border-radius:4px;font-size:14px;background:#fff;cursor:pointer}.isiChart{width:100%;height:auto}.isiAxis{stroke:#cbd5e1;stroke-width:1.5}.isiAxisLight{stroke:#e2e8f0;stroke-width:1}.isiLine{fill:none;stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.isiLineRisk{stroke:#dc2626}.isiLineMid{stroke:#eab308}.isiLineStrong{stroke:#2563eb}.isiTrendPoint{stroke:#fff;stroke-width:2}.isiTrendPointRisk{fill:#dc2626}.isiTrendPointMid{fill:#eab308}.isiTrendPointStrong{fill:#2563eb}.isiTrendList{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px}.isiTrendList li{border:1px solid #e2e8f0;border-radius:8px;display:flex;justify-content:space-between;align-items:center;padding:7px 9px;font-size:12px}.isiTrendListItemRisk{background:#fee2e2e6;border-color:#f8717173}.isiTrendValueRisk{color:#dc2626;font-weight:800}.isiEmpty{color:#64748b;font-size:13px}.isiTableWrap{overflow:auto;border:1px solid #e2e8f0;border-radius:10px}.isiTable{width:100%;border-collapse:collapse;min-width:560px;font-size:12px;table-layout:fixed}.isiColCode{width:18%}.isiColSubject{width:42%}.isiColGrade,.isiColGpa{width:13%}.isiColRemark{width:14%}.isiTable th,.isiTable td{padding:8px 10px;border-bottom:1px solid #e2e8f0;text-align:left;color:#0f172a;vertical-align:middle;word-break:break-word}.isiTable th{background:#f8fafc;font-weight:700}.isiTable tbody tr:last-child td{border-bottom:0}.isiSubjectNameCell{display:grid;gap:6px}.isiSubjectNameText{font-weight:800;color:#0f172a}.isiNum{text-align:right!important;font-variant-numeric:tabular-nums}.isiFailedText{background:#fee2e2e6;color:#dc2626!important;font-weight:800}.yearSection{margin-bottom:20px}.yearSection:last-child{margin-bottom:0}.yearHeader{margin:16px 0 8px;padding:8px 12px;background:#e0e7ff;color:#3730a3;font-size:14px;font-weight:700;border-radius:6px}.yearSection:first-child .yearHeader{margin-top:0}@media(max-width:920px){.isiGrid{grid-template-columns:1fr}}.spxAvailableSubjects{margin-top:16px;padding:12px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px}.spxAvailableSubjectsTitle{margin:0 0 10px;font-size:13px;font-weight:700;color:#1e293b}.spxSubjectsList{display:flex;flex-wrap:wrap;gap:6px}.spxSubjectTag{display:inline-block;padding:4px 8px;background:#e0e7ff;color:#3730a3;border-radius:4px;font-size:11px;font-weight:600}.spxSubjectTag.spxSubjectMore{background:#f1f5f9;color:#64748b}.spxSubjectsNote{margin:10px 0 0;font-size:11px;color:#64748b;line-height:1.4}.spxInfoContent{width:min(680px,95vw);max-height:92vh;overflow:auto;border-radius:16px;border:1px solid rgba(148,163,184,.22);background:#fff;box-shadow:0 30px 80px #02061759;padding:14px}.spxInfoHeader{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid rgba(148,163,184,.16)}.spxInfoHeader h3{margin:0;font-size:16px;font-weight:700;color:#0f172a}.spxInfoClose{width:34px;height:34px;border-radius:10px;border:1px solid rgba(148,163,184,.22);background:#fff;cursor:pointer;font-weight:700;color:#334155;font-size:20px;line-height:1;display:flex;align-items:center;justify-content:center}.spxInfoClose:hover{background:#f1f5f9}.spxUploadFormatNote{padding:12px;border-radius:12px;background:#6366f10f;border:1px solid rgba(99,102,241,.12);margin-bottom:14px}.spxUploadFormatNote p{margin:4px 0;font-size:12px;color:#475569}.spxUploadError{padding:10px 12px;border-radius:10px;background:#ef444414;border:1px solid rgba(239,68,68,.2);color:#dc2626;font-size:12px;margin-bottom:14px}.spxUploadSuccess{padding:10px 12px;border-radius:10px;background:#10b98114;border:1px solid rgba(16,185,129,.2);color:#059669;font-size:12px;margin-bottom:14px}.spxUploadPreviewTitle{font-size:12px;font-weight:600;color:#475569;margin-bottom:8px}.spxPreviewTable{width:100%;border-collapse:collapse;border-radius:10px;overflow:hidden;border:1px solid rgba(148,163,184,.16)}.spxPreviewTable th{background:#f8fafc;padding:8px 10px;text-align:left;font-size:11px;font-weight:600;color:#475569;border-bottom:1px solid rgba(148,163,184,.16)}.spxPreviewTable td{padding:8px 10px;font-size:11px;color:#0f172a;border-bottom:1px solid rgba(148,163,184,.12)}.spxPreviewTable tr:last-child td{border-bottom:none}.spxUploadActions{display:flex;gap:10px;justify-content:flex-end}.spxCancelBtn{padding:10px 16px;border-radius:10px;border:1px solid rgba(148,163,184,.22);background:#fff;color:#475569;font-size:12px;font-weight:600;cursor:pointer;transition:all .14s ease}.spxCancelBtn:hover{background:#f8fafc;border-color:#94a3b857}.spxExportAllBtn{padding:10px 16px;border-radius:10px;border:1px solid rgba(148,163,184,.22);background:#fff;color:#475569;font-size:12px;font-weight:600;cursor:pointer;transition:all .14s ease}.spxExportAllBtn:hover{background:#f8fafc;border-color:#94a3b857}.spxExportAllBtn.sm{padding:8px 12px;font-size:11px}.spxPrimaryBtn{padding:10px 20px;border-radius:10px;border:none;background:#2563eb;color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:all .14s ease}.spxPrimaryBtn:hover{background:#1d4ed8}.spxPrimaryBtn:disabled{background:#94a3b8;cursor:not-allowed}.spxUnknownSubjectsContent{width:min(720px,95vw)}.spxUnknownSubjectsList{display:grid;gap:10px;margin-bottom:14px}.spxUnknownSubjectRow{display:grid;grid-template-columns:140px minmax(0,1fr);gap:10px;align-items:center}.spxUnknownSubjectCode{padding:10px 12px;border-radius:10px;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:800;letter-spacing:.04em}.spxUnknownSubjectInput{width:100%;height:42px;padding:0 12px;border-radius:10px;border:1px solid rgba(148,163,184,.28);background:#fff;color:#0f172a;font-size:13px;outline:none}.spxUnknownSubjectInput:focus{border-color:#2563eb;box-shadow:0 0 0 4px #2563eb1f}.isiPanelFoot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 6px 2px;flex-wrap:wrap}.isiFootHint{font-size:12px;color:#64748b;font-weight:500}.isiFootActions{display:flex;gap:8px;align-items:center}.isiBtn{height:32px;border-radius:8px;padding:0 12px;border:1px solid rgba(148,163,184,.18);background:#fff;color:#334155;font-size:12px;font-weight:600;cursor:pointer;transition:all .14s ease}.isiBtn:hover:not(:disabled){border-color:#6366f166;background:#6366f10d;color:#3b3bf5}.isiBtn:disabled{opacity:.5;cursor:not-allowed}.isiBtnPrimary{border:1px solid rgba(37,99,235,.18);background:linear-gradient(135deg,#2563ebeb,#7c3aede6);color:#fff}.isiBtnSoft{background:#f5f7fbf2}.isiMetaStrong{font-weight:600;color:#0f172a;min-width:84px;text-align:center}@media(max-width:768px){.isiPanelFoot{flex-direction:column;padding:12px 8px 4px;gap:12px;text-align:center}.isiFootHint{font-size:12px;font-weight:600}.isiMetaStrong{padding:8px 12px;background:#f5f7fbcc;border-radius:8px}}@media(max-width:768px){.isiWrap{gap:14px}.isiHeader{gap:6px}.isiTitle{font-size:24px;font-weight:800;letter-spacing:-.5px}.isiSub{font-size:14px;line-height:1.5}.isiGrid{grid-template-columns:1fr;gap:14px}.isiCard{border-radius:16px;padding:16px;border:1px solid rgba(148,163,184,.12);box-shadow:0 4px 16px #02061714}.isiCardTitle{font-size:15px;font-weight:800;margin-bottom:12px}.isiMeta{font-size:14px;margin-bottom:8px}.isiChartWrap{border-radius:14px;padding:12px;border:1px solid rgba(148,163,184,.12)}.yearSelectWrap{flex-direction:column;gap:8px;margin-bottom:16px}.yearSelectLabel{font-size:14px;font-weight:700}.yearSelect{width:100%;height:44px;padding:0 14px;border-radius:12px;font-size:14px;border:2px solid rgba(148,163,184,.2);transition:all .2s ease}.yearSelect:focus{border-color:#2563eb;box-shadow:0 0 0 4px #2563eb26;transform:translateY(-1px)}.isiTrendList{gap:8px;margin-top:12px}.isiTrendList li{border-radius:10px;padding:10px 12px;font-size:13px;border:1px solid rgba(148,163,184,.12)}.isiEmpty{font-size:14px;padding:16px}.isiTableWrap{border-radius:14px;border:1px solid rgba(148,163,184,.12);box-shadow:0 4px 16px #0206170f}.isiTable{display:block;min-width:0;font-size:13px}.isiTable thead{display:none}.isiTable tbody{display:block}.isiTable tr{display:block;margin-bottom:10px;padding:14px;border-radius:18px;background:#fff;border:1px solid rgba(148,163,184,.12);box-shadow:0 10px 24px #0f172a14;transition:all .2s ease;overflow:hidden;position:relative}.isiTable tr:active{transform:scale(.98);box-shadow:0 4px 10px #02061714}.isiTable th,.isiTable td{display:block;padding:6px 0;border-bottom:1px solid rgba(148,163,184,.1);text-align:left;font-size:13px}.isiTable th:last-child,.isiTable td:last-child{border-bottom:none}.isiSubjectRow:before{content:"";position:absolute;inset:0 auto 0 0;width:5px;border-radius:18px 0 0 18px;background:#94a3b852}.isiSubjectRow-high{border-color:#ef444447;box-shadow:0 12px 26px #ef44441a}.isiSubjectRow-high:before{background:#dc2626}.isiSubjectRow-medium{border-color:#eab30847;box-shadow:0 12px 26px #eab30814}.isiSubjectRow-medium:before{background:#eab308}.isiSubjectRow-low{border-color:#2563eb38;box-shadow:0 12px 26px #2563eb14}.isiSubjectRow-low:before{background:#2563eb}.isiTable th:before,.isiTable td:before{content:attr(data-label);display:block;font-size:10px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.5px;margin-bottom:2px}.isiSubjectCodeCell:before,.isiSubjectNameCell:before{display:none}.isiSubjectNameCell{margin:-14px -14px 8px;padding:14px;border-bottom:1px solid rgba(148,163,184,.1)}.isiSubjectNameText{font-size:15px;line-height:1.35}.isiSubjectCodeCell{padding-top:0;font-weight:700;color:#475569}.isiNum{text-align:left!important}.yearSection{margin-bottom:24px}.yearHeader{margin:20px 0 10px;padding:12px 14px;border-radius:10px;font-size:15px;font-weight:800}.spxAvailableSubjects{margin-top:20px;padding:16px;border-radius:14px}.spxAvailableSubjectsTitle{font-size:14px;margin-bottom:12px}.spxSubjectsList{gap:8px}.spxSubjectTag{padding:6px 10px;font-size:12px;border-radius:6px}.spxSubjectsNote{font-size:12px;margin-top:12px;line-height:1.5}.spxInfoOverlay{padding:0;align-items:flex-end}.spxInfoContent{width:100%;max-height:85vh;border-radius:24px 24px 0 0;padding:20px 16px;box-shadow:0 -10px 40px #02061740}.spxInfoHeader{margin-bottom:16px;padding-bottom:12px}.spxInfoHeader h3{font-size:18px;font-weight:800}.spxInfoClose{width:40px;height:40px;border-radius:12px;font-size:20px}.spxUploadFormatNote{padding:16px;border-radius:14px;margin-bottom:16px}.spxUploadFormatNote p{font-size:13px}.spxUploadFileRow{flex-direction:column;gap:12px}.spxUploadFileLabel{padding:30px 20px;border-radius:14px}.spxUploadIcon{font-size:36px}.spxUploadFileLabel span{font-size:14px}.spxUploadError,.spxUploadSuccess{padding:14px;border-radius:12px;font-size:13px}.spxUploadPreview{margin-bottom:16px}.spxUploadPreviewTitle{font-size:13px}.spxPreviewTable{border-radius:12px}.spxPreviewTable th,.spxPreviewTable td{padding:10px 12px;font-size:12px}.spxUploadActions{flex-direction:column;gap:10px}.spxUnknownSubjectRow{grid-template-columns:1fr}.spxUnknownSubjectCode,.spxUnknownSubjectInput,.spxCancelBtn{width:100%}.spxExportAllBtn{width:100%;height:44px;padding:0 16px;border-radius:12px;font-size:13px;font-weight:700}.spxPrimaryBtn{width:100%;height:48px;padding:0 20px;border-radius:14px;font-size:14px;font-weight:700;box-shadow:0 6px 20px #2563eb4d}}@media(max-width:375px){.isiWrap{gap:12px}.isiTitle{font-size:22px}.isiSub{font-size:13px}.isiCard{border-radius:14px;padding:14px}.isiCardTitle{font-size:14px}.isiMeta{font-size:13px}.isiChartWrap{border-radius:12px;padding:10px}.yearSelect{height:40px;font-size:13px}.isiTrendList li{padding:8px 10px;font-size:12px}.isiTableWrap{border-radius:12px}.isiTable tr{padding:12px;border-radius:12px}.isiTable th,.isiTable td{font-size:12px;padding:4px 0}.isiSubjectNameCell{margin:-12px -12px 8px;padding:12px}.isiSubjectNameText{font-size:14px}.yearHeader{padding:10px 12px;font-size:14px}.spxAvailableSubjects{padding:14px;border-radius:12px}.spxSubjectTag{padding:5px 8px;font-size:11px}.spxInfoContent{padding:16px 12px;border-radius:20px 20px 0 0}.spxInfoHeader h3{font-size:16px}.spxInfoClose{width:36px;height:36px;border-radius:10px}.spxUploadFormatNote{padding:14px;border-radius:12px}.spxUploadFileLabel{padding:24px 16px;border-radius:12px}.spxUploadIcon{font-size:32px}.spxPreviewTable{border-radius:10px}.spxExportAllBtn{height:40px;font-size:12px}.spxPrimaryBtn{height:44px;font-size:13px}}.adlsWrap{font-family:var(--ui-font);margin-top:14px;border-radius:18px;border:1px solid var(--dp-border);background:var(--dp-card);padding:16px}.adlsHeader{margin-bottom:16px}.adlsTitle{margin:0;font-size:18px;font-weight:var(--ui-w-semibold);color:#0f172aeb}.adlsSub{margin-top:6px;font-size:12px;font-weight:var(--ui-w-medium);color:var(--dp-muted)}.adlsEmpty{padding:18px 10px;text-align:center;color:var(--dp-muted);font-weight:var(--ui-w-medium)}.adlsTableWrap{font-family:var(--ui-font);border:1px solid var(--dp-border);border-radius:14px;overflow:auto;background:#fff;max-width:100%}.adlsTable{width:100%;border-collapse:separate;border-spacing:0;min-width:0}.adlsTable thead th{position:sticky;top:0;z-index:2;background:linear-gradient(180deg,#f5f7fbf5,#f5f7fbdb);border-bottom:1px solid var(--dp-border);text-align:left;padding:10px;font-size:12px;font-weight:var(--ui-w-semibold);color:#0f172ab8;white-space:nowrap}.adlsTable tbody td{border-bottom:1px solid rgba(148,163,184,.16);padding:10px;font-size:12.5px;font-weight:var(--ui-w-medium);color:#0f172adb;white-space:nowrap;vertical-align:middle}.adlsTable tbody tr:hover{background:#2563eb0a}.adlsName{font-weight:var(--ui-w-semibold);color:#1d4ed8;cursor:pointer}.adlsName:hover{text-decoration:underline}.adlsMeta{margin-top:3px;font-size:11.5px;color:var(--dp-muted)}.adlsGrade{text-align:center;vertical-align:middle}.adlsGpa{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:700;color:#090c09;font-size:14px}.adlsGwa{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:600;color:#35383fdb;font-size:11px;margin-top:2px}.adlsGradeRange{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:500;color:#35383fa3;font-size:10px;margin-top:2px}.adlsAvg{text-align:right;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:700;color:var(--dp-accentA)}.adlsPill{height:26px;display:inline-flex;align-items:center;padding:0 10px;border-radius:999px;border:1px solid rgba(124,58,237,.22);font-size:11.5px;font-weight:var(--ui-w-semibold);background:#7c3aed1a;color:#7c3aedeb}.adlsPill1st{background:#3b82f61a;border-color:#3b82f638;color:#3b82f6eb}.adlsPill2nd{background:#f59e0b1a;border-color:#f59e0b38;color:#f59e0beb}.adlsPillNone{background:#6b72801a;border-color:#6b728038;color:#6b7280eb}.adlsPillPartial{background:#d8a9571a;border-color:#d8a75138;color:#ecb961eb}.adlsPillQualified{background:#4eb67446;border-color:#35c52238;color:#15291deb}.adlsPillNotQualified{background:#e975751a;border-color:#ef444459;color:#180b0beb}.adlsFooter{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 6px 2px;flex-wrap:wrap}.adlsCount{font-size:12px;color:var(--dp-muted)}.adlsCourseHeader{background:linear-gradient(180deg,#f5f7fbf5,#f5f7fbdb)}.adlsCourseHeader td{padding:10px;border-bottom:1px solid var(--dp-border)}.adlsCourseHeaderCell{font-size:12.5px;font-weight:var(--ui-w-semibold);color:#0f172aeb;text-transform:uppercase;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px}.adlsGpaRange{font-size:11px;font-weight:var(--ui-w-medium);color:var(--dp-accentA);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}@media(max-width:768px){.adlsWrap{padding:14px;border-radius:16px}.adlsTitle{font-size:16px}.adlsSub{font-size:11px}.adlsTableWrap{border-radius:12px}.adlsTable thead th,.adlsTable tbody td{padding:8px;font-size:11px}.adlsName{font-size:13px}.adlsMeta{font-size:10px}.adlsPill{font-size:10px;padding:0 8px;height:22px}}*{box-sizing:border-box}.spyWrap,.spyWrap *{font-family:var(--ui-font)}.spyWrap{padding:18px 18px 26px;min-height:100vh;color:var(--ui-text);background:radial-gradient(1200px 420px at 20% 0%,rgba(37,99,235,.1),transparent 55%),radial-gradient(900px 420px at 90% 10%,rgba(124,58,237,.1),transparent 55%),var(--ui-bg)}.spyHeader{position:sticky;top:0;z-index:60;margin:0 0 14px;padding:18px;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;border-radius:var(--ui-r-xl);border:1px solid rgba(255,255,255,.12);background:linear-gradient(135deg,var(--ui-blueA) 0%,var(--ui-blueB) 55%,var(--ui-purple) 115%);box-shadow:0 14px 28px #0f172a29}.spyHeaderLeft{min-width:280px}.spyHeaderActions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.spyTitle{font-size:var(--ui-title);line-height:1.15;letter-spacing:-.02em;color:#fff;font-weight:var(--ui-w-bold)}.spySub{margin-top:6px;font-size:12.5px;line-height:1.45;color:#ffffffdb;font-weight:var(--ui-w-medium)}.spySub b{color:#fffffff5;font-weight:var(--ui-w-semibold)}.spyHeaderBtn{height:40px;padding:0 14px;border-radius:var(--ui-r-sm);border:1px solid rgba(255,255,255,.18);background:#ffffff1f;color:#fff;font-size:12.5px;font-weight:var(--ui-w-semibold);cursor:pointer;box-shadow:0 10px 24px #02061724;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:transform .12s ease,filter .12s ease,background .12s ease,box-shadow .12s ease}.spyHeaderBtn:hover{transform:translateY(-1px);filter:brightness(1.06);background:#ffffff29}.spyHeaderBtn:active{transform:translateY(0)}.spyGrid{display:grid;grid-template-columns:1fr 340px;gap:14px;align-items:start}.spyMainCard{background:var(--ui-card);border:1px solid var(--ui-border);border-radius:var(--ui-r-xl);box-shadow:var(--ui-shadow-md);overflow:hidden;height:calc(100vh - 170px);display:flex;flex-direction:column}.spyMainTop{padding:14px;border-bottom:1px solid var(--ui-border2);background:linear-gradient(180deg,rgba(37,99,235,.08),transparent 70%)}.spyMainTopRow{display:flex;align-items:center}.spyMainTopTitle{font-size:13px;font-weight:var(--ui-w-semibold);color:#0f172adb}.spyBackBtn{background:none;border:none;color:#2563eb;font-size:13px;font-weight:var(--ui-w-semibold);cursor:pointer;padding:4px 8px;border-radius:6px;transition:background .2s}.spyBackBtn:hover{background:#2563eb1a}.spyHelpWrap{position:relative;margin-left:auto}.spyHelpBtn{width:24px;height:24px;border-radius:50%;border:1px solid rgba(2,6,23,.15);background:#fffc;color:#0f172a99;font-size:12px;font-weight:var(--ui-w-bold);cursor:pointer;transition:all .2s}.spyHelpBtn:hover{background:#2563eb1a;border-color:#2563eb66;color:#2563eb}.spyHelpTooltip{position:absolute;top:100%;right:0;margin-top:8px;padding:12px 14px;background:#fff;border:1px solid rgba(2,6,23,.12);border-radius:8px;box-shadow:0 10px 24px #02061726;z-index:100;min-width:200px}.spyHelpTitle{font-size:13px;font-weight:var(--ui-w-semibold);color:#0f172aeb;margin-bottom:6px}.spyHelpContent{font-size:12px;font-weight:var(--ui-w-medium);color:#0f172ab3;line-height:1.5}.spyFilters{display:flex;gap:8px;margin:10px 0}.spyFilterSelect{padding:6px 10px;border:1px solid rgba(2,6,23,.12);border-radius:8px;background:#fff;font-size:12px;font-weight:var(--ui-w-medium);color:#0f172adb;cursor:pointer;min-width:110px;transition:border-color .2s}.spyFilterSelect:hover{border-color:#2563eb66}.spyFilterSelect:focus{outline:none;border-color:#2563eb}.spyPills{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px}.spyPill{font-size:12px;font-weight:var(--ui-w-semibold);color:#0f172ab8;background:#02061708;border:1px solid rgba(2,6,23,.07);padding:6px 10px;border-radius:999px}.spyPill b{font-weight:var(--ui-w-bold);color:#0f172aeb}.spyNote{margin-top:10px;font-size:12px;font-weight:var(--ui-w-medium);color:#0f172a99}.spyNoteInfo{color:#1d4ed8f2}.spyNoteSuccess{color:#15803df2}.spyScroll{overflow:auto;flex:1;padding-bottom:4px}.spyScroll::-webkit-scrollbar,.spyNav::-webkit-scrollbar{width:10px}.spyScroll::-webkit-scrollbar-thumb,.spyNav::-webkit-scrollbar-thumb{background:#0f172a1f;border-radius:999px;border:3px solid rgba(255,255,255,.85)}.spyScroll::-webkit-scrollbar-track,.spyNav::-webkit-scrollbar-track{background:transparent}.spyEmpty,.spyUploadCard{padding:14px}.spyUploadTitle{font-size:14px;font-weight:var(--ui-w-semibold);color:#0f172ae0;margin-bottom:10px}.spyDropZone{border-radius:16px;border:2px dashed rgba(148,163,184,.55);background:#fffffff5;padding:18px 14px;text-align:center;cursor:pointer;display:grid;place-items:center;gap:8px;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease,background .12s ease}.spyDropZone:hover{transform:translateY(-1px);border-color:#2563eb6b;box-shadow:0 12px 22px #02061714;background:#2563eb08}.spyDropZone.isDragOver{border-color:#2563eb9e;background:#2563eb0f;box-shadow:0 18px 34px #2563eb24;transform:translateY(-1px)}.spyCloudIcon{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;font-size:18px;background:#2563eb1a;border:1px solid rgba(37,99,235,.18);color:#1d4ed8fa;font-weight:var(--ui-w-bold)}.spyDropMain{font-size:13px;font-weight:var(--ui-w-semibold);color:#0f172adb}.spyDropSub2{font-size:12px;font-weight:var(--ui-w-medium);color:#64748bdb}.spyBrowseBtn{height:28px;padding:0 10px;margin-left:6px;border-radius:10px;border:1px solid rgba(37,99,235,.22);background:#2563eb1f;color:#1d4ed8fa;font-weight:var(--ui-w-semibold);font-size:12px;cursor:pointer;transition:transform .12s ease,filter .12s ease,box-shadow .12s ease}.spyBrowseBtn:hover{transform:translateY(-1px);filter:brightness(1.02);box-shadow:0 10px 18px #0206170f}.spyDropHint{margin-top:4px;font-size:11.5px;font-weight:var(--ui-w-medium);color:#64748bdb;line-height:1.35}.spyDropHint b{font-weight:var(--ui-w-semibold);color:#0f172ae0}.spyReqMini{margin-top:12px;border-radius:16px;background:#fffffff5;border:1px solid var(--ui-border);padding:12px;box-shadow:0 10px 18px #0206170d}.spyReqTitle{font-size:11px;letter-spacing:.1em;text-transform:uppercase;font-weight:var(--ui-w-semibold);color:#0f172a8c}.spyReqChips{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px}.spyChip{font-size:12px;font-weight:var(--ui-w-semibold);color:#0f172ab8;background:#02061708;border:1px solid rgba(2,6,23,.07);border-radius:999px;padding:6px 10px}.spyReqHint{margin-top:10px;font-size:12px;font-weight:var(--ui-w-medium);color:#0f172a99;line-height:1.45}.spyReqHint b{font-weight:var(--ui-w-semibold);color:#0f172adb}.spyGroups{padding:14px 14px 18px}.spyGroup{margin-bottom:12px;border-radius:var(--ui-r-xl);border:1px solid var(--ui-border);background:#fffffff5;box-shadow:var(--ui-shadow-sm);overflow:hidden}.spyGroupHeader{padding:12px 14px;background:linear-gradient(180deg,#94a3b81a,#94a3b80a);border-bottom:1px solid var(--ui-border2);display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.spyGroupLeft{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.spyGroupTitle{font-weight:var(--ui-w-semibold);font-size:14px;letter-spacing:-.01em;color:#0f172aeb}.spyGroupCount{font-size:12px;font-weight:var(--ui-w-semibold);color:#1d4ed8fa;padding:6px 10px;border-radius:999px;background:#2563eb1f;border:1px solid rgba(37,99,235,.18)}.spyGroupActions{display:flex;gap:8px;align-items:center}.spyBtn{height:36px;padding:0 12px;border-radius:var(--ui-r-sm);border:1px solid rgba(148,163,184,.26);background:#fffffff2;color:#0f172ac2;font-weight:var(--ui-w-semibold);font-size:12.5px;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,filter .12s ease}.spyBtn:hover{transform:translateY(-1px);box-shadow:0 10px 18px #0206170f;filter:brightness(1.02)}.spyBtnPrimary{border-color:#2563eb38;background:#2563eb1f;color:#1d4ed8fa}.spyBtnDanger{border-color:#ef444433;background:#ef44441a;color:#b91c1cfa}.spyTable{border-top:1px solid var(--ui-border2);background:#fffffffa}.spyThead,.spyTr{display:grid;gap:10px;align-items:center}.spyThead5,.spyTr5{grid-template-columns:170px 1fr 70px 130px 120px}.spyThead{padding:10px 14px;font-size:11px;font-weight:var(--ui-w-semibold);letter-spacing:.35px;text-transform:uppercase;color:#475569f2;background:#94a3b81a;border-bottom:1px solid var(--ui-border2)}.spyTr{padding:10px 14px;font-size:13px;font-weight:var(--ui-w-medium);color:#0f172ac7;border-bottom:1px solid rgba(148,163,184,.14);background:#fffffffa;transition:background .12s ease}.spyTr:hover{background:#2563eb0d}.spyTr:last-child{border-bottom:none}.spyEmptyRows{padding:12px 14px;font-size:12px;font-weight:var(--ui-w-medium);color:#64748bc7;background:#02061705}.spyPagination{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px 4px;flex-wrap:wrap}.spyPaginationMeta,.spyPageLabel{font-size:12px;font-weight:var(--ui-w-semibold);color:#0f172aad}.spyPaginationActions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.spyPageBtn{height:34px;padding:0 12px;border-radius:10px;border:1px solid rgba(148,163,184,.26);background:#fffffff5;color:#0f172ac7;font-size:12px;font-weight:var(--ui-w-semibold);cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,filter .12s ease}.spyPageBtn:hover{transform:translateY(-1px);box-shadow:0 10px 18px #0206170f;filter:brightness(1.02)}.spyPageBtn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12.5px;font-weight:var(--ui-w-semibold);color:#0f172ae0}.strong{font-weight:var(--ui-w-semibold);color:#0f172aeb}.right{text-align:right}.spyBadge{display:inline-flex;justify-content:center;padding:6px 10px;border-radius:999px;background:#2563eb1f;border:1px solid rgba(37,99,235,.18);color:#1d4ed8fa;font-weight:var(--ui-w-semibold);font-size:12px}.spyRowActions{display:inline-flex;justify-content:flex-end;gap:8px}.spyIconBtn{height:34px;width:40px;border-radius:var(--ui-r-sm);border:1px solid rgba(148,163,184,.26);background:#fffffff5;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,filter .12s ease}.spyIconBtn:hover{transform:translateY(-1px);box-shadow:0 10px 18px #0206170f;filter:brightness(1.02)}.spyGap{height:12px}.spySide{display:grid;gap:14px}.spySideCard{position:sticky;top:90px;background:var(--ui-card);border:1px solid var(--ui-border);border-radius:var(--ui-r-xl);box-shadow:var(--ui-shadow-md);padding:14px;overflow:hidden}.spySideCard:before{content:"";display:block;height:56px;margin:-14px -14px 12px;background:linear-gradient(135deg,var(--ui-blueA) 0%,var(--ui-blueB) 55%,var(--ui-purple) 115%);border-bottom:1px solid rgba(255,255,255,.18)}.spySideTitle{margin-top:-46px;padding:10px 12px;width:fit-content;color:#fff;font-size:13px;font-weight:var(--ui-w-semibold);border-radius:var(--ui-r-sm);background:#ffffff1f;border:1px solid rgba(255,255,255,.18);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.spySideSub{margin-top:10px;font-size:12px;font-weight:var(--ui-w-medium);color:#0f172a99;line-height:1.45}.spySearchBar{margin-top:12px;display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}.spySearchInputWrap{position:relative;display:flex;align-items:center}.spySearchIconMini{position:absolute;left:10px;font-size:13px;opacity:.55;pointer-events:none}.spySearchInput{width:100%;height:38px;border-radius:14px;border:1px solid rgba(148,163,184,.3);background:#fffffffa;padding:0 34px 0 30px;font-size:12.5px;font-weight:var(--ui-w-semibold);color:#0f172ae0;outline:none;transition:box-shadow .12s ease,border-color .12s ease}.spySearchInput:focus{border-color:#2563eb66;box-shadow:0 0 0 4px #2563eb1f}.spySearchClear{position:absolute;right:7px;height:26px;width:26px;border-radius:10px;border:1px solid rgba(148,163,184,.26);background:#fffffffa;cursor:pointer;font-size:12px;opacity:.8;transition:opacity .12s ease,transform .12s ease}.spySearchClear:hover{opacity:1;transform:translateY(-1px)}.spySearchBtn{height:38px;padding:0 12px;border-radius:14px;border:1px solid rgba(37,99,235,.22);background:#2563eb1f;color:#1d4ed8fa;font-weight:var(--ui-w-semibold);font-size:12.5px;cursor:pointer;transition:transform .12s ease,filter .12s ease,box-shadow .12s ease}.spySearchBtn:hover{transform:translateY(-1px);filter:brightness(1.02);box-shadow:0 10px 18px #0206170f}.spySearchBtn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}.spyNav{margin-top:12px;max-height:340px;overflow:auto;padding-right:4px;display:grid;gap:8px}.spyNavItem{width:100%;text-align:left;padding:10px 12px;border-radius:16px;border:1px solid rgba(148,163,184,.22);background:#fffffffa;font-weight:var(--ui-w-semibold);font-size:13px;color:#0f172abd;cursor:pointer;transition:transform .12s ease,background .12s ease,border-color .12s ease,box-shadow .12s ease;display:flex;align-items:center;gap:10px}.spyNavItem:hover{transform:translateY(-1px);background:#02061705;border-color:#94a3b84d;box-shadow:0 10px 18px #0206170f}.spyNavItem:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}.spyNavItem.active{background:linear-gradient(135deg,var(--ui-blueA) 0%,var(--ui-blueB) 55%,var(--ui-purple) 115%);border-color:#ffffff1f;color:#fff;box-shadow:0 16px 34px #2563eb38}.spyDot{width:9px;height:9px;border-radius:999px;background:#0f172a38;flex:0 0 auto}.spyNavItem.active .spyDot{background:#ffffffeb}.spyNavText{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spyCount{font-size:12px;font-weight:var(--ui-w-semibold);opacity:.92}.spyNavItem.filtered{opacity:.5}.spyNavItemWrap{display:flex;flex-direction:column;gap:4px;padding:4px 0}.spyNavYearSelect{padding:4px 8px;border:1px solid rgba(2,6,23,.1);border-radius:6px;background:#fff;font-size:11px;font-weight:var(--ui-w-medium);color:#0f172ab8;cursor:pointer;width:100%;transition:border-color .2s}.spyNavYearSelect:hover{border-color:#2563eb66}.spyNavYearSelect:focus{outline:none;border-color:#2563eb}.spyDivider{margin:14px 0;height:1px;background:#94a3b82e}.spyHistHead{display:flex;align-items:baseline;justify-content:space-between}.spyHistTitle{font-size:12px;font-weight:var(--ui-w-semibold);color:#0f172ac7}.spyHistSub{font-size:12px;font-weight:var(--ui-w-medium);color:#0f172a8c}.spyHistory{margin-top:10px;display:grid;gap:10px}.spyHistEmpty{font-size:12px;font-weight:var(--ui-w-medium);color:#0f172a8c;padding:10px 0}.spyHistItem{border:1px solid rgba(148,163,184,.22);background:#02061705;border-radius:16px;padding:10px 12px}.spyHistTop{display:flex;justify-content:space-between;align-items:center;gap:8px}.spyHistName{font-weight:var(--ui-w-semibold);font-size:12px;color:#0f172ad1}.spyHistTag{font-size:11px;font-weight:var(--ui-w-semibold);color:#1d4ed8fa;background:#2563eb1f;border:1px solid rgba(37,99,235,.18);padding:4px 8px;border-radius:999px}.spyHistFile{margin-top:6px;font-size:12px;font-weight:var(--ui-w-medium);color:#0f172ab8;word-break:break-word}.spyHistMeta{margin-top:4px;font-size:12px;font-weight:var(--ui-w-regular);color:#0f172a8c}.spyModalOverlay{position:fixed;inset:0;background:#0206178c;display:grid;place-items:center;z-index:999;padding:16px}.spyModal{width:min(520px,100%);border-radius:20px;background:#fffffff5;border:1px solid var(--ui-border);box-shadow:0 30px 80px #0206173d;padding:16px;overflow:hidden}.spyModalTitle{font-size:16px;font-weight:var(--ui-w-bold);color:#0f172aeb;letter-spacing:-.01em}.spyModalSub{margin-top:6px;font-size:13px;font-weight:var(--ui-w-medium);color:#0f172a9e;line-height:1.45}.spyForm{margin-top:14px;display:grid;gap:10px}.spyField span{display:block;font-size:12px;font-weight:var(--ui-w-semibold);color:#0f172ab8;margin-bottom:6px}.spyField input{width:100%;height:42px;border-radius:14px;border:1px solid rgba(148,163,184,.3);background:#fffffffa;padding:0 12px;font-size:13px;font-weight:var(--ui-w-medium);outline:none;transition:box-shadow .12s ease,border-color .12s ease}.spyField input:focus{border-color:#2563eb66;box-shadow:0 0 0 4px #2563eb1f}.spyModalActions{margin-top:14px;display:flex;justify-content:flex-end;gap:10px}@media(max-width:980px){.spyGrid{grid-template-columns:1fr}.spySideCard{position:static}.spyMainCard{height:auto}.spyHeader{position:static;flex-direction:column;align-items:flex-start}.spyHeaderBtn{width:100%}}@media(max-width:768px){.spyWrap{padding:12px 12px 20px}.spyHeader{margin:0 0 12px;padding:16px;border-radius:20px;flex-direction:column;gap:12px;box-shadow:0 12px 32px #0f172a2e}.spyHeaderLeft{min-width:100%;text-align:center}.spyTitle{font-size:22px;letter-spacing:-.03em}.spySub{font-size:12px;text-align:center}.spyHeaderActions{width:100%;justify-content:center;flex-wrap:wrap}.spyHeaderBtn{height:44px;padding:0 16px;font-size:13px;border-radius:14px;font-weight:700;box-shadow:0 6px 20px #0206171f}.spyGrid{gap:12px}.spyMainCard{border-radius:20px;box-shadow:0 8px 28px #0f172a1a}.spyMainTop{padding:12px;border-radius:20px 20px 0 0}.spyMainTopRow{flex-wrap:wrap;gap:8px}.spyMainTopTitle{font-size:12px}.spyBackBtn{font-size:12px;padding:6px 10px;border-radius:8px}.spyHelpBtn{width:28px;height:28px;font-size:14px}.spyHelpTooltip{min-width:180px;padding:10px 12px;border-radius:12px}.spyHelpTitle{font-size:12px}.spyHelpContent{font-size:11px}.spyFilters{flex-direction:column;gap:8px}.spyFilterSelect{width:100%;height:40px;padding:0 12px;border-radius:12px;font-size:12px}.spyPills{gap:6px}.spyPill{font-size:11px;padding:5px 8px}.spyNote{font-size:11px}.spyEmpty,.spyUploadCard{padding:12px}.spyUploadTitle{font-size:13px;margin-bottom:8px}.spyDropZone{padding:20px 12px;border-radius:14px;gap:10px}.spyCloudIcon{width:48px;height:48px;border-radius:16px;font-size:20px}.spyDropMain{font-size:12px}.spyDropSub2{font-size:11px}.spyBrowseBtn{height:32px;padding:0 12px;font-size:11px;border-radius:10px}.spyDropHint{font-size:11px}.spyReqMini{margin-top:10px;padding:10px;border-radius:14px}.spyReqTitle{font-size:10px}.spyReqChips{margin-top:8px;gap:6px}.spyChip{font-size:11px;padding:5px 8px}.spyReqHint{font-size:11px;margin-top:8px}.spyGroups{padding:12px}.spyGroup{margin-bottom:10px;border-radius:16px}.spyGroupHeader{padding:10px 12px;flex-direction:column;align-items:flex-start;gap:8px}.spyGroupLeft{flex-direction:column;align-items:flex-start;gap:6px}.spyGroupTitle{font-size:13px}.spyGroupCount{font-size:11px;padding:4px 8px}.spyGroupActions{width:100%;justify-content:flex-start}.spyBtn{height:38px;padding:0 14px;font-size:12px;border-radius:12px}.spyTable{border-radius:0 0 16px 16px}.spyThead{display:none}.spyTr{display:flex;flex-direction:column;gap:6px;padding:12px;border-radius:12px;margin-bottom:8px;background:#fffffffa;border:1px solid rgba(148,163,184,.14);box-shadow:0 2px 8px #0206170a}.spyTr:hover{background:#2563eb08;transform:translateY(-1px);box-shadow:0 4px 12px #0206170f}.spyTr5{grid-template-columns:1fr}.spyTr>*{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border-bottom:1px solid rgba(148,163,184,.08)}.spyTr>*:last-child{border-bottom:none}.spyTr>*:before{content:attr(data-label);font-size:10px;font-weight:700;color:#475569cc;text-transform:uppercase;letter-spacing:.5px}.spyEmptyRows{padding:16px;font-size:11px;text-align:center;border-radius:12px}.spyPagination{padding:10px 12px 2px;flex-direction:column;align-items:stretch}.spyPaginationActions{justify-content:space-between}.spyPageBtn{min-width:88px;height:36px}.mono{font-size:11px}.spyBadge{font-size:11px;padding:4px 8px}.spyRowActions{justify-content:flex-start;gap:6px}.spyIconBtn{height:36px;width:44px;border-radius:10px}.spyGap{height:8px}.spySide{gap:12px}.spySideCard{border-radius:20px;padding:12px;box-shadow:0 8px 28px #0f172a1a}.spySideCard:before{height:48px;margin:-12px -12px 10px;border-radius:20px 20px 0 0}.spySideTitle{margin-top:-40px;padding:8px 10px;font-size:12px;border-radius:10px}.spySideSub{font-size:11px;margin-top:8px}.spySearchBar{margin-top:10px;grid-template-columns:1fr;gap:8px}.spySearchInput{height:42px;padding:0 36px 0 32px;font-size:12px;border-radius:12px}.spySearchIconMini{font-size:14px;left:10px}.spySearchClear{right:8px;height:28px;width:28px;border-radius:8px}.spySearchBtn{height:42px;padding:0 14px;font-size:12px;border-radius:12px}.spyNav{margin-top:10px;max-height:280px;gap:6px}.spyNavItem{padding:10px 12px;border-radius:14px;font-size:12px;gap:8px}.spyDot{width:8px;height:8px}.spyCount{font-size:11px}.spyNavYearSelect{padding:6px 10px;font-size:11px;border-radius:8px}.spyDivider{margin:12px 0}.spyHistHead{flex-direction:column;gap:4px}.spyHistTitle,.spyHistSub{font-size:11px}.spyHistory{margin-top:8px;gap:8px}.spyHistEmpty{font-size:11px;padding:8px 0}.spyHistItem{border-radius:14px;padding:10px}.spyHistTop{flex-direction:column;align-items:flex-start;gap:6px}.spyHistName{font-size:11px}.spyHistTag{font-size:10px;padding:3px 6px}.spyHistFile{font-size:11px;margin-top:4px}.spyHistMeta{font-size:11px;margin-top:2px}.spyModalOverlay{padding:0;align-items:flex-end}.spyModal{width:100%;border-radius:24px 24px 0 0;padding:20px 16px;box-shadow:0 -10px 40px #02061733}.spyModalTitle{font-size:18px;letter-spacing:-.02em}.spyModalSub{font-size:12px;margin-top:8px}.spyForm{margin-top:16px;gap:12px}.spyField span{font-size:11px;margin-bottom:8px}.spyField input{height:46px;padding:0 14px;font-size:13px;border-radius:12px}.spyModalActions{margin-top:16px;flex-direction:column;gap:10px}.spyModalActions button{width:100%;height:44px;font-size:13px;border-radius:12px}}@media(max-width:375px){.spyWrap{padding:10px 10px 16px}.spyHeader{padding:14px;border-radius:18px;margin:0 0 10px}.spyTitle{font-size:20px}.spySub{font-size:11px}.spyHeaderBtn{height:40px;padding:0 14px;font-size:12px;border-radius:12px}.spyMainCard{border-radius:18px}.spyMainTop{padding:10px;border-radius:18px 18px 0 0}.spyMainTopTitle{font-size:11px}.spyBackBtn{font-size:11px;padding:5px 8px}.spyHelpBtn{width:26px;height:26px;font-size:13px}.spyFilterSelect{height:38px;font-size:11px}.spyPill{font-size:10px;padding:4px 7px}.spyNote{font-size:10px}.spyUploadTitle{font-size:12px}.spyDropZone{padding:16px 10px;border-radius:12px}.spyCloudIcon{width:44px;height:44px;border-radius:14px;font-size:18px}.spyDropMain{font-size:11px}.spyDropSub2{font-size:10px}.spyBrowseBtn{height:30px;padding:0 10px;font-size:10px}.spyDropHint{font-size:10px}.spyReqMini{padding:8px;border-radius:12px}.spyReqTitle{font-size:9px}.spyChip{font-size:10px;padding:4px 7px}.spyReqHint{font-size:10px}.spyGroups{padding:10px}.spyGroup{margin-bottom:8px;border-radius:14px}.spyGroupHeader{padding:8px 10px}.spyGroupTitle{font-size:12px}.spyGroupCount{font-size:10px;padding:3px 6px}.spyBtn{height:36px;padding:0 12px;font-size:11px;border-radius:10px}.spyTr{padding:10px;border-radius:10px;margin-bottom:6px}.spyEmptyRows{padding:12px;font-size:10px}.mono{font-size:10px}.spyBadge{font-size:10px;padding:3px 6px}.spyIconBtn{height:34px;width:40px;border-radius:8px}.spySideCard{border-radius:18px;padding:10px}.spySideCard:before{height:44px;margin:-10px -10px 8px;border-radius:18px 18px 0 0}.spySideTitle{margin-top:-36px;padding:6px 8px;font-size:11px;border-radius:8px}.spySideSub{font-size:10px;margin-top:6px}.spySearchInput,.spySearchBtn{height:40px;font-size:11px;border-radius:10px}.spyNavItem{padding:8px 10px;border-radius:12px;font-size:11px}.spyNavYearSelect{padding:5px 8px;font-size:10px}.spyHistItem{border-radius:12px;padding:8px}.spyHistName{font-size:10px}.spyHistTag{font-size:9px;padding:2px 5px}.spyHistFile,.spyHistMeta{font-size:10px}.spyModal{padding:16px 12px;border-radius:20px 20px 0 0}.spyModalTitle{font-size:16px}.spyModalSub{font-size:11px}.spyField input{height:42px;font-size:12px;border-radius:10px}.spyModalActions button{height:40px;font-size:12px;border-radius:10px}}:root{--bg: #f5f7fb;--card: #ffffff;--text: #0f172a;--sub: #64748b;--border: rgba(148, 163, 184, .16);--border2: rgba(148, 163, 184, .11);--shadow-sm: 0 8px 18px rgba(2, 6, 23, .06);--shadow-md: 0 18px 40px rgba(2, 6, 23, .1);--blue: #2563eb;--purple: #7c3aed;--green: #10b981;--red: #ef4444;--r-lg: 18px;--r-md: 14px;--r-sm: 12px;--font: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif}.spxWrap,.spxWrap *{box-sizing:border-box;font-family:var(--font)}.spxWrap{width:100%;padding:14px;color:var(--text)}.spxGrid{display:grid;grid-template-columns:360px 1fr;gap:14px}.spxAside{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden;display:flex;flex-direction:column;max-height:calc(100vh - 170px)}.spxAsideHead{padding:14px;border-bottom:1px solid var(--border2);background:linear-gradient(180deg,#f8fafceb,#fff)}.spxAsideTitle{font-size:18px;font-weight:620;letter-spacing:-.25px;color:#3b3bf5}.spxAsideSub{margin-top:4px;font-size:12px;font-weight:450;color:var(--sub)}.spxAsideBody{padding:12px;overflow:auto}.spxSearch{margin-top:12px;position:relative}.spxSearch.sm{margin-top:0;min-width:260px}.spxSearch input{width:100%;height:40px;border-radius:12px;border:1px solid rgba(148,163,184,.2);background:#f8fafcf5;padding:0 38px 0 34px;outline:none;font-size:12px;font-weight:500;color:var(--text)}.spxSearch input:focus{border-color:#2563eb59;box-shadow:0 0 0 4px #2563eb1a}.spxSearchIcon{position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:13px;opacity:.85}.spxClear{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:28px;height:28px;border-radius:10px;border:1px solid rgba(148,163,184,.18);background:#fff;cursor:pointer;font-weight:650;color:#334155}.spxYearFilter{margin-top:10px}.spxYearSelect{width:100%;height:40px;padding:0 12px;border-radius:12px;border:1px solid rgba(148,163,184,.2);background:#f8fafcf5;font-size:12px;font-weight:500;color:var(--text);cursor:pointer;outline:none}.spxYearSelect:hover{border-color:#2563eb59}.spxYearSelect:focus{border-color:#2563eb59;box-shadow:0 0 0 4px #2563eb1a}.spxCourseList{display:flex;flex-direction:column;gap:10px}.spxCourseItem{border-radius:16px;border:1px solid var(--border);background:#fff;overflow:hidden;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}.spxCourseItem:hover{transform:translateY(-1px);border-color:#6366f142;box-shadow:0 12px 16px #0206170f}.spxCourseBtn{width:100%;border:0;background:transparent;cursor:pointer;text-align:left;padding:10px 12px;display:grid;grid-template-columns:40px 1fr 26px;gap:10px;align-items:center}.spxCourseBtn.active{background:#6366f112}.spxIcon{width:40px;height:40px;border-radius:14px;display:grid;place-items:center;color:#fff;font-weight:650;background:linear-gradient(135deg,var(--blue),var(--purple))}.spxCourseMid{min-width:0}.spxCourseTop{display:flex;align-items:center;justify-content:space-between;gap:10px}.spxCourseCode{font-size:13px;font-weight:650;letter-spacing:-.15px}.spxChips{display:inline-flex;gap:8px;flex-wrap:nowrap}.spxChip{padding:5px 10px;border-radius:999px;font-size:11px;font-weight:550;background:#2563eb17;border:1px solid rgba(37,99,235,.14);color:#1d4ed8;white-space:nowrap}.spxChip.ghost{background:#94a3b81a;border-color:#94a3b829;color:#334155}.spxCourseName{margin-top:2px;font-size:11px;font-weight:450;color:var(--sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spxArrow{width:26px;height:26px;border-radius:10px;border:1px solid rgba(148,163,184,.16);background:#f8fafceb;display:grid;place-items:center;color:#64748bd9;font-weight:650}.spxPanel{overflow:hidden;max-height:0;transition:max-height .22s ease}.spxPanelInner{padding:0}.spxCoursePanel{border-top:1px solid var(--border2);background:#f8fafc8c;padding:10px 12px 12px}.spxYearsRow{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.spxYearPill{height:32px;padding:0 12px;border-radius:999px;border:1px solid rgba(148,163,184,.18);background:#fff;cursor:pointer;font-size:12px;font-weight:600;color:#334155;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.spxYearPill:hover{transform:translateY(-1px);box-shadow:0 10px 14px #0206170f;border-color:#6366f147}.spxYearPill.active{background:#6366f11a;border-color:#6366f14d}.spxSubjectsBlock{padding-top:10px;border-top:1px solid rgba(148,163,184,.1)}.spxSubjects{display:flex;flex-direction:column;gap:10px}.spxSubject{width:100%;border-radius:14px;border:1px solid rgba(148,163,184,.16);background:#fff;padding:10px;cursor:pointer;text-align:left;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}.spxSubject:hover{transform:translateY(-1px);box-shadow:0 12px 16px #0206170d;border-color:#6366f142}.spxSubject.active{background:#6366f11a;border-color:#6366f14d}.spxSubjectTop{display:flex;align-items:center;justify-content:space-between;gap:10px}.spxSubjectCode{font-size:12px;font-weight:650}.spxTag{padding:5px 10px;border-radius:999px;font-size:11px;font-weight:550;border:1px solid rgba(148,163,184,.16);background:#94a3b81a;color:#334155;white-space:nowrap}.spxTag.lecture{background:#10b9811a;border-color:#10b98129;color:#047857}.spxTag.lab{background:#7c3aed1a;border-color:#7c3aed29;color:#6d28d9}.spxSubjectName{margin-top:6px;font-size:12px;font-weight:550}.spxSubjectProf{margin-top:4px;font-size:11px;font-weight:450;color:var(--sub)}.spxEmptyMini{padding:12px;border-radius:14px;border:1px dashed rgba(148,163,184,.34);background:#f8fafcf2}.spxEmptyMiniT{font-size:12px;font-weight:600}.spxEmptyMiniS{margin-top:4px;font-size:12px;font-weight:450;color:var(--sub)}.spxMain{min-height:680px}.spxEmpty{height:680px;display:grid;place-items:center}.spxEmptyCard{width:min(560px,92%);border-radius:18px;background:#fff;border:1px solid rgba(148,163,184,.18);box-shadow:var(--shadow-md);padding:26px 22px;text-align:center}.spxEmptyIcon{font-size:34px}.spxEmptyTitle{margin-top:8px;font-size:22px;font-weight:650;color:#3b3bf5}.spxEmptySub{margin-top:8px;font-size:12px;font-weight:450;color:var(--sub)}.spxEmptyTip{margin-top:14px;padding:10px 12px;border-radius:12px;background:#6366f114;border:1px solid rgba(99,102,241,.18);font-size:12px;font-weight:550;color:#3b3bf5}.spxCard{background:#fff;border-radius:var(--r-lg);border:1px solid var(--border);box-shadow:var(--shadow-sm);padding:14px}.spxHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.spxTitle{font-size:20px;font-weight:650;letter-spacing:-.25px}.spxMeta{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}.spxPill{padding:6px 10px;border-radius:999px;font-size:12px;font-weight:550;background:#2563eb1a;border:1px solid rgba(37,99,235,.14);color:#1d4ed8}.spxPill.purple{background:#7c3aed1a;border-color:#7c3aed24;color:#6d28d9}.spxPill.lec{background:#10b9811a;border-color:#10b98124;color:#047857}.spxPill.lab{background:#7c3aed1a;border-color:#7c3aed24;color:#6d28d9}.spxPill.muted{background:#94a3b81f;border-color:#94a3b829;color:#334155}.spxTabs{display:flex;gap:6px;padding:6px;border-radius:14px;border:1px solid rgba(148,163,184,.16);background:#f8fafcf2}.spxTab{height:36px;padding:0 14px;border-radius:12px;border:0;background:transparent;cursor:pointer;font-weight:600;font-size:12px;color:#64748bf2;transition:transform .14s ease,background .14s ease,box-shadow .14s ease}.spxTab:hover{transform:translateY(-1px)}.spxTab.active{color:#fff;background:linear-gradient(135deg,var(--blue),var(--purple));box-shadow:0 12px 18px #7c3aed2e}.spxActions{margin-top:12px;padding-top:12px;border-top:1px solid var(--border2);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.spxBtn{height:40px;padding:0 14px;border-radius:12px;border:1px solid rgba(148,163,184,.18);background:#fff;cursor:pointer;font-weight:600;font-size:12px;transition:transform .14s ease,box-shadow .14s ease}.spxBtn:hover{transform:translateY(-1px);box-shadow:0 12px 18px #02061714}.spxBtn.primary{border:0;color:#fff;background:linear-gradient(135deg,var(--blue),var(--purple))}.spxTableWrap{margin-top:14px;border-radius:16px;border:1px solid rgba(148,163,184,.16);overflow:auto;position:relative}.spxAverageGWA{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:12px 16px;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:8px;margin-bottom:14px;color:#fff;font-weight:600}.spxAvgLabel{font-size:14px;opacity:.95}.spxAvgValue{font-size:20px;font-weight:700;background:#fff3;padding:4px 12px;border-radius:6px}.spxTable{width:100%;border-collapse:separate;border-spacing:0;min-width:980px}.spxTable thead th{background:#fff;position:sticky;top:0;z-index:1;font-size:11px;font-weight:650;letter-spacing:.35px;padding:12px 10px;border-bottom:1px solid rgba(148,163,184,.16);white-space:nowrap}.thExam{background:linear-gradient(180deg,#ef444417,#fff);color:#b91c1c;border-bottom:2px solid rgba(239,68,68,.58)!important}.thLab{background:linear-gradient(180deg,#7c3aed17,#fff);color:#6d28d9;border-bottom:2px solid rgba(124,58,237,.52)!important}.spxTable tbody td{padding:12px 10px;font-size:12px;font-weight:500;border-top:1px solid rgba(148,163,184,.1);background:#fff}.spxTable tbody tr:hover td{background:#6366f10d}.num{text-align:center;font-variant-numeric:tabular-nums}.name{font-weight:600}.spxNameBtn{border:0;background:transparent;padding:0;margin:0;font:inherit;font-weight:650;color:#1d4ed8;cursor:pointer;text-align:left}.spxNameBtn:hover{text-decoration:underline}.tdExam{background:#ef44440d}.tdLab{background:#7c3aed0d}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important;font-weight:600;color:#334155}.wNo{width:140px}.wName{width:240px}.spxTdEmpty{padding:0!important}.spxNoData{padding:46px 16px;text-align:center;color:#64748be6}.spxNoDataT{font-size:13px;font-weight:600;color:#334155}.spxNoDataS{margin-top:8px;font-size:12px;font-weight:450}.spxHint{margin-top:12px;padding:12px;border-radius:16px;background:#2563eb0f;border:1px solid rgba(37,99,235,.12);font-size:12px;font-weight:450;color:#334155;line-height:1.45}@media(max-width:1100px){.spxGrid{grid-template-columns:1fr}.spxAside{max-height:unset}.spxHeader{flex-direction:column;align-items:flex-start}.spxChips{display:none}}@media(max-width:768px){.spxWrap{padding:12px}.spxGrid{gap:12px}.spxAside{border-radius:20px;box-shadow:0 8px 32px #0206171f;border:1px solid rgba(148,163,184,.12)}.spxAsideHead{padding:16px;background:linear-gradient(135deg,#6366f114,#7c3aed0f,#fff)}.spxAsideTitle{font-size:20px;font-weight:800;letter-spacing:-.5px}.spxAsideSub{font-size:13px;margin-top:6px}.spxAsideBody{padding:14px}.spxSearch input{height:48px;border-radius:14px;font-size:14px;padding:0 44px 0 40px;border:2px solid rgba(148,163,184,.2);transition:all .2s ease}.spxSearch input:focus{border-color:var(--blue);box-shadow:0 0 0 4px #2563eb26;transform:translateY(-1px)}.spxSearchIcon{font-size:16px;left:12px}.spxClear{width:32px;height:32px;border-radius:10px;right:10px}.spxYearSelect{height:48px;border-radius:14px;font-size:14px;border:2px solid rgba(148,163,184,.2);transition:all .2s ease}.spxYearSelect:focus{border-color:var(--blue);box-shadow:0 0 0 4px #2563eb26;transform:translateY(-1px)}.spxCourseList{gap:12px}.spxCourseItem{border-radius:18px;box-shadow:0 4px 16px #02061714;border:1px solid rgba(148,163,184,.12);transition:all .2s ease}.spxCourseItem:active{transform:scale(.98);box-shadow:0 8px 24px #0206171f}.spxCourseBtn{padding:14px;gap:12px}.spxIcon{width:48px;height:48px;border-radius:16px;font-size:18px;box-shadow:0 4px 12px #2563eb40}.spxCourseCode{font-size:15px;font-weight:700}.spxChips{display:flex;flex-wrap:wrap;gap:6px}.spxChip{padding:6px 12px;font-size:12px;font-weight:600;border-radius:10px}.spxCourseName{font-size:12px;margin-top:4px}.spxArrow{width:32px;height:32px;border-radius:12px;font-size:14px}.spxCoursePanel{padding:14px;background:linear-gradient(180deg,#f8fafcfa,#6366f108)}.spxYearsRow{gap:10px;margin-bottom:14px}.spxYearPill{height:40px;padding:0 16px;border-radius:12px;font-size:13px;font-weight:700;border:2px solid rgba(148,163,184,.18);transition:all .2s ease}.spxYearPill:active{transform:scale(.96)}.spxYearPill.active{background:linear-gradient(135deg,var(--blue),var(--purple));border-color:transparent;color:#fff;box-shadow:0 4px 12px #6366f14d}.spxSubjects{gap:12px}.spxSubject{border-radius:16px;padding:14px;border:1px solid rgba(148,163,184,.12);box-shadow:0 2px 8px #0206170f;transition:all .2s ease}.spxSubject:active{transform:scale(.98);box-shadow:0 4px 12px #0206171a}.spxSubject.active{background:linear-gradient(135deg,#6366f11f,#7c3aed14);border-color:#6366f159;box-shadow:0 4px 16px #6366f133}.spxSubjectCode{font-size:13px;font-weight:700}.spxTag{padding:6px 12px;font-size:12px;font-weight:600;border-radius:10px}.spxSubjectName{font-size:13px;font-weight:600;margin-top:8px}.spxSubjectProf{font-size:12px;margin-top:6px}.spxEmptyMini{padding:16px;border-radius:16px;border:2px dashed rgba(148,163,184,.3);background:linear-gradient(135deg,#f8fafcfa,#6366f108)}.spxEmptyMiniT{font-size:14px;font-weight:700}.spxEmptyMiniS{font-size:13px;margin-top:6px}.spxMain{min-height:auto}.spxEmpty{height:auto;min-height:400px;padding:20px}.spxEmptyCard{width:100%;border-radius:20px;padding:30px 20px;box-shadow:0 12px 40px #0206171f}.spxEmptyIcon{font-size:48px}.spxEmptyTitle{font-size:24px;font-weight:800;margin-top:12px}.spxEmptySub{font-size:14px;margin-top:12px}.spxEmptyTip{margin-top:18px;padding:14px;border-radius:14px;font-size:13px}.spxCard{border-radius:20px;padding:16px;box-shadow:0 8px 32px #0206171a;border:1px solid rgba(148,163,184,.1)}.spxHeader{flex-direction:column;gap:14px}.spxTitle{font-size:22px;font-weight:800;letter-spacing:-.5px}.spxMeta{gap:10px;margin-top:12px}.spxPill{padding:8px 14px;font-size:13px;font-weight:600;border-radius:12px}.spxTabs{width:100%;padding:8px;border-radius:16px;gap:8px;background:linear-gradient(135deg,#f8fafcfa,#6366f108)}.spxTab{flex:1;height:44px;padding:0 16px;border-radius:14px;font-size:13px;font-weight:700}.spxTab.active{box-shadow:0 6px 20px #7c3aed40}.spxActions{flex-direction:column;gap:10px;margin-top:16px;padding-top:16px}.spxBtn{width:100%;height:48px;padding:0 20px;border-radius:14px;font-size:14px;font-weight:700;border:2px solid rgba(148,163,184,.18);transition:all .2s ease}.spxBtn:active{transform:scale(.98)}.spxBtn.primary{box-shadow:0 6px 20px #6366f14d}.spxTableWrap{margin-top:16px;border-radius:18px;border:1px solid rgba(148,163,184,.12);box-shadow:0 4px 16px #02061714;overflow:visible}.spxAverageGWA{flex-direction:column;gap:8px;padding:16px;border-radius:14px;margin-bottom:16px;text-align:center}.spxAvgLabel{font-size:13px}.spxAvgValue{font-size:24px;padding:8px 16px}.spxTable{display:block;min-width:0}.spxTable thead{display:none}.spxTable tbody{display:block}.spxTable tbody tr{display:block;margin-bottom:12px;padding:16px;border-radius:16px;background:#fff;border:1px solid rgba(148,163,184,.12);box-shadow:0 2px 8px #0206170f;transition:all .2s ease;text-align:center}.spxTable tbody tr:active{transform:scale(.98);box-shadow:0 4px 12px #0206171a}.spxTable tbody td{display:block;padding:8px 0;border-bottom:1px solid rgba(148,163,184,.1);font-size:14px;font-weight:500;background:transparent}.spxTable tbody td:last-child{border-bottom:none}.spxTable tbody td:before{content:attr(data-label);display:block;font-size:11px;font-weight:700;color:var(--sub);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.spxTable tbody td.num{text-align:left}.spxTable tbody td.name,.spxNameBtn{font-size:16px;font-weight:700}.tdExam,.tdLab{background:transparent}.mono{font-size:14px}.spxTdEmpty{padding:12px 0!important}.spxNoData{padding:40px 20px}.spxNoDataT{font-size:15px;font-weight:700}.spxNoDataS{font-size:13px;margin-top:10px}.spxHint{margin-top:16px;padding:16px;border-radius:18px;font-size:13px;line-height:1.5}.spxAsideFoot{padding:14px;font-size:12px;background:linear-gradient(180deg,#f8fafcfa,#6366f108)}.spxExportAllBtn{height:44px;padding:0 16px;border-radius:14px;font-size:13px;font-weight:700;box-shadow:0 6px 20px #7c3aed40}.spxActions.slim{flex-direction:row;justify-content:center;gap:10px;margin-top:16px;padding-top:16px}.spxInfoOverlay{padding:0;align-items:flex-end}.spxInfoModal{width:100%;max-height:85vh;border-radius:24px 24px 0 0;padding:20px 16px;box-shadow:0 -10px 40px #02061740}.spxInfoTop{margin-bottom:16px}.spxInfoTitle{font-size:20px;font-weight:800}.spxInfoClose{width:40px;height:40px;border-radius:12px;font-size:18px;font-weight:800}.spxInfoState{padding:16px;font-size:14px;border-radius:14px;line-height:1.5}.spxUploadContent{padding:12px}.spxUploadInfo,.spxUploadFormatNote{padding:16px;border-radius:14px;margin-bottom:16px}.spxUploadInfo p,.spxUploadFormatNote p{font-size:13px}.spxUploadFormatNote ul{font-size:12px}.spxUploadTemplateType{flex-direction:column;gap:12px;padding:16px;border-radius:14px}.spxUploadTemplateType label{font-size:14px}.spxUploadFileRow{flex-direction:column;gap:12px}.spxUploadFileLabel{padding:30px 20px;border-radius:14px}.spxUploadIcon{font-size:36px}.spxUploadFileLabel span{font-size:14px}.spxUploadError,.spxUploadSuccess{padding:14px;border-radius:12px;font-size:13px}.spxUploadPreview{margin-bottom:16px}.spxUploadPreviewTitle{font-size:13px}.spxUploadPreviewTable{border-radius:12px;max-height:200px}.spxUploadPreviewTable th,.spxUploadPreviewTable td{padding:10px 12px;font-size:12px}.spxUploadActions{flex-direction:column;gap:10px;margin-bottom:16px}.spxUploadHelp summary{font-size:13px}.spxUploadHelpContent{font-size:12px;padding:12px}.spxUploadHelpContent code{font-size:11px;padding:10px}}@media(max-width:375px){.spxWrap{padding:10px}.spxAside{border-radius:18px}.spxAsideHead{padding:14px}.spxAsideTitle{font-size:18px}.spxAsideSub{font-size:12px}.spxAsideBody{padding:12px}.spxSearch input,.spxYearSelect{height:44px;font-size:13px}.spxCourseItem{border-radius:16px}.spxCourseBtn{padding:12px}.spxIcon{width:44px;height:44px;border-radius:14px;font-size:16px}.spxCourseCode{font-size:14px}.spxChip{padding:5px 10px;font-size:11px}.spxCourseName{font-size:11px}.spxArrow{width:28px;height:28px;border-radius:10px}.spxYearPill{height:36px;padding:0 14px;font-size:12px}.spxSubject{border-radius:14px;padding:12px}.spxSubjectCode{font-size:12px}.spxTag{padding:5px 10px;font-size:11px}.spxSubjectName{font-size:12px}.spxSubjectProf{font-size:11px}.spxEmptyMini{padding:14px;border-radius:14px}.spxEmptyMiniT{font-size:13px}.spxEmptyMiniS{font-size:12px}.spxEmptyCard{border-radius:18px;padding:24px 16px}.spxEmptyIcon{font-size:40px}.spxEmptyTitle{font-size:22px}.spxEmptySub{font-size:13px}.spxEmptyTip{padding:12px;border-radius:12px;font-size:12px}.spxCard{border-radius:18px;padding:14px}.spxTitle{font-size:20px}.spxPill{padding:6px 12px;font-size:12px}.spxTabs{padding:6px;border-radius:14px}.spxTab{height:40px;padding:0 14px;font-size:12px}.spxBtn{height:44px;font-size:13px}.spxTableWrap{border-radius:16px}.spxAverageGWA{padding:14px;border-radius:12px}.spxAvgValue{font-size:22px;padding:6px 14px}.spxTable tbody tr{padding:14px;border-radius:14px}.spxTable tbody td{font-size:13px;padding:6px 0}.spxTable tbody td.name,.spxNameBtn{font-size:15px}.mono{font-size:13px}.spxNoData{padding:30px 16px}.spxNoDataT{font-size:14px}.spxNoDataS{font-size:12px}.spxHint{padding:14px;border-radius:16px;font-size:12px}.spxAsideFoot{padding:12px;font-size:11px}.spxExportAllBtn{height:40px;padding:0 14px;font-size:12px}.spxInfoModal{padding:16px 12px;border-radius:20px 20px 0 0}.spxInfoTitle{font-size:18px}.spxInfoClose{width:36px;height:36px;border-radius:10px}.spxInfoState{padding:14px;font-size:13px}.spxUploadContent{padding:10px}.spxUploadInfo,.spxUploadFormatNote,.spxUploadTemplateType{padding:14px;border-radius:12px}.spxUploadFileLabel{padding:24px 16px;border-radius:12px}.spxUploadIcon{font-size:32px}.spxUploadPreviewTable{border-radius:10px}}.spxAsideTopRow{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.spxExportAllBtn{height:36px;padding:0 12px;border-radius:12px;border:0;cursor:pointer;font-size:12px;font-weight:600;color:#fff;background:linear-gradient(135deg,var(--blue),var(--purple));box-shadow:0 12px 18px #7c3aed29;transition:transform .14s ease,box-shadow .14s ease;white-space:nowrap}.spxExportAllBtn:hover{transform:translateY(-1px);box-shadow:0 16px 26px #7c3aed38}.spxAsideFoot{padding:10px 12px;border-top:1px solid rgba(148,163,184,.11);font-size:11px;font-weight:450;color:#64748beb;background:#f8fafcb8}.spxActions.slim{margin-top:12px;padding-top:12px;border-top:1px solid rgba(148,163,184,.11);display:flex;justify-content:flex-end;gap:12px}.spxStudentRow{cursor:pointer}.spxInfoModal{width:min(1080px,95vw);max-height:92vh;overflow:auto;border-radius:16px;border:1px solid rgba(148,163,184,.22);background:#fff;box-shadow:0 30px 80px #02061759;padding:14px}.spxInfoState{border:1px solid rgba(148,163,184,.24);border-radius:10px;padding:12px;color:#475569;font-size:13px}.spxUploadInfo p{margin:4px 0;font-size:12px;color:#334155}.spxUploadFormatNote{padding:12px;border-radius:12px;background:#f59e0b14;border:1px solid rgba(245,158,11,.2);margin-bottom:14px}.spxUploadFormatNote p{margin:4px 0;font-size:12px;color:#334155}.spxUploadFormatNote strong{color:#1e293b}.spxUploadFormatNote ul{margin:8px 0 0;padding-left:20px;font-size:11px;color:#475569}.spxUploadFormatNote li{margin:4px 0}.spxUploadTemplateType{display:flex;gap:20px;margin-bottom:14px;padding:12px;background:var(--bg);border-radius:var(--r-sm)}.spxUploadTemplateType label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:14px;color:var(--text)}.spxUploadTemplateType input[type=radio]{cursor:pointer}.spxUploadFileRow{display:flex;gap:12px;align-items:stretch}.spxUploadFileRow .spxUploadFileLabel{flex:1;flex-direction:row;justify-content:flex-start;gap:12px}.spxUploadFileLabel{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px;border:2px dashed rgba(148,163,184,.34);border-radius:12px;background:#f8fafcf2;cursor:pointer;transition:all .14s ease}.spxUploadFileLabel:hover{border-color:#6366f180;background:#6366f10d}.spxUploadIcon{font-size:28px}.spxUploadFileLabel span{font-size:13px;font-weight:500;color:#475569}.spxUploadError{padding:10px 12px;border-radius:10px;background:#ef44441a;border:1px solid rgba(239,68,68,.2);color:#dc2626;font-size:12px;margin-bottom:14px;white-space:pre-wrap}.spxUploadSuccess{padding:10px 12px;border-radius:10px;background:#10b9811a;border:1px solid rgba(16,185,129,.2);color:#059669;font-size:12px;margin-bottom:14px}.spxUploadPreviewTitle{font-size:12px;font-weight:600;color:#334155;margin-bottom:8px}.spxUploadPreviewTable{border-radius:10px;border:1px solid rgba(148,163,184,.16);overflow:auto;max-height:240px}.spxUploadPreviewTable th{background:#f8fafc;padding:8px 10px;text-align:left;font-weight:600;border-bottom:1px solid rgba(148,163,184,.16);white-space:nowrap}.spxUploadPreviewTable td{padding:8px 10px;border-bottom:1px solid rgba(148,163,184,.1)}.spxPagination{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-top:1px solid rgba(148,163,184,.16);margin-top:12px;flex-wrap:wrap;gap:12px}.spxPaginationInfo{font-size:12px;color:var(--sub);font-weight:500}.spxPaginationControls{display:flex;align-items:center;gap:6px}.spxPaginationBtn{height:32px;min-width:32px;padding:0 10px;border-radius:8px;border:1px solid rgba(148,163,184,.18);background:#fff;cursor:pointer;font-size:12px;font-weight:600;color:#334155;transition:all .14s ease}.spxPaginationBtn:hover:not(:disabled){border-color:#6366f166;background:#6366f10d;color:#3b3bf5}.spxPaginationBtn:disabled{opacity:.5;cursor:not-allowed}.spxPaginationBtn.active{background:linear-gradient(135deg,var(--blue),var(--purple));border-color:transparent;color:#fff}.spxUploadMore{padding:8px 10px;font-size:11px;color:#64748b;text-align:center;background:#f8fafcf2;border-top:1px solid rgba(148,163,184,.12)}.spxUploadActions{display:flex;justify-content:flex-end;gap:10px;margin-bottom:14px}.spxExportAllBtn:disabled{opacity:.6;cursor:not-allowed}.spxExportAllBtn.sm{height:36px;padding:0 12px;font-size:12px}.spxExportAllBtn.primary{background:linear-gradient(135deg,var(--green),#059669)}.spxExportAllBtn.primary:hover:not(:disabled){box-shadow:0 16px 26px #10b98140}.spxUploadHelp{border-top:1px solid rgba(148,163,184,.12);padding-top:12px}.spxUploadHelp summary{font-size:12px;font-weight:600;color:#475569;cursor:pointer}.spxUploadHelpContent{margin-top:8px;padding:10px;border-radius:8px;background:#f8fafcf2;font-size:11px;color:#64748b}.spxUploadHelpContent p{margin:4px 0}.spxUploadHelpContent code{display:block;padding:8px;border-radius:6px;background:#fff;border:1px solid rgba(148,163,184,.16);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:10px;color:#334155;margin-top:4px;overflow-x:auto}.csWrap,.csWrap *{box-sizing:border-box;font-family:var(--ui-font)}.csWrap{width:100%;padding:18px;color:var(--ui-text);background:transparent}.csToasts{position:fixed;top:14px;right:14px;display:flex;flex-direction:column;gap:10px;z-index:50}.csToast{width:340px;border-radius:var(--ui-r-md);background:var(--ui-card);border:1px solid var(--ui-border);box-shadow:var(--ui-shadow-md);padding:10px;display:grid;grid-template-columns:28px 1fr 28px;gap:10px;align-items:center}.csToastIcon{width:28px;height:28px;border-radius:10px;display:grid;place-items:center;font-weight:var(--ui-w-semibold);font-size:13px;background:#94a3b81f;border:1px solid rgba(148,163,184,.18);color:#334155}.csToastMsg{font-size:12px;line-height:1.35;font-weight:var(--ui-w-medium);color:var(--ui-text)}.csToastX{width:28px;height:28px;border-radius:10px;border:1px solid var(--ui-border);background:#fff;cursor:pointer;font-weight:var(--ui-w-semibold);color:#334155}.csToast.success .csToastIcon{background:#10b9811f;border-color:#10b9812e;color:#047857}.csToast.error .csToastIcon{background:#ef44441f;border-color:#ef44442e;color:#b91c1c}.csToast.warning .csToastIcon{background:#f59e0b1f;border-color:#f59e0b2e;color:#b45309}.csToast.info .csToastIcon{background:#2563eb1f;border-color:#2563eb2e;color:#1d4ed8}.csHeader{border-radius:var(--ui-r-xl);padding:18px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:linear-gradient(135deg,var(--ui-blueA) 0%,var(--ui-blueB) 55%,var(--ui-purple) 115%);box-shadow:0 14px 28px #0f172a29;border:1px solid rgba(255,255,255,.12)}.csHeaderLeft{display:flex;flex-direction:column;gap:8px}.csTitle{color:#fff;font-size:var(--ui-title);font-weight:var(--ui-w-bold);letter-spacing:-.02em}.csUnsaved{width:fit-content;color:#ffffffeb;background:#ffffff1f;border:1px solid rgba(255,255,255,.18);padding:7px 12px;border-radius:999px;font-size:12px;font-weight:var(--ui-w-medium)}.csUnsavedDot{font-weight:var(--ui-w-semibold)}.csHeaderRight{display:flex;gap:12px}.csTermField{display:flex;flex-direction:column;gap:6px;min-width:170px}.csTermLabel{color:#ffffffeb;font-size:11px;font-weight:var(--ui-w-medium);letter-spacing:.35px}.csTermSelect{height:38px;border-radius:var(--ui-r-sm);background:#ffffff1f;border:1px solid rgba(255,255,255,.18);color:#fff;padding:0 12px;outline:none;font-weight:var(--ui-w-medium)}.csTermSelect option{color:var(--ui-text)}.csTermField.disabled .csTermSelect{opacity:.58;cursor:not-allowed}.csGrid{margin-top:16px;display:grid;grid-template-columns:1fr 360px;gap:14px}.csMain{background:var(--ui-card);border-radius:var(--ui-r-lg);border:1px solid var(--ui-border);box-shadow:var(--ui-shadow-sm);overflow:auto;min-height:720px;padding:14px}.csCourseHero{border-radius:var(--ui-r-lg);border:1px solid var(--ui-border);background:linear-gradient(180deg,#f8fafceb,#fff);box-shadow:0 10px 18px #0206170d;padding:14px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.csCourseCode{font-size:var(--ui-h2);font-weight:var(--ui-w-bold);letter-spacing:-.02em}.csCourseFull{margin-top:4px;font-size:12px;color:var(--ui-sub);font-weight:var(--ui-w-regular)}.csCourseMeta{margin-top:10px;display:flex;gap:10px;flex-wrap:wrap}.csMetaPill{padding:7px 12px;border-radius:999px;background:#2563eb1a;border:1px solid rgba(37,99,235,.18);color:#1d4ed8;font-weight:var(--ui-w-semibold);font-size:12px}.csMetaPill.warn{background:#f59e0b1a;border-color:#f59e0b2e;color:#b45309}.csYearTabs{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.csYearTab{height:36px;padding:0 12px;border-radius:var(--ui-r-sm);border:1px solid var(--ui-border);background:#fff;cursor:pointer;font-weight:var(--ui-w-semibold);font-size:12px;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.csYearTab:hover{transform:translateY(-1px);box-shadow:0 12px 16px #0206170f;border-color:#6366f159}.csYearTab.active{background:#6366f117;border-color:#6366f14d}.csSemGrid{margin-top:14px;display:grid;grid-template-columns:1fr 1fr;gap:14px}.csSemCol{border-radius:var(--ui-r-lg);border:1px solid var(--ui-border);background:#f8fafcd1;padding:12px}.csSemHead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.csSemTitle{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:var(--ui-w-semibold);letter-spacing:-.01em}.csDot{width:8px;height:8px;border-radius:999px}.csDot.green{background:#10b981;box-shadow:0 0 0 4px #10b9811f}.csBtn{height:40px;border-radius:var(--ui-r-sm);font-weight:var(--ui-w-semibold);border:1px solid var(--ui-border);cursor:pointer;transition:transform .12s ease,box-shadow .12s ease;padding:0 14px;background:#fff;color:#0f172ad1}.csBtn:hover{transform:translateY(-1px);box-shadow:0 12px 18px #02061714}.csBtn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}.csBtnPrimary{border:0;color:#fff;background:linear-gradient(135deg,var(--ui-blueB),var(--ui-purple))}.csBtnGhost{background:#fff;color:#0f172ad1}.csMiniBtn{height:32px;padding:0 10px;border-radius:var(--ui-r-sm);border:1px solid var(--ui-border);background:#fff;cursor:pointer;font-weight:var(--ui-w-semibold);font-size:12px;transition:transform .12s ease,box-shadow .12s ease;color:#0f172ad1}.csMiniBtn:hover{transform:translateY(-1px);box-shadow:0 10px 14px #0206170f}.csMiniBtn.primary{background:linear-gradient(135deg,var(--ui-blueB),var(--ui-purple));border:none;color:#fff}.csEmptySem{padding:12px;border-radius:var(--ui-r-md);border:1px dashed rgba(148,163,184,.36);background:#fffffff5}.csEmptySemTitle{font-weight:var(--ui-w-semibold);font-size:13px}.csEmptySemSub{margin-top:4px;font-size:12px;color:var(--ui-sub);font-weight:var(--ui-w-regular)}.csCards{display:flex;flex-direction:column;gap:10px}.csCard{border-radius:16px;background:#fffffff7;border:1px solid var(--ui-border);padding:12px;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.csCard:hover{transform:translateY(-1px);box-shadow:0 12px 16px #0206170f;border-color:#6366f147}.csCard.lab{background:#7c3aed0d;border-color:#7c3aed2e}.csCard.error{border-color:#ef444433;box-shadow:0 12px 16px #ef44440d}.csCardTop{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.csIndex{width:fit-content;padding:5px 10px;border-radius:999px;font-weight:var(--ui-w-semibold);font-size:11px;color:#1d4ed8;background:#2563eb1a;border:1px solid rgba(37,99,235,.16)}.csTypeToggle{display:flex;align-items:center;gap:10px;margin-top:8px}.csTypeLabel{font-size:11px;font-weight:var(--ui-w-medium);color:var(--ui-sub)}.csTypeLabel.active{color:var(--ui-text);font-weight:var(--ui-w-semibold)}.csSwitch{position:relative;width:44px;height:24px;display:inline-block}.csSwitch input{display:none}.csSlider{position:absolute;inset:0;border-radius:999px;background:#94a3b833;border:1px solid rgba(148,163,184,.22);cursor:pointer;transition:.15s ease}.csSlider:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:999px;background:#fff;box-shadow:0 8px 12px #0206171f;transition:.15s ease}.csSwitch input:checked+.csSlider{background:#7c3aed2e;border-color:#7c3aed38}.csSwitch input:checked+.csSlider:after{transform:translate(20px)}.csSwitch.disabled{opacity:.6;pointer-events:none}.csCardActions{display:flex;gap:8px;align-items:center}.csIconBtn,.csRemoveBtn{width:34px;height:34px;border-radius:var(--ui-r-sm);border:1px solid var(--ui-border);background:#fff;cursor:pointer;font-weight:var(--ui-w-semibold);color:#334155}.csRemoveBtn{font-weight:var(--ui-w-bold);font-size:16px;line-height:1}.csIconBtn:disabled{opacity:.55;cursor:not-allowed}.csForm{margin-top:10px;display:flex;flex-direction:column;gap:8px}.csRow{display:flex;gap:8px;align-items:center}.csInput{width:100%;height:38px;border-radius:var(--ui-r-sm);border:1px solid rgba(148,163,184,.26);background:#fff;padding:0 12px;outline:none;font-weight:var(--ui-w-medium);font-size:12px;color:var(--ui-text)}.csInput::placeholder{color:#64748bc7;font-weight:var(--ui-w-regular)}.csInput:focus{border-color:#2563eb66;box-shadow:0 0 0 4px #2563eb1a}.csInput.error{border-color:#ef444438;box-shadow:0 0 0 4px #ef44440f}.csInput.code{width:180px}.csErr{font-size:12px;color:#b91c1c;font-weight:var(--ui-w-medium);line-height:1.35}.csCardMeta{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.csBadge{padding:6px 10px;border-radius:999px;font-size:11px;font-weight:var(--ui-w-semibold);border:1px solid var(--ui-border);background:#fff}.csBadge.lecture{background:#10b9811a;border-color:#10b9812e;color:#047857}.csBadge.lab{background:#7c3aed1a;border-color:#7c3aed2e;color:#6d28d9}.csMetaText{font-size:11px;font-weight:var(--ui-w-regular);color:var(--ui-sub)}.csProfBadge{font-size:11px;font-weight:var(--ui-w-medium);color:#0f172adb;background:#94a3b81f;border:1px solid rgba(148,163,184,.16);padding:6px 10px;border-radius:999px}.csSide{position:sticky;top:14px;align-self:start}.csSideCard{background:var(--ui-card);border-radius:var(--ui-r-lg);border:1px solid var(--ui-border);box-shadow:var(--ui-shadow-sm);padding:14px}.csSideActions{display:grid;grid-template-columns:1fr;gap:10px}.csSideHint{margin-top:12px;padding:12px;border-radius:16px;background:#2563eb0f;border:1px solid rgba(37,99,235,.12)}.csHintTitle{font-weight:var(--ui-w-semibold);font-size:12px}.csHintText{margin-top:6px;font-size:12px;color:#0f172ad1;font-weight:var(--ui-w-regular);line-height:1.45}.csSearchWrap{margin-top:12px;position:relative}.csSearch{width:100%;height:40px;border-radius:var(--ui-r-sm);padding:0 40px 0 12px;border:1px solid rgba(148,163,184,.26);background:#f8fafce6;outline:none;font-weight:var(--ui-w-medium);font-size:12px}.csSearch::placeholder{font-weight:var(--ui-w-regular);color:#64748bcc}.csSearch:focus{border-color:#2563eb66;box-shadow:0 0 0 4px #2563eb1a}.csSearchX{position:absolute;right:10px;top:50%;transform:translateY(-50%);width:28px;height:28px;border-radius:10px;border:1px solid var(--ui-border);background:#fff;cursor:pointer;font-weight:var(--ui-w-bold);color:#334155}.csSpyHead{margin-top:14px;padding-top:12px;border-top:1px solid rgba(148,163,184,.18)}.csSpyTitle{font-size:13px;font-weight:var(--ui-w-semibold)}.csSpySub{margin-top:4px;font-size:12px;color:var(--ui-sub);font-weight:var(--ui-w-regular)}.csCourseList{margin-top:10px;display:flex;flex-direction:column;gap:10px;max-height:560px;overflow:auto;padding-right:4px}.csCourseItem{border-radius:16px;background:#fff;border:1px solid var(--ui-border);padding:12px;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease;text-align:left}.csCourseItem:hover{transform:translateY(-1px);box-shadow:0 12px 16px #0206170f;border-color:#6366f152}.csCourseItem.active{background:#6366f114;border-color:#6366f142}.csCourseItemLeft{display:flex;flex-direction:column;gap:4px}.csCourseItemCode{font-weight:var(--ui-w-semibold);font-size:13px;letter-spacing:-.01em}.csCourseItemFull{font-size:12px;color:var(--ui-sub);font-weight:var(--ui-w-regular);max-width:240px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.csCourseItemCount{min-width:40px;height:28px;border-radius:999px;background:#94a3b829;border:1px solid rgba(148,163,184,.18);display:grid;place-items:center;font-weight:var(--ui-w-semibold);font-size:12px;color:#334155}@media(max-width:1100px){.csGrid{grid-template-columns:1fr}.csSide{position:relative;top:0}.csHeaderRight{display:none}.csSemGrid{grid-template-columns:1fr}}.spxInfoOverlay{position:fixed;inset:0;background:#0206177a;z-index:1200;display:grid;place-items:center;padding:18px}.spxInfoModal{width:min(900px,95vw);max-height:92vh;overflow:auto;border-radius:16px;border:1px solid rgba(148,163,184,.22);background:#fff;box-shadow:0 30px 80px #02061759;padding:14px}.spxInfoTop{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.spxInfoTitle{font-size:16px;font-weight:700;color:#0f172a}.spxInfoClose{width:34px;height:34px;border-radius:10px;border:1px solid rgba(148,163,184,.22);background:#fff;cursor:pointer;font-weight:700;color:#334155}.spxUploadContent{padding:10px}.spxUploadInfo{padding:12px;border-radius:12px;background:#6366f10f;border:1px solid rgba(99,102,241,.12);margin-bottom:14px}.spxUploadInfo p,.spxUploadInfo li{margin:4px 0;font-size:12px;color:#334155}.spxUploadInfo strong{color:#1e293b}.spxUploadFileArea{margin-bottom:14px}.spxUploadFileRow{display:flex;gap:10px;align-items:center}.spxUploadFileLabel{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:12px;border:2px dashed rgba(148,163,184,.36);border-radius:10px;cursor:pointer;font-size:13px;color:#475569;transition:all .15s ease}.spxUploadFileLabel:hover{border-color:#6366f180;background:#6366f10a;color:#1e293b}.spxUploadIcon{font-size:18px}.spxUploadError{padding:10px;border-radius:8px;background:#ef44441a;border:1px solid rgba(239,68,68,.2);color:#dc2626;font-size:12px;margin-bottom:14px}.spxUploadSuccess{padding:10px;border-radius:8px;background:#22c55e1a;border:1px solid rgba(34,197,94,.2);color:#16a34a;font-size:12px;margin-bottom:14px}.spxUploadPreview{margin-bottom:14px}.spxUploadPreviewTitle{font-size:13px;font-weight:600;color:#1e293b;margin-bottom:8px}.spxUploadPreviewTable{border:1px solid rgba(148,163,184,.24);border-radius:10px;overflow:auto;max-height:300px}.spxUploadPreviewTable table{width:100%;border-collapse:collapse;font-size:11px}.spxUploadPreviewTable th,.spxUploadPreviewTable td{padding:8px 10px;text-align:left;border-bottom:1px solid rgba(148,163,184,.16)}.spxUploadPreviewTable th{background:#f8fafccc;font-weight:600;color:#475569;position:sticky;top:0}.spxUploadPreviewTable td{color:#334155}.spxUploadPreviewTable tr:last-child td{border-bottom:none}.spxUploadMore{padding:8px;text-align:center;font-size:11px;color:#64748b;background:#f8fafccc}.spxUploadActions{display:flex;justify-content:flex-end;gap:10px;padding-top:10px;border-top:1px solid rgba(148,163,184,.16)}.spxExportAllBtn{padding:8px 14px;border-radius:8px;border:1px solid rgba(148,163,184,.24);background:#fff;cursor:pointer;font-size:12px;font-weight:500;color:#334155;transition:all .12s ease}.spxExportAllBtn:hover{background:#f8fafc;border-color:#94a3b866}.spxExportAllBtn:disabled{opacity:.5;cursor:not-allowed}.spxExportAllBtn.primary{background:linear-gradient(135deg,var(--ui-blueB),var(--ui-purple));border:none;color:#fff}.spxExportAllBtn.primary:hover{background:linear-gradient(135deg,var(--ui-blueB),var(--ui-purple));opacity:.9}.spxExportAllBtn.sm{padding:6px 10px;font-size:11px}.tlxWrap{padding-bottom:6px}.tlxTableWrap{margin:0 14px 14px;border-radius:16px;border:1px solid var(--ui-border);background:#fff;overflow:hidden}.tlxSearchRow{padding:12px;border-bottom:1px solid var(--ui-border2);background:#2563eb08}.tlxSearchInput{width:100%;max-width:460px;height:38px;border-radius:10px;border:1px solid #d1d5db;padding:0 12px;outline:none;font-size:13px}.tlxSearchInput:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1f}.tlxTable{width:100%;border-collapse:collapse}.tlxTable th,.tlxTable td{border-bottom:1px solid #eef2ff;padding:10px 12px;text-align:left;font-size:13px;color:#0f172a}.tlxTable th{background:#f8fafc;font-weight:700}.tlxTable tbody tr:hover{background:#3b82f60a}.tlxEmpty{text-align:center!important;color:#64748b!important;padding:18px 12px!important}.tlxSubjectItem .spyHistName{line-height:1.35;font-size:12px}.tlxGroupBlock+.tlxGroupBlock{margin-top:10px}.tlxGroupToggle{width:100%;display:flex;align-items:center;justify-content:space-between;border:1px solid #dbeafe;background:#eff6ff;border-radius:10px;padding:8px 10px;cursor:pointer}.tlxGroupTitle{font-size:11px;font-weight:700;letter-spacing:.03em;color:#334155;text-transform:uppercase}.tlxGroupCaret{font-size:11px;color:#1e40af;font-weight:700}.tlxSemesterBlock{margin-top:6px;margin-left:10px}.tlxSemesterToggle{background:#f8fafc;border-color:#e2e8f0}.tlxSubjectItem{width:100%;border:1px solid #e2e8f0;background:#fff;border-radius:10px;padding:8px 10px;text-align:left;margin-top:6px;cursor:pointer}.tlxSubjectItem.active{border-color:#2563eb;background:#eff6ff}.tlxClearSubjectBtn{width:100%;border:1px solid #bfdbfe;background:#dbeafe;color:#1e3a8a;border-radius:10px;height:32px;margin-bottom:8px;font-size:12px;font-weight:700;cursor:pointer}.tlxDropdowns{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 12px}.tlxDropdownLabel{display:grid;gap:6px;font-size:11px;color:#475569;font-weight:700;letter-spacing:.02em}.tlxDropdownLabel select{height:34px;border:1px solid #cbd5e1;border-radius:10px;padding:0 10px;background:#fff;color:#0f172a;font-size:12px;font-weight:600;outline:none}.tlxDropdownLabel select:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1f}.student-dashboard-page{max-width:1320px;margin:0 auto;padding:24px;color:#0f172a}.student-dashboard-loading{min-height:420px;display:flex;align-items:center;justify-content:center}.student-dashboard-hero{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.8fr);gap:18px;padding:24px;border-radius:28px;background:radial-gradient(620px 240px at 0% 0%,rgba(37,99,235,.2),transparent 60%),radial-gradient(520px 220px at 100% 0%,rgba(99,102,241,.16),transparent 58%),linear-gradient(135deg,#fffffff5,#f8fafce6);border:1px solid rgba(148,163,184,.18);box-shadow:0 28px 70px #0f172a1f}.student-dashboard-kicker{font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#2563eb}.student-dashboard-title{margin:10px 0;font-size:clamp(30px,4vw,42px);line-height:1;letter-spacing:-.04em}.student-dashboard-subtitle{max-width:640px;font-size:14px;line-height:1.7;color:#475569}.student-dashboard-badge{display:flex;flex-direction:column;justify-content:space-between;min-height:190px;padding:20px;border-radius:22px;background:linear-gradient(160deg,#2563ebeb,#6366f1db);color:#eff6ff;box-shadow:0 20px 45px #2563eb47}.student-dashboard-badgeLabel{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#dbeafed9}.student-dashboard-badgeValue{margin-top:14px;font-size:28px;font-weight:800;letter-spacing:-.03em}.student-dashboard-badgeSub{margin-top:auto;padding-top:16px;font-size:13px;line-height:1.6;color:#dbeafee0}.student-dashboard-shell{margin-top:20px}.student-dashboard-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:16px}.student-dashboard-kpiCard{padding:18px;border-radius:22px;border:1px solid rgba(148,163,184,.18);background:radial-gradient(260px 120px at 100% 0%,rgba(14,165,233,.1),transparent 60%),linear-gradient(180deg,#fffffffa,#f8fafceb);box-shadow:0 16px 34px #0f172a14}.student-dashboard-kpiCardWarn{background:radial-gradient(260px 120px at 100% 0%,rgba(249,115,22,.16),transparent 60%),linear-gradient(180deg,#fffbebfa,#fff7edeb);border-color:#f9731638}.student-dashboard-kpiLabel{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#64748b}.student-dashboard-kpiValue{margin-top:12px;font-size:clamp(28px,3vw,38px);line-height:1;font-weight:900;letter-spacing:-.04em;color:#0f172a}.student-dashboard-kpiValueSm{font-size:clamp(20px,2.2vw,28px);line-height:1.15}.student-dashboard-kpiSub{margin-top:10px;font-size:13px;line-height:1.6;color:#475569}.student-dashboard-mainCard{border-radius:24px;border:1px solid rgba(148,163,184,.18);background:radial-gradient(520px 200px at 100% 0%,rgba(37,99,235,.1),transparent 58%),#ffffffeb;padding:18px;box-shadow:0 18px 40px #0f172a14}.student-dashboard-mainTop{padding:8px 6px 12px}.student-dashboard-panelTitle{font-size:18px;font-weight:800;color:#0f172a}.student-dashboard-panelSub{margin-top:6px;font-size:12.5px;color:#64748b}.student-dashboard-content{margin-top:8px}.student-dashboard-page .isiWrap{background:transparent;padding:0}.student-dashboard-page .isiCard{background:#fffffff5;border-radius:18px;padding:14px;border:1px solid rgba(15,23,42,.06);box-shadow:0 10px 24px #0f172a0f}.student-dashboard-page .isiTable,.student-dashboard-page .isiChartWrap{background:transparent}@media(max-width:980px){.student-dashboard-hero,.student-dashboard-kpis{grid-template-columns:1fr}}@media(max-width:640px){.student-dashboard-page{padding:16px}.student-dashboard-hero,.student-dashboard-mainCard{padding:18px;border-radius:20px}}.teacher-dashboard-page{max-width:1400px;margin:0 auto;padding:24px;color:#0f172a}.teacher-dashboard-hero{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.8fr);gap:18px;padding:24px;border-radius:28px;background:radial-gradient(620px 240px at 0% 0%,rgba(37,99,235,.2),transparent 60%),radial-gradient(520px 220px at 100% 0%,rgba(99,102,241,.16),transparent 58%),linear-gradient(135deg,#fffffff5,#f8fafce6);border:1px solid rgba(148,163,184,.18);box-shadow:0 28px 70px #0f172a1f}.teacher-dashboard-kicker{font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#2563eb}.teacher-dashboard-title{margin:10px 0;font-size:clamp(30px,4vw,42px);line-height:1;letter-spacing:-.04em}.teacher-dashboard-subtitle{max-width:660px;font-size:14px;line-height:1.7;color:#475569}.teacher-dashboard-badge{display:flex;flex-direction:column;justify-content:space-between;min-height:190px;padding:20px;border-radius:22px;background:linear-gradient(160deg,#2563ebeb,#6366f1db);color:#eff6ff;box-shadow:0 20px 45px #2563eb47}.teacher-dashboard-badgeLabel{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#dbeafed9}.teacher-dashboard-badgeValue{margin-top:14px;font-size:28px;font-weight:800;letter-spacing:-.03em}.teacher-dashboard-badgeSub{margin-top:auto;padding-top:16px;font-size:13px;line-height:1.6;color:#dbeafee0}.teacher-dashboard-shell{margin-top:20px;display:flex;gap:20px;align-items:flex-start}.teacher-dashboard-panel{background:#ffffffeb;border:1px solid rgba(148,163,184,.18);border-radius:24px;box-shadow:0 18px 40px #0f172a14}.teacher-dashboard-state{margin-top:20px;padding:22px;color:#64748b;font-weight:700}.teacherSidebar{min-width:300px;max-width:340px}.teacher-dashboard-sidebar{padding:18px;background:radial-gradient(420px 160px at 0% 0%,rgba(37,99,235,.1),transparent 60%),#fffffff0}.sidebarSection h3{margin:0 0 14px;font-size:16px}.yearGroup{margin-bottom:18px}.yearHeader{margin:0 0 8px;font-size:12px;color:#64748b;text-transform:uppercase;letter-spacing:.08em}.subjectList{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.subjectList li button{width:100%;text-align:left;padding:12px 14px;border-radius:16px;border:1px solid rgba(15,23,42,.06);background:#fffffff5;cursor:pointer;display:flex;flex-direction:column;gap:2px;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.subjectList li button:hover{transform:translateY(-1px);box-shadow:0 14px 22px #0f172a14}.subjectList li.active button{background:#2563eb14;border-color:#2563eb33}.teacherMain{flex:1;min-width:0}.teacher-dashboard-main{padding:18px;background:radial-gradient(520px 200px at 100% 0%,rgba(37,99,235,.08),transparent 58%),#fffffff0}.gradesSection{display:flex;flex-direction:column;gap:16px}.teacherKpiGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.teacherKpiCard{padding:18px 20px;border-radius:18px;border:1px solid rgba(37,99,235,.12);background:radial-gradient(260px 120px at 0% 0%,rgba(37,99,235,.12),transparent 60%),linear-gradient(180deg,#fffffffa,#f8fafcf0);box-shadow:0 16px 30px #0f172a0f}.teacherKpiCardAlert{border-color:#dc262624;background:radial-gradient(260px 120px at 0% 0%,rgba(239,68,68,.12),transparent 60%),linear-gradient(180deg,#fffffffa,#f8fafcf0)}.teacherKpiLabel{font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#64748b}.teacherKpiValue{margin-top:10px;font-size:clamp(28px,4vw,38px);line-height:1;font-weight:800;letter-spacing:-.04em;color:#0f172a}.teacherKpiMeta{margin-top:10px;font-size:13px;color:#475569}.gradesHeader{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.gradesHeader h3{margin:0;font-size:20px;letter-spacing:-.02em}.termSelector{display:flex;align-items:center;gap:8px}.termSelector label{font-size:13px;font-weight:700;color:#475569}.termSelector select,.studentSearch input{height:42px;padding:0 12px;border-radius:12px;border:1px solid rgba(15,23,42,.12);font-size:14px;background:#fff}.studentSearch{margin-bottom:8px;display:flex;gap:10px;align-items:center}.studentSearch input{width:100%;max-width:320px}.gradesTableContainer{overflow-x:auto;background:#fffffff5;border-radius:18px;border:1px solid rgba(15,23,42,.06)}.gradesTable{width:100%;border-collapse:collapse;font-size:14px}.gradesTable th,.gradesTable td{padding:12px 16px;text-align:left;border-bottom:1px solid rgba(15,23,42,.06)}.gradesTable th{background:#0f172a08;font-weight:700;color:#475569}.gradesTable tr:last-child td{border-bottom:none}.gradesTable tr:hover{background:#0f172a05}.gradesTable tr.selected{background:#2563eb14}.teacherNameBtn{border:0;background:transparent;padding:0;margin:0;font:inherit;font-weight:700;color:#1d4ed8;cursor:pointer;text-align:left}.teacherNameBtn:hover{text-decoration:underline}.teacher-dashboard-empty{color:#64748b;font-weight:600;padding:12px 4px}.teacherInfoOverlay{position:fixed;inset:0;background:#0206177a;z-index:1200;display:grid;place-items:center;padding:18px}.teacherInfoModal{width:min(1080px,95vw);max-height:92vh;overflow:auto;border-radius:16px;border:1px solid rgba(148,163,184,.22);background:#fff;box-shadow:0 30px 80px #02061759;padding:14px}.teacherInfoTop{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.teacherInfoTitle{font-size:16px;font-weight:700;color:#0f172a}.teacherInfoClose{width:34px;height:34px;border-radius:10px;border:1px solid rgba(148,163,184,.22);background:#fff;cursor:pointer;font-weight:700;color:#334155}.teacherInfoModal .isiWrap{margin:0}@media(max-width:980px){.teacher-dashboard-hero{grid-template-columns:1fr}.teacher-dashboard-shell{flex-direction:column}.teacherSidebar{min-width:100%;max-width:none}}@media(max-width:640px){.teacher-dashboard-page{padding:16px}.teacher-dashboard-hero,.teacher-dashboard-sidebar,.teacher-dashboard-main{padding:18px;border-radius:20px}.studentSearch input{max-width:none}.teacherKpiGrid{grid-template-columns:1fr}}@media(max-width:768px){.teacher-dashboard-page{padding:12px}.teacher-dashboard-hero{grid-template-columns:1fr;padding:20px 16px;border-radius:24px;box-shadow:0 12px 40px #0f172a26}.teacher-dashboard-kicker{font-size:12px;letter-spacing:.2em}.teacher-dashboard-title{font-size:clamp(26px,6vw,36px);margin:12px 0}.teacher-dashboard-subtitle{font-size:13px;line-height:1.6}.teacher-dashboard-badge{min-height:160px;padding:24px 16px;border-radius:20px;box-shadow:0 16px 40px #2563eb4d}.teacher-dashboard-badgeLabel{font-size:11px;letter-spacing:.1em}.teacher-dashboard-badgeValue{font-size:32px;margin-top:16px}.teacher-dashboard-badgeSub{font-size:12px;padding-top:14px}.teacher-dashboard-shell{flex-direction:column;gap:16px;margin-top:16px}.teacher-dashboard-panel{border-radius:20px;box-shadow:0 8px 32px #0f172a1a}.teacher-dashboard-state{padding:20px;font-size:14px}.teacherSidebar{min-width:100%;max-width:100%}.teacher-dashboard-sidebar{padding:16px;border-radius:20px}.sidebarSection h3{font-size:15px;margin-bottom:12px}.yearGroup{margin-bottom:16px}.yearHeader{font-size:11px;margin-bottom:6px}.subjectList{gap:10px}.subjectList li button{padding:14px;border-radius:14px;gap:4px;border:1px solid rgba(15,23,42,.08);box-shadow:0 2px 8px #0f172a0f;transition:all .2s ease}.subjectList li button:active{transform:scale(.98);box-shadow:0 4px 12px #0f172a1a}.subjectList li.active button{background:linear-gradient(135deg,#2563eb1f,#6366f114);border-color:#2563eb40;box-shadow:0 4px 16px #2563eb33}.teacherMain{min-width:100%}.teacher-dashboard-main{padding:16px;border-radius:20px}.gradesSection{gap:14px}.teacherKpiGrid{grid-template-columns:1fr;gap:12px}.teacherKpiCard{padding:20px 16px;border-radius:16px;box-shadow:0 4px 16px #0f172a14;transition:all .2s ease}.teacherKpiCard:active{transform:scale(.98);box-shadow:0 6px 20px #0f172a1f}.teacherKpiLabel{font-size:11px;letter-spacing:.1em}.teacherKpiValue{font-size:clamp(24px,5vw,32px);margin-top:12px}.teacherKpiMeta{font-size:12px;margin-top:8px}.gradesHeader{flex-direction:column;align-items:flex-start;gap:10px}.gradesHeader h3{font-size:18px}.termSelector{width:100%;flex-direction:column;align-items:flex-start;gap:6px}.termSelector label{font-size:12px}.termSelector select,.studentSearch input{width:100%;height:44px;padding:0 14px;border-radius:12px;font-size:13px}.studentSearch{width:100%;flex-direction:column;gap:8px}.studentSearch input{max-width:100%}.gradesTableContainer{border-radius:16px;border:1px solid rgba(15,23,42,.08);box-shadow:0 4px 16px #0f172a0f}.gradesTable{display:block;font-size:13px}.gradesTable thead{display:none}.gradesTable tbody{display:block}.gradesTable tr{display:block;margin-bottom:10px;padding:14px;border-radius:14px;background:#fff;border:1px solid rgba(15,23,42,.06);box-shadow:0 2px 6px #0f172a0a;transition:all .2s ease}.gradesTable tr:active{transform:scale(.98);box-shadow:0 4px 10px #0f172a14}.gradesTable tr.selected{background:linear-gradient(135deg,#2563eb1a,#6366f10f);border-color:#2563eb33}.gradesTable th,.gradesTable td{display:block;padding:6px 0;border-bottom:1px solid rgba(15,23,42,.06);text-align:left;font-size:13px}.gradesTable th:last-child,.gradesTable td:last-child{border-bottom:none}.gradesTable th:before,.gradesTable td:before{content:attr(data-label);display:block;font-size:10px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.5px;margin-bottom:2px}.teacherNameBtn{font-size:14px;font-weight:700}.teacher-dashboard-empty{padding:16px;font-size:13px}.teacherInfoOverlay{padding:0;align-items:flex-end}.teacherInfoModal{width:100%;max-height:85vh;border-radius:24px 24px 0 0;padding:20px 16px;box-shadow:0 -10px 40px #02061740}.teacherInfoTop{margin-bottom:16px}.teacherInfoTitle{font-size:18px;font-weight:800}.teacherInfoClose{width:40px;height:40px;border-radius:12px;font-size:18px;font-weight:800}}@media(max-width:375px){.teacher-dashboard-page{padding:10px}.teacher-dashboard-hero{padding:16px 12px;border-radius:20px}.teacher-dashboard-title{font-size:24px}.teacher-dashboard-badge{min-height:140px;padding:20px 12px;border-radius:18px}.teacher-dashboard-badgeValue{font-size:28px}.teacher-dashboard-panel{border-radius:18px}.teacher-dashboard-sidebar{padding:14px;border-radius:18px}.subjectList li button{padding:12px;border-radius:12px}.teacher-dashboard-main{padding:14px;border-radius:18px}.teacherKpiCard{padding:16px 12px;border-radius:14px}.teacherKpiValue{font-size:22px}.gradesHeader h3{font-size:16px}.termSelector select,.studentSearch input{height:40px;font-size:12px}.gradesTableContainer{border-radius:14px}.gradesTable tr{padding:12px;border-radius:12px}.gradesTable th,.gradesTable td{font-size:12px;padding:4px 0}.teacherNameBtn{font-size:13px}.teacherInfoModal{padding:16px 12px;border-radius:20px 20px 0 0}.teacherInfoTitle{font-size:16px}.teacherInfoClose{width:36px;height:36px;border-radius:10px}}.admin-profile-page{max-width:1240px;margin:0 auto;padding:24px;color:#0f172a}.admin-profile-loading{min-height:420px;display:flex;align-items:center;justify-content:center}.admin-profile-hero{position:relative;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.85fr);gap:18px;padding:24px;border-radius:28px;overflow:hidden;background:radial-gradient(620px 240px at 0% 0%,rgba(37,99,235,.22),transparent 60%),radial-gradient(520px 240px at 100% 0%,rgba(99,102,241,.18),transparent 58%),linear-gradient(135deg,#fffffff5,#f8fafce6);border:1px solid rgba(148,163,184,.18);box-shadow:0 28px 70px #0f172a1f}.admin-profile-hero:after{content:"";position:absolute;inset:auto -40px -70px auto;width:260px;height:260px;border-radius:999px;background:radial-gradient(circle,rgba(59,130,246,.14),transparent 70%);pointer-events:none}.admin-profile-kicker,.profile-section-kicker,.admin-side-kicker{font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#2563eb}.admin-profile-heroText h2{margin:10px 0;font-size:clamp(30px,4vw,44px);line-height:1;letter-spacing:-.04em}.admin-profile-lead{max-width:620px;margin:0;font-size:14px;line-height:1.7;color:#475569}.admin-profile-badgeCard{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:space-between;min-height:190px;padding:20px;border-radius:22px;background:linear-gradient(160deg,#2563ebeb,#4f46e5e0);color:#eff6ff;box-shadow:0 20px 45px #2563eb47}.admin-profile-badgeLabel{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#dbeafed9}.admin-profile-badgeValue{margin-top:14px;font-size:28px;font-weight:800;letter-spacing:-.03em;word-break:break-word}.admin-profile-badgeSub{margin-top:auto;padding-top:16px;font-size:13px;line-height:1.6;color:#dbeafee0}.admin-profile-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.85fr);gap:20px;margin-top:20px}.profile-sections{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.profile-section-orb{width:48px;height:48px;border-radius:999px;background:radial-gradient(circle at 30% 30%,#fffffff2,#3b82f62e 45%,#6366f159);box-shadow:inset 0 0 0 1px #ffffff4d}.admin-account-card{display:grid;gap:12px;padding:16px;border-radius:18px;background:#f8fafcf2;border:1px solid rgba(148,163,184,.16)}.admin-account-line{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:12px;border-bottom:1px solid rgba(148,163,184,.12)}.admin-account-line:last-child{border-bottom:0;padding-bottom:0}.admin-account-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#64748b}.admin-account-line strong{font-size:14px;color:#0f172a}.form-group input{width:100%;height:46px;padding:0 14px;border:1px solid rgba(148,163,184,.24);border-radius:14px;background:#fffffff2;color:#0f172a;font-size:14px;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease}.form-group input:focus{outline:none;border-color:#2563eb73;box-shadow:0 0 0 4px #2563eb1f;transform:translateY(-1px)}.btn-primary{min-width:180px;height:46px;border:0;border-radius:14px;padding:0 18px;cursor:pointer;font-size:13px;font-weight:800;letter-spacing:.01em;color:#eff6ff;background:linear-gradient(135deg,#2563ebf5,#6366f1e6);box-shadow:0 16px 30px #2563eb3d;transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 20px 32px #2563eb47}.btn-primary:disabled{opacity:.65;cursor:not-allowed;transform:none;box-shadow:none}.admin-profile-sidepanel{display:grid;gap:20px}.admin-side-card{position:relative;overflow:hidden;padding:22px;border-radius:24px;background:#ffffffeb;border:1px solid rgba(148,163,184,.18);box-shadow:0 18px 40px #0f172a14}.admin-side-card h3{margin:10px 0;font-size:20px;line-height:1.15;letter-spacing:-.03em}.admin-side-card p{margin:0;color:#475569;font-size:13px;line-height:1.7}.admin-side-list{margin:16px 0 0;padding-left:18px;color:#334155;font-size:13px;line-height:1.8}.admin-side-card-accent{background:radial-gradient(360px 160px at 100% 0%,rgba(37,99,235,.16),transparent 58%),linear-gradient(180deg,#fffffff5,#eff6ffe6)}.admin-side-pill{display:inline-flex;align-items:center;margin-top:18px;padding:8px 12px;border-radius:999px;background:#2563eb1a;color:#1d4ed8;border:1px solid rgba(37,99,235,.14);font-size:12px;font-weight:800}@media(max-width:1080px){.admin-profile-hero,.admin-profile-grid,.profile-sections{grid-template-columns:1fr}}@media(max-width:640px){.admin-profile-page{padding:16px}.admin-profile-hero,.profile-section,.admin-side-card{padding:18px;border-radius:20px}.btn-primary{width:100%}.admin-account-line{flex-direction:column;align-items:flex-start}}.student-profile-page{max-width:1240px;margin:0 auto;padding:24px;color:#0f172a}.student-profile-loading{min-height:420px;display:flex;align-items:center;justify-content:center}.student-profile-hero{position:relative;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.85fr);gap:18px;padding:24px;border-radius:28px;overflow:hidden;background:radial-gradient(620px 240px at 0% 0%,rgba(37,99,235,.2),transparent 60%),radial-gradient(520px 240px at 100% 0%,rgba(99,102,241,.14),transparent 58%),linear-gradient(135deg,#fffffff5,#f8fafce6);border:1px solid rgba(148,163,184,.18);box-shadow:0 28px 70px #0f172a1f}.student-profile-kicker,.profile-section-kicker,.student-side-kicker{font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#2563eb}.student-profile-heroText h2{margin:10px 0;font-size:clamp(30px,4vw,44px);line-height:1;letter-spacing:-.04em}.student-profile-lead{max-width:620px;margin:0;font-size:14px;line-height:1.7;color:#475569}.student-profile-badgeCard{display:flex;flex-direction:column;justify-content:space-between;min-height:190px;padding:20px;border-radius:22px;background:linear-gradient(160deg,#2563ebeb,#6366f1db);color:#eff6ff;box-shadow:0 20px 45px #2563eb47}.student-profile-badgeLabel{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#dbeafed9}.student-profile-badgeValue{margin-top:14px;font-size:28px;font-weight:800;letter-spacing:-.03em;word-break:break-word}.student-profile-badgeSub{margin-top:auto;padding-top:16px;font-size:13px;line-height:1.6;color:#dbeafee0}.student-profile-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.85fr);gap:20px;margin-top:20px}.student-account-card{display:grid;gap:12px;padding:16px;border-radius:18px;background:#f8fafcf2;border:1px solid rgba(148,163,184,.16)}.student-account-line{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:12px;border-bottom:1px solid rgba(148,163,184,.12)}.student-account-line:last-child{border-bottom:0;padding-bottom:0}.student-account-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#64748b}.student-account-line strong{font-size:14px;color:#0f172a}.student-profile-sidepanel{display:grid;gap:20px}.student-side-card{padding:22px;border-radius:24px;background:#ffffffeb;border:1px solid rgba(148,163,184,.18);box-shadow:0 18px 40px #0f172a14}.student-side-card h3{margin:10px 0;font-size:20px;line-height:1.15;letter-spacing:-.03em}.student-side-card p{margin:0;color:#475569;font-size:13px;line-height:1.7}.student-side-list{margin:16px 0 0;padding-left:18px;color:#334155;font-size:13px;line-height:1.8}.student-side-card-accent{background:radial-gradient(360px 160px at 100% 0%,rgba(37,99,235,.16),transparent 58%),linear-gradient(180deg,#fffffff5,#eff6ffe6)}.student-side-pill{display:inline-flex;align-items:center;margin-top:18px;padding:8px 12px;border-radius:999px;background:#2563eb1a;color:#1d4ed8;border:1px solid rgba(37,99,235,.14);font-size:12px;font-weight:800}@media(max-width:1080px){.student-profile-hero,.student-profile-grid,.profile-sections{grid-template-columns:1fr}}@media(max-width:640px){.student-profile-page{padding:16px}.student-profile-hero,.profile-section,.student-side-card{padding:18px;border-radius:20px}.btn-primary{width:100%}.student-account-line{flex-direction:column;align-items:flex-start}}.teacher-profile-page{max-width:1240px;margin:0 auto;padding:24px;color:#0f172a}.teacher-profile-loading{min-height:420px;display:flex;align-items:center;justify-content:center}.teacher-profile-hero{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.85fr);gap:18px;padding:24px;border-radius:28px;background:radial-gradient(620px 240px at 0% 0%,rgba(37,99,235,.2),transparent 60%),radial-gradient(520px 240px at 100% 0%,rgba(99,102,241,.16),transparent 58%),linear-gradient(135deg,#fffffff5,#f8fafce6);border:1px solid rgba(148,163,184,.18);box-shadow:0 28px 70px #0f172a1f}.teacher-profile-kicker,.profile-section-kicker,.teacher-side-kicker{font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#2563eb}.teacher-profile-heroText h2{margin:10px 0;font-size:clamp(30px,4vw,44px);line-height:1;letter-spacing:-.04em}.teacher-profile-lead{max-width:620px;margin:0;font-size:14px;line-height:1.7;color:#475569}.teacher-profile-badgeCard{display:flex;flex-direction:column;justify-content:space-between;min-height:190px;padding:20px;border-radius:22px;background:linear-gradient(160deg,#2563ebeb,#6366f1db);color:#eff6ff;box-shadow:0 20px 45px #2563eb47}.teacher-profile-badgeLabel{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#dbeafed9}.teacher-profile-badgeValue{margin-top:14px;font-size:28px;font-weight:800;letter-spacing:-.03em}.teacher-profile-badgeSub{margin-top:auto;padding-top:16px;font-size:13px;line-height:1.6;color:#dbeafee0}.message{margin-top:18px;padding:14px 16px;border-radius:16px;border:1px solid transparent;font-size:13px;font-weight:700}.message.success{background:#dcfce7eb;color:#166534;border-color:#22c55e2e}.message.error{background:#fee2e2f0;color:#991b1b;border-color:#ef44442e}.loading-spinner{padding:40px;color:#64748b;font-weight:700}.teacher-profile-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.85fr);gap:20px;margin-top:20px}.profile-sections{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}.profile-section{position:relative;overflow:hidden;background:#ffffffe6;border:1px solid rgba(148,163,184,.18);border-radius:24px;padding:22px;box-shadow:0 18px 40px #0f172a14}.profile-section:before{content:"";position:absolute;inset:0 auto auto 0;width:100%;height:4px;background:linear-gradient(90deg,#2563ebe6,#6366f1d1)}.profile-section-highlight{background:radial-gradient(420px 180px at 0% 0%,rgba(59,130,246,.12),transparent 60%),#ffffffeb}.profile-section-security{background:radial-gradient(420px 180px at 100% 0%,rgba(99,102,241,.12),transparent 60%),#ffffffeb}.profile-section-email{background:radial-gradient(420px 180px at 0% 100%,rgba(239,68,68,.1),transparent 60%),#ffffffeb}.profile-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:18px}.profile-section h3{margin:8px 0 0;font-size:22px;line-height:1.1;letter-spacing:-.03em;color:#0f172a}.profile-section-orb{width:48px;height:48px;border-radius:999px;background:radial-gradient(circle at 30% 30%,#fffffff2,#3b82f62e 45%,#6366f159)}.teacher-account-card{display:grid;gap:12px;padding:16px;border-radius:18px;background:#f8fafcf2;border:1px solid rgba(148,163,184,.16)}.teacher-account-line{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:12px;border-bottom:1px solid rgba(148,163,184,.12)}.teacher-account-line:last-child{border-bottom:0;padding-bottom:0}.teacher-account-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#64748b}.teacher-account-line strong{font-size:14px;color:#0f172a}.form-group{margin-bottom:16px}.form-group label{display:block;margin-bottom:7px;font-size:13px;font-weight:700;color:#1e293b}.form-group input{width:100%;height:46px;padding:0 14px;border:1px solid rgba(148,163,184,.24);border-radius:14px;background:#fffffff2;color:#0f172a;font-size:14px}.form-group input:focus{outline:none;border-color:#2563eb73;box-shadow:0 0 0 4px #2563eb1f}.password-hint{display:block;margin-top:6px;color:#64748b;font-size:12px;line-height:1.5}.btn-primary{min-width:180px;height:46px;border:0;border-radius:14px;padding:0 18px;cursor:pointer;font-size:13px;font-weight:800;letter-spacing:.01em;color:#eff6ff;background:linear-gradient(135deg,#2563ebf5,#6366f1e6);box-shadow:0 16px 30px #2563eb3d}.btn-primary:hover:not(:disabled){transform:translateY(-1px)}.btn-primary:disabled{opacity:.65;cursor:not-allowed;box-shadow:none}.teacher-profile-sidepanel{display:grid;gap:20px}.teacher-side-card{padding:22px;border-radius:24px;background:#ffffffeb;border:1px solid rgba(148,163,184,.18);box-shadow:0 18px 40px #0f172a14}.teacher-side-card h3{margin:10px 0;font-size:20px;line-height:1.15;letter-spacing:-.03em}.teacher-side-card p{margin:0;color:#475569;font-size:13px;line-height:1.7}.teacher-side-list{margin:16px 0 0;padding-left:18px;color:#334155;font-size:13px;line-height:1.8}.teacher-side-card-accent{background:radial-gradient(360px 160px at 100% 0%,rgba(37,99,235,.16),transparent 58%),linear-gradient(180deg,#fffffff5,#eff6ffe6)}.teacher-side-pill{display:inline-flex;align-items:center;margin-top:18px;padding:8px 12px;border-radius:999px;background:#2563eb1a;color:#1d4ed8;border:1px solid rgba(37,99,235,.14);font-size:12px;font-weight:800}@media(max-width:1080px){.teacher-profile-hero,.teacher-profile-grid,.profile-sections{grid-template-columns:1fr}}@media(max-width:640px){.teacher-profile-page{padding:16px}.teacher-profile-hero,.profile-section,.teacher-side-card{padding:18px;border-radius:20px}.btn-primary{width:100%}.teacher-account-line{flex-direction:column;align-items:flex-start}}.fpPage{min-height:100vh;display:grid;place-items:center;padding:24px 16px;background:linear-gradient(160deg,#edf4ff,#dbeafe 42%,#f8fafc)}.fpCard{width:min(480px,92vw);background:#fffffff5;border:1px solid rgba(15,23,42,.08);border-radius:18px;box-shadow:0 20px 50px #0f172a24;padding:28px}.fpHeader{text-align:center;margin-bottom:18px}.fpLogo{width:56px;height:56px;object-fit:contain;margin-bottom:10px}.fpTitle{margin:0;font-size:28px;color:#0f172a}.fpSubtitle{margin:8px auto 0;max-width:340px;color:#0f172aa6;font-size:14px;line-height:1.5}.fpForm{display:grid;gap:14px}.fpField label{display:block;margin-bottom:6px;font-size:13px;color:#0f172ab3}.fpField input{width:100%;height:46px;border-radius:12px;border:1px solid rgba(15,23,42,.12);padding:0 14px;font-size:14px}.fpField input:focus{outline:none;border-color:#1976d273;box-shadow:0 0 0 4px #1976d21f}.fpSubmitBtn{height:46px;border:0;border-radius:12px;background:#1976d2;color:#fff;font-weight:700;cursor:pointer}.fpSubmitBtn:disabled{opacity:.7;cursor:not-allowed}.fpError,.fpSuccess{padding:11px 12px;border-radius:12px;font-size:13px}.fpError{background:#dc26261a;border:1px solid rgba(220,38,38,.18);color:#b91c1c}.fpSuccess{background:#16a34a1a;border:1px solid rgba(22,163,74,.18);color:#166534}.fpLoginLink{margin-top:18px;text-align:center}.fpLoginLink a{color:#1976d2;text-decoration:none;font-weight:600}.rpPage{min-height:100vh;display:grid;place-items:center;padding:24px 16px;background:linear-gradient(180deg,#eff6ff,#f8fafc)}.rpCard{width:min(520px,92vw);background:#fffffff5;border-radius:18px;border:1px solid rgba(15,23,42,.08);box-shadow:0 20px 52px #0f172a24;padding:28px}.rpHeader{text-align:center;margin-bottom:18px}.rpLogo{width:56px;height:56px;object-fit:contain;margin-bottom:10px}.rpTitle{margin:0;font-size:28px;color:#0f172a}.rpSubtitle{margin:8px auto 0;max-width:360px;color:#0f172aa6;font-size:14px;line-height:1.5}.rpInfo,.rpError,.rpSuccess{padding:12px 13px;border-radius:12px;font-size:13px}.rpInfo{background:#2563eb14;color:#1d4ed8}.rpError{background:#dc26261a;border:1px solid rgba(220,38,38,.18);color:#b91c1c}.rpSuccess{background:#16a34a1a;border:1px solid rgba(22,163,74,.18);color:#166534}.rpForm{display:grid;gap:14px}.rpField label{display:block;margin-bottom:6px;font-size:13px;color:#0f172ab3}.rpField input{width:100%;height:46px;border-radius:12px;border:1px solid rgba(15,23,42,.12);padding:0 14px;font-size:14px}.rpField input:focus{outline:none;border-color:#1976d273;box-shadow:0 0 0 4px #1976d21f}.rpRequirements{padding:12px 14px;border-radius:14px;background:#0f172a0a}.rpRequirementsTitle{font-weight:700;font-size:13px;margin-bottom:8px;color:#0f172a}.rpRequirementsList{margin:0;padding-left:18px;display:grid;gap:6px;color:#0f172ab3;font-size:13px}.rpRequirementsList li.valid{color:#166534}.rpSubmitBtn{height:46px;border:0;border-radius:12px;background:#1976d2;color:#fff;font-weight:700;cursor:pointer}.rpSubmitBtn:disabled{opacity:.7;cursor:not-allowed}.rpLoginLink{text-align:center;margin-top:6px}.rpLoginLink a{color:#1976d2;text-decoration:none;font-weight:600}.spsPage{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1e3a5f,#2d5a87,#1e3a5f);padding:20px}.spsCard{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;width:100%;max-width:420px;padding:40px}.spsHeader{text-align:center;margin-bottom:32px}.spsLogo{width:64px;height:64px;margin-bottom:16px}.spsTitle{font-size:24px;font-weight:700;color:#1e293b;margin:0 0 8px}.spsSubtitle{font-size:14px;color:#64748b;margin:0}.spsUserInfo{background:#f1f5f9;border-radius:12px;padding:16px;margin-bottom:24px}.spsUserLabel{font-size:12px;color:#64748b;margin-bottom:4px}.spsUserName{font-size:16px;font-weight:600;color:#1e293b}.spsForm{display:flex;flex-direction:column;gap:20px}.spsField{display:flex;flex-direction:column;gap:6px}.spsField label{font-size:13px;font-weight:600;color:#374151}.spsField input{height:44px;padding:0 14px;border:1px solid #d1d5db;border-radius:10px;font-size:14px;color:#1f2937;transition:border-color .2s,box-shadow .2s}.spsField input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626}.spsField input::placeholder{color:#9ca3af}.spsRequirements{background:#fef3c7;border:1px solid #fcd34d;border-radius:10px;padding:14px}.spsRequirementsTitle{font-size:13px;font-weight:600;color:#92400e;margin-bottom:8px}.spsRequirementsList{font-size:12px;color:#b45309;margin:0;padding-left:16px}.spsRequirementsList li{margin-bottom:4px}.spsRequirementsList li.valid{color:#166534}.spsError{background:#fee2e2;border:1px solid #fecaca;border-radius:10px;padding:12px;color:#dc2626;font-size:13px;text-align:center}.spsSuccess{background:#dcfce7;border:1px solid #bbf7d0;border-radius:10px;padding:12px;color:#166534;font-size:13px;text-align:center}.spsSubmitBtn{height:48px;background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:10px;color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.spsSubmitBtn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 8px 20px #2563eb4d}.spsSubmitBtn:disabled{opacity:.7;cursor:not-allowed}.spsLoginLink{text-align:center;margin-top:20px;font-size:13px;color:#64748b}.spsLoginLink a{color:#3b82f6;text-decoration:none;font-weight:500}.spsLoginLink a:hover{text-decoration:underline}.tpsPage{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a365d,#2c5282,#2b6cb0);padding:20px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.tpsCard{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;padding:40px;width:100%;max-width:440px;animation:slideUp .4s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.tpsHeader{text-align:center;margin-bottom:30px}.tpsLogo{width:80px;height:80px;object-fit:contain;margin-bottom:16px;border-radius:50%;box-shadow:0 4px 12px #0000001a}.tpsTitle{color:#1a365d;font-size:28px;font-weight:700;margin:0 0 8px}.tpsSubtitle{color:#4a5568;font-size:15px;margin:0}.tpsUserInfo{background:#f7fafc;border-radius:10px;padding:16px;margin-bottom:24px;text-align:center;border:1px solid #e2e8f0}.tpsUserLabel{font-size:12px;text-transform:uppercase;letter-spacing:1px;color:#718096;margin-bottom:4px}.tpsUserName{font-size:18px;font-weight:600;color:#2d3748}.tpsForm{display:flex;flex-direction:column;gap:20px}.tpsField{display:flex;flex-direction:column;gap:8px}.tpsField label{font-size:14px;font-weight:600;color:#2d3748}.tpsField input{padding:14px 16px;border:2px solid #e2e8f0;border-radius:10px;font-size:15px;transition:all .2s ease;background:#fafbfc}.tpsField input:focus{outline:none;border-color:#3182ce;background:#fff;box-shadow:0 0 0 3px #3182ce26}.tpsField input:disabled{background:#f7fafc;cursor:not-allowed}.tpsRequirements{background:#fff5f5;border-radius:10px;padding:16px;border:1px solid #fed7d7}.tpsRequirementsTitle{font-size:13px;font-weight:600;color:#c53030;margin-bottom:10px}.tpsRequirementsList{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:6px;font-size:13px;color:#c53030}.tpsRequirementsList li.valid{color:#276749}.tpsRequirementsList li:before{content:none}.tpsError{background:#fff5f5;color:#c53030;padding:12px 16px;border-radius:8px;font-size:14px;text-align:center;border:1px solid #fed7d7}.tpsSubmitBtn{background:linear-gradient(135deg,#3182ce,#2c5282);color:#fff;border:none;padding:16px 24px;border-radius:10px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:0 4px 12px #3182ce66}.tpsSubmitBtn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 16px #3182ce80}.tpsSubmitBtn:active:not(:disabled){transform:translateY(0)}.tpsSubmitBtn:disabled{background:#cbd5e0;cursor:not-allowed;box-shadow:none}.tpsSuccess{background:#f0fff4;color:#276749;padding:20px;border-radius:10px;text-align:center;font-size:16px;font-weight:600;border:1px solid #9ae6b4;animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.tpsLoginLink{text-align:center;margin-top:24px}.tpsLoginLink a{color:#3182ce;text-decoration:none;font-size:14px;font-weight:500;transition:color .2s ease}.tpsLoginLink a:hover{color:#2c5282;text-decoration:underline}
