:root{--ink:#1a1a2e;--ink-2:#3f4655;--muted:#8a94a6;--line:#e8eaf0;--primary:#2563eb;}
/* ══════════════════════════════════════════════════
   题卡本体样式（唯一来源）
   题卡是网站最小积木：这段 CSS 只依赖 .question-card 内部结构，
   不依赖试卷页任何上下文，可原样用于组卷、学案、题卡独立页。
   ══════════════════════════════════════════════════ */

.question-card{
  position:relative;margin:0 0 16px;padding:20px 24px 34px;
  background:#fff;border:1px solid var(--line);border-radius:14px;
  box-shadow:0 1px 2px rgba(16,24,40,.04), 0 4px 14px rgba(16,24,40,.05);
  cursor:pointer;
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.question-card:last-child{margin-bottom:0}
.question-card::before{display:none}
.question-card:hover{
  transform:translateY(-2px);
  box-shadow:0 8px 26px rgba(16,24,40,.11);
  border-color:#dbe3f0;
}

/* 题干 */
.q-header{
  font-size:15.5px;line-height:1.95;color:var(--ink);
  margin:0;cursor:auto;user-select:text;
}
.q-header .q-num{
  display:inline;min-width:0;height:auto;padding:0;margin:0 6px 0 0;
  background:none;color:var(--ink);font-weight:600;font-size:15.5px;
  border-radius:0;box-shadow:none;text-decoration:none;
}
.q-header .q-num:hover{color:var(--primary)}
.q-header .q-text{white-space:pre-wrap}

/* 组卷 / 学案：来源是元信息，放卡脚，不参与题干阅读。
   桌面端与右下角操作栏同一行（左来源 / 右按钮）；窄屏与触屏随按钮排到卡尾。 */
.q-card-foot{
  position:absolute;left:24px;right:250px;bottom:10px;
  display:flex;align-items:center;gap:8px;
  font-size:12px;line-height:18px;color:var(--muted);
  white-space:nowrap;overflow:hidden;
}
.q-card-foot .src{min-width:0;overflow:hidden;text-overflow:ellipsis;}
.q-card-foot .score{color:var(--primary);font-weight:600;flex-shrink:0;}
.q-card-foot .ovr{font-size:11px;background:#ede9fe;color:#6d28d9;
  border-radius:6px;padding:1px 7px;font-weight:500;flex-shrink:0;}
@media (max-width:720px),(hover:none){
  .q-card-foot{position:static;right:auto;margin-top:10px;}
}
@media print{.q-card-foot{display:none!important}}

/* 选项：两栏自适应 */
.q-options{
  margin:10px 0 2px;display:block;
}
.q-options .opt{
  display:flex;align-items:flex-start;gap:6px;
  padding:2px 0;font-size:15px;line-height:1.85;color:var(--ink-2);
  border:0;border-radius:0;background:none;
}
.q-options .opt:hover{background:none}
.q-options .opt .opt-label{
  flex:0 0 auto;width:auto;height:auto;margin:0;padding:0;
  background:none;border-radius:0;color:var(--ink);font-weight:600;
  display:inline;line-height:1.85;
}

/* 题图 */
.q-image{margin:14px 0;text-align:center}
/* 单图：最大宽 11cm、最大高 7.5cm（与 Word/PDF 端 IMG_MAX_* 一致）
 *
 * ⚠ 这里**不能写 width:auto**：img 上的 width/height 属性只是"表现提示"，
 *   一旦被 width:auto 覆盖，图片下载完之前就没有宽度，浏览器无从预留高度 →
 *   懒加载图一到位整页下移（实测第15题下移 191px），用户点「+学案」会点空。
 *   保留 width 提示 + height:auto，浏览器在图片到位前就按属性里的比例占好位。 */
.q-image img{
  max-width:min(65%, calc(300px * var(--ar, 100)));max-height:300px;height:auto;
  object-fit:contain;background:none;border:0;border-radius:0;
}
.q-image-multi{
  margin:14px 0;display:flex;flex-wrap:wrap;justify-content:center;
  align-items:flex-start;gap:18px;
}
/* 并排图：每张最大宽 30%、高 7.5cm */
.q-image-multi img{
  max-width:30%;max-height:300px;height:auto;object-fit:contain;
  background:none;border:0;border-radius:0;
}

/* 子题 */
.q-sub{
  font-size:15px;line-height:1.9;color:var(--ink);margin:2px 0;
  padding:0 0 0 2.1em;text-indent:-2.1em;white-space:pre-wrap;
  border-left:0;
}

/* 长串下划线（填空）／公式连写不会换行，会把窄屏撑破：
   实测 2026 第16题的「___________」让 390px 的手机视口变成 599px，
   整页被缩小、分享面板跑到屏幕外。允许任意断行即可。 */
.q-header .q-text,
.q-sub,
.explain-box,
.q-options .opt{overflow-wrap:anywhere;word-break:break-word}
.q-sub strong{color:var(--ink);font-weight:600;margin-right:4px}
.q-sub .q-options{margin:4px 0 2px;padding-left:0;text-indent:0}
.q-sub .q-image{margin:8px 0}
/* 子项（label 为单字母 a/b/c…）：缩进到所属小问之下 */
.q-sub.q-sub-item{
  padding-left:3.4em;text-indent:-1.4em;margin:0 0 1px;
  color:var(--ink-2);
}

/* 答案按钮 */
/* 整卡点击展开答案，不再提供独立按钮 */
.ans-btn{display:none!important}

/* 教师区 */
.teacher-section{display:none;margin:12px 0 0}
.teacher-section.show{
  display:block;padding:16px 18px 14px;
  background:#fafbfc;border:1px solid var(--line-soft);
  border-left:3px solid var(--primary);border-radius:0 4px 4px 0;
}
.teacher-divider-wrap{display:none}
.teacher-badge{display:none}
/* 组卷 / 学案预览的两个开关分开生效：只勾答案 → 藏详解；只勾解析 → 藏答案 */
.question-card.t-ans-only .explain-box{display:none}
.question-card.t-exp-only .answer-box{display:none}
.answer-box{
  font-size:15px;line-height:1.85;color:var(--ink);font-weight:600;
  margin:0 0 8px;padding:0;background:none;border:0;
  white-space:pre-wrap;
}
.explain-box{
  font-size:14.5px;line-height:1.95;color:var(--ink-2);
  margin:0;padding:0;background:none;border:0;
}
.explain-intro{margin:0 0 6px;white-space:pre-wrap}
.explain-pending{color:#9aa1ab;font-size:13px;font-style:normal}
.explain-verdict{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);color:var(--ink);font-weight:600}
.explain-opt{display:block;margin:2px 0;padding:0;color:var(--ink-2)}
.explain-opt.correct{color:var(--ink);font-weight:500;background:none}
.explain-line{display:block;padding:0;margin:2px 0;white-space:pre-wrap}

/* 元信息与标签 */
.meta-row{
  display:flex;flex-wrap:wrap;gap:6px 18px;
  margin:12px 0 0;padding:10px 0 0;border-top:1px dashed var(--line);
  font-size:12.5px;color:var(--muted);line-height:1.7;
}
.meta-item{display:inline-flex;align-items:center;gap:6px}
.meta-item .label{font-weight:400;color:var(--muted)}
.star-rated{color:#f0a020;font-size:12px;letter-spacing:1px}
.star-unrated{color:#dcdfe4;font-size:12px;letter-spacing:1px}

.tag-section{margin:8px 0 0;display:flex;flex-wrap:wrap;gap:6px 14px}
.tag-row{display:inline-flex;align-items:center;gap:6px}
.tag-label{font-size:12px;color:var(--muted)}
.q-tag{
  display:inline-block;font-size:12px;line-height:1.7;padding:0 6px;
  color:var(--ink-2);background:#fff;border:1px solid var(--line);border-radius:3px;
}
.q-tag.knowledge{color:var(--primary);border-color:#d6e2fb;background:#f7faff}

/* 卡片操作：悬停显现，避免视觉噪音
 *
 * ⚠ 2026-10-23 修「点了没反应」：
 *   ① 按钮淡出要 180ms，而 pointer-events 在鼠标离开卡片的瞬间就变 none ——
 *      这 180ms 里按钮看得见却点不动。现在由 xuean-collect.js 的「点击补投」
 *      兜住（坐标落在按钮矩形内、操作条还看得见，就直接转发给按钮）。
 *   ② 只用 opacity/pointer-events，不用 visibility —— 收藏页/弹窗里
 *      `.q-actions{opacity:1}` 这类覆盖很多，加 visibility 会把它们一起藏掉。
 */
.q-actions{
  position:absolute;right:14px;bottom:9px;display:flex;gap:6px;
  opacity:0;pointer-events:none;
  transition:opacity .18s ease;
}
.question-card:hover .q-actions,
.question-card:focus-within .q-actions{
  opacity:1;pointer-events:auto;
}
.q-actions .act{
  font-size:11.5px;line-height:1;padding:5px 7px;color:var(--muted);
  background:#fff;border:1px solid var(--line);border-radius:3px;
  cursor:pointer;font-family:inherit;
}
.q-actions .act:hover{color:var(--primary);border-color:var(--primary)}
.q-actions .act.fav-active{color:#f0a020;border-color:#f3cf8a}

/* 纠错面板 */
.report-panel{
  background:#f8fafc;border:1px solid var(--line);border-radius:6px;
  padding:12px 14px;margin-top:10px;font-size:13px;
}
.report-panel .report-options{display:flex;flex-wrap:wrap;gap:6px 14px;margin-bottom:8px}
.report-panel textarea{
  width:100%;border:1px solid var(--line);border-radius:4px;
  padding:8px 10px;font-size:13px;resize:vertical;font-family:inherit;
}
.report-panel .report-submit{
  margin-top:8px;padding:5px 16px;border:1px solid var(--primary);
  border-radius:4px;background:var(--primary);color:#fff;cursor:pointer;font-size:13px;
}

@media (max-width:720px){
  .question-card{padding:16px 16px 32px}
  .q-image img{max-width:100%;max-height:220px}
  .q-actions{opacity:1;pointer-events:auto;position:static;margin-top:10px;justify-content:flex-end}
  .q-sub{padding-left:1.6em;text-indent:-1.6em}
}

/* 触屏（平板/手机横屏）：没有 hover，按钮必须常驻可点，
   否则按钮永远 opacity:0 —— 用户以为这题没有「+学案」 */
@media (hover:none){
  .q-actions{
    opacity:1;pointer-events:auto;
    position:static;margin-top:10px;justify-content:flex-end;
  }
}

@media print{
  .question-card{break-inside:avoid;page-break-inside:avoid;padding:10px 0}
  .q-actions,.ans-btn{display:none!important}
  .teacher-section.show{background:none;border-left:0;padding-left:0}
}

/* 题干里的填空横线（填空位置存的是空格/制表符，渲染成下划线空位） */
/* 填空横线：题干与子题都要用，不要限定 .q-text 前缀，
   否则 q-sub 里的填空（sub_questions 列）不会显示横线 */
.fill-blank{
  display:inline-block;height:1.1em;vertical-align:-2px;
  margin:0 3px;
  border-bottom:1.2px solid var(--ink-2);
}

/* 学案页：题图是正文核心内容，允许比试卷页更大。
   多图竖向合成（如变式训练5 的图1/图2/图3）如果不放宽，
   会被 max-height:300px 压到宽不足 200px，字看不清。 */
body.is-xuean .q-image img{max-height:600px;max-width:90%}
