:root{
  --void:#06051a; --deepest:#0a0822; --deep:#120e2c; --mid:#1b1542; --soft:#241c58;
  --line:#2e2660; --line-soft:#221b50;
  --gold:#d9b14a; --gold-bright:#f3cd6a; --gold-pale:#ecd8a4; --gold-deep:#a07d2c;
  --cream:#f1e7cf; --muted:#c0b6e8; --muted-dim:#9a90c6;
  --vermillion:#cf4344; --rose:#e3a0b4; --jade:#6fb295; --plum:#9a4a82; --azure:#6f8fd6;
  --font-disp:'Cinzel',serif;
  --font-brush:'LXGW WenKai TC','Noto Serif TC',serif;
  --font-body:'Noto Serif TC',serif;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;}
html,body{height:100%;overscroll-behavior:none;}   /* PWA:擋下拉刷新/邊緣彈跳,避免意外重整後版面跑掉 */
body{background:#000;color:var(--cream);font-family:var(--font-body);-webkit-font-smoothing:antialiased;}
/* --fz:文字基準補償係數,由 app.js 的 normalizeTextScale() 量測環境後設定,預設 1(不動)。
   全站的 font-size 都寫成 calc(Npx * var(--fz,1)),所以它**只放大文字、不動任何盒子**
   ——刻意複製 Android WebView 的行為(它套系統字體大小時也只縮放文字)。
   先前用 .app{zoom} 做,結果邊距/圓環/卡片全一起放大,大廳垂直少塞了約 13% 的內容,
   與原生 App 對不起來(使用者實測回報),故改成這個做法。 */
.app{position:relative;width:100%;max-width:440px;margin:0 auto;height:var(--app-h,100dvh);overflow:hidden;
  background:radial-gradient(900px 600px at 15% -8%, #1a1444 0%, transparent 55%),
             radial-gradient(900px 700px at 110% 8%, #241650 0%, transparent 50%), var(--void);
  box-shadow:0 0 80px rgba(0,0,0,.6);}
.sky{position:absolute;inset:0;pointer-events:none;z-index:0;background:
   radial-gradient(1.4px 1.4px at 20% 18%, rgba(243,205,106,.9), transparent 60%),
   radial-gradient(1.2px 1.2px at 68% 12%, rgba(241,231,207,.7), transparent 60%),
   radial-gradient(1px 1px at 40% 30%, rgba(155,144,196,.8), transparent 60%),
   radial-gradient(1.6px 1.6px at 82% 42%, rgba(243,205,106,.7), transparent 60%),
   radial-gradient(1px 1px at 12% 55%, rgba(241,231,207,.55), transparent 60%),
   radial-gradient(1.3px 1.3px at 55% 70%, rgba(155,144,196,.6), transparent 60%),
   radial-gradient(1.1px 1.1px at 88% 80%, rgba(243,205,106,.5), transparent 60%),
   radial-gradient(1px 1px at 30% 88%, rgba(241,231,207,.5), transparent 60%);}

.screen{position:absolute;inset:0;display:none;flex-direction:column;z-index:2;}
.screen.active{display:flex;animation:fade .35s ease;}
@keyframes fade{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
.scroll{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;}
.scroll::-webkit-scrollbar{width:0;}
.pad-tab{padding-bottom:78px;}

.gold-btn{display:block;width:100%;text-align:center;border:none;cursor:pointer;font-family:var(--font-body);font-weight:600;letter-spacing:.14em;font-size:calc(15px * var(--fz,1));color:#241803;padding:15px;border-radius:13px;background:linear-gradient(135deg,#f3cd6a,#d9b14a 55%,#b8902f);box-shadow:0 8px 22px -6px rgba(217,177,74,.6),inset 0 1px 0 rgba(255,255,255,.45);}
.gold-btn:active{transform:translateY(1px);filter:brightness(1.05);}
.ghost-btn{display:block;width:100%;text-align:center;cursor:pointer;font-family:var(--font-body);font-weight:500;letter-spacing:.12em;font-size:calc(13px * var(--fz,1));color:var(--gold-pale);padding:13px;border-radius:12px;background:transparent;border:1px solid var(--gold-deep);}
.gold-btn.ghost{background:transparent;border:1px solid var(--gold-deep);color:var(--gold-pale);box-shadow:none;}

/* tab bar */
.tabbar{position:absolute;bottom:0;left:0;right:0;height:calc(64px + env(safe-area-inset-bottom));z-index:20;background:linear-gradient(180deg,rgba(10,8,30,.4),rgba(6,5,20,.97) 55%);border-top:1px solid var(--line-soft);backdrop-filter:blur(8px);display:none;justify-content:space-around;align-items:center;padding-bottom:env(safe-area-inset-bottom);box-sizing:border-box;}
.app[data-tab] .tabbar{display:flex;}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:calc(10px * var(--fz,1));color:var(--muted);letter-spacing:.08em;cursor:pointer;padding:6px 0;}
.tab .ic{font-size:calc(18px * var(--fz,1));opacity:.85;line-height:1;}
.tab.on{color:var(--gold-bright);}
.tab.on .ic{opacity:1;filter:drop-shadow(0 0 6px rgba(243,205,106,.6));}

.statusbar{display:flex;justify-content:space-between;align-items:center;padding:max(10px,env(safe-area-inset-top)) 22px 2px;font-family:var(--font-disp);font-size:calc(10px * var(--fz,1));color:var(--gold-pale);letter-spacing:.05em;flex:none;}
.statusbar .dots{display:flex;gap:3px;}.statusbar .dots i{width:4px;height:4px;border-radius:50%;background:var(--gold);opacity:.7;}

.micro{font-family:var(--font-body);font-size:calc(9px * var(--fz,1));letter-spacing:.3em;color:var(--gold);}
.sec-lab{display:flex;align-items:center;gap:10px;padding:0 22px;margin:8px 0 14px;}
.sec-lab span{font-family:var(--font-body);font-size:calc(11px * var(--fz,1));letter-spacing:.26em;color:var(--gold);}
.sec-lab .ln{flex:1;height:1px;background:linear-gradient(90deg,var(--gold-deep),transparent);opacity:.5;}

/* ===== launch ===== */
#s-launch .scroll{display:flex;flex-direction:column;align-items:center;text-align:center;padding:8px 28px 34px;}
.wheel{margin:46px auto 0;width:200px;height:200px;border-radius:50%;position:relative;display:grid;place-items:center;}
.wheel::before{content:"";position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,#a07d2c,#f3cd6a,#7a6020,#ecd8a4,#a07d2c,#f3cd6a,#7a6020,#ecd8a4,#a07d2c);-webkit-mask:radial-gradient(circle, transparent 60%, #000 61%, #000 63%, transparent 64%, #000 73%, #000 74.5%, transparent 75.5%);mask:radial-gradient(circle, transparent 60%, #000 61%, #000 63%, transparent 64%, #000 73%, #000 74.5%, transparent 75.5%);animation:spin 44s linear infinite;opacity:.95;}
.wheel::after{content:"";position:absolute;inset:24%;border-radius:50%;background:radial-gradient(circle at 50% 38%,rgba(243,205,106,.4),rgba(120,80,200,.12) 60%,transparent 72%);box-shadow:0 0 50px rgba(243,205,106,.35);}
.wheel .glyph{position:relative;z-index:2;font-family:var(--font-brush);font-size:calc(74px * var(--fz,1));font-weight:700;background:linear-gradient(180deg,#fbeec0,#d9b14a);-webkit-background-clip:text;background-clip:text;color:transparent;}
@keyframes spin{to{transform:rotate(360deg);}}
#s-launch .brand{font-family:var(--font-brush);font-size:calc(60px * var(--fz,1));font-weight:700;line-height:1;margin-top:36px;background:linear-gradient(180deg,#fbeec0,#d9b14a 65%,#a07d2c);-webkit-background-clip:text;background-clip:text;color:transparent;letter-spacing:.06em;}
#s-launch .romaji{font-family:var(--font-disp);font-size:calc(12px * var(--fz,1));letter-spacing:.62em;color:var(--gold);margin:13px 0 0 .6em;}
#s-launch .tag{color:var(--muted);font-size:calc(13px * var(--fz,1));line-height:1.9;margin-top:22px;font-weight:300;}
#s-launch .tag b{color:var(--gold-pale);font-weight:400;}
#s-launch .cta{margin-top:auto;width:100%;display:flex;flex-direction:column;gap:11px;}
#s-launch .foot{font-size:calc(9.5px * var(--fz,1));color:var(--muted-dim);letter-spacing:.04em;margin-top:6px;}

/* ===== onboarding ===== */
#s-onboard .scroll{padding:6px 24px 30px;}
.topbar{display:flex;align-items:center;gap:12px;padding:4px 4px 14px;flex:none;}
.topbar .back{font-size:calc(24px * var(--fz,1));color:var(--gold-pale);cursor:pointer;line-height:1;}
.topbar .ttl{font-family:var(--font-brush);font-size:calc(20px * var(--fz,1));font-weight:700;color:var(--cream);}
#s-onboard .ttl-big{font-family:var(--font-brush);font-size:calc(30px * var(--fz,1));font-weight:700;color:var(--cream);margin:6px 0 4px;}
#s-onboard .ttl-sub{font-size:calc(12px * var(--fz,1));color:var(--muted);line-height:1.7;margin-bottom:22px;}
.field{margin-bottom:17px;}
.field>label{display:block;font-family:var(--font-body);font-size:calc(10px * var(--fz,1));letter-spacing:.22em;color:var(--gold);margin-bottom:7px;}
.inp{width:100%;background:var(--deep);border:1px solid var(--line);border-radius:11px;padding:13px 14px;font-size:calc(14px * var(--fz,1));color:var(--cream);font-family:var(--font-body);}
.inp::placeholder{color:var(--muted-dim);}
.seg{display:flex;gap:8px;}
.seg .opt{flex:1;text-align:center;padding:12px 0;border-radius:11px;font-size:calc(13px * var(--fz,1));color:var(--muted);border:1px solid var(--line);background:var(--deep);letter-spacing:.06em;cursor:pointer;}
.seg .opt.on{color:#241803;font-weight:600;background:linear-gradient(135deg,#f3cd6a,#d9b14a);border-color:transparent;}
.two{display:flex;gap:12px;}.two .field{flex:1;}
.timewrap{display:flex;align-items:center;gap:10px;}
.timewrap .derived{font-family:var(--font-brush);font-size:calc(18px * var(--fz,1));color:var(--gold-bright);white-space:nowrap;}
textarea.inp{min-height:64px;resize:none;}

/* ===== hall ===== */
.app-head{display:flex;align-items:center;justify-content:space-between;padding:6px 22px 14px;flex:none;}
.app-head .hi{font-size:calc(11px * var(--fz,1));color:var(--muted);letter-spacing:.05em;}
.app-head .hi b{display:block;font-family:var(--font-brush);font-size:calc(24px * var(--fz,1));font-weight:700;color:var(--cream);margin-top:1px;}
.app-head .mark{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-brush);font-size:calc(23px * var(--fz,1));font-weight:700;color:var(--gold-bright);border:1px solid var(--gold-deep);background:radial-gradient(circle at 50% 35%,rgba(243,205,106,.18),transparent 70%);}
.oracle{margin:2px 22px 20px;padding:17px 19px;border-radius:16px;position:relative;background:linear-gradient(135deg,rgba(45,33,108,.7),rgba(20,15,46,.7));border:1px solid var(--line);overflow:hidden;}
.oracle::before{content:"\201C";position:absolute;top:-14px;right:10px;font-family:var(--font-disp);font-size:calc(80px * var(--fz,1));color:var(--gold);opacity:.14;}
.oracle .lab{font-family:var(--font-body);font-size:calc(9px * var(--fz,1));letter-spacing:.3em;color:var(--gold);margin-bottom:7px;}
.oracle .line{font-family:var(--font-brush);font-size:calc(19px * var(--fz,1));color:var(--gold-pale);line-height:1.5;}
.npc-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:0 22px;}
.npc{background:linear-gradient(180deg,rgba(33,27,80,.5),rgba(16,12,40,.6));border:1px solid var(--line);border-radius:18px;padding:16px 12px 14px;display:flex;flex-direction:column;align-items:center;text-align:center;position:relative;overflow:hidden;cursor:pointer;}
.npc:active{transform:scale(.97);}
.npc .ring{width:74px;height:74px;border-radius:50%;padding:2px;background:conic-gradient(from 140deg,var(--gold-deep),var(--gold-bright),var(--gold-deep),#5a4a18,var(--gold));box-shadow:0 6px 16px -4px rgba(0,0,0,.6);}
.npc .ring img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block;background:var(--mid);border:2px solid var(--void);}
.npc .nm{font-family:var(--font-brush);font-size:calc(18px * var(--fz,1));font-weight:700;color:var(--cream);margin-top:10px;}
.npc .sx{font-family:var(--font-body);font-size:calc(10px * var(--fz,1));color:var(--muted);letter-spacing:.16em;margin-top:3px;}
.npc.sealed{filter:grayscale(.4);}
.npc.sealed .ring{background:conic-gradient(from 140deg,#5a2a2a,#cf4344,#3a1818);}
.seal{position:absolute;top:9px;right:9px;font-family:var(--font-brush);font-size:calc(11px * var(--fz,1));font-weight:700;color:#fff;background:var(--vermillion);width:24px;height:24px;border-radius:6px;display:grid;place-items:center;transform:rotate(8deg);box-shadow:0 3px 8px rgba(207,67,68,.5);border:1px solid rgba(255,255,255,.3);}
.legend-card{grid-column:1/-1;border-radius:18px;padding:18px 16px;position:relative;overflow:hidden;display:flex;align-items:center;gap:14px;text-align:left;background:linear-gradient(120deg,rgba(70,52,18,.55),rgba(40,28,80,.6) 60%,rgba(20,14,46,.7));border:1px solid var(--gold-deep);animation:breathe 4.5s ease-in-out infinite;cursor:pointer;}
@keyframes breathe{0%,100%{box-shadow:0 0 22px -8px rgba(243,205,106,.25);}50%{box-shadow:0 0 34px -4px rgba(243,205,106,.5);}}
.legend-card .ring{width:58px;height:58px;flex:none;}
.legend-card .nm{font-size:calc(19px * var(--fz,1));margin:0;}
.legend-card .desc{font-family:var(--font-body);font-size:calc(11px * var(--fz,1));color:var(--gold-pale);line-height:1.6;margin-top:3px;}
.legend-card .lg-tag{position:absolute;top:10px;right:12px;font-family:var(--font-disp);font-size:calc(8px * var(--fz,1));letter-spacing:.25em;color:var(--gold-bright);border:1px solid var(--gold-deep);border-radius:20px;padding:3px 9px;}

/* ===== chat ===== */
.chat-head{display:flex;align-items:center;gap:11px;padding:4px 18px 12px;flex:none;border-bottom:1px solid var(--line-soft);background:linear-gradient(180deg,rgba(10,8,30,.5),transparent);}
.chat-head .back{font-size:calc(24px * var(--fz,1));color:var(--gold-pale);cursor:pointer;}
.chat-head .av{width:40px;height:40px;border-radius:50%;padding:2px;background:conic-gradient(from 140deg,var(--gold-deep),var(--gold-bright),var(--gold-deep));}
.chat-head .av img{width:100%;height:100%;border-radius:50%;object-fit:cover;border:2px solid var(--void);display:block;}
.chat-head .who b{font-family:var(--font-brush);font-size:calc(18px * var(--fz,1));font-weight:700;color:var(--cream);}
.chat-head .who small{display:block;font-family:var(--font-body);font-size:calc(9.5px * var(--fz,1));color:var(--gold);letter-spacing:.16em;margin-top:1px;}
#s-chat .scroll{padding:16px 16px 8px;display:flex;flex-direction:column;gap:14px;}
.msg{max-width:84%;font-size:calc(13px * var(--fz,1));line-height:1.65;}
.msg.bot{align-self:flex-start;}
.msg.bot .bub{background:linear-gradient(180deg,rgba(33,27,80,.85),rgba(20,15,46,.9));border:1px solid var(--line);border-radius:4px 16px 16px 16px;padding:11px 14px;color:var(--cream);}
.msg.me{align-self:flex-end;}
.msg.me .bub{background:linear-gradient(135deg,rgba(217,177,74,.22),rgba(160,125,44,.16));border:1px solid var(--gold-deep);border-radius:16px 4px 16px 16px;padding:11px 14px;color:var(--gold-pale);}
.msg .nmlab{font-family:var(--font-body);font-size:calc(9px * var(--fz,1));color:var(--gold);letter-spacing:.16em;margin:0 0 4px 4px;}
.chartcard{align-self:flex-start;width:90%;border-radius:14px;overflow:hidden;border:1px solid var(--gold-deep);background:linear-gradient(180deg,rgba(25,19,58,.95),rgba(12,9,34,.95));}
.chartcard .cc-h{display:flex;justify-content:space-between;align-items:center;padding:9px 12px;border-bottom:1px solid var(--line);}
.chartcard .cc-h b{font-family:var(--font-brush);font-size:calc(14px * var(--fz,1));font-weight:700;color:var(--gold-bright);}
.chartcard .cc-h small{font-family:var(--font-disp);font-size:calc(8px * var(--fz,1));color:var(--muted);}
.zw{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,32px);gap:2px;padding:8px;}
.zw i{font-style:normal;border:1px solid var(--line-soft);border-radius:4px;font-family:var(--font-body);font-size:calc(8px * var(--fz,1));color:var(--muted);display:flex;align-items:flex-start;justify-content:flex-end;padding:2px 3px;background:rgba(30,23,72,.4);}
.zw i.ctr{grid-column:2/4;grid-row:2/4;display:grid;place-items:center;background:radial-gradient(circle,rgba(243,205,106,.12),transparent);border-color:var(--gold-deep);}
.zw i.ctr b{font-family:var(--font-brush);font-size:calc(14px * var(--fz,1));font-weight:700;color:var(--gold-pale);}
.zw i.hot{color:var(--gold-pale);border-color:var(--gold-deep);background:rgba(243,205,106,.08);}
.chips{display:flex;gap:8px;padding:6px 16px 10px;overflow-x:auto;flex:none;}
.chips::-webkit-scrollbar{height:0;}
.chip{flex:none;font-family:var(--font-body);font-size:calc(11px * var(--fz,1));color:var(--gold-pale);border:1px solid var(--gold-deep);border-radius:20px;padding:8px 14px;white-space:nowrap;background:rgba(243,205,106,.05);cursor:pointer;}
.chip-cast{color:#241803;font-weight:600;border-color:transparent;background:linear-gradient(135deg,#f3cd6a,#d9b14a 60%,#b8902f);box-shadow:0 3px 10px -3px rgba(217,177,74,.5);}
.inbar{display:flex;gap:9px;align-items:center;padding:10px 14px calc(14px + env(safe-area-inset-bottom));flex:none;background:linear-gradient(180deg,transparent,var(--void) 35%);}
.inbar .box{flex:1;background:var(--deep);border:1px solid var(--line);border-radius:22px;padding:12px 16px;font-size:calc(12px * var(--fz,1));color:var(--cream);font-family:var(--font-body);}
.inbar .box::placeholder{color:var(--muted-dim);}
.inbar .send{width:46px;height:46px;flex:none;border-radius:50%;display:grid;place-items:center;font-size:calc(16px * var(--fz,1));font-weight:700;color:#241803;background:linear-gradient(135deg,#f8d98a,#d9b14a);border:none;cursor:pointer;box-shadow:0 5px 16px -5px rgba(243,205,106,.6),inset 0 1px 0 rgba(255,255,255,.45);transition:transform .12s ease,filter .15s,box-shadow .15s;}
.inbar .send:hover{filter:brightness(1.07);box-shadow:0 7px 20px -5px rgba(243,205,106,.75),inset 0 1px 0 rgba(255,255,255,.45);}
.inbar .send:active{transform:scale(.9);}
.inbar .send.stop{background:linear-gradient(135deg,#e7889b,#cf4344);color:#fff;box-shadow:0 5px 16px -5px rgba(207,67,68,.6);}
/* 我的報告 · 下載按鈕 */
.rep-pdf-ico{width:32px;height:32px;flex:none;display:grid;place-items:center;border-radius:10px;font-size:calc(15px * var(--fz,1));color:var(--gold-deep,#a07d2c);border:1px solid var(--gold-deep,#a07d2c);background:rgba(217,177,74,.07);transition:.15s;}
.rep-pdf-ico:hover{background:linear-gradient(135deg,#f8d98a,#d9b14a);color:#241803;border-color:#f3cd6a;box-shadow:0 4px 12px -4px rgba(243,205,106,.5);}
.rep-pdf-ico:active{transform:scale(.92);}

/* ===== chart ===== */
.chart-head{padding:6px 22px 10px;flex:none;display:flex;align-items:center;}
.chart-head .t{font-family:var(--font-brush);font-size:calc(22px * var(--fz,1));font-weight:700;color:var(--cream);}
.chart-head .t small{font-family:var(--font-body);font-size:calc(10px * var(--fz,1));color:var(--muted);letter-spacing:.1em;margin-left:6px;}
.chart-share-btn{margin-left:auto;background:transparent;color:var(--gold);border:1px solid var(--gold);border-radius:8px;padding:4px 14px;font-size:calc(13px * var(--fz,1));font-family:inherit;cursor:pointer;}
.chart-share-btn:hover{background:var(--gold);color:var(--void);}
.chart-prof-sel{margin-left:10px;background:var(--soft);color:var(--cream);border:1px solid var(--line);border-radius:8px;padding:4px 10px;font-size:calc(13px * var(--fz,1));font-family:inherit;cursor:pointer;max-width:9em}
/* 切換本命:自訂靛金選擇鈕(取代原生 <select>) */
.chart-prof-btn{margin-left:10px;display:inline-flex;align-items:center;gap:5px;cursor:pointer;font-family:var(--font-body);
  font-size:calc(13.5px * var(--fz,1));color:var(--gold-pale);border:1px solid rgba(217,177,74,.42);border-radius:99px;padding:5px 8px 5px 13px;max-width:11em;
  background:linear-gradient(135deg,rgba(217,177,74,.16),rgba(217,177,74,.04));}
.chart-prof-btn .cpb-lab{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;}
.chart-prof-btn .cpb-cx{width:16px;height:16px;flex:none;color:var(--gold-bright);opacity:.85;}
.chart-prof-btn:active{background:linear-gradient(135deg,rgba(217,177,74,.26),rgba(217,177,74,.09));}
.sys-switch{display:flex;gap:7px;padding:2px 22px 14px;overflow-x:auto;flex:none;}
.sys-switch::-webkit-scrollbar{height:0;}
.sys-switch .s{flex:none;font-family:var(--font-body);font-size:calc(13px * var(--fz,1));padding:8px 16px;border-radius:20px;color:var(--muted);border:1px solid var(--line);background:var(--deep);cursor:pointer;}
.sys-switch .s.on{color:var(--gold-bright);border-color:var(--gold-deep);background:rgba(243,205,106,.08);}
.zw-full{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:3px;margin:0 22px;height:330px;}
.pal{border:1px solid var(--line);border-radius:7px;background:linear-gradient(170deg,rgba(33,27,80,.45),rgba(16,12,40,.55));padding:6px 7px;display:flex;flex-direction:column;position:relative;overflow:hidden;}
.pal .pn{font-family:var(--font-brush);font-size:calc(12px * var(--fz,1));font-weight:700;color:var(--gold-pale);}
.pal .br{position:absolute;top:6px;right:7px;font-family:var(--font-body);font-size:calc(8px * var(--fz,1));color:var(--muted-dim);}
.pal .st{margin-top:auto;display:flex;flex-wrap:wrap;gap:2px 5px;}
.pal .st span{font-family:var(--font-body);font-size:calc(8.5px * var(--fz,1));color:var(--azure);}
.pal .st .pow{color:var(--gold-bright);}
.pal.ming{border-color:var(--gold);background:radial-gradient(circle at 30% 20%,rgba(243,205,106,.16),transparent 70%),rgba(20,15,46,.6);}
.pal.ming .pn{color:var(--gold-bright);}
.pal.ctr{grid-column:2/4;grid-row:2/4;border-color:var(--gold-deep);align-items:center;justify-content:center;text-align:center;background:radial-gradient(circle,rgba(243,205,106,.08),transparent 75%),rgba(12,9,34,.5);}
.pal.ctr .nm{font-family:var(--font-brush);font-size:calc(22px * var(--fz,1));font-weight:700;color:var(--gold-bright);}
.pal.ctr .meta{font-family:var(--font-body);font-size:calc(9px * var(--fz,1));color:var(--muted);margin-top:6px;line-height:1.7;letter-spacing:.08em;}
.chart-foot{display:flex;align-items:center;justify-content:space-between;padding:16px 22px 0;}
.chart-foot .hint{font-family:var(--font-body);font-size:calc(11px * var(--fz,1));color:var(--muted);}
.chart-foot .hint b{color:var(--gold-pale);font-weight:500;}
.mini-seg{display:flex;border:1px solid var(--line);border-radius:9px;overflow:hidden;}
.mini-seg span{font-family:var(--font-body);font-size:calc(11px * var(--fz,1));padding:7px 12px;color:var(--muted);cursor:pointer;}
.mini-seg span.on{color:#241803;background:linear-gradient(135deg,#f3cd6a,#d9b14a);font-weight:600;}

/* ===== report ===== */
.rep-hero{padding:18px 24px 8px;text-align:center;flex:none;}
.rep-hero .lab{font-family:var(--font-disp);font-size:calc(9px * var(--fz,1));letter-spacing:.34em;color:var(--gold);text-transform:uppercase;}
.rep-hero h2{font-family:var(--font-brush);font-size:calc(31px * var(--fz,1));font-weight:700;margin:8px 0 6px;background:linear-gradient(180deg,#fbeec0,#d9b14a 70%,#a07d2c);-webkit-background-clip:text;background-clip:text;color:transparent;}
.rep-hero .schools{font-family:var(--font-body);font-size:calc(10.5px * var(--fz,1));color:var(--muted);letter-spacing:.16em;}
.doc{margin:16px 26px 6px;position:relative;border-radius:6px;padding:20px 18px 22px;background:linear-gradient(180deg,#f3ead0,#e6d5ad);color:#2a2010;box-shadow:0 18px 40px -14px rgba(0,0,0,.8);}
.doc::after{content:"命";position:absolute;bottom:-16px;right:-10px;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-brush);font-size:calc(24px * var(--fz,1));font-weight:700;color:#fff;transform:rotate(-8deg);background:radial-gradient(circle at 40% 35%,#e2585a,#a31f20);box-shadow:0 6px 16px rgba(163,31,32,.5);border:2px solid rgba(255,255,255,.4);}
.doc .dt{font-family:var(--font-body);font-size:calc(8px * var(--fz,1));letter-spacing:.18em;color:#8a6a28;}
.doc .dh{font-family:var(--font-brush);font-size:calc(19px * var(--fz,1));font-weight:700;color:#3a2a12;margin:5px 0 9px;border-bottom:1.5px solid #c9b075;padding-bottom:8px;}
.doc p{font-family:var(--font-body);font-size:calc(10px * var(--fz,1));line-height:1.85;color:#4a3a1e;}
.doc .bars{margin-top:11px;display:flex;flex-direction:column;gap:7px;}
.doc .bar{display:flex;align-items:center;gap:8px;font-family:var(--font-body);font-size:calc(9px * var(--fz,1));color:#5a4520;}
.doc .bar .track{flex:1;height:5px;border-radius:3px;background:#cdb784;overflow:hidden;}
.doc .bar .fill{height:100%;border-radius:3px;background:linear-gradient(90deg,#b8902f,#8a3a2a);}
.toc{padding:6px 26px 4px;}
.toc .row{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid var(--line-soft);}
.toc .n{font-family:var(--font-brush);font-size:calc(14px * var(--fz,1));font-weight:700;color:var(--gold);width:24px;text-align:center;}
.toc .tx{flex:1;font-family:var(--font-body);font-size:calc(12.5px * var(--fz,1));color:var(--cream);}
.toc .tx small{display:block;font-size:calc(9px * var(--fz,1));color:var(--muted-dim);margin-top:2px;}
.toc .chk{color:var(--jade);font-size:calc(13px * var(--fz,1));}
.rep-cta{padding:14px 24px 0;display:flex;flex-direction:column;gap:10px;}
.rep-cta .note{text-align:center;font-family:var(--font-body);font-size:calc(9.5px * var(--fz,1));color:var(--muted-dim);}

/* ===== my ===== */
.me-head{display:flex;align-items:center;gap:13px;padding:12px 24px 18px;flex:none;}
.me-head .av{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-brush);font-size:calc(30px * var(--fz,1));font-weight:700;color:var(--gold-bright);border:1px solid var(--gold-deep);background:radial-gradient(circle at 50% 35%,rgba(243,205,106,.2),transparent 70%);}
.me-head .info b{font-family:var(--font-brush);font-size:calc(23px * var(--fz,1));font-weight:700;color:var(--cream);}
.me-head .info small{display:block;font-family:var(--font-body);font-size:calc(10.5px * var(--fz,1));color:var(--muted);margin-top:3px;}
.me-sec{padding:0 24px;margin-bottom:8px;}
.me-sec .hd{display:flex;align-items:center;justify-content:space-between;margin:12px 0 9px;}
.me-sec .hd span{font-family:var(--font-body);font-size:calc(11px * var(--fz,1));letter-spacing:.2em;color:var(--gold);}
.me-sec .hd a{font-family:var(--font-body);font-size:calc(10.5px * var(--fz,1));color:var(--gold-pale);border:1px solid var(--gold-deep);border-radius:14px;padding:3px 10px;cursor:pointer;}
.frow{display:flex;align-items:center;gap:11px;padding:11px 13px;border-radius:13px;background:linear-gradient(180deg,rgba(33,27,80,.45),rgba(16,12,40,.5));border:1px solid var(--line);margin-bottom:8px;}
.frow .fi{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;font-family:var(--font-brush);font-size:calc(16px * var(--fz,1));font-weight:700;flex:none;}
.frow .fmid{flex:1;}.frow .fmid b{font-family:var(--font-brush);font-size:calc(15px * var(--fz,1));font-weight:700;color:var(--cream);}
.frow .fmid small{display:block;font-family:var(--font-body);font-size:calc(9.5px * var(--fz,1));color:var(--muted);margin-top:2px;}
.frow .far{font-family:var(--font-body);font-size:calc(9px * var(--fz,1));color:var(--muted-dim);}
.frow .arr{color:var(--gold-deep);font-size:calc(16px * var(--fz,1));}
.traj{padding:14px 16px;border-radius:13px;background:linear-gradient(120deg,rgba(45,33,108,.5),rgba(20,15,46,.6));border:1px solid var(--line);}
.traj .tg{font-family:var(--font-body);font-size:calc(9px * var(--fz,1));letter-spacing:.24em;color:var(--gold);margin-bottom:7px;}
.traj p{font-family:var(--font-brush);font-size:calc(15px * var(--fz,1));color:var(--gold-pale);line-height:1.6;}
.menu{margin:4px 24px 0;}
.menu .mrow{display:flex;align-items:center;gap:11px;padding:14px 4px;border-bottom:1px solid var(--line-soft);font-family:var(--font-body);font-size:calc(13px * var(--fz,1));color:var(--cream);cursor:pointer;}
.menu .mrow .mi{width:20px;text-align:center;color:var(--gold-pale);font-size:calc(14px * var(--fz,1));}
.menu .mrow .arr{margin-left:auto;color:var(--gold-deep);}
.menu a.mrow{text-decoration:none;color:var(--cream);}                       /* 設定頁:條款/隱私用 <a>,去底線、沿用列樣式 */
.menu .mrow.mrow-danger,.menu .mrow.mrow-danger .mi{color:var(--vermillion);} /* 刪除帳號:紅字警示 */
.set-note{padding:10px 24px 0;font-size:calc(11.5px * var(--fz,1));color:var(--muted-dim);line-height:1.75;}

.proto-tag{position:fixed;top:6px;left:50%;transform:translateX(-50%);z-index:50;font-family:var(--font-disp);font-size:calc(8px * var(--fz,1));letter-spacing:.3em;color:var(--gold-deep);background:rgba(6,5,20,.7);border:1px solid var(--line-soft);border-radius:20px;padding:3px 12px;pointer-events:none;}

/* ===== 桌面寬螢幕 RWD(≥1024px):左側欄導覽 + 可讀內容欄置中（手機不受影響）===== */
@media (min-width:1024px){
  .app{max-width:none;width:100%;}   /* 桌面滿版 */
  /* 底部分頁列 → 左側固定欄 */
  .app[data-tab] .tabbar{
    flex-direction:column;justify-content:flex-start;align-items:stretch;
    width:212px;height:100dvh;top:0;bottom:auto;left:0;right:auto;
    border-top:none;border-right:1px solid var(--line-soft);
    padding:80px 0 22px;gap:2px;
    background:linear-gradient(180deg,rgba(10,8,30,.55),rgba(6,5,20,.92));
  }
  .app[data-tab] .tabbar .tab{flex:none;flex-direction:row;justify-content:flex-start;gap:13px;padding:13px 26px;font-size:calc(14px * var(--fz,1));letter-spacing:.06em;}
  .app[data-tab] .tabbar .tab .ic{font-size:calc(20px * var(--fz,1));}
  /* 內容區讓開左欄 */
  .app[data-tab] .screen{left:212px;}
  /* 可讀內容欄置中、不過寬 */
  .screen .scroll{max-width:760px;margin-left:auto;margin-right:auto;width:100%;}
  .app-head{max-width:760px;margin-left:auto;margin-right:auto;width:100%;}
  .inbar{max-width:760px;margin-left:auto;margin-right:auto;width:100%;}
  #s-chat .msg{max-width:76%;}
}

/* ===== 對話兩欄(桌面):左大師面板 + 右對話;手機維持單欄 ===== */
.chat-main{display:flex;flex-direction:column;flex:1;min-height:0;position:relative;}
/* 回到最新:往上捲離開底部時,右下角浮現,點了平滑捲到底 */
.jump-btn{position:absolute;right:16px;bottom:calc(74px + env(safe-area-inset-bottom));z-index:16;width:42px;height:42px;border-radius:50%;border:1px solid var(--gold-deep);background:linear-gradient(180deg,rgba(36,29,86,.96),rgba(20,15,46,.98));color:var(--gold-bright);cursor:pointer;display:none;align-items:center;justify-content:center;box-shadow:0 6px 20px rgba(0,0,0,.5);}
.jump-btn.show{display:flex;animation:jumpIn .18s ease;}
.jump-btn svg{width:20px;height:20px;}
.jump-btn:active{transform:translateY(1px);}
@keyframes jumpIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
#s-forum .jump-btn{bottom:calc(86px + env(safe-area-inset-bottom));}
.chat-side{display:none;}
@media (min-width:1024px){
  #s-chat{flex-direction:row;}
  #s-chat .statusbar{display:none;}
  #s-chat .chat-side{display:flex;flex-direction:column;width:300px;flex:none;border-right:1px solid var(--line-soft);padding:34px 24px;gap:14px;overflow-y:auto;background:linear-gradient(180deg,rgba(10,8,30,.5),rgba(6,5,20,.86));}
  #s-chat .chat-main{flex:1;min-width:0;}
  #s-chat .scroll,#s-chat .inbar,#s-chat .chips{max-width:780px;margin-left:auto;margin-right:auto;width:100%;}
  #s-chat .chat-head .av,#s-chat .chat-head .back,#s-chat .chat-head .who{display:none;}
  #s-chat .chat-head{justify-content:flex-end;}
  #s-chat .chips{display:none;}   /* 問題已移到左欄,隱藏底部重複(動態接續題保留) */
  .chat-side .cs-back{font-size:calc(12px * var(--fz,1));color:var(--gold-pale);letter-spacing:.08em;cursor:pointer;align-self:flex-start;opacity:.85;}
  .chat-side .cs-back:hover{color:var(--gold-bright);}
  .chat-side .cs-cast{font-size:calc(13px * var(--fz,1));color:#241803;font-weight:700;text-align:center;background:linear-gradient(135deg,#f8d98a,#d9b14a);border-radius:11px;padding:10px 12px;cursor:pointer;margin-top:4px;}
  .chat-side .cs-av{width:118px;height:118px;border-radius:50%;object-fit:cover;align-self:center;border:2px solid var(--gold-deep);box-shadow:0 8px 30px -10px rgba(243,205,106,.5);}
  .chat-side .cs-name{font-size:calc(21px * var(--fz,1));color:var(--gold-bright);text-align:center;font-weight:700;}
  .chat-side .cs-sys{font-size:calc(13px * var(--fz,1));color:var(--muted);text-align:center;letter-spacing:.12em;margin-top:-6px;}
  .chat-side .cs-qh{font-size:calc(11px * var(--fz,1));color:var(--gold);letter-spacing:.18em;margin-top:14px;}
  .chat-side .cs-q{font-size:calc(13px * var(--fz,1));color:var(--cream);border:1px solid var(--line);border-radius:11px;padding:9px 13px;cursor:pointer;transition:.15s;line-height:1.5;}
  .chat-side .cs-q:hover{border-color:var(--gold-bright);background:rgba(217,177,74,.08);}
}

/* ===== 每日運勢分頁 ===== */
/* 每日是唯一沒有 .statusbar 的分頁(其餘十個都有,而 .statusbar 自帶
   padding-top:max(10px,env(safe-area-inset-top)))→ iPhone 上內容會鑽到瀏海/動態島底下,
   日期被狀態列蓋掉。這裡補回頂部安全區;Android 無瀏海時 inset 為 0,等於沒動。 */
.daily-body{padding:calc(6px + env(safe-area-inset-top,0px)) 14px 44px;}
.daily-empty{padding:40px 16px;text-align:center;color:var(--muted);}
.daily-hero{text-align:center;padding:2px 0 12px;}
.dh-date{font-size:calc(12.5px * var(--fz,1));color:var(--gold-pale);letter-spacing:.06em;}
.dh-palace{display:inline-block;margin-top:7px;padding:2px 12px;font-size:calc(11px * var(--fz,1));color:var(--gold-bright);letter-spacing:.14em;border:1px solid rgba(217,177,74,.3);border-radius:999px;background:rgba(217,177,74,.06);}
.blk-lab{display:flex;align-items:center;gap:10px;margin:20px 2px 6px;color:var(--gold);font-size:calc(12px * var(--fz,1));letter-spacing:.24em;}
.blk-lab::before,.blk-lab::after{content:'';flex:1;height:1px;background:rgba(217,177,74,.22);}
.daily-sec{position:relative;margin:11px 0;padding:14px 16px 14px 20px;background:linear-gradient(180deg,rgba(38,30,80,.55),rgba(24,20,54,.55));border:1px solid rgba(217,177,74,.2);border-radius:14px;}
.daily-sec::before{content:'';position:absolute;left:8px;top:15px;bottom:15px;width:3px;border-radius:3px;background:linear-gradient(180deg,var(--gold-bright),var(--gold));}
.ds-lab{display:block;margin-bottom:6px;color:var(--gold-bright);font-weight:700;letter-spacing:.16em;font-size:calc(14px * var(--fz,1));}
.daily-sec p{margin:0;color:var(--cream);line-height:1.85;font-size:calc(14.5px * var(--fz,1));}
.tarot-day{margin-top:6px;padding:18px 16px 20px;background:radial-gradient(ellipse at 50% 0%,rgba(60,44,110,.5),rgba(24,20,54,.5));border:1px solid rgba(217,177,74,.24);border-radius:16px;text-align:center;}
.tcard{width:170px;height:270px;margin:6px auto 14px;border-radius:12px;border:1.5px solid var(--gold);overflow:hidden;background:linear-gradient(160deg,#2a2160,#171040);box-shadow:0 12px 30px rgba(0,0,0,.5),inset 0 0 26px rgba(240,200,96,.12);display:flex;align-items:center;justify-content:center;position:relative;}
.tcard .num{position:absolute;top:8px;left:0;right:0;font-size:calc(12px * var(--fz,1));color:var(--gold-pale);letter-spacing:2px;z-index:2;}
.tcard-img{width:100%;height:100%;object-fit:cover;position:relative;z-index:1;}
.tcard-img.rev{transform:rotate(180deg);}
.tcard::after{content:'';position:absolute;inset:3px;border:1px solid var(--gold-deep);border-radius:9px;pointer-events:none;z-index:3;box-shadow:inset 0 0 12px rgba(240,200,96,.14);}
.tcard-glyph{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;z-index:0;}
.tcard-glyph .sym{font-size:calc(52px * var(--fz,1));line-height:1;filter:drop-shadow(0 0 12px rgba(240,200,96,.5));}
.tcard-glyph .nm{font-size:calc(22px * var(--fz,1));color:var(--gold-bright);}
.td-name{font-size:calc(15px * var(--fz,1));color:var(--cream);letter-spacing:.1em;margin-bottom:8px;}
.td-name b{color:var(--gold-bright);}
.td-guide{color:var(--cream);line-height:1.85;font-size:calc(14px * var(--fz,1));text-align:left;}
.td-guide.interpreting{display:flex;align-items:center;justify-content:center;gap:9px;color:var(--gold-pale);font-style:italic;}
.tdi-dots{display:inline-flex;gap:4px;}
.tdi-dots span{width:6px;height:6px;border-radius:50%;background:var(--gold-pale);animation:forumdot 1.1s infinite ease-in-out;}
.tdi-dots span:nth-child(2){animation-delay:.18s;}
.tdi-dots span:nth-child(3){animation-delay:.36s;}
.daily-lock{padding:30px 16px;text-align:center;}
.dl-blur{position:relative;filter:blur(3px);opacity:.6;margin-bottom:16px;text-align:left;}
.dl-hint{color:var(--gold-pale);margin:12px 0;}
.today-jieqi{font-size:calc(11.5px * var(--fz,1));color:var(--gold-pale);letter-spacing:.04em;margin:2px 0 8px;opacity:.9;}
/* 每日一牌:互動抽牌 */
.tcard-back img,.tcard.flipping img{width:100%;height:100%;object-fit:cover;}
.tcard.flipping{animation:cardflip 1.05s ease-in-out infinite;}
@keyframes cardflip{0%,100%{transform:perspective(600px) rotateY(0);}50%{transform:perspective(600px) rotateY(180deg);}}
.reveal-in{animation:revealcard .6s ease;}
@keyframes revealcard{from{transform:perspective(600px) rotateY(90deg) scale(.92);opacity:0;}to{transform:perspective(600px) rotateY(0) scale(1);opacity:1;}}
.draw-hint{margin-top:10px;font-size:calc(12.5px * var(--fz,1));color:var(--muted);letter-spacing:.06em;}
.tarot-day .gold-btn{margin-top:16px;}
.daily-ask{margin-top:16px;}
/* 今日黃曆收摺 */
.hl-fold{margin-top:16px;padding:13px 15px;background:rgba(32,26,70,.5);border:1px solid rgba(217,177,74,.18);border-radius:12px;cursor:pointer;}
.hl-fold-top{display:flex;align-items:center;justify-content:space-between;}
.hl-fold .l{font-size:calc(13px * var(--fz,1));color:var(--gold-pale);letter-spacing:.06em;}
.hl-fold .r{font-size:calc(12px * var(--fz,1));color:var(--muted);}
.hl-fold .sum{font-size:calc(11.5px * var(--fz,1));color:var(--muted);margin-top:5px;}
.hl-fold-body{margin-top:12px;display:none;}
.hl-fold.open .hl-fold-body{display:block;}
.hl-fold.open .r{opacity:0;}
/* 今日黃曆 */
.hl-card{background:linear-gradient(180deg,rgba(38,30,80,.55),rgba(24,20,54,.55));border:1px solid rgba(240,200,96,.24);border-radius:14px;padding:15px 16px 14px;}
.hl-head{text-align:center;padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid rgba(217,177,74,.16);}
.hl-head b{display:block;font-family:var(--font-brush);font-size:calc(17px * var(--fz,1));font-weight:700;color:var(--gold-bright);letter-spacing:.06em;}
.hl-head span{display:block;font-family:var(--font-body);font-size:calc(10.5px * var(--fz,1));color:var(--muted);letter-spacing:.05em;margin-top:3px;line-height:1.6;}
.hl-meta{font-size:calc(11.5px * var(--fz,1));color:var(--gold-pale);text-align:center;letter-spacing:.03em;padding-bottom:9px;margin-bottom:9px;border-bottom:1px solid rgba(217,177,74,.16);line-height:1.6;}
.hl-jieqi{font-size:calc(11px * var(--fz,1));color:var(--muted);text-align:center;margin:-3px 0 10px;}
.hl-yj{display:flex;align-items:center;gap:9px;margin:7px 0;font-size:calc(13.5px * var(--fz,1));color:var(--cream);}
.hl-yj i{flex:none;width:1.8em;height:1.8em;line-height:1.8em;text-align:center;border-radius:6px;font-size:calc(12px * var(--fz,1));font-weight:700;font-style:normal;color:#fff;}
.hl-yj .y{background:#67ab8c;} .hl-yj .j{background:#c43d3e;}
.hl-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;margin:13px 0 4px;}
.hl-it{font-size:calc(12px * var(--fz,1));color:var(--cream);line-height:1.5;}
.hl-it b{display:block;color:var(--gold);font-weight:500;font-size:calc(10.5px * var(--fz,1));letter-spacing:.14em;margin-bottom:2px;}
.hl-time{margin-top:13px;padding-top:11px;border-top:1px solid rgba(217,177,74,.16);}
.hl-time .tl{font-size:calc(10.5px * var(--fz,1));color:var(--gold);letter-spacing:.14em;margin-bottom:7px;}
.hl-chips{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;}
.hl-chips span{text-align:center;padding:5px 0;border-radius:7px;font-size:calc(12px * var(--fz,1));border:1px solid rgba(217,177,74,.14);}
.hl-chips .ji{color:#8fd3b0;background:rgba(103,171,140,.12);border-color:rgba(103,171,140,.3);}
.hl-chips .xiong{color:var(--muted);opacity:.55;}
/* 今日主軸卡 */
.axis{background:radial-gradient(ellipse at 50% 0%,rgba(60,44,110,.55),rgba(24,20,54,.55));border:1px solid rgba(217,177,74,.28);border-radius:16px;padding:18px 17px 16px;}
.axis-lab{font-size:calc(11px * var(--fz,1));color:var(--gold);letter-spacing:.24em;text-align:center;margin-bottom:8px;}
.axis-sum{font-size:calc(16px * var(--fz,1));line-height:1.75;color:var(--cream);text-align:center;font-weight:500;}
.axis-overall{text-align:center;margin:12px 0 4px;font-size:calc(13px * var(--fz,1));color:var(--gold-pale);}
.axis-overall b{color:var(--gold-bright);letter-spacing:2px;margin-left:6px;}
.pt{display:flex;gap:11px;align-items:flex-start;margin-top:13px;padding:12px 13px;border-radius:12px;background:rgba(20,15,46,.5);border:1px solid rgba(217,177,74,.14);position:relative;}
.pt::before{content:'';position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:3px;}
.pt.up::before{background:linear-gradient(180deg,#8fd3b0,#67ab8c);}
.pt.warn::before{background:linear-gradient(180deg,#f0c860,#e8a4b0);}
.pt-ic{flex:none;font-size:calc(19px * var(--fz,1));line-height:1.3;}
.pt-body{flex:1;}
.pt-top{display:flex;justify-content:space-between;align-items:baseline;}
.pt-tag{font-size:calc(13px * var(--fz,1));color:var(--cream);letter-spacing:.06em;}
.pt-tag b{font-size:calc(15px * var(--fz,1));}
.pt.up .pt-tag b{color:#8fd3b0;} .pt.warn .pt-tag b{color:#e8a4b0;}
.pt-star{font-size:calc(12px * var(--fz,1));color:var(--gold-bright);letter-spacing:1px;}
.pt-why{margin-top:4px;font-size:calc(12.5px * var(--fz,1));color:var(--muted);line-height:1.6;}
.pt-why.lock{color:var(--gold-pale);opacity:.85;}
/* 眾師會診 */
.forum-entry{background:linear-gradient(135deg,rgba(139,58,110,.34),rgba(75,62,142,.30),rgba(217,177,74,.15));border:1px solid rgba(240,200,96,.5);box-shadow:0 0 22px rgba(217,177,74,.2);}
.forum-entry .lab{color:var(--gold-bright);margin-bottom:0;font-family:var(--font-brush);font-size:calc(19px * var(--fz,1));letter-spacing:.06em;display:flex;align-items:center;}
.forum-entry .line{font-family:var(--font-brush);font-size:calc(14.5px * var(--fz,1));line-height:1.7;color:var(--cream);}
.horo-card .line{font-size:calc(14.5px * var(--fz,1));}   /* 本週運勢:毛筆體(承 .oracle .line)縮到與眾師會診同大小 */
/* 兩位大師頭像 · 交換運動動畫 */
.fe-top{display:flex;align-items:center;gap:13px;margin-bottom:10px;}
.fe-avs{position:relative;width:60px;height:40px;flex:none;}
.fe-av{position:absolute;top:2px;width:36px;height:36px;border-radius:50%;object-fit:cover;border:2px solid var(--gold-bright);box-shadow:0 0 10px rgba(240,200,96,.45);}
.fe-av.a{left:0;animation:feswapA 3.2s ease-in-out infinite;}
.fe-av.b{left:24px;animation:feswapB 3.2s ease-in-out infinite;}
@keyframes feswapA{0%,100%{transform:translateX(0);z-index:2}50%{transform:translateX(24px);z-index:1}}
@keyframes feswapB{0%,100%{transform:translateX(0);z-index:1}50%{transform:translateX(-24px);z-index:2}}
.forum-entry .forum-badge{font-size:calc(10px * var(--fz,1));color:var(--gold-bright);border:1px solid rgba(240,200,96,.55);border-radius:999px;padding:1px 7px;margin-left:6px;}
/* 大師思考中動畫 */
.forum-msg .bub.typing,#naming-result .bub.typing{display:inline-flex;gap:5px;align-items:center;padding:13px 14px;}
.forum-msg .bub.typing span,#naming-result .bub.typing span{width:7px;height:7px;border-radius:50%;background:var(--gold-pale);animation:forumdot 1.1s infinite ease-in-out;}
.forum-msg .bub.typing span:nth-child(2),#naming-result .bub.typing span:nth-child(2){animation-delay:.18s;}
.forum-msg .bub.typing span:nth-child(3),#naming-result .bub.typing span:nth-child(3){animation-delay:.36s;}
@keyframes forumdot{0%,80%,100%{opacity:.3;transform:translateY(0);}40%{opacity:1;transform:translateY(-4px);}}
/* 座談氣泡:粗體/強調變色(比照對話) */
.forum-msg .bub strong{color:var(--gold-bright);font-weight:600;}
.forum-msg .bub em{color:var(--gold-pale);font-style:normal;}
/* 保存的會診(可續談 / 可刪除) */
.forum-saved-item{display:flex;align-items:center;gap:6px;background:rgba(32,26,70,.6);border:1px solid rgba(217,177,74,.22);border-radius:12px;padding:10px 13px;margin-bottom:8px;transition:.2s;}
.forum-saved-item:hover{border-color:var(--gold-bright);background:rgba(240,200,96,.08);}
.fsi-main{flex:1;min-width:0;cursor:pointer;}
.fsi-topic{font-size:calc(13.5px * var(--fz,1));color:var(--cream);line-height:1.5;}
.fsi-meta{font-size:calc(11px * var(--fz,1));color:var(--muted);margin-top:3px;}
.fsi-del{flex:none;color:var(--muted);font-size:calc(13px * var(--fz,1));padding:6px 9px;border-radius:8px;cursor:pointer;transition:.2s;}
.fsi-del:hover{color:#e0625f;background:rgba(196,61,62,.14);}
/* 範例主題 chips */
.fs-examples{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px;}
.fs-ex{font-size:calc(12px * var(--fz,1));color:var(--gold-pale);border:1px solid rgba(217,177,74,.3);border-radius:999px;padding:5px 11px;cursor:pointer;transition:.2s;}
.fs-ex:hover{border-color:var(--gold-bright);background:rgba(240,200,96,.1);color:var(--cream);}
/* 推薦組合快選 */
.fs-combos{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;}   /* 等寬兩欄,不再參差 */
.fs-combo{display:flex;flex-direction:column;gap:3px;align-items:flex-start;padding:10px 13px;border-radius:14px;border:1px solid rgba(217,177,74,.28);background:rgba(20,16,46,.5);cursor:pointer;transition:.2s;min-width:0;}
@media (min-width:1024px){ .fs-combos{grid-template-columns:repeat(3,1fr);} }
.fs-combo:hover{border-color:var(--gold-bright);background:rgba(240,200,96,.08);}
.fs-combo.on{border-color:var(--gold-bright);background:rgba(240,200,96,.14);box-shadow:0 0 16px rgba(240,200,96,.2);}
.fc-lab{font-family:var(--font-brush);font-size:calc(15px * var(--fz,1));font-weight:700;color:var(--cream);letter-spacing:.02em;}
.fc-m{font-size:calc(11px * var(--fz,1));color:var(--gold-pale);letter-spacing:.02em;}
.forum-setup{padding:8px 14px 30px;}
.fs-lab{color:var(--gold);font-size:calc(12px * var(--fz,1));letter-spacing:.16em;margin:16px 2px 8px;}
.fs-masters{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.fs-m{border:1px solid rgba(217,177,74,.28);border-radius:12px;padding:10px 4px;text-align:center;cursor:pointer;transition:.2s;background:rgba(20,16,46,.5);}
.fs-m.on{border-color:var(--gold-bright);background:rgba(240,200,96,.12);box-shadow:0 0 16px rgba(240,200,96,.22);}
.fs-m img{width:46px;height:46px;border-radius:50%;object-fit:cover;}
.fs-nm{font-size:calc(13px * var(--fz,1));color:var(--cream);margin-top:5px;}
.fs-sx{font-size:calc(10.5px * var(--fz,1));color:var(--muted);}
.fs-topic{width:100%;background:rgba(20,16,46,.6);border:1px solid rgba(217,177,74,.28);border-radius:12px;color:var(--cream);padding:10px;font-family:inherit;font-size:calc(14px * var(--fz,1));}
.fs-partner-btn{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;background:rgba(20,16,46,.6);border:1px solid rgba(217,177,74,.28);border-radius:12px;color:var(--gold-pale);padding:12px;font-family:inherit;font-size:calc(14px * var(--fz,1));cursor:pointer;transition:.2s;}
.fs-partner-btn:hover{border-color:var(--gold-bright);}
.fs-partner-btn.on{color:var(--cream);border-color:var(--gold-bright);background:rgba(240,200,96,.1);}
.fpb-x{color:var(--muted);padding:0 4px;font-size:calc(13px * var(--fz,1));}
.fpb-x:hover{color:#e0625f;}
.fs-topic:focus{outline:none;border-color:var(--gold-bright);}
.forum-setup .gold-btn{margin-top:16px;width:100%;}
.forum-body{padding:6px 14px 20px;}
.forum-msg{display:flex;gap:9px;margin:12px 0;}
.forum-msg.user{flex-direction:row-reverse;}
.forum-msg img{width:34px;height:34px;border-radius:50%;flex:none;object-fit:cover;}
.forum-msg .fm-b{max-width:78%;}
.forum-msg .fm-nm{font-size:calc(11px * var(--fz,1));color:var(--gold-pale);margin-bottom:3px;}
.forum-msg.user .fm-nm{text-align:right;}
.forum-msg .bub{background:rgba(32,26,70,.7);border:1px solid rgba(217,177,74,.18);border-radius:12px;padding:9px 12px;font-size:calc(14px * var(--fz,1));line-height:1.7;color:var(--cream);}
.forum-msg.user .bub{background:linear-gradient(135deg,rgba(217,177,74,.2),rgba(196,61,62,.12));}
.forum-note{text-align:center;color:var(--muted);font-size:calc(12px * var(--fz,1));margin:14px 0;}
/* 桌面:會診對話比照一般大師對話(泡泡質感、留白、寬度一致;保留頭像分辨大師) */
@media (min-width:1024px){
  .forum-msg{margin:16px 0;gap:11px;}
  .forum-msg img{width:38px;height:38px;}
  .forum-msg .fm-b{max-width:76%;}
  .forum-msg .fm-nm{font-size:calc(12px * var(--fz,1));letter-spacing:.06em;margin-bottom:4px;}
  .forum-msg .bub{background:linear-gradient(180deg,rgba(33,27,80,.85),rgba(20,15,46,.9));border:1px solid var(--line);border-radius:4px 16px 16px 16px;padding:11px 15px;font-size:calc(14.5px * var(--fz,1));line-height:1.75;box-shadow:inset 2.5px 0 0 rgba(217,177,74,.5);}
  .forum-msg.user .bub{background:linear-gradient(135deg,rgba(217,177,74,.22),rgba(160,125,44,.16));border:1px solid var(--gold-deep);border-radius:16px 4px 16px 16px;color:var(--gold-pale);box-shadow:none;}
}
/* 桌面:會診「開始論道」後,左側顯示大師面板(topic+與會大師),填滿原本空白的側欄,比照一般對話兩欄 */
@media (min-width:1024px){
  #s-forum.started{flex-direction:row;}
  #s-forum .statusbar{display:none;}
  #s-forum.started .forum-side{display:flex;flex-direction:column;width:300px;flex:none;border-right:1px solid var(--line-soft);padding:34px 24px;gap:13px;overflow-y:auto;background:linear-gradient(180deg,rgba(10,8,30,.5),rgba(6,5,20,.86));}
  #s-forum.started .chat-main{flex:1;min-width:0;}
  #s-forum.started .scroll,#s-forum.started .forum-bar{max-width:820px;margin-left:auto;margin-right:auto;width:100%;}
  #s-forum.started .chat-head .back{display:none;}
  #s-forum.started .chat-head{justify-content:flex-end;}
}
.forum-side .fside-topic{font-size:calc(14px * var(--fz,1));color:var(--cream);line-height:1.6;border:1px solid var(--line);border-radius:11px;padding:10px 12px;background:rgba(20,16,46,.4);}
.forum-side .fside-partner{font-size:calc(12px * var(--fz,1));color:var(--gold-pale);letter-spacing:.04em;}
.forum-side .fside-m{display:flex;align-items:center;gap:10px;}
.forum-side .fside-m img{width:40px;height:40px;border-radius:50%;object-fit:cover;border:1px solid var(--gold-deep);flex:none;}
.forum-side .fside-m b{display:block;font-size:calc(14px * var(--fz,1));color:var(--gold-bright);font-weight:700;}
.forum-side .fside-m span{font-size:calc(11px * var(--fz,1));color:var(--muted);letter-spacing:.08em;}
#s-forum:not(.started) #forum-menu-wrap{display:none;}   /* 設定頁不顯示 ⋯(匯出/分享),開始論道後才出現 */
#s-forum:not(.started) #forum-body{display:none;}   /* 設定頁只顯示設定表單;背景續跑的會診泡泡不亂入 */
#s-forum .scroll{flex:1;min-height:0;overflow-y:auto;}
.forum-bar{display:flex;flex-direction:column;gap:8px;flex:none;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:linear-gradient(180deg,transparent,var(--void) 40%);border-top:1px solid var(--line-soft);}
.forum-bar-row{display:flex;gap:10px;justify-content:center;}
#s-forum .chat-name{font-family:var(--font-brush);font-size:calc(19px * var(--fz,1));color:var(--gold-bright);line-height:1.1;}
#s-forum .chat-sys{font-size:calc(11.5px * var(--fz,1));color:var(--muted);letter-spacing:.03em;margin-top:2px;}
.forum-ask{width:100%;background:rgba(20,16,46,.7);border:1px solid rgba(217,177,74,.3);border-radius:12px;color:var(--cream);padding:10px;font-family:inherit;}
/* 設定頁最上方「進行中的會診 · 接回」入口 */
.forum-resume-live{display:flex;align-items:center;gap:10px;width:100%;text-align:left;cursor:pointer;
  margin:0 0 15px;padding:12px 14px;border-radius:13px;font-family:var(--font-body);
  background:linear-gradient(135deg,rgba(217,177,74,.18),rgba(217,177,74,.05));
  border:1px solid rgba(217,177,74,.5);box-shadow:0 5px 18px -7px rgba(217,177,74,.5);}
.forum-resume-live:active{transform:scale(.99);}
.forum-resume-live .frl-dot{width:9px;height:9px;border-radius:50%;flex:none;background:var(--gold-bright);
  box-shadow:0 0 8px rgba(243,205,106,.95);animation:frlPulse 1.5s ease-in-out infinite;}
.forum-resume-live .frl-tx{flex:1;min-width:0;font-size:calc(13.5px * var(--fz,1));color:var(--gold-pale);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.forum-resume-live .frl-tx b{color:var(--gold-bright);font-weight:700;}
.forum-resume-live .frl-go{flex:none;font-size:calc(13px * var(--fz,1));color:var(--gold-bright);font-weight:600;letter-spacing:.04em;}
@keyframes frlPulse{0%,100%{opacity:.5;transform:scale(.8);}50%{opacity:1;transform:scale(1.15);}}
@media (prefers-reduced-motion:reduce){ .forum-resume-live .frl-dot{animation:none !important;} }
/* 四派組合包按鈕:75 折優惠特效(角標 + 流光) */
.bundle-btn{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;gap:2px;padding-top:16px;}
.bundle-btn .bb-tx{display:block;line-height:1.3;}
.bundle-btn .bb-sub{display:block;font-size:calc(11px * var(--fz,1));font-weight:400;letter-spacing:.02em;opacity:.72;}
.bundle-btn .bb-off{position:absolute;top:0;right:0;display:flex;align-items:baseline;gap:1px;
  padding:3px 9px 4px;border-radius:0 13px 0 12px;font-size:calc(13px * var(--fz,1));font-weight:800;line-height:1;
  color:#fff6d8;background:linear-gradient(135deg,#c0392b,#e05545);box-shadow:0 2px 8px -2px rgba(0,0,0,.5);}
.bundle-btn .bb-off i{font-size:calc(9.5px * var(--fz,1));font-style:normal;font-weight:700;}
/* 流光:斜向掃過,提示這是優惠品 */
.bundle-btn::after{content:'';position:absolute;top:-60%;left:-60%;width:40%;height:220%;pointer-events:none;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);
  transform:rotate(18deg);animation:bundleShine 3.2s ease-in-out infinite;}
@keyframes bundleShine{0%{left:-60%;}55%,100%{left:130%;}}
@media (prefers-reduced-motion:reduce){ .bundle-btn::after{animation:none;opacity:0;} }
/* 後台公告視窗(進 App 時顯示) */
.announce-card{text-align:left;max-width:340px;}
.announce-t{font-family:var(--font-brush);font-size:calc(18px * var(--fz,1));color:var(--gold-bright);text-align:center;
  margin-bottom:12px;letter-spacing:.04em;line-height:1.4;}
.announce-b{font-size:calc(14px * var(--fz,1));color:var(--cream);line-height:1.9;margin-bottom:18px;
  max-height:52vh;overflow-y:auto;white-space:normal;}
/* 溫和自動更新提示條(底部,點了才重載) */
.update-bar{position:fixed;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));transform:translateX(-50%);
  z-index:2000;display:flex;align-items:center;gap:12px;padding:9px 10px 9px 17px;border-radius:999px;
  font-family:var(--font-body);font-size:calc(13.5px * var(--fz,1));color:var(--gold-pale);white-space:nowrap;max-width:calc(100vw - 26px);
  background:linear-gradient(135deg,rgba(40,31,94,.98),rgba(18,14,46,.98));border:1px solid var(--gold-deep);
  box-shadow:0 12px 34px -8px rgba(0,0,0,.72);animation:updateBarIn .32s cubic-bezier(.2,1,.4,1) both;}
.update-bar button{flex:none;border:none;cursor:pointer;font-family:var(--font-body);font-weight:700;font-size:calc(13px * var(--fz,1));
  color:#241803;padding:8px 15px;border-radius:999px;letter-spacing:.03em;
  background:linear-gradient(135deg,#f3cd6a,#d9b14a 60%,#c39a30);box-shadow:inset 0 1px 0 rgba(255,255,255,.4);}
.update-bar button:active{transform:scale(.97);}
@keyframes updateBarIn{0%{opacity:0;transform:translate(-50%,14px);}100%{opacity:1;transform:translate(-50%,0);}}


/* ===== FX:星塵美化 — 與主頁「以星為墨」同語言(2026-07)===== */
/* 全域顆粒 + 暗角 */
.fx-vign{position:fixed;inset:0;z-index:96;pointer-events:none;
  background:radial-gradient(ellipse at 50% 30%, transparent 42%, rgba(3,2,12,.42) 100%);}
.fx-grain{position:fixed;inset:0;z-index:97;pointer-events:none;mix-blend-mode:overlay;opacity:.2;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' seed='7'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.22 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");}
/* 進場金塵(一次性 canvas,落完即移除) */
#fx-dust{position:fixed;inset:0;z-index:95;pointer-events:none;}
/* 進場時大廳內容逐段浮現(boot 時掛 .fx-enter,1.6s 後移除) */
.fx-enter > *{animation:fxUp .75s cubic-bezier(.22,.7,.3,1) both;}
.fx-enter > *:nth-child(1){animation-delay:.15s}.fx-enter > *:nth-child(2){animation-delay:.25s}
.fx-enter > *:nth-child(3){animation-delay:.36s}.fx-enter > *:nth-child(4){animation-delay:.47s}
.fx-enter > *:nth-child(5){animation-delay:.58s}.fx-enter > *:nth-child(6){animation-delay:.69s}
.fx-enter > *:nth-child(7){animation-delay:.8s}
@keyframes fxUp{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}}
/* 命師星靈化:金環深描邊 + 呼吸光暈(相位錯開) */
.npc .ring{position:relative;
  box-shadow:0 0 0 3px rgba(6,5,26,.8), 0 6px 16px -4px rgba(0,0,0,.6);
  animation:fxGlow 5.6s ease-in-out infinite;}
.npc:nth-child(2) .ring{animation-delay:-1.4s}
.npc:nth-child(3) .ring{animation-delay:-2.8s}
.npc:nth-child(4) .ring{animation-delay:-4.2s}
.npc:nth-child(5) .ring{animation-delay:-.7s}
.npc:nth-child(6) .ring{animation-delay:-3.5s}
@keyframes fxGlow{
  0%,100%{box-shadow:0 0 0 3px rgba(6,5,26,.8), 0 6px 16px -4px rgba(0,0,0,.6), 0 0 12px rgba(240,200,96,.14);}
  50%{box-shadow:0 0 0 3px rgba(6,5,26,.8), 0 6px 16px -4px rgba(0,0,0,.6), 0 0 26px rgba(240,200,96,.44);}
}
/* 「回覆中」狀態:金點脈動 */
.npc-st{position:absolute;top:10px;right:12px;display:flex;align-items:center;gap:5px;
  font-family:var(--font-body);font-size:calc(9px * var(--fz,1));letter-spacing:.14em;color:var(--gold-pale);}
.npc-st i{width:6px;height:6px;border-radius:50%;background:var(--gold-bright);
  box-shadow:0 0 6px rgba(240,200,96,.9);animation:fxStPulse 1.6s ease-in-out infinite;}
@keyframes fxStPulse{0%,100%{opacity:.5;transform:scale(.85);}50%{opacity:1;transform:scale(1.15);}}
/* 「回覆完成·未讀」金勾徽章:一次性彈入 + 柔和金光呼吸,與回覆中的跳點明確區隔 */
.npc-rdy{position:absolute;top:8px;right:10px;display:flex;align-items:center;justify-content:center;
  width:15px;height:15px;border-radius:50%;font-size:calc(9.5px * var(--fz,1));font-weight:900;line-height:1;color:#241803;
  background:radial-gradient(circle at 34% 28%,#ffe9a8,#e6b73f);border:1px solid rgba(255,240,190,.75);
  box-shadow:0 0 7px rgba(243,205,106,.8),0 1px 3px rgba(0,0,0,.5);
  animation:fxRdyPop .42s cubic-bezier(.2,1.5,.4,1) both, fxRdyGlow 2.4s ease-in-out .42s infinite;}
@keyframes fxRdyPop{0%{opacity:0;transform:scale(.2);}100%{opacity:1;transform:scale(1);}}
@keyframes fxRdyGlow{0%,100%{box-shadow:0 0 6px rgba(243,205,106,.55),0 1px 3px rgba(0,0,0,.5);}
  50%{box-shadow:0 0 13px rgba(243,205,106,1),0 1px 3px rgba(0,0,0,.5);}}
@media (prefers-reduced-motion:reduce){
  .npc .ring,.fx-enter > *,.npc-st i,.npc-rdy{animation:none !important;}
}

/* ===== FX 第二批:聊天氣泡 / 開場逐字 / 報告落款印(2026-07)===== */
/* 大師氣泡:左緣細金線 + 楷書名 */
.msg.bot .bub{box-shadow:inset 2.5px 0 0 rgba(217,177,74,.5);}
.msg .nmlab{font-family:var(--font-brush);font-size:calc(12.5px * var(--fz,1));font-weight:700;color:var(--gold-bright);letter-spacing:.1em;}
/* 開場第一句逐字浮現(濕墨輕量版) */
.fx-chars span{opacity:0;display:inline;animation:fxChar .5s cubic-bezier(.22,.7,.3,1) both;}
.fx-greet{animation:fxChar .8s cubic-bezier(.22,.7,.3,1) both;}
@keyframes fxChar{from{opacity:0;filter:blur(4px);}60%{opacity:1;filter:blur(0);text-shadow:0 0 8px rgba(240,200,96,.5);}to{opacity:1;filter:blur(0);text-shadow:none;}}
/* 報告落款:楷書題款 + 硃砂印(fresh = 生成完成當下蓋章) */
.rep-colophon{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:10px 26px 16px;}
.rep-colophon .words{font-family:var(--font-brush);font-size:calc(12px * var(--fz,1));color:var(--muted);letter-spacing:.22em;text-align:right;line-height:2;}
.rep-colophon .rseal{width:56px;height:56px;flex:none;transform:rotate(-3.5deg);filter:drop-shadow(0 3px 10px rgba(196,61,62,.35));}
.rep-colophon.fresh .rseal{animation:fxStamp .62s cubic-bezier(.34,1.42,.5,1) .4s both;}
@keyframes fxStamp{0%{opacity:0;transform:rotate(-3.5deg) scale(1.9);}62%{opacity:1;transform:rotate(-3.5deg) scale(.94);}100%{opacity:1;transform:rotate(-3.5deg) scale(1);}}
@media (prefers-reduced-motion:reduce){
  .fx-chars span,.fx-greet{animation:none !important;opacity:1;filter:none;}
  .rep-colophon.fresh .rseal{animation:none !important;}
}

/* 今日神諭卡:單線描金框(FX 第二批第①項) */
.oracle.today-card::after{content:'';position:absolute;inset:0;border-radius:16px;pointer-events:none;
  border:1.5px solid var(--gold-bright);}

/* ===== 桌機版排版 v2:大廳儀表板 / 報告編輯版式 / 每日雙欄(2026-07)===== */
@media (min-width:1024px){
  /* —— 大廳(星壇版):置中單欄 —— */
  #s-hall .scroll{max-width:780px;}

  /* —— 報告(school 系列):章名+速讀左 / 內文右 —— */
  #s-report .scroll{max-width:1150px;padding-left:40px;padding-right:40px;box-sizing:border-box;}   /* 報告卡片左右不靠死螢幕邊 */
  #s-report .rsr{padding:6px 24px 30px;}
  #s-report .r2-cover,#s-report .r2-nav,#s-report .r2-charts,#s-report .r2-sec,#s-report .rep-cta{padding-left:24px;padding-right:24px;}
  #s-report .rsr-rh{text-align:left;display:flex;align-items:baseline;gap:18px;padding:22px 0 14px;}
  #s-report .rsr-rh .rsr-rnpc{margin-top:0;}
  #s-report .rsr-hero{text-align:left;padding:4px 0 6px;}
  #s-report .rsr-sec{display:grid;grid-template-columns:250px minmax(0,1fr);gap:6px 40px;padding:26px 0;}
  #s-report .rsr-sec > .rsr-h{grid-column:1;grid-row:1;align-self:start;font-size:calc(16px * var(--fz,1));line-height:1.5;margin:0;flex-wrap:wrap;}
  #s-report .rsr-sec > .rsr-simple{grid-column:1;grid-row:2;margin:10px 0 0;align-self:start;}
  #s-report .rsr-sec > .rsr-body{grid-column:2;grid-row:1 / span 2;font-size:calc(14px * var(--fz,1));line-height:2;min-width:0;}

  /* —— 報告 v2(五域 / 合盤):章頭左黏、內容右 —— */
  #s-report .r2-sec{display:grid;grid-template-columns:250px minmax(0,1fr);gap:0 40px;}
  #s-report .r2-sec > *{grid-column:2;min-width:0;}
  #s-report .r2-sec > .r2-chead{grid-column:1;grid-row:1 / span 40;align-self:start;position:sticky;top:18px;
    flex-direction:column;align-items:flex-start;gap:6px;}

  /* —— 每日:主文左 + 今日一牌右(黏著;鎖定態同版位) —— */
  #s-daily .scroll{max-width:1120px;}
  .daily-body{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:0 32px;align-items:start;}
  .daily-body > *{grid-column:1;min-width:0;}
  .daily-body > .daily-hero{grid-column:1 / -1;}
  .daily-body > .daily-empty{grid-column:1 / -1;}
  .daily-body > .blk-lab:has(+ .tarot-day),
  .daily-body > .blk-lab:has(+ .daily-lock){grid-column:2;grid-row:2;margin-top:20px;}
  .daily-body > .tarot-day,
  .daily-body > .daily-lock{grid-column:2;grid-row:3 / span 30;align-self:start;position:sticky;top:22px;}

  /* 桌機:今日黃曆直接展開(不用點) */
  .hl-fold{cursor:default;}
  .hl-fold .r,.hl-fold .sum{display:none;}
  .hl-fold-body{display:block;}

  /* —— 我的:左身分/選單 + 右本命/報告 —— */
  #s-my .scroll{max-width:1120px;display:grid;grid-template-columns:400px minmax(0,1fr);
    gap:0 30px;align-content:start;}
  #s-my .scroll > *{grid-column:1;min-width:0;}
  #s-my .statusbar{grid-column:1 / -1;}
  #s-my .me-head{grid-row:2;align-self:start;}
  #s-my .me-sec.guest-only{grid-row:3;align-self:start;}
  #s-my .menu{grid-row:4;align-self:start;margin-right:0;}
  /* 右欄跨 60 列:多餘高度攤進空列,左欄選單不會被推走 */
  #s-my .me-sec:has(#my-profiles){grid-column:2;grid-row:2 / span 60;align-self:start;padding-left:0;}
  #s-my .me-sec:has(#my-reports){grid-column:2;grid-row:62;align-self:start;padding-left:0;}

  /* —— 命盤:左盤黏著 + 右分析可捲(對照看盤) —— */
  #s-chart .scroll{max-width:1260px;}
  #chart-tab-body{display:grid;grid-template-columns:minmax(460px,640px) minmax(0,1fr);gap:0 32px;align-items:start;}
  #chart-tab-body > #chart-tab-left{grid-column:1;position:sticky;top:12px;min-width:0;}   /* 整個左欄(命盤+提示)一起黏著 → 捲右側分析時,下方提示不會滑上去蓋到命盤 */
  #chart-tab-chart{min-width:0;}
  #chart-tab-body > .chart-guide{grid-column:2;grid-row:1;margin-top:0;min-width:0;}
  #chart-tab-body > .chart-tab-msg,#chart-tab-body > .bub{grid-column:1 / -1;}

  /* —— 其他分頁寬度 —— */
}

/* ===== 報告分頁 v2:個人命書 × 雙人合盤 雙產品卡(2026-07)===== */
.rep-setup{display:flex;flex-direction:column;gap:20px;text-align:center;}
.rep-prod{position:relative;border-radius:18px;padding:18px 18px 16px;overflow:hidden;
  border:1px solid rgba(217,177,74,.36);
  background:linear-gradient(170deg,rgba(33,27,80,.42),rgba(16,12,40,.5));}
.rep-prod--syn{border-color:rgba(232,164,176,.32);
  background:linear-gradient(170deg,rgba(139,58,110,.16),rgba(16,12,40,.5));}
.rp-head{display:flex;flex-direction:column;gap:2px;margin:2px 0 10px;}
.rp-head b{font-family:var(--font-brush);font-size:calc(21px * var(--fz,1));font-weight:700;color:var(--gold-bright);}
.rep-prod--syn .rp-head b{color:#efb9c8;}
.rp-head span{font-size:calc(10.5px * var(--fz,1));letter-spacing:.22em;color:var(--muted);}
.rep-getbox--syn{border-color:rgba(232,164,176,.4);background:rgba(232,164,176,.05);}
.syn-chaps{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;}
.syn-chap{font-size:calc(12px * var(--fz,1));color:var(--cream);border:1px solid rgba(232,164,176,.3);border-radius:999px;padding:4px 10px;background:rgba(16,12,40,.4);}
.syn-chap i{font-style:normal;color:#efb9c8;margin-right:4px;}
.syn-scoreline{font-size:calc(11px * var(--fz,1));color:var(--gold-pale);margin-top:10px;letter-spacing:.04em;}
.syn-desc{font-size:calc(10.5px * var(--fz,1));color:var(--muted);margin-top:6px;line-height:1.7;}
.rep-prod .rep-syn-row{text-align:left;}
.syn-empty{padding:14px 6px 10px;color:var(--muted);font-size:calc(12.5px * var(--fz,1));line-height:2;}
.rep-prod .note{margin-top:14px;}
@media (min-width:1024px){
  .rep-setup{display:grid;grid-template-columns:1fr 1fr;gap:26px;align-items:start;max-width:1050px;margin:0 auto;}
}

/* 「這本書會讓你獲得」三欄對齊(編號|標題|說明,說明自欄內換行) */
.rep-get{display:grid !important;grid-template-columns:20px max-content minmax(0,1fr);gap:0 9px;align-items:start;text-align:left;}
.rep-get b{white-space:nowrap;}

/* ===== 寶寶取名(免費工具 · 衡文先生,2026-07)===== */
.nm-hall-badge{font-size:calc(10px * var(--fz,1));color:var(--gold-bright);border:1px solid rgba(240,200,96,.55);border-radius:999px;padding:1px 7px;margin-left:6px;}
.nm-card{background:linear-gradient(180deg,rgba(27,21,66,.55),rgba(18,14,44,.72));border:1px solid var(--line);border-radius:16px;padding:20px 18px;margin-bottom:18px;}
.nm-h2{margin:0 0 16px;font-family:var(--font-brush);font-size:calc(16.5px * var(--fz,1));color:var(--gold);letter-spacing:.06em;font-weight:700;}
.nm-hint{font-size:calc(11.5px * var(--fz,1));color:var(--muted-dim);margin-top:7px;line-height:1.7;}
.nm-opt-tag{color:var(--muted-dim);font-size:calc(11px * var(--fz,1));margin-left:4px;font-weight:400;}
.nm-chips{display:flex;flex-wrap:wrap;gap:9px;}
.nm-chip{font-size:calc(12.5px * var(--fz,1));color:var(--gold-pale);border:1px solid var(--gold-deep);border-radius:20px;padding:9px 15px;background:rgba(243,205,106,.05);cursor:pointer;letter-spacing:.02em;}
.nm-chip.on{color:#241803;font-weight:700;border-color:transparent;background:linear-gradient(135deg,#f3cd6a,#d9b14a 60%,#b8902f);box-shadow:0 3px 10px -3px rgba(217,177,74,.5);}
.nm-summary-line{font-size:calc(14px * var(--fz,1));line-height:1.9;color:var(--cream);margin:0 0 14px;}
.nm-note-chip{display:inline-flex;align-items:center;gap:7px;font-size:calc(11.5px * var(--fz,1));color:var(--muted);border:1px solid var(--line);border-radius:20px;padding:7px 14px;background:rgba(155,144,196,.06);}
.nm-note-chip::before{content:'※';color:var(--gold-deep);}
.nm-namelist .nm-h2{margin-bottom:4px;}
.nm-sub{font-size:calc(12px * var(--fz,1));color:var(--muted-dim);margin:0 0 16px;}
.nm-name-card{background:linear-gradient(180deg,rgba(27,21,66,.6),rgba(16,12,38,.76));border:1px solid var(--line);border-radius:14px;padding:18px 18px 16px;margin-bottom:14px;position:relative;overflow:hidden;}
.nm-name-card:last-child{margin-bottom:0;}
.nm-name-card::before{content:'';position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,transparent,var(--gold-deep),var(--gold-bright),var(--gold-deep),transparent);opacity:.55;}
.nm-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:11px;}
.nm-nm{font-family:var(--font-brush);font-size:calc(23px * var(--fz,1));font-weight:700;color:var(--gold-pale);letter-spacing:.1em;}
.nm-badge{font-size:calc(11px * var(--fz,1));font-weight:700;letter-spacing:.08em;border-radius:20px;padding:5px 13px;flex:none;}
.nm-badge.ji{color:#241803;background:linear-gradient(135deg,#f3cd6a,#d9b14a);}
.nm-badge.banji{color:var(--gold-pale);border:1px solid var(--gold-deep);background:rgba(217,177,74,.08);}
/* 父母參考卡:與寶寶候選卡明顯區隔——無金頂線、偏暗、掛「參考」章與角色晶片 */
.nm-name-card.nm-ref{border-color:var(--line-soft);background:linear-gradient(180deg,rgba(20,15,46,.5),rgba(14,10,34,.7));}
.nm-name-card.nm-ref::before{display:none;}
.nm-name-card.nm-ref .nm-nm{font-size:calc(20px * var(--fz,1));color:var(--muted);}
.nm-role{font-size:calc(11px * var(--fz,1));color:var(--azure);border:1px solid rgba(111,143,214,.5);border-radius:6px;padding:2px 8px;margin-right:9px;vertical-align:middle;letter-spacing:.08em;}
.nm-badge.ref{color:var(--muted);background:none;border:1px solid var(--line);}
.nm-chars{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px;}
.nm-char{font-size:calc(12px * var(--fz,1));color:var(--muted);background:var(--deep);border:1px solid var(--line-soft);border-radius:8px;padding:4px 10px;letter-spacing:.02em;}
.nm-char b{color:var(--gold-pale);font-weight:600;margin-right:5px;font-size:calc(15px * var(--fz,1));font-family:var(--font-brush);}
.nm-pills{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:13px;}
.nm-pill{font-size:calc(11.5px * var(--fz,1));border-radius:20px;padding:5px 13px;letter-spacing:.02em;}
.nm-pill.jade{color:var(--jade);border:1px solid rgba(111,178,149,.55);background:rgba(111,178,149,.09);}
.nm-pill.soft{color:var(--muted);border:1px solid var(--line);background:rgba(155,144,196,.06);}
.nm-say{display:flex;gap:11px;align-items:flex-start;border-top:1px solid var(--line);padding-top:13px;}
.nm-say-av{width:32px;height:32px;border-radius:50%;flex:none;padding:1.5px;background:conic-gradient(from 140deg,var(--gold-deep),var(--gold-bright),var(--gold-deep),#5a4a18,var(--gold));}
.nm-say-av img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block;border:1.5px solid var(--void);}
.nm-say p{margin:0;font-size:calc(12.5px * var(--fz,1));line-height:1.8;color:var(--cream);flex:1;}
/* 候選名卡三層 section(韻音韻意象 / 格筆畫數理五格 / 補八字補益) */
.nm-name-card .sec{border-top:1px solid var(--line-soft);padding-top:12px;margin-top:12px;}
.nm-name-card .sec .nm-say{border-top:none;padding-top:0;}
.nm-name-card .sec-h{display:flex;align-items:center;gap:8px;margin-bottom:9px;}
.nm-name-card .sec-ic{width:22px;height:22px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:calc(12px * var(--fz,1));font-weight:700;color:var(--void);flex:none;}
.nm-name-card .sec-ic.a{background:linear-gradient(135deg,var(--rose),#c76d8e);}
.nm-name-card .sec-ic.b{background:linear-gradient(135deg,var(--gold-bright),var(--gold-deep));}
.nm-name-card .sec-ic.c{background:linear-gradient(135deg,var(--jade),#3f8f70);}
.nm-name-card .sec-t{font-size:calc(13px * var(--fz,1));font-weight:700;color:var(--gold);letter-spacing:.06em;}
.nm-name-card .sec-sub{font-size:calc(11px * var(--fz,1));color:var(--muted-dim);margin-left:auto;}
.nm-name-card .wuge{display:flex;gap:7px;flex-wrap:wrap;}
.nm-name-card .wg{flex:1;min-width:56px;text-align:center;background:var(--deep);border:1px solid var(--line-soft);border-radius:9px;padding:7px 4px;}
.nm-name-card .wg .lab{font-size:calc(10px * var(--fz,1));color:var(--muted-dim);letter-spacing:.1em;}
.nm-name-card .wg .num{font-size:calc(16px * var(--fz,1));color:var(--cream);font-weight:600;line-height:1.5;}
.nm-name-card .wg .g{font-size:calc(9.5px * var(--fz,1));font-weight:700;}
.nm-name-card .wg .g.ji{color:var(--gold-bright);}
.nm-name-card .wg .g.half{color:var(--muted);}
.nm-name-card .wg .g.xiong{color:var(--vermillion);}
.nm-name-card .wg.hot{border-color:rgba(217,177,74,.5);background:rgba(217,177,74,.06);}
.nm-name-card .sancai{font-size:calc(11.5px * var(--fz,1));color:var(--muted);margin-top:8px;}
.nm-name-card .sancai b{color:var(--jade);}
.nm-name-card .nm-zong{margin-top:11px;padding-top:11px;border-top:1px dashed var(--line-soft);}
.nm-name-card .nm-zong b{color:var(--gold-pale);}
.nm-name-card .nm-zong-sub{color:var(--muted-dim);font-size:calc(11px * var(--fz,1));}
.nm-name-card .bazi{font-size:calc(12.5px * var(--fz,1));line-height:1.8;color:var(--cream);}
.nm-name-card .bazi .need{color:var(--jade);font-weight:600;}
.nm-name-card .bazi .hit{color:var(--gold-pale);}
.nm-loading{display:flex;align-items:center;gap:11px;}
.nm-loading p{margin:0;font-size:calc(12.5px * var(--fz,1));line-height:1.7;color:var(--cream);flex:1;}
.nm-loading .bub.typing{flex:none;}
.nm-ask-btn{background:none;border:none;color:var(--gold);font-size:calc(12px * var(--fz,1));letter-spacing:.03em;cursor:pointer;padding:9px 0 0;text-decoration:underline;text-decoration-color:rgba(217,177,74,.4);text-underline-offset:3px;}
/* 對話內取名卡 + 候選名清單(衡文先生對話) */
.nm-chatcard,.nm-chatnames{margin:6px 0 4px;}
.nm-chatnames .nm-summary-line{margin:0 0 12px;}
.nm-chatnames .nm-name-card:last-child{margin-bottom:0;}
.nm-more-btn{display:block;margin:2px auto 16px;padding:9px 22px;border-radius:22px;background:linear-gradient(135deg,rgba(217,177,74,.16),rgba(217,177,74,.06));border:1px solid var(--gold-deep);color:var(--gold-pale);font-family:var(--font-brush);font-size:calc(15px * var(--fz,1));letter-spacing:.08em;cursor:pointer;}
.nm-more-btn:hover{background:rgba(217,177,74,.24);}
.nm-export{margin:14px 0 4px;text-align:center;}
.exp-ic{width:14px;height:14px;vertical-align:-2px;margin-right:5px;}   /* 匯出/分享 icon 對齊文字 */
.rep-get .d{color:var(--cream);opacity:.88;line-height:1.7;font-size:calc(12.5px * var(--fz,1));}

/* ===== 大廳字卡字級統一(2026-07-04)=====
   四級制:標題 楷書17 亮金 / 主文 楷書14.5 米白 / 資料 明體12 米白 / 輔助 明體11 淡金 */
#s-hall .oracle .lab{font-family:var(--font-brush);font-size:calc(17px * var(--fz,1));font-weight:700;letter-spacing:.04em;color:var(--gold-bright);margin-bottom:8px;display:flex;align-items:center;}
#s-hall .oracle .lab > span:not(.forum-badge):not(.nm-hall-badge){font-family:var(--font-body);font-size:calc(10.5px * var(--fz,1));font-weight:400;color:var(--muted);letter-spacing:.1em;margin-left:7px;}
#s-hall .forum-entry .lab{font-size:calc(17px * var(--fz,1));margin-bottom:0;}
#s-hall .forum-badge,#s-hall .nm-hall-badge{font-family:var(--font-body);font-size:calc(10px * var(--fz,1));font-weight:400;letter-spacing:.08em;}
#s-hall .oracle .line{font-family:var(--font-brush);font-size:calc(14.5px * var(--fz,1));font-weight:400;line-height:1.75;color:var(--cream);}
#s-hall .today-lab{font-size:calc(17px * var(--fz,1));letter-spacing:.04em;}
#s-hall .today-date{font-size:calc(11px * var(--fz,1));}
#s-hall .today-jieqi{font-family:var(--font-body);font-size:calc(11px * var(--fz,1));letter-spacing:.05em;}
#s-hall .today-stars{font-size:calc(12px * var(--fz,1));}
#s-hall .today-yj{font-size:calc(12px * var(--fz,1));}
#s-hall .today-luck{font-size:calc(11px * var(--fz,1));}
#s-hall .today-tip{font-size:calc(14.5px * var(--fz,1));line-height:1.75;}
#s-hall .npc .nm{font-size:calc(17px * var(--fz,1));}

/* ===== 星壇改版(方案C):大廳弧列/神諭羅盤/膠囊列 + 每日一牌主角 + 命盤抽屜(2026-07-05)===== */
/* 大師星壇弧列 */
.c-altwrap{position:relative;}
.c-altar{position:relative;height:188px;margin:2px auto 4px;width:min(100%,430px);pointer-events:none;}
.c-altar .c-alt-m{pointer-events:auto;}   /* 星壇整層放行點擊、只留大師可點 */
/* 周天星軌:只留上方星盤刻度弧,向下溶散;兩顆星火沿弧慢行(取代舊裝飾大圓) */
.c-ring{position:absolute;left:50%;top:118%;width:520px;height:520px;transform:translate(-50%,-50%);
  pointer-events:none;border-radius:50%;
  -webkit-mask:linear-gradient(180deg,#000 0,#000 42%,transparent 60%);
  mask:linear-gradient(180deg,#000 0,#000 42%,transparent 60%);}
.c-ring::before{content:'';position:absolute;inset:0;border-radius:50%;
  border:1px solid rgba(240,200,96,.16);
  background:repeating-conic-gradient(from 0deg, rgba(240,200,96,.28) 0deg .45deg, transparent .45deg 6deg),
             repeating-conic-gradient(from 3deg, rgba(240,200,96,.1) 0deg .3deg, transparent .3deg 2deg);
  -webkit-mask:radial-gradient(closest-side, transparent 96.2%, #000 96.8%);
  mask:radial-gradient(closest-side, transparent 96.2%, #000 96.8%);}
.c-ring i{position:absolute;inset:0;animation:crSpin 46s linear infinite;}
.c-ring i:nth-child(2){animation-duration:74s;animation-direction:reverse;animation-delay:-31s;}
.c-ring i::before{content:'';position:absolute;left:calc(50% - 2.5px);top:-2.5px;width:5px;height:5px;border-radius:50%;
  background:radial-gradient(circle,#fdf3d0 0%,rgba(240,200,96,.95) 45%,transparent 72%);
  box-shadow:0 0 9px 2px rgba(240,200,96,.55), 0 0 22px 6px rgba(240,200,96,.18);}
@keyframes crSpin{to{transform:rotate(360deg);}}
/* 十二地支周天:沿弧排列,當前時辰亮金並轉到弧頂 */
.c-ring .glyphs{position:absolute;inset:0;}
.c-ring .glyphs b{position:absolute;left:50%;top:50%;font-weight:400;
  font-family:var(--font-brush);font-size:calc(13px * var(--fz,1));color:rgba(240,200,96,.42);
  text-shadow:0 0 6px rgba(240,200,96,.18);
  transform:translate(-50%,-50%) rotate(var(--a)) translateY(-243px) rotate(calc(-1 * var(--a)));}
.c-ring .glyphs b.now{color:#fdf3d0;font-size:calc(15px * var(--fz,1));
  text-shadow:0 0 10px rgba(240,200,96,.9),0 0 22px rgba(240,200,96,.45);}
.c-alt-m{position:absolute;text-align:center;width:56px;cursor:pointer;
  animation:altFloat 8s ease-in-out infinite;
  transition:left 3s cubic-bezier(.45,.05,.35,1), top 3s cubic-bezier(.45,.05,.35,1);}
.c-alt-m:nth-child(2){animation-duration:9.4s;animation-delay:-2.2s;}
.c-alt-m:nth-child(3){animation-duration:7.2s;animation-delay:-4.6s;}
.c-alt-m:nth-child(4){animation-duration:8.8s;animation-delay:-1.3s;}
.c-alt-m:nth-child(5){animation-duration:7.8s;animation-delay:-5.5s;}
.c-alt-m:nth-child(6){animation-duration:9s;animation-delay:-3.1s;}
.c-alt-m:nth-child(7){animation-duration:8.3s;animation-delay:-6.4s;}
.c-alt-m.drift{z-index:5;}
.c-altar .c-alt-m.saying{z-index:30;}   /* 說話中的座位提到最上層,泡泡永遠在最前、不被其他大師頭像蓋住 */
@keyframes altFloat{0%,100%{transform:translate(0,0);}25%{transform:translate(2px,-6px);}55%{transform:translate(-2px,-2px);}80%{transform:translate(1px,-7px);}}
.c-alt-m:active img{transform:scale(.94);}
.c-alt-m img{width:48px;height:48px;transition:transform .15s;border-radius:50%;object-fit:cover;border:1.5px solid var(--gold-deep);
  box-shadow:0 0 0 2.5px rgba(6,5,26,.85), 0 0 0 3.5px rgba(138,106,42,.5), 0 0 16px rgba(240,200,96,.28);
  animation:fxGlow 5.6s ease-in-out infinite;}
.c-alt-m:nth-child(2) img{animation-delay:-1.4s}.c-alt-m:nth-child(3) img{animation-delay:-2.8s}
.c-alt-m:nth-child(4) img{animation-delay:-4.2s}.c-alt-m:nth-child(5) img{animation-delay:-.7s}
.c-alt-m:nth-child(6) img{animation-delay:-3.5s}.c-alt-m:nth-child(7) img{animation-delay:-2.1s}
.c-alt-m b{display:block;font-family:var(--font-brush);font-size:calc(11.5px * var(--fz,1));color:var(--cream);margin-top:2px;font-weight:700;text-shadow:0 1px 4px rgba(0,0,0,.9);}
.c-alt-m small{display:block;font-family:var(--font-body);font-size:calc(8.5px * var(--fz,1));color:var(--muted);letter-spacing:.06em;margin-top:1px;text-shadow:0 1px 3px rgba(0,0,0,.9);}
/* 回覆中:白色橢圓 + 三個跑動的點(打字指示),取代原本的跳動金點 */
.c-alt-m .npc-st{position:absolute;top:-7px;right:0;display:inline-flex;align-items:center;gap:2.6px;
  padding:3px 5.5px;border-radius:9px;background:rgba(247,242,228,.96);
  box-shadow:0 2px 7px rgba(0,0,0,.5),0 0 0 1px rgba(217,177,74,.45);}
.c-alt-m .npc-st i{display:block;width:3.6px;height:3.6px;border-radius:50%;background:#3a2c66;
  box-shadow:none;animation:npcType 1.05s ease-in-out infinite;}
.c-alt-m .npc-st i:nth-child(2){animation-delay:.16s;}
.c-alt-m .npc-st i:nth-child(3){animation-delay:.32s;}
.c-alt-m .npc-rdy{top:-5px;right:2px;width:16px;height:16px;font-size:calc(10px * var(--fz,1));}
@keyframes npcType{0%,80%,100%{opacity:.32;transform:translateY(0);}40%{opacity:1;transform:translateY(-2.6px);}}
/* 神諭羅盤 */
.c-orb{width:min(78vw,300px);aspect-ratio:1;height:auto;margin:4px auto 16px;border-radius:50%;position:relative;
  background:radial-gradient(circle at 50% 32%,rgba(60,44,110,.75),rgba(16,12,40,.92) 74%);
  border:1px solid rgba(240,200,96,.45);
  box-shadow:inset 0 0 0 5px rgba(6,5,26,.85), inset 0 0 0 6px rgba(138,106,42,.5), 0 0 34px rgba(240,200,96,.14);
  display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 26px;}
.c-orb::before{content:'';position:absolute;inset:13px;border-radius:50%;border:1px dashed rgba(240,200,96,.28);pointer-events:none;}
.c-orb .k{font-family:var(--font-body);font-size:calc(9.5px * var(--fz,1));letter-spacing:.4em;text-indent:.4em;color:var(--gold);margin-bottom:5px;}
.c-orb .t{font-family:var(--font-brush);font-size:calc(14px * var(--fz,1));font-weight:700;color:var(--gold-bright);margin-bottom:6px;line-height:1.5;max-width:196px;}
.c-orb .today-stars{display:grid;grid-template-columns:auto auto;gap:3px 13px;justify-content:center;
  font-family:var(--font-body);font-size:calc(11px * var(--fz,1));color:var(--muted);line-height:1.7;}
.c-orb .today-stars span{margin:0;white-space:nowrap;text-align:left;}
.c-orb .today-stars b{color:var(--gold-pale);font-weight:400;letter-spacing:0;}
.c-orb .yj{font-family:var(--font-brush);font-size:calc(12px * var(--fz,1));margin-top:5px;line-height:1.7;max-width:198px;margin-inline:auto;}
.c-orb .yj .y{color:#8fd3b0;display:block;} .c-orb .yj .j{color:#e0908e;display:block;}
.c-orb .yj em{font-style:normal;}
.c-orb .lk{font-family:var(--font-body);font-size:calc(9.5px * var(--fz,1));color:var(--muted);margin-top:6px;letter-spacing:.04em;max-width:190px;}
/* 膠囊功能列 */
.c-caps{display:flex;flex-direction:column;gap:9px;margin:0 auto 8px;width:min(100%,430px);padding:0 20px;}
.c-cap{display:flex;align-items:center;gap:11px;border-radius:18px;padding:8px 12px 8px 8px;cursor:pointer;
  border:1px solid rgba(240,200,96,.3);background:linear-gradient(90deg,rgba(33,27,80,.6),rgba(16,12,40,.55));transition:.2s;}
.c-cap:active{transform:scale(.98);}
/* 訂閱功能(眾師會診):金色高階質感,和免費工具區隔 */
.c-cap--pro{border-color:var(--gold-bright);background:linear-gradient(90deg,rgba(240,200,96,.16),rgba(160,125,44,.08));box-shadow:0 0 22px rgba(240,200,96,.16),inset 0 0 0 1px rgba(240,200,96,.12);}
.c-cap--pro .go{color:var(--gold-bright);}
.pro-badge{display:inline-block;margin-left:7px;font-family:var(--font-body);font-size:calc(10px * var(--fz,1));font-weight:700;letter-spacing:.08em;color:#241803;background:linear-gradient(135deg,#f8d98a,#d9b14a);border-radius:6px;padding:1px 7px;vertical-align:middle;}
.c-cap .ic{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;overflow:hidden;
  font-family:var(--font-brush);font-size:calc(17px * var(--fz,1));font-weight:700;color:var(--gold-bright);
  border:1px solid rgba(240,200,96,.4);background:radial-gradient(circle at 50% 35%,rgba(243,205,106,.2),transparent 70%);}
.c-cap .ic img{width:100%;height:100%;border-radius:50%;object-fit:cover;}
.c-cap .cap-bd{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;text-align:left;}
.c-cap .cap-bd b{font-family:var(--font-brush);font-size:calc(15px * var(--fz,1));font-weight:700;color:var(--gold-bright);
  display:flex;align-items:baseline;gap:5px;white-space:nowrap;overflow:hidden;min-width:0;}
.c-cap .cap-bd b i{font-style:normal;font-family:var(--font-body);font-size:calc(10px * var(--fz,1));font-weight:400;color:var(--muted);
  letter-spacing:.04em;overflow:hidden;text-overflow:ellipsis;min-width:0;}
.c-cap .cap-bd > span{font-family:var(--font-body);font-size:calc(11px * var(--fz,1));color:var(--muted);letter-spacing:.03em;
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.c-cap .horo-switch{color:var(--gold-pale);cursor:pointer;flex:none;}
.c-cap .go{margin-left:auto;flex:none;color:rgba(240,200,96,.55);font-size:calc(12px * var(--fz,1));}
/* 每日:一牌主角 + 黃曆膠囊 */
#s-daily .tarot-day{border:none;background:none;padding:4px 0 0;position:relative;}
#s-daily .tarot-day::before{content:'';position:absolute;left:50%;top:130px;width:300px;height:300px;transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;
  background:radial-gradient(closest-side,rgba(240,200,96,.14),transparent 72%);}
#s-daily .tcard{width:190px;height:302px;box-shadow:0 16px 44px rgba(0,0,0,.6), 0 0 30px rgba(240,200,96,.18);}
.c-almrow{display:flex;justify-content:center;gap:8px;margin:14px 2px 2px;flex-wrap:wrap;}
.c-pill{border:1px solid rgba(240,200,96,.26);border-radius:999px;padding:5px 13px;background:rgba(20,16,46,.55);
  font-family:var(--font-brush);font-size:calc(12px * var(--fz,1));color:var(--cream);}
.c-pill em{font-style:normal;color:var(--gold);font-family:var(--font-body);font-size:calc(9.5px * var(--fz,1));letter-spacing:.16em;margin-right:5px;}
/* 命盤:手機抽屜式分析 */
@media (max-width:1023px){
  #s-chart #chart-tab-body{margin:0 10px;}
  #s-chart .chart-guide{margin:10px 12px 22px;position:relative;z-index:2;border-radius:16px;
    padding:15px 18px 14px;border:1px solid rgba(240,200,96,.4);
    background:linear-gradient(180deg,rgba(26,20,58,.97),rgba(14,11,36,.97));box-shadow:0 8px 24px rgba(0,0,0,.4);}
  #s-chart .chart-guide::before{content:'';display:block;width:38px;height:3.5px;border-radius:2px;background:rgba(240,200,96,.4);margin:0 auto 10px;}
}
@media (prefers-reduced-motion:reduce){ .c-alt-m,.c-alt-m img,.c-alt-m .npc-st i,.c-ring i{animation:none !important;transition:none !important;} }

/* ===== 星壇對話提示:常駐提示行 + 大師招呼氣泡(2026-07-05)===== */
.c-altar-hint{text-align:center;font-family:var(--font-body);font-size:calc(10px * var(--fz,1));letter-spacing:.3em;text-indent:.3em;
  color:var(--muted);margin:2px 0 8px;animation:hintpulse 6s ease-in-out infinite;}
.c-alt-m .say{position:absolute;bottom:calc(100% + 7px);left:50%;margin-left:0;transform:translateX(-50%);white-space:nowrap;
  font-family:var(--font-brush);font-size:calc(11.5px * var(--fz,1));color:var(--gold-pale);
  background:linear-gradient(160deg,rgba(38,30,86,.97),rgba(20,16,46,.97));
  border:1px solid rgba(240,200,96,.45);border-radius:10px;padding:4px 10px;pointer-events:none;z-index:6;
  box-shadow:0 6px 16px rgba(0,0,0,.5);animation:sayin .35s ease both;opacity:1;transition:opacity .45s;}
.c-alt-m .say::after{content:'';position:absolute;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(240,200,96,.45);}
.c-alt-m .say.edge-l{left:0;transform:none;} .c-alt-m .say.edge-l::after{left:24px;}
.c-alt-m .say.edge-r{left:auto;right:0;transform:none;} .c-alt-m .say.edge-r::after{left:auto;right:19px;}
.c-alt-m .say.bye{opacity:0;}
@keyframes sayin{from{opacity:0;margin-bottom:-4px;}to{opacity:1;margin-bottom:0;}}
@media (prefers-reduced-motion:reduce){ .c-altar-hint,.c-alt-m .say{animation:none !important;} }

/* 星壇:桌機放大弧列(避免七位擠在中間) */
@media (min-width:1024px){
  .c-altar{width:600px;height:208px;}
  .c-altwrap{padding-top:44px;}   /* 弧頂當前時辰字需在視窗內 */
  .c-ring{width:760px;height:760px;top:296px;
    -webkit-mask:linear-gradient(180deg,#000 0,#000 38%,transparent 53%);
    mask:linear-gradient(180deg,#000 0,#000 38%,transparent 53%);}
  .c-ring .glyphs b{transform:translate(-50%,-50%) rotate(var(--a)) translateY(-355px) rotate(calc(-1 * var(--a)));}
  .c-alt-m img{width:56px;height:56px;}
}

/* ===== 免責同意 modal + 對話底部常駐小字(legal / disclaimer) ===== */
.disc-ov{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;
  padding:22px;background:rgba(3,2,12,.72);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);}
.disc-ov.show{display:flex;animation:discfade .3s ease;}
@keyframes discfade{from{opacity:0;}to{opacity:1;}}
.disc-card{width:100%;max-width:390px;max-height:calc(100dvh - 40px);overflow-y:auto;
  background:linear-gradient(180deg,#1a1440,#100c2e);border:1px solid var(--gold-deep);border-radius:20px;
  box-shadow:0 24px 60px rgba(0,0,0,.6),0 0 0 1px rgba(217,177,74,.15) inset;padding:24px 22px 20px;}
.disc-card::-webkit-scrollbar{width:0;}
.disc-seal{width:46px;height:46px;margin:0 auto 12px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-family:var(--font-brush);font-size:calc(22px * var(--fz,1));color:var(--void);font-weight:700;
  background:conic-gradient(from 130deg,var(--gold-deep),var(--gold-bright),var(--gold),var(--gold-deep));}
.disc-h{font-family:var(--font-brush);font-size:calc(20px * var(--fz,1));color:var(--gold-pale);text-align:center;letter-spacing:.06em;margin:0 0 4px;}
.disc-sub{text-align:center;color:var(--muted);font-size:calc(12px * var(--fz,1));margin:0 0 16px;}
.disc-li{display:flex;gap:9px;font-size:calc(12.5px * var(--fz,1));line-height:1.72;color:var(--cream);margin-bottom:11px;}
.disc-li .d{color:var(--gold);flex:none;margin-top:1px;}
.disc-li b{color:var(--gold-pale);font-weight:600;}
.disc-li .warn{color:var(--rose);}
.disc-agree{display:flex;align-items:center;gap:9px;margin:16px 0 14px;font-size:calc(12.5px * var(--fz,1));color:var(--muted);cursor:pointer;user-select:none;}
.disc-agree .box{width:19px;height:19px;border-radius:5px;border:1.5px solid var(--gold);flex:none;display:flex;align-items:center;justify-content:center;
  color:var(--gold-bright);font-size:calc(12px * var(--fz,1));background:rgba(217,177,74,.12);transition:.15s;}
.disc-agree.on .box{background:var(--gold);border-color:var(--gold-bright);color:#241803;}
.disc-agree.on .box::after{content:"✓";}
.disc-btn{width:100%;padding:13px;border-radius:13px;border:none;cursor:pointer;
  font-family:var(--font-brush);font-size:calc(16px * var(--fz,1));font-weight:600;letter-spacing:.1em;
  background:linear-gradient(135deg,var(--gold),var(--gold-bright));color:#241803;transition:.2s;}
.disc-btn:disabled{opacity:.4;cursor:not-allowed;filter:grayscale(.35);}
.disc-btn:not(:disabled):active{transform:translateY(1px);}
.disc-mini{text-align:center;color:var(--muted-dim);font-size:calc(10.5px * var(--fz,1));margin-top:11px;line-height:1.6;}
.disc-mini a{color:var(--gold-pale);text-decoration:underline;}

.cf-disclaimer-foot{display:flex;align-items:center;gap:7px;flex:none;
  padding:7px 16px calc(7px + env(safe-area-inset-bottom));
  background:rgba(20,15,46,.6);border-top:1px solid var(--line-soft);
  font-size:calc(10.5px * var(--fz,1));color:var(--muted-dim);line-height:1.5;}
.cf-disclaimer-foot .i{flex:none;color:var(--gold-deep);}
/* 免責 footer 已移除(改到右上「命理原理」)→ 輸入列自行吃底部安全區 */
#s-chat .inbar{padding-bottom:calc(10px + env(safe-area-inset-bottom));}

/* ===== 命理原理 modal(右上入口點開;沿用 .syn-pick-ov 背幕)===== */
.prin-card{width:calc(100% - 40px);max-width:400px;position:relative;
  background:linear-gradient(180deg,#1a1440,#100c2e);border:1px solid var(--gold-deep);border-radius:20px;
  box-shadow:0 24px 60px rgba(0,0,0,.6),0 0 0 1px rgba(217,177,74,.15) inset;
  padding:24px 22px 18px;max-height:calc(100dvh - 44px);overflow-y:auto;}
.prin-card::-webkit-scrollbar{width:0;}
.prin-seal{width:44px;height:44px;margin:0 auto 10px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-family:var(--font-brush);font-size:calc(21px * var(--fz,1));color:var(--void);font-weight:700;
  background:conic-gradient(from 130deg,var(--gold-deep),var(--gold-bright),var(--gold),var(--gold-deep));}
.prin-h{font-family:var(--font-brush);font-size:calc(20px * var(--fz,1));color:var(--gold-pale);text-align:center;letter-spacing:.04em;margin:0 0 3px;}
.prin-sub{text-align:center;font-family:var(--font-body);font-size:calc(11px * var(--fz,1));letter-spacing:.22em;color:var(--gold);margin-bottom:15px;}
.prin-body{font-family:var(--font-body);font-size:calc(13.5px * var(--fz,1));line-height:1.95;color:var(--cream);}
.prin-close{width:100%;margin-top:18px;padding:12px;border-radius:12px;border:none;cursor:pointer;
  font-family:var(--font-brush);font-size:calc(15px * var(--fz,1));font-weight:600;letter-spacing:.08em;
  background:linear-gradient(135deg,var(--gold),var(--gold-bright));color:#241803;}

/* ===== 桌機大螢幕整體縮放(2026-07-07):螢幕越寬全站等比放大——字體/頭像/羅盤/按鈕同步,
   版面比例不變;<1280 與手機完全不受影響。zoom 會連 dvh 一起放大,故高度除回縮放係數才貼合視窗 ===== */
@media (min-width:1280px){
  :root{--dz:1.12;}
  .app{zoom:var(--dz);height:calc(var(--app-h,100dvh) / var(--dz));}
  .app[data-tab] .tabbar{height:calc(var(--app-h,100dvh) / var(--dz));}
  /* .app 外掛在 body 的固定 overlay(免責/合盤挑人/週運詳情/搶鮮開通/toast)跟著縮放 */
  .disc-ov,.syn-pick-ov,.zask-ov,.app-toast,.ob-ov{zoom:var(--dz);}
  .disc-card{max-height:calc(100dvh / var(--dz) - 40px);}
  .horo-detail{max-height:calc(80vh / var(--dz));}
}
@media (min-width:1600px){ :root{--dz:1.22;} }
@media (min-width:1920px){ :root{--dz:1.32;} }
@media (min-width:2400px){ :root{--dz:1.45;} }

/* 桌機聊天基礎字級再升一級(≥1024 全部,含未達縮放門檻的 1024–1279 小筆電) */
@media (min-width:1024px){
  .msg{font-size:calc(14.5px * var(--fz,1));line-height:1.78;}
  .inbar .box{font-size:calc(14px * var(--fz,1));}
  .chat-side .cs-q{font-size:calc(14px * var(--fz,1));line-height:1.55;}
  #s-chat .zfu-q{font-size:calc(13.5px * var(--fz,1));}
  #s-chat .zfu-h{font-size:calc(12px * var(--fz,1));}
  .chips .chip{font-size:calc(12.5px * var(--fz,1));}
}

/* ===== 首次進入 · 新手三步導覽疊層(cf_onboard_v1;接在免責 modal 之後跳一次)===== */
.ob-ov{position:fixed;inset:0;z-index:210;display:none;align-items:center;justify-content:center;
  padding:22px;background:rgba(3,2,12,.74);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);}
.ob-ov.show{display:flex;animation:discfade .3s ease;}
.ob-card{width:100%;max-width:380px;position:relative;
  background:linear-gradient(180deg,#1a1440,#100c2e);border:1px solid var(--gold-deep);border-radius:20px;
  box-shadow:0 24px 60px rgba(0,0,0,.6),0 0 0 1px rgba(217,177,74,.15) inset;padding:26px 22px 20px;}
.ob-seal{width:48px;height:48px;margin:0 auto 12px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-family:var(--font-brush);font-size:calc(23px * var(--fz,1));color:var(--void);font-weight:700;
  background:conic-gradient(from 130deg,var(--gold-deep),var(--gold-bright),var(--gold),var(--gold-deep));
  box-shadow:0 0 22px rgba(240,200,96,.35);}
.ob-h{font-family:var(--font-brush);font-size:calc(22px * var(--fz,1));color:var(--gold-pale);text-align:center;letter-spacing:.06em;margin:0 0 4px;}
.ob-sub{text-align:center;color:var(--muted);font-size:calc(12.5px * var(--fz,1));margin:0 0 20px;}
.ob-step{display:flex;align-items:flex-start;gap:13px;margin-bottom:15px;}
.ob-n{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;
  font-family:var(--font-brush);font-size:calc(16px * var(--fz,1));font-weight:700;color:var(--gold-bright);
  border:1px solid rgba(240,200,96,.5);background:radial-gradient(circle at 50% 35%,rgba(243,205,106,.16),transparent 70%);}
.ob-tx b{display:block;font-family:var(--font-brush);font-size:calc(16px * var(--fz,1));color:var(--cream);font-weight:700;margin-bottom:2px;}
.ob-tx small{display:block;font-family:var(--font-body);font-size:calc(12px * var(--fz,1));color:var(--muted);line-height:1.6;}
.ob-conn{width:1px;height:12px;background:linear-gradient(180deg,rgba(240,200,96,.4),transparent);margin:-11px 0 -1px 14px;}
.ob-btn{width:100%;padding:14px;border-radius:13px;border:none;cursor:pointer;margin-top:8px;
  font-family:var(--font-brush);font-size:calc(16px * var(--fz,1));font-weight:600;letter-spacing:.08em;
  background:linear-gradient(135deg,var(--gold),var(--gold-bright));color:#241803;
  box-shadow:0 8px 22px -6px rgba(217,177,74,.6),inset 0 1px 0 rgba(255,255,255,.45);}
.ob-btn:active{transform:translateY(1px);filter:brightness(1.05);}
.ob-skip{text-align:center;color:var(--muted-dim);font-size:calc(12px * var(--fz,1));margin-top:12px;cursor:pointer;text-decoration:underline;text-underline-offset:3px;}

/* ===== 寶寶取名 · 姓氏欄窄框 + 只填姓提醒 / 日期欄手機不外凸(2026-07)===== */
#nm-surname,#nmc-surname{max-width:150px;}   /* 窄框:視覺暗示只填姓、非全名 */
.nm-surname-hint{font-size:calc(11.5px * var(--fz,1));color:var(--muted-dim);margin-top:7px;line-height:1.6;transition:color .2s;}
.nm-surname-hint.warn{color:var(--rose);}
.inp.surname-warn{border-color:var(--vermillion);}
/* 原生 date/time 欄:iOS 會用「內容固有寬度」無視 width:100% → 右邊外凸。關掉原生外觀讓它吃 CSS 寬度,並夾住內部值不外溢 */
.inp[type=date],.inp[type=time]{-webkit-appearance:none;appearance:none;width:100%;min-width:0;max-width:100%;overflow:hidden;}
.inp[type=date]::-webkit-date-and-time-value,.inp[type=time]::-webkit-date-and-time-value{margin:0;min-width:0;text-align:center;}
.inp[type=date]::-webkit-calendar-picker-indicator,.inp[type=time]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;}
.inp[type=date]::-webkit-clear-button,.inp[type=date]::-webkit-inner-spin-button,.inp[type=time]::-webkit-clear-button,.inp[type=time]::-webkit-inner-spin-button{display:none;-webkit-appearance:none;}

/* ===== 對話內取名表單:收折開關移到底部 chips 列「填寶寶資料」(2026-07)===== */
.nm-chatform.collapsed{display:none;}   /* 收折 = 整張表單隱藏,由底部 chips「填寶寶資料」再展開 */
/* 名字卡「問衡文先生」:報告款(頭像+問衡文先生)靠右 */
.nm-ask-row{display:flex;margin-top:12px;}

/* ===== PWA 安裝提示鈕(瀏覽器可安裝時浮於分頁列上方,原生 App 不顯示)===== */
.pwa-install{position:fixed;left:50%;transform:translateX(-50%);z-index:70;
  bottom:calc(env(safe-area-inset-bottom,0px) + 74px);
  display:flex;align-items:center;gap:11px;width:calc(100% - 26px);max-width:400px;
  background:linear-gradient(180deg,#1a1440,#100c2e);border:1px solid var(--gold-deep);border-radius:16px;
  padding:11px 12px;box-shadow:0 16px 44px rgba(0,0,0,.55),0 0 0 1px rgba(217,177,74,.14) inset;
  animation:pwaRise .28s ease both;}
@keyframes pwaRise{from{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%,0)}}
.pwa-install img{width:40px;height:40px;border-radius:10px;flex:none}
.pwa-install .pi-tx{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.32}
.pwa-install .pi-tx b{font-size:calc(14px * var(--fz,1));color:var(--gold-pale);font-weight:700}
.pwa-install .pi-tx span{font-size:calc(11px * var(--fz,1));color:var(--muted)}
.pwa-install .pi-go{flex:none;background:linear-gradient(135deg,#f3cd6a,#d9b14a);color:#241803;font-weight:700;
  font-size:calc(13px * var(--fz,1));border:none;border-radius:20px;padding:8px 15px;cursor:pointer}
.pwa-install .pi-x{flex:none;background:none;border:none;color:var(--muted-dim);font-size:calc(20px * var(--fz,1));cursor:pointer;padding:0 2px;line-height:1}
@media(min-width:1024px){.pwa-install{bottom:22px}}

/* ===== 新手毛筆導覽(#ob-coach)：手繪圈標記真實功能 ===== */
.ob-brush{position:fixed;inset:0;z-index:95;overflow:hidden;font-family:'LXGW WenKai TC',cursive;
  -webkit-text-size-adjust:100%;text-size-adjust:100%;   /* APK WebView 不自動放大字(和 Chrome/PWA 一致)*/
  background:radial-gradient(120% 78% at 50% 26%,rgba(6,5,20,.5),rgba(4,3,14,.9))}
.ob-brush .bk{position:absolute;inset:0;width:100%;height:100%;filter:drop-shadow(0 1px 5px rgba(226,196,110,.4))}
#obc-draw path{stroke-dasharray:100;animation:obcDraw .72s cubic-bezier(.5,.1,.3,1) both}
@keyframes obcDraw{from{stroke-dashoffset:100}to{stroke-dashoffset:0}}
.bk-title{position:absolute;top:calc(env(safe-area-inset-top,0px) + 14px);left:0;right:0;text-align:center;font-size:calc(31px * var(--fz,1));font-weight:700;color:#f6e6b6;letter-spacing:.08em;text-shadow:0 2px 12px rgba(0,0,0,.8)}
.bk-title i{font-style:normal;color:#e7c877}
.bk-note{position:absolute;font-weight:700;font-size:calc(27px * var(--fz,1));line-height:1.4;color:#fbeec2;text-shadow:0 2px 12px rgba(0,0,0,.92);animation:obcNote .4s ease both}
@keyframes obcNote{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
.bk-note .t2{display:block;white-space:normal}   /* 長問句(如會診)換行,不外溢 */
.bk-note span{display:block;font-weight:400;font-size:calc(21px * var(--fz,1));color:#f0dfae;margin-top:5px;line-height:1.4;white-space:normal}
.bk-note.with-list{left:0;right:0;width:auto;display:flex;justify-content:center;background:none;border:none;box-shadow:none;padding:0;transform:none;animation:none;text-shadow:0 2px 10px rgba(0,0,0,.95),0 0 4px rgba(0,0,0,.85)}
.bk-note.with-list .bk-cardinner{padding:8px 14px 14px;animation:obcNote .4s ease both}   /* 用 flex 置中大卡片(不靠 transform,WebView 也穩)*/
@keyframes obcCard{from{opacity:0;transform:translate(-50%,9px)}to{opacity:1;transform:translate(-50%,0)}}
.bk-note .ttl{display:block;font-size:calc(25px * var(--fz,1));color:var(--gold-bright);margin-bottom:14px;white-space:nowrap}
.bk-mlist{display:flex;flex-direction:column;gap:13px}
.bk-mlist .mrow{display:flex;align-items:center;gap:9px;line-height:1;white-space:nowrap}
.bk-mlist b{font-weight:700;font-size:calc(26px * var(--fz,1));color:var(--cream);min-width:104px;flex:none}
.bk-mlist em{font-style:normal;font-weight:700;font-size:calc(17px * var(--fz,1));letter-spacing:.03em;flex:none;border-radius:8px;padding:4px 9px;color:color-mix(in srgb, var(--c) 82%, #fff);background:color-mix(in srgb, var(--c) 22%, #0f0b26);border:1px solid color-mix(in srgb, var(--c) 48%, transparent)}
.bk-mlist i{font-style:normal;font-weight:600;font-size:calc(23px * var(--fz,1));flex:none;color:color-mix(in srgb, var(--c) 80%, #fff)}
.bk-bottom{position:absolute;left:0;right:0;bottom:calc(env(safe-area-inset-bottom,0px) + 26px);display:flex;flex-direction:column;align-items:center;gap:13px;z-index:2}
.bk-dots{display:flex;gap:9px}
.bk-dots i{width:8px;height:8px;border-radius:50%;background:rgba(246,230,182,.28);transition:.3s;cursor:pointer}
.bk-dots i.on{background:#f0d9a0;transform:scale(1.25);box-shadow:0 0 8px rgba(240,217,160,.6)}
.bk-go{font-family:'LXGW WenKai TC',cursive;font-weight:700;font-size:calc(17px * var(--fz,1));letter-spacing:.06em;color:#241803;background:linear-gradient(135deg,#f3cd6a,#d9b14a 60%,#b8902f);border:none;border-radius:26px;padding:12px 30px;box-shadow:0 12px 30px -8px rgba(217,177,74,.6);cursor:pointer}
.bk-skip{position:absolute;top:calc(env(safe-area-inset-top,0px) + 15px);right:15px;z-index:3;font-family:'Noto Serif TC',serif;font-size:calc(13px * var(--fz,1));color:#bcb1e0;cursor:pointer;padding:5px 9px}
.bk-dontshow{position:absolute;right:16px;bottom:calc(env(safe-area-inset-bottom,0px) + 102px);z-index:3;display:flex;align-items:center;gap:7px;font-family:'Noto Serif TC',serif;font-size:calc(13px * var(--fz,1));color:#bcb1e0;cursor:pointer;user-select:none}
.bk-dontshow input{width:16px;height:16px;accent-color:#f0d9a0;cursor:pointer;margin:0}
#npc-grid.coach-freeze .c-alt-m{animation:none !important;transform:none !important}   /* 導覽期間頭像歸位到座位(移除浮動/入場 transform),圈才畫得準、不會跳 */

/* ===== 平板(600–1023px)=====
   原本只有 min-width:1024px 一個斷點,平板夾在中間 → 吃手機版的 max-width:440px 窄欄,
   左右留大黑邊、下方一大片空白(2026-07-23 使用者實測回報)。
   沿用桌面那套既有機制:整體 zoom + 高度除回縮放係數,版面比例與手機完全一致,只是放大。
   max-width 用 min(100%,640px):≤800px 的平板滿版、更寬則置中不過寬。 */
/* min-height 是必要條件,不是保險:手機橫向(844×390、926×428)寬度同樣落在 600–1023,
   若只看寬度就會被放大 1.25 倍,可用高度只剩 312px。解鎖旋轉後這個情況才碰得到,
   所以兩者必須一起改。平板直立 ≥1000px 高、手機橫向 ≤430px 高,600px 切得很乾淨。 */
/* 縮放係數與內容欄寬要一起看,否則字會「相對變小」:
   第一版用 zoom 1.25 + max-width 640,欄寬從 440 拉到 800(+82%)但字只大 25%,
   「欄寬/字級」從手機的 44 掉到 64,一行塞的字多五成 → 使用者回報「字變小了」。
   改成維持手機的 440px 版面寬、純粹整體放大 1.6 倍:欄寬/字級回到 44,
   與手機完全同比例,只是整張放大。 */
/* 下界取 700px 而非 600:Android 手機把「顯示大小」調到最小時,CSS 寬度可能衝到 600 出頭,
   600 這個界線碰得到手機。平板最小的 iPad mini 直立是 744,取 700 讓兩者不可能重疊。
   放大機制:zoom(--tz)等比放大整個 .app(盒子/環/間距/字都跟著,排版不亂)。
   但 iOS Safari 的 zoom 撐版面卻**不放大字**(實測)→ iOS 另由 --fz 補字:
     · Android:--tz=k(zoom 放大一切含字)、--fz 未設=1 → 字 calc(Npx*1)×zoom = Npx*k
     · iOS:    --tz=k(zoom 放大盒子,不動字)、--fz=k → 字 calc(Npx*k),zoom 不再放大 = Npx*k
   兩平台視覺字級都 Npx*k、盒子都 zoom k → 等比、不亂、iOS 字也大。--tz/--fz 由 setTabletScale() 算。 */
@media (min-width:700px) and (max-width:1023px) and (min-height:600px){
  .app{max-width:440px;width:100%;zoom:var(--tz,1.6);
       height:calc(var(--app-h,100dvh) / var(--tz,1.6));}
  .disc-ov,.syn-pick-ov,.zask-ov,.app-toast,.ob-ov{zoom:var(--tz,1.6);}
  .disc-card{max-height:calc(100dvh / var(--tz,1.6) - 40px);}
  .horo-detail{max-height:calc(80vh / var(--tz,1.6));}
}

/* ===== iOS 獨立視窗(html.ios-pwa,由 app.js 偵測後掛上)=====
   底部黑帶的真兇是 index.html 的 viewport-fit=cover(見該處註解):拿掉後視窗改為
   47~844、tabbar 自然貼螢幕底,先前的 fixed/去內距/不透明底 等 hack 全數撤除。
   只留這條:狀態列後面那 47px 由 iOS 以 html/body 底色塗滿(black-translucent),
   用 --void 讓它與 App 頂部連續,不再是黑條。 */
html.ios-pwa, html.ios-pwa body{background:var(--void);}

/* 導覽層 #ob-coach 的字級已隨全站 calc(Npx*--fz) 自動放大(fz 方案下不需硬值),
   只留一個「下次不顯示」勾選框大小(它是 width/height 不是 font-size,吃不到 fz)。 */
@media (min-width:700px) and (max-width:1279px){
  .bk-dontshow input{width:22px;height:22px}
}

/* ===== 平板橫向(1024–1279 且觸控)=====
   iPad Pro 11 橫放 1194px 落在桌面斷點,但桌面縮放梯(--dz)從 1280 才開始
   → 11 吋螢幕跑「無縮放的桌面版」,字特別小(2026-07-24 使用者實測)。
   pointer:coarse 只抓觸控裝置——桌機把視窗縮到 1024–1279 不受影響。
   內容照抄 ≥1280 那段的縮放機制,只是係數 1.3。 */
/* 平板橫向(1024–1279 觸控):同直立段 —— zoom 放大盒子,iOS 另加 --fz 補字。 */
@media (min-width:1024px) and (max-width:1279px) and (pointer:coarse){
  .app{max-width:440px;width:100%;margin:0 auto;zoom:var(--tz,1.3);height:calc(var(--app-h,100dvh) / var(--tz,1.3));}
  .app[data-tab] .tabbar{height:calc(var(--app-h,100dvh) / var(--tz,1.3));}
  .disc-ov,.syn-pick-ov,.zask-ov,.app-toast,.ob-ov{zoom:var(--tz,1.3);}
  .disc-card{max-height:calc(100dvh / var(--tz,1.3) - 40px);}
  .horo-detail{max-height:calc(80vh / var(--tz,1.3));}
}
