/* daliuren/assets/daliuren.css —— 大六壬排盘页样式 */
/* 主题变量：宣纸墨色两套，取值与 qimen/assets/qimen.css 的 --qm-* 相同（变量名换成 --lr-*）；:root 白天，<html data-theme="dark"> 暗黑。
   断点：≥1010px 左右两栏（同 qimen 页），窄屏上下排、右栏 tab 默认折叠；≤479px 盘面字号收小。
   盘面语义色（天盘、天将、遁干、旬空、干上神 / 支上神底、同支高亮、下贼上、上克下、五合线）两套主题各定一组，取值照 Task 11 原型定稿。
   --lr-st / --lr-st-sub 是版式二「旺衰」开关的主、辅标签色（2026-10-10；白天 --lr-st 由沿用 qimen 的 #c42350 加深为 #b0193f，原值在旬空底上只有 4.39:1） */
:root {
  --lr-bg: #f3efe6; --lr-card: #fbf9f4; --lr-text: #2b2622; --lr-muted: #6f6458; --lr-faint: #74695c;
  --lr-line: #cfc5b2; --lr-grid-frame: #fbf9f4; --lr-center: #f6f2ea; --lr-sub: #4a4239; --lr-split: #e6dfd0;
  --lr-tag-bg: #efe9dc; --lr-input-bg: #ffffff; --lr-input-line: #d9d1c0;
  --lr-god: #6b2a08; --lr-star: #1a5e40; --lr-door: #1a3e6e; --lr-hidden: #535353; --lr-earth: #4b5563; --lr-timege: #c81e1e; --lr-ge-good: #15803d;
  --lr-mark-ring: #fbf9f4; --lr-shadow: rgba(0,0,0,.06);
  --lr-primary: #b3361f; --lr-primary-hover: #9a2d19; --lr-on-primary: #ffffff; --lr-disabled: #b9af9f;
  --lr-accent: #b3361f; --lr-danger: #b91c1c; --lr-sel-bg: #f6e9e2; --lr-locked: #efe9dc; --lr-focus: #b45309;
  --lr-warn-fg: #7c3a06; --lr-warn-bg: #fbf1dc; --lr-warn-line: #e3c27a; --lr-stale-btn: #b45309;
  --lr-st: #b0193f; --lr-st-sub: #655a4f; --lr-halo: #fbf9f4; --lr-head-2: #4a4239;
  --lr-tip-bg: rgba(43, 38, 34, .95); --lr-tip-fg: #fbf9f4; --lr-mask: rgba(0, 0, 0, .45);
  --lr-ububble: #f6e2da; --lr-on-ububble: #2b2622;
  /* 盘面语义色（白天） */
  --lr-tianpan: #9a4a00; --lr-jiang: #1a3e6e; --lr-dungan: #1a5e40; --lr-kong: #b91c1c;
  --lr-gan-bg: #fbefc4; --lr-zhi-bg: #e3f2d3; --lr-hl-bg: #f6e2da;
  --lr-zei: #b3361f; --lr-ke: #1a3e6e; --lr-he: #6f6458;
}
[data-theme="dark"] {
  --lr-bg: #16130f; --lr-card: #211d18; --lr-text: #ece4d6; --lr-muted: #aa9e8f; --lr-faint: #998c7b;
  --lr-line: #4a4238; --lr-grid-frame: #211d18; --lr-center: #1c1915; --lr-sub: #d6cbb9; --lr-split: #3a332a;
  --lr-tag-bg: #2a251f; --lr-input-bg: #16130f; --lr-input-line: #3a332a;
  --lr-god: #f0a46b; --lr-star: #5fd3a0; --lr-door: #7fb0ff; --lr-hidden: #a3a3a3; --lr-earth: #cbd5e1; --lr-timege: #f87171; --lr-ge-good: #4ade80;
  --lr-mark-ring: #211d18; --lr-shadow: rgba(0,0,0,.4);
  --lr-primary: #c2452c; --lr-primary-hover: #ab3a24; --lr-on-primary: #ffffff; --lr-disabled: #4a4238;
  --lr-accent: #e0a34a; --lr-danger: #f87171; --lr-sel-bg: #33291d; --lr-locked: #2a251f; --lr-focus: #e0a34a;
  --lr-warn-fg: #f5d58a; --lr-warn-bg: #33291a; --lr-warn-line: #8a6a1f; --lr-stale-btn: #b45309;
  --lr-st: #f472b6; --lr-st-sub: #aa9e8f; --lr-halo: #211d18; --lr-head-2: #3a332a;
  --lr-tip-bg: rgba(236, 228, 214, .96); --lr-tip-fg: #16130f; --lr-mask: rgba(0, 0, 0, .6);
  --lr-ububble: #43261c; --lr-on-ububble: #f1e6da;
  /* 盘面语义色（暗黑）。Task 14 对比度检查后调整（同色相）：muted #a09382→#aa9e8f、kong 与 zei #f87171→#f87878 略调亮，
     gan-bg #4a3d14→#3f3411、zhi-bg #24391c→#203319 压暗；原值在干上神 / 支上神底上不足 4.5:1 */
  --lr-tianpan: #f0a46b; --lr-jiang: #7fb0ff; --lr-dungan: #5fd3a0; --lr-kong: #f87878;
  --lr-gan-bg: #3f3411; --lr-zhi-bg: #203319; --lr-hl-bg: #43261c;
  --lr-zei: #f87878; --lr-ke: #7fb0ff; --lr-he: #a09382;
  color-scheme: dark;
}
body { margin: 0; font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif; background: var(--lr-bg); color: var(--lr-text); }

/* ===== 两栏（同 qimen 页）：≥1010px 左栏表单·信息·盘面，右栏 4 个 tab（粘在顶部、内容区内滚动）；窄屏上下排、左栏在前 ===== */
.lr-wrap { max-width: 1100px; margin: 0 auto; padding: 16px; display: flex; flex-direction: column; gap: 0 16px; box-sizing: border-box; }
.lr-left, .lr-right { min-width: 0; }
@media (min-width: 1010px) {
  .lr-wrap { flex-direction: row; align-items: flex-start; }
  .lr-left { flex: 0 0 calc(50% - 8px); }
  .lr-right { flex: 1 1 0; position: sticky; top: 12px; display: flex; flex-direction: column; max-height: calc(100vh - 24px); }
  .lr-right .lr-tabs-card { display: flex; flex-direction: column; min-height: 0; }
  .lr-right .lr-tabs-body { min-height: 0; overflow-y: auto; }
}

/* ===== 卡片、按钮、表单 ===== */
.lr-card { background: var(--lr-card); border-radius: 8px; padding: 14px; margin-bottom: 14px; box-shadow: 0 1px 3px var(--lr-shadow); outline: 1px solid var(--lr-input-line); outline-offset: -1px; } /* 细边线用 outline 画在内侧，不改盒子尺寸 */
.lr-card-h { margin: 0 0 8px; font-size: 14px; font-weight: 700; color: var(--lr-sub); }
/* 盘面卡片标题行（2026-10-11）：左「盘面」、右切换按钮（胶囊、细边线，同 .lr-v2-tools 小按钮；文字用 --lr-sub，两套主题对卡片底 ≥4.5） */
.lr-board-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.lr-board-head .lr-card-h { margin: 0; }
.lr-board-style { flex: none; padding: 2px 10px; font-size: 12px; line-height: 1.6; border-radius: 12px; border: 1px solid var(--lr-input-line); background: var(--lr-card); color: var(--lr-sub); font-family: inherit; cursor: pointer; }
.lr-board-style:hover { border-color: var(--lr-accent); color: var(--lr-accent); }
.lr-form-card { position: relative; padding-right: 52px; background-image: url(dlr1.png); background-repeat: no-repeat; background-size: auto; background-position: right;}
.lr-theme-btn { position: absolute; top: 5px; right: 5px; width: 31px; height: 31px; border-radius: 50%; border: 1px solid var(--lr-input-line); background: var(--lr-card); color: var(--lr-text); font-size: 14px; line-height: 1; cursor: pointer; }
.lr-theme-btn:hover { border-color: var(--lr-accent); }
.lr-form { display: flex; flex-direction: column; gap: 10px; }
.lr-modes { display: flex; flex-wrap: wrap; gap: 4px; border-bottom: 1px solid var(--lr-split); }
.lr-mode, .lr-tab { background: none; border: 0; border-bottom: 2px solid transparent; padding: 6px 10px 8px; margin-bottom: -1px; font-size: 14px; font-weight: 600; color: var(--lr-muted); cursor: pointer; font-family: inherit; }
.lr-mode:hover, .lr-tab:hover { color: var(--lr-text); }
.lr-mode[aria-selected="true"], .lr-tab[aria-selected="true"] { color: var(--lr-accent); border-bottom-color: var(--lr-accent); }
.lr-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; font-size: 14px; }
.lr-row[hidden], .lr-sizhu[hidden] { display: none; }
.lr-row + .lr-row, .lr-row + .lr-sizhu { margin-top: 8px; }
.lr-form label, .lr-sizhu legend { font-size: 14px; white-space: nowrap; }
.lr-form select, .lr-form input { padding: 6px 8px; font-size: 14px; font-family: inherit; background: var(--lr-input-bg); color: var(--lr-text); border: 1px solid var(--lr-input-line); border-radius: 4px; }
.lr-form input[type="number"] { width: 7.5em; }
.lr-sizhu { margin: 8px 0 0; padding: 6px 10px 10px; border: 1px solid var(--lr-split); border-radius: 6px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; }
.lr-sizhu legend { padding: 0 4px; color: var(--lr-sub); font-size: 13px; white-space: normal; }
.lr-sz { display: inline-flex; align-items: center; gap: 4px; font-size: 14px; }
.lr-sz select { padding: 5px 4px; }
.lr-note { font-size: 12px; color: var(--lr-muted); }
.lr-opts { display: flex; flex-wrap: wrap; gap: 8px 14px; }
.lr-opt { display: inline-flex; align-items: center; gap: 6px; }
.lr-opt[hidden] { display: none; }
.lr-opt > span, .lr-opt > label { font-size: 13px; color: var(--lr-sub); }
.lr-actions { display: flex; }
.lr-btn { padding: 7px 22px; border: 0; border-radius: 6px; background: var(--lr-primary); color: var(--lr-on-primary); font-size: 14px; font-family: inherit; cursor: pointer; }
.lr-btn:hover:not(:disabled) { background: var(--lr-primary-hover); }
.lr-btn:disabled { background: var(--lr-disabled); cursor: not-allowed; }
.lr-btn-sm { flex: none; padding: 3px 9px; border: 1px solid var(--lr-accent); border-radius: 5px; background: var(--lr-card); color: var(--lr-accent); font-size: 12px; font-family: inherit; cursor: pointer; }
.lr-error { color: var(--lr-danger); font-size: 14px; }
.lr-error:not(:empty) { margin-top: 8px; }
.lr-stale { margin-top: 8px; padding: 6px 10px; font-size: 13px; line-height: 1.5; color: var(--lr-warn-fg); background: var(--lr-warn-bg); border: 1px solid var(--lr-warn-line); border-radius: 6px; }
.lr-stale[hidden] { display: none; }
.lr-btn.lr-btn-stale { background: var(--lr-stale-btn); animation: lr-stale-pulse 1.6s ease-in-out infinite; }
.lr-btn.lr-btn-stale:hover:not(:disabled) { background: var(--lr-stale-btn); } /* 悬停也保持「有改动」的提示色 */
@keyframes lr-stale-pulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(180,83,9,.5); } 60% { box-shadow: 0 0 0 6px rgba(180,83,9,0); } }
.lr-mode:focus-visible, .lr-tab:focus-visible, .lr-btn:focus-visible, .lr-btn-sm:focus-visible, .lr-theme-btn:focus-visible,
.lr-tabs-fold:focus-visible, .lr-v2-tools button:focus-visible, .lr-board-style:focus-visible, .lr-form select:focus-visible, .lr-form input:focus-visible, .lr-ss-name:focus-visible { outline: 2px solid var(--lr-focus); outline-offset: 1px; }

/* ===== 起课信息 ===== */
.lr-info-list { display: grid; grid-template-columns: auto 1fr; gap: 3px 12px; margin: 0; font-size: 13px; line-height: 1.6; }
.lr-info-list dt { color: var(--lr-muted); white-space: nowrap; }
.lr-info-list dd { margin: 0; color: var(--lr-text); word-break: break-word; }

/* ===== 盘面卡片（盘面风格由标题右边的 #lr-board-style 按钮轮换，默认十二宫方盘） ===== */
.lr-empty { margin: 0; font-size: 13px; color: var(--lr-muted); }   /* 没排过盘时盘面、起课信息、详情、右栏资料 tab 的空状态提示 */
.lr-detail { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--lr-split); }

/* ===== 右栏 tab：<1010px 默认折叠只露 tab，点 tab 展开、▲▼ 收起 ===== */
.lr-tabs-bar { display: flex; align-items: center; justify-content: space-between; gap: 8px; border-bottom: 1px solid var(--lr-split); margin: -4px 0 0; }
.lr-tabs { display: flex; flex-wrap: wrap; gap: 4px; }
.lr-tabs-fold { flex: none; background: none; border: 0; padding: 4px 6px; cursor: pointer; }
.lr-fold-arrow { font-size: 11px; color: var(--lr-faint); }
.lr-tabs-body { padding-top: 10px; }
.lr-panel[hidden] { display: none; }
.lr-tabs-card.lr-folded .lr-tabs-body { display: none; }
.lr-tabs-card.lr-folded .lr-tabs-bar { border-bottom-color: transparent; }
@media (max-width: 1009px) { .lr-tabs-card.lr-folded { padding-top: 10px; padding-bottom: 6px; } }

/* 右栏内容：课体毕法、神煞、资料（全部是数据，脚本 textContent 渲染） */
.lr-panel { font-size: 14px; line-height: 1.75; }
.lr-panel h3 { margin: 12px 0 4px; font-size: 14px; color: var(--lr-sub); }
.lr-panel h3:first-child { margin-top: 0; }
.lr-panel p { margin: 4px 0; }
.lr-panel ul, .lr-panel ol { margin: 4px 0; padding-left: 20px; }
.lr-panel details { margin: 6px 0; padding: 4px 10px; border-radius: 6px; background: var(--lr-center); outline: 1px solid var(--lr-split); outline-offset: -1px; }
.lr-panel summary { cursor: pointer; font-size: 13px; font-weight: 600; color: var(--lr-accent); }
.lr-panel summary:focus-visible { outline: 2px solid var(--lr-focus); }
.lr-panel .lr-pre { white-space: pre-wrap; word-break: break-word; }
.lr-kt-title { font-size: 16px; font-weight: 700; margin: 0 0 6px; }
.lr-kt-list { display: flex; flex-wrap: wrap; gap: 4px 6px; list-style: none; padding: 0 !important; }
.lr-kt-list li { padding: 0 8px; border-radius: 10px; background: var(--lr-tag-bg); font-size: 13px; }
.lr-kt-list li.lr-off { color: var(--lr-muted); text-decoration: line-through; }
.lr-kt-list li .lr-why { text-decoration: none; display: inline-block; margin-left: 2px; font-size: 12px; }
.lr-bf-list li { margin: 2px 0; }
.lr-bf-why { color: var(--lr-muted); font-size: 13px; }
.lr-ss-group { display: flex; flex-wrap: wrap; gap: 4px 6px; list-style: none; padding: 0 !important; margin: 4px 0 !important; }
.lr-ss-name { padding: 0 8px; border: 1px solid var(--lr-input-line); border-radius: 10px; background: var(--lr-card); color: var(--lr-text); font-size: 13px; line-height: 1.7; font-family: inherit; cursor: pointer; }
.lr-ss-name[aria-expanded="true"] { border-color: var(--lr-accent); background: var(--lr-sel-bg); color: var(--lr-accent); }
.lr-ss-name .lr-ss-zhi { color: var(--lr-tianpan); }
.lr-ss-name.lr-ss-noinfo { cursor: default; border-color: transparent; background: none; padding: 0 2px; }
.lr-ss-none { color: var(--lr-muted); font-size: 12px; }
/* 释义就地展开：整行 li 紧跟在那一项后面（flex 换到下一行），左侧细竖线、浅底、小一号字；可同时展开多项 */
.lr-ss-row { flex: 0 0 100%; }
.lr-ss-row[hidden] { display: none; }
.lr-ss-detail { margin: 2px 0 4px; padding: 6px 10px; border-left: 2px solid var(--lr-line); background: var(--lr-tag-bg); border-radius: 0 6px 6px 0;
                font-size: 13px; line-height: 1.7; color: var(--lr-text); }
.lr-ss-fz { margin-top: 6px; padding-top: 6px; border-top: 1px dashed var(--lr-line); }
.lr-ss-fz[hidden] { display: none; }
.lr-ss-more { margin-top: 4px; padding: 0; border: 0; background: none; color: var(--lr-accent); font-size: 12px; font-family: inherit; cursor: pointer; }
.lr-ss-more:focus-visible { outline: 2px solid var(--lr-focus); outline-offset: 1px; }
.lr-kj-k { font-weight: 700; }
.lr-kj-item { margin: 2px 0; }
.lr-keli { margin: 8px 0; padding-top: 8px; border-top: 1px solid var(--lr-split); }
.lr-keli:first-of-type { border-top: 0; padding-top: 0; }
.lr-keli-ws { font-weight: 700; }
.lr-keli-fk { color: var(--lr-muted); font-size: 12px; }

/* 排盘历史 */
.lr-h-count { font-weight: normal; color: var(--lr-faint); }
.lr-h-note { margin: 0 0 6px; font-size: 12px; color: var(--lr-faint); }
.lr-h-list { list-style: none; margin: 0; padding: 0 !important; }
.lr-h-item { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 6px 0; border-top: 1px solid var(--lr-split); font-size: 13px; }
.lr-h-item:first-child { border-top: 0; }
.lr-h-main { display: flex; align-items: center; gap: 8px; min-width: 0; }
.lr-h-no { flex: none; min-width: 20px; height: 20px; padding: 0 4px; box-sizing: border-box; border-radius: 10px; background: var(--lr-tag-bg); color: var(--lr-sub); font-size: 11px; line-height: 20px; text-align: center; font-weight: 600; }
.lr-h-text { color: var(--lr-sub); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lr-h-ops { flex: none; display: flex; gap: 6px; }
.lr-h-del { border-color: var(--lr-danger); color: var(--lr-danger); }
.lr-h-empty { font-size: 13px; color: var(--lr-faint); padding: 4px 0; }

@media (max-width: 640px) {
  .lr-wrap { padding: 8px; }
  .lr-card { padding: 10px; }
  .lr-form-card { padding-right: 44px; }
  .lr-btn { flex: 1; padding: 9px 16px; }
  .lr-row input[type="datetime-local"] { flex: 1; min-width: 0; }
}

/* ===== 以下从原型 _proto/proto.css「公用」一段起原样搬来：盘面公用件、三个版式、四课三传块、气泡 ===== */
/* ===== 公用：盘头信息、地支、图例、取传行、详情、气泡 ===== */
.lr-info { font-size: 13px; line-height: 1.75; color: var(--lr-sub); margin-bottom: 8px; }
.lr-info b { color: var(--lr-text); font-weight: 600; }
.lr-info .lr-info-kt { color: var(--lr-text); }
.lr-z { border-radius: 4px; cursor: pointer; }
.lr-z:focus { outline: none; }
.lr-z:focus-visible { outline: 2px solid var(--lr-focus); outline-offset: 0; }
.lr-gan { background: var(--lr-gan-bg); }
.lr-zhi { background: var(--lr-zhi-bg); }
.lr-z.lr-hl { background: var(--lr-hl-bg); box-shadow: inset 0 0 0 1px var(--lr-accent); }
.lr-kong-cell { box-shadow: inset 0 0 0 999px color-mix(in srgb, var(--lr-kong) 12%, transparent); }
.lr-t { color: var(--lr-tianpan); }
.lr-j { color: var(--lr-jiang); font-size: 14px; }
.lr-dg { color: var(--lr-dungan); font-size: 14px; }
.lr-km { color: var(--lr-kong); }
.lr-lq { color: var(--lr-sub); }
.lr-rel { font-size: 10px; line-height: 1.3; white-space: nowrap; color: var(--lr-muted); }
.lr-rel-zei { color: var(--lr-zei); font-weight: 600; }
.lr-rel-ke { color: var(--lr-ke); font-weight: 600; }
.lr-legend { font-size: 12px; line-height: 1.6; color: var(--lr-muted); display: flex; flex-wrap: wrap; gap: 2px 12px; margin-top: 8px; }
.lr-sw { display: inline-block; width: 13px; height: 13px; vertical-align: -2px; border-radius: 3px; margin-right: 3px; outline: 1px solid var(--lr-line); outline-offset: -1px; }
.lr-sw-gan { background: var(--lr-gan-bg); } .lr-sw-zhi { background: var(--lr-zhi-bg); }
.lr-sw-kong { background: var(--lr-card); box-shadow: inset 0 0 0 999px color-mix(in srgb, var(--lr-kong) 12%, transparent); }
.lr-qc { font-size: 13px; line-height: 1.7; margin-top: 8px; color: var(--lr-sub); }
.lr-qc b { color: var(--lr-text); }
.lr-qc ol { margin: 2px 0 0; padding-left: 22px; }
.lr-hint { font-size: 13px; color: var(--lr-muted); margin: 0; }
.lr-detail h3 { font-size: 15px; margin: 0 0 6px; }
.lr-detail h3 span { font-weight: normal; font-size: 13px; color: var(--lr-muted); margin-left: 6px; }
.lr-detail dl { margin: 0; }
.lr-detail dt { font-size: 12px; color: var(--lr-muted); margin-top: 8px; }
.lr-detail dd { margin: 2px 0 0; font-size: 14px; line-height: 1.75; white-space: pre-wrap; word-break: break-word; }
.lr-detail dd b { color: var(--lr-text); }
.lr-detail details { margin-top: 8px; }
.lr-detail summary { cursor: pointer; font-size: 13px; color: var(--lr-accent); }
.lr-detail summary:focus-visible { outline: 2px solid var(--lr-focus); }
.lr-tip { position: fixed; z-index: 1000; max-width: min(260px, calc(100vw - 8px)); box-sizing: border-box; padding: 5px 9px; border-radius: 6px;
          background: var(--lr-tip-bg); color: var(--lr-tip-fg); font-size: 12px; line-height: 1.5; text-align: left;
          box-shadow: 0 4px 12px rgba(0, 0, 0, .18); pointer-events: none; word-break: break-all; }
.lr-tip[hidden] { display: none; }
.lr-tip::after { content: ''; position: absolute; left: var(--lr-tip-ax, 50%); top: 100%; margin-left: -5px; border: 5px solid transparent; border-top-color: var(--lr-tip-bg); }
.lr-tip.lr-tip-below::after { top: auto; bottom: 100%; border-top-color: transparent; border-bottom-color: var(--lr-tip-bg); }
[data-theme="dark"] .lr-tip { box-shadow: 0 4px 12px rgba(0, 0, 0, .5); }
.lr-sel { outline: 2px solid var(--lr-accent); outline-offset: -2px; }
[data-tip] { cursor: help; }

/* ===== 版式一：横排文字盘（17 列：天地盘环 6 · 竖线 · 四课 4 · 竖线 · 三传 5） ===== */
.lr-v1-scroll { overflow-x: auto; }
.lr-v1 { display: grid; grid-template-columns: repeat(6, 24px) 11px repeat(4, 24px) 11px 34px repeat(4, 24px); grid-template-rows: repeat(6, auto);
         justify-content: safe center; align-items: center; font-size: 18px; line-height: 1.6; padding: 4px 0; }
.lr-v1-c { display: block; text-align: center; width: 24px; justify-self: center; }
.lr-v1 .lr-v1-lq { width: auto; font-size: 14px; white-space: nowrap; }
.lr-v1-k { font-size: 14px; }
.lr-v1 [data-gong] { cursor: pointer; }
.lr-v1-sep { align-self: stretch; justify-self: center; width: 1px; background: var(--lr-split); }
.lr-v1-h { font-size: 12px; color: var(--lr-muted); text-align: center; letter-spacing: 4px; }
.lr-v1-sub { font-size: 11px; line-height: 1.4; color: var(--lr-muted); text-align: center; white-space: nowrap; }
.lr-v1-hole { display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: 12px; line-height: 1.5; color: var(--lr-muted);
              align-self: stretch; margin: 4px; border-radius: 6px; background: var(--lr-center); }
.lr-v1-rel { writing-mode: vertical-rl; justify-self: center; align-self: start; font-size: 11px; line-height: 1.15; padding-top: 2px; }
@media (max-width: 479px) {
  .lr-v1 { grid-template-columns: repeat(6, 22px) 7px repeat(4, 22px) 7px 30px repeat(4, 22px); font-size: 17px; }
  .lr-v1-c { width: 22px; }
  .lr-v1 .lr-v1-lq { font-size: 13px; }
}

/* ===== 版式二：十二宫方盘（关系线在网格下层，字带底色描边，线不压字） ===== */
.lr-v2-tools { display: flex; justify-content: flex-end; gap: 4px; margin: -2px 0 6px; }
.lr-v2-tools button { padding: 2px 9px; font-size: 12px; line-height: 1.6; border-radius: 12px; border: 1px solid var(--lr-input-line); background: var(--lr-card); color: var(--lr-muted); cursor: pointer; }
.lr-v2-tools button[aria-pressed="true"] { border-color: var(--lr-accent); background: var(--lr-sel-bg); color: var(--lr-accent); }
.lr-v2 { position: relative; }
.lr-v2-svg { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: visible; z-index: 0; }
.lr-v2-grid { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: minmax(96px, auto);
              border-top: 1px solid var(--lr-line); border-left: 1px solid var(--lr-line); }
.lr-v2-cell, .lr-v2-mid { border-right: 1px solid var(--lr-line); border-bottom: 1px solid var(--lr-line); }
.lr-v2-cell { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 14px 3px 4px; min-width: 0; cursor: pointer; }
/* 描边：线从字下穿过时不压字 */
.lr-v2-grid .lr-z, .lr-v2-grid .lr-j, .lr-v2-grid .lr-dg, .lr-v2-ss, .lr-v2-cc, .lr-v2-st, .lr-v2-mid .lr-rel, .lr-v2-mid .lr-lq, .lr-v2-mid .lr-cc-no, .lr-v2-mid .lr-km, .lr-v2-mid .lr-sk-dn {
  text-shadow: 0 0 2px var(--lr-card), 0 0 2px var(--lr-card), 0 0 3px var(--lr-card); }
.lr-v2-t { font-size: 24px; line-height: 1.2; padding: 0 3px; }
.lr-v2-di { position: absolute; top: 2px; right: 3px; font-size: 11px; line-height: 1.3; color: var(--lr-muted); padding: 0 2px; }
/* 对比度：muted 在旬空底（白天 4.47）、干上神底 / 支上神底（暗黑 3.55 / 4.17）上不够 4.5，这几处地盘角标与神煞改用 sub 色 */
.lr-kong-cell .lr-v2-di, .lr-kong-cell .lr-v2-ss, .lr-v2-di.lr-gan, .lr-v2-di.lr-zhi { color: var(--lr-sub); }
.lr-v2-cc { position: absolute; top: 2px; left: 3px; font-size: 11px; line-height: 1.3; color: var(--lr-accent); font-weight: 600; }
.lr-v2-j { font-size: 12px; line-height: 1.4; }
/* 旺衰开关（用户 2026-10-10 定）：天盘支、天将各包一层 flex 外壳（里面的字仍是块级 flex 项，高度与不包时相同），标签绝对定位浮在字右侧，不改格子尺寸。
   主标签 = 月令旺衰（主线，--lr-st 粗体），辅标签 = 十二长生（补充，--lr-st-sub 小一号）；两者都比所标的字小。天盘支旁上下叠放，天将旁横排 */
.lr-v2-tw, .lr-v2-jw { position: relative; display: flex; }
.lr-v2-st { display: none; position: absolute; left: 100%; top: 50%; transform: translateY(-50%); z-index: 2; line-height: 1; white-space: nowrap; }
.lr-v2-show-st .lr-v2-st { display: flex; }
.lr-v2-tw .lr-v2-st { flex-direction: column; align-items: flex-start; gap: 1px; }
.lr-v2-jw .lr-v2-st { flex-direction: row; align-items: baseline; gap: 1px; margin-left: 1px; }
.lr-v2-st-m { font-size: 12px; font-weight: 700; color: var(--lr-st); }
.lr-v2-jw .lr-v2-st-m { font-size: 11px; }
.lr-v2-st-s { font-size: 10px; color: var(--lr-st-sub); }
.lr-v2-st:focus { outline: none; }
.lr-v2-st:focus-visible { outline: 2px solid var(--lr-focus); outline-offset: 0; }
.lr-v2-foot { align-self: stretch; display: flex; justify-content: space-between; align-items: flex-end; gap: 2px; margin-top: 2px; min-height: 26px; }
.lr-v2-dg { font-size: 13px; line-height: 1.3; padding: 0 2px; }
.lr-v2-ss { display: flex; flex-direction: column; align-items: flex-end; font-size: 10px; line-height: 1.3; color: var(--lr-muted); text-align: right; white-space: nowrap; }
.lr-v2-mid { grid-row: 2 / 4; grid-column: 2 / 4; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 8px 4px; min-width: 0; }
.lr-v2-key { display: inline-block; width: 18px; height: 0; vertical-align: middle; margin-right: 4px; border-top: 2px solid; }
.lr-v2-key.lr-v2-k-zei { border-color: var(--lr-zei); } .lr-v2-key.lr-v2-k-ke { border-color: var(--lr-ke); }
.lr-v2-key.lr-v2-k-cc { border-color: var(--lr-accent); } .lr-v2-key.lr-v2-k-he { border-top: 2px dashed var(--lr-he); }
.lr-v2-l { fill: none; stroke-width: 2; stroke-linecap: round; }
.lr-v2-l-zei { stroke: var(--lr-zei); } .lr-v2-l-ke { stroke: var(--lr-ke); }
.lr-v2-l-cc { stroke: var(--lr-accent); opacity: .8; }
.lr-v2-l-he { stroke: var(--lr-he); stroke-width: 1.5; stroke-dasharray: 4 3; }
.lr-v2-ah-zei { fill: var(--lr-zei); } .lr-v2-ah-ke { fill: var(--lr-ke); } .lr-v2-ah-cc { fill: var(--lr-accent); }
@media (max-width: 479px) {
  .lr-v2-grid { grid-auto-rows: minmax(84px, auto); }
  .lr-v2-t { font-size: 18px; }
  .lr-v2-j { font-size: 11px; }
  .lr-v2-dg { font-size: 12px; }
  .lr-v2-cell { padding: 13px 2px 3px; }
  .lr-v2-st-m { font-size: 11px; }
  .lr-v2-jw .lr-v2-st-m { font-size: 10px; }
  .lr-v2-st-s { font-size: 9px; }
}

/* ===== 四课、三传块（版式二、三共用） ===== */
.lr-sk { display: flex; justify-content: center; gap: 4px; }
.lr-sk-col { display: flex; flex-direction: column; align-items: center; min-width: 34px; }
.lr-sk-no { font-size: 11px; line-height: 1.4; color: var(--lr-muted); }
.lr-sk-j { font-size: 13px; line-height: 1.4; }
.lr-sk-up, .lr-sk-dn { font-size: 19px; line-height: 1.25; padding: 0 3px; }
.lr-sk-gap { height: 14px; }
.lr-sk .lr-rel { margin-top: 2px; }
.lr-cc { display: flex; flex-direction: column; gap: 1px; }
.lr-cc-row { display: grid; grid-template-columns: 1.3em 2.4em 1.2em 1.6em 2.6em 1.8em; align-items: center; column-gap: 3px; font-size: 14px; line-height: 1.6; }
.lr-cc-no { color: var(--lr-muted); font-size: 12px; }
.lr-cc-z { font-size: 18px; text-align: center; padding: 0 2px; }
.lr-cc-dg { text-align: center; }
.lr-cc-k { font-size: 13px; letter-spacing: 1px; }

/* ===== 版式三：圆形式盘 + 推演卡 ===== */
.lr-v3-disc { max-width: 460px; margin: 0 auto; }
.lr-v3-svg { display: block; width: 100%; height: auto; overflow: visible; }
.lr-v3-svg text { text-anchor: middle; dominant-baseline: central; }
.lr-v3-wedge { fill: transparent; cursor: pointer; }
.lr-v3-wedge:hover { fill: color-mix(in srgb, var(--lr-accent) 6%, transparent); }
.lr-v3-kong { fill: var(--lr-kong); fill-opacity: .12; }
.lr-v3-kong:hover { fill: var(--lr-kong); fill-opacity: .18; }
.lr-v3-wedge.lr-sel { outline: none; stroke: var(--lr-accent); stroke-width: 2; }
.lr-v3-ring { fill: none; stroke: var(--lr-split); stroke-width: 1; }
.lr-v3-ring-b { stroke: var(--lr-line); }
.lr-v3-spoke { stroke: var(--lr-split); stroke-width: 1; }
.lr-v3-z { cursor: pointer; outline: none; }
.lr-v3-z.lr-hl, .lr-v3-z.lr-gan, .lr-v3-z.lr-zhi { background: none; box-shadow: none; }
.lr-v3-bg { fill: transparent; }
.lr-v3-z.lr-gan .lr-v3-bg { fill: var(--lr-gan-bg); }
.lr-v3-z.lr-zhi .lr-v3-bg { fill: var(--lr-zhi-bg); }
.lr-v3-z.lr-hl .lr-v3-bg { fill: var(--lr-hl-bg); stroke: var(--lr-accent); stroke-width: 1; }
.lr-v3-z:focus-visible .lr-v3-bg { stroke: var(--lr-focus); stroke-width: 1.5; }
.lr-v3-di .lr-v3-tx { fill: var(--lr-sub); }
.lr-v3-t .lr-v3-tx { fill: var(--lr-tianpan); font-weight: 600; }
.lr-v3-dg { fill: var(--lr-dungan); }
.lr-v3-cc { fill: var(--lr-accent); font-weight: 600; }
.lr-v3-j { fill: var(--lr-jiang); }
.lr-v3-gui { font-weight: 700; }
.lr-v3-ctr { fill: var(--lr-text); font-weight: 600; }
.lr-v3-ctr2 { fill: var(--lr-muted); }
.lr-v3-arc { fill: none; stroke: var(--lr-muted); stroke-width: 1; }
.lr-v3-ah { fill: var(--lr-muted); }
.lr-v3-svg .lr-v3-arclbl { fill: var(--lr-muted); dominant-baseline: auto; }
.lr-v3-row { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px 28px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--lr-split); }
.lr-v3-box { display: flex; flex-direction: column; align-items: center; }
.lr-v3-h { font-size: 12px; color: var(--lr-muted); letter-spacing: 4px; margin-bottom: 2px; }
.lr-v3-card { margin-top: 12px; padding: 10px 12px; border-radius: 8px; background: var(--lr-center); outline: 1px solid var(--lr-split); outline-offset: -1px; }
.lr-v3-card-h { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; font-size: 13px; color: var(--lr-muted); margin-bottom: 6px; }
.lr-v3-card-h b { font-size: 15px; color: var(--lr-text); }
.lr-v3-steps { list-style: none; margin: 0; padding: 0; font-size: 14px; line-height: 1.6; }
.lr-v3-steps li { display: flex; gap: 8px; align-items: flex-start; padding: 2px 0; }
.lr-v3-dot { flex: 0 0 auto; width: 18px; height: 18px; margin-top: 2px; border-radius: 50%; background: var(--lr-tag-bg); color: var(--lr-sub); outline: 1px solid var(--lr-line); outline-offset: -1px;
             font-size: 11px; line-height: 18px; text-align: center; }
.lr-v3-steps li:last-child .lr-v3-dot { background: var(--lr-primary); color: var(--lr-on-primary); outline: none; }
.lr-v3-sh { margin-top: 8px; border-collapse: collapse; font-size: 14px; }
.lr-v3-sh caption { text-align: left; font-size: 12px; color: var(--lr-muted); padding-bottom: 2px; }
.lr-v3-sh th, .lr-v3-sh td { padding: 3px 14px; text-align: center; border-bottom: 1px solid var(--lr-split); }
.lr-v3-sh th { font-weight: normal; font-size: 12px; color: var(--lr-muted); }
.lr-v3-sh-max td { font-weight: 700; }
.lr-v3-none { margin: 0; font-size: 14px; line-height: 1.6; color: var(--lr-sub); }

/* 减少动态效果：去掉所有过渡与动画 */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* ===== B 期：AI 解盘折叠卡片（右栏顶部，默认折叠、不分屏宽、不记本机；行为在 daliuren-ai.js） =====
   新变量：--lr-ai-bar 左竖条、--lr-ai-head-hover 标题栏悬停底、--lr-ai-st-<态>-bg / -fg 状态胶囊（文字 + 颜色双提示；idle、login、down 共用灰）。
   胶囊对比度（WCAG 估算，Task 5 正式检查）：白天 灰 7.86、绿 6.52、朱砂 6.06、琥珀 7.08；暗黑 灰 7.77、绿 7.78、朱砂 6.37、琥珀 8.31 */
:root {
  --lr-ai-bar: #b3361f; --lr-ai-head-hover: #f4ede1;
  --lr-ai-st-gray-bg: #ebe5d9; --lr-ai-st-gray-fg: #4a4239;
  --lr-ai-st-ready-bg: #dff0e5; --lr-ai-st-ready-fg: #1a5e40;
  --lr-ai-st-chat-bg: #b3361f; --lr-ai-st-chat-fg: #ffffff;
  --lr-ai-st-stale-bg: #fbe8c4; --lr-ai-st-stale-fg: #7c3a06;
}
[data-theme="dark"] {
  --lr-ai-bar: #e0a34a; --lr-ai-head-hover: #2a251f;
  --lr-ai-st-gray-bg: #3a332a; --lr-ai-st-gray-fg: #d6cbb9;
  --lr-ai-st-ready-bg: #1d3a2c; --lr-ai-st-ready-fg: #7ee0b0;
  --lr-ai-st-chat-bg: #a83a24; --lr-ai-st-chat-fg: #ffffff;
  --lr-ai-st-stale-bg: #45351a; --lr-ai-st-stale-fg: #f5d58a;
}
.lr-ai { border-left: 4px solid var(--lr-ai-bar); padding: 0; overflow: hidden; }
.lr-ai-head { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 48px; padding: 8px 14px; border: 0; background: none; color: var(--lr-text);
              font-family: inherit; text-align: left; cursor: pointer; box-shadow: 0 2px 0 var(--lr-split); } /* 折叠时下沿一道浅阴影，像一张可以掀开的笺 */
.lr-ai-head[aria-expanded="true"] { box-shadow: none; border-bottom: 1px solid var(--lr-split); }
.lr-ai-head:hover { background: var(--lr-ai-head-hover); }
.lr-ai-head:focus-visible { outline: 2px solid var(--lr-focus); outline-offset: -2px; }
.lr-ai-mark { flex: none; color: var(--lr-ai-bar); font-size: 16px; }
.lr-ai-titles { flex: 1 1 auto; min-width: 0; display: flex; align-items: baseline; gap: 8px; }
.lr-ai-title { flex: none; font-size: 16px; font-weight: 700; }
.lr-ai-sub { min-width: 0; font-size: 12px; color: var(--lr-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lr-ai-status { flex: none; font-size: 12px; line-height: 1.6; padding: 1px 8px; border-radius: 10px; white-space: nowrap; background: var(--lr-ai-st-gray-bg); color: var(--lr-ai-st-gray-fg); }
#lr-ai[data-state="ready"] .lr-ai-status { background: var(--lr-ai-st-ready-bg); color: var(--lr-ai-st-ready-fg); }
#lr-ai[data-state="chat"] .lr-ai-status { background: var(--lr-ai-st-chat-bg); color: var(--lr-ai-st-chat-fg); }
#lr-ai[data-state="stale"] .lr-ai-status { background: var(--lr-ai-st-stale-bg); color: var(--lr-ai-st-stale-fg); }
.lr-ai-arrow { flex: none; font-size: 11px; color: var(--lr-faint); transition: transform .22s; }
.lr-ai-head[aria-expanded="true"] .lr-ai-arrow { transform: rotate(180deg); }
/* 折叠动画：JS 展开时先去掉 hidden、下一帧加 .lr-ai-shown；收起时先去掉 .lr-ai-shown、过渡结束再设 hidden */
.lr-ai-body { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .22s ease; }
.lr-ai-body.lr-ai-shown { grid-template-rows: 1fr; }
.lr-ai-body[hidden] { display: none; }
.lr-ai-inner { overflow: hidden; min-height: 0; padding: 0 14px 14px; }
.lr-ai-note { margin: 12px 0 0; font-size: 14px; line-height: 1.7; color: var(--lr-sub); }
.lr-ai-note .lr-btn { display: inline-block; margin-left: 6px; padding: 5px 16px; text-decoration: none; }
/* tab：同 .lr-tab（选中朱砂下划线） */
.lr-ai-tabs { display: flex; flex-wrap: wrap; gap: 4px; border-bottom: 1px solid var(--lr-split); margin-top: 6px; }
.lr-ai-tab { background: none; border: 0; border-bottom: 2px solid transparent; padding: 6px 10px 8px; margin-bottom: -1px; font-size: 14px; font-weight: 600; color: var(--lr-muted); cursor: pointer; font-family: inherit; }
.lr-ai-tab:hover:not(:disabled) { color: var(--lr-text); }
.lr-ai-tab[aria-selected="true"] { color: var(--lr-accent); border-bottom-color: var(--lr-accent); }
.lr-ai-tab:disabled { cursor: not-allowed; opacity: .6; }
.lr-ai-tab:focus-visible { outline: 2px solid var(--lr-focus); outline-offset: 1px; }
.lr-ai-dot { display: inline-block; width: 8px; height: 8px; margin-left: 4px; border-radius: 50%; background: var(--lr-primary); vertical-align: 2px; }
.lr-ai-dot[hidden] { display: none; }
.lr-ai-panel { padding-top: 10px; font-size: 14px; }
.lr-ai-panel[hidden] { display: none; }
/* 设置表单 */
.lr-ai-label { display: block; margin: 8px 0 4px; font-size: 13px; color: var(--lr-sub); }
.lr-ai-label:first-child { margin-top: 0; }
.lr-ai-question { display: block; width: 100%; min-height: 72px; box-sizing: border-box; padding: 8px 10px; font-size: 14px; line-height: 1.6; font-family: inherit; resize: vertical;
                  background: var(--lr-input-bg); color: var(--lr-text); border: 1px solid var(--lr-input-line); border-radius: 6px; }
.lr-ai-panel select { padding: 6px 8px; font-size: 14px; font-family: inherit; background: var(--lr-input-bg); color: var(--lr-text); border: 1px solid var(--lr-input-line); border-radius: 4px; max-width: 100%; }
.lr-ai-panel select:disabled { opacity: .55; cursor: not-allowed; border-style: dashed; } /* 风格下拉在对话、教学模式或选了大师时禁用：两套主题都靠透明度 + 虚线边看出（同 .lr-ai-tab:disabled） */
.lr-ai-question:focus-visible, .lr-ai-panel select:focus-visible { outline: 2px solid var(--lr-focus); outline-offset: 1px; }
#lr-ai-teach-wrap[hidden] { display: none; }
.lr-ai-modes { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 2px; }
.lr-ai-pill { position: relative; display: inline-flex; cursor: pointer; }
.lr-ai-pill input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; }
.lr-ai-pill span { padding: 4px 14px; border-radius: 14px; font-size: 13px; background: var(--lr-tag-bg); color: var(--lr-text); outline: 1px solid var(--lr-input-line); outline-offset: -1px; }
.lr-ai-pill:hover span { outline-color: var(--lr-accent); }
.lr-ai-pill input:checked + span { background: var(--lr-primary); color: var(--lr-on-primary); outline-color: var(--lr-primary); }
.lr-ai-pill input:focus-visible + span { box-shadow: 0 0 0 2px var(--lr-card), 0 0 0 4px var(--lr-focus); }
.lr-ai-mbox { margin-top: 12px; padding: 10px 12px; border-radius: 8px; background: var(--lr-tag-bg); outline: 1px solid var(--lr-split); outline-offset: -1px; }
/* 大师触发行（2026-10-11 照奇门 .qm-ai-master-trigger）：头像 + 文字的按钮占满，「一键推荐」在右（同八字页 .bz-ai-master-head） */
.lr-ai-master-head { display: flex; align-items: center; gap: 10px; }
.lr-ai-master-toggle { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: 10px; padding: 2px; border: 0; background: none; color: var(--lr-text); font-size: 14px; font-weight: 600; font-family: inherit; text-align: left; cursor: pointer; }
.lr-ai-master-toggle:focus-visible, .lr-ai-recommend:focus-visible { outline: 2px solid var(--lr-focus); outline-offset: 1px; }
.lr-ai-avatar { flex: none; width: 38px; height: 38px; border-radius: 50%; overflow: hidden; border: 2px solid var(--lr-split); box-sizing: border-box; opacity: .5; filter: grayscale(70%); transition: opacity .3s, filter .3s, border-color .3s; }
.lr-ai-avatar img { display: block; width: 100%; height: 100%; object-fit: cover; }
.lr-ai-avatar.lr-ai-avatar-half { opacity: .9; filter: grayscale(20%); }
.lr-ai-avatar.lr-ai-avatar-on { opacity: 1; filter: none; border-color: var(--lr-accent); box-shadow: 0 0 0 3px var(--lr-sel-bg); }
.lr-ai-master-text { min-width: 0; }
.lr-ai-hint { font-size: 12px; font-weight: normal; color: var(--lr-muted); }
.lr-ai-hint.lr-ai-cancel { color: var(--lr-danger); }
.lr-ai-recommend { flex: none; padding: 3px 10px; font-size: 12px; line-height: 1.6; border-radius: 12px; border: 1px solid var(--lr-accent); background: var(--lr-card); color: var(--lr-accent); font-family: inherit; cursor: pointer; }
.lr-ai-recommend:hover { background: var(--lr-sel-bg); }
.lr-ai-recommend[hidden] { display: none; }
.lr-ai-master-panel { padding: 6px 0 2px; }
.lr-ai-master-panel[hidden], #lr-ai-category[hidden] { display: none; }
/* 回复风格、语言：虚线分隔，一行两列；内容宽 <420px 上下排（容器查询，窄屏与右栏变窄都按卡片实际宽度） */
.lr-ai-opts { container-type: inline-size; margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--lr-line); }
.lr-ai-opts-in { display: grid; grid-template-columns: 1fr 1fr; gap: 0 12px; }
@container (max-width: 419px) { .lr-ai-opts-in { grid-template-columns: 1fr; } }
.lr-ai-opt { min-width: 0; }
.lr-ai-opt select { width: 100%; }
.lr-ai-master-panel select { display: block; width: 100%; margin-bottom: 6px; }
.lr-ai-methods { display: flex; flex-wrap: wrap; gap: 6px; }
.lr-ai-methods:empty { display: none; }
.lr-ai-error { margin: 8px 0 0; color: var(--lr-danger); font-size: 14px; }
.lr-ai-error:empty { display: none; }
.lr-ai-start { display: block; width: 100%; margin-top: 12px; padding: 9px 16px; }
/* 聊天面板：改动提示条与空状态 */
.lr-ai-stale { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin-bottom: 8px; padding: 6px 10px; font-size: 13px; line-height: 1.5;
               color: var(--lr-warn-fg); background: var(--lr-warn-bg); border: 1px solid var(--lr-warn-line); border-radius: 6px; }
.lr-ai-stale[hidden], .lr-ai-note[hidden], #chatPanel[hidden] { display: none; }
#lr-ai-chat-empty { margin-top: 2px; }
/* 电脑端：右栏 sticky 竖排 flex（A 期已有）；AI 卡片展开时撑满剩余高度，消息区最小 360px */
@media (min-width: 1010px) {
  .lr-right .lr-ai:not(.lr-ai-open) { flex: none; }
  .lr-right .lr-ai.lr-ai-open { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
  .lr-ai.lr-ai-open .lr-ai-body { flex: 1 1 auto; min-height: 0; }
  .lr-ai.lr-ai-open .lr-ai-inner { display: flex; flex-direction: column; }
  .lr-ai.lr-ai-open #lr-ai-p-set { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
  .lr-ai.lr-ai-open #lr-ai-p-chat:not([hidden]) { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
  .lr-ai.lr-ai-open #chatPanel:not([hidden]) { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
  .lr-ai.lr-ai-open #chatPanel .ai-chat-panel-wrapper { flex: 1 1 auto; min-height: 0; }
  /* 消息区最小 360px；矮屏按视口高度降低下限（不低于 160px），免得底部输入栏被卡片 overflow:hidden 裁掉。
     460px ≈ 消息区以外的固定高度（AI 标题栏、tab、改动提示条、组件标题与输入栏、课体毕法 tab 条、间距），Task 4 用真组件 HTML 在 1280×720 / 600 实测 */
  #chatPanel .chat-messages-container { flex: 1 1 auto; min-height: clamp(160px, calc(100vh - 460px), 360px); height: 0; max-height: none; }
}

/* 平台聊天组件本身写死蓝灰浅色：白天、暗黑两套都按 #chatPanel 作用域 !important 覆盖成宣纸墨色（照 qimen/assets/qimen.css，--qm- 换 --lr-）；
   index.php 传给组件的 theme_color 只作组件内联样式的兜底，实际颜色以这里的变量为准 */
#chatPanel { --zhuti_clor: var(--lr-primary); --zhuti_clor_hover: var(--lr-primary-hover); }
#chatPanel .ai-chat-panel-wrapper { background: var(--lr-card) !important; outline: 1px solid var(--lr-input-line); outline-offset: -1px; }
#chatPanel .ai-chat-header { background: var(--lr-primary) !important; }
#chatPanel .chat-messages-container { background: var(--lr-bg) !important; }
#chatPanel .message-bubble.ai .message-content { background: var(--lr-card) !important; color: var(--lr-text) !important; box-shadow: inset 0 0 0 1px var(--lr-input-line) !important; }
#chatPanel .message-bubble.ai .message-content h1, #chatPanel .message-bubble.ai .message-content h2,
#chatPanel .message-bubble.ai .message-content h3, #chatPanel .message-bubble.ai .message-content strong { color: var(--lr-accent) !important; }
#chatPanel .message-bubble.ai .message-content a { color: var(--lr-accent) !important; }
#chatPanel .message-bubble.user .message-content { background: var(--lr-ububble) !important; color: var(--lr-on-ububble) !important; box-shadow: inset 0 0 0 1px var(--lr-input-line) !important; }
#chatPanel .ai-msg-actions { border-top-color: var(--lr-split) !important; }
#chatPanel .ai-action-btn { color: var(--lr-sub) !important; border-color: var(--lr-input-line) !important; background: transparent !important; }
#chatPanel .ai-action-btn:hover { background: var(--lr-sel-bg) !important; }
#chatPanel .rating-popup { background: var(--lr-card) !important; border-color: var(--lr-input-line) !important; }
#chatPanel .rate-opt-btn { color: var(--lr-text) !important; border-color: var(--lr-input-line) !important; }
#chatPanel .chat-footer { background: var(--lr-card) !important; border-top-color: var(--lr-split) !important; }
#chatPanel .chat-input, #chatPanel #chat-input { background: var(--lr-input-bg) !important; color: var(--lr-text) !important; border-color: var(--lr-input-line) !important; }
#chatPanel #chat-input.lr-ai-locked { background: var(--lr-locked) !important; color: var(--lr-muted) !important; }
#chatPanel #chat-send-btn:disabled { background: var(--lr-disabled) !important; }
#chatPanel .ai-chat-disclaimer { background: var(--lr-card) !important; color: var(--lr-muted) !important; }
#chatPanel .loading-timer-text, #chatPanel .message-content div[style*="color:#888"] { color: var(--lr-muted) !important; }
#chatPanel .user-points-badge { background: var(--lr-card) !important; color: var(--lr-text) !important; }
#chatPanel .message-content > button:not([class]) { background: var(--lr-card) !important; color: var(--lr-danger) !important; border-color: var(--lr-danger) !important; }
/* 提问模板按钮（组件挪进问题框，在 #chatPanel 外）与模板弹窗（挂在 body 上） */
.preset-q-trigger-btn { background: var(--lr-primary) !important; color: var(--lr-on-primary) !important; opacity: 1 !important; }
.preset-q-trigger-btn:hover { background: var(--lr-primary-hover) !important; }
.preset-q-modal { background: var(--lr-card) !important; color: var(--lr-text); }
.preset-q-cats, .preset-q-modal-footer { background: var(--lr-card) !important; border-color: var(--lr-split) !important; color: var(--lr-muted); }
.preset-q-cat-chip { background: var(--lr-tag-bg) !important; color: var(--lr-text) !important; border-color: var(--lr-input-line) !important; }
.preset-q-cat-chip.active { background: var(--lr-primary) !important; border-color: var(--lr-primary) !important; color: var(--lr-on-primary) !important; }
.preset-q-item { background: var(--lr-center) !important; border-color: var(--lr-split) !important; }
.preset-q-item:hover { background: var(--lr-sel-bg) !important; }
.preset-q-item-title { color: var(--lr-text) !important; }
.preset-q-item-preview { color: var(--lr-accent) !important; }
.preset-q-modal-close { color: var(--lr-accent) !important; }
@media (prefers-reduced-motion: reduce) {
  .lr-ai-body, .lr-ai-arrow { transition: none; }
}
/* Task 4：聊天区系统提示（照 bazi.css .bz-sys-msg）、视觉隐藏文字（给读屏读，如改动红点里的「（设置有改动）」） */
.lr-sys-msg { text-align: center; color: var(--lr-muted); font-size: 12px; margin: 8px 0; }
.lr-vh { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
