:root{--ink:#192b3a;--muted:#637383;--line:#d8e1e5;--paper:#f7f9f7;--white:#fff;--red:#c84b3d;--redbg:#fbeeec;--green:#147b77;--greenbg:#e9f4f3;--yellow:#f1bd43;--yellowbg:#fdf6e3}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.65 Arial,"Microsoft YaHei",sans-serif}
.top{background:var(--ink);color:#fff;padding:20px max(16px,calc((100% - 1180px)/2));display:flex;gap:18px;align-items:end;flex-wrap:wrap}
.eyebrow{color:var(--yellow);font-weight:bold;letter-spacing:.14em;font-size:11px;margin:0 0 4px}
h1{font:30px/.95 Georgia,serif;margin:0}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.tabs button{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.25);color:#fff;padding:8px 16px;border-radius:20px;cursor:pointer;font-size:14px}
.tabs button.active{background:var(--yellow);border-color:var(--yellow);color:var(--ink);font-weight:bold}
.badge{background:var(--red);color:#fff;border-radius:9px;font-size:11px;padding:1px 6px;margin-left:4px}
.backday{color:#cbd7dd;font-size:13px;text-decoration:none;white-space:nowrap}
.backday:hover{color:#fff}
main{max-width:1180px;margin:22px auto 80px;padding:0 16px}
.card{background:#fff;border:1px solid var(--line);box-shadow:4px 4px 0 #dfe8e8;padding:18px 20px;margin-bottom:16px}
.muted{color:var(--muted)}
h2.sec{font:22px Georgia,serif;margin:6px 0 14px}
.weekbtns{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 12px}
.weekbtns button{border:1px solid var(--line);background:#fff;padding:6px 14px;border-radius:6px;cursor:pointer}
.weekbtns button.active{background:var(--ink);color:#fff;border-color:var(--ink)}
.tasklist{margin:0 0 18px;padding:0;list-style:none}
.tasklist li{display:flex;gap:10px;padding:7px 4px;border-bottom:1px dashed var(--line);font-size:14px}
.tasklist .d{color:var(--yellow);font-weight:bold;min-width:44px}
.chap-row{display:flex;align-items:center;gap:14px;padding:12px 6px;border-bottom:1px solid var(--line);cursor:pointer}
.chap-row:hover{background:#fbfdfb}
.chap-row .no{font:20px Georgia,serif;color:var(--muted);min-width:74px}
.chap-row .nm{flex:1}
.chap-row .nm b{font-size:15px}
.chap-row .nm .sub{font-size:12px;color:var(--muted)}
.chap-row .prog{width:150px;text-align:right;font-size:12px;color:var(--muted)}
.bar{height:6px;background:var(--line);border-radius:3px;margin-top:4px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--teal,#147b77)}
.bar i.bad{background:var(--red)}
.part-title{margin:20px 0 6px;font-weight:bold;color:var(--ink);border-left:4px solid var(--yellow);padding-left:8px}
/* 做题页 */
.qhead{position:sticky;top:0;z-index:5;background:var(--paper);padding:10px 0 8px;border-bottom:2px solid var(--ink);margin-bottom:14px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.qhead .t{font-weight:bold;font-size:17px}
.qhead .sp{flex:1}
.btn{border:1px solid var(--ink);background:var(--ink);color:#fff;padding:8px 20px;border-radius:6px;cursor:pointer;font-size:14px}
.btn.ghost{background:#fff;color:var(--ink)}
.btn.warn{background:var(--red);border-color:var(--red)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.notebox{background:var(--yellowbg);border:1px solid var(--yellow);padding:10px 14px;margin-bottom:14px;font-size:13.5px}
.notebox details{margin-top:6px}
.notebox summary{cursor:pointer;font-weight:bold;color:#8a6d1a}
.notebox ul{margin:6px 0;padding-left:18px}
.qcard{background:#fff;border:1px solid var(--line);padding:16px 18px;margin-bottom:14px}
.qcard.right{border-color:var(--green);box-shadow:4px 4px 0 var(--greenbg)}
.qcard.wrong{border-color:var(--red);box-shadow:4px 4px 0 var(--redbg)}
.qmeta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-bottom:6px}
.tag{border:1px solid var(--line);border-radius:10px;padding:1px 9px;background:#f4f7f6}
.tag.multi{color:#8a6d1a;border-color:var(--yellow);background:var(--yellowbg)}
.tag.src{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qstem{font-size:15.5px;margin:4px 0 10px;white-space:pre-wrap}
.opts label{display:block;padding:9px 12px;border:1px solid var(--line);border-radius:6px;margin-bottom:8px;cursor:pointer;font-size:14.5px}
.opts label:hover{border-color:var(--ink)}
.opts label.sel{border-color:var(--ink);background:#eef4f6;font-weight:bold}
.opts label.ok{border-color:var(--green);background:var(--greenbg)}
.opts label.ok::after{content:" ✓";color:var(--green);font-weight:bold}
.opts label.bad{border-color:var(--red);background:var(--redbg)}
.opts label.bad::after{content:" ✗";color:var(--red);font-weight:bold}
.explain{margin-top:10px;border-top:1px dashed var(--line);padding-top:8px;font-size:13.5px;color:#33454f}
.explain b{color:var(--green)}
.qcard.wrong .explain b{color:var(--red)}
.result-hero{display:flex;gap:26px;align-items:center;flex-wrap:wrap;background:var(--ink);color:#fff;padding:18px 22px;margin-bottom:16px;border-radius:8px}
.result-hero .big{font:42px Georgia,serif}
.result-hero .sub{color:#cbd7dd;font-size:13px}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.filters button{border:1px solid var(--line);background:#fff;padding:5px 12px;border-radius:14px;cursor:pointer;font-size:13px}
.filters button.active{background:var(--ink);color:#fff;border-color:var(--ink)}
.statgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:18px}
.statgrid .card{margin:0;text-align:center}
.statgrid .v{font:28px Georgia,serif}
.statgrid .k{font-size:12px;color:var(--muted)}
.srow{display:flex;align-items:center;gap:10px;margin-bottom:8px;font-size:13.5px}
.srow .nm{width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.srow .bar{flex:1;margin:0}
.srow .pc{width:52px;text-align:right}
.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 22px;border-radius:22px;font-size:14px;z-index:99;box-shadow:0 4px 14px rgba(0,0,0,.25)}
.empty{padding:40px;text-align:center;color:var(--muted)}
@media (max-width:640px){.chap-row .prog{width:100px}.qhead{position:static}}


/* ===== 融合层：考点地图 / 打卡 / 讲义（2026-09-10） ===== */
.btn.sm{padding:6px 12px;font-size:13px}
.btn.done{background:var(--green)}
.card.war{border-left:4px solid var(--yellow)}
.wargrid{display:flex;gap:22px;flex-wrap:wrap;margin-top:10px}
table.wt{border-collapse:collapse;font-size:13.5px}
table.wt th,table.wt td{padding:3px 12px;border-bottom:1px dashed var(--line);text-align:center}
table.wt th:first-child,table.wt td:first-child{text-align:left}
table.wt td.pn{font-weight:bold}
.wastep{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;flex:1;min-width:280px}
.wa{background:var(--paper);border:1px solid var(--line);border-radius:4px;padding:8px 10px}
.wa b{display:block;font:22px Georgia,serif;color:var(--green)}
.wa.warn b{color:var(--red)}
.wa span{font-size:11.5px;color:var(--muted);line-height:1.35;display:block}
.filters2{display:flex;gap:14px;flex-wrap:wrap;align-items:center;padding:12px 16px}
.filters2 input[type=text],.filters2 input:not([type]){flex:1;min-width:220px;padding:9px 12px;border:1px solid #bfcbd0;border-radius:4px;font:inherit}
.filters2 label{font-size:13.5px;display:flex;gap:5px;align-items:center;cursor:pointer}
.mapchap{background:#fff;border:1px solid var(--line);box-shadow:4px 4px 0 #dfe8e8;border-radius:4px;margin-bottom:10px}
.mhead{display:flex;align-items:center;gap:14px;padding:11px 14px;cursor:pointer}
.mhead .no{font:20px Georgia,serif;color:var(--muted);min-width:26px}
.mhead .nm{flex:1}
.mhead .nm b{font-size:14.5px}
.mhead .sub{display:block;font-size:12px;color:var(--muted)}
.mbody{border-top:1px solid var(--line);background:#fcfdfc}
.pad{padding:10px 14px}
.kpline{display:flex;gap:10px;align-items:center;padding:8px 14px;border-bottom:1px dashed var(--line);cursor:pointer;font-size:14px}
.kpline:hover{background:#f4f8f4}
.kpline.learned{background:var(--greenbg)}
.kpline .fr{min-width:46px;color:var(--yellow);font-size:12px;letter-spacing:-1px}
.kpline .fr.hi{color:#e0a422}
.kpline .kt{flex:1}
.kpline .rv{font-size:12px;color:var(--green);font-weight:bold;white-space:nowrap}
.kpline .rv.zero{color:#c9d3d7}
.kpline .yy{font-size:11.5px;min-width:78px}
.kpline .flags{display:flex;gap:5px;flex-wrap:wrap}
.kpline .go{color:var(--muted)}
.tag.warn{background:var(--redbg);color:var(--red)}
.tag.ok{background:var(--greenbg);color:var(--green)}
.tag.q{background:#eef2f7;color:#41586d}
.tag.yr{background:var(--yellowbg);color:#8a6414}
.tag.src{background:#eef2f7;color:#41586d}
.exs a{color:var(--green);cursor:pointer;text-decoration:underline}
.exrow{border-bottom:1px dashed var(--line);padding:7px 0}
.exrow summary{cursor:pointer;font-size:14px}
.card.kpblock{padding:14px 16px}
.card.kpblock .kpline{padding:8px 4px}
.qhead .t{max-width:70%}
.card.kphero{border-left:4px solid var(--line)}
.card.kphero.hi{border-left-color:var(--yellow)}
.kptag{color:#e0a422;letter-spacing:1px;font-size:15px}
.kpreal{margin:4px 0 10px;font-size:14px}
.kpact{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.notecard details,.tbcard details,.mn details,.realcard details{border-bottom:1px dashed var(--line);padding:7px 0}
.notecard summary,.tbcard summary,.mn summary{cursor:pointer;font-size:14.5px}
.md{font-size:14px;line-height:1.75;padding:6px 2px 4px}
.md p{margin:5px 0}
.md h5{font:15px Georgia,serif;margin:10px 0 4px;color:var(--ink)}
.md .li{margin:2px 0 2px 6px}
.md .gap{height:6px}
.md .sk{color:var(--green)}
.md table{border-collapse:collapse;margin:8px 0;width:100%;font-size:13.5px}
.md th,.md td{border:1px solid var(--line);padding:5px 8px;vertical-align:top;text-align:left}
.md th{background:var(--paper)}
.md code{background:#f2f4f2;padding:1px 4px;border-radius:3px}
.rq{display:flex;gap:8px;align-items:flex-start;padding:7px 0;border-bottom:1px dashed var(--line);cursor:pointer;font-size:13.5px}
.rq:hover{background:#f7faf7}
.rq .qq{flex:1}
.rq .an{white-space:nowrap;font-size:12px}
.navrow{display:flex;justify-content:space-between;gap:10px}
.navrow .btn{max-width:48%}
.taskrow{display:flex;gap:14px;align-items:flex-start;padding:14px 16px;margin-bottom:10px}
.tk-day{background:var(--ink);color:#fff;border-radius:4px;padding:4px 9px;font-size:12.5px;white-space:nowrap}
.tk-body{flex:1}
.tk-act{display:flex;gap:6px;flex-wrap:wrap}
.card.login-card,.card.user-card{border-left:4px solid var(--teal,#147b77)}
.lrow{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.lrow input,.lrow select{padding:9px 11px;border:1px solid #bfcbd0;border-radius:4px;font:inherit}
.err{color:var(--red);min-height:18px;font-size:13px;margin:4px 0 0}
.user-card{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.timerbox{text-align:center;border:2px solid var(--green);border-radius:4px;padding:6px 14px}
.timerbox strong{display:block;font:26px/1.1 "DM Mono",ui-monospace,monospace;color:var(--green)}
.timerbox small{font-size:11px;color:var(--muted)}
.trow{display:flex;gap:10px;padding:8px 4px;border-bottom:1px dashed var(--line);cursor:pointer;align-items:flex-start}
.trow.done{opacity:.6}
.trow.done b{text-decoration:line-through}
.trow input{width:20px;height:20px;margin-top:2px;accent-color:var(--green)}
.bl{font-style:normal}
.kpmini{display:flex;gap:9px;align-items:center;padding:7px 0;border-bottom:1px dashed var(--line);cursor:pointer;font-size:13.5px}
.kpmini .f{color:#e0a422;min-width:42px;font-size:12px}
.kpmini .t{flex:1}
.kpmini .go{color:var(--green)}
.bar.big{height:12px}
.modal{position:fixed;inset:0;background:rgba(15,30,40,.55);display:flex;align-items:flex-start;justify-content:center;padding:30px 14px;overflow:auto;z-index:60}
.mcard{background:#fff;border-radius:4px;max-width:760px;width:100%;padding:18px 20px;box-shadow:6px 6px 0 rgba(0,0,0,.2)}
@media(max-width:720px){.kpline{flex-wrap:wrap;font-size:13px}.kpline .yy{display:none}.mhead{flex-wrap:wrap}.wargrid{flex-direction:column}}

.kpreal{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.kphero,.kpact{overflow-wrap:anywhere}
.kpact{flex-wrap:wrap}
.tag.yr{white-space:nowrap}
.md table{display:block;overflow-x:auto;max-width:100%}
.realcard{overflow:hidden}
.rq{flex-wrap:wrap}
.rq .an{margin-left:auto}

/* ===== 入口登录 gate（2026-09-10 晚：进入网址先验证） ===== */
.gate{position:fixed;inset:0;z-index:200;background:var(--paper);display:grid;place-items:center;padding:20px;overflow:auto}
.gate[hidden]{display:none}
.gate-card{background:#fff;border:1px solid var(--line);box-shadow:6px 6px 0 #dfe8e8;padding:26px 28px;max-width:460px;width:100%}
.gate-card h2{font:26px Georgia,serif;margin:2px 0 10px}
.gate-card .lrow{align-items:center}
.gate-card select,.gate-card input{flex:1;min-width:130px}
.wtmeta{font-size:13px;margin:6px 0 2px}
.person{display:flex;justify-content:space-between;gap:10px;padding:3px 0;font-size:13.5px}
.person b{color:var(--green)}
/* hidden 属性优先：作者样式 display 会盖掉 UA 的 [hidden]{display:none} */
.top[hidden],main[hidden],#gate[hidden]{display:none !important}
