:root{--gold:#e8c26a;--gold2:#b8862e;--ink:#f7ecd4;--bg:rgba(16,12,34,.78);--kai:"DFKai-SB","BiauKai","KaiTi","STKaiti","Noto Serif TC","PMingLiU",serif}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%;overflow:hidden;background:#0b1026;color:var(--ink);font-family:"PingFang TC","Noto Sans TC","Microsoft JhengHei","Heiti TC",sans-serif;-webkit-font-smoothing:antialiased;user-select:none;-webkit-user-select:none}
#world,#world canvas{position:fixed;inset:0;display:block;touch-action:none}
#hud{position:fixed;inset:0;pointer-events:none;padding:max(12px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left))}
#hud button{pointer-events:auto;font:inherit;color:inherit;border:0;cursor:pointer}
.top{display:flex;align-items:baseline;gap:.8em;max-width:calc(100% - 15em);flex-wrap:wrap;text-shadow:0 1px 4px #000}
.top b{font-family:var(--kai);font-size:1.6em;color:var(--gold)}
.btns{position:absolute;top:max(12px,env(safe-area-inset-top));right:max(14px,env(safe-area-inset-right));display:flex;gap:.5em}
.chip{padding:.4em .9em;border-radius:2em;border:1px solid var(--gold2)!important;background:var(--bg)}
.btn{position:absolute;left:50%;bottom:22%;transform:translateX(-50%);padding:.7em 1.8em;border-radius:.6em;background:linear-gradient(#f3d27e,#c08a2e);color:#3a1d08!important;font-weight:bold;font-size:1.15em;box-shadow:0 .15em 0 #7a5214,0 0 1.2em #ffb34a88}
#hint{position:absolute;left:0;right:0;bottom:max(34px,calc(env(safe-area-inset-bottom) + 22px));text-align:center;font-size:.8em;opacity:.85;text-shadow:0 1px 3px #000}
.credit{position:absolute;left:0;right:0;bottom:max(10px,env(safe-area-inset-bottom));text-align:center;font-size:.62em;opacity:.6;text-shadow:0 1px 2px #000}
#joy{position:fixed;width:120px;height:120px;margin:-60px 0 0 -60px;border-radius:50%;border:2px solid #fff6;background:#0003;pointer-events:none}
#joyKnob{position:absolute;left:35px;top:35px;width:50px;height:50px;border-radius:50%;background:#fff8}
#toast{position:fixed;left:50%;top:30%;transform:translate(-50%,-50%);max-width:86%;padding:.6em 1.1em;border-radius:.6em;background:var(--bg);border:1px solid var(--gold2);text-align:center;opacity:0;transition:opacity .3s;pointer-events:none}
#toast.on{opacity:1}
#loading{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6em;background:radial-gradient(circle at 50% 40%,#1c1f4a,#05060f)}
#loading h1{font-family:var(--kai);font-size:3em;color:var(--gold)}
[hidden]{display:none!important}
#mailBadge{display:inline-block;min-width:1.4em;margin-left:.3em;padding:0 .3em;border-radius:1em;background:#d8342a;color:#fff;font-style:normal;font-size:.8em;text-align:center}
#act2{bottom:30%}
#wmodal{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));background:#000a}
.wcard{width:min(460px,100%);max-height:88vh;overflow:auto;display:flex;flex-direction:column;gap:.7em;padding:1.2em;border-radius:.9em;background:linear-gradient(#211a3cf4,#140f26f4);border:1px solid var(--gold);color:var(--ink);line-height:1.65}
.wcard h3{font-family:var(--kai);color:var(--gold);font-size:1.35em;text-align:center}
.wcard .small{font-size:.82em;opacity:.8}
.wcard textarea,.wcard input{width:100%;font:inherit;padding:.6em .7em;border-radius:.5em;border:1px solid var(--gold2);background:#0007;color:var(--ink);resize:none}
.wcard textarea:focus,.wcard input:focus,.wcard button:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.cnt{display:flex;justify-content:space-between;font-size:.8em}.cnt span:first-child{color:#ff9a8a}
.row{display:flex;gap:.6em;justify-content:center;flex-wrap:wrap;align-items:center}
.wbtn{padding:.55em 1.3em;border-radius:.5em;border:0;font:inherit;font-weight:bold;cursor:pointer;background:linear-gradient(#f3d27e,#c08a2e);color:#3a1d08}
.wbtn.ghost{background:transparent;color:var(--gold);border:1px solid var(--gold2)}
.link{background:none;border:0;color:#cbb;font:inherit;font-size:.8em;text-decoration:underline;cursor:pointer}
.tabs{display:flex;gap:.4em;justify-content:center}.tabs button{font:inherit;padding:.3em 1.1em;border-radius:2em;border:1px solid var(--gold2);background:#0006;color:var(--ink);cursor:pointer}.tabs button.on{background:var(--gold);color:#3a1d08}
.list{display:flex;flex-direction:column;gap:.45em}
.mail{display:flex;justify-content:space-between;gap:1em;padding:.7em .9em;border-radius:.5em;border:1px solid #fff2;background:#0005;color:var(--ink);font:inherit;cursor:pointer;text-align:left}
.mail.new{border-color:var(--gold)}.mail.new b{color:var(--gold)}.mail span{font-size:.8em;opacity:.75}
.paper{position:relative;padding:3.2em 2.6em 4.6em;border-radius:.4em;color:#3b2614;background:#f6ead0 url(../assets/ui/paper.jpg) center/100% 100%;box-shadow:inset 0 0 2em #b98a4a55;font-family:var(--kai)}
.paper .mine{font-size:.85em;color:#7a5a3a;border-bottom:1px dashed #b9965f;padding-bottom:.6em;margin-bottom:.8em}
.paper .body{font-size:1.08em;line-height:1.9}
.paper .sign{text-align:right;margin-top:1em;color:#8a2a1a}
.paper .fixed{margin-top:1em;font-size:.78em;color:#6a5236;border-top:1px solid #c9a46a;padding-top:.6em}
.presets{display:flex;flex-wrap:wrap;gap:.4em;justify-content:center}.presets button{font:inherit;font-size:.85em;padding:.3em .8em;border-radius:2em;border:1px solid var(--gold2);background:#0006;color:var(--ink);cursor:pointer}.presets button.on{background:#c0302a;border-color:#ffd27a}
.cardview .tag{margin:0 auto;width:8.5em;height:25.5em;padding:7.2em 1.9em 9.6em;background:url(../assets/ui/card.png) center/100% 100% no-repeat;color:#7a1e14;font-family:var(--kai);font-size:1.05em;writing-mode:vertical-rl;display:flex;align-items:center;justify-content:center;text-align:center;overflow:hidden}
#jiao{position:fixed;inset:0;z-index:15;background:#1a0806}
#jiao canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none}
.jtop{position:absolute;top:max(12px,env(safe-area-inset-top));left:max(14px,env(safe-area-inset-left));right:max(14px,env(safe-area-inset-right));display:flex;align-items:center;gap:.8em;text-shadow:0 1px 4px #000;pointer-events:none}
.jtop b{font-family:var(--kai);font-size:1.5em;color:var(--gold)}.jtop span{flex:1;font-size:.85em}
.jtop button{pointer-events:auto;font:inherit;color:var(--gold);background:var(--bg);border:1px solid var(--gold2);border-radius:2em;padding:.35em 1em;cursor:pointer}
.jmsg{position:absolute;left:50%;top:22%;transform:translateX(-50%);width:min(88%,420px);text-align:center;pointer-events:none;text-shadow:0 2px 6px #000}
.jmsg p{font-family:var(--kai);font-size:1.6em;color:#ffe6a8}.jmsg small{display:block;margin-top:.4em;font-size:.95em;color:#fff}
.jnote{position:absolute;left:0;right:0;bottom:max(10px,env(safe-area-inset-bottom));text-align:center;font-size:.7em;opacity:.7}
.wcard .slip{margin:0 auto;width:86%;padding:.9em .6em;border-radius:.3em;background:linear-gradient(#fff6dc,#ead7a6);color:#3a1d08;border:.2em solid #b23a2a;display:flex;flex-direction:column;align-items:center;gap:.3em}
.wcard .slip.x{border-color:#4a4a6a}.wcard .slip .no{font-family:var(--kai);font-size:1.15em;font-weight:700}.wcard .slip .lv{font-family:var(--kai);font-size:2em;font-weight:900;color:#a8261a}
.wcard .poem{writing-mode:vertical-rl;font-family:var(--kai);font-size:1.55em;font-weight:700;color:#2a1204;line-height:1.9;letter-spacing:.12em;height:8.6em}.wcard .poem span{display:block}
.wcard .warn{padding:.6em;border-radius:.5em;background:#0006;border:1px dashed var(--gold2);font-size:.75em}
#wmodal.dark{background:#000d}
.zen{display:flex;flex-direction:column;align-items:center;gap:1em;color:var(--ink)}
.zen .ring{width:9em;height:9em;border-radius:50%;border:.15em solid var(--gold);box-shadow:0 0 2.5em #ffcf6a88,inset 0 0 2em #ffcf6a55;transform:scale(.55);transition:transform 4s ease-in-out}
.zen .ring.in{transform:scale(1)}#zt{font-family:var(--kai);font-size:1.6em;color:var(--gold);margin-top:-6.5em;height:5em}
.q{font-family:var(--kai);font-size:1.15em;color:#fbe7b0;text-align:center}

/* 收件夾 */
.wcard.mailbox{gap:.8em}
.mhead{position:relative;display:flex;justify-content:center;align-items:center}
.mhead .x{position:absolute;right:-.2em;top:50%;transform:translateY(-50%);width:2em;height:2em;border-radius:50%;border:1px solid var(--gold2);background:#0006;color:var(--gold);font:inherit;cursor:pointer}
.tabs.seg{display:grid;grid-template-columns:1fr 1fr;gap:0;padding:.2em;border-radius:2em;border:1px solid var(--gold2);background:#0006}
.tabs.seg button{border:0;border-radius:2em;padding:.45em .5em;background:transparent;display:flex;justify-content:center;align-items:center;gap:.35em}
.tabs.seg button.on{background:var(--gold);color:#3a1d08;font-weight:bold}
.tabs.seg i,.tabs.seg em{font-style:normal;font-size:.72em;min-width:1.6em;padding:0 .4em;border-radius:1em;background:#c0302a;color:#fff;line-height:1.6}
.tabs.seg em{background:#0004;color:inherit}
.list.box{height:min(16em,42vh);overflow:auto;padding:.5em;border-radius:.6em;background:#0004;border:1px solid #fff1}
.list.box .mail{align-items:center;flex-shrink:0}
.list.box .mail b{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.list.box .mail span{flex-shrink:0}
.empty{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.3em;text-align:center;opacity:.85}
.empty b{font-family:var(--kai);color:var(--gold);font-size:1.1em;font-weight:normal}.empty span{font-size:.82em}
.wbtn.full{width:100%;padding:.7em}
.mfoot{text-align:center;margin-top:-.3em}.mfoot .link{opacity:.7}
/* 行囊（底部抽屜） */
#wmodal.sheet{align-items:flex-end;padding:0;background:linear-gradient(transparent 40%,#0008)}
.wcard.bag{width:min(520px,100%);max-height:58vh;border-radius:1.1em 1.1em 0 0;border-bottom:0;gap:.65em;padding:1em 1em max(1em,env(safe-area-inset-bottom))}
.wallet{display:flex;justify-content:center;gap:1.4em;font-size:.85em;opacity:.9}.wallet b{color:var(--gold);margin-left:.2em}
.bag .grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.5em}
.bag .cell{position:relative;aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:.15em;padding:.35em .2em;border-radius:.6em;border:1px solid #fff2;background:#0005;color:var(--ink);font:inherit;cursor:pointer;overflow:hidden}
.bag .cell.on{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset,0 0 .8em #f3d27e44}
.bag .cell.empty b{opacity:.5}.bag .cell.blank{aspect-ratio:1;border-radius:.6em;border:1px dashed #fff1}
.bag .cell .ic{flex:1;width:100%;display:flex;align-items:center;justify-content:center;min-height:0}
.bag .cell img{max-width:78%;max-height:100%;object-fit:contain;border-radius:.3em}
.bag .cell b{font-size:.78em;font-weight:normal;white-space:nowrap}
.bag .cell i{position:absolute;top:.3em;right:.35em;font-style:normal;font-size:.68em;padding:0 .4em;border-radius:1em;background:#0008;color:var(--gold)}
.bag .cell .slot{position:absolute;top:.3em;left:.4em;font-style:normal;font-size:.66em;opacity:.7}
.bag .cell u{position:absolute;top:.3em;right:.35em;text-decoration:none;font-size:.62em;padding:0 .4em;border-radius:1em;background:var(--gold);color:#3a1d08}
.bag .detail{min-height:6.2em;padding:.6em .8em;border-radius:.6em;background:#0004;border:1px solid #fff1;font-size:.88em}
.bag .detail b{color:var(--gold);font-family:var(--kai);font-size:1.1em}.bag .detail p{margin:.2em 0}
.row.left{justify-content:flex-start;margin-top:.3em}.wbtn.sm{padding:.35em .9em;font-size:.85em}
.incense .jmsg{top:10%}.incense .jmsg p{font-size:1.4em}
.incense .jmsg{background:#1a0806b0;border-radius:1em;padding:.5em 1em;width:auto;max-width:88%;backdrop-filter:blur(2px)}
/* 行囊・造型（全螢幕） */
body.dressing #bg{filter:brightness(.32) saturate(.7) blur(3px)}body.dressing #fg{opacity:0}body.dressing #hud .top,body.dressing #hud .btns,body.dressing #acts,body.dressing #hint,body.dressing .credit{visibility:hidden}
#wmodal.dress-wrap{padding:0;background:none;align-items:stretch;justify-content:stretch}
#wmodal.busy .dress{cursor:progress}#wmodal.busy .dright,#wmodal.busy .dleft{opacity:.6;pointer-events:none}
.dress{position:relative;width:100%;height:100%;display:grid;grid-template-columns:minmax(78px,22%) 1fr minmax(132px,36%);grid-template-rows:auto 1fr auto auto;color:var(--ink);padding:max(10px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));gap:8px}
.dress .dtop{grid-column:1/4;display:flex;align-items:center;gap:.8em}.dress .dtop h3{font-family:var(--kai);color:var(--gold);font-size:1.3em;margin:0}
.dress .dtop .tabs.seg{flex:1;max-width:220px;margin:0 auto}.dress .dtop .x{width:2.2em;height:2.2em;border-radius:50%;border:1px solid var(--gold2);background:#0006;color:var(--gold);font:inherit;cursor:pointer}
.dress .dleft,.dress .dright{overflow:auto;display:flex;flex-direction:column;gap:6px;min-height:0}
.dress .dcenter{position:relative;touch-action:none;cursor:grab;background:radial-gradient(ellipse 60% 8% at 50% 96%,#f3d27e55,transparent 70%),radial-gradient(ellipse 55% 45% at 50% 55%,#f3d27e14,transparent 70%)}
.dress .dcenter .hint{position:absolute;left:0;right:0;bottom:0;text-align:center;font-size:.7em;opacity:.55}
.dress .who{display:flex;gap:3px;padding:3px;border-radius:2em;border:1px solid var(--gold2);background:#0006}.dress .who button{flex:1;border:0;border-radius:2em;padding:.3em 0;background:none;color:var(--ink);font:inherit;font-size:.8em;cursor:pointer}.dress .who button.on{background:var(--gold);color:#3a1d08;font-weight:bold}
.dress .slot{position:relative;display:flex;flex-direction:column;align-items:center;gap:1px;padding:5px 4px 6px;border-radius:.6em;border:1px solid #fff2;background:#0008;color:var(--ink);font:inherit;cursor:pointer}
.dress .slot.on{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset,0 0 .8em #f3d27e44}
.dress .slot .ic,.dress .itm .ic{width:100%;aspect-ratio:1.25;display:flex;align-items:center;justify-content:center;border-radius:.4em;background:radial-gradient(#ffffff14,#0000)}
.dress .slot img,.dress .itm img,.dress .cell img{max-width:92%;max-height:92%;object-fit:contain}
.dress .slot em{font-style:normal;font-size:.68em;opacity:.7;position:absolute;top:4px;left:6px}.dress .slot b{font-size:.72em;font-weight:normal;color:var(--gold);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.dress h4{margin:.1em 0 0;font-family:var(--kai);color:var(--gold);font-weight:normal;font-size:1em}
.dress .items{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.dress .itm{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;padding:5px 3px 6px;border-radius:.6em;border:1px solid #fff2;background:#0008;color:var(--ink);font:inherit;cursor:pointer}
.dress .itm.on{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset}.dress .itm:disabled{opacity:.4}
.dress .itm b{font-size:.72em;font-weight:normal;line-height:1.3;text-align:center}.dress .itm i{font-style:normal;font-size:.62em;padding:0 .5em;border-radius:1em;background:#0008;color:var(--gold)}.dress .itm.on i{background:var(--gold);color:#3a1d08}
.dress .tints{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.dress .tints button{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 0;border:1px solid #fff2;border-radius:.5em;background:#0008;color:var(--ink);font:inherit;cursor:pointer}
.dress .tints span{width:1.4em;height:1.4em;border-radius:50%;background:var(--c);border:2px solid #0006}.dress .tints small{font-size:.62em}.dress .tints button.on{border-color:var(--gold)}
.dress .dbot{grid-column:1/4;display:flex;align-items:center;gap:.6em;justify-content:flex-end;font-size:.82em}.dress .dbot>span{margin-right:auto;opacity:.85}.dress .dbot b{color:var(--gold)}
.dress.items .dleft{display:none}.dress.items{grid-template-columns:0 1fr minmax(170px,48%)}
.dress .grid2{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.dress .cell{position:relative;aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:2px;padding:5px 3px;border-radius:.6em;border:1px solid #fff2;background:#0008;color:var(--ink);font:inherit;cursor:pointer}
.dress .cell .ic{flex:1;width:100%;display:flex;align-items:center;justify-content:center;min-height:0}.dress .cell b{font-size:.74em;font-weight:normal}.dress .cell i{position:absolute;top:4px;right:6px;font-style:normal;font-size:.66em;color:var(--gold)}.dress .cell.on{border-color:var(--gold)}
.dress .detail{padding:.5em .7em;border-radius:.6em;background:#0008;border:1px solid #fff1;font-size:.8em}.dress .detail b{color:var(--gold);font-family:var(--kai);font-size:1.1em}.dress .detail p{margin:.2em 0}
/* 三跪九叩手勢層 */
#bowpad{position:fixed;inset:0;z-index:11;touch-action:none;user-select:none}
#bowpad .bp-top{position:absolute;top:max(10px,env(safe-area-inset-top));left:12px;right:12px;display:flex;align-items:center;gap:.6em}
#bowpad .bp-top b{font-family:var(--kai);color:var(--gold);font-size:1.2em}#bowpad .bp-top span{flex:1;font-size:.85em;opacity:.85}
#bowpad .bp-top button{padding:.3em .9em;border-radius:2em;border:1px solid var(--gold2);background:#0008;color:var(--ink);font:inherit}
#bowpad .bp-msg{position:absolute;left:50%;top:12%;transform:translateX(-50%);width:min(88%,420px);text-align:center;padding:.5em 1em;border-radius:1em;background:#1a0806a8;pointer-events:none}
#bowpad .bp-msg p{font-family:var(--kai);font-size:1.4em;color:#ffe6a8;margin:0}#bowpad .bp-msg small{display:block;margin-top:.2em;font-size:.85em}
#bowpad .bp-lamps{position:absolute;left:0;right:0;bottom:16%;display:flex;justify-content:center;gap:1.2em;pointer-events:none}
#bowpad .bp-lamps i{width:1.1em;height:1.1em;border-radius:50%;border:2px solid var(--gold2);background:#0008}#bowpad .bp-lamps i.on{background:radial-gradient(#fff3c4,#f3b44a);box-shadow:0 0 1em #f3c46a}
#bowpad .bp-arrow{position:absolute;left:50%;top:40%;width:3em;height:7em;transform:translateX(-50%);pointer-events:none;opacity:0}
#bowpad .bp-arrow.down,#bowpad .bp-arrow.up{opacity:.7;background:linear-gradient(transparent,#ffe6a8aa);clip-path:polygon(35% 0,65% 0,65% 70%,100% 70%,50% 100%,0 70%,35% 70%);animation:bpd 1.4s infinite}
#bowpad .bp-arrow.up{transform:translateX(-50%) rotate(180deg);animation-name:bpu}
@keyframes bpd{0%{margin-top:-1em;opacity:0}40%{opacity:.75}100%{margin-top:1.5em;opacity:0}}@keyframes bpu{0%{margin-top:1.5em;opacity:0}40%{opacity:.75}100%{margin-top:-1em;opacity:0}}
body.bowing #hud .top,body.bowing #hud .btns,body.bowing #hint,body.bowing #acts{visibility:hidden}
/* 打坐・心境之旅 */
.tabs.seg.three{grid-template-columns:1fr 1fr 1fr}.small.center{text-align:center}
#wmodal .zprev{height:7.5em;border-radius:.6em;background-size:cover;background-position:center;border:1px solid var(--gold2);box-shadow:inset 0 0 1.5em #0008}
#zenx{position:fixed;inset:0;z-index:25;overflow:hidden;background:#05040a;color:#fff;user-select:none;touch-action:none}
#zenx .zbg{position:absolute;inset:-4%;background-size:cover;background-position:center;animation:zpush 120s linear forwards,zin 4s ease}
@keyframes zpush{to{transform:scale(1.15)}}@keyframes zin{from{opacity:0}to{opacity:1}}
#zenx .zline{position:absolute;left:8%;right:8%;top:22%;text-align:center;font-family:var(--kai);font-size:1.35em;line-height:1.7;text-shadow:0 2px 10px #000a;opacity:0;transition:opacity 1.6s}#zenx .zline.on{opacity:1}
#zenx .zcount{position:absolute;left:0;right:0;top:40%;text-align:center;font-family:var(--kai);font-size:2.4em;color:#ffe6a8;text-shadow:0 2px 12px #000a}
#zenx .zbreath{position:absolute;left:50%;bottom:12%;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;width:7em;height:7em}
#zenx .ring{position:absolute;inset:0;border-radius:50%;border:2px solid #ffe6a8aa;box-shadow:0 0 2em #ffd98a66,inset 0 0 1.5em #ffd98a44;transform:scale(.55);transition:transform 4s ease-in-out}#zenx .ring.in{transform:scale(1)}
#zenx .zbreath span{font-family:var(--kai);font-size:1.05em;color:#ffe6a8;text-shadow:0 1px 6px #000}
#zenx .ztop{position:absolute;top:max(12px,env(safe-area-inset-top));left:14px;right:14px;display:flex;justify-content:space-between;align-items:center;font-size:.85em;opacity:.8}
#zenx .ztop button{padding:.3em 1em;border-radius:2em;border:1px solid #fff6;background:#0006;color:#fff;font:inherit}
#zenx .zrip{position:absolute;left:50%;top:45%;width:10px;height:10px;margin:-5px;border-radius:50%;border:2px solid #ffd98a;opacity:0}#zenx .zrip.go{animation:zrip 4s ease-out}
@keyframes zrip{0%{opacity:.9;transform:scale(1)}100%{opacity:0;transform:scale(90)}}
.zcard .icard{padding:1em;border-radius:.8em;background:linear-gradient(#fff6dc,#ead7a6);color:#3a1d08;border:2px solid #c99a4a;text-align:center}
.zcard .icard .q{font-family:var(--kai);font-size:1.2em;line-height:1.7;margin:0 0 .6em}.zcard .icard .act{font-size:.9em;margin:0}.zcard .icard .act b{display:block;font-size:.8em;color:#9a5a1a}
.zcard .icard .q{color:#3a1d08;opacity:1}
/* 擲杯：說明加底色、聖杯結束畫面 */
#jiao .jmsg{background:#1a0806b0;border-radius:1em;padding:.5em 1em;width:auto;max-width:88%;top:11%}#jiao .jmsg:empty{display:none}
#jiao .jmsg p{font-size:1.45em;margin:0}#jiao .jmsg small{font-size:.9em}
#jiao .jwin{position:absolute;left:0;right:0;top:15%;text-align:center;pointer-events:none;opacity:0;transform:scale(.8);transition:opacity .6s,transform .8s cubic-bezier(.2,1.4,.4,1)}
#jiao .jwin.on{opacity:1;transform:scale(1)}
#jiao .jwin b{display:block;font-family:var(--kai);font-size:3.2em;color:#fff3c4;text-shadow:0 0 18px #ffb84a,0 0 40px #ff9a2a,0 3px 6px #5a1a06}
#jiao .jwin p{font-family:var(--kai);font-size:2.2em;color:#ffe6a8;margin:.1em 0;text-shadow:0 0 14px #ffb84a,0 3px 6px #5a1a06;letter-spacing:.2em}
#jiao .jwin small{font-size:1em;color:#fff;text-shadow:0 2px 6px #000}
/* 特寫說明字放大（電腦與手機都清楚） */
#jiao .jmsg{padding:.6em 1.2em;max-width:92%}
#jiao .jmsg p,.incense .jmsg p,#bowpad .bp-msg p{font-size:clamp(24px,4.6vmin,40px);line-height:1.3}
#jiao .jmsg small,#bowpad .bp-msg small{font-size:clamp(16px,2.8vmin,24px);margin-top:.3em;line-height:1.4}
#jiao .jtop b,#bowpad .bp-top b{font-size:clamp(20px,3.4vmin,30px)}#jiao .jtop span,#bowpad .bp-top span{font-size:clamp(14px,2.4vmin,20px)}
#jiao .jnote{font-size:clamp(12px,1.8vmin,15px)}
/* 小字改用粗黑體＋描邊陰影，任何背景都清楚 */
#jiao .jmsg small,#bowpad .bp-msg small,#zenx .zcount,.incense .jmsg small{font-family:"Noto Sans TC","Microsoft JhengHei","PingFang TC",sans-serif;font-weight:700;color:#fff;text-shadow:0 1px 2px #000,0 0 6px #000}
#jiao .jmsg p,#bowpad .bp-msg p{font-weight:700;text-shadow:0 2px 4px #000,0 0 10px #000}
#jiao .jmsg,#bowpad .bp-msg{background:#140603d9;border:1px solid #e8c26a66}
#jiao .jmsg,#bowpad .bp-msg{width:max-content;max-width:min(92vw,560px);box-sizing:border-box}
#jiao .jwin{left:50%;right:auto;transform:translateX(-50%) scale(.8);padding:.6em 1.6em;border-radius:1.2em;background:radial-gradient(ellipse at center,#1a0806cc 0%,#1a080688 60%,transparent 100%);width:max-content;max-width:92vw}
#jiao .jwin.on{transform:translateX(-50%) scale(1)}
#jiao .jwin small{font-family:"Noto Sans TC","Microsoft JhengHei","PingFang TC",sans-serif;font-weight:700;font-size:clamp(16px,2.8vmin,24px);text-shadow:0 1px 2px #000,0 0 8px #000}
.dress .itm em.new{position:absolute;top:3px;left:4px;font-style:normal;font-size:.6em;padding:0 .4em;border-radius:1em;background:#c0302a;color:#fff}
/* 放生：選擇小生命 */
#jiao .rpick{position:absolute;left:50%;bottom:16%;transform:translateX(-50%);display:flex;gap:12px}
#jiao .rpick button{width:clamp(88px,22vw,130px);display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px;border-radius:14px;border:1px solid #e8c26a88;background:#140603c8;color:#ffe6a8;font:inherit;cursor:pointer}
#jiao .rpick img{width:100%;aspect-ratio:1;object-fit:contain}#jiao .rpick b{font-family:var(--kai);font-size:1.1em;font-weight:normal}
/* 今日參拜 */
.wcard.daily .wallet{flex-wrap:wrap;gap:.4em 1.2em}
.dlist{display:flex;flex-direction:column;gap:4px;max-height:52vh;overflow:auto}
.drow{display:grid;grid-template-columns:1.6em 5.5em 1fr auto;align-items:center;gap:.4em;padding:.45em .6em;border-radius:.5em;background:#0005;border:1px solid #fff1;font-size:.9em}
.drow i{font-style:normal;width:1.3em;height:1.3em;border-radius:50%;border:1px solid var(--gold2);display:flex;align-items:center;justify-content:center;color:#3a1d08}
.drow.ok i{background:var(--gold)}.drow.ok b{opacity:.6}.drow span{font-size:.8em;opacity:.7}.drow em{font-style:normal;color:var(--gold);font-size:.85em}
#btnDaily i{display:inline-block;min-width:1.4em;margin-left:.3em;padding:0 .3em;border-radius:1em;background:#d8342a;color:#fff;font-style:normal;font-size:.8em;text-align:center}
.dress .trybar{grid-column:1/4;display:flex;align-items:center;gap:.5em;flex-wrap:wrap;padding:.45em .7em;border-radius:.6em;background:#2a1406e6;border:1px solid var(--gold2);font-size:.85em}.dress .trybar span{flex:1}.dress .trybar b{color:var(--gold)}
.dress .itm.lock{opacity:.92}
/* 觀景台、地圖 */
#viewx{position:fixed;inset:0;z-index:25;overflow:hidden;background:#000}
#viewx .vbg{position:absolute;inset:-6%;background-size:cover;background-position:center;animation:vpan 40s ease-in-out infinite alternate}
@keyframes vpan{from{transform:scale(1.05) translateX(-2%)}to{transform:scale(1.15) translateX(2%)}}
#viewx .vline{position:absolute;left:8%;right:8%;bottom:18%;text-align:center;font-family:var(--kai);font-size:clamp(22px,4.4vmin,36px);color:#fff;text-shadow:0 2px 10px #000;animation:zin 3s ease}
#viewx .vclose{position:absolute;right:16px;top:max(14px,env(safe-area-inset-top));padding:.4em 1.2em;border-radius:2em;border:1px solid #fff6;background:#0007;color:#fff;font:inherit}
#mapx{position:fixed;inset:0;z-index:25;background:#0b0710f0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px;gap:10px}
#mapx .mwrap{position:relative;height:min(84vh,calc((100vw - 24px) * 1.5));aspect-ratio:2/3}
#mapx .mwrap img{width:100%;height:100%;object-fit:cover;border-radius:12px;border:1px solid var(--gold2)}
#mapx .mpin{position:absolute;width:0;height:0;border:0;background:none;padding:0;cursor:pointer}
#mapx .mpin i{position:absolute;left:-7px;top:-7px;width:14px;height:14px;border-radius:50%;background:var(--gold);border:2px solid #3a1d08;box-shadow:0 0 0 3px #ffe6a880,0 0 10px #ffd27a}
#mapx .mpin span{position:absolute;white-space:nowrap;padding:.22em .6em;border-radius:1em;background:#1a0806e6;border:1px solid var(--gold);color:#fff1cc;font-size:clamp(12px,3.3vw,15px);font-weight:700;line-height:1.3;box-shadow:0 2px 6px #0008}
#mapx .mpin.s-r span{left:12px;top:0;transform:translateY(-50%)}#mapx .mpin.s-l span{right:12px;top:0;transform:translateY(-50%)}
#mapx .mpin.s-t span{left:0;bottom:12px;transform:translateX(-50%)}#mapx .mpin.s-b span{left:0;top:12px;transform:translateX(-50%)}
#mapx .mpin.off i{background:#9a9a9a;border-color:#444;box-shadow:0 0 0 3px #fff3}#mapx .mpin.off span{color:#ddd;border-color:#fff5;background:#111c}
#mapx .mpin.here i{background:#ff6a4a;animation:mpulse 1.4s infinite}#mapx .mpin.here span{background:var(--gold);color:#3a1d08}
@keyframes mpulse{0%{box-shadow:0 0 0 0 #ff6a4aaa}100%{box-shadow:0 0 0 14px #ff6a4a00}}
#mapx .mbar{display:flex;gap:12px;align-items:center;color:var(--ink);font-size:.9em}
.btns{flex-wrap:wrap;justify-content:flex-end;max-width:min(72vw,520px);row-gap:6px}

.wcard .jie{padding:.8em .9em;border-radius:.6em;background:#0005;border:1px solid var(--gold2);display:flex;flex-direction:column;gap:.5em}.wcard .jie h4{font-family:var(--kai);color:var(--gold);font-size:1.2em;text-align:center}.wcard .jie p{font-size:1.06em;line-height:1.8;color:#fff8ea}.wcard .jie p.small{font-size:.95em;color:#eadfc6;opacity:1}.wcard .jie.lock{align-items:center;text-align:center}.wcard .jie .ghost{opacity:.85}
.wcard .slip~p{font-size:1.08em;line-height:1.8;color:#fff8ea;font-weight:500;letter-spacing:.02em}.wcard .slip~p.small{font-size:.95em;opacity:1;color:#eadfc6;font-weight:400}.wcard .slip~.warn{font-size:.85em;color:#e6dcc4;line-height:1.7}
/* 心願市集 */
.wcard.market{width:min(560px,100%);max-height:90vh;gap:.6em}
.market .mtop{display:flex;align-items:center;gap:.6em}.market .mtop h3{flex:1;text-align:left}.market .mtop span{font-size:.85em}.market .mtop b{color:var(--gold)}
.market .x{width:2.2em;height:2.2em;border-radius:50%;border:1px solid var(--gold2);background:#0006;color:var(--gold);font:inherit;cursor:pointer}
.tabs.seg.five{grid-template-columns:repeat(5,1fr)}.tabs.seg.five button{padding:.45em .2em;font-size:.92em}
.market .mbody{overflow:auto;display:flex;flex-direction:column;gap:.6em;padding-right:.2em}
.market h4{color:var(--gold);font-family:var(--kai);font-size:1.1em;margin-top:.3em}
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(7.2em,1fr));gap:.5em}
.mcard{display:flex;flex-direction:column;align-items:center;gap:.25em;padding:.5em .4em;border-radius:.6em;background:#0005;border:1px solid #fff2;text-align:center}
.mcard.own{border-color:var(--gold2)}.mcard b{font-size:.92em}.mcard i{font-style:normal;font-size:.8em;color:var(--gold)}
.mic{display:flex;align-items:center;justify-content:center;width:4.4em;height:4.4em;border-radius:.5em;background:#ffffff0d;overflow:hidden}.mic img{max-width:100%;max-height:100%}
.mic.big{width:3.6em;height:3.6em;flex:none}.mic.paper{width:4.4em;height:6em;background-size:cover;background-position:center}
.mrow{display:flex;align-items:center;gap:.7em;padding:.6em;border-radius:.6em;background:#0005;border:1px solid var(--gold2)}.mrow>div{flex:1}.mrow p{font-size:.85em;opacity:.92;line-height:1.5}.mrow em{color:var(--gold);font-style:normal}
.mlist{display:flex;flex-direction:column;gap:.35em}.mlist>div{display:flex;align-items:center;gap:.6em;padding:.45em .6em;border-radius:.5em;background:#0004}.mlist b{flex:1}.mlist span{font-size:.8em;opacity:.8}.mlist i{font-style:normal;font-size:.85em;color:var(--gold)}
.mlist.packs em{font-style:normal;color:#ffcf6a;font-size:.85em}
/* 光明燈 */
.wcard.lampbuy{align-items:stretch;text-align:center}.lampbuy .lampic{width:6em;margin:0 auto}
.lampbuy input{font-size:1.1em;text-align:center}
#jiao .lampbar{position:absolute;left:0;right:0;bottom:max(24px,env(safe-area-inset-bottom));display:flex;justify-content:center}
/* 信紙樣式（心願市集「小物」） */
.paper.p-peach{background-image:url(../assets/ui/paper_peach.jpg)}.paper.p-bamboo{background-image:url(../assets/ui/paper_bamboo.jpg)}
.paper.p-gold{background-image:url(../assets/ui/paper_gold.jpg);color:#fff3d6}.paper.p-gold .mine{color:#ffe3a8;border-color:#e8c26a}.paper.p-gold .sign{color:#ffe08a}.paper.p-gold .fixed{color:#ffe9c4}
