/* 共用骨架：结构与间距在这里，颜色/字体/圆角全部走主题变量 */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:16px}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.7;
  font-feature-settings:"tnum" 1;-webkit-font-smoothing:antialiased}
h1,h2,h3,p{margin:0}
button,input{font:inherit;color:inherit}
a{color:inherit}
[hidden]{display:none!important}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:4px}
.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:var(--bg);padding:10px 14px;z-index:20}
.skip:focus{left:8px}

/* 顶栏 */
.top{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;max-width:1160px;margin:0 auto}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;min-height:44px}
.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:var(--mark-radius,6px);
  background:var(--accent);color:var(--accent-ink);font-family:var(--font-display);font-size:18px}
.brand-name{font-family:var(--font-display);font-size:19px;letter-spacing:.12em;line-height:1.1}
.brand-name small{display:block;font-family:var(--font-body);font-size:11px;letter-spacing:.3em;color:var(--muted)}
.tools{position:relative}
.tools summary{list-style:none;cursor:pointer;padding:10px 14px;min-height:44px;display:flex;align-items:center;
  border:1px solid var(--line);border-radius:999px;font-size:14px}
.tools summary::-webkit-details-marker{display:none}
.tools-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:10;padding:8px;width:min(280px,calc(100vw - 40px));
  max-height:calc(100vh - 120px);overflow:auto;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.tools ul{list-style:none;margin:0;padding:0}
.tools-note{font-size:12px;color:var(--muted);padding:6px 12px 2px;text-wrap:balance}
.tools-group{font-size:12px;letter-spacing:.2em;color:var(--muted);padding:10px 12px 2px}
.tools li a{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px;padding:0 12px;border-radius:8px;text-decoration:none}
.tools li small{font-size:12px;color:var(--muted)}
.tools li a:hover,.tools li a[aria-current]{background:var(--surface-2)}

/* 布局：手机单列；桌面有结果后左右分栏 */
.layout{max-width:1160px;margin:0 auto;padding:8px 20px 64px}
.intake{max-width:560px;margin:0 auto}
@media (min-width:960px){
  .layout.has-result{display:grid;grid-template-columns:380px minmax(0,1fr);gap:40px;align-items:start}
  .layout.has-result .intake{position:sticky;top:20px;margin:0}
  .layout.has-result h1{font-size:28px}
  .layout.has-result .lede{display:none}
}

/* 输入区 */
h1{font-family:var(--font-display);font-weight:var(--display-weight,600);font-size:clamp(30px,6vw,40px);line-height:1.25;
  letter-spacing:.02em;margin:20px 0 10px}
.br-m{display:none}
@media (max-width:420px){.br-m{display:inline}}
.lede{color:var(--muted);margin-bottom:20px;text-wrap:balance}
.field{margin:0 0 16px;border:0;padding:0}
label,legend{display:block;font-size:14px;font-weight:600;margin-bottom:6px;padding:0}
.hint-inline{font-weight:400;color:var(--muted);margin-left:8px;font-size:13px}
.label-row{display:flex;justify-content:space-between;align-items:center}
.label-row label{margin-bottom:6px}
.check{display:inline-flex;align-items:center;gap:8px;font-weight:400;font-size:14px;cursor:pointer;min-height:44px;margin:0}
.check input{width:20px;height:20px;accent-color:var(--accent)}
input[inputmode]{width:100%;height:52px;padding:0 16px;font-size:18px;letter-spacing:.04em;
  background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius)}
input[inputmode]::placeholder{color:var(--muted);opacity:.7}
input[inputmode]:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--focus-soft)}
input[aria-invalid]{border-color:var(--danger)}
input:disabled{opacity:.45}
.seg{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.seg label{margin:0;cursor:pointer}
.seg input{position:absolute;opacity:0}
.seg span{display:flex;align-items:center;justify-content:center;height:52px;border:1.5px solid var(--line);
  border-radius:var(--radius);background:var(--surface);font-weight:500}
.seg input:checked+span{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}
.seg input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px}
.err{color:var(--danger);font-size:14px;min-height:0;margin-top:6px}
.err:empty{display:none}
.form-err{margin:0 0 12px}
.help{color:var(--muted);font-size:13px;margin-top:6px}
.place{margin:4px 0 20px;border-top:1px solid var(--line);padding-top:12px}
.place summary{cursor:pointer;font-size:14px;color:var(--muted);min-height:44px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.place summary b{color:var(--ink);font-weight:600}
.place .edit{margin-left:auto;color:var(--accent)}
.place[open] .field{margin-top:12px}
.btn{display:flex;align-items:center;justify-content:center;width:100%;min-height:54px;padding:0 20px;border-radius:var(--radius);
  font-size:17px;font-weight:600;cursor:pointer;text-decoration:none;border:1.5px solid transparent;letter-spacing:.06em}
.btn.primary{background:var(--accent);color:var(--accent-ink)}
.btn.primary:hover{filter:brightness(1.06)}
.btn.ghost{background:transparent;border-color:var(--line);margin-top:10px}
.btn.outline{background:transparent;border-color:var(--accent);color:var(--accent);width:auto;display:inline-flex}
.btn:disabled{opacity:.6;cursor:progress}
.fine{text-align:center;color:var(--muted);font-size:13px;margin-top:12px}

/* 结果区 */
.result{max-width:720px;margin:32px auto 0}
.layout.has-result .result{margin:20px 0 0;max-width:none}
.result-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-bottom:14px}
.tag{font-size:13px;color:var(--accent);font-weight:600;letter-spacing:.08em}
.summary-line{font-size:14px;color:var(--muted)}
.link{background:none;border:0;color:var(--accent);cursor:pointer;min-height:44px;padding:0 4px;margin-left:auto;font-size:14px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px 20px;margin-bottom:14px;
  box-shadow:var(--card-shadow,none)}
.card h2{font-family:var(--font-display);font-size:20px;font-weight:var(--display-weight,600);margin-bottom:12px;letter-spacing:.04em}
.eyebrow{font-size:12px;letter-spacing:.24em;color:var(--muted);margin-bottom:10px}
.note{font-size:13px;color:var(--muted);margin-top:12px}
.lead-text{margin-bottom:14px}

/* 日主之象 */
.hero{padding:26px 22px}
.hero-main{display:flex;align-items:center;gap:20px}
.dm-char{font-family:var(--font-display);font-size:96px;line-height:1;color:var(--el);width:120px;height:120px;
  display:grid;place-items:center;flex:none;border-radius:var(--dm-radius,20px);background:var(--dm-bg,var(--surface-2));
  border:var(--dm-border,0)}
.dm-name{font-family:var(--font-display);font-size:30px;font-weight:var(--display-weight,600);letter-spacing:.08em;line-height:1.2}
.dm-el{color:var(--muted);font-size:15px;margin-top:6px}
.quote{margin:20px 0 0;padding:14px 16px;border-left:3px solid var(--accent);background:var(--surface-2);border-radius:0 8px 8px 0}
.quote p{font-family:var(--font-display);font-size:19px;letter-spacing:.06em}
.quote cite{display:block;font-style:normal;font-size:13px;color:var(--muted);margin-top:4px}

/* 四柱 */
.pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.pillar{display:flex;flex-direction:column;align-items:center;padding:12px 4px;border-radius:12px;background:var(--surface-2)}
.pillar.is-day{outline:2px solid var(--accent);outline-offset:-2px}
.p-label{font-size:13px;color:var(--muted)}
.p-char{font-family:var(--font-display);font-size:38px;line-height:1.3;color:var(--el)}
.p-el{font-size:12px;color:var(--muted);margin-top:2px}

/* 五行条 */
.bars{display:grid;gap:10px}
.bar{display:grid;grid-template-columns:28px 1fr 48px;align-items:center;gap:10px}
.bar-k{font-family:var(--font-display);font-size:18px;text-align:center}
.bar-track{height:12px;border-radius:999px;background:var(--surface-2);overflow:hidden}
.bar-fill{display:block;height:100%;border-radius:999px;background:var(--el)}
.bar-v{font-size:13px;color:var(--muted);text-align:right}
.bar.is-top .bar-k,.bar.is-top .bar-v{color:var(--ink);font-weight:700}

/* 大运时间轴：手机横向滑动 */
.timeline{list-style:none;margin:0;padding:4px 0 8px;display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;
  scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.step{flex:0 0 auto;scroll-snap-align:start;min-width:78px;padding:10px 8px;border-radius:12px;text-align:center;
  background:var(--surface-2);border:1.5px solid transparent;position:relative}
.step.is-now{border-color:var(--accent);background:var(--now-bg,var(--surface-2))}
.step-age{display:block;font-size:12px;color:var(--muted)}
.step-gz{display:block;font-family:var(--font-display);font-size:22px;letter-spacing:.06em}
.step-now{display:inline-block;margin-top:4px;font-size:11px;padding:1px 8px;border-radius:999px;background:var(--accent);color:var(--accent-ink)}

.actions{margin:6px 0 14px}

/* 命之书 */
.book .book-list{margin:0 0 14px;padding-left:20px;color:var(--ink)}
.book .book-list li{margin-bottom:4px}
.price{font-weight:600;margin-bottom:14px}

/* 计算依据 */
.method summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-weight:600}
.method ul{margin:10px 0 0;padding-left:20px;font-size:14px;color:var(--muted)}

/* 待补充 */
.pending h2{margin-bottom:8px}
.pending p{margin-bottom:16px;color:var(--muted)}

/* 分享卡弹层 */
dialog{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);padding:20px;
  width:min(420px,92vw);max-height:92vh;overflow:auto}
dialog::backdrop{background:rgba(0,0,0,.55)}
dialog h2{font-family:var(--font-display);font-size:20px}
dialog img{width:100%;border-radius:8px;margin:12px 0;border:1px solid var(--line)}
.dialog-actions{display:grid;gap:8px}

@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* 第三轮：白话意象、术语小注、三柱模式、地支环与印章 */
.hero{position:relative;overflow:hidden}
.dm-plain{font-size:17px;margin-top:18px;line-height:1.8;text-wrap:balance}
.dm-name{white-space:nowrap}
.gloss{font-size:13px;color:var(--muted);margin:-4px 0 14px}
.partial-note{color:var(--muted);font-size:14px}
.pillar.is-empty .p-char{color:var(--muted);opacity:.5}
/* 地支环要在排版里占位（--ring-pad），不能靠绝对定位伸出去压到别的内容 */
.dm-wrap{position:relative;flex:none;display:grid;place-items:center;padding:var(--ring-pad,0)}
.ring{display:var(--ring-display,none);position:absolute;inset:0;width:100%;height:100%;
  pointer-events:none;animation:ring-turn 120s linear infinite}
.ring circle{fill:none;stroke:var(--accent);stroke-opacity:.28;stroke-width:.6}
.ring text{fill:var(--accent);fill-opacity:.55;font-family:var(--font-display);font-size:11px}
@keyframes ring-turn{to{transform:rotate(360deg)}}
.seal{display:var(--seal-display,none);position:absolute;top:18px;right:18px;width:44px;height:44px;padding:4px;
  writing-mode:vertical-rl;font-family:var(--font-display);font-size:15px;line-height:1.1;letter-spacing:.05em;
  place-content:center;text-align:center;color:#f5e6d0;background:#a4271c;border-radius:4px;transform:rotate(-4deg);opacity:.92}
@media (prefers-reduced-motion:reduce){.ring{animation:none}}

/* 第四轮：勾选框随主题；时间轴右侧渐隐，提示还能往后滑 */
.check input{appearance:none;-webkit-appearance:none;margin:0;flex:none;border:1.5px solid var(--line);border-radius:5px;
  background:var(--surface) center/14px no-repeat;cursor:pointer}
.check input:checked{border-color:var(--accent);background-color:var(--accent);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5' fill='none' stroke='%23000' stroke-opacity='.75' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.check input:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.timeline:not(.at-end){-webkit-mask-image:linear-gradient(90deg,#000 82%,transparent);mask-image:linear-gradient(90deg,#000 82%,transparent)}
.gloss,.note,.lead-text,.help{text-wrap:balance}

/* ── 紫微斗数：传统方阵（四周十二宫，中间命盘概要）── */
.zw-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(4,auto);gap:4px}
.zw-cell{display:flex;flex-direction:column;gap:3px;min-height:96px;padding:6px 5px;text-align:left;cursor:pointer;
  background:var(--surface-2);border:1px solid var(--line);border-radius:6px;color:inherit;font:inherit;min-width:0}
.zw-cell.is-ming{border-color:var(--accent)}
.zw-cell.is-now{background:var(--now-bg,var(--surface-2))}
.zw-cell[aria-pressed="true"]{outline:2px solid var(--accent);outline-offset:-2px}
.zw-name{font-size:12px;color:var(--muted);display:flex;justify-content:space-between;gap:2px}
.zw-cell.is-ming .zw-name{color:var(--accent);font-weight:600}
.zw-name em{font-style:normal;font-size:11px;padding:0 4px;border-radius:3px;background:var(--accent);color:var(--accent-ink)}
.zw-stars{display:flex;flex-direction:column;gap:1px;flex:1}
.zw-star{display:flex;align-items:baseline;gap:2px;flex-wrap:wrap;line-height:1.3}
.zw-star b{font-family:var(--font-display);font-weight:var(--display-weight,600);font-size:15px}
.zw-star small{font-size:10px;color:var(--muted)}
.zw-foot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:0 4px;font-size:10.5px;color:var(--muted);font-feature-settings:"tnum" 1}
.zw-hua{font-style:normal;font-size:10px;line-height:1;padding:2px 3px;border-radius:3px;color:#fff}
.zw-hua.lu{background:#3c8a5a}.zw-hua.quan{background:#b0602c}.zw-hua.ke{background:#3f6fb0}.zw-hua.ji{background:#a33a3a}
.zw-center{grid-area:2/2/4/4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  text-align:center;padding:8px;border:1px dashed var(--line);border-radius:6px;font-size:13px;color:var(--muted)}
.zw-center b{font-family:var(--font-display);font-size:16px;color:var(--ink);font-weight:var(--display-weight,600)}
.zw-center small{font-size:11px;opacity:.8}
.zw-detail{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.zw-detail h3{font-family:var(--font-display);font-size:18px;margin:0 0 4px}
.zw-tags{font-size:13px;color:var(--accent);margin-bottom:8px}
.zw-meaning{margin-bottom:10px}
.zw-star-row{padding:10px 0;border-top:1px dashed var(--line)}
.zw-star-name{font-weight:600}
.zw-hua-block+.zw-hua-block{margin-top:14px}
.zw-hua-title{font-size:13px;color:var(--muted);margin-bottom:6px}
.zw-hua-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.zw-hua-list li{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--surface-2);border-radius:6px;font-size:14px}
.zw-hua-list .zw-hua{font-size:12px;padding:3px 5px}
@media (max-width:420px){
  .zw-cell{min-height:88px;padding:5px 4px}
  .zw-star b{font-size:13px}
  .zw-center{font-size:12px}
  .zw-center b{font-size:14px}
}

/* ── 六爻 ── */
textarea{width:100%;padding:12px 16px;font:inherit;font-size:17px;line-height:1.6;resize:vertical;color:inherit;
  background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius)}
textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--focus-soft)}
textarea[aria-invalid]{border-color:var(--danger)}
.ly-examples{display:flex;flex-wrap:wrap;gap:8px;margin:-4px 0 16px}
.ly-chip{font:inherit;font-size:13px;color:var(--muted);background:transparent;border:1px solid var(--line);
  border-radius:999px;padding:6px 12px;min-height:36px;cursor:pointer}
.ly-chip:hover{color:var(--ink);border-color:var(--accent)}
.ly-main{display:flex;align-items:center;gap:40px;flex-wrap:wrap}
.ly-hex{display:flex;flex-direction:column-reverse;gap:9px;width:132px;flex:none}
.ly-hex.small{width:56px;gap:4px}
.ly-bar{display:flex;justify-content:space-between;height:14px;position:relative}
.ly-hex.small .ly-bar{height:6px}
.ly-bar.yang{background:var(--accent);border-radius:2px}
.ly-bar.yin{background:transparent}
.ly-bar.yin i{display:block;width:42%;height:100%;background:var(--accent);border-radius:2px}
.ly-bar.moving::after{content:"";position:absolute;right:-18px;top:50%;width:9px;height:9px;margin-top:-4.5px;
  border:1.5px solid var(--danger);border-radius:50%}
.ly-bar.yin.moving::after{border-radius:0;border:0;width:10px;height:10px;margin-top:-5px;
  background:linear-gradient(45deg,transparent 43%,var(--danger) 43% 57%,transparent 57%),
             linear-gradient(-45deg,transparent 43%,var(--danger) 43% 57%,transparent 57%)}
.ly-title{display:flex;flex-direction:column;gap:4px}
.ly-changed{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:14px;color:var(--muted)}
.ly-arrow{font-size:18px;color:var(--accent)}
.ly-toss{display:flex;gap:14px;justify-content:center;min-height:56px;margin:4px 0 16px}
.ly-toss[hidden]{display:none}
.ly-coin{width:48px;height:48px;border-radius:50%;border:2px solid var(--accent);position:relative;
  background:transparent;animation:coin-flip .42s ease-out}
.ly-coin::after{content:"";position:absolute;left:50%;top:50%;width:12px;height:12px;margin:-6px 0 0 -6px;
  border:2px solid var(--accent);background:var(--card-bg,var(--bg))}
.ly-coin.heads{background:radial-gradient(circle at 35% 35%,#f0d79a,var(--accent) 70%)}
@keyframes coin-flip{0%{transform:rotateX(0) translateY(0)}50%{transform:rotateX(540deg) translateY(-18px)}100%{transform:rotateX(720deg) translateY(0)}}
.ly-lines{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.ly-line{display:grid;grid-template-columns:40px 64px 1fr auto;align-items:center;gap:12px;padding:10px 12px;
  background:var(--surface-2);border-radius:8px}
.ly-line .ly-bar{height:10px}
.ly-line.is-key{outline:1px solid var(--line)}
.ly-pos{font-size:13px;color:var(--muted)}
.ly-info{display:flex;flex-direction:column;min-width:0}
.ly-info b{font-weight:600}
.ly-info small{font-size:12px;color:var(--muted)}
.ly-tags{display:flex;gap:4px}
.ly-tag{font-size:12px;font-weight:600;padding:2px 6px;border-radius:4px;background:var(--surface);border:1px solid var(--line)}
.ly-tag.shi,.ly-tag.ying{color:var(--accent);border-color:var(--accent)}
.ly-tag.move{color:var(--danger);border-color:var(--danger)}
@media (max-width:420px){
  .ly-main{gap:20px}
  .ly-hex{width:112px}
  .ly-line{grid-template-columns:34px 48px 1fr auto;gap:8px;padding:9px 10px}
}
@media (prefers-reduced-motion:reduce){.ly-coin{animation:none}}
#chart.is-casting > :not(.hero){display:none}
.ly-line .ly-bar.moving::after{display:none}   /* 列表里已有「动」标签，不再在卦爻旁画记号 */

/* ── 页脚（所有新页面）── */
.site-foot{max-width:1160px;margin:0 auto;padding:24px 20px 48px;border-top:1px solid var(--line);color:var(--muted);font-size:13px}
.site-foot nav{display:flex;flex-wrap:wrap;gap:6px 18px;margin-bottom:8px}
.site-foot a{color:inherit;text-decoration:none;min-height:32px;display:inline-flex;align-items:center}
.site-foot a:hover{color:var(--accent)}

/* ── 八字合婚 ── */
.hh-person{border:1px solid var(--line);border-radius:var(--radius);padding:14px 14px 4px;margin:0 0 14px;min-width:0}
.hh-person > legend{font-family:var(--font-display);font-size:18px;padding:0 6px;margin-bottom:4px}
.sub-legend{font-size:14px;font-weight:600;margin-bottom:6px}
.hh-pair{display:grid;grid-template-columns:1fr auto 1fr;align-items:start;gap:10px;margin:6px 0 4px}
.hh-pair .hh-link{align-self:center}
.hh-side{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;min-width:0}
.hh-who{font-size:13px;color:var(--muted);letter-spacing:.2em}
.hh-gz{font-family:var(--font-display);font-size:56px;line-height:1.1;letter-spacing:.06em;color:var(--accent)}
.hh-sub{font-size:13px;color:var(--muted)}
.hh-link{font-family:var(--font-display);font-size:18px;padding:6px 10px;border-radius:999px;border:1px solid var(--line);white-space:nowrap}
.hh-link.good{color:#6fbf8e;border-color:#6fbf8e}.hh-link.bad{color:var(--danger);border-color:var(--danger)}
.hh-dims{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.hh-dim{padding:12px 14px;background:var(--surface-2);border-radius:8px}
.hh-dim-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.hh-dim-v{color:var(--muted);font-size:14px}
.hh-tone{font-size:12px;font-weight:700;padding:2px 8px;border-radius:4px;border:1px solid}
.hh-tone.good{color:#6fbf8e}.hh-tone.bad{color:var(--danger)}.hh-tone.flat,.hh-tone.wait{color:var(--muted)}
.hh-quote{font-family:var(--font-display);font-size:14px;color:var(--muted);margin-top:6px}
.hh-mark{padding:10px 0;border-top:1px dashed var(--line)}
.hh-mark:first-child{border-top:0;padding-top:0}
.hh-pillars{display:grid;gap:8px}
.hh-prow{display:grid;grid-template-columns:48px repeat(4,minmax(0,1fr));gap:6px;align-items:center}
.hh-pz{font-family:var(--font-display);font-size:20px;text-align:center;padding:6px 0;background:var(--surface-2);border-radius:6px}
.hh-pz.is-day{outline:1.5px solid var(--accent);outline-offset:-1.5px}
@media (max-width:420px){.hh-gz{font-size:44px}.hh-link{font-size:15px;padding:4px 8px}}
/* 合婚要填两个人，输入区比屏幕高；吸顶会把底部按钮压到页面最底才露出来 */
@media (min-width:960px){html[data-module="hehun"] .layout.has-result .intake{position:static}}

/* ── 测字 ── */
.cz-char-input{font-family:var(--font-display);font-size:34px!important;height:72px!important;text-align:center;letter-spacing:0!important;max-width:120px}
.cz-main{display:flex;align-items:center;gap:24px}
.cz-big{font-family:var(--font-display);font-size:112px;line-height:1;width:150px;height:150px;display:grid;place-items:center;flex:none;
  color:var(--accent);border:2px solid var(--accent);border-radius:6px;box-shadow:inset 0 0 0 6px var(--surface),inset 0 0 0 7px var(--line)}
.cz-wait{margin-top:16px;color:var(--muted);animation:cz-breathe 1.8s ease-in-out infinite}
@keyframes cz-breathe{50%{opacity:.45}}
@media (max-width:420px){.cz-big{font-size:84px;width:112px;height:112px}.cz-main{gap:16px}}
@media (prefers-reduced-motion:reduce){.cz-wait{animation:none}}

/* ── 手相面相 ── */
.pm-file{width:100%;min-height:52px;padding:12px;border:1.5px dashed var(--line);border-radius:var(--radius);background:var(--surface);font:inherit;color:var(--muted)}
.pm-file:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.pm-main{display:flex;align-items:center;gap:20px}
.pm-photo{width:120px;height:120px;object-fit:cover;border-radius:8px;border:1px solid var(--line);flex:none}
.pm-main .dm-plain{margin-top:0}
@media (max-width:420px){.pm-photo{width:96px;height:96px}.pm-main{gap:14px}}

/* ── 今日运势 ── */
.dy-gz{display:flex;gap:2px;font-family:var(--font-display);font-size:64px;line-height:1;flex:none}
.dy-gz span{color:var(--el)}
.dy-rel{display:flex;align-items:flex-start;gap:10px;margin:6px 0 14px}
.dy-tag{flex:none;font-size:12px;font-weight:700;padding:2px 8px;border-radius:4px;border:1px solid;margin-top:3px}
.dy-tag.good{color:#6fbf8e}.dy-tag.bad{color:var(--danger)}.dy-tag.flat{color:var(--muted)}
.dy-hours-title{font-size:13px;color:var(--muted);margin-bottom:8px}
.dy-hours{display:flex;flex-wrap:wrap;gap:8px}
.dy-hour{display:flex;flex-direction:column;align-items:center;padding:8px 12px;border-radius:8px;background:var(--surface-2);border:1px solid var(--line)}
.dy-hour b{font-family:var(--font-display);font-size:18px}
.dy-hour small{font-size:12px;color:var(--muted)}
.dy-hour.good{border-color:#6fbf8e}.dy-hour.bad{border-color:var(--danger)}
@media (max-width:420px){.dy-gz{font-size:52px}}

/* ── 综合批命 ── */
.ov-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:14px}
.ov-pair .card{margin-bottom:0}
.ov-side h2{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ov-big{font-size:44px;line-height:1;color:var(--accent);font-family:var(--font-display)}
.ov-pillars{font-family:var(--font-display);font-size:18px;letter-spacing:.12em;margin:10px 0 6px}
.ov-facts{margin:8px 0 12px;padding-left:18px;color:var(--muted);font-size:14px}
.link-more{color:var(--accent);text-decoration:none;font-size:14px;display:inline-flex;min-height:44px;align-items:center}
@media (max-width:700px){.ov-pair{grid-template-columns:1fr}}

/* ── 英文页 ── */
html[lang="en"] .bar{grid-template-columns:52px 1fr 48px}
html[lang="en"] .bar-k{font-family:var(--font-body);font-size:14px;text-align:left}
html[lang="en"] .step{min-width:86px}
html[lang="en"] .dm-name{white-space:normal;font-size:26px;letter-spacing:.02em}

/* ── 顶栏：语言切换 ── */
.top-r{display:flex;align-items:center;gap:6px}
.lang{display:inline-flex;align-items:center;min-height:44px;padding:0 10px;font-size:13px;letter-spacing:.08em;color:var(--muted);text-decoration:none}
.lang:hover{color:var(--accent)}

/* ── 首页 ── */
.home{max-width:1080px}
.home-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);align-items:center;gap:32px;min-height:min(78vh,640px);padding:12px 0 24px}
.hero-copy h1{font-family:var(--font-display);font-size:clamp(32px,4.6vw,50px);line-height:1.2;letter-spacing:.04em;margin:0 0 16px}
.hero-copy .lede{font-size:17px;margin-bottom:24px}
.hero-actions{display:grid;gap:10px;max-width:420px}
.home-hero .fine{text-align:left;margin-top:14px}
.orrery{width:100%;max-width:440px;aspect-ratio:1;margin:0 auto}
.orrery svg{width:100%;height:100%;overflow:visible}
.orrery .ring,.orrery ellipse{fill:none;stroke:var(--accent);stroke-width:1;stroke-opacity:.5}
.orrery .faint{stroke-opacity:.18}
.orrery .horizon{stroke-opacity:.7}
.orrery .ecliptic{stroke:#d9644f;stroke-opacity:.55;stroke-dasharray:2 5}
.orrery .zhi text{font-family:var(--font-display);font-size:11px;fill:var(--accent);fill-opacity:.7;text-anchor:middle}
.orrery .spin{animation:orb 120s linear infinite}
.orrery .spin.b{animation-duration:170s;animation-direction:reverse}
.orrery .spin.c{animation-duration:230s}
.orrery .star{fill:var(--ink);opacity:.45}
.orrery .star.tw{animation:twinkle 4s ease-in-out infinite}
.orrery .sun{fill:#e2543f;filter:drop-shadow(0 0 6px rgba(226,84,63,.8))}
.orrery .core{fill:var(--accent);fill-opacity:.85;filter:drop-shadow(0 0 10px rgba(212,175,106,.7))}
@keyframes orb{to{transform:rotate(360deg)}}
@keyframes twinkle{50%{opacity:.08}}
@media (prefers-reduced-motion:reduce){.orrery .spin,.orrery .star.tw{animation:none}}
.home-tools{margin:24px 0 36px}
.home-tools h2,.home-ref>h2{font-family:var(--font-display);font-size:24px;margin-bottom:6px}
.tool-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:14px}
.tool{display:grid;grid-template-columns:44px 1fr;grid-template-rows:auto auto;gap:2px 12px;padding:16px;border:1px solid var(--line);
  border-radius:var(--radius);background:var(--surface);text-decoration:none;color:var(--ink);transition:border-color .2s,transform .2s}
.tool:hover,.tool:focus-visible{border-color:var(--accent);transform:translateY(-2px)}
.tool-glyph{grid-row:1/3;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1px solid var(--line);
  font-family:var(--font-display);font-size:20px;color:var(--accent)}
.tool-name{font-weight:600}
.tool-name small{margin-left:6px;font-size:11px;font-weight:400;color:var(--muted)}
.tool-line{font-size:13px;color:var(--muted);line-height:1.55}
.home-book{max-width:720px;margin:0 auto 36px}
.home-ref{max-width:720px;margin:0 auto}
.home-ref h2 a{color:var(--ink);text-decoration:none}
.home-ref h2 a:hover{color:var(--accent)}
.home-ref section h2,.home-ref h2+p+ul{margin-top:0}
.home-ref ul{list-style:none;margin:0 0 18px;padding:0;columns:2;column-gap:24px;font-size:14px}
.home-ref li{padding:4px 0;break-inside:avoid}
.home-ref li a{color:var(--accent);text-decoration:none}
.home-ref li span{display:block;font-size:12px;color:var(--muted)}
.home-ref p{color:var(--muted);font-size:14px}
.home-ref .ref-more a{color:var(--accent)}
.ref-list{margin:0 0 18px}
.ref-list summary{cursor:pointer;color:var(--accent);font-size:14px;min-height:44px;display:flex;align-items:center}
.ref-list[open] summary{margin-bottom:6px}
@media (max-width:900px){.tool-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){
  .home-hero{grid-template-columns:1fr;min-height:0;gap:8px;padding-top:0}
  .orrery{max-width:260px}
  .hero-copy{text-align:center}
  .hero-actions{margin:0 auto}
  .home-hero .fine{text-align:center}
  .tool-grid{grid-template-columns:1fr}
  .home-ref ul{columns:1}
}
