*{box-sizing:border-box}html{scrollbar-gutter:stable;scrollbar-color:var(--muted) var(--background);scrollbar-width:thin}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:var(--background)}::-webkit-scrollbar-thumb{background:var(--muted);border:2px solid var(--background);border-radius:8px}::-webkit-scrollbar-thumb:hover{background:var(--primary)}body{margin:0;background:var(--background);color:var(--ink);font:15px/1.65 var(--font-body)}button,input,select,textarea{font:inherit}button,a,summary,select,label[for]{-webkit-tap-highlight-color:transparent}button,select,summary{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}a{color:var(--primary);text-underline-offset:4px}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--primary);outline-offset:4px}button{transition:background .12s,border-color .12s,color .12s}button:hover:not(:disabled){filter:brightness(.96)}.skip{position:fixed;top:-70px;left:16px;padding:12px;background:var(--surface);z-index:50}.skip:focus{top:12px}.topbar{min-height:94px;max-width:1320px;margin:auto;padding:18px 38px;display:flex;align-items:center;gap:42px}.brand{display:flex;gap:12px;align-items:center;white-space:nowrap}.brand-mark{display:grid;place-items:center;width:42px;height:44px;background:var(--primary);color:var(--surface);border-radius:13px 13px 5px 13px;font:27px var(--font-question)}.brand strong{display:block;font-size:19px;letter-spacing:1px}.brand-sub{display:block;font-size:11px;color:var(--muted);letter-spacing:1px}.topbar nav{display:flex;gap:12px;margin-left:auto}.nav-button{border:0;border-radius:var(--radius);padding:10px 15px;background:transparent;min-height:44px;color:var(--muted)}.nav-button.active{background:var(--surface);color:var(--primary);font-weight:700}.local-badge{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}.local-badge i{width:6px;height:6px;border-radius:50%;background:var(--success)}main{max-width:1240px;min-height:calc(100vh - 180px);margin:20px auto 48px;padding:0 24px}.page-heading{display:flex;justify-content:space-between;align-items:flex-end;margin:24px 0 27px;gap:18px}.eyebrow{font-size:12px;letter-spacing:2px;color:var(--muted);margin:0 0 8px}h1{font-size:30px;line-height:1.4;letter-spacing:1px;margin:0 0 8px}h2{font-size:19px;margin:0 0 16px}h3{font-size:16px;margin:22px 0 10px}p{margin:0 0 12px}.muted{color:var(--muted)}.small{font-size:12px}.tag{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);padding:3px 9px;border-radius:var(--radius-sm);font-size:12px;color:var(--muted);background:var(--surface)}.paper-tag{background:var(--primary);color:var(--surface);border-color:var(--primary)}.btn{border:1px solid transparent;border-radius:var(--radius);min-height:46px;padding:11px 20px;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;font-weight:600}.primary{background:var(--primary);color:var(--surface)}.secondary{background:var(--surface);border-color:var(--line);color:var(--ink)}.ghost{background:transparent;color:var(--primary)}.full{width:100%}.setup-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:26px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:30px}.panel-title{display:flex;justify-content:space-between;gap:12px;align-items:center}.mode-picker{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:20px 0 30px}.mode{position:relative;text-align:left;padding:22px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);min-height:162px}.mode.selected{border:2px solid var(--primary);padding:21px;background:#f5f9fb}.mode .symbol{font:26px var(--font-question);color:var(--primary);margin-bottom:14px;display:block}.mode strong{display:block;font-size:17px;margin-bottom:7px}.mode span:not(.symbol){font-size:13px;color:var(--muted)}.mode.selected:after{content:'✓';position:absolute;right:16px;top:16px;background:var(--primary);color:var(--surface);width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:12px}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px 22px}.field{display:block;font-size:13px}.field label{display:block;margin-bottom:7px;font-weight:600}.field select,.field input{width:100%;min-height:47px;border:1px solid var(--line);border-radius:var(--radius);padding:9px 12px;color:var(--ink);background:var(--surface)}.rule{border:0;border-top:1px solid var(--line);margin:27px 0}.setup-bottom{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-top:28px}.hint-box{border-left:3px solid var(--accent);background:#faf8f1;padding:18px 20px;border-radius:0 var(--radius) var(--radius) 0}.step-list{padding:0;list-style:none;margin:20px 0}.step-list li{display:flex;gap:12px;margin:19px 0;font-size:13px}.step-list b{background:var(--background);width:25px;height:25px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;font:12px var(--font-number)}.side-note{font-size:13px;line-height:1.8;color:var(--muted)}.session-banner{margin:0 0 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:var(--radius);padding:16px 20px;background:var(--surface)}.practice-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:12px}.practice-layout{display:grid;grid-template-columns:minmax(0,1fr) 244px;gap:23px;align-items:start}.question-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}.question-meta{padding:23px 30px;display:flex;gap:10px;align-items:center;border-bottom:1px solid var(--line)}.question-number{font:18px var(--font-number);color:var(--primary);margin-right:auto}.question-content{padding:28px 34px 24px}.stem{font:20px/1.95 var(--font-question);white-space:pre-wrap;overflow-wrap:anywhere}.rich p:last-child{margin-bottom:0}.rich img{max-width:100%;height:auto;vertical-align:middle;object-fit:contain}.rich img.formula{min-height:15px;max-height:90px}.rich table{border-collapse:collapse;display:block;overflow-x:auto;max-width:100%}.rich td,.rich th{border:1px solid var(--line);padding:6px}.missing-image{display:inline-block;background:#fff1e8;color:var(--danger);font:13px var(--font-body);padding:4px 8px}.options{display:grid;gap:12px;margin:25px 0}.option{display:flex;align-items:center;width:100%;gap:16px;text-align:left;padding:15px 18px;border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);min-height:62px}.option-key{display:grid;place-items:center;width:30px;height:30px;flex:0 0 30px;font:14px var(--font-number);background:var(--background);border:1px solid var(--line);border-radius:7px}.option-text{font-size:16px;flex:1;overflow-wrap:anywhere}.option.selected{border-color:var(--primary);background:#f0f6f9}.option.selected .option-key{background:var(--primary);color:var(--surface);border-color:var(--primary)}.option.correct{border-color:var(--success);background:#edf6f0}.option.wrong{border-color:var(--danger);background:#fcf1f2}.option .verdict{font-size:12px;white-space:nowrap}.question-actions{display:flex;gap:10px;justify-content:space-between;border-top:1px solid var(--line);padding:20px 28px;background:#fafcfd}.question-actions .btn{min-width:94px}.answer-box{border-top:1px solid var(--line);padding:27px 34px;background:#f7fafb}.answer-title{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px}.answer-title strong{color:var(--success)}.analysis-content{line-height:1.95;white-space:pre-wrap;font-size:15px}.question-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:20px 0}.grid-item{min-height:36px;border:1px solid var(--line);border-radius:6px;background:var(--surface);font:12px var(--font-number)}.grid-item.answered{background:#e9f1f5;color:var(--primary);border-color:#aac0cc}.grid-item.current{outline:2px solid var(--primary);outline-offset:1px}.grid-item.correct{border-color:var(--success);color:var(--success);background:#edf6f0}.grid-item.wrong{border-color:var(--danger);color:var(--danger);background:#fcf1f2}.answer-sheet{padding:22px}.legend{display:flex;gap:10px;flex-wrap:wrap;font-size:11px;color:var(--muted)}.legend span:before{content:'';width:9px;height:9px;display:inline-block;border:1px solid var(--line);background:var(--surface);margin-right:5px}.legend span.filled:before{background:#aac0cc}.progress-track{height:4px;background:var(--background);border-radius:5px;overflow:hidden;margin:13px 0}.progress-track div{height:100%;background:var(--primary);transition:width .12s}details.material{border:1px solid var(--line);border-radius:var(--radius);margin-bottom:24px;background:#fafcfd}details.material summary{padding:13px 16px;font-size:13px;color:var(--primary);font-weight:600}.material-body{padding:4px 18px 18px;font-size:15px;line-height:1.9}.result-summary{display:flex;gap:35px;align-items:center;flex-wrap:wrap;padding:26px 30px;margin-bottom:24px;background:var(--primary);color:var(--surface);border-radius:var(--radius-lg)}.score{font:45px var(--font-number)}.result-summary .muted{color:#d5e4ec}.review-list{display:grid;gap:18px}.review-card{padding:23px 26px}.review-head{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:14px}.review-card summary{padding:14px 0 0;color:var(--primary);font-weight:600}.review-card .stem{font-size:18px}.review-card .analysis-content{margin-top:18px}.library-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,1fr);gap:24px}.dropzone{width:100%;min-height:212px;border:2px dashed #b3c6d0;background:#f7fafc;border-radius:var(--radius-lg);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:28px;gap:8px;margin:18px 0}.dropzone.dragover{border-color:var(--primary);background:#e5f0f6}.upload-icon{font-size:32px;color:var(--primary);line-height:1}.dropzone strong{font-size:17px}.file-row{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:11px 0;font-size:13px;gap:12px}.file-row>span{overflow-wrap:anywhere}.import-progress{padding:17px;background:var(--background);border-radius:var(--radius);margin:18px 0}.import-progress progress{width:100%;height:8px;accent-color:var(--primary)}.inline-error{color:var(--danger);background:#fcf1f2;padding:12px 15px;border-radius:var(--radius);margin:12px 0;white-space:pre-wrap;overflow-wrap:anywhere}.import-preview{border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-top:20px}.preview-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0}.preview-stats strong{display:block;font:24px var(--font-number)}.library-stats{display:grid;gap:0}.library-stat{display:flex;justify-content:space-between;padding:13px 0;border-bottom:1px solid var(--line)}.help-list{padding-left:20px;font-size:13px;line-height:1.95}.actions-wrap{display:flex;gap:10px;flex-wrap:wrap}.empty{text-align:center;padding:42px 20px;color:var(--muted)}.search-field{position:relative}.search-field input{padding-right:44px}.search-clear{position:absolute;right:5px;top:5px;width:38px;height:38px;border:0;background:transparent;color:var(--muted)}.question-list{display:grid;gap:8px;margin-top:18px}.question-list-item{background:var(--background);padding:12px 15px;border-radius:var(--radius);font-size:13px}.question-list-item p{margin:4px 0 0}.site-footer{max-width:1240px;margin:0 auto;padding:14px 24px 24px;display:flex;justify-content:space-between;gap:18px;color:var(--muted);font-size:11px}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--surface);padding:13px 23px;border-radius:var(--radius);max-width:calc(100vw - 30px);z-index:100}.persistent{background:#fff3da;color:#6a4c16;padding:12px 24px;text-align:center;font-size:13px}.boot{text-align:center;padding:90px 10px}.loading-dot{display:block;width:12px;height:12px;background:var(--primary);border-radius:50%;margin:0 auto 20px;animation:pulse 1s infinite alternate}@keyframes pulse{to{opacity:.3}}dialog{border:1px solid var(--line);border-radius:var(--radius-lg);padding:30px;width:min(520px,calc(100vw - 32px));color:var(--ink);background:var(--surface)}dialog::backdrop{background:#172c3873}.dialog-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.session-saving{font-size:11px;color:var(--muted);min-height:19px}textarea{resize:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
@media(max-width:950px){.setup-layout{grid-template-columns:minmax(0,1fr) 285px}.topbar{padding:16px 24px;gap:18px}.local-badge{display:none}.practice-layout{grid-template-columns:minmax(0,1fr) 210px}.question-content{padding:24px}.question-meta{padding:20px 24px}.setup-layout .panel{padding:24px}.library-grid{grid-template-columns:1fr}.site-footer{flex-direction:column;gap:4px}}
@media(max-width:720px){.topbar{padding:15px 18px;gap:8px;min-height:80px}.brand strong{font-size:16px}.brand-sub{font-size:9px}.brand-mark{width:35px;height:39px;font-size:24px}.brand{gap:8px}.topbar nav{gap:0}.nav-button{padding:9px 10px;font-size:12px}.nav-button span{display:none}main{padding:0 16px;margin-top:8px}.page-heading{margin:20px 0;align-items:flex-start}.page-heading h1{font-size:25px}.page-heading>.tag{display:none}.setup-layout{grid-template-columns:1fr;gap:16px}.setup-layout>.panel:last-child{display:none}.panel{padding:22px}.mode{padding:17px;min-height:155px}.mode.selected{padding:16px}.mode span:not(.symbol){font-size:12px}.mode strong{font-size:16px}.field-grid{gap:17px 14px}.setup-bottom{align-items:stretch;flex-direction:column}.setup-bottom .btn{width:100%}.practice-layout{display:flex;flex-direction:column}.question-panel,.answer-sheet{width:100%}.answer-sheet{order:2}.question-grid{grid-template-columns:repeat(10,1fr)}.question-content{padding:22px 20px}.stem{font-size:18px}.question-meta{padding:17px 20px}.question-actions{padding:15px;gap:8px;flex-wrap:wrap}.question-actions .btn{min-width:0;padding:10px 14px}.answer-box{padding:22px 20px}.practice-top{font-size:12px}.session-banner{align-items:flex-start;flex-direction:column}.page-heading .btn{font-size:12px;padding:8px 12px}.library-grid .panel{padding:21px}.result-summary{gap:18px;padding:22px}.score{font-size:35px}.review-card{padding:20px}.site-footer{padding:14px 17px}.tag{font-size:11px}.dropzone{padding:22px 15px}.review-head{align-items:flex-start}.preview-stats{gap:6px}.question-actions .btn.primary{margin-left:auto}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media(forced-colors:active){html{scrollbar-color:auto}button,.option,.tag{border:1px solid ButtonText}.mode.selected,.option.selected{outline:2px solid Highlight}.brand-mark{forced-color-adjust:auto}}

@media(max-width:720px){.question-grid{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-item{padding:2px;min-width:0}}
.rich.stem .fill-blank{display:inline-block;box-sizing:border-box;min-width:3em;max-width:6em;height:1em;border-bottom:1px solid currentColor;vertical-align:baseline;margin:0 .08em}
.mistake-practice{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;align-items:end;margin:24px 0 16px;padding-top:22px;border-top:1px solid var(--line)}.mistake-excerpt{font:18px/1.9 var(--font-question);overflow-wrap:anywhere}.mistake-detail{border-top:1px solid var(--line);padding-top:4px}.mistake-detail>summary{margin-bottom:16px}.mistake-options{margin:18px 0}.mistake-option{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap;margin:10px 0;padding:9px 0;border-bottom:1px solid var(--line)}.mistake-option .option-text{min-width:90px}.mistake-history{padding-left:20px;font-size:13px;line-height:2;color:var(--muted)}.mistake-pagination{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:24px 0}.mistake-card .review-head{align-items:flex-start}
@media(max-width:720px){.topbar{flex-wrap:wrap}.mistake-practice{grid-template-columns:1fr;gap:16px}.mistake-practice .btn{width:100%}.mistake-pagination{flex-wrap:wrap}.mistake-card .review-head{flex-direction:column}.mistake-excerpt{font-size:17px}}
