/* ============================================================
   化生学科站 · 通用样式
   离线版 · 无任何外部依赖（不引用 CDN / 网络字体）
   ============================================================ */

:root{
  --navy:#0F4C81; --navy-deep:#0B3A63; --navy-soft:#EAF1F8;
  --chem:#0E7C7B; --chem-soft:#E4F3F2;
  --bio:#2E7D32;  --bio-soft:#E8F3E9;
  --accent:#E8A33D; --accent-soft:#FDF3E3;
  --ink:#1F2937; --sub:#5B6B7C; --mute:#8A97A6;
  --bg:#F6F8FA; --paper:#FFFFFF; --line:#E3E8EF; --line-2:#EFF2F6;
  --danger:#C0392B; --danger-soft:#FBEAE8;
  --ok:#1E8449; --ok-soft:#E8F5EC;
  --shadow:0 1px 2px rgba(16,37,58,.05),0 8px 24px rgba(16,37,58,.06);
  --shadow-sm:0 1px 2px rgba(16,37,58,.06);
  --r:12px; --r-sm:8px;
  --max:1180px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:"PingFang SC","Microsoft YaHei","Noto Sans SC","Source Han Sans SC","Hiragino Sans GB",sans-serif;
  background:var(--bg); color:var(--ink); line-height:1.62;
  font-size:14.5px; -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
button{cursor:pointer;background:none;border:none}
table{border-collapse:collapse;width:100%}
::selection{background:#CFE3F4}

/* ---------- 布局 ---------- */
.wrap{max-width:var(--max);margin:0 auto;padding:0 20px}
.page{padding:26px 0 70px}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.row{display:flex;gap:12px;align-items:center}
.row.wrap-row{flex-wrap:wrap}
.spacer{flex:1}
.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mt24{margin-top:24px}
.mb0{margin-bottom:0}.mb8{margin-bottom:8px}.mb12{margin-bottom:12px}.mb16{margin-bottom:16px}
.tc{text-align:center}.tr{text-align:right}
.hide{display:none!important}
.mono{font-family:Consolas,"Courier New",monospace}

/* ---------- 顶栏 ---------- */
.topbar{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.97);border-bottom:1px solid var(--line);backdrop-filter:saturate(180%) blur(6px)}
.nav{max-width:var(--max);margin:0 auto;padding:0 20px;height:62px;display:flex;align-items:center;gap:6px}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:17px;color:var(--navy);letter-spacing:.2px;margin-right:10px}
.brand .logo{width:30px;height:30px;flex:0 0 auto}
.brand small{display:block;font-size:10.5px;font-weight:600;color:var(--mute);letter-spacing:.18em;line-height:1.1}
.nav-links{display:flex;gap:2px;flex-wrap:wrap;margin-right:auto}
.nav-links a{padding:8px 12px;border-radius:9px;font-size:14px;color:var(--sub);font-weight:500;white-space:nowrap;transition:.15s}
.nav-links a:hover{background:#F2F6FA;color:var(--navy)}
.nav-links a.on{color:var(--navy);background:var(--navy-soft);font-weight:700}
/* 芯火平台入口：放在课程视频右侧，颜色区分避免和工具页混在一起 */
.nav-links a.ext{color:#fff;background:var(--accent);border-color:var(--accent);font-weight:700}
.nav-links a.ext:hover{background:var(--ember);color:#fff}
.nav-tools{display:flex;gap:8px;align-items:center}
/* 返回主平台：资源页是独立工作区，必须留一条明确的路回去 */
.nav-home{display:inline-flex;align-items:center;gap:4px;height:30px;padding:0 11px 0 8px;border-radius:8px;
  background:var(--navy);color:#fff;font-size:12.5px;font-weight:700;white-space:nowrap;flex:0 0 auto;margin-right:10px}
.nav-home:hover{background:var(--navy-deep);color:#fff}
.nav-home svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.nav-home span{display:inline}
@media (max-width:520px){
  .nav-home{padding:0 9px;margin-right:6px}
  .nav-home span{display:none}
  .nav-home svg{width:15px;height:15px}
}

/* ---------- 按钮 ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:38px;padding:0 16px;border-radius:9px;font-size:14px;font-weight:600;border:1px solid var(--line);background:#fff;color:var(--ink);transition:.15s;white-space:nowrap}
.btn:hover{border-color:#C9D4E0;background:#FBFCFE;transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff}
.btn.primary:hover{background:var(--navy-deep);border-color:var(--navy-deep)}
.btn.chem{background:var(--chem);border-color:var(--chem);color:#fff}
.btn.chem:hover{filter:brightness(.93)}
.btn.bio{background:var(--bio);border-color:var(--bio);color:#fff}
.btn.bio:hover{filter:brightness(.93)}
.btn.ghost{background:transparent;border-color:transparent;color:var(--sub)}
.btn.ghost:hover{background:#F2F6FA;color:var(--navy)}
.btn.sm{height:30px;padding:0 11px;font-size:13px;border-radius:7px}
.btn.xs{height:26px;padding:0 9px;font-size:12px;border-radius:6px}
.btn.block{width:100%}
.btn[disabled]{opacity:.45;pointer-events:none}
.icon-btn{width:32px;height:32px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:var(--sub)}
.icon-btn:hover{background:#F1F5F9;color:var(--navy)}

/* ---------- 卡片 ---------- */
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-sm)}
.card-h{display:flex;align-items:center;gap:10px;padding:15px 18px;border-bottom:1px solid var(--line-2)}
.card-h h3{font-size:15.5px;font-weight:700;letter-spacing:.1px}
.card-h .desc{font-size:12.5px;color:var(--mute);font-weight:400}
.card-b{padding:18px}
.card-b.tight{padding:12px}
.card-pad{padding:18px}
.section-title{display:flex;align-items:center;gap:10px;margin:0 0 14px}
.section-title h2{font-size:19px;font-weight:800;letter-spacing:.2px}
.section-title .bar{width:4px;height:18px;border-radius:2px;background:var(--navy)}
.section-title .more{margin-left:auto;font-size:13px;color:var(--mute);font-weight:500}
.section-title .more:hover{color:var(--navy)}

/* ---------- 学科色标记 ---------- */
.tag-subject{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:5px;font-size:11.5px;font-weight:700;letter-spacing:.4px}
.tag-subject.chem{background:var(--chem-soft);color:#0A5C5B}
.tag-subject.bio{background:var(--bio-soft);color:#1F5D23}

/* ---------- 徽章 / 小标签 ---------- */
.chip{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 10px;border-radius:999px;background:#F3F6F9;color:var(--sub);font-size:12.5px;border:1px solid transparent;white-space:nowrap}
.chip.sel{background:var(--navy);color:#fff;border-color:var(--navy)}
.chip.clickable{cursor:pointer}
.chip.clickable:hover{background:#E9EFF5;color:var(--navy)}
.chip.sel:hover{background:var(--navy-deep)}
.pill{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:6px;font-size:11.5px;font-weight:600;background:#F1F4F8;color:var(--sub)}
.pill.d1{background:var(--ok-soft);color:#17663A}
.pill.d2{background:#EEF4FA;color:#255E8E}
.pill.d3{background:var(--accent-soft);color:#9A6412}
.pill.d4{background:var(--danger-soft);color:#9B2C1F}
.pill.warn{background:var(--danger-soft);color:#9B2C1F}
.pill.ok{background:var(--ok-soft);color:#17663A}

/* ---------- 表单 ---------- */
.field{display:block;margin-bottom:14px}
.field > label{display:block;font-size:13px;font-weight:600;color:var(--sub);margin-bottom:6px}
.input,.select,.textarea{width:100%;border:1px solid var(--line);background:#fff;border-radius:9px;padding:9px 12px;font-size:14px;outline:none;transition:.15s}
.input:focus,.select:focus,.textarea:focus{border-color:var(--navy);box-shadow:0 0 0 3px rgba(15,76,129,.1)}
.textarea{min-height:90px;resize:vertical;line-height:1.6}
.select{appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M2 4l4 4 4-4' fill='none' stroke='%235B6B7C' stroke-width='1.6' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 11px center;padding-right:30px}
.search{position:relative}
.search .input{padding-left:34px}
.search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--mute)}
.checkbox{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;color:var(--sub);cursor:pointer}
.checkbox input{width:15px;height:15px;accent-color:var(--navy)}
.seg{display:inline-flex;background:#F1F4F8;padding:3px;border-radius:9px;gap:2px}
.seg button{height:30px;padding:0 14px;border-radius:7px;font-size:13px;font-weight:600;color:var(--sub)}
.seg button.on{background:#fff;color:var(--navy);box-shadow:var(--shadow-sm)}

/* ---------- 表格 ---------- */
.tbl{font-size:13.5px}
.tbl th{text-align:left;font-weight:600;color:var(--sub);background:#FAFBFD;border-bottom:1px solid var(--line);padding:10px 12px;font-size:12.5px;white-space:nowrap}
.tbl td{padding:10px 12px;border-bottom:1px solid var(--line-2);vertical-align:middle}
.tbl tbody tr:hover{background:#FBFDFF}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums}
.tbl.compact th,.tbl.compact td{padding:7px 9px}

/* ---------- 统计卡 ---------- */
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;position:relative;overflow:hidden}
.kpi .k{font-size:12.5px;color:var(--mute);font-weight:600;letter-spacing:.3px}
.kpi .v{font-size:27px;font-weight:800;letter-spacing:-.5px;line-height:1.25;margin-top:2px;font-variant-numeric:tabular-nums}
.kpi .u{font-size:13px;font-weight:600;color:var(--mute);margin-left:3px}
.kpi .s{font-size:12px;color:var(--sub);margin-top:3px}
.kpi::after{content:"";position:absolute;right:-26px;top:-26px;width:74px;height:74px;border-radius:50%;background:var(--navy-soft);opacity:.6}
.kpi.chem::after{background:var(--chem-soft)}
.kpi.bio::after{background:var(--bio-soft)}
.kpi.warm::after{background:var(--accent-soft)}

/* ---------- 进度条 ---------- */
.bar-bg{height:7px;border-radius:99px;background:#EEF2F6;overflow:hidden}
.bar-fg{height:100%;border-radius:99px;background:var(--navy);transition:width .5s}
.bar-fg.chem{background:var(--chem)}
.bar-fg.bio{background:var(--bio)}
.bar-fg.warn{background:#D68910}
.bar-fg.bad{background:var(--danger)}

/* ---------- 空状态 ---------- */
.empty{text-align:center;padding:52px 20px;color:var(--mute)}
.empty svg{color:#CBD5E1;margin:0 auto 14px}
.empty h4{font-size:15px;color:var(--sub);font-weight:700;margin-bottom:6px}
.empty p{font-size:13px;max-width:420px;margin:0 auto}

/* ---------- 弹窗 ---------- */
.modal-mask{position:fixed;inset:0;background:rgba(15,32,50,.45);z-index:200;display:flex;align-items:flex-start;justify-content:center;padding:56px 18px;overflow:auto}
.modal{background:#fff;border-radius:14px;width:100%;max-width:760px;box-shadow:0 24px 60px rgba(10,30,50,.28);animation:pop .16s ease-out}
.modal.wide{max-width:1040px}
.modal.slim{max-width:520px}
@keyframes pop{from{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}
.modal-h{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line-2)}
.modal-h h3{font-size:16px;font-weight:700}
.modal-b{padding:20px}
.modal-f{padding:14px 20px;border-top:1px solid var(--line-2);display:flex;gap:10px;justify-content:flex-end;background:#FCFDFE;border-radius:0 0 14px 14px}

/* ---------- Toast ---------- */
#toast-host{position:fixed;right:20px;bottom:22px;z-index:400;display:flex;flex-direction:column;gap:10px;align-items:flex-end}
.toast{background:#16324F;color:#fff;padding:11px 16px;border-radius:10px;font-size:13.5px;box-shadow:0 12px 30px rgba(10,30,50,.25);display:flex;gap:9px;align-items:center;animation:slidein .2s ease-out;max-width:380px}
.toast.ok{background:#19613D}
.toast.err{background:#8E2B20}
@keyframes slidein{from{opacity:0;transform:translateX(12px)}to{opacity:1;transform:none}}

/* ---------- 提示条 ---------- */
.note{display:flex;gap:10px;padding:11px 14px;border-radius:10px;font-size:13px;line-height:1.6;background:#F4F8FC;border:1px solid #DCE8F3;color:#28516F}
.note.warn{background:var(--accent-soft);border-color:#F3DFBC;color:#7A5210}
.note.ok{background:var(--ok-soft);border-color:#CFE8D7;color:#1C5C36}
.note.danger{background:var(--danger-soft);border-color:#F3CFC9;color:#8A2A1E}
.note b{font-weight:700}

/* ---------- 首页 ---------- */
.hero{position:relative;background:linear-gradient(115deg,#0B3A63 0%,#0F4C81 48%,#116A6A 100%);overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;background:
  radial-gradient(600px 240px at 85% -10%,rgba(232,163,61,.28),transparent 60%),
  radial-gradient(500px 260px at 10% 110%,rgba(46,125,50,.35),transparent 62%)}
.hero-in{position:relative;z-index:2;max-width:var(--max);margin:0 auto;padding:54px 20px 46px;color:#fff}
.hero .kicker{display:inline-flex;align-items:center;gap:7px;font-size:12px;letter-spacing:.14em;color:#C4DCEF;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.24);padding:5px 12px;border-radius:999px;margin-bottom:16px}
.hero h1{font-size:33px;line-height:1.3;font-weight:800;letter-spacing:.4px;margin-bottom:12px}
.hero h1 em{font-style:normal;color:#F4C271}
.hero p{color:#D3E3F0;max-width:620px;font-size:14.5px}
.hero-stats{display:flex;gap:30px;margin-top:26px;flex-wrap:wrap}
.hero-stats div{position:relative;padding-left:14px}
.hero-stats div::before{content:"";position:absolute;left:0;top:5px;bottom:5px;width:3px;border-radius:2px;background:rgba(255,255,255,.35)}
.hero-stats b{display:block;font-size:23px;font-weight:800;letter-spacing:-.3px}
.hero-stats span{font-size:12.5px;color:#B9CFE2}

.mod-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;transition:.18s;display:flex;flex-direction:column;gap:10px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}
.mod-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:#CFDCE9}
.mod-card .ico{width:42px;height:42px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:var(--navy-soft);color:var(--navy)}
.mod-card.c2 .ico{background:var(--chem-soft);color:var(--chem)}
.mod-card.c3 .ico{background:var(--accent-soft);color:#A9721B}
.mod-card.c4 .ico{background:var(--bio-soft);color:var(--bio)}
.mod-card h3{font-size:16px;font-weight:700}
.mod-card p{font-size:13px;color:var(--sub);min-height:42px}
.mod-card .go{font-size:13px;font-weight:700;color:var(--navy);display:inline-flex;align-items:center;gap:5px;margin-top:2px}
.mod-card .no{position:absolute;right:16px;top:12px;font-size:34px;font-weight:900;color:#F0F4F8;letter-spacing:-2px}

.subject-card{border-radius:14px;padding:22px;color:#fff;position:relative;overflow:hidden;min-height:132px;display:flex;flex-direction:column;justify-content:space-between}
.subject-card.chem{background:linear-gradient(120deg,#0A5C5B,#0E7C7B 62%,#12988F)}
.subject-card.bio{background:linear-gradient(120deg,#1F5D23,#2E7D32 62%,#3F9B45)}
.subject-card h3{font-size:20px;font-weight:800;letter-spacing:.4px}
.subject-card p{font-size:12.5px;opacity:.88;margin-top:4px}
.subject-card .nums{display:flex;gap:18px;font-size:12px;opacity:.95}
.subject-card .nums b{font-size:18px;display:block;font-weight:800}
.subject-card::after{content:"";position:absolute;right:-30px;bottom:-50px;width:150px;height:150px;border:26px solid rgba(255,255,255,.09);border-radius:50%}

/* ---------- 题库 ---------- */
.q-item{border:1px solid var(--line);border-radius:11px;background:#fff;padding:15px 17px;transition:.15s}
.q-item:hover{border-color:#CBD9E6;box-shadow:var(--shadow-sm)}
.q-item .qtop{display:flex;align-items:flex-start;gap:10px;margin-bottom:8px}
.q-item .qno{font-size:12px;font-weight:700;color:var(--mute);min-width:34px;padding-top:2px;font-variant-numeric:tabular-nums}
.q-item .stem{font-size:14px;line-height:1.72;flex:1}
.q-item .stem p{margin:0 0 6px}
.q-item .opts{display:flex;flex-wrap:wrap;gap:6px 22px;margin:9px 0 0 34px;font-size:13.5px;color:#2B3A4A}
.q-item .opts span{min-width:44%}
.q-item .qfoot{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:11px 0 0 34px}
.q-item .act{margin-left:auto;display:flex;gap:6px}
.q-ans{background:#FAFCFE;border:1px dashed #D8E3EE;border-radius:8px;padding:10px 12px;margin:10px 0 0 34px;font-size:13px;color:#33485C}
.q-ans .k{font-weight:700;color:var(--navy)}
.q-ans .an{color:var(--chem);font-weight:800;letter-spacing:1px}
.kp-line{font-size:12px;color:var(--mute);margin-top:4px}
.kp-line b{color:#3E5A75;font-weight:600}

.filter-box{display:flex;flex-direction:column;gap:14px}
.filter-row{display:flex;gap:10px;align-items:flex-start}
.filter-row .lab{font-size:12.5px;font-weight:700;color:var(--mute);width:56px;flex:0 0 auto;padding-top:5px;letter-spacing:.5px}
.filter-row .vals{display:flex;flex-wrap:wrap;gap:6px}

/* ---------- 组卷 ---------- */
.basket{position:sticky;top:78px}
.basket-list{max-height:44vh;overflow:auto;border:1px solid var(--line-2);border-radius:9px}
.basket-row{display:flex;gap:8px;align-items:center;padding:8px 10px;border-bottom:1px solid var(--line-2);font-size:13px}
.basket-row:last-child{border-bottom:none}
.basket-row .t{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.basket-row .del{color:var(--mute);font-size:16px;line-height:1}
.basket-row .del:hover{color:var(--danger)}

/* ---------- 试卷预览 ---------- */
.paper-view{background:#fff;padding:0;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.paper-inner{max-width:820px;margin:0 auto;padding:44px 46px 56px;font-family:"Songti SC","SimSun","Noto Serif SC",serif;color:#111;font-size:15px;line-height:1.85}
.paper-inner h1{text-align:center;font-size:22px;font-weight:800;letter-spacing:1px;margin-bottom:6px;font-family:"PingFang SC","Microsoft YaHei",sans-serif}
.paper-inner .pmeta{text-align:center;font-size:13px;color:#555;margin-bottom:6px}
.paper-inner .pnotice{text-align:left;font-size:12.5px;color:#444;border-top:1px solid #DDE1E6;border-bottom:1px solid #DDE1E6;padding:9px 2px;margin-bottom:18px;line-height:1.85}
.paper-sec{font-size:15.5px;font-weight:800;margin:24px 0 10px;font-family:"PingFang SC","Microsoft YaHei",sans-serif}
.pq{margin-bottom:14px}
.pq .h{display:flex;gap:8px}
.pq .n{font-weight:700;min-width:24px}
.pq .opts{display:flex;flex-wrap:wrap;gap:2px 24px;margin-left:24px}
.pq .opts div{min-width:44%}
.paper-inner .blank{display:inline-block;min-width:70px;border-bottom:1px solid #888}

/* ---------- 答题卡 ---------- */
.sheet-wrap{background:#EAEEF3;padding:26px 0 40px}
.sheet-page{width:210mm;min-height:297mm;background:#fff;margin:0 auto 22px;box-shadow:0 4px 22px rgba(20,40,60,.14);padding:12mm 13mm;position:relative;color:#111;font-family:"PingFang SC","Microsoft YaHei",sans-serif;font-size:12px}
.sheet-head{display:flex;border:1px solid #333;margin-bottom:4mm}
.sheet-head .info{flex:1;padding:3mm;font-size:11.5px;line-height:2.1}
.sheet-head .info b{font-weight:700}
.sheet-head .fill{display:inline-block;border-bottom:1px solid #555;min-width:86px;margin:0 4px}
.sheet-head .barcode{width:46mm;border-left:1px solid #333;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:10px;color:#666;gap:1mm;padding:2mm}
.sheet-head .barcode .box{width:36mm;height:16mm;border:1px dashed #999}
.sheet-title{text-align:center;font-size:16px;font-weight:800;letter-spacing:2px;margin-bottom:2mm}
.sheet-sub{text-align:center;font-size:10.5px;color:#555;margin-bottom:4mm}
.sheet-sec{font-size:12px;font-weight:800;margin:4mm 0 2mm;background:#F1F3F5;padding:1.2mm 2mm;border-left:3px solid #333}
.omr-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.6mm 4mm;padding:0 1mm}
.omr-q{display:flex;align-items:center;gap:1.6mm;font-size:11px}
.omr-q .qn{width:6mm;text-align:right;color:#333;font-variant-numeric:tabular-nums}
.omr-q .bubs{display:flex;gap:1.4mm}
.bub{width:4.6mm;height:3.4mm;border:0.45mm solid #444;border-radius:1mm;display:flex;align-items:center;justify-content:center;font-size:7px;color:#666}
.fid{position:absolute;display:block;background:#000}
.write-area{border:1px solid #666;border-radius:1mm;margin-bottom:3mm}
.write-area .wt{background:#F7F8F9;border-bottom:1px solid #666;padding:1mm 2mm;font-size:11px;font-weight:700;display:flex;justify-content:space-between}
.write-area .wb{height:26mm;background:repeating-linear-gradient(#fff,#fff 7mm,#E8EAEC 7mm,#E8EAEC 7.2mm)}
.sheet-foot{position:absolute;bottom:6mm;left:0;right:0;text-align:center;font-size:9.5px;color:#888}
.corner-note{font-size:9.5px;color:#777;margin-bottom:1.5mm}

/* ---------- 阅卷 ---------- */
.dropzone{border:2px dashed #C6D3E0;border-radius:12px;background:#FAFCFE;padding:38px 20px;text-align:center;transition:.18s;cursor:pointer}
.dropzone:hover,.dropzone.over{border-color:var(--navy);background:#F2F7FC}
.dropzone .big{font-size:14.5px;font-weight:700;color:var(--navy);margin-bottom:4px}
.dropzone .sm{font-size:12.5px;color:var(--mute)}
.omr-stage{position:relative;background:#1B2733;border-radius:10px;overflow:hidden;line-height:0}
.omr-stage canvas{width:100%;height:auto;display:block;cursor:crosshair}
.omr-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}
.mark-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px}
.mk{border:1px solid var(--line);border-radius:9px;padding:7px 8px;background:#fff}
.mk .t{font-size:11.5px;color:var(--mute);display:flex;justify-content:space-between;margin-bottom:5px}
.mk .opts{display:flex;gap:4px}
.mk .opts button{flex:1;height:26px;border-radius:6px;border:1px solid var(--line);font-size:12px;font-weight:700;color:var(--sub);background:#fff}
.mk .opts button.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.mk.wrong{border-color:#F0C4BE;background:#FFF9F8}
.mk.right{border-color:#C9E4D2;background:#F9FDFA}
.mk .conf{font-size:10px;color:var(--mute);margin-top:4px}
.stu-queue{max-height:60vh;overflow:auto}
.stu-row{display:flex;align-items:center;gap:10px;padding:9px 11px;border-bottom:1px solid var(--line-2);cursor:pointer;font-size:13px}
.stu-row:hover{background:#FAFCFF}
.stu-row.on{background:var(--navy-soft)}
.stu-row .av{width:28px;height:28px;border-radius:8px;background:#EDF3F9;color:var(--navy);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex:0 0 auto}
.stu-row .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stu-row .sc{font-weight:800;font-variant-numeric:tabular-nums}

/* ---------- 分析 ---------- */
.chartbox{position:relative;padding:6px 0}
.chart-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--sub);margin-top:8px}
.chart-legend i{width:9px;height:9px;border-radius:2px;display:inline-block;margin-right:5px}
.hbar{display:flex;align-items:center;gap:10px;margin-bottom:9px;font-size:13px}
.hbar .lb{width:132px;flex:0 0 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#34495E}
.hbar .tr{flex:1;height:16px;background:#F1F4F8;border-radius:4px;overflow:hidden;position:relative}
.hbar .fl{height:100%;border-radius:4px}
.hbar .vl{width:52px;text-align:right;font-weight:700;font-variant-numeric:tabular-nums;font-size:12.5px;color:#2C3E50}
.heat{display:grid;gap:3px;font-size:11px}
.heat .c{padding:6px 4px;border-radius:4px;text-align:center;font-weight:700;color:#fff}
.stu-tag{display:inline-flex;gap:4px;flex-wrap:wrap}

/* ---------- 实验 ---------- */
.lab-card{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;transition:.18s;display:flex;flex-direction:column}
.lab-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.lab-thumb{height:106px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}
.lab-thumb.chem{background:linear-gradient(135deg,#0A5C5B,#12988F)}
.lab-thumb.bio{background:linear-gradient(135deg,#1F5D23,#3F9B45)}
.lab-thumb svg{opacity:.92}
.lab-body{padding:14px 16px;flex:1;display:flex;flex-direction:column;gap:7px}
.lab-body h4{font-size:15px;font-weight:700}
.lab-body p{font-size:12.5px;color:var(--sub);line-height:1.6;flex:1}
.lab-meta{display:flex;gap:6px;flex-wrap:wrap}
.steps{counter-reset:s;display:flex;flex-direction:column;gap:0}
.step{display:flex;gap:12px;padding:12px 0;border-bottom:1px dashed var(--line)}
.step:last-child{border-bottom:none}
.step .n{counter-increment:s;width:26px;height:26px;border-radius:50%;background:var(--navy-soft);color:var(--navy);font-weight:800;font-size:12.5px;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.step .n::before{content:counter(s)}
.step .c{flex:1;font-size:13.5px}
.step .c b{color:#16324F}
.pheno{background:#F8FBFA;border-left:3px solid var(--chem);padding:10px 13px;border-radius:0 8px 8px 0;font-size:13px;color:#2C4A48;margin-top:4px}
.sim-frame{width:100%;height:70vh;min-height:480px;border:1px solid var(--line);border-radius:12px;background:#fff}

/* ---------- 打印 ---------- */
.print-only{display:none}
#print-root{display:none}
@media print{
  body.is-printing > *:not(#print-root){display:none!important}
  #print-root{display:block!important}
  @page{size:A4;margin:0}
  body{background:#fff;font-size:12pt}
  .topbar,.no-print,.btn,#toast-host,.modal-f,.hero{display:none!important}
  .page{padding:0}
  .wrap{max-width:none;padding:0}
  .print-only{display:block}
  .card{border:none;box-shadow:none}
  .paper-view{border:none}
  .paper-inner{padding:16mm 15mm;max-width:none;font-size:11.5pt}
  .sheet-wrap{background:#fff;padding:0}
  .sheet-page{box-shadow:none;margin:0;padding:0;page-break-after:always}
  /* 答题卡为整页绝对定位版式：必须保持 210×297mm，不能被压缩 */
  #print-root .sheet-page,.sheet-page{width:210mm;height:296.4mm;min-height:296.4mm;overflow:hidden}
  .sheet-page,.sheet-page *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .sheet-page:last-child{page-break-after:auto}
  .sheet-foot{position:static;margin-top:4mm}
  .tbl th{background:#F4F6F8!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .kpi,.chartbox,.bar-bg,.bar-fg,.heat .c{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .no-break{page-break-inside:avoid}
  .pq{page-break-inside:avoid}
  .paper-sec{page-break-after:avoid}
  .pnotice{page-break-inside:avoid}
}

/* ---------- 标签页 / 真题标签库 ---------- */
.tabbar{display:inline-flex;gap:4px;padding:4px;background:#EDF1F6;border-radius:11px}
.tabbar .tab{height:34px;padding:0 16px;border-radius:8px;font-size:13.5px;font-weight:600;color:var(--sub);transition:.15s}
.tabbar .tab:hover{color:var(--navy)}
.tabbar .tab.on{background:#fff;color:var(--navy);box-shadow:var(--shadow-sm)}

.tg{display:inline-flex;align-items:center;height:21px;padding:0 7px;border-radius:5px;font-size:11.5px;font-weight:600;margin:2px 4px 2px 0;white-space:nowrap;line-height:1}
.tg-kp{background:var(--navy-soft);color:#14456F;border:1px solid #D5E3F1}
.tg-m{background:var(--chem-soft);color:#0B5F5E;border:1px solid #CDE7E5}
.tg-t{background:var(--accent-soft);color:#8A5A0F;border:1px solid #F2DFBE}
.tg-empty{color:var(--mute);font-size:12px}

.tag-tbl{table-layout:fixed}
.tag-tbl td{vertical-align:top;overflow-wrap:anywhere}
.tag-tbl tr.clickable{cursor:pointer}
.tag-tbl tr.clickable:hover td{background:#F7FAFD}
.tag-tbl tr.on td{background:#EFF6FD}
.tag-tbl .no{font-weight:800;color:var(--navy)}
.tag-tbl .chain{font-size:11.5px;color:var(--mute);white-space:nowrap}
.tag-tbl tr.missing td{color:var(--mute);background:#FAFBFC}

.tag-detail{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}
.tag-detail-h{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:14px 18px;border-bottom:1px solid var(--line-2);background:#FCFDFE}
.tag-detail-h h3{font-size:15.5px;font-weight:800}
.tag-detail-b{padding:16px 18px}
.srcq{font-size:13.5px;line-height:1.9}
.srcq .fig{margin-top:8px;padding:9px 12px;border-left:3px solid #CBD9E6;background:#F8FAFC;font-size:12.5px;color:var(--sub)}
.matchcard{background:#FAFCFE;border:1px solid var(--line);border-radius:10px;padding:13px 15px}
.matchcard .row-t{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.matchcard .row-t b{font-size:13px}
.mbar{height:6px;background:#E9EEF4;border-radius:3px;overflow:hidden;margin-top:6px}
.mbar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#0E7C7B,#0F4C81)}
.reason{font-size:12px;color:var(--sub);line-height:1.7;margin-top:5px}

.group-h{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:800;color:#33475B;margin:20px 0 10px}
.group-h:before{content:"";width:3px;height:13px;border-radius:2px;background:var(--chem)}
.group-h .sub{font-size:12px;font-weight:500;color:var(--mute)}

.simcard{border:1px solid var(--line);border-radius:10px;padding:13px 15px;background:#fff}
.simcard + .simcard{margin-top:10px}
.simcard .stem{font-size:13px;line-height:1.85}
.simcard .opts{display:grid;grid-template-columns:1fr 1fr;gap:2px 20px;margin-top:7px;font-size:12.5px;color:var(--sub)}
.simcard .ana{margin-top:8px;font-size:12.5px;line-height:1.8;color:var(--sub);background:#F8FAFC;border-radius:8px;padding:9px 11px}
.simcard .ana b{color:var(--ink)}
.coverpick{border:1px solid var(--line);border-radius:9px;padding:9px 12px;font-size:12.5px;color:var(--sub)}
.coverpick b{color:var(--ink);font-size:13px}

/* ---------- 课程视频 ---------- */
.mooc-grid{grid-template-columns:1.85fr 1fr;align-items:start}
.mooc-hero{position:relative;border-radius:16px;overflow:hidden;background:linear-gradient(125deg,#0B3A63 0%,#0F4C81 45%,#0E7C7B 100%);color:#fff;padding:30px 32px}
.mooc-hero:after{content:"";position:absolute;right:-70px;top:-70px;width:260px;height:260px;border-radius:50%;background:rgba(255,255,255,.06)}
.mooc-hero .kicker{font-size:11.5px;letter-spacing:.2em;color:#9FD3D0;font-weight:700}
.mooc-hero h1{font-size:27px;line-height:1.35;margin:10px 0 6px;font-weight:800}
.mooc-hero .meta{font-size:13px;color:#C9DCEA}
.mooc-play{display:inline-flex;align-items:center;gap:11px;height:52px;padding:0 26px;border-radius:999px;background:#fff;color:var(--navy);font-weight:800;font-size:15.5px;box-shadow:0 10px 26px rgba(0,0,0,.18);transition:.18s}
.mooc-play:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(0,0,0,.24)}
.mooc-play .tri{width:0;height:0;border-left:13px solid var(--chem);border-top:8px solid transparent;border-bottom:8px solid transparent}
.player-shell{position:relative;background:#0B1220;border-radius:14px;overflow:hidden;border:1px solid #1E2A3A}
.player-shell iframe{display:block;width:100%;height:min(66vh,560px);border:0;background:#0B1220}
.player-ph{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;height:min(66vh,560px);color:#C7D3DF;padding:30px;text-align:center}
.player-ph .big{width:66px;height:66px;border-radius:50%;background:rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center}
.mooc-side{border:1px solid var(--line);border-radius:12px;background:#fff;padding:16px 18px}
.mooc-side h4{font-size:13.5px;font-weight:800;margin-bottom:10px}
.mooc-side ol{margin:0;padding-left:18px;font-size:13px;line-height:2;color:var(--sub)}
.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--ok);margin-right:6px}


/* ---------- 追加试卷 / 导入预览 ---------- */
.pi-row{display:flex;gap:10px;padding:11px 13px;border-bottom:1px solid var(--line-2);background:#fff}
.pi-row:last-child{border-bottom:none}
.pi-row:hover{background:#FBFDFF}
.pi-stem{font-size:12.8px;line-height:1.7;color:var(--ink);margin-top:2px}
.pi-row .tg{margin-top:2px}
.checkbox-line{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--sub)}

/* ---------- 响应式 ---------- */
@media (max-width:1080px){
  .g4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .nav{height:auto;padding:8px 16px;flex-wrap:wrap}
  .nav-links{order:3;width:100%;overflow:auto;padding-bottom:4px}
}
@media (max-width:820px){
  .g3,.g2,.mooc-grid{grid-template-columns:1fr}
  .hero h1{font-size:26px}
  .paper-inner{padding:24px 18px}
  .sheet-page{width:100%;min-height:auto;padding:8mm}
  .omr-grid{grid-template-columns:repeat(2,1fr)}
  .basket{position:static}
}
