:root{--bg:#f7f7f5;--surface:#fff;--surface-2:#f6f7f9;--border:#e3e5e8;--text:#3d4249;--text-strong:#15181c;--text-muted:#6b7280;--accent:#2563eb;--accent-bg:#eef3fd;--ok-text:#166534;--ok-bg:#dcfce7;--warn-text:#9a3412;--warn-bg:#ffedd5;color:var(--text);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;-webkit-font-smoothing:antialiased;font-family:system-ui,Segoe UI,Roboto,sans-serif;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#111317;--surface:#181b20;--surface-2:#1e2228;--border:#2d323a;--text:#c9cdd3;--text-strong:#f1f3f5;--text-muted:#8b929c;--accent:#6b9bff;--accent-bg:#1a2436;--ok-text:#86efac;--ok-bg:#12301f;--warn-text:#fdba74;--warn-bg:#3a2312}}*{box-sizing:border-box}body{background:var(--bg);margin:0}.course-menu{z-index:50;background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;font-size:14px;display:flex;position:fixed;overflow:hidden;box-shadow:0 12px 32px #00000024,0 2px 6px #0000000f}.course-menu ul{overscroll-behavior:contain;flex:auto;min-height:0;margin:0;padding:0 0 6px;list-style:none;overflow-y:auto}.course-menu-group{z-index:1;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);background:var(--surface);border-bottom:1px solid var(--border);padding:8px 12px 4px;font-size:11px;font-weight:700;position:sticky;top:0}.course-menu-item{cursor:pointer;border-radius:6px;grid-template-columns:1fr auto auto;align-items:center;gap:8px;margin:2px 6px 0;padding:7px 8px;display:grid}.course-menu ul>li:first-child .course-menu-item{margin-top:6px}.course-menu-item.active{background:var(--accent-bg)}.course-menu-item.selected .course-menu-name{color:var(--accent);font-weight:600}.course-menu-name{color:var(--text-strong);line-height:1.3}.course-menu-tag{letter-spacing:.03em;white-space:nowrap;border-radius:999px;padding:1px 6px;font-size:10px;font-weight:700}.tag-honors{color:var(--ok-text);background:var(--ok-bg)}.tag-ap{color:var(--warn-text);background:var(--warn-bg)}.course-menu-meta{color:var(--text-muted);white-space:nowrap;font-variant-numeric:tabular-nums;grid-column:3;font-size:12px}.course-menu-empty{color:var(--text-muted);padding:10px 14px;font-size:13px}.course-menu-hint{border-top:1px solid var(--border);color:var(--text-muted);background:var(--surface-2);flex:none;padding:7px 12px;font-size:12px}.table-scroll{border:1px solid var(--border);background:var(--surface);border-radius:10px;overflow-x:auto}.plan-table{border-collapse:collapse;width:100%;min-width:1120px;font-size:14px}.plan-table th,.plan-table td{border-bottom:1px solid var(--border);vertical-align:top;text-align:left;padding:8px 10px}.plan-table thead th{background:var(--surface-2);color:var(--text-strong);font-size:13px;font-weight:600;position:sticky;top:0}.th-sub{color:var(--text-muted);font-size:12px;font-weight:400;display:block}.subject{width:190px;color:var(--text-strong)}.subject-name{font-weight:600;display:block}.note{color:var(--text-muted);margin-top:2px;font-size:12px;font-weight:400;line-height:1.35;display:block}.muted{color:var(--text-muted);font-size:13px}.course-cell{width:172px}.course-cell input,.course-cell select{width:100%;font:inherit;color:var(--text-strong);background:var(--bg);border:1px solid var(--border);border-radius:6px}.course-cell input{padding:6px 8px}.course-cell input:focus,.course-cell select:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:#0000}.course-cell select{color:var(--text-muted);margin-top:4px;padding:2px 4px;font-size:12px}.course-cell.auto input{border-color:var(--accent);background:var(--accent-bg)}.required-tag{color:var(--accent);margin-top:4px;margin-right:6px;font-size:11px;font-weight:600;display:inline-block}.course-cell select:disabled{opacity:.45}.semester-slot+.semester-slot{margin-top:6px}.semester-label{color:var(--text-muted);margin-top:2px;font-size:11px;display:block}.req-cell{background:var(--surface-2);width:190px}.req-line{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.uc-label{color:var(--text-strong);font-weight:500}.nums{font-variant-numeric:tabular-nums;color:var(--text-strong);font-weight:600}.badge{white-space:nowrap;border-radius:999px;padding:1px 7px;font-size:11px;font-weight:600}.badge-met{color:var(--ok-text);background:var(--ok-bg)}.badge-short{color:var(--warn-text);background:var(--warn-bg)}.badge-optional{color:var(--text-muted);background:var(--border)}.divider td{background:var(--accent-bg);color:var(--text);border-top:2px solid var(--accent);font-size:13px}.row-selective .subject{border-left:3px solid var(--accent)}.plan-table tfoot th,.plan-table tfoot td{border-top:2px solid var(--text-strong);border-bottom:none}.total .nums{font-size:16px}.total.over .nums{color:var(--warn-text)}.course-cell input.has-options{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;padding-right:22px}.course-cell.auto input.has-options{background-color:var(--accent-bg)}.outside-ap-toggle{color:var(--text);cursor:pointer;align-items:center;gap:8px;margin-top:12px;font-size:14px;display:inline-flex}.outside-ap-toggle input{width:16px;height:16px;accent-color:var(--accent)}.profile{align-items:center;gap:10px;display:flex;position:relative}.signin-button{font:inherit;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;border-radius:8px;padding:8px 14px;font-size:14px;font-weight:600}.profile-button{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text-strong);cursor:pointer;border-radius:999px;align-items:center;gap:10px;padding:5px 10px 5px 5px;display:flex}.profile-button:hover,.profile-button[aria-expanded=true]{border-color:var(--accent)}.avatar{object-fit:cover;width:32px;height:32px;color:var(--accent);background:var(--accent-bg);border-radius:50%;flex:none;place-items:center;font-size:13px;font-weight:700;display:grid}.profile-text{flex-direction:column;align-items:flex-start;max-width:160px;line-height:1.15;display:flex}.profile-label{color:var(--text-muted);font-size:11px}.profile-student{text-overflow:ellipsis;white-space:nowrap;max-width:160px;font-size:14px;font-weight:600;overflow:hidden}.chevron{color:var(--text-muted)}.profile-menu{z-index:40;background:var(--surface);border:1px solid var(--border);border-radius:12px;width:300px;font-size:14px;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden;box-shadow:0 12px 32px #00000024,0 2px 6px #0000000f}.profile-account{border-bottom:1px solid var(--border);flex-direction:column;gap:2px;padding:14px 16px 12px;display:flex}.account-name{color:var(--text-strong);font-weight:600}.account-email{color:var(--text-muted);font-size:12px}.save-state{margin-top:6px;font-size:12px}.save-saved{color:var(--ok-text)}.save-saving{color:var(--text-muted)}.save-error{color:var(--warn-text)}.menu-section-title{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);padding:10px 16px 4px;font-size:11px;font-weight:700}.student-list{max-height:220px;margin:0;padding:0 6px;list-style:none;overflow-y:auto}.student{width:100%;font:inherit;text-align:left;color:var(--text-strong);cursor:pointer;background:0 0;border:none;border-radius:8px;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.student:hover{background:var(--surface-2)}.student.current{background:var(--accent-bg)}.student-dot{border:2px solid var(--border);border-radius:50%;width:10px;height:10px}.student.current .student-dot{border-color:var(--accent);background:var(--accent)}.student-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.student-meta{color:var(--text-muted);font-size:12px}.menu-actions,.menu-footer{flex-direction:column;padding:6px;display:flex}.menu-actions{border-bottom:1px solid var(--border)}.menu-actions button,.menu-footer button{font:inherit;text-align:left;color:var(--text-strong);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:8px 10px}.menu-actions button:hover,.menu-footer button:hover{background:var(--surface-2)}.menu-actions .danger{color:var(--warn-text)}.menu-footer .account-email{padding:8px 10px}.student-form{border-bottom:1px solid var(--border);align-items:center;gap:6px;padding:8px 12px 12px;display:flex}.student-form input{min-width:0;font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text-strong);border-radius:8px;flex:1;padding:7px 9px}.student-form button{font:inherit;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;border-radius:8px;padding:7px 10px;font-size:13px}.student-form button:disabled{opacity:.5;cursor:default}.student-form .link{color:var(--text-muted);background:0 0;border:none}.signin-dialog{border:1px solid var(--border);background:var(--surface);width:min(400px,100vw - 32px);color:var(--text);border-radius:14px;padding:28px 28px 22px;box-shadow:0 24px 60px #00000040}.signin-dialog::backdrop{background:#0f121673}.signin-dialog h2{color:var(--text-strong);margin:0 0 4px;font-size:22px}.dialog-lead{margin:0 0 20px;font-size:14px}.dialog-close{width:32px;height:32px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:8px;font-size:22px;line-height:1;position:absolute;top:10px;right:12px}.dialog-close:hover{background:var(--surface-2)}.google-button{width:100%;font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text-strong);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:10px;padding:10px 14px;font-weight:600;display:flex}.google-button:hover{border-color:var(--accent)}.divider{color:var(--text-muted);align-items:center;gap:12px;margin:18px 0;font-size:12px;display:flex}.divider:before,.divider:after{content:"";background:var(--border);flex:1;height:1px}.email-form{flex-direction:column;gap:10px;display:flex}.email-form label{color:var(--text-strong);flex-direction:column;gap:4px;font-size:13px;font-weight:600;display:flex}.email-form input{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text-strong);border-radius:8px;padding:9px 11px;font-weight:400}.email-form button{font:inherit;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;border-radius:8px;padding:10px 14px;font-weight:600}.email-form button:disabled{opacity:.6}.email-sent{background:var(--ok-bg);color:var(--ok-text);border-radius:8px;padding:12px 14px;font-size:14px}.dialog-error{color:var(--warn-text);font-size:13px}.privacy-note{color:var(--text-muted);margin:18px 0 0;font-size:12px;line-height:1.45}@media (width<=640px){.profile-text{display:none}}.admin-head{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px;display:flex}.admin h2{color:var(--text-strong);margin:6px 0 2px;font-size:24px}.admin h3{color:var(--text-strong);margin:0 0 10px;font-size:15px}.admin-asof,.admin-footnote{color:var(--text-muted);margin:0;font-size:13px}.admin-footnote{margin-top:18px}.back-link,.refresh,.chart-toggle{font:inherit;cursor:pointer;font-size:13px}.back-link{color:var(--accent);background:0 0;border:none;padding:0}.refresh,.chart-toggle{border:1px solid var(--border);background:var(--surface);color:var(--text-strong);border-radius:8px;padding:6px 12px}.refresh:hover,.chart-toggle:hover{border-color:var(--accent)}.hero-stat,.tile,.chart,.breakdown{background:var(--surface);border:1px solid var(--border);border-radius:12px}.hero-stat{margin-bottom:12px;padding:18px 20px}.hero-value{color:var(--text-strong);font-size:52px;font-weight:600;line-height:1.1}.tiles{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:12px;display:grid}.tile{padding:14px 16px}.tile-label{color:var(--text-muted);font-size:13px}.tile-value{color:var(--text-strong);margin-top:2px;font-size:28px;font-weight:600}.tile-note{color:var(--text-muted);margin-top:2px;font-size:12px}.charts{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:12px;margin-bottom:12px;display:grid}.chart{min-width:0;margin:0;padding:14px 16px 10px}.chart-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:6px;display:flex}.chart-title{color:var(--text-strong);font-size:15px;font-weight:600}.chart-subtitle{color:var(--text-muted);font-size:12px}.chart-plot{position:relative}.chart-plot svg{width:100%;height:auto;display:block}.chart .grid{stroke:var(--border);stroke-width:1px;shape-rendering:crispedges}.chart .axis{fill:var(--text-muted);font-variant-numeric:tabular-nums;font-size:11px}.chart .bar{fill:var(--accent);transition:opacity .12s}.chart .bar.dim{opacity:.35}.chart .hit{fill:#0000;cursor:default}.chart-tooltip{pointer-events:none;white-space:nowrap;background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:6px 10px;font-size:12px;position:absolute;transform:translate(-50%,calc(-100% - 10px));box-shadow:0 6px 18px #00000024}.tip-label{color:var(--text-strong);font-weight:600}.tip-key{background:var(--accent);border-radius:2px;width:8px;height:8px;margin-right:6px;display:inline-block}.chart-table-wrap{max-height:220px;overflow-y:auto}.breakdowns{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px;display:grid}.breakdown{padding:14px 16px}.chart-table{border-collapse:collapse;width:100%;font-size:14px}.chart-table th,.chart-table td{text-align:left;border-bottom:1px solid var(--border);padding:6px 8px}.chart-table th{color:var(--text-muted);font-size:12px;font-weight:600}.chart-table td{color:var(--text-strong)}.chart-table .num{text-align:right;font-variant-numeric:tabular-nums}.chart-table th:last-child{text-align:right}.chart-table .empty{color:var(--text-muted);text-align:left}.page{max-width:1280px;margin:0 auto;padding:32px 16px 48px}.hero{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.hero-text{min-width:0}.hero h1{color:var(--text-strong);letter-spacing:-.01em;margin:0 0 6px;font-size:28px}.hero p{max-width:680px;margin:0 0 20px}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:12px;margin-bottom:14px;display:flex}.toolbar label{color:var(--text-strong);flex-direction:column;gap:4px;font-size:13px;font-weight:600;display:flex}.toolbar-selects{flex-wrap:wrap;align-items:start;gap:12px;display:flex}.toolbar select{max-width:340px}.field-hint{color:var(--text-muted);font-size:12px;font-weight:400}.notice{border:1px solid var(--border);background:var(--surface);color:var(--text-strong);border-radius:10px;padding:14px 16px}.req-summary{margin:0 0 14px;font-size:14px;font-weight:400}.req-sources{color:var(--text-muted);margin-top:4px;font-size:12px;display:block}.req-sources a{color:var(--accent)}.notice-error{border-color:var(--warn-text);background:var(--warn-bg);color:var(--warn-text)}.school-link{color:var(--accent);font-size:12px;font-weight:400}.toolbar select,.toolbar button{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text-strong);border-radius:8px;padding:7px 12px;font-size:14px}.toolbar button{cursor:pointer}.toolbar button:hover{border-color:var(--accent)}.toolbar-actions{gap:8px;display:flex}.disclaimer{color:var(--text-muted);max-width:820px;margin-top:20px;font-size:13px}.disclaimer a{color:var(--accent)}
