/* 运转堂 · 工具页样式（工具箱首页 + 各工具面板）
 * 只用站点设计变量（--bg --card --fg --mut --line --acc --acc2 --accsoft --bg2 …）；本文件新增的局部变量以 --t- / --qm- 开头。
 * 层叠顺序：本文件在 index.html 末尾引入，晚于各工具注入到 <head> 的 <style>，同等优先级时本文件生效。
 * 测试依赖的类名（.tool-tile[data-tool]、#toolHub、#toolView、.qm-cell[data-p] 等）只加不改。 */

/* ===================== 0. 局部变量 ===================== */
:root{
  --t-r:12px;--t-r-sm:8px;--t-ctl:42px;
  --t-on-acc:#fff;
  --t-line-soft:color-mix(in srgb,var(--line) 78%,transparent);
  --t-tint:color-mix(in srgb,var(--acc) 6%,var(--card));
  /* 次要文字：比站点 --mut 略深一点，浅色模式下标签/表头在米色底上也够对比度（≥4.5） */
  --t-mut:color-mix(in srgb,var(--mut) 90%,var(--fg));
  --t-acc-ink:color-mix(in srgb,var(--acc) 82%,var(--fg));
  --t-acc2-ink:color-mix(in srgb,var(--acc2) 72%,var(--fg));
  --t-serif:"Yzt Title Serif","Noto Serif SC","Songti SC","STSong","SimSun",serif;
  --t-glyph:"Yzt Title Serif","Songti SC","STSong","Noto Serif SC","SimSun",serif;
  --t-toast-bg:rgba(42,35,27,.94);--t-toast-fg:#fffdf9;
  /* 奇门九宫：细黑线 + 标记色（与图例一致）。参考热卜：盘面干支星门神一律墨色（--qm-txt），只用字色标注——
     入墓橙红、击刑紫、门迫红（门名）、刑+墓蓝、驿马红；浅色在 --card 上对比度 ≥5.2，在详情 pill 浅底上 ≥4.6 */
  --qm-ink:#2a231b;--qm-txt:var(--qm-ink);--qm-mu:#b24c0a;--qm-xing:#8a38c4;--qm-xm:#0a6cb6;--qm-po:#cf1f1f;--qm-sj:#1f64a6;--qm-ma:#cf1f1f;
  --t-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --t-on-acc:#1b1309;--t-toast-bg:rgba(236,227,210,.96);--t-toast-fg:#1c1711;--t-scheme:dark;
    --qm-ink:#b9ad96;--qm-txt:var(--fg);--qm-mu:#ff9a4d;--qm-xing:#c89dff;--qm-xm:#5cb8ff;--qm-po:#ff6b6b;--qm-sj:#8fc3f2;--qm-ma:#ff6b6b;
  }
}
:root[data-theme="dark"]{
  --t-on-acc:#1b1309;--t-toast-bg:rgba(236,227,210,.96);--t-toast-fg:#1c1711;--t-scheme:dark;
  --qm-ink:#b9ad96;--qm-txt:var(--fg);--qm-mu:#ff9a4d;--qm-xing:#c89dff;--qm-xm:#5cb8ff;--qm-po:#ff6b6b;--qm-sj:#8fc3f2;--qm-ma:#ff6b6b;
}

/* 工具区内统一使用略深的次要文字色（含各工具注入样式与行内 color:var(--mut)），浅色模式对比度从约 4.0 提到 ≥4.5 */
#toolsPanel,.tool-modal,.tool-toast{--mut:var(--t-mut)}

/* ===================== 1. 工具箱首页（图标网格） ===================== */
#toolsPanel .stub{display:none}
#toolsPanel>h2 .hd{font-size:12px}
.tool-hub-intro{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0 0 2px;font-size:12.5px;line-height:1.6;color:var(--t-mut)}
.tool-hub-local{display:inline-flex;align-items:center;gap:7px;padding:3px 11px 3px 10px;border-radius:99px;background:var(--accsoft);color:var(--t-acc-ink);font-size:12.5px;font-weight:600;letter-spacing:.06em;white-space:nowrap}
.tool-hub-local::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px color-mix(in srgb,currentColor 22%,transparent)}
.tool-group{margin-top:22px}
.tool-group-title{display:flex;align-items:center;gap:8px;margin:0 2px 10px;padding:0;border:0;font-family:var(--t-serif);font-size:15px;font-weight:700;line-height:1.3;letter-spacing:.14em;color:var(--fg)}
.tool-group-title::before{content:"";flex:none;width:3px;height:15px;border-radius:2px;background:var(--acc)}
.tool-group-title small{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;font-size:12px;font-weight:500;letter-spacing:0;line-height:18px;padding:0 7px;border-radius:99px;background:var(--bg2);color:var(--t-mut)}
.tool-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0}
.tool-grid button.tool-tile{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;width:100%;min-width:0;min-height:108px;margin:0;padding:16px 6px 14px;background:var(--card);color:var(--fg);border:1px solid var(--line);border-radius:14px;box-shadow:0 1px 2px rgba(60,45,20,.04);font-family:var(--t-serif);font-size:14px;font-weight:700;line-height:1.25;letter-spacing:.06em;text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,background-color .16s ease}
.tool-tile .tool-ico{display:grid;place-items:center;flex:none;width:46px;height:46px;border-radius:50%;border:1.5px solid var(--acc);color:var(--acc);background:var(--card);box-shadow:inset 0 0 0 3px var(--card),inset 0 0 0 4px color-mix(in srgb,var(--acc) 30%,transparent);font-family:var(--t-serif);font-size:20px;font-weight:700;line-height:1;letter-spacing:0;transition:background-color .16s ease,box-shadow .16s ease}
.tool-tile .tool-name{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tool-tile.tool-long .tool-name{white-space:normal;overflow:visible;text-overflow:clip;font-size:12px;line-height:1.25;text-align:center;letter-spacing:0}   /* 长名字（如「出门不下雨万年历」）允许两行 */
.tool-tile .tool-soon{margin-top:-5px;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;font-size:12px;font-weight:400;letter-spacing:0;color:var(--t-mut)}
.tool-grid button.tool-tile:hover{filter:none}
@media (hover:hover){
  .tool-grid button.tool-tile:hover{border-color:color-mix(in srgb,var(--acc) 50%,var(--line));box-shadow:0 10px 22px -12px color-mix(in srgb,var(--acc) 60%,transparent);transform:translateY(-2px)}
  .tool-grid button.tool-tile:hover .tool-ico{background:var(--accsoft);box-shadow:inset 0 0 0 3px var(--accsoft),inset 0 0 0 4px color-mix(in srgb,var(--acc) 40%,transparent)}
}
.tool-grid button.tool-tile:active{transform:scale(.96);background:var(--t-tint);box-shadow:none;transition-duration:.06s}
.tool-grid button.tool-tile:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.tool-grid button.tool-tile[data-state="soon"]{background:transparent;border-style:dashed;box-shadow:none;color:var(--mut);cursor:default;transform:none}
.tool-grid button.tool-tile[data-state="soon"] .tool-ico{border-style:dashed;border-color:var(--mut);color:var(--mut);box-shadow:none;background:transparent}
.tool-hub-foot{margin-top:18px}
@media (max-width:480px){
  .tool-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
  .tool-grid button.tool-tile{min-height:98px;padding:14px 4px 12px;gap:8px;border-radius:12px;font-size:13px;letter-spacing:.04em}
  .tool-tile .tool-ico{width:42px;height:42px;font-size:18px}
  .tool-group{margin-top:18px}
}

/* 工具首页 v3（参考热卜首页）：顶部「今天」卡 → 最近用过小胶囊 → 全部工具一张紧凑网格
   网格每格 = 浅底圆角方块 + 圆章图标 + 名字（约 86px 高），手机与平板一行 4 个、电脑一行 8 个（限宽 960 居中，见第 13 节）；常用两个排最前带「常用」角标 */
.tool-hub .tool-today{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:0;margin:12px 0 0;padding:12px 16px 12px 14px;border:1px solid var(--t-line-soft);border-radius:16px;background:linear-gradient(160deg,color-mix(in srgb,var(--accsoft) 42%,var(--card)) 0%,var(--card) 72%);color:var(--fg);box-shadow:0 10px 24px -20px color-mix(in srgb,var(--acc) 80%,transparent);font:inherit;font-weight:400;line-height:1.2;letter-spacing:0;text-align:left;cursor:pointer;overflow:hidden;isolation:isolate;-webkit-tap-highlight-color:transparent;transition:transform .16s ease,box-shadow .16s ease}
.tool-hub .tool-today::after{content:"";position:absolute;right:0;bottom:0;z-index:-1;width:80%;height:72%;background:var(--fg);opacity:.07;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 120' preserveAspectRatio='none'%3E%3Cpath opacity='.5' d='M0 120V78c22-3 40-14 62-22s34-24 52-22 26 22 44 26 30-8 46-22 30-30 50-28 30 26 50 34 34 2 52-6 30-6 44 0v82z'/%3E%3Cpath opacity='.8' d='M0 120V96c30-2 58-10 88-14s52 6 84 4 58-18 92-20 62 10 90 14 34 4 46 4v36z'/%3E%3C/svg%3E") no-repeat right bottom/100% 100%;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 120' preserveAspectRatio='none'%3E%3Cpath opacity='.5' d='M0 120V78c22-3 40-14 62-22s34-24 52-22 26 22 44 26 30-8 46-22 30-30 50-28 30 26 50 34 34 2 52-6 30-6 44 0v82z'/%3E%3Cpath opacity='.8' d='M0 120V96c30-2 58-10 88-14s52 6 84 4 58-18 92-20 62 10 90 14 34 4 46 4v36z'/%3E%3C/svg%3E") no-repeat right bottom/100% 100%;pointer-events:none}
.tool-hub .tool-today:hover{filter:none}
.tool-hub .tool-today:active{transform:scale(.985)}
.tool-hub .tool-today:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.tool-today .tt-l{display:flex;flex-direction:column;gap:3px;min-width:0}
.tool-today .tt-k{font-size:13px;font-weight:600;letter-spacing:.14em;color:var(--t-acc-ink)}
.tool-today .tt-dm{display:flex;align-items:center;gap:9px;min-width:0}
.tool-today .tt-d{flex:none;font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;font-size:46px;font-weight:500;line-height:.95;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--fg)}
.tool-today .tt-m{display:flex;flex-direction:column;gap:1px;min-width:0;font-size:12.5px;line-height:1.35;color:var(--t-mut);white-space:nowrap}
.tool-today .tt-m b{font-size:14px;font-weight:700;color:var(--fg);font-variant-numeric:tabular-nums}
.tool-today .tt-gz{display:flex;flex:none;gap:9px}
.tool-today .tt-col{display:flex;flex-direction:column;align-items:center;gap:1px}
.tool-today .tt-col b{font-family:var(--t-glyph);font-size:20px;font-weight:800;line-height:1.18}
.tool-today .tt-col i{margin-top:3px;font-style:normal;font-size:12px;line-height:1.2;color:var(--t-mut)}
.tool-recent{display:flex;align-items:center;gap:6px;margin:10px 0 0;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.tool-recent::-webkit-scrollbar{display:none}
.tool-recent-k{flex:none;margin-right:2px;font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--mut)}
.tool-recent .tool-recent-chip{display:inline-flex;align-items:center;flex:none;width:auto;min-height:30px;margin:0;padding:2px 12px;border:1px solid var(--t-line-soft);border-radius:99px;background:var(--card);color:var(--fg);box-shadow:none;font-size:12.5px;font-weight:600;line-height:1.3}
.tool-recent .tool-recent-chip:hover{filter:none;border-color:var(--acc);color:var(--t-acc-ink)}
.tool-grid.tool-grid-all{margin-top:12px;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.tool-grid-all button.tool-tile{--tile:color-mix(in srgb,var(--accsoft) 50%,var(--card));min-height:86px;padding:12px 2px 10px;gap:7px;border:0;border-radius:14px;background:var(--tile);box-shadow:none;font-size:13.5px;font-weight:600;letter-spacing:.02em}
.tool-grid-all .tool-tile .tool-ico{width:40px;height:40px;background:var(--tile);box-shadow:inset 0 0 0 3px var(--tile),inset 0 0 0 4px color-mix(in srgb,var(--acc) 30%,transparent);font-size:17px}
.tool-grid-all .tool-tile .tool-badge{position:absolute;top:5px;right:5px;padding:0 5px;border-radius:6px;background:var(--acc);color:var(--t-on-acc);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;font-size:12px;font-weight:600;line-height:16px;letter-spacing:.04em}
@media (hover:hover){
  .tool-grid-all button.tool-tile:hover{--tile:color-mix(in srgb,var(--accsoft) 85%,var(--card));border-color:transparent;box-shadow:none;transform:translateY(-1px)}
  .tool-grid-all button.tool-tile:hover .tool-ico{background:var(--tile);box-shadow:inset 0 0 0 3px var(--tile),inset 0 0 0 4px color-mix(in srgb,var(--acc) 45%,transparent)}
  .tool-hub .tool-today:hover{box-shadow:0 14px 28px -18px color-mix(in srgb,var(--acc) 85%,transparent)}
}
.tool-grid-all button.tool-tile:active{--tile:var(--accsoft);background:var(--tile);transform:scale(.96)}
.tool-grid-all button.tool-tile[data-state="soon"]{border:1px dashed var(--line);background:transparent}
.tool-grid-all button.tool-tile[data-state="soon"] .tool-ico{background:transparent;box-shadow:none}
@media (min-width:600px){.tool-grid.tool-grid-all{gap:12px}.tool-grid-all button.tool-tile{min-height:94px}}   /* 平板（< 860px）仍是一行 4 格；电脑见第 13 节 */
@media (max-width:480px){
  .tool-grid.tool-grid-all{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
  .tool-grid-all button.tool-tile{min-height:84px;padding:11px 1px 9px;gap:7px;font-size:13px;letter-spacing:0;border-radius:13px}
  .tool-grid-all .tool-tile .tool-ico{width:38px;height:38px;font-size:16.5px}
}
@media (max-width:350px){.tool-grid.tool-grid-all{grid-template-columns:repeat(3,minmax(0,1fr))}.tool-today .tt-d{font-size:38px}.tool-today .tt-gz{gap:6px}.tool-hub .tool-today{padding:10px 12px}}

/* ===================== 2. 工具页标题行 ===================== */
.tool-panel{margin-top:0}
#toolsPanel:has(#toolView:not(.hide))>h2{display:none}
.tool-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:6px 12px;margin:0 0 16px;padding:0 0 12px;border-bottom:1px solid var(--line)}
.tool-head h3{margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--t-serif);font-size:19px;font-weight:700;line-height:1.3;letter-spacing:.08em;color:var(--fg)}
.tool-head button.tool-back{display:inline-flex;align-items:center;width:auto;min-height:34px;margin:0;padding:4px 13px 4px 9px;border-radius:99px;background:var(--card);color:var(--t-mut);border:1px solid var(--line);box-shadow:none;font-size:13px;font-weight:500;line-height:1}
.tool-head button.tool-back::before{content:"";flex:none;width:7px;height:7px;margin:0 6px 0 3px;border-left:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(45deg)}
.tool-head button.tool-back:hover{color:var(--acc);border-color:var(--acc);filter:none}
.tool-head .tool-tag{padding:2px 10px;border-radius:99px;background:var(--accsoft);color:var(--t-acc-ink);font-size:12px;font-weight:600;letter-spacing:.06em;white-space:nowrap}
.tool-head .tool-tag:empty{display:none}
.tool-head .tool-desc{grid-column:1/-1;margin:0;font-size:12.5px;line-height:1.65;color:var(--t-mut);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tool-head .tool-desc::before{content:attr(data-desc)}

/* ===================== 2b. 两步式工具页：信息页（form）→ 结果页（result） ===================== */
.tool-stagebar{display:none}
#toolBody[data-stage] .tool-stagebar{display:flex;align-items:center;gap:10px;margin:0 0 14px;padding:8px 8px 8px 6px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--accsoft) 45%,var(--card))}
#toolBody[data-stage="form"]:not(.tool-has-last) .tool-stagebar{display:none}
#toolBody[data-stage="form"] .tool-stage-back,#toolBody[data-stage="form"] .tool-stage-sum{display:none}
#toolBody[data-stage="result"] .tool-stage-last{display:none}
.tool-stagebar button{display:inline-flex;align-items:center;flex:none;width:auto;min-height:36px;margin:0;padding:4px 14px 4px 10px;border-radius:99px;font-size:13px;font-weight:600;color:var(--acc);border-color:color-mix(in srgb,var(--acc) 45%,var(--line));background:var(--card)}
.tool-stagebar .tool-stage-back::before{content:"";width:7px;height:7px;margin:0 7px 0 3px;border-left:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(45deg)}
.tool-stagebar .tool-stage-last{margin-left:auto;padding:4px 10px 4px 14px}
.tool-stagebar .tool-stage-last::after{content:"";width:7px;height:7px;margin:0 3px 0 7px;border-right:1.6px solid currentColor;border-top:1.6px solid currentColor;transform:rotate(45deg)}
.tool-stage-sum{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;color:var(--fg);font-variant-numeric:tabular-nums}
/* 信息页：只留输入与「开始排盘」，结果先收起（出错提示仍显示） */
#toolBody[data-stage="form"] .tool-out:not(.tool-out .tool-out):not(:has(>.tool-note:only-child)){display:none!important}
.tool-stage-sep{display:none}
/* 结果页：盘面移到最上（hub.js 按文档顺序移动结果块，读屏与键盘顺序一致），信息栏在盘面下方，随时可改，改完再点「开始排盘」 */
/* 2026-10-13 用户要求「简单明了」：结果页只留结果，不再在下面重复显示输入表单与「修改信息 · 改完再点…」分隔条；要改信息点顶部「修改信息」。
   设置弹层（.tool-setw 里的 .tool-form）不受影响。 */
#toolBody[data-stage="result"] .tool-stage-sep{display:none!important}
#toolBody[data-stage="result"] :is(.tool-form,.tool-actions,.ly-manual,.ty-bar,.jq-box,.jq-quick):not(.tool-out *):not(.tool-setw *){display:none!important}
#toolBody[data-stage="result"]>.tool-note{display:none!important}
@keyframes tool-stage-in{from{opacity:.35;transform:translateY(12px)}}
@media (prefers-reduced-motion:reduce){#toolBody[data-stage] :is(.tool-out,.tool-form,.tool-actions){animation:none!important}}
@media print{.tool-stagebar{display:none!important}}

/* ===================== 3. 表单 ===================== */
.tool-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:0 0 12px}
.tool-form .f{display:flex;flex-direction:column;min-width:0;flex:none}
.tool-form .f>label:first-child+*{margin-top:auto}   /* 同一行里标签折成两行时，输入框仍底边对齐 */
.tool-form .f.full{grid-column:1/-1}
.tool-form label{display:block;margin:0 0 6px;font-size:12.5px;font-weight:500;line-height:1.4;letter-spacing:.03em;color:var(--t-mut)}
.tool-form :where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),select,textarea){display:block;width:100%;min-width:0;height:var(--t-ctl);min-height:var(--t-ctl);margin:0;padding:0 12px;border:1px solid var(--line);border-radius:var(--t-r-sm);background-color:var(--card);color:var(--fg);font-family:inherit;font-size:15px;line-height:1.3;box-shadow:none}
.tool-form textarea{height:auto;min-height:88px;padding:10px 12px;line-height:1.6;resize:vertical}
.tool-form select{-webkit-appearance:none;appearance:none;padding-right:34px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%239a8b70' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:12px 8px;text-overflow:ellipsis}
.tool-form input[type=date],.tool-form input[type=time]{-webkit-appearance:none;appearance:none;text-align:left}
.tool-form input::-webkit-date-and-time-value{text-align:left}
.tool-panel :is(input,select,textarea),.tool-modal :is(input,select,textarea){color-scheme:var(--t-scheme)}
.tool-form :is(input,select,textarea):focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px color-mix(in srgb,var(--acc) 18%,transparent)}
.tool-form :is(input,textarea)::placeholder{color:color-mix(in srgb,var(--mut) 72%,transparent)}
.tool-form :is(select,input):disabled{opacity:.55;cursor:not-allowed}
.tool-form input[type=file]{width:100%;min-width:0;padding:8px;border:1px dashed var(--line);border-radius:var(--t-r-sm);background:var(--bg);font-size:13px}
.tool-form input[type=range]{width:100%;accent-color:var(--acc)}
.tool-form input[type=checkbox],.tool-form input[type=radio]{accent-color:var(--acc)}
.tool-quick{display:flex;gap:8px}
.tool-quick button{flex:1 1 0;width:auto;min-width:0;height:var(--t-ctl);min-height:var(--t-ctl);margin:0;padding:0 8px;border-radius:var(--t-r-sm);font-size:14px;font-weight:500;white-space:nowrap}
/* 奇门「时间类型」：真太阳时勾选 + 经度（行内样式里的固定宽度在窄屏挤压文字） */
.qm-opts .f>div{gap:10px!important;min-height:var(--t-ctl)!important}
.qm-opts .f>div>label{flex:none;white-space:nowrap;font-size:13.5px!important;margin:0!important}
.qm-opts .f>div>label>input{width:18px!important;height:18px;min-height:0!important;margin:0}
.qm-opts .qm-lon{flex:1 1 60px;width:auto!important;min-width:0}
@media (max-width:600px){
  .tool-form :where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),select,textarea){font-size:16px}  /* iOS 小于 16px 会在聚焦时放大页面 */
  .ti-form .ti-quick-f{grid-column:1/-1}
}

/* ===================== 4. 按钮：主按钮 / 幽灵按钮 / 结果操作条 ===================== */
.tool-actions{display:flex;flex-wrap:wrap;gap:10px;margin:4px 0 16px}
.tool-actions>button{width:auto;flex:1 1 120px;min-width:0;min-height:44px;margin:0;padding:10px 14px;border-radius:10px;font-size:15px;font-weight:600;letter-spacing:.06em;line-height:1.3}
.tool-actions>button:not(.ghost){background:var(--acc);color:var(--t-on-acc);border:1px solid var(--acc);box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 6px 14px -9px color-mix(in srgb,var(--acc) 85%,transparent)}
.tool-actions>button.ghost{background:var(--card);color:var(--fg);border:1px solid var(--line);font-weight:500;box-shadow:none}
.tool-actions>button.ghost:hover{border-color:var(--acc);color:var(--acc);filter:none}
.tool-out .tool-actions{gap:8px;margin:18px 0 2px;padding-top:14px;border-top:1px dashed var(--line)}
.tool-out .tool-actions>button{flex:1 1 0;min-height:40px;padding:8px 6px;font-size:13.5px;letter-spacing:.02em}
/* 分享 / 保存 / 记录 / 笔记 / 打印：各工具位置不一（DOM 不动），统一用同一套线性小图标，一眼认得 */
.tool-actions>button{display:inline-flex;align-items:center;justify-content:center;gap:6px}
.tool-actions>:is([data-a="share"],.zw-share,.cal-share,.js-share,.ty-share){--t-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 15V3M7 8l5-5 5 5M5 13v6a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-6'/%3E%3C/svg%3E")}
.tool-actions>:is([data-a="save"],.js-save,.ly-save){--t-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 3h12v18l-6-4.5L6 21z'/%3E%3C/svg%3E")}
.tool-actions>:is([data-a="rec"],.qm-rec,.xq-rec,.js-rec,.ly-rec){--t-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6h11M9 12h11M9 18h11M4 6h.01M4 12h.01M4 18h.01'/%3E%3C/svg%3E")}
.tool-actions>[data-a="note"]{--t-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h9M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z'/%3E%3C/svg%3E")}
.tool-actions>[data-a="print"]{--t-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9V3h12v6M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2M6 14h12v7H6z'/%3E%3C/svg%3E")}
.tool-actions>:is([data-a="share"],[data-a="save"],[data-a="rec"],[data-a="note"],[data-a="print"],.zw-share,.cal-share,.js-share,.ty-share,.js-save,.ly-save,.qm-rec,.xq-rec,.js-rec,.ly-rec)::before{content:"";flex:none;width:15px;height:15px;background-color:currentColor;-webkit-mask:var(--t-ic) center/contain no-repeat;mask:var(--t-ic) center/contain no-repeat;opacity:.85}
@media (max-width:480px){
  /* 结果操作条有三个以上按钮时，手机上改成「图标在上、文字在下」的工具条，四个按钮一行放得下 */
  .tool-out .tool-actions:has(>button:nth-child(3))>button{flex-direction:column;gap:3px;min-height:52px;padding:6px 2px;font-size:12.5px}
  .tool-out .tool-actions:has(>button:nth-child(3))>button::before{width:17px;height:17px}
}
.tool-panel button:focus-visible,.tool-modal button:focus-visible,.tool-panel .qm-cell:focus-visible{outline:2px solid var(--acc);outline-offset:2px}

/* ===================== 5. 功能按钮条：胶囊 chips + 选中态 ===================== */
.tool-bar{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.tool-bar button{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:auto;min-height:34px;margin:0;padding:5px 14px;border-radius:99px;background:var(--card);color:var(--fg);border:1px solid var(--line);box-shadow:none;font-size:13px;font-weight:500;line-height:1.3;letter-spacing:.02em}
.tool-bar button:hover{filter:none;border-color:var(--acc);color:var(--acc)}
.tool-bar button[aria-pressed="true"]{background:var(--acc);border-color:var(--acc);color:var(--t-on-acc);font-weight:600}
.tool-bar button[aria-pressed="true"]::before{content:"";flex:none;width:8px;height:4px;margin:-3px 6px 0 -2px;border-left:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(-45deg)}
.tool-bar button[data-a="prev"]::before{content:"‹";margin-right:4px;font-size:1.2em;line-height:1}
.tool-bar button[data-a="next"]::after{content:"›";margin-left:4px;font-size:1.2em;line-height:1}

/* ===================== 6. 结果区：表格 / 小标题 ===================== */
.tool-out{margin-top:8px}
.tool-out table{width:100%;min-width:0;margin:0;border-collapse:separate;border-spacing:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card);font-size:14px}
.tool-out table+table{margin-top:8px}
.tool-out th,.tool-out td{padding:7px 8px;border:0;border-right:1px solid var(--t-line-soft);border-bottom:1px solid var(--t-line-soft);text-align:center;vertical-align:middle;line-height:1.6;font-variant-numeric:tabular-nums}
.tool-out tr>:last-child{border-right:0}
.tool-out tr:last-child>*{border-bottom:0}
.tool-out th{background:var(--bg2);color:var(--t-mut);font-size:12.5px;font-weight:600;letter-spacing:.04em;white-space:nowrap}
.tool-out th:first-child,.tool-out td:first-child{position:static}
.tool-out td:first-child{background:transparent}
.tool-out .kv th{width:22%;min-width:4.6em;white-space:nowrap}
.tool-out .kv td{text-align:left}
.tool-out small{font-size:12px}
.tool-out h4,.tool-body>h4{display:flex;align-items:center;gap:8px;margin:18px 0 8px;font-family:var(--t-serif);font-size:15px;font-weight:700;line-height:1.4;letter-spacing:.1em;color:var(--fg)}
.tool-out h4::before,.tool-body>h4::before{content:"";flex:none;width:3px;height:14px;border-radius:2px;background:var(--acc)}
#toolView table{min-width:0}   /* 覆盖首页 table{min-width:380px}，工具区表格允许收窄到手机宽度 */
#toolView .ov{overflow-x:auto}

/* ===================== 7. 说明 / 胶囊 / 空状态 / 错误 ===================== */
.tool-note{margin:8px 0;font-size:12.5px;line-height:1.75;letter-spacing:.01em;color:var(--t-mut)}
.tool-note b{color:var(--fg);font-weight:600}
.tool-out .tool-note{padding:10px 12px;border-radius:10px;background:color-mix(in srgb,var(--bg2) 55%,transparent)}
.tool-body>.tool-out:empty::before{content:"填好上面的信息，结果会显示在这里";display:block;padding:22px 14px;border:1px dashed var(--line);border-radius:12px;text-align:center;font-size:13px;color:var(--t-mut);background:color-mix(in srgb,var(--bg) 60%,transparent)}
.tool-out>.tool-note:only-child,.tool-error{padding:16px 14px;border:1px dashed var(--line);border-radius:12px;background:color-mix(in srgb,var(--bg) 60%,transparent);font-size:13px;color:var(--t-mut)}
.tool-error{border-style:solid;border-color:color-mix(in srgb,var(--acc2) 40%,var(--line));background:color-mix(in srgb,var(--acc2) 7%,var(--card));color:var(--acc2)}
.tool-pill{display:inline-flex;align-items:center;gap:4px;min-height:24px;margin:2px 4px 2px 0;padding:1px 10px;border:1px solid var(--line);border-radius:99px;background:var(--bg);color:var(--fg);font-size:12.5px;line-height:1.5;white-space:nowrap;vertical-align:middle}
.tool-pill.qm-mu,.tool-pill.qm-xing,.tool-pill.qm-po,.tool-pill.qm-xm{border-color:currentColor;background:color-mix(in srgb,currentColor 8%,var(--card));text-decoration:none}

/* ===================== 8. 弹窗（手机底部抽屉）与提示条 ===================== */
@keyframes tool-fade{from{opacity:0}}
@keyframes tool-sheet-up{from{transform:translateY(100%)}}
@keyframes tool-pop{from{opacity:0;transform:translateY(8px) scale(.98)}}
.tool-modal{position:fixed;inset:0;z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:0;background:rgba(20,14,8,.45);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:tool-fade .2s ease}
.tool-modal .box{position:relative;display:flex;flex-direction:column;width:100%;max-width:560px;max-height:84vh;max-height:84dvh;margin:0;padding:0;overflow:hidden;background:var(--card);color:var(--fg);border-radius:18px 18px 0 0;box-shadow:0 -12px 36px rgba(0,0,0,.2);animation:tool-sheet-up .28s cubic-bezier(.2,.8,.2,1)}
.tool-modal-grab{position:relative;flex:none;height:22px}
.tool-modal-grab::before{content:"";position:absolute;left:50%;top:8px;width:40px;height:4px;margin-left:-20px;border-radius:99px;background:var(--line)}
.tool-modal-body{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:2px 18px calc(22px + env(safe-area-inset-bottom,0px))}
.tool-modal .box>.close{position:absolute;top:12px;right:12px;z-index:2;display:grid;place-items:center;width:34px;height:34px;min-height:0;margin:0;padding:0;border:0;border-radius:50%;background:var(--bg2);color:var(--t-mut);font-size:0;line-height:1;box-shadow:none}
.tool-modal .box>.close::before{content:"×";font-size:22px;font-weight:400;line-height:1}
.tool-modal .box>.close:hover{color:var(--fg);filter:none}
.tool-modal h4{margin:6px 44px 12px 0;font-family:var(--t-serif);font-size:17px;font-weight:700;line-height:1.45;letter-spacing:.04em;color:var(--fg)}
.tool-modal h5{display:flex;align-items:center;gap:6px;margin:16px 0 6px;font-size:12.5px;font-weight:600;letter-spacing:.08em;color:var(--t-mut)}
.tool-modal h5::before{content:"";width:3px;height:11px;border-radius:2px;background:var(--acc)}
.tool-modal p{margin:4px 0;font-size:14px;line-height:1.75}
.tool-modal .wiki-link{display:inline;width:auto;min-height:0;margin-left:2px;padding:0;border:0;background:none;box-shadow:none;color:var(--acc);font-size:13px;white-space:nowrap;text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--acc) 40%,transparent);text-underline-offset:3px}
.tool-modal .tool-form{margin-top:4px}
@media (min-width:600px){
  .tool-modal{align-items:center;padding:24px}
  .tool-modal .box{max-height:82vh;border-radius:16px;box-shadow:0 24px 60px -12px rgba(0,0,0,.35);animation:tool-pop .2s ease}
  .tool-modal-grab{height:14px}
  .tool-modal-grab::before{display:none}
}
.tool-toast{position:fixed;left:50%;bottom:calc(var(--tabbar-h,0px) + 32px + env(safe-area-inset-bottom,0px));z-index:1000;max-width:min(88vw,420px);padding:10px 16px;border-radius:12px;background:var(--t-toast-bg);color:var(--t-toast-fg);font-size:13.5px;line-height:1.5;text-align:center;box-shadow:0 12px 30px -10px rgba(0,0,0,.4);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;transform:translate(-50%,10px);transition:opacity .2s ease,transform .2s ease;pointer-events:none}
.tool-toast.show{opacity:1;transform:translate(-50%,0)}

/* ===================== 9. 记录列表 ===================== */
.tool-records>div{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--t-line-soft);font-size:13.5px;line-height:1.5}
.tool-records>div:last-child{border-bottom:0}
.tool-records small{font-size:12px}
.tool-records>div>span:last-child{display:flex;flex:none;gap:6px}
.tool-records button{width:auto;min-height:32px;margin:0;padding:4px 12px;border-radius:99px;font-size:12.5px}

/* ===================== 10. 奇门九宫（参考 APP：细黑线、宫内四角排版） ===================== */
.qm-out{container-type:inline-size}
.qm-wrap{--qm-side:24px;display:grid;grid-template-columns:var(--qm-side) minmax(0,1fr) var(--qm-side);grid-template-rows:28px repeat(3,auto) 28px;column-gap:6px;row-gap:0;max-width:560px;margin:18px auto 4px}
.qm-wrap>:nth-child(4),.qm-wrap>:nth-child(5),.qm-wrap>:nth-child(6){grid-row:span 3}
.qm-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:subgrid;row-gap:0;border:1.5px solid var(--qm-ink);background:var(--card);color:var(--qm-txt)}
/* 每格三行（参考热卜）：神 / 天盘干 · 星 / 地盘干 · 门；干星门神同一字号（手机约 17px、电脑 19px）、同一字重 500、同一墨色，标注只改颜色；
   天门地户 / 神将、长生状态、落宫角标默认不显示，打开时以 11px 灰字排在第四行起，不挤前三行 */
.qm-cell{position:relative;min-width:0;min-height:calc(4.8em + 20px);min-height:max(calc(4.8em + 20px),calc((min(500px,100cqw) - 60px)/3*.82));display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto auto;grid-template-areas:"god god" "tg star" "dg door";align-content:space-between;align-items:center;column-gap:6px;row-gap:.45em;padding:10px 10px 10px 11px;border:0;border-right:1px solid var(--qm-ink);border-bottom:1px solid var(--qm-ink);font-family:inherit;font-size:clamp(15px,calc(100cqw*.0505),19px);font-weight:500;line-height:1.3;color:var(--qm-txt);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:background-color .15s ease}
.qm-cell:nth-child(3n){border-right:0}
.qm-cell:nth-child(n+7){border-bottom:0}
@media (hover:hover){.qm-cell[data-p]:hover{background:var(--t-tint)}}
.qm-cell[data-p]:active{background:var(--accsoft)}
.qm-cell>:is(.god,.tg,.star,.dg,.door){font-family:inherit;font-size:1em;font-weight:500;line-height:1.3;letter-spacing:0;white-space:nowrap}
.qm-cell>.god{grid-area:god;justify-self:start}
.qm-cell>.tg{grid-area:tg;justify-self:start}
.qm-cell>.star{grid-area:star;justify-self:end}
.qm-cell>.dg{grid-area:dg;justify-self:start}
.qm-cell>.door{grid-area:door;justify-self:end}
.qm-cell>.mark{position:absolute;top:8px;right:8px;font-size:.8em;line-height:1;color:var(--t-mut)}
.qm-cell>.mark.ma{color:var(--qm-ma);font-weight:700}
/* 第四行起：天门地户 / 神将（.sj）、长生状态（.cs）、落宫角标（阴盘叠层 .yp-tags），都只在工具条「盘面」里打开后显示 */
.qm-cell>:is(.sj,.cs){position:static;grid-column:1/-1;justify-self:stretch;max-width:none;margin:0;padding:3px 0 0;border-top:1px dotted var(--t-line-soft);font-size:12px;font-weight:500;line-height:1.35;letter-spacing:0;text-align:left;color:var(--mut);white-space:normal;word-break:keep-all}
.qm-cell>.cs{display:none}
.qm-wrap:is([data-cs="1"],[data-tags="1"]) .qm-cell,.qm-cell:has(>.sj){align-content:start}   /* 打开附加信息时前三行仍紧凑在上，各格对齐 */
.qm-wrap[data-cs="1"] .qm-cell>.cs{display:block}
.qm-wrap .qm-cell>.yp-tags{display:none;position:static;grid-column:1/-1;justify-self:start;z-index:auto;gap:3px;transform:none;padding-top:3px;border-top:1px dotted var(--t-line-soft)}
.qm-wrap[data-tags="1"] .qm-cell>.yp-tags{display:flex}
.qm-wrap .qm-cell>.yp-tags i{min-width:16px;height:16px;padding:0 2px;border-radius:3px;background:none!important;box-shadow:inset 0 0 0 1px currentColor;color:var(--mut)!important;font-family:inherit;font-size:12px;font-weight:500}
.qm-cell.center{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:color-mix(in srgb,var(--bg2) 55%,var(--card));color:var(--t-mut);font-size:clamp(15px,calc(100cqw*.0505),19px);font-weight:500;line-height:1.5;letter-spacing:0;cursor:default}
.qm-cell.center:hover,.qm-cell.center:active{background:color-mix(in srgb,var(--bg2) 55%,var(--card))}
.qm-cell.hl{background:var(--accsoft)}
.qm-cell.hl2{outline:2.5px solid var(--acc);outline-offset:-3px}
.qm-mu{color:var(--qm-mu)}
.qm-xing{color:var(--qm-xing)}
.qm-xm{color:var(--qm-xm)}
.qm-po{color:var(--qm-po)}
/* 外圈暗干：与宫格对齐（子网格共用行轨道）；左右两列竖排，省出九宫宽度 */
.qm-outer{display:flex;align-items:center;justify-content:center;min-width:0;font-family:inherit;font-size:15px;font-weight:500;line-height:1.1;color:var(--qm-txt)}
.qm-outer.t,.qm-outer.b{flex-direction:row;justify-content:center}
.qm-outer.l,.qm-outer.r{display:grid;grid-template-rows:subgrid;row-gap:0;justify-items:center;align-items:center}
.qm-outer.l span,.qm-outer.r span{writing-mode:vertical-rl;text-orientation:upright;letter-spacing:.06em}
.qm-outer.l span:only-child,.qm-outer.r span:only-child{grid-row:1/-1}   /* 小奇门「东/西」只有一个字：跨三行居中 */
.qm-outer.qm-ma{color:var(--qm-ma);font-size:15px;font-weight:700}
.qm-legend{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 12px;margin:10px 0 4px;font-size:12px;line-height:1.6;color:var(--t-mut);text-align:center}
.qm-legend span{margin:0;font-weight:600;white-space:nowrap}
.qm-legend span::before{content:"";display:inline-block;width:7px;height:7px;margin-right:4px;border-radius:50%;background:currentColor;vertical-align:1px}
.qm-legend span.qm-po{text-decoration:none;border-bottom:0}
/* 表头柱 / 值符值使行 */
.tool-out .qm-pillars td{font-family:var(--t-glyph);font-weight:700}
.qm-duty{font-weight:700;color:var(--qm-txt)}   /* 值柱：只留浅底色标出，字与其余三柱同为墨色 */
.tool-out .qm-pillars td.qm-duty{background:var(--accsoft)}
/* 叠层：穿壬角标 / 山向坐向标 / 飞宫中五 */
.qm-cell>.cr-tag{position:static;grid-row:1;grid-column:1/-1;justify-self:end;align-self:start;max-width:calc(100% - 22px);font-size:12px;line-height:1.2}
.qm-cell>.mark~.cr-tag{margin-right:14px;max-width:calc(100% - 36px)}
.qm-cell>.sx-tag{top:9px;left:calc(12px + 1.2em);font-size:12px;padding:1px 4px}
.qm-cell>.c5tag{grid-area:god;justify-self:start;font-size:1em;font-weight:500;color:var(--t-mut);letter-spacing:0}
@media (max-width:380px){.qm-wrap{--qm-side:20px;column-gap:4px}.qm-cell{padding:9px 7px 9px 8px}}

/* ===================== 10b. 五行着色（与首页八字同一套 --w0 木 / --w1 火 / --w2 土 / --w3 金 / --w4 水） ===================== */
/* 与首页同色相，向墨色略收 18%，小字在米色底上对比度也够（金色原约 3.1 → 约 4.8） */
.wx.wx-0{color:color-mix(in srgb,var(--w0) 82%,var(--fg))}.wx.wx-1{color:color-mix(in srgb,var(--w1) 84%,var(--fg))}.wx.wx-2{color:var(--w2)}.wx.wx-3{color:color-mix(in srgb,var(--w3) 70%,var(--fg))}.wx.wx-4{color:color-mix(in srgb,var(--w4) 84%,var(--fg))}
/* 奇门类盘面不上五行色（结果区带 .hl-nowx，见 hub.js WX_SKIP）：天盘干、地盘干、暗干、星门神一律墨色，地盘干随宫格墨色 */
.qm-cell>.dg{color:inherit}
.qm-cell>.dg .wx,.qm-outer .wx{opacity:.78}
/* 入墓 / 击刑 / 刑+墓：参考热卜，只改字色（入墓橙红、击刑紫、刑+墓蓝）；门迫：门名红字（不再加下划线）。!important 防个别叠层残留 .wx 时串色 */
.qm-cell .tg>:is(.qm-mu,.qm-xing,.qm-xm){font-weight:inherit}
.qm-cell .tg>.qm-mu,.qm-cell .tg>.qm-mu .wx{color:var(--qm-mu)!important}
.qm-cell .tg>.qm-xing,.qm-cell .tg>.qm-xing .wx{color:var(--qm-xing)!important}
.qm-cell .tg>.qm-xm,.qm-cell .tg>.qm-xm .wx{color:var(--qm-xm)!important}
.qm-cell>.door.qm-po,.qm-cell>.door.qm-po .wx{color:var(--qm-po)!important;text-decoration:none}
.tool-pill:is(.qm-mu,.qm-xing,.qm-po,.qm-xm) .wx{color:inherit!important}
/* 图例：热卜式一行「颜色说明：入墓、击刑、门迫、刑+墓；点击宫位查看信息」，每个词用自己的颜色；下一行小字说明 ○ / 马 / 外圈 */
.qm-legend{gap:4px 10px}
.qm-legend>span{font-weight:800}
.qm-legend>span::before{display:none!important}
.qm-legend>span.qm-po{text-decoration:none;border:0}
.qm-legend>i{font-style:normal;white-space:nowrap}
.qm-legend.qm-lgc{display:block;margin:12px 0 2px;font-size:clamp(12px,3.2vw,13px);line-height:1.7;letter-spacing:0;color:var(--t-mut)}   /* 375 / 390 宽一行放下；更窄时在「；」后整段换行 */
.qm-legend.qm-lgc>em{font-style:normal;white-space:nowrap}
.qm-legend.qm-lgc span{font-weight:600}
.qm-legend.qm-lgc span::before{display:none!important}
.qm-legend.qm-lgs{margin-top:0;font-size:12px;color:var(--t-mut)}
.qm-legend.qm-lgs b{font-weight:700;color:var(--qm-ma)}
.qm-legend.qm-wxl{margin-top:2px}
.qm-legend.qm-wxl b{margin:0 1px;font-family:var(--t-glyph);font-size:14px;font-weight:800}
/* 工具条（2026-10-19 用户要求：按热卜的形式做几个框框，不写「盘面 / 神将 / 换局」组名）：每组一行等宽小方框，按钮即方框 */
.tool-bar.qm-bar{display:grid;gap:8px;margin:14px 0 10px;padding:10px;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--bg2) 40%,var(--card))}
.qm-bar .qm-bg{display:block;min-width:0}
.qm-bar .qm-bl{display:none}
.qm-bar .qm-bb{display:grid;grid-template-columns:repeat(auto-fit,minmax(74px,1fr));gap:6px;min-width:0}
.qm-bar .qm-bb button{min-height:38px;padding:4px 4px;border-radius:8px;font-size:13px;white-space:nowrap}
.qm-bar [data-g="sj"] .qm-bb{grid-template-columns:repeat(auto-fit,minmax(62px,1fr))}
.qm-bar [data-g="nav"] .qm-bb{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:380px){.qm-bar .qm-bb button{padding:4px 2px;font-size:12.5px}}
/* 九宫尺寸：手机上不铺满，四周留白，整体更紧凑 */
.qm-out .qm-wrap{max-width:min(500px,100%);padding:0 2%}
@media (max-width:600px){
  .qm-out .qm-wrap{--qm-side:20px;max-width:100%;padding:0;column-gap:4px;margin:14px auto 4px}
  .qm-out .qm-cell{padding:9px 8px 9px 9px}
}
/* 盘面大小（我的 → 设置 → 盘面大小；html[data-board]=s|l，缺省为标准）。2026-10-18 用户拍板：
   手机 / 平板用 zoom 整体等比缩放（字一并缩）并同步收窄最大宽度；电脑不缩放，只限制最大宽度（小 400 / 标准 480 / 大 560）。 */
:root{--bz:.93}
:root[data-board="s"]{--bz:.8}
:root[data-board="l"]{--bz:1}
:root .qm-out .qm-wrap{zoom:var(--bz);max-width:calc(100% * var(--bz))}
:root .ring12,:root .fs-grid{zoom:var(--bz);max-width:min(420px,calc(100% * var(--bz)))}
@media (min-width:720px){
  :root .qm-out .qm-wrap,:root .ring12,:root .fs-grid{zoom:1}
  :root .qm-out .qm-wrap{max-width:480px}
  :root[data-board="s"] .qm-out .qm-wrap{max-width:400px}
  :root[data-board="l"] .qm-out .qm-wrap{max-width:560px}
}
/* 盘面上方信息收紧：类型格里的节气起止当小字，各表之间留白收一点 */
.qm-out .kv .qm-term{display:block;margin-top:2px;color:var(--t-mut,var(--mut));font-size:12px;line-height:1.5;font-weight:400}
.qm-out .qm-info>table{margin-bottom:6px}
.qm-out .qm-info th,.qm-out .qm-info td{padding:5px 8px;line-height:1.5}
.qm-out .qm-info>table+table{margin-top:6px}
/* ===================== 11. 共用小组件（十二支盘 / 卦象 / 九宫） ===================== */
.ring12{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;max-width:420px;margin:8px auto}
.ring12 div{min-width:0;padding:6px 4px;border:1px solid var(--line);border-radius:8px;background:var(--bg);text-align:center;font-size:13px;line-height:1.5}
.ring12 div b{display:block;font-size:15px}
.ring12 div.empty{border:0;background:transparent}
.gua-lines{display:inline-grid;gap:5px;vertical-align:middle;margin:4px 8px}
.gua-lines i{display:block;width:60px;height:9px;background:var(--fg);border-radius:2px}
.gua-lines i.yin{background:linear-gradient(90deg,var(--fg) 0 40%,transparent 40% 60%,var(--fg) 60% 100%)}
.gua-lines i.dong{background:var(--acc2)}
.gua-lines i.yin.dong{background:linear-gradient(90deg,var(--acc2) 0 40%,transparent 40% 60%,var(--acc2) 60% 100%)}
.fs-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));max-width:480px;margin:8px auto;border:1.5px solid var(--qm-ink);background:var(--card)}
.fs-cell{min-width:0;aspect-ratio:1/1;border:0;border-right:1px solid var(--qm-ink);border-bottom:1px solid var(--qm-ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:14px;padding:4px;text-align:center;line-height:1.3}
.fs-cell:nth-child(3n){border-right:0}
.fs-cell:nth-child(n+7){border-bottom:0}
.fs-cell small{color:var(--t-mut);font-size:12px}
.fs-cell b{font-size:clamp(18px,5vw,26px)}
.fs-cell .trio{display:flex;gap:10px;font-size:clamp(16px,4.5vw,22px)}
.fs-cell .trio span:nth-child(1){color:var(--w0)}.fs-cell .trio span:nth-child(3){color:var(--w1)}
.fs-cell.good{background:var(--accsoft)}

/* ===================== 12. 各工具专项（由专项小节维护，见下方标记） ===================== */
/* ==== 专项 A 开始 ==== */
/* 约定：每条规则都以 #toolView:has(.xx-go) 之类限定到对应工具，避免影响其他工具；#toolView 的 ID 权重保证压过 .tool-out 通用层与行内样式（行内样式用 !important 覆盖）。 */

/* ---- A1 大六壬 ---- */
#toolView:has(.lr-go) .tool-out h4[style]{margin:18px 0 8px!important}
/* r71：原写 table:has(td>div[style*="font-size:20px"])，:has 里带 [style] 会让全站任何内联 style 变化都触发 :has 失效检查，改按四课格子的类 .lr-k-up 认（tool-liuren.js 四课上神格固定带此类且 20px）。四课：一行四格，九宫线条语言（外框 1.5px / 内线 1px），天将·上神·横线·下神·贼克自上而下对齐 */
#toolView:has(.lr-go) .tool-out table:has(td>div.lr-k-up){table-layout:fixed;border:1.5px solid var(--qm-ink);border-radius:4px;background:var(--card)}
#toolView:has(.lr-go) .tool-out table:has(td>div.lr-k-up) td{padding:8px 2px 10px;vertical-align:top;border-right:1px solid var(--qm-ink);border-bottom:0;text-align:center;line-height:1.3}
#toolView:has(.lr-go) .tool-out table:has(td>div.lr-k-up) td:last-child{border-right:0}
#toolView:has(.lr-go) .tool-out table:has(td>div.lr-k-up) td>div:nth-child(1){font-size:12px!important;line-height:1.4;letter-spacing:.04em}
#toolView:has(.lr-go) .tool-out table:has(td>div.lr-k-up) td>div:nth-child(2){margin-top:1px;font-family:var(--t-glyph);font-size:28px!important;font-weight:800;line-height:1.15;color:var(--fg)}
#toolView:has(.lr-go) .tool-out table:has(td>div.lr-k-up) td>div:nth-child(3){margin:5px 6px 0!important;padding-top:5px!important;border-top:1px solid var(--qm-ink)!important;font-family:var(--t-glyph);font-size:21px;font-weight:700;line-height:1.2;color:var(--fg)}
#toolView:has(.lr-go) .tool-out table:has(td>div.lr-k-up) td>div:nth-child(4){display:inline-block;margin-top:7px;padding:0 8px;border:1px solid currentColor;border-radius:99px;background:color-mix(in srgb,currentColor 10%,transparent);font-size:12px!important;font-weight:600;line-height:1.5}
/* 三传：「神」列突出（衬线粗体大字、浅底），初/中/末传用主色 */
#toolView:has(.lr-go) .tool-out table:has(th:nth-child(6):last-child) td{padding:9px 4px}
#toolView:has(.lr-go) .tool-out table:has(th:nth-child(6):last-child) td:nth-child(1){color:var(--acc);font-weight:700;white-space:nowrap}
#toolView:has(.lr-go) .tool-out table:has(th:nth-child(6):last-child) td:nth-child(2){color:var(--mut)}
#toolView:has(.lr-go) .tool-out table:has(th:nth-child(6):last-child) th:nth-child(3){color:var(--t-acc-ink)}
#toolView:has(.lr-go) .tool-out table:has(th:nth-child(6):last-child) td:nth-child(3){background:var(--t-tint);font-family:var(--t-glyph);font-size:26px!important;font-weight:800;line-height:1.2;color:var(--fg)}
#toolView:has(.lr-go) .tool-out table:has(th:nth-child(6):last-child) td:nth-child(6){font-size:12.5px;font-weight:600;color:var(--acc2)}
/* 天地盘：4x4 外圈 12 格，中间 2x2 合并为盘心；外圈细线与九宫一致 */
#toolView:has(.lr-go) .tool-out .ring12{gap:0;max-width:420px;margin:10px auto 6px;border:1.5px solid var(--qm-ink);border-radius:4px;background:var(--card);overflow:hidden}
#toolView:has(.lr-go) .tool-out .ring12>div{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;padding:7px 2px 6px;border:0;border-right:1px solid var(--qm-ink);border-bottom:1px solid var(--qm-ink);border-radius:0;background:var(--card);line-height:1.3}
#toolView:has(.lr-go) .tool-out .ring12>div:nth-child(4n){border-right:0}
#toolView:has(.lr-go) .tool-out .ring12>div:nth-child(n+13){border-bottom:0}
#toolView:has(.lr-go) .tool-out .ring12>div>small:first-child{font-size:12px;letter-spacing:.04em}
#toolView:has(.lr-go) .tool-out .ring12>div b{font-family:var(--t-glyph);font-size:20px;font-weight:800;line-height:1.25;color:var(--fg)}
#toolView:has(.lr-go) .tool-out .ring12>div b small{margin-left:1px;font-size:12px;font-weight:600}
#toolView:has(.lr-go) .tool-out .ring12>div>small:last-child{align-self:stretch;margin:3px 8px 0;padding-top:2px;border-top:1px dotted var(--qm-ink);font-size:12.5px;color:var(--mut);text-align:center}
#toolView:has(.lr-go) .tool-out .ring12>div.empty{display:none}
#toolView:has(.lr-go) .tool-out .ring12>div.empty:nth-child(6){display:flex;grid-column:2/4;grid-row:2/4;border-right:1px solid var(--qm-ink);border-bottom:1px solid var(--qm-ink);background:color-mix(in srgb,var(--bg2) 55%,var(--card));font-family:var(--t-serif);font-size:17px;line-height:1.8;letter-spacing:.24em;color:var(--mut)}
#toolView:has(.lr-go) .tool-out .ring12>div.empty:nth-child(6)::before{content:"天地盘";font-weight:700;color:var(--fg)}
#toolView:has(.lr-go) .tool-out .ring12>div.empty:nth-child(6)::after{content:"外天 · 内地";font-size:12.5px;letter-spacing:.1em}

/* ---- A2 金口诀：四位表 ---- */
#toolView:has(.jk-go) .tool-out table:not(.kv){table-layout:fixed}
#toolView:has(.jk-go) .tool-out table:not(.kv) td{padding:10px 4px;font-size:14px}
#toolView:has(.jk-go) .tool-out table:not(.kv) td:first-child{font-weight:700;color:var(--acc);white-space:nowrap}
#toolView:has(.jk-go) .tool-out table:not(.kv) td:nth-child(2){background:var(--t-tint);font-family:var(--t-glyph);font-size:26px!important;font-weight:800;line-height:1.25;color:var(--fg)}
#toolView:has(.jk-go) .tool-out table:not(.kv) td:nth-child(n+4){color:var(--mut)}

/* ---- A3 小六壬：结果 + 歌诀 ---- */
#toolView:has(.xl-go) .tool-out .kv td[style*="font-size:22px"]{background:var(--accsoft);font-family:var(--t-glyph);font-size:34px!important;font-weight:800;line-height:1.3;letter-spacing:.3em;text-align:center}
#toolView:has(.xl-go) .tool-out .kv tr:last-child td{font-family:var(--t-serif);font-size:15px;line-height:1.95;letter-spacing:.03em}
#toolView:has(.xl-go) .tool-out .kv td b{color:var(--acc)}

/* ---- A4 万年历：控件行（行内样式用 !important 覆盖）、详情时辰 ---- */
#toolView:has(.cal-grid) .cal-y,#toolView:has(.cal-grid) .cal-m{width:auto!important;min-width:0;height:42px;min-height:42px!important;margin:0;padding:0 6px!important;border:1px solid var(--line)!important;border-radius:8px!important;background-color:var(--card)!important;color:var(--fg)!important;font-size:16px;font-weight:500;text-align:center;box-shadow:none}
#toolView:has(.cal-grid) .cal-m{-webkit-appearance:none;appearance:none;padding:0 18px 0 8px!important;text-align-last:center;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%239a8b70' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important;background-repeat:no-repeat!important;background-position:right 7px center!important;background-size:10px 7px!important}
#toolView:has(.cal-grid) .cal-y:focus,#toolView:has(.cal-grid) .cal-m:focus{outline:none;border-color:var(--acc)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--acc) 18%,transparent)}

/* ---- A5 节气查询：控件行、表格、当前节气行 ---- */
#toolView:has(.jq-out) .tool-actions:has(.jq-prev){display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;margin:4px 0 12px}
#toolView:has(.jq-out) .tool-actions:has(.jq-prev)>button{width:auto;flex:none;min-height:42px;padding:0 14px;border-radius:8px;font-size:14px;letter-spacing:0;white-space:nowrap}
#toolView:has(.jq-out) .jq-y{width:auto!important;min-width:0;height:42px;min-height:42px!important;margin:0;border:1px solid var(--line)!important;border-radius:8px!important;background-color:var(--card)!important;color:var(--fg)!important;font-size:16px!important;font-weight:600;letter-spacing:.06em;box-shadow:none}
#toolView:has(.jq-out) .jq-y:focus{outline:none;border-color:var(--acc)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--acc) 18%,transparent)}
#toolView:has(.jq-out) .jq-out table{table-layout:auto;font-size:13px}
#toolView:has(.jq-out) .jq-out th,#toolView:has(.jq-out) .jq-out td{padding:8px 4px}
#toolView:has(.jq-out) .jq-out th{white-space:normal;font-size:12px;line-height:1.35}
#toolView:has(.jq-out) .jq-out th:nth-child(-n+3),#toolView:has(.jq-out) .jq-out th:nth-child(5){white-space:nowrap}
#toolView:has(.jq-out) .jq-out td:nth-child(-n+3){white-space:nowrap}
#toolView:has(.jq-out) .jq-out td:nth-child(1){font-family:var(--t-serif);font-size:14.5px;letter-spacing:.04em}
#toolView:has(.jq-out) .jq-out td:nth-child(2){font-size:12.5px;letter-spacing:-.01em}
#toolView:has(.jq-out) .jq-out td:nth-child(3){color:var(--mut)}
#toolView:has(.jq-out) .jq-out td:nth-child(5){font-family:var(--t-glyph);font-weight:700;color:var(--acc)}
#toolView:has(.jq-out) .jq-out tr:nth-child(odd):not(:first-child)>td{background:color-mix(in srgb,var(--bg2) 45%,transparent)}
#toolView:has(.jq-out) .jq-out tr:nth-child(odd):not(:first-child)>td:nth-child(3){color:var(--acc);font-weight:600}
#toolView:has(.jq-out) .jq-out tr.jq-cur{background:color-mix(in srgb,var(--acc) 16%,var(--card))!important}
#toolView:has(.jq-out) .jq-out tr.jq-cur>td{background:transparent;font-weight:700}
#toolView:has(.jq-out) .jq-out tr.jq-cur>td:first-child{box-shadow:inset 4px 0 0 var(--acc);color:var(--acc)}

/* ---- A6 六爻 / 金钱课 / 梅花易数：卦象、七列装卦表 ---- */
#toolView:has(.ly-go,.mh-go) .tool-out .gua-lines{float:left;gap:3px;margin:3px 12px 3px 0}
#toolView:has(.ly-go,.mh-go) .tool-out .gua-lines i{width:46px;height:5px;border-radius:1.5px}
#toolView:has(.ly-go) .tool-out table:has(th:nth-child(7)){font-size:13px}
#toolView:has(.ly-go) .tool-out table:has(th:nth-child(7)) th,#toolView:has(.ly-go) .tool-out table:has(th:nth-child(7)) td{padding:7px 3px}
#toolView:has(.ly-go) .tool-out table:has(th:nth-child(7)) th{font-size:12.5px;letter-spacing:0}
#toolView:has(.ly-go) .tool-out table:has(th:nth-child(7)) td:nth-child(1),#toolView:has(.ly-go) .tool-out table:has(th:nth-child(7)) td:nth-child(3){white-space:nowrap}
#toolView:has(.ly-go) .tool-out table:has(th:nth-child(7)) td:nth-child(5){white-space:nowrap;font-size:14px!important;letter-spacing:0!important}
#toolView:has(.ly-go) .tool-out table:has(th:nth-child(7)) td:nth-child(6){font-family:var(--t-serif);font-size:15px;font-weight:800;color:var(--acc2)}
#toolView:has(.ly-go) .tool-out table:has(th:nth-child(7)) tr[style*="--accsoft"]{background:color-mix(in srgb,var(--acc) 14%,var(--card))!important}
#toolView:has(.ly-go) .tool-out table:has(th:nth-child(7)) tr[style*="--accsoft"]>td{background:transparent}
#toolView:has(.mh-go) .tool-out .kv td b{color:var(--acc)}
/* 起卦方式 / 数字输入 / 地分 下拉：独占一行，避免半宽被截断 */
#toolView:has(.mh-go) .tool-form>.f:has(.mh-mode),#toolView:has(.mh-go) .tool-form>.f.mh-x,#toolView:has(.ly-go) .tool-form>.f:has(.ly-mode),#toolView:has(.ly-go) .tool-form>.f.ly-num,#toolView:has(.jk-go) .tool-form>.f:has(.jk-df){grid-column:1/-1}

/* ---- A7 合盘 ---- */
#toolView:has(.hp-go) h4[style*="margin:8px 0 2px"]{display:flex;align-items:center;gap:8px;margin:18px 0 8px!important;font-family:var(--t-serif);font-size:15px;font-weight:700;line-height:1.4;letter-spacing:.1em;color:var(--fg)}
#toolView:has(.hp-go) h4[style*="margin:8px 0 2px"]::before{content:"";flex:none;width:3px;height:14px;border-radius:2px;background:var(--acc)}
#toolView:has(.hp-go) .tool-out td b[style*="font-size:22px"]{font-family:var(--t-glyph);font-size:32px!important;line-height:1.2}
#toolView:has(.hp-go) .tool-out table:not(.kv) td:nth-child(2),#toolView:has(.hp-go) .tool-out table:not(.kv) td:nth-child(3){font-family:var(--t-glyph);font-size:16px;font-weight:700}
#toolView:has(.hp-go) .tool-out table:not(.kv) td:first-child{color:var(--acc);font-weight:600}

/* ---- A8 手机号 ---- */
#toolView:has(.sj-go) .tool-out td.sj-num{font-size:26px;font-weight:500;letter-spacing:.14em;line-height:1.3}
#toolView:has(.sj-go) .tool-out td.sj-num b{font-weight:800;color:var(--acc)}
#toolView:has(.sj-go) .tool-out table.sj-tb{margin-top:8px}
#toolView:has(.sj-go) .tool-out table:not(.kv) td:nth-child(-n+3){white-space:nowrap}
#toolView:has(.sj-go) .tool-out table:not(.kv) td:nth-child(2),#toolView:has(.sj-go) .tool-out table:not(.kv) td:nth-child(3){font-weight:700}
#toolView:has(.sj-go) .tool-out table:not(.kv) td:last-child{font-size:13.5px;line-height:1.6}
#toolView:has(.sj-go) .tool-out td.sj-desc{text-align:left}
#toolView:has(.sj-go) .tool-out tr.sj-ji td.sj-jx{color:var(--acc)}
#toolView:has(.sj-go) .tool-out tr.sj-xiong td.sj-jx{color:var(--acc2)}
#toolView:has(.sj-go) .tool-out tr.sj-ping td.sj-jx{color:var(--mut)}
#toolView:has(.sj-go) .tool-out tr.sj-xiong>td:first-child{box-shadow:inset 3px 0 0 var(--acc2)}
#toolView:has(.sj-go) .tool-out tr.sj-ji>td:first-child{box-shadow:inset 3px 0 0 var(--acc)}
/* ==== 专项 A 结束 ==== */
/* ==== 专项 B 开始 ==== */
/* 约定同专项 A：#toolView:has(.xx-go) 限定到对应工具；行内样式用属性选择器 + !important 覆盖。太乙/玄空/八宅/罗盘/立极尺/金锁玉关的样式在各自 JS 文件里。 */

/* ---- B1 小成图：九宫沿用线条语言，卦象与卦名放大 ---- */
#toolView:has(.xc-go) .fs-grid{max-width:420px;margin:12px auto}
#toolView:has(.xc-go) .fs-cell{gap:3px;padding:6px 4px;line-height:1.3}
#toolView:has(.xc-go) .fs-cell small{font-size:12px;letter-spacing:.06em;color:var(--mut)}
#toolView:has(.xc-go) .fs-cell b{font-family:var(--t-serif);font-weight:700;letter-spacing:.06em}
#toolView:has(.xc-go) .fs-cell b[style*="16px"]{font-size:19px!important}
#toolView:has(.xc-go) .fs-cell b[style*="15px"]{font-size:16px!important;color:var(--acc)}
#toolView:has(.xc-go) .fs-cell:nth-child(5){background:color-mix(in srgb,var(--bg2) 55%,var(--card))}
#toolView:has(.xc-go) .gua-lines{margin:2px 0;gap:4px}
#toolView:has(.xc-go) .gua-lines i[style]{width:46px!important;height:8px!important;border-radius:2px}
#toolView:has(.xc-go) .tool-out .kv td{line-height:1.7}
#toolView:has(.xc-go) .tool-out .kv td b{color:var(--acc)}

/* ---- B2 名字笔画数理：五格 / 三才 ---- */
#toolView:has(.nm-go) .tool-form{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}
#toolView:has(.nm-go) .tool-form input{font-family:var(--t-serif);font-size:18px;letter-spacing:.12em}
#toolView:has(.nm-go) .tool-out .kv td{line-height:1.9}
#toolView:has(.nm-go) .tool-out .kv td>b{font-family:var(--t-serif);font-size:22px}
#toolView:has(.nm-go) .tool-out .kv td small{color:var(--mut);white-space:nowrap}
#toolView:has(.nm-go) .tool-out .kv tr:nth-child(2) td>b{font-size:19px;color:var(--acc);letter-spacing:.08em}
#toolView:has(.nm-go) .tool-out .kv tr:nth-child(2) td small{display:block;margin-top:2px;font-size:12.5px;line-height:1.65;color:var(--mut);white-space:normal}
#toolView:has(.nm-go) .tool-out table:not(.kv){margin-top:10px!important}
#toolView:has(.nm-go) .tool-out table:not(.kv) th,#toolView:has(.nm-go) .tool-out table:not(.kv) td{padding:9px 6px;white-space:nowrap}
#toolView:has(.nm-go) .tool-out table:not(.kv) td:first-child{font-family:var(--t-serif);font-weight:700;letter-spacing:.08em}
#toolView:has(.nm-go) .tool-out table:not(.kv) td:nth-child(2){font-size:17px;font-weight:700}
#toolView:has(.nm-go) .tool-out table:not(.kv) td:nth-child(4){font-size:15px;font-weight:700}
#toolView:has(.nm-go) .tool-out table:not(.kv) td:last-child{white-space:normal;text-align:left;font-size:13.5px;line-height:1.65}
#toolView:has(.nm-go) .tool-out table:not(.kv) th:last-child{text-align:left;padding-left:12px}
#toolView:has(.nm-go) .tool-out table:not(.kv) tr:nth-child(even)>td{background:color-mix(in srgb,var(--bg2) 32%,transparent)}

/* ---- B3 起名工具：表单三小一大，候选表一行一名 ---- */
#toolView:has(.qm-s) .tool-form{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-flow:dense}
#toolView:has(.qm-s) .tool-form .f:has(.qm-wx){grid-column:1/-1}
#toolView:has(.qm-s) .tool-form input.qm-s{font-family:var(--t-serif);font-size:18px;letter-spacing:.12em}
#toolView:has(.qm-s) .tool-form select{padding-left:10px;padding-right:28px;background-position:right 10px center}
#toolView:has(.qm-s) .qm-out>.tool-note{margin:0 0 10px}
#toolView:has(.qm-s) .qm-out>table th,#toolView:has(.qm-s) .qm-out>table td{padding:8px 4px;white-space:nowrap}
#toolView:has(.qm-s) .qm-out>table td{font-size:14px;font-variant-numeric:tabular-nums}
#toolView:has(.qm-s) .qm-out>table td:first-child{font-family:var(--t-serif);letter-spacing:.04em}
#toolView:has(.qm-s) .qm-out>table td:first-child b{font-weight:700}
#toolView:has(.qm-s) .qm-out>table td:last-child{font-weight:700;color:var(--acc)}
#toolView:has(.qm-s) .qm-out>table tr:nth-child(even)>td{background:color-mix(in srgb,var(--bg2) 32%,transparent)}

/* ---- B4 字典查询 ---- */
#toolView:has(.zd-go) .tool-form input{font-family:var(--t-serif);font-size:18px;letter-spacing:.12em}
#toolView:has(.zd-go) .zd-out table th,#toolView:has(.zd-go) .zd-out table td{padding:9px 4px;white-space:nowrap}
#toolView:has(.zd-go) .zd-out table td:nth-child(2){font-family:var(--t-serif);font-size:16px}
#toolView:has(.zd-go) .zd-out table td:nth-child(3){color:var(--acc);font-variant-numeric:tabular-nums}
#toolView:has(.zd-go) .zd-out table td:nth-child(6){font-family:var(--t-serif);font-size:16px}

/* ---- B5 汉字筛选：结果做成等宽字格 ---- */
#toolView:has(.hz-go) .hz-out .tool-note{margin:0 0 10px}
#toolView:has(.hz-go) .hz-out .tool-pill{display:flex;justify-content:center;align-items:baseline;gap:4px;min-height:40px;margin:0;padding:5px 4px;border-radius:10px;background:var(--card);font-family:var(--t-serif);font-size:19px;font-weight:600;line-height:1.3;white-space:nowrap}
#toolView:has(.hz-go) .hz-out .tool-pill small{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;font-size:12px;font-weight:400;font-variant-numeric:tabular-nums}

/* ---- B6 诸葛数签 / 孔明数签：签文卡 ---- */
#toolView:has(.zg-go,.km-go) .tool-body>.tool-note{margin:4px 0 14px;padding:10px 12px;border-radius:10px;background:color-mix(in srgb,var(--bg2) 55%,transparent)}
#toolView:has(.zg-in) .tool-form input.zg-in{font-family:var(--t-serif);font-size:20px;letter-spacing:.3em;text-align:center}
#toolView:has(.zg-go,.km-go) .tool-out .kv th{width:18%;min-width:3.4em;letter-spacing:.1em}
#toolView:has(.zg-go,.km-go) .tool-out .kv td{line-height:1.85}
#toolView:has(.zg-go,.km-go) .tool-out .kv td b[style]{display:inline-block;margin-right:6px;font-family:var(--t-serif);font-size:24px!important;line-height:1.3;letter-spacing:.08em;color:var(--acc)}
#toolView:has(.zg-go,.km-go) .tool-out .kv td small{display:block;margin-top:3px;font-size:12.5px;line-height:1.6;color:var(--mut)}
#toolView:has(.zg-go,.km-go) .tool-out .kv tr:nth-child(2) td{background:var(--t-tint);font-family:var(--t-serif);font-size:18px!important;line-height:2.05!important;letter-spacing:.08em;color:var(--fg)}
#toolView:has(.zg-go,.km-go) .tool-out .kv tr:nth-child(3) td{font-size:14.5px;line-height:1.9}
/* ==== 专项 B 结束 ==== */

/* ===================== 13. 打印：只留结果 ===================== */
@media print{
  body:has(#toolsPanel:not(.hide)) #navbar,body:has(#toolsPanel:not(.hide)) .page-heading,body:has(#toolsPanel:not(.hide)) .sub{display:none!important}
  #toolsPanel{border:0!important;padding:0!important;box-shadow:none!important;background:#fff!important;color:#111;--fg:#111;--mut:#555;--line:#bbb;--bg:#fff;--bg2:#f2f2f2;--card:#fff;--accsoft:#f1e4d1;--acc:#8a4d14;--acc2:#a5342a;--t-line-soft:#ccc;--t-tint:#fff;--t-mut:#444;--t-acc-ink:#6e3c0f;--t-on-acc:#fff;--qm-ink:#111;--qm-txt:#111;--qm-mu:#b34a08;--qm-xing:#7a2cb4;--qm-xm:#0a62a8;--qm-po:#c81c1c;--qm-sj:#1a4f86;--qm-ma:#c81c1c}
  #toolsPanel>h2,.tool-hub,.tool-head .tool-back,.tool-head .tool-tag,.tool-head .tool-desc,.tool-form,.tool-actions,.tool-bar,.tool-quick,.tool-modal,.tool-toast,.lp-bar,.lp-zoom,.js-top,.tool-body>.tool-out:empty{display:none!important}
  .tool-head{display:block;margin:0 0 8px;padding:0 0 6px}
  .tool-out table,.qm-wrap,.fs-grid,.ring12{break-inside:avoid}
  .tool-out .tool-note{background:none;padding:4px 0}
  .qm-cell[data-p]:hover{background:none}
}
@media (prefers-reduced-motion:reduce){
  .tool-modal,.tool-modal .box,.tool-toast,.tool-grid button.tool-tile,.tool-tile .tool-ico,.qm-cell{animation:none!important;transition:none!important}
}

/* ===================== 13. 工具页统一壳（参考热卜输入页，r7）=====================
   手机 / 平板（< 860px）：标题行只留「‹ 工具 | 工具名 | 分享」；进入页一张白卡只放必填的基础信息（标签左、值右、行间细线），下面整行「开始排盘」；
   可选项在结果页摘要条右侧「设置」弹层里（hub.js addSettings / SET_FIELDS）；「相关百科」挪到页面最下面。
   电脑（≥ 860px）：工具网格限宽 960 居中；表单卡限宽 720、两列并排；按钮并排放在卡片右下；奇门结果九宫在左、信息表在右。
   只改排版与容器：原生 input/select 的类名、取值格式、change 事件都不动。按钮悬停 / 按下只变色，不位移、不缩放。 */
.tool-head .tool-tag,.tool-head .tool-desc{display:none}
.tool-head button.tool-share{display:inline-flex;align-items:center;gap:5px;width:auto;min-height:34px;margin:0;padding:4px 12px 4px 10px;border-radius:99px;background:var(--card);color:var(--t-mut);border:1px solid var(--line);box-shadow:none;font-size:13px;font-weight:500;line-height:1}
.tool-head button.tool-share::before{content:"";flex:none;width:14px;height:14px;background-color:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 15V3M7 8l5-5 5 5M5 13v6a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-6'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 15V3M7 8l5-5 5 5M5 13v6a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-6'/%3E%3C/svg%3E") center/contain no-repeat}
.tool-head button.tool-share:hover{color:var(--acc);border-color:var(--acc);filter:none}
/* 相关百科：放到页面最下面（linkage.js 生成的那一行，只换显示顺序） */
#toolView:not(.hide){display:flex;flex-direction:column}
#toolView>#toolBody{order:1}
#toolView>.yl-rel{order:2;margin:18px 0 2px;padding-top:12px;border-top:1px dashed var(--t-line-soft)}
#toolView:has(.qm-r-birth) .yl-rel-birth{display:none}
/* 白卡 */
#toolBody .tool-form:not(.tool-out *){display:block;margin:0 0 12px;padding:0 16px;border:1px solid var(--t-line-soft);border-radius:14px;background:var(--card);box-shadow:0 8px 20px -18px rgba(60,45,20,.45)}
:is(#toolBody .tool-form:not(.tool-out *),#toolBody .qm-set)>.f{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:4px 12px;min-height:56px;margin:0;padding:7px 0}
:is(#toolBody .tool-form:not(.tool-out *),#toolBody .qm-set)>.f~.f{border-top:1px solid var(--t-line-soft)}
:is(#toolBody .tool-form:not(.tool-out *),#toolBody .qm-set)>.f>:is(label,.qm-k):first-child{flex:0 1 auto;max-width:48%;margin:0;font-size:14.5px;font-weight:400;line-height:1.4;letter-spacing:.02em;color:var(--t-mut)}
:is(#toolBody .tool-form:not(.tool-out *),#toolBody .qm-set)>.f>:is(label,.qm-k):first-child~*:not(.pk-tnow){flex:1 1 0;min-width:0;margin-top:0}
:is(#toolBody .tool-form:not(.tool-out *),#toolBody .qm-set)>.f :where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),select){height:42px;min-height:42px;padding:0 2px;border:0;border-radius:6px;background-color:transparent;text-align:right;box-shadow:none}
:is(#toolBody .tool-form:not(.tool-out *),#toolBody .qm-set)>.f select{padding-right:22px;background-position:right 2px center;text-align-last:right}
:is(#toolBody .tool-form:not(.tool-out *),#toolBody .qm-set)>.f :is(input,select):focus{box-shadow:none;background-color:color-mix(in srgb,var(--accsoft) 40%,transparent)}
:is(#toolBody .tool-form:not(.tool-out *),#toolBody .qm-set)>.f :is(input,select):disabled{opacity:.5}
:is(#toolBody .tool-form:not(.tool-out *),#toolBody .qm-set)>.f>div:not(.pk-acc):not(.tool-quick):not(.pk-tv){display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px 10px}
:is(#toolBody .tool-form:not(.tool-out *),#toolBody .qm-set)>.f>.tool-note{flex:1 1 100%;margin:0;padding:0;background:none}
#toolBody .tool-form:not(.tool-out *)>.pk-acc{margin:0 0 10px}
/* 一行里有多个控件（如玄空「坐山」= 山名下拉 + 度数 + 兼向勾选）：标签占一行，控件依次排在下面，仍右对齐 */
:is(#toolBody .tool-form:not(.tool-out *),#toolBody .qm-set)>.f:not(.pk-trow):has(>:is(label,.qm-k):first-child+*+:not(:empty):not(.hide)){padding:10px 0;row-gap:6px}
:is(#toolBody .tool-form:not(.tool-out *),#toolBody .qm-set)>.f:not(.pk-trow):has(>:is(label,.qm-k):first-child+*+:not(:empty):not(.hide))>*{flex:1 1 100%!important;max-width:none!important}
:is(#toolBody .tool-form:not(.tool-out *),#toolBody .qm-set)>.f:not(.pk-trow):has(>:is(label,.qm-k):first-child+*+:not(:empty):not(.hide))>label:not(:first-child){display:flex;align-items:center;justify-content:flex-end;gap:6px;margin:0;font-size:13.5px;line-height:1.4;color:var(--fg)}
/* 相邻的几张卡（如「所占之事」卡 + 「排盘时间」卡）连成一张：中间只留一条行间细线 */
#toolBody .tool-form:not(.tool-out *):not(.tool-set):has(+.tool-form:not(.tool-set),+.hide+.tool-form:not(.tool-set)){margin-bottom:0;border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0;box-shadow:none}
#toolBody .tool-form:not(.tool-out *):not(.tool-set)+.tool-form:not(.tool-set),#toolBody .tool-form:not(.tool-out *):not(.tool-set)+.hide+.tool-form:not(.tool-set){margin-top:0;border-top:0;border-top-left-radius:0;border-top-right-radius:0}
#toolBody .tool-form:not(.tool-out *):not(.tool-set)+.tool-form:not(.tool-set)>.f:first-child,#toolBody .tool-form:not(.tool-out *):not(.tool-set)+.hide+.tool-form:not(.tool-set)>.f:first-child{border-top:1px solid var(--t-line-soft)}
/* 卡片里套着的 .tool-form（奇门卡里的排盘时间 .ti-form）不再画第二层卡 */
#toolBody .tool-form:not(.tool-out *) .tool-form{margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
#toolBody .qm-card>.tool-form{border-top:1px solid var(--t-line-soft)}
/* 快捷（现在 / 出生时间，picker.js 未接管时）：右侧两颗小胶囊 */
#toolBody .tool-form:not(.tool-out *) .tool-quick{display:flex;justify-content:flex-end;gap:8px}
#toolBody .tool-form:not(.tool-out *) .tool-quick button{flex:none;width:auto;height:32px;min-height:32px;padding:0 14px;border-radius:99px;font-size:13px}
/* 信息页按钮：整行，主按钮在上、浅色在下（结果区里的按钮条、万年历 / 节气翻页条、罗盘与金锁玉关的按钮组不变） */
#toolBody .tool-actions:not(.tool-out *):not(:has(.cal-prev,.jq-prev)):not(.lp-go):not(.js-act){display:grid;grid-template-columns:minmax(0,1fr);gap:10px;margin:4px 0 16px}
#toolBody .tool-actions:not(.tool-out *):not(:has(.cal-prev,.jq-prev)):not(.lp-go):not(.js-act)>button{width:100%;min-height:48px;border-radius:10px;font-size:16px;letter-spacing:.12em}
#toolBody .tool-actions:not(.tool-out *):not(:has(.cal-prev,.jq-prev)):not(.lp-go):not(.js-act)>button.ghost{background:color-mix(in srgb,var(--accsoft) 62%,var(--card));border-color:transparent;color:var(--t-acc-ink);font-weight:600}
/* 奇门进入页卡片：事项内容 / 排盘时间（/ 出生资料） */
.qm-hold{display:none!important}
:is(#toolBody .tool-form:not(.tool-out *),#toolBody .qm-set)>.f>.qm-k{white-space:nowrap}
.qm-card button.qm-birth{flex:1 1 0;width:auto;min-width:0;min-height:42px;margin:0;padding:0 2px;border:0;background:transparent;color:var(--fg);box-shadow:none;font-size:13.5px;font-weight:500;letter-spacing:0;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qm-card button.qm-birth::after{content:" ›";color:var(--t-mut)}
.qm-card button.qm-birth:hover{filter:none;color:var(--acc)}
/* 设置弹层（结果页摘要条右侧「设置」）：底部抽屉，电脑上居中 */
.tool-stagebar .tool-stage-set{display:none!important}
#toolBody[data-stage="result"] .tool-stagebar.has-set .tool-stage-set{display:inline-flex!important;margin-left:auto;gap:5px;padding:4px 13px 4px 11px}
.tool-stagebar .tool-stage-set::before{content:"";flex:none;width:15px;height:15px;background-color:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Cpath d='M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Cpath d='M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z'/%3E%3C/svg%3E") center/contain no-repeat}
.tool-setw{position:fixed;inset:0;z-index:998;display:flex;align-items:flex-end;justify-content:center;background:rgba(20,14,8,.45)}
.tool-setw[hidden]{display:none!important}
.tool-setbox{width:100%;max-width:560px;max-height:84vh;max-height:84dvh;overflow:auto;overscroll-behavior:contain;padding:2px 16px calc(18px + env(safe-area-inset-bottom,0px));border-radius:18px 18px 0 0;background:var(--bg);color:var(--fg);box-shadow:0 -12px 36px -12px rgba(0,0,0,.35)}
.tool-set-hd{display:flex;align-items:center;gap:10px;min-height:56px}
.tool-set-hd b{font-family:var(--t-serif);font-size:17px;font-weight:700;letter-spacing:.06em}
.tool-set-hd small{font-size:12.5px;color:var(--t-mut)}
.tool-set-hd button.tool-set-x{width:auto;min-height:38px;margin:0 0 0 auto;padding:0 16px;border-radius:99px;color:var(--acc);font-size:14px;font-weight:600}
#toolBody .tool-setw .tool-form.tool-set{margin:0 0 6px;opacity:1!important;animation:none!important}
.qm-set .qm-radios{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:6px 14px}
.qm-set .qm-radios label,.qm-set label.qm-chk{display:inline-flex;align-items:center;justify-content:flex-end;gap:6px;margin:0;font-size:15px;font-weight:400;letter-spacing:0;color:var(--fg);cursor:pointer;white-space:nowrap}
.qm-set :is(.qm-radios,.qm-chk) input{-webkit-appearance:none;appearance:none;flex:none;width:20px!important;height:20px!important;min-height:0!important;margin:0;padding:0;border:1.5px solid color-mix(in srgb,var(--mut) 75%,transparent);border-radius:50%;background:var(--card);cursor:pointer;transition:background-color .15s ease,box-shadow .15s ease}
.qm-set :is(.qm-radios,.qm-chk) input:checked{border-color:var(--acc);background:var(--acc);box-shadow:inset 0 0 0 4px var(--card)}
.qm-set :is(.qm-radios,.qm-chk) input:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.qm-set .qm-r-lon{min-height:48px}
.qm-set .qm-r-lon input.qm-lon{flex:0 0 auto!important;width:110px!important;height:36px!important;min-height:36px!important;margin-left:auto;padding:0 10px!important;border:1px solid var(--line)!important;border-radius:8px!important;background:var(--card)!important}
/* 奇门结果：九宫块自成尺寸容器（宽屏并排时九宫按自己那一栏的宽度排） */
.qm-board{container-type:inline-size}
/* 按钮：悬停 / 按下只变色或阴影，不位移、不缩放（用户要求鼠标碰到不要晃） */
#toolsPanel button:not(.js-ring *):is(:hover,:active),.tool-modal button:is(:hover,:active),.tool-setw button:is(:hover,:active){transform:none!important}   /* 金锁玉关圆环上的按钮靠 translate 定位，排除在外（r8 体检） */
/* ---------- 电脑（≥ 860px，左侧竖栏）---------- */
@media (min-width:860px){
  #toolHub{max-width:960px;margin-left:auto;margin-right:auto}
  .tool-grid.tool-grid-all{grid-template-columns:repeat(8,minmax(0,1fr));gap:12px}
  #toolBody .tool-form:not(.tool-out *){max-width:720px}
  #toolBody .tool-form:not(.tool-out *):not(.tool-set):is(.qm-card,:has(>.f:not(.hide):not(.pk-orig):not(.ti-quick-f)~.f:not(.hide):not(.pk-orig):not(.ti-quick-f))){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:32px;overflow:hidden}
  #toolBody .tool-form:not(.tool-out *):not(.tool-set):is(.qm-card,:has(>.f:not(.hide):not(.pk-orig):not(.ti-quick-f)~.f:not(.hide):not(.pk-orig):not(.ti-quick-f)))>:is(.f,.tool-form){border-top:0!important;border-bottom:1px solid var(--t-line-soft);margin-bottom:-1px}
  #toolBody .tool-form:not(.tool-out *):not(.tool-set):is(.qm-card,:has(>.f:not(.hide):not(.pk-orig):not(.ti-quick-f)~.f:not(.hide):not(.pk-orig):not(.ti-quick-f)))>.f.full{grid-column:auto}
  #toolBody .tool-form:not(.tool-out *):not(.tool-set):is(.qm-card,:has(>.f:not(.hide):not(.pk-orig):not(.ti-quick-f)~.f:not(.hide):not(.pk-orig):not(.ti-quick-f)))>:is(.pk-acc,.tool-note){grid-column:1/-1}
  #toolBody .tool-actions:not(.tool-out *):not(:has(.cal-prev,.jq-prev)):not(.lp-go):not(.js-act){display:flex;flex-direction:row-reverse;justify-content:flex-start;gap:10px;max-width:720px}
  #toolBody .tool-actions:not(.tool-out *):not(:has(.cal-prev,.jq-prev)):not(.lp-go):not(.js-act)>button{flex:0 0 auto;width:auto;min-width:150px;min-height:44px;padding:0 22px;font-size:15px;letter-spacing:.1em}
  .tool-setw{align-items:center;padding:24px}
  .tool-setbox{border-radius:16px;box-shadow:0 24px 60px -12px rgba(0,0,0,.35)}
  @container (min-width:720px){
    .qm-main{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:22px;align-items:start}
    .qm-main>.qm-board{order:-1}
    .qm-main>.qm-board .qm-wrap{margin-top:6px}
  }
}
@media print{.tool-setw,.tool-head .tool-share,.tool-stagebar{display:none!important}}
/* 工具首页：顶部不要「工具 | 传统术数排盘与查询」标题行（留给读屏）与「本机计算」胶囊，直接从「今天」卡开始；本机计算说明放到最底一行小字 */
#toolsPanel>h2.tool-hub-h{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.tool-hub>.tool-today:first-child{margin-top:0}
.tool-hub-privacy{margin:16px 0 2px;font-size:12px;line-height:1.6;text-align:center;color:var(--t-mut)}

/* ===================== 10c. 紧凑结果页 + 摘要条动作区（r8 阴盘奇门首创，r9 起奇门七个入口都用：出盘后只留摘要条、基本信息、盘面） ===================== */
#toolBody.qm-compact[data-stage="result"]>:is(.qm-card,.tool-actions,.tool-stage-sep){display:none!important}
.tool-stage-acts{display:none;flex:none;gap:6px}
#toolBody[data-stage="result"] .tool-stagebar .tool-stage-acts:not(:empty){display:inline-flex}
.tool-stage-acts>span{display:inline-flex;gap:6px}
.tool-stagebar .tool-stage-acts button{padding:4px 11px}
.qm-set .qm-more{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}
.qm-set .qm-more button{width:auto;min-height:34px;margin:0;padding:4px 12px;border-radius:99px;font-size:13px;font-weight:500}
@media (max-width:380px){.tool-stagebar .tool-stage-acts button{padding:4px 8px;font-size:12.5px}}
@media print{.tool-stage-acts{display:none!important}}
@media (max-width:420px){
  #toolBody[data-stage="result"] .tool-stagebar:has(.tool-stage-acts:not(:empty)){flex-wrap:wrap;row-gap:6px}
  #toolBody[data-stage="result"] .tool-stagebar:has(.tool-stage-acts:not(:empty)) .tool-stage-sum{order:5;flex:1 1 100%}
}

/* 3. 解读卡（r15） */
/* ===================== AI 深度解读卡（tools/reading/common.js + card.js，挂在各工具结果区底部 .rd-slot，八字解析页挂在 #coreConclusionCard 内） =====================
   气质跟八字解析页一致：宣纸白卡、细线、极简，不晃；手机单列、电脑限宽 760 居中。
   色点三色：吉用站内木绿（吉绿），中用赭金（与巧连 .ql-zhong 同色），凶用暖橙不用大红（口径 0.1「不吓人」），健康类「留意」用琥珀。
   动效只有 160ms 淡入 + 加载中的三点呼吸；prefers-reduced-motion 全关。按钮悬停 / 按下只变色不位移。类名统一 rd- 前缀。 */
:root{--rd-ji:#2e7d4f;--rd-zhong:#8a6a2b;--rd-xiong:#c26a1e;--rd-amber:#b8862f}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){--rd-ji:#6fcf85;--rd-zhong:#d9b56a;--rd-xiong:#f0a05a;--rd-amber:#e2a957}
}
:root[data-theme="dark"]{--rd-ji:#6fcf85;--rd-zhong:#d9b56a;--rd-xiong:#f0a05a;--rd-amber:#e2a957}
@keyframes rd-in{from{opacity:0}}
@keyframes rd-breathe{50%{opacity:.95}}
.rd-slot:empty{display:none}
.rd-card{--rd-c:var(--rd-zhong);position:relative;box-sizing:border-box;margin:16px 0 10px;padding:14px 16px 16px;border:1px solid var(--t-line-soft);border-radius:14px;background:var(--card);color:var(--fg);box-shadow:0 8px 20px -18px rgba(60,45,20,.45);font-size:14.5px;line-height:1.8;letter-spacing:.01em;text-align:left;animation:rd-in .16s ease}
.rd-card[data-tone="ji"]{--rd-c:var(--rd-ji)}
.rd-card[data-tone="zhong"]{--rd-c:var(--rd-zhong)}
.rd-card[data-tone="xiong"]{--rd-c:var(--rd-xiong)}
.rd-card[data-level="留意"]{--rd-c:var(--rd-amber)}
.rd-card *{box-sizing:border-box}
.rd-card p{margin:0}
.rd-card ul{margin:0;padding:0;list-style:none}
/* 标题行：「AI 解读」+ 右侧「限时免费」小标 */
.rd-head{display:flex;align-items:center;gap:10px;margin:0 0 10px}
.rd-card h4.rd-title{display:flex;align-items:center;gap:8px;margin:0;padding:0;font-family:var(--t-serif);font-size:15px;font-weight:700;line-height:1.4;letter-spacing:.1em;color:var(--fg)}
.rd-card h4.rd-title::before{content:"";flex:none;width:3px;height:14px;border-radius:2px;background:var(--acc)}
.rd-free{flex:none;margin-left:auto;padding:1px 9px;border-radius:99px;background:var(--accsoft);color:var(--t-acc-ink);font-size:12px;font-weight:600;line-height:18px;letter-spacing:.06em;white-space:nowrap}
/* 一句总断行：色点 + 档位词 + 句子 */
.rd-card p.rd-verdict{display:flex;align-items:flex-start;gap:8px;margin:0;font-size:15.5px;line-height:1.75}
.rd-dot{flex:none;width:10px;height:10px;margin-top:.62em;border-radius:50%;background:var(--rd-c);box-shadow:0 0 0 3px color-mix(in srgb,var(--rd-c) 18%,transparent)}
.rd-level{flex:none;font-family:var(--t-serif);font-size:15.5px;font-weight:700;letter-spacing:.08em;color:var(--rd-c)}
.rd-sentence{flex:1 1 auto;min-width:0;font-family:var(--t-serif);font-weight:500;color:var(--fg)}
/* 计分明细：折叠小字 */
.rd-card details.rd-lines{margin:4px 0 0 18px;font-size:12.5px;line-height:1.7;color:var(--t-mut)}
.rd-card .rd-lines summary{display:inline-flex;align-items:center;gap:6px;cursor:pointer;color:var(--t-mut);list-style:none}
.rd-card .rd-lines summary::-webkit-details-marker{display:none}
.rd-card .rd-lines summary::after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);opacity:.7}
.rd-card .rd-lines[open] summary::after{transform:rotate(-135deg) translateY(-2px)}
.rd-card .rd-lines summary b{font-weight:600;color:var(--rd-c);font-variant-numeric:tabular-nums}
.rd-card .rd-lines ul{margin:4px 0 0;padding-left:1.1em;list-style:disc}
.rd-card .rd-lines li{margin:0;font-variant-numeric:tabular-nums}
/* 应期 / 时间线 */
.rd-timing{margin:12px 0 0;padding:9px 12px 10px;border-radius:10px;background:color-mix(in srgb,var(--bg2) 55%,transparent)}
.rd-card .rd-timing h5,.rd-card .rd-sec h5{display:flex;align-items:center;gap:6px;margin:0 0 4px;font-family:inherit;font-size:12.5px;font-weight:600;line-height:1.5;letter-spacing:.1em;color:var(--t-mut)}
.rd-card .rd-timing h5::before,.rd-card .rd-sec h5::before{content:"";flex:none;width:3px;height:11px;border-radius:2px;background:var(--acc)}
.rd-timing li{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;margin:0;font-size:14px;line-height:1.75}
.rd-timing li b{font-weight:600;color:var(--fg);font-variant-numeric:tabular-nums}
.rd-timing li span{flex:1 1 12em;min-width:0;font-size:12.5px;color:var(--t-mut)}
/* 正文区 */
.rd-body{margin-top:12px}
.rd-tease{position:relative;margin:0 0 10px;color:var(--t-mut);font-size:13.5px;line-height:1.8;filter:blur(1.6px);-webkit-mask-image:linear-gradient(#000 10%,transparent 96%);mask-image:linear-gradient(#000 10%,transparent 96%);pointer-events:none;user-select:none;-webkit-user-select:none}
.rd-tease p{margin:0}
.rd-cta{display:flex;flex-direction:column;align-items:stretch;gap:6px}
.rd-card button{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .15s ease,border-color .15s ease,color .15s ease}
.rd-card button:is(:hover,:active){transform:none!important;filter:none}
.rd-card button:disabled{cursor:default}
.rd-card button.rd-go{width:100%;min-height:46px;margin:0;padding:10px 16px;border:1px solid var(--acc);border-radius:10px;background:var(--acc);color:var(--t-on-acc);box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 6px 14px -9px color-mix(in srgb,var(--acc) 85%,transparent);font-size:15px;font-weight:600;line-height:1.3;letter-spacing:.06em}
.rd-card button.rd-go:hover{background:color-mix(in srgb,var(--acc) 90%,var(--fg))}
.rd-card button.rd-go:disabled{background:var(--bg2);border-color:var(--bg2);color:var(--t-mut);box-shadow:none}
.rd-card button.ghost,.rd-card button.rd-retry,.rd-card button.rd-chip{width:auto;min-height:32px;margin:0;padding:2px 14px;border:1px solid var(--line);border-radius:99px;background:var(--card);color:var(--fg);box-shadow:none;font-size:13px;font-weight:500;line-height:1.3;letter-spacing:.02em}
.rd-card button.ghost:hover,.rd-card button.rd-retry:hover,.rd-card button.rd-chip:hover{border-color:var(--acc);color:var(--t-acc-ink)}
/* 加载中：淡淡的三点呼吸，不转圈 */
.rd-card p.rd-wait{display:flex;flex-wrap:wrap;align-items:center;gap:0 8px;margin:6px 0;color:var(--t-mut);font-size:14px;line-height:1.7}
.rd-wait .rd-dots{display:inline-flex;align-items:center;gap:4px;margin-left:-4px}
.rd-wait .rd-dots i{display:block;width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.3;animation:rd-breathe 1.6s ease-in-out infinite}
.rd-wait .rd-dots i:nth-child(2){animation-delay:.27s}
.rd-wait .rd-dots i:nth-child(3){animation-delay:.54s}
.rd-wait small{flex:1 1 100%;font-size:12px;color:color-mix(in srgb,var(--t-mut) 80%,transparent)}
/* 六段正文 */
.rd-sections{animation:rd-in .16s ease}
.rd-sec{margin:0 0 12px}
.rd-sec:last-child{margin-bottom:0}
.rd-sec p{margin:0 0 4px;font-size:14.5px;line-height:1.85;color:var(--fg)}
.rd-sec p:last-child{margin-bottom:0}
.rd-sec li{position:relative;margin:0 0 3px;padding-left:14px;font-size:14.5px;line-height:1.85;color:var(--fg)}
.rd-sec li::before{content:"";position:absolute;left:2px;top:.8em;width:5px;height:5px;border-radius:50%;background:color-mix(in srgb,var(--acc) 55%,transparent)}
.rd-sec .rd-empty{font-size:12.5px;color:var(--t-mut)}
/* 依据：「名·状态」胶囊，有词条的带链接（新标签） */
.rd-ev{display:flex;flex-wrap:wrap;gap:6px 8px}
.rd-sec .rd-ev li,.rd-a-ev .rd-ev li{margin:0;padding:0;font-size:13px;line-height:1.5}
.rd-sec .rd-ev li::before{display:none}
.rd-ev-link,.rd-ev-name{display:inline-flex;align-items:center;gap:3px;min-height:26px;padding:1px 10px;border:1px solid var(--t-line-soft);border-radius:99px;background:color-mix(in srgb,var(--bg2) 50%,transparent);color:var(--fg);font-size:12.5px;line-height:1.5;text-decoration:none;white-space:nowrap}
a.rd-ev-link{color:var(--t-acc-ink);border-color:color-mix(in srgb,var(--acc) 35%,var(--line))}
a.rd-ev-link:hover{border-color:var(--acc);color:var(--acc)}
a.rd-ev-link i{font-style:normal;font-size:11px;opacity:.7}
.rd-card p.rd-disc,.rd-card p.rd-a-disc{margin:10px 0 0;font-size:12px;line-height:1.7;color:var(--t-mut)}
/* 本盘不宜细断 / 未部署 / 错误 */
.rd-degraded{padding:10px 12px;border-radius:10px;background:color-mix(in srgb,var(--bg2) 55%,transparent)}
.rd-degraded b{display:block;margin:0 0 2px;font-family:var(--t-serif);font-size:15px;letter-spacing:.08em;color:var(--fg)}
.rd-degraded p{font-size:14px;line-height:1.8;color:var(--t-mut)}
.rd-degraded+.rd-sec{margin-top:10px}
.rd-err{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 12px;border:1px dashed var(--line);border-radius:10px;background:color-mix(in srgb,var(--bg) 60%,transparent);font-size:13.5px;line-height:1.7;color:var(--t-mut)}
.rd-err span{flex:1 1 14em;min-width:0}
.rd-err+.rd-sec{margin-top:10px}
/* 猜你想问 + 追问 */
.rd-ask{margin-top:14px;padding-top:12px;border-top:1px dashed var(--t-line-soft)}
.rd-guess{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px}
.rd-guess-k{flex:none;margin-right:2px;font-size:12px;font-weight:600;letter-spacing:.08em;color:var(--t-mut)}
.rd-card button.rd-chip{min-height:30px;padding:2px 12px;border-color:var(--t-line-soft);font-size:12.5px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.rd-askform{display:flex;align-items:center;gap:8px}
.rd-card input.rd-askin{flex:1 1 auto;width:auto;min-width:0;height:42px;min-height:42px;margin:0;padding:0 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--fg);font-family:inherit;font-size:15px;line-height:1.3;box-shadow:none;transition:border-color .15s ease,box-shadow .15s ease}
.rd-card input.rd-askin::placeholder{color:color-mix(in srgb,var(--mut) 72%,transparent)}
.rd-card input.rd-askin:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px color-mix(in srgb,var(--acc) 18%,transparent)}
.rd-card input.rd-askin:disabled{opacity:.6}
.rd-card button.rd-askgo{flex:none;width:auto;min-width:64px;min-height:42px;margin:0;padding:0 18px;border:1px solid var(--acc);border-radius:10px;background:var(--acc);color:var(--t-on-acc);box-shadow:none;font-size:15px;font-weight:600;letter-spacing:.1em}
.rd-card button.rd-askgo:hover{background:color-mix(in srgb,var(--acc) 90%,var(--fg))}
.rd-card button.rd-askgo:disabled{background:var(--bg2);border-color:var(--bg2);color:var(--t-mut)}
.rd-card p.rd-askleft{margin:6px 0 0;font-size:12px;line-height:1.6;color:var(--t-mut)}
.rd-qa{margin-top:4px}
.rd-qa-item{margin:10px 0 0;padding:10px 12px;border-radius:10px;background:color-mix(in srgb,var(--bg2) 55%,transparent);animation:rd-in .16s ease}
.rd-card p.rd-q{margin:0 0 4px;font-size:13px;line-height:1.7;color:var(--t-mut)}
.rd-a{font-size:14.5px;line-height:1.85;color:var(--fg)}
.rd-a p{margin:0 0 4px}
.rd-a p:last-child{margin-bottom:0}
.rd-qa-err .rd-a{color:var(--t-mut);font-size:14px}
.rd-a-ev{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:8px 0 0}
.rd-a-ev>span{font-size:12px;font-weight:600;letter-spacing:.08em;color:var(--t-mut)}
.rd-qa .rd-wait{margin:10px 0 0}
/* 八字解析页：卡挂在 #coreConclusionCard 里，与上面的命局简析隔一条细线 */
#coreConclusionCard .rd-card{margin:14px 0 0;box-shadow:none}
#coreConclusionCard .rd-card button{width:auto}
#coreConclusionCard .rd-card button.rd-go{width:100%}
/* 电脑：限宽居中 */
@media (min-width:860px){
  .rd-card{max-width:760px;margin-left:auto;margin-right:auto;padding:18px 22px 20px}
  .rd-cta{flex-direction:row;align-items:center}
  .rd-card button.rd-go{width:auto;min-width:280px}
  #coreConclusionCard .rd-card button.rd-go{width:auto}
  .rd-askform{max-width:560px}
}
@media (max-width:380px){
  .rd-card{padding:12px 13px 14px}
  .rd-card p.rd-verdict{font-size:15px}
}
@media (prefers-reduced-motion:reduce){
  .rd-card,.rd-sections,.rd-qa-item{animation:none!important}
  .rd-wait .rd-dots i{animation:none!important;opacity:.6}
  .rd-card button,.rd-card input.rd-askin{transition:none!important}
}
@media print{.rd-tease,.rd-cta,.rd-ask{display:none!important}.rd-card{box-shadow:none;break-inside:avoid}}
/* r16 贴题：解读卡顶「所问」行；未选事类时的「各事一览」（一行一事：色点 + 档位 + 一句总断，点一项按该事看完整解读） */
.rd-card p.rd-topic{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:-4px 0 10px;font-size:13.5px;line-height:1.6;color:var(--t-mut)}
.rd-topic-k{flex:none;padding:0 6px;border-radius:4px;background:var(--accsoft);color:var(--t-acc-ink);font-size:12px;letter-spacing:.06em}
.rd-topic b{font-weight:600;color:var(--fg)}
.rd-topic i{font-style:normal}
.rd-card button.rd-topic-back{width:auto;min-height:24px;margin:0 0 0 auto;padding:0 10px;border:1px solid var(--line);border-radius:99px;background:var(--card);box-shadow:none;color:var(--t-acc-ink);font-size:12px;line-height:22px}
.rd-overview{margin:0 0 12px}
.rd-overview h5{margin:0 0 4px;font-size:14px;letter-spacing:.08em;color:var(--fg)}
.rd-ov-hint{margin:0 0 8px;font-size:12.5px;line-height:1.7;color:var(--t-mut)}
.rd-overview ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.rd-overview li{margin:0;padding:0}
.rd-card button.rd-ov-item{--rd-c:var(--rd-zhong);display:grid;grid-template-columns:auto auto auto minmax(0,1fr);align-items:center;gap:8px;width:100%;min-height:40px;margin:0;padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card);box-shadow:none;color:var(--fg);font-size:13.5px;font-weight:400;line-height:1.5;text-align:left}
.rd-card button.rd-ov-item[data-tone="ji"]{--rd-c:var(--rd-ji)}
.rd-card button.rd-ov-item[data-tone="xiong"]{--rd-c:var(--rd-xiong)}
.rd-card button.rd-ov-item[data-level="留意"]{--rd-c:var(--rd-amber)}
.rd-card button.rd-ov-item:hover{border-color:var(--acc);filter:none}
.rd-card button.rd-ov-item:active{transform:none}
.rd-card button.rd-ov-item .rd-dot{margin-top:0}
.rd-card button.rd-ov-item b{font-weight:600;letter-spacing:.04em;white-space:nowrap}
.rd-card button.rd-ov-item em{font-style:normal;font-size:12px;padding:0 6px;border-radius:4px;background:color-mix(in srgb,var(--rd-c) 14%,transparent);color:var(--rd-c);white-space:nowrap}
.rd-card button.rd-ov-item span{color:var(--t-mut);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:600px){.rd-card button.rd-ov-item{grid-template-columns:auto auto auto}.rd-card button.rd-ov-item span{grid-column:1/-1;white-space:normal}}

/* r17 账号与点数：登录弹层与用户中心卡片（手机上输入框 16px 防 iOS 聚焦放大，触控高度 ≥44px） */
.tool-modal .ac-why{margin:2px 0 12px;color:var(--t-mut,var(--mut));font-size:14px;line-height:1.7}
.tool-modal .ac-form{display:flex;flex-direction:column;gap:12px}
.tool-modal .ac-f{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--t-mut,var(--mut))}
.tool-modal .ac-row{display:flex;align-items:flex-end;gap:8px}
.tool-modal .ac-form input[type=tel],.tool-modal .ac-form input[type=text]{width:100%;min-height:46px;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--fg);font-size:16px;letter-spacing:.06em}
.tool-modal .ac-row button.ac-send{flex:none;width:auto!important;min-width:112px;min-height:46px;margin:0;padding:0 12px;white-space:nowrap}
.tool-modal .ac-row .ac-grow{flex:1 1 0;min-width:0}
.tool-modal .ac-agree{display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.6;color:var(--t-mut,var(--mut))}
.tool-modal .ac-agree input{flex:none;width:20px;height:20px;min-width:0;min-height:0;margin:1px 0 0;padding:0;align-self:flex-start;accent-color:var(--acc)}   /* 去掉全站输入框 44px 最小高度，框与文字第一行对齐 */
.tool-modal .ac-msg{min-height:20px;margin:0;font-size:13px;color:var(--t-mut,var(--mut))}.tool-modal .ac-msg.bad{color:#b3362b}
.tool-modal .ac-dev{margin:0;padding:6px 10px;border-radius:8px;background:var(--accsoft);color:var(--t-acc-ink,var(--acc));font-size:13px}
.tool-modal button.ac-login,#userPanel button.ac-login-btn{width:100%;min-height:48px;border:1px solid var(--acc);border-radius:12px;background:var(--acc);color:#fff;font-size:16px;font-weight:700;letter-spacing:.2em;cursor:pointer}
.tool-modal button.ac-login:disabled{opacity:.6}
#userPanel .ac-card{padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--card)}
#userPanel .ac-who{margin:0 0 8px}#userPanel .ac-note{margin:6px 0 10px;color:var(--mut);font-size:13px;line-height:1.7}
#userPanel .ac-pts{display:flex;gap:12px;margin:0}#userPanel .ac-pts span{flex:1;padding:8px 10px;border-radius:10px;background:var(--accsoft);text-align:center}
#userPanel .ac-pts b{font-size:22px;font-family:"Yzt Title Serif","Songti SC",serif}#userPanel .ac-pts small{display:block;margin-top:2px;font-size:12px;color:var(--mut)}
.tool-modal .ac-agree a{color:var(--acc)}
#userPanel button.ac-login-btn{max-width:320px}

/* r17 iOS Safari：输入框字号小于 16px 时聚焦会放大整页，这两处补到 16px */
.lj-file,.pk-orig-i,#toolBody input[type=file]{font-size:16px}

.tool-badge.tool-new{background:#c8333a;color:#fff}
.tool-modal .ac-minor{margin:4px 0 8px;color:var(--t-mut,var(--mut));font-size:12px;line-height:1.6}

/* 点开工具时脚本还在下载：图标轻轻呼吸，不弹「正在加载」 */
.tool-tile.loading{opacity:.6;animation:tileLoad 1s ease-in-out infinite}
@keyframes tileLoad{50%{opacity:.35}}
@media (prefers-reduced-motion:reduce){.tool-tile.loading{animation:none}}

/* ===== 工具页：顶部只留「‹ 工具名」，底部换成本页操作栏（客服 / 分享 / 解读 / 笔记 / 保存）===== */
.tool-head{grid-template-columns:auto minmax(0,1fr)}
.tool-head button.tool-back{min-height:40px;width:40px;padding:0;justify-content:center;border-radius:50%}
.tool-head button.tool-back::before{margin:0 0 0 3px;width:9px;height:9px}
.tool-bar2{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));background:color-mix(in srgb,var(--card) 94%,transparent);-webkit-backdrop-filter:saturate(1.3) blur(14px);backdrop-filter:saturate(1.3) blur(14px);border-top:1px solid var(--line)}
.tool-bar2 .tb-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:auto;min-height:0;height:var(--tabbar-h,58px);margin:0;padding:6px 0 5px;background:none;border:0;border-radius:0;box-shadow:none;color:var(--t-mut,var(--mut));font-size:12px;font-weight:500;letter-spacing:.04em}
.tool-bar2 .tb-btn svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.tool-bar2 .tb-btn .tb-ai{display:grid;place-items:center;width:23px;height:23px;border-radius:7px;background:var(--acc);color:var(--on-acc,#fff);font-size:12px;font-weight:700;letter-spacing:0}
.tool-bar2 .tb-ai+span,.tool-bar2 .tb-save{color:var(--acc)}
.tool-bar2 .tb-btn:active{opacity:.6}
.tool-bar2 .tb-note.has svg{stroke:var(--acc)}
.tool-bar2 .tb-note.has::after{content:"";position:absolute;margin:-14px -20px 0 0;width:6px;height:6px;border-radius:50%;background:var(--acc)}
.tb-note-in{display:block;width:100%;min-height:120px;margin:10px 0;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--fg);font-size:16px;line-height:1.6;font-family:inherit;resize:vertical}
.rd-card.tb-flash{animation:tbFlash 1.4s ease}
@keyframes tbFlash{0%,60%{box-shadow:0 0 0 3px color-mix(in srgb,var(--acc) 45%,transparent)}100%{box-shadow:none}}
@media (max-width:999px){
  /* 交互规范 §3（2026-10-16 用户拍板修订）：一级页面（首页/百科/工具列表/我的）底部标签栏常驻；进入具体工具页时，只显示工具操作栏（百科/客服/分享/保存），隐藏五项标签栏，返回靠左上角‹ 或右滑 */
  .tool-bar2{position:fixed;left:0;right:0;bottom:0;z-index:49;padding:0 var(--sar,0px) var(--sab,0px) var(--sal,0px)}
  body.in-tool #tabbar{display:none!important}
  body.in-tool{padding-bottom:calc(var(--tabbar-h,58px) + 40px + var(--sab,0px))}
  body.in-tool .tool-toast{bottom:calc(var(--tabbar-h,58px) + 32px + var(--sab,0px))}
}
@media (min-width:1000px){
  .tool-bar2{position:sticky;bottom:0;z-index:5;margin-top:18px;border:1px solid var(--line);border-radius:14px}
}
@media print{.tool-bar2{display:none!important}}

/* 口径：底栏「口径」是唯一入口，原「设置」按钮与标题下的「相关百科」链接行收起 */
#toolBody .tool-stagebar .tool-stage-set{display:none!important}
#toolView .yl-rel>.yl-rel-k,#toolView .yl-rel>.yl-rel-a{display:none!important}
#toolView .yl-rel:not(:has(.yl-rel-birth)){display:none!important}
.tool-setw .kj-intro{margin:0 0 12px}.kj-line{margin:0 0 10px;padding:10px 12px;border-radius:10px;background:var(--accsoft);font-size:14px;line-height:1.7}.kj-line b{color:var(--acc2)}
.kj-rules{margin:0 0 8px;font-size:13.5px;line-height:1.75}.kj-rules>b{display:block;margin:0 0 4px;font-size:14px}.kj-rules ul{margin:0;padding-left:1.2em}.kj-rules p{margin:6px 0 0;color:var(--t-mut,var(--mut));font-size:12.5px}
.tb-wk-g{margin:6px 0 4px}.tb-wk-g>summary{cursor:pointer;min-height:40px;display:flex;align-items:center;font-size:14px;font-weight:600;color:var(--fg)}.tb-wiki-list{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 10px}.tb-wiki-list a{display:inline-flex;align-items:center;min-height:40px;padding:6px 14px;border:1px solid var(--line);border-radius:99px;background:var(--card);color:var(--acc);font-size:15px;text-decoration:none}
#toolBody[data-stage="result"] .tool-stagebar.has-set .tool-stage-set{display:none!important}
.tb-dup{display:none!important}
/* 2026-10-18 用户要求：底栏已有「分享 / 保存」，结果区里同名按钮（分享链接 / 保存 / 记录 / 笔记）一律收起；底栏仍会点击这些隐藏按钮完成保存（display:none 的按钮 .click() 照常触发）。表单区「起卦记录」等历史入口（.tool-recin）保留。 */
#toolBody .tool-out .tool-actions>button[data-a="share"]:not(.hl-share),#toolBody .tool-out .tool-actions>button[data-a="save"],#toolBody .tool-actions>button[data-a="note"],#toolBody .tool-out .tool-actions>button[data-a="rec"]:not(.tool-recin),#toolBody .tool-out .tool-actions>button.ty-share,#toolBody .tool-actions>button.js-rec,#toolBody .tool-actions>button.ly-save,#toolBody .tool-actions>button.ly-rec{display:none!important}
#toolBody .tool-out .tool-actions:not(:has(>button:not([data-a="share"]:not(.hl-share),[data-a="save"],[data-a="note"],[data-a="rec"]:not(.tool-recin),.ty-share,.ly-save,.ly-rec))){display:none!important}
/* r49 页脚公示 / 投诉举报 / AI 标识 */
.yzt-foot{max-width:760px;margin:18px auto 0;padding:14px 16px calc(28px + env(safe-area-inset-bottom));text-align:center;font-size:12.5px;line-height:1.9;color:var(--mut)}
.yzt-foot p{margin:2px 0}.yzt-foot a{color:var(--mut);text-decoration:underline;text-underline-offset:2px}.yzt-foot i{font-style:normal;margin:0 .6em;opacity:.6}
body.in-tool .yzt-foot{display:none}
/* r67：落款只在首页输入页显示；排完盘的结果页不显示（site-config.js 同步设 hidden，这里兜底脚本未载入前） */
body.has-result #yztFoot{display:none!important}
/* 首页底部落款（r64）：一道淡金短线 + 宋体「运转堂」+ 标语，与顶部标题同一套字体；进入视野时「徐现」一次（site-config.js footAnim） */
.yzt-foot .yzt-foot-l{display:block;width:64px;height:1px;margin:10px auto 14px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--acc) 55%,transparent),transparent)}
.yzt-foot .yzt-foot-n{margin:0;font-family:"Yzt Title Serif","Noto Serif SC","Source Han Serif SC","Songti SC","STSong",serif;font-size:15px;font-weight:700;line-height:1.6;letter-spacing:.36em;text-indent:.36em;color:color-mix(in srgb,var(--fg) 70%,var(--bg))}
.yzt-foot .yzt-foot-s{margin:4px 0 0;font-family:"Noto Serif SC","Source Han Serif SC","Songti SC","STSong",serif;font-size:12px;line-height:1.7;letter-spacing:.28em;text-indent:.28em;color:var(--mut)}
.yzt-foot .yzt-foot-s span{display:inline-block}
#yztFoot.yf-wait .yzt-foot-l,#yztFoot.yf-wait .yzt-foot-n,#yztFoot.yf-wait .yzt-foot-s span{opacity:0}
#yztFoot.yf-play .yzt-foot-l{animation:yfLine .8s cubic-bezier(.2,.7,.2,1) both}
#yztFoot.yf-play .yzt-foot-n{animation:yfInk 1s .35s ease-out both}
#yztFoot.yf-play .yzt-foot-s span{animation:yfChar .7s calc(.95s + var(--i) * .12s) ease-out both}
@keyframes yfLine{from{transform:scaleX(0);opacity:0}to{transform:none;opacity:1}}
@keyframes yfInk{from{opacity:0;filter:blur(6px)}to{opacity:1;filter:none}}
@keyframes yfChar{from{opacity:0;transform:translateY(6px);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}
@media (prefers-reduced-motion:reduce){#yztFoot.yf-wait *,#yztFoot.yf-play *{opacity:1!important;animation:none!important}}
html.fx-off #yztFoot *{animation:none!important;opacity:1!important}
.yzt-rep-list{padding-left:1.2em;margin:8px 0}.yzt-rep-list li{margin:8px 0;font-size:14px;line-height:1.75}.yzt-rep-n{color:var(--mut);font-size:13px}
@media print{.rd-card::before{content:"以下内容由 AI 生成";display:block;font-size:12px;color:#a5342a;border:1px solid #a5342a;padding:2px 8px;margin-bottom:6px}.yzt-foot{display:none}}

/* 凡例底部：恢复默认 / 记住我的选择 */
.kj-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0 0;padding-top:12px;border-top:1px solid var(--line)}
.kj-foot[hidden]{display:none}
.kj-foot button.kj-reset{width:auto;min-height:38px;margin:0;padding:0 16px;border-radius:99px;font-size:14px;background:var(--card);color:var(--fg);border:1px solid var(--line);box-shadow:none}
.kj-mem{display:inline-flex;align-items:center;gap:8px;min-height:38px;font-size:14px;color:var(--fg);cursor:pointer}
.kj-mem input{width:18px;height:18px;margin:0;accent-color:var(--acc)}

/* 点数与畅用卡（r49b） */
#userPanel .bl-card .ac-pts{margin-bottom:8px}#userPanel .bl-pass{margin:6px 0;font-size:13px;line-height:1.7;color:var(--mut)}
#userPanel .bl-list{display:grid;gap:8px;margin-top:8px}#userPanel .bl-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px}
#userPanel .bl-item small{display:block;margin-top:2px;font-size:12px;color:var(--mut);line-height:1.5}#userPanel .bl-buy{display:flex;align-items:center;gap:10px;flex:none}
#userPanel .bl-buy span{font-size:16px;font-family:"Yzt Title Serif","Songti SC",serif}#userPanel .bl-go{min-height:44px;padding:6px 16px}

/* 购买前显著确认层 */
.tool-modal .bl-cf-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;margin:4px 0 10px}
.tool-modal .bl-cf-item small{display:block;margin-top:2px;font-size:12.5px;color:var(--t-mut,var(--mut));line-height:1.5}
.tool-modal .bl-cf-price{flex:none;font-size:20px;font-family:"Yzt Title Serif","Songti SC",serif}
.tool-modal .bl-cf-warn{margin:0 0 12px;padding:8px 12px;border-left:3px solid var(--acc);border-radius:4px;background:rgba(165,52,42,.08);font-size:14px;line-height:1.7}
.tool-modal .bl-cf-ck{display:flex;gap:10px;align-items:flex-start;margin:0 0 6px;font-size:14.5px;line-height:1.7;cursor:pointer}
.tool-modal .bl-cf-ck input{flex:none;width:22px;height:22px;margin-top:2px;accent-color:var(--acc)}
.tool-modal .bl-cf-ck a{color:var(--acc)}
.tool-modal .bl-cf-age{margin:0 0 12px;font-size:12.5px;color:var(--t-mut,var(--mut))}
.tool-modal button.bl-cf-go:disabled{opacity:.45;cursor:not-allowed}

/* AI 总开关（tools/site-config.js 设置 html[data-ai]）：关闭时不显示 AI 入口与 AI 相关文案；程序本地算的「一句总断」保留 */
html[data-ai="off"] #aiCard,html[data-ai="off"] [data-ai-on],html[data-ai="off"] .tool-bar2 .tb-ai{display:none!important}
html[data-ai="off"] .rd-card::before{display:none!important}

/* ===== 交互规范（iOS 优先）：安全区 + 板块独立视图 ===== */
/* Android WebView（Capacitor SystemBars）不支持 env()，改写 --safe-area-inset-*；两者取大 */
:root{--sat:max(env(safe-area-inset-top,0px),var(--safe-area-inset-top,0px));--sab:max(env(safe-area-inset-bottom,0px),var(--safe-area-inset-bottom,0px));--sar:max(env(safe-area-inset-right,0px),var(--safe-area-inset-right,0px));--sal:max(env(safe-area-inset-left,0px),var(--safe-area-inset-left,0px))}
@media (max-width:999px){
  body{padding-top:calc(var(--sat) + 10px)}
  body #tabbar{padding-bottom:var(--sab);padding-left:var(--sal);padding-right:var(--sar)}
  html{scroll-padding-top:calc(var(--sat) + 10px)}
}
/* 百科 / 工具 / 我的 各自独立成视图：它们显示时，首页「八字排盘」整块（标题、表单、结果、页脚）不渲染、不占位 */
.w:has(>:is(#wikiPanel,#toolsPanel,#userPanel):not(.hide))>:not(#wikiPanel):not(#toolsPanel):not(#userPanel):not(#tabbar):not(#navbar){display:none!important}
body:has(.w>:is(#wikiPanel,#toolsPanel,#userPanel):not(.hide)) #yztFoot{display:none!important}
/* 点按反馈与最小点击区 */
.tool-head button.tool-back,.tool-bar2 .tb-btn,#tabbar .navbtn{-webkit-tap-highlight-color:transparent}
.tool-head{grid-template-columns:auto minmax(0,1fr) auto}
.tool-head button.tool-kj{min-height:34px;width:auto;margin:0;padding:4px 14px;border-radius:99px;font-size:13px;color:var(--acc);border:1px solid var(--line);background:var(--card)}
.tool-head button.tool-kj[hidden]{display:none}
.tool-head .tool-kj:active{opacity:.6}
.tool-stagebar .tool-stage-back{display:none!important}
.tool-bar2{grid-template-columns:none!important;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}

/* ===== 「我的」页改版（2026-10-16）：头部头像昵称登录、三页签、命盘小卡、设置分组列表、二级页、头像弹层 ===== */
.yav{display:block;width:100%;height:100%}
.yav-bg{fill:color-mix(in srgb,var(--ev,var(--acc)) 13%,var(--card));stroke:var(--acc);stroke-width:1.5}
.yav-a{fill:var(--ev,var(--acc))}
.yav-s{fill:none;stroke:var(--ev,var(--acc));stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.yav-k{fill:var(--fg)}
.yav-c{fill:var(--card)}
.yav-o{stroke:var(--fg);stroke-width:1.2}
#userPanel .uc-hero{align-items:flex-start;gap:16px;padding:calc(18px + var(--sat,0px)*0) var(--space-card) 16px}
#userPanel .uc-avatar{position:relative;flex:none;display:block;width:68px;height:68px;min-height:0;margin:0;padding:4px;border:0;border-radius:50%;background:var(--card);box-shadow:0 0 0 1.5px var(--acc),0 6px 16px -8px color-mix(in srgb,var(--acc) 70%,transparent);cursor:pointer;-webkit-tap-highlight-color:transparent}
#userPanel .uc-avatar:active{opacity:.75}
#userPanel .uc-avatar::after{content:"+";position:absolute;right:-2px;bottom:-2px;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--acc);color:var(--card);font-size:15px;line-height:1;font-weight:700}
#userPanel .uc-av-in{display:block;width:100%;height:100%;border-radius:50%;overflow:hidden}
#userPanel .uc-av-in svg,#userPanel .uc-av-in img{display:block;width:100%;height:100%;border-radius:50%}
#userPanel .uc-av-in img{object-fit:cover}
#userPanel .uc-avatar .yav{animation:none}
#userPanel .uc-who{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:0;min-width:0}
#userPanel .uc-nick{display:inline-flex;align-items:center;gap:6px;width:auto;max-width:100%;min-height:44px;margin:-6px 0 -4px;padding:0;border:0;background:transparent;box-shadow:none;color:var(--fg);font-family:"Yzt Title Serif","Noto Serif SC","Songti SC","STSong",serif;font-size:21px;font-weight:700;letter-spacing:.06em;line-height:1.3;text-align:left;cursor:text;-webkit-tap-highlight-color:transparent}
#userPanel .uc-nick span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#userPanel .uc-nick::after{content:"";flex:none;width:12px;height:12px;opacity:.55;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 17.25V21h3.75L17.8 9.94l-3.75-3.75L3 17.25zM20.7 7.04a1 1 0 0 0 0-1.41l-2.34-2.34a1 1 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 17.25V21h3.75L17.8 9.94l-3.75-3.75L3 17.25zM20.7 7.04a1 1 0 0 0 0-1.41l-2.34-2.34a1 1 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z'/%3E%3C/svg%3E") center/contain no-repeat}
#userPanel #ucNickIn{width:100%;max-width:260px;min-height:44px;margin:-4px 0 -2px;padding:0 12px;border:1px solid var(--acc);border-radius:10px;background:var(--card);color:var(--fg);font-size:16px;font-weight:600;outline:0}
#userPanel .uc-acct{display:flex;align-items:center}
#userPanel .uc-login-b{display:inline-flex;align-items:center;gap:4px;width:auto;min-height:44px;margin:-6px 0 -6px;padding:0;border:0;border-radius:8px;background:transparent;box-shadow:none;color:var(--acc);font-size:15.5px;font-weight:700;letter-spacing:.04em;-webkit-tap-highlight-color:transparent}
#userPanel .uc-login-b:hover{filter:none}
#userPanel .uc-login-b:active{opacity:.6}
#userPanel .uc-login-b span{font-size:20px;line-height:1;font-weight:400;opacity:.8}
#userPanel .uc-tip{margin:2px 0 0;font-size:12px;line-height:1.6;color:var(--mut)}
#userPanel .uc-tabs{margin-top:0}
#userPanel .uc-tabs em{font-style:normal;margin-left:5px;font-size:13px;font-weight:600;letter-spacing:0;color:var(--mut);font-variant-numeric:tabular-nums}
#userPanel .uc-tabs button[aria-selected="true"] em{color:var(--acc)}
/* 备份提醒条 */
#userPanel .uc-nudge{margin:0 0 12px}
/* 命盘小卡 */
#userPanel .uc-item{margin:0 0 10px;border:1px solid var(--line);border-left:5px solid var(--wxc,var(--line));border-radius:14px;background:var(--card);overflow:hidden;box-shadow:0 1px 2px color-mix(in srgb,var(--fg) 6%,transparent)}
#userPanel .uc-item:last-child{margin-bottom:0;border-bottom:1px solid var(--line)}
#userPanel .uc-item.wx0{--wxc:var(--w0)}#userPanel .uc-item.wx1{--wxc:var(--w1)}#userPanel .uc-item.wx2{--wxc:var(--w2)}#userPanel .uc-item.wx3{--wxc:var(--w3)}#userPanel .uc-item.wx4{--wxc:var(--w4)}
#userPanel .uc-item-row{padding:10px 8px 10px 10px;gap:10px}
#userPanel .uc-item-av{width:46px;height:56px;border-radius:11px;flex-direction:column;align-items:center;justify-content:center;gap:1px;background:color-mix(in srgb,var(--wxc,var(--acc)) 15%,var(--card));color:color-mix(in srgb,var(--wxc,var(--acc)) 84%,var(--fg));display:flex}
#userPanel .uc-item-av b{font-family:"Yzt Title Serif","Songti SC","STSong",serif;font-size:22px;line-height:1.1;font-weight:700}
#userPanel .uc-item-av small{font-size:10.5px;line-height:1.2;opacity:.85}
#userPanel .uc-item.fav .uc-item-av{box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--acc) 70%,transparent)}
#userPanel .uc-gz span.d{padding:0 5px;border-radius:7px;background:var(--accsoft);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--acc) 40%,transparent)}
#userPanel .uc-item .uc-detail{margin:0 10px 12px}
/* 设置：分组列表 */
#userPanel .uc-set{padding:2px var(--space-card) 26px}
#userPanel .uc-grp{margin:14px 0 0;border:1px solid var(--line);border-radius:14px;background:var(--card);overflow:hidden}
#userPanel .uc-grp>*+*{border-top:1px solid color-mix(in srgb,var(--line) 75%,transparent)}
#userPanel .uc-grp .uc-row{padding:12px 14px;border-bottom:0}
#userPanel .uc-gh{display:block;margin:20px 6px -6px;padding:0;border:0;font-family:inherit;font-size:12.5px;font-weight:600;letter-spacing:.08em;line-height:1.4;color:var(--mut)}
#userPanel .uc-nav{display:flex;align-items:center;gap:10px;width:100%;min-height:50px;margin:0;padding:0 14px;border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--fg);font-size:15px;font-weight:500;text-align:left;list-style:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
#userPanel .uc-nav::-webkit-details-marker{display:none}
#userPanel .uc-nav>span{flex:1;min-width:0}
#userPanel .uc-nav em{flex:none;margin-left:auto;font-style:normal;font-size:13px;font-weight:400;color:var(--mut)}
#userPanel .uc-nav::after{content:"";flex:none;width:7px;height:7px;border-right:1.7px solid var(--mut);border-top:1.7px solid var(--mut);opacity:.7;transform:rotate(45deg)}
#userPanel .uc-nav:hover{filter:none}
#userPanel .uc-nav:active{background:var(--accsoft)}
#userPanel .uc-quiet{color:var(--mut);font-size:14px;font-weight:400}
#userPanel .uc-quiet::after{display:none}
#userPanel .uc-danger-t{color:color-mix(in srgb,#c8402f 82%,var(--fg))}
#userPanel .uc-help[open]>summary::after{transform:rotate(135deg)}
#userPanel .uc-legal-b a.uc-nav{display:flex;align-items:center;min-height:44px;text-decoration:none;color:inherit;border-radius:10px;-webkit-tap-highlight-color:transparent}
#userPanel .uc-legal-b a.uc-nav:active{opacity:.6}
#userPanel .uc-help-b{padding:0 14px 6px;border-top:1px solid color-mix(in srgb,var(--line) 75%,transparent)}
#userPanel .uc-val{font-size:14px;color:var(--fg)}
#userPanel .uc-dis{opacity:.55}
/* 关于与协议（设置最底，小字淡色居中） */
#userPanel .uc-about{margin:26px 0 0;padding:0 6px;text-align:center;font-size:12px;line-height:1.7;color:color-mix(in srgb,var(--mut) 80%,transparent)}
#userPanel .uc-about p{margin:0;padding:0;border:0}
#userPanel .uc-about a{display:inline-block;padding:10px 2px;color:inherit;text-decoration:underline;text-underline-offset:2px}
#userPanel .uc-about i{font-style:normal;margin:0 .6em;opacity:.6}
#userPanel .uc-about .uc-icp:empty{display:none}
#userPanel .uc-about .uc-a-ver{padding-bottom:2px}
/* 二级页 */
#userPanel .uc-sub{padding:0 var(--space-card) 30px}
#userPanel .uc-sub-bar{position:sticky;top:var(--sat,0px);z-index:5;display:flex;align-items:center;margin:0 calc(var(--space-card)*-1);padding:0 8px;min-height:50px;background:var(--card);border-bottom:1px solid var(--line)}
#userPanel .uc-back{display:inline-flex;align-items:center;gap:6px;flex:none;width:auto;min-width:72px;min-height:48px;margin:0;padding:0 8px;border:0;border-radius:8px;background:transparent;box-shadow:none;color:var(--acc);font-size:16px;font-weight:500;-webkit-tap-highlight-color:transparent}
#userPanel .uc-back:hover{filter:none}
#userPanel .uc-back:active{opacity:.55}
#userPanel .uc-sub-bar b{flex:1;text-align:center;font-family:"Yzt Title Serif","Noto Serif SC","Songti SC","STSong",serif;font-size:17px;font-weight:700;letter-spacing:.08em;color:var(--fg)}
#userPanel .uc-sub-sp{flex:none;min-width:72px}
#userPanel .uc-bk-t,#userPanel .uc-bk-w{margin:14px 2px 0;font-size:12.5px;line-height:1.75;color:var(--mut)}
#userPanel .uc-sub .uc-btns{margin-top:16px}
#userPanel .uc-bk-more{margin-top:8px}
#userPanel .uc-bk-more summary{display:flex;align-items:center;gap:6px;min-height:44px;color:var(--acc);font-size:14px;list-style:none;cursor:pointer}
#userPanel .uc-bk-more summary::-webkit-details-marker{display:none}
#userPanel .uc-bk-more summary::after{content:"";width:7px;height:7px;border-right:1.7px solid currentColor;border-bottom:1.7px solid currentColor;transform:rotate(45deg) translateY(-2px)}
#userPanel .uc-bk-more[open] summary::after{transform:rotate(225deg)}
#userPanel .uc-wipe{display:block;width:auto;min-height:44px;margin:28px auto 0;padding:0 14px;border:0;background:transparent;box-shadow:none;color:color-mix(in srgb,#c8402f 82%,var(--fg));font-size:12.5px;text-decoration:underline;text-underline-offset:2px}
#userPanel .uc-wipe:hover{filter:none}
#userPanel .uc-plays-all{margin:14px 0 0;min-height:48px}
/* 头像弹层（底部抽屉） */
.tool-modal .uc-av-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px 6px;margin:10px 0 14px}
.tool-modal .uc-av-opt{display:flex;flex-direction:column;align-items:center;gap:4px;width:auto;min-height:44px;margin:0;padding:4px 0;border:0;border-radius:12px;background:transparent;box-shadow:none;color:var(--mut);font-size:11.5px;font-weight:500;-webkit-tap-highlight-color:transparent}
.tool-modal .uc-av-opt svg{display:block;width:min(52px,100%);aspect-ratio:1;border-radius:50%}
.tool-modal .uc-av-opt:hover{filter:none}
.tool-modal .uc-av-opt:active{opacity:.6}
.tool-modal .uc-av-opt[aria-pressed="true"] svg{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--acc)}
.tool-modal .uc-av-pick{position:relative;display:flex;align-items:center;justify-content:center;min-height:48px;margin:0;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--fg);font-size:15px;font-weight:500;cursor:pointer;overflow:hidden}
.tool-modal .uc-av-pick input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;font-size:0}
.tool-modal .uc-av-note{margin:12px 0 2px;font-size:12px;line-height:1.7;color:var(--mut);text-align:center}
/* 云端备份（r63）：备份页顶部一组 + 开启同意弹层 */
#userPanel .uc-cloud .uc-grp:first-child{margin-top:4px}
#userPanel .uc-cloud .uc-grp .uc-row+.uc-nav,#userPanel .uc-cloud .uc-grp .uc-nav+.uc-nav{border-top:1px solid var(--line)}
#userPanel .uc-cloud .uc-row-t small{overflow-wrap:anywhere}
#userPanel .uc-cloud .uc-cl-err{color:var(--acc2)}
#userPanel .uc-cloud .uc-mini[disabled]{opacity:.5}
#userPanel .uc-cl-note{margin-top:8px}
.tool-modal .uc-dlg .uc-cl-list{margin:6px 0 12px;padding:0 0 0 1.1em;font-size:13px;line-height:1.75;color:var(--mut)}
.tool-modal .uc-dlg .uc-cl-list li{margin:0 0 6px}
.tool-modal .uc-dlg .uc-cl-list b{color:var(--fg)}
.tool-modal .uc-dlg .uc-cl-warn{margin:0 0 12px;padding:10px 12px;border-radius:10px;background:color-mix(in srgb,var(--acc2) 10%,var(--card));font-size:13px;line-height:1.7;color:var(--fg)}
.tool-modal .uc-dlg .uc-cl-agree{display:flex;align-items:flex-start;gap:10px;min-height:44px;margin:0 0 4px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card);font-size:13.5px;line-height:1.7;color:var(--fg);cursor:pointer}
.tool-modal .uc-dlg .uc-cl-agree input{flex:none;width:20px;height:20px;min-width:0;min-height:0;margin:2px 0 0;padding:0;align-self:flex-start;accent-color:var(--acc)}
.tool-modal .uc-dlg .uc-cl-agree:has(input:checked){border-color:var(--acc)}
.tool-modal .uc-dlg button[disabled]{opacity:.5;cursor:not-allowed}
@media (prefers-reduced-motion:reduce){#userPanel .uc-avatar svg{animation:none}}
/* 命盘小卡：窄屏下让四柱不换行 */
#userPanel .uc-item-row{padding:10px 6px 10px 8px;gap:8px}
#userPanel .uc-item-av{width:40px;height:52px}
#userPanel .uc-item-av b{font-size:20px}
#userPanel .uc-gz{gap:0 7px;font-size:14.5px;letter-spacing:.02em}
#userPanel .uc-item-act{gap:0}
#userPanel .uc-item .uc-star{width:34px}
#userPanel .uc-item-act .loadBazi{padding:6px 10px;min-width:48px}
#userPanel .uc-about #ucAboutHours{display:block}
#userPanel .uc-about #ucAboutHours i{display:none}
#userPanel .uc-sub-bar{position:relative;top:auto}
/* ===== 请张老师细看（tools/teacher.js，r72）：一行克制的小卡片 + 介绍面板；颜色全用站点变量，跟随明暗主题 ===== */
.yt-entry{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:14px 0 4px;padding:10px 8px 10px 14px;border:1px solid var(--t-line-soft,var(--line));border-radius:12px;background:var(--t-tint,var(--card));color:var(--mut);font-size:13.5px;line-height:1.5}
.yt-entry-t{flex:1;min-width:0}
.yt-entry .yt-entry-b{flex:none;width:auto;min-height:36px;margin:0;padding:6px 10px;border:0;border-radius:8px;background:transparent;box-shadow:none;color:var(--acc);font-size:14px;font-weight:600;white-space:nowrap;cursor:pointer}
.yt-entry .yt-entry-b:hover{filter:none;background:var(--accsoft,transparent)}
.yt-entry .yt-entry-b:active{background:var(--accsoft,transparent)}
#out>.yt-entry-bazi{margin:12px 0}
#userPanel .yt-uc{margin:12px 18px 2px}
#userPanel .yt-uc .uc-nav .yt-uc-t{display:flex;align-items:center;gap:10px}
#userPanel .yt-uc .uc-nav .yt-uc-t img{flex:none;width:26px;height:26px;border-radius:50%}
#userPanel .yt-uc .uc-nav em{font-size:12.5px;white-space:nowrap}
@media (max-width:360px){#userPanel .yt-uc .uc-nav em{display:none}}
.tool-modal.yt-modal .yt-panel{text-align:center;padding:2px 0 4px}
.yt-panel .yt-hd{display:flex;align-items:center;justify-content:center;gap:14px;margin:0 0 8px}
.yt-panel .yt-logo{width:72px;height:72px;border-radius:50%;box-shadow:0 2px 10px rgba(0,0,0,.12)}
.yt-panel .yt-photo{width:72px;height:72px;border-radius:50%;object-fit:cover;border:1px solid var(--line)}
.yt-panel .yt-photo[hidden]{display:none}
.yt-panel h4.yt-name{margin:4px 0 4px;font-family:var(--t-serif,serif);font-size:20px;letter-spacing:.12em;color:var(--fg)}
.yt-panel .yt-bio{margin:0 0 10px;color:var(--mut);font-size:14px;line-height:1.7}
.yt-panel .yt-tags{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin:0 0 14px}
.yt-panel .yt-tags span{padding:2px 12px;border:1px solid var(--t-line-soft,var(--line));border-radius:99px;color:var(--acc);font-size:13px;line-height:1.7;letter-spacing:.1em}
.tool-modal .yt-panel h5.yt-h{justify-content:center;margin:0 0 4px;color:var(--mut);font-size:12.5px;font-weight:600;letter-spacing:.12em}
.tool-modal .yt-panel h5.yt-h::before{display:none}
.yt-panel .yt-list{display:inline-block;margin:0 auto 8px;padding:0;list-style:none;text-align:left;font-size:14.5px;line-height:1.9;color:var(--fg)}
.yt-panel .yt-list li{position:relative;padding-left:16px}
.yt-panel .yt-list li::before{content:"";position:absolute;left:2px;top:.8em;width:5px;height:5px;border-radius:50%;background:var(--acc);opacity:.7}
.yt-panel .yt-price{margin:2px 0 12px;color:var(--mut);font-size:13px}
.yt-panel .yt-qr{display:flex;justify-content:center;margin:0 auto 6px}
.yt-panel .yt-qr-img{display:block;width:200px;height:200px;padding:6px;border-radius:12px;background:#fff;border:1px solid var(--line)}
.yt-panel .yt-qr-ph{display:flex;align-items:center;justify-content:center;width:200px;height:200px;border:1px dashed var(--line);border-radius:12px;color:var(--mut);font-size:14px}
.yt-panel .yt-qr-ph[hidden]{display:none}
.yt-panel .yt-qr-tip{margin:4px 0 10px;color:var(--fg);font-size:13.5px}
.yt-panel .yt-qr-tip[hidden]{display:none}
.yt-panel .yt-wx{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 12px;margin:0 0 10px;font-size:14px}
.yt-panel .yt-copy{width:auto;min-height:40px;margin:0;padding:6px 16px;border:0;border-radius:10px;background:var(--acc);color:var(--t-on-acc,#fff);font-size:14px;cursor:pointer}
.yt-panel .yt-foot{margin:8px 0 0;padding-top:10px;border-top:1px dashed var(--t-line-soft,var(--line));color:var(--mut);font-size:12px}
@media (min-width:700px){.yt-panel .yt-list{display:flex;flex-wrap:wrap;justify-content:center;gap:2px 20px;max-width:440px}}
@media print{.yt-entry,.yt-uc{display:none!important}}

/* 2026-10-18 工具首页搜索框 + 工具页常用星标 */
.tool-search{margin:0 0 12px}
.tool-search input[type=search]{width:100%;min-height:44px;padding:0 14px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--fg,inherit);font-size:15px;box-sizing:border-box;-webkit-appearance:none;appearance:none}
.tool-search input[type=search]:focus{outline:2px solid var(--acc);outline-offset:1px}
.tool-qmore{display:flex;flex-direction:column;gap:8px;margin:14px 0 6px}
.tool-qmore button{min-height:44px;text-align:left;padding:0 14px}
#toolsPanel [hidden]{display:none!important}
.tool-head .tool-pin{flex:none;width:40px;min-width:40px;height:40px;min-height:40px;padding:0;margin-left:auto;border-radius:50%;position:relative}
.tool-head .tool-pin::before{content:"";position:absolute;inset:0;margin:auto;width:20px;height:20px;background:currentColor;opacity:.55;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='1.8' stroke-linejoin='round' d='M12 3.2l2.6 5.4 5.9.8-4.3 4.1 1 5.9L12 16.6l-5.2 2.8 1-5.9-4.3-4.1 5.9-.8z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='1.8' stroke-linejoin='round' d='M12 3.2l2.6 5.4 5.9.8-4.3 4.1 1 5.9L12 16.6l-5.2 2.8 1-5.9-4.3-4.1 5.9-.8z'/%3E%3C/svg%3E") center/contain no-repeat}
.tool-head .tool-pin[aria-pressed="true"]::before{background:var(--acc);opacity:1;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' stroke='%23000' stroke-width='1.8' stroke-linejoin='round' d='M12 3.2l2.6 5.4 5.9.8-4.3 4.1 1 5.9L12 16.6l-5.2 2.8 1-5.9-4.3-4.1 5.9-.8z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' stroke='%23000' stroke-width='1.8' stroke-linejoin='round' d='M12 3.2l2.6 5.4 5.9.8-4.3 4.1 1 5.9L12 16.6l-5.2 2.8 1-5.9-4.3-4.1 5.9-.8z'/%3E%3C/svg%3E") center/contain no-repeat}
/* 2026-10-18 输入表单收紧（手机）：行高 56→50、上下内边距 7→5、主按钮 48→46；点按区域仍 ≥44px（iOS 规范） */
@media (max-width:600px){
  :is(#toolBody .tool-form:not(.tool-out *),#toolBody .qm-set)>.f{min-height:50px;padding:5px 0}
  :is(#toolBody .tool-form:not(.tool-out *),#toolBody .qm-set)>.f :where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),select){height:40px;min-height:40px}
  #toolBody .tool-actions:not(.tool-out *):not(:has(.cal-prev,.jq-prev)):not(.lp-go):not(.js-act)>button{min-height:46px}
}

/* 2026-10-18 八字结果页：用这个八字继续看 */
#toolNext{margin:14px 0;padding:14px 16px}
#toolNext .tn-h{margin:0 0 10px;font-size:15px;font-weight:700;color:var(--acc2,var(--acc))}
#toolNext .tn-chips{display:flex;flex-wrap:wrap;gap:8px}
#toolNext .tn-chips button{min-height:44px;padding:0 14px;border:1px solid var(--acc);border-radius:99px;background:var(--card);color:var(--acc);font-size:14px;font-weight:600;-webkit-tap-highlight-color:transparent}
#toolNext .tn-chips button:active{opacity:.6}
#toolNext .tn-more{margin-top:8px}
#toolNext .tn-more[hidden]{display:none}
#toolNext .tn-tog{display:block;width:100%;min-height:44px;margin:8px 0 0;padding:0 14px;border:0;border-radius:12px;background:transparent;color:var(--mut);font-size:13.5px;font-weight:600;box-shadow:none;-webkit-tap-highlight-color:transparent}
#toolNext .tn-tog:active{opacity:.6}
#toolNext .tn-s{margin:8px 0 0;font-size:12px;color:var(--mut)}
@media (max-width:600px){#toolNext .tn-chips button{flex:1 1 calc(50% - 8px);padding:0 8px;font-size:13.5px}}

/* 2026-10-18 用户要求：「排法」挪到星标旁边，同一行，少占一行高度 */
.tool-head .tool-head-acts{display:flex;align-items:center;gap:8px;justify-self:end}
.tool-head .tool-head-acts .tool-pin{margin-left:0}
.tool-head .tool-head-acts .tool-kj{white-space:nowrap}

/* ======== 磨砂宣纸（Liquid Glass 风格）2026-10-18 用户拍板方案 A；iOS 27 把默认透明度调低、对背后内容扩散更强，这里同样取偏稳的透明度（70%）与更强的模糊 ========
   iOS 26+ 的设计语言：底栏悬浮成胶囊、半透明磨砂、边缘有高光。这里用 backdrop-filter 做近似，只用在「浮在内容上方」的几处：
   手机底部标签栏、工具页底部操作栏、弹出面板、提示条；字、图标、点按区域不变。不支持 backdrop-filter 的环境保持原来的实底；
   系统开了「降低透明度」（prefers-reduced-transparency）时也回到实底。电脑宽屏（左侧竖栏）不变。 */
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  :root{--glass-bg:color-mix(in srgb,var(--card) 70%,transparent);--glass-line:rgba(255,255,255,.6);--glass-hi:rgba(255,255,255,.7);--glass-sh:rgba(60,42,16,.34)}
  :root[data-theme="dark"]{--glass-line:rgba(255,255,255,.16);--glass-hi:rgba(255,255,255,.20);--glass-sh:rgba(0,0,0,.55)}
  @media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--glass-line:rgba(255,255,255,.16);--glass-hi:rgba(255,255,255,.20);--glass-sh:rgba(0,0,0,.55)}}
  @media (max-width:859px){
    #tabbar{left:10px;right:10px;bottom:calc(env(safe-area-inset-bottom,0px) + 8px);padding:0 6px;border:1px solid var(--glass-line);border-radius:30px;background:var(--glass-bg);-webkit-backdrop-filter:saturate(1.6) blur(32px);backdrop-filter:saturate(1.6) blur(32px);box-shadow:0 12px 32px -14px var(--glass-sh),inset 0 1px 0 var(--glass-hi)}
  }
  @media (max-width:999px){
    .tool-bar2{left:10px;right:10px;bottom:calc(var(--sab,0px) + 8px);padding:0 6px;border:1px solid var(--glass-line);border-radius:26px;background:var(--glass-bg);-webkit-backdrop-filter:saturate(1.6) blur(32px);backdrop-filter:saturate(1.6) blur(32px);box-shadow:0 12px 32px -14px var(--glass-sh),inset 0 1px 0 var(--glass-hi)}
  }
  .tool-modal .box{background:color-mix(in srgb,var(--card) 88%,transparent);-webkit-backdrop-filter:saturate(1.5) blur(34px);backdrop-filter:saturate(1.5) blur(34px);border-top:1px solid var(--glass-line);box-shadow:0 -14px 40px -12px var(--glass-sh),inset 0 1px 0 var(--glass-hi)}
  .tool-toast{background:color-mix(in srgb,rgba(30,22,14,1) 72%,transparent);-webkit-backdrop-filter:saturate(1.6) blur(18px);backdrop-filter:saturate(1.6) blur(18px);border:1px solid rgba(255,255,255,.12)}
}
@media (prefers-reduced-transparency:reduce){
  #tabbar,.tool-bar2{background:var(--card)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
  .tool-modal .box{background:var(--card)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
}

/* App（yzt-native）里原生外壳已经留出底部安全区：悬浮底栏不再按 env(safe-area-inset-bottom) 重复留，且内边距不被基础样式盖回去 */
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  @media (max-width:859px){ html #tabbar{padding:0 6px!important} html.yzt-native #tabbar{bottom:10px!important} }
  @media (max-width:999px){ html .tool-bar2{padding:0 6px!important} html.yzt-native .tool-bar2{bottom:10px!important} }
}
/* 悬浮底栏没有底部安全区内边距了：当前项的墨印指示条改成贴着栏的底边 */
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){ @media (max-width:859px){ html #tabbar>.fx-ink{bottom:3px} } }

/* 2026-10-18 修「百科页底部冒白框」：html 根元素背景原来是透明的，内容比屏幕矮的页面（百科）下方那一截会露出 WebView 的白底。
   根元素背景与页面同色（随浅色 / 深色），并让 body 至少撑满一屏。 */
html{background-color:var(--bg,#f6f1e6)!important}
body{min-height:100vh;min-height:100dvh}

/* 2026-10-18 排盘页（首页输入卡片）紧凑优化（手机）：用户 2026-10-17 定的「今日条及以下整体下移」留白不动，只把框框收紧：
   行高 48→44（日期行 54→48，字 19→18），开始排盘按钮 52→48，卡片内边距略收，存档作次要按钮更小；点按区域仍 ≥44px。 */
@media (max-width:600px){
  html body .birth-top{min-height:44px}
  html body .calendar-line{min-height:44px}
  html body .pk-sumrow{min-height:48px}
  html body .pk-sumrow .pk-sr-t{font-size:18px}
  html body .birth-actions{margin-top:10px}
  html body .birth-actions #go{height:48px;min-height:48px;font-size:17px}
  html body .birth-actions .birth-save{height:44px;min-height:44px;font-size:14px}
}

/* r90 底栏再小一点（手机）：高 58→50，图标 26→23，太极 28→25，字 12→11 */
@media (max-width:859px){
  html:root{--tabbar-h:50px}
  html body #tabbar .navbtn{gap:3px;padding:5px 0 4px;font-size:11px}
  html body #tabbar .navbtn::before{width:23px;height:23px}
  html body #tabbar .navtj .tj{width:25px;height:25px}
}

/* r91 设置页每一块再缩小（手机）：行距、分段按钮、说明小字、导航行都收紧，整页更短 */
@media (max-width:600px){
  html body #userPanel :is(#ucPaneSet,#ucSub) .uc-grp{margin-top:10px;border-radius:12px}
  html body #userPanel :is(#ucPaneSet,#ucSub) .uc-grp .uc-row{padding:7px 12px;gap:4px 10px}
  html body #userPanel :is(#ucPaneSet,#ucSub) .uc-row-t{gap:1px}
  html body #userPanel :is(#ucPaneSet,#ucSub) .uc-row-t b{font-size:14px}
  html body #userPanel :is(#ucPaneSet,#ucSub) .uc-row-t small{font-size:11.5px;line-height:1.4}
  html body #userPanel :is(#ucPaneSet,#ucSub) .uc-seg{padding:2px;border-radius:9px}
  html body #userPanel :is(#ucPaneSet,#ucSub) .uc-seg button{min-height:30px;min-width:34px;padding:2px 9px;font-size:12.5px;border-radius:7px}
  html body #userPanel :is(#ucPaneSet,#ucSub) .uc-nav{min-height:42px;font-size:14px}
  html body #userPanel #ucPaneSet .uc-gh{margin:14px 6px -4px;font-size:12px}
  html body #userPanel #ucPaneSet details.uc-help>summary{min-height:42px}
}

/* r92 手机：设置页底部留出底栏高度，滚到底「关于」不被浮动底栏遮住（页面变短后需要） */
@media (max-width:859px){ html body #userPanel #ucAbout{margin-bottom:calc(var(--tabbar-h,50px) + 24px)} }
/* 微信 / iOS：滑到顶或底时不露出浏览器自带的白底（橡皮筋回弹不外溢）；深色底由 html 背景色兜住 */
@supports (-webkit-touch-callout:none){ html,body{overscroll-behavior-y:none} }   /* 只对 iOS（含微信内置浏览器）生效；安卓保留下拉刷新 */

/* 阴盘奇门解读卡：一句总断可点开 / 收起（reading/card.js） */
.rd-card.rd-foldable p.rd-verdict{cursor:pointer;-webkit-tap-highlight-color:transparent;align-items:center}
.rd-card.rd-foldable p.rd-verdict .rd-sentence{flex:1;min-width:0}
.rd-card.rd-foldable .rd-chev{flex:none;margin-left:auto;font-style:normal;font-size:20px;line-height:1;color:var(--mut);transition:transform .2s}
.rd-card.rd-foldable.rd-open .rd-chev{transform:rotate(90deg)}
.rd-card.rd-foldable .rd-fold{margin-top:10px}

/* ===================== prv 面板（tools/private-area.js；中性前缀 .xp-，仅白名单账号才会生成 DOM） ===================== */
:root{--xp-red:#b3261e;--xp-redbg:#fbe9e7;--xp-redline:#e8b4ae}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--xp-red:#ff9a90;--xp-redbg:#3a1f1c;--xp-redline:#6b3a35}}
:root[data-theme="dark"]{--xp-red:#ff9a90;--xp-redbg:#3a1f1c;--xp-redline:#6b3a35}
html.xp-lock,html.xp-lock body{overflow:hidden}
.xp-cap{margin:18px 4px 6px;font-size:12.5px;color:var(--t-mut)}
.xp-hint{margin:6px 4px 0;font-size:12px;line-height:1.5;color:var(--t-mut)}
.xp-row{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px}
.xp-sw{flex:none;margin:0;box-shadow:none;position:relative;width:52px;height:44px;padding:0;border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
.xp-sw i{position:absolute;left:4px;top:10px;width:44px;height:24px;border-radius:99px;background:color-mix(in srgb,var(--mut) 40%,var(--card));transition:background .2s}
.xp-sw i::after{content:"";position:absolute;left:2px;top:2px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .2s}
.xp-sw[aria-checked="true"] i{background:var(--acc)}
.xp-sw[aria-checked="true"] i::after{transform:translateX(20px)}
#userPanel #xpEntry.xp-entry{margin:12px 18px 2px}
.xp-entry .uc-nav{min-height:48px}
.xp-rd{position:fixed;inset:0;z-index:1200;display:flex;flex-direction:column;background:var(--bg);color:var(--fg);font-family:inherit}
.xp-bar{flex:none;display:flex;align-items:center;min-height:50px;padding:var(--sat,0px) 8px 0;background:var(--card);border-bottom:1px solid var(--line);box-sizing:content-box}
.xp-bar b{flex:1;min-width:0;text-align:center;font-family:var(--t-serif);font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.xp-back{flex:none;width:auto;margin:0;box-shadow:none;display:inline-flex;align-items:center;gap:4px;min-width:64px;min-height:44px;padding:0 6px;border:0;background:none;color:var(--acc2);font-size:15px;cursor:pointer}
.xp-sp{min-width:64px}
.xp-scroll{flex:1;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:12px 16px calc(var(--sab,0px) + 28px);max-width:720px;width:100%;margin:0 auto;box-sizing:border-box}
.xp-tabs{display:flex;gap:2px;padding:3px;border-radius:12px;background:var(--t-tint);border:1px solid var(--line)}
.xp-tabs button{flex:1;min-height:44px;padding:4px 8px;border:0;border-radius:9px;background:none;color:var(--t-mut);font-size:14px;cursor:pointer}
.xp-tabs button[aria-selected="true"]{background:var(--card);color:var(--acc2);font-weight:700;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.xp-list{margin-top:12px;border:1px solid var(--line);border-radius:14px;background:var(--card);overflow:hidden}
.xp-it{display:block;width:100%;min-height:56px;padding:12px 14px;border:0;background:none;text-align:left;color:var(--fg);cursor:pointer;overflow-wrap:anywhere}
.xp-it+.xp-it{border-top:1px solid var(--t-line-soft)}
.xp-it b{display:block;font-size:15px;line-height:1.4}
.xp-it small{display:block;margin-top:3px;font-size:12.5px;line-height:1.5;color:var(--t-mut)}
.xp-empty,.xp-load{margin:18px 4px;font-size:13px;color:var(--t-mut)}
.xp-foot{margin:12px 4px 0;font-size:12px;color:var(--t-mut)}
.xp-warn{padding:11px 14px;border:1px solid var(--xp-redline);border-radius:12px;background:var(--xp-redbg);color:var(--xp-red);font-size:13.5px;line-height:1.6}
.xp-warn b{display:block;font-size:13px}
.xp-warn p{margin:2px 0 0}
.xp-art{margin-top:14px;overflow-wrap:anywhere}
.xp-art h1{margin:0 0 10px;font-family:var(--t-serif);font-size:20px;line-height:1.4}
.xp-body{font-size:15.5px;line-height:1.85}
.xp-body p{margin:0 0 .9em}
.xp-body h2,.xp-body h3,.xp-body h4{margin:1.2em 0 .5em;font-family:var(--t-serif);line-height:1.4}
.xp-body h2{font-size:18px}.xp-body h3{font-size:16.5px}.xp-body h4{font-size:15.5px}
.xp-body ul,.xp-body ol{margin:0 0 .9em;padding-left:1.4em}
.xp-body blockquote{margin:0 0 .9em;padding:.2em 1em;border-left:3px solid var(--line);color:var(--t-mut)}
.xp-intro{margin:10px 4px 0;font-size:13px;line-height:1.6;color:var(--t-mut)}
.xp-body ol{list-style:decimal}.xp-body ol li,.xp-body ul li{margin:.2em 0}
.xp-tw{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 0 .9em;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.xp-body table{border-collapse:collapse;width:max-content;min-width:100%;margin:0;font-size:14px;line-height:1.6}
.xp-body th,.xp-body td{padding:7px 11px;border:1px solid var(--line);font-size:14px;text-align:left;vertical-align:top;min-width:4.5em}
.xp-body th{background:var(--t-tint);font-weight:700;white-space:nowrap}
.xp-body tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--t-tint) 55%,transparent)}
