:root{--ink:#111827;--muted:#667085;--line:#e5e9f0;--paper:#fff;--canvas:#f3f6fa;--blue:#2f6fed;--blue-dark:#214fb4;--violet:#7c4dff;--green:#0c8f72;--amber:#cf7a12;--red:#d44949;--shadow:0 16px 48px rgba(16,24,39,.10);font-family:Inter,"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:var(--ink);background:var(--canvas);font-size:16px}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--canvas)}button,input,select,textarea{font:inherit}.app-shell{display:grid;grid-template-columns:232px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:#101827;color:#e9eef6;padding:28px 18px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;font-size:1.1rem;font-weight:750;padding:0 10px 30px}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:linear-gradient(145deg,#4d83ff,#7c4dff);color:white;box-shadow:0 8px 20px rgba(47,111,237,.35)}nav{display:grid;gap:6px}.nav-item{width:100%;display:flex;align-items:center;gap:12px;border:0;border-radius:10px;background:transparent;color:#9da9bc;text-align:left;padding:12px 14px;cursor:pointer;font-size:.94rem}.nav-item span{width:22px;text-align:center;font-size:1.1rem}.nav-item:hover,.nav-item.active{color:#fff;background:#202c3e}.nav-item.active{box-shadow:inset 3px 0 #5c8cff}.sidebar-bottom{margin-top:auto;padding:18px 10px 0;border-top:1px solid #283448}.sidebar-bottom p{font-size:.76rem;color:#7f8ba0;line-height:1.5}.export-link{color:#b9c7dc;font-size:.88rem;text-decoration:none}.export-link:hover{color:white}main{min-width:0}.topbar{height:104px;display:flex;align-items:center;gap:18px;padding:20px clamp(22px,4vw,56px);background:rgba(243,246,250,.92);backdrop-filter:blur(10px);position:sticky;top:0;z-index:10;border-bottom:1px solid rgba(229,233,240,.8)}.topbar h1{font-size:1.65rem;margin:2px 0 0;letter-spacing:-.04em}.eyebrow{margin:0;color:var(--muted);font-size:.8rem}.primary-button,.secondary-button,.ghost-button,.choice-button{border:0;border-radius:10px;padding:11px 16px;cursor:pointer;font-weight:650}.primary-button{background:var(--blue);color:white;margin-left:auto;box-shadow:0 6px 16px rgba(47,111,237,.24)}.primary-button:hover{background:var(--blue-dark)}.secondary-button{background:#eaf0ff;color:#2457c5}.ghost-button{background:transparent;border:1px solid var(--line);color:var(--ink)}.menu-button{display:none;border:0;background:transparent;font-size:1.35rem}.content{padding:28px clamp(22px,4vw,56px) 64px;max-width:1440px}.hero-grid{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(260px,.8fr);gap:22px}.focus-panel{background:#172235;color:#fff;border-radius:20px;padding:28px;min-height:250px;position:relative;overflow:hidden}.focus-panel:after{content:"";position:absolute;width:220px;height:220px;border:42px solid rgba(100,143,255,.12);border-radius:50%;right:-80px;top:-100px}.focus-panel h2{font-size:1.55rem;margin:8px 0 12px;max-width:520px}.focus-panel p{color:#bdc9dc;line-height:1.7;max-width:590px}.kicker{font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;color:#83a7ff;font-weight:700}.focus-actions{display:flex;gap:10px;margin-top:24px;position:relative;z-index:1}.focus-actions .primary-button{margin:0}.stat-stack{display:grid;grid-template-columns:1fr 1fr;gap:14px}.stat-card,.panel{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:0 5px 22px rgba(16,24,39,.035)}.stat-card strong{display:block;font-size:1.75rem;margin-top:12px}.stat-card span{font-size:.82rem;color:var(--muted)}.stat-card.wide{grid-column:1/-1}.section-header{display:flex;align-items:end;justify-content:space-between;gap:16px;margin:30px 0 14px}.section-header h2{margin:0;font-size:1.15rem}.section-header p{margin:4px 0 0;color:var(--muted);font-size:.86rem}.link-button{border:0;background:transparent;color:var(--blue);cursor:pointer;font-weight:650}.task-list,.activity-list,.review-list,.mistake-list{display:grid;gap:10px}.task,.activity,.review-row,.mistake-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;border:1px solid var(--line);background:white;border-radius:13px;padding:15px 16px}.subject-dot{width:10px;height:10px;border-radius:50%;background:var(--dot,#999)}.task h3,.activity h3,.review-row h3,.mistake-row h3{font-size:.96rem;margin:0 0 4px}.meta{font-size:.8rem;color:var(--muted);line-height:1.5}.icon-button{width:34px;height:34px;border:1px solid var(--line);border-radius:9px;background:white;cursor:pointer;color:var(--blue);font-weight:800}.empty{padding:40px 20px;text-align:center;border:1px dashed #ccd4df;border-radius:14px;color:var(--muted);background:rgba(255,255,255,.45)}.map-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.subject-card{background:white;border:1px solid var(--line);border-radius:17px;overflow:hidden}.subject-head{padding:21px;border-bottom:1px solid var(--line)}.subject-head h2{margin:0 0 7px}.progress{height:7px;border-radius:99px;background:#edf0f4;overflow:hidden}.progress>i{display:block;height:100%;width:var(--progress,0%);background:var(--subject);border-radius:99px}.module{border-bottom:1px solid var(--line)}.module:last-child{border:0}.module summary{padding:14px 18px;cursor:pointer;font-weight:650;list-style:none;display:flex;justify-content:space-between}.module summary::-webkit-details-marker{display:none}.module summary:after{content:"＋";color:var(--muted)}.module[open] summary:after{content:"−"}.kp-list{padding:0 12px 12px}.kp{display:grid;grid-template-columns:1fr auto;gap:10px;padding:11px 8px;border-radius:9px}.kp:hover{background:#f6f8fb}.kp-title{font-size:.88rem}.status-pill{font-size:.72rem;padding:4px 8px;border-radius:99px;background:#edf1f5;color:#5d6878;white-space:nowrap}.status-pill[data-status="已掌握"]{background:#e4f6f0;color:#08745b}.status-pill[data-status="待复习"]{background:#fff1da;color:#9a5a0a}.status-pill[data-status="学习中"]{background:#e9efff;color:#2457c5}.page-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.7fr);gap:20px}.chart{display:flex;align-items:flex-end;gap:12px;height:210px;padding-top:20px}.bar-wrap{flex:1;text-align:center;color:var(--muted);font-size:.72rem}.bar{height:var(--height);min-height:4px;background:linear-gradient(180deg,#5688ff,#2f6fed);border-radius:8px 8px 3px 3px;margin-bottom:8px;position:relative}.bar:hover:after{content:attr(data-value);position:absolute;top:-27px;left:50%;transform:translateX(-50%);background:#111827;color:#fff;padding:3px 6px;border-radius:5px}.legend-list{display:grid;gap:14px}.legend-item{display:grid;grid-template-columns:90px 1fr 34px;gap:10px;align-items:center;font-size:.85rem}.thin-progress{height:8px;background:#edf0f4;border-radius:99px;overflow:hidden}.thin-progress i{display:block;height:100%;background:#7c4dff;border-radius:99px}.danger{color:var(--red)}.modal-backdrop{position:fixed;inset:0;z-index:50;background:rgba(10,17,28,.58);display:grid;place-items:center;padding:20px}.modal-backdrop[hidden]{display:none}.modal{position:relative;background:white;width:min(560px,100%);max-height:90vh;overflow:auto;border-radius:20px;padding:28px;box-shadow:var(--shadow)}.modal h2{margin:0 0 6px}.modal .intro{margin:0 0 22px;color:var(--muted);font-size:.9rem}.close-button{position:absolute;right:18px;top:16px;border:0;background:transparent;font-size:1.5rem;cursor:pointer;color:var(--muted)}form{display:grid;gap:15px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}label{display:grid;gap:7px;font-size:.83rem;font-weight:650;color:#3f4857}input,select,textarea{width:100%;border:1px solid #ccd4df;border-radius:10px;padding:11px 12px;background:#fff;color:var(--ink)}textarea{min-height:82px;resize:vertical}input:focus,select:focus,textarea:focus{outline:3px solid rgba(47,111,237,.15);border-color:var(--blue)}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:6px}.result-choices{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.choice-button{border:1px solid var(--line);background:#f7f9fc}.choice-button:hover{border-color:var(--blue);color:var(--blue)}.toast{position:fixed;right:24px;bottom:24px;background:#101827;color:white;padding:13px 18px;border-radius:11px;box-shadow:var(--shadow);transform:translateY(80px);opacity:0;transition:.25s;z-index:80}.toast.show{transform:translateY(0);opacity:1}.loading{padding:80px;text-align:center;color:var(--muted)}@media(max-width:980px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;z-index:40;transform:translateX(-100%);transition:.25s;width:240px}.sidebar.open{transform:none}.menu-button{display:block}.map-grid{grid-template-columns:1fr}.hero-grid,.page-grid{grid-template-columns:1fr}}@media(max-width:620px){.topbar{height:88px;padding:14px 16px}.content{padding:20px 16px 52px}.primary-button{padding:10px 12px}.topbar .primary-button{font-size:0;width:43px;height:43px}.topbar .primary-button:first-letter{font-size:20px}.hero-grid{gap:14px}.focus-panel{padding:22px}.stat-card{padding:16px}.task,.activity,.review-row,.mistake-row{grid-template-columns:auto 1fr}.task>:last-child,.activity>:last-child,.review-row>:last-child,.mistake-row>:last-child{grid-column:2}.form-row{grid-template-columns:1fr}.modal{padding:24px 20px}.result-choices{grid-template-columns:1fr}}

.roadmap-hero{display:flex;justify-content:space-between;gap:28px;align-items:center;padding:30px;border-radius:20px;background:linear-gradient(135deg,#172235,#263b66);color:white;overflow:hidden}.roadmap-hero h2{margin:8px 0 10px;font-size:1.65rem}.roadmap-hero p{margin:0;color:#c5d0e2;line-height:1.7;max-width:680px}.roadmap-kpis{display:grid;grid-template-columns:repeat(3,minmax(105px,1fr));gap:10px}.roadmap-kpis div{padding:15px;border:1px solid rgba(255,255,255,.14);border-radius:13px;background:rgba(255,255,255,.06)}.roadmap-kpis strong,.roadmap-kpis span{display:block}.roadmap-kpis strong{font-size:1.35rem}.roadmap-kpis span{margin-top:6px;color:#b8c5d9;font-size:.72rem}.active-plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.roadmap-item{border:1px solid var(--line);border-radius:14px;background:white;padding:17px}.roadmap-item.compact{box-shadow:0 5px 20px rgba(16,24,39,.04)}.roadmap-item-top{display:grid;grid-template-columns:auto 1fr auto;align-items:start;gap:11px}.roadmap-item h3{font-size:.95rem;margin:0 0 4px}.roadmap-item .thin-progress{margin:14px 0 11px}.roadmap-item p{margin:0;color:var(--muted);font-size:.8rem;line-height:1.55}.roadmap-item footer{display:flex;gap:8px;flex-wrap:wrap;margin-top:13px}.roadmap-item footer span{padding:5px 8px;border-radius:7px;background:#f3f6fa;color:#586476;font-size:.74rem}.status-pill[data-status="进行中"]{background:#e9efff;color:#2457c5}.status-pill[data-status="已逾期"]{background:#fde9e9;color:#ae3232}.week-controls{display:flex;gap:7px}.week-controls .ghost-button{padding:8px 11px;font-size:.78rem;background:white}.week-load-grid{display:grid;grid-template-columns:repeat(7,minmax(135px,1fr));gap:10px;overflow-x:auto;padding-bottom:5px}.day-plan{min-width:135px;border:1px solid var(--line);border-radius:14px;background:white;padding:13px}.day-plan.today-card{outline:2px solid var(--blue);outline-offset:1px}.day-plan.over{border-color:#efaaaa}.day-plan.full{border-color:#f1d394}.day-plan header{display:flex;justify-content:space-between;gap:8px;align-items:start}.day-plan header strong,.day-plan header span{display:block}.day-plan header span{color:var(--muted);font-size:.72rem;margin-top:3px}.day-plan header b{font-size:.66rem;color:var(--muted);white-space:nowrap}.load-track{height:5px;background:#edf0f4;border-radius:99px;margin:11px 0;overflow:hidden}.load-track i{display:block;height:100%;background:var(--green);border-radius:99px}.day-plan.full .load-track i{background:var(--amber)}.day-plan.over .load-track i{background:var(--red)}.day-tasks{display:grid;gap:7px}.daily-task{display:grid;grid-template-columns:auto 1fr auto;gap:7px;text-align:left;border:0;border-radius:9px;background:#f6f8fb;padding:9px 8px;cursor:pointer;color:var(--ink)}.daily-task:hover{background:#edf2fb}.daily-task>i,.roadmap-subject summary i{width:7px;height:7px;border-radius:50%;background:var(--dot);margin-top:5px}.daily-task span>*{display:block}.daily-task strong{font-size:.72rem;line-height:1.35}.daily-task small{font-size:.65rem;color:var(--muted);margin-top:3px}.daily-task em{display:none}.daily-task>b{font-size:.9rem;color:var(--blue)}.daily-task.done{opacity:.58}.daily-task.done strong{text-decoration:line-through}.phase-strip{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(220px,1fr);gap:12px;overflow-x:auto;padding:2px 2px 10px}.phase-card{border:1px solid var(--line);border-radius:14px;background:white;padding:17px}.phase-card.current{border-color:var(--blue);box-shadow:inset 0 3px var(--blue)}.phase-card>span{font-size:.72rem;color:var(--blue)}.phase-card h3{margin:9px 0 7px;font-size:.95rem}.phase-card p,.phase-card small{display:block;color:var(--muted);font-size:.77rem;line-height:1.5}.phase-card small{margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}.roadmap-subjects{display:grid;gap:12px}.roadmap-subject{border:1px solid var(--line);border-radius:15px;background:white;overflow:hidden}.roadmap-subject summary{display:flex;justify-content:space-between;align-items:center;padding:17px 19px;cursor:pointer;list-style:none}.roadmap-subject summary::-webkit-details-marker{display:none}.roadmap-subject summary span{display:flex;align-items:center;gap:10px;font-weight:750}.roadmap-subject summary b{font-size:.78rem;color:var(--muted)}.roadmap-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:0 15px 15px}.roadmap-dashboard-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:20px}.stat-card strong.text-stat{font-size:1.15rem;line-height:1.4}
@media(max-width:1100px){.week-load-grid{grid-template-columns:repeat(7,minmax(155px,1fr))}.roadmap-hero{align-items:flex-start;flex-direction:column}.roadmap-kpis{width:100%}.active-plan-grid{grid-template-columns:1fr}.roadmap-dashboard-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.roadmap-hero{padding:22px}.roadmap-kpis{grid-template-columns:1fr}.section-header{align-items:flex-start;flex-direction:column}.week-controls{width:100%}.week-controls .ghost-button{flex:1}.roadmap-items{grid-template-columns:1fr}.roadmap-dashboard-grid{grid-template-columns:1fr 1fr}.phase-strip{grid-auto-columns:80%}}
