/* ===== 信益堂 · 共用样式 ===== */
:root{
  --paper:#f6f1e3; --paper-deep:#efe7d2;
  --ink:#1c1a17; --ink-soft:#5a544a; --line:#9c9382;
  --cinnabar:#b5342a; --cinnabar-soft:rgba(181,52,42,.08);
  --wx-wood:#2e7d4f; --wx-fire:#c0392b; --wx-earth:#8a6d3b;
  --wx-metal:#a1780a; --wx-water:#2c5f8a;
  --kai:'Kaiti SC','STKaiti','KaiTi','BiauKai','DFKai-SB',serif;
}
*{margin:0;padding:0;box-sizing:border-box}
body{
  background:var(--paper);
  background-image:
    radial-gradient(ellipse at 20% 10%, rgba(138,109,59,.05), transparent 55%),
    radial-gradient(ellipse at 85% 90%, rgba(138,109,59,.06), transparent 50%);
  color:var(--ink);font-family:var(--kai);min-height:100vh;padding:24px 16px 64px;
}
.sheet{
  max-width:880px;margin:0 auto;border:2px solid var(--ink);
  outline:1px solid var(--line);outline-offset:5px;
  background:var(--paper);padding:32px 28px 40px;position:relative;
}
header.xyt{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid var(--ink);padding-bottom:18px;margin-bottom:24px}
.brand{display:flex;align-items:center;gap:16px}
.seal{
  width:64px;height:64px;flex:none;border:3px solid var(--cinnabar);color:var(--cinnabar);
  display:grid;grid-template-rows:1fr 1fr;grid-auto-flow:column;direction:rtl;
  font-size:21px;font-weight:700;line-height:1;padding:3px;
  transform:rotate(-3deg);
  box-shadow:inset 0 0 0 1px rgba(181,52,42,.35);
}
.seal span{display:flex;align-items:center;justify-content:center}
h1{font-size:42px;letter-spacing:13px;font-weight:700;line-height:1.1}
.subtitle{font-size:15px;color:var(--ink-soft);letter-spacing:6px;margin-top:6px}
.side-note{writing-mode:vertical-rl;font-size:15px;letter-spacing:8px;color:var(--ink-soft);border-right:1px solid var(--line);padding-right:10px;height:118px}
/* 输入 */
.controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;border:1px solid var(--line);padding:18px;margin-bottom:24px;background:var(--paper-deep)}
.field label{display:block;font-size:14px;letter-spacing:3px;color:var(--ink-soft);margin-bottom:6px}
.field input,.field select,.field textarea{
  width:100%;font-family:var(--kai);font-size:17px;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);padding:8px 10px;border-radius:0;
}
.field textarea{resize:vertical;min-height:70px;font-size:16px;line-height:1.7}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--cinnabar);outline-offset:1px}
.btn{
  font-family:var(--kai);font-size:18px;letter-spacing:8px;text-indent:8px;
  background:var(--cinnabar);color:#fdf8ec;border:none;padding:10px 22px;cursor:pointer;
}
.btn:hover{background:#9c2c23}
.btn:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.btn.ghost{background:transparent;color:var(--cinnabar);border:1.5px solid var(--cinnabar)}
.btn.ghost:hover{background:var(--cinnabar-soft)}
.btn:disabled{opacity:.5;cursor:not-allowed}
/* 区块标题 */
.sec-title{font-size:17px;letter-spacing:8px;margin:26px 0 12px;display:flex;align-items:center;gap:12px}
.sec-title::after{content:'';flex:1;border-top:1px solid var(--line)}
.sec-title::before{content:'◆';color:var(--cinnabar);font-size:11px}
/* 命造信息 */
.meta{display:flex;flex-wrap:wrap;gap:8px 26px;font-size:16px;line-height:1.9}
.meta b{color:var(--cinnabar);font-weight:700}
/* 四柱 */
.pillars{display:grid;grid-template-columns:64px repeat(4,1fr);border:2px solid var(--ink);text-align:center;direction:rtl}
.pillars>div{direction:ltr;border:1px solid var(--line);padding:8px 4px}
.pillars .rowlab{background:var(--paper-deep);font-size:14px;color:var(--ink-soft);display:flex;align-items:center;justify-content:center;letter-spacing:2px}
.pillars .plab{background:var(--paper-deep);font-size:16px;letter-spacing:4px;font-weight:700}
.pillars .shishen{font-size:14px;color:var(--ink-soft)}
.pillars .gz{font-size:34px;font-weight:700;line-height:1.25}
.pillars .cang{font-size:13px;color:var(--ink-soft);letter-spacing:1px}
.pillars .daymaster .gz{position:relative}
.pillars .daymaster .gz::after{content:'日主';position:absolute;top:-2px;right:2px;font-size:10px;color:var(--cinnabar);border:1px solid var(--cinnabar);padding:0 2px;letter-spacing:1px;font-weight:400}
.wx-木{color:var(--wx-wood)} .wx-火{color:var(--wx-fire)} .wx-土{color:var(--wx-earth)}
.wx-金{color:var(--wx-metal)} .wx-水{color:var(--wx-water)}
/* 十二宫 */
.palace-wrap{display:flex;justify-content:center}
.palace{display:grid;width:min(440px,100%);aspect-ratio:1;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);border:2px solid var(--ink)}
.palace .cell{border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:26px;font-weight:700;position:relative;background:var(--paper)}
.palace .cell small{font-size:11px;font-weight:400;color:var(--ink-soft);letter-spacing:1px}
.palace .center{grid-column:2/4;grid-row:2/4;border:1px solid var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:var(--paper-deep);text-align:center;padding:8px}
.palace .center .mg-label{font-size:15px;letter-spacing:5px;color:var(--ink-soft)}
.palace .center .mg-gz{font-size:40px;font-weight:700;letter-spacing:6px}
.palace .center .mg-sub{font-size:13px;color:var(--ink-soft);line-height:1.8}
.palace .cell.minggong{background:var(--cinnabar-soft)}
.palace .cell.minggong::after{content:'命宫';position:absolute;top:4px;right:4px;font-size:11px;color:#fdf8ec;background:var(--cinnabar);padding:1px 4px;letter-spacing:2px;transform:rotate(6deg);font-weight:400}
.palace .cell.nianzhi::before{content:'年';position:absolute;bottom:4px;left:4px;font-size:10px;color:var(--cinnabar);border:1px solid var(--cinnabar);padding:0 3px;font-weight:400}
.palace .cell.liuzhi::before{content:'流年';position:absolute;bottom:4px;right:4px;font-size:10px;color:#fdf8ec;background:var(--ink-soft);padding:0 3px;font-weight:400}
/* 大运 */
.dayun{display:grid;grid-template-columns:repeat(8,1fr);border:2px solid var(--ink);text-align:center;direction:rtl}
.dayun>div{direction:ltr;border:1px solid var(--line);padding:8px 2px}
.dayun .age{font-size:13px;color:var(--ink-soft);background:var(--paper-deep)}
.dayun .gz{font-size:22px;font-weight:700;line-height:1.4}
.dayun .cur{background:var(--cinnabar-soft)}
.dayun .cur .age{color:var(--cinnabar);font-weight:700}
.qiyun-note{font-size:15px;color:var(--ink-soft);margin-top:10px;line-height:1.9}
.qiyun-note b{color:var(--cinnabar)}
/* 流年太岁 */
.liunian-box{border:2px solid var(--ink);padding:16px 18px;display:flex;flex-wrap:wrap;gap:10px 30px;align-items:center;font-size:17px;line-height:2}
.liunian-box .ln-gz{font-size:26px;font-weight:700;letter-spacing:3px}
.taisui-tag{display:inline-block;background:var(--cinnabar);color:#fdf8ec;font-size:15px;padding:3px 12px;letter-spacing:3px;margin-right:8px}
.taisui-safe{display:inline-block;border:1.5px solid var(--wx-wood);color:var(--wx-wood);font-size:15px;padding:2px 12px;letter-spacing:3px}
/* 批语 */
.piyu-box{border:2px solid var(--ink);background:var(--paper-deep);padding:18px 20px;font-size:17px;line-height:2.2;letter-spacing:1px;min-height:90px;white-space:pre-wrap}
.piyu-box.empty{color:var(--ink-soft);text-align:center;letter-spacing:4px}
/* 联系师傅 */
.contact{border:2px solid var(--cinnabar);padding:16px 20px;background:var(--cinnabar-soft)}
.contact .c-title{font-size:16px;letter-spacing:5px;color:var(--cinnabar);font-weight:700;margin-bottom:8px}
.contact .phones{display:flex;flex-wrap:wrap;gap:8px 24px;font-size:19px;letter-spacing:1px}
.contact .phones a{color:var(--ink);text-decoration:none;border-bottom:1px dashed var(--cinnabar)}
.contact .c-note{font-size:13px;color:var(--ink-soft);margin-top:8px;letter-spacing:1px}
/* 底注 */
.footer-note{margin-top:34px;border-top:1px dashed var(--line);padding-top:14px;font-size:13px;color:var(--ink-soft);line-height:2;letter-spacing:1px}
/* 提示 */
.toast{position:fixed;left:50%;bottom:40px;transform:translateX(-50%);background:var(--ink);color:#fdf8ec;padding:10px 26px;font-size:16px;letter-spacing:2px;opacity:0;pointer-events:none;transition:opacity .3s}
.toast.on{opacity:1}
.actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:18px}
@media (max-width:560px){
  h1{font-size:30px;letter-spacing:7px}
  .side-note{display:none}
  .pillars .gz{font-size:26px}
  .sheet{padding:22px 14px 32px}
  .palace .cell{font-size:20px}
  .palace .center .mg-gz{font-size:30px}
  .dayun .gz{font-size:17px}
}
@media (prefers-reduced-motion:no-preference){
  .fade-in{animation:inkIn .5s ease}
  @keyframes inkIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
}
/* 二维码 */
.qr-block{display:flex;align-items:center;gap:16px;border:1px solid var(--line);padding:12px 16px;margin-top:18px;background:var(--paper-deep)}
.qr-block svg{display:block;background:#fff;padding:4px;border:1px solid var(--line)}
.qr-block .qr-txt{font-size:14px;color:var(--ink-soft);line-height:2;letter-spacing:2px}
.qr-block .qr-txt b{color:var(--cinnabar);font-size:16px;letter-spacing:3px}
/* ===== 打印 ===== */
@media print{
  body{background:#fff;padding:0}
  .sheet{border:2px solid #000;outline:none;max-width:100%;padding:20px}
  .no-print{display:none !important}
  .palace{width:380px}
  .toast{display:none}
  a{text-decoration:none;color:inherit}
}
