/* ziwei/assets/ziwei.css —— 紫微斗数排盘页样式（架构与配色照 daliuren/assets/daliuren.css，变量名换成 --zw-*）
   :root 白天、<html data-theme="dark"> 暗黑，宣纸墨色（纸色底、墨字、朱砂主按钮、细边线）。
   断点：≥1010px 左右两栏；窄屏上下排；<700px 命盘字号收小，4×4 盘面保持最小宽度、外层横向滚动。
   对比度由 _dev/project2026/ziwei/tests/contrast_check.mjs 检查：文字 ≥4.5，四化底色、飞化线等非文字 ≥3 */
:root {
  --zw-bg: #f3efe6; --zw-card: #fbf9f4; --zw-text: #2b2622; --zw-muted: #6a5f53; --zw-faint: #6f6458;
  --zw-line: #cfc5b2; --zw-center: #f6f2ea; --zw-sub: #4a4239; --zw-split: #e6dfd0;
  --zw-tag-bg: #efe9dc; --zw-input-bg: #ffffff; --zw-input-line: #d9d1c0; --zw-shadow: rgba(0,0,0,.06);
  --zw-primary: #b3361f; --zw-primary-hover: #9a2d19; --zw-on-primary: #ffffff; --zw-disabled: #b9af9f;
  --zw-accent: #b3361f; --zw-danger: #b91c1c; --zw-sel-bg: #f6e9e2; --zw-focus: #b45309;
  --zw-warn-fg: #7c3a06; --zw-warn-bg: #fbf1dc; --zw-warn-line: #e3c27a; --zw-stale-btn: #b45309;
  --zw-tip-bg: rgba(43, 38, 34, .95); --zw-tip-fg: #fbf9f4;
  /* 盘面底：命宫、三方四正高亮、对宫、空宫 */
  --zw-soul-bg: #f8efe4; --zw-sf-bg: #f3e6d6; --zw-sfo-bg: #e9e1f0; --zw-empty-bg: #f6f3ec;
  /* 星曜：主星、六吉、六煞、禄存天马、杂曜、借星 */
  --zw-major: #8a1c12; --zw-soft: #1a5e40; --zw-tough: #1a3e6e; --zw-lucun: #8a4300; --zw-adj: #5c5248; --zw-borrow: #6a5f53;
  /* 亮度四档 */
  --zw-br-hi: #a3200f; --zw-br-mid: #8a4300; --zw-br-lo: #5c5248; --zw-br-xian: #3f4652;
  /* 四化：底色（徽章、飞化小标、飞化线），字一律 --zw-on-mut */
  --zw-lu: #15803d; --zw-quan: #7c3aed; --zw-ke: #1d4ed8; --zw-ji: #b91c1c; --zw-on-mut: #ffffff;
  /* 运限层：宫名、流曜、层四化标签的字色 */
  --zw-ly-decadal: #1a3e6e; --zw-ly-age: #6b21a8; --zw-ly-yearly: #a3200f; --zw-ly-monthly: #1a5e40; --zw-ly-daily: #8a4300; --zw-ly-hourly: #3f4652;
}
[data-theme="dark"] {
  --zw-bg: #16130f; --zw-card: #211d18; --zw-text: #ece4d6; --zw-muted: #b0a495; --zw-faint: #a69a8a;
  --zw-line: #4a4238; --zw-center: #1c1915; --zw-sub: #d6cbb9; --zw-split: #3a332a;
  --zw-tag-bg: #2a251f; --zw-input-bg: #16130f; --zw-input-line: #3a332a; --zw-shadow: rgba(0,0,0,.4);
  --zw-primary: #c2452c; --zw-primary-hover: #ab3a24; --zw-on-primary: #ffffff; --zw-disabled: #4a4238;
  --zw-accent: #e0a34a; --zw-danger: #f87171; --zw-sel-bg: #33291d; --zw-focus: #e0a34a;
  --zw-warn-fg: #f5d58a; --zw-warn-bg: #33291a; --zw-warn-line: #8a6a1f; --zw-stale-btn: #b45309;
  --zw-tip-bg: rgba(236, 228, 214, .96); --zw-tip-fg: #16130f;
  --zw-soul-bg: #2a2219; --zw-sf-bg: #33281c; --zw-sfo-bg: #2a2433; --zw-empty-bg: #1e1a16;
  --zw-major: #f59a7e; --zw-soft: #5fd3a0; --zw-tough: #8fb8ff; --zw-lucun: #f0b46b; --zw-adj: #b8ad9e; --zw-borrow: #a69a8a;
  --zw-br-hi: #ff8f73; --zw-br-mid: #f0b46b; --zw-br-lo: #c2b7a8; --zw-br-xian: #a3b1c6;
  /* 暗黑四化改为亮底深字：白字配深底在暗卡片上分不出徽章边界（紫底对卡片不到 3:1） */
  --zw-lu: #4ade80; --zw-quan: #c4a5ff; --zw-ke: #7fb0ff; --zw-ji: #f87171; --zw-on-mut: #16130f;
  --zw-ly-decadal: #8fb8ff; --zw-ly-age: #d0adff; --zw-ly-yearly: #ff8f73; --zw-ly-monthly: #5fd3a0; --zw-ly-daily: #f0b46b; --zw-ly-hourly: #cbd5e1;
  color-scheme: dark;
}
body { margin: 0; font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif; background: var(--zw-bg); color: var(--zw-text); }

/* ===== 两栏：≥1010px 左栏表单·信息·历史，右栏命盘；窄屏上下排 ===== */
.zw-wrap { max-width: 1320px; margin: 0 auto; padding: 16px; display: flex; flex-direction: column; gap: 0 16px; box-sizing: border-box; }
.zw-left, .zw-right { min-width: 0; }
@media (min-width: 1010px) {
  .zw-wrap { flex-direction: row; align-items: flex-start; }
  .zw-left { flex: 0 0 330px; }
  .zw-right { flex: 1 1 0; }
}

/* ===== 卡片、按钮、表单 ===== */
.zw-card { background: var(--zw-card); border-radius: 8px; padding: 14px; margin-bottom: 14px; box-shadow: 0 1px 3px var(--zw-shadow); outline: 1px solid var(--zw-input-line); outline-offset: -1px; }
.zw-card-h { margin: 0 0 8px; font-size: 14px; font-weight: 700; color: var(--zw-sub); }
.zw-title { margin: 0 0 10px; font-size: 17px; font-weight: 700; color: var(--zw-text); letter-spacing: 1px; }
.zw-form-card { position: relative; padding-right: 52px; background-image: url(zw1.png); background-repeat: no-repeat; background-size: auto; background-position: right top;}
.zw-theme-btn { position: absolute; top: 5px; right: 5px; width: 31px; height: 31px; border-radius: 50%; border: 1px solid var(--zw-input-line); background: var(--zw-card); color: var(--zw-text); font-size: 14px; line-height: 1; cursor: pointer; }
.zw-theme-btn:hover { border-color: var(--zw-accent); }
.zw-form { display: flex; flex-direction: column; gap: 9px; }
.zw-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; font-size: 14px; }
.zw-row[hidden] { display: none; }
.zw-plain { margin: 0; padding: 0; border: 0; }
.zw-plain legend { float: left; margin-right: 8px; padding: 0; font-size: 14px; }
.zw-form label { font-size: 14px; white-space: nowrap; }
.zw-check { display: inline-flex; align-items: center; gap: 4px; }
.zw-check[hidden] { display: none; }
.zw-form select, .zw-form input[type="number"] { padding: 5px 6px; font-size: 14px; font-family: inherit; background: var(--zw-input-bg); color: var(--zw-text); border: 1px solid var(--zw-input-line); border-radius: 4px; max-width: 100%; }
.zw-form input[type="radio"], .zw-form input[type="checkbox"] { accent-color: var(--zw-primary); }
.zw-note { font-size: 12px; color: var(--zw-muted); }
.zw-actions { display: flex; gap: 8px; }
.zw-btn { padding: 7px 26px; border: 0; border-radius: 6px; background: var(--zw-primary); color: var(--zw-on-primary); font-size: 14px; font-family: inherit; cursor: pointer; }
.zw-btn:hover:not(:disabled) { background: var(--zw-primary-hover); }
.zw-btn:disabled { background: var(--zw-disabled); cursor: not-allowed; }
.zw-btn-ghost { padding: 7px 16px; border: 1px solid var(--zw-input-line); border-radius: 6px; background: var(--zw-card); color: var(--zw-sub); font-size: 14px; font-family: inherit; cursor: pointer; }
.zw-btn-ghost:hover { border-color: var(--zw-accent); color: var(--zw-accent); }
.zw-btn-sm { flex: none; padding: 3px 9px; border: 1px solid var(--zw-accent); border-radius: 5px; background: var(--zw-card); color: var(--zw-accent); font-size: 12px; font-family: inherit; cursor: pointer; }
.zw-btn-sm[aria-pressed="true"] { background: var(--zw-sel-bg); }
.zw-btn-quiet { border-color: var(--zw-input-line); color: var(--zw-sub); }
.zw-error { color: var(--zw-danger); font-size: 14px; margin: 0; }
.zw-error:not(:empty) { margin-top: 8px; }
.zw-stale { margin-top: 8px; padding: 6px 10px; font-size: 13px; line-height: 1.5; color: var(--zw-warn-fg); background: var(--zw-warn-bg); border: 1px solid var(--zw-warn-line); border-radius: 6px; }
.zw-stale[hidden] { display: none; }
.zw-btn.zw-btn-stale { background: var(--zw-stale-btn); animation: zw-stale-pulse 1.6s ease-in-out infinite; }
.zw-btn.zw-btn-stale:hover:not(:disabled) { background: var(--zw-stale-btn); }
@keyframes zw-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); } }
.zw-btn:focus-visible, .zw-btn-sm:focus-visible, .zw-btn-ghost:focus-visible, .zw-theme-btn:focus-visible, .zw-tog:focus-visible, .zw-ly-btn:focus-visible, .zw-nav-b:focus-visible,
.zw-form select:focus-visible, .zw-form input:focus-visible { outline: 2px solid var(--zw-focus); outline-offset: 1px; }
.zw-empty { margin: 0; font-size: 13px; color: var(--zw-muted); }
.zw-muted { color: var(--zw-muted); }

/* ===== 排盘信息 ===== */
.zw-info-list { display: grid; grid-template-columns: auto 1fr; gap: 3px 12px; margin: 0; font-size: 13px; line-height: 1.6; }
.zw-info-list dt { color: var(--zw-muted); white-space: nowrap; }
.zw-info-list dd { margin: 0; color: var(--zw-text); word-break: break-word; }
.zw-info-list dd.zw-muted { color: var(--zw-muted); }
.zw-notes { margin: 0; padding-left: 16px; color: var(--zw-warn-fg); }

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

/* ===== 命盘卡片：标题行、显示开关、运限层按钮、参考日导航 ===== */
.zw-board-head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.zw-board-head .zw-card-h { margin: 0; }
.zw-view { display: flex; gap: 4px; }
.zw-tog, .zw-ly-btn, .zw-nav-b { padding: 2px 10px; font-size: 12px; line-height: 1.6; border-radius: 12px; border: 1px solid var(--zw-input-line); background: var(--zw-card); color: var(--zw-sub); font-family: inherit; cursor: pointer; }
.zw-tog[aria-pressed="true"], .zw-ly-btn[aria-pressed="true"], .zw-nav-b[aria-pressed="true"] { border-color: var(--zw-accent); background: var(--zw-sel-bg); color: var(--zw-accent); font-weight: 600; }
.zw-ly-btn:disabled, .zw-nav-b:disabled { opacity: .5; cursor: not-allowed; border-style: dashed; }
.zw-layers { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 6px; }
.zw-layers[hidden], .zw-nav[hidden] { display: none; }
.zw-nav { margin-bottom: 8px; padding: 8px 10px; border-radius: 8px; background: var(--zw-center); outline: 1px solid var(--zw-split); outline-offset: -1px; font-size: 13px; }
.zw-nav-cap { margin: 0 0 4px; color: var(--zw-sub); line-height: 1.6; }
.zw-nav-cap b { color: var(--zw-text); }
.zw-nav-tools { display: flex; gap: 6px; margin-bottom: 4px; }
.zw-nav-row { display: flex; align-items: flex-start; gap: 6px; padding: 3px 0; border-top: 1px dashed var(--zw-split); }
.zw-nav-h { flex: none; width: 2.6em; padding-top: 2px; color: var(--zw-muted); font-size: 12px; }
.zw-nav-g { display: flex; flex-wrap: wrap; gap: 3px; min-width: 0; }
.zw-nav-b { padding: 1px 7px; }
.zw-status { margin: 0 0 6px; min-height: 0; font-size: 12px; color: var(--zw-muted); }
.zw-status:empty { display: none; }
.zw-sf-line { margin: 0 0 6px; font-size: 12px; color: var(--zw-sub); min-height: 1.5em; line-height: 1.5; }

/* ===== 4×4 命盘：十二宫绕外圈（上巳午未申、右酉戌、下亥子丑寅、左卯辰），中宫 2×2 写基本信息 ===== */
.zw-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.zw-gridwrap { position: relative; min-width: 620px; }
.zw-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: minmax(170px, auto);
           border-top: 1px solid var(--zw-line); border-left: 1px solid var(--zw-line); background: var(--zw-card); }
.zw-cell, .zw-centre { border-right: 1px solid var(--zw-line); border-bottom: 1px solid var(--zw-line); }
.zw-cell { position: relative; display: flex; flex-direction: column; min-width: 0; padding: 5px 5px 4px; box-sizing: border-box; cursor: pointer; font-size: 13px; line-height: 1.45; }
.zw-cell:focus { outline: none; }
.zw-cell:focus-visible { outline: 2px solid var(--zw-focus); outline-offset: -3px; }
.zw-cell.zw-soul { background: var(--zw-soul-bg); }
.zw-cell.zw-empty-gong { background: var(--zw-empty-bg); }
.zw-cell.zw-sf { background: var(--zw-sf-bg); }
.zw-cell.zw-sf-opp { background: var(--zw-sfo-bg); }
.zw-cell.zw-sf-self { box-shadow: inset 0 0 0 2px var(--zw-accent); }
.zw-cell.zw-sel { box-shadow: inset 0 0 0 2px var(--zw-accent), inset 0 0 0 4px var(--zw-sel-bg); }
.zw-cell.zw-fly-src { box-shadow: inset 0 0 0 2px var(--zw-ke); }
.zw-stars { flex: 1 1 auto; display: flex; flex-direction: column; gap: 1px; }
.zw-majors, .zw-minors, .zw-adjs, .zw-flows { display: flex; flex-wrap: wrap; gap: 0 6px; align-items: baseline; }
.zw-star { display: inline-flex; align-items: baseline; gap: 1px; white-space: nowrap; }
.zw-s-major { color: var(--zw-major); font-weight: 700; font-size: 15px; }
.zw-s-soft { color: var(--zw-soft); }
.zw-s-tough { color: var(--zw-tough); }
.zw-s-lu { color: var(--zw-lucun); }
.zw-s-adj { color: var(--zw-adj); font-size: 12px; }
.zw-adjs { gap: 0 5px; }
.zw-star.zw-borrow { color: var(--zw-borrow); font-weight: 400; font-style: italic; opacity: 1; }
.zw-star.zw-borrow .zw-br, .zw-star.zw-borrow .zw-mut { opacity: .75; }
.zw-borrow-mark { font-size: 11px; padding: 0 3px; border-radius: 3px; border: 1px dashed var(--zw-borrow); color: var(--zw-borrow); line-height: 1.3; cursor: help; }
.zw-br { font-size: 10px; font-weight: 400; }
.zw-br-hi { color: var(--zw-br-hi); } .zw-br-mid { color: var(--zw-br-mid); } .zw-br-lo { color: var(--zw-br-lo); } .zw-br-xian { color: var(--zw-br-xian); }
.zw-mut, .zw-lmut, .zw-chip { display: inline-block; font-size: 10px; line-height: 1.35; padding: 0 2px; border-radius: 3px; color: var(--zw-on-mut); font-weight: 600; font-style: normal; }
.zw-lmut { margin-left: 1px; font-size: 9px; }
.zw-m-lu { background: var(--zw-lu); } .zw-m-quan { background: var(--zw-quan); } .zw-m-ke { background: var(--zw-ke); } .zw-m-ji { background: var(--zw-ji); }
.zw-flows { margin-top: 1px; font-size: 11px; gap: 0 4px; }
.zw-flow { cursor: help; }
.zw-ly-decadal { color: var(--zw-ly-decadal); } .zw-ly-age { color: var(--zw-ly-age); } .zw-ly-yearly { color: var(--zw-ly-yearly); }
.zw-ly-monthly { color: var(--zw-ly-monthly); } .zw-ly-daily { color: var(--zw-ly-daily); } .zw-ly-hourly { color: var(--zw-ly-hourly); }
.zw-fly-chips { display: flex; flex-wrap: wrap; gap: 2px; }
.zw-fly-chips:empty { display: none; }
.zw-chip { font-size: 11px; padding: 0 4px; cursor: help; }
.zw-chip-k { display: inline-block; margin-right: 2px; padding: 0 2px; border-radius: 2px; background: rgba(255,255,255,.25); }
.zw-shen { display: grid; grid-template-columns: repeat(4, auto); justify-content: space-between; gap: 0 3px; margin-top: 2px; font-size: 11px; color: var(--zw-sub); }
.zw-shen-i { cursor: help; white-space: nowrap; }
.zw-foot { margin-top: 3px; padding-top: 2px; border-top: 1px dashed var(--zw-split); }
.zw-lnames { display: flex; flex-wrap: wrap; gap: 0 5px; font-size: 11px; }
.zw-lnames:empty { display: none; }
.zw-lname { display: inline-flex; align-items: baseline; gap: 1px; white-space: nowrap; cursor: help; font-weight: 600; }
.zw-ltag { font-size: 9px; padding: 0 2px; border-radius: 2px; outline: 1px solid currentColor; outline-offset: -1px; font-weight: 400; }
.zw-meta { display: flex; justify-content: space-between; gap: 4px; font-size: 11px; color: var(--zw-muted); }
.zw-ages { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: help; }
.zw-namerow { display: flex; align-items: center; gap: 3px; flex-wrap: wrap; }
.zw-stem { padding: 0 3px; border: 1px solid var(--zw-input-line); border-radius: 4px; background: var(--zw-card); color: var(--zw-text); font-size: 13px; line-height: 1.4; font-family: inherit; cursor: pointer; }
.zw-stem:hover { border-color: var(--zw-ke); }
.zw-stem[aria-pressed="true"] { border-color: var(--zw-ke); background: var(--zw-ke); color: var(--zw-on-mut); }
.zw-stem:focus-visible { outline: 2px solid var(--zw-focus); outline-offset: 1px; }
.zw-branch { color: var(--zw-sub); }
.zw-pname { margin-left: auto; font-weight: 700; color: var(--zw-accent); font-size: 14px; }
.zw-orig { font-size: 10px; color: var(--zw-muted); }
.zw-mark { font-size: 10px; padding: 0 3px; border-radius: 3px; line-height: 1.4; cursor: help; color: var(--zw-on-primary); background: var(--zw-primary); }
.zw-mark-yin { background: var(--zw-tag-bg); color: var(--zw-sub); outline: 1px solid var(--zw-line); outline-offset: -1px; }
[data-tip] { cursor: help; }

/* 中宫 */
.zw-centre { grid-row: 2 / 4; grid-column: 2 / 4; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; padding: 10px; background: var(--zw-center); min-width: 0; }
.zw-c-title { font-size: 17px; font-weight: 700; color: var(--zw-text); letter-spacing: 1px; }
.zw-c-list { display: grid; grid-template-columns: auto auto; gap: 2px 12px; margin: 0; font-size: 13px; line-height: 1.55; }
.zw-c-list dt { color: var(--zw-muted); text-align: right; }
.zw-c-list dd { margin: 0; color: var(--zw-text); }
.zw-c-taiji { margin: 0; font-size: 12px; color: var(--zw-accent); font-weight: 600; }
.zw-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 8px; font-size: 11px; }
.zw-legend .zw-br { font-size: 11px; }

/* 飞化连线（在宫格之上，不接收鼠标） */
.zw-fly-svg { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: visible; }
.zw-fly-line { stroke-width: 2; stroke-linecap: round; fill: none; opacity: .9; }
.zw-fl-lu { stroke: var(--zw-lu); } .zw-fl-quan { stroke: var(--zw-quan); } .zw-fl-ke { stroke: var(--zw-ke); } .zw-fl-ji { stroke: var(--zw-ji); stroke-dasharray: 5 3; }
.zw-ah-lu { fill: var(--zw-lu); } .zw-ah-quan { fill: var(--zw-quan); } .zw-ah-ke { fill: var(--zw-ke); } .zw-ah-ji { fill: var(--zw-ji); }

/* ===== 宫位详情 ===== */
.zw-detail { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--zw-split); }
.zw-d-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 10px; margin-bottom: 6px; }
.zw-d-title { margin: 0; font-size: 16px; color: var(--zw-text); }
.zw-d-sub { margin-left: 8px; font-size: 13px; font-weight: normal; color: var(--zw-muted); }
.zw-d-ops { display: flex; flex-wrap: wrap; gap: 6px; }
.zw-d-list { display: grid; grid-template-columns: auto 1fr; gap: 4px 12px; margin: 0; font-size: 14px; line-height: 1.65; }
.zw-d-list dt { color: var(--zw-muted); font-size: 13px; white-space: nowrap; }
.zw-d-list dd { margin: 0; word-break: break-word; }
.zw-d-fly { border-collapse: collapse; font-size: 13px; }
.zw-d-fly caption { text-align: left; font-size: 12px; color: var(--zw-muted); padding-bottom: 2px; }
.zw-d-fly th, .zw-d-fly td { padding: 2px 10px 2px 0; text-align: left; border-bottom: 1px solid var(--zw-split); font-weight: normal; }

/* ===== 气泡 ===== */
.zw-tip { position: fixed; z-index: 1000; max-width: min(280px, calc(100vw - 8px)); box-sizing: border-box; padding: 5px 9px; border-radius: 6px;
          background: var(--zw-tip-bg); color: var(--zw-tip-fg); font-size: 12px; line-height: 1.5; box-shadow: 0 4px 12px rgba(0, 0, 0, .18); pointer-events: none; word-break: break-all; }
.zw-tip[hidden] { display: none; }
.zw-tip::after { content: ''; position: absolute; left: var(--zw-tip-ax, 50%); top: 100%; margin-left: -5px; border: 5px solid transparent; border-top-color: var(--zw-tip-bg); }
.zw-tip.zw-tip-below::after { top: auto; bottom: 100%; border-top-color: transparent; border-bottom-color: var(--zw-tip-bg); }

/* ===== tab 卡（左栏「排盘历史 / 排盘信息」、右栏侧卡四个 tab 共用；脚本 ziwei-tabs.js） ===== */
.zw-tabs { display: flex; flex-wrap: wrap; gap: 2px 4px; border-bottom: 1px solid var(--zw-split); margin: -4px 0 10px; }
.zw-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(--zw-muted); cursor: pointer; font-family: inherit; white-space: nowrap; }
.zw-tab:hover { color: var(--zw-text); }
.zw-tab[aria-selected="true"] { color: var(--zw-accent); border-bottom-color: var(--zw-accent); }
.zw-tab:focus-visible { outline: 2px solid var(--zw-focus); outline-offset: 1px; }
.zw-tabpanel[hidden] { display: none; }
.zw-tab .zw-h-count { margin-left: 2px; }

/* 下一期的容器：没有内容时不占位 */
#zw-side-cards:empty, #zw-ai-host:empty { display: none; }

/* ===== 窄屏 ===== */
@media (max-width: 699px) {
  .zw-wrap { padding: 8px; }
  .zw-card { padding: 10px; }
  .zw-form-card { padding-right: 44px; }
  .zw-gridwrap { min-width: 560px; }
  .zw-grid { grid-auto-rows: minmax(150px, auto); }
  .zw-cell { font-size: 12px; padding: 4px 3px 3px; }
  .zw-s-major { font-size: 14px; }
  .zw-s-adj, .zw-flows, .zw-shen, .zw-meta, .zw-lnames { font-size: 10px; }
  .zw-c-list { font-size: 12px; }
  .zw-c-title { font-size: 15px; }
}

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