:root{--bg:#f3f6fb;--surface:#fff;--surface-2:#f7f9fc;--ink:#142033;--muted:#64748b;--line:#dbe3ee;--accent:#2563eb;--accent-soft:#e8f0ff;--accent-ink:#1748a5;--good:#16855b;--good-soft:#e8f8f0;--bad:#d14343;--bad-soft:#fff0f0;--warn:#a96908;--radius:12px;--radius-lg:12px;--shadow:0 8px 24px rgba(30,55,90,.10);--sidebar:248px;--dur-fast:110ms;--dur-med:200ms;--ease-out:cubic-bezier(.22,1,.36,1);--font:system-ui,-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Segoe UI",Roboto,sans-serif;--fs-xs:12px;--fs-sm:13px;--fs-md:15px;--fs-lg:17px;--fs-xl:20px;--fs-2xl:26px;/* 层级: Page Title=--fs-2xl / Section=--fs-xl / Stem=--fs-lg / Body=--fs-md / Meta=--fs-sm / Caption=--fs-xs */color-scheme:light;
/* 别名变量：部分组件（社区预检、冲突面板等）引用了这些名字，缺失会导致边框和状态色失效 */
--danger:var(--bad);--success:var(--good);--primary:var(--accent);--surface-soft:var(--surface-2);--surface-muted:var(--surface-2);--radius-small:calc(var(--radius) - 4px);--shadow-soft:var(--shadow)}
html[data-theme="paper"]{--bg:#faf6f0;--surface:#fffdf9;--surface-2:#f5ede2;--ink:#4d392b;--muted:#846f5e;--line:#e4d5c3;--accent:#9a5b32;--accent-soft:#f3e3d4;--accent-ink:#75401f;--good:#557a55;--good-soft:#edf4e9;--bad:#ad5146;--bad-soft:#fae9e5;--warn:#9a681d;--radius:10px;--radius-lg:14px;--shadow:0 8px 24px rgba(91,62,37,.10)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:var(--fs-md);line-height:1.65}button,input,select,textarea{font:inherit;color:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}img{max-width:100%}[hidden]{display:none!important}:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 45%,transparent);outline-offset:3px}.skip-link{position:fixed;left:12px;top:-60px;z-index:1000;background:var(--accent);color:#fff;padding:10px 15px;border-radius:8px}.skip-link:focus{top:12px}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}
/* 横向溢出兜底：支持 clip 的浏览器用 clip（不创建滚动容器、不破坏 sticky 头部），老浏览器退回 hidden */
html,body{overflow-x:clip}
@supports not (overflow-x:clip){html,body{overflow-x:hidden}}
.app-frame{min-height:100vh;display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;border-right:1px solid var(--line);background:var(--surface);padding:24px 18px;display:flex;flex-direction:column;z-index:20}.brand{display:flex;align-items:center;gap:12px;margin:0 6px 26px}.brand-mark{width:37px;height:37px;display:grid;place-items:center}.brand strong{display:block;font-size:17px;line-height:1.2}.brand small{display:block;color:var(--muted);font-size:9px;letter-spacing:.18em;margin-top:3px}.bank-switch{display:grid;grid-template-columns:1fr 1fr;background:var(--surface-2);border:1px solid var(--line);padding:3px;border-radius:8px;margin-bottom:22px}.bank-switch button{border:0;background:transparent;color:var(--muted);padding:8px 5px;border-radius:6px;font-size:13px;font-weight:600}.bank-switch button.active{background:var(--surface);color:var(--accent)}.side-nav{display:grid;gap:4px}.side-nav a,.side-nav button{width:100%;border:0;background:transparent;display:flex;align-items:center;gap:12px;padding:10px 12px;color:var(--muted);border-radius:8px;text-align:left}.side-nav a:hover,.side-nav button:hover,.side-nav a.active{background:var(--accent-soft);color:var(--accent-ink)}.side-nav b{margin-left:auto;background:var(--bad-soft);color:var(--bad);font-size:11px;padding:0 7px;border-radius:999px}.sidebar-foot{margin-top:auto;border-top:1px solid var(--line);padding-top:18px}.theme-field{display:grid;gap:5px;color:var(--muted);font-size:12px}.theme-field select{width:100%;border:1px solid var(--line);background:var(--surface);padding:8px;border-radius:8px}.utility-links{display:flex;justify-content:space-between;margin-top:15px;color:var(--muted);font-size:12px}.main-column{min-width:0}.mobile-header,.mobile-nav{display:none}#appMain{max-width:1440px;margin:auto;padding:34px clamp(24px,4vw,64px) 80px}.initial-loader{min-height:65vh;display:grid;place-items:center;align-content:center;color:var(--muted)}.initial-loader span{width:32px;height:32px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:27px}.eyebrow{display:block;color:var(--accent);font-size:11px;font-weight:600}.page-head h1{font-size:clamp(29px,3vw,46px);line-height:1.08;letter-spacing:-.04em;margin:6px 0}.page-head p{margin:0;color:var(--muted)}.head-actions{display:flex;gap:10px;flex-wrap:wrap}.button{border:1px solid var(--line);background:var(--surface);padding:10px 16px;border-radius:8px;font-weight:650;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;transition:transform var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.button:active:not(:disabled){transform:scale(.97)}.button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.button.secondary:hover{border-color:var(--accent);color:var(--accent)}.button.danger{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 35%,var(--line))}.button.small{min-height:34px;padding:6px 11px;font-size:12px}.icon-button{border:1px solid var(--line);background:var(--surface);width:40px;height:40px;border-radius:8px;display:grid;place-items:center;transition:transform var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.icon-button:active:not(:disabled){transform:scale(.97)}.button.ghost,.icon-button.ghost{background:none;border-color:transparent;color:var(--muted)}@media(hover:hover){.button.ghost:hover,.icon-button.ghost:hover{background:var(--surface-2);color:var(--ink)}}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(280px,.8fr);gap:18px}.hero-card{padding:clamp(24px,4vw,44px);min-height:270px;position:relative;overflow:hidden}.hero-card:after{content:attr(data-total);position:absolute;right:-8px;bottom:-62px;font-size:clamp(120px,16vw,230px);font-weight:800;line-height:1;color:var(--accent-soft);letter-spacing:-.08em;pointer-events:none}.hero-card>*{position:relative;z-index:1}.hero-card h2{font-size:clamp(25px,3vw,28px);line-height:1.15;max-width:650px;margin:10px 0 12px}.hero-card p{color:var(--muted);max-width:620px}.hero-actions{display:flex;gap:10px;margin-top:28px;flex-wrap:wrap}.progress-card{padding:26px;display:flex;flex-direction:column}.ring{--progress:0;width:132px;height:132px;border-radius:50%;margin:12px auto 18px;background:conic-gradient(var(--accent) calc(var(--progress)*1%),var(--line) 0);display:grid;place-items:center}.ring:after{content:"";width:102px;height:102px;background:var(--surface);border-radius:50%;position:absolute}.ring strong,.ring small{position:relative;z-index:1}.ring strong{font-size:28px}.ring small{display:block;color:var(--muted);font-size:11px}.ring-inner{text-align:center;z-index:2}.mini-stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);margin-top:auto;padding-top:18px;text-align:center}.mini-stats strong{display:block;font-size:18px;font-variant-numeric:tabular-nums}.mini-stats span{color:var(--muted);font-size:11px}.section-head{display:flex;justify-content:space-between;align-items:end;margin:36px 0 14px}.section-head h2{margin:0;font-size:21px}.section-head p{margin:3px 0 0;color:var(--muted);font-size:13px}.subject-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.subject-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;text-align:left;min-height:155px;position:relative;transition:transform var(--dur-fast),border-color var(--dur-fast)}.subject-card:hover{transform:translateY(-2px);border-color:var(--accent)}.subject-card .subject-index{font-size:11px;color:var(--accent);font-variant-numeric:tabular-nums}.subject-card h3{font-size:19px;margin:20px 0 5px}.subject-card p{color:var(--muted);margin:0;font-size:13px}.subject-card .card-arrow{position:absolute;right:17px;top:17px}.subject-card .subject-progress{height:3px;background:var(--line);margin-top:18px}.subject-card .subject-progress i{height:100%;display:block;background:var(--accent)}.aggregate-card{grid-column:span 2}.aggregate-members{display:flex;gap:7px;margin-top:12px;flex-wrap:wrap}.aggregate-members span{font-size:11px;color:var(--muted)}
.list-layout{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:18px}.question-list{display:grid;gap:10px}.list-card{padding:18px 20px;display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:15px;align-items:start}.list-number{font-size:24px;font-weight:300;color:var(--accent);font-variant-numeric:tabular-nums}.list-card h3{margin:0 0 6px;font-size:16px;line-height:1.5}.list-card p{margin:0;color:var(--muted);font-size:12px}.list-card .tags{margin-top:10px}.list-actions{display:flex;gap:6px}.empty-state{padding:70px 25px;text-align:center}.empty-state strong{display:block;font-size:21px;margin-bottom:7px}.empty-state p{color:var(--muted);margin:0 0 22px}.filter-panel{padding:20px;height:max-content;position:sticky;top:25px}.filter-panel h3{margin:0 0 12px}.filter-panel .button{width:100%;margin-top:10px}.count-block{padding:16px 0;border-bottom:1px solid var(--line)}.count-block strong{font-size:32px;display:block;font-variant-numeric:tabular-nums}.count-block span{color:var(--muted);font-size:12px}
.practice-shell{max-width:1280px;margin:auto}.practice-top{position:sticky;top:10px;background:var(--surface);z-index:10;padding:8px 14px;border:1px solid var(--line);border-radius:12px;margin-bottom:16px}.practice-topline{display:flex;align-items:center;gap:15px}.practice-topline .progress-track{flex:0 1 260px}.practice-topline .topline-spacer{flex:1}.practice-topline strong{white-space:nowrap;font-variant-numeric:tabular-nums}.progress-track{height:5px;background:var(--line);flex:1;overflow:hidden}.progress-track i{display:block;height:100%;background:var(--accent);transition:width var(--dur-med) var(--ease-out)}.practice-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px}.question-card{padding:clamp(22px,4vw,44px)}.question-meta{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap;margin-bottom:22px;font-size:var(--fs-sm);color:var(--muted)}.qmeta-type{color:var(--ink);font-weight:600}.qmeta-flags{font-size:var(--fs-xs)}.qmeta-sep{margin:0 2px;color:var(--line);font-style:normal}.difficulty-live b{color:var(--warn);font-weight:600}.question-topic-tags button{border:0;background:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer}.question-topic-tags button:hover{text-decoration:underline}.tag{border:1px solid var(--line);background:var(--surface-2);color:var(--muted);padding:3px 8px;border-radius:999px;font-size:11px}.case-box{border-left:3px solid var(--accent);background:var(--accent-soft);padding:16px 18px;margin-bottom:22px;color:var(--accent-ink)}.question-card h1{font-size:clamp(20px,2.2vw,29px);line-height:1.7;margin:0 0 26px;letter-spacing:-.015em}.option-list{display:grid;gap:10px}.option{width:100%;display:grid;grid-template-columns:40px 1fr;gap:12px;align-items:start;text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);padding:14px 16px;font-size:16px;line-height:1.7;min-height:48px}.option:hover:not(:disabled){border-color:var(--accent)}.option-letter{width:30px;height:30px;border:1px solid var(--line);display:grid;place-items:center;border-radius:50%;font-weight:700}.option.selected{border-color:var(--accent);background:var(--accent-soft)}.option.selected .option-letter{background:var(--accent);border-color:var(--accent);color:#fff}.option.correct{border-color:var(--good);background:var(--good-soft)}.option.correct .option-letter{background:var(--good);border-color:var(--good);color:#fff}.option.wrong{border-color:var(--bad);background:var(--bad-soft)}.option.wrong .option-letter{background:var(--bad);border-color:var(--bad);color:#fff}.option.eliminated{opacity:.45;text-decoration:line-through}.option.eliminated .option-letter{text-decoration:line-through}.option-row{position:relative}.option-eliminate{position:absolute;right:8px;top:14px;border:none;background:none;color:var(--muted);width:32px;height:32px;border-radius:6px;opacity:0;pointer-events:none}@media(hover:hover){.option-row:hover .option-eliminate{opacity:1;pointer-events:auto}}@media(hover:none){.option-eliminate{opacity:.6;pointer-events:auto}}.option-eliminate:focus-visible{opacity:1;pointer-events:auto}.option:disabled+.option-eliminate{display:none}.answer-feedback{margin-top:22px;padding:20px;border-top:1px solid var(--line)}.answer-feedback h3{margin:0 0 8px}.knowledge-tag{display:inline-block;margin-top:12px;color:var(--muted);font-size:12px}.question-actions{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:26px}.question-actions .right{display:flex;gap:8px}.answer-sheet{padding:20px;height:max-content;position:sticky;top:80px}.answer-sheet header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:13px;margin-bottom:14px}.answer-sheet h2{font-size:var(--fs-md);margin:0}.answer-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.answer-number{aspect-ratio:1;border:1px solid var(--line);background:var(--surface);border-radius:6px;font-size:12px;font-variant-numeric:tabular-nums}.answer-number.current{border-color:var(--accent);color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.answer-number.done{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink)}.answer-number.correct{background:var(--good-soft);border-color:var(--good);color:var(--good)}.answer-number.wrong{background:var(--bad-soft);border-color:var(--bad);color:var(--bad)}.sheet-legend{display:flex;gap:12px;color:var(--muted);font-size:10px;margin-top:14px}.sheet-legend i{display:inline-block;width:8px;height:8px;margin-right:4px}.mobile-sheet-toggle{display:none}
.summary-hero{padding:36px;display:grid;grid-template-columns:180px minmax(0,1fr);gap:35px;align-items:center}.score-number{font-size:70px;line-height:1;font-weight:700;color:var(--accent);letter-spacing:-.06em}.score-number small{font-size:16px;color:var(--muted);letter-spacing:0}.summary-hero h1{margin:0 0 7px}.summary-hero p{color:var(--muted)}.summary-metrics{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);padding-top:17px}.summary-metrics strong{display:block;font-size:22px}.summary-metrics span{font-size:11px;color:var(--muted)}.chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:18px}.chart-panel{padding:24px}.chart-panel h2{font-size:var(--fs-lg);margin:0 0 18px}.bar-list{display:grid;gap:14px}.bar-row{display:grid;grid-template-columns:90px 1fr 45px;align-items:center;gap:10px;font-size:12px}.bar-track{height:8px;background:var(--line)}.bar-track i{display:block;height:100%;background:var(--accent)}.trend-svg{width:100%;height:180px;overflow:visible}.trend-svg path{stroke:var(--accent);stroke-width:3;fill:none}.trend-svg circle{fill:var(--surface);stroke:var(--accent);stroke-width:3}.trend-labels{display:flex;justify-content:space-between;color:var(--muted);font-size:10px}
.config-dialog{width:min(720px,calc(100vw - 24px));max-height:min(88vh,860px);padding:0;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);color:var(--ink);box-shadow:0 30px 80px rgba(0,0,0,.22)}.config-dialog::backdrop{background:rgba(12,18,28,.55);backdrop-filter:blur(3px)}.config-dialog form{display:flex;flex-direction:column;max-height:inherit}.config-dialog header,.config-dialog footer{padding:20px 24px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.config-dialog footer{border:0;border-top:1px solid var(--line);justify-content:flex-end}.config-dialog h2{margin:0;font-size:24px}.dialog-scroll{overflow:auto;padding:5px 24px}.config-dialog fieldset{border:0;border-bottom:1px solid var(--line);padding:20px 0;margin:0}.config-dialog legend{font-weight:700;margin-bottom:10px}.config-dialog legend small{font-weight:400;color:var(--muted)}.segmented,.check-row{display:flex;gap:7px;flex-wrap:wrap}.segmented input,.check-row input,.check-grid input{position:absolute;opacity:0}.segmented span,.check-row span,.check-grid span{display:block;border:1px solid var(--line);background:var(--surface);padding:7px 13px;border-radius:8px}.segmented input:checked+span,.check-row input:checked+span,.check-grid input:checked+span{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}.check-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.compact-input{width:120px;margin-top:10px}.text-input{border:1px solid var(--line);background:var(--surface);padding:10px 12px;border-radius:8px}.switch-list{display:grid;gap:8px}.switch-list label{display:flex;justify-content:space-between;align-items:center;background:var(--surface-2);padding:12px;border-radius:8px}.switch-list strong,.switch-list small{display:block}.switch-list small{color:var(--muted)}.switch-list input{width:40px;height:22px;accent-color:var(--accent)}.toast{position:fixed;right:24px;bottom:24px;background:var(--ink);color:var(--surface);padding:12px 17px;border-radius:8px;z-index:100;opacity:0;transform:translateY(15px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}
.form-panel{padding:clamp(22px,4vw,38px)}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.field{display:grid;gap:6px}.field span{font-size:12px;font-weight:700}.field.full{grid-column:1/-1}.file-drop{border:1px dashed var(--accent);background:var(--accent-soft);padding:30px;text-align:center;border-radius:var(--radius);cursor:pointer}.file-drop input{display:block;margin:12px auto}.message{padding:12px 14px;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;margin-top:15px}.message.success{background:var(--good-soft);color:var(--good);border-color:var(--good)}.message.error{background:var(--bad-soft);color:var(--bad);border-color:var(--bad)}
.site-shell{max-width:1180px;margin:auto;padding:30px 24px 70px}.site-topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.site-topbar nav{display:flex;gap:16px;color:var(--muted)}.login-panel{max-width:480px;margin:10vh auto;padding:35px}.login-panel h1{margin-top:0}.admin-tabs{display:flex;gap:8px;margin-bottom:18px}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;min-width:780px}.data-table th,.data-table td{text-align:left;padding:12px;border-bottom:1px solid var(--line);vertical-align:top}.data-table th{font-size:11px;color:var(--muted)}.data-table .question-col{min-width:320px}.toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-bottom:18px}.toolbar .field{min-width:150px}.tutorial-list{display:grid;gap:18px}.tutorial-step{padding:24px}.tutorial-step h2{margin-top:0}.tutorial-step img{display:block;border:1px solid var(--line);border-radius:var(--radius);margin-top:15px}
@media(max-width:1050px){.subject-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.practice-grid{grid-template-columns:minmax(0,1fr) 250px}.hero-grid{grid-template-columns:1fr}.progress-card{display:grid;grid-template-columns:170px 1fr;align-items:center}.mini-stats{margin:0;border:0;border-left:1px solid var(--line);padding:0 0 0 18px}.list-layout{grid-template-columns:1fr}.filter-panel{position:static;display:flex;align-items:center;gap:20px}.filter-panel .button{width:auto;margin:0 0 0 auto}}
@media(max-width:760px){body{font-size:14px}.app-frame{display:block}.sidebar{display:none}.mobile-header{position:sticky;top:0;z-index:30;height:62px;background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:9px 14px}.brand.compact{margin:0;gap:8px;min-width:0}.brand.compact .brand-mark{width:32px;height:32px}.bank-switch.compact{margin:0;width:auto}.bank-switch.compact button{padding:8px 6px;font-size:12px}.mobile-nav{position:fixed;z-index:40;bottom:0;left:0;right:0;height:calc(62px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr)}.mobile-nav a,.mobile-nav button{border:0;background:transparent;color:var(--muted);display:grid;place-items:center;align-content:center;gap:2px;font-size:10px}.mobile-nav a.active{color:var(--accent)}.mobile-nav svg{width:19px;height:19px}#appMain{padding:22px 14px 100px}.page-head{align-items:flex-start;display:block}.page-head h1{font-size:29px}.head-actions{margin-top:16px}.head-actions .button{flex:1}.hero-card{min-height:310px;padding:25px}.hero-card:after{font-size:150px;bottom:-35px}.progress-card{display:block}.mini-stats{border-left:0;border-top:1px solid var(--line);padding-top:17px}.subject-grid{grid-template-columns:1fr}.aggregate-card{grid-column:auto}.section-head{margin-top:28px}.list-card{grid-template-columns:38px 1fr}.list-actions{grid-column:2;justify-content:flex-start}.filter-panel{display:block;order:-1}.filter-panel .button{width:100%;margin-top:12px}.practice-top{top:70px}.practice-grid{display:block}.question-card{padding:20px 16px;padding-bottom:86px}.question-card h1{font-size:19px;line-height:1.65}.option{padding:12px 11px;grid-template-columns:34px 1fr;font-size:15.5px;line-height:1.65}.question-actions{position:fixed;left:0;right:0;bottom:calc(62px + env(safe-area-inset-bottom));z-index:25;background:var(--surface);border-top:1px solid var(--line);padding:9px 12px;margin:0}.question-actions .right{margin-left:auto}.answer-sheet{display:none;position:fixed;left:10px;right:10px;bottom:calc(72px + env(safe-area-inset-bottom));z-index:50;max-height:55vh;overflow:auto;box-shadow:0 18px 50px rgba(0,0,0,.25)}.answer-sheet.open{display:block}.mobile-sheet-toggle{display:inline-flex}.summary-hero{padding:25px;display:block}.score-number{font-size:58px;margin-bottom:18px}.chart-grid{grid-template-columns:1fr}.summary-metrics{gap:8px}.check-grid{grid-template-columns:repeat(2,1fr)}.config-dialog{margin:auto 0 0;max-width:none;width:100%;border-radius:12px 12px 0 0;border-bottom:none;max-height:82vh}.config-dialog header,.config-dialog footer{padding:15px}.dialog-scroll{padding:0 15px}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.toast{left:14px;right:14px;bottom:85px;text-align:center}.site-shell{padding:18px 14px 80px}.site-topbar{align-items:flex-start}.site-topbar nav{display:grid;text-align:right}.login-panel{margin:8vh 14px}.toolbar{display:grid;grid-template-columns:1fr 1fr}.toolbar .field{min-width:0}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* Contribution inspection workstation */
.upload-intake{padding:24px;margin-bottom:14px}.upload-file-field input{padding:8px}.upload-intake-actions{border-top:1px solid var(--line);padding-top:16px;display:flex;align-items:center;justify-content:space-between;gap:18px}.upload-intake-actions strong,.upload-intake-actions small{display:block}.upload-intake-actions small{color:var(--muted);font-size:12px;margin-top:3px}.upload-summary{display:grid;grid-template-columns:repeat(3,minmax(130px,180px)) 1fr;gap:10px;margin:14px 0}.upload-metric{border:1px solid var(--line);background:var(--surface);padding:12px 15px;text-align:left;display:flex;align-items:baseline;gap:9px}.upload-metric strong{font-size:27px;font-weight:700;font-variant-numeric:tabular-nums}.upload-metric span{font-size:12px;color:var(--muted)}.upload-metric.active{border-color:var(--accent);box-shadow:inset 0 -3px var(--accent)}.upload-metric.valid strong{color:var(--good)}.upload-metric.invalid strong{color:var(--bad)}.upload-summary>.button{justify-self:end;align-self:stretch}.upload-batch{padding:12px 14px;margin-bottom:14px;display:flex;align-items:center;justify-content:space-between;gap:14px}.upload-batch>div{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12px}.upload-batch form{display:flex;align-items:center;gap:7px}.upload-batch form .text-input{min-width:130px;padding:7px 10px}.upload-workbench{display:grid;grid-template-columns:minmax(330px,420px) minmax(0,1fr);gap:14px;align-items:start}.upload-queue,.upload-editor{min-width:0}.upload-queue>header,.upload-editor-form>header{padding:16px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}.upload-queue h2,.upload-editor-form h2{font-size:16px;margin:2px 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-row-list{max-height:720px;overflow:auto}.upload-row{position:relative;display:grid;grid-template-columns:20px 42px minmax(0,1fr) auto;gap:9px;align-items:start;padding:13px 14px;border-bottom:1px solid var(--line);cursor:pointer;background:var(--surface)}.upload-row:last-child{border-bottom:0}.upload-row:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--good)}.upload-row.invalid:before{background:var(--bad)}.upload-row:hover{background:var(--surface-2)}.upload-row.active{background:var(--accent-soft)}.upload-row input{margin-top:5px;accent-color:var(--accent)}.upload-row-number{color:var(--accent);font-size:12px;font-variant-numeric:tabular-nums;padding-top:2px}.upload-row strong{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:13px;line-height:1.45}.upload-row small{display:block;color:var(--muted);margin-top:4px}.upload-row p{margin:4px 0 0;color:var(--good);font-size:11px}.upload-row.invalid p{color:var(--bad)}.upload-status{white-space:nowrap;border:1px solid var(--line);padding:3px 7px;font-size:10px;font-weight:700}.upload-status.valid{color:var(--good);border-color:color-mix(in srgb,var(--good) 38%,var(--line));background:var(--good-soft)}.upload-status.invalid{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 38%,var(--line));background:var(--bad-soft)}.upload-editor{position:sticky;top:18px;max-height:calc(100vh - 36px);overflow:auto}.upload-editor-form{padding-bottom:18px}.upload-editor-form>.message{margin:14px 18px 0}.upload-editor-form>.form-grid{padding:18px}.upload-editor-form textarea{resize:vertical;line-height:1.55}.upload-editor-form footer{border-top:1px solid var(--line);padding:14px 18px;display:flex;justify-content:flex-end}.upload-empty{padding:46px 20px;text-align:center;color:var(--muted)}.upload-empty strong{display:block;color:var(--ink);font-size:18px}.upload-empty p{margin:5px 0}.editor-empty{min-height:420px;display:grid;place-items:center;align-content:center}
@media(max-width:1050px){.upload-summary{grid-template-columns:repeat(3,1fr)}.upload-summary>.button{grid-column:1/-1;justify-self:stretch}.upload-workbench{grid-template-columns:1fr}.upload-editor{position:static;max-height:none}.upload-row-list{max-height:480px}}
@media(max-width:760px){.upload-intake{padding:16px}.upload-intake-actions{display:grid}.upload-intake-actions .button{width:100%}.upload-summary{grid-template-columns:repeat(3,1fr)}.upload-metric{display:grid;gap:0;padding:9px}.upload-metric strong{font-size:22px}.upload-batch{display:grid}.upload-batch>div{flex-wrap:wrap}.upload-batch form{display:grid;grid-template-columns:1fr 1fr}.upload-batch form .button{grid-column:1/-1}.upload-workbench{display:block}.upload-queue{margin-bottom:12px}.upload-row{grid-template-columns:20px 34px minmax(0,1fr)}.upload-row .upload-status{grid-column:3;width:max-content}.upload-editor-form>.form-grid{padding:14px}.upload-editor-form>header{align-items:flex-start}}

/* Role-aware administration command desk */
.admin-body{background:linear-gradient(90deg,color-mix(in srgb,var(--line) 22%,transparent) 1px,transparent 1px),var(--bg);background-size:48px 48px}.admin-shell{max-width:1480px}.admin-topbar{border-bottom:1px solid var(--line);padding-bottom:18px}.admin-command-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin:32px 0 18px}.admin-command-head h1{font-size:clamp(34px,4vw,58px);letter-spacing:-.055em;line-height:1;margin:8px 0 12px}.admin-command-head p{margin:0;color:var(--muted)}.admin-identity{min-width:220px;border-left:3px solid var(--accent);padding:5px 0 5px 16px;display:grid;justify-items:start}.admin-identity strong{font-size:18px;margin-top:7px}.admin-identity small{color:var(--muted)}.permission-strip{display:flex;align-items:center;gap:14px;border:1px solid var(--line);border-left:4px solid var(--accent);background:var(--surface);padding:12px 16px;margin-bottom:16px}.permission-strip strong{white-space:nowrap;color:var(--accent)}.permission-strip span{color:var(--muted);font-size:13px}.admin-tabs{gap:0;border-bottom:1px solid var(--line);align-items:end}.admin-tab{border:0;border-bottom:3px solid transparent;background:transparent;color:var(--muted);padding:13px 18px;font-weight:700}.admin-tab:hover{color:var(--ink)}.admin-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.admin-theme{margin-left:auto;display:flex;align-items:center;gap:8px;padding-bottom:8px}.admin-theme select{width:auto;min-width:110px}.admin-panel{border-top:0;border-radius:0;box-shadow:none}.section-caption{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:18px}.section-caption div{display:flex;align-items:baseline;gap:12px}.section-caption div span{color:var(--accent);font-variant-numeric:tabular-nums;font-size:12px}.section-caption div strong{font-size:22px}.section-caption p{margin:0;color:var(--muted);font-size:12px}.toolbar .grow{flex:1;min-width:260px}.data-table tbody tr:hover{background:color-mix(in srgb,var(--accent-soft) 40%,transparent)}.data-table small{color:var(--muted)}.table-empty{text-align:center!important;color:var(--muted);padding:45px!important}.role-badge,.status-badge{display:inline-flex;align-items:center;min-height:25px;border:1px solid var(--line);padding:2px 9px;border-radius:999px;font-size:11px;font-weight:750;white-space:nowrap}.role-superadmin{background:#131b2a;color:#fff;border-color:#131b2a}.role-moderator{background:var(--accent-soft);color:var(--accent-ink);border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}.role-user{background:var(--surface-2);color:var(--muted)}.status-pending{background:#fff8e7;color:var(--warn);border-color:#e8ca83}.status-approved{background:var(--good-soft);color:var(--good);border-color:color-mix(in srgb,var(--good) 45%,var(--line))}.status-rejected{background:var(--bad-soft);color:var(--bad);border-color:color-mix(in srgb,var(--bad) 45%,var(--line))}.row-actions{display:flex;flex-wrap:wrap;gap:6px}.account-actions{min-width:250px}.protected-label{display:inline-block;border-left:3px solid var(--ink);padding-left:9px;color:var(--muted);font-size:12px}.danger-solid{background:var(--bad)!important;color:#fff!important;border-color:var(--bad)!important}.admin-login-body{background:linear-gradient(90deg,color-mix(in srgb,var(--line) 30%,transparent) 1px,transparent 1px),linear-gradient(color-mix(in srgb,var(--line) 30%,transparent) 1px,transparent 1px),var(--bg);background-size:44px 44px}.admin-login-panel{border-top:5px solid var(--accent);box-shadow:var(--shadow)}.admin-login-panel h1{font-size:36px;letter-spacing:-.04em;margin:8px 0}.admin-login-panel p{color:var(--muted);margin-bottom:26px}.admin-login-form{display:grid;gap:16px}.admin-login-form .button{margin-top:5px}.admin-login-form .text-input{min-height:48px}
@media(max-width:760px){.admin-command-head{display:block}.admin-identity{margin-top:22px}.permission-strip{align-items:flex-start}.admin-tabs{overflow:auto}.admin-tab{white-space:nowrap;padding-inline:13px}.admin-theme{display:none}.section-caption{align-items:flex-start}.section-caption p{max-width:45%;text-align:right}.admin-panel{padding:18px 14px}.account-actions{min-width:210px}}

/* Structured textbook explanation */
.answer-feedback{padding:22px 0 0}.answer-feedback>h3{padding:0 2px 15px;margin-bottom:0;border-bottom:1px solid var(--line)}.structured-explanation{display:grid;gap:0}.explanation-summary{display:flex;align-items:stretch;gap:0;border-bottom:1px solid var(--line);background:var(--surface-2)}.explanation-summary>div{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:12px;padding:13px 16px;border-right:1px solid var(--line)}.explanation-summary span{color:var(--muted);font-size:11px;font-weight:700}.explanation-summary strong{color:var(--ink);font-size:14px}.explanation-summary>div:first-child strong{font-size:23px;color:var(--accent);font-variant-numeric:tabular-nums}.explanation-knowledge{flex:1}.explanation-section{display:block;padding:16px 0;border-bottom:1px solid var(--line)}.explanation-section:last-child{border-bottom:0}.explanation-section-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.explanation-section-header::before{content:'';flex:none;width:3px;height:12px;border-radius:1px;background:var(--accent)}.explanation-section-header h4{margin:0;font-size:15px;font-weight:600;color:var(--ink)}.explanation-copy{padding:0;max-width:78ch;border-left:0;background:none}.explanation-copy p,.citation-detail p{margin:0 0 11px;line-height:1.85;text-align:left}.explanation-copy p:last-child,.citation-detail p:last-child{margin-bottom:0}.explanation-copy mark{background:transparent;color:var(--accent-ink);padding:0;font-weight:600}.explanation-bullet{display:grid;grid-template-columns:10px 1fr;gap:8px;align-items:start;margin:8px 0}.explanation-bullet i{width:5px;height:5px;background:var(--accent);margin-top:10px}.explanation-bullet p{margin:0}.explanation-empty{color:var(--muted)}.textbook-citation{display:block;margin:0;padding:10px 14px;border-left:2px solid color-mix(in srgb,var(--accent) 30%,var(--line));background:none}.citation-folio{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 5px;padding:0;color:var(--muted);font-size:13px}.citation-folio span{font-size:12px}.citation-folio strong{font-size:13px;font-weight:600;line-height:1.4;font-variant-numeric:tabular-nums}.citation-folio small{font-size:12px}.citation-detail{padding:0;min-width:0}.citation-detail>span{display:block;color:var(--muted);font-size:11px;font-weight:700;margin-bottom:4px}.citation-detail>strong{display:block;margin-bottom:6px;font-size:13px;color:var(--muted)}.citation-detail .explanation-bullet{display:none}.citation-detail>div{color:var(--muted);font-size:12px}.citation-detail>div p{line-height:1.6}
.explanation-tags{flex:1}.explanation-tags button{border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));background:var(--surface);color:var(--accent-ink);padding:4px 9px;font:inherit;font-size:11px;cursor:pointer}.explanation-tags button:hover{background:var(--accent-soft);border-color:var(--accent)}.explanation-table-wrap{max-width:100%;overflow:auto;border:1px solid var(--line)}.explanation-table{width:100%;border-collapse:collapse;font-size:13px;line-height:1.65}.explanation-table th{background:var(--surface-2);color:var(--ink);text-align:left;font-size:11px;letter-spacing:.02em}.explanation-table th,.explanation-table td{padding:10px 12px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);vertical-align:top}.explanation-table tr:last-child td{border-bottom:0}.explanation-table th:last-child,.explanation-table td:last-child{border-right:0}.explanation-callout{border-left:2px solid var(--line);background:none;padding:10px 14px}.explanation-callout strong{display:block;color:var(--accent-ink);font-size:11px;margin-bottom:5px}.explanation-callout p{margin:0}.explanation-callout.tone-warning{border-left-color:var(--bad);background:color-mix(in srgb,var(--bad) 8%,var(--surface))}.textbook-source-section{padding:24px 0 4px;border-bottom:1px solid var(--line)}.textbook-source-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:14px}.textbook-source-heading span{display:block;color:var(--accent);font-size:9px;font-weight:600}.textbook-source-heading h4{margin:3px 0 0;font-size:17px}.textbook-source-heading>strong{color:var(--muted);font-size:11px}.textbook-sources{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.textbook-source-card{min-width:0;border:1px solid var(--source-color);background:var(--surface)}.textbook-source-card>header{display:grid;grid-template-columns:52px minmax(0,1fr);gap:11px;align-items:center;padding:12px 14px;background:var(--source-soft);border-bottom:1px solid color-mix(in srgb,var(--source-color) 28%,var(--line))}.source-book-icon{display:block;width:48px;height:48px}.source-book-icon svg{display:block;width:100%;height:100%}.textbook-source-card>header>div{min-width:0;display:grid;gap:2px}.textbook-source-card>header span{color:var(--source-color);font-size:9px;font-weight:600}.textbook-source-card>header strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.textbook-source-card>header small{color:var(--muted);font-size:10px}.source-evidence-list{display:grid}.source-evidence-row{display:grid;grid-template-columns:112px minmax(0,1fr);border-bottom:1px solid var(--line)}.source-evidence-row:last-child{border-bottom:0}.source-evidence-row .citation-folio{display:grid;grid-template-columns:1fr auto;align-items:end;gap:0;background:var(--source-color);color:#fff;padding:13px 11px;font-size:inherit}.source-evidence-row .citation-folio span{grid-column:1/-1;font-size:10px;font-weight:700;letter-spacing:.04em}.source-evidence-row .citation-folio strong{font-size:31px;font-weight:700;line-height:1}.source-evidence-row .citation-detail{padding:12px 13px}.source-evidence-row .citation-detail>span{color:var(--source-color)}.source-evidence-row .citation-detail p{font-size:12px;line-height:1.65;margin:0;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.visual-explanation-editor{border:1px solid var(--line);background:var(--surface-2)}.structured-editor-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px;border-bottom:1px solid var(--line);flex-wrap:wrap}.structured-editor-toolbar>div{display:grid;gap:2px}.structured-editor-toolbar small{color:var(--muted)}.structured-block-card{background:var(--surface);border-bottom:1px solid var(--line);padding:12px}.structured-block-card>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.structured-block-card>header>div{display:flex;gap:4px}.button.tiny{padding:4px 8px;min-height:28px;font-size:11px}.structured-block-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.structured-block-grid label{display:grid;gap:5px}.structured-block-grid label>span{font-size:11px;color:var(--muted);font-weight:700}.structured-block-grid .wide{grid-column:1/-1}.structured-table-actions{grid-column:1/-1;display:flex;gap:6px}.structured-editor-preview{padding:12px;background:var(--surface)}.structured-editor-preview>span{display:block;color:var(--muted);font-size:11px;font-weight:700;margin-bottom:8px}.structured-editor-preview .explanation-summary{display:none}.structured-editor-preview .explanation-section{padding:12px 0}.structured-editor-preview .textbook-sources{display:none}
@media(max-width:760px){.explanation-summary{display:grid}.explanation-summary>div{border-right:0;border-bottom:1px solid var(--line)}.explanation-table-wrap{border:0;overflow:visible}.explanation-table,.explanation-table tbody,.explanation-table tr,.explanation-table td{display:block}.explanation-table thead{display:none}.explanation-table tr{border:1px solid var(--line);margin:0 0 10px;background:var(--surface)}.explanation-table td{display:grid;grid-template-columns:minmax(86px,34%) 1fr;gap:10px;border-right:0;padding:9px 11px}.explanation-table td::before{content:attr(data-label);color:var(--muted);font-size:11px;font-weight:600}.explanation-table tr:last-child td{border-bottom:1px solid var(--line)}.explanation-table tr td:last-child{border-bottom:0}}
@media(max-width:760px){.textbook-source-heading{align-items:start}.textbook-source-heading>strong{text-align:right}.textbook-sources{grid-template-columns:1fr}.textbook-source-card>header{grid-template-columns:46px minmax(0,1fr);padding:11px}.source-book-icon{width:42px;height:42px}.source-evidence-row{grid-template-columns:98px minmax(0,1fr)}.source-evidence-row .citation-folio strong{font-size:28px}.source-evidence-row .citation-detail{padding:11px}.source-evidence-row .citation-detail p{-webkit-line-clamp:6}}
.explanation-emphasis{color:var(--accent-ink);font-weight:700}

/* High-latency review conveyor */
.review-command-bar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:24px;border:1px solid var(--line);border-left:5px solid var(--accent);padding:14px 16px;margin:16px 0;background:var(--surface)}
.review-counts{display:grid;grid-template-columns:auto auto;align-items:baseline;column-gap:9px}.review-counts strong{font-size:34px;line-height:1;color:var(--accent);font-variant-numeric:tabular-nums}.review-counts span{font-weight:600}.review-counts small{grid-column:1/-1;color:var(--muted);margin-top:4px}.review-sync{justify-self:center;display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px}.review-sync i{width:8px;height:8px;border-radius:50%;background:var(--good)}.review-sync.busy i{background:var(--accent);animation:review-pulse 1s ease-in-out infinite}.review-batch-actions{display:flex;align-items:center;gap:7px}.review-queue{display:grid;border-top:1px solid var(--line)}.review-card{display:grid;grid-template-columns:58px minmax(0,1fr) 172px;border:1px solid var(--line);border-top:0;background:var(--surface);min-height:180px;transition:background .12s,border-color .12s}.review-card:hover,.review-card.selected{background:color-mix(in srgb,var(--accent-soft) 34%,var(--surface));border-color:color-mix(in srgb,var(--accent) 32%,var(--line))}.review-select{border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:center;gap:12px;padding:18px 8px;color:var(--accent);font-weight:700;font-variant-numeric:tabular-nums}.review-select input{width:18px;height:18px;accent-color:var(--accent)}.review-card-main{padding:17px 20px;min-width:0}.review-card-main header,.review-card-main footer{display:flex;align-items:center;justify-content:space-between;gap:14px;color:var(--muted);font-size:12px}.review-card-main header>div,.review-card-main footer>div{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.review-card-main h3{font-size:16px;line-height:1.6;margin:15px 0 11px}.review-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 18px;color:var(--muted);font-size:12px;margin-bottom:15px}.review-options span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.knowledge-chip{display:inline-flex;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));color:var(--accent-ink);background:var(--accent-soft);padding:2px 7px;font-size:11px}.review-card-actions{border-left:1px solid var(--line);padding:16px;display:flex;flex-direction:column;justify-content:center;gap:8px}.review-card-actions .button{width:100%}.review-load-more{display:block;margin:18px auto 0}.review-empty{text-align:center;padding:70px 20px;border:1px solid var(--line);border-top:0}.review-empty p{color:var(--muted)}
@keyframes review-pulse{50%{opacity:.3;transform:scale(.72)}}
@media(max-width:860px){.review-command-bar{grid-template-columns:1fr}.review-sync{justify-self:start}.review-batch-actions{overflow-x:auto}.review-card{grid-template-columns:46px minmax(0,1fr)}.review-card-actions{grid-column:2;border-left:0;border-top:1px solid var(--line);flex-direction:row}.review-options{grid-template-columns:1fr}.review-card-main header,.review-card-main footer{align-items:flex-start;flex-direction:column}}
@media(prefers-reduced-motion:reduce){.review-sync.busy i{animation:none}}

/* Progressive loading and post-answer community */
.route-loading{min-height:360px;display:grid;grid-template-columns:150px minmax(0,560px);align-content:center;justify-content:center;gap:28px;margin-top:40px}.loading-index{font-size:72px;line-height:.7;color:var(--accent);font-weight:800}.route-loading h2{margin:0 0 8px;font-size:var(--fs-2xl)}.route-loading p,.route-loading small{color:var(--muted)}.loading-track{height:3px;background:var(--line);overflow:hidden;margin:18px 0}.loading-track i{display:block;width:32%;height:100%;background:var(--accent);animation:loading-scan 1.25s ease-in-out infinite}.difficulty-live b{color:var(--accent);letter-spacing:.08em}.knowledge-chip-list{display:flex;flex-wrap:wrap;gap:6px}.knowledge-chip-list strong,.knowledge-chip{border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));background:var(--accent-soft);color:var(--accent-ink);padding:3px 8px;font-size:11px}.mnemonic-card{display:grid;grid-template-columns:146px minmax(0,1fr);border:1px solid var(--line);margin-top:20px;background:var(--surface)}.mnemonic-card header{padding:17px;background:var(--surface-2);color:var(--ink);border-right:1px solid var(--line)}.mnemonic-card header span{font-size:10px;font-weight:600}.mnemonic-card h3{margin:5px 0 0}.mnemonic-card p{margin:0;padding:21px;font-size:17px;line-height:1.8;font-weight:700}.community-card{margin-top:8px}.community-loading{padding:18px;min-height:96px}.community-loading p{margin:0;color:var(--muted);font-size:12px}.reaction-panel,.discussion-panel{padding:16px 2px}.reaction-panel{border-bottom:1px solid var(--line)}.reaction-panel>header,.discussion-panel>header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.reaction-panel h3,.discussion-panel h3{margin:0;display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600}.reaction-panel h3::before,.discussion-panel h3::before{content:'';flex:none;width:3px;height:12px;border-radius:1px;background:var(--accent)}.reaction-panel header small{color:var(--muted)}.reaction-list{display:flex;flex-wrap:wrap;gap:7px}.reaction-chip{border:1px solid var(--line);background:var(--surface-2);color:var(--ink);padding:7px 10px;font-size:12px;display:flex;align-items:center;gap:7px}.reaction-chip:hover,.reaction-chip.selected{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}.reaction-chip strong{font-variant-numeric:tabular-nums}.discussion-list{display:grid;gap:0;max-height:420px;overflow:auto;border-top:1px solid var(--line)}.discussion-post{padding:13px 2px;border-bottom:1px solid var(--line)}.discussion-post header{display:flex;justify-content:space-between;gap:12px}.discussion-post time,.discussion-post small{color:var(--muted);font-size:10px}.discussion-post p{margin:7px 0 0;line-height:1.7}.discussion-empty{padding:25px 2px;color:var(--muted)}.discussion-form{display:grid;grid-template-columns:1fr auto;gap:9px;margin-top:14px}.discussion-form textarea{border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:10px;resize:vertical;font:inherit}.discussion-form textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}
.studypoint-item{border-top:1px dashed var(--line);padding:8px 0}
.studypoint-card .studypoint-item{grid-column:2}
.studypoint-item:first-of-type{border-top:none}
.studypoint-item summary{cursor:pointer;font-weight:600;list-style:none}
.studypoint-item summary::-webkit-details-marker{display:none}
.studypoint-item summary:before{content:'▸ '}
.studypoint-item[open] summary:before{content:'▾ '}
.studypoint-item p{margin:8px 0 0;padding:0;font-size:15px;font-weight:400;color:var(--muted)}
@keyframes loading-scan{0%{transform:translateX(-105%)}100%{transform:translateX(315%)}}
@media(max-width:760px){.route-loading{grid-template-columns:1fr;min-height:300px}.loading-index{font-size:52px}.mnemonic-card{grid-template-columns:104px minmax(0,1fr)}.mnemonic-card p{padding:16px;font-size:15px}.reaction-panel,.discussion-panel{padding:16px}.discussion-form{grid-template-columns:1fr}.discussion-form .button{width:100%}}
@media(prefers-reduced-motion:reduce){.loading-track i{animation:none;width:100%}}
.discussion-post>button{border:0;background:transparent;color:var(--accent);font-size:11px;padding:5px 0 0;font-weight:700;cursor:pointer}

/* Community workspace — Swiss grid, explicit selection states and compact discussion flow. */


.reaction-panel{position:relative;border-bottom:1px solid var(--line)}







.reaction-chip{position:relative;justify-content:space-between;min-height:40px;padding:8px 12px;border-color:var(--line);border-radius:8px;background:var(--surface);font-size:12px;font-weight:500;text-align:left;transition:background var(--dur-fast),border-color var(--dur-fast),color var(--dur-fast)}
.reaction-chip:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}
.reaction-chip.selected{border-color:var(--accent);background:var(--accent);color:#fff}
.reaction-chip.selected:hover{color:#fff;background:var(--accent)}
.reaction-chip strong{min-width:18px;padding:1px 5px;border-radius:6px;background:color-mix(in srgb,currentColor 12%,transparent);text-align:center;font-size:10px;font-weight:600;opacity:.75}

.discussion-count{display:flex;align-items:baseline;gap:3px;color:var(--muted);font-size:14px;font-variant-numeric:tabular-nums}
.discussion-count small{font-size:12px;font-weight:400}
.discussion-list{max-height:440px;border-top:1px solid var(--line)}
.discussion-post{padding:16px 0 15px}
.discussion-post header{align-items:center}
.discussion-author{display:flex;align-items:center;gap:9px}
.discussion-author i{width:28px;height:28px;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--accent) 40%,var(--line));background:var(--accent-soft);color:var(--accent-ink);font-size:11px;font-style:normal;font-weight:600}
.discussion-post time{font-variant-numeric:tabular-nums}
.discussion-post p{margin:9px 0 0;padding-left:37px}
.reply-reference{display:block;padding:5px 0 0 37px}
.discussion-reply{margin-left:37px!important}
.discussion-empty{display:grid;gap:3px;padding:28px 0;color:var(--muted)}
.discussion-empty strong{color:var(--ink);font-size:15px}
.discussion-form{grid-template-columns:minmax(0,1fr) 128px;align-items:stretch;gap:10px;margin:18px 0 0 68px;padding-top:18px;border-top:1px solid var(--line)}
.discussion-field{display:grid;grid-template-columns:1fr auto;gap:7px}
.discussion-field label{font-size:11px;font-weight:600;color:var(--ink)}
.discussion-field small{color:var(--muted);font-size:10px}
.discussion-form textarea{grid-column:1/-1;min-height:104px;padding:13px 15px;background:var(--surface-2);line-height:1.65;transition:border-color .16s,background .16s}
.discussion-form textarea:focus{background:var(--surface);outline:3px solid color-mix(in srgb,var(--accent) 12%,transparent)}
.discussion-submit{align-self:stretch;border-radius:var(--radius);font-size:13px}
.discussion-login{margin-left:0}

@media(max-width:1080px){.reaction-list{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.reaction-chip{min-height:44px}.discussion-form{grid-template-columns:1fr}.discussion-submit{min-height:46px}.discussion-post p,.reply-reference{padding-left:0}.discussion-reply{margin-left:0!important}}
@media(max-width:480px){}

/* Question tags now live with the question metadata, before the stem. */
.question-topic-tag{font:inherit;cursor:pointer;border-color:color-mix(in srgb,var(--accent) 38%,var(--line));background:var(--accent-soft);color:var(--accent-ink);font-weight:700}
.question-topic-tag:hover{border-color:var(--accent);transform:translateY(-1px)}

/* A single textbook uses the available width; several books flow responsively. */
.textbook-sources{grid-template-columns:repeat(auto-fit,minmax(min(100%,460px),1fr))}
.source-evidence-row .citation-detail p{display:block;overflow:visible;-webkit-line-clamp:unset}
.evidence-origin-mark{color:#b42318;background:transparent;font-weight:850;padding:0;border-radius:0}
.subject-card{--subject-color:var(--accent)}.subject-icon{display:grid;place-items:center;width:47px;height:47px;border:1px solid color-mix(in srgb,var(--subject-color) 45%,var(--line));background:color-mix(in srgb,var(--subject-color) 8%,var(--surface));color:var(--subject-color);border-radius:12px}.subject-icon svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.subject-card:has(.subject-icon) h3{margin-top:14px}.subject-icon-anatomy{--subject-color:#a26a28}.subject-icon-histology{--subject-color:#8b5cb8}.subject-icon-physiology{--subject-color:#198a67}.subject-icon-biochemistry{--subject-color:#397ca6}.subject-icon-microbiology{--subject-color:#578f39}.subject-icon-immunology{--subject-color:#2868a6}.subject-icon-pathology{--subject-color:#bd5667}.subject-icon-pathophysiology{--subject-color:#d36c42}.subject-icon-pharmacology{--subject-color:#248e83}.subject-icon-diagnosis{--subject-color:#315f92}.subject-icon-medicine{--subject-color:#388e7b}.subject-icon-surgery{--subject-color:#487bb0}.subject-icon-obstetrics{--subject-color:#c85b75}.subject-icon-pediatrics{--subject-color:#d49a2a}.subject-icon-neurology{--subject-color:#8556a4}.subject-icon-infection{--subject-color:#258c88}.subject-icon-imaging{--subject-color:#3f6f9c}.subject-icon-prevention{--subject-color:#4f8438}
.textbook-source-card{--source-color:hsl(var(--source-hue) 64% 43%);--source-soft:color-mix(in srgb,var(--source-color) 10%,var(--surface));border-color:var(--source-color)}
.source-book-icon{color:var(--source-color)}
.evidence-context{margin-top:10px;border-top:1px dashed color-mix(in srgb,var(--source-color) 35%,var(--line));padding-top:8px}
.evidence-context summary{cursor:pointer;color:var(--source-color);font-size:11px;font-weight:600;list-style:none}
.evidence-context summary small{margin-left:7px;color:var(--muted);font-size:9px;font-weight:600;letter-spacing:.04em}
.evidence-context summary:before{content:"＋";display:inline-block;width:17px}.evidence-context[open] summary:before{content:"－"}
.evidence-context p{margin-top:8px!important;color:var(--muted)}
.evidence-context-summary p{color:var(--ink)}
.evidence-context-original{opacity:.88}
.evidence-grade{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:12px;align-items:center;margin:0 0 14px;padding:11px 13px;border:1px solid var(--line);background:var(--surface-2);font-size:12px}.evidence-grade strong{font-size:12px}.evidence-grade span{color:var(--muted);line-height:1.55}.evidence-grade-a{border-left:4px solid var(--good)}.evidence-grade-b{border-left:4px solid #b7791f;background:color-mix(in srgb,#d69e2e 8%,var(--surface))}.evidence-grade-c{border-left:4px solid var(--bad);background:color-mix(in srgb,var(--bad) 8%,var(--surface))}.evidence-grade-c strong{color:var(--bad)}
[data-theme="paper"] .textbook-source-card{--source-color:hsl(var(--source-hue) 38% 38%);--source-soft:color-mix(in srgb,var(--source-color) 9%,var(--surface))}

.official-source-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:-6px 0 24px;padding:15px 18px;border:1px solid var(--line);background:color-mix(in srgb,var(--accent) 4%,var(--surface));border-radius:var(--radius)}
.official-source-bar>div{display:grid;gap:3px}.official-source-bar strong{font-size:18px}.official-source-bar label{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:12px}.official-source-bar select{min-width:260px}
.community-notice{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:22px;padding:18px 22px;border-left:4px solid var(--accent)}.community-notice p{margin:0;color:var(--muted)}
.community-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.community-bank-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px;padding:24px;color:var(--ink);text-decoration:none;transition:border-color .18s ease,transform .18s ease}.community-bank-card:hover{border-color:var(--accent);transform:translateY(-2px)}.community-bank-card h2{margin:5px 0 8px;font-size:22px}.community-bank-card p{margin:0;color:var(--muted)}
.community-bank-meta{display:flex;flex-wrap:wrap;gap:8px;margin:-8px 0 22px}.community-bank-meta span{color:var(--muted);font-size:12px}
.community-subject-list{display:grid;gap:18px}.community-subject{padding:0;overflow:hidden}.community-subject>header{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:14px;padding:20px 22px;border-bottom:1px solid var(--line)}.community-subject>header h2{margin:0}.community-subject>header p{margin:4px 0 0;color:var(--muted)}
.community-chapter{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 22px;border-bottom:1px solid var(--line)}.community-chapter:last-child{border-bottom:0}.community-chapter h3{margin:0 0 4px}.community-chapter p{margin:0;color:var(--muted)}.community-chapter>div:last-child{display:flex;gap:8px}
.collection-discussion{margin-top:22px;padding:22px}.collection-discussion>header{display:flex;align-items:end;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:14px}.collection-discussion h2{margin:4px 0 0}.collection-discussion>header>strong{font-size:30px}.discussion-post{padding:16px 0;border-bottom:1px solid var(--line)}.collection-discussion .discussion-post{display:grid;grid-template-columns:36px minmax(0,1fr);gap:12px}.post-avatar{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--accent);color:white;font-weight:700}.discussion-post header{display:flex;align-items:center;gap:10px}.discussion-post time{color:var(--muted);font-size:11px}.discussion-post p{white-space:pre-wrap}.discussion-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;margin-top:18px}.discussion-form textarea{min-height:90px}.empty-discussion{padding:28px 0;color:var(--muted)}
.community-upload-preview{margin-top:18px;padding:22px}.community-upload-preview>header{display:flex;justify-content:space-between;align-items:center}.community-preview-list{max-height:460px;overflow:auto;border:1px solid var(--line);margin:16px 0}.community-preview-list article{display:grid;grid-template-columns:54px minmax(0,1fr) minmax(100px,220px);gap:12px;padding:12px;border-bottom:1px solid var(--line)}.community-preview-list article:last-child{border-bottom:0}.community-preview-list article.invalid{border-left:3px solid var(--danger)}.community-preview-list article.valid{border-left:3px solid var(--success)}.community-preview-list strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.community-preview-list p{margin:3px 0 0;color:var(--muted)}.community-preview-list em{font-style:normal;color:var(--muted)}
.community-practice-shell{max-width:1100px;margin:0 auto}.community-practice-shell .question-card{padding:28px}.community-practice-shell .practice-progress{display:grid;grid-template-columns:auto 1fr;align-items:end;gap:6px;margin-bottom:22px}.community-practice-shell .practice-progress strong{font-size:42px;color:var(--accent)}.community-practice-shell .practice-progress i{grid-column:1/-1;height:4px;background:var(--accent);border-radius:999px}.community-practice-shell .question-card h1{font-size:28px;line-height:1.55}.community-practice-shell .practice-actions{display:flex;justify-content:flex-end;margin-top:22px}.community-practice-shell .brief-explanation{font-size:17px;font-weight:700}

@media(max-width:900px){.community-grid{grid-template-columns:1fr}.official-source-bar{align-items:stretch;flex-direction:column}.official-source-bar label{align-items:stretch;flex-direction:column}.official-source-bar select{min-width:0;width:100%}.community-chapter{align-items:flex-start;flex-direction:column}.discussion-form{grid-template-columns:1fr}}
@media(max-width:560px){.community-bank-card{padding:18px}.community-notice{align-items:flex-start;flex-direction:column}.community-preview-list article{grid-template-columns:38px minmax(0,1fr)}.community-preview-list em{grid-column:2}.community-practice-shell .question-card{padding:18px}.community-practice-shell .question-card h1{font-size:22px}}
.admin-upload-list{display:grid;max-height:520px;overflow:auto;border:1px solid var(--line);margin:14px 0}.admin-upload-list article{display:grid;grid-template-columns:54px minmax(0,1fr) minmax(100px,220px);gap:12px;padding:12px 14px;border-bottom:1px solid var(--line)}.admin-upload-list article.valid{border-left:3px solid var(--success)}.admin-upload-list article.invalid{border-left:3px solid var(--danger)}.admin-upload-list strong,.admin-upload-list small{display:block}.admin-upload-list small{margin-top:4px;color:var(--muted)}.admin-upload-list em{font-style:normal;color:var(--muted)}
.official-conflicts,.community-promotion-box{display:grid;gap:12px;margin-top:18px;padding:18px;border:1px solid var(--line);background:var(--surface-soft);border-radius:var(--radius)}.official-conflicts article,.community-promotion-box article{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,340px);gap:8px 16px;padding:14px;background:var(--surface);border:1px solid var(--line);border-radius:calc(var(--radius) - 4px)}.official-conflicts article p,.community-promotion-box article p{grid-column:1;margin:4px 0;color:var(--muted)}.official-conflicts article select,.community-promotion-box article select{grid-column:2;grid-row:1/3}.community-promotion-box>header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.community-promotion-box>header h3{margin-right:auto}
.published-source-action{display:inline-flex;align-items:center;gap:8px;padding-left:8px;border-left:1px solid var(--line)}
.published-source-action .compact-input{width:150px;min-height:38px;padding:7px 10px}
@media(max-width:900px){.published-source-action{width:100%;padding:8px 0 0;border-left:0;border-top:1px solid var(--line)}.published-source-action .compact-input{flex:1}}
.community-owner-bar,.community-duplicate-panel>header{display:flex;align-items:center;justify-content:space-between;gap:18px}.community-owner-bar>div:last-child{display:flex;gap:10px;flex-wrap:wrap}.community-conflict-list{display:grid;gap:10px;margin:18px 0}.community-conflict-list article{display:grid;grid-template-columns:42px minmax(0,1fr) minmax(150px,220px);align-items:center;gap:14px;padding:14px;border:1px solid var(--line);border-radius:var(--radius-small);background:var(--surface-muted)}.community-conflict-list article>span{font-variant-numeric:tabular-nums;color:var(--primary);font-weight:700}.community-conflict-list small{display:block;margin-top:4px;color:var(--muted)}
.community-bulk-fields{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) auto;gap:10px;margin:14px 0}.community-preview-list article{grid-template-columns:48px minmax(0,1fr) minmax(120px,auto) auto}
@media(max-width:700px){.community-owner-bar,.community-duplicate-panel>header{align-items:flex-start;flex-direction:column}.community-conflict-list article{grid-template-columns:34px minmax(0,1fr)}.community-conflict-list select{grid-column:1/-1;width:100%}}
@media(max-width:700px){.community-bulk-fields{grid-template-columns:1fr}.community-preview-list article{grid-template-columns:40px minmax(0,1fr)}.community-preview-list article>em,.community-preview-list article>button{grid-column:2}}

/* ── 交互细节打磨：按钮反馈、输入焦点、滚动条、禁用态 ── */
.button{transition:background .16s,border-color .16s,color .16s,box-shadow .16s,transform .1s}
.button.primary:hover{background:color-mix(in srgb,var(--accent) 88%,var(--ink));border-color:color-mix(in srgb,var(--accent) 88%,var(--ink))}
.button:active:not(:disabled){transform:translateY(1px)}
.button:disabled,.button[disabled]{opacity:.55;cursor:not-allowed;transform:none}
.button.danger:hover{background:var(--bad);border-color:var(--bad);color:#fff}
.icon-button{transition:border-color .16s,color .16s,background .16s}
.icon-button:hover{border-color:var(--accent);color:var(--accent)}
.text-input{transition:border-color .16s,box-shadow .16s}
.text-input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent)}
.text-input:focus-visible{outline:none}
.discussion-list,.upload-row-list,.published-systems,.community-preview-list,.admin-upload-list,.conflict-list,.dialog-scroll{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--muted) 40%,transparent) transparent}
.toast{box-shadow:0 12px 34px rgba(0,0,0,.28)}
.option{transition:border-color var(--dur-fast),background var(--dur-fast)}
.answer-number{transition:border-color .12s,background .12s,color .12s}
.panel{transition:border-color .18s}
@media(prefers-reduced-motion:reduce){.button,.option,.answer-number,.text-input,.icon-button,.panel{transition:none}}

/* ===== 启动 Splash 四幕：心跳开场 / 品牌显现 / 加载内容 / 收敛落位 ===== */
.splash{position:fixed;inset:0;z-index:400;background:var(--bg);display:grid;place-items:center;transition:opacity .25s ease}
.splash.leaving{opacity:0}
.splash-inner{display:grid;justify-items:center;gap:14px;padding:24px;max-width:100vw}
.splash-stage{display:grid;justify-items:center;gap:12px;will-change:transform}
@media (prefers-reduced-motion: no-preference){.splash-stage.bye{animation:heartbeat .7s var(--ease-out)}}
.splash-emblem{position:relative;width:92px;height:92px}
.splash-mark{width:92px;height:92px;display:grid;place-items:center}
.splash-mark svg{width:92px;height:92px}
.splash-ecg-line{width:min(320px,72vw);height:auto;overflow:visible}
.splash-ecg-line path{fill:none;stroke:var(--accent);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 5px color-mix(in srgb,var(--accent) 65%,transparent))}
.splash-title{text-align:center;transition:opacity .25s ease}
.splash-title.bye{opacity:0}
.splash-title strong{display:block;font-size:var(--fs-2xl);letter-spacing:.04em}
.splash-title strong span{display:inline-block}
.splash-title strong span:nth-child(1){--i:0}
.splash-title strong span:nth-child(2){--i:1}
.splash-title strong span:nth-child(3){--i:2}
.splash-title strong span:nth-child(4){--i:3}
.splash-title small{display:block;color:var(--muted);font-size:11px;letter-spacing:.02em;margin-top:5px}
.splash-content{display:grid;justify-items:center;transition:opacity .25s ease,transform .25s ease}
.splash-content.bye{opacity:0;transform:translateY(8px)}
.splash-pct-big{margin:4px 0 0;color:var(--accent);font-weight:750;font-size:44px;line-height:1;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:3px}
.splash-pct-big i{font-style:normal;font-size:18px;color:var(--muted)}
.splash-steps{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:8px;width:min(260px,72vw)}
.splash-steps li{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:13px;transition:color var(--dur-med) var(--ease-out)}
.splash-steps li.done{color:var(--ink)}
.splash-steps li svg{width:15px;height:15px;flex:none}
.splash-steps li svg path{fill:none;stroke:var(--good);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:14;stroke-dashoffset:14}
.splash-status{margin:10px 0 0;color:var(--muted);font-size:12px}
.splash-tip{min-height:18px;margin:14px 0 0;color:var(--muted);font-size:var(--fs-xs);text-align:center;transition:opacity .22s ease}
.splash-tip.swap{opacity:0}
@keyframes ecg-line-draw{0%{stroke-dashoffset:460}100%{stroke-dashoffset:0}}
@keyframes ecg-line-out{to{opacity:0}}
@keyframes emblem-in{0%{opacity:0;transform:scale(.4)}70%{transform:scale(1.06)}100%{opacity:1;transform:scale(1)}}
@keyframes heartbeat{0%,100%{transform:scale(1)}25%{transform:scale(1.08)}45%{transform:scale(.99)}}
@keyframes char-in{0%{opacity:0;transform:translateY(10px)}100%{opacity:1;transform:none}}
@keyframes splash-fade{0%{opacity:0;transform:translateY(8px)}100%{opacity:1;transform:none}}
@keyframes step-check{to{stroke-dashoffset:0}}
@media (prefers-reduced-motion: no-preference){
  .splash-ecg-line path{stroke-dasharray:460;stroke-dashoffset:460;animation:ecg-line-draw .55s linear .02s both}
  .splash-ecg-line{animation:ecg-line-out .25s ease .55s both}
  .splash-emblem{animation:emblem-in .3s var(--ease-out) .42s both,heartbeat .9s ease-in-out .75s 2}
  .splash-title strong span{animation:char-in .34s var(--ease-out) calc(.55s + var(--i)*60ms) both}
  .splash-title small{animation:splash-fade .45s ease .85s both}
  .splash-content{animation:splash-fade .45s ease .95s both}
  .splash-steps li.done svg path{animation:step-check .35s var(--ease-out) both}
  /* 回访（有缓存）精简版：跳过幕1 描线，从心跳徽标+进度开始，全程 ≤0.9s */
  .splash.fast .splash-ecg-line{display:none}
  .splash.fast .splash-emblem{animation:splash-fade .3s ease both}
  .splash.fast .splash-title strong span{animation:char-in .3s var(--ease-out) calc(.05s + var(--i)*40ms) both}
  .splash.fast .splash-title small{animation:splash-fade .35s ease .3s both}
  .splash.fast .splash-content{animation:splash-fade .4s ease .35s both}
}
@media (prefers-reduced-motion: reduce){.splash{transition:opacity .2s ease}.splash-steps li.done svg path{stroke-dashoffset:0}}
/* 幕4 落位：手机端常驻右上角小图标（平时隐去，落定时显形） */
.header-pulse{width:22px;height:22px;display:inline-grid;place-items:center;opacity:0;transition:opacity .2s ease}
.header-pulse.on{opacity:1}
.header-pulse svg{width:22px;height:22px;fill:none;stroke:var(--accent);stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round}
@keyframes pulse-land{0%{transform:scale(1)}40%{transform:scale(1.25)}100%{transform:scale(1)}}
@media (prefers-reduced-motion: no-preference){.header-pulse.beat{animation:pulse-land .38s var(--ease-out)}}
/* 幕4 桌面端落位：splash 徽标缩到 brand-mark 后渐隐，真 logo 1→1.15→1 脉冲一次 */
@keyframes brand-land{0%{transform:scale(1);box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 35%,transparent)}35%{transform:scale(1.32);box-shadow:0 0 0 10px color-mix(in srgb,var(--accent) 18%,transparent)}100%{transform:scale(1);box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 0%,transparent)}}
@media (prefers-reduced-motion: no-preference){.brand-mark.beat{animation:brand-land .9s var(--ease-out)}}
/* ===== 做题过程动画 ===== */
@keyframes enter-next{0%{transform:translateX(var(--slide-dx,24px));opacity:0}100%{transform:none;opacity:1}}
@keyframes enter-prev{0%{transform:translateX(calc(var(--slide-dx,24px)*-1));opacity:0}100%{transform:none;opacity:1}}
@keyframes select-bounce{0%{transform:scale(.85)}55%{transform:scale(1.12)}100%{transform:scale(1)}}
@keyframes check-pop{0%{transform:scale(.4);opacity:0}60%{transform:scale(1.15);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes feedback-pop{0%{transform:scale(.9);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes good-reveal{0%{opacity:.3}100%{opacity:1}}
@keyframes sheet-flip{0%{transform:rotateY(0)}50%{transform:rotateY(90deg)}100%{transform:rotateY(0)}}
.option.correct .option-letter{position:relative;color:transparent}
.option.correct .option-letter:after{content:'✓';position:absolute;inset:0;display:grid;place-items:center;color:#fff}
.option.wrong .option-letter{position:relative;color:transparent}
.option.wrong .option-letter:after{content:'✗';position:absolute;inset:0;display:grid;place-items:center;color:#fff}
.score-number b{font-weight:inherit}
@media (prefers-reduced-motion: no-preference){
.option.correct{animation:good-reveal .3s ease both}
.question-card.judged-wrong .option.correct{animation-delay:.35s}
.question-card.enter-next{animation:enter-next 180ms var(--ease-out)}
.question-card.enter-prev{animation:enter-prev 180ms var(--ease-out)}
.option.selected:not(:disabled) .option-letter{animation:select-bounce var(--dur-med) var(--ease-out)}
.option.correct .option-letter:after{animation:check-pop var(--dur-med) var(--ease-out) both}
.answer-feedback.correct h3{animation:feedback-pop var(--dur-med) var(--ease-out)}
.answer-number.just-judged{animation:sheet-flip 220ms var(--ease-out)}
}
@media(max-width:760px){.question-card{--slide-dx:14px}}

/* ===== 主题判题动效：只使用 transform / opacity，不参与布局与交互 ===== */
.theme-answer-effect{position:fixed;inset:0;z-index:260;overflow:hidden;pointer-events:none;contain:strict;color:var(--effect-color);user-select:none}
.theme-answer-effect svg{display:block;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}
@keyframes answer-card-clinical{0%{opacity:.78;transform:scale(.992)}55%{transform:scale(1.004)}100%{opacity:1;transform:none}}
@keyframes answer-card-paper{0%{opacity:.68;transform:translateY(3px) rotate(-.18deg)}100%{opacity:1;transform:none}}
@keyframes answer-card-zine{0%{opacity:.66;transform:translateY(4px) rotate(.16deg)}100%{opacity:1;transform:none}}
@keyframes clinical-ring{0%{opacity:.6;transform:scale(.3)}100%{opacity:0;transform:scale(1.75)}}
@keyframes ecg-answer-draw{0%{stroke-dashoffset:230;opacity:0}15%{opacity:1}70%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes paper-mark-draw{0%{stroke-dashoffset:48;opacity:0;transform:rotate(-4deg) scale(.82)}30%{opacity:1}75%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0;transform:none}}
@keyframes paper-speck{0%{opacity:0;transform:translate3d(0,0,0) scale(.4)}35%{opacity:.7}100%{opacity:0;transform:translate3d(var(--sx),var(--sy),0) scale(1)}}
@keyframes maple-fall{0%{opacity:0;transform:translate3d(0,-34px,0) rotate(0) scale(.72)}18%{opacity:.9}82%{opacity:.72}100%{opacity:0;transform:translate3d(var(--drift),150px,0) rotate(var(--turn)) scale(1)}}
@keyframes archive-stamp{0%{opacity:1;transform:translate(-50%,-50%) rotate(-7deg) scale(1.45)}35%{opacity:1;transform:translate(-50%,-50%) rotate(-7deg) scale(.94)}55%{transform:translate(-50%,-50%) rotate(-7deg) scale(1)}100%{opacity:1;transform:translate(-50%,-50%) rotate(-7deg) scale(1)}}
@media (prefers-reduced-motion:no-preference){
  html[data-theme="clinical"] .question-card.answer-just-judged{animation:answer-card-clinical 220ms var(--ease-out)}
  html[data-theme="paper"] .question-card.answer-just-judged{animation:answer-card-paper 220ms var(--ease-out)}
  html[data-theme="zine"] .question-card.answer-just-judged{animation:answer-card-zine 240ms var(--ease-out)}
}
.effect-clinical-ring{position:absolute;left:calc(var(--effect-x) - 25px);top:calc(var(--effect-y) - 25px);width:50px;height:50px;border:2px solid currentColor;border-radius:50%;opacity:0;animation:clinical-ring .5s var(--ease-out) both}
.effect-clinical-ring-b{animation-delay:130ms}
.effect-ecg{position:absolute;left:var(--effect-x);top:var(--effect-y);width:min(330px,72vw);height:78px;transform:translate(-50%,-50%)}
.effect-ecg path{stroke-width:2.4;stroke-dasharray:230;stroke-dashoffset:230;animation:ecg-answer-draw .5s ease-out both}
.effect-paper-mark{position:absolute;left:var(--effect-x);top:var(--effect-y);width:106px;height:106px;transform:translate(-50%,-50%);stroke-width:1.8}
.effect-paper-mark path{stroke-dasharray:48;stroke-dashoffset:48;animation:paper-mark-draw .5s ease-out both}
.effect-paper-speck{position:absolute;left:var(--effect-x);top:var(--effect-y);width:4px;height:4px;border-radius:50%;background:currentColor;opacity:0;animation:paper-speck .5s ease-out calc(var(--i)*45ms) both}
.effect-maple-leaf{position:absolute;left:calc(var(--effect-x) + var(--fx));top:calc(var(--effect-y) - 46px);width:24px;height:24px;color:var(--accent);opacity:0;animation:maple-fall .5s ease-in-out var(--delay) both}
.effect-maple-leaf:nth-child(even){width:19px;height:19px}
.effect-maple-leaf svg{width:100%;height:100%;fill:currentColor;stroke:none}
.effect-archive-stamp{position:absolute;left:var(--effect-x);top:var(--effect-y);display:grid;place-items:center;width:82px;height:82px;border:3px double var(--accent);border-radius:50%;color:var(--accent);font:700 14px/1 "Courier New","Songti SC",serif;letter-spacing:.18em;opacity:0;animation:archive-stamp .5s var(--ease-out) both}
html.anim-off .theme-answer-effect{display:none!important}
html.anim-off .question-card.answer-just-judged{animation:none!important}

/* ===== 做题正反馈：连对徽章 / 文案小注 / 撒花 ===== */
.streak-badge{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;border:1px solid var(--accent);background:var(--accent-soft);color:var(--accent-ink);padding:3px 10px;border-radius:999px;font-size:12px;font-weight:700}
.streak-badge.streak-break{border-color:var(--line);background:var(--surface-2);color:var(--muted)}
.feedback-note{margin:6px 0 0;color:var(--warn);font-size:13px;font-weight:500}
.confetti-canvas{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:300}
@keyframes streak-pop{0%{transform:scale(.5);opacity:0}60%{transform:scale(1.12);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes streak-break{0%{transform:scale(1);opacity:1}30%{transform:rotate(-8deg) scale(.96)}100%{transform:translateY(8px) rotate(4deg);opacity:0}}
@media (prefers-reduced-motion: no-preference){.streak-badge.streak-pop{animation:streak-pop var(--dur-med) var(--ease-out)}.streak-badge.streak-break{animation:streak-break .5s ease both}}
/* ===== 排行榜 ===== */
.leaderboard-tabs{display:inline-grid;grid-template-columns:repeat(3,1fr);background:var(--surface-2);border:1px solid var(--line);padding:3px;border-radius:8px;margin:0 0 16px}
.leaderboard-tabs button{border:0;background:transparent;color:var(--muted);padding:8px 18px;border-radius:6px;font-size:13px;font-weight:600}
.leaderboard-tabs button.active{background:var(--surface);color:var(--accent)}
.leaderboard-panel{padding:10px 0;min-height:220px}
.leaderboard-loading{display:grid;place-items:center;align-content:center;gap:14px;min-height:220px;color:var(--muted);font-size:13px;padding:0 24px}
.leaderboard-loading .loading-track{width:min(260px,60vw);margin:0}
.leaderboard-panel .empty-state{margin:18px}
.leaderboard-list{list-style:none;margin:0;padding:0}
.leaderboard-row{display:grid;grid-template-columns:56px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 22px;border-bottom:1px solid var(--line)}
.leaderboard-row:last-child{border-bottom:0}
.leaderboard-row.is-self{background:var(--accent-soft)}
.leaderboard-rank{font-size:15px;font-weight:800;color:var(--muted);font-variant-numeric:tabular-nums;text-align:center}
.leaderboard-rank.rank-1,.leaderboard-rank.rank-2,.leaderboard-rank.rank-3{font-size:20px}
.leaderboard-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.leaderboard-name em{font-style:normal;margin-left:8px;color:var(--muted);font-size:10px;font-weight:700;vertical-align:1px}
.leaderboard-value{color:var(--accent);font-size:16px;font-variant-numeric:tabular-nums;white-space:nowrap}
.leaderboard-banner{display:flex;align-items:center;gap:14px;padding:16px 22px;margin-top:18px;border:1px solid var(--line)}
.leaderboard-banner svg{width:26px;height:26px;color:var(--accent);flex:none}
.leaderboard-banner div{flex:1;min-width:0}
.leaderboard-banner strong{display:block;font-size:15px}
.leaderboard-banner span{color:var(--muted);font-size:12px}
.leaderboard-banner em{font-style:normal;color:var(--accent);font-size:13px;font-weight:700;white-space:nowrap}
.leaderboard-banner:hover{border-color:var(--accent)}
@media(max-width:760px){.leaderboard-tabs{display:grid;width:100%}.leaderboard-tabs button{padding:8px 6px}.leaderboard-row{grid-template-columns:40px minmax(0,1fr) auto;gap:8px;padding:10px 14px}.leaderboard-rank.rank-1,.leaderboard-rank.rank-2,.leaderboard-rank.rank-3{font-size:17px}.leaderboard-value{font-size:14px}.leaderboard-banner{margin-top:14px;padding:14px 16px}}

/* ===== 用户偏好：设置入口 / 隐藏类 / 关动画 ===== */
.settings-entry{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:10px;border:1px solid var(--line);background:var(--surface);color:var(--muted);padding:9px;border-radius:8px;font-size:13px;font-weight:600}
.settings-entry:hover{border-color:var(--accent);color:var(--accent)}
.settings-entry svg{width:16px;height:16px}
.mobile-tools{display:flex;align-items:center;gap:8px}
.mobile-settings{width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:8px}
.mobile-settings svg{width:18px;height:18px}
html.pref-hide-source .textbook-source-card,html.pref-hide-source .textbook-citation,html.pref-hide-source .textbook-source-section{display:none!important}
html.pref-hide-errorprone .difficulty-live{display:none!important}
html.anim-off .splash{transition:opacity .2s ease!important}
html.anim-off .splash.leaving{transform:none}
html.anim-off .streak-badge.streak-break{display:none}
html.anim-off .splash-ecg-line,html.anim-off .splash-emblem,html.anim-off .splash-title strong span,html.anim-off .splash-title small,html.anim-off .splash-content,html.anim-off .header-pulse.beat,
html.anim-off .question-card.enter-next,html.anim-off .question-card.enter-prev,html.anim-off .question-card.judged-wrong,
html.anim-off .option.correct,html.anim-off .option.selected:not(:disabled) .option-letter,html.anim-off .option.correct .option-letter:after,
html.anim-off .answer-feedback.correct h3,html.anim-off .answer-number.just-judged,
html.anim-off .streak-badge.streak-pop,html.anim-off .view-in,html.anim-off .config-dialog[open]{animation:none!important}
html.anim-off .progress-track i,html.anim-off .option,html.anim-off .option-letter,html.anim-off .answer-number,html.anim-off .leaderboard-banner{transition:none!important}
/* ===== UI 快赢：弹窗入场 / 焦点 / hover / 视图入场 ===== */
@keyframes dialog-in{0%{opacity:0;transform:scale(.96)}100%{opacity:1;transform:scale(1)}}
@media (prefers-reduced-motion: no-preference){.config-dialog[open]{animation:dialog-in .18s var(--ease-out)}}
:focus:not(:focus-visible){outline:none}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
/* #appMain 仅被程序化聚焦（tabindex=-1，供屏幕阅读器路由播报），焦点环无视觉受众，隐藏以避免页面底部出现莫名描边线 */
#appMain:focus,#appMain:focus-visible{outline:none}
.option-letter{transition:transform var(--dur-fast) var(--ease-out)}
@media (hover:hover){.option:hover:not(:disabled):not(.correct):not(.wrong){border-color:var(--accent)}.option:hover:not(:disabled):not(.correct):not(.wrong) .option-letter{transform:scale(1.06)}}
@keyframes view-in{0%{opacity:0;transform:translateY(6px)}100%{opacity:1;transform:none}}
@media (prefers-reduced-motion: no-preference){.view-in{animation:view-in .22s var(--ease-out)}}

/* ===== 章节归组：学生端分组展示 ===== */
.chapter-group{margin-bottom:22px}
.chapter-group-header{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin:0 2px 12px;flex-wrap:wrap}
.chapter-group-header strong{font-size:16px;letter-spacing:.01em}
.chapter-group-header span{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}
.chapter-group-rest .chapter-group-header strong{color:var(--muted);font-size:13px;font-weight:600}
/* ===== 章节归组：管理端工作区 ===== */
.layout-status{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;border:1px solid var(--line);background:var(--surface-2);border-radius:var(--radius);padding:12px 16px;margin:16px 0}
.layout-status strong{display:block;font-size:15px}
.layout-status span{color:var(--muted);font-size:12px}
.layout-status.dirty{border-color:var(--warn)}
.layout-status.dirty span{color:var(--warn);font-weight:600}
.layout-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.layout-actions .text-input{width:min(280px,52vw)}
.layout-columns{display:grid;grid-template-columns:minmax(260px,1fr) minmax(0,2fr);gap:16px;align-items:start}
.layout-unassigned,.layout-group{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.layout-unassigned>header,.layout-group>header{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 14px;border-bottom:1px solid var(--line)}
.layout-unassigned>header strong,.layout-group>header strong{font-size:14px}
.layout-unassigned>header span,.layout-group>header>span{color:var(--muted);font-size:11px}
.layout-group-actions{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.layout-group{margin-bottom:12px}
.layout-section{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 14px;border-bottom:1px solid var(--line);font-size:13px}
.layout-section:last-child{border-bottom:0}
.layout-section>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.layout-section .text-input{max-width:170px;padding:6px 8px;font-size:12px}
.layout-section-actions{display:flex;gap:6px;flex:none}
.layout-unassigned .muted,.layout-group .muted{padding:12px 14px;margin:0;color:var(--muted);font-size:12px}
@media(max-width:900px){.layout-columns{grid-template-columns:1fr}.layout-status{display:block}.layout-actions{margin-top:10px}}

/* ===== 品牌 logo 与页眉 ===== */
.brand-mark svg{width:100%;height:100%}
.splash-mark svg{width:92px;height:92px}
.eyebrow-logo{width:16px;height:16px;vertical-align:-3px;margin-right:7px}
.page-head h1{font-weight:700}

/* ===== 反馈面板微调 ===== */

.reaction-panel header span,.discussion-panel header span{color:var(--accent-ink)}
.reaction-chip{transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}
.discussion-empty{justify-items:center;text-align:center;padding:20px 0;font-size:13px}

/* ===== 直接做题 · 顺序说明 tip ===== */
.order-tip{position:relative;display:inline-block;margin:0}
.order-tip-trigger{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;padding:2px 6px;margin:-2px -6px;border-radius:6px;color:inherit;font:inherit;font-size:inherit;text-align:left;cursor:help}
.order-tip-trigger svg{width:14px;height:14px;color:var(--muted);flex:none}
.order-tip-popover{position:absolute;left:0;top:calc(100% + 8px);z-index:60;width:max-content;max-width:min(320px,calc(100vw - 40px));background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 14px;font-size:12px;line-height:1.7;color:var(--ink);opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out),visibility var(--dur-fast)}
.order-tip:hover .order-tip-popover,.order-tip:focus-within .order-tip-popover{opacity:1;visibility:visible;transform:translateY(0)}
@keyframes tip-breathe{50%{background:var(--accent-soft)}}
@media (prefers-reduced-motion: no-preference){.order-tip-new .order-tip-trigger{animation:tip-breathe 1.5s var(--ease-out) 1}}

/* ===== 板块与解析显示偏好 ===== */
html.pref-hide-reactions .reaction-panel{display:none!important}
html.pref-hide-discussion .discussion-panel{display:none!important}
html.pref-hide-questiontags .question-topic-tag,html.pref-hide-questiontags .question-topic-tags{display:none!important}
html.pref-hide-brief .feedback-brief{display:none!important}
html.pref-hide-analysis .answer-feedback .explanation-section{display:none!important}
html.pref-hide-pitfalls .fb-pitfalls{display:none!important}
html.pref-hide-mnemonic .mnemonic-card{display:none!important}
html.anim-off .order-tip-new .order-tip-trigger{animation:none!important}
html.anim-off .order-tip-popover{transition:none!important}

/* ===== 本章完成页 ===== */
.chapter-complete-card{display:flex;align-items:center;gap:30px;padding:38px}
.completion-folio{font-size:92px;line-height:1;font-weight:700;letter-spacing:-.05em;color:var(--accent);font-variant-numeric:tabular-nums}
.chapter-complete-card h2{margin:0 0 7px}
.chapter-complete-card p{margin:0 0 17px;color:var(--muted)}
.completion-actions{display:flex;gap:10px;flex-wrap:wrap}

/* ===== 设置弹窗：操作行、提示与禁用态 ===== */
.settings-action-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px}
.settings-action-row small{color:var(--muted);font-size:11px;line-height:1.6}
.settings-hint{margin:0;padding:14px 0 18px;color:var(--muted);font-size:11px;line-height:1.7}
.button:disabled{opacity:.55;cursor:not-allowed}

/* ===== 手机端底部导航 ===== */
.mobile-nav button.active{color:var(--accent)}

/* ===== 学生端章分组收拢 ===== */
.chapter-group-toggle{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:10px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:inherit;text-align:left;cursor:pointer;margin:0 0 8px;flex-wrap:nowrap}
@media(hover:hover){.chapter-group-toggle:hover{border-color:var(--accent);background:var(--surface-2)}}
.chapter-group-toggle .group-chevron{width:20px;height:20px;color:var(--muted);flex:none;transform:rotate(90deg);transition:transform var(--dur-fast) var(--ease-out)}
.chapter-group.collapsed .group-chevron{transform:rotate(0)}
.chapter-group-toggle strong{flex:1;min-width:0;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chapter-group-toggle>span{color:var(--muted);font-size:12px;white-space:nowrap;flex:none}
.chapter-group-body>.chapter-grid{margin-left:12px}
.chapter-group-body{display:grid;grid-template-rows:1fr;transition:grid-template-rows var(--dur-med) var(--ease-out)}
.chapter-group.collapsed .chapter-group-body{grid-template-rows:0fr}
.chapter-group-body>.chapter-grid{overflow:hidden;min-height:0}
html.anim-off .chapter-group-body,html.anim-off .group-chevron{transition:none!important}
@media (prefers-reduced-motion: reduce){.chapter-group-body,.group-chevron{transition:none}}

/* ===== 管理端章节整理：拖拽交互 ===== */
#layoutWorkspace .layout-section{cursor:grab;transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}
#layoutWorkspace .layout-section.dragging{opacity:.45;transform:scale(.985)}
#layoutWorkspace .layout-section.selected{background:var(--accent-soft);box-shadow:inset 2px 0 0 var(--accent)}
#layoutWorkspace .layout-section.drop-before{box-shadow:0 -2px 0 var(--accent)}
#layoutWorkspace .layout-section.drop-after{box-shadow:0 2px 0 var(--accent)}
#layoutWorkspace .layout-section.selected.drop-before{box-shadow:inset 2px 0 0 var(--accent),0 -2px 0 var(--accent)}
#layoutWorkspace .layout-section.selected.drop-after{box-shadow:inset 2px 0 0 var(--accent),0 2px 0 var(--accent)}
.drag-handle{color:var(--muted);cursor:grab;user-select:none;font-size:13px;letter-spacing:-2px;padding:0 2px;flex:none}
.group-drag-handle{margin-right:2px}
.layout-select{width:15px;height:15px;accent-color:var(--accent);flex:none;margin:0}
#layoutWorkspace .layout-group,#layoutWorkspace .layout-unassigned{transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}
#layoutWorkspace .layout-group.drop-target,#layoutWorkspace .layout-unassigned.drop-target{border-color:var(--accent);border-style:dashed;background:color-mix(in srgb,var(--accent-soft) 45%,var(--surface))}
.layout-selected-count{color:var(--accent);font-size:11px;font-weight:700}
html.anim-off #layoutWorkspace .layout-section,html.anim-off #layoutWorkspace .layout-group,html.anim-off #layoutWorkspace .layout-unassigned{transition:none!important}

/* ===== Splash 心电跳跃小游戏 ===== */
.splash-game{width:min(480px,calc(100vw - 48px));margin:2px auto;opacity:0;transition:opacity var(--dur-med) var(--ease-out)}
.splash-game.show{opacity:1}
.splash-game-tip{display:flex;justify-content:space-between;align-items:baseline;margin:0 2px 6px;color:var(--muted);font-size:var(--fs-xs)}
.splash-game-tip b{color:var(--accent);font-size:16px;font-variant-numeric:tabular-nums}
.splash-game-canvas{display:block;width:100%;height:84px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);touch-action:manipulation}
html.anim-off .splash-game{transition:none!important}
/* route-loading 面板内的同款游戏挂载位（复用 splash-game 的提示条与画布样式） */
.route-tip{margin:2px 0 0;color:var(--muted);font-size:var(--fs-xs);min-height:18px;transition:opacity .22s ease}
.route-tip.swap{opacity:0}
.route-game{grid-column:1/-1;width:100%;max-width:560px;margin-top:18px;opacity:0;transition:opacity var(--dur-med) var(--ease-out)}
.route-game.show{opacity:1}
html.anim-off .route-game{transition:none!important}

/* 答案纠错反馈：学生端入口 + 后台聚合卡片 */
.report-entry{margin-top:18px;padding-top:14px;border-top:1px dashed var(--line);display:flex;justify-content:flex-end}
.report-button{border:0;background:transparent;color:var(--muted);font-size:12px;padding:6px 10px;border-radius:8px;text-decoration:underline;text-underline-offset:3px}
.report-button:hover:not(:disabled){color:var(--accent)}
.report-button:disabled{cursor:default;text-decoration:none;opacity:.75}
.report-dialog .report-reasons span{font-size:13px}
.report-dialog textarea{width:100%;resize:vertical;min-height:88px}

.report-status-seg{display:flex;gap:8px}
#reportsWorkspace{display:grid;gap:14px;margin-top:16px}
#reportsWorkspace .empty-state{border:1px dashed var(--line);border-radius:var(--radius)}
#reportsWorkspace .empty-state span{color:var(--muted);font-size:13px}
.report-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:18px 20px;display:grid;gap:10px}
.report-card.watch{border-left:4px solid var(--warn)}
.report-card.urgent{border-left:4px solid var(--bad)}
.report-card>header{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}
.report-card-title{display:grid;gap:2px}
.report-card-title strong{font-size:15px}
.report-card-title .muted{color:var(--muted);font-size:12px}
.report-card-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.report-card-meta .muted{color:var(--muted);font-size:12px}
.report-count{font-weight:600;font-size:13px;color:var(--accent)}
.report-count.watch{color:var(--warn)}
.report-count.urgent{color:var(--bad)}
.report-badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:6px}
.report-badge.watch{background:color-mix(in srgb,var(--warn) 14%,var(--surface));color:var(--warn)}
.report-badge.urgent{background:var(--bad-soft);color:var(--bad)}
.report-stem{margin:0;color:var(--ink);font-size:14px;line-height:1.6}
.reason-list{display:flex;gap:7px;flex-wrap:wrap}
.reason-chip{color:var(--muted);font-size:11px;font-weight:600}
.report-details summary{cursor:pointer;color:var(--accent);font-size:13px;font-weight:600}
.report-details ul{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px}
.report-details li{border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--surface-2)}
.report-details li header{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.report-details li .muted{color:var(--muted);font-size:12px}
.report-details li p{margin:6px 0 0;font-size:13px}
.report-card>footer{display:flex;justify-content:flex-end;gap:8px;border-top:1px solid var(--line);padding-top:12px}
@media(max-width:900px){
  .report-card>header{display:grid}
  .report-card>footer{flex-wrap:wrap}
}

/* 考研真题：题源徽标 / 编号解析项 / 参阅引用 */
.exam-badge{display:flex;flex-wrap:wrap;gap:8px;padding:14px 16px 0}.exam-badge span{font-size:11px;font-weight:700;color:var(--accent-ink);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));border-radius:6px;padding:3px 10px}.exam-badge .exam-badge-year{background:var(--accent);color:#fff;border-color:var(--accent)}
.explanation-bullet.explanation-num{grid-template-columns:18px 1fr}.explanation-bullet.explanation-num i{width:auto;height:auto;background:none;color:var(--accent);font-style:normal;font-weight:700;font-size:13px;margin-top:2px}
.explain-ref{color:var(--muted);font-size:12px;white-space:nowrap}
/* 考研中心页 */
.hub-kicker{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:14px}.hub-kicker .tag{font-size:11px}
.hub-section{margin-top:26px}.hub-section>h2{font-size:17px;margin:0 0 4px}.hub-section .hub-sub{color:var(--muted);font-size:12px;margin-bottom:12px}
.hub-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.hub-stat{background:var(--surface);border:1px solid var(--line);padding:14px 16px}.hub-stat b{display:block;font-size:24px;font-variant-numeric:tabular-nums}.hub-stat span{color:var(--muted);font-size:12px}
.prio-group{display:grid;gap:8px}.prio-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto auto auto auto;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);padding:10px 14px;font-size:13px}.prio-row .prio-title{font-weight:650}.prio-row .num{font-variant-numeric:tabular-nums;color:var(--muted);font-size:12px;white-space:nowrap}.prio-row .my-prog{color:var(--accent-ink);font-size:12px;white-space:nowrap}.prio-row .examples a{color:var(--muted);font-size:11px;text-decoration:underline}.prio-badge{font-size:11px;font-weight:600;border-radius:999px;padding:3px 9px;white-space:nowrap}.prio-a{background:color-mix(in srgb,var(--bad) 12%,var(--surface));color:#b42318;border:1px solid color-mix(in srgb,#b42318 35%,var(--line))}.prio-b{background:color-mix(in srgb,var(--warn) 14%,var(--surface));color:#a15c00;border:1px solid color-mix(in srgb,#a15c00 35%,var(--line))}.prio-c{background:var(--surface-2);color:var(--muted);border:1px solid var(--line)}
.hub-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.hub-chips button{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:4px 12px;font-size:12px;cursor:pointer}.hub-chips button.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.year-table{width:100%;border-collapse:collapse;font-size:14px}.year-table th,.year-table td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:center}.year-table th{color:var(--muted);font-size:12px;text-align:center}.year-table td:first-child,.year-table th:first-child{text-align:left;font-weight:700}.year-table td button{min-width:44px;min-height:44px;border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:8px 10px;font-size:14px;cursor:pointer;font-variant-numeric:tabular-nums}.year-table td button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.year-table td button:disabled{opacity:.25;cursor:default}.year-table td button.year-all{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 35%,var(--line));color:var(--accent-ink);font-weight:700}
.trend-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.trend-card{background:var(--surface);border:1px solid var(--line);padding:14px 16px}.trend-card h3{font-size:14px;margin:0 0 8px}.trend-card p{font-size:12px;line-height:1.7;margin:0 0 8px;color:var(--ink)}.trend-card .trend-action{font-size:12px;color:var(--accent-ink);background:var(--accent-soft);border-radius:8px;padding:8px 10px;line-height:1.6}
.hub-notes{margin-top:20px;color:var(--muted);font-size:11px;line-height:1.8;border-top:1px dashed var(--line);padding-top:12px}
@media(max-width:760px){.prio-row{grid-template-columns:auto minmax(0,1fr) auto;row-gap:4px}.prio-row .num:nth-of-type(2),.prio-row .num:nth-of-type(3){display:none}.year-table th,.year-table td{padding:6px 4px}.hub-section .explanation-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}}

/* 题库切换加载态 */
.bank-switch{position:relative}
.bank-switch.switching{pointer-events:none}
.bank-switch.switching button{opacity:.45}
.bank-switch.switching::after{content:"";position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;border:2px solid var(--accent);border-top-color:transparent;border-radius:50%;animation:bankSpin .7s linear infinite}
@keyframes bankSpin{to{transform:rotate(360deg)}}

/* ============ 方块医学院 MedCraft 主题（隐藏解锁） ============ */
html[data-theme="medcraft"]{
  --bg:#241a10;
  --surface:#c6c6c6;
  --surface-2:#b3b3b3;
  --ink:#232323;
  --muted:#565656;
  --line:#1e1e1e;
  --accent:#5eac24;
  --accent-soft:#9bd66a;
  --accent-ink:#1e3d05;
  --good:#41c41c;
  --bad:#c8372d;
  --warn:#e0a800;
  --radius:0px;
  --shadow:4px 4px 0 rgba(0,0,0,.45);
  --pixel-font:ui-monospace,"Cascadia Mono","Courier New",monospace;
}
html[data-theme="medcraft"] body{
  background-color:#241a10;
  background-image:
    repeating-conic-gradient(#2e2114 0% 25%, #241a10 0% 50%);
  background-size:32px 32px;
  font-family:var(--pixel-font);
}
html[data-theme="medcraft"] .panel,
html[data-theme="medcraft"] .subject-card,
html[data-theme="medcraft"] .hub-stat,
html[data-theme="medcraft"] .prio-row,
html[data-theme="medcraft"] .trend-card,
html[data-theme="medcraft"] .list-card{
  border:2px solid var(--line)!important;border-radius:0!important;
  box-shadow:inset 2px 2px 0 rgba(255,255,255,.5),inset -2px -2px 0 rgba(0,0,0,.35),var(--shadow);
}
html[data-theme="medcraft"] .sidebar{background:#3a2b1b;border-right:2px solid #1e1e1e}
html[data-theme="medcraft"] .side-nav a,
html[data-theme="medcraft"] .side-nav button{border-radius:0}
html[data-theme="medcraft"] .side-nav a.active,
html[data-theme="medcraft"] .side-nav a:hover{background:#5eac24;color:#fff}
html[data-theme="medcraft"] .bank-switch{border:2px solid #1e1e1e;border-radius:0;background:#6b5136}
html[data-theme="medcraft"] .bank-switch button{border-radius:0;color:#e8dcc8}
html[data-theme="medcraft"] .bank-switch button.active{background:#5eac24;color:#fff;box-shadow:none}
html[data-theme="medcraft"] .button,
html[data-theme="medcraft"] button.primary,
html[data-theme="medcraft"] button.secondary{
  border:2px solid #1e1e1e!important;border-radius:0!important;
  box-shadow:inset 2px 2px 0 rgba(255,255,255,.45),inset -2px -2px 0 rgba(0,0,0,.35),3px 3px 0 rgba(0,0,0,.4);
}
html[data-theme="medcraft"] .button:active,
html[data-theme="medcraft"] button.primary:active,
html[data-theme="medcraft"] button.secondary:active{transform:translate(2px,2px);box-shadow:inset 2px 2px 0 rgba(0,0,0,.3)}
html[data-theme="medcraft"] button.primary{background:#5eac24;color:#fff}
html[data-theme="medcraft"] .page-head h1,
html[data-theme="medcraft"] h2,
html[data-theme="medcraft"] h3,
html[data-theme="medcraft"] .brand strong{font-family:var(--pixel-font);letter-spacing:.02em}
html[data-theme="medcraft"] .question-card h1{font-family:inherit}
html[data-theme="medcraft"] .option{border:2px solid #1e1e1e;border-radius:0;background:#d6d6d6}
html[data-theme="medcraft"] .option.selected{background:#9bd66a}
html[data-theme="medcraft"] .option.correct{background:#41c41c;color:#fff}
html[data-theme="medcraft"] .option.wrong{background:#c8372d;color:#fff}
html[data-theme="medcraft"] .tag{border-radius:0;border:1.5px solid #1e1e1e}
html[data-theme="medcraft"] .progress-track,
html[data-theme="medcraft"] .subject-progress,
html[data-theme="medcraft"] .bar-track{border:2px solid #1e1e1e;background:#4a4a4a;height:12px}
html[data-theme="medcraft"] .progress-track i,
html[data-theme="medcraft"] .subject-progress i,
html[data-theme="medcraft"] .bar-track i{background:repeating-linear-gradient(90deg,#5eac24 0 8px,#4c8f1e 8px 10px)}
html[data-theme="medcraft"] .ring{border:2px solid #1e1e1e;border-radius:0}
html[data-theme="medcraft"] .answer-grid button{border-radius:0;border:1.5px solid #1e1e1e}
html[data-theme="medcraft"] .explanation-table th,
html[data-theme="medcraft"] .explanation-table td,
html[data-theme="medcraft"] .year-table th,
html[data-theme="medcraft"] .year-table td{border-color:#1e1e1e}
html[data-theme="medcraft"] .exam-badge span{border-radius:0;border:2px solid #1e1e1e}
html[data-theme="medcraft"] .mobile-nav{background:#3a2b1b;border-top:2px solid #1e1e1e}
html[data-theme="medcraft"] .mobile-header{background:#3a2b1b;border-bottom:2px solid #1e1e1e}

/* ============ 彩蛋：成就弹窗 ============ */
.advancement-toast{position:fixed;z-index:90;top:18px;right:18px;display:flex;gap:12px;align-items:center;max-width:330px;padding:12px 16px;background:#2b2b2b;border:2px solid #1e1e1e;box-shadow:inset 2px 2px 0 rgba(255,255,255,.25),inset -2px -2px 0 rgba(0,0,0,.5),4px 4px 0 rgba(0,0,0,.5);color:#fff;font-family:ui-monospace,"Cascadia Mono",monospace;animation:advancementIn 300ms var(--ease-out)}
.advancement-toast .adv-icon{width:34px;height:34px;flex:none;display:grid;place-items:center}
.advancement-toast .adv-icon svg{width:30px;height:30px}
.advancement-toast strong{display:block;color:#fc0;font-size:12px;margin-bottom:3px}
.advancement-toast span{font-size:12px;line-height:1.5;color:#e8e8e8}
.advancement-toast.out{animation:advancementOut .4s ease forwards}
@keyframes advancementIn{from{transform:translateX(120%);opacity:0}to{transform:none;opacity:1}}
@keyframes advancementOut{to{transform:translateX(120%);opacity:0}}

/* ============ 彩蛋：烟花与火箭 ============ */
.firework-canvas{position:fixed;inset:0;z-index:89;pointer-events:none;image-rendering:pixelated}
.egg-rocket{display:inline-grid;place-items:center;width:22px;height:22px;margin-left:6px;vertical-align:middle;opacity:.85}
.egg-rocket svg{width:18px;height:18px}

/* 等级头衔徽章 */
.rank-badge{display:flex;align-items:center;gap:10px;border:2px solid var(--line);border-radius:6px;padding:5px 14px;margin-bottom:14px;width:fit-content}
.rank-badge strong{font-size:14px;letter-spacing:.05em}
.rank-badge span{color:var(--muted);font-size:11px}

/* 讨论区等级头衔 */
.rank-chip{display:inline-block;margin-left:7px;padding:1px 8px;border:1px solid var(--rc,#8b8b8b);border-radius:6px;color:var(--rc,#8b8b8b);font-size:10px;font-weight:700;line-height:1.6;vertical-align:middle}

/* 讨论区作者行防挤压修复 */
.discussion-post header{flex-wrap:wrap;align-items:center}
.discussion-author{flex-wrap:nowrap;min-width:0}
.discussion-author i{flex:none}
.discussion-author .rank-chip{flex:none}
.discussion-author strong{overflow-wrap:anywhere}
.discussion-post time{flex:none;margin-left:auto}

/* 章节卡片操作行（从头开始 / 清除记录） */
.chapter-item{display:flex;flex-direction:column;gap:6px}
.chapter-item>.chapter-card{flex:1}
.chapter-tools{display:flex;justify-content:flex-end;gap:12px;padding:0 4px}
.chapter-tool{border:0;background:transparent;color:var(--muted);font-size:11px;padding:2px 4px;cursor:pointer}
.chapter-tool:hover{color:var(--accent);text-decoration:underline}
.chapter-tool.danger:hover{color:var(--bad,#c33)}
.chapter-grid-panel{border-top:1px solid var(--line);margin-top:12px;padding-top:14px;display:grid;gap:12px}
.register-mode{display:flex;gap:7px;margin-bottom:12px}.chapter-grid-filter button,.register-mode button{border:1px solid var(--line);background:var(--surface);padding:7px 13px;border-radius:8px;cursor:pointer;color:var(--ink);min-height:44px}
.chapter-grid-filter button.active,.register-mode button.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}
.chapter-status-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:8px}
.chapter-status-grid .answer-number{min-height:44px;cursor:pointer}
.chapter-grid-summary{margin:0;color:var(--muted);font-size:13px}

/* 个人资料表单与炫彩称号 */
.profile-form{display:grid;gap:10px;margin:6px 0 16px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.profile-form h3{margin:0;font-size:15px}
.rank-chip.rainbow{background:var(--accent);color:var(--on-accent);border:none}
.role-tag{display:inline-block;margin-left:7px;padding:1px 7px;border-radius:6px;font-size:10px;font-weight:600;line-height:1.6;vertical-align:middle}
.role-tag.super{background:#ff5555;color:#fff}
.role-tag.mod{background:var(--accent-soft);color:var(--accent-ink)}
.announce-badge{display:inline-block;margin-left:7px;padding:1px 7px;border-radius:6px;background:#e0a800;color:#fff;font-size:10px;font-weight:600;vertical-align:middle}
.discussion-post.is-announce{background:color-mix(in srgb,#e0a800 7%,var(--surface));border:1px solid color-mix(in srgb,#e0a800 40%,var(--line));border-radius:10px;padding:12px 14px;margin:8px 0}
.discussion-actions{display:flex;align-items:center;gap:12px}
.announce-check{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:12px;cursor:pointer}

/* 年级筛选条（本科题库目录）：分段选择器样式 */
.grade-filter-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 4px}
.grade-filter-label{color:var(--muted);font-size:12px;font-weight:700}
.grade-segment{display:inline-flex;gap:2px;padding:4px;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);max-width:100%;overflow-x:auto}
.grade-chip{flex:none;border:0;background:transparent;color:var(--muted);border-radius:999px;padding:6px 18px;font-size:13px;font-weight:650;white-space:nowrap;cursor:pointer;transition:background .16s,color .16s,box-shadow .16s}
.grade-chip:hover{color:var(--ink)}
.grade-chip.active{background:var(--surface);color:var(--accent);font-weight:700}

/* 管理端 科目整合 */
.subject-layout-h{margin:22px 0 10px;font-size:15px}
.subject-group-list{display:grid;gap:12px;margin-bottom:12px}
.subject-group-card{border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;background:var(--surface)}
.subject-group-head{display:flex;gap:10px;align-items:center;margin-bottom:10px}
.subject-group-head .text-input{max-width:280px}
.subject-group-members{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:6px}
.subject-group-members label{display:flex;align-items:center;gap:6px;font-size:13px}
.subject-group-members label.is-disabled{opacity:.45}
.grade-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px}
.grade-row{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line);border-radius:8px;padding:8px 12px}
.grade-row>span{font-size:13px;font-weight:650}
.grade-row>span small{display:block;color:var(--muted);font-weight:400}
.grade-row .text-input{width:110px;padding:6px 8px}

/* ================= 主题：档案·心跳(zine) ================= */
html[data-theme="zine"]{
  --bg:#f2ead8;--surface:#faf5ea;--surface-2:#ece2cd;
  --ink:#3b362f;--muted:#8a8070;--line:#d8cbb2;
  --accent:#d2401e;--accent-soft:#f3dcd0;--accent-ink:#a32c12;
  --good:#4d7a52;--good-soft:#e3ecdb;--bad:#c23a22;--bad-soft:#f6ddd2;
  --warn:#9a6a1f;
  --radius:3px;--radius-lg:6px;
  --shadow:2px 3px 0 rgba(59,54,47,.08);
  color-scheme:light;
}
/* 扫描噪点/纸纤维全局叠加层 */
html[data-theme="zine"] body::after{
  content:"";position:fixed;inset:0;z-index:9999;pointer-events:none;
  mix-blend-mode:multiply;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='260' height='260' filter='url(%23a)' opacity='0.55'/%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='800' height='800'%3E%3Cfilter id='b'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.004 0.006' numOctaves='3' seed='7' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='800' height='800' filter='url(%23b)' opacity='0.13'/%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='500' height='500'%3E%3Cfilter id='c'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.012 0.55' numOctaves='2' seed='19' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='500' height='500' filter='url(%23c)' opacity='0.16'/%3E%3C/svg%3E"),
    radial-gradient(ellipse at center, rgba(0,0,0,0) 45%, rgba(122,92,46,0.22) 100%);
}
/* 打字机 × 衬线:仅标题、品牌、眉题、按钮;正文题干保持系统无衬线 */
html[data-theme="zine"] h1,
html[data-theme="zine"] h2,
html[data-theme="zine"] h3,
html[data-theme="zine"] .brand strong,
html[data-theme="zine"] .splash-title strong,
html[data-theme="zine"] .eyebrow,
html[data-theme="zine"] .button,
html[data-theme="zine"] button.primary,
html[data-theme="zine"] button.secondary{
  font-family:"Courier New",Courier,"Songti SC",STSong,SimSun,serif;
  letter-spacing:.05em;
}
html[data-theme="zine"] .eyebrow{
  text-transform:uppercase;letter-spacing:.22em;font-size:11px;color:var(--accent-ink);
}
/* —— zine 组件:撕纸标本签 —— */
html[data-theme="zine"] .panel,
html[data-theme="zine"] .subject-card,
html[data-theme="zine"] .hub-stat,
html[data-theme="zine"] .trend-card,
html[data-theme="zine"] .list-card,
html[data-theme="zine"] .prio-row,
html[data-theme="zine"] .question-card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:2px 12px 3px 10px/10px 3px 12px 2px;
  box-shadow:var(--shadow);
}
/* 侧栏与导航 */
html[data-theme="zine"] .sidebar{background:var(--surface-2);border-right:1px solid var(--line)}
html[data-theme="zine"] .side-nav a.active,
html[data-theme="zine"] .side-nav button.active{background:var(--accent);color:#faf5ea}
html[data-theme="zine"] .bank-switch button.active{background:var(--accent);color:#faf5ea;box-shadow:none}
html[data-theme="zine"] .mobile-nav{background:var(--surface-2);border-top:1px solid var(--line)}
html[data-theme="zine"] .mobile-header{background:var(--surface-2);border-bottom:1px solid var(--line)}
/* 按钮 */
html[data-theme="zine"] .button.primary,
html[data-theme="zine"] button.primary{
  background:var(--accent);color:#faf5ea;
  border-radius:2px 10px 3px 9px/9px 3px 10px 2px;
}
html[data-theme="zine"] .button.secondary,
html[data-theme="zine"] button.secondary{
  border:1px solid var(--line);background:var(--surface);color:var(--ink);
  border-radius:2px 10px 3px 9px/9px 3px 10px 2px;
}
/* ECG 波形染朱红(splash 与移动端 header 已有的 SVG) */
html[data-theme="zine"] .splash-ecg-line path{stroke:var(--accent)}
html[data-theme="zine"] .header-pulse svg path{stroke:var(--accent)}
html[data-theme="zine"] .brand-mark{background:var(--accent)}

/* 需求反馈页 */
.feedback-layout{display:grid;grid-template-columns:320px minmax(0,1fr);gap:16px;align-items:stretch}
@media (max-width:900px){.feedback-layout{grid-template-columns:1fr}}
.feedback-side{display:grid;gap:16px;grid-template-rows:auto 1fr}
.feedback-contact-card{display:grid;gap:12px;justify-items:start;padding:22px}
.feedback-avatar{width:44px;height:44px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-weight:700;font-size:20px}
.feedback-contact-text p{margin:4px 0 0;color:var(--muted)}
.feedback-promise{padding:22px}
.feedback-promise h3{margin:0 0 8px;font-size:15px}
.feedback-promise ul{margin:0;padding-left:18px;color:var(--muted);display:grid;gap:6px}
.feedback-form-card{padding:24px}
.feedback-form-card form{display:grid;gap:14px}
#feedbackForm textarea{resize:vertical;min-height:120px}
.field-label{display:block;font-size:14px;font-weight:600;margin-bottom:6px}
.feedback-meta{display:flex;justify-content:space-between;align-items:center;margin-top:-8px}
.feedback-counter{color:var(--muted);font-size:12px;margin-left:auto}
.feedback-field-error{color:var(--bad);font-size:13px}
.text-input.invalid{border-color:var(--bad);background:var(--bad-soft)}
.feedback-submit{justify-self:start;min-width:160px}
.feedback-success{display:grid;gap:10px;justify-items:start}
.feedback-success p{margin:0;color:var(--muted)}
.record-mode-toggle{display:inline-flex}
.record-mode-toggle button{border:1px solid var(--line);background:var(--surface);padding:7px 13px;border-radius:8px;cursor:pointer;color:var(--ink)}
.record-mode-toggle button.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}
.studypoint-group-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.studypoint-group-head h3{margin:0}
.studypoint-body{color:var(--muted);margin:10px 0}
.studypoint-group .tags .tag{cursor:pointer;text-align:left}
.auto-submit-hint{display:inline-flex;align-items:center;min-height:42px;padding:0 12px;color:var(--accent-ink);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 36%,var(--line));border-radius:var(--radius);font-size:13px;font-weight:700}
.tag.success{color:var(--good);border-color:color-mix(in srgb,var(--good) 42%,var(--line));background:var(--good-soft)}
.wrongbook-knowledge-card{display:grid;gap:14px;padding:22px;border-left:4px solid var(--accent)}
.wrongbook-knowledge-card .eyebrow{display:block;margin-bottom:5px}
.wrongbook-knowledge-card .studypoint-body{margin:0;color:var(--ink);font-size:16px;line-height:1.8}
.wrongbook-mnemonic{display:grid;grid-template-columns:auto 1fr;gap:10px;padding:11px 13px;background:var(--accent-soft);color:var(--accent-ink)}
.wrongbook-contrast{padding:12px 14px;border:1px solid var(--line);background:var(--surface-muted)}
.wrongbook-contrast p{margin:6px 0 0;line-height:1.7;color:var(--muted)}
.wrongbook-source-questions summary{cursor:pointer;color:var(--muted);font-weight:700}
.wrongbook-source-questions .tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.wrongbook-source-questions .tag{cursor:pointer;text-align:left}
.fill-blanks{display:grid;gap:12px}
.fill-blank{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center}
.fill-blank-no{font-weight:700;color:var(--muted)}
.fill-blank.correct .fill-input{border-color:var(--good);background:var(--good-soft)}
.fill-blank.wrong .fill-input{border-color:var(--bad);background:var(--bad-soft)}
.fill-answer{grid-column:2;color:var(--bad);font-size:14px}
.upload-tabs{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-bottom:14px}
.upload-tabs button{border:none;background:var(--surface);padding:9px 18px;cursor:pointer;font-size:14px;color:var(--muted)}
.upload-tabs button.active{background:var(--accent);color:var(--accent-ink)}
.ai-import{display:grid;gap:14px}
.ai-import-note p{margin:6px 0 0;color:var(--muted)}
.ai-import>.muted{margin:0;color:var(--muted)}
.ai-prompt-card{border:1px dashed var(--line);border-radius:var(--radius);padding:12px}
.ai-prompt-card header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.ai-prompt-card pre{margin:0;white-space:pre-wrap;word-break:break-word;font-size:13px;color:var(--muted);max-height:260px;overflow:auto}
.ai-import-actions{display:flex;gap:10px;justify-content:flex-end}

/* ===== 2026 unified UX redesign: semantic tokens and shared primitives ===== */
:root{
  --color-canvas:var(--bg);--color-surface:var(--surface);--color-surface-subtle:var(--surface-2);
  --color-text:var(--ink);--color-text-muted:var(--muted);--color-border:var(--line);
  --color-primary:var(--accent);--color-primary-soft:var(--accent-soft);--color-primary-ink:var(--accent-ink);
  --color-success:var(--good);--color-success-soft:var(--good-soft);
  --color-danger:var(--bad);--color-danger-soft:var(--bad-soft);
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;
  --radius-control:10px;--radius-card:12px;
  --z-header:30;--z-action:40;--z-sheet:60;
  --muted:#53657d;--on-accent:#fff;--dur-fast:110ms;--dur-med:200ms;
}
html[data-theme="paper"]{--muted:#6f6558}
html[data-theme="zine"]{--muted:#6f6454;--accent:#ad3217;--accent-ink:#7f210f;--on-accent:#fff}
html{font-size:16px}
body{font-size:1rem;line-height:1.5}
button,a,select,input,textarea{touch-action:manipulation}
button:not(:disabled),a[href],select:not(:disabled),label[for]{cursor:pointer}
.button{border-radius:var(--radius-control);min-height:44px}
.button.small{min-height:44px}
.button.primary{color:var(--on-accent)}
.icon-button{width:44px;height:44px;border-radius:var(--radius-control)}
.text-input{min-height:44px}
.page-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end}
.page-head>div{min-width:0}
.page-head h1{max-width:18ch;text-wrap:balance}
.page-head p{color:var(--muted);line-height:1.65}
.page-head .head-actions{justify-content:flex-end}
.page-head .head-actions .button{white-space:nowrap}
@keyframes route-enter{from{opacity:.72;transform:translateY(8px)}to{opacity:1;transform:none}}
#appMain.route-enter{animation:route-enter 180ms var(--ease-out) both}
.hero-card:after{content:none}
.hero-card{min-height:250px}
.hero-metric{display:flex;align-items:baseline;gap:8px;margin-top:24px;color:var(--muted)}
.hero-metric strong{font-size:30px;line-height:1;color:var(--accent);font-variant-numeric:tabular-nums}
.hero-metric span{font-size:13px}
.rank-badge strong{color:var(--ink)!important}
.breadcrumbs{display:flex;align-items:center;gap:8px;margin:0 0 12px;color:var(--muted);font-size:13px}
.breadcrumbs a{color:var(--accent);min-height:32px;display:inline-flex;align-items:center}
.breadcrumbs i{font-style:normal;color:var(--line)}

/* Loading is revealed only when real work lasts longer than 250ms. */
.splash.pending{opacity:0;visibility:hidden;pointer-events:none}
.splash.pending.is-visible{opacity:1;visibility:visible;pointer-events:auto}
.splash.pending.leaving{opacity:0;visibility:visible}

/* Compact, contextual catalogue filters. */
.catalog-filter-stack{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:-8px 0 18px}
.catalog-filter-stack .official-source-bar{display:flex;align-items:center;gap:18px;flex:1 1 440px;margin:0;padding:12px 14px;box-shadow:none;border-radius:12px}
.catalog-filter-stack .official-source-bar>div{display:flex;align-items:center;gap:9px;white-space:nowrap}
.catalog-filter-stack .official-source-bar .eyebrow{font-size:10px}
.catalog-filter-stack .official-source-bar label{display:flex;align-items:center;gap:10px;margin-left:auto}
.catalog-filter-stack .official-source-bar label>span{font-size:12px;color:var(--muted);white-space:nowrap}
.catalog-filter-stack .official-source-bar select{min-width:230px;min-height:44px;padding-block:7px}
.catalog-filter-stack .grade-filter-row{margin:0;flex-wrap:nowrap}
.catalog-filter-stack .grade-segment{overflow:visible}
.grade-chip{min-height:44px;min-width:52px}
.order-tip-trigger{min-height:44px}

/* Practice feedback: takeaway first, with remembered analysis and discussion panels. */
.feedback-priority{padding:12px 0}
.feedback-priority h3{margin:0;font-size:16px;font-weight:600;color:var(--ink);line-height:1.5}.basis-note{display:flex;gap:6px;margin:10px 0 0;padding:2px 8px;border-left:2px solid var(--warn);color:var(--muted);font-size:13px;line-height:1.6}.basis-note-label{flex:none;font-weight:600;color:var(--warn)}
.feedback-brief{margin:8px 0 0;padding:0 2px;color:var(--ink);font-size:15px;line-height:1.75}
.feedback-disclosure{
  margin-top:12px;
  border-radius:8px;
  background:var(--surface-2);
}
.feedback-disclosure>summary{
  list-style:none;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:12px;
  padding:12px 14px;
  cursor:pointer;
  touch-action:manipulation;
}
.feedback-disclosure>summary::-webkit-details-marker{display:none}
.feedback-disclosure>summary::marker{content:""}
.feedback-disclosure-label{min-width:0}
.feedback-disclosure-label strong{color:var(--ink);font-size:15px;line-height:1.35}
.feedback-disclosure-toggle{
  display:grid;
  place-items:center;
  width:24px;
  height:24px;
  border:0;
  background:none;
  color:var(--muted);
  transition:transform var(--dur-fast) var(--ease-out);
}
.feedback-disclosure-toggle svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.feedback-disclosure[open] .feedback-disclosure-toggle{transform:rotate(180deg)}
.feedback-disclosure>summary:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 40%,transparent);outline-offset:2px}
.feedback-disclosure-body{padding:4px 14px 16px}
.feedback-disclosure-body>.explanation-shell:first-child{margin-top:0}

/* Admin desktop workbench. */
.admin-shell{max-width:1600px;display:grid;grid-template-columns:246px minmax(0,1fr);column-gap:20px;align-items:start}
.admin-topbar,.admin-command-head,.permission-strip{grid-column:1/-1}
.admin-tabs{grid-column:1;grid-row:4;position:sticky;top:16px;display:flex;flex-direction:column;align-items:stretch;gap:3px;max-height:calc(100vh - 32px);overflow:auto;padding:12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card)}
.admin-nav-group{padding:13px 10px 5px;color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.admin-tabs .admin-tab{width:100%;min-height:42px;padding:9px 11px;border-radius:8px;text-align:left}
.admin-tabs .admin-tab.active{background:var(--accent-soft);color:var(--accent-ink)}
.admin-tabs .admin-theme{margin:12px 4px 2px}
.admin-panel,.admin-mobile-notice{grid-column:2;grid-row:4;margin:0;min-width:0}
.review-command-bar,.published-command-bar,.compact-command-bar{position:sticky;top:0;z-index:12;background:var(--surface)}
.admin-mobile-notice{padding:28px}
.admin-mobile-notice h2{margin-top:0}
.action-dialog{width:min(520px,calc(100vw - 28px))}
.action-dialog form>header,.action-dialog form>footer{padding:18px 20px}
.action-dialog .dialog-scroll{padding:0 20px 20px}
.action-dialog [data-action-error]{margin:8px 0 0;color:var(--bad)}

@media(max-width:760px){
  body{font-size:15px}
  .mobile-header{height:58px;padding:7px 12px}
  .mobile-header .brand.compact strong{display:none}
  .mobile-tools{gap:8px}
  .mobile-account{min-width:44px;min-height:44px}
  .bank-switch.compact button{min-height:40px;min-width:52px}
  #appMain{padding:18px 14px calc(88px + env(safe-area-inset-bottom))}
  .page-head{display:block;margin-bottom:18px}
  .page-head h1{font-size:28px;max-width:none;line-height:1.15}
  .page-head p{font-size:14px}
  .page-head .head-actions{display:grid;grid-template-columns:1fr 1fr;margin-top:14px}
  .page-head .head-actions .wrongbook-back,.page-head .head-actions .record-mode-toggle{grid-column:1/-1}
  .page-head .head-actions .record-mode-toggle{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .page-head .head-actions .record-mode-toggle button{min-height:44px}
  .catalog-filter-stack{display:grid;gap:9px;margin:-3px 0 14px}
  .catalog-filter-stack .official-source-bar{display:grid;grid-template-columns:auto 1fr;gap:8px 12px;padding:11px 12px}
  .catalog-filter-stack .official-source-bar>div{align-self:center}
  .catalog-filter-stack .official-source-bar label{margin:0;display:block}
  .catalog-filter-stack .official-source-bar label>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .catalog-filter-stack .official-source-bar select{width:100%;min-width:0;min-height:44px}
  .catalog-filter-stack .grade-filter-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px}
  .catalog-filter-stack .grade-segment{display:grid;grid-template-columns:repeat(5,1fr);padding:3px}
  .grade-chip{min-width:44px;padding-inline:5px}
  .hero-grid{gap:12px}
  .hero-card{min-height:0;padding:22px 20px}
  .hero-card h2{font-size:25px;max-width:18ch}
  .hero-actions{display:grid;grid-template-columns:1fr 1fr;margin-top:20px}
  .hero-metric{margin-top:18px}
  .progress-card{padding:20px}
  .leaderboard-banner{margin-top:12px}
  .subject-card{min-height:132px;padding:16px}
  .subject-card h3{margin-top:14px}
  .subject-detail-summary{padding:18px}
  .chapter-card{min-height:88px}

  body[data-route="practice"] .mobile-header,
  body[data-route="practice"] .mobile-nav,
  body[data-route="community-practice"] .mobile-header,
  body[data-route="community-practice"] .mobile-nav{display:none!important}
  body[data-route="practice"] #appMain,
  body[data-route="community-practice"] #appMain{padding-top:0;padding-bottom:calc(84px + env(safe-area-inset-bottom))}
  body[data-route="practice"] .practice-top{top:8px;padding:8px 12px}
  body[data-route="practice"] .question-actions{bottom:0;padding-bottom:calc(9px + env(safe-area-inset-bottom));z-index:var(--z-action)}
  body[data-route="practice"] .answer-sheet{bottom:calc(70px + env(safe-area-inset-bottom));z-index:var(--z-sheet)}
  body[data-route="practice"] .question-card{padding-bottom:84px}

  .admin-shell{display:block;padding-inline:12px}
  .admin-topbar,.admin-command-head,.permission-strip{margin-inline:0}
  .admin-tabs{position:sticky;top:0;z-index:20;display:flex;flex-direction:row;overflow-x:auto;max-height:none;margin:0 -12px 12px;padding:8px 12px;border-radius:0;border-inline:0}
  .admin-nav-group,.admin-tabs .admin-theme{display:none}
  .admin-tabs .admin-tab{width:auto;min-width:max-content;min-height:44px}
  .admin-panel,.admin-mobile-notice{margin:0}
  .admin-panel{padding:16px 12px}
  .admin-command-head{display:none}
  .permission-strip{margin-top:8px}
  .review-command-bar,.published-command-bar,.compact-command-bar{top:60px}
  .review-card-actions .danger,.published-batch-actions .danger,.account-actions .danger{display:none}
}

@media(prefers-reduced-motion:reduce){
  .splash.pending,.feedback-disclosure-toggle{transition:none!important}
  #appMain.route-enter{animation:none!important}
}

.password-field{position:relative;display:block}
.password-field .text-input{width:100%;padding-right:72px}
.password-field .icon-button{position:absolute;right:4px;top:4px;width:60px;min-width:60px;height:40px;border-radius:var(--radius-sm);font-size:13px}
.action-dialog #adminActionDescription{white-space:pre-line}

/* Keep eliminated options visibly de-emphasized without lowering text below AA contrast. */
.option.eliminated{opacity:1;color:var(--muted);background:var(--surface-2);text-decoration:line-through}
.option.eliminated .option-letter{color:var(--muted);text-decoration:line-through}

/* Explanation sections are divided by whitespace and 1px rules, not card furniture. */
.feedback-disclosure-body{display:grid;gap:16px}
.structured-explanation{display:grid;gap:14px;padding-top:4px}
.explanation-section{
  display:block;
  padding:16px 0;
  border-bottom:1px solid var(--line);
}
.explanation-section:last-child{border-bottom:0}
.explanation-section .explanation-section-header{
  display:flex;
  align-items:center;
  gap:8px;
  margin-bottom:8px;
}
.explanation-section .explanation-section-header h4{
  margin:0;
  color:var(--ink);
  font-size:15px;
  font-weight:600;
  line-height:1.45;
  overflow-wrap:anywhere;
}
.explanation-section .explanation-copy{
  max-width:78ch;
  padding:0;
  border-left:0;
  background:none;
}
.explanation-copy>p,.explanation-copy>.explanation-bullet{max-width:78ch}
.textbook-citation,.textbook-source-card,.mnemonic-card,.evidence-grade{
  overflow:hidden;
  border-radius:var(--radius-control);
}
.textbook-source-section{margin-top:0;padding-top:4px}
.textbook-source-heading{padding-inline:2px}
.mnemonic-card{margin-top:0}
.evidence-grade{margin-bottom:0}

@media(max-width:760px){
  .structured-explanation{gap:12px}
  .textbook-source-section{padding-top:2px}
}

/* 2026 learning-loop shell */
body[data-route="practice"] .app-frame{grid-template-columns:minmax(0,1fr)}
body[data-route="practice"] .sidebar{display:none}
body[data-route="practice"] #appMain{max-width:1240px;padding-top:14px}
body[data-route="practice"] .practice-grid{grid-template-columns:minmax(0,820px) 280px;justify-content:center}
.option{min-height:56px;align-items:center}
.mark-button.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}
.answer-number.marked{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--accent) 70%,transparent)}
.answer-number.marked:after{content:'•';display:block;color:var(--accent);line-height:0}
.marked-legend{display:inline-block;width:8px;height:8px;margin-right:4px;border:2px solid var(--accent);background:transparent!important}

.continue-learning-card{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:16px 20px;background:var(--surface)}
.continue-learning-card h2{margin:0 0 2px;font-size:16px;font-weight:600}
.continue-learning-card p,.action-card p,.section-head p{margin:0;color:var(--muted)}
.daily-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0 28px}
.daily-metrics article{display:grid;gap:2px;padding:18px;border:1px solid var(--line);background:var(--surface)}
.daily-metrics strong{font-size:26px;color:var(--accent-ink);font-variant-numeric:tabular-nums}
.daily-metrics span{font-size:12px;color:var(--muted)}
.stats-danger{margin:20px 0 8px}
.home-metrics{font-size:var(--fs-sm);color:var(--muted);margin:4px 0 12px}
.home-metrics strong{color:var(--ink);font-weight:600}
.action-grid,.preset-grid,.plan-grid,.exam-mode-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.action-card{display:flex;min-height:190px;flex-direction:column;align-items:flex-start;padding:22px}
.action-card>span,.preset-card>span,.plan-card header span{color:var(--accent);font-size:11px;font-weight:600;text-transform:uppercase}
.action-card h3{margin:9px 0 6px;font-size:18px}
.action-card .button{margin-top:auto}
.preset-grid{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:28px}
.preset-card{display:grid;min-height:142px;align-content:center;gap:4px;text-align:left;color:var(--ink)}
.preset-card strong{font-size:20px}.preset-card small{color:var(--muted)}
.preset-card:hover{border-color:var(--accent);transform:translateY(-2px)}
.plan-card{padding:20px}.plan-card header{display:flex;justify-content:space-between;gap:12px}.plan-card h3{margin:3px 0}.plan-card header>strong{font-size:22px;color:var(--accent)}
.plan-card p{margin:8px 0 0;color:var(--muted);font-size:12px}
.weak-list{display:grid;gap:9px}.weak-list article{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:15px 18px}.weak-list article div{display:grid}.weak-list span{color:var(--muted);font-size:12px}
.builder-advanced{border:1px solid var(--line);border-radius:var(--radius);padding:0 14px}.builder-advanced>summary{cursor:pointer;padding:14px 0;font-weight:700;color:var(--accent-ink)}
.session-preview{display:grid;gap:2px;padding:14px 16px;border:1px solid var(--line);border-left:4px solid var(--accent);background:var(--surface-2)}
.session-preview span,.session-preview small{color:var(--muted)}
.review-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px}
.review-summary a{display:grid;gap:2px;padding:18px}.review-summary a.active{border-color:var(--accent);background:var(--accent-soft)}
.review-summary strong{font-size:26px}.review-summary span{color:var(--muted);font-size:12px}
.review-list{display:grid;gap:9px}.review-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:14px;padding:14px 17px}
.review-repeat-setting{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px;padding:14px 17px}.review-repeat-setting>span{display:grid}.review-repeat-setting small{color:var(--muted)}.review-repeat-setting input{width:22px;height:22px;accent-color:var(--accent)}
.review-row>span{color:var(--accent);font-weight:600}.review-row>div{display:grid}.review-row small{color:var(--muted)}
.exam-mode-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.exam-mode-grid article{padding:28px}.exam-mode-grid h2{margin:8px 0}.exam-mode-grid p{color:var(--muted)}
.profile-summary{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px;padding:24px}.profile-summary h2,.profile-summary p{margin:0}.profile-summary p{color:var(--muted)}
.me-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:16px 0}.me-metrics article{display:grid;padding:18px}.me-metrics strong{font-size:25px}.me-metrics span{color:var(--muted);font-size:12px}
.me-link-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.me-link-grid a{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;padding:20px}.me-link-grid svg{grid-row:1/3;color:var(--accent)}.me-link-grid span{color:var(--muted);font-size:12px}

/* 独立登录页 #/login：卡片居中 + ECG 品牌描线（复用 ecg-line-draw keyframes） */
.login-page{position:relative;max-width:400px;margin:6vh auto 0;display:grid;gap:18px}
.login-card{padding:28px 26px}
.login-brand{display:flex;align-items:center;gap:12px}
.login-brand .brand-mark{width:46px;height:46px}
.login-brand-name{display:grid}
.login-brand-name strong{font-size:19px;letter-spacing:-.02em;line-height:1.2}
.login-brand-name small{color:var(--muted);font-size:9px;letter-spacing:.18em;margin-top:3px}
.login-slogan{margin:7px 0 0;color:var(--muted);font-size:12px}
.login-ambient{position:absolute;top:-12vh;bottom:-6vh;left:50%;transform:translateX(-50%);width:100vw;z-index:0;pointer-events:none;background:linear-gradient(180deg,var(--accent-soft),transparent 70%)}
.login-watermark{position:absolute;top:-26px;right:6vw;width:320px;height:auto;color:var(--accent);opacity:.06;stroke-width:7}
.login-ecg-line{width:100%;height:auto;margin:12px 0 2px;overflow:visible;-webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.login-ecg-line path{fill:none;stroke:var(--accent);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.login-card .account-tabs{margin-top:8px}
.login-card .field{margin-bottom:11px}
.login-card .field span{font-weight:500;color:var(--muted)}
.login-card .register-mode{margin-bottom:14px}
.login-card .register-mode button{min-height:36px;padding:5px 12px;font-size:13px;color:var(--muted)}
.login-card .register-mode button.active{color:var(--accent-ink);font-weight:600}
.login-card form .button{width:100%}
.login-field{position:relative;display:block}
.login-field .login-field-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--muted);pointer-events:none}
.login-field .text-input{width:100%;padding-left:36px}
.login-field:has(.login-eye) .text-input{padding-right:42px}
.login-eye{position:absolute;right:5px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer}
.login-eye:hover{color:var(--accent);background:var(--surface-2)}
.login-eye svg{width:17px;height:17px}
.login-features{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0;padding:0;list-style:none}
.login-features li{display:grid;justify-items:center;gap:8px;text-align:center}
.login-feature-icon{display:grid;place-items:center;width:50px;height:50px;border-radius:50%;background:var(--accent-soft);color:var(--accent)}.login-features li:nth-child(2) .login-feature-icon{background:color-mix(in srgb,#41b883 13%,var(--surface));color:#2e9e77}.login-features li:nth-child(3) .login-feature-icon{background:color-mix(in srgb,#b48cff 16%,var(--surface));color:#8a63e0}
.login-feature-icon svg{width:22px;height:22px}
.login-feature-text{display:grid;gap:1px}
.login-feature-text strong{font-size:13px;font-weight:700}
.login-feature-text small{color:var(--muted);font-size:11px}
.login-guest{display:flex;align-items:center;gap:14px;margin:0;font-size:13px}
.login-guest:before,.login-guest:after{content:'';flex:1;height:1px;background:var(--line)}
.login-guest a{color:var(--muted);text-decoration:underline;text-underline-offset:3px}
.login-guest a:hover{color:var(--accent)}
@media (prefers-reduced-motion: no-preference){.login-ecg-line path{stroke-dasharray:460;stroke-dashoffset:460;animation:ecg-line-draw .6s linear .08s both}}
html.anim-off .login-ecg-line path,html.exam-focus .login-ecg-line path{animation:none!important;stroke-dashoffset:0}
/* 登录页氛围动效节点（仅 #/login，JS 门禁通过才创建；reduced-motion/anim-off 下不存在这些节点） */
.login-particles{position:absolute;inset:-8vh -80px;z-index:0;pointer-events:none}
.login-particle{position:absolute;border-radius:50%;background:var(--accent);opacity:.08;will-change:transform}
.login-card,.login-features,.login-guest{position:relative;z-index:1}.login-page>.login-slogan{position:relative;z-index:1;justify-self:center;margin:0 0 2px;transform:rotate(-3deg);font-family:"Segoe Script","Bradley Hand","Kaiti SC","楷体",cursive;font-style:italic;font-size:21px;color:var(--accent);letter-spacing:.06em}.login-slogan-underline{display:block;width:150px;height:11px;margin:-2px auto 0}.login-slogan-underline path{fill:none;stroke:var(--accent);stroke-width:2.4;stroke-linecap:round;opacity:.45}
.ecg-pulse-dot{fill:var(--accent);filter:drop-shadow(0 0 5px var(--accent))}.letter-fly{position:fixed;z-index:500;pointer-events:none;color:var(--accent);display:grid;place-items:center}.letter-fly svg{width:26px;height:26px}

.result-strip{display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px;margin:-20px -20px 20px;padding:13px 20px;background:var(--surface-2);border-bottom:1px solid var(--line)}
.answer-feedback.correct .result-strip strong{color:var(--good)}.answer-feedback.wrong .result-strip strong{color:var(--bad)}
.result-strip strong{font-weight:600}.result-strip span{font-size:12px;color:var(--muted)}
.reasoning-path,.option-explanations{padding:18px;border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-control)}
.reasoning-path h4,.option-explanations h4{margin:0 0 12px}.reasoning-path ol{display:grid;gap:10px;margin:0;padding-left:22px}
.reasoning-path li span,.reasoning-path li strong{display:block}.reasoning-path li span{color:var(--muted);font-size:12px}.reasoning-path li strong{font-weight:600}
.option-explanations{display:grid;gap:9px}.option-explanations h4{margin-bottom:2px}.option-explanations article{display:grid;grid-template-columns:32px 1fr;gap:10px}.option-explanations b{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--line);border-radius:50%}.option-explanations p{margin:0}.option-explanations small{color:var(--muted)}
.reflection-panel{display:grid;gap:14px;margin-top:12px;padding:14px 16px;border-radius:8px;background:var(--surface-2)}
.reflection-panel h4{margin:0 0 9px}.reflection-panel p{margin:8px 0 0;color:var(--muted)}
.reflection-options{display:flex;flex-wrap:wrap;gap:8px}.reflection-options button{min-height:44px;padding:8px 13px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.reflection-options button.active{border-color:var(--accent);background:var(--accent);color:#fff}
.reflection-hint{font-size:12px}.mastery-toggle.active{border-color:var(--good)!important;background:var(--good)!important;color:#fff}
.question-note-control{display:grid;justify-items:start;gap:8px;margin-top:14px}.question-note-control label{display:grid;gap:5px;width:min(100%,720px)}.question-note-control textarea{width:100%;min-height:90px;resize:vertical;padding:11px;border:1px solid var(--line);border-radius:var(--radius-control);background:var(--surface)}.question-note-control small{color:var(--muted)}
.question-card.is-swiping{transition:none!important;will-change:transform}
.mastered-wrong-summary{margin-top:18px;padding:22px}.mastered-wrong-summary h2{margin:3px 0}.mastered-wrong-summary p{margin:0;color:var(--muted)}.mastered-wrong-list{display:grid;gap:8px;margin:18px 0}.mastered-wrong-list label{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--line);background:var(--surface-2)}.mastered-wrong-list input{width:20px;height:20px;margin-top:2px}.mastered-wrong-list span{display:grid;gap:3px}.mastered-wrong-list small{color:var(--muted)}.mastered-wrong-actions{display:flex;gap:8px;flex-wrap:wrap}
.settings-page-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.settings-section{padding:22px}.settings-section h2{margin:0 0 14px}.settings-theme-section{grid-column:1/-1}.settings-link-list{display:flex;flex-wrap:wrap;gap:9px}.notes-toolbar{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:14px;margin-bottom:22px}.notes-toolbar form,.question-search-box form{display:flex;gap:8px;flex:1;max-width:620px}.notes-group{display:grid;gap:9px;margin:24px 0}.notes-group>header h2{margin:0}.notes-group>header span{color:var(--muted)}.note-card{padding:18px}.note-card>button{display:grid;gap:4px;width:100%;text-align:left;border:0;background:none}.note-card>button span,.note-card p{color:var(--muted)}.note-card p{margin:12px 0 0;padding-top:12px;border-top:1px solid var(--line);white-space:pre-wrap}.question-search-box{padding:18px;margin-bottom:16px}.search-result-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:start;padding:18px;margin-bottom:9px}.search-select input{width:20px;height:20px}.search-result-card strong{display:block}.search-result-card p{margin:4px 0;color:var(--muted)}.search-result-summary{display:flex;justify-content:space-between;align-items:center;margin:12px 0}.offline-search-notice,.offline-update{padding:10px 12px;margin-bottom:12px;background:var(--warn-soft,var(--accent-soft));color:var(--warn);border-left:3px solid var(--warn)}.search-more{display:block;margin:18px auto}.offline-storage-summary{display:grid;gap:5px;padding:18px;margin-bottom:16px}.offline-storage-summary span,.offline-storage-summary small,.offline-bank-card p{color:var(--muted)}.offline-bank-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.offline-bank-card{padding:22px}.offline-bank-card header{display:flex;justify-content:space-between;gap:12px}.offline-bank-card h2{margin:2px 0}.offline-bank-card .progress-track{margin:18px 0}.offline-actions{display:flex;gap:8px;flex-wrap:wrap}.list-note-editor{grid-column:2/-1;display:grid;gap:5px}.list-note-editor textarea{min-height:90px;padding:10px;border:1px solid var(--line);background:var(--surface);resize:vertical}.list-note-editor small{color:var(--muted)}
@media(max-width:720px){.settings-page-grid,.offline-bank-grid{grid-template-columns:1fr}.settings-theme-section{grid-column:auto}.notes-toolbar,.search-result-summary{align-items:stretch;flex-direction:column}.notes-toolbar form,.question-search-box form{max-width:none;width:100%}.search-result-card{grid-template-columns:auto minmax(0,1fr)}.search-result-card>.button{grid-column:2}.list-note-editor{grid-column:1/-1}}
.exam-target-settings{grid-column:1/-1}.exam-target-list{display:grid;gap:8px;margin:14px 0}.exam-target-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px;border:1px solid var(--line);background:var(--surface-2)}.exam-target-row>div:first-child{display:grid;gap:3px}.exam-target-row span{color:var(--muted);font-size:12px}.exam-target-row.is-hidden{opacity:.65}.exam-target-form{display:grid;grid-template-columns:1.2fr 1fr 1fr 1.4fr auto;gap:8px}
@media(max-width:800px){.exam-target-form{grid-template-columns:1fr}.exam-target-row{align-items:flex-start;flex-direction:column}}
.stats-metrics{margin-top:0}.thirty-day-chart{height:210px;display:flex;align-items:flex-end;gap:3px;padding-top:12px;border-bottom:1px solid var(--line)}
.thirty-day-chart i{position:relative;flex:1;height:calc(max(.03,var(--count))*100%);min-width:3px;background:color-mix(in srgb,var(--accent) 35%,var(--surface-2));border-top:3px solid var(--accent)}
.thirty-day-chart i span{position:absolute;left:0;right:0;bottom:0;height:calc(var(--rate)*100%);background:var(--accent)}
.thirty-day-chart small{position:absolute;top:calc(100% + 6px);left:0;white-space:nowrap;color:var(--muted);font-style:normal;font-size:9px}
.time-distribution{display:grid;place-items:start;gap:5px;min-height:170px;align-content:center}.time-distribution strong{font-size:34px;color:var(--accent)}.time-distribution span,.time-distribution small{color:var(--muted)}
.duration-bars{display:grid;gap:12px;margin:22px 0}.duration-bars>div{display:grid;grid-template-columns:76px 1fr 32px;align-items:center;gap:9px}.duration-bars span,.chart-panel>small{color:var(--muted);font-size:12px}.duration-bars i{height:9px;overflow:hidden;background:var(--line)}.duration-bars b{display:block;height:100%;background:var(--accent)}
.network-status{position:fixed;z-index:120;left:50%;top:10px;transform:translateX(-50%);padding:7px 13px;border:1px solid color-mix(in srgb,var(--bad) 45%,var(--line));border-radius:999px;background:var(--bad-soft);color:var(--bad);font-size:12px;font-weight:700;box-shadow:var(--shadow)}

@media(max-width:980px){
  .preset-grid{grid-template-columns:repeat(2,1fr)}
  .action-grid,.plan-grid,.me-link-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:760px){
  body[data-route="practice"] .practice-topline{gap:7px}
  body[data-route="practice"] .practice-topline>.progress-track{flex:1;min-width:34px}
  body[data-route="practice"] .practice-topline .mark-button{padding-inline:8px}
  .continue-learning-card{display:grid}.continue-learning-card .button{width:100%}
  .daily-metrics{grid-template-columns:repeat(2,1fr)}
  .action-grid,.plan-grid,.exam-mode-grid,.me-link-grid{grid-template-columns:1fr}
  .review-summary{grid-template-columns:repeat(2,1fr)}
  .review-row{grid-template-columns:32px minmax(0,1fr)}.review-row .button{grid-column:2;justify-self:start}
  .profile-summary{grid-template-columns:auto 1fr}.profile-summary .button{grid-column:1/3}
  .login-page{margin:14px 14px 0}
  .login-feature-icon{width:44px;height:44px}
  .login-watermark{width:170px;right:-20px;top:-6px}
  .result-strip{margin:-20px -16px 18px}
}
/* Paper theme keeps the ruled notebook texture across the restored application shell. */
html[data-theme="paper"]{--paper-rule:rgba(102,140,166,.20);--paper-rule-soft:rgba(102,140,166,.12);--paper-margin:rgba(177,87,76,.38);--paper-fiber:rgba(112,82,54,.035);--paper-rule-size:32px}
html[data-theme="paper"] body{background-color:var(--bg);background-image:linear-gradient(105deg,transparent 0 47%,var(--paper-fiber) 48%,transparent 49% 100%),repeating-linear-gradient(to bottom,transparent 0 calc(var(--paper-rule-size) - 1px),var(--paper-rule-soft) calc(var(--paper-rule-size) - 1px) var(--paper-rule-size));background-size:260px 220px,100% var(--paper-rule-size)}
html[data-theme="paper"] .panel,html[data-theme="paper"] .subject-card,html[data-theme="paper"] .chapter-card,html[data-theme="paper"] .list-card{background-color:var(--surface);background-image:repeating-linear-gradient(to bottom,transparent 0 calc(var(--paper-rule-size) - 1px),var(--paper-rule) calc(var(--paper-rule-size) - 1px) var(--paper-rule-size));background-position:0 10px;box-shadow:0 10px 28px rgba(91,62,37,.07)}
html[data-theme="paper"] .question-card,html[data-theme="paper"] .continue-learning-card,html[data-theme="paper"] .chapter-card,html[data-theme="paper"] .list-card{background-image:linear-gradient(to right,transparent 0 23px,var(--paper-margin) 23px 24px,transparent 24px),repeating-linear-gradient(to bottom,transparent 0 calc(var(--paper-rule-size) - 1px),var(--paper-rule) calc(var(--paper-rule-size) - 1px) var(--paper-rule-size));background-position:0 0,0 10px}

html[data-theme="paper"] .page-head h1,html[data-theme="paper"] .section-head h2,html[data-theme="paper"] .question-card>h1{font-family:Georgia,"Songti SC","STSong","SimSun",serif;letter-spacing:.01em}
html[data-theme="paper"] .tag,html[data-theme="paper"] .grade-segment,html[data-theme="paper"] .aggregate-members span{background-color:rgba(255,253,249,.92)}
html[data-theme="paper"] .option,html[data-theme="paper"] .explanation-section,html[data-theme="paper"] .explanation-copy,html[data-theme="paper"] .feedback-disclosure,html[data-theme="paper"] .feedback-disclosure>summary,html[data-theme="paper"] .textbook-citation,html[data-theme="paper"] .textbook-source-card,html[data-theme="paper"] .mnemonic-card,html[data-theme="paper"] .evidence-grade{background-image:none}
html[data-theme="paper"] .option{background-color:rgba(255,253,249,.94)}html[data-theme="paper"] .option.selected{background-color:var(--accent-soft)}html[data-theme="paper"] .option.correct{background-color:var(--good-soft)}html[data-theme="paper"] .option.wrong{background-color:var(--bad-soft)}html[data-theme="paper"] .option.eliminated{background-color:var(--surface-2)}

/* Account preferences and the three public themes (plus the hidden MedCraft theme). */
.me-preferences{display:grid;grid-template-columns:minmax(280px,.72fr) minmax(0,1.6fr);gap:12px;margin:16px 0}
.me-focus-panel{display:flex;flex-direction:column;justify-content:space-between;gap:22px;padding:22px}.me-focus-panel h2,.me-focus-panel p{margin:3px 0 0}.me-focus-panel p{color:var(--muted)}
.focus-switch{position:relative;display:flex;align-items:center;gap:10px;min-height:48px;cursor:pointer}.focus-switch input{position:absolute;z-index:2;left:0;top:11px;width:48px;height:26px;margin:0;opacity:0;cursor:pointer}.focus-switch>span{position:relative;width:48px;height:26px;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);pointer-events:none;transition:background-color var(--dur-fast),border-color var(--dur-fast)}.focus-switch>span:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--muted);transition:transform var(--dur-fast),background-color var(--dur-fast)}.focus-switch input:checked+span{border-color:var(--accent);background:var(--accent-soft)}.focus-switch input:checked+span:after{transform:translateX(22px);background:var(--accent)}.focus-switch input:focus-visible+span{outline:3px solid color-mix(in srgb,var(--accent) 42%,transparent);outline-offset:3px}
.me-theme-panel{padding:22px}.me-theme-panel>header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:15px}.me-theme-panel h2{margin:3px 0 0}
.mobile-theme-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.mobile-theme-choice{position:relative;min-width:0;min-height:76px;display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:9px;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--surface);cursor:pointer;transition:border-color var(--dur-fast),background-color var(--dur-fast),box-shadow var(--dur-fast)}
.mobile-theme-choice input{position:absolute;opacity:0;pointer-events:none}.mobile-theme-choice>span:last-child{display:grid;min-width:0}.mobile-theme-choice strong{font-size:13px;line-height:1.35}.mobile-theme-choice small{color:var(--muted);font-size:10px;line-height:1.35}.mobile-theme-choice:has(input:checked){border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.mobile-theme-choice:has(input:checked) small{color:var(--ink);font-weight:600}.mobile-theme-choice:has(input:focus-visible){outline:3px solid color-mix(in srgb,var(--accent) 42%,transparent);outline-offset:2px}
.mobile-theme-preview{position:relative;width:44px;height:44px;overflow:hidden;border:1px solid rgba(15,23,42,.22);border-radius:10px}
.theme-preview-clinical{background:#edf4ff;color:#2563eb}.theme-preview-clinical:before{content:"";position:absolute;left:5px;right:5px;top:21px;height:2px;background:currentColor}.theme-preview-clinical i{position:absolute;left:16px;top:15px;width:12px;height:12px;border-left:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg)}
.theme-preview-paper{background:repeating-linear-gradient(to bottom,#fffaf2 0 8px,#adc4d2 8px 9px)}.theme-preview-paper:before{content:"";position:absolute;top:0;bottom:0;left:11px;width:1px;background:#c77d72}
.theme-preview-zine{background:#ece4d5;color:#a93820}.theme-preview-zine:before{content:"";position:absolute;left:7px;right:7px;top:22px;height:2px;background:currentColor}.theme-preview-zine:after{content:"";position:absolute;left:18px;top:13px;width:9px;height:14px;background:currentColor;clip-path:polygon(50% 0,62% 32%,100% 22%,76% 52%,94% 70%,62% 68%,50% 100%,38% 68%,6% 70%,24% 52%,0 22%,38% 32%)}
.me-metrics.is-focus{grid-template-columns:repeat(2,1fr)}
.exam-focus-chip{display:inline-flex;align-items:center;min-height:28px;color:var(--muted);font-size:11px;font-weight:700;white-space:nowrap}

/* Exam focus is a presentation overlay; functional loading and input feedback remain visible. */
html.exam-focus .splash,html.exam-focus .theme-answer-effect,html.exam-focus .advancement-toast,html.exam-focus .firework-canvas,html.exam-focus .egg-rocket,html.exam-focus .streak-badge,html.exam-focus .leaderboard-banner,html.exam-focus .reaction-panel,html.exam-focus .difficulty-live,html.exam-focus .question-topic-tag,html.exam-focus .question-topic-tags{display:none!important}
html.exam-focus #appMain.route-enter,html.exam-focus .question-card.answer-just-judged,html.exam-focus .question-card.enter-next,html.exam-focus .question-card.enter-prev,html.exam-focus .score-number{animation:none!important}
html.exam-focus .preset-card:hover{transform:none}

@media(max-width:760px){
  html[data-theme="paper"]{--paper-rule-size:30px}
  html[data-theme="paper"] .question-card,html[data-theme="paper"] .continue-learning-card,html[data-theme="paper"] .chapter-card,html[data-theme="paper"] .list-card{background-image:linear-gradient(to right,transparent 0 11px,var(--paper-margin) 11px 12px,transparent 12px),repeating-linear-gradient(to bottom,transparent 0 calc(var(--paper-rule-size) - 1px),var(--paper-rule) calc(var(--paper-rule-size) - 1px) var(--paper-rule-size))}
  .me-preferences{grid-template-columns:1fr}
  .me-theme-panel>header{display:grid}.me-theme-panel>header .button{width:100%}
  .mobile-theme-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mobile-theme-choice{min-height:72px}
  .exam-focus-chip{order:3}
}
@media(max-width:390px){.mobile-theme-grid{grid-template-columns:1fr}}

.optional-mastery h4{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.optional-mastery h4 small{font-size:12px;font-weight:500;color:var(--muted)}
.knowledge-mastery-panel{margin-bottom:18px}
.knowledge-mastery-panel>h2{margin-bottom:4px}
.knowledge-mastery-list{display:grid;gap:10px;margin-top:16px}
.knowledge-mastery-row{display:grid;grid-template-columns:minmax(160px,1.2fr) minmax(150px,1fr) minmax(110px,.55fr) auto;gap:16px;align-items:center;padding:14px 0;border-top:1px solid var(--line)}
.knowledge-mastery-row:first-child{border-top:0}
.knowledge-mastery-row>div:first-child{display:grid;gap:4px}
.knowledge-mastery-row small{color:var(--muted)}
.knowledge-mastery-row em{font-style:normal;font-weight:700;color:var(--muted)}
.knowledge-mastery-row.is-learning em{color:var(--bad)}
.knowledge-mastery-row.is-mastered em{color:var(--good)}
.knowledge-mastery-progress{display:grid;grid-template-columns:1fr 42px;align-items:center;gap:10px}
.knowledge-mastery-progress i{height:8px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.knowledge-mastery-progress b{display:block;height:100%;border-radius:inherit;background:var(--accent)}
.knowledge-mastery-row.is-learning .knowledge-mastery-progress b{background:var(--bad)}
.knowledge-mastery-row.is-mastered .knowledge-mastery-progress b{background:var(--good)}
.knowledge-mastery-progress span{text-align:right;font-weight:700}
@media(max-width:760px){
  .knowledge-mastery-row{grid-template-columns:1fr auto;gap:10px}
  .knowledge-mastery-progress{grid-column:1/-1}
  .knowledge-mastery-row>button{grid-column:2;grid-row:1/3}
}
.round-chip{font-size:12px;color:var(--muted,#6b7280);white-space:nowrap}

/* v75: distinguish review tools and progressively disclose subject chapters. */
.home-review-section{padding-top:24px;border-top:1px solid var(--line)}.home-review-section .home-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.home-review-section .home-action{background:var(--surface-2,#f1f5f9)}
.scope-subject-list{display:grid;gap:8px}.scope-help{font-size:13px;color:var(--muted);margin:0 0 8px}.scope-subject{display:grid;grid-template-columns:44px minmax(0,1fr);border-bottom:1px solid var(--line)}.scope-whole{display:flex;align-items:flex-start;justify-content:center;padding-top:20px;min-height:60px}.scope-subject input{width:18px;height:18px;accent-color:var(--accent,#2563eb)}.scope-subject summary{display:flex;align-items:center;gap:10px;min-height:60px;padding:8px;cursor:pointer;list-style:none}.scope-subject summary::-webkit-details-marker{display:none}.scope-subject summary>span:nth-child(2){flex:1}.scope-subject summary small{display:block;color:var(--muted);font-size:12px}.scope-letter{color:var(--accent,#2563eb);font-size:12px}.scope-disclosure{font-size:12px;color:var(--muted)}.scope-disclosure:after{content:' ＋'}.scope-subject details[open] .scope-disclosure:after{content:' −'}.scope-chapters{padding:0 8px 12px;border-left:2px solid var(--line)}.scope-chapters label{display:flex;align-items:center;gap:10px;min-height:44px;padding:8px;font-size:14px;cursor:pointer}.scope-chapters label span{flex:1;min-width:0}.scope-chapters small{white-space:nowrap;color:var(--muted)}
.chapter-index-heading{display:flex;align-items:flex-start;gap:16px;margin:20px 0}.chapter-index-heading>strong{padding-top:12px;white-space:nowrap}.chapter-index{min-width:0;flex:1}.chapter-index summary{cursor:pointer;min-height:44px;padding:10px 12px;color:var(--accent,#2563eb)}.chapter-index nav{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));max-height:264px;overflow-y:auto;gap:6px;padding:8px;border:1px solid var(--line);border-radius:10px}.chapter-index button{min-height:44px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left;padding:10px;border:0;border-radius:6px;background:var(--surface-2,#f1f5f9);color:inherit}.chapter-item{scroll-margin-top:90px}

/* v90: correctness is state, not an animation trigger. A committed answer owns
   one theme effect; rebuilding history/community markup must stay still. */
.question-card .option.correct,
.question-card .option.correct .option-letter::after,
.question-card .answer-feedback.correct h3,
.question-card.answer-just-judged,
.question-card .option.selected:not(:disabled) .option-letter{animation:none!important}
