:root{--paper:#f4efe4;--surface:#fbf8f0;--paper-deep:#eae3d4;--ink:#1e211d;--ink-soft:#4e5047;--muted:#716e63;--faint:#969184;--line:#ddd5c5;--line-soft:#e7e0d2;--cinnabar:#b3452b;--cinnabar-soft:#f3e2da;--jade:#2e6b56;--jade-soft:#e2ede6;--amber:#9c6f24;--amber-soft:#f3e8d2;--serif:"Source Serif Pro", "Source Serif 4", "STSong", "Songti SC", "SimSun", serif;--sans:"Noto Sans SC", "Microsoft YaHei", "PingFang SC", system-ui, sans-serif;--mono:"Source Code Pro", "Cascadia Mono", ui-monospace, Consolas, monospace}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.7}button,input{font:inherit;color:inherit}button{cursor:pointer;touch-action:manipulation}a{color:inherit;text-decoration:none}code{font-family:var(--mono);background:var(--paper-deep);border-radius:3px;padding:1px 5px;font-size:.88em}:focus-visible{outline:2px solid var(--cinnabar);outline-offset:3px;border-radius:4px}#app{min-height:100dvh}.topbar{max-width:1000px;padding:calc(26px + env(safe-area-inset-top)) 32px 0;justify-content:space-between;align-items:center;gap:20px;margin:0 auto;display:flex}.brand{align-items:center;gap:11px;display:flex}.seal{background:var(--cinnabar);color:#f7f1e2;width:32px;height:32px;font-family:var(--serif);border-radius:4px;flex:none;place-items:center;font-size:19px;line-height:1;display:grid;transform:rotate(-1.5deg)}.brand-copy{flex-direction:column;gap:1px;display:flex}.brand-copy strong{font-family:var(--serif);letter-spacing:.06em;font-size:17px;font-weight:600}.brand-copy small{letter-spacing:.22em;color:var(--faint);font-size:8px}.source-pill{text-overflow:ellipsis;white-space:nowrap;max-width:55vw;font-family:var(--mono);color:var(--muted);border:1px solid var(--line);background:var(--surface);border-radius:4px;padding:4px 8px;font-size:9.5px;overflow:hidden}.page{max-width:1000px;padding:52px 32px calc(80px + env(safe-area-inset-bottom));margin:0 auto}.eyebrow{letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-size:10.5px;font-weight:500}h1{font-family:var(--serif);letter-spacing:-.015em;margin-top:8px;font-size:42px;font-weight:600;line-height:1.2}.lede{max-width:44em;color:var(--ink-soft);margin-top:10px;font-size:14.5px;line-height:1.85}.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 1px 2px #1e211d0a}.source-card{margin-top:28px;padding:20px 22px 18px}.setup-card{max-width:780px;margin-top:28px;padding:22px}.field{flex-direction:column;gap:6px;margin-top:16px;display:flex}.field:first-of-type{margin-top:0}.field>span{letter-spacing:.1em;color:var(--muted);font-size:10.5px}.field input{border:1px solid var(--line);background:var(--paper);width:100%;height:44px;color:var(--ink);font-family:var(--mono);border-radius:8px;padding:0 12px;font-size:12.5px;transition:border-color .16s,box-shadow .16s}.field input:focus{border-color:var(--ink-soft);outline:none;box-shadow:0 0 0 3px #1e211d0d}.field input::placeholder{color:var(--faint)}.field-row{grid-template-columns:1fr 1.4fr;gap:14px;display:grid}.field-hint{color:var(--faint);margin-top:7px;font-size:10.5px;line-height:1.7}.form-error{background:var(--cinnabar-soft);color:var(--cinnabar);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:7px;margin-top:14px;padding:11px 13px;font-size:11.5px;line-height:1.7}.saved-hint{color:var(--muted);overflow-wrap:anywhere;margin-top:12px;font-size:10.5px}.saved-hint code{font-size:10px}.repo-url{font-family:var(--mono);color:var(--muted);overflow-wrap:anywhere;margin-top:8px;font-size:10px}.plan-card{margin-top:16px;padding:20px 22px 18px}.plan-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.plan-head h2{font-family:var(--serif);letter-spacing:-.005em;margin-top:3px;font-size:22px;font-weight:600}.plan-id{font-family:var(--mono);color:var(--faint);white-space:nowrap;font-size:9px}.plan-counts{border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);grid-template-columns:repeat(4,1fr);margin-top:16px;display:grid}.plan-counts>div{border-left:1px solid var(--line-soft);padding:10px 0 9px 16px}.plan-counts>div:first-child{border-left:none;padding-left:0}.plan-counts strong{font-family:var(--serif);font-variant-numeric:tabular-nums;font-size:24px;font-weight:600;line-height:1.15;display:block}.plan-counts span{letter-spacing:.08em;color:var(--muted);margin-top:1px;font-size:9.5px;display:block}.plan-list{margin-top:12px}.plan-row{border-bottom:1px solid var(--line-soft);grid-template-columns:58px minmax(0,1fr) auto;align-items:baseline;gap:10px;padding:9px 0;display:grid}.plan-row:last-child{border-bottom:none}.plan-type{color:var(--muted);font-size:9.5px}.plan-title{font-family:var(--serif);text-overflow:ellipsis;white-space:nowrap;font-size:14.5px;line-height:1.5;overflow:hidden}.plan-reason{font-family:var(--mono);color:var(--cinnabar);white-space:nowrap;font-size:9px}.plan-empty{color:var(--muted);padding:16px 0 6px;font-size:12.5px}.plan-more{color:var(--faint);padding:10px 0 2px;font-size:10.5px}.plan-note{color:var(--amber);margin-top:8px;font-size:10.5px}.plan-foot{font-family:var(--mono);color:var(--faint);overflow-wrap:anywhere;margin-top:12px;font-size:9px}.card-head{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.card-head h2{font-family:var(--serif);letter-spacing:.005em;font-size:19px;font-weight:600}.card-head p{font-family:var(--mono);color:var(--faint);margin-top:2px;font-size:9.5px}.status{letter-spacing:.02em;border-radius:4px;flex:none;align-items:center;gap:6px;padding:4px 9px;font-size:10.5px;display:inline-flex}.status i{background:currentColor;border-radius:50%;width:5px;height:5px}.status.live{color:var(--jade);background:var(--jade-soft)}.status.cached{color:var(--ink-soft);background:var(--paper-deep)}.status.offline{color:var(--amber);background:var(--amber-soft)}.actions{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.btn{border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;height:40px;padding:0 16px;font-size:13px;font-weight:500;transition:background .16s,border-color .16s,color .16s,transform .16s,opacity .16s;display:inline-flex}.btn-primary{background:var(--ink);color:#f8f3e7}.btn-primary:hover{background:#2c312a;transform:translateY(-1px)}.btn-ghost{border-color:var(--line);color:var(--ink-soft);background:0 0}.btn-ghost:hover{border-color:var(--ink-soft);background:var(--paper)}.btn-quiet{color:var(--muted);background:0 0}.btn-quiet:hover{color:var(--cinnabar);background:var(--paper)}.btn-sm{height:34px;padding:0 12px;font-size:12px}.pwa-banner{z-index:400;padding:10px 18px calc(10px + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--line);align-items:center;gap:8px;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -12px 30px -22px #1e211d73}.pwa-banner[hidden]{display:none}.pwa-msg{min-width:0;color:var(--ink-soft);flex:1;font-size:12px}body.has-pwa-banner #app{padding-bottom:calc(58px + env(safe-area-inset-bottom))}.pwa-hint{border:1px solid var(--line);background:var(--paper-deep);color:var(--muted);border-radius:7px;margin-top:12px;padding:9px 12px;font-size:10.5px;line-height:1.7}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.notice{color:var(--muted);margin-top:12px;font-size:11.5px}.debug{border-top:1px solid var(--line-soft);margin-top:16px;padding-top:12px}.debug summary{cursor:pointer;color:var(--faint);font-size:11px}.debug dl{grid-template-columns:82px minmax(0,1fr);gap:4px 12px;margin-top:10px;font-size:10.5px;display:grid}.debug dt{color:var(--faint)}.debug dd{min-width:0;color:var(--ink-soft);overflow-wrap:anywhere}.debug dd code{background:0 0;padding:0;font-size:10px}.stats{grid-template-columns:repeat(4,1fr);gap:12px;margin-top:16px;display:grid}.stat{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:15px 17px 13px}.stat span{letter-spacing:.12em;color:var(--muted);font-size:10px;display:block}.stat strong{font-family:var(--serif);font-variant-numeric:tabular-nums;font-size:31px;font-weight:600;line-height:1.2}.stat small{color:var(--faint);margin-left:3px;font-size:10.5px}.concepts{margin-top:32px}.section-head{justify-content:space-between;align-items:baseline;margin-bottom:10px;display:flex}.section-head h2{font-family:var(--serif);font-size:20px;font-weight:600}.section-head span{font-family:var(--mono);color:var(--faint);font-size:9.5px}.concept-list{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden}.concept{border-top:1px solid var(--line-soft);padding:15px 20px}.concept:first-child{border-top:none}.concept-head{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.concept-head h3{font-family:var(--serif);font-size:18px;font-weight:500;line-height:1.45}.difficulty{font-family:var(--mono);color:var(--faint);flex:none;font-size:9px}.concept-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:7px;margin-top:4px;font-size:10.5px;display:flex}.tag{font-family:var(--mono);color:var(--ink-soft);background:var(--paper-deep);border-radius:3px;padding:1px 5px;font-size:9px}.dot{background:var(--line);border-radius:50%;width:2px;height:2px}.banner{background:var(--amber-soft);color:#6f531c;border:1px solid #9c6f2440;border-radius:9px;margin-top:18px;padding:12px 15px;font-size:12px}.banner span{opacity:.8;margin-top:2px;font-size:10.5px;display:block}.error-card{border-color:#b3452b59;margin-top:28px;padding:22px}.error-head{align-items:center;gap:10px;display:flex}.error-code{font-family:var(--mono);color:var(--cinnabar);background:var(--cinnabar-soft);border-radius:3px;padding:3px 8px;font-size:10px}.error-status{font-family:var(--mono);color:var(--faint);font-size:9.5px}.error-card pre{white-space:pre-wrap;overflow-wrap:anywhere;font-family:var(--mono);color:var(--cinnabar);background:var(--cinnabar-soft);border-radius:7px;margin-top:12px;padding:12px 14px;font-size:11.5px;line-height:1.8}.hints{color:var(--ink-soft);margin:14px 0 0 16px;font-size:12px;line-height:1.9}.hints li::marker{color:var(--line)}.loading-card{align-items:center;gap:16px;margin-top:28px;padding:24px 22px;display:flex}.loading-card strong{font-size:13px;font-weight:500}.loading-card p{font-family:var(--mono);color:var(--faint);overflow-wrap:anywhere;margin-top:2px;font-size:9.5px}.spinner{border:2px solid var(--line);border-top-color:var(--cinnabar);border-radius:50%;flex:none;width:22px;height:22px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.foot{font-family:var(--mono);color:var(--faint);overflow-wrap:anywhere;margin-top:26px;font-size:9px}.plan-actions{flex-wrap:wrap;align-items:center;gap:12px;margin-top:16px;display:flex}.plan-actions span{color:var(--muted);font-size:10.5px}.plan-data{border-top:1px solid var(--line-soft);flex-wrap:wrap;gap:7px;margin-top:12px;padding-top:11px;display:flex}.today-hero{background:var(--ink);color:#f7f1e2;border-radius:14px;grid-template-columns:minmax(0,1fr) auto;gap:22px;margin-top:24px;padding:24px;display:grid}.today-hero .eyebrow{color:#9fa797}.today-count{align-items:baseline;gap:8px;margin-top:8px;display:flex}.today-count strong{font-family:var(--serif);letter-spacing:-.04em;font-size:64px;font-weight:500;line-height:1}.today-count span{color:#c9c4b6;font-size:12px}.today-hero-main p:last-child{color:#c9c4b6;max-width:34em;margin-top:12px;font-size:12px;line-height:1.8}.today-hero-side{grid-template-columns:repeat(3,64px);align-content:center;gap:8px;display:grid}.today-mini{text-align:center;border-left:1px solid #f7f1e224;padding:8px 0}.today-mini strong{font-family:var(--serif);font-size:22px;font-weight:500;display:block}.today-mini span{color:#9fa797;margin-top:1px;font-size:9px;display:block}.today-start{width:100%;color:var(--ink);background:#f7f1e2;grid-column:1/-1}.today-start:hover{background:#fffaf0}.today-start:disabled{opacity:.35}.today-hero.is-empty{background:var(--surface);color:var(--ink);border:1px solid var(--line)}.today-hero.is-empty .eyebrow{color:var(--muted)}.today-hero.is-empty h2{font-family:var(--serif);margin-top:5px;font-size:23px;font-weight:500}.today-hero.is-empty p:last-child{color:var(--muted)}.today-queue{margin-top:14px}.today-queue,.today-tip,.data-card,.diagnostics-card,.progress-card{padding:20px 22px 18px}.today-row{border:0;border-bottom:1px solid var(--line-soft);width:100%;min-height:44px;color:inherit;text-align:left;font:inherit;cursor:pointer;background:0 0;grid-template-columns:58px minmax(0,1fr) auto 14px;align-items:baseline;gap:10px;padding:10px 0;display:grid}.today-row:hover{background:var(--paper)}.today-row:last-of-type{border-bottom:none}.today-row-type{color:var(--muted);font-size:9.5px}.today-row-title{font-family:var(--serif);text-overflow:ellipsis;white-space:nowrap;font-size:14.5px;line-height:1.5;overflow:hidden}.today-row-reason{font-family:var(--mono);color:var(--cinnabar);white-space:nowrap;font-size:9px}.today-row-go{font-family:var(--mono);color:var(--faint);text-align:right;font-size:12px}.today-tip{justify-content:space-between;align-items:flex-start;gap:24px;margin-top:14px;display:flex}.today-tip h2{font-family:var(--serif);margin-top:4px;font-size:20px;font-weight:500}.today-tip>p{max-width:26em;color:var(--muted);font-size:11.5px;line-height:1.8}.data-card{margin-top:14px}.data-count{font-family:var(--mono);color:var(--muted);font-size:10px}.section-lede{color:var(--muted);margin-top:8px;font-size:11.5px;line-height:1.75}.diagnostics-card{margin-top:14px}.diag{grid-template-columns:110px minmax(0,1fr);gap:8px 12px;margin-top:14px;font-size:11px;display:grid}.diag dt{color:var(--muted)}.diag dd{min-width:0;color:var(--ink-soft);overflow-wrap:anywhere}.diag dd.ok{color:var(--jade)}.diag dd.warn{color:var(--amber)}.diag code{font-size:9.5px}.progress-card{margin-top:16px}.rating-bar-row{grid-template-columns:46px minmax(0,1fr) 26px;align-items:center;gap:10px;padding:9px 0;display:grid}.rating-bar-row>span{color:var(--muted);font-size:10.5px}.rating-bar-row>strong{font-family:var(--mono);text-align:right;color:var(--ink-soft);font-size:10px}.rating-bar{background:var(--line-soft);border-radius:3px;height:5px;overflow:hidden}.rating-bar i{background:var(--cinnabar);border-radius:3px;height:100%;display:block}.progress-foot{border-top:1px solid var(--line-soft);color:var(--faint);margin-top:12px;padding-top:10px;font-size:10px}.tabbar{z-index:250;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--surface) 94%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}body.has-tabbar #app{padding-bottom:calc(62px + env(safe-area-inset-bottom))}body.has-pwa-banner .tabbar{bottom:calc(54px + env(safe-area-inset-bottom))}.tab{height:46px;color:var(--faint);background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-family:inherit;display:flex}.tab-glyph{width:21px;height:21px;font-family:var(--serif);border-radius:50%;justify-content:center;align-items:center;font-size:11px;display:inline-flex}.tab-label{letter-spacing:.04em;font-size:9px}.tab.is-active{color:var(--cinnabar)}.tab.is-active .tab-glyph{background:var(--cinnabar-soft)}:where(button,a,input,textarea,[tabindex]):focus-visible{outline:2px solid var(--cinnabar);outline-offset:2px}.session-screen{background:var(--paper);flex-direction:column;min-height:100dvh;display:flex}.session-top{z-index:20;width:100%;max-width:920px;padding:calc(16px + env(safe-area-inset-top)) 24px 12px;background:color-mix(in srgb, var(--paper) 92%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:center;gap:16px;margin:0 auto;display:flex;position:sticky;top:0}.session-quit{cursor:pointer;color:var(--muted);background:0 0;border:0;padding:0;font-family:inherit;font-size:11px}.session-quit:hover{color:var(--cinnabar)}.session-progress{align-items:center;gap:12px;display:flex}.session-count{font-family:var(--mono);color:var(--muted);letter-spacing:.04em;font-size:10px}.session-count .slash{color:var(--faint);margin:0 2px}.segbar{gap:3px;width:168px;display:flex}.seg{background:var(--line);border-radius:2px;width:100%;height:3px}.seg.done{background:var(--ink-soft)}.seg.current{background:var(--cinnabar)}.session-time{font-family:var(--mono);color:var(--faint);text-align:right;min-width:42px;font-size:10px}.session-scroll{flex:1;overflow-y:auto}.session-inner{max-width:760px;margin:0 auto;padding:34px 24px 132px}.session-meta{font-family:var(--mono);color:var(--muted);flex-wrap:wrap;align-items:center;gap:7px;font-size:9px;display:flex}.session-concept{color:var(--cinnabar)}.session-dot{background:var(--faint);border-radius:50%;width:3px;height:3px}.session-kind{color:var(--ink-soft)}.session-prompt{font-family:var(--serif);letter-spacing:-.012em;margin-top:18px;font-size:30px;font-weight:500;line-height:1.45}.session-prompt code{font-family:var(--mono);background:var(--paper-deep);border:1px solid var(--line);border-radius:4px;padding:2px 5px;font-size:.62em}.session-lede{color:var(--muted);margin-top:12px;font-size:12.5px;line-height:1.8}.session-options{gap:8px;margin-top:24px;display:grid}.session-option{border:1px solid var(--line);background:var(--surface);text-align:left;width:100%;color:var(--ink);border-radius:8px;align-items:flex-start;gap:12px;padding:12px 14px;font-size:13.5px;line-height:1.6;transition:border-color .14s,background .14s;display:flex}.session-option:hover:not(:disabled){border-color:var(--ink-soft)}.session-option.is-selected{border-color:var(--cinnabar);background:var(--cinnabar-soft)}.session-option.is-correct{border-color:var(--jade);background:var(--jade-soft)}.session-option.is-wrong{border-color:var(--cinnabar);background:var(--cinnabar-soft)}.session-option:disabled{cursor:default;opacity:.92}.session-key{border:1px solid var(--line);width:21px;height:21px;font-family:var(--mono);color:var(--muted);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:9px;display:inline-flex}.session-mark{color:var(--muted);flex:none;margin-left:auto;font-size:9px}.tf-grid{grid-template-columns:1fr 1fr;gap:10px;margin-top:24px;display:grid}.tf-btn{border:1px solid var(--line);background:var(--surface);height:64px;font-family:var(--serif);border-radius:9px;font-size:22px}.tf-btn:hover:not(:disabled){border-color:var(--ink-soft)}.tf-btn.is-selected{border-color:var(--cinnabar);background:var(--cinnabar-soft)}.tf-btn.is-correct{border-color:var(--jade);background:var(--jade-soft)}.tf-btn.is-wrong{border-color:var(--cinnabar);background:var(--cinnabar-soft)}.blank-text{font-family:var(--serif);margin-top:24px;font-size:19px;line-height:2.9}.blank-input{border:1px solid var(--line);background:var(--surface);width:158px;height:46px;color:var(--ink);text-align:center;vertical-align:middle;font-family:var(--serif);caret-color:var(--cinnabar);border-radius:8px;margin:2px 6px;padding:8px 12px;scroll-margin:140px;font-size:18px;line-height:1.2;transition:border-color .14s,background .14s,box-shadow .14s;display:inline-block}.blank-input::placeholder{color:var(--faint);font-family:var(--mono);letter-spacing:.04em;font-size:10px}.blank-input:hover:not(:disabled){border-color:var(--ink-soft)}.blank-input:focus{border-color:var(--cinnabar);box-shadow:0 0 0 3px var(--cinnabar-soft);background:#fffbf2;outline:none}.blank-input:disabled{color:var(--ink-soft);opacity:1;background:var(--paper-deep);caret-color:#0000}.blank-hint,.order-hint,.match-note{font-family:var(--mono);color:var(--faint);justify-content:space-between;gap:12px;margin-top:12px;font-size:9px;display:flex}.order-list{gap:7px;margin-top:22px;display:grid}.order-item{border:1px solid var(--line);background:var(--surface);text-align:left;border-radius:7px;align-items:center;gap:12px;padding:10px 12px;font-size:13px;line-height:1.6;display:flex}.order-item.is-picked{border-color:var(--cinnabar);background:var(--cinnabar-soft)}.order-item:disabled{opacity:.9}.ord-badge{background:var(--paper-deep);width:20px;height:20px;font-family:var(--mono);color:var(--cinnabar);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:9px;display:inline-flex}.match-grid{grid-template-columns:1fr 1fr;gap:10px;margin-top:22px;display:grid}.match-col{align-content:start;gap:7px;display:grid}.match-head{font-family:var(--mono);letter-spacing:.12em;color:var(--faint);padding-bottom:2px;font-size:9px}.match-item{border:1px solid var(--line);background:var(--surface);text-align:left;border-radius:7px;align-items:center;gap:8px;padding:10px 11px;font-size:12px;line-height:1.55;display:flex}.match-item.is-paired{border-color:var(--jade);background:var(--jade-soft)}.match-item.is-sel{border-color:var(--cinnabar);background:var(--cinnabar-soft)}.match-num{font-family:var(--mono);color:var(--cinnabar);flex:none;font-size:9px}.recall-area{border:1px solid var(--line);background:var(--surface);resize:vertical;width:100%;min-height:180px;font-family:var(--serif);color:var(--ink);border-radius:8px;margin-top:22px;padding:14px 16px;font-size:16px;line-height:1.85}.recall-area:focus{outline:2px solid var(--cinnabar-soft);border-color:var(--cinnabar)}.recall-area:disabled{opacity:.92}.recall-tip{font-family:var(--mono);color:var(--faint);margin-top:10px;font-size:9px}.passage{color:#e9e2d2;background:#1b211d;border-radius:8px;margin-top:22px;overflow:hidden}.passage-head{font-family:var(--mono);letter-spacing:.08em;color:#9fa797;border-bottom:1px solid #e9e2d21f;justify-content:space-between;padding:9px 14px;font-size:8.5px;display:flex}.passage pre{font-family:var(--mono);margin:0;padding:16px 18px;font-size:11.5px;line-height:1.8;overflow-x:auto}.sub-q{margin-top:24px}.sub-q-head{font-family:var(--serif);align-items:baseline;gap:9px;font-size:16px;line-height:1.6;display:flex}.sub-q-head span{font-family:var(--mono);color:var(--cinnabar);font-size:9px}.recall-points{border-top:1px solid var(--line-soft);margin-top:24px}.point-row{border-bottom:1px solid var(--line-soft);font-family:var(--serif);gap:12px;padding:10px 0;font-size:16px;line-height:1.6;display:flex}.point-row span{font-family:var(--mono);color:var(--cinnabar);padding-top:4px;font-size:9px}.session-feedback{border:1px solid var(--line);background:var(--surface);border-radius:9px;margin-top:26px;padding:16px 18px}.feedback-line{color:var(--muted);flex-wrap:wrap;align-items:center;gap:9px;font-size:11.5px;display:flex}.feedback-line strong{color:var(--ink);font-weight:600}.feedback-badge{letter-spacing:.03em;border-radius:4px;align-items:center;padding:3px 8px;font-size:10px;display:inline-flex}.feedback-badge.good{color:var(--jade);background:var(--jade-soft)}.feedback-badge.partial{color:var(--amber);background:var(--amber-soft)}.feedback-badge.bad{color:var(--cinnabar);background:var(--cinnabar-soft)}.feedback-badge.self{color:var(--ink-soft);background:var(--paper-deep)}.answer-block,.reference{margin-top:12px}.ref-label{font-family:var(--mono);letter-spacing:.1em;color:var(--faint);margin-bottom:5px;font-size:8.5px}.answer-block p,.reference p{font-family:var(--serif);font-size:14.5px;line-height:1.8}.keyword-row{flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;font-size:10px;display:flex}.keyword-row em{font-style:normal;font-family:var(--mono);color:var(--faint);font-size:8.5px}.keyword-row span{border:1px solid var(--line);color:var(--muted);border-radius:4px;padding:2px 6px}.explain{border-top:1px solid var(--line-soft);color:var(--ink-soft);margin-top:12px;padding-top:10px;font-size:12px;line-height:1.75}.requeue-note{color:var(--cinnabar);margin-top:10px;font-size:10px}.feedback-error{font-family:var(--mono);color:var(--cinnabar);white-space:pre-wrap;margin-top:10px;font-size:10px}.rating-block{border-top:1px solid var(--line-soft);margin-top:16px;padding-top:14px}.rating-label{color:var(--muted);justify-content:space-between;gap:12px;font-size:10.5px;display:flex}.rating-label span:last-child{color:var(--faint);font-family:var(--mono);font-size:9px}.ratings{grid-template-columns:repeat(4,1fr);gap:7px;margin-top:9px;display:grid}.rating-btn{border:1px solid var(--line);background:var(--paper);border-radius:7px;height:42px;transition:border-color .14s,background .14s}.rating-btn:hover{border-color:var(--cinnabar);background:var(--cinnabar-soft)}.rating-btn strong{color:var(--ink-soft);font-size:11.5px;font-weight:500}.session-foot{z-index:300;background:var(--paper);border-top:1px solid var(--line);position:fixed;bottom:0;left:0;right:0;box-shadow:0 -12px 30px -24px #1e211d59}.session-foot-inner{max-width:760px;padding:11px 24px calc(11px + env(safe-area-inset-bottom));justify-content:space-between;align-items:center;gap:16px;margin:0 auto;display:flex}.session-hint{font-family:var(--mono);color:var(--faint);font-size:9px}.session-foot .btn{min-width:132px}body.has-pwa-banner .session-foot{bottom:calc(54px + env(safe-area-inset-bottom))}.summary-screen{min-height:100dvh}.summary-inner{max-width:760px;padding:46px 24px calc(60px + env(safe-area-inset-bottom));margin:0 auto}.summary-title{font-family:var(--serif);letter-spacing:-.02em;margin-top:8px;font-size:38px;font-weight:500}.summary-lede{color:var(--muted);margin-top:10px;font-size:12.5px;line-height:1.8}.summary-metrics{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(3,1fr);margin-top:28px;display:grid}.summary-metrics>div{border-left:1px solid var(--line-soft);padding:14px 0 12px 18px}.summary-metrics>div:first-child{border-left:none;padding-left:0}.summary-metrics span{letter-spacing:.08em;color:var(--muted);font-size:9.5px;display:block}.summary-metrics strong{font-family:var(--serif);font-size:30px;font-weight:600;line-height:1.3}.summary-metrics small{color:var(--muted);margin-left:3px;font-size:10px}.summary-ratings{color:var(--muted);gap:20px;margin-top:16px;font-size:10.5px;display:flex}.summary-ratings div{align-items:baseline;gap:5px;display:flex}.summary-ratings strong{font-family:var(--mono);color:var(--ink);font-size:11px}.summary-list{border-top:1px solid var(--line-soft);margin-top:18px}.summary-row{border-bottom:1px solid var(--line-soft);align-items:center;gap:9px;padding:10px 0;font-size:12px;display:flex}.summary-row>span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.summary-row em{font-style:normal;font-family:var(--mono);color:var(--faint);font-size:8.5px}.summary-row small{font-family:var(--mono);color:var(--muted);text-align:right;min-width:38px;font-size:8.5px}.summary-dot{background:var(--jade);border-radius:50%;flex:none;width:6px;height:6px}.summary-dot.again{background:var(--cinnabar)}.summary-dot.hard{background:var(--amber)}.summary-dot.good{background:var(--jade)}.summary-dot.easy{background:var(--ink-soft)}.summary-actions{flex-wrap:wrap;gap:9px;margin-top:26px;display:flex}.summary-foot{font-family:var(--mono);color:var(--faint);margin-top:18px;font-size:9px}@media (width<=720px){.today-hero{grid-template-columns:1fr;gap:18px;padding:20px 18px}.today-count strong{font-size:54px}.today-hero-side{grid-template-columns:repeat(3,1fr);gap:4px}.today-mini{text-align:left;padding-left:10px}.today-tip{flex-direction:column;gap:10px;padding:18px}.today-queue,.data-card,.diagnostics-card,.progress-card{padding:18px}.today-tip>p{max-width:none}.tabbar{padding-left:4px;padding-right:4px}.session-top{padding:calc(13px + env(safe-area-inset-top)) 16px 10px;gap:10px}.session-inner{padding:24px 18px 128px}.session-prompt{font-size:24px}.segbar{width:96px}.session-time{min-width:36px}.session-foot-inner{padding-left:18px;padding-right:18px}.session-hint{display:none}.session-foot .btn{width:100%}.summary-inner{padding:32px 18px calc(50px + env(safe-area-inset-bottom))}.summary-title{font-size:31px}.summary-metrics strong{font-size:25px}.match-grid{gap:7px}.match-item{padding:9px 8px;font-size:11px}.ratings{gap:5px}.rating-btn{height:40px}.blank-text{font-size:18px;line-height:3.1}.blank-input{width:min(158px,42vw);height:46px;font-size:18px}.topbar{padding:calc(20px + env(safe-area-inset-top)) 18px 0}.source-pill{display:none}.page{padding:38px 18px calc(64px + env(safe-area-inset-bottom))}h1{font-size:34px}.stats,.plan-counts{grid-template-columns:1fr 1fr}.plan-counts>div:nth-child(3){border-left:none;padding-left:0}.plan-counts>div:nth-child(n+3){border-top:1px solid var(--line-soft)}.plan-id{display:none}.concept-head{flex-direction:column;gap:2px}.field-row{grid-template-columns:1fr}.field input{font-size:16px}.setup-card,.error-card{padding:18px}.debug dl{grid-template-columns:1fr}.debug dt{margin-top:6px}.pwa-banner{padding-left:14px;padding-right:14px}}@media (prefers-reduced-motion:reduce){.spinner{animation:none}.btn{transition:none}}
