:root{
  --bg:#f5f6fa;
  --card:#ffffff;
  --ink:#101828;
  --ink-2:#344054;
  --muted:#667085;
  --line:#eaecf0;
  --primary:#4f46e5;
  --primary-2:#6366f1;
  --primary-soft:#eef2ff;
  --green:#16a34a;
  --green-soft:#ecfdf3;
  --amber:#d97706;
  --amber-soft:#fffaeb;
  --orange:#ea580c;
  --orange-soft:#fff4ed;
  --red:#dc2626;
  --red-soft:#fef3f2;
  --absurd:#991b1b;
  --absurd-soft:#fee2e2;
  --radius:18px;
  --shadow:0 8px 24px rgba(16,24,40,.06);
  --shadow-2:0 2px 8px rgba(16,24,40,.05);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{
  background:var(--bg);color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  font-size:15px;line-height:1.6;
  padding-bottom:calc(76px + env(safe-area-inset-bottom));
}
button,.option,.tab,.chip{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
body.no-tabbar{padding-bottom:calc(92px + env(safe-area-inset-bottom))}
body.no-tabbar .tabbar{display:none}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}
input,textarea{font:inherit}
.hidden{display:none!important}
.main{max-width:860px;margin:0 auto;padding:14px 16px 24px;min-height:60vh}
.topbar{position:sticky;top:0;z-index:40;background:rgba(245,246,250,.86);backdrop-filter:blur(14px);border-bottom:1px solid rgba(234,236,240,.7)}
.topbar-inner{max-width:860px;margin:0 auto;height:58px;display:flex;align-items:center;gap:8px;padding:0 12px}
.brand{display:flex;align-items:center;gap:9px;flex:1;min-width:0}
.brand-mark{width:34px;height:34px;border-radius:11px;background:linear-gradient(135deg,#4f46e5,#7c3aed);color:#fff;display:grid;place-items:center;font-weight:800;font-size:17px;box-shadow:0 6px 14px rgba(79,70,229,.25);flex:none}
.brand-text{display:flex;flex-direction:column;line-height:1.15;min-width:0}
.brand-text strong{font-size:17px;letter-spacing:.5px}
.brand-text small{font-size:10px;color:var(--muted);letter-spacing:.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar-actions{display:flex;gap:2px;align-items:center}
.icon-btn{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:var(--ink-2);position:relative}
.icon-btn:active{background:rgba(16,24,40,.06)}
.icon-btn svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.back-btn{flex:none}
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:45;background:rgba(255,255,255,.94);backdrop-filter:blur(16px);border-top:1px solid var(--line);display:flex;padding:5px 6px calc(5px + env(safe-area-inset-bottom));max-width:860px;margin:0 auto;border-radius:0}
.tabbar .tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;color:var(--muted);padding:5px 0;position:relative;border-radius:10px}
.tabbar .tab .tab-ico{width:23px;height:23px;display:grid;place-items:center}
.tabbar .tab svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tabbar .tab.active{color:var(--primary)}
.tabbar .tab.active .tab-ico{transform:translateY(-1px)}
.tab-badge{position:absolute;top:0;right:calc(50% - 22px);min-width:17px;height:17px;padding:0 4px;border-radius:20px;background:var(--red);color:#fff;font-size:10px;line-height:17px;text-align:center;font-weight:700}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin:6px 2px 14px;gap:12px}
.page-head h1{font-size:23px;margin:0;letter-spacing:-.5px;line-height:1.25}
.page-head p{margin:3px 0 0;color:var(--muted);font-size:12.5px}
.page-head .side{font-size:12px;color:var(--muted);text-align:right;white-space:nowrap}
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow-2);border:1px solid rgba(234,236,240,.7)}
.hero{padding:20px;background:linear-gradient(135deg,#4338ca 0%,#4f46e5 45%,#7c3aed 100%);color:#fff;border:0;box-shadow:0 14px 30px rgba(79,70,229,.22);position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;width:220px;height:220px;border-radius:50%;background:rgba(255,255,255,.09);right:-70px;top:-100px}
.hero::before{content:"";position:absolute;width:140px;height:140px;border-radius:50%;background:rgba(255,255,255,.07);right:40px;bottom:-90px}
.hero-top{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;position:relative;z-index:1}
.hero h2{margin:0;font-size:21px;letter-spacing:-.3px}
.hero p{margin:5px 0 0;font-size:12.5px;color:rgba(255,255,255,.78)}
.hero-ring{width:72px;height:72px;flex:none;position:relative;display:grid;place-items:center}
.hero-ring svg{position:absolute;inset:0;transform:rotate(-90deg)}
.hero-ring .ring-text{font-size:15px;font-weight:800;line-height:1}
.hero-ring .ring-text small{display:block;font-size:9px;font-weight:500;color:rgba(255,255,255,.7);margin-top:3px;letter-spacing:.5px}
.hero-stats{display:flex;gap:10px;margin-top:18px;position:relative;z-index:1}
.hero-stat{flex:1;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:9px 10px}
.hero-stat b{display:block;font-size:19px;line-height:1.2;letter-spacing:-.3px}
.hero-stat span{font-size:10.5px;color:rgba(255,255,255,.72)}
.hero-goal{margin-top:14px;position:relative;z-index:1}
.hero-goal-row{display:flex;justify-content:space-between;font-size:10.5px;color:rgba(255,255,255,.72);margin-bottom:5px}
.hero-goal-bar{height:6px;background:rgba(255,255,255,.2);border-radius:99px;overflow:hidden}
.hero-goal-bar i{display:block;height:100%;background:#fff;border-radius:99px;transition:width .4s}
.section{margin-top:20px}
.section-head{display:flex;align-items:center;justify-content:space-between;margin:0 2px 9px}
.section-head h3{margin:0;font-size:16px;letter-spacing:-.2px}
.section-head a,.section-head button{font-size:12px;color:var(--primary);font-weight:600}
.subject-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.subject-card{padding:15px;position:relative;overflow:hidden}
.subject-card .sc-icon{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;font-size:19px;font-weight:800;margin-bottom:9px}
.subject-card.math .sc-icon{background:#eef2ff;color:#4f46e5}
.subject-card.cs .sc-icon{background:#ecfdf3;color:#059669}
.subject-card h4{margin:0;font-size:15.5px;letter-spacing:-.2px}
.subject-card .sc-sub{font-size:11px;color:var(--muted);margin-top:1px;line-height:1.4}
.subject-card .sc-nums{display:flex;justify-content:space-between;font-size:10.5px;color:var(--muted);margin-top:10px}
.subject-card .bar{height:5px;background:#f2f4f7;border-radius:99px;overflow:hidden;margin-top:5px}
.subject-card .bar i{display:block;height:100%;border-radius:99px}
.subject-card.math .bar i{background:linear-gradient(90deg,#6366f1,#8b5cf6)}
.subject-card.cs .bar i{background:linear-gradient(90deg,#10b981,#34d399)}
.subject-card .sc-arrow{position:absolute;right:13px;top:14px;color:#98a2b3}
.tag-scroll{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 5px;scrollbar-width:none}
.tag-scroll::-webkit-scrollbar{display:none}
.chip{display:inline-flex;align-items:center;gap:5px;padding:7px 11px;border-radius:99px;background:#fff;border:1px solid var(--line);font-size:12px;color:var(--ink-2);white-space:nowrap;box-shadow:0 1px 2px rgba(16,24,40,.03)}
.chip .flame{font-size:11px}
.chip b{color:var(--primary);font-size:11px}
.chip.hot{border-color:#fde68a;background:linear-gradient(180deg,#fffdf5,#fffaeb)}
.chip.chapter{border-color:#dbeafe;background:#eff6ff;color:#1d4ed8}
.chip.concept{border-color:#fbcfe8;background:#fdf2f8;color:#be185d}
.tag-inline{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:6px;background:#f4f3ff;color:#5b21b6;font-size:10.5px;line-height:1.6;white-space:nowrap}
.tag-inline.hot{background:#fffaeb;color:#b45309}
.tag-inline.chapter{background:#eff6ff;color:#1d4ed8}
.tag-inline.concept{background:#fdf2f8;color:#be185d}
.error-list{display:flex;flex-direction:column;gap:8px}
.error-mini{display:flex;gap:10px;padding:11px 12px;border-radius:13px;background:#fff;border:1px solid var(--line);align-items:flex-start}
.sev-bar{width:4px;border-radius:99px;align-self:stretch;flex:none;background:#98a2b3}
.sev-perfect{background:var(--green)}.sev-partial{background:#f59e0b}.sev-weak{background:#f97316}.sev-zero{background:#dc2626}.sev-absurd{background:#7f1d1d}
.error-mini .em-main{min-width:0;flex:1}
.error-mini .em-top{display:flex;gap:6px;align-items:center;font-size:10.5px;color:var(--muted);flex-wrap:wrap}
.pill{display:inline-flex;align-items:center;padding:1px 6px;border-radius:5px;font-size:10px;font-weight:600;line-height:1.7}
.pill.green{background:var(--green-soft);color:#067647}.pill.amber{background:var(--amber-soft);color:#b54708}.pill.orange{background:var(--orange-soft);color:#c2410c}.pill.red{background:var(--red-soft);color:#b42318}.pill.absurd{background:#fef2f2;color:#7f1d1d}.pill.gray{background:#f2f4f7;color:#475467}.pill.blue{background:#eff8ff;color:#175cd3}
.error-mini .em-stem{font-size:12.5px;line-height:1.55;margin-top:3px;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.error-mini .em-tags{display:flex;gap:4px;margin-top:5px;flex-wrap:wrap}
.empty{padding:44px 20px;text-align:center;color:var(--muted);font-size:13px}
.empty .em-ico{font-size:34px;margin-bottom:8px;opacity:.6}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:11px 16px;border-radius:12px;background:var(--primary);color:#fff;font-weight:600;font-size:14px;transition:transform .08s,opacity .2s}
.btn:active{transform:scale(.985)}
.btn.secondary{background:#fff;color:var(--ink-2);border:1px solid var(--line)}
.btn.ghost{background:transparent;color:var(--primary)}
.btn.danger{background:var(--red)}
.btn.small{padding:7px 11px;font-size:12px;border-radius:9px}
.btn.block{width:100%}
.btn:disabled{opacity:.5}
.paper-list{display:flex;flex-direction:column;gap:9px}
.paper-row{display:flex;align-items:center;gap:12px;padding:13px 14px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 1px 2px rgba(16,24,40,.03)}
.paper-year{width:52px;flex:none;text-align:center;font-weight:800;font-size:17px;letter-spacing:-.5px;color:var(--ink)}
.paper-year small{display:block;font-size:9.5px;font-weight:500;color:var(--muted);letter-spacing:.2px;margin-top:-1px}
.paper-main{flex:1;min-width:0}
.paper-title{font-size:13.5px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.paper-meta{display:flex;align-items:center;gap:8px;font-size:10.5px;color:var(--muted);margin-top:2px}
.paper-progress{height:4px;background:#f2f4f7;border-radius:99px;overflow:hidden;margin-top:6px}
.paper-progress i{display:block;height:100%;background:linear-gradient(90deg,#6366f1,#8b5cf6);border-radius:99px}
.paper-score{flex:none;text-align:right;font-size:10.5px;color:var(--muted);line-height:1.35}
.paper-score b{display:block;font-size:14px;color:var(--ink);letter-spacing:-.3px}
.paper-score .done{color:var(--green);font-weight:700}
.tabs{display:flex;gap:6px;background:#eceef4;border-radius:12px;padding:3px;margin:0 0 13px}
.tabs button{flex:1;padding:7px 8px;border-radius:9px;font-size:12px;color:var(--muted);font-weight:600}
.tabs button.active{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(16,24,40,.08)}
.sub-tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;margin:0 0 12px;scrollbar-width:none}
.sub-tabs::-webkit-scrollbar{display:none}
.sub-tabs button{padding:7px 12px;border-radius:99px;background:#fff;border:1px solid var(--line);font-size:12px;color:var(--muted);white-space:nowrap}
.sub-tabs button.active{background:var(--primary-soft);border-color:#c7d2fe;color:var(--primary);font-weight:650}
.paper-head{padding:16px;margin-bottom:14px}
.paper-head-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.paper-head h1{margin:0;font-size:21px;letter-spacing:-.4px}
.paper-head p{margin:3px 0 0;font-size:11.5px;color:var(--muted)}
.paper-head-stats{display:flex;gap:7px;margin-top:13px}
.ph-stat{flex:1;background:#f8f9fc;border-radius:11px;padding:8px 9px}
.ph-stat b{display:block;font-size:16px;letter-spacing:-.3px}
.ph-stat span{font-size:9.5px;color:var(--muted)}
.q-list{display:flex;flex-direction:column;gap:7px}
.q-row{display:flex;gap:10px;padding:11px 12px;background:#fff;border:1px solid var(--line);border-radius:13px;align-items:flex-start}
.q-num{width:27px;height:27px;flex:none;border-radius:8px;display:grid;place-items:center;font-size:11px;font-weight:700;background:#f2f4f7;color:#475467;margin-top:1px}
.q-num.perfect{background:var(--green-soft);color:#067647}.q-num.partial{background:var(--amber-soft);color:#b54708}.q-num.weak,.q-num.zero{background:var(--red-soft);color:#b42318}.q-num.absurd{background:#fef2f2;color:#7f1d1d}
.q-main{flex:1;min-width:0}
.q-title{font-size:12.5px;line-height:1.55;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.q-meta{display:flex;align-items:center;gap:5px;margin-top:4px;flex-wrap:wrap;font-size:10px;color:var(--muted)}
.q-right{flex:none;text-align:right;font-size:10px;color:var(--muted);padding-top:1px}
.q-right b{display:block;font-size:12.5px}
.q-right .correct{color:var(--green)}.q-right .wrong{color:var(--red)}
.sticky-cta{position:fixed;left:0;right:0;bottom:0;z-index:44;background:rgba(255,255,255,.96);backdrop-filter:blur(14px);border-top:1px solid var(--line);padding:9px 16px calc(9px + env(safe-area-inset-bottom));display:flex;gap:9px;max-width:860px;margin:0 auto}
.sticky-cta .btn{flex:1}
.question-wrap{padding-bottom:8px}
.q-topmeta{display:flex;gap:5px;flex-wrap:wrap;align-items:center;margin:2px 0 10px}
.q-stem{padding:17px 16px;font-size:15px;line-height:1.8;overflow-wrap:anywhere}
.q-stem .stem-label{font-size:10.5px;color:var(--muted);letter-spacing:.5px;margin-bottom:5px;font-weight:700}
.rich p{margin:0 0 8px}
.rich p:last-child{margin-bottom:0}
.rich .math-block{margin:8px 0;overflow-x:auto;overflow-y:hidden;padding:2px 0;-webkit-overflow-scrolling:touch}
.rich .katex-display{margin:.35em 0}
.rich code{background:#f2f4f7;border-radius:5px;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}
.rich pre{background:#0f172a;color:#e2e8f0;border-radius:12px;padding:12px 13px;overflow-x:auto;-webkit-overflow-scrolling:touch;font-size:12px;line-height:1.55;margin:9px 0}
.rich pre code{background:none;color:inherit;padding:0;font-size:12px}
.rich img{max-width:100%;border-radius:10px;display:block;margin:8px auto}
.figure-box{margin-top:10px;background:#fff;border:1px solid var(--line);border-radius:13px;padding:9px;text-align:center}
.figure-box img{max-width:100%;max-height:330px;object-fit:contain;display:block;margin:0 auto}
.figure-inline{width:100%;overflow:auto}
.figure-inline svg{max-width:100%;height:auto;display:block;margin:0 auto}
.figure-box .cap{font-size:10px;color:var(--muted);margin-top:5px}
.options{display:flex;flex-direction:column;gap:8px;margin-top:13px}
.option{display:flex;gap:10px;align-items:flex-start;padding:12px 13px;border:1.5px solid var(--line);border-radius:12px;background:#fff;transition:border-color .15s,background .15s;text-align:left;width:100%}
.option .ol{width:24px;height:24px;flex:none;border-radius:7px;background:#f2f4f7;display:grid;place-items:center;font-weight:700;font-size:11px;color:#475467}
.option .ot{font-size:13.5px;line-height:1.6;color:var(--ink-2)}
.option.selected{border-color:var(--primary);background:#f5f4ff}
.option.selected .ol{background:var(--primary);color:#fff}
.option.correct{border-color:#16a34a;background:#f0fdf4}
.option.correct .ol{background:#16a34a;color:#fff}
.option.wrong{border-color:#dc2626;background:#fff5f5}
.option.wrong .ol{background:#dc2626;color:#fff}
.option:disabled{cursor:default}
.input-row{margin-top:12px}
.text-input,.note-input{width:100%;border:1.5px solid var(--line);border-radius:12px;padding:12px 13px;background:#fff;font-size:14px;outline:none;color:var(--ink)}
.text-input:focus,.note-input:focus{border-color:#a5b4fc;box-shadow:0 0 0 3px rgba(99,102,241,.1)}
.note-input{min-height:58px;resize:vertical;font-size:12.5px;margin-top:9px}
.score-panel{background:#fff;border:1px solid var(--line);border-radius:15px;padding:14px;margin-top:13px}
.score-title{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:650;margin-bottom:9px}
.score-title span{font-size:10.5px;color:var(--muted);font-weight:400}
.score-btns{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.score-btn{padding:9px 4px;border-radius:9px;background:#f8f9fc;border:1px solid var(--line);font-size:11.5px;color:var(--ink-2);font-weight:600}
.score-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.score-btn small{display:block;font-size:9px;color:var(--muted);font-weight:400;margin-top:1px}
.score-btn.active small{color:rgba(255,255,255,.75)}
.absurd-toggle{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--muted);margin-top:8px;padding:4px 0}
.absurd-toggle input{accent-color:#991b1b}
.rubric-list{display:flex;flex-direction:column;gap:2px}
.rubric{display:flex;align-items:center;gap:8px;padding:8px 2px;font-size:12.5px;color:var(--ink-2);border-bottom:1px solid #f2f4f7;line-height:1.4}
.rubric:last-child{border-bottom:0}
.rubric input{width:16px;height:16px;accent-color:var(--primary);flex:none}
.rubric span{flex:1}
.rubric em{font-style:normal;font-size:9.5px;color:#b54708;background:#fffaeb;border-radius:5px;padding:1px 5px;white-space:nowrap;flex:none}
.photo-row{display:flex;gap:8px;overflow-x:auto;padding:3px 1px 6px}
.photo-thumb{width:74px;height:74px;border-radius:11px;object-fit:cover;border:1px solid var(--line);background:#f8f9fc;flex:none}
.photo-add{width:74px;height:74px;border-radius:11px;border:1.5px dashed #d0d5dd;background:#fcfcfd;display:grid;place-items:center;flex:none;color:#98a2b3;font-size:22px;position:relative;overflow:hidden}
.photo-add small{position:absolute;bottom:5px;left:0;right:0;text-align:center;font-size:9px;color:var(--muted);line-height:1}
.photo-wrap{position:relative;flex:none}
.photo-del{position:absolute;top:-5px;right:-5px;width:19px;height:19px;border-radius:99px;background:rgba(16,24,40,.75);color:#fff;font-size:12px;line-height:19px;text-align:center;z-index:2}
.result-box{border-radius:14px;padding:13px 14px;margin-top:13px;border:1px solid transparent}
.result-box.green{background:var(--green-soft);border-color:#abefc6;color:#067647}
.result-box.amber{background:var(--amber-soft);border-color:#fedf89;color:#b54708}
.result-box.orange{background:var(--orange-soft);border-color:#f9dbaf;color:#c2410c}
.result-box.red{background:var(--red-soft);border-color:#fecdca;color:#b42318}
.result-box.absurd{background:#fef2f2;border-color:#fecaca;color:#7f1d1d}
.result-box .rb-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.result-box b{font-size:15px}
.result-box span{font-size:11px;opacity:.85}
.answer-panel{margin-top:12px}
.ai-retake{background:linear-gradient(180deg,#fff8f7,#fff);border-color:#fecdca}
.ai-transcript{margin-top:8px;font-size:11px;color:#475467}
.ai-transcript summary{cursor:pointer;color:#5b4bff;font-weight:600;padding:2px 0}
.ai-transcript pre{white-space:pre-wrap;word-break:break-word;background:#fff;border:1px solid #eaecf0;border-radius:9px;padding:8px 10px;margin:6px 0 0;max-height:190px;overflow:auto;font-family:inherit;font-size:11px;line-height:1.65;color:#344054}.ai-eval{margin-top:12px;background:linear-gradient(180deg,#f8f7ff,#fff);border:1px solid #ddd6fe;border-radius:15px;padding:14px}
.ai-eval-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:9px;font-size:13px}
.ai-dims{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.ai-dim{background:#fff;border:1px solid #ede9fe;border-radius:10px;padding:7px 4px;text-align:center}
.ai-dim span{display:block;font-size:9.5px;color:var(--muted);margin-bottom:2px;white-space:nowrap}
.ai-dim b{font-size:16px;line-height:1.2}
.ai-dim small{display:block;font-size:9px;color:var(--muted);margin-top:1px}
.ai-loading{display:flex;align-items:center;gap:8px;margin-top:12px;padding:11px 13px;border-radius:12px;background:#f5f4ff;border:1px solid #ddd6fe;color:#5b21b6;font-size:12px}
.ai-note{margin-top:2px;padding:11px 12px;border-radius:11px;background:#f5f4ff;border:1px solid #e4e0ff;color:#4c1d95;font-size:12px;line-height:1.7}
.ai-note b{font-size:12.5px}
.ai-photo-review{margin-top:11px;border-top:1px dashed #ddd6fe;padding-top:10px}
.ai-photo-title{display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:12px;color:#4c1d95;margin-bottom:7px}
.ai-photo-title span{font-size:9.5px;color:#7c6f9f;font-weight:400}
.ann-wrap{position:relative;margin-top:8px;border:1px solid #e4e0ff;border-radius:10px;overflow:hidden;background:#fff}
.ann-img{display:block;width:100%;height:auto}
.ann-stamp{position:absolute;top:8px;right:8px;background:#b42318;color:#fff;font-size:11px;font-weight:700;padding:4px 8px;border-radius:7px;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.ann-stamp.ok{background:#067647}
.ann-box{position:absolute;border:2px solid #dc2626;background:rgba(220,38,38,.12);border-radius:4px;pointer-events:none}
.ann-box.missing{border-color:#d97706;background:rgba(217,119,6,.14);border-style:dashed}
.ann-box.correct{border-color:#059669;background:rgba(5,150,105,.12)}
.ann-num{position:absolute;top:-10px;left:-10px;width:19px;height:19px;border-radius:50%;background:#b42318;color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid #fff}
.ann-num.small{display:inline-flex;position:static;width:16px;height:16px;font-size:9px;margin-right:5px;vertical-align:middle}
.ann-legend{display:flex;flex-direction:column;gap:4px;margin-top:8px;font-size:10.5px;color:#475467;line-height:1.5}
.ann-legend div{display:flex;align-items:flex-start}
.spinner.small{width:16px;height:16px;border-width:2px;flex:none}
.answer-panel .ap-head{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--muted);margin-bottom:7px}
.answer-box{background:#fbfcff;border:1px solid #e4e7ec;border-radius:13px;padding:13px 14px;font-size:13.5px;line-height:1.75;overflow-wrap:anywhere}
.answer-box .ans-label{font-size:10.5px;font-weight:700;color:var(--primary);letter-spacing:.5px;margin-bottom:4px}
.analysis-box{margin-top:10px;background:#fff;border:1px solid var(--line);border-radius:13px;padding:13px 14px;font-size:13.5px;line-height:1.8;overflow-wrap:anywhere}
.analysis-box .ans-label{color:#7f56d9}
.q-nav{display:flex;gap:8px;align-items:center;justify-content:space-between;margin-top:14px;color:var(--muted);font-size:11.5px}
.q-nav .btn{flex:1}
.filter-chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;margin-bottom:12px;scrollbar-width:none}
.filter-chips::-webkit-scrollbar{display:none}
.filter-chips button{padding:6px 11px;border-radius:99px;background:#fff;border:1px solid var(--line);font-size:11.5px;color:var(--muted);white-space:nowrap}
.filter-chips button.active{background:#111827;color:#fff;border-color:#111827}
.error-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:13px 14px;margin-bottom:9px;position:relative;overflow:hidden}
.error-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#98a2b3}
.error-card.sev-perfect::before{background:var(--green)}.error-card.sev-partial::before{background:#f59e0b}.error-card.sev-weak::before{background:#f97316}.error-card.sev-zero::before{background:#dc2626}.error-card.sev-absurd::before{background:#7f1d1d}
.error-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.error-card-meta{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:10.5px;color:var(--muted);flex-wrap:wrap}
.error-card .stem{margin-top:5px;font-size:13px;line-height:1.65;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.error-card .tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}
.error-card-actions{display:flex;gap:7px;margin-top:9px;align-items:center}
.error-card-actions .btn{flex:1}
.error-photos{display:flex;gap:5px;margin-top:7px}
.error-photos img{width:46px;height:46px;border-radius:7px;object-fit:cover;border:1px solid var(--line)}
.stat-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.stat-box{background:#fff;border:1px solid var(--line);border-radius:13px;padding:11px 10px;text-align:center}
.stat-box b{display:block;font-size:20px;letter-spacing:-.5px;line-height:1.2}
.stat-box span{font-size:10px;color:var(--muted)}
.stat-box.red b{color:var(--red)}.stat-box.amber b{color:#b54708}.stat-box.indigo b{color:var(--primary)}
.knowledge-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.k-card{padding:12px 13px;background:#fff;border:1px solid var(--line);border-radius:13px;position:relative}
.k-card.hot{border-color:#fde68a;background:linear-gradient(180deg,#fff,#fffdf5)}
.k-card .kc-top{display:flex;align-items:center;justify-content:space-between;gap:6px}
.k-card .kc-name{font-size:13px;font-weight:650;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.k-card .kc-cat{font-size:9.5px;color:var(--muted);margin-top:2px}
.k-card .kc-count{font-size:17px;font-weight:800;letter-spacing:-.4px;color:var(--primary);line-height:1}
.k-card .kc-count small{font-size:9px;font-weight:500;color:var(--muted);margin-left:2px;letter-spacing:0}
.k-card .kc-bar{height:4px;background:#f2f4f7;border-radius:99px;margin-top:7px;overflow:hidden}
.k-card .kc-bar i{display:block;height:100%;background:linear-gradient(90deg,#818cf8,#c084fc);border-radius:99px}
.k-card.concept .kc-bar i{background:linear-gradient(90deg,#f472b6,#fb7185)}
.k-card.chapter .kc-bar i{background:linear-gradient(90deg,#60a5fa,#818cf8)}
.concept-list{display:flex;flex-direction:column;gap:6px}
.concept-row{display:flex;align-items:center;gap:9px;padding:8px 10px;background:#fff;border:1px solid var(--line);border-radius:10px}
.concept-name{width:78px;flex:none;font-size:11.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.concept-bar{flex:1;height:5px;background:#f2f4f7;border-radius:99px;overflow:hidden}
.concept-bar i{display:block;height:100%;background:linear-gradient(90deg,#a5b4fc,#818cf8);border-radius:99px}
.concept-num{width:48px;text-align:right;font-size:10px;color:var(--muted);flex:none}
.concept-row.hot{background:linear-gradient(90deg,#fffdf5,#fff);border-color:#fde68a}
.concept-row.hot .concept-name{color:#b45309}
.tag-hero{padding:17px 16px;margin-bottom:13px}
.tag-hero .th-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.tag-hero h1{margin:0;font-size:22px;letter-spacing:-.5px;line-height:1.3}
.tag-hero p{margin:4px 0 0;font-size:11.5px;color:var(--muted)}
.tag-hero .th-count{text-align:right;flex:none}
.tag-hero .th-count b{display:block;font-size:24px;color:var(--primary);letter-spacing:-.5px;line-height:1.1}
.tag-hero .th-count span{font-size:9.5px;color:var(--muted)}
.settings-card{padding:14px 15px;margin-bottom:11px}
.settings-card h3{margin:0 0 3px;font-size:14px}
.settings-card p{margin:0;font-size:11px;color:var(--muted);line-height:1.6}
.settings-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #f2f4f7}
.settings-row:last-child{border-bottom:0;padding-bottom:0}
.settings-row label{font-size:12.5px}
.settings-row .val{font-size:12px;color:var(--muted)}
.settings-row input{width:150px;text-align:right;border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-size:12px}
.qr-box{text-align:center;padding:14px 0 2px}
.qr-box svg{width:168px;height:168px;max-width:100%;background:#fff;padding:6px;border-radius:10px;border:1px solid var(--line)}
.qr-url{font-size:12px;color:var(--ink-2);word-break:break-all;margin-top:8px;font-weight:600}
.qr-tip{font-size:10.5px;color:var(--muted);margin-top:4px}
.settings-links{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.settings-links .btn{flex:1;min-width:120px}
.small-note{font-size:10.5px;color:var(--muted);line-height:1.65;margin-top:8px}
.search-bar{display:flex;gap:8px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:13px;padding:9px 12px;margin-bottom:12px}
.search-bar input{flex:1;border:0;outline:0;background:none;font-size:14px}
.search-bar svg{width:18px;height:18px;stroke:#98a2b3;fill:none;stroke-width:2}
.result-row{display:flex;gap:9px;padding:10px 11px;border-bottom:1px solid #f2f4f7;align-items:flex-start}
.result-row:last-child{border-bottom:0}
.result-year{font-size:10.5px;color:var(--muted);white-space:nowrap;padding-top:2px;width:64px;flex:none}
.result-main{flex:1;min-width:0;font-size:12px;line-height:1.55;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.skeleton{background:linear-gradient(90deg,#f2f4f7 25%,#e9ecf2 37%,#f2f4f7 63%);background-size:400% 100%;animation:shine 1.4s infinite;border-radius:10px}
@keyframes shine{0%{background-position:100% 0}100%{background-position:0 0}}
.toast-wrap{position:fixed;left:0;right:0;bottom:calc(86px + env(safe-area-inset-bottom));z-index:80;display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none}
.toast{max-width:calc(100% - 32px);background:rgba(16,24,40,.92);color:#fff;padding:9px 14px;border-radius:99px;font-size:12px;box-shadow:0 8px 20px rgba(16,24,40,.2);animation:toastIn .2s ease}
.toast.ok{background:#067647}.toast.err{background:#b42318}
@keyframes toastIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.modal{position:fixed;inset:0;z-index:90;display:grid;place-items:center;padding:18px}
.modal-backdrop{position:absolute;inset:0;background:rgba(9,12,20,.6);backdrop-filter:blur(3px)}
.modal-body{position:relative;z-index:1;background:#fff;border-radius:18px;max-width:calc(100vw - 30px);max-height:86vh;overflow:auto;padding:12px;box-shadow:0 20px 50px rgba(0,0,0,.25)}
.modal-body img{max-width:100%;max-height:78vh;display:block;margin:0 auto;border-radius:8px}
.modal-close{position:absolute;top:8px;right:8px;width:32px;height:32px;border-radius:99px;background:rgba(16,24,40,.7);color:#fff;display:grid;place-items:center;z-index:2}
.loading-screen{position:fixed;inset:0;z-index:100;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--muted);font-size:13px}
.spinner{width:26px;height:26px;border-radius:50%;border:2.5px solid #e4e7ec;border-top-color:var(--primary);animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.up{color:var(--green)}.down{color:var(--red)}
.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}
.muted{color:var(--muted)}
.center{text-align:center}
.divider{height:1px;background:#f2f4f7;margin:10px 0}
.hint{font-size:10.5px;color:var(--muted);line-height:1.5}
.flex{display:flex;gap:8px;align-items:center}
.flex-wrap{flex-wrap:wrap}
.grow{flex:1}
.hide-mobile{display:inline}
@media(min-width:720px){
  .subject-grid{grid-template-columns:repeat(2,1fr)}
  .knowledge-grid{grid-template-columns:repeat(3,1fr)}
  .main{padding-left:22px;padding-right:22px}
  .tag-scroll{flex-wrap:wrap;overflow:visible}
}
@media(max-width:380px){
  .subject-grid{grid-template-columns:1fr}
  .score-btns{grid-template-columns:repeat(5,1fr);gap:4px}
  .score-btn{font-size:10.5px}
}
.backup-list{margin-top:10px;border-top:1px solid #eaecf0}
.backup-row{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid #f2f4f7}
.backup-row:last-child{border-bottom:0}
.backup-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.mini-link{font-size:11px;color:#5b4bff;text-decoration:none;white-space:nowrap}
.btn.tiny{padding:5px 9px;font-size:11px;border-radius:8px}.paper-timer-box{display:flex;justify-content:space-between;align-items:center;gap:10px;background:#fff;border:1px solid #eaecf0;border-radius:14px;padding:10px 13px;margin:10px 0}
.paper-timer-box b{font-size:15px;color:#101828}
@media(max-width:520px){.paper-timer-box{align-items:flex-start;flex-direction:column}.paper-timer-box .settings-links{width:100%}}.note-card{margin-top:12px;background:#fff;border:1px solid #eaecf0;border-radius:14px;padding:12px}
.note-card-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px;font-size:12px}
.note-card-head span{font-size:10.5px;color:#98a2b3}
.note-card .note-input{width:100%;min-height:72px;border:1px solid #e4e7ec;border-radius:10px;padding:9px 11px;font:inherit;font-size:12.5px;line-height:1.7;resize:vertical;background:#fff}
.note-card .settings-links{justify-content:flex-end;margin-top:7px}
.my-note-red{margin-top:9px;padding:9px 11px;border-left:3px solid #ef4444;background:#fff5f5;color:#b42318;border-radius:0 8px 8px 0;font-size:12.5px;line-height:1.75;white-space:pre-wrap;word-break:break-word}.knowledge-card{margin-top:12px;background:#f8faff;border:1px solid #dbe4ff;border-radius:14px;padding:12px}
.knowledge-points{display:flex;gap:6px;flex-wrap:wrap;margin:7px 0 9px}
.knowledge-points .pill{display:inline-flex;align-items:center;gap:4px}
.kp-del{border:0;background:transparent;color:currentColor;font-size:14px;line-height:1;padding:0 0 0 2px;cursor:pointer}
.knowledge-add{display:flex;gap:7px;margin-bottom:8px}
.knowledge-add input{flex:1;min-width:0;border:1px solid #d0d9f5;border-radius:9px;padding:8px 10px;font:inherit;font-size:12px;background:#fff}
.knowledge-card .note-input{width:100%;min-height:64px;border:1px solid #dbe4ff;border-radius:9px;padding:8px 10px;font:inherit;font-size:12px;line-height:1.7;background:#fff;resize:vertical}.knowledge-shots{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
.kshot{position:relative;width:72px;height:72px;border-radius:9px;overflow:hidden;border:1px solid #dbe4ff;background:#fff}
.kshot img{width:100%;height:100%;object-fit:cover;display:block}
.kshot .photo-del{position:absolute;right:2px;top:2px;width:18px;height:18px;border:0;border-radius:50%;background:rgba(16,24,40,.75);color:#fff;font-size:13px;line-height:18px;padding:0}
.knowledge-shots .photo-add{width:72px;height:72px;border-radius:9px}.stale-list{margin:8px 0 10px}
.stale-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid #f2f4f7}
.stale-row:last-child{border-bottom:0}
.stale-row b{font-size:13px;color:#101828}
.th-top .btn.small{flex:0 0 auto}.map-legend{display:flex;gap:14px;flex-wrap:wrap;align-items:center;font-size:11px;color:#667085;margin:8px 0 12px}
.map-legend .map-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px}
.map-dot.red{background:#ef4444}.map-dot.amber{background:#f59e0b}
.mind-subject{margin-bottom:18px}
.mind-root{display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#1e293b,#334155);color:#fff;border-radius:16px;padding:14px 16px;margin-bottom:12px;box-shadow:0 10px 24px rgba(15,23,42,.18)}
.mind-root span{font-size:20px;font-weight:800}.mind-root small{font-size:10.5px;opacity:.75;margin-top:3px}
.mind-categories{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.mind-category{background:#fff;border:1px solid #e4e7ec;border-radius:14px;padding:11px 12px;position:relative}
.mind-category::before{content:'';position:absolute;left:18px;top:-7px;width:2px;height:7px;background:#cbd5e1}
.mind-cat-head{display:flex;justify-content:space-between;align-items:baseline;gap:6px;padding-bottom:7px;border-bottom:1px solid #eaecf0;margin-bottom:7px}
.mind-cat-head b{font-size:13px;color:#101828}.mind-cat-head span{font-size:10px;color:#98a2b3;text-align:right}
.map-err{color:#b42318;font-style:normal;font-weight:700}
.mind-chapters{display:flex;flex-direction:column;gap:7px}
.mind-chapter{border-left:2px solid #dbe4ff;padding-left:9px}
.mind-chapter-title{display:flex;justify-content:space-between;gap:6px;align-items:center;font-size:12px;font-weight:700;color:#344054}
.mind-chapter-title a{color:#344054;text-decoration:none;border-bottom:1px dashed #cbd5e1}
.mind-chapter-title small{font-size:9.5px;color:#98a2b3;font-weight:400}
.mind-topics{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}
.mind-topic{position:relative;display:inline-flex;align-items:center;gap:4px;background:#f8faff;border:1px solid #e0e7ff;border-radius:7px;padding:4px 6px;font-size:10.5px;color:#475467;text-decoration:none;line-height:1.3}
.mind-topic:hover{border-color:#a5b4fc;background:#eef2ff}
.mind-topic small{font-size:9px;color:#98a2b3}
.mind-topic i{position:absolute;right:-4px;top:-5px;background:#ef4444;color:#fff;font-size:8px;font-style:normal;min-width:12px;height:12px;line-height:12px;text-align:center;border-radius:6px;padding:0 2px}
.mind-topic em{font-style:normal;font-size:10px}
.mind-topic.has-error{background:#fff5f5;border-color:#fecdca;color:#b42318}
.mind-topic.stale{border-style:dashed;border-color:#fbbf24}
@media(max-width:620px){.mind-categories{grid-template-columns:1fr}.mind-category{padding:10px}.mind-root span{font-size:18px}}.code-group{background:#fff;border:1px solid #e4e7ec;border-radius:16px;padding:0 12px;margin-bottom:14px;overflow:hidden}
.code-group-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;padding:13px 0 10px;border-bottom:1px solid #eaecf0}
.code-group-head h2{font-size:15px;margin:0;color:#101828}
.code-group-head p{font-size:11px;color:#98a2b3;margin:3px 0 0}
.code-group-meta{display:flex;align-items:center;gap:5px;flex-wrap:wrap;justify-content:flex-end}
.code-group .q-list{padding:0}
.code-group .q-row{margin:0;border-radius:0;border-left:0;border-right:0;border-top:0}
.code-group .q-row:first-child{border-top:0}
@media(max-width:520px){.code-group-head{flex-direction:column}.code-group-meta{justify-content:flex-start}}