:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#20231f;background:#f6f7f4;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px;background:#f6f7f4}button,input,select{font:inherit}.app-shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:28px 18px 22px;background:#1f241f;color:#eef2ea;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;padding:0 10px 28px;font-weight:750;letter-spacing:-.02em}.brand-mark{width:31px;height:31px;border-radius:10px;background:#dce9d8;color:#1f241f;display:grid;place-items:center;font-weight:900}nav{display:grid;gap:7px}.nav-item{border:0;background:transparent;color:#aeb7ac;padding:11px 12px;border-radius:11px;text-align:left;cursor:pointer;display:flex;gap:11px;align-items:center;width:100%}.nav-item:hover,.nav-item.active{background:#303730;color:white}.sidebar-bottom{margin-top:auto;display:grid;gap:12px}.storage-card{padding:14px;border:1px solid #394139;border-radius:14px;background:#262c26}.storage-title{font-size:13px;font-weight:700}.storage-card p{margin:6px 0 0;color:#9fa99f;font-size:12px;line-height:1.5}.main{padding:46px clamp(24px,5vw,74px);max-width:1500px;width:100%;margin:0 auto}.topbar{display:flex;justify-content:space-between;gap:30px;align-items:flex-start;margin-bottom:42px}.eyebrow{margin:0 0 8px;font-size:11px;font-weight:800;letter-spacing:.16em;color:#778076}.topbar h1{font-size:clamp(32px,4vw,48px);margin:0;letter-spacing:-.045em;line-height:1}.subtext{max-width:680px;color:#687168;line-height:1.6;margin:14px 0 0}.primary,.secondary{border:0;border-radius:11px;padding:11px 16px;font-weight:700;cursor:pointer}.primary{background:#242a24;color:white;box-shadow:0 8px 24px rgba(32,35,31,.12)}.primary:hover{background:#111511}.secondary{background:#eef0ec;color:#303630}.compact{padding:9px 13px;font-size:13px}.text-button{border:0;background:transparent;color:#41513f;font-weight:750;cursor:pointer;padding:4px}.section-head{display:flex;align-items:end;justify-content:space-between;margin-bottom:16px}.section-head h2,.detail-head h2,.stay-track-head h2{margin:0;font-size:24px;letter-spacing:-.03em}.overview-head{margin-top:0}.course-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.course-card{background:#fff;border:1px solid #e1e5df;border-radius:19px;padding:20px;cursor:pointer;transition:.2s ease}.course-card:hover{transform:translateY(-2px);box-shadow:0 15px 40px rgba(38,45,38,.07)}.course-top,.course-foot,.grade-row,.detail-head,.modal-head,.modal-actions,.category-title,.stay-track-head,.weight-editor-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.course-code{font-size:11px;font-weight:850;letter-spacing:.12em;padding:7px 8px;border-radius:8px}.sage{background:#e5eee1;color:#4c6447}.sand{background:#f0eadc;color:#7c683c}.blue{background:#e4ebef;color:#48626f}.lavender{background:#ebe7f1;color:#665a78}.rose{background:#f2e4e4;color:#7b5555}.status{font-size:11px;padding:6px 8px;border-radius:999px}.status.good{background:#edf3ea;color:#4b6846}.status.risk{background:#f6ebe5;color:#935738}.status.neutral{background:#eef0ec;color:#747b73}.course-card h3{font-size:20px;letter-spacing:-.025em;margin:24px 0 18px}.grade-row strong{font-size:31px;letter-spacing:-.04em}.grade-row span{font-size:12px;color:#838b82}.bar{height:7px;background:#ecefea;border-radius:99px;overflow:hidden;margin:13px 0 17px}.bar span{display:block;height:100%;background:#556852;border-radius:99px}.course-foot{color:#858c85;font-size:12px}.course-foot button{border:0;background:transparent;color:#384638;font-weight:750;cursor:pointer;padding:4px}.workspace{display:grid;grid-template-columns:270px minmax(0,1fr);gap:18px;align-items:start}.course-list-panel{display:grid;gap:8px;position:sticky;top:28px}.course-list-item{width:100%;display:flex;align-items:center;gap:12px;border:1px solid transparent;background:transparent;border-radius:14px;padding:11px;text-align:left;cursor:pointer}.course-list-item:hover{background:#eef1ec}.course-list-item.active{background:#fff;border-color:#dfe4dd;box-shadow:0 8px 26px rgba(36,42,36,.05)}.course-list-item>span:last-child{display:grid;gap:3px;min-width:0}.course-list-item strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.course-list-item small{color:#8b928a}.detail-panel{background:#fff;border:1px solid #e1e5df;border-radius:22px;padding:25px}.detail-head{padding-bottom:22px;border-bottom:1px solid #edf0eb;align-items:flex-start}.detail-actions{display:flex;align-items:center;gap:18px}.detail-grade{text-align:right}.detail-grade strong{display:block;font-size:27px}.detail-grade span{font-size:11px;color:#888f87}.detail-sub{margin:8px 0 0;color:#858d84;font-size:13px}.course-method-note{margin:20px 0;padding:14px 16px;border-radius:14px;background:#f2f4f0;display:grid;gap:4px}.course-method-note span{font-size:12px;color:#7b837a}.category-stack{display:grid;gap:18px;margin-top:22px}.category-block{border:1px solid #e8ebe6;border-radius:16px;overflow:hidden}.category-title{padding:14px 16px;background:#fafbf9}.category-title>div{display:grid;gap:3px}.category-title span{font-size:11px;color:#8b928a}.assignment-table{display:grid}.assignment-row{display:grid;grid-template-columns:minmax(0,1fr) 120px 76px;gap:14px;align-items:center;padding:13px 16px;border-top:1px solid #eef0ec;font-size:13px}.assignment-row>div{display:grid;gap:3px}.assignment-row>div span{font-size:11px;color:#8a9189}.assignment-row>b{text-align:right}.assignment-row>span{text-align:right;color:#727a72}.empty-inline{padding:16px;color:#9aa09a;font-size:12px;border-top:1px solid #eef0ec}.totals-row{display:flex;justify-content:flex-end;gap:20px;padding:14px 2px;color:#747b73}.danger-zone{margin-top:24px;padding-top:18px;border-top:1px solid #eef0ec;text-align:right}.danger-link{border:0;background:transparent;color:#a45a36;cursor:pointer;font-size:12px;font-weight:700}.forecast-layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(260px,.65fr);gap:18px;align-items:start}.forecast-main-card,.side-card{background:#fff;border:1px solid #e1e5df;border-radius:22px;padding:24px}.forecast-controls{display:grid;grid-template-columns:1fr 190px;gap:14px}.forecast-controls label,.next-grid label{display:grid;gap:7px;font-size:12px;font-weight:700;color:#606860}.forecast-controls input,.forecast-controls select,.next-grid input,.next-grid select{width:100%;border:1px solid #dfe4dd;border-radius:10px;padding:11px 12px;background:#fafbf9;outline:none}.forecast-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:18px}.forecast-summary>div{padding:15px;border-radius:14px;background:#f5f6f3;display:grid;gap:7px}.forecast-summary span{font-size:11px;color:#858c85}.forecast-summary strong{font-size:24px;letter-spacing:-.035em}.forecast-summary .small-strong{font-size:14px;letter-spacing:0}.divider{height:1px;background:#edf0eb;margin:24px 0}.method-pill{font-size:11px;padding:7px 9px;background:#eef3eb;color:#4d6249;border-radius:999px;font-weight:700}.next-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:18px}.result-card{margin-top:18px;padding:22px;border-radius:18px;background:#eef3eb;border:1px solid #dbe5d7}.result-card>span{font-size:12px;color:#667064}.result-card>strong{display:block;font-size:48px;letter-spacing:-.06em;margin:4px 0}.result-card p{margin:0;color:#626b61;font-size:13px;line-height:1.55}.danger-result{background:#f7ece7;border-color:#edd7cc}.success-result{background:#eef4eb;border-color:#dce8d8}.neutral-result{background:#f3f4f1;border-color:#e4e6e1}.forecast-side{display:grid;gap:18px}.side-card h3{margin:0 0 10px;font-size:18px}.side-card p{font-size:12px;color:#7b837a;line-height:1.55}.big-grade,.mini-forecast{font-size:40px;font-weight:800;letter-spacing:-.055em}.mini-forecast{font-size:34px;margin:8px 0}.target-input,.weight-input{position:relative}.target-input input,.weight-input input{padding-right:34px!important}.target-input span,.weight-input span{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:#8b928a}.empty-state{background:#fff;border:1px dashed #d8ddd5;border-radius:22px;padding:58px 20px;text-align:center}.empty-state h2{margin:14px 0 7px}.empty-state p{margin:0 auto 18px;max-width:420px;color:#7d857c}.empty-icon{width:48px;height:48px;border-radius:15px;background:#e6eee2;color:#465a42;display:grid;place-items:center;margin:auto;font-weight:900;font-size:20px}footer{padding:34px 0 0;color:#9aa09a;font-size:12px;text-align:center}.modal-backdrop{position:fixed;inset:0;background:rgba(24,28,24,.46);display:grid;place-items:center;padding:20px;z-index:50;backdrop-filter:blur(5px);overflow:auto}.modal{width:min(520px,100%);background:white;border-radius:20px;padding:22px;box-shadow:0 30px 90px rgba(0,0,0,.24);max-height:calc(100vh - 40px);overflow:auto}.modal-wide{width:min(660px,100%)}.modal-head h2{margin:0;font-size:21px}.modal-head button{border:0;background:#f0f2ee;width:34px;height:34px;border-radius:10px;cursor:pointer;font-size:22px}.form{display:grid;gap:15px;margin-top:20px}.form>label,.form .split label{display:grid;gap:7px;font-size:12px;font-weight:700;color:#606860}.form input,.form select{width:100%;border:1px solid #dfe4dd;border-radius:10px;padding:11px 12px;background:#fafbf9;outline:none}.form input:focus,.form select:focus{border-color:#7c8c77;box-shadow:0 0 0 3px #eef3eb}.split{display:grid;grid-template-columns:1fr 1fr;gap:12px}.modal-actions{justify-content:flex-end;margin-top:5px}.method-fieldset{border:0;padding:0;margin:0;display:grid;gap:8px}.method-fieldset legend{font-size:12px;font-weight:700;color:#606860;margin-bottom:8px}.method-choice{display:flex!important;grid-template-columns:none!important;align-items:flex-start;gap:11px!important;border:1px solid #e0e4de;border-radius:13px;padding:13px;cursor:pointer}.method-choice.selected{border-color:#8a9a85;background:#f3f6f1}.method-choice input{width:auto!important;margin-top:3px}.method-choice span{display:grid;gap:4px}.method-choice small{font-weight:400;color:#7f877e;line-height:1.45}.weight-editor{border:1px solid #e1e5df;border-radius:14px;padding:14px}.weight-editor.hidden{display:none}.weight-editor-head strong,.weight-editor-head small{display:block}.weight-editor-head small{margin-top:3px;color:#8a9189;font-size:11px}.weight-ok{color:#4f6c49;font-weight:800}.weight-bad{color:#aa5a38;font-weight:800}.weight-row{display:grid;grid-template-columns:minmax(0,1fr) 120px 34px;gap:8px;margin-top:9px}.icon-button{border:0;border-radius:9px;background:#f0f2ee;cursor:pointer}.icon-button:disabled{opacity:.35;cursor:not-allowed}.form-error{min-height:16px;color:#a34f32;font-size:12px}.muted{color:#8a9189;font-size:13px}@media(max-width:1100px){.course-grid{grid-template-columns:1fr 1fr}.app-shell{grid-template-columns:210px minmax(0,1fr)}.forecast-layout{grid-template-columns:1fr}.forecast-side{grid-template-columns:1fr 1fr}}@media(max-width:850px){.workspace{grid-template-columns:1fr}.course-list-panel{position:static;grid-template-columns:repeat(2,1fr)}.forecast-summary{grid-template-columns:1fr 1fr}.forecast-controls{grid-template-columns:1fr 160px}}@media(max-width:760px){.app-shell{display:block}.sidebar{position:static;height:auto;padding:18px}.sidebar nav{display:flex}.sidebar .nav-item{justify-content:center}.storage-card,.sidebar-bottom{display:none}.brand{padding:0 0 15px}.main{padding:28px 18px}.topbar{display:grid;margin-bottom:28px}.topbar .primary{width:100%}.course-grid{grid-template-columns:1fr}.course-list-panel{grid-template-columns:1fr}.forecast-side{grid-template-columns:1fr}.forecast-controls,.next-grid{grid-template-columns:1fr}.assignment-row{grid-template-columns:minmax(0,1fr) 90px 60px}.detail-head{display:grid}.detail-actions{justify-content:space-between}.section-head{align-items:flex-start}.weight-row{grid-template-columns:minmax(0,1fr) 100px 34px}}@media(max-width:470px){.sidebar nav{display:grid;grid-template-columns:repeat(3,1fr)}.sidebar .nav-item{font-size:12px;padding:9px 5px}.forecast-summary{grid-template-columns:1fr}.split{grid-template-columns:1fr}.topbar h1{font-size:35px}.assignment-row{grid-template-columns:1fr 1fr}.assignment-row>b{grid-column:2;text-align:right}.assignment-row>span{grid-column:1;grid-row:2;text-align:left}.detail-actions{display:grid;grid-template-columns:1fr}.detail-grade{text-align:left}}
