: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:18px;--shadow:0 12px 35px rgba(30,55,90,.08);--sidebar:248px;--dur-fast:140ms;--dur-med:280ms;--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;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="night"]{--bg:#121714;--surface:#1a1f1c;--surface-2:#202722;--ink:#e7f0eb;--muted:#9aaba1;--line:#344139;--accent:#10b981;--accent-soft:#153b2d;--accent-ink:#7ce6bc;--good:#34d399;--good-soft:#153b2d;--bad:#fb7185;--bad-soft:#442128;--warn:#fbbf24;--shadow:none;color-scheme:dark}
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:18px;--radius-lg:26px;--shadow:0 14px 36px rgba(91,62,37,.08)}
html[data-theme="gray"]{--bg:#f1f2f3;--surface:#fff;--surface-2:#f6f6f6;--ink:#171717;--muted:#777;--line:#d7d7d7;--accent:#171717;--accent-soft:#e8e8e8;--accent-ink:#000;--good:#306e50;--good-soft:#edf5f0;--bad:#b33b3b;--bad-soft:#faeeee;--warn:#7b641f;--radius:4px;--radius-lg:6px;--shadow:none}
*{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:9px;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);box-shadow:0 2px 8px rgba(20,32,51,.08)}.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:7px}.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:750;letter-spacing:.13em;text-transform:uppercase}.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)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.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,40px);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 .18s,border-color .18s}.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{background:var(--surface-2);border:1px solid var(--line);padding:4px 8px;border-radius:999px;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:0;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(12px);z-index:10;padding:10px 0 16px}.practice-topline{display:flex;align-items:center;gap:15px}.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 .3s 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:7px;flex-wrap:wrap;margin-bottom:22px}.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}.answer-feedback{margin-top:22px;padding:20px;border-top:1px solid var(--line)}.answer-feedback h3{margin:0 0 8px}.answer-feedback.correct h3{color:var(--good)}.answer-feedback.wrong h3{color:var(--bad)}.knowledge-tag{display:inline-block;margin-top:12px;padding:5px 9px;background:var(--accent-soft);color:var(--accent-ink);font-size:12px;border-radius:999px}.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:5px;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:750;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:7px}.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);text-transform:uppercase}.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:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(14px);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}.filter-panel .button{width:100%;margin-top:12px}.practice-top{top:62px;padding-top:8px}.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{max-height:calc(100vh - 18px);margin:auto 9px 9px;width:calc(100vw - 18px)}.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:750;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:grid;grid-template-columns:146px minmax(0,1fr);border-bottom:1px solid var(--line);padding:22px 0}.explanation-section header{display:flex;align-items:baseline;gap:11px;padding:0 16px}.explanation-section header span{color:var(--accent);font-size:11px;font-weight:750;font-variant-numeric:tabular-nums}.explanation-section h4{margin:0;font-size:15px}.explanation-copy{padding:0 18px;border-left:1px solid var(--line);max-width:78ch}.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:#b42318;padding:0;font-weight:850}.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:grid;grid-template-columns:146px minmax(0,1fr);border:1px solid var(--accent);margin-top:20px;background:var(--surface)}.citation-folio{background:var(--accent);color:#fff;padding:18px 16px;display:grid;grid-template-columns:1fr auto;align-items:end}.citation-folio span{grid-column:1/-1;font-size:10px;font-weight:700;letter-spacing:.04em}.citation-folio strong{font-size:40px;line-height:1;font-weight:750;font-variant-numeric:tabular-nums}.citation-folio small{font-size:12px;padding-bottom:4px}.citation-detail{padding:16px 18px;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:9px}.citation-detail .explanation-bullet{display:none}.citation-detail>div{color:var(--muted);font-size:12px}.citation-detail>div p{line-height:1.6}
.explanation-block header small{display:block;color:var(--muted);font-size:10px;margin-bottom:4px}.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:4px solid var(--accent);background:var(--accent-soft);padding:14px 16px}.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:800;letter-spacing:.12em}.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:800;letter-spacing:.12em}.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{background:var(--source-color);padding:13px 11px}.source-evidence-row .citation-folio strong{font-size:31px}.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{grid-template-columns:110px minmax(0,1fr);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-section{grid-template-columns:1fr;padding:17px 0}.explanation-section header{padding:0 3px 10px}.explanation-copy{border-left:0;padding:0 3px;max-width:none}.textbook-citation{grid-template-columns:112px minmax(0,1fr)}.citation-folio{padding:14px 11px}.citation-folio strong{font-size:34px}.citation-detail{padding:13px}.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:750}.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:800}

/* 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:800}.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:800;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;letter-spacing:-.15em}.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(--accent);margin-top:20px;background:var(--surface)}.mnemonic-card header{padding:17px;background:var(--accent);color:#fff}.mnemonic-card header span{font-size:10px;font-weight:800;letter-spacing:.12em}.mnemonic-card h3{margin:5px 0 0;color:#fff}.mnemonic-card p{margin:0;padding:21px;font-size:17px;line-height:1.8;font-weight:700}.community-card{border:1px solid var(--line);margin-top:20px;background:var(--surface)}.community-loading{padding:18px}.community-loading p{margin:0;color:var(--muted);font-size:12px}.reaction-panel,.discussion-panel{padding:20px}.reaction-panel{border-bottom:1px solid var(--line)}.reaction-panel>header,.discussion-panel>header{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:14px}.reaction-panel header span,.discussion-panel header span{color:var(--accent);font-size:10px;font-weight:800;letter-spacing:.08em}.reaction-panel h3,.discussion-panel h3{margin:3px 0 0}.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)}
@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. */
.community-card{overflow:hidden;border-color:color-mix(in srgb,var(--accent) 16%,var(--line));box-shadow:none}
.reaction-panel,.discussion-panel{padding:28px 30px}
.reaction-panel{position:relative;background:linear-gradient(90deg,color-mix(in srgb,var(--accent-soft) 46%,var(--surface)) 0 6px,var(--surface) 6px);border-bottom:1px solid var(--line)}
.community-section-head{display:grid!important;grid-template-columns:54px minmax(0,1fr) auto;align-items:center!important;gap:14px!important;margin-bottom:22px!important}
.community-section-number{font-size:34px;line-height:1;font-weight:300;letter-spacing:-.08em;color:color-mix(in srgb,var(--accent) 72%,var(--muted));font-variant-numeric:tabular-nums}
.community-section-head>div{padding-left:14px;border-left:1px solid var(--line)}
.community-section-head>div>span{display:block;margin-bottom:2px;color:var(--accent);font-size:10px;font-weight:800;letter-spacing:.12em}
.community-section-head h3{margin:0;color:var(--ink)!important;font-size:21px;letter-spacing:-.025em}
.community-section-head>small{align-self:center;max-width:240px;color:var(--muted);font-size:11px;text-align:right}
.reaction-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-left:68px}
.reaction-chip{position:relative;justify-content:space-between;min-height:46px;padding:9px 11px;border-color:var(--line);background:var(--surface);font-size:12px;font-weight:620;text-align:left;transition:background .16s,border-color .16s,color .16s,transform .16s}
.reaction-chip:hover{transform:translateY(-1px);border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}
.reaction-chip.selected{border-color:var(--accent);background:var(--accent);color:#fff;box-shadow:inset 4px 0 0 color-mix(in srgb,#fff 58%,var(--accent))}
.reaction-chip.selected:hover{color:#fff;background:var(--accent)}
.reaction-chip strong{min-width:20px;padding:1px 6px;border:1px solid currentColor;text-align:center;font-size:10px;font-weight:750;opacity:.8}
.discussion-panel{background:var(--surface)}
.discussion-count{display:flex;align-items:baseline;justify-content:flex-end;gap:4px;min-width:52px;color:var(--ink);font-size:24px;font-variant-numeric:tabular-nums}
.discussion-count small{color:var(--muted);font-size:10px;font-weight:600}
.discussion-list{margin-left:68px;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:800}
.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:750;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:68px}

@media(max-width:1080px){.reaction-list{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.reaction-panel,.discussion-panel{padding:20px 16px}.community-section-head{grid-template-columns:42px minmax(0,1fr)!important;gap:10px!important}.community-section-head>small{grid-column:2;text-align:left;max-width:none}.community-section-number{font-size:28px}.community-section-head>div{padding-left:10px}.reaction-list,.discussion-list,.discussion-form,.discussion-login{margin-left:52px}.reaction-list{grid-template-columns:repeat(2,minmax(0,1fr))}.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){.reaction-list,.discussion-list,.discussion-form,.discussion-login{margin-left:0}.reaction-list{grid-template-columns:1fr}.community-section-head{grid-template-columns:36px minmax(0,1fr)!important}.community-section-head h3{font-size:19px}}

/* 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)}

/* Keep the post-answer summary deliberately compact: answer + one-line reason. */
.explanation-summary{display:grid;grid-template-columns:125px minmax(0,1fr);align-items:stretch}
.explanation-summary>div{display:flex;align-items:center;gap:12px;border-right:1px solid var(--line);padding:13px 16px}
.explanation-summary>div:last-child{border-right:0}
.explanation-summary .answer-key{justify-content:space-between}
.explanation-summary .answer-brief p{margin:0;line-height:1.65;color:var(--ink);font-size:13px}

/* 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:14px}.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:750;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="night"] .textbook-source-card{--source-color:hsl(var(--source-hue) 72% 68%);--source-soft:color-mix(in srgb,var(--source-color) 13%,var(--surface))}
[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))}
[data-theme="gray"] .textbook-source-card{--source-color:hsl(215 8% calc(32% + (var(--source-index) * 5%)));--source-soft:color-mix(in srgb,var(--source-color) 7%,var(--surface))}

@media(max-width:760px){
  .explanation-summary{grid-template-columns:1fr}
  .explanation-summary>div{border-right:0;border-bottom:1px solid var(--line)}
  .explanation-summary>div:last-child{border-bottom:0}
}

.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);box-shadow:var(--shadow-soft)}
.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{padding:7px 11px;border:1px solid var(--line);border-radius:999px;background:var(--surface);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:800}.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:800}.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));box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 28%,transparent)}
.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 .14s,background .14s}
.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}
.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:.28em;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:340}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:340;stroke-dashoffset:340;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)}40%{transform:scale(1.15)}100%{transform:scale(1)}}
@media (prefers-reduced-motion: no-preference){.brand-mark.beat{animation:brand-land .3s 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 card-shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-6px)}45%{transform:translateX(6px)}70%{transform:translateX(-3px)}}
@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}
.score-number b{font-weight:inherit}
@media (prefers-reduced-motion: no-preference){
.question-card.judged-wrong{animation:card-shake .4s ease}
.option.correct{animation:good-reveal .3s ease both}
.question-card.judged-wrong .option.correct{animation-delay:.35s}
.question-card.enter-next{animation:enter-next var(--dur-med) var(--ease-out)}
.question-card.enter-prev{animation:enter-prev var(--dur-med) 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 .35s var(--ease-out)}
}
@media(max-width:760px){.question-card{--slide-dx:14px}}

/* ===== 做题正反馈：连对徽章 / 文案小注 / 撒花 ===== */
.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 2px 0;color:var(--warn);font-size:12px;font-weight:600}
.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:9px;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);box-shadow:0 2px 8px rgba(20,32,51,.08)}
.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;background:var(--accent);color:#fff;font-size:10px;font-weight:700;padding:1px 7px;border-radius:999px;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 .tag.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:4px}
.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:750}

/* ===== 反馈面板微调 ===== */
.community-section-number{font-size:30px;color:color-mix(in srgb,var(--accent) 60%,var(--muted))}
.reaction-panel header span,.discussion-panel header span{color:var(--accent-ink);letter-spacing:.14em}
.reaction-chip{transition:background .18s var(--ease-out),border-color .18s var(--ease-out),color .18s var(--ease-out),transform .18s var(--ease-out)}
.discussion-empty{justify-items:center;text-align:center;padding:36px 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 .18s var(--ease-out),transform .18s var(--ease-out),visibility .18s}
.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{display:none!important}
html.pref-hide-brief .answer-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:800;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)}
.more-sheet-mask{position:fixed;inset:0;z-index:55;background:rgba(12,18,28,.45);opacity:0;transition:opacity var(--dur-med) var(--ease-out)}
.more-sheet-mask.open{opacity:1}
.more-sheet{position:fixed;left:0;right:0;bottom:0;z-index:56;background:var(--surface);border-top:1px solid var(--line);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:10px 12px calc(10px + env(safe-area-inset-bottom));display:grid;gap:4px;transform:translateY(100%);transition:transform var(--dur-med) var(--ease-out)}
.more-sheet.open{transform:translateY(0)}
.more-sheet a{display:flex;align-items:center;gap:14px;min-height:48px;padding:10px 14px;border-radius:10px;color:var(--ink);font-size:14px;font-weight:600}
.more-sheet a svg{width:20px;height:20px;color:var(--muted);flex:none}
.more-sheet a:active{background:var(--surface-2)}
.more-sheet a.active{background:var(--accent-soft);color:var(--accent-ink)}
.more-sheet a.active svg{color:var(--accent)}
@media(min-width:761px){.more-sheet-mask,.more-sheet{display:none!important}}
html.anim-off .more-sheet-mask,html.anim-off .more-sheet{transition:none!important}
@media (prefers-reduced-motion: reduce){.more-sheet-mask,.more-sheet{transition:none}}

/* ===== 学生端章分组收拢 ===== */
.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:7px;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);box-shadow:0 10px 28px color-mix(in srgb,var(--bad) 14%,transparent)}
.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:750;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:999px}
.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{border:1px solid var(--line);background:var(--surface-2);color:var(--muted);padding:3px 9px;border-radius:999px;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:999px;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:800;font-size:13px;margin-top:2px}
.explain-ref{color:var(--muted);font-size:12px;border:1px solid var(--line);border-radius:999px;padding:0 8px;white-space:nowrap}
.answer-letters{display:flex;gap:6px}.answer-letter{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;border-radius:8px;background:var(--accent);color:#fff;font-size:15px;padding:0 6px}

/* 考研中心页 */
.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:800;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:12px}.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:11px;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:34px;border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:3px 6px;font-size:12px;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}}

/* 题库切换加载态 */
.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 .45s cubic-bezier(.2,1.4,.4,1)}
.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:999px;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:999px;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)}

/* 个人资料表单与炫彩称号 */
.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:linear-gradient(90deg,#ff5555,#e0a800,#41b883,#4a7fdd,#b48cff);color:#fff;border:none;text-shadow:0 1px 2px rgba(0,0,0,.35)}
.role-tag{display:inline-block;margin-left:7px;padding:1px 7px;border-radius:5px;font-size:10px;font-weight:800;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:5px;background:#e0a800;color:#fff;font-size:10px;font-weight:800;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:750;box-shadow:0 1px 4px rgba(0,0,0,.14)}

/* 管理端 科目整合 */
.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}
