/* ============ 玄机阁 · 设计系统（国风×现代 · 明亮宣纸版） ============ */
:root{
  --bg0:#F4EFE3; --bg1:#FAF6EC; --bg2:#FFFFFF;
  --panel:#FFFFFF; --panel2:#FDFAF2;
  --line:#E7DDC4; --line2:#D6C28F;
  --gold:#A87F2D; --gold2:#8A6A1F; --gold3:#C9A96A; --gold4:#6E5316;
  --red:#B03A2E; --ink:#2E2A22; --ink2:#6B6353; --ink3:#9B917C;
  --jade:#3F7D5D; --water:#2E6E9E; --fire:#C0472F; --wood:#4E7C43; --metal:#B8912F; --earth:#96622E;
  --r:14px; --r2:20px;
  --shadow:0 8px 30px rgba(96,74,28,.10);
  --shadow2:0 14px 44px rgba(96,74,28,.16);
  --serif:"Noto Serif SC","Source Han Serif SC","STSong","SimSun",serif;
  --sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{font-size:15px}
body{
  font-family:var(--sans); color:var(--ink); background:var(--bg0);
  background-image:
    radial-gradient(1200px 600px at 80% -10%, rgba(201,169,106,.18), transparent 60%),
    radial-gradient(900px 500px at -10% 30%, rgba(176,58,46,.05), transparent 55%),
    radial-gradient(700px 700px at 50% 110%, rgba(168,127,45,.10), transparent 60%);
  min-height:100vh; overflow-x:hidden;
}
body::before{ /* 宣纸颗粒 */
  content:""; position:fixed; inset:0; pointer-events:none; z-index:0; opacity:.6;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0.55 0 0 0 0 0.45 0 0 0 0 0.25 0 0 0 0.03 0'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E");
}
#app{position:relative;z-index:1;max-width:1080px;margin:0 auto;padding:0 16px 90px}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer}
input,select,textarea{font-family:inherit}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:rgba(168,127,45,.35);border-radius:4px}
::-webkit-scrollbar-track{background:transparent}

/* ---------- 顶栏 ---------- */
.nav{
  position:sticky;top:0;z-index:50;margin:0 -16px 20px;padding:0 max(16px,calc(50% - 524px));
  background:rgba(250,246,236,.86);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border-bottom:1px solid var(--line);
  box-shadow:0 2px 16px rgba(96,74,28,.06);
}
.nav-in{max-width:1080px;margin:0 auto;display:flex;align-items:center;gap:18px;padding:13px 16px}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--serif);font-size:20px;letter-spacing:2px;color:var(--gold2);font-weight:600}
.brand svg{width:30px;height:30px}
.brand small{font-size:10px;color:var(--ink2);letter-spacing:1px;display:block;font-family:var(--sans)}
.nav-links{display:flex;gap:4px;margin-left:auto}
.nav-links a{
  padding:8px 14px;border-radius:99px;font-size:14px;color:var(--ink2);
  transition:all .25s cubic-bezier(.4,0,.2,1); position:relative;
}
.nav-links a:hover{color:var(--gold2);background:rgba(201,169,106,.14)}
.nav-links a.on{color:#FFFDF6;background:linear-gradient(135deg,#B98F3A,var(--gold));font-weight:600;box-shadow:0 4px 14px rgba(168,127,45,.32)}

/* ---------- Hero ---------- */
.hero{position:relative;text-align:center;padding:44px 0 30px;overflow:visible}
.hero-taichi{
  width:150px;height:150px;margin:0 auto 18px;position:relative;
  filter:drop-shadow(0 8px 24px rgba(168,127,45,.30));
}
.hero-taichi .spin{animation:spin 40s linear infinite;transform-origin:center}
.hero-taichi .spin2{animation:spin 90s linear infinite reverse;transform-origin:center}
@keyframes spin{to{transform:rotate(360deg)}}
.hero h1{
  font-family:var(--serif);font-size:clamp(30px,5vw,44px);letter-spacing:6px;font-weight:600;
  background:linear-gradient(160deg,var(--gold3) 5%,var(--gold2) 55%,var(--gold4) 95%);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
}
.hero .slogan{margin-top:12px;color:var(--ink2);font-size:14px;letter-spacing:3px}
.hero-glow{position:absolute;left:50%;top:8%;width:420px;height:420px;transform:translateX(-50%);
  background:radial-gradient(circle,rgba(201,169,106,.22),transparent 65%);pointer-events:none;animation:breath 6s ease-in-out infinite}
@keyframes breath{50%{transform:translateX(-50%) scale(1.12);opacity:.7}}

/* ---------- 卡片与面板 ---------- */
.card{
  background:var(--panel);
  border:1px solid var(--line);border-radius:var(--r2);padding:22px;
  box-shadow:var(--shadow);position:relative;overflow:hidden;
  transition:transform .35s cubic-bezier(.22,1,.36,1),border-color .3s,box-shadow .35s;
}
.card::before{content:"";position:absolute;left:0;top:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--gold3),rgba(201,169,106,.15))}
.card+.card{margin-top:16px}
.card-title{
  font-family:var(--serif);font-size:19px;color:var(--gold2);letter-spacing:2px;
  display:flex;align-items:center;gap:10px;margin-bottom:16px;font-weight:600;
}
.card-title svg{width:22px;height:22px;flex:none}
.card-title::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--line2),transparent)}

/* ---------- 宫格 ---------- */
.grid{display:grid;gap:12px}
.grid.c2{grid-template-columns:repeat(2,1fr)}
.grid.c3{grid-template-columns:repeat(3,1fr)}
.grid.c4{grid-template-columns:repeat(4,1fr)}
@media(max-width:720px){.grid.c3,.grid.c4{grid-template-columns:repeat(2,1fr)}}

.tool-card{
  background:var(--panel);
  border:1px solid var(--line);border-radius:var(--r);padding:16px 14px;
  display:flex;flex-direction:column;align-items:flex-start;gap:9px;min-height:108px;
  cursor:pointer;position:relative;overflow:hidden;
  box-shadow:0 3px 14px rgba(96,74,28,.06);
  transition:transform .3s cubic-bezier(.22,1,.36,1),border-color .3s,box-shadow .3s,background .3s;
  opacity:0;transform:translateY(14px);animation:riseIn .5s cubic-bezier(.22,1,.36,1) forwards;
}
.tool-card:nth-child(4n+2){animation-delay:.05s}
.tool-card:nth-child(4n+3){animation-delay:.1s}
.tool-card:nth-child(4n+4){animation-delay:.15s}
@keyframes riseIn{to{opacity:1;transform:none}}
.tool-card:hover{transform:translateY(-4px);border-color:var(--line2);background:var(--panel2);box-shadow:var(--shadow2)}
.tool-card::after{content:"";position:absolute;right:-24px;top:-24px;width:80px;height:80px;border-radius:50%;
  background:radial-gradient(circle,rgba(201,169,106,.22),transparent 70%);opacity:0;transition:opacity .3s}
.tool-card:hover::after{opacity:1}
.tool-ico{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;flex:none;
  background:linear-gradient(150deg,rgba(201,169,106,.24),rgba(201,169,106,.08));
  border:1px solid rgba(184,145,47,.35);color:var(--gold2)}
.tool-ico svg{width:23px;height:23px}
.tool-name{font-size:15px;font-weight:600;letter-spacing:1px;color:var(--ink)}
.tool-desc{font-size:12px;color:var(--ink2);line-height:1.55}

/* ---------- 分类 Tab ---------- */
.cat-tabs{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 12px;scrollbar-width:none}
.cat-tabs::-webkit-scrollbar{display:none}
.cat-tab{
  flex:none;padding:9px 18px;border-radius:99px;font-size:14px;color:var(--ink2);
  background:var(--panel);border:1px solid var(--line);transition:all .25s;letter-spacing:1px;
  box-shadow:0 2px 8px rgba(96,74,28,.05);
}
.cat-tab:hover{color:var(--gold2);border-color:var(--line2)}
.cat-tab.on{background:linear-gradient(135deg,#B98F3A,var(--gold));color:#FFFDF6;font-weight:600;border-color:transparent;
  box-shadow:0 4px 16px rgba(168,127,45,.32)}

/* ---------- 表单 ---------- */
.f-row{margin-bottom:16px}
.f-label{display:block;font-size:13px;color:var(--ink2);margin-bottom:8px;letter-spacing:1px}
.f-label b{color:var(--red);font-weight:400;margin-left:2px}
.f-input,.f-select{
  width:100%;padding:12px 14px;border-radius:12px;border:1px solid var(--line);
  background:var(--bg1);color:var(--ink);font-size:15px;outline:none;
  transition:border-color .25s,box-shadow .25s;
}
.f-input:focus,.f-select:focus{border-color:var(--gold3);box-shadow:0 0 0 3px rgba(201,169,106,.22);background:#FFF}
.f-input::placeholder{color:var(--ink3)}
.f-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23A87F2D' fill='none' stroke-width='1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center}
.f-select option{background:#FFF;color:var(--ink)}
.seg{display:flex;background:var(--bg1);border:1px solid var(--line);border-radius:12px;padding:4px;gap:4px}
.seg button{
  flex:1;padding:9px 0;border:none;border-radius:9px;background:transparent;color:var(--ink2);
  font-size:14px;transition:all .25s;letter-spacing:1px;
}
.seg button.on{background:linear-gradient(135deg,#B98F3A,var(--gold));color:#FFFDF6;font-weight:600;box-shadow:0 2px 8px rgba(168,127,45,.28)}
.birth-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
@media(max-width:560px){.birth-grid{grid-template-columns:repeat(2,1fr)}}
.f-2col{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:560px){.f-2col{grid-template-columns:1fr}}

/* ---------- 按钮 ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:13px 30px;border-radius:14px;border:1px solid transparent;font-size:15px;font-weight:600;letter-spacing:2px;
  transition:all .25s cubic-bezier(.22,1,.36,1);position:relative;overflow:hidden;
}
.btn:active{transform:scale(.97)}
.btn-gold{background:linear-gradient(135deg,#C9A256 0%,var(--gold) 55%,#8F6E22 100%);color:#FFFDF6;
  box-shadow:0 6px 20px rgba(168,127,45,.32)}
.btn-gold:hover{box-shadow:0 8px 28px rgba(168,127,45,.45);transform:translateY(-2px)}
.btn-ghost{background:transparent;border-color:var(--line2);color:var(--gold2)}
.btn-ghost:hover{background:rgba(201,169,106,.12)}
.btn-block{width:100%}
.btn:disabled{opacity:.55;pointer-events:none}
.btn .shine{position:absolute;top:0;left:-80%;width:60%;height:100%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.45),transparent);
  animation:shine 3.2s ease-in-out infinite}
@keyframes shine{60%,100%{left:130%}}

/* ---------- 结果块渲染 ---------- */
.blk{margin-bottom:16px}
.blk-title{
  font-family:var(--serif);font-size:18px;color:var(--gold2);letter-spacing:2px;margin:22px 0 14px;
  display:flex;align-items:center;gap:10px;font-weight:600;
}
.blk-title::before{content:"";width:4px;height:18px;border-radius:2px;background:linear-gradient(180deg,var(--gold3),var(--gold))}
.blk-text{color:var(--ink);line-height:1.9;font-size:14.5px;text-align:justify;
  background:linear-gradient(90deg,rgba(201,169,106,.09),rgba(201,169,106,.02));
  border-left:3px solid var(--gold3);border-radius:0 12px 12px 0;padding:13px 16px;
  box-shadow:0 2px 10px rgba(96,74,28,.05)}
.blk-text + .blk-text{margin-top:-6px}
.kv-list{border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.kv-item{display:flex;justify-content:space-between;gap:14px;padding:11px 16px;font-size:14px}
.kv-item:nth-child(odd){background:var(--panel2)}
.kv-item+.kv-item{border-top:1px solid #F0E7D0}
.kv-k{color:var(--ink2);flex:none}
.kv-v{text-align:right;line-height:1.6;color:var(--ink)}

.score-wrap{display:flex;align-items:center;gap:22px;padding:6px 4px}
.score-ring{position:relative;width:118px;height:118px;flex:none}
.score-ring svg{transform:rotate(-90deg)}
.score-ring .track{stroke:#EDE3C6}
.score-ring .prog{stroke:url(#goldGrad);stroke-linecap:round;transition:stroke-dashoffset 1.2s cubic-bezier(.22,1,.36,1)}
.score-num{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.score-num b{font-size:32px;font-weight:700;color:var(--gold2);font-family:var(--serif)}
.score-num span{font-size:11px;color:var(--ink2);letter-spacing:1px}
.score-meta{font-size:14px;color:var(--ink2);line-height:1.7}
.score-meta .lv{display:inline-block;margin-top:6px;padding:3px 14px;border-radius:99px;font-size:13px;
  border:1px solid var(--line2);color:var(--gold2);letter-spacing:2px;background:var(--panel2)}

.poem-card{
  position:relative;text-align:center;padding:30px 20px;border:1px solid var(--line2);border-radius:var(--r2);
  background:
    radial-gradient(300px 120px at 50% 0%,rgba(201,169,106,.16),transparent),
    linear-gradient(170deg,#FFFDF7,var(--panel2));
  box-shadow:var(--shadow);
}
.poem-card .p-title{font-family:var(--serif);font-size:19px;color:var(--gold2);letter-spacing:3px;margin-bottom:6px}
.poem-card .p-sub{display:inline-block;font-size:12px;color:var(--ink2);border:1px solid var(--line);border-radius:99px;padding:2px 12px;margin-bottom:16px;letter-spacing:1px;background:#FFF}
.poem-text{
  font-family:var(--serif);font-size:19px;line-height:2.1;letter-spacing:4px;color:var(--ink);
  writing-mode:vertical-rl;max-height:340px;margin:0 auto;text-orientation:upright;
  white-space:pre-line;
}
@media(max-width:560px){.poem-text{writing-mode:horizontal-tb;letter-spacing:2px;font-size:17px;max-height:none;line-height:2.2;padding-bottom:30px}}
.poem-jie{margin-top:16px;font-size:14px;color:var(--ink2);line-height:1.9;text-align:justify}
.poem-seal{position:absolute;right:16px;bottom:16px;width:34px;height:34px;border:1.5px solid var(--red);border-radius:6px;
  color:var(--red);font-family:var(--serif);font-size:11px;display:grid;place-items:center;transform:rotate(6deg);opacity:.9;line-height:1.1;background:#FFF}

.mcards{display:grid;gap:12px}
.mcard{background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);padding:16px;
  transition:transform .3s,border-color .3s,box-shadow .3s}
.mcard:hover{transform:translateY(-2px);border-color:var(--line2);box-shadow:var(--shadow)}
.mcard .t{font-size:15px;color:var(--gold2);margin-bottom:8px;font-weight:600;letter-spacing:.5px;line-height:1.6}
.mcard .d{font-size:13.5px;color:var(--ink);line-height:1.8}

.wx-bars{display:grid;gap:12px;padding:4px 0}
.wx-bar{display:grid;grid-template-columns:32px 1fr 52px;align-items:center;gap:12px}
.wx-bar .lb{font-family:var(--serif);font-size:16px;text-align:center;color:var(--ink)}
.wx-bar .rail{height:10px;border-radius:99px;background:#EFE7D0;overflow:hidden}
.wx-bar .fill{height:100%;border-radius:99px;width:0;transition:width 1s cubic-bezier(.22,1,.36,1)}
.wx-bar .num{font-size:13px;color:var(--ink2);text-align:right}

.dtable{width:100%;border-collapse:collapse;font-size:13.5px;background:#FFF}
.dtable th{background:#F5EDD6;color:var(--gold2);font-weight:600;padding:10px 12px;text-align:left;
  border-bottom:1px solid var(--line2);letter-spacing:1px;white-space:nowrap}
.dtable td{padding:10px 12px;border-bottom:1px solid #F0E7D0;color:var(--ink);line-height:1.6;vertical-align:top}
.dtable tr:hover td{background:var(--panel2)}
.dtable-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r)}

/* ---------- 排盘 ---------- */
.pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
@media(max-width:560px){.pillars{grid-template-columns:repeat(2,1fr)}}
.pillar{
  background:linear-gradient(170deg,#FFF,var(--panel2));
  border:1px solid var(--line);border-radius:var(--r);padding:14px 10px;text-align:center;
  box-shadow:0 3px 12px rgba(96,74,28,.06);
  transition:transform .3s,border-color .3s;
}
.pillar:hover{transform:translateY(-3px);border-color:var(--line2)}
.pillar .ph{font-size:12px;color:var(--ink2);margin-bottom:8px;letter-spacing:2px}
.pillar .gz{font-family:var(--serif);font-size:30px;line-height:1.35;font-weight:600;color:var(--ink)}
.pillar .gz .g{display:block}
.pillar .gz .z{display:block}
.pillar .ss{margin-top:8px;font-size:11.5px;color:var(--gold2);letter-spacing:1px}
.pillar .ny{margin-top:4px;font-size:11px;color:var(--ink3)}
.pillar.day{border-color:var(--gold3);background:linear-gradient(170deg,rgba(201,169,106,.20),rgba(201,169,106,.06))}
.wx-jin{color:var(--metal)} .wx-mu{color:var(--wood)} .wx-shui{color:var(--water)}
.wx-huo{color:var(--fire)} .wx-tu{color:var(--earth)}

/* ---------- 商品 ---------- */
.prod{background:var(--panel);border:1px solid var(--line);
  border-radius:var(--r);overflow:hidden;cursor:pointer;
  box-shadow:0 3px 14px rgba(96,74,28,.06);
  transition:transform .3s,border-color .3s,box-shadow .3s;
  opacity:0;transform:translateY(14px);animation:riseIn .5s forwards}
.prod:hover{transform:translateY(-4px);border-color:var(--line2);box-shadow:var(--shadow2)}
.prod-img{height:130px;display:grid;place-items:center;position:relative;overflow:hidden}
.prod-img .glyph{font-size:56px;filter:drop-shadow(0 6px 14px rgba(96,74,28,.22));transition:transform .4s}
.prod:hover .glyph{transform:scale(1.12) rotate(-4deg)}
.prod-body{padding:13px 14px 15px}
.prod-name{font-size:14.5px;font-weight:600;line-height:1.5;height:2.9em;overflow:hidden;color:var(--ink)}
.prod-tags{margin-top:6px;display:flex;gap:5px;flex-wrap:wrap}
.prod-tags span{font-size:10.5px;color:var(--gold2);border:1px solid var(--line);padding:1px 8px;border-radius:99px;background:var(--panel2)}
.prod-price{margin-top:9px;display:flex;align-items:baseline;gap:8px}
.prod-price b{color:var(--gold2);font-size:18px}
.prod-price s{color:var(--ink3);font-size:12px}
.prod-price .sales{margin-left:auto;font-size:11px;color:var(--ink3)}

/* ---------- 黄历 ---------- */
.hl-yiji{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.hl-box{border:1px solid var(--line);border-radius:var(--r);padding:16px;background:var(--panel)}
.hl-box.yi{border-color:rgba(63,125,93,.45)}
.hl-box.ji{border-color:rgba(192,71,47,.40)}
.hl-box h4{font-family:var(--serif);font-size:20px;letter-spacing:6px;margin-bottom:10px}
.hl-box.yi h4{color:var(--jade)} .hl-box.ji h4{color:var(--fire)}
.hl-tags{display:flex;flex-wrap:wrap;gap:7px}
.hl-tags span{font-size:12.5px;padding:4px 11px;border-radius:8px;background:var(--panel2);border:1px solid var(--line);color:var(--ink)}

/* ---------- 骨架屏 ---------- */
.sk{border-radius:var(--r);background:linear-gradient(100deg,#F0E9D6 30%,#F9F4E6 50%,#F0E9D6 70%);
  background-size:200% 100%;animation:skmove 1.3s linear infinite}
@keyframes skmove{to{background-position:-200% 0}}

/* ---------- Toast / 弹层 ---------- */
.toast{
  position:fixed;left:50%;bottom:110px;transform:translateX(-50%) translateY(20px);z-index:99;
  background:rgba(46,42,34,.94);border:1px solid rgba(214,194,143,.5);color:#F7F1E2;
  padding:12px 26px;border-radius:99px;font-size:14px;letter-spacing:1px;opacity:0;pointer-events:none;
  transition:all .35s cubic-bezier(.22,1,.36,1);backdrop-filter:blur(10px);box-shadow:var(--shadow2);
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.modal-mask{position:fixed;inset:0;background:rgba(74,60,32,.38);backdrop-filter:blur(6px);z-index:90;
  display:grid;place-items:end center;opacity:0;pointer-events:none;transition:opacity .3s}
.modal-mask.show{opacity:1;pointer-events:auto}
.modal{width:100%;max-width:640px;max-height:86vh;overflow-y:auto;background:var(--bg1);
  border:1px solid var(--line2);border-bottom:none;border-radius:24px 24px 0 0;padding:26px 22px 34px;
  transform:translateY(40px);transition:transform .35s cubic-bezier(.22,1,.36,1)}
.modal-mask.show .modal{transform:none}
@media(min-width:720px){.modal-mask{place-items:center}.modal{border-radius:24px;border-bottom:1px solid var(--line2)}}

/* ---------- 页签/底部 Tab（移动端） ---------- */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:60;
  background:rgba(250,246,236,.92);backdrop-filter:blur(20px);border-top:1px solid var(--line);
  display:flex;padding:6px 0 calc(8px + env(safe-area-inset-bottom));
  box-shadow:0 -4px 20px rgba(96,74,28,.08);
}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0;color:var(--ink3);
  font-size:10.5px;letter-spacing:1px;transition:color .25s}
.tabbar a svg{width:23px;height:23px}
.tabbar a.on{color:var(--gold2)}
@media(min-width:721px){.tabbar{display:none}}
@media(max-width:720px){.nav-links{display:none}}

/* ---------- 页面过渡 ---------- */
.view{animation:viewIn .45s cubic-bezier(.22,1,.36,1)}
@keyframes viewIn{from{opacity:0;transform:translateY(16px)}}

/* ---------- 运行中动画 ---------- */
.running{display:flex;flex-direction:column;align-items:center;gap:18px;padding:46px 0}
.run-coin{width:64px;height:64px;animation:coinflip 1.1s cubic-bezier(.35,0,.65,1) infinite}
@keyframes coinflip{0%{transform:rotateY(0)}100%{transform:rotateY(720deg)}}
.running p{color:var(--ink2);font-size:14px;letter-spacing:4px;animation:breath 1.6s ease-in-out infinite}

.empty{text-align:center;padding:48px 0;color:var(--ink3);font-size:14px;letter-spacing:2px}
.sec{margin-top:26px}
.sec-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.sec-head h3{font-family:var(--serif);font-size:19px;color:var(--gold2);letter-spacing:2px;font-weight:600}
.sec-head .more{margin-left:auto;font-size:12.5px;color:var(--ink2)}
.sec-head .more:hover{color:var(--gold2)}
.notice{font-size:12px;color:var(--ink3);line-height:1.8;margin-top:18px;text-align:center;letter-spacing:.5px}


/* ---------- 分步加载进度条 ---------- */
.run-txt{min-height:20px}
.run-rail{width:220px;max-width:72%;height:4px;border-radius:99px;background:rgba(168,127,45,.16);overflow:hidden}
.run-fill{height:100%;width:18%;border-radius:99px;background:linear-gradient(90deg,#D9BC7A,#A87F2D);
  transition:width .5s ease;animation:runslide 1.5s ease-in-out infinite}
@keyframes runslide{0%{margin-left:0;width:18%}50%{margin-left:41%;width:34%}100%{margin-left:82%;width:18%}}

/* ---------- 排盘完整表格 ---------- */
.ppt th:first-child,.ppt td:first-child{width:52px}
.ppt thead th{font-family:var(--serif);letter-spacing:1px}
.ppt tbody th{color:var(--gold2);font-weight:600;font-size:13px}
.ppt td b{font-size:19px;font-family:var(--serif);margin-right:4px}
.ppt td i{font-style:normal;display:block;font-size:11px;color:var(--ink3);margin-top:2px}
.ppt td{vertical-align:middle}

/* ---------- 精批六宫格 ---------- */
.jp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}
.jp-cell{border:1px solid var(--line);border-radius:14px;padding:14px 10px;text-align:center;cursor:pointer;
  background:linear-gradient(160deg,rgba(201,169,106,.08),transparent);transition:all .25s}
.jp-cell:hover{border-color:var(--gold);transform:translateY(-2px)}
.jp-cell.on{border-color:var(--gold);background:linear-gradient(160deg,rgba(201,169,106,.18),rgba(201,169,106,.05));
  box-shadow:0 6px 18px rgba(150,110,40,.14)}
.jp-ico{width:30px;height:30px;margin:0 auto 8px;color:var(--gold2)}
.jp-ico svg{width:100%;height:100%}
.jp-t{font-family:var(--serif);font-size:15px;color:var(--gold2);letter-spacing:2px;font-weight:600}
.jp-s{font-size:11px;color:var(--ink3);margin-top:4px;letter-spacing:.5px}
.jp-body{border-top:1px dashed var(--line2);padding-top:14px}
.jp-body p{font-size:14px;line-height:2;color:var(--ink);margin-bottom:10px;text-indent:2em}
.jp-blur{filter:blur(7px);pointer-events:none;user-select:none;max-height:150px;overflow:hidden}
@media(max-width:720px){.jp-grid{grid-template-columns:repeat(2,1fr)}}

/* ---------- 付费解锁 ---------- */
.paylock{margin:16px auto 4px;max-width:330px;text-align:center;border:1px dashed var(--gold);
  border-radius:16px;padding:22px 18px;background:linear-gradient(170deg,rgba(201,169,106,.12),rgba(201,169,106,.03))}
.pl-ico{width:34px;height:34px;margin:0 auto 10px;color:var(--gold2)}
.pl-ico svg{width:100%;height:100%}
.pl-t{font-family:var(--serif);font-size:16px;color:var(--gold2);letter-spacing:2px;font-weight:600}
.pl-d{font-size:12px;color:var(--ink3);margin:6px 0 14px;letter-spacing:1px}
.pl-btn{width:100%}
.payblur{filter:blur(7px);pointer-events:none;user-select:none;max-height:130px;overflow:hidden;
  -webkit-mask-image:linear-gradient(#000 30%,transparent);mask-image:linear-gradient(#000 30%,transparent)}


/* ---------- 命理完整精批深度版 ---------- */
.fm-sec{margin-top:4px}
.fm-h2{font-family:var(--serif);font-size:16px;color:var(--gold2);font-weight:700;letter-spacing:2px;
  margin:18px 0 12px;padding-left:10px;border-left:3px solid var(--gold);position:relative}
.fm-h2:first-child{margin-top:0}
.fm-du{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:12px;
  background:linear-gradient(160deg,rgba(201,169,106,.06),transparent)}
.fm-du-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.fm-du-gz{font-family:var(--serif);font-size:20px;font-weight:700;color:var(--ink)}
.fm-du-ss{font-size:13px;color:var(--gold2);font-weight:600}
.fm-du-age{font-size:13px;color:var(--ink2);font-weight:600}
.fm-du-yr{font-size:12px;color:var(--ink3)}
.fm-tone{font-size:11px;padding:2px 8px;border-radius:99px;margin-left:auto}
.fm-tone-喜{background:rgba(78,124,67,.16);color:#3F6B33}
.fm-tone-忌{background:rgba(192,71,47,.14);color:#B23A22}
.fm-tone-平{background:rgba(168,127,45,.14);color:var(--gold2)}
.fm-p{font-size:13.5px;line-height:1.95;color:var(--ink);margin-bottom:7px;text-indent:0}
.fm-p2{color:var(--ink2);padding-left:10px;border-left:2px solid var(--line2)}
.fm-sub{font-size:13.5px;line-height:1.9;color:var(--ink);margin-bottom:6px}
.fm-sub b{color:var(--gold2)}
.fm-tl-t{font-size:13px;color:var(--ink3);letter-spacing:1px;margin:10px 0 8px;font-weight:600}
.fm-ln-wrap{max-height:340px;overflow:auto;border:1px solid var(--line);border-radius:12px}
.fm-ln{width:100%;border:none;font-size:12px}
.fm-ln th{position:sticky;top:0;background:rgba(168,127,45,.12);color:var(--gold2)}
.fm-ln td,.fm-ln th{padding:6px 6px;white-space:nowrap;border-bottom:1px solid var(--line2)}
.fm-ln .lv-cell{font-weight:700}
.fm-ln tr.lv-ji .lv-cell{color:#3F6B33}.fm-ln tr.lv-pji .lv-cell{color:#5E8A4E}
.fm-ln tr.lv-ping .lv-cell{color:var(--ink3)}.fm-ln tr.lv-px .lv-cell{color:#B07A2E}
.fm-ln tr.lv-xiong .lv-cell{color:#B23A22}
.fm-ln tr.lv-ji{background:rgba(78,124,67,.05)}.fm-ln tr.lv-xiong{background:rgba(192,71,47,.05)}
