:root{font-family:Inter,PingFang SC,Microsoft YaHei,sans-serif;color:#172033;background:#f5f8ff;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{display:flex;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:244px;padding:27px 15px;background:linear-gradient(180deg,#0b3a82,#0b5fc7);color:#eff6ff;display:flex;flex-direction:column}.brand{display:flex;gap:10px;align-items:center;padding:0 10px 30px;line-height:1.08;font-size:13px;color:#bfdbfe}.brand strong{color:#fff;font-size:16px}.brand-mark{width:30px;height:30px;display:grid;place-items:center;border-radius:8px;background:#fff;color:#175cca;font-weight:800;font-size:17px}.sidebar nav{display:grid;gap:4px}.nav-item{border:0;background:transparent;color:#dbeafe;padding:11px 12px;display:flex;align-items:center;gap:11px;text-align:left;border-radius:7px;font-size:14px}.nav-item:hover{background:#ffffff24;color:#fff}.nav-item.active{background:#fff;color:#175cca;font-weight:700}.sidebar-note{margin-top:auto;padding:15px 11px;border-top:1px solid rgba(255,255,255,.22);color:#bfdbfe;font-size:12px;line-height:1.7}.content{width:calc(100% - 244px);margin-left:244px;padding:48px clamp(24px,5vw,82px);max-width:1500px}.page-header{display:flex;gap:20px;align-items:flex-start;justify-content:space-between;margin-bottom:28px}.page-header h1{margin:3px 0 6px;font-size:clamp(27px,3vw,37px);letter-spacing:-.04em}.page-header p{margin:0;color:#64748b;font-size:14px}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:#2563eb!important;font-size:11px!important;font-weight:800}.eyebrow.light{color:#dbeafe!important}.header-actions,.planner-inputs,.field-row{display:flex;gap:10px;align-items:end}.primary,.secondary,.secondary-on-dark{border:0;border-radius:7px;min-height:40px;padding:0 15px;display:inline-flex;gap:7px;align-items:center;justify-content:center;font-weight:700;font-size:13px}.primary{background:#2563eb;color:#fff}.primary:hover{background:#1d4ed8}.secondary{background:#eaf2ff;color:#1d4ed8}.secondary:hover{background:#dbeafe}.secondary-on-dark{background:#fff;color:#1d4ed8}.text-on-dark,.link-button{border:0;background:none;text-decoration:underline;font-size:13px}.text-on-dark{color:#eff6ff}.link-button{color:#2563eb;padding:0}.icon-button{border:0;padding:7px;border-radius:5px;color:#8a2e2e;background:#fdeeee}.hidden{display:none}.hero-card{min-height:210px;border-radius:13px;background:linear-gradient(120deg,#1746a2,#2f80ed);color:#fff;padding:31px 35px;display:flex;justify-content:space-between;align-items:end;box-shadow:0 18px 36px #2563eb38}.gpa-number{margin-top:8px;font-size:63px;font-weight:800;letter-spacing:-.07em;line-height:1}.gpa-number span{font-size:18px;letter-spacing:0;font-weight:600;opacity:.75}.muted-light{color:#dbeafe;font-size:13px}.hero-actions{display:grid;gap:12px;justify-items:end}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:16px 0}.metric{border:1px solid #dce7f7;background:#fff;padding:18px 20px;border-radius:9px}.metric span{color:#64748b;font-size:12px;display:block;margin-bottom:8px}.metric strong{font-size:27px;letter-spacing:-.04em}.two-column{display:grid;grid-template-columns:1fr 1fr;gap:16px}.panel{background:#fff;border:1px solid #dce7f7;border-radius:10px;padding:23px}.panel h2{margin:0;font-size:17px;letter-spacing:-.02em}.panel p{color:#64748b;font-size:13px}.panel-title{display:flex;align-items:start;justify-content:space-between;gap:10px;margin-bottom:16px}.panel-title p{margin:5px 0 0}.state-list{display:grid}.state-row{display:flex;align-items:center;gap:10px;min-height:44px;border-bottom:1px solid #edf2fa;font-size:14px}.state-row:last-child{border:0}.state-row strong{margin-left:auto}.dot{width:8px;height:8px;border-radius:50%}.dot.red{background:#d45353}.dot.gray{background:#96a39a}.dot.purple{background:#8d5ba8}.flow{display:grid}.flow button{border:0;border-bottom:1px solid #edf2fa;background:#fff;padding:13px 0;display:flex;align-items:center;text-align:left;color:#1e3a5f}.flow span{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#eaf2ff;color:#2563eb;margin-right:10px;font-size:11px;font-weight:800}.flow svg{margin-left:auto}.notice{margin:16px 0;padding:12px 15px;border-radius:8px;font-size:13px}.notice.warning{background:#fff6df;color:#815d17;border:1px solid #f0dda6}.notice.refresh-notice{background:#eaf2ff;color:#174a9c;border:1px solid #bdd4ff}label{display:grid;gap:7px;color:#475569;font-size:12px;font-weight:700}input,select,textarea{width:100%;border:1px solid #cfdbec;border-radius:6px;padding:9px 10px;background:#fff;color:#172033;outline-color:#3b82f6}textarea{resize:vertical;line-height:1.5}.import-panel{max-width:850px}.import-method-heading{display:flex;align-items:center;gap:11px;margin:21px 0 12px;color:#17335d}.import-method-heading p{margin:3px 0 0;color:#64748b;font-size:12px}.method-number{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;color:#fff;background:#2563eb;font-size:13px;font-weight:800}.recommended-badge{margin-left:auto;padding:4px 9px;border-radius:999px;color:#1d4ed8;background:#dbeafe;font-size:11px;font-weight:800}.compact-action{margin-top:10px}.dropzone{width:100%;min-height:175px;margin:18px 0;border:2px dashed #9fc1f7;border-radius:9px;color:#1d5fbf;background:#f7faff;display:grid;place-items:center;align-content:center;gap:7px;transition:border-color .16s ease,background .16s ease,transform .16s ease}.structured-dropzone{min-height:140px;margin-top:10px;background:#eef5ff;border-color:#75a7f2}.fallback-note{margin:-5px 0 4px;color:#64748b;font-size:12px}.dropzone:hover{background:#edf5ff}.dropzone.drag-active{border-color:#2563eb;background:#e5f0ff;transform:scale(1.006)}.dropzone span{color:#64748b;font-size:12px}.ocr-status{padding:10px;background:#eaf2ff;color:#1d4ed8!important;border-radius:6px}.divider{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;color:#94a198;font-size:12px;margin:18px 0}.divider:before,.divider:after{content:"";height:1px;background:#dce7f7}.candidate-panel{margin-top:17px}.import-preview{display:grid;grid-template-columns:repeat(4,minmax(110px,1fr));gap:8px;margin:14px 0 8px}.import-preview span{display:grid;gap:3px;padding:10px 12px;border-radius:7px;color:#64748b;background:#f5f8ff;font-size:11px}.import-preview strong{color:#174a9c;font-size:17px}.formula-note{margin:0 0 12px;color:#64748b;font-size:12px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:#64748b;background:#f5f8ff;font-weight:700;white-space:nowrap}th,td{padding:11px 10px;border-bottom:1px solid #e8eef8;vertical-align:middle}td input,td select{min-width:75px;padding:6px 7px;font-size:12px;margin-bottom:4px}.review,.verified,.grade{display:inline-block;padding:4px 7px;border-radius:5px;font-size:11px;font-weight:800}.review{background:#fff1cd;color:#8a6318}.verified{color:#1d4ed8;background:#eaf2ff}.grade{background:#eaf2ff;color:#1d4ed8}.grade.bad{color:#993939;background:#fce8e8}.add-course{margin-bottom:16px}.add-course form{display:grid;grid-template-columns:1fr 1.4fr 1fr .6fr .8fr 1fr 1fr auto;gap:8px;margin-top:15px}.grade-preview{margin:12px 0 0;padding:9px 11px;border-radius:6px;color:#174a9c;background:#eaf2ff;font-size:12px;font-weight:700}.candidate-panel .header-actions{flex-wrap:wrap;justify-content:flex-end}.empty-cell{text-align:center;color:#839087;padding:38px}.table-wrap small{display:block;font-size:11px;color:#829087;margin-top:4px}.warning-text{color:#9b6a19!important}.planner-card{padding:30px;border:1px solid #cfe0f7;border-radius:11px;background:#eef5ff}.planner-inputs label{min-width:185px}.plan-result{margin-top:30px;padding-top:25px;border-top:1px solid #cfe0f7}.plan-result p{color:#64748b}.plan-number{display:block;font-size:58px;line-height:1;color:#1d4ed8;letter-spacing:-.07em;margin:8px 0}.pill{display:inline-block;font-size:11px;font-weight:800;padding:5px 8px;border-radius:20px}.pill-achievable{color:#1d4ed8;background:#dbeafe}.pill-impossible{color:#9a3636;background:#fde5e5}.pill-already_achieved{color:#685314;background:#f8efc9}.compact{margin-top:16px}.mini-metrics{display:flex;gap:12px;margin-top:15px}.mini-metrics .metric{flex:1;background:#f7faff}.simulation-row{display:grid;grid-template-columns:1fr 80px 110px 36px;gap:8px;margin-bottom:9px}.simulation-summary{background:#eef5ff;text-align:center;display:grid;align-content:center;min-height:280px}.gpa-number.dark{color:#1d4ed8;font-size:62px}.compare{padding:13px;display:flex;gap:12px;align-items:center;justify-content:center;background:#fff;border-radius:8px;text-align:left;font-size:12px}.compare span{display:grid;gap:3px}.compare strong{font-size:19px;color:#1d4ed8}.muted{color:#64748b;font-size:12px}.course-score-layout{display:grid;grid-template-columns:1.2fr .8fr;gap:45px}.component-list{margin:20px 0;display:grid;gap:8px}.component-row{display:grid;grid-template-columns:1fr 100px 100px 36px;gap:8px}.course-score-result{align-self:center;padding:28px;background:#eef5ff;border-radius:9px;text-align:center}.rules{max-width:900px;line-height:1.8}.rules h2{margin-top:20px}.grade-map{padding:15px;background:#eef5ff;color:#1e3a5f;border-radius:7px;font-size:14px}.rules li{color:#475569;margin:6px 0}@media(max-width:900px){.sidebar{position:static;width:100%;height:auto;padding:12px;flex-direction:row;align-items:center;overflow-x:auto;scrollbar-width:none}.sidebar::-webkit-scrollbar{display:none}.brand{padding:0 18px 0 0;white-space:nowrap}.sidebar nav{display:flex}.nav-item{white-space:nowrap}.sidebar-note{display:none}.app-shell{display:block}.content{width:100%;margin:0;padding:28px 18px}.metric-grid,.two-column,.course-score-layout{grid-template-columns:1fr}.add-course form{grid-template-columns:1fr 1fr}.page-header,.candidate-panel .panel-title{display:grid}.candidate-panel .header-actions{justify-content:stretch}.candidate-panel .header-actions button{flex:1}.hero-card{padding:25px}.gpa-number{font-size:52px}.hero-actions{justify-items:start;margin-top:18px}.planner-inputs{flex-wrap:wrap}.simulation-row{grid-template-columns:1fr 65px 95px 36px}.mini-metrics{display:grid;grid-template-columns:1fr}.import-preview{grid-template-columns:1fr 1fr}}
