:root {
  --ink:#172033;
  --muted:#657089;
  --paper:#f5f7fb;
  --card:#fff;
  --navy:#163b67;
  --blue:#2d6aa6;
  --cyan:#e9f4ff;
  --line:#dce3ed;
  --green:#1e7a57;
  --green-bg:#eaf7f1;
  --amber:#9a6200;
  --amber-bg:#fff5dc;
  --red:#a63b32;
  --red-bg:#fff0ee;
  --shadow:0 10px 30px rgba(25,45,75,.08);
}

* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body {
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans CJK SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  line-height:1.62;
}
[hidden] { display:none !important; }
body.app-loading main { visibility:hidden; }
a { color:var(--blue); text-decoration:none; }
.shell { max-width:1240px; margin:auto; padding:28px 24px 72px; }
.masthead { position:relative; background:linear-gradient(135deg,#112f52,#1c5689); color:#fff; border-radius:22px; padding:24px 92px 24px 30px; box-shadow:var(--shadow); }
.masthead h1 { font-size:clamp(25px,4vw,40px); line-height:1.2; margin:0 0 8px; }
.masthead p { margin:0; color:#d8e8f7; }
.meta { display:flex; gap:10px; flex-wrap:wrap; margin-top:16px; }
.chip { display:inline-flex; align-items:center; border-radius:999px; padding:5px 10px; background:rgba(255,255,255,.13); font-size:13px; }

.settings-shortcut { position:absolute; top:22px; right:22px; min-width:52px; gap:6px; border-color:rgba(255,255,255,.34); background:rgba(255,255,255,.12); color:#fff; font-weight:750; }
.settings-shortcut[aria-current="page"] { background:#fff; color:var(--navy); }
.settings-shortcut span[aria-hidden="true"] { font-size:20px; line-height:1; }

.app-nav { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; }
.app-nav { position:sticky; top:0; z-index:20; padding:12px 2px 8px; background:rgba(245,247,251,.96); backdrop-filter:blur(12px); }
.app-nav button { white-space:nowrap; background:#fff; border:1px solid var(--line); border-radius:10px; color:var(--navy); }
.app-nav button { min-width:92px; min-height:44px; font-weight:750; }
.app-nav button[aria-current="page"] { color:#fff; background:var(--navy); border-color:var(--navy); }

.app-layout { display:grid; grid-template-columns:190px minmax(0,1fr); gap:18px; align-items:start; }
.app-layout main { min-width:0; }
.section-sidebar { position:sticky; top:72px; z-index:15; padding:12px; margin-top:18px; border:1px solid var(--line); border-radius:16px; background:rgba(255,255,255,.96); box-shadow:var(--shadow); }
.section-sidebar nav { display:grid; gap:7px; }
.section-sidebar strong { padding:3px 6px 7px; color:var(--navy); }
.section-sidebar button { width:100%; min-height:40px; justify-content:flex-start; padding:7px 10px; text-align:left; }
.section-sidebar button[aria-current="page"] { color:#fff; background:var(--navy); border-color:var(--navy); }
#strategy,#books,#mapping,#timeline,#milestones,#proposal,#pastpapers,#weeks,#daily,#review,#todayReviewTitle,#planMonthTitle { scroll-margin-top:82px; }
#planContext[data-plan-mode="daily"] #weeks,#planContext[data-plan-mode="daily"] .month-plan-block { display:none; }
#planContext[data-plan-mode="week"] #daily { display:none; }
#planContext[data-plan-mode="month"] #weeks { display:none; }
#planContext[data-plan-mode="month"] #daily > :not(.month-plan-block) { display:none; }

section { background:var(--card); border:1px solid var(--line); border-radius:18px; padding:26px; margin-top:18px; box-shadow:var(--shadow); }
h2 { font-size:24px; line-height:1.3; margin:0 0 18px; color:var(--navy); }
.plan-view-title { margin:0 0 18px; color:var(--navy); font-size:24px; font-weight:700; line-height:1.3; text-align:left; }
h3 { font-size:18px; margin:24px 0 10px; color:var(--navy); }
p { margin:7px 0 12px; }
ul { margin:8px 0 12px; padding-left:22px; }
.muted { color:var(--muted); }
.eyebrow { color:var(--blue); font-size:12px; font-weight:850; letter-spacing:.16em; margin:0 0 4px; }
.compact { font-size:14px; }

.panel { background:linear-gradient(135deg,#fff,#eef7ff); border-color:#b9d7f1; }
.dashboard-heading,.section-heading,.dialog-heading { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; }
.inline-tabs { display:flex; gap:7px; flex-wrap:wrap; margin-top:18px; }
.inline-tabs button[aria-current="page"] { color:#fff; background:var(--navy); border-color:var(--navy); }
.route-summary { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; }
.route-summary h2 { margin-bottom:6px; }
.route-summary p { max-width:680px; }
.reference-principles { margin-top:0; }
.reference-principles summary { cursor:pointer; color:var(--blue); font-weight:700; }
.reference-principles[open] { padding-top:12px; }
.dashboard-heading h2 { margin-bottom:0; }
.date-controls { display:flex; align-items:center; gap:7px; flex-wrap:wrap; justify-content:flex-end; }
.date-controls input { min-height:44px; }
.exam-grid,.goal-grid,.settings-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin-top:18px; }
.exam-card,.metric-card,.setting-card,.week-glance>div { background:#fff; border:1px solid #cfe1f2; border-radius:14px; padding:14px 16px; }
.exam-card { display:flex; justify-content:space-between; gap:12px; align-items:baseline; }
.exam-card small,.metric-card small,.week-glance small { color:var(--blue); font-weight:750; }
.exam-card strong { font-size:18px; color:var(--navy); }
.metrics-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-top:14px; }
.metric-card { min-height:112px; }
.metric-card small { display:block; }
.metric-card strong { display:block; color:var(--navy); font-size:clamp(22px,3vw,32px); line-height:1.3; margin-top:12px; }
.metric-card span { color:var(--amber); font-size:12px; }
.panel-card { background:#fff; border:1px solid #cfe1f2; border-radius:14px; padding:14px 16px; min-height:112px; }
.panel-card small { display:block; color:var(--blue); font-weight:700; letter-spacing:.06em; margin-bottom:8px; }
.panel-card p { margin:0; font-weight:650; }
.compact-card { min-height:0; }
.running-banner { margin-top:14px; padding:11px 14px; border-radius:11px; border:1px solid #a9d7c4; color:var(--green); background:var(--green-bg); font-weight:750; }

.priority-groups { display:grid; gap:16px; margin-top:20px; }
.priority-section { border:1px solid var(--line); border-radius:15px; overflow:hidden; background:#fff; }
.priority-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 15px; background:#eef4fa; }
.priority-heading h3 { margin:0; font-size:16px; }
.priority-heading span { font-size:13px; color:var(--muted); }
.priority-section[data-priority="P0"] .priority-heading { background:var(--red-bg); }
.priority-section[data-priority="P1"] .priority-heading { background:var(--cyan); }
.priority-section[data-priority="P2"] .priority-heading { background:var(--green-bg); }
.task-card { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:12px; align-items:center; padding:14px 15px; border-top:1px solid var(--line); }
.task-card:first-of-type { border-top:0; }
.task-card.is-complete { background:#fafbfc; }
.task-main { min-width:0; }
.task-check { display:flex; align-items:flex-start; gap:12px; cursor:pointer; }
.task-check input { appearance:none; width:24px; height:24px; margin:1px 0 0; flex:none; border:2px solid #91a4b8; border-radius:7px; background:#fff; display:grid; place-content:center; }
.task-check input::before { content:""; width:12px; height:7px; border-left:3px solid #fff; border-bottom:3px solid #fff; transform:rotate(-45deg) scale(0); margin-top:-2px; }
.task-check input:checked { background:var(--green); border-color:var(--green); }
.task-check input:checked::before { transform:rotate(-45deg) scale(1); }
.task-check input:focus-visible { outline:3px solid rgba(45,106,166,.28); outline-offset:2px; }
.task-card.is-complete .task-title { color:#8893a3; text-decoration:line-through; }
.task-title { font-size:14px; font-weight:680; }
.task-meta { display:flex; flex-wrap:wrap; gap:6px 12px; margin:7px 0 0 36px; color:var(--muted); font-size:12px; }
.task-module-tags { display:flex; flex-wrap:wrap; gap:6px; margin:8px 0 0 36px; }
.task-module-tag { min-height:36px; padding:5px 10px; border-radius:999px; background:var(--cyan); border-color:#b8d7ef; color:var(--blue); font-size:12px; text-align:left; }
.task-actions { display:flex; gap:7px; flex-wrap:wrap; justify-content:flex-end; }
.timer-button.is-running { background:var(--green-bg); color:var(--green); border-color:#a9d7c4; }
.empty-priority,.empty-day { padding:18px; color:var(--muted); text-align:center; }
.week-glance { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin-top:18px; }
.week-glance strong { display:block; color:var(--navy); font-size:19px; }

.notice { background:var(--amber-bg); border-left:4px solid #d99a22; padding:10px 14px; border-radius:8px; margin:12px 0; color:#5d480e; }
.rule { background:var(--cyan); border-left:4px solid var(--blue); padding:10px 14px; border-radius:8px; margin:12px 0; }
.strategy-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.strategy-card { border:1px solid var(--line); border-radius:14px; padding:15px; }
.strategy-card h3 { margin:0 0 8px; }
.table-wrap { overflow:auto; border:1px solid var(--line); border-radius:12px; -webkit-overflow-scrolling:touch; }
table { border-collapse:collapse; width:100%; min-width:820px; background:#fff; }
th,td { padding:11px 12px; border-bottom:1px solid var(--line); vertical-align:top; text-align:left; }
th { background:#eef4fa; color:var(--navy); font-size:13px; position:sticky; top:0; }
td { font-size:14px; }
tr:last-child td { border-bottom:0; }
.compact-table table { min-width:520px; }
.tag { display:inline-block; border-radius:999px; padding:2px 8px; font-weight:700; font-size:12px; margin:1px 3px 1px 0; }
.s { background:var(--red-bg); color:var(--red); }
.a { background:var(--amber-bg); color:var(--amber); }
.k { background:var(--green-bg); color:var(--green); }
.o { background:var(--cyan); color:var(--blue); }
.week { font-weight:750; color:var(--navy); white-space:nowrap; }
.week small { display:block; color:var(--muted); font-weight:500; }
.level-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-top:14px; }
.level { border:1px solid var(--line); border-radius:12px; padding:12px; background:#fbfcfe; }
.level strong { color:var(--navy); }
.daily-groups { display:grid; gap:18px; }
.daily-group { border:1px solid var(--line); border-radius:15px; overflow:hidden; }
.daily-group h3 { margin:0; background:#eaf2f9; padding:12px 16px; font-size:16px; display:flex; justify-content:space-between; gap:12px; }
.daily-group h3 small { font-weight:500; color:var(--muted); }
.day-row { display:grid; grid-template-columns:130px minmax(0,1fr) 210px; border-top:1px solid var(--line); background:#fff; }
.day-head { padding:14px; background:#fbfcfe; border-right:1px solid var(--line); }
.day-head strong { display:block; color:var(--navy); }
.day-head small { color:var(--muted); }
.tasks { padding:10px 14px; }
.task { display:flex; gap:9px; align-items:flex-start; padding:5px 0; border-bottom:1px dashed #e7ebf1; font-size:14px; }
.task:last-child { border-bottom:0; }
.task input { margin-top:5px; accent-color:var(--green); width:20px; height:20px; flex:none; }
.task input:checked + span { text-decoration:line-through; color:#9099aa; }
.prio { display:inline-block; min-width:28px; font-weight:800; }
.p0 .prio { color:var(--red); }
.p1 .prio { color:var(--blue); }
.p2 .prio { color:var(--green); }
.deliverable { padding:14px; border-left:1px solid var(--line); font-size:13px; color:#425069; background:#fcfdfd; }
.deliverable strong { color:var(--navy); }
.plan-date-toolbar { display:flex; flex-wrap:wrap; align-items:end; gap:10px; margin:12px 0 18px; }
.plan-date-toolbar label { display:grid; gap:4px; font-size:13px; color:var(--muted); }
.plan-date-toolbar span { color:var(--muted); font-size:13px; }
.month-plan-block { margin-top:22px; }
.month-plan-block .section-heading { align-items:baseline; }
.month-plan-block h3 { margin:0; }
.month-plan-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-top:12px; }
.month-day-card { border:1px solid var(--line); border-radius:12px; padding:12px; background:#fbfcfe; }
.month-day-card.is-selected { border-color:#7caad4; box-shadow:0 0 0 2px rgba(45,106,166,.12); }
.month-day-heading { display:flex; align-items:baseline; justify-content:space-between; gap:10px; }
.month-day-heading button { min-height:40px; padding:6px 9px; font-weight:750; }
.month-day-heading span { color:var(--muted); font-size:12px; }
.month-task-list { margin:8px 0 0; padding-left:20px; }
.month-task-list li { font-size:13px; margin:3px 0; }
.month-task-list b { display:inline-block; min-width:27px; }
.review-box { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.review-box>div { border:1px solid var(--line); border-radius:12px; padding:14px; }
.review-wide { grid-column:1/-1; }
.fill { display:block; border-bottom:1px solid #9aa7b9; min-height:28px; margin:5px 0 10px; }
.record-input,.record-area,input,select { border:1px solid #cfd9e6; border-radius:8px; background:#fbfcfe; color:var(--ink); font:inherit; padding:8px 9px; }
.record-input,.record-area { width:100%; }
.record-input { min-width:92px; }
.record-area { min-height:88px; resize:vertical; }

.settings-grid { align-items:start; }
.setting-card { display:grid; gap:10px; }
.setting-card label { display:grid; gap:4px; color:var(--muted); font-size:13px; }
.storage-status { padding:11px 14px; border-radius:10px; background:var(--green-bg); color:var(--green); }
.storage-status.is-error { background:var(--red-bg); color:var(--red); }
.actions { display:flex; gap:8px; flex-wrap:wrap; margin-top:14px; }
button,.button-like { border:1px solid #c8d5e3; background:#fff; color:var(--navy); min-height:44px; padding:9px 13px; border-radius:9px; cursor:pointer; font:inherit; display:inline-flex; align-items:center; justify-content:center; }
button:focus-visible,.button-like:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible { outline:3px solid rgba(45,106,166,.3); outline-offset:2px; }
button:disabled { opacity:.55; cursor:not-allowed; }
.primary-button { background:var(--navy); border-color:var(--navy); color:#fff; }
.danger-actions button { color:var(--red); border-color:#e3b8b4; }
.task-dialog { width:min(620px,calc(100% - 24px)); border:1px solid var(--line); border-radius:16px; padding:0; color:var(--ink); box-shadow:0 28px 80px rgba(18,40,66,.24); }
.task-dialog::backdrop { background:rgba(14,31,51,.45); }
.task-dialog form { padding:20px; }
.dialog-heading button { width:44px; padding:0; font-size:24px; }
.toast { position:fixed; left:50%; bottom:28px; transform:translateX(-50%); z-index:100; max-width:min(560px,calc(100% - 24px)); border-radius:11px; background:#172033; color:#fff; padding:11px 15px; box-shadow:var(--shadow); }
footer { padding:22px 6px 0; color:var(--muted); font-size:12px; }

.module-overview { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin:16px 0; }
.module-overview-card { display:grid; gap:5px; background:#f7fbff; border:1px solid #cfe1f2; border-radius:13px; padding:13px 15px; }
.module-overview-card strong { color:var(--navy); font-size:17px; }
.module-overview-card span { color:var(--muted); font-size:13px; }
.module-filters { display:flex; align-items:end; gap:10px; flex-wrap:wrap; margin:14px 0; }
.module-filters label { display:grid; gap:4px; min-width:150px; color:var(--muted); font-size:13px; }
.modules-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin-top:16px; }
.module-card { min-width:0; border:1px solid var(--line); border-radius:15px; padding:16px; background:#fff; overflow-wrap:anywhere; }
.module-card h3 { margin:0 0 3px; font-size:18px; line-height:1.38; }
.module-card-heading { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; }
.module-card-heading>div { min-width:0; }
.module-subject { color:var(--blue); font-size:12px; font-weight:750; }
.module-detail-button { min-width:96px; flex:none; }
.module-importance-row { display:flex; flex-wrap:wrap; gap:6px; margin:12px 0; }
.module-importance { display:inline-flex; border-radius:999px; padding:3px 9px; font-size:12px; font-weight:750; }
.module-importance.is-s { color:var(--red); background:var(--red-bg); }
.module-importance.is-a { color:var(--amber); background:var(--amber-bg); }
.module-importance.is-other { color:var(--muted); background:#eef1f5; }
.module-stage-block { border:1px solid #cfe1f2; background:#f7fbff; border-radius:12px; padding:11px 12px; }
.module-stage-block>div:first-child { display:flex; justify-content:space-between; gap:10px; color:var(--navy); }
.module-stage-block>div:first-child span { color:var(--muted); font-size:13px; }
.stage-meter { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:4px; margin-top:8px; }
.stage-meter span { height:8px; border-radius:99px; background:#dce3ed; }
.stage-meter span.is-reached { background:var(--blue); }
.module-targets { margin:12px 0; padding-bottom:8px; border-bottom:1px solid var(--line); }
.module-targets p { margin:4px 0; }
.target-status { color:var(--muted); }
.target-status.is-reached { color:var(--green); }
.target-status.target-needsVerification { color:var(--amber); }
.module-prerequisites { margin:9px 0; }
.prerequisite-hint { display:block; color:var(--amber); margin-top:3px; }
.module-criteria-preview,.module-next-task { overflow-wrap:anywhere; }
.module-verification { color:var(--amber); background:var(--amber-bg); border-radius:8px; padding:7px 9px; font-size:12px; }
.module-dialog { width:min(780px,calc(100% - 24px)); }
.module-dialog h3 { margin-top:20px; }
.module-progress-editor { display:grid; gap:9px; border:1px solid #cfe1f2; background:#f7fbff; border-radius:12px; padding:13px; margin-top:14px; }
.module-progress-editor label { display:grid; gap:5px; }
.module-progress-editor .primary-button { justify-self:start; }
.stage-evidence { display:grid; gap:7px; }
.stage-evidence-row { display:grid; grid-template-columns:minmax(165px,.6fr) minmax(0,1.4fr); gap:10px; border:1px solid var(--line); border-radius:9px; padding:9px 10px; font-size:13px; }
.stage-evidence-row strong { color:var(--navy); }
.stage-evidence-row span { color:var(--muted); }
.module-related-tasks { padding-left:20px; overflow-wrap:anywhere; }
.module-related-tasks li { margin:5px 0; }
.module-related-tasks li.is-complete { color:var(--muted); text-decoration:line-through; }

.today-review-panel { margin-top:18px; border:1px solid #cfe1f2; border-radius:14px; background:#fff; padding:14px 16px; }
.today-review-panel h3 { margin:0; font-size:17px; }
.today-review-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; align-items:center; border-top:1px solid var(--line); padding:10px 0; }
.today-review-row:first-child { border-top:0; }
.today-review-row strong,.today-review-row small { display:block; overflow-wrap:anywhere; }
.today-review-row small { color:var(--muted); }
.today-review-row>div:last-child { display:flex; gap:7px; }
.today-verifications { display:grid; gap:7px; margin-top:10px; padding-top:10px; border-top:1px solid var(--line); }
.today-verification-button { width:100%; justify-content:flex-start; text-align:left; min-width:0; overflow-wrap:anywhere; }

.pastpaper-stats { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin:14px 0; }
.pastpaper-stat { display:grid; gap:4px; border:1px solid #cfe1f2; border-radius:12px; padding:11px 13px; background:#f7fbff; }
.pastpaper-stat small { color:var(--blue); font-weight:750; }
.pastpaper-stat strong { color:var(--navy); overflow-wrap:anywhere; }
.pastpaper-filters,.verification-filters { display:flex; flex-wrap:wrap; gap:10px; align-items:end; margin:14px 0; }
.pastpaper-filters label,.verification-filters label,.form-grid label,.task-dialog form>label { display:grid; gap:4px; color:var(--muted); font-size:13px; }
.pastpaper-filters label,.verification-filters label { min-width:150px; }
.pastpaper-grid,.verification-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin:14px 0; }
.pastpaper-card,.verification-card { min-width:0; border:1px solid var(--line); border-radius:14px; padding:15px; background:#fff; overflow-wrap:anywhere; }
.pastpaper-heading,.verification-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.pastpaper-heading h3,.verification-heading h3 { margin:0; font-size:17px; min-width:0; }
.status-badge { display:inline-flex; flex:none; border-radius:999px; padding:3px 9px; font-size:12px; font-weight:750; color:var(--muted); background:#eef1f5; }
.status-firstCompleted,.status-secondCompleted,.verification-status-verified { color:var(--green); background:var(--green-bg); }
.status-pendingSecond,.verification-status-deferred { color:var(--amber); background:var(--amber-bg); }
.pastpaper-meta { display:flex; flex-wrap:wrap; gap:6px; margin:10px 0; }
.pastpaper-meta span { border-radius:999px; padding:3px 8px; background:var(--cyan); color:var(--blue); font-size:12px; }
.pastpaper-actions { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; margin-top:12px; }
.pastpaper-actions button { min-width:0; padding-left:7px; padding-right:7px; }
.mistake-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:9px; align-items:center; border:1px solid #ead6a4; background:var(--amber-bg); border-radius:10px; padding:9px 10px; margin-top:8px; }
.mistake-row strong,.mistake-row small { display:block; }
.mistake-row small { color:var(--muted); }
.mistake-row>div:last-child { display:flex; gap:6px; flex-wrap:wrap; }
.form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin:12px 0; }
.check-chip-grid { display:flex; flex-wrap:wrap; gap:7px; margin:8px 0 12px; max-height:190px; overflow:auto; }
.check-chip { display:inline-flex; align-items:center; gap:5px; border:1px solid var(--line); border-radius:999px; padding:6px 9px; font-size:12px; background:#fff; }
.check-chip input,.check-line input { width:20px; height:20px; accent-color:var(--green); }
.check-line { display:flex !important; grid-template-columns:auto 1fr; align-items:center; justify-content:start; margin:8px 0; }
.verification-card h3 { overflow-wrap:anywhere; }

.research-stage-hint { margin:12px 0; padding:10px 13px; border:1px solid #b9d9d0; border-radius:12px; background:#eff9f6; color:var(--green); font-weight:750; }
.backlog-hint { width:100%; margin-top:12px; justify-content:flex-start; color:var(--amber); background:var(--amber-bg); border-color:#e1c582; font-weight:750; }
.adjusted-date-label { color:var(--amber); font-weight:700; }
.imported-task-card { border-left:4px solid var(--green); }
.imported-task-card .task-meta { margin-left:0; }
.imported-plan-row { border-left:3px solid var(--green); padding-left:8px; }
.schedule-editor { display:grid; gap:9px; margin-top:18px; padding:13px; border:1px solid #cfe1f2; border-radius:12px; background:#f7fbff; }
.schedule-editor .form-grid { margin:0; }
.schedule-card-list,.proposal-panel { display:grid; gap:10px; margin-top:14px; }
.schedule-card,.proposal-card { min-width:0; border:1px solid var(--line); border-radius:13px; padding:13px 14px; background:#fff; overflow-wrap:anywhere; }
.schedule-adjusted { border-left:4px solid var(--amber); }
.schedule-imported { border-left:4px solid var(--green); }
.schedule-badge { display:inline-flex; width:max-content; margin-bottom:5px; padding:2px 8px; border-radius:999px; color:var(--blue); background:var(--cyan); font-size:12px; font-weight:750; }
.proposal-panel { padding:14px; border:1px solid #b9d7f1; border-radius:14px; background:#f7fbff; }
.proposal-panel h3 { margin:0; }
.proposal-card.has-blocker { border-color:#e1aaa5; background:var(--red-bg); }
.proposal-card-heading { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.proposal-card-heading strong { color:var(--navy); }
.schedule-date-change { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:center; gap:8px; margin:9px 0; }
.schedule-date-change span { padding:7px 9px; border-radius:8px; background:#eef4fa; text-align:center; font-weight:700; }
.schedule-date-change b { color:var(--blue); }
.imported-item-toggles { display:grid; gap:7px; margin-top:10px; }
.effective-filters { margin-bottom:14px; }
.research-overview-grid { display:grid; grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr); gap:14px; margin:14px 0 22px; }
.research-overview-grid .panel-card strong { display:block; margin-top:8px; font-size:24px; color:var(--blue); }
.management-form { display:grid; gap:12px; margin:14px 0 20px; padding:16px; border:1px solid var(--line); border-radius:14px; background:#fbfcfe; }
.management-form[hidden] { display:none; }
.management-form>label,.form-stack label,.management-filters label { display:grid; gap:5px; color:var(--muted); font-size:13px; }
.management-form textarea { min-height:88px; resize:vertical; }
.management-form details { border:1px solid var(--line); border-radius:11px; padding:10px 12px; background:#fff; }
.management-form summary { cursor:pointer; font-weight:750; color:var(--blue); }
.form-stack { display:grid; gap:10px; margin-top:12px; }
.management-filters { display:flex; flex-wrap:wrap; gap:10px; margin:12px 0; }
.management-filters label { min-width:160px; }
.record-list { display:grid; gap:10px; margin:12px 0 22px; }
.management-card { min-width:0; padding:14px; border:1px solid var(--line); border-radius:13px; background:#fff; overflow-wrap:anywhere; }
.record-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.record-heading strong,.record-heading small { display:block; }
.record-heading small { margin-top:4px; color:var(--muted); }
.record-heading .actions { flex:none; margin:0; }
.preserve-lines { white-space:pre-line; }
.empty-state { margin:0; padding:18px; border:1px dashed var(--line); border-radius:12px; color:var(--muted); text-align:center; }
.snapshot-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:9px; margin:12px 0; }
.snapshot-card { min-width:0; padding:10px; border-radius:10px; background:#f3f7fb; }
.snapshot-card small,.snapshot-card strong { display:block; overflow-wrap:anywhere; }
.snapshot-card strong { margin-top:4px; color:var(--blue); }
.compact-snapshot { grid-template-columns:repeat(5,minmax(0,1fr)); }
hr { border:0; border-top:1px solid var(--line); margin:26px 0; }

@media (max-width:980px) {
  .metrics-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .task-card { grid-template-columns:1fr; }
  .task-actions { justify-content:flex-start; margin-left:36px; }
  .modules-grid { grid-template-columns:1fr; }
  .pastpaper-grid,.verification-grid { grid-template-columns:1fr; }
  .snapshot-grid,.compact-snapshot { grid-template-columns:repeat(3,minmax(0,1fr)); }
}

@media (max-width:820px) {
  .shell { padding:14px 12px calc(92px + env(safe-area-inset-bottom)); }
  .masthead { padding:20px 68px 20px 20px; border-radius:17px; }
  .masthead p,.masthead .meta { display:none; }
  .settings-shortcut { top:14px; right:14px; min-width:44px; width:44px; padding:0; }
  .settings-shortcut-label { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
  .app-nav { position:fixed; top:auto; left:0; right:0; bottom:0; z-index:50; grid-template-columns:repeat(5,minmax(0,1fr)); gap:4px; overflow:visible; padding:8px 8px calc(8px + env(safe-area-inset-bottom)); background:rgba(255,255,255,.97); border-top:1px solid var(--line); }
  .app-nav button { min-width:0; width:100%; padding:8px 3px; }
  .app-layout { display:block; }
  .section-sidebar { position:sticky; top:0; z-index:30; margin:0 -12px; padding:8px 12px; border-width:0 0 1px; border-radius:0; box-shadow:none; overflow-x:auto; scrollbar-width:thin; }
  .section-sidebar nav { display:flex; gap:7px; width:max-content; min-width:100%; }
  .section-sidebar strong { display:none; }
  .section-sidebar button { width:auto; min-width:max-content; min-height:40px; justify-content:center; }
  #strategy,#books,#mapping,#timeline,#milestones,#proposal,#pastpapers,#weeks,#daily,#review,#todayReviewTitle,#planMonthTitle { scroll-margin-top:66px; }
  section { padding:18px; border-radius:15px; }
  .dashboard-heading,.section-heading { display:grid; }
  .route-summary { display:grid; }
  .inline-tabs { overflow-x:auto; flex-wrap:nowrap; padding-bottom:2px; }
  .inline-tabs button { flex:none; min-width:max-content; }
  .date-controls { justify-content:flex-start; }
  .date-controls input { flex:1; min-width:142px; }
  .exam-grid,.goal-grid,.settings-grid,.strategy-grid,.level-grid,.review-box { grid-template-columns:1fr; }
  .metrics-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .metric-card { min-height:98px; padding:12px; }
  .week-glance { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .task-actions { margin-left:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); }
  .task-actions button { min-width:0; padding-left:8px; padding-right:8px; }
  .review-wide { grid-column:auto; }
  .day-row { grid-template-columns:1fr; }
  .day-head { border-right:0; border-bottom:1px solid var(--line); }
  .deliverable { border-left:0; border-top:1px solid var(--line); }
  .month-plan-grid { grid-template-columns:1fr; }
  .module-overview { grid-template-columns:1fr; }
  .module-filters { display:grid; grid-template-columns:1fr; }
  .module-filters label { min-width:0; }
  .module-card-heading { display:grid; }
  .module-detail-button { width:100%; }
  .stage-evidence-row { grid-template-columns:1fr; gap:3px; }
  .task-module-tags { margin-left:0; }
  .pastpaper-stats { grid-template-columns:1fr; }
  .pastpaper-filters,.verification-filters { display:grid; grid-template-columns:1fr; }
  .pastpaper-filters label,.verification-filters label { min-width:0; }
  .pastpaper-actions { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .form-grid { grid-template-columns:1fr; }
  .research-overview-grid { grid-template-columns:1fr; }
  .record-heading { display:grid; }
  .record-heading .actions { display:flex; }
  .management-filters { display:grid; grid-template-columns:1fr; }
  .management-filters label { min-width:0; }
  .mistake-row,.today-review-row { grid-template-columns:1fr; }
  .today-review-row>div:last-child { display:grid; grid-template-columns:1fr 1fr; }
  .toast { bottom:calc(82px + env(safe-area-inset-bottom)); }
  .proposal-panel { padding:10px; }
  .proposal-card-heading { align-items:flex-start; }
  .schedule-date-change { grid-template-columns:1fr; }
  .schedule-date-change b { text-align:center; transform:rotate(90deg); }
}

@media (max-width:480px) {
  .masthead h1 { font-size:23px; }
  .metrics-grid { grid-template-columns:1fr 1fr; gap:8px; }
  .metric-card strong { font-size:22px; }
  .exam-card { align-items:flex-start; flex-direction:column; gap:2px; }
  .week-glance { grid-template-columns:1fr; }
  .task-actions { grid-template-columns:1fr 1fr; }
  .task-actions .detail-button { grid-column:1/-1; }
  .app-nav button { font-size:12px; }
  .snapshot-grid,.compact-snapshot { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

@media print {
  body { background:#fff; }
  .shell { max-width:none; padding:0; }
  .masthead { box-shadow:none; }
  .app-nav,.section-sidebar,.settings-shortcut,.actions,.plan-date-toolbar { display:none !important; }
  [data-view-section] { display:none !important; }
  [data-view-section="plan"] { display:block !important; }
  section { box-shadow:none; break-inside:avoid; }
  .daily-group { break-inside:avoid; }
  .task input { display:none; }
}
