:root{--bg:#F3F4F6;--app:#FFFFFF;--soft:#F4F5F7;--line:#E3E5E9;--ink:#2A2D34;--ink2:#767C87;--ink3:#A4A9B2;
--or:#FF7A2F;--ord:#DD5913;--orw:#FFF0E6;--gr:#2DB86B;--grd:#1F9454;--grw:#E5F6EC;--rd:#E5534A;--rdw:#FCEBEA;
--round:"Nunito","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;
--body:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",system-ui,-apple-system,sans-serif}
@media (prefers-color-scheme:dark){:root{--bg:#0F1115;--app:#171A20;--soft:#1F232A;--line:#2C3038;--ink:#EEF0F3;--ink2:#9AA0AB;--ink3:#6B717C;--orw:#3A2418;--grw:#16301F;--rdw:#3A1D1B;color-scheme:dark}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.55;-webkit-tap-highlight-color:transparent}
h1,h2,h3,p{margin:0}
button,input,select{font:inherit;color:inherit}
[hidden]{display:none!important}
a{color:var(--ord)}
.wrap{max-width:480px;margin:0 auto;padding:24px max(16px,env(safe-area-inset-left,0px)) 48px;display:flex;flex-direction:column;gap:20px}
.wide{max-width:960px}
.muted{color:var(--ink2)}
.chip{font-family:var(--round);font-weight:800;font-size:12px;color:var(--ink2);background:var(--soft);border-radius:999px;padding:2px 10px;align-self:flex-start}
.lbl{font-family:var(--round);font-size:12px;font-weight:900;letter-spacing:.1em;color:var(--ink3)}
.btn{--c:var(--or);--cd:var(--ord);display:inline-flex;align-items:center;justify-content:center;gap:10px;border:0;border-radius:16px;background:var(--c);color:#fff;font-family:var(--round);font-weight:900;font-size:17px;letter-spacing:.04em;padding:14px 18px;min-height:56px;box-shadow:0 4px 0 var(--cd);cursor:pointer;width:100%;transition:transform .06s,box-shadow .06s}
.btn:active{transform:translateY(4px);box-shadow:0 0 0 var(--cd)}
.btn:disabled{opacity:.5;cursor:default}
.btn.gr{--c:var(--gr);--cd:var(--grd)}
.btn.gh{--c:var(--app);--cd:var(--line);color:var(--ink);border:2px solid var(--line)}
.btn svg{width:22px;height:22px;flex:none}
.btn:focus-visible,.sm:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #4B8BF5;outline-offset:2px}
.card{background:var(--app);border:2px solid var(--line);border-radius:22px;padding:18px;display:flex;flex-direction:column;gap:14px}
.card .t{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.card .t b{font-size:20px;font-weight:800}
.card .t span{font-family:var(--round);font-weight:900;color:var(--ink3);font-size:14px}
.card .n{font-size:15px;color:var(--ink2)}
.card .n b{font-family:var(--round);font-weight:900;font-size:22px;color:var(--ink)}
.note{font-size:14px;color:var(--grd);font-weight:700}
.empty{color:var(--ink3);font-weight:700;text-align:center;padding:8px 0}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.grid3 div{background:var(--app);border:2px solid var(--line);border-radius:16px;padding:12px 6px;text-align:center;display:flex;flex-direction:column}
.grid3 b{font-family:var(--round);font-weight:900;font-size:28px;line-height:1.15}
.grid3 span{font-size:12.5px;color:var(--ink2)}
.bars{display:flex;flex-direction:column;gap:10px}
.bar{display:grid;grid-template-columns:82px 1fr 64px;gap:10px;align-items:center;font-size:13.5px}
.bar .tr{height:12px;border-radius:999px;background:var(--soft);overflow:hidden;display:flex}
.bar .tr i{display:block;height:100%}
.bar .v{text-align:right;color:var(--ink2);font-family:var(--round);font-weight:800;font-size:13px}
.note2{background:var(--soft);border-radius:16px;padding:14px 16px;font-size:14.5px;line-height:1.8}
.list{display:flex;flex-direction:column;gap:8px;font-size:14px}
.list div{display:flex;gap:10px}
.list time{color:var(--ink3);font-family:var(--round);font-weight:800;white-space:nowrap}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--ink);color:var(--app);padding:10px 16px;border-radius:12px;font-size:14px;z-index:40;max-width:calc(100% - 32px)}
.sm{border:2px solid var(--line);background:var(--app);border-radius:10px;padding:5px 10px;font-weight:800;font-size:13px;cursor:pointer;white-space:nowrap}
.field{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:700;color:var(--ink2)}
.field input,.field select{border:2px solid var(--line);background:var(--app);border-radius:12px;padding:10px 12px;font-weight:600;color:var(--ink);min-height:46px}
.spin{width:18px;height:18px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--or);animation:sp .8s linear infinite;display:inline-block;vertical-align:-3px}
@keyframes sp{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.spin{animation:none}}
/* 打印用的 A4 页，只在生成 PDF 时临时出现在屏幕外 */
#print{position:fixed;left:-10000px;top:0}
.a4{width:794px;height:1123px;background:#fff;color:#222;padding:56px 64px;font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",sans-serif;display:flex;flex-direction:column;gap:18px;position:relative;overflow:hidden}
.a4 .h{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid #222;padding-bottom:14px}
.a4 .h h1{font-size:26px}
.a4 .h p{font-size:13px;color:#666;margin-top:6px}
.a4 .qrb{display:flex;flex-direction:column;align-items:center;gap:4px;font:900 16px "Nunito",sans-serif;letter-spacing:.04em}
.a4 .tag{font-size:14px;font-weight:700;color:#DD5913}
.a4 .rev{font-size:13.5px;color:#444;background:#F5F5F3;border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:4px;white-space:pre-wrap}
.a4 .rev i{font-style:normal;color:#888}
.a4 .pq{display:flex;flex-direction:column;gap:8px}
.a4 .pq b{font-size:15.5px;font-weight:600;white-space:pre-wrap}
.a4 .sp{flex:1;min-height:120px;border-bottom:1px solid #DDD}
.a4 .qs{display:flex;flex-direction:column;gap:14px;flex:1;padding-bottom:40px}
.a4 .qs .pq{flex:1}
.a4 .ft{position:absolute;left:64px;right:64px;bottom:36px;font-size:12px;color:#888;display:flex;justify-content:space-between}
/* 上传区：拖文件或点击选文件 */
.ub{display:flex;flex-direction:column;gap:10px;width:100%}
.ub-zone{border:2px dashed var(--line);border-radius:18px;background:var(--app);padding:18px 16px;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;cursor:pointer;color:var(--ink2);transition:border-color .15s,background .15s}
.ub-zone:hover,.ub-zone.on{border-color:var(--or);background:var(--orw)}
.ub-zone:focus-visible{outline:3px solid #4B8BF5;outline-offset:2px}
.ub-zone svg{width:28px;height:28px;color:var(--or)}
.ub-zone b{color:var(--ink);font-size:15px}
.ub-zone span{font-size:13px}
.ub-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:14px}
.ub-list li{display:flex;flex-direction:column;gap:2px;border-radius:12px;background:var(--soft);padding:8px 12px}
.ub-n{color:var(--ink2);font-size:12.5px;word-break:break-all}
.ub-t{font-weight:700}
.ub-ok .ub-t{color:var(--grd)}
.ub-bad .ub-t{color:var(--rd)}
/* 红笔批改：原图 + 右边空白处的改正 */
.mk{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 34%;background:#fff;color:#222;border-radius:8px;overflow:hidden;box-shadow:0 6px 20px -12px rgba(20,24,32,.45)}
.mk-img{position:relative;line-height:0;align-self:start}
.mk-img img{width:100%;display:block}
.mk-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.mk-sym{position:absolute;width:5%;max-width:40px;aspect-ratio:1;transform:translate(-20%,-5%);background:none;border:0;padding:0;cursor:pointer}
.mk-sym svg{width:100%;height:100%;display:block}
.mk-pin{position:absolute;width:22px;height:22px;border-radius:50%;background:#D7262B;color:#fff;font:800 12px/22px var(--round);border:0;padding:0;cursor:pointer;transform:translate(0,-50%);box-shadow:0 0 0 2px #fff}
.mk-notes{position:relative;border-left:1px dashed #F0C4C4;background:#FFFCFB}
.mk-note{position:absolute;left:8px;right:6px;display:flex;gap:6px;align-items:flex-start;text-align:left;background:none;border:0;padding:2px 0;color:#D7262B;font:15px/1.4 KaTeX_Main,"Times New Roman","Songti SC",serif;cursor:pointer;word-break:break-word}
.mk-note b{flex:none;width:18px;height:18px;border-radius:50%;border:1.5px solid #D7262B;font:800 11px/15px var(--round);text-align:center;margin-top:2px}
.mk-note .katex{font-size:1em}
.mk-tx{display:flex;flex-direction:column;gap:3px;min-width:0}
.mk-note .fx{font:15px/1.35 KaTeX_Main,"Times New Roman","Songti SC",serif;color:#D7262B}
.mk-note .fx .katex{white-space:nowrap}
.mk-note .ln{font:12.5px/1.5 "PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",sans-serif;color:#B42318}
.mk-note .ln i{font-style:normal;font-weight:800;margin-right:5px;opacity:.7}
.mk-note .ln .katex{font-size:1.08em}
.mk-note:focus{outline:none}.mk-note:focus-visible,.mk-pin:focus-visible{outline:2px solid #4B8BF5;outline-offset:2px}
a.btn{text-decoration:none}
.mk-narrow{grid-template-columns:1fr}
.mk-narrow .mk-notes{border-left:0;border-top:1px dashed #F0C4C4;padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.mk-narrow .mk-note{position:static}
