:root{--paper:#f4f1e9;--paper-deep:#ece8dd;--paper-soft:#f7f4ec;--card:#fbf9f3;--ink:#1d1d19;--ink-2:#3b3a33;--muted:#6f6a5e;--muted-strong:#625d51;--faint:#6f6a5e;--line:#ddd6c7;--line-strong:#c9c0ad;--accent:#c9481f;--accent-ink:#9f3412;--accent-hover:#ad3a16;--accent-soft:#f6e2d8;--green:#2f6a4e;--green-soft:#e5efe8;--amber:#8a5a12;--amber-soft:#f3ead8;--red:#a33b31;--red-soft:#f5e1dc;--blue:#2d5f75;--blue-soft:#e4edf0;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-drawer:cubic-bezier(.32, .72, 0, 1);--sans:-apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Noto Sans CJK SC", "Source Han Sans SC", "Microsoft YaHei", sans-serif;--serif:"Iowan Old Style", "Palatino Linotype", "Songti SC", "Noto Serif CJK SC", "Source Han Serif SC", Georgia, serif;--mono:"SFMono-Regular", "SF Mono", "JetBrains Mono", "Roboto Mono", "Noto Sans Mono CJK SC", ui-monospace, monospace;--shadow-card:0 1px 0 #1d1d1905, 0 10px 30px -24px #1d1d1959;--shadow-panel:0 24px 80px -32px #1d1d1973, 0 2px 8px #1d1d190f}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:15px;line-height:1.7}h1,h2,h3,h4,p,dl,dd,dt,blockquote{margin:0}h1,h2,h3,h4{font-weight:600;line-height:1.25}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0}ul,ol{margin:0;padding:0;list-style:none}img,svg{display:block}::selection{background:var(--accent-soft);color:var(--ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:300;background:var(--ink);color:var(--paper);transition:transform .16s var(--ease-out);border-radius:6px;padding:8px 14px;font-size:13px;position:fixed;top:10px;left:10px;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.app-shell{min-height:100vh}.app-main{min-height:100vh;animation:pageIn .26s var(--ease-out);margin-left:236px}.page-shell{max-width:1160px;margin:0 auto;padding:44px 44px 96px}.page-shell--narrow{max-width:880px}.card{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-card);border-radius:12px}.eyebrow{font-family:var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--accent-ink);align-items:center;gap:8px;font-size:10.5px;display:flex}.page-head{justify-content:space-between;align-items:flex-end;gap:32px;margin-bottom:26px;display:flex}.page-head--stack{align-items:flex-start}.page-head-main{min-width:0}.page-head h1{font-family:var(--serif);letter-spacing:-.028em;text-wrap:balance;margin-top:10px;font-size:clamp(36px,4.2vw,56px);font-weight:500;line-height:1.08}.lede{max-width:680px;color:var(--muted);margin-top:13px;font-size:14.5px;line-height:1.8}.head-side{text-align:right;flex-shrink:0;padding-bottom:4px}.head-date{font-family:var(--serif);letter-spacing:-.02em;font-size:28px;line-height:1.1;display:block}.head-week{color:var(--muted);font-size:12px}.head-focus{flex-wrap:wrap;justify-content:flex-end;gap:5px;margin-top:10px;display:flex}.head-focus span{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:2px 8px;font-size:10.5px}.pace-line{color:var(--muted);flex-wrap:wrap;align-items:center;gap:9px;margin-top:16px;font-size:12px;display:flex}.pace-line svg{color:var(--faint)}.pace-behind{background:var(--red-soft);color:var(--red);border-radius:999px;padding:2px 8px;font-size:11px}.pace-ahead{background:var(--green-soft);color:var(--green);border-radius:999px;padding:2px 8px;font-size:11px}.btn{border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:7px;min-height:36px;padding:8px 15px;font-size:13px;font-weight:600;line-height:1.2;transition:background .16s,border-color .16s,color .16s,transform .12s;display:inline-flex}.btn:active{transform:scale(.97)}.btn-primary{background:var(--accent);color:#fff}.btn-secondary{border-color:var(--line-strong);color:var(--ink);background:0 0}.btn-ghost{color:var(--muted)}.btn-danger{background:var(--red);color:#fff}.btn-soft-success{background:var(--green-soft);color:var(--green)}.btn-sm{min-height:31px;padding:6px 12px;font-size:12px}.btn-tiny{min-height:27px;padding:4px 9px;font-size:11.5px;font-weight:500}.btn-wide{width:100%}.icon-button{width:32px;height:32px;color:var(--muted);border-radius:7px;place-items:center;transition:background .16s,color .16s;display:inline-grid}.text-link{color:var(--accent-ink);align-items:center;gap:5px;font-size:12.5px;font-weight:500;display:inline-flex}.text-button{color:var(--accent-ink);text-align:left;align-items:center;gap:5px;font-size:12px;font-weight:500;display:inline-flex}.text-button--danger{color:var(--red)}.progress-track{background:#e4ded0;border-radius:999px;height:4px;display:block;overflow:hidden}.progress-track>span{border-radius:inherit;background:var(--accent);height:100%;transition:width .7s var(--ease-out);display:block}.progress-track--thick{height:7px}.progress-track--small{height:3px}.sidebar{z-index:20;border-right:1px solid var(--line);background:#efece2;flex-direction:column;width:236px;padding:26px 18px 20px;display:flex;position:fixed;inset:0 auto 0 0}.wordmark{align-items:center;gap:10px;padding:0 6px;display:flex}.wordmark-mark{background:var(--ink);border-radius:6px;flex-direction:column;justify-content:center;gap:3px;width:32px;height:32px;padding:0 7px;display:flex}.wordmark-mark span{background:var(--accent);border-radius:2px;height:2px;display:block}.wordmark-mark span:last-child{width:62%}.wordmark-text{flex-direction:column;gap:1px;display:flex}.wordmark-text strong{font-family:var(--mono);letter-spacing:.07em;font-size:12.5px;font-weight:700;line-height:1.2}.wordmark-slash{color:var(--accent);padding:0 1px}.wordmark-text small{color:var(--muted);letter-spacing:.02em;font-size:10px}.wordmark--compact .wordmark-text small{display:none}.side-nav{flex-direction:column;gap:2px;margin-top:42px;display:flex}.side-link{color:var(--muted);border-radius:7px;grid-template-columns:22px 18px 1fr auto;align-items:center;gap:8px;padding:9px;transition:background .16s,color .16s;display:grid}.side-link.is-active{background:var(--card);color:var(--ink);box-shadow:inset 2px 0 0 var(--accent)}.side-link.is-active .side-index{color:var(--accent)}.side-index{font-family:var(--mono);letter-spacing:.04em;color:var(--faint);font-size:9.5px}.side-link svg{color:var(--faint)}.side-link.is-active svg{color:var(--accent-ink)}.side-label{font-size:13.5px;font-weight:500}.side-en{font-family:var(--mono);letter-spacing:.07em;color:var(--faint);font-size:8.5px}.sidebar-bottom{margin-top:auto;padding:0 6px}.side-progress{border-top:1px solid var(--line);padding:16px 0 14px;display:block}.side-progress-head,.side-progress-foot{color:var(--muted);justify-content:space-between;gap:8px;font-size:10.5px;display:flex}.side-progress-head{margin-bottom:7px}.side-progress-head .mono{color:var(--ink);font-size:10.5px}.side-progress-foot{color:var(--faint);margin-top:7px;font-size:9.5px}.side-settings{width:100%;color:var(--muted);align-items:center;gap:7px;padding:7px 0;font-size:11.5px;display:flex}.side-note{color:var(--faint);font-family:var(--mono);letter-spacing:.06em;margin-top:8px;font-size:8.5px}.mobile-header,.mobile-nav{display:none}.difficulty{border:1px solid var(--line);white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:2px 8px;font-size:11px;line-height:1.5;display:inline-flex}.difficulty-dot{background:currentColor;border-radius:50%;width:5px;height:5px}.difficulty--easy{color:var(--green);background:#eef4ef;border-color:#cadbcf}.difficulty--medium{color:var(--amber);background:#f7f0e2;border-color:#e3d3b4}.difficulty--hard{color:var(--red);background:#f8eae6;border-color:#e6c8c2}.pattern-tag{background:var(--paper-deep);color:var(--muted-strong);white-space:nowrap;border-radius:999px;align-items:center;padding:2px 8px;font-size:11px;display:inline-flex}.source-badges{align-items:center;gap:3px;display:inline-flex}.source-badge{border:1px solid var(--line);color:var(--muted);font-family:var(--mono);letter-spacing:.04em;white-space:nowrap;border-radius:3px;padding:1px 4px;font-size:9px;line-height:1.5}.source-badge--hot{background:var(--accent-soft);color:var(--accent-ink);border-color:#e6c3b7}.source-badge--nc{background:var(--blue-soft);color:var(--blue);border-color:#c9dbe2}.source-badge--notion{border-color:var(--line);background:var(--paper-soft);color:var(--muted)}.intro-banner{border:1px solid var(--line);border-left:3px solid var(--accent);background:var(--paper-soft);border-radius:8px;justify-content:space-between;align-items:center;gap:24px;margin-bottom:22px;padding:14px 44px 14px 16px;display:flex;position:relative}.intro-banner p{max-width:760px;color:var(--muted);margin-top:2px;font-size:12.5px;line-height:1.65}.intro-kicker{color:var(--accent-ink);font-family:var(--mono);letter-spacing:.1em;font-size:9.5px}.intro-close{width:28px;height:28px;position:absolute;top:8px;right:8px}.day-strip{grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:22px;display:grid}.day-chip{border:1px solid var(--line);color:var(--muted);background:#fbf9f373;border-radius:7px;flex-direction:column;gap:2px;padding:7px 9px 6px;display:flex}.day-chip-week{font-size:9px;line-height:1.3}.day-chip-num{font-family:var(--mono);color:var(--ink-2);font-size:13px;line-height:1.2}.day-chip-state{color:var(--faint);font-size:8.5px;line-height:1.3}.day-chip.is-current{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}.day-chip.is-current .day-chip-num,.day-chip.is-current .day-chip-state{color:var(--accent-ink)}.day-chip.is-done{background:var(--green-soft);border-color:#cadbcf}.day-chip.is-done .day-chip-state{color:var(--green)}.today-grid{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:18px;display:grid}.today-main{flex-direction:column;gap:16px;min-width:0;display:flex}.rail{flex-direction:column;gap:14px;min-width:0;display:flex}.focus-card,.review-card,.week-problems-card{padding:22px}.section-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:15px;display:flex}.section-head--tight{margin-bottom:10px}.section-title{font-family:var(--serif);letter-spacing:-.012em;margin-top:3px;font-size:25px;font-weight:500;line-height:1.2}.section-meta{color:var(--muted);text-align:right;font-size:11.5px;line-height:1.5}.section-note{color:var(--muted);margin-bottom:12px;font-size:12px;line-height:1.65}.section-kicker{color:var(--accent-ink);font-family:var(--mono);letter-spacing:.09em;text-transform:uppercase;align-items:center;gap:6px;margin-bottom:7px;font-size:9.5px;display:flex}.count-badge{border:1px solid var(--line);min-width:28px;height:28px;color:var(--muted);font-family:var(--mono);border-radius:999px;place-items:center;font-size:11px;display:grid}.problem-list{border-top:1px solid var(--line)}.problem-row{border-bottom:1px solid var(--line);grid-template-columns:42px minmax(0,1fr) auto;align-items:start;gap:12px;padding:14px 2px;display:grid}.problem-row:last-child{border-bottom:0;padding-bottom:5px}.problem-row.is-solved{background:linear-gradient(90deg,#0000,#e5efe873 18% 82%,#0000)}.problem-number{color:var(--faint);font-family:var(--mono);letter-spacing:-.02em;padding-top:3px;font-size:11px}.problem-main{min-width:0}.problem-title{color:var(--ink);text-align:left;padding:0;font-size:16.5px;font-weight:600;line-height:1.4}.problem-en{color:var(--faint);text-overflow:ellipsis;white-space:nowrap;margin-top:1px;font-size:10.5px;line-height:1.4;overflow:hidden}.problem-meta{flex-wrap:wrap;align-items:center;gap:5px;margin-top:7px;display:flex}.problem-side{flex-direction:column;align-items:flex-end;gap:2px;min-width:78px;padding-top:2px;display:flex}.solved-mark{color:var(--green);align-items:center;gap:4px;font-size:11.5px;font-weight:600;display:inline-flex}.solved-due{color:var(--muted);font-size:10.5px}.focus-foot{border-top:1px dashed var(--line);color:var(--muted);align-items:flex-start;gap:7px;margin-top:14px;padding-top:12px;font-size:11.5px;line-height:1.6;display:flex}.focus-foot svg{color:var(--faint);flex-shrink:0;margin-top:2px}.review-card{scroll-margin-top:20px}.empty-inline{border:1px dashed var(--line);color:var(--muted);border-radius:7px;align-items:center;gap:8px;padding:14px;font-size:12px;line-height:1.6;display:flex}.empty-inline svg{color:var(--green);flex-shrink:0}.review-list{border-top:1px solid var(--line)}.review-row{border-bottom:1px solid var(--line);grid-template-columns:34px minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:9px 0;display:grid}.review-row:last-child{border-bottom:0}.review-num{color:var(--faint);font-family:var(--mono);font-size:10px}.review-title{color:var(--ink-2);text-align:left;text-overflow:ellipsis;white-space:nowrap;padding:0;font-size:12.5px;overflow:hidden}.review-due{color:var(--faint);font-family:var(--mono);white-space:nowrap;font-size:10px}.review-due.is-overdue{color:var(--red)}.review-buttons{gap:4px;display:flex}.review-hint{color:var(--faint);align-items:center;gap:7px;padding:0 4px;font-size:11px;display:flex}.review-hint svg{color:var(--green)}.rail-card{padding:18px}.rail-title{font-family:var(--serif);margin-top:2px;font-size:21px;font-weight:500}.rail-fraction{color:var(--muted);font-family:var(--mono);font-size:10px}.rail-goal{color:var(--muted);margin:0 0 10px;font-size:11px;line-height:1.6}.week-mini{margin-top:12px}.week-mini-row{border-bottom:1px solid #ddd6c7a6;grid-template-columns:25px minmax(0,1fr) auto;align-items:center;gap:7px;padding:6px 0;display:grid}.week-mini-row:last-child{border-bottom:0}.week-mini-day{color:var(--faint);font-family:var(--mono);font-size:8.5px}.week-mini-title{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;line-height:1.4;overflow:hidden}.week-mini-row.is-current .week-mini-title{color:var(--ink);font-weight:600}.week-mini-state{color:var(--faint);font-size:8.5px}.week-mini-state.is-done{color:var(--green)}.rail-stats{flex-direction:column;gap:12px;display:flex}.stat-pair strong{font-family:var(--serif);align-items:baseline;gap:5px;font-size:30px;font-weight:500;line-height:1.1;display:flex}.stat-pair strong svg{color:var(--accent);align-self:center}.stat-pair strong em{color:var(--faint);font-family:var(--mono);font-size:12px;font-style:normal}.stat-pair span{color:var(--muted);font-size:10.5px}.rail-divider{background:var(--line);height:1px}.rail-method p{color:var(--muted);font-size:11.5px;line-height:1.7}.rail-method .text-link{margin-top:12px}.rail-link{border:1px solid var(--line);background:var(--paper-soft);border-radius:9px;justify-content:space-between;align-items:center;gap:10px;padding:13px 15px;transition:border-color .16s,background .16s;display:flex}.rail-link span{flex-direction:column;gap:1px;display:flex}.rail-link strong{font-size:12px;font-weight:600}.rail-link small{color:var(--muted);font-size:10px}.rail-link svg{color:var(--faint)}.checklist{flex-direction:column;gap:9px;margin:16px 0;display:flex}.checklist li{color:var(--ink-2);align-items:flex-start;gap:10px;font-size:13.5px;line-height:1.65;display:flex}.checklist-index{background:var(--accent);border-radius:50%;flex-shrink:0;width:5px;height:5px;margin-top:8px}.mock-note{background:var(--amber-soft);color:var(--amber);border-radius:7px;align-items:flex-start;gap:8px;margin:4px 0 18px;padding:10px 12px;font-size:11.5px;line-height:1.65;display:flex}.mock-note svg{flex-shrink:0;margin-top:2px}.week-problem-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.week-problem{border:1px solid var(--line);background:var(--paper-soft);text-align:left;border-radius:6px;align-items:center;gap:7px;min-width:0;padding:7px 9px;transition:border-color .16s,background .16s;display:flex}.week-problem.is-solved{background:var(--green-soft);border-color:#d2e0d6}.week-problem-num{color:var(--faint);font-family:var(--mono);flex-shrink:0;font-size:9px}.week-problem-title{color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:11px;overflow:hidden}.week-problem svg{color:var(--green);flex-shrink:0}.dot{border-radius:50%;flex-shrink:0;width:5px;height:5px}.dot--easy{background:var(--green)}.dot--medium{background:var(--amber)}.dot--hard{background:var(--red)}.completion-card{border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow-card);border-radius:14px;padding:44px;position:relative;overflow:hidden}.completion-card:before{content:"";pointer-events:none;background:radial-gradient(circle,#c9481f1a,#0000 68%);border-radius:50%;width:340px;height:340px;position:absolute;top:-120px;right:-80px}.completion-mark{background:var(--green-soft);width:58px;height:58px;color:var(--green);border-radius:50%;place-items:center;margin-bottom:22px;display:grid}.completion-title{font-family:var(--serif);letter-spacing:-.03em;margin-top:8px;font-size:clamp(34px,4vw,48px);font-weight:500;line-height:1.12}.completion-lede{max-width:600px;color:var(--muted);margin-top:12px;font-size:14px;line-height:1.75}.completion-stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line);gap:44px;margin:28px 0;padding:18px 0;display:flex}.completion-stats div{flex-direction:column;gap:1px;display:flex}.completion-stats strong{font-family:var(--serif);font-size:32px;font-weight:500;line-height:1}.completion-stats span{color:var(--muted);font-size:10.5px}.next-up{border:1px solid var(--line);background:var(--paper-soft);border-radius:9px;padding:18px}.next-up--final{background:var(--green-soft);border-color:#d2e0d6}.next-up-head{justify-content:space-between;gap:14px;margin-bottom:6px;display:flex}.next-week{color:var(--faint);font-size:10px}.next-up h2{font-family:var(--serif);font-size:23px;font-weight:500;line-height:1.3}.next-up p{color:var(--muted);margin-top:4px;font-size:12px}.next-problems{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.next-problems span{border:1px solid var(--line);background:var(--card);color:var(--ink-2);border-radius:999px;padding:3px 9px;font-size:11px}.completion-actions{flex-wrap:wrap;gap:8px;margin-top:22px;display:flex}.overlay{z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:0;visibility:hidden;pointer-events:none;background:#18161266;transition:opacity .16s,visibility 0s linear .16s;display:flex;position:fixed;inset:0}.overlay.is-open{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .18s}.overlay--drawer{transition:opacity .18s,visibility 0s linear .3s}.overlay--drawer.is-open{transition:opacity .18s}.overlay--center{justify-content:center;align-items:center;padding:24px}.overlay--drawer{justify-content:flex-end}.modal-panel{background:var(--card);box-shadow:var(--shadow-panel);position:relative}.modal-panel--center{opacity:0;width:min(460px,100%);max-height:calc(100vh - 48px);transition:opacity .16s ease, transform .16s var(--ease-out);border-radius:14px;padding:28px;overflow:auto;transform:translateY(8px)scale(.975)}.overlay.is-open .modal-panel--center{opacity:1;transform:translateY(0)scale(1)}.modal-panel--drawer{border-left:1px solid var(--line);width:min(486px,100%);height:100%;transition:transform .3s var(--ease-drawer);padding:34px 30px 48px;overflow-y:auto;transform:translate(100%)}.overlay.is-open .modal-panel--drawer{transform:translate(0)}.modal-close{z-index:2;background:#fbf9f3cc;position:absolute;top:13px;right:13px}.drawer-head{border-bottom:1px solid var(--line);padding:0 34px 20px 0}.drawer-title{font-family:var(--serif);letter-spacing:-.025em;margin-top:8px;font-size:33px;font-weight:500;line-height:1.15}.drawer-subtitle{color:var(--faint);margin-top:3px;font-size:12px}.drawer-meta{flex-wrap:wrap;align-items:center;gap:6px;margin-top:13px;display:flex}.paid-note{color:var(--amber);font-family:var(--sans);letter-spacing:0;text-transform:none;align-items:center;gap:3px;margin-left:3px;font-size:9.5px;display:inline-flex}.drawer-body{flex-direction:column;gap:26px;margin-top:22px;display:flex}.drawer-section-title{color:var(--muted);font-family:var(--mono);letter-spacing:.11em;text-transform:uppercase;margin-bottom:9px;font-size:9.5px;font-weight:500}.status-card{border-radius:9px;padding:14px}.status-card--solved{background:var(--green-soft);border:1px solid #d2e0d6}.status-head{color:var(--green);align-items:center;gap:7px;display:flex}.status-head strong{font-size:13px}.status-head span{color:var(--muted);margin-left:auto;font-size:10px}.status-grid{grid-template-columns:1fr 1fr;gap:9px 14px;margin:12px 0;display:grid}.status-grid dt{color:var(--muted);font-size:9.5px}.status-grid dd{color:var(--ink-2);font-size:12px;font-weight:500}.review-actions{gap:6px;display:flex}.review-actions .btn{background:#fbf9f3b3;border-color:#d2e0d6}.inline-confirm{color:var(--muted);border-top:1px solid #d2e0d6;flex-wrap:wrap;align-items:center;gap:8px;margin-top:11px;padding-top:10px;font-size:10.5px;display:flex}.inline-confirm .text-button{font-size:10.5px}.undo-link{color:var(--muted);margin-top:11px;font-size:10.5px}.hint-card{border:1px solid var(--line);border-left:3px solid var(--accent);background:var(--paper-soft);border-radius:7px;padding:15px 16px}.hint-lead{color:var(--ink);font-family:var(--serif);font-size:17px;line-height:1.5}.hint-list{flex-direction:column;gap:5px;margin-top:10px;display:flex}.hint-list li{color:var(--muted);padding-left:13px;font-size:11.5px;line-height:1.6;position:relative}.hint-list li:before{content:"";background:var(--line-strong);border-radius:50%;width:4px;height:4px;position:absolute;top:8px;left:0}.hint-pitfall{border-top:1px dashed var(--line);color:var(--muted);align-items:flex-start;gap:7px;margin-top:11px;padding-top:9px;font-size:10.5px;line-height:1.6;display:flex}.hint-pitfall span{background:var(--red-soft);color:var(--red);border-radius:3px;flex-shrink:0;padding:0 4px;font-size:9px;line-height:1.6}.link-list{grid-template-columns:1fr 1fr;gap:7px;display:grid}.link-list a{border:1px solid var(--line);background:var(--paper-soft);color:var(--ink-2);border-radius:6px;justify-content:space-between;align-items:center;gap:6px;padding:7px 9px;font-size:11px;transition:border-color .16s,background .16s;display:flex}.link-list svg{color:var(--faint);flex-shrink:0}.note-input{resize:vertical;border:1px solid var(--line);background:var(--paper);width:100%;color:var(--ink);border-radius:7px;padding:10px 12px;font-size:12.5px;line-height:1.7}.note-input::placeholder{color:var(--faint)}.note-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.source-detail{color:var(--muted);flex-direction:column;gap:4px;font-size:11px;display:flex}.source-detail li:before{content:"—";color:var(--faint);margin-right:6px}.complete-dialog,.settings-dialog{position:relative}.dialog-title{font-family:var(--serif);letter-spacing:-.02em;margin-top:7px;font-size:30px;font-weight:500;line-height:1.15}.dialog-intro{color:var(--muted);margin-top:9px;font-size:12px;line-height:1.7}.complete-problem{border:1px solid var(--line);background:var(--paper-soft);border-radius:7px;align-items:center;gap:8px;margin:18px 0 14px;padding:9px 11px;display:flex}.complete-num{color:var(--faint);font-family:var(--mono);font-size:10px}.complete-name{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;font-weight:600;overflow:hidden}.confidence-list{flex-direction:column;gap:7px;display:flex}.confidence-option{border:1px solid var(--line);background:var(--paper-soft);text-align:left;border-radius:9px;align-items:center;gap:11px;padding:11px 12px;transition:border-color .16s,background .16s,transform .12s;display:flex}.confidence-option:active{transform:scale(.99)}.confidence-option>svg:first-child{color:var(--accent-ink);flex-shrink:0}.confidence-text{flex-direction:column;flex:1;gap:1px;display:flex}.confidence-text strong{font-size:13px;font-weight:600}.confidence-text span{color:var(--muted);font-size:10.5px}.confidence-next{color:var(--muted);font-family:var(--mono);white-space:nowrap;font-size:9.5px}.confidence-arrow{color:var(--faint);opacity:0;flex-shrink:0;transition:opacity .16s,transform .16s;transform:translate(-3px)}.dialog-footnote{color:var(--muted);margin-top:14px;font-size:10.5px;line-height:1.65}.dialog-cancel{justify-content:center;margin:18px auto 0;display:flex}.settings-section{border-top:1px solid var(--line);margin-top:20px;padding-top:17px}.settings-section h3{color:var(--ink);align-items:center;gap:7px;margin-bottom:11px;font-size:12.5px;font-weight:600;display:flex}.settings-section h3 svg{color:var(--accent-ink)}.settings-list{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.settings-list div{justify-content:space-between;gap:16px;font-size:11.5px;display:flex}.settings-list dt{color:var(--muted)}.settings-list dd{color:var(--ink-2);text-align:right}.settings-actions{flex-wrap:wrap;gap:7px;display:flex}.settings-note{color:var(--faint);margin-top:9px;font-size:10px;line-height:1.6}.settings-section--danger{border-top-color:#e6c8c2}.inline-confirm--block{background:var(--red-soft);color:var(--red);border:1px solid #e6c8c2;border-radius:7px;flex-direction:column;align-items:flex-start;gap:10px;padding:11px;display:flex}.inline-confirm-actions{gap:7px;display:flex}.settings-footer{border-top:1px solid var(--line);color:var(--faint);font-family:var(--mono);letter-spacing:.03em;justify-content:space-between;gap:12px;margin-top:22px;padding-top:12px;font-size:8.5px;display:flex}.toast{z-index:200;border:1px solid var(--line-strong);background:var(--ink);max-width:min(420px,100vw - 32px);color:var(--paper);animation:toastIn .22s var(--ease-out);border-radius:8px;align-items:center;gap:8px;padding:9px 10px 9px 13px;font-size:12px;display:flex;position:fixed;bottom:26px;left:50%;transform:translate(-50%);box-shadow:0 14px 40px -18px #0009}.toast--success svg{color:#9fd4b4}.toast--danger svg{color:#eaa59a}.toast-dot{background:var(--accent);border-radius:50%;width:6px;height:6px}.toast-close{color:#f4f1e98c;border-radius:4px;place-items:center;width:22px;height:22px;margin-left:2px;display:grid}.page-head--stack>div:first-child{min-width:0}.plan-summary{flex-shrink:0;width:220px;padding-top:24px}.summary-stat{align-items:baseline;gap:4px;display:flex}.summary-stat strong{font-family:var(--serif);font-size:42px;font-weight:500;line-height:1}.summary-stat span{color:var(--muted);font-size:10.5px}.summary-bar{align-items:center;gap:8px;margin-top:9px;display:flex}.summary-bar .progress-track{flex:1}.summary-bar small{color:var(--muted);font-family:var(--mono);font-size:9px}.stat-strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(4,1fr);margin:30px 0 0;padding:18px 0;display:grid}.stat-strip>div{border-left:1px solid var(--line);flex-direction:column;gap:1px;padding:0 20px;display:flex}.stat-strip>div:first-child{border-left:0;padding-left:0}.stat-strip strong{font-family:var(--serif);font-size:31px;font-weight:500;line-height:1.1}.stat-strip span{color:var(--muted);font-size:10.5px}.plan-note{border:1px dashed var(--line-strong);background:var(--paper-soft);border-radius:8px;align-items:flex-start;gap:11px;margin:22px 0 26px;padding:12px 14px;display:flex}.plan-note-mark{background:var(--accent-soft);width:18px;height:18px;color:var(--accent-ink);font-family:var(--mono);border-radius:50%;flex-shrink:0;place-items:center;font-size:12px;line-height:1;display:grid}.plan-note p{color:var(--muted);font-size:11.5px;line-height:1.7}.plan-note a{color:var(--accent-ink);text-underline-offset:2px;text-decoration:underline}.week-list{flex-direction:column;gap:12px;display:flex}.week-card{border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow-card);border-radius:11px;transition:border-color .18s;overflow:hidden}.week-card.is-current{border-color:#dfb8a9}.week-card.is-open{border-color:var(--line-strong)}.week-head{text-align:left;grid-template-columns:48px minmax(0,1fr) 108px 20px;align-items:center;gap:16px;width:100%;padding:16px 19px;transition:background .16s;display:grid}.week-number{color:var(--accent-ink);font-family:var(--mono);letter-spacing:.04em;font-size:10.5px}.week-head-main{flex-direction:column;gap:2px;min-width:0;display:flex}.week-title-row{align-items:center;gap:8px;display:flex}.week-title{font-family:var(--serif);letter-spacing:-.01em;font-size:21px;font-weight:500;line-height:1.3}.week-goal{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;line-height:1.5;overflow:hidden}.week-progress{flex-direction:column;gap:5px;display:flex}.week-progress-text{color:var(--muted);font-family:var(--mono);text-align:right;font-size:9.5px}.week-chevron{color:var(--faint);transition:transform .2s var(--ease-out)}.week-card.is-open .week-chevron{transform:rotate(180deg)}.week-body{border-top:1px solid var(--line)}.plan-day{border-bottom:1px solid #ddd6c7bf;grid-template-columns:52px minmax(0,1fr);gap:14px;padding:14px 19px;display:grid}.plan-day:last-child{border-bottom:0}.plan-day.is-current{box-shadow:inset 3px 0 0 var(--accent);background:linear-gradient(90deg,#f6e2d88c,#0000 72%)}.plan-day.is-done{background:#e5efe838}.plan-day-id{flex-direction:column;gap:1px;padding-top:2px;display:flex}.plan-day-id span{color:var(--ink-2);font-family:var(--mono);font-size:12px;line-height:1.2}.plan-day.is-current .plan-day-id span{color:var(--accent-ink)}.plan-day-id small{color:var(--faint);font-size:8.5px}.plan-day-body{min-width:0}.plan-day-head{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.plan-day-head h4{color:var(--ink);font-size:14px;font-weight:600;line-height:1.4}.badge-current,.badge-mock,.badge-done{white-space:nowrap;border-radius:999px;align-items:center;gap:3px;padding:1px 6px;font-size:8.5px;line-height:1.5;display:inline-flex}.badge-current{background:var(--accent-soft);color:var(--accent-ink)}.badge-mock{background:var(--amber-soft);color:var(--amber)}.badge-done{background:var(--green-soft);color:var(--green)}.plan-day-count{color:var(--faint);font-family:var(--mono);margin-left:auto;font-size:10px}.plan-day-focus{color:var(--faint);font-family:var(--mono);letter-spacing:.02em;flex-wrap:wrap;align-items:center;gap:8px;margin-top:2px;font-size:9.5px;display:flex}.plan-mock-time{align-items:center;gap:3px;display:inline-flex}.plan-problems{flex-wrap:wrap;gap:5px;margin-top:7px;display:flex}.plan-problem{border:1px solid var(--line);background:var(--paper);color:var(--ink-2);border-radius:5px;align-items:center;gap:5px;padding:3px 7px;font-size:10.5px;line-height:1.5;transition:border-color .16s,background .16s;display:inline-flex}.plan-problem.is-solved{background:var(--green-soft);color:var(--green);border-color:#d2e0d6}.plan-problem-num{color:var(--faint);font-family:var(--mono);font-size:9.5px}.plan-problem.is-solved .plan-problem-num{color:#6e9a81}.plan-review-copy{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:5px;font-size:10.5px;line-height:1.5;overflow:hidden}.plan-footer{justify-content:space-between;align-items:center;gap:24px;margin-top:24px;padding:22px;display:flex}.plan-footer h2{font-family:var(--serif);margin-top:4px;font-size:24px;font-weight:500}.plan-footer p{max-width:620px;color:var(--muted);margin-top:5px;font-size:12px;line-height:1.7}.library-meta{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:4px;padding-top:18px;display:flex}.library-meta>div:first-child{align-items:baseline;gap:6px;display:flex}.library-meta strong{font-family:var(--serif);font-size:38px;font-weight:500;line-height:1}.library-meta span{color:var(--muted);font-size:10.5px}.library-due span{background:var(--accent-soft);color:var(--accent-ink);border-radius:999px;padding:2px 8px;font-size:9.5px}.filter-bar{z-index:12;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fbf9f3f5;flex-direction:column;gap:10px;margin-bottom:14px;padding:13px;display:flex;position:sticky;top:12px}.search-field{border:1px solid var(--line);background:var(--paper);height:38px;color:var(--faint);border-radius:7px;align-items:center;gap:8px;padding:0 11px;display:flex}.search-field:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.search-field input{min-width:0;color:var(--ink);background:0 0;border:0;outline:0;flex:1;font-size:12.5px}.search-field input::placeholder{color:var(--faint)}.search-field input::-webkit-search-cancel-button{display:none}.search-clear{width:20px;height:20px;color:var(--faint);border-radius:50%;place-items:center;font-size:15px;line-height:1;display:grid}.filter-row{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.segmented{background:var(--paper-deep);border-radius:7px;gap:2px;padding:3px;display:inline-flex}.segmented button{min-height:27px;color:var(--muted-strong);border-radius:5px;padding:3px 10px;font-size:10.5px;font-weight:500;transition:background .16s,color .16s}.segmented button.is-active{background:var(--card);color:var(--ink);box-shadow:0 1px 2px #1d1d1914}.select-wrap{border:1px solid var(--line);background:var(--paper);height:32px;color:var(--muted);border-radius:6px;align-items:center;gap:5px;padding-left:8px;display:inline-flex;position:relative}.select-wrap:after{content:"⌄";color:var(--faint);pointer-events:none;font-size:11px;position:absolute;top:50%;right:8px;transform:translateY(-58%)}.select-wrap select{appearance:none;height:100%;color:var(--ink-2);cursor:pointer;background:0 0;border:0;outline:0;padding:0 22px 0 0;font-size:10.5px}.select-wrap>svg{color:var(--faint)}.select-wrap:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}@media (forced-colors:active){.select-wrap:focus-within{outline-offset:2px;outline:2px solid buttontext}}.filter-reset{color:var(--muted);margin-left:auto;font-size:10.5px}.table-wrap{border-radius:11px;overflow:auto hidden}.problem-table{border-collapse:collapse;width:100%;min-width:760px;font-size:12.5px}.problem-table th{border-bottom:1px solid var(--line);color:var(--faint);font-family:var(--mono);letter-spacing:.08em;text-align:left;text-transform:uppercase;white-space:nowrap;background:#f7f3ea;padding:9px 13px;font-size:8.5px;font-weight:500}.problem-table td{vertical-align:middle;border-bottom:1px solid #ddd6c7b3;padding:9px 13px}.problem-table tbody tr{cursor:pointer;transition:background .14s}.problem-table tbody tr.is-solved{background:#e5efe829}.problem-table tbody tr:last-child td{border-bottom:0}.cell-num{width:50px;color:var(--faint);font-family:var(--mono);font-size:10px}.cell-title{min-width:220px}.row-title{color:var(--ink);text-align:left;padding:0;font-size:13px;font-weight:600;display:block}.row-en{max-width:280px;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;margin-top:1px;font-size:10.5px;line-height:1.4;display:inline-block;overflow:hidden}.row-paid,.row-note{vertical-align:middle;border-radius:3px;margin-left:5px;padding:0 4px;font-size:9px;line-height:1.6;display:inline-block}.row-paid{background:var(--amber-soft);color:var(--amber)}.row-note{background:var(--blue-soft);color:var(--blue)}.status-pill{border:1px solid var(--line);color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;gap:3px;padding:2px 7px;font-size:10.5px;display:inline-flex}.status-pill--done{background:var(--green-soft);color:var(--green);border-color:#d2e0d6}.cell-due{color:var(--muted);font-family:var(--mono);white-space:nowrap;font-size:10.5px}.empty-state{text-align:center;flex-direction:column;align-items:center;gap:8px;padding:60px 24px;display:flex}.empty-mark{background:var(--paper-deep);width:42px;height:42px;color:var(--faint);font-family:var(--serif);border-radius:50%;place-items:center;font-size:18px;display:grid}.empty-state h2{font-family:var(--serif);font-size:24px;font-weight:500}.empty-state p{max-width:420px;color:var(--muted);font-size:12px;line-height:1.7}.empty-state .btn{margin-top:6px}.library-foot{color:var(--faint);margin-top:14px;font-size:9.5px;line-height:1.6}.stat-cards{grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px;display:grid}.mini-stat{flex-direction:column;gap:1px;padding:15px 16px;display:flex}.mini-stat-icon{background:var(--paper-deep);width:27px;height:27px;color:var(--accent-ink);border-radius:50%;place-items:center;margin-bottom:7px;display:grid}.mini-stat strong{font-family:var(--serif);font-size:32px;font-weight:500;line-height:1.05}.mini-stat strong em{color:var(--faint);font-family:var(--mono);font-size:11px;font-style:normal}.mini-stat>span:last-child{color:var(--muted);font-size:10.5px}.progress-grid{grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);gap:14px;margin-bottom:16px;display:grid}.core-card,.coverage-card{padding:22px}.core-pct{color:var(--accent-ink);font-family:var(--mono);font-size:12px}.core-body{align-items:center;gap:26px;display:flex}.ring{flex-shrink:0;position:relative}.ring svg{display:block}.ring-track{stroke:#e5dfd2}.ring-value{stroke:var(--accent);transition:stroke-dashoffset .8s var(--ease-out)}.ring-center{flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.ring-center strong{font-family:var(--serif);letter-spacing:-.03em;font-size:40px;font-weight:500;line-height:1}.ring-center span{color:var(--muted);font-family:var(--mono);font-size:10px}.difficulty-breakdown{flex-direction:column;flex:1;gap:12px;min-width:0;display:flex}.difficulty-row-head{color:var(--muted);justify-content:space-between;gap:10px;margin-bottom:4px;font-size:10.5px;display:flex}.difficulty-row-head .mono{color:var(--ink-2);font-size:9.5px}.difficulty-track--easy>span{background:var(--green)}.difficulty-track--medium>span{background:var(--amber)}.difficulty-track--hard>span{background:var(--red)}.core-note{border-top:1px dashed var(--line);color:var(--faint);margin-top:16px;padding-top:11px;font-size:10px}.coverage-list{flex-direction:column;gap:13px;display:flex}.coverage-head{color:var(--ink-2);justify-content:space-between;gap:10px;margin-bottom:4px;font-size:10.5px;display:flex}.coverage-head .mono{color:var(--muted);font-size:9.5px}.coverage-fill--hot{background:var(--accent)!important}.coverage-fill--nc{background:var(--blue)!important}.coverage-fill--notion{background:var(--green)!important}.coverage-link{margin-top:18px}.coverage-extra{border-top:1px dashed var(--line);margin-top:18px;padding-top:12px}.coverage-extra p{color:var(--muted);margin-top:5px;font-size:10.5px;line-height:1.65}.pattern-card{margin-bottom:16px;padding:22px}.pattern-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;display:grid}.pattern-cell{border:1px solid var(--line);background:var(--paper-soft);border-radius:7px;flex-direction:column;gap:3px;padding:9px 10px;transition:border-color .16s,background .16s;display:flex}.pattern-cell.is-complete{background:var(--green-soft);border-color:#d2e0d6}.pattern-cell-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.pattern-cell-name{font-size:11.5px;font-weight:600}.pattern-cell-count{color:var(--muted);font-family:var(--mono);font-size:8.5px}.pattern-cell-en{color:var(--faint);font-family:var(--mono);letter-spacing:.02em;text-overflow:ellipsis;white-space:nowrap;font-size:7.5px;overflow:hidden}.pattern-cell-bar{background:#e4ded0;border-radius:999px;height:3px;margin-top:3px;display:block;overflow:hidden}.pattern-cell-bar>span{border-radius:inherit;background:var(--accent);height:100%;transition:width .6s var(--ease-out);display:block}.pattern-cell.is-complete .pattern-cell-bar>span{background:var(--green)}.activity-grid{grid-template-columns:minmax(0,1.35fr) minmax(0,.65fr);gap:14px;display:grid}.activity-card,.forecast-card{padding:22px}.heatmap-wrap{gap:7px;padding-top:4px;display:flex}.heatmap-weekdays{color:var(--faint);grid-template-rows:repeat(7,12px);gap:4px;font-size:8px;line-height:12px;display:grid}.heatmap{grid-template-rows:repeat(7,12px);grid-auto-columns:12px;grid-auto-flow:column;gap:4px;display:grid}.heat-cell{background:#e9e4d8;border-radius:2px;width:12px;height:12px;display:block}.heat-cell.level-1{background:#f2c8b7}.heat-cell.level-2{background:#e89b7a}.heat-cell.level-3{background:#d76a42}.heat-cell.level-4{background:#a83815}.heat-cell.is-future{opacity:.28}.heatmap-legend{color:var(--faint);align-items:center;gap:4px;margin-top:12px;font-size:8.5px;display:flex}.heatmap-legend .heat-cell{width:9px;height:9px}.forecast-bars{gap:8px;height:140px;padding-top:8px;display:flex}.forecast-day{flex-direction:column;flex:1;align-items:center;gap:4px;min-width:0;display:flex}.forecast-count{height:12px;color:var(--muted);font-family:var(--mono);font-size:8.5px}.forecast-track{background:var(--paper-deep);border-radius:3px;flex:1;justify-content:center;align-items:flex-end;width:100%;padding:2px;display:flex}.forecast-track>span{background:var(--accent);width:100%;transition:height .6s var(--ease-out);border-radius:2px;display:block}.forecast-label{color:var(--faint);white-space:nowrap;font-size:9px}.forecast-label.is-today{color:var(--accent-ink);font-weight:600}.forecast-note{border-top:1px dashed var(--line);color:var(--muted);margin-top:12px;padding-top:10px;font-size:10px;line-height:1.6}.method-page{max-width:1060px}.method-side-note{text-align:right;color:var(--muted);flex-direction:column;flex-shrink:0;gap:2px;padding-top:20px;font-size:10.5px;display:flex}.method-side-note .mono{color:var(--accent-ink);letter-spacing:.05em;font-size:10px}.pass-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin-top:32px;display:grid}.pass-card{padding:20px;position:relative}.pass-index{color:var(--faint);font-family:var(--mono);font-size:9px;position:absolute;top:16px;right:16px}.pass-card>svg{color:var(--accent-ink);margin-bottom:14px}.pass-card h2{font-family:var(--serif);font-size:21px;font-weight:500;line-height:1.3}.pass-card p{color:var(--muted);margin-top:7px;font-size:12px;line-height:1.7}.pass-tag{border:1px solid var(--line);color:var(--muted);font-family:var(--mono);letter-spacing:.04em;border-radius:999px;margin-top:13px;padding:2px 8px;font-size:9px;display:inline-block}.method-section{margin-top:54px}.method-section-head{margin-bottom:18px}.method-section-head h2{font-family:var(--serif);letter-spacing:-.02em;margin-top:4px;font-size:32px;font-weight:500}.method-section-head p{max-width:680px;color:var(--muted);margin-top:7px;font-size:12.5px;line-height:1.7}.rule-list{border-top:1px solid var(--line)}.rule-row{border-bottom:1px solid var(--line);grid-template-columns:40px 160px minmax(0,1fr);align-items:baseline;gap:18px;padding:15px 0;display:grid}.rule-index{color:var(--faint);font-family:var(--mono);font-size:9px}.rule-row h3{font-size:13.5px;font-weight:600}.rule-row p{color:var(--muted);font-size:12px;line-height:1.7}.cheatsheet{grid-template-columns:1fr 1fr;gap:8px;display:grid}.cheat-item{border:1px solid var(--line);background:var(--card);border-radius:8px;transition:border-color .16s}.cheat-item[open]{border-color:var(--line-strong)}.cheat-item summary{cursor:pointer;align-items:center;gap:8px;padding:12px 14px;list-style:none;display:flex}.cheat-item summary::-webkit-details-marker{display:none}.cheat-name{font-size:12.5px;font-weight:600}.cheat-en{color:var(--faint);font-family:var(--mono);letter-spacing:.02em;text-overflow:ellipsis;white-space:nowrap;font-size:8.5px;overflow:hidden}.cheat-plus{color:var(--faint);font-family:var(--mono);transition:transform .18s var(--ease-out);margin-left:auto;font-size:13px;line-height:1}.cheat-item[open] .cheat-plus{transform:rotate(45deg)}.cheat-body{border-top:1px solid var(--line);padding:12px 14px 14px}.cheat-hint{color:var(--ink);font-family:var(--serif);font-size:15px;line-height:1.55}.cheat-body ul{flex-direction:column;gap:4px;margin-top:8px;display:flex}.cheat-body li{color:var(--muted);padding-left:11px;font-size:10.5px;line-height:1.6;position:relative}.cheat-body li:before{content:"";background:var(--line-strong);border-radius:50%;width:3px;height:3px;position:absolute;top:7px;left:0}.cheat-pitfall{border-top:1px dashed var(--line);color:var(--muted);align-items:flex-start;gap:6px;margin-top:9px;padding-top:8px;font-size:10px;line-height:1.6;display:flex}.cheat-pitfall span{background:var(--red-soft);color:var(--red);border-radius:3px;flex-shrink:0;padding:0 4px;font-size:8.5px}.interview-steps{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:1fr 1fr;display:grid}.interview-step{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:20px}.interview-index{color:var(--accent-ink);font-family:var(--mono);font-size:9px}.interview-step h3{margin-top:5px;font-size:14px;font-weight:600}.interview-step blockquote{border-left:2px solid var(--accent);color:var(--ink);font-family:var(--serif);margin:9px 0 8px;padding-left:10px;font-size:14px;line-height:1.6}.interview-step p{color:var(--muted);font-size:11px;line-height:1.65}.source-links{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.source-links a,.source-static{border:1px solid var(--line);background:var(--paper-soft);border-radius:7px;flex-direction:column;gap:2px;padding:11px 12px;transition:border-color .16s,background .16s;display:flex}.source-links span{font-size:11.5px;font-weight:600}.source-links small{color:var(--muted);font-size:9.5px;line-height:1.5}.source-static{border-style:dashed}.method-legal{color:var(--faint);margin-top:13px;font-size:9.5px;line-height:1.7}.method-cta{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:9px;margin-top:24px;padding-top:20px;display:flex}.method-cta-note{color:var(--faint);align-items:center;gap:5px;margin-left:auto;font-size:9.5px;display:inline-flex}@keyframes pageIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@media (width<=1180px){.page-shell{padding:38px 30px 80px}.today-grid{grid-template-columns:minmax(0,1fr) 280px}.pattern-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.core-body{gap:18px}}@media (width<=980px){.sidebar{width:208px}.app-main{margin-left:208px}.page-shell{padding:32px 24px 72px}.today-grid,.progress-grid,.activity-grid{grid-template-columns:1fr}.rail{grid-template-columns:1fr 1fr;align-items:start;display:grid}.rail-link{grid-column:1/-1}.stat-strip{grid-template-columns:1fr 1fr;gap:14px 0}.stat-strip>div:nth-child(3){border-left:0;padding-left:0}.pass-grid{grid-template-columns:1fr}.pass-card{grid-template-columns:20px minmax(0,1fr) auto;align-items:start;column-gap:10px;display:grid}.pass-card>svg{grid-row:1/3;margin:2px 0 0}.pass-index{grid-area:1/3;position:static}.pass-card h2,.pass-card p{grid-column:2}.pass-tag{grid-area:2/3;margin-top:0}.week-head{grid-template-columns:42px minmax(0,1fr) 90px 18px;gap:12px}.pattern-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.source-links{grid-template-columns:1fr}}@media (width<=860px){.sidebar{display:none}.app-main{margin-left:0;padding-bottom:72px}.mobile-header{z-index:30;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#f4f1e9ed;justify-content:space-between;align-items:center;padding:10px 16px;display:flex;position:sticky;top:0}.mobile-nav{z-index:30;border-top:1px solid var(--line);padding:6px 5px calc(6px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fbf9f3f5;display:flex;position:fixed;bottom:0;left:0;right:0}.mobile-link{color:var(--faint);border-radius:7px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:4px 2px 3px;font-size:9.5px;transition:color .16s,background .16s;display:flex}.mobile-link.is-active{background:var(--accent-soft);color:var(--accent-ink)}.page-shell{padding:24px 18px 80px}.page-head{flex-direction:column;align-items:flex-start;gap:16px}.page-head h1{font-size:clamp(32px,8.5vw,44px)}.head-side{display:none}.page-head--stack>.method-side-note,.page-head--stack>.plan-summary,.page-head--stack>.library-meta{text-align:left;align-items:flex-start;width:100%;padding-top:0}.plan-summary{width:100%;max-width:280px}.library-meta{flex-direction:row;align-items:baseline;gap:10px}.library-meta strong{font-size:28px}.stat-strip{margin-top:22px}.filter-bar{position:static}.rail{grid-template-columns:1fr}.rail-link{grid-column:auto}.week-problem-grid{grid-template-columns:1fr}.completion-card{padding:28px 22px}.completion-stats{gap:28px}.plan-footer{flex-direction:column;align-items:flex-start}.week-head{grid-template-columns:34px minmax(0,1fr) auto 18px;padding:14px 15px}.week-progress{display:flex}.week-progress .progress-track{display:none}.week-goal{white-space:normal}.plan-day{grid-template-columns:42px minmax(0,1fr);padding:13px 15px}.plan-day-count{display:none}.method-section{margin-top:40px}.method-section-head h2{font-size:28px}.rule-row{grid-template-columns:30px minmax(0,1fr);gap:4px 12px}.rule-row p{grid-column:2}.cheatsheet,.interview-steps,.source-links{grid-template-columns:1fr}.method-cta-note{margin-left:0}.table-wrap{box-shadow:none;background:0 0;border:0;overflow:visible}.problem-table,.problem-table tbody,.problem-table tr,.problem-table td{display:block}.problem-table thead{display:none}.problem-table tr{border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow-card);border-radius:8px;flex-wrap:wrap;align-items:center;gap:5px 8px;margin-bottom:7px;padding:12px 13px;display:flex}.problem-table tbody tr:last-child{margin-bottom:0}.problem-table td{border:0;padding:0}.cell-num{flex:none;width:auto;padding-top:2px;font-size:9px}.cell-title{flex:1 1 0;min-width:0}.row-title{font-size:14px}.row-en{max-width:100%;font-size:10.5px}.problem-table td[data-label=难度],.problem-table td[data-label=模式],.problem-table td[data-label=来源]{align-items:center;display:inline-flex}.problem-table td[data-label=状态]{margin-left:auto}.cell-due{width:100%;color:var(--muted);margin-top:1px;font-size:10px}.cell-due:before{content:"下次复习 · ";font-family:var(--sans)}.pattern-grid{grid-template-columns:1fr 1fr}.activity-grid{grid-template-columns:1fr}.toast{bottom:calc(70px + env(safe-area-inset-bottom))}}@media (width<=600px){body{font-size:14.5px}.page-shell{padding:20px 14px 82px}.page-head h1{font-size:clamp(26px,8.2vw,34px)}.lede{font-size:13px}.intro-banner{flex-direction:column;align-items:flex-start;gap:8px;padding:13px 38px 13px 13px}.day-strip{gap:3px;margin-bottom:14px}.day-chip{padding:6px 5px}.day-chip-week{font-size:8px}.day-chip-num{font-size:11px}.day-chip-state{font-size:7.5px}.focus-card,.review-card,.week-problems-card,.core-card,.coverage-card,.pattern-card,.activity-card,.forecast-card{padding:16px}.section-title{font-size:22px}.section-meta{font-size:10px}.problem-row{grid-template-columns:28px minmax(0,1fr) auto;gap:8px;padding:12px 0}.problem-side{flex-direction:column;grid-area:1/3;justify-content:flex-start;align-items:flex-end;gap:2px;min-width:0;padding-top:1px}.problem-title{font-size:15.5px}.problem-en{font-size:10.5px}.problem-row.is-solved{background:0 0}.review-row{grid-template-columns:28px minmax(0,1fr);gap:4px 8px}.review-due{grid-column:2}.review-buttons{grid-column:2;margin-top:4px}.week-problem-grid{gap:4px}.stat-cards{grid-template-columns:1fr 1fr}.mini-stat{padding:13px}.mini-stat strong{font-size:28px}.stat-strip{grid-template-columns:1fr 1fr;gap:12px 0;padding:14px 0}.stat-strip>div{padding:0 12px}.stat-strip>div:nth-child(3){padding-left:0}.stat-strip strong{font-size:25px}.stat-strip span{font-size:9px}.pattern-grid{grid-template-columns:1fr}.core-body{flex-direction:column;align-items:flex-start;gap:16px}.core-body .ring{align-self:center}.difficulty-breakdown{width:100%}.heatmap{grid-template-rows:repeat(7,10px);grid-auto-columns:10px;gap:3px}.heat-cell{width:10px;height:10px}.heatmap-weekdays{grid-template-rows:repeat(7,10px);gap:3px;line-height:10px}.heatmap-legend .heat-cell{width:8px;height:8px}.forecast-bars{height:120px}.plan-note{margin:16px 0 18px}.week-title{font-size:18px}.week-goal{font-size:10px}.plan-day-head h4{font-size:13px}.plan-problem{font-size:10px}.plan-review-copy{white-space:normal}.completion-card{padding:24px 17px}.completion-stats{gap:20px;margin:20px 0}.completion-stats strong{font-size:27px}.completion-title{font-size:33px}.next-up{padding:14px}.filter-bar{padding:10px}.filter-row{gap:5px}.segmented{width:100%}.segmented button{flex:1}.select-wrap{flex:1;min-width:calc(50% - 3px)}.select-wrap select{width:100%}.filter-reset{margin-left:0}.toast{bottom:calc(68px + env(safe-area-inset-bottom));padding:8px 9px 8px 11px;font-size:11.5px}.modal-panel--center{width:100%;max-height:92vh;padding:24px 18px calc(20px + env(safe-area-inset-bottom));border-radius:14px 14px 0 0}.overlay--center{align-items:flex-end;padding:0}.modal-panel--drawer{width:100%;padding:28px 18px 40px}.drawer-title{font-size:28px}.drawer-head{padding-right:30px}.link-list{grid-template-columns:1fr}.status-grid{grid-template-columns:1fr 1fr}.settings-footer{flex-direction:column;gap:4px}.pass-card{display:block}.pass-card>svg{margin-bottom:10px}.pass-index{position:absolute;top:14px;right:14px}.pass-tag{margin-top:10px}.method-section-head h2{font-size:25px}.rule-row{grid-template-columns:24px minmax(0,1fr);padding:12px 0}.interview-step{padding:15px}.method-cta{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.problem-cards{display:none}@media (width<=860px){.table-wrap{display:none}.problem-cards{flex-direction:column;gap:7px;display:flex}.problem-card{border:1px solid var(--line);background:var(--card);text-align:left;width:100%;box-shadow:var(--shadow-card);border-radius:9px;flex-direction:column;gap:3px;padding:12px 13px;transition:border-color .16s,background .16s,transform .12s;display:flex}.problem-card:active{transform:scale(.995)}.problem-card.is-solved{background:#e5efe84d}.problem-card-head{align-items:flex-start;gap:7px;display:flex}.problem-card-num{color:var(--faint);font-family:var(--mono);flex-shrink:0;padding-top:2px;font-size:9px}.problem-card-title{min-width:0;color:var(--ink);flex:1;font-size:14.5px;font-weight:600;line-height:1.45}.problem-card .status-pill{flex-shrink:0}.problem-card-en{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-left:16px;font-size:10.5px;line-height:1.4;overflow:hidden}.problem-card-meta{flex-wrap:wrap;align-items:center;gap:5px;margin-top:2px;margin-left:16px;display:flex}.problem-card-foot{color:var(--faint);margin-top:2px;margin-left:16px;font-size:9.5px}}@media (width<=600px){.problem-card{padding:11px 12px}}.note-empty{border:1px dashed var(--line);color:var(--muted);border-radius:7px;padding:12px;font-size:11.5px;line-height:1.6}.activity-body{justify-content:space-between;align-items:center;gap:24px;display:flex}.activity-summary{border-left:1px solid var(--line);gap:24px;padding-left:24px;display:flex}.activity-summary div{flex-direction:column;gap:1px;display:flex}.activity-summary strong{font-family:var(--serif);font-size:25px;font-weight:500;line-height:1.1}.activity-summary span{color:var(--muted);white-space:nowrap;font-size:9.5px}@media (width<=860px){.activity-body{flex-direction:column;align-items:flex-start;gap:16px}.activity-summary{border-top:1px dashed var(--line);border-left:0;width:100%;padding-top:12px;padding-left:0}}@media (width<=1100px){.problem-table{min-width:0}.problem-table th:nth-child(5),.problem-table td:nth-child(5){display:none}}@media (width<=980px) and (width>=861px){.problem-table th:nth-child(4),.problem-table td:nth-child(4){display:none}}@media (hover:hover) and (pointer:fine){.btn-primary:hover{background:var(--accent-hover)}.btn-secondary:hover{background:var(--paper-soft);border-color:var(--faint)}.btn-ghost:hover{background:var(--paper-deep);color:var(--ink)}.btn-danger:hover{background:#8d2f27}.btn-soft-success:hover{background:#d8e8dd}.icon-button:hover{background:var(--paper-deep);color:var(--ink)}.text-link:hover{color:var(--ink)}.text-button:hover{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.text-button--danger:hover{color:#7f2a23}.side-link:hover{color:var(--ink);background:#fbf9f3a6}.side-settings:hover{color:var(--ink)}.problem-title:hover,.review-title:hover{color:var(--accent-ink)}.rail-link:hover,.week-problem:hover{border-color:var(--line-strong);background:var(--card)}.undo-link:hover{color:var(--red)}.link-list a:hover{border-color:var(--line-strong);background:var(--card);color:var(--accent-ink)}.confidence-option:hover{border-color:var(--accent);background:var(--card)}.confidence-option:hover .confidence-arrow{opacity:1;transform:translate(0)}.toast-close:hover{color:var(--paper);background:#ffffff14}.week-head:hover{background:var(--paper-soft)}.plan-problem:hover{border-color:var(--line-strong);background:var(--card)}.search-clear:hover{background:var(--paper-deep);color:var(--ink)}.segmented button:hover,.filter-reset:hover{color:var(--ink)}.problem-table tbody tr:hover{background:#f7f3e9}.problem-table tbody tr.is-solved:hover{background:#e5efe866}.row-title:hover{color:var(--accent-ink)}.pattern-cell:hover,.source-links a:hover{border-color:var(--line-strong);background:var(--card)}.problem-card:hover{border-color:var(--line-strong)}}
