:root{
  --bg:#f6f8f6; --panel:#fff; --line:#e5ece5; --line2:#eef2eb;
  --text:#2b4637; --muted:#8a998d; --faint:#a1ac9b;
  --primary:#287659; --primary-d:#236a50; --primary-w:#eaf3ed;
  --danger:#c0504d; --danger-w:#fbf0ef;
  --ok:#287659; --warn:#b08a3e;
  --radius:10px; --shadow:0 1px 2px rgba(40,70,50,.04);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{
  margin:0;background:var(--bg);color:var(--text);
  font:14px/1.6 "Microsoft YaHei","PingFang SC","Hiragino Sans GB",system-ui,sans-serif;
  display:flex;flex-direction:column;overflow:hidden;
}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:none;background:none}
input,select,textarea{
  border:1px solid #e0e7df;border-radius:6px;padding:9px 11px;background:#fff;outline:none;color:#526e58;
  transition:border-color .15s,box-shadow .15s;
}
input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-w)}
select{padding-right:6px}
code{background:#f1f6f3;padding:1px 5px;border-radius:4px;font-size:12px}
.muted{color:var(--muted)}
.small{font-size:12px}
.hidden{display:none!important}
.spacer{flex:1}

/* ---------- 左侧栏 ---------- */
.topbar{
  position:fixed;inset:0 auto 0 0;width:218px;height:auto;
  display:flex;flex-direction:column;align-items:stretch;gap:0;
  padding:30px 20px 20px;background:#fff;border-right:1px solid #e7ece7;z-index:20;
}
.brand{display:flex;align-items:center;gap:12px;font-size:24px;font-weight:700;letter-spacing:3px}
.brand-sub{font-size:10px;letter-spacing:3px;color:#99a89b;margin:10px 0 0 48px}
.brand small{display:none}
.logo{
  width:36px;height:36px;border-radius:10px;background:#287659;
  color:#fff;display:grid;place-items:center;font-weight:700;font-size:17px;box-shadow:none;
}
.tabs{display:flex;flex-direction:column;gap:6px;flex:none;margin-top:28px;width:100%}
.tab{width:100%;text-align:left;padding:12px 14px;border-radius:7px;color:#829185;font-size:14px;transition:.15s;background:none}
.tab:hover{background:#f6f9f4;color:var(--text)}
.tab.active{background:#eaf3ed;color:#267453;font-weight:600}
.topstat{margin-top:auto;color:#9da89c;font-size:11px;background:none;border:0;border-top:1px solid #eef2eb;padding:14px 2px 0;border-radius:0;line-height:1.8}

main{flex:1;min-height:0;display:flex;margin-left:218px}
.view{display:none;flex:1;min-height:0;min-width:0}
.view.active{display:flex}
main{min-width:0}

.q-issues{margin:5px 0 2px;padding:6px 10px;background:#fffaef;border:1px solid #f5e2bd;border-radius:8px;font-size:12px;color:#a16207;line-height:1.75}
/* ---------- 题库 ---------- */
.filters{
  width:236px;flex:0 0 236px;background:#fff;border:1px solid #e5ece5;border-radius:10px;
  margin:16px 0 16px 18px;padding:18px 16px;overflow-y:auto;height:calc(100% - 32px);
}
.f-group{margin-bottom:14px;display:flex;flex-direction:column;gap:6px}
.f-group>label{font-size:12px;color:var(--muted);font-weight:600;letter-spacing:.3px}
.f-group select,.f-group input{width:100%}
.pills{display:flex;gap:6px;flex-wrap:wrap}
.pill{
  padding:3px 12px;border:1px solid var(--line);border-radius:20px;font-size:13px;background:#fff;color:var(--muted);
}
.pill.active{background:var(--primary);border-color:var(--primary);color:#fff}
.f-tip{font-size:12px;color:var(--faint);margin-top:8px;line-height:1.8}

.bank-main{flex:1;min-width:0;display:flex;flex-direction:column;padding:14px 18px;overflow:hidden}
.toolbar{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.bulk{display:flex;align-items:center;gap:8px;background:var(--primary-w);color:var(--primary);
  padding:4px 10px;border-radius:8px;font-size:13px}
.qlist{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding-right:4px}
.qcard{background:#fff;border:1px solid #e5ece5;border-radius:10px;padding:18px 20px;transition:.15s}
.qcard:hover{border-color:#cfe0cf}
.qcard.selected{border-color:var(--primary);background:#f8fbf6}
.qcard-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.qcard-head input[type=checkbox]{width:15px;height:15px;accent-color:var(--primary)}
.qcard-actions{margin-left:auto;display:flex;gap:2px;opacity:0;transition:.15s}
.qcard:hover .qcard-actions{opacity:1}
.qcard-actions button{font-size:12px;color:var(--muted);padding:3px 8px;border-radius:6px}
.qcard-actions button:hover{background:#eef7f2;color:var(--primary)}
.qcard-actions button.del:hover{background:var(--danger-w);color:var(--danger)}
.stem-preview{margin:7px 0 4px;color:#13241c;line-height:1.7;max-height:5.2em;overflow:hidden;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;word-break:break-word}
.stem-preview img{max-height:60px;vertical-align:middle;border-radius:4px}
.opt-preview{color:var(--muted);font-size:13px;display:flex;gap:16px;flex-wrap:wrap;margin-bottom:5px}
.opt-preview img{max-height:54px;max-width:200px;vertical-align:middle}
.opt-preview img.math{max-height:1.45em;max-width:none;vertical-align:-0.2em}
.opt-preview span{white-space:nowrap;max-width:340px;overflow:hidden;text-overflow:ellipsis;display:inline-block;vertical-align:bottom}
.tag-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.tag{font-size:11px;background:#f2f5f3;color:#4a5a52;padding:1px 8px;border-radius:20px}
.tag.k{background:#edf4ec;color:#73916c;cursor:pointer;border:1px solid transparent}
.tag.k:hover{background:#e3eedd;border-color:#cfe0c8}
.badge{font-size:11px;padding:1px 7px;border-radius:5px;background:#f2f5f3;color:#4a5a52;white-space:nowrap}
.badge.type{background:#edf4ec;color:#73916c}
.badge.diff{background:#fdf3dc;color:#a86a08;letter-spacing:-1px}
.badge.subj-phy{background:#edf4ec;color:#73916c}
.badge.subj-chem{background:#f1edff;color:#5b3fb8}
.badge.used{background:#fff3e6;color:#b45309}
.more-wrap{text-align:center;padding:10px 0}

/* ---------- 组卷 ---------- */
.paper-side{width:236px;flex:0 0 236px;background:#fff;border:1px solid #e5ece5;border-radius:10px;display:flex;flex-direction:column;margin:16px 0 16px 18px;height:calc(100% - 32px);overflow:hidden}
.side-head{display:flex;align-items:center;justify-content:space-between;padding:14px 14px;border-bottom:1px solid var(--line2)}
.side-head b{display:flex;align-items:center;gap:8px;font-size:13.5px}
.side-head b:before{content:'';width:4px;height:15px;border-radius:2px;background:var(--primary)}
.paper-list{flex:1;overflow-y:auto;padding:8px}
.paper-item{padding:8px 10px;border-radius:8px;cursor:pointer;font-size:13px;display:flex;gap:6px;align-items:center}
.paper-item:hover{background:#f1f7f3}
.paper-item.active{background:var(--primary-w);color:var(--primary);font-weight:600}
.paper-item .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.paper-item .x{opacity:0;color:var(--faint)}
.paper-item:hover .x{opacity:1}
.paper-main{flex:1;min-width:0;display:flex;flex-direction:column;padding:14px 18px;overflow-y:auto}
.paper-meta{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.p-title{font-size:17px;font-weight:600;border:none;border-bottom:2px solid var(--line);border-radius:0;padding:6px 2px}
.p-title:focus{box-shadow:none;border-color:var(--primary)}
.meta-row{display:flex;gap:18px;flex-wrap:wrap;font-size:13px;color:var(--muted)}
.meta-row label{display:flex;align-items:center;gap:6px}
.meta-row input{width:64px;padding:3px 7px}
.meta-row select{padding:3px 6px}
.paper-actions{display:flex;align-items:center;gap:8px;padding:10px 0;border-top:1px dashed var(--line);flex-wrap:wrap}
.inline{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--muted)}
.paper-body{display:flex;flex-direction:column;gap:12px;padding-bottom:40px}
.sec-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.sec-head{display:flex;gap:8px;align-items:center;padding:9px 12px;background:#f8faf7;border-bottom:1px solid var(--line2)}
.sec-head input.sec-title{font-weight:600;width:200px}
.sec-head input.sec-note{width:180px;color:var(--muted)}
.sec-head .sec-count{margin-left:auto;font-size:12px;color:var(--faint)}
.sec-item{display:flex;gap:10px;align-items:flex-start;padding:8px 12px;border-bottom:1px solid var(--line2)}
.sec-item:last-child{border-bottom:none}
.sec-item .no{width:26px;flex:0 0 26px;color:var(--faint);font-weight:600;text-align:right;padding-top:2px}
.sec-item .body{flex:1;min-width:0;font-size:13px;line-height:1.65;max-height:4.6em;overflow:hidden}
.sec-item .body img{max-height:40px;vertical-align:middle}
.sec-item .sc{width:56px;text-align:center;padding:3px}
.sec-item .ops{display:flex;gap:2px}
.sec-item .ops button{color:var(--faint);padding:2px 5px;border-radius:4px;font-size:12px}
.sec-item .ops button:hover{background:#eef7f2;color:var(--primary)}
.sec-item .ops button.del:hover{color:var(--danger);background:var(--danger-w)}
.empty{color:var(--faint);text-align:center;padding:36px 0;font-size:13px}

/* ---------- 导入 ---------- */
#view-import.view.active,#view-settings.view.active{display:block;overflow-y:auto}
.import-wrap{width:100%;max-width:920px;margin:0 auto;padding:26px 20px 60px}
.dropzone{
  border:1px dashed #cfe0cf;border-radius:10px;background:#fff;padding:44px 20px;text-align:center;max-width:900px;margin:24px auto 0;
  transition:.18s;cursor:pointer;
}
.dropzone:hover,.dropzone.over{border-color:var(--primary);background:var(--primary-w)}
.dz-icon{font-size:30px;color:var(--primary);line-height:1}
.dz-main{margin-top:10px;font-size:15px}
.dz-sub{color:var(--faint);font-size:12px;margin-top:6px}
.link{color:var(--primary)}
.import-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.ib-left{display:flex;gap:10px;align-items:baseline}
.ib-right{display:flex;gap:6px}
.common-tags{
  display:flex;gap:12px;flex-wrap:wrap;align-items:center;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);padding:10px 12px;margin-bottom:12px;font-size:13px;color:var(--muted);
}
.common-tags label{display:flex;align-items:center;gap:5px}
.common-tags input{width:150px;padding:4px 8px}
.common-tags input[type=number]{width:70px}
.imp-list{display:flex;flex-direction:column;gap:10px}
.imp-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px}
.imp-card.off{opacity:.45}
.imp-card-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.imp-card-head .no{font-weight:700;color:var(--primary);font-size:13px}
.imp-card-head select{padding:2px 6px;font-size:12px}
.imp-card-head .ops{margin-left:auto;display:flex;gap:4px}
.imp-card textarea{width:100%;border:none;border-bottom:1px dashed transparent;border-radius:0;padding:4px 2px;resize:vertical;background:transparent}
.imp-card textarea:focus{border-bottom-color:var(--primary);box-shadow:none}
.imp-card textarea.stem{min-height:56px;font-size:14px}
.imp-card textarea.ans{min-height:32px;color:#0f766e}
.imp-card textarea.ana{min-height:32px;color:var(--muted);font-size:13px}
.imp-opts{display:grid;grid-template-columns:1fr 1fr;gap:4px 14px;margin:6px 0}
.imp-opt{display:flex;gap:6px;align-items:flex-start}
.imp-opt b{color:var(--faint);padding-top:4px;font-weight:600}
.imp-opt textarea{min-height:24px;font-size:13px}
.imp-foot{display:flex;justify-content:space-between;align-items:center;margin-top:16px}

/* ---------- 设置 ---------- */
.settings{max-width:820px;margin:0 auto;padding:24px 20px 60px;display:flex;flex-direction:column;gap:16px;width:100%}
.card{background:#fff;border:1px solid #e5ece5;border-radius:10px;padding:22px 24px;box-shadow:none}
.card h3{margin:0 0 10px;font-size:15px;display:flex;align-items:center;gap:8px}
.card h3:before{content:'';width:4px;height:16px;border-radius:2px;background:var(--primary)}
.card p{margin:6px 0}
.row{display:flex;gap:10px;align-items:center;margin-top:10px;flex-wrap:wrap}
.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-top:8px}
.stat{background:#f8fafc;border-radius:8px;padding:10px 12px}
.stat b{display:block;font-size:20px;color:var(--primary)}
.stat span{font-size:12px;color:var(--muted)}
.stats-sub{grid-column:1/-1;font-size:12px;color:var(--muted);margin-top:6px;padding-top:8px;border-top:1px dashed var(--line)}
.stat.kp b{font-size:16px;color:#0f766e}

/* 知识点快选 */
.kp-suggest{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.kp-chip{font-size:12px;padding:2px 9px;border-radius:20px;border:1px dashed var(--line);background:#f7fbf9;color:#4a5a52}
.kp-chip:hover{border-color:var(--primary);color:var(--primary)}
.kp-chip.on{background:var(--primary-w);border:1px solid var(--primary);color:var(--primary);font-weight:600}
.help{margin:6px 0;padding-left:20px;line-height:2;color:#334155;font-size:13px}
.danger-card{border-color:#fecaca}

/* ---------- 通用控件 ---------- */
.btn,.primary,.ghost,.danger{
  display:inline-flex;align-items:center;justify-content:center;gap:5px;
  padding:7px 16px;border-radius:9px;font-size:13.5px;text-decoration:none;transition:.15s;white-space:nowrap;
}
.primary{background:#287659;color:#fff;box-shadow:none}
.primary:hover{background:#236a50}
.ghost{background:#fff;border:1px solid #dce5dc;color:#54705b}
.ghost:hover{border-color:#b9cdb6;color:var(--primary);background:#f7faf5}
.danger{background:var(--danger-w);color:var(--danger);border:1px solid #fecaca}
.danger:hover{background:var(--danger);color:#fff}
.sm{padding:4px 10px;font-size:12.5px}
.block{width:100%}
button:disabled{opacity:.5;cursor:not-allowed}

/* ---------- 弹窗 ---------- */
.mask{position:fixed;inset:0;background:rgba(20,35,28,.42);backdrop-filter:blur(2px);z-index:50;
  display:flex;align-items:center;justify-content:center;padding:24px}
.modal{background:#fff;border-radius:16px;box-shadow:0 24px 70px rgba(16,32,25,.28);
  display:flex;flex-direction:column;max-height:calc(100vh - 48px);width:100%}
.editor-modal{max-width:900px}
.picker-modal{max-width:880px;height:calc(100vh - 80px)}
.modal-head{display:flex;align-items:center;padding:14px 20px;border-bottom:1px solid var(--line2)}
.modal-head h3{margin:0;font-size:16px}
.modal-head .x{margin-left:auto;font-size:22px;color:var(--faint);line-height:1;padding:0 4px}
.modal-head .x:hover{color:var(--text)}
.modal-body{padding:16px 20px;overflow-y:auto;flex:1}
.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px;border-top:1px solid var(--line2);align-items:center}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.grid4 label,.grid2>label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.grid4 input,.grid4 select,.grid2 input{width:100%}
.span2{grid-column:span 2}
.field{margin-bottom:14px}
.field-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted);margin-bottom:6px}
.hint{color:var(--faint);font-size:11px}

/* ---------- 富文本 ---------- */
.rte-toolbar{display:flex;gap:3px;align-items:center;flex-wrap:wrap;padding:5px 6px;background:#f8fafc;
  border:1px solid var(--line);border-bottom:none;border-radius:8px 8px 0 0}
.rte-toolbar button{padding:3px 8px;border-radius:5px;font-size:12.5px;color:#475569;min-width:28px}
.rte-toolbar button:hover{background:#e2e8f0}
.rte-toolbar button.on{background:var(--primary);color:#fff}
.rte-toolbar .sep{width:1px;height:16px;background:var(--line);margin:0 3px}
.rte-toolbar select{border:1px solid var(--line);border-radius:6px;padding:2px 4px;font-size:12px;color:#475569;background:#fff;outline:none;max-width:150px}
.rte-toolbar select:focus{border-color:var(--primary)}
.pv-editbar .rte-ff{border:1px solid #e0e8e0;border-radius:6px;padding:2px 4px;font-size:12px;color:#3d4f42;outline:none;background:#fff;max-width:120px}
.sym-wrap{position:relative}
.sym-panel{position:absolute;top:32px;left:0;background:#fff;border:1px solid var(--line);border-radius:10px;
  box-shadow:var(--shadow);padding:8px;display:none;grid-template-columns:repeat(8,26px);gap:3px;z-index:5}
.sym-panel.show{display:grid}
.sym-panel button{padding:2px;font-size:14px;border-radius:4px}
.rte{
  border:1px solid var(--line);border-radius:0 0 8px 8px;min-height:88px;padding:10px 12px;outline:none;
  background:#fff;line-height:1.75;overflow-wrap:break-word;
}
.rte.small{min-height:56px;border-radius:8px}
.rte:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-w)}
.rte:empty:before{content:attr(data-ph);color:#c0c7d2;pointer-events:none}
/* 只限制编辑弹窗里的图片；组卷页的图片尺寸不受“进入/退出编辑”影响 */
.modal .rte img{max-width:100%;max-height:260px;border-radius:6px;margin:3px 0}
.rte table{border-collapse:collapse;margin:6px 0}
.rte table td{border:1px solid #94a3b8;padding:3px 9px;min-width:44px;font-size:13px}
.rte sub,.rte sup{font-size:.75em}

/* 选项编辑 */
.opt-editor{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}
.opt-row{display:flex;gap:7px;align-items:flex-start}
.opt-row .key{width:26px;flex:0 0 26px;text-align:center;font-weight:700;color:var(--primary);
  padding-top:10px;font-size:13px}
.opt-row .rte{flex:1;min-height:40px;padding:7px 10px;border-radius:8px}
.opt-row .rm{color:var(--faint);padding:9px 6px;border-radius:6px}
.opt-row .rm:hover{color:var(--danger);background:var(--danger-w)}

/* 选题 */
.picker-bar{display:flex;gap:8px;padding:10px 20px;border-bottom:1px solid var(--line2);flex-wrap:wrap}
.picker-bar input{flex:1;min-width:120px}
.picker-list{flex:1;overflow-y:auto;padding:10px 20px;display:flex;flex-direction:column;gap:6px}
.pk-item{display:flex;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;cursor:pointer;align-items:flex-start}
.pk-item:hover{background:#f8fafc}
.pk-item.on{border-color:var(--primary);background:var(--primary-w)}
.pk-item input{margin-top:4px;accent-color:var(--primary)}
.pk-item .txt{flex:1;min-width:0;font-size:13px;line-height:1.6;max-height:3.4em;overflow:hidden}

/* 相似题 / 错题记录 */
.similar-modal{max-width:820px;max-height:calc(100vh - 120px)}
.similar-modal .picker-list{flex:0 1 auto;max-height:52vh}
.sim-origin{padding:12px 20px;border-bottom:1px solid var(--line2);font-size:13px;color:#334155;line-height:1.6}
.sim-item{display:flex;gap:10px;padding:9px 10px;border:1px solid var(--line);border-radius:8px;align-items:center}
.sim-item:hover{background:#f8fafc}
.sim-pct{flex:0 0 44px;font-weight:700;color:var(--primary);font-size:13px}
.sim-item .txt{flex:1;min-width:0;font-size:13px;line-height:1.55}
.error-modal{max-width:660px}
.err-stem{font-size:13px;color:#334155;background:#f8fafc;border-radius:8px;padding:10px;margin-bottom:12px;max-height:96px;overflow:hidden}
.grid3{display:grid;grid-template-columns:1fr 1.2fr .8fr;gap:10px}
.grid3 label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.grid3 input{width:100%}
.err-list{display:flex;flex-direction:column;gap:6px;max-height:220px;overflow-y:auto}
.err-row{display:flex;gap:10px;align-items:center;font-size:13px;background:#f8fafc;border-radius:6px;padding:6px 10px}
.err-row .d{color:var(--muted);font-size:12px}
.err-row .n{margin-left:auto;font-weight:600;color:var(--danger)}
.err-row button{color:var(--faint);padding:0 6px;font-size:12px}
.err-row button:hover{color:var(--danger)}
.badge.err{background:var(--danger-w);color:var(--danger);cursor:pointer;border:1px solid #fecaca}
.wrong-row{grid-column:1/-1;display:flex;gap:10px;font-size:12px;padding:3px 0;color:#334155}
.wrong-row .n{flex:0 0 46px;color:var(--danger);font-weight:600}
.wrong-row .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 试卷库 */
.lib-side{width:300px;flex:0 0 300px;background:#fff;border:1px solid #e5ece5;border-radius:10px;display:flex;flex-direction:column;margin:16px 0 16px 18px;height:calc(100% - 32px);overflow:hidden}
.lib-filters{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:8px 10px;border-bottom:1px solid var(--line2)}
.lib-filters select{padding:4px 6px;font-size:12px;width:100%}
.exam-meta{display:flex;gap:12px 16px;flex-wrap:wrap;align-items:center;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;margin-bottom:10px;font-size:13px;color:var(--muted)}
.exam-meta label{display:flex;align-items:center;gap:6px;white-space:nowrap}
.exam-meta input{width:140px;padding:4px 8px}
.exam-meta input[type=number]{width:84px}
.exam-meta input[type=checkbox]{width:auto;padding:0;margin:0}
.exam-meta label.inline{display:flex;align-items:center;gap:6px;color:#3b4a42}
.exam-meta .grow{flex:1 1 100%}
.exam-meta .grow input{width:100%;min-width:180px}
.lib-title{margin:0 0 8px;font-size:18px}
.lib-badges{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px;align-items:center}
.lib-empty{color:var(--faint);text-align:center;padding:60px 0;font-size:13px}
.pm-modal{max-width:560px}

/* ---------- 试卷库详情（卡片式版面） ---------- */
#lib-detail{max-width:960px;margin:0 auto;display:flex;flex-direction:column;min-height:100%;flex:1 0 auto}

/* 试卷头部卡片 */
.lib-head{
  background:#fff;border:1px solid var(--line);border-radius:14px;
  box-shadow:0 1px 2px rgba(15,23,42,.04),0 10px 28px rgba(15,23,42,.05);
  padding:26px 34px 20px;text-align:center;margin:14px 0 14px;
}
.lib-head-tags{justify-content:center;margin-bottom:12px}
.lib-head-tags .badge{font-size:12px;padding:3px 11px;border-radius:6px}
.lib-head-title{
  margin:0;font-family:"Microsoft YaHei","SimHei",sans-serif;
  font-size:23px;font-weight:700;color:#1e293b;line-height:1.5;letter-spacing:.5px;
}
.lib-head-meta{
  display:flex;justify-content:center;gap:6px 30px;flex-wrap:wrap;
  margin-top:12px;font-size:13px;color:#64748b;font-family:"Microsoft YaHei",sans-serif;
}
.lib-head-meta b{color:#334155;font-weight:600}

/* 悬浮操作条 */
.lib-toolbar{
  position:sticky;top:74px;z-index:6;display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  background:#fff;border:1px solid var(--line);border-radius:10px;
  box-shadow:0 2px 12px rgba(15,23,42,.07);
  padding:8px 12px;margin:0 0 4px;
}
.lib-toolbar .lib-badges{padding:0;margin:0}

/* 试卷正文容器（不再是一张纸，题目各自成卡片） */
.sheet{
  font-family:"Microsoft YaHei","PingFang SC",sans-serif;
  font-size:14.5px;line-height:1.95;color:#1f2937;padding-bottom:40px;
}
.sheet p{margin:0 0 4px}
.sheet p:first-child{margin-top:0}
.sq-stem p:first-child{margin-top:0}

/* 大题分节标题 */
.sheet-sec{
  display:flex;align-items:baseline;gap:10px;
  font-family:"Microsoft YaHei","SimHei",sans-serif;font-weight:700;
  font-size:16.5px;color:#111827;margin:22px 2px 12px;
}
.sheet-sec::before{content:'';width:4px;height:16px;background:var(--primary);border-radius:2px;align-self:center;flex:0 0 auto}
.sheet-sec span{font-family:"Microsoft YaHei",sans-serif;font-weight:400;font-size:12.5px;color:#64748b}

/* 题目卡片 */
.sheet-q{
  background:#fff;border:1px solid #e8edf0;border-radius:12px;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
  padding:15px 20px 13px;margin:0 0 14px;
  transition:border-color .15s ease,box-shadow .15s ease;
}
.sheet-q:hover{border-color:#b9dfcd;box-shadow:0 4px 16px rgba(40,118,89,.09)}
.sq-head{display:flex;gap:10px;align-items:flex-start}
.sq-no{
  flex:0 0 auto;min-width:26px;font-weight:700;font-size:15px;color:#111827;
  font-family:"Microsoft YaHei",sans-serif;padding-top:1px;
}
.sq-stem{flex:1;min-width:0;cursor:pointer}
.sq-stem:hover{color:var(--primary)}
.sheet img{max-width:100%;max-height:240px;height:auto;object-fit:contain}
.sheet td img{max-width:100%;max-height:160px;object-fit:contain}
/* 题干配图：大图浮动到右侧，行内小图保持原位 */
.sq-stem img{max-width:52%;max-height:200px;vertical-align:middle;object-fit:contain;margin:4px 0}
.sq-stem img.fig-r{float:right;margin:4px 0 10px 20px;max-width:40%;max-height:200px}
.sheet-q::after{content:'';display:block;clear:both}
.sq-stem table{border-collapse:collapse;margin:6px 0}
.sq-stem table td{border:1px solid #cbd5e1;padding:2px 8px;font-size:13px}
.sq-pts{flex:0 0 auto;color:#94a3b8;font-size:12.5px;white-space:nowrap;font-family:"Microsoft YaHei",sans-serif;padding-top:3px}

/* 选项 */
.sq-opts{margin:10px 0 2px 36px;display:flex;flex-direction:column;gap:5px}
.sq-opts.inline{flex-direction:row;flex-wrap:wrap;gap:6px 30px}
.sq-opt{display:flex;gap:8px;align-items:baseline;min-width:0;line-height:1.9}
.sq-opt-k{
  flex:0 0 auto;font-style:normal;font-weight:600;color:#475569;
  font-family:Georgia,"Times New Roman",serif;font-size:14px;
}
.sq-opt-v{min-width:0}
.sq-opt-v img{max-height:130px;max-width:230px;vertical-align:middle;object-fit:contain;margin:4px 6px 4px 0}
.sq-opt-v table{border-collapse:collapse;margin:6px 0}
.sq-opt-v table td{border:1px solid #cbd5e1;padding:2px 8px;font-size:13px}

/* 答案解析（勾选“显示答案解析”后出现） */
.sq-ans{
  display:none;margin:10px 0 2px 36px;padding:10px 16px;
  background:#f2f9f4;border-left:3px solid #3fa57c;border-radius:0 8px 8px 0;
  font-size:13px;line-height:1.9;color:#334155;
  font-family:"Microsoft YaHei",sans-serif;
}
.sq-ans b{color:var(--primary);font-weight:600;margin-right:8px}
.sq-ans .sq-ans-row{display:block}
.sq-ans .sq-ans-row + .sq-ans-row{margin-top:2px}
.sheet.show-ans .sq-ans{display:block}

/* 题目详情 */
.view-modal{max-width:760px}
.vw-stem{font-size:14.5px;line-height:1.85;margin-bottom:8px}
.vw-stem img{max-width:100%}
.vw-opts{display:flex;flex-direction:column;gap:5px;margin:4px 0 10px 1.2em;font-size:13.5px}
.vw-block{border-top:1px dashed var(--line);padding-top:10px;margin-top:10px}
.vw-label{font-size:12px;color:var(--muted);font-weight:600;margin-bottom:5px}
.vw-text{font-size:13.5px;line-height:1.8;background:#f8fafc;border-radius:8px;padding:9px 12px;min-height:22px}
.badge.warn{background:#fef3c7;color:#b45309;border:1px solid #fde68a}

/* 学情 */
.exam-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-bottom:10px;border-bottom:1px dashed var(--line)}
.exam-bar select{min-width:200px}
.sub-tabs{display:flex;gap:4px;margin:10px 0}
.sub-tabs button{padding:6px 14px;border-radius:8px;color:var(--muted);font-size:13px}
.sub-tabs button:hover{background:#f1f7f3}
.sub-tabs button.active{background:var(--primary-w);color:var(--primary);font-weight:600}
.stab{flex:1;min-height:0;overflow:auto;padding-bottom:30px}
.matrix-wrap{overflow:auto;max-height:calc(100vh - 310px);border:1px solid var(--line);border-radius:10px;background:#fff}
table.matrix{border-collapse:separate;border-spacing:0;font-size:12px}
table.matrix th,table.matrix td{border-bottom:1px solid var(--line2);border-right:1px solid var(--line2);padding:0;text-align:center}
table.matrix thead th{position:sticky;top:0;background:#f8fafc;z-index:2;height:30px;min-width:34px;color:var(--muted);font-weight:600}
table.matrix thead th.corner{left:0;z-index:3;min-width:92px;text-align:left;padding-left:10px}
table.matrix td.sname{position:sticky;left:0;background:#fff;z-index:1;text-align:left;padding:0 10px;min-width:92px;white-space:nowrap;border-right:1px solid var(--line)}
table.matrix tbody tr:hover td{background:#fafbff}
table.matrix tbody tr:hover td.sname{background:#fafbff}
td.cell{width:34px;height:28px;cursor:pointer}
td.cell:after{content:'';display:block;width:8px;height:8px;border-radius:50%;background:#e2e8f0;margin:0 auto}
td.cell:hover:after{background:#b9e3cd}
td.cell.on:after{background:var(--danger);width:10px;height:10px}
td.cnt{font-weight:600;color:var(--muted);min-width:44px}
td.cnt.bad{color:var(--danger)}
.matrix-tip{font-size:12px;color:var(--faint);margin:8px 0}
table.stat-table{width:100%;border-collapse:collapse;font-size:13px;background:#fff;border-radius:10px;overflow:hidden;border:1px solid var(--line)}
table.stat-table th{background:#f8fafc;color:var(--muted);font-weight:600;font-size:12px;padding:8px 10px;text-align:left;border-bottom:1px solid var(--line)}
table.stat-table td{padding:8px 10px;border-bottom:1px solid var(--line2);vertical-align:middle}
table.stat-table td.num{font-weight:700;color:var(--danger);white-space:nowrap}
.rate-bar{height:6px;background:#eef2f7;border-radius:3px;overflow:hidden;min-width:80px}
.rate-bar i{display:block;height:100%;background:linear-gradient(90deg,#fca5a5,#dc2626)}
.cls-modal{max-width:620px}
.exam-modal{max-width:780px}
#cls-students{width:100%;resize:vertical;font-family:inherit;line-height:1.8}
.exam-qlist{display:flex;flex-wrap:wrap;gap:5px;margin-top:10px;max-height:150px;overflow:auto}
.exam-qlist .qn{font-size:12px;background:#f1f6f3;color:#475569;padding:2px 8px;border-radius:20px}
.book-card{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px;background:#fff}
.book-card .bc-head{display:flex;gap:8px;align-items:center;margin-bottom:4px}
.book-card .cnt{font-size:12px;color:var(--danger);background:var(--danger-w);border-radius:20px;padding:1px 8px}
.kp-pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;border:1px solid var(--line);border-radius:20px;padding:3px 10px;margin:0 6px 6px 0;background:#fff}
.kp-pill b{color:var(--danger)}

/* 投屏模式 */
.projection{position:fixed;inset:0;z-index:200;background:#0b1220;color:#fff;display:flex;flex-direction:column;padding:16px 36px}
.proj-top{display:flex;align-items:center;gap:14px;color:#94a3b8;font-size:13px;padding:6px 0}
.proj-hint{color:#64748b;font-size:12px}
.proj-body{flex:1;overflow:auto;width:100%;max-width:1150px;margin:0 auto;padding:16px 0 8px}
.proj-q{font-size:27px;line-height:1.9}
.proj-q img{max-width:70%;max-height:42vh}
.proj-q table{border-collapse:collapse;margin:10px 0}
.proj-q table td{border:1px solid #475569;padding:4px 12px}
.proj-opts{display:flex;flex-wrap:wrap;gap:14px 46px;margin-top:20px;font-size:24px}
.proj-a{margin-top:26px;padding:16px 22px;background:#111c2f;border-left:4px solid #34d399;border-radius:8px;font-size:20px;line-height:1.85;color:#e2e8f0;max-height:38vh;overflow:auto}
.proj-bottom{display:flex;justify-content:center;gap:14px;padding:12px 0 6px}
.projection .ghost{background:#16233a;border-color:#2b3a55;color:#cbd5e1}
.projection .primary{background:#10b981}
.projection .muted{color:#64748b}

/* 学情报告 */
.report{font-family:"Microsoft YaHei",sans-serif;color:#0f172a;padding:6px 2px;font-size:13px;line-height:1.7;max-width:760px;margin:0 auto}
.report h1{font-size:20px;text-align:center;margin:0 0 4px}
.report .rp-sub{text-align:center;color:#64748b;font-size:12px;margin-bottom:16px}
.rp-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}
.rp-card{border:1px solid #e2e8f0;border-radius:8px;padding:10px 8px;text-align:center}
.rp-card b{display:block;font-size:22px;color:var(--primary);line-height:1.2}
.rp-card span{font-size:11px;color:#64748b}
.rp-sec{font-weight:700;font-size:14px;margin:16px 0 8px;border-left:4px solid #34d399;padding-left:8px}
.rp-row{display:flex;align-items:center;gap:10px;padding:4px 0}
.rp-row .nm{width:42%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-bar{flex:1;height:8px;background:#eef2f7;border-radius:4px;overflow:hidden}
.rp-bar i{display:block;height:100%;background:var(--primary)}
.rp-row .v{width:56px;text-align:right;color:#64748b;font-size:12px}
.rp-item{border-bottom:1px dashed #e2e8f0;padding:6px 0}
.rp-tip{background:#f8fafc;border-radius:8px;padding:10px 14px;color:#334155}

/* toast */
.toast{position:fixed;left:50%;bottom:34px;transform:translateX(-50%);background:#111827;color:#fff;
  padding:9px 18px;border-radius:10px;font-size:13.5px;z-index:99;box-shadow:0 8px 24px rgba(0,0,0,.2);
  animation:tin .2s ease-out}
@keyframes tin{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}

/* ---------- 打印 / 试卷预览 ---------- */
#print-area{display:none}
@page{size:A4;margin:18mm 16mm 16mm}
@media print{
  body{background:#fff;overflow:visible;display:block}
  .topbar,main,.mask,.toast,.pagehead{display:none!important}
  #print-area{display:block!important}
  /* 另存为 PDF / 打印时保留背景色和边框颜色 */
  #print-area, #print-area *{ -webkit-print-color-adjust:exact!important; print-color-adjust:exact!important; }
  #paper-body, #paper-body *{ -webkit-print-color-adjust:exact!important; print-color-adjust:exact!important; }
}
.paper-print{font-family:"SimSun","Songti SC",serif;color:#000;font-size:12pt;line-height:1.9}
.paper-print h1{font-family:"SimHei","Microsoft YaHei",sans-serif;font-size:18pt;text-align:center;margin:0 0 6pt}
.paper-print .pp-sub{text-align:center;font-size:10.5pt;margin-bottom:4pt}
.paper-print .pp-info{text-align:center;font-size:10.5pt;margin-bottom:12pt;letter-spacing:.5px}
.paper-print .pp-sec{font-family:"SimHei","Microsoft YaHei",sans-serif;font-weight:700;font-size:12pt;margin:14pt 0 6pt}
.paper-print .pp-q{margin-bottom:8pt;page-break-inside:avoid;break-inside:avoid}
/* 工具条打开“长题跨页”时，打印也允许题目跨页续排，避免整页留白 */
.paper-print.allow-split .pp-q,.paper-print.allow-split .pp-q.tps-quiz{page-break-inside:auto;break-inside:auto}
.paper-print .pp-q>p:first-of-type{display:inline}
.paper-print .pp-q p{margin:0 0 3pt}
.paper-print img{max-width:100%;max-height:5.2cm;object-fit:contain}
.paper-print .pp-q img{max-width:5.8cm;max-height:4.8cm;object-fit:contain;page-break-inside:avoid}
.paper-print .pp-q img:not(.math){display:block;margin:6pt auto}
.paper-print .pp-q .pp-opt img{display:inline;max-height:1.6em;max-width:4cm;vertical-align:middle}
.paper-print .pp-opts{margin:2pt 0 0 2em}
.paper-print .pp-opt-line{display:flex;flex-wrap:wrap;gap:0 3em}
.paper-print .pp-opt{min-width:0}
.paper-print table{border-collapse:collapse;margin:6pt auto}
.paper-print table td,.paper-print table th{border:1px solid #000;padding:3pt 10pt;text-align:center}
.paper-print .pp-ans-title{text-align:center;font-family:"SimHei",sans-serif;font-size:15pt;margin:0 0 10pt;page-break-before:always}
.paper-print .pp-ans{margin-bottom:7pt}
.paper-print .pp-label{font-weight:700}
.paper-print .pp-ana{color:#333;margin-left:2em}

@media (max-width:900px){
  .grid4{grid-template-columns:1fr 1fr}
  .filters{width:190px;flex-basis:190px}
  .paper-side{display:none}
  .topbar{width:176px;padding:20px 12px}
  main{margin-left:176px}
  .pagehead{left:176px;padding:0 16px}
  .brand{font-size:19px;letter-spacing:2px}
  .brand-sub{margin-left:44px;letter-spacing:2px}
}
/* MathType 公式图：按行内小图显示，不撑高版面 */
.stem-preview img.math{max-height:1.35em;max-width:none;vertical-align:-0.2em}
.sq-stem img.math{max-height:1.55em;max-width:none;vertical-align:-0.2em}
.rte img.math{max-height:1.35em;max-width:none;vertical-align:-0.2em}
.paper-print .pp-q img.math{max-height:0.55cm;max-width:none;vertical-align:-2px}
/* 导入进度 */
.progress{height:10px;background:#eef3ef;border-radius:999px;overflow:hidden}
.progress i{display:block;height:100%;background:linear-gradient(90deg,#1aa568,#0f8a52);border-radius:999px;transition:width .18s ease}
/* 编辑器预览 */
.ed-preview-wrap{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line)}
.ed-preview{background:#f8fbf9;border:1px solid var(--line2);border-radius:10px;padding:10px 12px;font-size:13px;line-height:1.85;max-height:220px;overflow:auto}
.ed-preview img{max-height:80px;max-width:100%;vertical-align:middle}
.ed-preview .edpv-opts{margin-top:4px;color:#33473d}
.ed-preview .edpv-ans,.ed-preview .edpv-ana{margin-top:6px;color:#0f766e}

/* ---------- 知题风格微调 ---------- */
.bank-main{padding:16px 22px 16px 16px}
.filters{padding:20px 16px}
.paper-main{padding:24px 28px}
.settings{padding:28px 32px}
.f-group>label{color:#93a18f;font-weight:400;letter-spacing:1px;font-size:11px}
.f-tip{color:#a1ac9b}
.toolbar .primary,.toolbar .ghost{padding:10px 16px;border-radius:7px;font-size:13.5px}
.empty{color:#9da89c}
.tab[data-view="bank"]::before{content:"▦  "}
.tab[data-view="paper"]::before{content:"✎  "}
.tab[data-view="tpl"]::before{content:"❖  "}
.tab[data-view="library"]::before{content:"▤  "}
.tab[data-view="stats"]::before{content:"◈  "}
.tab[data-view="import"]::before{content:"⇧  "}
.tab[data-view="settings"]::before{content:"⚙  "}
/* 顶部面包屑栏 */
.pagehead{position:fixed;top:0;left:218px;right:0;height:64px;background:#fff;border-bottom:1px solid #e6ece6;
  display:flex;align-items:center;justify-content:space-between;padding:0 32px;color:#94a096;font-size:12px;z-index:15}
.pagehead b{color:#2b4637;font-weight:600}
.avatar{display:inline-grid;place-items:center;width:30px;height:30px;background:#eef3e9;border-radius:50%;margin-left:14px;color:#7c976d;font-size:12px}
main{padding-top:64px}
/* 题库统计条 + 表格视图 */
.bank-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px}
.bank-stats .stat{background:#fff;border:1px solid #e5ece5;border-radius:10px;padding:18px 20px;position:relative}
.bank-stats label{font-size:12px;color:#8a998d}
.bank-stats strong{display:block;font-size:28px;margin-top:10px;font-weight:600;color:#2b4637;line-height:1}
.bank-stats i{position:absolute;right:16px;top:16px;background:#edf4ed;color:#85a98b;padding:8px 10px;border-radius:9px;font-style:normal;font-size:14px}
.qlist.table-mode{display:block;overflow:auto;padding-right:0}
.qtable{width:100%;border-collapse:collapse;background:#fff;border:1px solid #e5ece5;border-radius:10px;overflow:hidden}
.qtable th{font-size:12px;background:#f8faf7;color:#93a18f;font-weight:400;border-bottom:1px solid #e8eee6;padding:13px 16px;text-align:left;white-space:nowrap}
.qtable td{border-bottom:1px solid #eef2eb;padding:14px 16px;font-size:12.5px;color:#6d8073;vertical-align:top}
.qtable tbody tr:hover td{background:#fafcf9;cursor:pointer}
.qtable tbody tr:last-child td{border-bottom:0}
.qtable td.qtitle{color:#3a5142;font-size:13.5px;line-height:1.7;width:42%}
.qtable td:nth-child(2){min-width:96px}
.qtable td:nth-child(4){white-space:nowrap;min-width:64px}
.qtable td:nth-child(5){white-space:nowrap;min-width:140px}
.qtable td:last-child{white-space:nowrap}
.qtable td.qtitle .qsub{display:block;color:#9da89c;font-size:11.5px;margin-top:6px}
.qtable .ops2{display:flex;gap:2px;white-space:nowrap}
.qtable .ops2 button{font-size:12px;color:#68796c;padding:4px 8px;border-radius:6px;background:none;border:0}
.qtable .ops2 button:hover{background:#eef4ea;color:#287659}
.qtable .ops2 button.del:hover{background:#fbf0ef;color:#c0504d}
/* 知识点 chips + 知识树 */
.kp-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.kp-chips:empty{display:none}
.kp-chip{display:inline-flex;align-items:center;gap:5px;background:#edf4ec;color:#4f6b52;border:1px solid #dbe8d8;border-radius:6px;padding:3px 8px;font-size:12px}
.kp-chip b{font-weight:400}
.kp-chip button{color:#8fa58c;font-size:13px;line-height:1;padding:0 1px}
.kp-chip button:hover{color:#c0504d}
.kp-row{display:flex;gap:8px;align-items:center}
.kp-row input{flex:1}
.kp-modal{width:720px;max-width:94vw}
.kp-searchrow{display:flex;gap:10px;margin-bottom:12px}
.kp-searchrow input{flex:1}
.kp-tree{max-height:56vh;overflow:auto;border:1px solid #e5ece5;border-radius:8px;padding:8px 10px;background:#fcfdfb}
.kp-subject{margin:6px 0 10px}
.kp-subject>b{font-size:13px;color:#2b4637}
.kp-grade{font-size:11px;color:#9da89c;margin:8px 0 4px;letter-spacing:1px}
.kp-chapter{margin:2px 0}
.kp-chapter>summary{cursor:pointer;font-size:12.5px;color:#4f6b52;padding:5px 2px;border-radius:5px}
.kp-chapter>summary:hover{background:#f2f7ef}
.kp-sec{display:flex;flex-wrap:wrap;gap:4px 10px;padding:4px 0 6px 16px;align-items:center}
.kp-sec>span{font-size:11px;color:#a1ac9b;width:100%}
.kp-point{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:#5b7360;padding:3px 8px;border-radius:6px;cursor:pointer}
.kp-point:hover{background:#eef4ea}
.kp-point input{width:13px;height:13px;padding:0}
.kp-point i{font-style:normal}
.modal-head .icon-btn{margin-left:auto}
/* 知识点挑题（三级树） */
.kp-side{width:300px;flex:0 0 300px;background:#fff;border:1px solid #e5ece5;border-radius:10px;
  display:flex;flex-direction:column;margin:16px 0 16px 18px;height:calc(100% - 32px);overflow:hidden}
.kp-side-head{padding:12px;border-bottom:1px solid #eef2eb;display:flex;flex-direction:column;gap:8px}
.kp-side-head select,.kp-side-head input{width:100%;font-size:13px}
.kp-nav{flex:1;overflow-y:auto;padding:8px 6px 16px}
.kp-ch{margin:2px 0}
.kp-ch-head{display:flex;align-items:center;gap:6px;padding:7px 8px;border-radius:6px;cursor:pointer;font-size:13.5px;color:#2b4637;font-weight:600}
.kp-ch-head:hover{background:#f4f8f2}
.kp-ch-head .sign{width:16px;height:16px;border-radius:50%;background:#287659;color:#fff;display:grid;place-items:center;font-size:12px;line-height:1;flex:none}
.kp-ch-head.closed .sign{background:#dfe9dc;color:#5c7460}
.kp-ch-head .cnt{margin-left:auto;font-size:11px;color:#a1ac9b;font-weight:400}
.kp-secs{padding-left:14px;border-left:1px dashed #e3eae2;margin-left:14px}
.kp-sec{margin:1px 0}
.kp-sec-head{display:flex;align-items:center;gap:6px;padding:5px 8px;border-radius:6px;cursor:pointer;font-size:12.5px;color:#4d6852}
.kp-sec-head:hover{background:#f4f8f2}
.kp-sec-head .sign{width:14px;height:14px;border-radius:50%;background:#eaf3ed;color:#2f7d5b;display:grid;place-items:center;font-size:11px;line-height:1;flex:none}
.kp-sec-head.closed .sign{background:#eef3ee;color:#7c917e}
.kp-sec-head .cnt{margin-left:auto;font-size:11px;color:#a9b4a7;font-weight:400}
.kp-points{padding-left:12px;border-left:1px dashed #eceff0;margin-left:12px;display:flex;flex-direction:column}
.kp-pt{display:flex;align-items:center;gap:6px;padding:5px 8px;border-radius:6px;font-size:12px;color:#68796c;cursor:pointer;line-height:1.5}
.kp-pt:hover{background:#f4f8f2;color:#2b4637}
.kp-pt.active{background:#eaf3ed;color:#267453;font-weight:600}
.kp-pt .cnt{margin-left:auto;font-size:11px;color:#a9b4a7;font-weight:400}
.kp-main{flex:1;min-width:0;display:flex;flex-direction:column;padding:16px 22px 16px 16px;overflow:hidden}
.kp-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.kp-crumb{font-size:14px;font-weight:600;color:#2b4637}
.kp-list{flex:1;overflow-y:auto;padding-right:4px}
.kp-pt.zero{color:#9aa79b}
.kp-pt.zero .cnt{color:#c2cbbe}
/* 筛选面板：筛选 / 知识点 两个页签 */
.filters{display:flex;flex-direction:column;padding:12px 12px 10px;overflow:hidden}
.filters-tabs{display:flex;gap:6px;margin-bottom:10px;flex:none}
.ftab{flex:1;padding:7px 0;border-radius:7px;font-size:12.5px;color:#7b8f80;background:#f4f7f2;border:0}
.ftab:hover{background:#eef4ea;color:#2b4637}
.ftab.active{background:#eaf3ed;color:#267453;font-weight:600}
.filters-body{flex:1;min-height:0;overflow-y:auto}
#filters-tree{display:flex;flex-direction:column;gap:8px}
#filters-tree select,#filters-tree input{width:100%;font-size:13px}
#filters-tree .kp-nav{flex:1;min-height:0;overflow-y:auto;padding:2px 0 12px}
.kp-active-row{display:flex;align-items:center;gap:6px;font-size:12px;color:#5b7360;background:#f2f7ef;border-radius:6px;padding:6px 8px}
.kp-active-row b{font-weight:600;color:#267453}
.kp-active-row button{margin-left:auto;color:#8fa58c;font-size:12px;background:none;border:0}
.kp-active-row button:hover{color:#c0504d}
/* 筛选里的知识点：树形选择浮层 */
.kp-field{position:relative}
.kp-select{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid #e0e7df;border-radius:6px;padding:9px 11px;background:#fff;color:#526e58;font-size:13px;text-align:left}
.kp-select span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kp-select i{font-style:normal;color:#9aa79b;font-size:11px;flex:none}
.kp-select:hover{border-color:#cfe0cf}
.kp-select.on{color:#267453;background:#f4f9f2;border-color:#cfe0cf}
.kp-pop{position:fixed;z-index:80;background:#fff;border:1px solid #dde7dd;border-radius:10px;box-shadow:0 14px 34px rgba(30,50,35,.16);padding:10px;display:flex;flex-direction:column;gap:8px;max-height:72vh}
.kp-pop[hidden]{display:none}
.kp-pop-head{display:flex;flex-direction:column;gap:8px}
.kp-pop-head select,.kp-pop-head input{width:100%;font-size:13px}
.kp-pop .kp-nav{flex:1;min-height:0;max-height:52vh;overflow-y:auto;padding:2px 0;border:0;background:none}
.kp-slot{display:flex;flex-direction:column;min-height:0;flex:1}
.kp-panel{display:flex;flex-direction:column;gap:8px;min-height:0;flex:1}
.kp-panel select,.kp-panel input{width:100%;font-size:13px}
.kp-panel .kp-nav{flex:1;min-height:0;overflow-y:auto;padding:2px 0}
.kp-pop .kp-panel .kp-nav{max-height:52vh}
/* 导入页：两种模式 + 截图入库 */
.import-modes{display:flex;gap:12px;margin-bottom:14px}
.mode-card{flex:1;text-align:left;background:#fff;border:1px solid #e5ece5;border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:4px;transition:.15s}
.mode-card b{font-size:14px;color:#2b4637}
.mode-card span{font-size:12px;color:#93a18f;line-height:1.6}
.mode-card:hover{border-color:#cfe0cf}
.mode-card.active{border-color:#bfd8c3;background:#f4f9f2}
.mode-card.active b{color:#267453}
.snap-panel{background:#fff;border:1px solid #e5ece5;border-radius:10px;padding:14px;display:flex;flex-direction:column;gap:12px}
.snap-drop{border:1px dashed #cfe0cf;border-radius:10px;padding:22px;text-align:center;cursor:pointer;background:#fbfdfa}
.snap-drop.over{background:#eef7ee;border-color:#8fc09a}
.snap-pages{display:flex;flex-direction:column;gap:14px;max-height:52vh;overflow:auto}
.snap-page{position:relative;align-self:center;max-width:100%;user-select:none;touch-action:none;cursor:crosshair;border:1px solid #e6ece6;border-radius:6px;overflow:hidden;background:#fff}
.snap-page img{display:block;max-width:100%;height:auto;pointer-events:none}
.snap-rect{position:absolute;border:1.5px solid #287659;background:rgba(40,118,89,.12);pointer-events:none;border-radius:2px}
.snap-tray{margin-top:14px;background:#fff;border:1px solid #e5ece5;border-radius:10px;padding:12px 14px}
.snap-tray-head{display:flex;align-items:center;gap:10px;font-size:13px;color:#3a5142}
.snap-thumbs{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.snap-thumb{position:relative;border:1px solid #e5ece5;border-radius:6px;overflow:hidden;background:#fff;padding:4px}
.snap-thumb img{display:block;max-height:90px;max-width:180px}
.snap-thumb button{position:absolute;top:2px;right:2px;background:rgba(255,255,255,.92);border:1px solid #e5ece5;border-radius:50%;width:18px;height:18px;font-size:11px;line-height:1;color:#8a998d}
.snap-thumb button:hover{color:#c0504d;border-color:#e7c3c1}
/* 题目详情缩放 */
.vw-zoom{display:flex;align-items:center;gap:8px;margin-bottom:10px;padding-bottom:8px;border-bottom:1px dashed var(--line2)}
.vw-zoom b{font-size:12px;color:#526e58;min-width:44px;text-align:center}
.snap-thumb{max-width:210px}
.snap-thumb .st{display:block;font-size:11px;color:#8a998d;margin-top:4px}
.snap-thumb.ok .st{color:#267453}
.snap-thumb i{display:block;font-style:normal;font-size:11px;color:#9da89b;line-height:1.4;max-height:2.8em;overflow:hidden}
/* 题目卡片：菁优网式底栏 */
.stem-preview{font-size:17px;line-height:1.8;max-height:6.4em}
.opt-preview{font-size:14px}
.qcard-foot{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px;padding-top:9px;border-top:1px solid #f0f4ee}
.qmeta{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:#9aa79b}
.qmeta b{font-weight:500;color:#6d8073}
.qacts{margin-left:auto;display:flex;align-items:center;gap:2px;flex-wrap:wrap}
.qacts button{font-size:12.5px;color:#68796c;padding:5px 9px;border-radius:6px;background:none;border:0}
.qacts button:hover{background:#eef4ea;color:#267453}
.qacts button.basket{background:#287659;color:#fff;border-radius:16px;padding:5px 14px;font-weight:600;margin-left:6px}
.qacts button.basket:hover{background:#236a50;color:#fff}
.qacts button.basket.on{background:#eaf3ed;color:#267453}
.qcard .qdel{opacity:0;color:#b9c4b8;font-size:13px;padding:2px 6px;border-radius:6px}
.qcard:hover .qdel{opacity:1}
.qcard .qdel:hover{background:#fbf0ef;color:#c0504d}
/* 试题篮浮标 */
.basket-fab{position:fixed;right:26px;bottom:26px;z-index:70;background:#287659;color:#fff;border-radius:999px;
  padding:11px 18px 11px 14px;display:flex;align-items:center;gap:8px;box-shadow:0 10px 24px rgba(30,70,45,.28);cursor:pointer}
.basket-fab:hover{background:#236a50}
.basket-fab b{background:#fff;color:#287659;border-radius:999px;min-width:22px;height:22px;display:grid;place-items:center;font-size:12.5px}
.basket-fab span{font-size:13px;font-weight:600}
.basket-item{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid #f0f4ee}
.basket-item .bi-stem{flex:1;font-size:13.5px;color:#3a5142;line-height:1.7;max-height:4.6em;overflow:hidden}
.basket-item button{font-size:12px;color:#8a998d;padding:2px 8px;border-radius:6px}
.basket-item button:hover{background:#fbf0ef;color:#c0504d}
/* AI 变式 */
.variant-modal{width:860px;max-width:94vw}
.variant-src{background:#f7faf6;border:1px solid #e7eee5;border-radius:8px;padding:10px 12px;font-size:13px;color:#5b7360;line-height:1.75;max-height:130px;overflow:auto;margin-bottom:12px}
.variant-opts{display:flex;gap:12px;align-items:flex-end;margin-bottom:12px}
.variant-opts label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:#8a998d}
.variant-opts select{min-width:130px}
.variant-list{max-height:46vh;overflow:auto;display:flex;flex-direction:column;gap:10px}
.variant-item{border:1px solid #e5ece5;border-radius:8px;padding:10px 12px;font-size:13.5px;line-height:1.75;color:#3a5142}
.variant-item .vi-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.variant-item .vi-head input{width:14px;height:14px;accent-color:#287659}
.variant-item .vi-opts{color:#6d8073;font-size:13px;margin-top:4px}
.variant-item .vi-ans{color:#0f766e;font-size:12.5px;margin-top:4px}
/* 卡片头部标签 / 底部信息放大到 16px */
.qcard .qcard-head .badge{font-size:15px;padding:3px 9px;border-radius:6px}
.qcard .qdel{font-size:15px}
.qmeta{font-size:15px;gap:18px}
.qmeta b{font-size:15px}
.qacts button{font-size:15px;padding:6px 10px}
.qacts button.basket{font-size:15px;padding:7px 15px;border-radius:17px}
/* 多试题篮 */
.basket-fab button{background:rgba(255,255,255,.18);color:#fff;border:0;border-radius:999px;width:24px;height:24px;font-size:15px;line-height:1;display:grid;place-items:center}
.basket-fab button:hover{background:rgba(255,255,255,.3)}
.basket-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.basket-tab{background:#f4f7f2;border:1px solid #e3eadf;border-radius:16px;padding:5px 12px;font-size:12.5px;color:#5b7360}
.basket-tab b{font-weight:600;color:#267453;margin-left:4px}
.basket-tab.active{background:#eaf3ed;border-color:#cfe0cf;color:#267453;font-weight:600}
.basket-tab.add{background:#fff;border-style:dashed;color:#8a998d}
.basket-tab.add:hover{color:#267453;border-color:#a9c9b0}
.basket-chooser{position:fixed;z-index:90;background:#fff;border:1px solid #dde7dd;border-radius:10px;box-shadow:0 14px 34px rgba(30,50,35,.18);padding:8px;min-width:190px}
.basket-chooser .bc-title{font-size:11.5px;color:#9aa79b;padding:4px 8px 6px}
.basket-chooser button{display:block;width:100%;text-align:left;padding:8px 10px;border-radius:7px;font-size:13px;color:#3a5142}
.basket-chooser button:hover{background:#f2f7ef;color:#267453}
.basket-chooser button b{color:#267453;margin-left:6px;font-weight:600}
.basket-chooser .sep{height:1px;background:#eef2eb;margin:5px 4px}
/* 编辑器里图片可拖动缩放 */
.rte img{cursor:pointer}
.rte img.img-sel{outline:2px solid #287659;outline-offset:2px}
img[data-resized]{max-height:none!important;max-width:none!important}
.img-tools{position:fixed;z-index:95;display:flex;align-items:center;gap:2px;background:#fff;border:1px solid #dde7dd;border-radius:8px;padding:3px;box-shadow:0 8px 20px rgba(30,50,35,.16)}
.img-tools button{font-size:12px;padding:4px 8px;border-radius:5px;color:#5b7360;background:none;border:0}
.img-tools button:hover{background:#eef4ea;color:#267453}
.img-tools button.del:hover{background:#fbf0ef;color:#c0504d}
.img-tools s.sep{width:1px;height:16px;background:#e3eae1;margin:0 3px;display:block}
.img-tools span{font-size:11px;color:#9aa79b;padding:0 6px}
.img-grip{position:fixed;width:14px;height:14px;background:#287659;border:2px solid #fff;border-radius:3px;z-index:96;cursor:nwse-resize;box-shadow:0 1px 4px rgba(0,0,0,.25)}
/* 裁剪弹窗 */
.crop-mask{position:fixed;inset:0;background:rgba(18,28,22,.55);z-index:130;display:flex;align-items:center;justify-content:center;padding:18px}
.crop-panel{background:#fff;border-radius:12px;padding:14px;box-shadow:0 22px 60px rgba(10,25,16,.35);max-width:94vw}
.crop-head{font-size:14px;font-weight:600;color:#2b4436;display:flex;align-items:baseline;gap:10px;margin-bottom:10px}
.crop-head span{font-size:12px;font-weight:400;color:#95a297}
.crop-stage{position:relative;display:inline-flex;max-width:88vw;max-height:62vh;overflow:hidden;background:#f4f7f2;border-radius:8px;line-height:0}
.crop-stage img{display:block;max-width:88vw;max-height:62vh;user-select:none;-webkit-user-drag:none}
.crop-sel{position:absolute;border:1.5px solid #287659;cursor:move;box-shadow:0 0 0 9999px rgba(15,25,18,.42);box-sizing:border-box}
.crop-sel i{position:absolute;width:13px;height:13px;background:#287659;border:2px solid #fff;border-radius:2px;box-sizing:border-box}
.crop-sel i[data-h="nw"]{left:-7px;top:-7px;cursor:nwse-resize}
.crop-sel i[data-h="ne"]{right:-7px;top:-7px;cursor:nesw-resize}
.crop-sel i[data-h="sw"]{left:-7px;bottom:-7px;cursor:nesw-resize}
.crop-sel i[data-h="se"]{right:-7px;bottom:-7px;cursor:nwse-resize}
.crop-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
.crop-foot button{font-size:13px;padding:6px 16px;border-radius:7px;border:1px solid #dbe5d8;background:#fff;color:#4d6553;cursor:pointer}
.crop-foot button:hover{background:#f2f7ef}
.crop-foot button.primary{background:#287659;border-color:#287659;color:#fff}
.crop-foot button.primary:hover{background:#215f47}
.crop-foot button:disabled{opacity:.6;cursor:default}
/* 题干里的表格 */
.stem-preview table,.rte table,.vw-stem table,.imp-card table{border-collapse:collapse;max-width:100%;margin:6px 0;font-size:13.5px}
.stem-preview td,.stem-preview th,.rte td,.rte th,.vw-stem td,.vw-stem th,.imp-card td,.imp-card th{
  border:1px solid #d7e0d6;padding:4px 9px;vertical-align:middle;line-height:1.6}
.stem-preview th,.vw-stem th,.imp-card th{background:#f6faf5;font-weight:600}
/* 公式编辑器（MathLive） */
.math-modal{width:760px;max-width:94vw}
/* 公式编辑器标签页（快捷工具 / 公式模板） */
.math-tabs{display:flex;gap:4px;border-bottom:1px solid #e4ece4;margin-bottom:12px}
.math-tabs button{border:none;background:none;padding:8px 16px;font-size:14px;color:#75857a;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.math-tabs button.active{color:#267453;font-weight:600;border-bottom-color:#267453}
.math-tabpane{margin-bottom:12px}
.math-tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.math-tpl-grid button{display:flex;flex-direction:column;align-items:center;gap:4px;border:1px solid #e0e7df;background:#fff;border-radius:8px;padding:10px 6px;cursor:pointer}
.math-tpl-grid button:hover{border-color:#cfe0cf;background:#f4f9f2}
.math-tpl-grid .mtpl-icon{font-size:17px;min-height:26px;display:flex;align-items:center}
.math-tpl-grid .mtpl-icon .katex{font-size:1.15em}
.math-tpl-grid .mtpl-name{font-size:12px;color:#75857a}
/* 输入区域 / 预览区域 分区标签 */
.math-sec-label{font-size:13px;font-weight:600;color:#4a5a4e;margin:12px 0 6px}
.math-sec-label:first-of-type{margin-top:0}
.math-palette{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.math-palette button{display:inline-flex;align-items:center;gap:5px;border:1px solid #e0e7df;background:#fff;border-radius:7px;padding:6px 10px;font-size:13px;color:#526e58}
.math-palette button:hover{border-color:#cfe0cf;background:#f4f9f2;color:#267453}
.math-palette .mp-icon{font-family:"Times New Roman",serif;font-style:italic;font-size:15px;min-width:16px;text-align:center}
.math-field{width:100%;min-height:64px;border:1px solid #dde7dd;border-radius:8px;padding:10px 12px;background:#fcfdfb;font-size:20px}
.math-preview{margin-top:10px;padding:10px 12px;border:1px dashed #e3eae1;border-radius:8px;min-height:44px;background:#fbfdfa}
.math-preview .katex{font-size:1.4em}
.math-tex{margin-top:10px;font-size:12px;color:#8a998d}
.math-tex textarea{width:100%;margin-top:6px;font-family:Consolas,monospace;font-size:12.5px}

/* ================= 图片搜索替换 ================= */
.imgsearch-modal{width:880px;max-width:95vw}
.is-search{display:flex;gap:8px;margin-bottom:12px}
.is-search input{flex:1}
.is-grid{height:52vh;overflow:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;align-content:start}
.is-cell{border:2px solid transparent;border-radius:8px;padding:4px;background:#fff;cursor:pointer;display:flex;flex-direction:column;gap:4px}
.is-cell:hover{box-shadow:0 2px 10px rgba(0,0,0,.18)}
.is-cell.sel{border-color:var(--pri,#1a7f4b)}
.is-cell img{width:100%;height:110px;object-fit:contain;background:#fafafa}
.is-loading{padding:30px;text-align:center;color:#888}

/* ================= AI 重绘 ================= */
.air-modal{width:780px;max-width:94vw}
.air-hint{width:100%;margin:8px 0 12px}
.air-compare{display:flex;gap:12px}
.air-pane{flex:1;min-width:0}
.air-label{font-weight:600;font-size:13px;margin-bottom:6px}
.air-box{background:#fafafa;border:1px solid #e3e3e3;border-radius:8px;height:300px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.air-box img{max-width:100%;max-height:280px}
.air-loading{color:#888;font-size:13px;text-align:center;padding:20px;line-height:1.9}
.air-modes{display:flex;gap:8px;margin-bottom:8px}
.air-mode{flex:1;padding:8px 6px;border:1.5px solid #d5d5d5;border-radius:8px;background:#fff;cursor:pointer;font-size:13px;color:#555}
.air-mode.sel{border-color:var(--pri,#1a7f4b);background:#f0f8f3;color:var(--pri,#1a7f4b);font-weight:600}

/* ================= 编辑器截图 ================= */
body.shot-hide-ui > *:not(#shot-layer){visibility:hidden!important}
#shot-layer{position:fixed;inset:0;z-index:9999;background:#232a24;overflow:auto}
.shot-count{position:fixed;top:14px;right:14px;z-index:10000;background:#fff;border-radius:10px;
  padding:10px 14px;display:flex;gap:8px;align-items:center;box-shadow:0 6px 24px rgba(0,0,0,.3);font-size:14px}
.shot-count b{color:#267453;font-size:18px;min-width:14px;text-align:center}
.shot-tip{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:2;background:#267453;color:#fff;
  padding:6px 16px;border-radius:999px;font-size:13px;box-shadow:0 4px 14px rgba(0,0,0,.3)}
.shot-stage{position:relative;width:min(96vw,1500px);margin:64px auto 90px}
.shot-stage img{width:100%;display:block;border:1px solid #45543f;cursor:crosshair;user-select:none;-webkit-user-drag:none}
#shot-rect{position:absolute;border:1.5px dashed #35d08a;background:rgba(53,208,138,.12);
  color:#fff;font-size:12px;line-height:16px;padding:0 4px;pointer-events:none;white-space:nowrap;
  text-shadow:0 1px 2px rgba(0,0,0,.6)}
.shot-actions{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);display:flex;gap:8px;
  background:#fff;border-radius:10px;padding:8px 10px;box-shadow:0 6px 24px rgba(0,0,0,.3);z-index:2}
/* 批量录题任务 */
.task-panel{background:#fff;border:1px solid #e5ece5;border-radius:10px;padding:14px 16px;margin-bottom:14px}
.task-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.task-head b{font-size:14px;color:#2b4637;margin-right:10px}
.task-table-wrap{max-height:280px;overflow:auto}
.task-table{width:100%;border-collapse:collapse;font-size:12.5px}
.task-table th{text-align:left;color:#93a18f;font-weight:400;font-size:12px;padding:8px 10px;background:#f8faf7;border-bottom:1px solid #e8eee6;position:sticky;top:0}
.task-table td{padding:9px 10px;border-bottom:1px solid #f0f4ee;color:#5b7360;vertical-align:middle}
.task-table tr:last-child td{border-bottom:0}
.task-table .tname{color:#3a5142;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tstate{display:inline-block;border-radius:10px;padding:2px 9px;font-size:11.5px}
.tstate.done{background:#eaf3ed;color:#267453}
.tstate.parsing{background:#eef4fb;color:#3f6ea8}
.tstate.queued{background:#f4f7f2;color:#8a998d}
.tstate.error{background:#fbf0ef;color:#c0504d}
.tprog{width:150px}
.tprog .bar{height:6px;background:#eef3ef;border-radius:99px;overflow:hidden}
.tprog .bar i{display:block;height:100%;background:#287659;border-radius:99px;transition:width .2s}
.tprog .pct{font-size:11px;color:#9aa79b;margin-top:3px}
.tops{display:flex;gap:2px;white-space:nowrap}
.tops button{font-size:12px;padding:4px 9px;border-radius:6px;color:#54695a}
.tops button:hover{background:#eef4ea;color:#267453}
.tops button.del:hover{background:#fbf0ef;color:#c0504d}
.tops button.go{background:#eaf3ed;color:#267453;font-weight:600}
/* 快捷公式 */
.qf-modal{width:820px;max-width:94vw}
.qf-bar{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.qf-tabs{display:flex;gap:6px;flex-wrap:wrap}
.qf-tabs button{background:#f4f7f2;border:1px solid #e3eadf;border-radius:16px;padding:5px 12px;font-size:12.5px;color:#5b7360}
.qf-tabs button.active{background:#eaf3ed;border-color:#cfe0cf;color:#267453;font-weight:600}
.qf-bar input{flex:1;min-width:150px;font-size:13px}
.qf-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-height:52vh;overflow:auto;padding:2px}
.qf-item{position:relative;border:1px solid #e5ece5;border-radius:8px;padding:10px 12px;cursor:pointer;background:#fff;transition:.12s}
.qf-item:hover{border-color:#cfe0cf;background:#f8fbf5}
.qf-item .qf-tex{min-height:32px;display:flex;align-items:center;font-size:1.05em;overflow:hidden}
.qf-item .qf-name{font-size:11.5px;color:#9aa79b;margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qf-item .qf-del{position:absolute;top:4px;right:4px;width:18px;height:18px;border-radius:50%;font-size:11px;color:#b9c4b8;background:#fff;border:1px solid #e5ece5;line-height:1;opacity:0}
.qf-item:hover .qf-del{opacity:1}
.qf-item .qf-del:hover{color:#c0504d;border-color:#e7c3c1}
.qf-form{border-top:1px dashed #e3eae1;margin-top:12px;padding-top:12px}
.qf-form-row{display:flex;gap:10px}
.qf-form-row input{flex:1}
.qf-preview{margin-top:10px;padding:10px;border:1px dashed #e3eae1;border-radius:8px;background:#fbfdfa;min-height:40px}
.qf-form-foot{display:flex;align-items:center;gap:8px;margin-top:10px}
.qf-cats{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.qf-cats button{background:#fff;border:1px solid #e0e7df;border-radius:6px;padding:4px 11px;font-size:12px;color:#6d8073}
.qf-cats button:hover{border-color:#cfe0cf;color:#267453}
.qf-cats button.active{background:#287659;border-color:#287659;color:#fff;font-weight:600}
.badge.subj-math{background:#eef2fb;color:#5a72a8}
.bank-stats{grid-template-columns:repeat(6,1fr)}
/* OCR 识别面板 */
.ocr-panel{background:#fff;border:1px solid #e5ece5;border-radius:10px;padding:14px}
.ocr-result{display:flex;gap:14px;margin-top:12px}
.ocr-preview{flex:0 0 300px;border:1px solid #e5ece5;border-radius:8px;overflow:hidden;background:#fbfdfa;display:flex;align-items:flex-start;justify-content:center;max-height:420px}
.ocr-preview img{max-width:100%;display:block}
.ocr-text-wrap{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}
.ocr-text-wrap textarea{width:100%;min-height:300px;resize:vertical;font-size:14px;line-height:1.7;padding:12px;border:1px solid #dde7dd;border-radius:8px;background:#fcfdfb}
.ocr-actions{display:flex;align-items:center;gap:8px}
@media (max-width:1100px){.ocr-result{flex-direction:column}.ocr-preview{flex:none;max-height:260px}}
/* 账号登录 / 用户 */
.auth-tabs{display:flex;gap:6px;margin-bottom:14px;border-bottom:1px solid #e7eee7;padding-bottom:10px}
.auth-tabs button{border:0;background:none;padding:6px 14px;border-radius:8px;cursor:pointer;color:#5b6b60;font-size:14px}
.auth-tabs button.on{background:#eaf3ec;color:#1f6b4f;font-weight:600}
#login-user,#reg-user,#reg-name,#reg-pw,#reg-pw2,#login-pw{padding:9px 12px;border:1px solid #dbe6db;border-radius:8px;font-size:14px;outline:none}
#login-user:focus,#reg-user:focus,#reg-name:focus,#reg-pw:focus,#reg-pw2:focus,#login-pw:focus{border-color:#2f7d5c}
.user-chip{cursor:pointer;font-size:13px;color:#2b4a3c;background:#eaf3ec;border-radius:999px;padding:4px 12px}
.user-chip:hover{background:#dcece1}
.users-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:8px}
.users-table th{text-align:left;font-weight:500;color:#6b7a70;border-bottom:1px solid #e7eee7;padding:8px 6px}
.users-table td{padding:8px 6px;border-bottom:1px solid #f1f5f1;vertical-align:middle}
.users-table .user-ops{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.users-table select.sm{padding:3px 6px;font-size:12px;border:1px solid #dbe6db;border-radius:6px}
.badge.ok{background:#e7f5ec;color:#1f6b4f}
.badge.warn{background:#fdf3e2;color:#8a5a12}
button.sm.primary{padding:4px 10px;font-size:12px}
button.danger{color:#b91c1c}
.badge.subj-eng{background:#fbeeee;color:#a15757}
.katex-embed.katex-block{display:block;margin:6px 0;text-align:center}
.katex-embed{cursor:pointer}
.katex-embed:hover{background:#eef7f1;border-radius:4px}

/* Ctrl 多选区高亮（覆盖层，不改动编辑器 DOM） */
.msel-layer{position:fixed;left:0;top:0;width:0;height:0;pointer-events:none;z-index:60}
.msel-hl{position:absolute;background:rgba(40,118,89,.22);border-radius:2px;
  box-shadow:inset 0 0 0 1px rgba(40,118,89,.35)}
.msel-tip{padding:2px 8px;border-radius:6px;background:#e6f2ea;color:#1f6b4f;
  font-size:11.5px;line-height:1.6;white-space:nowrap;margin-left:auto}
.kp-sec-title{display:flex;align-items:center;gap:8px}
.kp-select-sec{border:0;background:#edf5ee;color:#397152;border-radius:5px;padding:2px 6px;font-size:11px;cursor:pointer}
.kp-select-sec:hover{background:#dcecdf}
.kp-sec-title{display:flex;align-items:center;gap:8px}
.kp-select-sec{border:0;background:#edf5ee;color:#397152;border-radius:5px;padding:2px 6px;font-size:11px;cursor:pointer}
.kp-select-sec:hover{background:#dcecdf}
/* 试卷库阅读优化 */
#lib-detail{padding:0 4px 28px}
.lib-head{padding:22px 30px 18px;background:linear-gradient(180deg,#ffffff 0%,#fbfefc 100%)}
.lib-head-title{font-size:24px;letter-spacing:1px}
.sheet{font-size:15px;line-height:1.9}
.sheet-sec{margin:26px 2px 12px;padding:9px 14px;background:#f4faf6;border:1px solid #e2eee5;border-radius:10px;color:#174b35}
.sheet-sec::before{height:19px;width:5px}
.sheet-q{padding:18px 22px 16px;margin-bottom:12px;border-color:#e3e9e6;border-radius:14px;box-shadow:0 2px 7px rgba(15,23,42,.035)}
.sheet-q:hover{transform:translateY(-1px);box-shadow:0 7px 20px rgba(40,118,89,.10)}
.sq-no{min-width:30px;font-size:16px;color:#176b4b}
.sq-stem{font-size:15px;color:#1e293b}
.sq-pts{font-size:12px;color:#8aa294;background:#f6faf7;border-radius:999px;padding:3px 8px}
.sq-opts{margin-left:40px;gap:7px 28px}
@media (min-width:900px){.sq-opts.inline{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 34px}.sq-opt{line-height:1.75}}
@media (max-width:700px){#lib-detail{padding:0}.lib-head{padding:18px 14px}.lib-head-title{font-size:20px}.sheet-q{padding:14px 13px}.sq-opts{margin-left:8px}.sq-opts.inline{gap:5px 12px}.sq-pts{font-size:11px}}
/* 选择题选项统一为清晰的纵向阅读样式 */
.sheet .sq-opts,
.sheet .sq-opts.inline{display:flex;flex-direction:column;align-items:stretch;gap:7px;margin:12px 0 3px 40px}
.sheet .sq-opt{font-size:15px;line-height:1.85;color:#334155;align-items:flex-start}
.sheet .sq-opt-k{font-size:15px;color:#1e3a5f;font-weight:700;min-width:20px}
.sheet .sq-opt-v{font-size:15px;color:#475569;line-height:1.85}
@media (max-width:700px){.sheet .sq-opts,.sheet .sq-opts.inline{margin-left:8px}.sheet .sq-opt,.sheet .sq-opt-k,.sheet .sq-opt-v{font-size:14px}}
/* 组卷排版模板 */
.paper-meta .meta-row label:last-child select{min-width:118px}
.pp-template-lecture .pp-sec{background:#eef7f1;border-left:4px solid #287d5b;padding:6px 10px;border-radius:5px}
.pp-template-lecture .pp-q{border:1px solid #d9e9df;border-radius:8px;padding:9px 12px;margin-bottom:10px}
.pp-template-practice .pp-sec{font-size:14pt;color:#236b52;border-bottom:2px solid #75b797;padding-bottom:4px}
.pp-template-practice .pp-q{border:1px solid #aacfb9;border-radius:8px;padding:10px 14px;margin-bottom:12px}
.pp-template-practice .pp-q:before{content:'练题';display:inline-block;color:#fff;background:#347e5e;border-radius:4px;padding:1px 6px;margin-right:6px;font-size:9pt}
.pp-template-blank .pp-q{margin-bottom:18pt;min-height:42pt}
.pp-template-blank .pp-q:after{content:'____________________________________________________________';display:block;color:#aab7af;letter-spacing:1px;margin-top:10pt}
/* 排版模板入口强调 */
#p-template{border:1px solid #73aa8d;background:#f3faf5;color:#176b4b;font-weight:600;min-width:130px;cursor:pointer}
.paper-meta .meta-row label:last-child{padding:4px 8px;border-radius:8px;background:#edf7f0;color:#287653;font-weight:600}
.paper-meta .meta-row label:last-child::before{content:'✦ ';font-size:12px}
/* 组卷编辑区实时模板效果 */
.paper-template-lecture .sec-card{border-color:#b9dcca;box-shadow:0 4px 14px rgba(40,118,89,.08)}
.paper-template-lecture .sec-head{background:#eef8f1;border-left:4px solid #287d5b}
.paper-template-lecture .sec-item{background:#fbfefc}
.paper-template-practice .sec-card{border-color:#9bc9b0;border-radius:12px}
.paper-template-practice .sec-head{background:#f0f8f2;border-bottom:2px solid #79b596}
.paper-template-practice .sec-head:before{content:'✦';color:#287d5b;margin-right:8px;font-weight:700}
.paper-template-practice .sec-item{border-left:4px solid #75b797;padding-left:18px;background:#fff}
.paper-template-blank .sec-item{padding-top:17px;padding-bottom:28px;min-height:84px}
.paper-template-blank .sec-item .body:after{content:'\A\A______________________________________________';white-space:pre;color:#a2b2a8;line-height:2.2}
.paper-template-standard .sec-card{box-shadow:0 1px 3px rgba(15,23,42,.04)}
@media print{
  .basket-fab,.basket-chooser{display:none!important}
  .paper-print .pp-q{page-break-inside:auto;break-inside:auto}
  .paper-print .pp-sec{page-break-after:avoid;break-after:avoid}
}

/* ---------- 下载试卷确认弹窗 ---------- */
.dl-title{font-size:16px;font-weight:700;text-align:center;margin:2px 0 16px;color:#0f172a}
.dl-opt{display:flex;align-items:center;gap:16px;margin:10px 0;flex-wrap:wrap}
.dl-opt .lb{width:64px;flex:none;color:#64748b;font-size:13px}
.dl-opt .inline{margin:0}

/* ================= 模板工坊 ================= */
.tpl-side{width:250px;flex:0 0 250px;background:#fff;border:1px solid #e5ece5;border-radius:10px;display:flex;flex-direction:column;margin:16px 0 16px 18px;height:calc(100% - 32px);overflow:hidden}
.tpl-comps{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px;border-bottom:1px solid var(--line2)}
.tpl-comp{display:flex;flex-direction:column;align-items:center;gap:5px;padding:11px 4px;border:1px solid var(--line);border-radius:9px;background:#fbfdfb;cursor:pointer;font-size:12px;color:var(--text)}
.tpl-comp i{font-style:normal;width:30px;height:30px;display:grid;place-items:center;background:var(--primary-w);color:var(--primary);border-radius:8px;font-weight:700;font-size:14px}
.tpl-comp:hover{border-color:#a9cdb9;background:#f4faf5}
.tpl-main{flex:1;min-width:0;display:flex;flex-direction:column;padding:14px 18px;overflow:hidden}
.tpl-bar{display:flex;align-items:center;gap:8px;padding-bottom:10px}
.tpl-bar input{width:300px}
.tpl-canvas-wrap{flex:1;overflow-y:auto;background:var(--bg);border-radius:10px;padding:24px 10px 80px}
.tpl-canvas{max-width:830px;margin:0 auto;background:#fff;box-shadow:0 2px 18px rgba(15,23,42,.09);border-radius:3px;min-height:640px;padding:56px 62px;font-family:"Microsoft YaHei","PingFang SC",sans-serif;font-size:14px;line-height:1.9;color:#1f2937}
.tplb{position:relative;border:1.5px dashed transparent;border-radius:6px;padding:4px 8px;margin:3px 0;cursor:pointer}
.tplb:hover{border-color:#cfe3d4}
.tplb.sel{border-color:var(--primary);background:rgba(40,118,89,.035)}
.tplb-empty{color:#a8b3aa;text-align:center;padding:80px 0;font-size:13px}
.tplb-empty .hint{font-size:12px;color:#c2ccc4}
.tpl-props{width:272px;flex:0 0 272px;background:#fff;border:1px solid #e5ece5;border-radius:10px;margin:16px 18px 16px 0;height:calc(100% - 32px);overflow-y:auto;padding:14px 16px}
.tpl-props h4{margin:0 0 4px;font-size:14px;color:#1f2937}
.tpl-props .pp-hint{font-size:11.5px;color:#94a3b8;margin-bottom:6px}
.tpl-props label{display:block;font-size:12px;color:var(--muted);margin:11px 0 4px}
.tpl-props input[type=text],.tpl-props input[type=number],.tpl-props select{width:100%;padding:5px 8px;font-size:12.5px}
.tpl-props .row2{display:flex;gap:8px}
.tpl-props .row2>*{flex:1}
.tpl-skins{display:flex;gap:7px;flex-wrap:wrap;margin-top:4px}
.tpl-skin{width:22px;height:22px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #d6ded6;cursor:pointer}
.tpl-skin.on{box-shadow:0 0 0 2px var(--primary)}
.tpl-props .btnrow{display:flex;gap:6px;margin-top:12px;flex-wrap:wrap}

/* 浮动插入工具条 */
.tpl-insbar{position:absolute;z-index:40;display:flex;align-items:center;gap:1px;background:#1f2937;border-radius:8px;padding:3px 6px;box-shadow:0 4px 16px rgba(15,23,42,.35)}
.tpl-insbar button{background:none;border:0;color:#e5e7eb;font-size:12px;padding:4px 8px;border-radius:5px;cursor:pointer;white-space:nowrap}
.tpl-insbar button:hover{background:rgba(255,255,255,.16)}
.tpl-insbar button.warn:hover{background:#7f1d1d}
.tpl-insbar .tpsep{width:1px;height:14px;background:rgba(255,255,255,.25);margin:0 3px}

/* 样式选择弹窗 */
.tpl-style-modal{max-width:960px;width:94vw}
.tss-tabs{display:flex;gap:6px;flex-wrap:wrap;padding:12px 20px 0;border-bottom:1px solid var(--line2)}
.tss-tab{padding:5px 14px;border-radius:999px;border:1px solid var(--line);background:#fff;font-size:12.5px;cursor:pointer;color:#475569}
.tss-tab.on{background:var(--primary);color:#fff;border-color:var(--primary)}
.tss-bar{display:flex;gap:8px;padding:12px 20px;align-items:center}
.tss-bar input{flex:1;max-width:320px}
.tss-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:4px 20px 18px;overflow-y:auto;max-height:56vh}
.tss-card{border:1.5px solid var(--line);border-radius:12px;padding:13px;background:#fff;cursor:pointer;position:relative}
.tss-card:hover{border-color:#9cc4ab}
.tss-card.on{border-color:#1f2937;box-shadow:0 0 0 1.5px #1f2937}
.tss-card .tick{position:absolute;top:10px;right:10px;width:20px;height:20px;border-radius:50%;background:#1f2937;color:#fff;display:none;place-items:center;font-size:12px}
.tss-card.on .tick{display:grid}
.tss-demo{background:#fafcf9;border:1px solid #eef2ec;border-radius:8px;padding:14px;min-height:86px;display:flex;flex-direction:column;justify-content:center;overflow:hidden}
.tss-name{margin-top:9px;font-size:12.5px;font-weight:600;color:#334155}
.tss-cat{float:right;font-weight:400;font-size:11px;color:#94a3b8}
.tss-empty{grid-column:1/-1;color:#94a3b8;text-align:center;padding:30px 0;font-size:13px}
.apply-tpl-list{max-height:46vh;overflow-y:auto;margin-top:8px}
.apply-tpl-item{border:1.5px solid var(--line);border-radius:9px;padding:10px 14px;margin-bottom:8px;cursor:pointer;display:flex;align-items:center;gap:10px;font-size:13px}
.apply-tpl-item:hover{border-color:#9cc4ab}
.apply-tpl-item.on{border-color:var(--primary);background:#f4faf5}
.apply-tpl-item .meta{color:#94a3b8;font-size:11.5px}

/* ---- 组件通用内部结构 ---- */
.tps-quiz{position:relative}
.tps-quiz .qno{font-weight:700;color:var(--tps,#287659);margin-right:7px}
.tps-quiz .qopts{margin:6px 0 0 26px;display:flex;flex-direction:column;gap:3px}
.tps-quiz .qopts.line{flex-direction:row;flex-wrap:wrap;gap:4px 28px}
.tps-quiz .qopts img{max-height:110px;max-width:200px;vertical-align:middle;object-fit:contain;margin:3px 4px}
.tps-quiz img.qfig{max-width:46%;max-height:180px;float:right;margin:4px 0 8px 14px;object-fit:contain}
.tps-quiz .qans{margin-top:8px;background:#f2f9f4;border-left:3px solid var(--tps,#287659);padding:6px 12px;font-size:12.5px;line-height:1.8;border-radius:0 6px 6px 0;display:none;clear:both}
.tps-quiz.show-ans .qans{display:block}
.tps-quiz::after{content:'';display:block;clear:both}
.tps-box .box-label{font-weight:700;color:var(--tps,#287659);margin-right:8px}
.tps-box .bx{color:#334155}
.tps-ansarea{border-radius:6px;color:#9aa8a0;font-size:12px}
.tps-fig img{max-width:100%;object-fit:contain}

/* ---- 标题预设 ---- */
.tps-t1{font-family:"SimHei","Microsoft YaHei";font-weight:700;font-size:17px;text-align:center;color:#1e293b;padding:6px 0}
.tps-t2{font-weight:700;font-size:16px;text-align:center;color:#1e293b;padding:4px 0 9px;border-bottom:2px solid #334155}
.tps-t3{font-weight:700;font-size:15.5px;background:linear-gradient(to right,rgba(40,118,89,.12),rgba(40,118,89,.02));border-left:4px solid var(--tps,#287659);padding:9px 14px;border-radius:0 6px 6px 0}
.tps-t4{font-weight:700;font-size:16px;padding:9px 14px;background:#f1f5f2;border-radius:6px;text-align:center;letter-spacing:1.5px;color:#111827}
.tps-t5{font-weight:700;font-size:16px;background:var(--tps,#287659);color:#fff;text-align:center;padding:9px 16px;border-radius:6px}
.tps-t6{font-weight:700;font-size:15px;background:#eef4ef;border-radius:6px;padding:8px 14px;color:#14532d;border-left:22px solid var(--tps,#287659)}
.tps-t7{display:inline-block;font-weight:700;font-size:15px;background:var(--tps,#287659);color:#fff;padding:5px 18px 5px 14px;border-radius:4px 22px 22px 4px}
.tps-t8{font-weight:700;font-size:15.5px;border:1.5px solid var(--tps,#287659);outline:1px solid rgba(40,118,89,.35);outline-offset:3px;border-radius:8px;padding:8px 16px;color:#1e293b}
.tps-t9{font-weight:700;font-size:15.5px;border-left:5px solid var(--tps,#287659);padding:5px 0 5px 12px;color:#1e293b}
.tps-t10{display:inline-block;font-weight:700;font-size:15px;background:rgba(40,118,89,.10);border:1px solid var(--tps,#287659);color:#14532d;padding:5px 22px;border-radius:999px}
.tps-t11{font-weight:700;font-size:16px;background:linear-gradient(135deg,#f97316,#ea580c);color:#fff;padding:9px 18px;border-radius:6px;text-align:center}
.tps-t12{font-weight:700;font-size:14.5px;color:#1e293b;padding-bottom:4px;border-bottom:2px dotted #94a3b8;display:inline-block}

/* ---- 正文预设 ---- */
.tps-x2{text-indent:2em}
.tps-x3{background:#f8fafc;border:1px solid #eef2f7;border-radius:8px;padding:10px 14px}
.tps-x4{border-left:3px solid #94a3b8;padding-left:12px;color:#475569}
.tps-x5{background:#fefce8;border:1px solid #fde68a;border-radius:8px;padding:10px 14px;color:#713f12}
.tps-x6{text-align:center;color:#64748b;font-size:13px}

/* ---- 试题预设 ---- */
.tps-q1{padding:6px 4px}
.tps-q2{border:1.5px solid #334155;border-radius:8px;padding:16px 18px 12px;margin-top:12px}
.tps-q2 .qno{position:absolute;top:-11px;left:14px;background:#334155;color:#fff;font-size:12px;padding:1px 12px;border-radius:4px;margin:0}
.tps-q3{background:#f5f8f5;border-left:4px solid var(--tps,#287659);padding:10px 16px;border-radius:0 8px 8px 0}
.tps-q4{border:1px solid #dbe7de;border-radius:12px;padding:14px 18px;box-shadow:0 2px 8px rgba(40,118,89,.07);background:#fff}
.tps-q4 .qno{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--tps,#287659);color:#fff;font-size:12.5px;margin-right:8px}
.tps-q5{border:1.5px solid var(--tps,#287659);border-radius:6px;padding:18px 16px 12px;margin-top:14px;background:#fff}
.tps-q5 .qno{position:absolute;top:-10px;left:12px;background:var(--tps,#287659);color:#fff;font-size:12px;padding:2px 14px;border-radius:12px;margin:0}
.tps-q6{border:1px solid #cbd5e1;border-radius:10px;padding:18px 16px 12px;box-shadow:0 3px 12px rgba(15,23,42,.10);background:#fff}
.tps-q6 .qno{position:absolute;top:-12px;left:-6px;background:#1f2937;color:#fff;font-size:12px;padding:2px 14px;border-radius:10px 10px 10px 2px;margin:0}
.tps-q7{border-left:10px solid var(--tps,#287659);background:#fbfdfb;padding:10px 16px;border-radius:0 8px 8px 0}
.tps-q7 .qno{background:var(--tps,#287659);color:#fff;font-size:12px;padding:1px 9px;border-radius:4px;margin-right:8px}
.tps-q8{background:#f1f5f9;border-bottom:2.5px solid var(--tps,#287659);padding:12px 16px;border-radius:8px 8px 0 0}
.tps-q9{border:1px solid #d6d3d1;border-radius:0 0 10px 10px;padding:14px 16px;background:linear-gradient(#f5f5f4 1px,transparent 1px),linear-gradient(90deg,#f5f5f4 1px,transparent 1px);background-size:22px 22px;background-color:#fffdf8}
.tps-q10 .qopts{columns:2;column-gap:32px;display:block}
.tps-q10 .qopts span{break-inside:avoid;display:block}

/* ---- 知识盒子预设 ---- */
.tps-b1{border:1.2px solid #64748b;border-radius:6px;padding:10px 14px}
.tps-b2{background:#eef2ee;border-left:4px solid var(--tps,#287659);padding:10px 14px;border-radius:0 8px 8px 0}
.tps-b3{border:1px solid #dbe7de;border-radius:12px;padding:12px 16px;box-shadow:0 2px 8px rgba(40,118,89,.06);background:#fff}
.tps-b3 .box-label{display:inline-block;background:var(--tps,#287659);color:#fff;font-size:12px;padding:1px 10px;border-radius:4px;margin-bottom:5px}
.tps-b4{background:#eaf3ed;border-radius:8px;padding:10px 14px}
.tps-b4 .box-label{color:#14532d}
.tps-b5{background:#fff7ed;border-left:4px solid #f59e0b;padding:10px 14px;border-radius:0 8px 8px 0}
.tps-b5 .box-label{color:#b45309}
.tps-b6{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:16px 14px 10px;box-shadow:0 3px 12px rgba(15,23,42,.10)}
.tps-b6 .box-label{position:absolute;top:-10px;left:12px;background:#1f2937;color:#fff;font-size:12px;padding:2px 12px;border-radius:10px}
.tps-b7{border:1px solid #dbe7de;border-radius:0 8px 8px 8px;padding:18px 14px 10px}
.tps-b7 .box-label{position:absolute;top:-12px;left:-4px;background:var(--tps,#287659);color:#fff;font-size:12px;padding:2px 14px;border-radius:6px 12px 12px 2px}
.tps-b8{border:1px solid #d6d3d1;border-radius:6px;padding:12px 14px;background:linear-gradient(#f5f5f4 1px,transparent 1px),linear-gradient(90deg,#f5f5f4 1px,transparent 1px);background-size:22px 22px;background-color:#fffdf8}
.tps-b6,.tps-b7{position:relative}

/* ---- 作答区预设 ---- */
.tps-a1{background:repeating-linear-gradient(to bottom,transparent 0,transparent 33px,#cbd5e1 33px,#cbd5e1 34px)}
.tps-a2{border:1.5px dashed #94a3b8;background:#fcfdfc}
.tps-a3{background:linear-gradient(#e2e8f0 1px,transparent 1px),linear-gradient(90deg,#e2e8f0 1px,transparent 1px);background-size:24px 24px;background-color:#fff}
.tps-a4{background:radial-gradient(#cbd5e1 1.1px,transparent 1.1px);background-size:22px 22px;background-color:#fff}
.tps-a5{background:repeating-linear-gradient(to bottom,transparent 0,transparent 37px,#dbe3dd 37px,#dbe3dd 38px)}
.tps-a2::before{content:'作答区';color:#94a3b8;font-size:11px;display:block;text-align:center;padding-top:8px}

/* ---- 插图预设 ---- */
.tps-f1{text-align:center}
.tps-f2{border:1px solid #e2e8f0;background:#fff;padding:8px;border-radius:6px;display:inline-block}
.tps-f2{text-align:center;width:fit-content;margin:0 auto}
.tps-f3 .figwrap{float:right;margin:4px 0 8px 16px}
.tps-f4 img{border-radius:10px;box-shadow:0 4px 16px rgba(15,23,42,.14)}
.tps-f1 img,.tps-f2 img,.tps-f3 img,.tps-f4 img{max-width:100%}

/* ---- 知识盒子预设（第二批 b9~b42） ---- */
.tps-b9{border:1.5px solid var(--tps,#2563eb);border-radius:10px;padding:20px 16px 10px}
.tps-b9 .box-label{position:absolute;top:-12px;left:14px;background:var(--tps,#2563eb);color:#fff;font-size:12px;padding:3px 18px 3px 12px;clip-path:polygon(8px 0,100% 0,calc(100% - 8px) 100%,0 100%)}
.tps-b10{border:1.2px solid var(--tps,#ea580c);border-radius:6px;padding:18px 16px 10px;background:#fff}
.tps-b10 .box-label{position:absolute;top:-11px;left:12px;background:var(--tps,#ea580c);color:#fff;font-size:12px;padding:2px 12px;border-radius:3px}
.tps-b11{border-top:1.5px solid var(--tps,#2563eb);border-bottom:1.5px solid var(--tps,#2563eb);padding:14px 16px 10px}
.tps-b11 .box-label{position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:var(--tps,#2563eb);color:#fff;font-size:12px;padding:2px 14px;border-radius:4px}
.tps-b12{border:1.2px solid var(--tps,#2563eb);border-radius:8px;padding:20px 16px 10px}
.tps-b12 .box-label{position:absolute;top:-12px;left:14px;background:var(--tps,#2563eb);color:#fff;font-size:12px;padding:3px 16px 3px 14px;clip-path:polygon(0 0,100% 0,100% 100%,0 100%,9px 50%)}
.tps-b13{border:1.2px solid var(--tps,#2563eb);border-radius:8px;padding:20px 16px 10px}
.tps-b13 .box-label{position:absolute;top:-13px;left:14px;background:var(--tps,#2563eb);color:#fff;font-size:12px;padding:3px 16px;border-radius:999px}
.tps-b14{border:1.2px solid var(--tps,#0f766e);border-radius:4px;padding:10px 16px}
.tps-b14 .box-label{position:static;display:block;color:var(--tps,#0f766e);margin-bottom:3px}
.tps-b15{border:1.2px solid var(--tps,#0d9488);border-radius:4px;padding:10px 16px}
.tps-b15 .box-label{position:static;display:inline-block;color:var(--tps,#0d9488);border-bottom:2px solid var(--tps,#0d9488);padding-bottom:1px;margin-bottom:4px}
.tps-b16{border:1.2px solid var(--tps,#16a34a);border-radius:8px;padding:20px 16px 10px}
.tps-b16 .box-label{position:absolute;top:-12px;left:-6px;background:var(--tps,#16a34a);color:#fff;font-size:12px;padding:2px 14px;border-radius:4px 10px 10px 4px}
.tps-b17{border:2px solid var(--tps,#16a34a);border-radius:8px;padding:20px 16px 10px}
.tps-b17 .box-label{position:absolute;top:-13px;left:50%;transform:translateX(-50%);background:var(--tps,#16a34a);color:#fff;font-size:12.5px;padding:3px 18px;border-radius:999px;white-space:nowrap}
.tps-b18{border:1px solid #cbd5d1;border-radius:4px;padding:18px 16px 10px;background:linear-gradient(#e5ebe6 1px,transparent 1px),linear-gradient(90deg,#e5ebe6 1px,transparent 1px);background-size:20px 20px;background-color:#fff;box-shadow:3px 4px 0 rgba(40,118,89,.25)}
.tps-b18 .box-label{position:absolute;top:-12px;left:12px;background:var(--tps,#16a34a);color:#fff;font-size:12px;padding:2px 12px;border-radius:3px}
.tps-b19{border-radius:4px;padding:12px 16px;border-left:5px solid var(--tps,#ef4444);box-shadow:2px 3px 10px rgba(15,23,42,.14);background:#fff}
.tps-b19 .box-label{position:static;color:var(--tps,#ef4444);display:block;margin-bottom:3px}
.tps-b20{border:1.2px solid var(--tps,#b45309);border-radius:8px;padding:22px 16px 10px;margin-top:14px}
.tps-b20 .box-label{position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:var(--tps,#b45309);color:#fff;font-size:12px;padding:3px 16px;border-radius:10px 10px 0 0;padding-bottom:6px}
.tps-b21{border:1.2px solid var(--tps,#2563eb);border-radius:6px;padding:22px 16px 10px}
.tps-b21 .box-label{position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:var(--tps,#2563eb);color:#fff;font-size:12px;padding:3px 20px;clip-path:polygon(10px 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,10px 100%,0 50%)}
.tps-b22{border:1.2px solid var(--tps,#dc2626);border-radius:6px;padding:18px 16px 10px}
.tps-b22 .box-label{position:absolute;top:-12px;left:14px;background:var(--tps,#dc2626);color:#fff;font-size:12px;padding:3px 18px 3px 12px;clip-path:polygon(0 0,100% 0,calc(100% - 9px) 50%,100% 100%,0 100%)}
.tps-b23{border:1.2px dashed #94a3b8;border-radius:4px;padding:12px 16px;background:#fcfdfc}
.tps-b23 .box-label{position:static;display:block;color:#94a3b8;margin-bottom:3px}
.tps-b24{border:1.2px solid #cbd5e1;border-radius:4px;padding:18px 16px 10px}
.tps-b24 .box-label{position:absolute;top:-12px;left:14px;background:linear-gradient(90deg,#475569,#94a3b8);color:#fff;font-size:12px;padding:3px 16px;border-radius:2px}
.tps-b25{border:1.2px dashed #64748b;border-radius:2px;padding:14px 20px}
.tps-b25::before,.tps-b25::after{content:'';position:absolute;width:9px;height:9px;border:1.5px solid #475569}
.tps-b25::before{top:5px;left:5px;border-right:0;border-bottom:0}
.tps-b25::after{bottom:5px;right:5px;border-left:0;border-top:0}
.tps-b26{border:1.2px solid var(--tps,#0891b2);border-radius:4px;padding:18px 16px 10px}
.tps-b26 .box-label{position:absolute;top:-12px;left:14px;color:#fff;font-size:12px;padding:3px 26px 3px 12px;background:repeating-linear-gradient(115deg,var(--tps,#0891b2) 0 12px,rgba(0,0,0,.18) 12px 18px)}
.tps-b27{border:1.2px dotted var(--tps,#ec4899);border-radius:4px;padding:12px 16px;background:#fff}
.tps-b27 .box-label{position:static;display:inline-block;color:var(--tps,#ec4899)}
.tps-b27 .box-label::before{content:'⚠ '}
.tps-b28{border:1.2px solid #94a3b8;border-radius:2px;padding:16px 22px;background:
  linear-gradient(#475569,#475569) top left/14px 1.5px,
  linear-gradient(#475569,#475569) top left/1.5px 14px,
  linear-gradient(#475569,#475569) top right/14px 1.5px,
  linear-gradient(#475569,#475569) top right/1.5px 14px,
  linear-gradient(#475569,#475569) bottom left/14px 1.5px,
  linear-gradient(#475569,#475569) bottom left/1.5px 14px,
  linear-gradient(#475569,#475569) bottom right/14px 1.5px,
  linear-gradient(#475569,#475569) bottom right/1.5px 14px;
  background-repeat:no-repeat;background-color:#fff}
.tps-b28 .box-label{position:static;display:block;color:#475569;margin-bottom:3px}
.tps-b29{border:1.2px solid var(--tps,#dc2626);border-radius:6px;padding:20px 16px 10px}
.tps-b29 .box-label{position:absolute;top:-13px;left:14px;color:#fff;font-size:12px;padding:3px 18px;border-radius:999px;background:linear-gradient(90deg,var(--tps,#dc2626),color-mix(in srgb,var(--tps,#dc2626) 55%,white))}
.tps-b30{border-radius:4px;padding:12px 18px;background:
  linear-gradient(var(--tps,#dc2626),var(--tps,#dc2626)) top left/16px 2.5px,
  linear-gradient(var(--tps,#dc2626),var(--tps,#dc2626)) top left/2.5px 16px,
  linear-gradient(var(--tps,#dc2626),var(--tps,#dc2626)) bottom right/16px 2.5px,
  linear-gradient(var(--tps,#dc2626),var(--tps,#dc2626)) bottom right/2.5px 16px;
  background-repeat:no-repeat;background-color:#fff;border:1px solid #f1f5f9}
.tps-b30 .box-label{position:static;color:var(--tps,#dc2626);display:block;margin-bottom:3px}
.tps-b31{border:1.5px solid var(--tps,#dc2626);border-radius:6px;padding:18px 16px 12px;background:#fff}
.tps-b31::after{content:'';position:absolute;right:0;bottom:0;border-style:solid;border-width:0 0 26px 26px;border-color:transparent transparent var(--tps,#dc2626) transparent;border-radius:0 0 4px 0}
.tps-b31 .box-label{position:absolute;top:-12px;left:14px;background:var(--tps,#dc2626);color:#fff;font-size:12px;padding:2px 14px;border-radius:3px}
.tps-b32{border:1.2px solid var(--tps,#b91c1c);border-radius:4px;padding:14px 44px 12px 16px;background:linear-gradient(#f3d6d6 1px,transparent 1px),linear-gradient(90deg,#f3d6d6 1px,transparent 1px);background-size:18px 18px;background-color:#fff}
.tps-b32::after{content:'?';position:absolute;right:12px;bottom:2px;font-size:30px;font-weight:700;color:var(--tps,#b91c1c);opacity:.8}
.tps-b32 .box-label{position:absolute;top:-12px;left:14px;background:var(--tps,#b91c1c);color:#fff;font-size:12px;padding:2px 12px;border-radius:3px}
.tps-b33{border:1.5px solid var(--tps,#3b82f6);border-radius:12px 12px 12px 4px;padding:12px 16px;background:#fff}
.tps-b33::after{content:'';position:absolute;right:0;bottom:0;width:0;height:0;border-style:solid;border-width:14px 14px 0 0;border-color:transparent;border-top-color:rgba(0,0,0,.06);border-left-color:rgba(0,0,0,.06)}
.tps-b33 .box-label{position:absolute;top:-12px;left:14px;background:var(--tps,#3b82f6);color:#fff;font-size:12px;padding:2px 14px;border-radius:999px}
.tps-b34{border-top:2.5px solid var(--tps,#2563eb);border-bottom:2.5px solid var(--tps,#2563eb);border-radius:6px;padding:12px 16px;background:linear-gradient(rgba(37,99,235,.04),rgba(37,99,235,.04))}
.tps-b34 .box-label{position:static;display:inline-block;color:var(--tps,#2563eb);margin-bottom:3px}
.tps-b35{border:1.2px solid var(--tps,#2563eb);border-radius:6px;padding:20px 16px 10px}
.tps-b35 .box-label{position:absolute;top:-12px;left:14px;background:var(--tps,#2563eb);color:#fff;font-size:12px;padding:3px 16px 3px 14px;clip-path:polygon(0 0,calc(100% - 9px) 0,100% 50%,calc(100% - 9px) 100%,0 100%,9px 50%)}
.tps-b36{border:3px double var(--tps,#1d4ed8);border-radius:14px;padding:18px 18px 10px}
.tps-b36 .box-label{position:absolute;top:-12px;left:18px;background:var(--tps,#1d4ed8);color:#fff;font-size:12px;padding:2px 14px;border-radius:8px 8px 0 0}
.tps-b37{border:1.2px solid var(--tps,#0ea5e9);border-radius:6px;padding:18px 16px 10px;background:linear-gradient(#dbeafe 1px,transparent 1px),linear-gradient(90deg,#dbeafe 1px,transparent 1px);background-size:20px 20px;background-color:#fff;box-shadow:0 0 14px rgba(14,165,233,.35)}
.tps-b37 .box-label{position:absolute;top:-12px;left:12px;background:var(--tps,#0ea5e9);color:#fff;font-size:12px;padding:2px 12px;border-radius:3px}
.tps-b38{border:2px solid var(--tps,#1d4ed8);border-radius:18px;padding:20px 18px 10px}
.tps-b38 .box-label{position:absolute;top:-13px;left:50%;transform:translateX(-50%);background:#fff;border:1.5px solid var(--tps,#1d4ed8);color:var(--tps,#1d4ed8);font-size:12px;padding:2px 16px;border-radius:999px;white-space:nowrap}
.tps-b39{border:1.5px solid var(--tps,#1e40af);border-radius:6px;padding:18px 16px 10px 30px}
.tps-b39::before{content:'';position:absolute;left:6px;top:6px;bottom:6px;width:12px;background:radial-gradient(circle 3px at 6px 9px,#fff 3px,transparent 3.5px),radial-gradient(circle 3px at 6px 27px,#fff 3px,transparent 3.5px),radial-gradient(circle 3px at 6px 45px,#fff 3px,transparent 3.5px),radial-gradient(circle 3px at 6px 63px,#fff 3px,transparent 3.5px),var(--tps,#1e40af);background-size:12px 18px;background-repeat:repeat-y;border-radius:3px}
.tps-b39 .box-label{position:absolute;top:-12px;left:24px;background:var(--tps,#1e40af);color:#fff;font-size:12px;padding:2px 14px;border-radius:3px}
.tps-b40{border:1.2px solid var(--tps,#0ea5e9);border-radius:4px;padding:20px 16px 12px}
.tps-b40::after{content:'';position:absolute;left:14px;right:14px;bottom:-1px;height:5px;background:linear-gradient(90deg,var(--tps,#0ea5e9) 0 30%,rgba(14,165,233,.5) 30% 55%,rgba(14,165,233,.22) 55% 78%,transparent 78%)}
.tps-b40 .box-label{position:absolute;top:-12px;left:14px;background:var(--tps,#0ea5e9);color:#fff;font-size:12px;padding:2px 14px;border-radius:3px}
.tps-b41{border:1.5px solid var(--tps,#64748b);border-radius:16px;padding:20px 20px 12px}
.tps-b41::before,.tps-b41::after{content:'';position:absolute;width:22px;height:22px;border:2px solid var(--tps,#64748b)}
.tps-b41::before{top:6px;left:6px;border-radius:14px 0 0 0;border-right:0;border-bottom:0}
.tps-b41::after{bottom:6px;right:6px;border-radius:0 0 14px 0;border-left:0;border-top:0}
.tps-b41 .box-label{position:absolute;top:-13px;left:50%;transform:translateX(-50%);background:#fff;border:1.5px solid var(--tps,#64748b);color:var(--tps,#64748b);font-size:12px;padding:2px 16px;border-radius:999px;white-space:nowrap}
.tps-b42{border:1.2px solid #cbd5e1;border-radius:10px;padding:20px 16px 10px;background:#fff;box-shadow:0 1px 6px rgba(15,23,42,.08)}
.tps-b42::after{content:'';position:absolute;top:9px;right:12px;width:34px;height:10px;background:radial-gradient(circle 3px at 5px 5px,#ef4444 3px,transparent 3.5px),radial-gradient(circle 3px at 17px 5px,#f59e0b 3px,transparent 3.5px),radial-gradient(circle 3px at 29px 5px,#22c55e 3px,transparent 3.5px);background-repeat:no-repeat}
.tps-b42 .box-label{position:static;display:block;color:#64748b;font-size:12px;margin-bottom:3px}

/* 盒子容器统一作为绝对定位标签的包含块 */
.tps-box{position:relative}

/* ---- 标题预设（第二批 t13~t27，装饰风） ---- */
.tps-t13{border:2px solid var(--tps,#2563eb);border-radius:8px;padding:8px 16px;position:relative;text-align:center;color:#1e293b}
.tps-t13::after{content:'';position:absolute;left:22%;right:22%;bottom:-6px;height:5px;background:radial-gradient(circle 2px at 5px 2.5px,var(--tps,#2563eb) 2px,transparent 2.6px);background-size:10px 5px;background-repeat:repeat-x}
.tps-t14{border:1.5px dashed var(--tps,#dc2626);border-radius:4px;padding:8px 16px 8px 44px;position:relative;color:#1e293b}
.tps-t14::before{content:'★';position:absolute;left:10px;top:50%;transform:translateY(-50%);width:22px;height:22px;background:var(--tps,#dc2626);color:#fff;font-size:12px;display:grid;place-items:center;border-radius:5px}
.tps-t15{background:#fdf8ec;border:1px solid #e7dcc3;border-radius:4px;padding:12px 18px 9px;position:relative;color:#57534e}
.tps-t15::before,.tps-t15::after{content:'';position:absolute;top:-7px;width:56px;height:14px;background:rgba(147,197,253,.55);border-radius:2px}
.tps-t15::before{left:14px;transform:rotate(-3deg)}
.tps-t15::after{right:14px;transform:rotate(2.5deg)}
.tps-t16{background:linear-gradient(#f3ecd8,#ecdfc0);border-left:9px solid #7a9a6d;border-right:9px solid #7a9a6d;border-radius:3px;padding:10px 18px;text-align:center;color:#3f5138}
.tps-t17{background:#fbf6ea;border:2px solid #c9a86a;border-radius:6px;padding:13px 18px 9px;position:relative;text-align:center;color:#6b5637}
.tps-t17::before{content:'';position:absolute;top:-11px;left:50%;transform:translateX(-50%);width:74px;height:17px;background:linear-gradient(#d9bc85,#c9a86a);border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.18)}
.tps-t18{background:linear-gradient(#f5eeda,#efe4c8);border:1px solid #d8c9a3;border-radius:4px;padding:10px 46px;position:relative;text-align:center;color:#5b4a2c}
.tps-t18::before{content:'🧭';position:absolute;left:14px;top:50%;transform:translateY(-50%);font-size:15px}
.tps-t18::after{content:'📚';position:absolute;right:14px;top:50%;transform:translateY(-50%);font-size:15px}
.tps-t19{background:#fdf6e3;border:1px solid #e3d3ac;border-radius:3px;padding:9px 16px 9px 42px;position:relative;color:#4b5563;box-shadow:-5px 5px 0 -1px #dce8f2,-5px 5px 0 0 #b9cfe0}
.tps-t19::before{content:'📎';position:absolute;left:9px;top:50%;transform:translateY(-52%) rotate(-8deg);font-size:16px}
.tps-t20{border-left:10px solid #6b7280;border-right:10px solid #6b7280;background:linear-gradient(90deg,#f4f4f2,#e9ebe7 45%,#e2e7e2);border-radius:2px;padding:10px 22px;text-align:center;color:#374151}
.tps-t21{display:inline-block;font-weight:700;font-size:15px;color:#1e293b;background:linear-gradient(transparent 42%,#fde047 42%,#fde047 88%,transparent 88%);padding:0 8px}
.tps-t22{background:#fceff4;border:1px solid #f0c9d8;border-radius:4px;padding:9px 16px 9px 36px;position:relative;color:#9d3b61}
.tps-t22::before{content:'';position:absolute;left:11px;top:6px;bottom:6px;width:9px;background:radial-gradient(circle 2.5px at 4.5px 5px,#c084fc 2.5px,transparent 3px);background-size:9px 14px;background-repeat:repeat-y}
.tps-t23{display:flex;align-items:center;gap:10px;color:#1e293b}
.tps-t23::before,.tps-t23::after{content:'';flex:1;height:6px}
.tps-t23::before{background:radial-gradient(circle 3px at 3px 3px,var(--tps,#2563eb) 3px,transparent 3.5px) left center/6px 6px no-repeat,linear-gradient(#cbd5e1,#cbd5e1) center/100% 1.5px no-repeat}
.tps-t23::after{background:radial-gradient(circle 3px at calc(100% - 3px) 3px,var(--tps,#2563eb) 3px,transparent 3.5px) right center/6px 6px no-repeat,linear-gradient(#cbd5e1,#cbd5e1) center/100% 1.5px no-repeat}
.tps-t24{display:flex;align-items:center;gap:10px;color:#1e293b}
.tps-t24::before,.tps-t24::after{content:'';flex:1;height:5px;border-top:1.5px solid var(--tps,#0f766e);border-bottom:1.5px solid var(--tps,#0f766e)}
.tps-t25{display:flex;align-items:center;color:#1e293b}
.tps-t25::before{content:'[';font-size:24px;font-weight:300;color:var(--tps,#1d4ed8);margin-right:12px;line-height:1}
.tps-t25::after{content:']';font-size:24px;font-weight:300;color:var(--tps,#1d4ed8);margin-left:12px;line-height:1}
.tps-t26{border-left:9px solid #8a7a5c;border-right:9px solid #8a7a5c;background:linear-gradient(180deg,#f7f3e8 52%,#cfe0d8 52%,#b8d4c6 74%,#9fc4b2);border-radius:3px;padding:10px 20px;text-align:center;color:#4a4232}
.tps-t27{display:flex;align-items:center;justify-content:center;gap:10px;background:linear-gradient(#f5efe0,#e9dfc8);border:1.5px solid #b09a6a;border-radius:6px;padding:7px 26px;color:#6b5637;box-shadow:inset 0 1px 3px rgba(0,0,0,.14)}
.tps-t27::before,.tps-t27::after{content:'◆';font-size:9px;color:#8a744a}

/* ---- 试题：图片约束（修复画布图片过大）与贴签 ---- */
.tps-quiz img{max-width:100%;height:auto}
.tps-quiz .qstem img{max-height:190px;display:block;margin:8px auto;object-fit:contain}
.tps-quiz .qopts img{max-height:80px;max-width:150px}
.tps-quiz .qscore{float:right;font-size:11px;color:#94a3b8;margin-left:8px;padding-top:3px}
.tpl-canvas img{max-width:100%}

/* ---- 分栏段 ---- */
.tpl-seg{margin:2px 0}
.tpl-seg[data-cols="2"]{column-gap:34px;column-rule:1px dashed #dbe5dd}

/* ---- 左侧：页签 / 版本 / 文档大纲 ---- */
.tpl-tabs{display:flex;gap:6px;flex:1}
.tpl-tab{flex:1;padding:5px 0;text-align:center;font-size:12.5px;border:1px solid var(--line);background:#fff;border-radius:7px;cursor:pointer;color:#475569}
.tpl-tab.on{background:var(--primary);color:#fff;border-color:var(--primary)}
.tpl-side #tpl-pane-comps{flex:0 0 auto}
.tpl-side #tpl-pane-outline{flex:1;display:flex;flex-direction:column;min-height:0}
.tpl-ver-row{display:flex;gap:5px;padding:10px 10px 8px}
.tpl-ver{flex:1;padding:4px 0;font-size:11.5px;border:1px solid var(--line);background:#fff;border-radius:6px;cursor:pointer;color:#64748b}
.tpl-ver.on{background:#ecf7f0;border-color:#9cc4ab;color:#1d7a55;font-weight:600}
#tpl-outline{flex:1;overflow-y:auto;min-height:0;padding:2px 6px 10px}
.ol-item{display:flex;align-items:center;gap:6px;padding:5px 7px;border-radius:6px;cursor:pointer;font-size:12px;color:#334155}
.ol-item:hover{background:#f2f7f3}
.ol-item.on{background:#eaf4ee;color:#14532d;font-weight:600}
.ol-item.hid{opacity:.45}
.ol-item i{font-style:normal;flex:0 0 20px;width:20px;height:20px;display:grid;place-items:center;background:var(--primary-w);color:var(--primary);border-radius:5px;font-size:10.5px}
.ol-item .t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ol-item .eye{border:0;background:none;cursor:pointer;font-size:12px;color:#94a3b8;padding:2px 3px}
.ol-item .eye:hover{color:#1d7a55}

/* ---- 打印：模板试题卡片跨页时边框闭合 ---- */
.paper-print .pp-q.tps-quiz{-webkit-box-decoration-break:clone;box-decoration-break:clone;break-inside:avoid;page-break-inside:avoid}
/* 打开“长题跨页”时，打印也允许模板题跨页，避免整页留白 */
.paper-print.allow-split.allow-split .pp-q.tps-quiz{break-inside:auto;page-break-inside:auto}
/* 组卷编辑页套用模板的即时效果 */
.paper-body .sec-item .body .tps-quiz{margin:0}
.paper-body .sec-title.tps-t5,.paper-body .sec-title.tps-t11{color:#fff}

/* ==================== 组卷：文档页面视图 ==================== */
#view-paper .paper-main{overflow:hidden;position:relative;padding:12px 18px 14px}
/* 右侧题目/标题模板面板：悬浮在画布上，不挤占画布宽度（避免选中题目时整页被缩小） */
#view-paper{position:relative}
.paper-props{
  position:absolute;top:0;right:0;bottom:0;width:300px;max-width:86vw;z-index:60;
  overflow-y:auto;background:#fff;border-left:1px solid #e6ece6;padding:14px 16px 28px;
  box-shadow:-10px 0 30px rgba(20,40,30,.14);
  animation:pp-slide-in .16s ease-out;
}
@keyframes pp-slide-in{from{transform:translateX(18px);opacity:.4}to{transform:none;opacity:1}}

.paper-canvas{
  position:relative;flex:1;min-height:0;overflow:auto;
  background:#e9edf0;border-radius:12px;padding:16px 24px 12px;
}
.paper-canvas .paper-body{display:block;padding-bottom:0}
.pv-empty{background:#fff;border-radius:10px;max-width:560px;margin:40px auto;padding:40px 20px}
.pv-measure{position:absolute;left:-99999px;top:0;visibility:hidden;pointer-events:none;font-size:14px;line-height:1.85;color:#273528}

/* 页标签 + A4 纸 */
.page-tab{max-width:794px;margin:12px auto 6px;display:flex;justify-content:space-between;font-size:11px;color:#9aa5ae;padding:0 2px}
.page-tab:first-child{margin-top:0}
.paper-page{
  width:794px;min-height:1123px;margin:0 auto;background:#fff;
  box-shadow:0 3px 16px rgba(30,42,52,.14),0 1px 3px rgba(30,42,52,.08);
  padding:54px 57px;font-size:14px;line-height:1.85;color:#273528;
}

/* 大题标题行（文档式） */
.paper-page .pg-sec{position:relative;padding:10px 0 4px}
.paper-page .pg-sec-line{display:flex;align-items:center;gap:8px}
.paper-page .sec-title{
  border:1px solid transparent;background:transparent;box-shadow:none;
  font-size:16px;font-weight:700;width:auto;flex:0 1 auto;min-width:110px;
  padding:1px 6px;border-radius:5px;color:#223c2e;
}
.paper-page .sec-title:hover{border-color:#d9e6db;background:#f7fbf8}
.paper-page .sec-title:focus{border-color:var(--primary);background:#fff}
.paper-page .pg-sec-note{
  border:1px solid transparent;background:transparent;box-shadow:none;
  font-size:12px;color:#9aa89b;width:auto;flex:0 1 auto;min-width:80px;padding:1px 6px;border-radius:5px;
}
.paper-page .pg-sec-note:hover{border-color:#d9e6db;background:#f7fbf8}
.paper-page .pg-sec-note:focus{border-color:var(--primary);background:#fff}
.paper-page .pg-sec-meta{margin-left:auto;font-size:11px;color:#adb8ac;white-space:nowrap}
.paper-page .pg-sec-hint{font-size:11px;color:#b9c4b8;margin-left:10px;white-space:nowrap}
/* 大题标题：套用模板“标题”组件样式时，由外层容器承载模板皮肤，输入框透明化 */
.paper-page .pg-sec-twrap{flex:0 1 auto;min-width:0;max-width:100%}
.paper-page .pg-sec-twrap .sec-title{
  border:1px dashed transparent;background:transparent;box-shadow:none;
  font:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;
  width:auto;min-width:110px;padding:0 6px;border-radius:4px;
}
.paper-page .pg-sec-twrap .sec-title:hover{border-color:rgba(30,60,40,.25)}
.paper-page .pg-sec-twrap .sec-title:focus{border-color:var(--primary);background:rgba(255,255,255,.85)}
.paper-page .pg-sec-line>button[data-act="del-sec"]{
  color:#c3cdc2;font-size:12px;padding:2px 6px;border-radius:5px;opacity:0;transition:.15s;
}
.paper-page .pg-sec:hover .pg-sec-line>button[data-act="del-sec"]{opacity:1}
.paper-page .pg-sec-line>button[data-act="del-sec"]:hover{color:var(--danger);background:var(--danger-w)}

/* 题目行：绿色题号徽标 + 悬停右侧控件（题间距由工具条数值直接控制，可为负） */
.paper-page .pg-q{position:relative;display:flex;gap:11px;padding:5px 56px 7px 2px;margin-bottom:var(--pv-gap,0px);border-radius:8px;transition:background .12s}
.paper-page .pg-q:hover{background:#f7faf7}
.paper-page .pg-q-badge{
  flex:none;width:22px;height:22px;border-radius:6px;margin-top:3px;
  background:var(--primary);color:#fff;font-size:12px;font-weight:600;
  display:grid;place-items:center;line-height:1;
}
.paper-page .pg-q-body{flex:1;min-width:0}
.paper-page .pg-q-body img{max-width:100%;height:auto}
.paper-page .pg-q-body .tps-quiz{margin:0}
/* 未套用模板时的选项排版（套用模板时由 tps-quiz .qopts 接管） */
.paper-page .pg-q-body .qopts{margin:6px 0 0;display:flex;flex-direction:column;gap:3px}
.paper-page .pg-q-body .qopts.line{flex-direction:row;flex-wrap:wrap;gap:4px 28px}
.paper-page .pg-q-body .qopts img{max-height:110px;max-width:200px;vertical-align:middle;object-fit:contain;margin:3px 4px}
.paper-page .pg-q-side{position:absolute;right:6px;top:8px;z-index:5;flex:none;display:flex;flex-direction:column;align-items:center;gap:4px;opacity:0;transition:opacity .15s}
.paper-page .pg-q:hover .pg-q-side{opacity:1}
.paper-page .pg-q-side .sc{width:44px;padding:2px;text-align:center;font-size:12px;border-color:#dfe7df;background:#fff}
.paper-page .pg-q-side .ops{display:flex;flex-direction:column;gap:2px}
.paper-page .pg-q-side .ops button{
  color:#a9b6aa;padding:2px 7px;border-radius:5px;font-size:12px;background:#fff;border:1px solid #e7ede6;
}
.paper-page .pg-q-side .ops button:hover{background:#eef7f2;color:var(--primary);border-color:#cfe4d6}
.paper-page .pg-q-side .ops button.del:hover{color:var(--danger);background:var(--danger-w);border-color:#eed4d2}

/* 右下角工具条 */
.pv-toolbar{
  position:sticky;bottom:10px;margin:14px 2px 0 auto;width:max-content;z-index:25;
  display:flex;align-items:center;gap:1px;
  background:#fff;border:1px solid #e3eae3;border-radius:10px;
  box-shadow:0 4px 18px rgba(20,40,30,.16);padding:4px 6px;
}
.pv-toolbar .pv-count{font-size:12px;font-weight:600;color:#4f6154;padding:0 8px;white-space:nowrap}
.pv-toolbar .pv-sep{width:1px;height:16px;background:#e5ece5;margin:0 3px}
.pv-toolbar .pv-gap-lab{font-size:12px;color:#7a8a7d}
.pv-toolbar .pv-gap{
  border:1px solid #e0e8e0;background:#fff;color:#3d4f42;font-size:12px;
  border-radius:6px;padding:2px 4px;cursor:pointer;outline:none;width:56px;text-align:center;
}
.pv-toolbar .pv-gap::-webkit-outer-spin-button,.pv-toolbar .pv-gap::-webkit-inner-spin-button{opacity:1}

/* ===== 组卷页：内联编辑工具条 + 右侧单题模板面板 ===== */
.pv-editbar{
  position:sticky;top:0;z-index:30;margin:0 0 8px;width:100%;
  background:#fff;border:1px solid #dfe7df;border-radius:10px;
  box-shadow:0 2px 10px rgba(20,40,30,.08);padding:5px 8px;flex-wrap:wrap;
}
.pv-editbar .sep{width:1px;height:16px;background:#e5ece5;margin:0 4px}
.pv-editbar button{border:none;background:transparent;color:#3d4f42;padding:4px 8px;border-radius:6px;font-size:12.5px;cursor:pointer;line-height:1}
.pv-editbar button:hover{background:#eef7f2;color:var(--primary)}
.pv-editbar button.on{background:#e2f1e9;color:var(--primary)}
.pv-editbar .rte-fs{border:1px solid #e0e8e0;border-radius:6px;padding:2px 4px;font-size:12px;color:#3d4f42;outline:none;background:#fff}
.pv-editbar[hidden]{display:none}
.pv-editbar .rte-fs,.pv-editbar .rte-ff{max-width:132px}
.pv-editbar .tb-lab{font-size:11.5px;color:#93a294;padding:0 3px 0 5px}
.pv-editbar .tb-group{display:inline-flex;align-items:center;gap:1px;padding:0 2px}
.pv-editbar button[data-cmd="justifyLeft"],.pv-editbar button[data-cmd="justifyCenter"],.pv-editbar button[data-cmd="justifyRight"]{min-width:32px;font-weight:600}

/* 组卷工具条：长题跨页开关 */
.pv-split{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:#5b7360;white-space:nowrap;padding:0 4px;cursor:pointer}
.pv-split input{width:14px;height:14px;accent-color:var(--primary);margin:0;cursor:pointer}
.pv-split.on{color:var(--primary);font-weight:600}

/* 长题整页（关闭“长题跨页”时页面会自动加长） */
.paper-page.long-page{outline:1px dashed #cfd9d4;outline-offset:3px}
.page-tab .long-tag{color:#287659;font-weight:600;font-style:normal}


.pp-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.pp-head b{font-size:14px;color:#1f2d24}
.pp-head .pp-qno{font-size:12px;color:#7a8a7d}
.pp-head button{margin-left:auto;border:none;background:transparent;color:#9aa89b;cursor:pointer;font-size:14px}
.pp-head button:hover{color:var(--danger)}
.pp-tip{font-size:11.5px;color:#93a294;line-height:1.6;margin-bottom:10px}
.pp-edit-full{display:block;width:100%;border:1px solid #bfd9c8;background:#f4faf6;color:var(--primary);border-radius:8px;padding:8px 10px;font-size:12.5px;font-weight:600;margin:2px 0 10px;cursor:pointer}
.pp-edit-full:hover{background:#e8f5ed}
.pp-sec-t{font-size:12px;color:#7a8a7d;margin:10px 0 6px;font-weight:600}
.pp-style-list{display:flex;flex-direction:column;gap:6px}
.pp-style{border:1.5px solid #e6ece6;border-radius:8px;padding:8px;cursor:pointer;transition:.15s}
.pp-style:hover{border-color:#cfe4d6}
.pp-style.on{border-color:var(--primary);background:#f4faf6}
.pp-style .nm{display:block;font-size:12px;color:#3d4f42;margin-top:6px}
.pp-style.on .nm{color:var(--primary);font-weight:600}
.pv-qprev{display:block;font-size:12px;color:#273528;line-height:1.6;pointer-events:none}
.pv-qprev .qno{font-weight:700;color:var(--tps,#287659);margin-right:6px}
.pp-skins{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pp-skins .tpl-skin{width:22px;height:22px;border-radius:50%;cursor:pointer;border:2px solid #fff;box-shadow:0 0 0 1px #dbe5db;display:inline-flex;align-items:center;justify-content:center;font-size:11px;color:#fff}
.pp-skins .tpl-skin.on{box-shadow:0 0 0 2px var(--primary)}

/* 组卷页选中题目高亮 + 可编辑态 */
.paper-page .pg-q.sel{background:#f4faf6;outline:2px solid var(--primary);outline-offset:2px;border-radius:8px}
.paper-page .pg-sec.sel{background:#f4faf6;outline:2px solid var(--primary);outline-offset:2px;border-radius:8px}
.paper-page .pg-q-body.rte{outline:none;cursor:text;min-height:22px;border:none;background:transparent;padding:0;box-shadow:none;line-height:inherit}
.paper-page .pg-q-body.rte:focus{box-shadow:none;border:none}
.paper-page .pg-q-body.rte:empty::before{content:'点击输入题目内容…';color:#b9c4b8}
/* 编辑时不要把图片压小（否则点一下图就变小、取消选中又变大） */
.paper-page .pg-q-body img[data-resized]{max-height:none!important;max-width:none!important}
/* 选项字母固定显示，正文单独编辑 */
.paper-page .qopts .qopt{display:flex;align-items:flex-start;gap:2px}
.paper-page .qopts.line .qopt{display:inline-flex}
.paper-page .qopt-key{flex:none;user-select:none;white-space:nowrap}
.paper-page .qopt-text{flex:1;min-width:0}
/* 长题拆页后的续页：和第一段正文左对齐 */
.paper-page .pg-q[data-split="1"]:not([data-qpart="1"]){padding-left:35px}
/* 右侧“标题模板”面板里的预览 */
.pv-secprev{display:block;font-size:12px;line-height:1.6;pointer-events:none}
.pv-secprev .pp-secprev-note{font-style:normal;font-size:11px;color:#7a8a7d;font-weight:400;margin-left:8px}
.paper-page .pg-q-body table,.pv-measure .pg-q-body table{border-collapse:collapse;margin:6px 0}
.paper-page .pg-q-body table td,.pv-measure .pg-q-body table td{border:1px solid #94a3b8;padding:4px 10px;min-width:60px}
.pv-btn{border:none;background:transparent;color:#51645a;padding:5px 8px;border-radius:6px;font-size:13px;line-height:1}
.pv-btn:hover{background:#eef4ef;color:var(--primary)}
.pv-btn.pv-fit{font-size:12px;padding:5px 10px;border:1px solid #e3eae3}
.pv-btn.pv-fit.on{background:var(--primary);border-color:var(--primary);color:#fff}
.pv-zoomval{font-size:12px;min-width:40px;text-align:center;color:#33413a;font-variant-numeric:tabular-nums}

/* 全屏时画布铺满 */
.paper-canvas:fullscreen{border-radius:0;padding:20px 32px 16px}

/* 样式选择器：紧凑示例文本 */
.tps-quiz .qph{font-size:12px;color:#b3bfb3;margin-top:2px}
.tps-box .bx .qscore{float:right;font-size:11px;color:#a8b3a8;margin-left:8px;padding-top:2px}
.tps-box .bx-ph{font-size:11px;color:#b3bfb3}

/* ===== 单题间距弹层 ===== */
#gap-pop{position:fixed;z-index:300;width:190px;background:#fff;border:1px solid #dfe8df;border-radius:10px;box-shadow:0 8px 28px rgba(40,70,50,.16);padding:10px 12px}
#gap-pop .gp-head{font-size:12.5px;font-weight:600;color:#287659;margin-bottom:6px}
#gap-pop .gp-row{display:flex;align-items:center;gap:6px;font-size:12px;color:#5b7360;margin:5px 0}
#gap-pop .gp-row input{width:64px;border:1px solid #e0e8e0;border-radius:6px;padding:2px 6px;font-size:12px;color:#3d4f42;outline:none}
#gap-pop .gp-row i{font-style:normal;color:#9aa89c}
#gap-pop .gp-tip{font-size:11px;color:#a8b3aa;margin-top:5px}

/* ===== 右侧面板：插入元素区 ===== */
.pp-ins-list{display:flex;flex-direction:column;gap:4px}
.pp-ins-row{display:flex;align-items:center;gap:6px}
.pp-ins-row .nm{flex:1;font-size:12.5px;color:#3d4f42}
.pp-ins-row button{border:1px solid #dfe8df;background:#f6faf6;color:#287659;font-size:11.5px;border-radius:6px;padding:2px 9px;cursor:pointer}
.pp-ins-row button:hover{background:#287659;color:#fff}
.pp-fig-btn{width:100%;border:1px dashed #b8c9ba;background:#f6faf6;color:#287659;font-size:12px;border-radius:8px;padding:7px 0;cursor:pointer}
.pp-fig-btn:hover{background:#e8f2ea}

/* ===== 组卷页插入元素块 ===== */
.paper-page{display:flow-root} /* 禁止相邻题目上下外边距折叠，负间距才能真实压缩 */
.paper-page .pg-block{cursor:default}
.paper-page .pg-block .tps-ansarea{min-height:40px;border-radius:6px}
.paper-page .pp-blk-title{font-weight:700}

/* 右侧面板顶部：插入元素常驻区（避免被长样式列表挤到看不见） */
.pp-ins-box{background:#f4faf6;border:1px solid #dfeee4;border-radius:10px;padding:8px 10px 9px;margin:2px 0 10px}
.pp-ins-head{font-size:12px;color:#287659;font-weight:600;margin-bottom:6px;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.pp-ins-head i{font-style:normal;font-weight:400;color:#93a294;font-size:10.5px}
.pp-ins-box .pp-ins-row .nm{color:#3d4f42;font-size:12px}
.pp-ins-box .pp-ins-row button{background:#fff}

/* 压缩组卷页卡片内部上下留白（不影响模板工坊画布） */
.paper-page .pg-q-body .tps-quiz{padding-top:10px;padding-bottom:8px}
.paper-page .pg-q-body .qopts{margin:4px 0 0}
.paper-page .pg-q-body .qopts img{margin:2px 4px}
.pv-measure .pg-q-body .tps-quiz{padding-top:10px;padding-bottom:8px}

/* 非编辑态：题干末尾空段落/空行塌缩，保证每题上下留白一致（编辑态不塌，光标可见） */
.paper-page .pg-q:not(.sel) .pg-q-body p:empty,
.pv-measure .pg-q-body p:empty{margin:0;height:0;line-height:0;font-size:0}
.paper-page .pg-q:not(.sel) .pg-q-body p:has(> br:only-child),
.pv-measure .pg-q-body p:has(> br:only-child){margin:0;height:auto;line-height:0;font-size:0}
.paper-page .pg-q:not(.sel) .pg-q-body p:has(> br:only-child) > br,
.pv-measure .pg-q-body p:has(> br:only-child) > br{display:none}
.paper-page .pg-q:not(.sel) .pg-q-body div:empty,
.pv-measure .pg-q-body div:empty{margin:0;height:0;line-height:0}
.reg-subj-label{margin:2px 0 6px}
.reg-subjects{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}
.reg-subjects label{display:flex;align-items:center;gap:5px;font-size:13px;background:#f3f8f4;border:1px solid #dde7dd;border-radius:8px;padding:5px 10px;cursor:pointer}
.reg-subjects input{margin:0}
.reg-subjects label.on{background:#e7f3ea;border-color:#7fb79a;color:#1f6b4f}
