:root{--canvas:#f3f1ec;--surface:#fbfaf7;--surface-raised:#ffffff;--surface-muted:#ebe7de;--band:#1f2d28;--band-text:#f7f4ee;--band-muted:#c9d2cb;--text:#202421;--text-muted:#66706a;--text-subtle:#858c85;--border:#d8d4cb;--control-border:#7a817b;--accent:#2f5d50;--accent-hover:#264c42;--accent-soft:#e3eae4;--accent-strong:#1f4a3f;--danger:#a63d33;--danger-soft:#f7e8e4;--warning:#8a5a1f;--warning-soft:#f4ebdd;--radius-control:8px;--radius-surface:12px;--shadow-sm:0 1px 2px rgba(32,36,33,.05);--shadow-md:0 6px 24px rgba(32,36,33,.07);--font-sans:"Noto Sans CJK SC","Source Han Sans SC","Hiragino Sans GB","Microsoft YaHei",system-ui,-apple-system,"Segoe UI",sans-serif;--font-serif:"Songti SC","Noto Serif CJK SC","Source Han Serif SC",Georgia,serif}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--canvas);color:var(--text);font-family:var(--font-sans);font-size:15px;line-height:1.7;-webkit-font-smoothing:antialiased}button{cursor:pointer}button,input{font-family:inherit;font-size:inherit;color:inherit}a{color:var(--accent)}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:40;background:var(--band);color:var(--band-text);border-bottom:1px solid rgba(255,255,255,.06)}.topbar-inner{max-width:1280px;margin:0 auto;height:64px;display:flex;align-items:stretch;gap:28px;padding:0 32px}.brand{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:.02em;white-space:nowrap}.brand-mark{width:16px;height:16px;border:1.6px solid #9dbdae;border-radius:4px;display:inline-block;position:relative}.brand-mark:after{content:"";position:absolute;inset:3px;border-radius:1px;background:#9dbdae;opacity:.55}.tabs{display:flex;align-items:stretch;gap:2px;flex:1 1;min-width:0;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs button{background:none;border:0;color:var(--band-muted);padding:0 14px;font-size:14px;white-space:nowrap;border-bottom:2px solid transparent;transition:color .15s,background .15s}.tabs button:hover{color:#fff}.tabs button.active{color:var(--band-text);background:rgba(255,255,255,.08);border-bottom-color:#cfe0d5}.account{display:flex;align-items:center;gap:12px;color:var(--band-muted);font-size:13px;white-space:nowrap}.account-name{max-width:180px;overflow:hidden;text-overflow:ellipsis}.app{max-width:1280px;margin:0 auto;padding:28px 32px 120px}.eyebrow{margin:0 0 6px;font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-subtle);font-weight:600}h1{font-size:30px;line-height:1.25;letter-spacing:-.01em}h1,h2{margin:0;font-weight:700}h2{font-size:19px}.muted{color:var(--text-muted)}.small{font-size:13px}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px}.section-head p{margin:0}button.danger,button.ghost,button.primary,button.quiet{border-radius:var(--radius-control);border:1px solid transparent;padding:9px 16px;font-size:14px;font-weight:600;transition:background .15s,border-color .15s,color .15s}button.primary{background:var(--accent);color:#fff}button.primary:hover{background:var(--accent-hover)}button.primary:disabled{background:#b9c4bd;cursor:not-allowed}button.quiet{background:var(--surface-raised);border-color:var(--border);color:var(--text)}button.quiet:hover{border-color:var(--control-border)}button.ghost{background:transparent;color:var(--text-muted)}button.ghost:hover{color:var(--text);background:var(--surface-muted)}button.small{padding:5px 10px;font-size:12.5px}button.link{background:none;border:0;padding:0;color:var(--accent);text-decoration:underline;text-underline-offset:3px;font-size:13px}.pre-login #switchSubject,.pre-login .account-name,.pre-login .basket-fab,.pre-login .tabs{display:none}.login{min-height:calc(100vh - 120px);display:flex;align-items:center;justify-content:center;padding:32px 16px}.login-card{width:600px;max-width:100%}.subject-grid{grid-gap:12px;gap:12px;margin:26px 0 20px}.subject-card{padding:22px 18px;gap:3px}.subject-card b{font-size:21px}.subject-card em{margin-top:6px}.subject-card:hover{border-color:var(--accent);box-shadow:var(--shadow-md);transform:translateY(-1px)}.login-foot{font-size:12.5px;color:var(--text-subtle)}.bank{display:grid;grid-gap:24px;gap:24px;align-items:start}.filters{position:-webkit-sticky;position:sticky;top:88px;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-surface);padding:18px 18px 16px;box-shadow:var(--shadow-sm)}.filters>details>summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:baseline;gap:8px}.filters>details>summary::-webkit-details-marker{display:none}.filters .summary-title{font-weight:700;font-size:15px}.filters .summary-note{font-size:12px;color:var(--text-muted)}.tree{max-height:42vh;overflow:auto}.tree details{margin:2px 0}.tree summary{padding:5px 2px;font-size:14px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:6px}.tree summary::-webkit-details-marker{display:none}.tree summary:before{content:"▸";font-size:10px;color:var(--text-subtle);transition:transform .15s}.tree details[open]>summary:before{transform:rotate(90deg)}.tree .leaf{display:flex;align-items:center;gap:8px;padding:5px 6px 5px 20px;border-radius:6px;font-size:13.5px;color:var(--text);cursor:pointer}.tree .leaf:hover{background:var(--surface-muted)}.tree .leaf.checked{background:var(--accent-soft);color:var(--accent-strong);font-weight:600}.tree input[type=checkbox]{accent-color:var(--accent);width:14px;height:14px}.tree .count{margin-left:auto;font-size:11.5px;color:var(--text-subtle)}.tree .leaf>span:not(.count),.tree-row>span{flex:1 1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.tree .leaf>.count{flex:0 0 auto}.bank-stats{display:flex;gap:10px}.bank-stats .stat-btn,.bank-stats>div{flex:1 1;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;align-items:flex-start;text-align:left}.bank-stats .stat-btn{cursor:pointer;transition:border-color .15s,background .15s;position:relative}.bank-stats .stat-btn em{position:absolute;right:11px;bottom:9px;font-style:normal;font-size:11.5px;color:var(--text-subtle)}.bank-stats .dup-stat em{color:var(--warning);font-weight:600}.bank-stats .dup-stat:not(.zero):hover{border-color:var(--warning);background:var(--warning-soft)}.bank-stats .dup-stat:not(.zero):hover em{text-decoration:underline;text-underline-offset:2px}.bank-stats .stat-btn:hover{border-color:var(--warning);background:var(--warning-soft)}.bank-stats .stat-btn.zero{cursor:default}.bank-stats .stat-btn.zero:hover{border-color:var(--border);background:var(--surface)}.bank-stats b{font-size:22px;line-height:1.25}.bank-stats b.dup{color:var(--warning)}.bank-stats span{font-size:11.5px;color:var(--text-muted)}.group-block{margin:14px 0 6px}.group-head{margin-bottom:4px;font-size:13px;font-weight:600}.group-head,.group-row{justify-content:space-between}.group-row{display:flex;align-items:center;width:100%;background:none;border:0;border-radius:6px;padding:6px 8px;font-size:13.5px;color:var(--text)}.group-row:hover{background:var(--surface-muted)}.group-row.active{background:var(--accent-soft);color:var(--accent-strong);font-weight:600}.group-row b{font-size:12px;color:var(--text-subtle);font-weight:600}.chips{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.chip{display:inline-flex;align-items:center;gap:6px;background:var(--accent-soft);color:var(--accent-strong);border-radius:999px;padding:3px 10px 3px 12px;font-size:12.5px}.chip button{border:0;background:none;color:inherit;padding:0;font-size:14px;line-height:1;opacity:.65}.filter-actions{display:flex;gap:8px}.filter-actions button{flex:1 1}.question-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:16px}.question-head .meta{font-size:13px;color:var(--text-muted)}.qcard{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-surface);padding:24px 28px 20px;margin-bottom:14px;box-shadow:var(--shadow-sm)}.qhead{display:flex;align-items:center;gap:14px;padding-bottom:14px;border-bottom:1px solid var(--border);margin-bottom:18px}.qno{font-weight:700;font-size:15px;padding-left:12px;border-left:3px solid var(--accent);line-height:1.2}.qsrc{font-size:12.5px;color:var(--text-subtle)}.qhead .spacer{flex:1 1}.badges{display:flex;gap:6px;align-items:center}.badge{font-size:11.5px;padding:2px 8px;border-radius:999px;font-weight:600;line-height:1.6}.badge.unknown{background:var(--danger-soft);color:var(--danger)}.badge.dup{background:var(--warning-soft);color:var(--warning)}.badge.score{background:var(--surface-muted);color:var(--text-muted)}.stem{font-size:16.5px;line-height:1.95}.stem p{margin:0 0 10px}.options{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px 28px;gap:8px 28px;margin:14px 0 4px}.option{display:flex;gap:8px;font-size:15.5px;line-height:1.8}.option b{font-weight:700;color:var(--text-muted)}.stem-fig{max-width:260px;max-height:150px;display:block;margin:12px 0;border-radius:4px}.qfoot{display:flex;align-items:center;gap:8px;margin-top:16px;padding-top:14px;border-top:1px dashed var(--border)}.tags{display:flex;gap:6px;flex-wrap:wrap}.tag{font-size:12px;color:var(--text-muted);background:var(--surface-muted);border-radius:4px;padding:2px 7px}.qfoot .spacer{flex:1 1}.add-btn{border:1px solid var(--control-border);background:var(--surface-raised);border-radius:8px;padding:7px 14px;font-size:13.5px;font-weight:600}.add-btn:hover{border-color:var(--accent);color:var(--accent)}.add-btn.added{border-color:var(--accent)}.add-btn.added,.basket-fab{background:var(--accent);color:#fff}.basket-fab{position:fixed;right:28px;bottom:28px;z-index:30;display:inline-flex;align-items:center;gap:8px;border:0;border-radius:999px;padding:12px 18px;box-shadow:0 10px 26px rgba(31,74,63,.28);font-size:14px;font-weight:600}.basket-fab:hover{background:var(--accent-hover)}.basket-fab b{background:rgba(255,255,255,.2);border-radius:999px;padding:0 7px;font-size:12.5px}.recent{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-surface);overflow:hidden;box-shadow:var(--shadow-sm)}.rrow{display:flex;align-items:center;gap:16px;padding:14px 20px;border-bottom:1px solid var(--border)}.rrow:last-child{border-bottom:0}.rname{font-weight:600;font-size:14.5px}.rmeta{color:var(--text-muted);font-size:12.5px;flex:1 1}.compose-toolbar{position:-webkit-sticky;position:sticky;top:64px;z-index:20;background:var(--canvas);padding:12px 0 14px;margin-bottom:16px;display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--border)}.compose-toolbar .spacer{flex:1 1}.switch{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;color:var(--text-muted);cursor:pointer}.switch input{width:36px;height:20px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#cfd6cf;border-radius:999px;position:relative;transition:background .15s}.switch input:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s}.switch input:checked{background:var(--accent)}.switch input:checked:after{transform:translateX(16px)}.total{font-size:14px;color:var(--text-muted)}.total b{color:var(--text);font-size:18px;margin:0 2px}.blist{display:flex;flex-direction:column;gap:10px}.bitem{display:grid;grid-template-columns:28px 40px minmax(0,1fr) 110px 90px 34px;align-items:center;grid-gap:12px;gap:12px;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-surface);padding:14px 16px}.bitem.dragging{opacity:.45}.handle{color:var(--text-subtle);cursor:-webkit-grab;cursor:grab;font-size:17px;line-height:1;display:flex;gap:2px;justify-content:center}.bidx{font-weight:700;color:var(--text-muted);font-size:13.5px}.bstem{font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bscore input{width:64px;padding:5px 8px;border:1px solid var(--border);border-radius:6px;background:var(--surface)}.bscore input.unknown{border-color:var(--danger);background:var(--danger-soft);color:var(--danger);font-weight:700}.bscore .unit{font-size:12px;color:var(--text-subtle);margin-left:4px}.bactions{display:flex;gap:4px;justify-content:flex-end}.iconbtn{border:1px solid transparent;background:none;border-radius:6px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-subtle)}.iconbtn:hover{background:var(--surface-muted);color:var(--text)}.empty{border:1px dashed var(--border);border-radius:var(--radius-surface);padding:56px 24px;text-align:center;color:var(--text-muted);background:var(--surface)}.paper-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:18px}.paper-toolbar .spacer{flex:1 1}.sheet-wrap{display:flex;justify-content:center;padding:8px 0 40px}.sheet{position:relative;width:794px;background:#fff;padding:64px 76px 72px 108px;box-shadow:0 12px 40px rgba(32,36,33,.1);border:1px solid #e6e2d8;color:#111;font-size:14px;line-height:1.9}.seal-line{position:absolute;left:42px;top:56px;bottom:72px;border-left:1px dashed #b9b4a9}.seal-line span{position:absolute;top:50%;left:0;transform:translate(-55%,-50%);writing-mode:vertical-rl;font-size:11.5px;letter-spacing:.38em;color:#8a8579;white-space:nowrap}.sheet .paper-title{text-align:center;font-family:var(--font-serif);font-size:24px;letter-spacing:.06em;margin-bottom:6px}.sheet .paper-sub{text-align:center;font-size:13px;color:#444}.sheet .paper-meta{display:flex;justify-content:space-between;font-size:12.5px;color:#333;border-bottom:1px solid #333;padding:12px 0 8px;margin:18px 0 26px}.sheet .sec-title{font-weight:700;font-size:15px;margin:22px 0 10px;display:flex;align-items:baseline;gap:12px}.sheet .sec-meta{font-size:11.5px;font-weight:400;color:#777}.sheet .paper-foot{display:flex;justify-content:space-between;margin-top:30px;padding-top:10px;border-top:1px solid #ddd;font-size:11.5px;color:#777}.sheet .pq{margin:0 0 18px;page-break-inside:avoid;position:relative;padding-right:88px}.sheet .pq .qline{display:flex;gap:6px}.sheet .pq .qno2{font-weight:700;white-space:nowrap}.sheet .pq .opts{display:grid;grid-template-columns:1fr 1fr;grid-gap:2px 24px;gap:2px 24px;margin:4px 0 0}.sheet .answer-space{height:34px;border-bottom:1px solid #bbb;margin:10px 0 4px}.sheet .score-tag{position:absolute;right:0;top:2px;white-space:nowrap;font-size:11.5px;color:#666}.dropzone{background:var(--surface-raised);border:1.5px dashed var(--border);border-radius:14px;padding:56px 32px;text-align:center;transition:border-color .15s,background .15s}.dropzone.hover{border-color:var(--accent);background:var(--accent-soft)}.dropzone .big{font-size:18px;font-weight:700;margin:10px 0 6px}.dropzone .formats{font-size:13px;color:var(--text-muted);margin-bottom:22px}.upload-note{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px;margin-top:18px}.note-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 16px}.note-card b{display:block;font-size:13px;margin-bottom:2px}.note-card span{font-size:12.5px;color:var(--text-muted)}.progress-wrap{background:var(--surface-raised);border:1px solid var(--border);border-radius:14px;padding:40px;text-align:center}.progress{height:6px;border-radius:999px;background:var(--surface-muted);overflow:hidden;margin:20px auto 10px;max-width:420px}.progress i{display:block;height:100%;background:var(--accent);width:0;transition:width .4s ease}.review{display:grid;grid-template-columns:200px minmax(0,1fr);grid-gap:22px;gap:22px;align-items:start}.pages{position:-webkit-sticky;position:sticky;top:88px;background:var(--surface-raised);border:1px solid var(--border);border-radius:12px;padding:12px}.page-thumb{display:flex;align-items:center;gap:10px;padding:8px;border-radius:8px;font-size:13px;color:var(--text-muted);cursor:pointer}.page-thumb.active{background:var(--accent-soft);color:var(--accent-strong);font-weight:600}.page-thumb i{width:26px;height:34px;border:1px solid var(--border);border-radius:2px;background:#fff;display:inline-block}.review-main{background:var(--surface-raised);border:1px solid var(--border);border-radius:12px;padding:24px 28px}.review-bar{display:flex;align-items:center;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--border)}.review-bar .spacer{flex:1 1}.block{border:1px solid var(--border);border-radius:8px;padding:12px 14px;margin-bottom:10px;background:var(--surface);font-size:14.5px}.block.flagged{border-color:var(--danger);background:var(--danger-soft)}.block.warn{border-color:#d9b98a;background:var(--warning-soft)}.block .block-meta{font-size:11.5px;color:var(--text-subtle);margin-bottom:4px;display:flex;gap:8px}.board-stage{position:relative;background:var(--surface-raised);border:1px solid var(--border);border-radius:14px;padding:28px;min-height:62vh}.board-stage canvas{position:absolute;inset:0;width:100%;height:100%;border-radius:14px;cursor:crosshair;touch-action:none}.board-toolbar{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);display:flex;align-items:center;gap:6px;background:rgba(31,45,40,.94);color:#fff;border-radius:999px;padding:6px 10px;box-shadow:0 10px 26px rgba(0,0,0,.2);z-index:5}.board-toolbar button{background:none;border:0;color:#dfe7e2;padding:7px 10px;border-radius:999px;font-size:13px}.board-toolbar button:hover{background:rgba(255,255,255,.12)}.board-toolbar .swatch{width:18px;height:18px;border-radius:50%;border:2px solid rgba(255,255,255,.35);padding:0}.board-toolbar .swatch.active{border-color:#fff}.board-toolbar .divider{width:1px;height:18px;background:rgba(255,255,255,.18);margin:0 4px}.modal-wide{width:640px;max-height:84vh;display:flex;flex-direction:column}.dup-list{overflow:auto;margin:4px 0 2px}.dup-group{border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin-bottom:10px;background:var(--surface)}.dup-group-head{font-size:12px;color:var(--text-subtle);margin-bottom:8px}.dup-item{border-top:1px dashed var(--border);padding:10px 0 6px}.dup-item:first-of-type{border-top:0}.dup-line{display:flex;align-items:center;gap:10px}.dup-line b{font-size:14px}.dup-stem{margin:6px 0 8px;font-size:13.5px;color:var(--text-muted);line-height:1.7}.dup-groups{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.overlay{position:fixed;inset:0;background:rgba(20,24,21,.45);display:flex;align-items:center;justify-content:center;z-index:60;padding:24px}.modal{background:var(--surface-raised);border-radius:16px;width:440px;max-width:100%;padding:26px 28px 22px;box-shadow:0 24px 70px rgba(0,0,0,.25)}.modal h3{margin:0 0 6px;font-size:18px}.modal p{margin:0 0 16px;color:var(--text-muted);font-size:13.5px}.modal input[type=text]{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.modal-actions{display:flex;gap:10px;margin-top:18px}.modal-actions button{flex:1 1}.toast{position:fixed;left:50%;bottom:96px;transform:translateX(-50%);background:var(--band);color:var(--band-text);padding:10px 18px;border-radius:999px;font-size:13.5px;z-index:70;box-shadow:var(--shadow-md)}@media print{body{background:#fff}#modalRoot,.basket-fab,.paper-toolbar,.toast,.topbar{display:none!important}.app{max-width:none}.app,.sheet,.sheet-wrap{padding:0}.sheet{width:auto;border:0;box-shadow:none}@page{size:A4;margin:18mm 16mm}}@media (max-width:900px){.topbar-inner{padding:0 16px;gap:14px}.account-name{display:none}.app{padding:18px 16px 110px}.bank{grid-template-columns:1fr}.filters{position:static}.options{grid-template-columns:1fr}.bitem{grid-template-columns:24px 32px minmax(0,1fr) 84px 34px}.bactions .iconbtn:first-child{display:none}.review{grid-template-columns:1fr}.pages{position:static;display:flex;gap:8px;overflow-x:auto}.upload-note{grid-template-columns:1fr 1fr}.sheet{width:100%;padding:28px 20px}.sheet .opts{grid-template-columns:1fr}}@media (max-width:720px){.topbar-inner{height:56px;padding:0 12px;gap:10px}.brand span:last-child{display:none}.tabs button{padding:0 10px;font-size:13px}.account{display:none}.app{padding:16px 12px 92px}h1{font-size:24px}.filters{position:static;padding:14px}.tree{max-height:240px}.qcard{padding:18px 16px}.qhead{flex-wrap:wrap;gap:8px}.qno{white-space:nowrap}.qhead .spacer{display:none}.stem{font-size:15.5px}.review-main{padding:18px 16px}.modal{width:100%;padding:20px}.basket-fab{right:14px;bottom:14px;padding:10px 14px;font-size:13px}.subject-grid{grid-template-columns:1fr}.sheet{padding:28px 18px}.seal-line{position:absolute;left:42px;top:56px;bottom:72px;border-left:1px dashed #b9b4a9}.seal-line span{position:absolute;top:50%;left:0;transform:translate(-55%,-50%);writing-mode:vertical-rl;font-size:11.5px;letter-spacing:.38em;color:#8a8579;white-space:nowrap}.sheet .paper-title{font-size:19px}}.offline-note{background:var(--warning-soft);border:1px solid #e2c9a5;color:#7a4d16;border-radius:10px;padding:10px 14px;font-size:13px;margin-bottom:14px}.offline-note code{background:#fff;padding:1px 6px;border-radius:4px;font-size:12.5px}.blocks .block{font-size:14.5px;line-height:1.95;background:transparent;border:0;border-bottom:1px dashed var(--border);border-radius:0;padding:14px 2px;margin:0}.blocks .block:first-child{padding-top:4px}.blocks .block-text{white-space:pre-wrap}.blocks .block+.block{margin-top:8px}.ocr-fig{display:block;max-width:300px;max-height:220px;margin:10px 0;border:1px solid var(--border);border-radius:6px;background:#fff}.tabs a{display:inline-flex;align-items:center;color:var(--band-muted);padding:0 14px;font-size:14px;white-space:nowrap;text-decoration:none;border-bottom:2px solid transparent;transition:color .15s,background .15s}.tabs a:hover{color:#fff}.tabs a.active{color:var(--band-text);background:rgba(255,255,255,.08);border-bottom-color:#cfe0d5}.account button.quiet.small{background:rgba(255,255,255,.06);color:var(--band-text);border-color:rgba(255,255,255,.22)}.account button.quiet.small:hover{border-color:rgba(255,255,255,.5);background:rgba(255,255,255,.12)}.brand,a.basket-fab{text-decoration:none}.brand{color:var(--band-text)}.pre-login .account,.pre-login .basket-fab{display:none}.auth-shell{min-height:100vh;background:var(--canvas)}.auth-topbar{height:64px;background:var(--band);color:var(--band-text);display:flex;align-items:center}.auth-topbar .inner{width:min(1180px,calc(100% - 48px));margin:0 auto;display:flex;align-items:center;gap:16px}.auth-topbar .spacer{flex:1 1}.auth-main{min-height:calc(100vh - 64px);padding:48px 20px 80px}.auth-layout,.auth-main{display:flex;align-items:center;justify-content:center}.auth-layout{width:100%;gap:64px}.auth-quotes{width:350px;flex:none;order:-1}.auth-quotes ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:26px}.auth-quotes li{display:flex;align-items:flex-start;gap:14px}.auth-quotes .quote-label{flex:none;width:26px;display:flex;flex-direction:column;align-items:center;gap:4px;margin-top:3px;font-size:12px;line-height:1.1;color:var(--text-muted);letter-spacing:0}.auth-quotes .quote-body{border-left:1px solid var(--border);padding-left:14px}.auth-quotes .quote{margin:0;font-family:var(--font-serif);font-size:15.5px;line-height:1.9;color:var(--text);letter-spacing:.015em}.auth-quotes .quote-source{margin:5px 0 0;font-size:11.5px;color:var(--text-subtle);letter-spacing:.05em}@media (max-width:960px){.auth-layout{flex-direction:column;gap:34px}.auth-quotes{width:min(460px,100%);order:0}.auth-quotes ol{gap:18px}}.auth-card{width:460px;max-width:100%;background:var(--surface-raised);border:1px solid var(--border);border-radius:18px;padding:34px 36px 30px;box-shadow:var(--shadow-md)}.auth-card h1{font-size:26px;margin-bottom:8px}.auth-card .sub{color:var(--text-muted);font-size:13.5px;margin:0 0 24px;line-height:1.7}.field{display:flex;flex-direction:column;gap:7px;margin-bottom:14px}.field label{font-size:12.5px;font-weight:600;color:var(--text-muted);letter-spacing:.02em}.field input[type=email],.field input[type=password],.field input[type=text]{width:100%;padding:11px 13px;border:1px solid var(--border);border-radius:9px;background:var(--surface);font-size:15px;outline:none;transition:border-color .15s,box-shadow .15s}.field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.code-row{display:flex;gap:10px}.code-row input{flex:1 1;letter-spacing:.25em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.code-row button{white-space:nowrap}.auth-actions{display:flex;gap:10px;margin-top:6px}.auth-actions button{flex:1 1}.auth-note{margin-top:20px;padding-top:16px;border-top:1px dashed var(--border);font-size:12.5px;color:var(--text-subtle);line-height:1.7}.auth-note b{color:var(--text-muted)}.auth-error{background:var(--danger-soft);color:var(--danger)}.auth-error,.auth-success{border-radius:8px;padding:9px 12px;font-size:13px;margin-bottom:12px}.auth-success{background:var(--accent-soft);color:var(--accent-strong)}.auth-foot{margin-top:18px;text-align:center;font-size:12.5px;color:var(--text-subtle)}.auth-foot a,.linklike{color:var(--accent)}.linklike{border:0;background:none;padding:0;font-size:13px;text-decoration:underline;text-underline-offset:3px}.identity-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.identity-pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--text-subtle);border:1px dashed var(--border);border-radius:999px;padding:3px 10px}.identity-pill.ready{color:var(--accent);border-color:var(--accent-soft);background:var(--accent-soft)}.welcome-wrap{max-width:980px;margin:0 auto;padding:9vh 24px 80px}.welcome-eyebrow{font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-subtle);font-weight:600;margin:0 0 10px}.welcome-wrap h1{font-size:34px;margin-bottom:10px}.welcome-wrap>p{color:var(--text-muted);margin:0}.subject-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px;margin:34px 0 26px}.subject-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:14px;padding:26px 22px;text-align:left;display:flex;flex-direction:column;gap:5px;transition:border-color .15s,box-shadow .15s,transform .15s;min-height:132px}.subject-card b{font-size:23px}.subject-card span{font-size:12.5px;color:var(--text-muted)}.subject-card em{font-style:normal;font-size:11.5px;color:var(--text-subtle);margin-top:8px}.subject-card.ready:hover{border-color:var(--accent);box-shadow:var(--shadow-md);transform:translateY(-2px)}.subject-card.disabled{opacity:.5;cursor:not-allowed}.welcome-foot{font-size:12.5px;color:var(--text-subtle)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.spacer{flex:1 1}.notice{border-radius:10px;padding:10px 14px;font-size:13px;margin-bottom:14px;border:1px solid #e2c9a5;background:var(--warning-soft);color:#7a4d16}.notice code{background:#fff;padding:1px 6px;border-radius:4px;font-size:12.5px}.notice.danger{border-color:#e3bdb6;background:var(--danger-soft);color:var(--danger)}.notice.info{border-color:var(--accent-soft);background:var(--accent-soft);color:var(--accent-strong)}.iconbtn:disabled{opacity:.4;cursor:not-allowed}button.ghost.small,button.primary.small,button.quiet.small{padding:5px 10px;font-size:12.5px}.qhead .badges{flex-shrink:0}.qcard .katex{font-size:1.04em}.qcard .stem{white-space:pre-wrap}.qcard .stem p{margin:0 0 10px}.qcard .stem p:last-child{margin-bottom:0}.leaf .count{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.filter-note{margin:8px 0 0}.group-row .gcount{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.dup-stat:hover em{text-decoration:underline;text-underline-offset:2px}.filters .tree details:not([open]) .leaf{display:none}.section-head .head-actions{display:flex;gap:8px;align-items:center}.import-file{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text-muted);margin-top:12px}.import-file b{color:var(--text)}.import-file .dot{width:5px;height:5px;border-radius:50%;background:var(--text-subtle);display:inline-block}.parse-steps{display:flex;justify-content:center;gap:24px;margin:18px 0 0;font-size:12.5px;color:var(--text-subtle)}.parse-steps span.on{color:var(--accent);font-weight:600}.progress-wrap h2{margin-bottom:4px}.review-main .block-text{white-space:pre-wrap}.review-main .block-text .katex{font-size:1.03em}.review-bar button.primary:disabled{background:#b9c4bd;cursor:wait}.page-thumb i{flex-shrink:0}.page-thumb span{white-space:nowrap}.ocr-fig{max-width:min(360px,100%)}.cache-badge{display:inline-flex;align-items:center;gap:5px;color:var(--accent);font-weight:600}.upload-note .note-card.accent{border-color:var(--accent-soft);background:var(--accent-soft)}.source-switch{display:inline-flex;border:1px solid var(--border);border-radius:9px;overflow:hidden;background:var(--surface-raised)}.source-switch button{border:0;background:none;padding:7px 12px;font-size:12.5px;color:var(--text-muted)}.source-switch button.on{background:var(--accent-soft);color:var(--accent-strong);font-weight:600}.source-switch button:disabled{color:var(--text-subtle);cursor:not-allowed}.bscore input{transition:border-color .15s,background .15s}.bscore input:focus{outline:none;border-color:var(--accent);background:#fff}.bitem .bstem .katex{font-size:.95em}.bitem.dragging{opacity:.4}.bitem.over{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.compose-empty{margin-top:10px}.modal input[type=text]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.modal .hintline{margin-top:8px}.export-note,.modal .hintline{font-size:12px;color:var(--text-subtle)}.export-note{margin-top:9px;line-height:1.6}.paper-hint{font-size:12.5px;color:var(--text-subtle)}.paper-toolbar .switch{margin-right:4px}.sheet .pq .stem-fig{max-height:140px}.sheet .pq .opt-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:2px 24px;gap:2px 24px;margin:4px 0 0}.sheet .pq .opt-grid div{font-size:14px}.sheet .pq .katex{font-size:1.02em}.sheet .pq .stem-line{display:flex;gap:6px;align-items:flex-start}.sheet .unknown-mark{color:#a63d33;font-size:11.5px;margin-left:6px}.sheet .answer-block{margin-top:26px;padding-top:12px;border-top:1px dashed #bbb}.sheet .answer-item{font-size:13px;margin-bottom:8px}.sheet .answer-item b{margin-right:4px}.sheet .answers-note{font-size:11.5px;color:#777;margin-top:6px}.sheet .pq.no-options{padding-bottom:4px}.sheet .answer-line{height:30px;border-bottom:1px solid #bbb;margin:8px 0 2px}.sheet .paper-sub,.sheet .paper-title{font-family:var(--font-serif)}.sheet .paper-title{font-weight:700}.sheet .paper-meta{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.sheet .sec-title{border-bottom:0}.board-stage{touch-action:none}.board-stage canvas{z-index:3}.board-stage .qcard{background:transparent}.board-paper,.board-stage .qcard{position:relative;z-index:1}.board-toolbar{z-index:6}.board-toolbar .swatch{width:20px;height:20px}.board-toolbar button.active-width{background:rgba(255,255,255,.16);color:#fff}.toast{max-width:min(520px,calc(100vw - 32px));text-align:center;transition:opacity .18s}.toast.hide{opacity:0}.modal .modal-actions{margin-top:20px}.modal label{font-size:13px;color:var(--text-muted)}.overlay{animation:fade .14s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}.loading-bar{position:fixed;top:0;left:0;right:0;height:2px;background:var(--accent);z-index:100}@media (max-width:980px){.account-name{display:none}}@media (max-width:900px){.tabs a{padding:0 11px;font-size:13px}.source-switch button{padding:6px 9px}}@media (max-width:720px){.auth-card{padding:26px 20px 22px}.welcome-wrap{padding:40px 16px 60px}.welcome-wrap h1{font-size:28px}.subject-grid{grid-template-columns:1fr;gap:10px;margin:24px 0 18px}.subject-card{min-height:0;padding:20px 18px}.auth-topbar .inner{width:calc(100% - 24px)}.brand span:last-child{display:inline}.paper-toolbar{flex-wrap:wrap}.paper-toolbar h1{font-size:22px!important}.compose-toolbar{flex-wrap:wrap;gap:10px}.compose-toolbar .total{width:100%;order:4}}@media print{body,html{background:#fff!important}#modalRoot,.basket-fab,.loading-bar,.paper-hint,.paper-toolbar,.toast,.topbar{display:none!important}.app{max-width:none}.app,.sheet-wrap{padding:0!important}.sheet-wrap{display:block!important}.sheet{width:auto;border:0!important;box-shadow:none!important;padding:0 0 0 36px!important;margin:0}.seal-line{left:8px!important;top:0!important;bottom:0!important}.seal-line span{font-size:10px;letter-spacing:.3em}.sheet .pq{page-break-inside:avoid;break-inside:avoid}@page{size:A4;margin:16mm 15mm}}a.ghost,a.primary,a.quiet{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-control);border:1px solid transparent;padding:9px 16px;font-size:14px;font-weight:600;text-decoration:none;transition:background .15s,border-color .15s,color .15s}a.quiet{background:var(--surface-raised);border-color:var(--border);color:var(--text)}a.quiet:hover{border-color:var(--control-border)}a.ghost{background:transparent;color:var(--text-muted)}a.ghost:hover{color:var(--text);background:var(--surface-muted)}a.primary{background:var(--accent);color:#fff}a.small{padding:5px 10px;font-size:12.5px}.archive-panel{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-surface);padding:13px 18px 10px;margin-bottom:16px;box-shadow:var(--shadow-sm)}.archive-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.archive-title{font-weight:700;font-size:15px}.archive-note{margin-left:8px;font-size:12px;color:var(--text-subtle)}.archive-list{margin-top:9px;border-top:1px solid var(--border);max-height:172px;overflow:auto}.archive-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;grid-gap:14px;gap:14px;align-items:center;padding:9px 0;border-bottom:1px dashed var(--border);font-size:13px}.archive-row:last-child{border-bottom:0}.archive-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.archive-meta{color:var(--text-muted);font-size:12px;white-space:nowrap}.archive-row.active .archive-name{color:var(--accent-strong)}.archive-head .link,.archive-row .link{color:var(--accent);text-decoration:underline;text-underline-offset:3px;white-space:nowrap;font-size:12.5px}.archive-current{color:var(--text-subtle);font-size:12.5px;white-space:nowrap}.archive-banner{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.archive-banner .link{margin-left:auto}@media (max-width:720px){.archive-row{grid-template-columns:minmax(0,1fr) auto}.archive-meta{grid-column:1/-1;white-space:normal}}@media print{.archive-banner,.archive-panel{display:none!important}}.stage-layout{display:grid;grid-template-columns:156px minmax(0,1fr);grid-gap:20px;gap:20px;align-items:start;margin:32px 0 24px}.stage-column{display:flex;flex-direction:column;gap:10px}.stage-head{font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-subtle);font-weight:600;padding:0 2px}.stage-card{display:flex;flex-direction:column;gap:3px;text-align:left;background:var(--surface-raised);border:1px solid var(--border);border-radius:12px;padding:16px 17px;transition:border-color .15s,background .15s,box-shadow .15s}.stage-card b{font-size:18px}.stage-card span{font-size:12px;color:var(--text-muted)}.stage-card.active{border-color:var(--accent);background:var(--accent-soft);box-shadow:var(--shadow-sm)}.stage-card.active span{color:var(--accent-strong)}.stage-card.disabled{opacity:.48;cursor:not-allowed}.stage-card:not(.disabled):not(.active):hover{border-color:var(--accent);box-shadow:var(--shadow-sm)}.stage-layout .subject-grid{margin:0}.subject-panel{min-width:0}.book-block{margin:0;padding:0}.book-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:8px}.book-head .summary-title{font-size:14px}.book-chips{display:flex;flex-wrap:wrap}.book-chip{border:1px solid var(--border);background:var(--surface-raised);color:var(--text);border-radius:8px;padding:5px 10px;font-size:12.5px;font-weight:600;display:inline-flex;align-items:center;gap:5px;transition:border-color .15s,background .15s,color .15s}.book-chip:hover:not(:disabled):not(.active){border-color:var(--accent);color:var(--accent)}.book-chip.active{background:var(--accent);border-color:var(--accent);color:#fff}.book-chip.active:hover{color:#fff}.book-chip:disabled{opacity:.46;cursor:not-allowed}.book-chip em{font-style:normal;font-size:10.5px;font-weight:500;opacity:.85}.tree-row{display:flex;align-items:center;gap:7px;width:100%;border:0;background:none;border-radius:6px;padding:6px;margin:1px 0;text-align:left;font-size:14px;font-weight:600;color:var(--text);cursor:pointer;transition:background .15s}.tree-row:hover{background:var(--surface-muted)}.tree-row:focus-visible{outline:2px solid var(--accent);outline-offset:-1px}.chev{width:13px;height:13px;flex:0 0 13px;color:var(--text-muted);transition:transform .15s ease}.tree-node.open>.tree-row .chev{transform:rotate(90deg)}.tree-children{display:grid;grid-template-rows:0fr;transition:grid-template-rows .15s ease}.tree-node.open>.tree-children{grid-template-rows:1fr}.tree-children-inner{overflow:hidden}.section-tag{background:var(--accent-soft)!important;color:var(--accent-strong)!important}@media (max-width:720px){.stage-layout{grid-template-columns:1fr;gap:14px}.stage-column{flex-direction:row;flex-wrap:wrap;align-items:stretch}.stage-column .stage-head{width:100%}.stage-card{flex:1 1;min-width:140px}}.app-fit{height:calc(100vh - 65px);padding:20px 32px 16px;overflow:hidden}.bank{grid-template-columns:340px minmax(0,1fr);min-height:0;align-items:stretch}.app-fit .filters,.bank{height:100%;overflow:hidden}.app-fit .filters{position:static;top:auto;max-height:none;display:flex;flex-direction:column;padding:18px 18px 14px}.filters>.bank-stats,.filters>.book-block,.filters>.filter-actions,.filters>.filter-status,.filters>.group-block,.filters>.tree-head{flex:0 0 auto}.filters>.bank-stats,.filters>.book-block{margin:0 0 16px;padding:0;border:0}.filters>.group-block{margin:0 0 16px}.filters>.tree-head{display:flex;align-items:baseline;gap:8px;padding:0 2px 6px;border:0}.filters>.filter-actions{margin:0;padding:0;border:0}.bank-scroll-wrap{position:relative;display:flex;flex:1 1;min-height:0}.bank-scroll-wrap:after{content:"";position:absolute;left:0;right:8px;bottom:0;height:30px;background:linear-gradient(to bottom,rgba(251,250,247,0),var(--surface-raised) 92%);pointer-events:none}.bank-scroll{flex:1 1;min-height:0;overflow-y:auto;padding:2px 6px 18px 0;scrollbar-width:thin;scrollbar-color:var(--control-border) var(--surface-muted)}.bank-scroll::-webkit-scrollbar{width:8px;background:var(--surface-muted)}.bank-scroll::-webkit-scrollbar-thumb{background:var(--control-border);border-radius:999px}.bank-scroll::-webkit-scrollbar-track{background:var(--surface-muted)}.bank-scroll .tree-area{display:block}.bank-scroll .tree{max-height:none;overflow:visible}.bank-questions{height:100%;min-height:0;overflow-y:auto;padding-right:6px;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.bank-questions::-webkit-scrollbar{width:8px}.bank-questions::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px}.bank-questions::-webkit-scrollbar-track{background:transparent}.filter-status{margin:8px 2px;font-size:12.5px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.book-chips{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:6px;gap:6px}.book-chip{justify-content:center;text-align:center;min-height:32px;white-space:nowrap}.book-chip:last-child:nth-child(odd){grid-column:1/-1}.group-block{margin:0}.group-head{gap:8px;margin:0}.group-head,.group-toggle{display:flex;align-items:center}.group-toggle{gap:7px;flex:1 1 auto;min-width:0;border:0;background:none;border-radius:6px;padding:6px;text-align:left;font-size:14px;font-weight:600;color:var(--text);cursor:pointer;transition:background .15s}.group-toggle:hover{background:var(--surface-muted)}.group-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:-1px}.group-block.open .group-toggle .chev{transform:rotate(90deg)}.group-count{font-size:11.5px;font-weight:600;color:var(--text-subtle);background:var(--surface-muted);border-radius:999px;padding:0 7px;line-height:1.7}.group-list{margin-top:4px;padding-left:6px;max-height:160px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.group-list::-webkit-scrollbar{width:6px}.group-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px}.tree .leaf.uncategorized{margin-top:6px;padding-left:6px;font-weight:600}.app-fit .bank-stats .stat-btn,.app-fit .bank-stats>div{padding:8px 10px}.app-fit .bank-stats b{font-size:20px}.app-fit .book-chip{min-height:28px;padding:3px 8px;font-size:12px}.bank-scroll .leaf{padding:2px 6px 2px 20px;font-size:13px}@media (max-width:900px){.app-fit{padding-bottom:40px}.app-fit,.bank{height:auto;overflow:visible}.bank{grid-template-columns:1fr}.app-fit .filters,.bank-questions{height:auto;overflow:visible}.bank-scroll-wrap{display:block}.bank-scroll{overflow:visible;padding-right:0}.bank-scroll-wrap:after{display:none}}@media (max-width:720px){.app-fit{height:auto;padding:12px 12px 80px;overflow:visible}}.destination{display:flex;flex-direction:column;gap:6px;min-width:0}.destination-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}.destination-label{font-size:13px;color:var(--text-muted);white-space:nowrap}.destination-hint{margin:0;font-size:12px;color:var(--text-subtle);line-height:1.6}.section-picker{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-width:0}.picker-select{border:1px solid var(--control-border);background:var(--surface-raised);color:var(--text);border-radius:8px;padding:6px 8px;font-size:13px;max-width:190px;min-width:0}.picker-select.summary{max-width:200px}.picker-select[aria-label="册"]{max-width:120px}.picker-select:disabled{opacity:.5;cursor:not-allowed}.review-bar{flex-wrap:wrap}.review-bar .destination{flex:1 1 420px}.question-head-actions{gap:10px}.qpick,.question-head-actions{display:flex;align-items:center}.qpick{flex:0 0 auto;cursor:pointer}.qpick input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.qcard.picked{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-soft)}.batch-bar{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);display:flex;align-items:center;gap:12px;max-width:calc(100vw - 48px);padding:8px 10px 8px 20px;background:var(--surface-raised);border:1px solid var(--border);border-radius:999px;box-shadow:var(--shadow-md);z-index:45}.batch-bar span{font-size:13.5px}.batch-bar button,.batch-bar span{white-space:nowrap}.assign-summary{margin:12px 0 0}.modal .section-picker{flex-direction:column;align-items:stretch}.modal .picker-select{max-width:none;width:100%}@media (max-width:720px){.batch-bar{bottom:76px}}.shot-section{margin-top:28px;outline:none}.shot-section:focus-visible .shot-zone{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.shot-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:10px}.shot-head h2{margin:0;font-size:19px}.shot-zone{display:flex;align-items:center;gap:16px;padding:20px 22px;border:1px dashed var(--control-border);border-radius:14px;background:var(--surface-raised);cursor:pointer;transition:border-color .15s,background .15s}.shot-zone.hover,.shot-zone:hover{border-color:var(--accent);background:var(--accent-soft)}.shot-zone.working{cursor:progress}.shot-zone b{font-size:15px}.shot-zone p{margin:2px 0 0}.shot-zone .spacer{flex:1 1}.shot-paste{width:46px;height:46px;flex:0 0 46px;display:flex;align-items:center;justify-content:center;border-radius:12px;background:var(--accent-soft);color:var(--accent-strong);font-weight:700;font-size:13px}.shot-spinner{width:28px;height:28px;flex:0 0 28px;border-radius:50%;border:3px solid var(--accent-soft);border-top-color:var(--accent);animation:shotspin .8s linear infinite}@keyframes shotspin{to{transform:rotate(1turn)}}.shot-draft{display:grid;grid-template-columns:240px minmax(0,1fr);grid-gap:24px;gap:24px;padding:22px 24px;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-surface);box-shadow:var(--shadow-sm)}.shot-media{min-width:0}.shot-media img{width:100%;max-height:320px;object-fit:contain;border:1px solid var(--border);border-radius:10px;background:#fff}.shot-check{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:13px;color:var(--text-muted);cursor:pointer}.shot-editor{display:flex;flex-direction:column;gap:8px;min-width:0}.field-label{font-size:12.5px;font-weight:600;color:var(--text-muted);margin-top:8px}.shot-textarea{width:100%;min-height:96px;resize:vertical;border:1px solid var(--control-border);border-radius:10px;padding:10px 12px;background:var(--surface);color:var(--text);font:inherit;font-size:14.5px;line-height:1.7}.shot-textarea:focus-visible{outline:2px solid var(--accent);outline-offset:-1px}.shot-preview{border:1px solid var(--border);border-radius:10px;padding:10px 14px;background:var(--surface);font-size:15px;line-height:1.8;min-height:44px}.shot-preview p{margin:0}.shot-options{display:flex;flex-direction:column;gap:6px}.shot-option{display:flex;align-items:center;gap:8px}.shot-option b{width:20px;flex:0 0 20px;font-size:13.5px;color:var(--text-muted)}.shot-option input{flex:1 1;min-width:0;border:1px solid var(--control-border);border-radius:8px;padding:7px 10px;background:var(--surface);color:var(--text);font-size:13.5px}.shot-option .iconbtn{flex:0 0 auto}.shot-actions{display:flex;align-items:center;gap:10px;margin-top:16px}.shot-actions .spacer{flex:1 1}@media (max-width:900px){.shot-draft{grid-template-columns:1fr}.shot-media img{max-height:240px}.shot-zone{flex-wrap:wrap}}.conflict-compare{max-height:54vh;overflow-y:auto;padding-right:4px}.conflict-col{min-width:0;border:1px solid var(--border);border-radius:12px;padding:12px 14px;background:var(--surface)}.conflict-label{font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-subtle);font-weight:700;margin-bottom:8px}.conflict-stem{max-height:200px;overflow-y:auto;font-size:14.5px;line-height:1.8}.conflict-stem p{margin:0}.conflict-options{display:flex;flex-direction:column;gap:2px;font-size:13.5px;line-height:1.8}.conflict-options b{color:var(--text-muted);margin-right:4px}.conflict-figure{max-height:140px;margin-top:10px;border:1px solid var(--border);border-radius:8px;background:#fff}.conflict-meta{margin-top:10px;padding-top:10px;border-top:1px dashed var(--border);display:flex;flex-direction:column;gap:4px;font-size:12.5px}.conflict-meta div{display:flex;gap:8px}.conflict-meta span{color:var(--text-subtle);flex:0 0 56px}.conflict-meta b{font-weight:600;color:var(--text)}@media (max-width:720px){.conflict-compare{grid-template-columns:1fr;max-height:60vh}}.qcard.focus-card{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.modal.conflict-modal{width:720px;max-height:84vh;display:flex;flex-direction:column}@media (max-width:720px){.modal.conflict-modal{width:100%}}.shot-dup-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px;padding:10px 14px;border:1px solid #e2c9a5;border-radius:10px;background:var(--warning-soft);color:#7a4d16;font-size:13.5px}.shot-dup-bar .link{border:0;background:none;padding:0;color:#7a4d16;text-decoration:underline;text-underline-offset:3px;white-space:nowrap;font-size:13.5px}.import-summary{margin-bottom:16px;padding:12px 16px;border:1px solid var(--accent-soft);border-radius:12px;background:var(--accent-soft)}.import-summary-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13.5px;color:var(--accent-strong)}.import-summary-line b{font-size:14px}.import-summary-line .muted{color:var(--text-muted)}.import-summary-line .link{border:0;background:none;padding:0;color:var(--accent-strong);text-decoration:underline;text-underline-offset:3px;font-size:13.5px}.import-summary-line .spacer{flex:1 1}.import-skip-list{margin:10px 0 0;padding:10px 0 0 18px;border-top:1px dashed var(--border);max-height:180px;overflow-y:auto;color:var(--text);font-size:13px;line-height:1.8}.import-summary .iconbtn{color:var(--text-muted)}.import-summary-line .sep{color:var(--text-subtle)}.conflict-figure-block{margin-top:2px}.conflict-sub-label{font-size:11.5px;color:var(--text-subtle);margin:8px 0 6px}.conflict-figure{display:block;width:100%;max-height:150px;object-fit:contain;margin:0}.conflict-figures{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:6px}.conflict-figures.single{grid-template-columns:1fr}.conflict-figures .conflict-figure-link:nth-child(3):last-child{grid-column:1/-1}.conflict-figure-link{display:block;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#fff}.conflict-figure-link img{max-height:110px}.conflict-save{margin-top:8px}.modal.conflict-modal{max-height:80vh}.conflict-compare{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px;max-height:none;overflow:visible;padding-right:0}.conflict-col{min-height:0;max-height:calc(80vh - 230px);overflow-y:auto}.conflict-stem{max-height:none;overflow:visible}.conflict-figures{margin-bottom:2px}.conflict-figures .conflict-figure-link{flex:1 1}.conflict-figure-link img{width:100%;height:120px;max-height:120px}.conflict-figure{max-height:120px}.conflict-import-shot{margin-top:12px;text-align:center}.conflict-import-shot .conflict-sub-label{text-align:center}.conflict-shot-figure{display:block;width:auto;max-width:40%;max-height:90px;margin:0 auto;border:1px solid var(--border);border-radius:8px;background:#fff}.conflict-import-shot .conflict-save{justify-content:center}@media (max-width:720px){.conflict-col{max-height:calc(80vh - 260px)}}.conflict-col{padding:16px}.conflict-figures{display:flex;gap:6px;width:100%;margin-bottom:0}.conflict-figures .conflict-figure-link{flex:0 1 auto;max-width:55%;min-width:0}.conflict-figure-link img{display:block;width:auto;height:auto;max-width:100%;max-height:96px;object-fit:contain;margin:0 auto}.conflict-figure{max-height:96px}.conflict-options{margin-top:10px}.admin-page{max-width:1120px}.admin-wrap{display:flex;flex-direction:column;gap:16px;margin-top:18px}.admin-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:14px;padding:18px 20px 20px;box-shadow:var(--shadow-sm)}.admin-card h2{font-size:16px;margin:0 0 4px}.admin-create{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) auto;grid-gap:12px;gap:12px;align-items:end;margin-top:14px}.admin-create .field{margin:0}.admin-create>button{height:38px;white-space:nowrap}.admin-one-time{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 16px;border:1px solid #c8e0cf;border-radius:12px;background:#f0f8f2}.admin-one-time b{font-size:13.5px}.admin-one-time p{margin:3px 0 0;color:var(--text-muted);font-size:12.5px}.admin-one-time code{font-family:var(--font-mono,ui-monospace,SFMono-Regular,Menlo,monospace);font-size:18px;letter-spacing:.08em;padding:5px 10px;border-radius:8px;background:#fff;border:1px dashed #a9cdb0;color:#214c38}.admin-list-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.admin-table-wrap{overflow-x:auto;margin-top:12px}.admin-table{width:100%;border-collapse:collapse;font-size:13px;white-space:nowrap}.admin-table th{text-align:left;font-size:11.5px;letter-spacing:.06em;color:var(--text-subtle);font-weight:600;padding:0 12px 8px;border-bottom:1px solid var(--border)}.admin-table td{padding:10px 12px;border-bottom:1px solid var(--border-soft);vertical-align:middle}.admin-table tr:last-child td{border-bottom:0}.admin-badge{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:999px;background:#e6f2ea;color:#2f6b4f;font-size:10.5px}.admin-status{font-size:12px}.admin-status.on{color:#2f6b4f}.admin-status.off{color:var(--danger)}.admin-actions{display:flex;gap:4px}.admin-actions button{white-space:nowrap}.admin-table .mono{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}@media (max-width:760px){.admin-create{grid-template-columns:1fr}}.admin-reset-code{display:flex;justify-content:center;margin:16px 0}.admin-reset-code code{font-family:var(--font-mono,ui-monospace,SFMono-Regular,Menlo,monospace);font-size:24px;letter-spacing:.12em;padding:10px 18px;border-radius:10px;border:1px dashed #a9cdb0;background:#f2f9f4;color:#214c38}.auth-checks{display:flex;flex-wrap:wrap;gap:8px 18px;margin:-2px 0 14px;font-size:12.5px;color:var(--text-muted)}.auth-check{display:inline-flex;align-items:center;gap:6px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.auth-check input{accent-color:var(--accent)}.account-password-page{max-width:760px}.account-password-card{max-width:520px}.account-password-card .field{margin-bottom:14px}.password-field{position:relative}.password-field input{width:100%;padding-right:44px}.password-toggle{position:absolute;top:50%;right:6px;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:8px;background:transparent;color:var(--text-subtle);cursor:pointer}.password-toggle:hover{color:var(--text);background:var(--surface-soft,rgba(0,0,0,.05))}.auth-notice{margin:0 0 14px;padding:10px 12px;border-radius:10px;border:1px solid #d7e6da;background:#f2f9f4;color:#2f6b4f;font-size:13px;line-height:1.5}