:root{--bg: #edf0f6;--bg-elevated: #ffffff;--surface: #ffffff;--surface-2: #f5f7fb;--surface-3: #e8edf5;--text: #141a25;--text-2: #4a5567;--text-3: #626e80;--text-read: #1a212e;--border: #e1e6ef;--border-strong: #c3cbdb;--primary: #204a92;--primary-strong: #163872;--primary-weak: #e5ecf8;--primary-text: #ffffff;--success: #0f6a47;--success-weak: #e2f2ea;--danger: #b02f24;--danger-weak: #fbeae8;--warn: #8f5510;--warn-weak: #fbf0e2;--debit: #204a92;--debit-weak: #e8eefa;--credit: #8a5320;--credit-weak: #f8efe4;--mastery-unknown: #b02f24;--mastery-fuzzy: #8f5510;--mastery-mastered: #0f6a47;--shadow-1: 0 1px 2px rgba(20, 32, 60, .05), 0 1px 3px rgba(20, 32, 60, .04);--shadow-2: 0 6px 22px rgba(20, 32, 60, .12);--shadow-up: 0 -2px 14px rgba(20, 32, 60, .07);--scrim: rgba(12, 18, 30, .46);--r-xs: 6px;--r-sm: 9px;--r-md: 12px;--r-lg: 16px;--r-xl: 22px;--r-pill: 999px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-7: 32px;--sp-8: 40px;--fs-2xs: 11px;--fs-xs: 12px;--fs-sm: 13px;--fs-base: 15px;--fs-md: 16px;--fs-lg: 17px;--fs-xl: 19px;--fs-2xl: 22px;--fs-3xl: 27px;--dur-fast: .12s;--dur: .2s;--dur-slow: .34s;--ease-out: cubic-bezier(.22, .85, .3, 1);--ease-spring: cubic-bezier(.34, 1.4, .5, 1);--sat: env(safe-area-inset-top, 0px);--sab: env(safe-area-inset-bottom, 0px);--sal: env(safe-area-inset-left, 0px);--sar: env(safe-area-inset-right, 0px);--topbar-h: 48px;--tabbar-h: 54px;--tap: 44px;--font-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--font-serif: "Songti SC", "Noto Serif CJK SC", "Source Han Serif SC", "STSong", "SimSun", serif;--rail-w: 76px;--sidebar-w: 224px;--content-max: 720px;--reading-max: 46rem;--toc-w: 240px;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: #0e1219;--bg-elevated: #151a23;--surface: #151a23;--surface-2: #1c222d;--surface-3: #252d3a;--text: #e2e8f3;--text-2: #a7b1c4;--text-3: #7d8798;--text-read: #d5dcea;--border: #262e3b;--border-strong: #3a4457;--primary: #86ade8;--primary-strong: #a6c4f2;--primary-weak: #18243a;--primary-text: #0b111c;--success: #4cc78e;--success-weak: #102c20;--danger: #ff8a7d;--danger-weak: #351a19;--warn: #dda24f;--warn-weak: #2f2411;--debit: #86ade8;--debit-weak: #172338;--credit: #d9a05e;--credit-weak: #2c2113;--mastery-unknown: #ff8a7d;--mastery-fuzzy: #dda24f;--mastery-mastered: #4cc78e;--shadow-1: 0 1px 2px rgba(0, 0, 0, .44);--shadow-2: 0 6px 22px rgba(0, 0, 0, .55);--shadow-up: 0 -2px 14px rgba(0, 0, 0, .5);--scrim: rgba(0, 0, 0, .62)}}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0;-webkit-tap-highlight-color:transparent}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--fs-md);line-height:1.6;color:var(--text);background:var(--bg);overscroll-behavior:none;-webkit-font-smoothing:antialiased;-webkit-touch-callout:none}img,svg{display:block;max-width:100%}button,input,textarea,select{font:inherit;color:inherit;font-size:var(--fs-md);background:none;border:none;border-radius:0;-webkit-appearance:none;appearance:none}button{cursor:pointer;touch-action:manipulation}a{color:var(--primary);text-decoration:none}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:var(--r-xs)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}#root{min-height:100vh;min-height:100dvh}.app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:30;padding-top:var(--sat);padding-left:max(var(--sp-3),var(--sal));padding-right:max(var(--sp-3),var(--sar));background:var(--bg-elevated);background:color-mix(in srgb,var(--bg-elevated) 84%,transparent);backdrop-filter:saturate(180%) blur(16px);-webkit-backdrop-filter:saturate(180%) blur(16px);border-bottom:1px solid var(--border)}.topbar__row{height:var(--topbar-h);display:flex;align-items:center;gap:var(--sp-1)}.topbar__title{flex:1;min-width:0;font-size:var(--fs-lg);font-weight:600;letter-spacing:.01em;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar__side{min-width:56px;display:flex;align-items:center;gap:var(--sp-1)}.topbar__side--right{justify-content:flex-end}.subjectpick{display:inline-flex;align-items:center;gap:4px;max-width:100%;height:var(--tap);padding:0 var(--sp-1);margin:0 calc(var(--sp-1) * -1);border:0;border-radius:var(--r-md);background:none;color:inherit;font:inherit;letter-spacing:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}.subjectpick:active{background:var(--bg-sunken, rgb(0 0 0 / 6%))}.subjectpick__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.subjectpick__caret{flex:none;width:16px;height:16px;opacity:.55}.subjectpick__check{flex:none;color:var(--primary)}.iconbtn{min-width:var(--tap);height:var(--tap);display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-1);padding:0 var(--sp-2);border-radius:var(--r-md);color:var(--text);font-size:var(--fs-base);transition:background var(--dur-fast) var(--ease-out)}.iconbtn:active{background:var(--surface-3)}.iconbtn--primary{color:var(--primary);font-weight:600}.main{flex:1;padding-left:max(var(--sp-3),var(--sal));padding-right:max(var(--sp-3),var(--sar));padding-bottom:calc(var(--sp-4) + var(--sab))}.main--tabbed{padding-bottom:calc(var(--tabbar-h) + var(--sab) + var(--sp-4))}.main--bottombar{padding-bottom:calc(76px + var(--sab))}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;padding-bottom:var(--sab);background:var(--bg-elevated);background:color-mix(in srgb,var(--bg-elevated) 90%,transparent);backdrop-filter:saturate(180%) blur(18px);-webkit-backdrop-filter:saturate(180%) blur(18px);border-top:1px solid var(--border);box-shadow:var(--shadow-up)}.tabbar__item{height:var(--tabbar-h);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--text-3);font-size:var(--fs-2xs);letter-spacing:.02em;transition:color var(--dur-fast) var(--ease-out)}.tabbar__item--active{color:var(--primary);font-weight:600}.tabbar__icon{width:23px;height:23px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--dur) var(--ease-spring)}.tabbar__item--active .tabbar__icon{transform:translateY(-1px) scale(1.06)}.tabbar__badge{position:absolute;transform:translate(14px,-12px);min-width:17px;height:17px;padding:0 5px;border-radius:var(--r-pill);background:var(--danger);color:#fff;font-size:var(--fs-2xs);line-height:17px;text-align:center;font-weight:700;font-variant-numeric:tabular-nums;box-shadow:0 0 0 2px var(--bg-elevated)}.stack{display:flex;flex-direction:column;gap:var(--sp-3)}.stack--sm{gap:var(--sp-2)}.row{display:flex;align-items:center;gap:var(--sp-2)}.spacer{flex:1}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-1);overflow:hidden}.card__body{padding:var(--sp-4)}.section-title{margin:var(--sp-6) var(--sp-1) var(--sp-2);font-size:var(--fs-xs);font-weight:700;color:var(--text-3);letter-spacing:.08em}.section-title:first-child{margin-top:var(--sp-4)}.muted{color:var(--text-3)}.small{font-size:var(--fs-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:var(--tap);padding:0 var(--sp-5);border-radius:var(--r-md);background:var(--surface-3);color:var(--text);font-size:var(--fs-md);font-weight:600;letter-spacing:.01em;transition:transform var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out),opacity var(--dur-fast) var(--ease-out)}.btn:active:not(:disabled){transform:scale(.975)}.btn:disabled{opacity:.42;cursor:not-allowed}.btn--primary{background:var(--primary);color:var(--primary-text);box-shadow:var(--shadow-1)}.btn--primary:active:not(:disabled){background:var(--primary-strong)}.btn--block{width:100%}.btn--ghost{background:transparent;border:1px solid var(--border-strong);font-weight:500}.btn--ghost:active:not(:disabled){background:var(--surface-2)}.btn--sm{min-height:36px;padding:0 var(--sp-3);font-size:var(--fs-sm)}.chip{display:inline-flex;align-items:center;gap:var(--sp-1);padding:3px 9px;border-radius:var(--r-pill);background:var(--surface-3);color:var(--text-2);font-size:var(--fs-xs);font-weight:600;letter-spacing:.01em;white-space:nowrap}.chip--primary{background:var(--primary-weak);color:var(--primary)}.chip--success{background:var(--success-weak);color:var(--success)}.chip--danger{background:var(--danger-weak);color:var(--danger)}.chip--warn{background:var(--warn-weak);color:var(--warn)}.mastery{display:inline-flex;align-items:center;gap:5px;padding:3px 9px 3px 7px;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:600;white-space:nowrap}.mastery:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}.mastery--unknown{color:var(--mastery-unknown);background:var(--danger-weak)}.mastery--fuzzy{color:var(--mastery-fuzzy);background:var(--warn-weak)}.mastery--mastered{color:var(--mastery-mastered);background:var(--success-weak)}.stars{display:inline-flex;gap:1.5px;color:var(--warn);vertical-align:-1px}.stars__star{width:13px;height:13px;fill:currentColor}.stars__star--empty{fill:var(--border-strong)}.ring{display:block;transform:rotate(-90deg)}.ring__track{fill:none;stroke:var(--surface-3)}.ring__value{fill:none;stroke:var(--primary);stroke-linecap:round;transition:stroke-dashoffset var(--dur-slow) var(--ease-out)}.ring-wrap{position:relative;display:inline-grid;place-items:center;flex:none}.ring-wrap__label{position:absolute;font-size:var(--fs-xs);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.bar{height:6px;border-radius:var(--r-pill);background:var(--surface-3);overflow:hidden}.bar__fill{height:100%;border-radius:var(--r-pill);background:var(--primary);transition:width var(--dur-slow) var(--ease-out)}.bar__fill--success{background:var(--success)}.listitem{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:56px;padding:var(--sp-3) var(--sp-4);text-align:left;background:var(--surface);color:inherit;border-bottom:1px solid var(--border);transition:background var(--dur-fast) var(--ease-out)}.listitem:last-child{border-bottom:none}.listitem--on{box-shadow:inset 3px 0 0 var(--primary)}.listitem--on .listitem__title{font-weight:700}.listitem:active{background:var(--surface-2)}.listitem__main{flex:1;min-width:0}.listitem__title{display:block;font-size:var(--fs-md);font-weight:500;line-height:1.45}.listitem__sub{margin-top:5px;font-size:var(--fs-sm);color:var(--text-3);display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.chevron{flex:none;width:18px;height:18px;stroke:var(--text-3);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;opacity:.7}.state{padding:var(--sp-8) var(--sp-6);text-align:center;color:var(--text-3)}.state__icon{font-size:34px;line-height:1;margin-bottom:var(--sp-3)}.state__art{width:92px;height:68px;margin:0 auto var(--sp-4);color:var(--border-strong);stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.state__art-accent{stroke:var(--primary);opacity:.85}.state__text{font-size:var(--fs-base);line-height:1.75;max-width:22em;margin:0 auto;text-wrap:pretty}.spinner{width:22px;height:22px;margin:0 auto var(--sp-3);border:2px solid var(--border-strong);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{border-radius:var(--r-sm);background:linear-gradient(90deg,var(--surface-2),var(--surface-3),var(--surface-2));background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-list{display:flex;flex-direction:column;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;margin-top:var(--sp-3);animation:skeleton-in var(--dur-slow) var(--ease-out) both}@keyframes skeleton-in{0%{opacity:0}}.skeleton-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);background:var(--surface)}.skeleton-row__badge{width:34px;height:34px;border-radius:10px;flex:none}.skeleton-row__main{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--sp-2)}.skeleton-row__ring{width:40px;height:40px;border-radius:50%;flex:none}.skeleton-line{height:11px;border-radius:var(--r-pill)}.skeleton-line--sm{height:9px}.skeleton-prose{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-5) 0;animation:skeleton-in var(--dur-slow) var(--ease-out) both}.collapse{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2);overflow:hidden}.collapse__head{display:flex;align-items:center;gap:var(--sp-2);width:100%;min-height:var(--tap);padding:var(--sp-3) var(--sp-4);text-align:left;font-size:var(--fs-base);font-weight:700;letter-spacing:.01em;color:var(--text)}.collapse__caret{width:15px;height:15px;flex:none;stroke:var(--text-3);fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--dur) var(--ease-out)}.collapse__caret--open{transform:rotate(90deg)}.collapse__body{padding:0 var(--sp-4) var(--sp-4);animation:disclose var(--dur) var(--ease-out)}.collapse--plain{border:none;background:none}.collapse--plain .collapse__head,.collapse--plain .collapse__body{padding-left:0;padding-right:0}@keyframes disclose{0%{opacity:0;transform:translateY(-5px)}}.drawer-backdrop{position:fixed;inset:0;z-index:80;background:var(--scrim);animation:fade-in var(--dur) var(--ease-out)}@keyframes fade-in{0%{opacity:0}}.drawer{position:fixed;left:0;right:0;bottom:0;z-index:81;display:flex;flex-direction:column;max-height:92vh;max-height:92dvh;background:var(--bg-elevated);border-radius:var(--r-xl) var(--r-xl) 0 0;box-shadow:var(--shadow-2);padding-bottom:var(--sab);animation:slide-up .26s cubic-bezier(.32,.72,0,1)}@keyframes slide-up{0%{transform:translateY(100%)}}.drawer__handle{width:38px;height:4px;margin:var(--sp-2) auto 0;border-radius:var(--r-pill);background:var(--border-strong);flex:none}.drawer__head{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);flex:none}.drawer__title{flex:1;font-size:var(--fs-md);font-weight:600}.drawer__body{flex:1;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch;padding:var(--sp-4)}.drawer__body--flush{padding:0}.drawer__foot{flex:none;padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--border)}.prose{font-size:var(--fs-lg);line-height:1.85;letter-spacing:.01em;color:var(--text-read);-webkit-touch-callout:default;-webkit-user-select:text;user-select:text;word-break:break-word;text-wrap:pretty}.prose>*+*{margin-top:.9em}.prose h1,.prose h2,.prose h3,.prose h4{line-height:1.45;font-weight:700;letter-spacing:.005em;margin-top:1.7em;text-wrap:balance;color:var(--text)}.prose h1{font-size:var(--fs-2xl)}.prose h2{font-size:var(--fs-xl)}.prose h3{font-size:var(--fs-lg);color:var(--primary);padding-left:10px;border-left:3px solid var(--primary);border-radius:1px}.prose h4{font-size:var(--fs-md);color:var(--text-2)}.prose ul,.prose ol{padding-left:1.5em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--text-3)}.prose strong{font-weight:700;color:var(--text)}.prose em{font-style:normal;background:linear-gradient(transparent 60%,var(--primary-weak) 0);padding:0 1px}.prose blockquote{padding:var(--sp-3) var(--sp-4);border-left:3px solid var(--primary);border-radius:0 var(--r-sm) var(--r-sm) 0;background:var(--primary-weak);color:var(--text-2);font-size:var(--fs-md);line-height:1.75}.prose blockquote>*+*{margin-top:.6em}.prose blockquote.gapnote{border-left-style:dashed;border-left-color:var(--border-strong);background:var(--surface-2);color:var(--text-3);font-size:var(--fs-base)}.prose code{padding:1.5px 5px;border-radius:5px;background:var(--surface-3);font-family:var(--font-mono);font-size:.88em}.prose pre{padding:var(--sp-3);border-radius:var(--r-md);background:var(--surface-3);overflow-x:auto;-webkit-overflow-scrolling:touch}.prose pre code{padding:0;background:none}.prose hr{border:none;border-top:1px solid var(--border);margin-top:1.6em}.tablewrap{position:relative}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface)}.tablewrap:after{content:"";position:absolute;top:1px;right:1px;bottom:1px;width:26px;pointer-events:none;opacity:0;transition:opacity var(--dur-fast) var(--ease-out);border-radius:0 var(--r-md) var(--r-md) 0;background:linear-gradient(to left,var(--surface),transparent)}.tablewrap--more:after{opacity:1}.tablewrap__cue{position:absolute;top:50%;right:5px;transform:translateY(-50%);display:grid;place-items:center;width:22px;height:22px;padding-bottom:2px;border-radius:50%;pointer-events:none;background:var(--surface-3);color:var(--text-2);font-size:15px;line-height:1}.prose table{border-collapse:collapse;width:100%;font-size:var(--fs-sm);line-height:1.65;font-variant-numeric:tabular-nums}.prose th,.prose td{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border);border-right:1px solid var(--border);text-align:left;vertical-align:top;overflow-wrap:break-word}.table-scroll th,.table-scroll td{min-width:6em}.table--sticky tr>:first-child,.table-scroll .stickycol{position:sticky;left:0;z-index:1;min-width:7em;background:var(--surface);box-shadow:inset -1px 0 0 var(--border)}.table--sticky tr>th:first-child,.table-scroll th.stickycol{background:var(--surface-2)}.prose th:last-child,.prose td:last-child{border-right:none}.prose tbody tr:last-child td,.prose tbody tr:last-child th{border-bottom:none}.prose thead th{background:var(--surface-2);font-weight:700;color:var(--text-2);white-space:nowrap;letter-spacing:.02em}.entry{margin:1em 0;padding:var(--sp-3) var(--sp-4);border:1px solid var(--border);border-left:3px solid var(--debit);border-radius:var(--r-md);background:var(--surface-2);overflow-x:auto;-webkit-overflow-scrolling:touch;-webkit-user-select:text;user-select:text}.entry__table{width:100%;min-width:260px;border-collapse:collapse;font-size:var(--fs-base);line-height:1.7}.entry__row--debit .entry__account,.entry__row--debit .entry__sidecol{color:var(--debit)}.entry__row--credit .entry__account,.entry__row--credit .entry__sidecol{color:var(--credit)}.entry__sidecol{width:1%;padding:2px 0;white-space:nowrap;text-align:left;vertical-align:baseline}.entry__account{padding:2px 0;text-align:left;font-weight:500;word-break:break-word;overflow-wrap:anywhere}.entry__side{font-weight:700;margin-right:2px}.entry__amount{padding:2px 0 2px var(--sp-4);text-align:right;white-space:nowrap;vertical-align:baseline;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-sm);font-weight:600;color:var(--text)}.entry__note{display:block;margin-top:1px;font-family:var(--font-sans);font-size:var(--fs-xs);font-weight:400;color:var(--text-3);white-space:normal;overflow-wrap:anywhere}.entry__foot{margin-top:var(--sp-2);padding-top:7px;border-top:1px dashed var(--border-strong);display:flex;align-items:center;gap:var(--sp-3);font-size:var(--fs-xs);color:var(--text-3);font-variant-numeric:tabular-nums}.entry__foot-amount{font-family:var(--font-mono);color:var(--text-2);font-weight:600}.entry__warn{color:var(--danger);font-weight:700}.example{margin:1.2em 0;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1);overflow:hidden}.example__head{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3) var(--sp-2) var(--sp-4);background:var(--surface-2);border-bottom:1px solid var(--border)}.example__label{font-size:var(--fs-sm);font-weight:700;letter-spacing:.02em;color:var(--primary);white-space:nowrap}.example--quiz .example__head{background:var(--primary-weak)}.example__status{display:inline-grid;place-items:center;width:20px;height:20px;flex:none;border-radius:50%;font-size:var(--fs-xs);font-weight:700;color:#fff;animation:stamp var(--dur) var(--ease-spring)}.example__status--correct{background:var(--success)}.example__status--wrong{background:var(--danger)}.example__body{padding:var(--sp-4)}.example__hint{margin-top:var(--sp-3);padding:var(--sp-3);border-radius:var(--r-md);background:var(--warn-weak);color:var(--warn);font-size:var(--fs-sm);line-height:1.7}.example__actions{margin-top:var(--sp-3);display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.example__reveal{margin-top:var(--sp-4);padding-top:var(--sp-4);border-top:1px dashed var(--border-strong);animation:disclose var(--dur-slow) var(--ease-out)}.example__reveal-title{font-size:var(--fs-sm);font-weight:700;letter-spacing:.03em;color:var(--success);margin-bottom:var(--sp-2)}.example__reveal-title--ext{color:var(--warn)}.qhead{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-bottom:var(--sp-3)}.qstem{font-size:var(--fs-lg);line-height:1.8;letter-spacing:.01em;color:var(--text-read)}.qanalysis{margin-top:var(--sp-4);scroll-margin-top:60px}.options{display:flex;flex-direction:column;gap:var(--sp-2);margin-top:var(--sp-4)}.option{display:flex;align-items:flex-start;gap:var(--sp-3);width:100%;min-height:var(--tap);padding:var(--sp-3) var(--sp-4);text-align:left;border:1.5px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--text);font-size:var(--fs-md);line-height:1.6;transition:border-color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out),opacity var(--dur) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.option:active:not(:disabled){transform:scale(.985);background:var(--surface-2)}.option:disabled{cursor:default}.option__key{flex:none;width:26px;height:26px;display:grid;place-items:center;border:1.5px solid var(--border-strong);border-radius:50%;font-size:var(--fs-sm);font-weight:700;color:var(--text-2);transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.option__text{flex:1;min-width:0;padding-top:1px}.option--picked{border-color:var(--primary);background:var(--primary-weak)}.option--picked .option__key{border-color:var(--primary);background:var(--primary);color:var(--primary-text)}.option--correct{border-color:var(--success);background:var(--success-weak);animation:stamp var(--dur-slow) var(--ease-spring)}.option--correct .option__key{border-color:var(--success);background:var(--success);color:#fff}.option--wrong{border-color:var(--danger);background:var(--danger-weak);animation:nudge var(--dur-slow) var(--ease-out)}.option--wrong .option__key{border-color:var(--danger);background:var(--danger);color:#fff}.option--muted{opacity:.5}.option__mark{flex:none;font-size:var(--fs-base);font-weight:700;padding-top:2px}.option--correct .option__mark{color:var(--success)}.option--wrong .option__mark{color:var(--danger)}@keyframes stamp{0%{transform:scale(.94);opacity:.55}}@keyframes nudge{0%,to{transform:translate(0)}25%{transform:translate(-4px)}60%{transform:translate(3px)}}.verdict{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-4);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);font-size:var(--fs-base);font-weight:700;animation:disclose var(--dur) var(--ease-out)}.verdict__icon{display:inline-grid;place-items:center;width:22px;height:22px;flex:none;border-radius:50%;color:var(--surface);font-size:var(--fs-xs);font-weight:700;line-height:1}.verdict--ok{background:var(--success-weak);color:var(--success)}.verdict--ok .verdict__icon{background:var(--success)}.verdict--no{background:var(--danger-weak);color:var(--danger)}.verdict--no .verdict__icon{background:var(--danger)}.qbroken{display:flex;align-items:flex-start;gap:var(--sp-3);margin-top:var(--sp-4);padding:var(--sp-3) var(--sp-4);border:1px dashed var(--border-strong);border-radius:var(--r-md);background:var(--surface-2);color:var(--text-2);font-size:var(--fs-sm);line-height:1.7}.qbroken__icon{flex:none;width:20px;height:20px;margin-top:2px;border-radius:50%;background:var(--border-strong);color:var(--surface);font-weight:800;font-size:var(--fs-xs);line-height:20px;text-align:center}.verdict__answer{display:inline-block;margin-left:var(--sp-2);padding:2px 8px;border-radius:var(--r-pill);background:var(--surface);font-size:var(--fs-sm);font-weight:700;letter-spacing:.08em}.answer-input{width:100%;min-height:130px;padding:var(--sp-3);border:1.5px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--text);font-size:var(--fs-md);line-height:1.75;resize:vertical;transition:border-color var(--dur-fast) var(--ease-out)}.answer-input:focus{outline:none;border-color:var(--primary)}.part-nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:var(--sp-3)}.part-dot{min-width:36px;height:32px;padding:0 var(--sp-2);border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-2);font-size:var(--fs-sm);font-weight:700;font-variant-numeric:tabular-nums;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.part-dot--active{border-color:var(--primary);background:var(--primary);color:var(--primary-text)}.part-dot--done{border-color:color-mix(in srgb,var(--success) 45%,var(--border));color:var(--success);background:var(--success-weak)}.assess{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2);margin-top:var(--sp-4)}.assess__btn{min-height:48px;border-radius:var(--r-md);border:1.5px solid var(--border);background:var(--surface);font-size:var(--fs-base);font-weight:700;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.assess__btn:active{transform:scale(.97)}.assess__btn--mastered{color:var(--mastery-mastered);border-color:color-mix(in srgb,var(--success) 40%,var(--border))}.assess__btn--fuzzy{color:var(--mastery-fuzzy);border-color:color-mix(in srgb,var(--warn) 40%,var(--border))}.assess__btn--unknown{color:var(--mastery-unknown);border-color:color-mix(in srgb,var(--danger) 40%,var(--border))}.assess__btn--on{color:#fff}.assess__btn--mastered.assess__btn--on{background:var(--success);border-color:var(--success)}.assess__btn--fuzzy.assess__btn--on{background:var(--warn);border-color:var(--warn)}.assess__btn--unknown.assess__btn--on{background:var(--danger);border-color:var(--danger)}.qtools{display:flex;gap:var(--sp-2);margin-top:var(--sp-6);padding-top:var(--sp-4);border-top:1px solid var(--border)}.qtools__btn{flex:1;min-height:var(--tap);display:inline-flex;align-items:center;justify-content:center;gap:5px;border-radius:var(--r-md);background:var(--surface-2);color:var(--text-2);font-size:var(--fs-sm);font-weight:500;transition:background var(--dur-fast) var(--ease-out)}.qtools__btn:active:not(:disabled){background:var(--surface-3)}.qtools__btn:disabled{opacity:.42;cursor:not-allowed}.qtools__hint{margin-top:var(--sp-2);font-size:var(--fs-sm);color:var(--text-3);line-height:1.6}.bottombar{position:fixed;left:0;right:0;bottom:0;z-index:35;padding:var(--sp-2) max(var(--sp-3),var(--sal));padding-bottom:calc(var(--sp-2) + var(--sab));background:var(--bg-elevated);background:color-mix(in srgb,var(--bg-elevated) 90%,transparent);backdrop-filter:saturate(180%) blur(18px);-webkit-backdrop-filter:saturate(180%) blur(18px);border-top:1px solid var(--border);box-shadow:var(--shadow-up);display:flex;gap:var(--sp-2);align-items:center}.pageview{position:relative;height:var(--pv-h, 100%);overflow:auto;-webkit-overflow-scrolling:touch;background:var(--surface-3);touch-action:pan-x pan-y}.pageview__img{display:block;margin:0 auto;transform-origin:0 0;max-width:none}.pageview__toolbar{display:flex;align-items:center;gap:6px;padding:var(--sp-2) var(--sp-4);border-top:1px solid var(--border);background:var(--bg-elevated)}.pageview__zoom{min-width:52px;text-align:center;font-size:var(--fs-sm);color:var(--text-3);font-variant-numeric:tabular-nums}.pin{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;padding:calc(var(--sat) + 8vh) max(var(--sp-5),var(--sal)) calc(var(--sab) + var(--sp-6)) max(var(--sp-5),var(--sar))}.pin__logo{width:72px;height:72px;border-radius:20px;box-shadow:var(--shadow-2)}.pin__title{margin-top:var(--sp-4);font-size:var(--fs-2xl);font-weight:700;letter-spacing:.02em}.pin__sub{margin-top:6px;font-size:var(--fs-sm);color:var(--text-3)}.pin__dots{display:flex;gap:var(--sp-4);margin:var(--sp-7) 0 var(--sp-2)}.pin__dot{width:13px;height:13px;border-radius:50%;border:1.5px solid var(--border-strong);transition:transform var(--dur-fast) var(--ease-spring),background var(--dur-fast) var(--ease-out)}.pin__dot--on{background:var(--primary);border-color:var(--primary);transform:scale(1.14)}.pin__error{min-height:22px;font-size:var(--fs-sm);color:var(--danger);text-align:center}.pin__error--shake{animation:shake .4s}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-7px)}40%{transform:translate(7px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.keypad{width:100%;max-width:300px;margin-top:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-4)}.keypad__key{height:62px;border-radius:50%;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-1);font-size:26px;font-weight:400;font-variant-numeric:tabular-nums;transition:transform var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}.keypad__key:active{transform:scale(.94);background:var(--surface-3)}.keypad__key--fn{background:transparent;border:none;box-shadow:none;font-size:var(--fs-base);color:var(--text-2)}.volhead{display:flex;align-items:center;gap:var(--sp-2);margin:var(--sp-6) var(--sp-1) var(--sp-2);font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;color:var(--text-3)}.volhead:after{content:"";flex:1;height:1px;background:var(--border)}.chapno{flex:none;width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:var(--primary-weak);color:var(--primary);font-size:var(--fs-sm);font-weight:700;font-variant-numeric:tabular-nums}.chaptertitle{font-size:var(--fs-xl);font-weight:700;line-height:1.45;text-wrap:balance}.pagegap{margin-top:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-left:3px dashed var(--border-strong);border-radius:0 var(--r-sm) var(--r-sm) 0;background:var(--surface-2)}.pagegap__title{font-size:var(--fs-sm);font-weight:700;line-height:1.6;color:var(--text)}.pagegap__sub{margin-top:3px;font-size:var(--fs-xs);line-height:1.6;color:var(--text-3)}.pagegap--compact{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-xs);line-height:1.6;color:var(--text-3)}.entries{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2)}.entrybtn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:var(--sp-4) var(--sp-1);border-radius:var(--r-lg);border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-1);color:var(--text);font-size:var(--fs-sm);font-weight:700;transition:transform var(--dur-fast) var(--ease-out)}.entrybtn:active:not(:disabled){transform:scale(.97)}.entrybtn__icon{font-size:22px}.entrybtn__glyph{width:24px;height:24px;stroke:var(--primary);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.entrybtn__sub{font-size:var(--fs-2xs);font-weight:500;color:var(--text-3);font-variant-numeric:tabular-nums}.entrybtn:disabled{opacity:.45}.entrybtn:disabled .entrybtn__glyph{stroke:var(--text-3)}.readnav{display:flex;gap:var(--sp-2);margin-top:var(--sp-7)}.readnav__btn{flex:1;min-width:0;min-height:54px;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface);text-align:left;color:inherit;transition:background var(--dur-fast) var(--ease-out)}.readnav__btn:active:not(:disabled){background:var(--surface-2)}.readnav__btn:disabled{opacity:.4}.readnav__label{font-size:var(--fs-2xs);color:var(--text-3);letter-spacing:.04em}.readnav__title{font-size:var(--fs-sm);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.readnav__btn--next{text-align:right}.readprogress{position:absolute;left:0;bottom:-1px;height:2px;background:var(--primary);transition:width .1s linear}.readhead{padding-top:var(--sp-5);margin-bottom:var(--sp-5)}.readtitle{font-size:var(--fs-2xl);font-weight:700;line-height:1.45;letter-spacing:.01em;text-wrap:balance}.readmeta{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-2);font-size:var(--fs-xs);color:var(--text-3)}.toast{position:fixed;left:50%;bottom:calc(88px + var(--sab));z-index:90;transform:translate(-50%);max-width:84vw;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-pill);background:#121824f0;color:#fff;font-size:var(--fs-sm);box-shadow:var(--shadow-2);animation:toast-in var(--dur) var(--ease-out)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}.statgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2)}.stat{padding:var(--sp-3) var(--sp-2);border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--border);text-align:center}.stat__value{font-size:var(--fs-2xl);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1.2}.stat__label{margin-top:3px;font-size:var(--fs-xs);color:var(--text-3)}.segmented{display:inline-flex;padding:3px;border-radius:var(--r-md);background:var(--surface-3)}.segmented__item{min-height:34px;padding:0 var(--sp-4);border-radius:var(--r-sm);font-size:var(--fs-sm);font-weight:600;color:var(--text-2);transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.segmented__item--on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-1)}.segmented__item:disabled{opacity:.42;cursor:not-allowed}.bubble{border-radius:var(--r-md);padding:var(--sp-3);font-size:var(--fs-base);line-height:1.7;overflow-wrap:anywhere}.bubble--me{align-self:flex-end;max-width:85%;margin-left:auto;background:var(--primary-weak);color:var(--text);white-space:pre-wrap}.bubble--ai{background:var(--surface-2);border:1px solid var(--border)}.bubble--ai .prose{font-size:var(--fs-base);line-height:1.75}.bubble--ai .prose>:first-child{margin-top:0}.aichat__caret{display:inline-block;width:7px;height:15px;margin-left:2px;vertical-align:-2px;background:var(--primary);border-radius:1px;animation:caret-blink 1s steps(2,start) infinite}@keyframes caret-blink{to{opacity:0}}@media(prefers-reduced-motion:reduce){.aichat__caret{animation:none}}.aichat__intro{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);padding:var(--sp-6) var(--sp-2) var(--sp-2)}.aichat__input{min-height:var(--tap);max-height:120px;flex:1;resize:none;padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--text);transition:border-color var(--dur-fast) var(--ease-out)}.aichat__input:focus{outline:none;border-color:var(--primary)}.aichat__stat{text-align:right;font-variant-numeric:tabular-nums}.aichat__error{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;padding:var(--sp-3);border-radius:var(--r-md);background:var(--danger-weak);color:var(--danger);font-size:var(--fs-sm)}.aigrade{border-top:1px dashed var(--border);padding-top:var(--sp-4)}.aigrade__hint{margin-top:var(--sp-2);text-align:center}.aigrade__running{padding:var(--sp-3);border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--border)}.aigrade__running .spinner{margin:0}.spinner--sm{width:16px;height:16px;border-width:2px}.aigrade__card{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);padding:var(--sp-3)}.aigrade__no{font-weight:700;font-size:var(--fs-base)}.aigrade__badge{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:var(--r-pill);font-size:var(--fs-sm);font-weight:700}.aigrade__badge--correct{background:var(--success-weak);color:var(--success)}.aigrade__badge--partial{background:var(--warn-weak);color:var(--warn)}.aigrade__badge--wrong{background:var(--danger-weak);color:var(--danger)}.aigrade__comment{margin-top:var(--sp-2);font-size:var(--fs-base);line-height:1.7;color:var(--text)}.aigrade__missing{margin-top:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);background:var(--surface-2)}.aigrade__missing-title{font-size:var(--fs-sm);font-weight:700;color:var(--text-3);margin-bottom:var(--sp-1)}.aigrade__missing ul{margin:0;padding-left:18px;font-size:var(--fs-sm);line-height:1.7;color:var(--text-2)}.aigrade__overall{padding:var(--sp-3);border-radius:var(--r-md);background:var(--primary-weak);font-size:var(--fs-sm);line-height:1.7;color:var(--text)}.assess__btn--suggest{border-style:dashed;border-width:2px;box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--primary) 12%,transparent)}.prose tbody th{background:var(--surface-2);font-weight:700;color:var(--text-2)}.prose th>*:first-child,.prose td>*:first-child{margin-top:0}.prose th>*:last-child,.prose td>*:last-child{margin-bottom:0}.figure{margin:1.1em 0;text-align:center}.figure__btn{display:block;width:100%;padding:0;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2);overflow:hidden;cursor:zoom-in;transition:border-color var(--dur-fast) var(--ease-out)}.figure__btn:active{border-color:var(--border-strong)}.figure__img{display:block;width:100%;max-width:100%;height:auto}.figure__cap{margin-top:6px;font-size:var(--fs-sm);color:var(--text-3)}.figure--failed{padding:var(--sp-3);border:1px dashed var(--border);border-radius:var(--r-md);text-align:center}.prose img{max-width:100%;height:auto}.unitlist{display:flex;flex-direction:column;gap:var(--sp-2)}.unitcard{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:64px;padding:var(--sp-3) var(--sp-4);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--shadow-1);text-align:left;transition:transform var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out)}.unitcard:active{transform:scale(.995);border-color:var(--border-strong)}.unitcard--passed{border-color:color-mix(in srgb,var(--success) 28%,var(--border));background:linear-gradient(90deg,var(--success-weak) 0 3px,var(--surface) 3px)}.unitcard__no{display:inline-flex;align-items:center;justify-content:center;flex:none;width:28px;height:28px;border-radius:var(--r-sm);background:var(--surface-3);color:var(--text-2);font-size:var(--fs-sm);font-weight:700;font-variant-numeric:tabular-nums}.unitcard--passed .unitcard__no{background:var(--success-weak);color:var(--success)}.unitcard__main{display:flex;flex-direction:column;gap:5px;min-width:0;flex:1}.unitcard__title{font-size:var(--fs-md);font-weight:600;line-height:1.4}.unitcard__sub{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--text-3)}.unitcard__seal{display:inline-flex;align-items:center;justify-content:center;flex:none;width:38px;height:38px;border:2px solid var(--success);border-radius:50%;color:var(--success);font-size:var(--fs-md);font-weight:700}.unithead{margin:var(--sp-3) 0 var(--sp-5)}.unithead__row{display:flex;align-items:center;gap:var(--sp-3)}.unittitle{flex:1;font-size:var(--fs-xl);font-weight:700;line-height:1.4;text-wrap:balance}.unithead__meta{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-2);font-size:var(--fs-sm);color:var(--text-3)}.purebtn{min-height:32px;padding:0 var(--sp-3);border:1px solid var(--border);border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-2);font-size:var(--fs-xs);font-weight:600}.purebtn--on{border-color:var(--primary);background:var(--primary-weak);color:var(--primary)}.usection{margin-top:var(--sp-6)}.usection__title{display:flex;align-items:baseline;gap:var(--sp-2);margin-bottom:var(--sp-3);font-size:var(--fs-md);font-weight:700;color:var(--text)}.usection__title:before{content:"";width:3px;height:.95em;border-radius:2px;background:var(--primary);transform:translateY(1px)}.usection__hint{font-size:var(--fs-xs);font-weight:500;color:var(--text-3)}.ucard{margin-top:var(--sp-3);padding:var(--sp-4);border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:var(--r-md);background:var(--surface)}.ucard__head{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2)}.ucard__title{font-size:var(--fs-sm);font-weight:700;color:var(--primary);letter-spacing:.02em}.ucard--intro{background:var(--primary-weak);border-color:color-mix(in srgb,var(--primary) 18%,var(--border))}.ucard--technique{border-left-color:var(--credit)}.ucard--technique .ucard__title{color:var(--credit)}.ucard--recap{border-left-color:var(--success)}.ucard--recap .ucard__title{color:var(--success)}.ucard .prose{font-size:var(--fs-md)}.prose--tight p{margin:.35em 0}mark.hl,button.hl{padding:1px 0;border:0;border-bottom:2px solid color-mix(in srgb,var(--primary) 45%,transparent);background:color-mix(in srgb,var(--primary) 9%,transparent);color:inherit;font:inherit;line-height:inherit}button.hl--note{cursor:pointer;border-radius:2px}button.hl--note:active{background:color-mix(in srgb,var(--primary) 18%,transparent)}.hl__dot{display:inline-block;width:5px;height:5px;margin-left:2px;border-radius:50%;background:var(--primary);transform:translateY(-6px)}.notequote{margin-bottom:var(--sp-3);padding:var(--sp-3);border-left:3px solid var(--primary);border-radius:var(--r-sm);background:var(--surface-2);color:var(--text-2);font-size:var(--fs-sm);line-height:1.7}.dtabs{display:flex;gap:var(--sp-2)}.dtab{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 var(--sp-4);border:1px solid var(--border);border-radius:var(--r-pill);background:var(--surface);color:var(--text-2);font-size:var(--fs-sm);font-weight:600}.dtab--on{border-color:var(--primary);background:var(--primary);color:var(--primary-text)}.dtab:disabled{opacity:.45}.dtab__n{font-variant-numeric:tabular-nums;opacity:.75}.dtabs__hint{margin:var(--sp-2) 0 0}.drill{margin-top:var(--sp-3);padding:var(--sp-4);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--shadow-1)}.drill__head{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3)}.drill__no{font-size:var(--fs-sm);font-weight:700;color:var(--text-2);font-variant-numeric:tabular-nums}.drill__body>.prose:first-child{margin-bottom:var(--sp-3)}.drill__actions{display:flex;gap:var(--sp-2);margin-top:var(--sp-3)}.drill__part{margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px dashed var(--border)}.drill__part-no{font-size:var(--fs-sm);font-weight:700;color:var(--primary)}.drill__answer{margin-top:var(--sp-3);padding:var(--sp-3);border-radius:var(--r-sm);background:var(--surface-2)}.drill__answer-title{margin-bottom:var(--sp-1);font-size:var(--fs-xs);font-weight:700;color:var(--text-3);letter-spacing:.04em}.drill__assess{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);flex-wrap:wrap}.chip--variant{background:var(--credit-weak);color:var(--credit)}.variant{padding:var(--sp-3);border-radius:var(--r-sm);background:var(--surface-2)}.variant__head{font-size:var(--fs-sm);color:var(--text-2);line-height:1.7}.variant__table{width:100%;margin-top:var(--sp-3);border-collapse:collapse;font-size:var(--fs-sm)}.variant__table th,.variant__table td{padding:6px 8px;border-bottom:1px solid var(--border);text-align:left}.variant__table th{color:var(--text-3);font-weight:600}.variant__from{color:var(--text-3);text-decoration:line-through;font-variant-numeric:tabular-nums}.variant__to{color:var(--primary);font-weight:700;font-variant-numeric:tabular-nums}.variant__chain{margin-top:var(--sp-3)}.variant__chain-title{font-size:var(--fs-xs);font-weight:700;color:var(--text-3);letter-spacing:.04em}.variant__note{margin-top:var(--sp-3);padding-top:var(--sp-2);border-top:1px solid var(--border);font-size:var(--fs-xs);color:var(--text-3);line-height:1.7}.passcard{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface)}.passcard--done{border-color:color-mix(in srgb,var(--success) 32%,var(--border));background:var(--success-weak)}.passcard__main{flex:1;min-width:0}.passcard__title{font-size:var(--fs-md);font-weight:700}.passcard--done .passcard__title{color:var(--success)}.passcard__sub{margin-top:4px;font-size:var(--fs-sm);color:var(--text-3);font-variant-numeric:tabular-nums}.passcard__seal{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:2px solid var(--success);border-radius:50%;color:var(--success);font-size:20px;font-weight:700;animation:stamp var(--dur-slow) var(--ease-spring) both}.unit--celebrate{animation:unit-pass 2.2s var(--ease-out) both}@keyframes unit-pass{0%{background:transparent}12%{background:color-mix(in srgb,var(--success) 10%,transparent)}to{background:transparent}}.unit--celebrate .passcard{animation:nudge var(--dur-slow) var(--ease-out) 2}@media(prefers-reduced-motion:reduce){.unit--celebrate,.unit--celebrate .passcard,.passcard__seal{animation:none}}.ucard__source{margin-bottom:var(--sp-2);font-size:var(--fs-xs);color:var(--text-3);line-height:1.6}.closing-line:after{content:"";display:block;height:4px;margin-top:5px;background:linear-gradient(var(--success),var(--success)) top / 100% 1px no-repeat,linear-gradient(var(--success),var(--success)) bottom / 100% 1px no-repeat}.closing-line--draw:after{transform-origin:left center;animation:closing-line-draw var(--dur-slow) var(--ease-out) both}@keyframes closing-line-draw{0%{transform:scaleX(0)}}@media(prefers-reduced-motion:reduce){.closing-line--draw:after{animation:none}}.sidenav__brand,.pin__title,.chaptertitle,.readtitle,.unittitle,.stat__value,.prose h1,.prose h2,.prose h3{font-family:var(--font-serif);font-weight:700;letter-spacing:-.01em}.stat__value{font-variant-numeric:tabular-nums}.sidenav{display:none}@media(min-width:760px){.tabbar{display:none}.sidenav{position:fixed;top:0;left:0;bottom:0;z-index:45;width:calc(var(--rail-w) + var(--sal));display:flex;flex-direction:column;gap:2px;padding:calc(var(--sat) + var(--sp-3)) var(--sp-2) calc(var(--sab) + var(--sp-3));padding-left:calc(var(--sp-2) + var(--sal));background:var(--bg-elevated);border-right:1px solid var(--border)}.app{padding-left:calc(var(--rail-w) + var(--sal))}.sidenav__item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:var(--tap);padding:var(--sp-2) 2px;border-radius:var(--r-md);color:var(--text-3);font-size:var(--fs-2xs);letter-spacing:.02em;text-align:center;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.sidenav__item--active{background:var(--primary-weak);color:var(--primary);font-weight:600}.sidenav__badge{position:relative;display:grid;place-items:center}.sidenav__foot,.sidenav__brand{display:none}}@media(min-width:1080px){.sidenav{width:calc(var(--sidebar-w) + var(--sal));padding-left:calc(var(--sp-3) + var(--sal));padding-right:var(--sp-3)}.app{padding-left:calc(var(--sidebar-w) + var(--sal))}.sidenav__item{flex-direction:row;justify-content:flex-start;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-base);text-align:left}.sidenav__brand{display:block;padding:var(--sp-3) var(--sp-3) var(--sp-6);font-size:var(--fs-xl);color:var(--text)}.sidenav__foot{display:block;margin-top:auto;padding:var(--sp-4) var(--sp-3) var(--sp-2);border-top:1px solid var(--border);font-size:var(--fs-xs);color:var(--text-3)}}@media(min-width:760px){.topbar,.main{width:100%;max-width:var(--content-max);margin-inline:auto}.topbar,.main{padding-left:var(--sp-4);padding-right:max(var(--sp-4),var(--sar))}.main--reading{max-width:var(--reading-max)}.main--tabbed{padding-bottom:calc(var(--sp-6) + var(--sab))}.topbar__title{text-align:left}.topbar__side{min-width:0}.toast{left:calc(50% + var(--rail-w) / 2)}}@media(min-width:1080px){.toast{left:calc(50% + var(--sidebar-w) / 2)}}@media(hover:hover){.listitem:hover,.qtools__btn:hover{background:var(--surface-2)}.unitcard:hover,.entrybtn:hover:not(:disabled),.readnav__btn:hover:not(:disabled),.option:hover:not(:disabled){border-color:var(--border-strong);box-shadow:var(--shadow-2);transition:border-color var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out)}.option:disabled:hover,.option--correct:hover,.option--wrong:hover,.option--muted:hover{border-color:inherit;box-shadow:none}.btn:hover:not(:disabled){background:var(--surface-2)}.btn--primary:hover:not(:disabled){background:var(--primary-strong)}.btn--ghost:hover:not(:disabled){background:var(--surface-2);border-color:var(--border-strong)}.sidenav__item:hover{background:var(--surface-2);color:var(--text)}.sidenav__item--active:hover{background:var(--primary-weak);color:var(--primary)}.keypad__key:hover{background:var(--surface-2)}.readtoc__item:hover{color:var(--text);background:var(--surface-2)}}@media(min-width:1080px){.chaptergrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.chaptergrid .listitem{border-bottom:1px solid var(--border)}.chaptergrid .listitem:nth-child(odd){border-right:1px solid var(--border)}.chaptergrid .listitem:last-child,.chaptergrid .listitem:nth-last-child(2):nth-child(odd){border-bottom:none}.chaptergrid .listitem:last-child:nth-child(odd){border-right:none}.unitlist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-2)}}.readtoc{display:none}@media(min-width:1280px){.main--reading{max-width:calc(var(--reading-max) + var(--toc-w) + var(--sp-7))}.readlayout{display:grid;grid-template-columns:minmax(0,1fr) var(--toc-w);gap:var(--sp-7);align-items:start}.readlayout .prose>:is(h1,h2,h3)[id]{scroll-margin-top:calc(var(--sat) + var(--topbar-h) + var(--sp-4))}.readtoc{display:block;position:sticky;top:calc(var(--sat) + var(--topbar-h) + var(--sp-5));max-height:calc(100dvh - var(--topbar-h) - var(--sp-8));overflow:auto;overscroll-behavior:contain}.readtoc__title{margin-bottom:var(--sp-2);padding-left:var(--sp-3);font-size:var(--fs-2xs);font-weight:700;letter-spacing:.08em;color:var(--text-3)}.readtoc__list{display:flex;flex-direction:column}.readtoc__item{display:block;width:100%;min-height:40px;padding:7px var(--sp-3);border-left:2px solid var(--border);background:none;color:var(--text-2);text-align:left;font-size:var(--fs-sm);line-height:1.5;transition:color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.readtoc__item--current{border-left-color:var(--primary);color:var(--primary);font-weight:600}.readtoc__item--sub{min-height:34px;padding-left:var(--sp-6);font-size:var(--fs-xs)}.readtoc__item--here{border-left-color:var(--primary);color:var(--text);font-weight:600}}.kbdhint{display:none}@media(min-width:760px){.bottombar{position:static;margin-top:var(--sp-6);padding:var(--sp-4) 0 0;border-top:1px solid var(--border);border-radius:0;background:none;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none}.main--bottombar{padding-bottom:calc(var(--sp-8) + var(--sab))}.answer-input:not(.aichat__input){min-height:200px}.kbdhint{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-3);font-size:var(--fs-xs);color:var(--text-2)}}kbd{display:inline-grid;place-items:center;min-width:21px;height:21px;padding:0 5px;border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:var(--r-xs);background:var(--surface-2);color:var(--text-2);font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:600}@media(min-width:900px){.drawer{inset:0 0 0 auto;width:min(440px,40vw);max-height:none;border-radius:0;animation:slide-in-right .26s cubic-bezier(.32,.72,0,1)}@keyframes slide-in-right{0%{transform:translate(100%)}}.drawer__handle{display:none}.drawer__head{padding-top:calc(var(--sp-3) + var(--sat))}.drawer--modal{inset:50% auto auto 50%;width:min(90vw,1040px);height:90dvh;transform:translate(-50%,-50%);border-radius:var(--r-lg);animation:modal-in var(--dur) var(--ease-out)}@keyframes modal-in{0%{opacity:0;transform:translate(-50%,-48%) scale(.985)}}.drawer--modal .drawer__body--flush{display:flex;flex-direction:column}.drawer--modal .pageview{height:auto;flex:1;min-height:0}}.pin__card{display:contents}@media(min-width:760px){.pin{justify-content:center;padding-top:calc(var(--sat) + var(--sp-8))}.pin__card{display:flex;flex-direction:column;align-items:center;width:100%;max-width:400px;padding:var(--sp-7) var(--sp-6) var(--sp-6);border:1px solid var(--border);border-radius:var(--r-xl);background:var(--surface);box-shadow:var(--shadow-2)}.keypad{margin-top:var(--sp-6)}}.cardsbar{display:flex;align-items:center;gap:var(--sp-3);margin-top:var(--sp-3)}.segmented--lg .segmented__item{min-height:40px;padding:0 var(--sp-6);font-size:var(--fs-base)}.kindbar{display:flex;gap:var(--sp-2);margin-top:var(--sp-3);padding-bottom:2px;overflow-x:auto;scrollbar-width:none}.kindbar::-webkit-scrollbar{display:none}.kindbar__item{display:inline-flex;align-items:center;gap:var(--sp-1);flex:none;min-height:40px;padding:0 var(--sp-4);border:1px solid var(--border);border-radius:var(--r-pill);background:var(--surface);color:var(--text-2);font-size:var(--fs-sm);font-weight:600;white-space:nowrap;transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.kindbar__item--on{border-color:var(--primary);background:var(--primary-weak);color:var(--primary)}.kindbar__n{color:var(--text-3);font-size:var(--fs-xs);font-variant-numeric:tabular-nums}.kindbar__item--on .kindbar__n{color:inherit}.cardsearch{width:100%;min-height:var(--tap);margin-top:var(--sp-3);padding:0 var(--sp-4);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--text);font-size:var(--fs-md);transition:border-color var(--dur-fast) var(--ease-out)}.cardsearch:focus{outline:none;border-color:var(--primary)}.refcard__head{display:flex;align-items:baseline;gap:var(--sp-3);margin-bottom:var(--sp-2)}.refcard__title{flex:1;font-size:var(--fs-lg);font-weight:700;line-height:1.5;text-wrap:balance}.refcard__body{font-size:var(--fs-base)}.refcard__src{display:inline-block;margin-top:var(--sp-3);padding:var(--sp-2) 0;color:var(--primary);font-size:var(--fs-sm);font-weight:600;text-decoration:none}.recite__meta{display:flex;align-items:center;gap:var(--sp-2);min-height:40px;margin-top:var(--sp-4)}.recite__meta .purebtn{min-height:40px}.flipcard{display:flex;flex-direction:column;width:100%;min-height:46vh;padding:var(--sp-5);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1);color:inherit;text-align:left}.flipcard--ask{align-items:center;justify-content:center;gap:var(--sp-5);font:inherit;text-align:center;transition:background var(--dur-fast) var(--ease-out)}.flipcard--ask:active{background:var(--surface-2)}.flipcard__q{display:block;font-size:var(--fs-xl);font-weight:600;line-height:1.75;text-wrap:pretty}.flipcard__q--small{font-size:var(--fs-base);color:var(--text-2)}.flipcard__cue{display:block;font-size:var(--fs-sm);color:var(--text-3)}.flipcard__a{margin:var(--sp-3) 0 var(--sp-4);padding-top:var(--sp-4);border-top:1px solid var(--border)}.flipcard__a .prose{font-size:var(--fs-xl);line-height:1.75}.flipcard__full{padding-bottom:var(--sp-2)}.flipcard__full .prose{margin-top:var(--sp-2);font-size:var(--fs-base)}.flipcard__actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);margin-top:auto;padding-top:var(--sp-5)}.recitedone{margin-top:var(--sp-5);text-align:center}.recitedone__line{display:inline-block;font-size:var(--fs-xl);font-weight:700}.qixi{position:relative;overflow:hidden;margin:0 0 var(--sp-4);border-radius:var(--r-xl);background:linear-gradient(160deg,#1b2450,#2d3a6b 55%,#4a3f6e);box-shadow:var(--shadow-2);isolation:isolate}.qixi-sky{position:absolute;inset:0;z-index:0;pointer-events:none}.qixi-sky i{position:absolute;width:3px;height:3px;border-radius:50%;background:#fff;opacity:.45;animation:qixi-breathe 3.4s ease-in-out infinite;animation-delay:calc(var(--i) * -.38s)}.qixi-sky i:nth-child(1){top:12%;left:8%}.qixi-sky i:nth-child(2){top:22%;left:74%}.qixi-sky i:nth-child(3){top:35%;left:26%}.qixi-sky i:nth-child(4){top:48%;left:90%}.qixi-sky i:nth-child(5){top:58%;left:14%}.qixi-sky i:nth-child(6){top:66%;left:52%}.qixi-sky i:nth-child(7){top:74%;left:82%}.qixi-sky i:nth-child(8){top:84%;left:34%}.qixi-sky i:nth-child(9){top:90%;left:64%}@keyframes qixi-breathe{0%,to{opacity:.25;transform:scale(1)}50%{opacity:.9;transform:scale(1.6)}}.qixi-body{position:relative;z-index:1;padding:var(--sp-6) var(--sp-5) var(--sp-5);text-align:center;color:#f4f6ff}.qixi-eyebrow{margin:0 0 var(--sp-3);font-size:.8rem;letter-spacing:.32em;text-indent:.32em;color:#b9c4f0}.qixi-days{margin:0 0 var(--sp-4);font-size:1.05rem;color:#dfe5ff}.qixi-days strong{font-size:1.6rem;font-weight:600;color:#fff;padding:0 .12em}.qixi-msg{margin:0 auto var(--sp-5);max-width:30em;font-size:1rem;line-height:1.9;color:#fff;white-space:pre-line}.qixi-ok{min-height:40px;padding:0 var(--sp-6);border:1px solid rgba(255,255,255,.42);border-radius:999px;background:#ffffff1a;color:#fff;font-size:.95rem;cursor:pointer}.qixi-ok:active{background:#fff3}@media(prefers-reduced-motion:reduce){.qixi-sky i{animation:none;opacity:.5}}
