:root{--paper:#f7f5ef;--paper2:#efece3;--ink:#1d1c1a;--ink2:#55524b;--ink3:#8a867c;--rule:#d9d4c7;--rule2:#e8e4d9;--acc:#8c2f24;--acc-bg:#f3e6e1;--ok:#2f6b3a;--bad:#a3342a;--serif:"Noto Serif SC","Source Han Serif SC","Songti SC",serif;--sans:-apple-system,"PingFang SC","Noto Sans SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:14.5px/1.55 var(--sans)}
a{color:var(--acc);text-decoration:none}a:hover{text-decoration:underline}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
.btn{border:1px solid var(--rule);background:#fff;padding:3px 10px;border-radius:3px;line-height:1.5;white-space:nowrap}
.btn:hover{border-color:var(--ink3)}
.btn.pri{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.btn.acc{background:var(--acc);color:#fff;border-color:var(--acc)}
.btn.sm{padding:1px 7px;font-size:12.5px}
.btn:disabled{opacity:.5;cursor:default}
input[type=text],input[type=password],input[type=search],input[type=number],select,textarea{border:1px solid var(--rule);background:#fff;border-radius:3px;padding:3px 8px}
textarea{width:100%;resize:vertical}
/* top bar */
.top{position:sticky;top:0;z-index:20;height:44px;display:flex;align-items:center;gap:14px;padding:0 14px;background:var(--paper);border-bottom:1px solid var(--ink)}
.top .brand{font:600 16px/1 var(--serif);color:var(--ink);white-space:nowrap;letter-spacing:.02em}
.top .brand small{font:12px var(--sans);color:var(--ink3);margin-left:6px;letter-spacing:0}
.top nav{display:flex;gap:2px}
.top nav a{color:var(--ink2);padding:4px 8px;border-radius:3px;white-space:nowrap}
.top nav a.on{color:var(--ink);background:var(--paper2);text-decoration:none}
.top .search{flex:1;max-width:340px;margin-left:auto}
.top .search input{width:100%;height:28px}
.top .acct{color:var(--ink2);font-size:13px;white-space:nowrap}
/* layout */
.wrap{display:grid;grid-template-columns:212px minmax(0,1fr);max-width:1440px;margin:0 auto}
.rail{position:sticky;top:44px;align-self:start;height:calc(100vh - 44px);overflow:auto;padding:10px 10px 30px 14px;border-right:1px solid var(--rule);font-size:13.5px}
.rail h4{font:600 12px var(--sans);color:var(--ink3);margin:12px 0 4px;letter-spacing:.06em}
.rail h4:first-child{margin-top:2px}
.rail .t{display:flex;justify-content:space-between;padding:2px 6px;border-radius:3px;color:var(--ink);cursor:pointer;gap:6px}
.rail .t:hover{background:var(--paper2)}
.rail .t.on{background:var(--ink);color:var(--paper)}
.rail .t .n{color:var(--ink3);font-size:12px;font-variant-numeric:tabular-nums}
.rail .t.on .n{color:#cfc9bb}
.rail .sub{padding-left:12px;display:none}
.rail .grp.open .sub{display:block}
.rail .chips{display:flex;flex-wrap:wrap;gap:3px}
.chip{border:1px solid var(--rule);background:#fff;border-radius:3px;padding:0 6px;font-size:12.5px;cursor:pointer;line-height:21px;white-space:nowrap}
.chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.toggle{display:flex;align-items:center;gap:6px;font-size:13px;cursor:pointer;user-select:none}
.main{padding:8px 18px 60px;max-width:1200px;min-width:0}
.bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:4px 0 6px;border-bottom:1px solid var(--rule);font-size:13px;color:var(--ink2)}
.bar .sp{flex:1}
h2.sec{font:600 17px var(--serif);margin:16px 0 0;padding-bottom:3px;border-bottom:1.5px solid var(--ink);display:flex;align-items:baseline;gap:10px}
h2.sec small{font:12.5px var(--sans);color:var(--ink3)}
h3.sub{font:600 14px var(--serif);margin:10px 0 0;color:var(--ink2)}
/* cards */
.grid{display:grid;grid-template-columns:1fr;column-gap:22px}
.grid.two{grid-template-columns:1fr 1fr}
.card{border-bottom:1px solid var(--rule2);padding:8px 0 10px;min-width:0}
.meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:12.5px;color:var(--ink2);line-height:20px}
.meta .src{color:var(--ink);font-weight:500}
.meta .dot{color:var(--rule)}
.meta .tag{color:var(--acc);cursor:pointer}
.meta .tag.sec2{color:var(--ink3)}
.meta .st{margin-left:auto;display:flex;gap:2px}
.st button{border:0;background:none;padding:0 4px;color:var(--ink3);font-size:12.5px;border-radius:2px}
.st button.on{color:var(--acc);font-weight:600}
.st button:hover{background:var(--paper2)}
.mk{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:2px}
.mk.done{background:var(--ink3)}.mk.wrong{background:var(--bad)}
.qimg{display:block;max-width:100%;height:auto;margin-top:4px;mix-blend-mode:multiply}
.acts{display:flex;gap:6px;margin-top:4px;flex-wrap:wrap}
.acts .btn{font-size:12.5px;padding:1px 8px}
.ans{margin-top:6px;border-top:1px dashed var(--rule);padding-top:6px}
.ans .lbl{font-size:12px;color:var(--acc);font-weight:600;letter-spacing:.05em}
.up{margin-top:6px;border:1px solid var(--rule);background:#fff;padding:8px;border-radius:3px}
.up .row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.thumbs{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.thumbs img{height:72px;border:1px solid var(--rule)}
.prog{height:3px;background:var(--rule2);margin-top:6px;overflow:hidden}
.prog i{display:block;height:100%;width:0;background:var(--acc);transition:width .3s}
.result{margin-top:8px;font-size:13.5px}
.result .score{font:600 20px var(--serif)}
.result .score.ok{color:var(--ok)}.result .score.bad{color:var(--bad)}
.result table{border-collapse:collapse;width:100%;margin:6px 0}
.result td{border-top:1px solid var(--rule2);padding:3px 6px 3px 0;vertical-align:top}
.result .ocr{white-space:pre-wrap;background:var(--paper);border:1px solid var(--rule2);padding:6px;font-size:13px;max-height:220px;overflow:auto}
.pill{display:inline-block;border:1px solid var(--rule);border-radius:2px;padding:0 5px;font-size:12px;margin:1px 3px 1px 0;background:#fff}
.pill.w{border-color:#d9b7b0;color:var(--bad)}
.muted{color:var(--ink3)}.small{font-size:12.5px}
.empty{padding:30px 0;color:var(--ink3);text-align:center}
.more{display:block;margin:14px auto}
/* tables */
table.t{border-collapse:collapse;width:100%;font-size:13px}
table.t th{text-align:left;font-weight:600;color:var(--ink2);border-bottom:1.5px solid var(--ink);padding:3px 8px 3px 0;white-space:nowrap}
table.t td{border-bottom:1px solid var(--rule2);padding:3px 8px 3px 0;vertical-align:top}
.barv{display:inline-block;height:7px;background:var(--acc);vertical-align:middle;opacity:.75}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:4px 26px}
/* paper builder */
.pb{display:grid;grid-template-columns:330px minmax(0,1fr);gap:20px}
.pb .box{border-top:1.5px solid var(--ink);padding-top:6px}
.pb label{display:block;font-size:12.5px;color:var(--ink2);margin:7px 0 2px}
.pitem{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:8px;border-bottom:1px solid var(--rule2);padding:6px 0;align-items:start}
.pitem .no{font:600 15px var(--serif);text-align:right}
.pitem .ops{display:flex;flex-direction:column;gap:2px}
.pitem img{max-width:100%;max-height:170px;object-fit:contain;object-position:left top;mix-blend-mode:multiply}
.exam .qno{font:600 15px var(--serif);margin-right:6px}
.timer{font:600 15px var(--serif);font-variant-numeric:tabular-nums}
.note{background:var(--acc-bg);border-left:3px solid var(--acc);padding:6px 10px;font-size:13px;margin:8px 0}
.lb{position:fixed;inset:0;background:rgba(20,18,15,.92);z-index:50;overflow:auto;display:flex;align-items:flex-start;justify-content:center;touch-action:pinch-zoom}
.lb img{max-width:none;width:min(1400px,180vw);background:#fff;margin:40px 0}
.lb .x{position:fixed;top:8px;right:10px;color:#fff;background:none;border:0;font-size:26px}
.mbar{display:none}
.modal{position:fixed;inset:0;background:rgba(20,18,15,.4);z-index:60;display:flex;align-items:center;justify-content:center}
.modal .in{background:var(--paper);border:1px solid var(--ink);padding:14px 16px;width:min(480px,92vw);max-height:86vh;overflow:auto}
[hidden]{display:none!important}
body.norail .wrap{grid-template-columns:minmax(0,1fr)}
body.norail .main{max-width:1200px;width:100%;margin:0 auto;padding:10px 22px 60px}
.pagehd{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;border-bottom:1.5px solid var(--ink);padding:4px 0 5px}
.pagehd h2{font:600 18px var(--serif);margin:0}.pagehd .sp{flex:1}.pagehd a{margin-left:auto;font-size:13px}
.figs{display:flex;flex-wrap:wrap;gap:4px 28px;padding:8px 0 4px;font-size:12.5px;color:var(--ink3)}
.fig b{font:600 19px var(--serif);color:var(--ink);margin-right:5px;font-variant-numeric:tabular-nums}.fig b small{font-size:13px;color:var(--ink3);font-weight:400}
.sgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 28px}.sgrid .full{grid-column:1/-1}
table.t th.num,table.t td.num{text-align:right;font-variant-numeric:tabular-nums;padding-right:12px;width:1%;white-space:nowrap}
table.t .barc{width:30%}
.pbar{display:inline-block;width:100%;height:6px;background:var(--rule2);vertical-align:middle;border-radius:1px;overflow:hidden}.pbar i{display:block;height:100%;background:var(--acc);opacity:.8}
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:4px 26px;padding-top:6px}
.pg{display:grid;grid-template-columns:86px minmax(0,1fr) 70px;align-items:center;gap:8px;font-size:13px;padding:2px 0;border-bottom:1px solid var(--rule2)}
.pg .num{text-align:right;font-variant-numeric:tabular-nums;color:var(--ink2)}.pg em{font-style:normal;color:var(--bad);font-size:12px}
.empty-s{color:var(--ink3);font-size:12.5px;padding:8px 0;border-bottom:1px solid var(--rule2)}
/* builder */
.pb{grid-template-columns:340px minmax(0,1fr);gap:26px;padding-top:4px}
.pb-l{display:flex;flex-direction:column;gap:18px}
.pb .box h3{font:600 15px var(--serif);margin:0 0 8px}
.pb .fld{margin-top:12px}.pb .fld>label:first-child{display:block;margin:0 0 5px}
.pb .fld .toggle{margin:0 0 4px;display:flex}
.pb .row{display:flex;gap:8px;align-items:center;margin-top:12px;flex-wrap:wrap}
.pb .chips{display:flex;flex-wrap:wrap;gap:4px}
.pb .nums{display:flex;gap:14px;font-size:13px}.pb .nums input{width:54px;margin-left:3px}
.w90{width:90px}
.ptitle{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding-bottom:8px}
.ptitle #tt{flex:1;min-width:200px;height:32px;font:600 16px var(--serif)}
.ptitle .mins{font-size:13px;color:var(--ink2);white-space:nowrap}.ptitle #mn{width:62px}
.ptitle #sum{width:100%}
.actbar{display:flex;justify-content:space-between;gap:8px 16px;flex-wrap:wrap;padding:8px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.actbar .grp{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.pitem{grid-template-columns:30px minmax(0,1fr) auto;gap:12px;padding:10px 0}
.pitem .no{padding-top:1px}
.pitem .ops{flex-direction:row;gap:3px}
.pitem img{display:block;margin-top:4px;max-height:200px}
@media (max-width:1100px){.grid.two{grid-template-columns:1fr}}
@media (max-width:820px){
 body{font-size:15px}
 .top{gap:8px;padding:0 10px}.top .brand small,.top nav{display:none}
 .top .search{max-width:none}
 .wrap{display:block}
 .rail{display:none}
 .mbar{display:flex;gap:5px;overflow-x:auto;padding:6px 10px;border-bottom:1px solid var(--rule);background:var(--paper);position:sticky;top:44px;z-index:15;scrollbar-width:none}
 .mbar::-webkit-scrollbar{display:none}
 .mbar select,.mbar .chip{flex:none;height:32px;line-height:30px;font-size:14px;padding:0 9px}
 .mnav{display:flex;border-bottom:1px solid var(--rule)}
 .mnav a{flex:1;text-align:center;padding:8px 0;color:var(--ink2)}
 .mnav a.on{color:var(--ink);font-weight:600;border-bottom:2px solid var(--ink)}
 .main{padding:4px 10px 60px}
 .acts .btn,.st button{padding:5px 10px;font-size:14px}
 .st button{padding:4px 6px}
 .pb{grid-template-columns:minmax(0,1fr);gap:16px}.pb>*{min-width:0}
 body.norail .main{padding:6px 10px 60px}
 .sgrid{grid-template-columns:1fr}
 .actbar{flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;scrollbar-width:none}.actbar::-webkit-scrollbar{display:none}
 .actbar .grp{flex-wrap:nowrap}
 .pitem{grid-template-columns:24px minmax(0,1fr);gap:8px}
 .pitem .ops{grid-column:2;justify-content:flex-end}
 .pitem .ops .btn{padding:4px 12px;font-size:14px}
 .figs{gap:4px 18px}
 .meta .st{margin-left:0;width:100%}
}
@media (min-width:821px){.mnav{display:none}}
@media print{
 .top,.rail,.mbar,.mnav,.acts,.bar,.noprint,.up,.st{display:none!important}
 body{background:#fff;font-size:12pt}
 .wrap{display:block}.main{max-width:none;padding:0}
 .pitem,.card{break-inside:avoid}
 .exam .card{border:0;padding-bottom:28mm}
 .exam .card.解答题{padding-bottom:90mm}
 .qimg{mix-blend-mode:normal}
}
table.t{width:100%}table.t td:last-child a,table.t td.act{white-space:nowrap}
.modal .in{position:relative}.modal .mx{position:absolute;top:4px;right:6px;border:0;background:none;font-size:22px;line-height:1;color:var(--ink3)}
.btn.dl{padding:7px 16px;font-size:14.5px}
/* self-mark 对/半对/错 */
.smk{display:flex;gap:8px;margin:4px 0}.smk .mkb{flex:1;max-width:120px;padding:9px 0;font-size:15px;text-align:center;background:#fff}
.mkb.ok.on{background:var(--ok);border-color:var(--ok);color:#fff}.mkb.half.on{background:#b7791f;border-color:#b7791f;color:#fff}.mkb.bad.on{background:var(--bad);border-color:var(--bad);color:#fff}
.c-ok{color:var(--ok)}.c-half{color:#b7791f}.c-bad{color:var(--bad)}.jump a.half{border-color:#b7791f;color:#b7791f}
.mkp{font-weight:600}.mkp.ok{color:var(--ok)}.mkp.half{color:#b7791f}.mkp.bad{color:var(--bad)}
/* AI result (minimal) */
.result .vrow{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline}
.mkp.over{text-decoration:line-through;opacity:.55}
.result .pts{margin:6px 0 4px;padding-left:20px}.result .pts li{margin:3px 0;line-height:1.55}
.result .pts .fix{color:var(--ok)}
.result details.tr{margin-top:4px;font-size:12.5px;color:var(--muted)}.result details.tr summary{cursor:pointer}
.md .katex{font-size:1.05em}.md .katex-display{margin:.3em 0;overflow-x:auto;overflow-y:hidden}
.md ul,.md ol{margin:2px 0;padding-left:18px}
