*,:before,:after{box-sizing:border-box}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f7f5fa;--surface:#fff;--surface-alt:#fbf9fd;--hover:#f3eef9;--fill:#f1eef5;--text:#1d1726;--text-2:#5e5770;--text-3:#6b6478;--text-4:#8c859a;--border:#e6e1ee;--border-soft:#eeeaf3;--border-strong:#d9cde8;--border-dashed:#b9a6d3;--brand:#450084;--brand-hover:#2b0052;--brand-deep:#2b0052;--brand-muted:#9d86b8;--brand-tint:#efe7f7;--accent:#450084;--accent-strong:#2b0052;--on-brand:#fff;--topbar-bg:#450084;--gold:#cbb677;--gold-hover:#d9c78e;--on-gold:#2b0052;--gold-text:#8a7a45;--gold-tint:#f4efdf;--gold-border:#ece6d4;--success:#2f6f62;--success-fill:#2f6f62;--success-tint:#e3f0ec;--danger:#b33a3a;--danger-strong:#7e2424;--danger-fill:#b33a3a;--danger-fill-hover:#8f2c2c;--danger-tint:#fbe9e9;--danger-border:#f1dcdc;--warn-tint:#fdf5e4;--warn-border:#b7791f;--warn-text:#7a5212;--prog-gened:#2f6f62;--prog-1:#450084;--prog-2:#b2456e;--prog-3:#2e5c9a;--prog-4:#8a7a45;--prog-elec:#6b6478;--prog-gened-bg:#e3f0ec;--prog-1-bg:#efe7f7;--prog-2-bg:#f8e6ed;--prog-3-bg:#e5edf8;--prog-4-bg:#f4efdf;--prog-elec-bg:#f1eef5;--shadow-rgb:43, 0, 82;--overlay-rgb:29, 23, 38}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#131019;--surface:#1d1925;--surface-alt:#18151f;--hover:#2a2436;--fill:#27222f;--text:#ece8f2;--text-2:#bbb3c9;--text-3:#a39bb2;--text-4:#847c93;--border:#322c3d;--border-soft:#2a2533;--border-strong:#463d55;--border-dashed:#5d4e75;--brand:#5b1ba6;--brand-hover:#6e2fbd;--brand-deep:#241338;--brand-muted:#4a3d5c;--brand-tint:#2e2142;--accent:#c3a3f2;--accent-strong:#dcc8fa;--on-brand:#fff;--topbar-bg:#2a1545;--gold:#cbb677;--gold-hover:#d9c78e;--on-gold:#2b0052;--gold-text:#d6c38a;--gold-tint:#2f2a1c;--gold-border:#3d3726;--success:#6cc2ae;--success-fill:#3a8a78;--success-tint:#1a2e29;--danger:#f08a8a;--danger-strong:#f7b0b0;--danger-fill:#b33a3a;--danger-fill-hover:#c94848;--danger-tint:#33191c;--danger-border:#4a2427;--warn-tint:#31281a;--warn-border:#d9a04a;--warn-text:#e8c07a;--prog-gened:#6cc2ae;--prog-1:#b58bef;--prog-2:#e88aae;--prog-3:#7fa8e6;--prog-4:#d6c38a;--prog-elec:#a39bb2;--prog-gened-bg:#1a2e29;--prog-1-bg:#2e2142;--prog-2-bg:#3a1e29;--prog-3-bg:#1c2638;--prog-4-bg:#2f2a1c;--prog-elec-bg:#27222f;--shadow-rgb:0, 0, 0;--overlay-rgb:0, 0, 0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:Rubik,sans-serif}button,input{font-family:inherit}select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--text-3) 50%), linear-gradient(135deg, var(--text-3) 50%, transparent 50%);cursor:pointer;background-position:calc(100% - 17px),calc(100% - 12px);background-repeat:no-repeat;background-size:5px 5px}select:disabled{cursor:default;opacity:.6}a{color:var(--accent)}a:hover{color:var(--accent-strong)}.app{--topbar-h:64px;background:var(--bg);flex-direction:column;height:100%;display:flex;position:relative;overflow:hidden}.spacer{flex:1}.summary{align-items:center;gap:16px;display:flex}.grad{white-space:nowrap;color:#e4d9f0;font-size:14px}.grad b{color:var(--on-brand);font-weight:600}.progress{background:#fff3;border-radius:4px;width:180px;height:8px;display:flex;overflow:hidden}.progress>div{flex-shrink:0;height:100%}.credits{white-space:nowrap;font-size:14px}.drawer-top,.backdrop{display:none}.body{flex:1;min-height:0;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:16px;width:290px;padding:24px 20px;display:flex;overflow-y:auto}.eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);font-size:12px;font-weight:600}.prog-list{flex-direction:column;gap:10px;display:flex}.prog-card{border:1.5px solid var(--border);cursor:pointer;border-radius:12px;flex-direction:column;gap:8px;padding:12px 14px;display:flex}.prog-head{align-items:flex-start;gap:8px;display:flex}.prog-title{flex:1;min-width:0}.prog-kind{text-transform:uppercase;letter-spacing:.06em;font-size:11px;font-weight:600}.prog-name{font-size:15px;font-weight:500}.icon-btn{color:var(--text-4);cursor:pointer;background:0 0;border:none;padding:0;font-size:18px;line-height:1}.icon-btn:hover{color:var(--accent)}.bar{background:var(--fill);border-radius:3px;height:6px;overflow:hidden}.bar>div{height:100%}.prog-meta{color:var(--text-3);font-size:12px}.add-wrap{position:relative}.add-btn{border:1.5px dashed var(--border-dashed);background:var(--surface-alt);width:100%;color:var(--accent);cursor:pointer;border-radius:12px;padding:11px;font-size:14px;font-weight:500}.menu{background:var(--surface);border:1px solid var(--border);box-shadow:0 12px 30px rgba(var(--shadow-rgb), .15);z-index:5;border-radius:12px;flex-direction:column;gap:4px;padding:6px;display:flex;position:absolute;top:50px;left:0;right:0}.menu input{border:1px solid var(--border);color:var(--accent-strong);border-radius:8px;outline:none;padding:9px 10px;font-size:14px}.menu input:focus{border-color:var(--accent)}.menu-note{color:var(--text-3);padding:10px;font-size:13px}.menu-item{text-align:left;cursor:pointer;color:var(--text);background:0 0;border:none;border-radius:8px;padding:10px;font-size:14px}.menu-item:hover{background:var(--hover)}.menu-item b{font-weight:500}.menu-item span{color:var(--text-3)}.menu-note .setup-issues{margin-top:8px}.menu-error,.dialog-error{color:var(--danger);font-size:13px}.dialog-backdrop{background:rgba(var(--overlay-rgb), .45);z-index:60;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.dialog{background:var(--surface);box-shadow:0 20px 50px rgba(var(--shadow-rgb), .25);border-radius:16px;flex-direction:column;gap:12px;width:100%;max-width:420px;padding:24px;display:flex}.dialog h2{color:var(--text);margin:0;font-size:19px;font-weight:600}.dialog p{color:var(--text-2);margin:0;font-size:14px;line-height:1.5}.dialog-actions{justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.dialog-actions button{cursor:pointer;border-radius:10px;padding:10px 16px;font-size:14px;font-weight:600}.dialog-actions button:disabled{opacity:.6;cursor:default}.dialog-cancel{border:1.5px solid var(--border-strong);background:var(--surface);color:var(--accent)}.dialog-cancel:hover:not(:disabled){background:var(--hover)}.dialog-primary{background:var(--brand);color:var(--on-brand);border:none}.dialog-primary:hover:not(:disabled){background:var(--brand-hover)}.dialog-form{flex-direction:column;gap:12px;display:flex}.dialog-fields{gap:10px;display:flex}.dialog-fields label,.dialog-field{color:var(--text-2);flex-direction:column;flex:1;gap:6px;font-size:13px;font-weight:500;display:flex}.dialog-form select,.dialog-form input{border:1px solid var(--border);color:var(--accent-strong);background-color:var(--surface);border-radius:8px;outline:none;min-width:0;padding:9px 10px;font-family:inherit;font-size:14px}.dialog-form select{padding-right:34px}.dialog-form select:focus,.dialog-form input:focus{border-color:var(--accent)}.dialog-chips{flex-wrap:wrap;gap:6px;display:flex}.dialog-chip{background:var(--hover);color:var(--accent);border-radius:999px;align-items:center;gap:4px;padding:4px 6px 4px 10px;font-size:13px;font-weight:600;display:inline-flex}.dialog-chip button{color:inherit;cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:15px;line-height:1}.dialog-search{flex-direction:column;gap:4px;max-height:320px;display:flex;overflow-y:auto}.dialog-danger{background:var(--danger-fill);color:var(--on-brand);border:none}.dialog-danger:hover:not(:disabled){background:var(--danger-fill-hover)}.ai-card{background:var(--brand-deep);color:var(--on-brand);border-radius:14px;flex-direction:column;gap:10px;padding:16px;display:flex}.ai-eyebrow{color:var(--gold);letter-spacing:.06em;text-transform:uppercase;font-size:12px;font-weight:600}.ai-tip{font-size:14px;line-height:1.45}.ai-btn{background:var(--gold);color:var(--on-gold);cursor:pointer;border:none;border-radius:8px;align-self:flex-start;padding:8px 12px;font-size:13px;font-weight:600}.ai-btn:hover{background:var(--gold-hover)}.sem-view{flex-direction:column;flex:1;gap:14px;min-width:0;padding:20px;display:flex;overflow-y:auto}.sem-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(300px,auto);align-content:start;gap:14px;display:grid}.sem-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;flex-direction:column;gap:8px;min-height:0;padding:12px;display:flex}.sem-head{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.sem-title-row{justify-content:space-between;align-self:stretch;align-items:flex-start;gap:8px;display:flex}.sem-term{white-space:nowrap;font-size:15px;font-weight:600}.sem-year{color:var(--text-3);font-size:13px}.pill{border-radius:10px;padding:3px 7px;font-size:11px;font-weight:500}.pill-done{background:var(--success-tint);color:var(--success)}.pill-now{background:var(--gold-tint);color:var(--gold-text)}.pill-planned{background:var(--fill);color:var(--text-3)}.sem-courses{flex-direction:column;flex:1;gap:5px;min-height:0;display:flex;overflow:auto}.sem-course{background:var(--prog-elec-bg);border-radius:7px;align-items:center;gap:7px;padding:4px 8px;display:flex}.sem-course.course-clickable:hover{background:color-mix(in srgb, var(--prog-elec) 18%, var(--prog-elec-bg))}.dot{border-radius:4px;flex-shrink:0;width:7px;height:7px}.sem-course-name{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:12px;overflow:hidden}.sem-course-name b{font-weight:600}.sem-course.failed .sem-course-name{color:var(--danger);text-decoration:line-through}.sem-course-name span,.cr{color:var(--text-2)}.cr{font-size:11px;font-weight:600}.sem-course-del{opacity:0;font-size:15px}.sem-course:hover .sem-course-del,.sem-course-del:focus-visible{opacity:1}@media (hover:none){.sem-course-del{opacity:1}}.sem-add-course{border:1.5px dashed var(--border-dashed);color:var(--accent-strong);cursor:pointer;background:0 0;border-radius:7px;flex-shrink:0;align-items:center;gap:8px;padding:6px 10px;font-size:12px;font-weight:600;display:flex}.sem-add-course span{font-size:15px;font-weight:400;line-height:1}.sem-add-course:hover{background:var(--hover)}.sem-new{border:1.5px dashed var(--border-dashed);background:var(--surface-alt);color:var(--accent-strong);cursor:pointer;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:10px;font-size:14px;font-weight:600;display:flex}.sem-new:hover{background:var(--hover)}.sem-new-icon{background:var(--brand);width:40px;height:40px;color:var(--on-brand);border-radius:50%;place-items:center;font-size:22px;font-weight:400;display:grid}.sem-new:hover .sem-new-icon{background:var(--brand-hover)}.sem-load{border-top:1px solid var(--border-soft);padding-top:7px;font-size:12px;font-weight:600}.req{flex-direction:column;flex:1;gap:24px;min-width:0;padding:32px 36px;display:flex;overflow:auto}.req-head{align-items:center;gap:28px;display:flex}.ring{flex-shrink:0;width:150px;height:150px;position:relative}.ring-label{justify-content:center;align-items:center;font-size:28px;font-weight:600;display:flex;position:absolute;inset:0}.req-info{flex-direction:column;gap:6px;display:flex}.req-eyebrow{color:var(--gold-text);letter-spacing:.06em;text-transform:uppercase;font-size:13px;font-weight:600}.req-name{font-size:32px;font-weight:600}.req-stats{color:var(--text-2);white-space:nowrap;gap:24px;font-size:14px;display:flex}.req-stats b{color:var(--text);font-weight:600}.req-links{flex-wrap:wrap;gap:8px;margin-top:4px;display:flex}.req-link{border:1px solid var(--border);background:var(--hover);color:var(--accent);border-radius:999px;align-items:center;gap:6px;padding:5px 10px 5px 12px;font-size:12px;font-weight:600;text-decoration:none;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.req-link:hover{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.req-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.req-link-icon{opacity:.75;flex-shrink:0;transition:transform .15s,opacity .15s}.req-link:hover .req-link-icon{opacity:1;transform:translate(1px,-1px)}.audit-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.audit-card{background:var(--surface);border:1px solid var(--gold-border);border-radius:14px;flex-direction:column;gap:10px;padding:16px 18px;display:flex}.audit-head{align-items:center;display:flex}.audit-head span{color:var(--text-3);font-size:12px}.audit-name{flex:1;font-size:16px;font-weight:600}.audit-row{align-items:center;gap:10px;font-size:14px;display:flex}.check{border:1.5px solid var(--border-strong);background:var(--surface);width:18px;height:18px;color:var(--on-brand);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;display:flex}.check-done{background:var(--success-fill);border-color:var(--success-fill)}.check-now{background:var(--gold);border-color:var(--gold)}.audit-code{flex-shrink:0;width:84px;font-weight:500}.audit-title{color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.audit-when{color:var(--text-3);flex-shrink:0;font-size:12px}.chat{--chat-w:820px;--chat-pad:max(20px, calc((100% - var(--chat-w)) / 2));background:var(--surface);flex-direction:column;flex:1;min-height:0;display:flex}.chat-head{padding:16px var(--chat-pad);border-bottom:1px solid var(--border-soft);align-items:center;gap:12px;display:flex}.chat-icon{background:var(--brand-deep);border-radius:10px;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.chat-icon img{width:28px;height:28px;display:block}.chat-title{flex-direction:column;flex:1;gap:2px;display:flex}.chat-title>div:first-child{font-size:16px;font-weight:600}.chat-title>div:last-child{color:var(--text-3);font-size:12px}.chat-msgs{padding:24px var(--chat-pad);background:var(--bg);flex-direction:column;flex:1;gap:14px;display:flex;overflow-y:auto}.msg{flex-direction:column;gap:4px;display:flex}.msg-ai{align-items:flex-start}.msg-user{align-items:flex-end}.msg-label{letter-spacing:.06em;text-transform:uppercase;color:var(--gold-text);font-size:11px;font-weight:600}.bubble{text-wrap:pretty;white-space:pre-wrap;max-width:80%;padding:10px 14px;font-size:14px;line-height:1.5}.msg-ai .bubble:not(.error){white-space:normal}.bubble>:first-child{margin-top:0}.bubble>:last-child{margin-bottom:0}.bubble p{margin:0 0 8px}.bubble .md-heading{margin-top:12px;font-weight:600}.bubble ul,.bubble ol{margin:0 0 8px;padding-left:20px}.bubble li+li{margin-top:4px}.bubble strong{font-weight:600}.bubble .md-course{cursor:pointer;text-decoration:underline;-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong);text-underline-offset:2px}.bubble .md-course:hover{text-decoration-color:currentColor}.bubble .md-course:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-radius:2px}.bubble code{background:var(--surface-alt);border-radius:4px;padding:1px 4px;font-size:13px}.msg-ai .bubble{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:4px 14px 14px}.msg-ai .bubble.error{color:var(--danger)}.msg-user .bubble{background:var(--brand);color:var(--on-brand);border:1px solid var(--brand);border-radius:14px 4px 14px 14px}.typing{color:var(--text-3);font-size:13px;font-style:italic}.suggestions{padding:12px var(--chat-pad) 0;flex-wrap:wrap;gap:8px;display:flex}.suggestions button{border:1px solid var(--border-strong);background:var(--surface-alt);color:var(--accent);cursor:pointer;border-radius:16px;padding:7px 11px;font-size:13px}.suggestions button:hover{background:var(--hover)}.chat-input{padding:14px var(--chat-pad) 18px;gap:8px;display:flex}.chat-input input{border:1px solid var(--border);min-width:0;color:var(--text);border-radius:10px;outline:none;flex:1;padding:11px 12px;font-size:14px}.chat-input input:focus{border-color:var(--accent)}.chat-input button{background:var(--brand);color:var(--on-brand);cursor:pointer;border:none;border-radius:10px;padding:0 16px;font-size:14px;font-weight:600}.chat-input button:hover{background:var(--brand-hover)}@media (width<=1280px){.sem-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=1100px){.progress{display:none}.sidebar{width:250px}.req{padding:24px}.req-name{font-size:26px}}@media (width<=1000px){.audit-grid{grid-template-columns:minmax(0,1fr)}}@media (width<=900px){.app{--topbar-h:56px}.body{position:relative}.backdrop{background:rgba(var(--overlay-rgb), .4);z-index:20;display:block;position:absolute;inset:0}.sidebar{z-index:21;visibility:hidden;width:min(320px,85vw);transition:transform .25s,visibility .25s;position:absolute;top:0;bottom:0;left:0;transform:translate(-100%)}.sidebar.open{visibility:visible;box-shadow:16px 0 40px rgba(var(--shadow-rgb), .14);transform:none}.drawer-top{border-bottom:1px solid var(--border-soft);flex-direction:column;gap:12px;padding-bottom:16px;display:flex}.drawer-top .summary{flex-wrap:wrap;gap:8px 12px}.drawer-top .grad{color:var(--text-2)}.drawer-top .grad b{color:var(--text)}.drawer-top .credits{color:var(--text-2)}.drawer-top .progress{background:var(--fill);order:3;width:100%;display:flex}.sem-view{gap:12px;padding:16px}.sem-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.req{gap:20px;padding:20px 16px}.req-head{gap:20px}.req-stats{flex-wrap:wrap;gap:6px 18px}}@media (width<=560px){.sem-grid{grid-template-columns:minmax(0,1fr);grid-auto-rows:auto}.sem-card{min-height:auto}.sem-courses{flex:none;overflow:visible}.req-head{flex-direction:column;align-items:center;gap:14px}.req-info{text-align:center;align-items:center}.req-stats,.req-links{justify-content:center}.ring,.ring svg{width:110px;height:110px}.ring-label,.req-name{font-size:22px}.audit-card{padding:14px}.audit-row{gap:8px;font-size:13px}.audit-code{width:72px}.chat{--chat-pad:16px}.chat-msgs{padding-top:16px;padding-bottom:16px}.chat-input{padding-top:12px;padding-bottom:16px}}.login{background:var(--bg);min-height:100%;display:flex}.login .brand{align-items:center;gap:12px;display:flex}.login .brand-icon{background:var(--brand-deep);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.login .brand-icon img{width:28px;height:28px;display:block}.login .brand-name{font-size:20px;font-weight:600}.login-hero{background:var(--topbar-bg);width:560px;color:var(--on-brand);flex-direction:column;flex-shrink:0;gap:40px;padding:48px;display:flex}.login-hero-copy{flex-direction:column;gap:14px;display:flex}.login-hero-title{letter-spacing:-.02em;text-wrap:balance;font-size:44px;font-weight:700;line-height:1.05}.login-hero-text{color:#e4d9f0;text-wrap:pretty;font-size:17px;line-height:1.5}.login-hero-preview{flex-direction:column;flex:1;justify-content:flex-end;gap:12px;display:flex}.preview-card{background:var(--surface);color:var(--text);border-radius:14px;flex-direction:column;gap:12px;padding:20px;display:flex;transform:rotate(-1.5deg)}.preview-head{justify-content:space-between;align-items:baseline;font-size:16px;font-weight:700;display:flex}.preview-head span:last-child{color:var(--text-2);font-size:14px;font-weight:400}.preview-courses{flex-direction:column;gap:8px;font-size:15px;display:flex}.preview-courses div{background:var(--hover);border-radius:8px;justify-content:space-between;padding:8px 10px;display:flex}.preview-courses span:first-child{font-weight:500}.preview-courses span:last-child{color:var(--text-2)}.preview-tip{background:var(--gold);max-width:380px;color:var(--on-gold);border-radius:12px;align-self:flex-end;padding:14px 16px;font-size:15px;line-height:1.4;transform:rotate(1deg)}.login-main{flex:1;justify-content:center;align-items:center;padding:48px;display:flex}.login-form{flex-direction:column;gap:24px;width:400px;max-width:100%;display:flex}.login-head{flex-direction:column;gap:8px;display:flex}.login-head h1{margin:0;font-size:30px;font-weight:600}.login-head p{color:var(--text-2);margin:0;font-size:15px;line-height:1.5}.login-head b{color:var(--text);font-weight:600}.login-field{flex-direction:column;gap:8px;display:flex}.login-field label{font-size:14px;font-weight:500}.login-error{color:var(--danger);font-size:13px}.eid-input{background:var(--surface);border:1.5px solid var(--border);border-radius:10px;align-items:center;display:flex;overflow:hidden}.eid-input:focus-within{border-color:var(--accent)}.eid-input.error{border-color:var(--danger)}.eid-input input{min-width:0;color:var(--text);background:0 0;border:none;outline:none;flex:1;padding:13px 0 13px 14px;font-size:16px}.eid-input span{color:var(--text-3);white-space:nowrap;padding:0 14px 0 2px;font-size:16px}.code-boxes{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;display:grid;position:relative}.code-box{background:var(--surface);border:1.5px solid var(--border);height:58px;color:var(--accent-strong);border-radius:10px;justify-content:center;align-items:center;font-size:24px;font-weight:600;display:flex}.code-box.active{border-color:var(--accent)}.code-box.error{border-color:var(--danger)}.code-boxes input{opacity:0;cursor:text;border:none;width:100%;height:100%;position:absolute;inset:0}.login-primary{background:var(--brand);color:var(--on-brand);cursor:pointer;border:none;border-radius:10px;padding:14px;font-size:15px;font-weight:600}.login-primary:hover{background:var(--brand-hover)}.login-primary.muted{background:var(--brand-muted)}.login-links{justify-content:space-between;align-items:center;display:flex}.login-link{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-size:14px}.login-link:hover{color:var(--accent-strong)}.login-link.resent{color:var(--success)}@media (width<=1000px){.login-hero{width:420px;padding:40px}.login-hero-title{font-size:34px}}@media (width<=760px){.login{flex-direction:column}.login-hero{gap:0;width:auto;padding:20px 16px}.login-hero-copy,.login-hero-preview{display:none}.login-main{align-items:flex-start;padding:32px 16px}}.topbar{height:var(--topbar-h);background:var(--topbar-bg);color:var(--on-brand);flex-shrink:0;align-items:center;gap:16px;padding:0 24px;display:flex;position:relative}.brand{align-items:center;gap:10px;display:flex}.brand-btn{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:8px;padding:0}.brand-btn:focus-visible{outline-offset:4px;outline:2px solid #fff}.brand-icon{flex:none;width:32px;height:32px}.brand-name{letter-spacing:-.01em;white-space:nowrap;font-size:17px;font-weight:700}.brand-accent{color:var(--gold)}.view-menu{margin-left:12px;position:relative}.view-menu-btn{color:var(--on-brand);font:inherit;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff2e;border-radius:10px;align-items:center;gap:8px;padding:7px 12px 7px 14px;font-size:14px;font-weight:600;transition:background .15s;display:flex}.view-menu-btn:hover,.view-menu-btn.open{background:#ffffff2e}.view-menu-btn:focus-visible{outline-offset:2px;outline:2px solid #fff}.view-menu-btn svg{color:var(--gold);transition:transform .15s}.view-menu-btn.open svg{transform:rotate(180deg)}.view-menu-list{z-index:50;background:var(--surface);min-width:190px;color:var(--text);border:1px solid var(--border);box-shadow:0 16px 36px rgba(var(--shadow-rgb), .18);border-radius:12px;flex-direction:column;padding:6px;display:flex;position:absolute;top:calc(100% + 8px);left:0}.view-menu-item{font:inherit;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;font-size:15px;display:flex}.view-menu-item:hover,.view-menu-item:focus-visible{background:var(--hover);outline:none}.view-menu-item.active{color:var(--accent);font-weight:600}.hamburger{cursor:pointer;background:0 0;border:none;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:40px;height:40px;padding:0;display:none}.hamburger span{background:var(--on-brand);border-radius:1px;width:22px;height:2px;transition:transform .2s,opacity .2s}.hamburger.open span:first-child{transform:translateY(7px)rotate(45deg)}.hamburger.open span:nth-child(2){opacity:0}.hamburger.open span:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.home-btn{cursor:pointer;background:0 0;border:none;border-radius:10px;justify-content:center;align-items:center;width:40px;height:40px;margin-left:-4px;padding:0;display:none}.home-btn img{width:32px;height:32px}.home-btn:focus-visible{outline-offset:2px;outline:2px solid #fff}.account{flex-shrink:0;position:relative}.avatar{cursor:pointer;background:var(--gold);width:34px;height:34px;color:var(--on-gold);border:none;border-radius:17px;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:13px;font-weight:600;display:flex}.avatar:focus-visible{outline-offset:2px;outline:2px solid #fff}.account-menu{z-index:50;background:var(--surface);width:300px;color:var(--text);border:1px solid var(--border);box-shadow:0 16px 36px rgba(var(--shadow-rgb), .18);border-radius:14px;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden}.account-card{align-items:center;gap:12px;padding:15px;display:flex}.account-card-avatar{background:var(--gold);width:44px;height:44px;color:var(--on-gold);border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:700;display:flex}.account-card-id{flex-direction:column;gap:2px;min-width:0;display:flex}.account-card-name,.account-card-email{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.account-card-name{font-size:15px;font-weight:600}.account-card-email{color:var(--text-3);font-size:13px}.account-items{border-top:1px solid var(--border);flex-direction:column;padding:6px;display:flex}.account-item{text-align:left;font:inherit;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;padding:11px 12px;font-size:15px;display:flex}.account-item svg{color:var(--accent);flex:none}.account-item:hover,.account-item:focus-visible{background:var(--hover);outline:none}.switch{background:var(--border-strong);border-radius:10px;flex:none;width:34px;height:20px;margin-left:auto;transition:background .15s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000040}.switch.on{background:var(--brand)}.switch.on:after{transform:translate(14px)}.account-danger{background:var(--danger-tint);border-top:1px solid var(--danger-border);color:var(--text-3);justify-content:space-between;align-items:center;padding:10px 18px;font-size:13px;display:flex}.account-delete{font:inherit;color:var(--danger);cursor:pointer;background:0 0;border:none;padding:4px 0;font-size:13px;font-weight:500;text-decoration:underline}.account-delete:hover,.account-delete:focus-visible{color:var(--danger-strong);outline:none}@media (width<=900px){.topbar{gap:12px;padding:0 16px}.topbar .brand,.topbar .summary{display:none}.view-menu{z-index:50;margin-left:0;position:absolute;left:50%;transform:translate(-50%)}.view-menu-list{left:50%;transform:translate(-50%)}.hamburger{margin-left:-8px;display:flex}.home-btn{display:flex}.account-menu{max-width:calc(100vw - 32px)}}.setup{flex:1;justify-content:center;align-items:center;min-height:0;padding:48px;display:flex;overflow:auto}.setup-form{flex-direction:column;gap:24px;width:400px;max-width:100%;margin:auto 0;display:flex}.setup-form.wide{width:600px}.setup-head{flex-direction:column;gap:8px;display:flex}.setup-eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--gold-text);font-size:12px;font-weight:600}.setup-head h1{margin:0;font-size:30px;font-weight:600}.setup-head p{color:var(--text-2);text-wrap:pretty;margin:0;font-size:15px;line-height:1.5}.setup-head b{color:var(--text);font-weight:600}.setup-options{flex-direction:column;gap:12px;display:flex}.setup-option{text-align:left;border:1.5px solid var(--border);background:var(--surface);cursor:pointer;color:var(--text);border-radius:14px;align-items:center;gap:14px;padding:18px;display:flex}.setup-option:hover{border-color:var(--accent)}.setup-option-body{flex-direction:column;flex:1;gap:4px;display:flex}.setup-option-title{align-items:center;gap:8px;font-size:16px;font-weight:600;display:flex}.setup-option-text{color:var(--text-2);font-size:14px;line-height:1.45}.setup-option .badge{background:var(--success-tint);color:var(--success);border-radius:10px;padding:3px 7px;font-size:11px;font-weight:600}.setup-option .arrow{color:var(--accent);font-size:18px}.setup-field{flex-direction:column;gap:6px;display:flex}.setup-field label{font-size:14px;font-weight:500}.setup-input{background-color:var(--surface);border:1.5px solid var(--border);color:var(--text);border-radius:10px;outline:none;width:100%;padding:12px 14px;font-family:inherit;font-size:15px}select.setup-input{background-position:calc(100% - 21px),calc(100% - 16px);padding-right:40px}.setup-input:focus{border-color:var(--accent)}.setup-name{align-items:center;gap:10px;display:flex}.setup-avatar{background:var(--gold);width:44px;height:44px;color:var(--on-gold);border-radius:22px;flex-shrink:0;justify-content:center;align-items:center;font-size:15px;font-weight:600;display:flex}.setup-start{gap:8px;display:flex}.setup-start input{flex:0 0 96px}.setup-error{color:var(--danger);font-size:13px}.setup-issues{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.setup-issue{border-left:3px solid;border-radius:8px;padding:8px 10px;font-size:13px;line-height:1.4}.setup-issue.error{background:var(--danger-tint);border-color:var(--danger);color:var(--danger)}.setup-issue.warning{background:var(--warn-tint);border-color:var(--warn-border);color:var(--warn-text)}.setup-issue.info{background:var(--success-tint);border-color:var(--success);color:var(--success)}.setup-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.prog-chips{flex-wrap:wrap;gap:6px;display:flex}.prog-chip{background:var(--brand-tint);border:1px solid var(--border-strong);color:var(--accent);border-radius:999px;align-items:center;gap:8px;padding:6px 8px 6px 12px;font-size:14px;display:flex}.prog-chip b{font-weight:600}.prog-chip span{color:var(--text-2);font-size:12px}.prog-chip button{color:var(--accent);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:2px 4px;font-size:14px;line-height:1}.prog-chip button:hover{background:var(--border-strong)}.setup-search{position:relative}.setup-menu{background:var(--surface);border:1px solid var(--border);box-shadow:0 12px 30px rgba(var(--shadow-rgb), .15);z-index:6;border-radius:12px;flex-direction:column;gap:2px;padding:6px;display:flex;position:absolute;top:50px;left:0;right:0}.setup-menu.note{color:var(--text-3);padding:12px;font-size:13px}.setup-menu button{text-align:left;cursor:pointer;color:var(--text);background:0 0;border:none;border-radius:8px;gap:8px;padding:9px 10px;font-size:14px;display:flex}.setup-menu button:hover{background:var(--hover)}.setup-menu b{font-weight:600}.setup-menu .code{flex-shrink:0;width:80px}.setup-menu .grow{flex:1}.setup-menu .sub{color:var(--text-2)}.setup-menu .muted{color:var(--text-3);font-size:12px}.dropzone{border:1.5px dashed var(--border-dashed);background:var(--surface-alt);cursor:pointer;text-align:center;border-radius:14px;flex-direction:column;align-items:center;gap:10px;padding:40px 24px;display:flex}.dropzone.drag{border-color:var(--accent);background:var(--hover)}.dropzone-title{font-size:16px;font-weight:600}.dropzone-text{color:var(--text-2);font-size:14px}.dropzone-text span{color:var(--accent);font-weight:500}.review-list{background:var(--surface);border:1px solid var(--border);border-radius:14px;flex-direction:column;max-height:220px;display:flex;overflow:auto}.review-row{border-bottom:1px solid var(--border-soft);align-items:flex-start;gap:14px;padding:12px 16px;display:flex}.review-term{flex-shrink:0;width:110px}.review-term div:first-child{font-size:14px;font-weight:600}.review-term div:last-child{color:var(--text-3);font-size:12px}.review-chips{flex-wrap:wrap;flex:1;gap:6px;display:flex}.review-chips span{background:var(--brand-tint);color:var(--accent);border-radius:7px;padding:4px 8px;font-size:12px;font-weight:500}.review-chips span.failed{background:var(--danger-tint);color:var(--danger);text-decoration:line-through}.term-chips{flex-wrap:wrap;gap:6px;display:flex}.term-chip{border:1.5px solid var(--border);background:var(--surface);color:var(--text-2);cursor:pointer;border-radius:16px;padding:6px 10px;font-size:12px;font-weight:500}.term-chip.filled{border-color:var(--border-strong);background:var(--brand-tint);color:var(--accent)}.term-chip.active{border-color:var(--accent);background:var(--brand);color:var(--on-brand)}.term-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;flex-direction:column;gap:12px;height:290px;padding:16px;display:flex}.term-card-head{align-items:baseline;display:flex}.term-card-head div{flex:1;font-size:18px;font-weight:600}.term-card-head span{color:var(--text-3);font-size:13px}.added-list{flex-direction:column;flex:1;gap:6px;min-height:0;display:flex;overflow:auto}.added-empty{color:var(--text-3);padding:8px 0;font-size:14px}.added-row{background:var(--bg);border-radius:8px;align-items:center;gap:10px;padding:8px 10px;font-size:14px;display:flex}.added-row b{flex-shrink:0;width:84px;font-weight:600}.added-title{min-width:0;color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.added-select{background-color:var(--surface);border:1.5px solid var(--border);color:var(--text);background-position:calc(100% - 12px) 55%,calc(100% - 8px) 55%;background-size:4px 4px;border-radius:7px;outline:none;flex-shrink:0;padding:3px 22px 3px 8px;font-family:inherit;font-size:12px}.added-select:focus{border-color:var(--accent)}.added-row.failed b,.added-row.failed .added-title{color:var(--danger);text-decoration:line-through}.added-row button{color:var(--text-4);cursor:pointer;background:0 0;border:none;padding:0;font-size:18px;line-height:1}.added-row button:hover{color:var(--danger)}.setup-footer{align-items:center;gap:12px;display:flex}.setup-total{color:var(--text-2);flex:1;font-size:14px}.setup-total b{color:var(--text);font-weight:600}.setup-total.center{color:var(--text-3);text-align:center;font-size:13px}.setup-primary{background:var(--brand);color:var(--on-brand);cursor:pointer;border:none;border-radius:10px;padding:13px 18px;font-size:15px;font-weight:600}.setup-primary:hover{background:var(--brand-hover)}.setup-secondary{border:1.5px solid var(--border-strong);background:var(--surface);color:var(--accent);cursor:pointer;border-radius:10px;padding:12px 16px;font-size:15px;font-weight:600}.setup-secondary:hover{background:var(--hover)}.setup-link{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-size:14px}.setup-link:hover{color:var(--accent-strong)}.setup-link.start{align-self:flex-start}.setup-actions{align-items:center;gap:12px;display:flex}.done-check{background:var(--success-fill);width:48px;height:48px;color:var(--on-brand);border-radius:24px;justify-content:center;align-items:center;font-size:24px;display:flex}@media (width<=760px){.setup{align-items:flex-start;padding:32px 16px}.setup-grid{grid-template-columns:minmax(0,1fr)}.setup-footer{flex-wrap:wrap}.setup-footer .setup-total{flex-basis:100%;order:-1}.review-term{width:90px}}.check-satisfied{background:var(--success-fill);border-color:var(--success-fill)}.check-unverified{border-color:var(--gold);color:var(--gold-text);font-weight:700}.check-later{background:var(--text-3);border-color:var(--text-3)}.pill-later{background:color-mix(in srgb, var(--text-3) 22%, transparent);color:var(--text-2)}.audit-card{align-self:start}.audit-head{align-items:flex-start;gap:10px}.audit-head .pill{flex-shrink:0}.audit-eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--gold-text);margin-bottom:2px;font-size:11px;font-weight:600}.audit-sub{color:var(--text-3);margin-top:-4px;font-size:12px}.rule-root,.rule,.rule-children,.rule-children-root,.rule-filter{flex-direction:column;gap:8px;display:flex}.rule-children-root{gap:0}.rule-children{border-left:2px solid var(--border-soft);margin-left:8px;padding-left:12px}.rule-head{align-items:flex-start;gap:10px;font-size:14px;display:flex}.rule-head .check{margin-top:1px}.rule-text{flex:1;min-width:0;font-weight:500}.rule-meta{color:var(--text-3);white-space:nowrap;font-size:12px}.rule-note{color:var(--text-3);font-size:13px}.rule-head+.rule-note,.rule-head~.rule-chips{margin-left:28px}.rule-chips{flex-wrap:wrap;gap:6px;display:flex}.rule-chips span{background:var(--success-tint);color:var(--success);border-radius:10px;padding:3px 8px;font-size:12px;font-weight:500}.rule-chips .course-clickable:hover{background:color-mix(in srgb, var(--success) 18%, transparent)}.rule-chips .chip-now{background:var(--gold-tint);color:var(--gold-text)}.rule-chips .chip-now.course-clickable:hover{background:color-mix(in srgb, var(--gold) 30%, transparent)}.rule-chips .chip-later{background:var(--fill);color:var(--text-3)}.rule-chips .chip-later.course-clickable:hover{background:color-mix(in srgb, var(--text-3) 22%, transparent)}.shared-tag{background:var(--brand-tint);color:var(--accent);border-radius:10px;flex-shrink:0;padding:2px 7px;font-size:11px;font-weight:500}.rule-children-root>*{border-top:1px solid var(--border-soft);padding:12px 0}.rule-children-root>:last-child{padding-bottom:2px}.choice{flex-direction:column;gap:6px;min-width:0;display:flex}.choice-indent{margin-left:28px}.choice-row{gap:10px;min-width:0}.choice-pick{border-radius:6px;flex:1;align-items:center;gap:10px;min-width:0;display:flex}.choice-pick.course-clickable{margin:-3px -6px;padding:3px 6px}.choice-group-label{min-width:0;font-weight:500}.choice-pick .choice-group-label{flex:1}.choice-badge{background:var(--fill);color:var(--text-3);border-radius:10px;flex-shrink:0;padding:2px 7px;font-size:11px;font-weight:500}.choice-group .audit-when{margin-left:auto}.choice-group.choice-counted{border-radius:7px}.choice-option.choice-sub{padding:3px 8px 3px 33px}.choice-sub .audit-code{width:76px;color:var(--text-2)}.choice-group-body{flex-direction:column;gap:6px;padding:2px 8px 6px 33px;display:flex}.choice-empty{color:var(--text-3);flex:1;font-size:13px}.choice-toggle{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;margin:-3px -6px -3px 0;padding:3px 6px;font-size:13px;font-weight:500}.choice-toggle:hover{background:var(--hover)}.choice-options{border:1px solid var(--border);border-radius:10px;flex-direction:column;padding:3px;display:flex}.choice-option{border-radius:7px;align-items:center;gap:10px;padding:6px 8px;font-size:13px;display:flex}.choice-option.course-clickable{cursor:pointer}.choice-option .audit-code{width:76px}.choice-counted,.choice-counted.course-clickable:hover{background:var(--success-tint)}.choice-counted .choice-sub.course-clickable:hover{background:color-mix(in srgb, var(--success) 12%, transparent)}.choice-ring{border:1.5px solid var(--border-strong);border-radius:50%;flex-shrink:0;width:15px;height:15px}.choice-counted .choice-ring{border:4.5px solid var(--success-fill)}.choice-now,.choice-now.course-clickable:hover{background:var(--gold-tint)}.choice-now .choice-ring{border:4.5px solid var(--gold)}.choice-later,.choice-later.course-clickable:hover{background:var(--fill)}.choice-later .choice-ring{border:4.5px solid var(--text-3)}.progress-tag{background:var(--gold-tint);color:var(--gold-text);border-radius:10px;flex-shrink:0;padding:2px 7px;font-size:11px;font-weight:500}.progress-tag-later{background:var(--fill);color:var(--text-3)}.choice-foot{justify-content:flex-end;padding:4px 6px 2px;display:flex}.choice-foot .choice-toggle{margin:0}.req-empty{color:var(--text-3);font-size:14px}.course-preview{max-width:520px;max-height:calc(100vh - 32px);overflow-y:auto}.course-preview-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.course-preview-head .icon-btn{padding:2px 4px;font-size:22px}.course-preview-code{letter-spacing:.04em;text-transform:uppercase;color:var(--accent);margin-bottom:4px;font-size:12px;font-weight:600}.course-preview-section{border-top:1px solid var(--border-soft);padding-top:12px}.course-preview-label{letter-spacing:.04em;text-transform:uppercase;color:var(--text-4);margin-bottom:4px;font-size:12px;font-weight:600}label.course-preview-label{display:block}.course-preview-credits{gap:8px;display:flex}.course-preview-credits select{border:1px solid var(--border);min-width:0;color:var(--accent-strong);background-color:var(--surface);border-radius:8px;outline:none;flex:1;padding:9px 34px 9px 10px;font-family:inherit;font-size:14px}.course-preview-credits select:focus{border-color:var(--accent)}.course-preview-credits button{cursor:pointer;border-radius:10px;padding:9px 16px;font-size:14px;font-weight:600}.course-preview-credits button:disabled{opacity:.6;cursor:default}.course-preview-add{color:var(--text-2);flex-wrap:wrap;align-items:center;gap:10px;font-size:14px;display:flex}.course-preview-add select,.course-preview-add input{border:1px solid var(--border);color:var(--accent-strong);background-color:var(--hover);border-radius:8px;outline:none;padding:9px 12px;font-family:inherit;font-size:14px;font-weight:600}.course-preview-add select{padding-right:34px}.course-preview-add input{width:84px}.course-preview-add select:focus,.course-preview-add input:focus{border-color:var(--accent)}.course-preview-add button{background:var(--gold);color:var(--on-gold);cursor:pointer;border:none;border-radius:10px;margin-left:auto;padding:9px 16px;font-size:14px;font-weight:700}.course-preview-add button:hover:not(:disabled){background:var(--gold-hover)}.course-preview-add button:disabled{opacity:.6;cursor:default}.course-preview-add+.dialog-error{margin-top:8px}.course-preview-note{color:var(--text-4);margin-top:6px;font-size:12px}.course-clickable{cursor:pointer}.course-clickable:hover{background:var(--hover)}.course-clickable:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.audit-row.course-clickable{border-radius:7px;margin:0 -6px;padding:3px 6px}.course-preview-takings{flex-direction:column;gap:6px;display:flex}.course-preview-taking{justify-content:space-between;align-items:center;gap:12px;font-size:14px;display:flex}.course-preview-taking-label{align-items:center;gap:8px;font-weight:700;display:flex}.course-preview-taking button{cursor:pointer;color:var(--danger);background:0 0;border:none;border-radius:8px;padding:6px 12px;font-size:13px;font-weight:600}.course-preview-taking button:hover:not(:disabled){background:var(--danger-tint)}.sk{background:linear-gradient(90deg, var(--fill) 25%, var(--bg) 50%, var(--fill) 75%);background-size:200% 100%;border-radius:6px;animation:1.4s ease-in-out infinite sk-shimmer}.skeleton-card{cursor:default}.skeleton-info{flex:1;gap:10px;min-width:0}@keyframes sk-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@media (prefers-reduced-motion:reduce){.sk{animation:none}}@media (width<=560px){.skeleton-info{width:100%}}
