/* =====================================================================
   愛慾島　樣式
   ===================================================================== */
:root{
  --bg:#07060b; --phone:#0d0a12; --ink:#f6edf1; --ink2:#c9bcc4; --ink3:#8d7f88; --line:rgba(255,255,255,.09);
  --rose:#ff4f87; --rose2:#ff8fb1; --rose-d:#9c1f4d; --gold:#f3cf8e; --gold-d:#b48a4a; --sea:#3fb3c9; --sea-d:#13394a;
  --card:rgba(255,255,255,.055); --card2:rgba(255,255,255,.09); --glass:rgba(16,11,20,.78);
  --serif:"Noto Serif TC","Songti TC","PMingLiU",serif; --sans:"Noto Sans TC",-apple-system,"PingFang TC","Microsoft JhengHei",sans-serif;
  --r:18px; --sat:env(safe-area-inset-top,0px); --sab:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.6;overflow:hidden}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
input,textarea{font:inherit;color:inherit}
img{display:block;max-width:100%}
[hidden]{display:none!important}
.serif{font-family:var(--serif)}

/* ---------- 背景與外框 ---------- */
.bghero{position:fixed;inset:0;z-index:0;overflow:hidden}
.bghero img{width:100%;height:100%;object-fit:cover;filter:blur(28px) brightness(.32) saturate(1.2);transform:scale(1.15)}
.stage{position:relative;z-index:1;height:100%;display:flex;align-items:center;justify-content:center;gap:56px}
.aside{max-width:330px;display:none}
.aside .tag{color:var(--rose2);letter-spacing:.2em;font-size:13px}
.aside h1{font-family:var(--serif);font-size:54px;letter-spacing:.12em;margin:.2em 0 .3em;font-weight:900;background:linear-gradient(120deg,#fff,var(--rose2) 60%,var(--gold));-webkit-background-clip:text;background-clip:text;color:transparent}
.aside p{color:var(--ink2);font-size:14.5px}
@media (min-width:900px){.aside{display:block}}
.phone{position:relative;width:100%;height:100%;max-width:430px;background:var(--phone);overflow:hidden;isolation:isolate}
@media (min-width:520px) and (min-height:760px){
  .phone{height:min(900px,94vh);border-radius:44px;box-shadow:0 0 0 10px #18131c,0 0 0 11px #2a2230,0 40px 120px rgba(0,0,0,.8),0 0 140px rgba(255,79,135,.12)}
}
#screen{position:absolute;inset:0;overflow:hidden}

/* ---------- 狀態列與靈動島 ---------- */
.sbar{position:absolute;top:0;left:0;right:0;height:calc(34px + var(--sat));padding:calc(8px + var(--sat)) 22px 0;display:flex;justify-content:space-between;font-size:13px;font-weight:700;z-index:40;pointer-events:none;text-shadow:0 1px 4px rgba(0,0,0,.6)}
.sbar .r{display:flex;gap:6px;align-items:center}
.bat{width:22px;height:11px;border:1.5px solid currentColor;border-radius:3px;position:relative;opacity:.9}
.bat:after{content:"";position:absolute;inset:1.5px;right:5px;background:currentColor;border-radius:1px}
.island{position:absolute;top:calc(6px + var(--sat));left:50%;transform:translateX(-50%);min-width:118px;height:28px;border-radius:20px;background:#000;z-index:45;display:flex;align-items:center;justify-content:center;gap:7px;padding:0 12px 0 5px;font-size:12px;font-weight:700;box-shadow:0 0 0 1px rgba(255,255,255,.06);transition:min-width .3s}
.island .iav{width:20px;height:20px;border-radius:50%;overflow:hidden;flex:none}
.island .iav img,.island .iav .ph{width:100%;height:100%;object-fit:cover}
.island b{color:var(--rose2);font-variant-numeric:tabular-nums}
.island small{color:var(--ink3);font-weight:500}
.island.hot b{background:linear-gradient(90deg,var(--rose2),var(--gold),var(--rose2));background-size:200%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:flow 2.4s linear infinite}
@keyframes flow{to{background-position:200% 0}}
.topbtns{position:absolute;top:calc(5px + var(--sat));right:12px;z-index:46;display:flex;gap:6px}
.topbtns button{width:30px;height:30px;border-radius:50%;background:rgba(0,0,0,.45);display:grid;place-items:center;backdrop-filter:blur(8px)}
.topbtns svg{width:15px;height:15px}
.topbtns .back{position:fixed}

/* ---------- 通用元件 ---------- */
.view{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--phone);animation:vin .28s ease}
@keyframes vin{from{opacity:0;transform:translateY(10px)}}
.vhead{padding:calc(44px + var(--sat)) 16px 10px;display:flex;align-items:center;gap:10px;flex:none;background:linear-gradient(var(--phone) 70%,transparent);position:relative;z-index:2}
.vhead h2{margin:0;font-size:19px;font-family:var(--serif);letter-spacing:.06em;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vhead .sub{font-size:12px;color:var(--ink3);font-family:var(--sans);letter-spacing:0;display:block;font-weight:400}
.backbtn{display:flex;align-items:center;gap:2px;height:40px;padding:0 12px 0 6px;margin-left:-6px;border-radius:20px;background:var(--card);font-size:14px;color:var(--ink);flex:none}
.backbtn svg{width:20px;height:20px}
.vbody{flex:1;overflow-y:auto;overflow-x:hidden;padding:4px 16px calc(28px + var(--sab));-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.btn{display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:10px 18px;border-radius:14px;background:var(--card2);font-weight:700;letter-spacing:.04em;width:100%;text-align:center;transition:transform .12s,background .2s}
.btn:active{transform:scale(.97)}
.btn.main{background:linear-gradient(135deg,var(--rose),#c2306a);color:#fff;box-shadow:0 8px 24px rgba(255,79,135,.3)}
.btn.gold{background:linear-gradient(135deg,var(--gold),#d49a55);color:#2a1606}
.btn.ghost{background:transparent;box-shadow:inset 0 0 0 1px var(--line)}
.btn[disabled]{opacity:.38;pointer-events:none}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;background:var(--card2);font-size:12px;color:var(--ink2)}
.chip.rose{background:rgba(255,79,135,.16);color:var(--rose2)}
.chip.gold{background:rgba(243,207,142,.14);color:var(--gold)}
.sec{margin:18px 0 8px;font-size:12px;letter-spacing:.18em;color:var(--ink3);display:flex;justify-content:space-between;align-items:center}
.sec b{color:var(--ink2);letter-spacing:0;font-weight:500}
.card{background:var(--card);border-radius:var(--r);padding:14px;box-shadow:inset 0 0 0 1px var(--line)}
.muted{color:var(--ink3);font-size:13px}
.ph{display:grid;place-items:center;font-family:var(--serif);font-weight:900;color:rgba(255,255,255,.92);background:var(--phg,linear-gradient(150deg,#3a1a2c,#120c16));text-shadow:0 2px 12px rgba(0,0,0,.4)}
.av{border-radius:50%;overflow:hidden;flex:none;position:relative;background:#1a1420}
.av img{width:100%;height:100%;object-fit:cover}
.av .ph{width:100%;height:100%;font-size:50%}
.pimg{background:var(--dc,#1a1420);overflow:hidden;position:relative}
.pimg img{width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .35s}
.pimg img.ok{opacity:1}
.dot{display:inline-block;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--rose);color:#fff;font-size:11px;font-weight:700;line-height:18px;text-align:center}

/* ---------- 年齡確認 ---------- */
.agegate{position:fixed;inset:0;z-index:999;background:rgba(5,4,8,.94);display:grid;place-items:center;padding:20px;backdrop-filter:blur(10px)}
.agebox{max-width:380px;width:100%;background:linear-gradient(160deg,#1a1320,#0d0a12);border-radius:22px;padding:28px 24px;box-shadow:inset 0 0 0 1px rgba(243,207,142,.25)}
.agemark{width:62px;height:62px;border-radius:50%;margin:0 auto 12px;display:grid;place-items:center;border:2.5px solid var(--rose);color:var(--rose);font:900 28px var(--serif)}
.agebox h2{text-align:center;font-family:var(--serif);margin:0;letter-spacing:.14em}
.agebox .sub{text-align:center;color:var(--rose2);font-size:13px;letter-spacing:.2em;margin:4px 0 14px}
.agebox p{font-size:13.5px;color:var(--ink2);margin:8px 0}
.agebox .btn{margin-top:10px}
.agebox .fine{text-align:center;font-size:11.5px;color:var(--ink3);margin-top:12px}
.ageleave{display:none}.agebox.no .ageask{display:none}.agebox.no .ageleave{display:block}

/* ---------- 開始畫面與問卷 ---------- */
.title{position:absolute;inset:0;overflow-y:auto;background:var(--phone)}
.title .hero{position:relative;height:56%;min-height:330px}
.title .hero .pimg{position:absolute;inset:0}
.title .hero:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(13,10,18,.1) 30%,rgba(13,10,18,.65) 70%,var(--phone))}
.title .logo{position:absolute;left:0;right:0;bottom:0;z-index:2;text-align:center;padding:0 20px}
.title .logo .tag{font-size:13px;letter-spacing:.24em;color:var(--rose2)}
.title .logo h1{font-family:var(--serif);font-weight:900;font-size:56px;letter-spacing:.2em;margin:4px 0 0 .2em;line-height:1.15;background:linear-gradient(120deg,#fff 20%,var(--rose2) 70%,var(--gold));-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 4px 20px rgba(255,79,135,.35))}
.title .logo .en{font-size:11px;letter-spacing:.5em;color:var(--gold);opacity:.85;display:flex;align-items:center;justify-content:center;gap:12px}
.title .logo .en:before,.title .logo .en:after{content:"";width:30px;height:1px;background:currentColor;opacity:.6}
.title .tbody{padding:14px 22px calc(30px + var(--sab));position:relative;z-index:2}
.title .pitch{text-align:center;color:var(--ink2);font-size:14px;margin:4px 0 18px}
.title .tbody .btn{margin-top:10px}
.title .r18note{font-size:11.5px;color:var(--ink3);text-align:center;margin-top:14px}
.title .ver{font-size:11px;color:var(--ink3);text-align:center;margin-top:8px;opacity:.7}

.quiz{position:absolute;inset:0;background:var(--phone);display:flex;flex-direction:column;z-index:5;animation:vin .3s}
.quiz .qtop{padding:calc(48px + var(--sat)) 22px 6px}
.quiz .qprog{display:flex;gap:6px;margin-bottom:16px}
.quiz .qprog i{flex:1;height:3px;border-radius:2px;background:var(--line)}
.quiz .qprog i.on{background:var(--rose)}
.quiz .qkick{font-size:12px;letter-spacing:.24em;color:var(--rose2)}
.quiz h2{font-family:var(--serif);font-size:24px;margin:4px 0 6px;letter-spacing:.05em}
.quiz .qdesc{color:var(--ink2);font-size:13.5px;margin:0}
.quiz .qbody{flex:1;overflow-y:auto;padding:14px 22px}
.quiz .qfoot{padding:12px 22px calc(18px + var(--sab));display:flex;gap:10px}
.quiz .qfoot .btn{flex:1}
.quiz .qfoot .btn.ghost{flex:.5}
.field{width:100%;height:54px;border-radius:14px;border:0;background:var(--card2);padding:0 16px;font-size:17px;outline:none;box-shadow:inset 0 0 0 1px var(--line)}
.field:focus{box-shadow:inset 0 0 0 1.5px var(--rose)}
.opts{display:grid;gap:10px}
.opt{text-align:left;padding:14px 16px;border-radius:16px;background:var(--card);box-shadow:inset 0 0 0 1px var(--line);display:flex;gap:12px;align-items:flex-start;transition:box-shadow .2s,background .2s}
.opt .oi{font-size:24px;line-height:1.2;flex:none}
.opt b{display:block;font-size:16px}
.opt span{display:block;font-size:12.5px;color:var(--ink2);margin-top:2px}
.opt.on{background:rgba(255,79,135,.12);box-shadow:inset 0 0 0 1.5px var(--rose)}
.opt.ban.on{background:rgba(120,120,140,.14);box-shadow:inset 0 0 0 1.5px #9aa}
.tags{display:flex;flex-wrap:wrap;gap:8px}
.tagbtn{padding:9px 14px;border-radius:22px;background:var(--card);box-shadow:inset 0 0 0 1px var(--line);font-size:14px}
.tagbtn.on{background:rgba(255,79,135,.16);box-shadow:inset 0 0 0 1.5px var(--rose);color:#fff}
.tagbtn.ban.on{background:rgba(150,160,170,.16);box-shadow:inset 0 0 0 1.5px #9aa;text-decoration:line-through;color:var(--ink2)}
.check{display:flex;gap:10px;align-items:flex-start;padding:14px;border-radius:14px;background:var(--card);margin-top:14px;font-size:13.5px;color:var(--ink2);text-align:left;width:100%}
.check i{width:22px;height:22px;border-radius:6px;box-shadow:inset 0 0 0 1.5px var(--ink3);flex:none;display:grid;place-items:center;font-style:normal;margin-top:1px}
.check.on i{background:var(--rose);box-shadow:none}
.check.on i:after{content:"✓";color:#fff;font-weight:900;font-size:14px}
.ticket{margin:6px 0 4px;border-radius:18px;padding:18px;background:linear-gradient(135deg,#f7f1ea,#e9dfd6);color:#2b1a1f;position:relative;overflow:hidden}
.ticket:before{content:"";position:absolute;right:-30px;top:-30px;width:120px;height:120px;border-radius:50%;border:16px solid rgba(255,79,135,.12)}
.ticket small{letter-spacing:.3em;color:#9b6a74;font-size:11px}
.ticket h3{font-family:var(--serif);margin:2px 0 8px;font-size:22px;letter-spacing:.1em}
.ticket .tl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:13px}
.ticket .tl b{color:#9b6a74;font-weight:500}
.ticket .no{position:absolute;right:16px;bottom:12px;font:700 12px monospace;color:#9b6a74;letter-spacing:.2em}

/* ---------- 鎖定畫面 ---------- */
.lock{position:absolute;inset:0;overflow:hidden}
.lock .pimg{position:absolute;inset:0}
.lock:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.35),rgba(0,0,0,.05) 40%,rgba(0,0,0,.6))}
.lock .lk{position:relative;z-index:2;text-align:center;padding-top:calc(78px + var(--sat))}
.lock .lk .d{font-size:16px;font-weight:600;opacity:.9}
.lock .lk .t{font-size:84px;font-weight:300;line-height:1;letter-spacing:-.02em;margin-top:4px;font-family:var(--sans)}
.lock .notes{position:absolute;z-index:2;left:12px;right:12px;bottom:calc(110px + var(--sab));display:grid;gap:8px}
.note{display:flex;gap:10px;align-items:center;padding:11px 13px;border-radius:20px;background:rgba(30,24,34,.66);backdrop-filter:blur(18px);text-align:left;width:100%}
.note .av{width:38px;height:38px;border-radius:10px}
.note .nt{flex:1;min-width:0}
.note .nt b{font-size:13.5px;display:flex;justify-content:space-between}
.note .nt b small{font-weight:400;color:var(--ink3)}
.note .nt span{font-size:13px;color:var(--ink2);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lock .swipe{position:absolute;z-index:2;bottom:calc(36px + var(--sab));left:0;right:0;text-align:center;font-size:14px;color:rgba(255,255,255,.85);animation:breath 2.4s ease-in-out infinite}
.lock .swipe:after{content:"";display:block;width:134px;height:5px;border-radius:3px;background:#fff;margin:14px auto 0}
@keyframes breath{50%{opacity:.45}}

/* ---------- 主畫面 ---------- */
.home{position:absolute;inset:0;overflow:hidden}
.home>.pimg{position:absolute;inset:0}
.home:before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(7,6,11,.45),rgba(7,6,11,.25) 30%,rgba(7,6,11,.8))}
.home .hs{position:absolute;inset:0;z-index:2;overflow-y:auto;padding:calc(48px + var(--sat)) 16px calc(120px + var(--sab))}
.wid{border-radius:24px;background:var(--glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);padding:14px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.07);margin-bottom:12px}
.wtime{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:10px}
.wtime .dd{font-family:var(--serif);font-size:22px;font-weight:700;letter-spacing:.04em}
.wtime .dd small{font-family:var(--sans);font-size:12.5px;color:var(--ink2);font-weight:400;margin-left:6px;letter-spacing:0}
.wtime .coin{font-size:13px;color:var(--gold);font-weight:700;display:flex;align-items:center;gap:4px}
.slots{display:flex;gap:6px;margin-bottom:12px}
.slots i{flex:1;text-align:center;font-style:normal;font-size:11.5px;padding:4px 0;border-radius:8px;background:rgba(255,255,255,.05);color:var(--ink3)}
.slots i.now{background:rgba(255,79,135,.2);color:#fff;font-weight:700}
.slots i.past{opacity:.4;text-decoration:line-through}
.cta{display:flex;gap:12px;align-items:center;padding:14px;border-radius:18px;background:linear-gradient(135deg,rgba(255,79,135,.3),rgba(156,31,77,.25));box-shadow:inset 0 0 0 1px rgba(255,143,177,.35);width:100%;text-align:left}
.cta .ci{width:44px;height:44px;border-radius:14px;background:rgba(0,0,0,.3);display:grid;place-items:center;font-size:22px;flex:none}
.cta .ct{flex:1;min-width:0}
.cta .ct small{font-size:11.5px;letter-spacing:.16em;color:var(--rose2)}
.cta .ct b{display:block;font-size:16.5px;font-family:var(--serif);letter-spacing:.04em}
.cta .ct span{display:block;font-size:12.5px;color:var(--ink2)}
.cta em{font-style:normal;font-size:22px;color:var(--rose2)}
.cta.night{background:linear-gradient(135deg,rgba(63,80,201,.32),rgba(120,40,140,.28));box-shadow:inset 0 0 0 1px rgba(160,170,255,.3)}
.cta.free{background:linear-gradient(135deg,rgba(63,179,201,.22),rgba(19,57,74,.35));box-shadow:inset 0 0 0 1px rgba(120,210,230,.28)}
.ctarow{display:flex;gap:8px;margin-top:8px}
.ctarow .btn{min-height:40px;font-size:13.5px;padding:6px 10px}
.pwid .ptitle{display:flex;justify-content:space-between;font-size:12px;letter-spacing:.14em;color:var(--ink3);margin-bottom:8px}
.pgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.pman{text-align:center;padding:8px 2px;border-radius:14px;background:rgba(255,255,255,.04);position:relative}
.pman .av{width:46px;height:46px;margin:0 auto 4px;box-shadow:0 0 0 2px var(--mc,var(--rose))}
.pman b{display:block;font-size:12.5px}
.pman .pv{font-size:15px;font-weight:800;color:var(--rose2);font-variant-numeric:tabular-nums;line-height:1.2}
.pman .st{font-size:10.5px;color:var(--ink3);white-space:nowrap}
.pman.locked .av{filter:grayscale(1) brightness(.5);box-shadow:0 0 0 2px #444}
.pman.locked .pv{color:var(--ink3)}
.pman .here{position:absolute;top:4px;right:4px;font-size:10px;background:var(--sea-d);color:#bfefff;border-radius:6px;padding:0 4px}
.apps{display:grid;grid-template-columns:repeat(4,1fr);gap:16px 8px;padding:10px 4px 0}
.app{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:11.5px;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.8);position:relative}
.app .ic{width:60px;height:60px;border-radius:17px;display:grid;place-items:center;font-size:28px;box-shadow:0 6px 16px rgba(0,0,0,.4),inset 0 0 0 1px rgba(255,255,255,.12);position:relative}
.app .ic svg{width:30px;height:30px}
.app .dot{position:absolute;top:-6px;right:-6px}
.dock{position:absolute;z-index:3;left:10px;right:10px;bottom:calc(10px + var(--sab));border-radius:30px;background:rgba(30,24,36,.55);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);padding:12px 8px;display:grid;grid-template-columns:repeat(4,1fr);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.dock .app span{display:none}

/* ---------- 橫幅通知與 toast ---------- */
.banner{position:absolute;z-index:60;left:10px;right:10px;top:calc(8px + var(--sat));transform:translateY(-140%);transition:transform .38s cubic-bezier(.2,.9,.3,1.2);text-align:left}
.banner.on{transform:none}
.banner .note{background:rgba(36,28,40,.92);box-shadow:0 10px 30px rgba(0,0,0,.5)}
.toast{position:absolute;z-index:70;left:50%;bottom:calc(110px + var(--sab));transform:translate(-50%,20px);opacity:0;pointer-events:none;background:rgba(20,16,24,.94);padding:10px 16px;border-radius:14px;font-size:13.5px;max-width:86%;text-align:center;transition:.3s;box-shadow:0 8px 24px rgba(0,0,0,.5),inset 0 0 0 1px var(--line)}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* ---------- 底部面板 ---------- */
.sheet{position:absolute;inset:0;z-index:55;display:flex;align-items:flex-end;background:rgba(0,0,0,0);pointer-events:none;transition:background .25s}
.sheet.on{background:rgba(0,0,0,.55);pointer-events:auto}
.sheet .sb{width:100%;max-height:88%;overflow-y:auto;background:#17121c;border-radius:26px 26px 0 0;padding:10px 18px calc(22px + var(--sab));transform:translateY(100%);transition:transform .32s cubic-bezier(.2,.9,.3,1);box-shadow:0 -10px 40px rgba(0,0,0,.5)}
.sheet.on .sb{transform:none}
.sheet .grab{width:40px;height:5px;border-radius:3px;background:rgba(255,255,255,.2);margin:0 auto 12px}
.sheet h3{font-family:var(--serif);margin:0 0 4px;font-size:20px}
.sheet .simg{height:180px;border-radius:16px;margin:0 -4px 12px;overflow:hidden}
.sheet .simg .pimg{height:100%}
.sheet .btn{margin-top:10px}

/* ---------- 劇情閱讀器 ---------- */
.reader{position:absolute;inset:0;z-index:50;background:#0a080d;display:flex;flex-direction:column;animation:fadein .4s}
@keyframes fadein{from{opacity:0}}
.reader .rimg{position:relative;flex:none;height:38%;min-height:200px;transition:height .4s}
.reader .rimg .pimg{position:absolute;inset:0}
.reader .rimg:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,8,13,.3),transparent 30%,rgba(10,8,13,.2) 60%,#0a080d)}
.reader .rhead{position:absolute;left:18px;right:18px;bottom:8px;z-index:2}
.reader .rhead small{font-size:11.5px;letter-spacing:.24em;color:var(--rose2)}
.reader .rhead h2{margin:0;font-family:var(--serif);font-size:23px;letter-spacing:.06em;text-shadow:0 2px 12px rgba(0,0,0,.7)}
.reader .rtop{position:absolute;top:calc(42px + var(--sat));right:12px;z-index:3;display:flex;gap:6px}
.reader .rtop button{height:32px;padding:0 12px;border-radius:16px;background:rgba(0,0,0,.5);font-size:12.5px;backdrop-filter:blur(8px)}
.reader .rbody{flex:1;overflow-y:auto;padding:10px 22px 40px;font-family:var(--serif);font-size:16.5px;line-height:1.95;-webkit-overflow-scrolling:touch;scroll-behavior:smooth}
.reader .rbody p{margin:0 0 1em;animation:pin .5s ease}
@keyframes pin{from{opacity:0;transform:translateY(6px)}}
.reader .rbody p.n{color:#b8aab3;font-style:italic}
.reader .rbody p.d{color:#fff}
.reader .rbody p.sys{font-family:var(--sans);font-style:normal;font-size:13px;color:var(--gold);text-align:center;letter-spacing:.04em;background:rgba(243,207,142,.07);border-radius:12px;padding:8px 12px}
.reader .rbody p.r18{border-left:2px solid rgba(255,79,135,.5);padding-left:12px}
.reader .rbody p.r18.d{color:#ffe9f0}
.reader .rbody p.hole{font-family:var(--sans);font-style:normal;font-size:12.5px;color:var(--rose2);border:1px dashed rgba(255,79,135,.5);border-radius:12px;padding:10px 12px;line-height:1.6}
.reader .rbody p.fade{text-align:center;color:var(--ink3);letter-spacing:.6em;font-style:normal}
.reader .rbody p.mine{color:var(--rose2);font-style:normal}
.reader .rbody p.mine:before{content:"▸ ";opacity:.7}
.reader .rch{display:grid;gap:10px;margin:8px 0 18px;font-family:var(--sans);animation:pin .4s}
.reader .rch button{text-align:left;padding:14px 16px;border-radius:16px;background:rgba(255,79,135,.1);box-shadow:inset 0 0 0 1px rgba(255,79,135,.4);font-size:15px;line-height:1.5}
.reader .rch button small{display:block;color:var(--ink3);font-size:12px;margin-top:2px}
.reader .rch button[disabled]{opacity:.35}
.reader .rtap{flex:none;text-align:center;font-family:var(--sans);font-size:12.5px;color:var(--ink3);padding:10px 0 calc(14px + var(--sab));letter-spacing:.2em;animation:breath 2s infinite}
.reader .rdone{padding:0 22px calc(18px + var(--sab));flex:none}
.reader .rimg.small{height:20%;min-height:120px}

/* ---------- 聊天（LIME） ---------- */
.clist{display:grid;gap:2px}
.crow{display:flex;gap:12px;align-items:center;padding:10px 4px;border-radius:14px;text-align:left;width:100%}
.crow:active{background:var(--card)}
.crow .av{width:52px;height:52px}
.crow .cr{flex:1;min-width:0;border-bottom:1px solid var(--line);padding-bottom:10px}
.crow .cr b{display:flex;justify-content:space-between;font-size:15.5px}
.crow .cr b small{font-size:11.5px;color:var(--ink3);font-weight:400}
.crow .cr span{display:flex;justify-content:space-between;gap:8px;font-size:13px;color:var(--ink3)}
.crow .cr span em{font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat{background:linear-gradient(180deg,#120e17,#0c0a10)}
.chat .vhead{background:rgba(18,14,23,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.chat .vhead .av{width:36px;height:36px}
.msgs{flex:1;overflow-y:auto;padding:14px 12px 10px;display:flex;flex-direction:column;gap:8px;-webkit-overflow-scrolling:touch}
.msg{display:flex;gap:8px;max-width:82%;align-items:flex-end;animation:pin .3s}
.msg .av{width:30px;height:30px}
.msg .bb{padding:9px 13px;border-radius:18px;font-size:15px;line-height:1.55;background:#2a2230;border-bottom-left-radius:6px;word-break:break-word;white-space:pre-wrap}
.msg.me{align-self:flex-end;flex-direction:row-reverse}
.msg.me .bb{background:linear-gradient(135deg,var(--rose),#d0386f);color:#fff;border-bottom-left-radius:18px;border-bottom-right-radius:6px}
.msg .bb.pic{padding:4px;background:#2a2230}
.msg .bb.pic .pimg{width:200px;height:200px;border-radius:14px}
.msg .bb.pic span{display:block;font-size:12.5px;color:var(--ink2);padding:6px 6px 2px}
.msg .bb.r18{box-shadow:inset 0 0 0 1px rgba(255,79,135,.45)}
.sysmsg{align-self:center;font-size:12px;color:var(--ink3);background:rgba(255,255,255,.05);padding:4px 12px;border-radius:12px;text-align:center;max-width:90%}
.sysmsg.hole{color:var(--rose2);border:1px dashed rgba(255,79,135,.5);background:none}
.typing{display:flex;gap:4px;padding:12px 14px!important}
.typing i{width:7px;height:7px;border-radius:50%;background:var(--ink3);animation:ty 1s infinite}
.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}
@keyframes ty{50%{opacity:.3;transform:translateY(-3px)}}
.cfoot{flex:none;padding:8px 12px calc(10px + var(--sab));background:rgba(18,14,23,.96);border-top:1px solid var(--line)}
.cfoot .copts{display:grid;gap:8px}
.cfoot .copts button{text-align:left;padding:12px 14px;border-radius:14px;background:rgba(255,79,135,.12);box-shadow:inset 0 0 0 1px rgba(255,79,135,.4);font-size:14.5px}
.cfoot .cbar{display:flex;gap:8px;align-items:center}
.cfoot .cbar .fake{flex:1;height:42px;border-radius:21px;background:var(--card2);display:flex;align-items:center;padding:0 16px;color:var(--ink3);font-size:14px;text-align:left}
.cfoot .cbar .fake.on{color:var(--ink);box-shadow:inset 0 0 0 1px rgba(255,79,135,.4)}
.cfoot .note2{text-align:center;font-size:12px;color:var(--ink3);padding:4px 0}

/* ---------- 情環 ---------- */
.ring{position:relative;margin:4px auto 6px;width:210px;height:210px;display:grid;place-items:center}
.ring svg{position:absolute;inset:0}
.ring .rc{text-align:center;position:relative}
.ring .rc small{display:block;font-size:11px;letter-spacing:.3em;color:var(--ink3)}
.ring .rc b{font-size:34px;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums;line-height:1.2}
.ring .rc span{display:block;font-size:12px;color:var(--ink2)}
.serial{display:block;margin:0 auto;font:600 11px monospace;letter-spacing:.3em;color:var(--ink3);padding:6px 12px;border-radius:10px}
.hint{display:flex;gap:10px;padding:12px 14px;border-radius:16px;background:rgba(243,207,142,.08);box-shadow:inset 0 0 0 1px rgba(243,207,142,.22);margin-bottom:8px;font-size:13.5px;text-align:left;width:100%}
.hint i{font-style:normal;font-size:18px}
.hint b{color:var(--gold)}
.dos{display:flex;gap:12px;align-items:center;padding:12px;border-radius:18px;background:var(--card);margin-bottom:8px;text-align:left;width:100%;box-shadow:inset 0 0 0 1px var(--line)}
.dos .av{width:56px;height:56px;box-shadow:0 0 0 2px var(--mc,var(--rose))}
.dos .dr{flex:1;min-width:0}
.dos .dr b{font-size:16px;display:flex;align-items:baseline;gap:6px}
.dos .dr b small{font-size:12px;color:var(--ink3);font-weight:400}
.pbar{height:6px;border-radius:3px;background:rgba(255,255,255,.08);margin:6px 0 4px;overflow:hidden}
.pbar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,var(--rose-d),var(--rose),var(--rose2))}
.pbar.hot i{background:linear-gradient(90deg,var(--rose),var(--gold),var(--rose));background-size:200%;animation:flow 2s linear infinite}
.dos .meta{display:flex;justify-content:space-between;font-size:12px;color:var(--ink3)}
.dos .meta b{color:var(--rose2);font-size:13px}
.bonds{display:inline-flex;gap:3px}
.bonds i{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.15)}
.bonds i.on{background:var(--gold)}
.clue{display:flex;gap:10px;padding:10px 12px;border-radius:14px;background:var(--card);margin-bottom:6px;font-size:13.5px;align-items:flex-start}
.clue i{font-style:normal}
.clue.off{color:var(--ink3)}
.prefbox{display:flex;flex-wrap:wrap;gap:6px}

/* ---------- 地圖 ---------- */
.mapwrap{position:relative;margin:0 -16px;aspect-ratio:1/1.06;overflow:hidden;background:radial-gradient(120% 90% at 50% 45%,#123a4c,#071923 70%)}
.mapwrap svg.isle{position:absolute;inset:0;width:100%;height:100%}
.pin{position:absolute;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;gap:1px;z-index:2}
.pin .pi{width:34px;height:34px;border-radius:50% 50% 50% 4px;transform:rotate(-45deg);display:grid;place-items:center;background:#fff;box-shadow:0 4px 10px rgba(0,0,0,.45)}
.pin .pi span{transform:rotate(45deg);font-size:17px}
.pin small{font-size:10px;font-weight:700;background:rgba(0,0,0,.6);padding:0 5px;border-radius:6px;white-space:nowrap;margin-top:3px}
.pin.zone .pi{background:linear-gradient(135deg,#ff2d6f,#7a0f36)}
.pin.here .pi{box-shadow:0 0 0 3px var(--rose),0 0 20px var(--rose)}
.pin .who{position:absolute;top:-14px;left:22px;display:flex}
.pin .who .av{width:22px;height:22px;box-shadow:0 0 0 2px #0b1e28;margin-left:-6px}
.pin.locked{opacity:.4;filter:grayscale(1)}
.mlist{display:grid;gap:8px;margin-top:12px}
.mrow{display:flex;gap:12px;align-items:center;padding:8px;border-radius:16px;background:var(--card);text-align:left;width:100%}
.mrow .pimg{width:64px;height:64px;border-radius:12px;flex:none}
.mrow .mr{flex:1;min-width:0}
.mrow .mr b{font-size:15px;display:flex;gap:6px;align-items:center}
.mrow .mr span{font-size:12.5px;color:var(--ink3);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mrow .mw{display:flex}
.mrow .mw .av{width:26px;height:26px;margin-left:-6px;box-shadow:0 0 0 2px var(--phone)}
.mtabs{display:flex;gap:6px;margin:4px 0 10px}
.mtabs button{flex:1;height:36px;border-radius:12px;background:var(--card);font-size:13.5px}
.mtabs button.on{background:rgba(255,79,135,.18);color:#fff;box-shadow:inset 0 0 0 1px rgba(255,79,135,.5)}

/* ---------- 情潮（配對） ---------- */
.swd{position:relative;height:calc(100% - 90px);min-height:420px;margin-top:4px}
.swc{position:absolute;inset:0;border-radius:24px;overflow:hidden;background:#222;box-shadow:0 14px 40px rgba(0,0,0,.5);touch-action:none;transition:transform .3s}
.swc .pimg{position:absolute;inset:0}
.swc:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(0,0,0,.88))}
.swc .si{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:18px}
.swc .si h3{margin:0;font-size:26px;display:flex;align-items:baseline;gap:8px}
.swc .si h3 small{font-size:18px;font-weight:400}
.swc .si .job{font-size:13.5px;color:#ffd7e4}
.swc .si q{display:block;font-size:14px;margin:6px 0;color:#eee;quotes:"「" "」"}
.swc .si .tags span{display:inline-block;font-size:11.5px;padding:2px 9px;border-radius:10px;background:rgba(255,255,255,.18);margin:2px 4px 0 0}
.swc .stamp{position:absolute;top:30px;z-index:3;font:900 30px var(--sans);padding:2px 12px;border:4px solid;border-radius:10px;opacity:0;letter-spacing:.08em}
.swc .stamp.y{left:20px;color:#5cf0a0;transform:rotate(-14deg)}
.swc .stamp.n{right:20px;color:#ff5a7a;transform:rotate(14deg)}
.swbtns{display:flex;justify-content:center;gap:22px;margin-top:12px}
.swbtns button{width:60px;height:60px;border-radius:50%;background:#1f1824;font-size:24px;box-shadow:0 6px 18px rgba(0,0,0,.4),inset 0 0 0 1px var(--line)}
.swempty{text-align:center;padding:60px 20px;color:var(--ink2)}
.mgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.mcard{position:relative;border-radius:18px;overflow:hidden;aspect-ratio:3/4;text-align:left}
.mcard .pimg{position:absolute;inset:0}
.mcard:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 50%,rgba(0,0,0,.85))}
.mcard .mi{position:absolute;z-index:2;left:10px;right:10px;bottom:8px}
.mcard .mi b{display:block;font-size:15px}
.mcard .mi span{font-size:11.5px;color:#ddd}
.mcard .badge{position:absolute;z-index:2;top:8px;left:8px}

/* ---------- 慾島圈 ---------- */
.post{margin:0 -16px 14px;border-bottom:1px solid var(--line);padding-bottom:10px}
.post .ph1{display:flex;gap:10px;align-items:center;padding:6px 16px 8px}
.post .ph1 .av{width:34px;height:34px;box-shadow:0 0 0 2px var(--rose)}
.post .ph1 b{font-size:14px}
.post .ph1 small{display:block;font-size:11.5px;color:var(--ink3)}
.post .pimg{width:100%;aspect-ratio:1/1}
.post .pa{display:flex;gap:16px;padding:8px 16px 4px;font-size:22px}
.post .pa button{display:flex;align-items:center;gap:4px;font-size:13px;color:var(--ink2)}
.post .pa button i{font-style:normal;font-size:22px}
.post .pa button.on i{color:var(--rose)}
.post .pt{padding:0 16px;font-size:14px}
.post .pt b{margin-right:6px}
.post .cm{padding:2px 16px;font-size:13.5px;color:var(--ink2)}
.post .cm b{color:var(--ink);margin-right:6px}

/* ---------- 商城 ---------- */
.shopgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.item{border-radius:18px;background:var(--card);overflow:hidden;text-align:left;box-shadow:inset 0 0 0 1px var(--line)}
.item .pimg{aspect-ratio:1/1}
.item .ii{padding:8px 10px 10px}
.item .ii b{font-size:13.5px;display:block;line-height:1.35}
.item .ii span{font-size:12.5px;color:var(--gold);font-weight:700}
.item .ii small{display:block;font-size:11px;color:var(--ink3)}
.item.own{box-shadow:inset 0 0 0 1.5px var(--gold)}
.pickman{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:8px}
.pickman button{text-align:center;font-size:12px}
.pickman .av{width:56px;height:56px;margin:0 auto 4px}

/* ---------- 夜晚 ---------- */
.nightov{position:absolute;inset:0;z-index:48;background:radial-gradient(120% 80% at 50% 0%,#24164a,#0b0714 60%);display:flex;flex-direction:column;animation:fadein .5s}
.nightov .nh{padding:calc(52px + var(--sat)) 22px 8px;text-align:center}
.nightov .nh small{font-size:12px;letter-spacing:.3em;color:#b9a8ff}
.nightov .nh h2{font-family:var(--serif);font-size:26px;margin:2px 0;letter-spacing:.08em}
.nightov .nh p{margin:0;font-size:13px;color:var(--ink2)}
.nightov .nl{flex:1;overflow-y:auto;padding:10px 16px calc(24px + var(--sab));display:grid;gap:10px;align-content:start}
.inv{display:flex;gap:12px;padding:12px;border-radius:20px;background:rgba(255,255,255,.06);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08);text-align:left;width:100%;align-items:center}
.inv .av{width:58px;height:58px;box-shadow:0 0 0 2px var(--mc,var(--rose))}
.inv .ir{flex:1;min-width:0}
.inv .ir b{font-size:16px;display:flex;justify-content:space-between;align-items:baseline}
.inv .ir b small{font-size:12px;color:var(--rose2);font-weight:700}
.inv .ir span{display:block;font-size:13.5px;color:var(--ink2);margin-top:2px}
.inv .ir em{display:block;font-style:normal;font-size:11.5px;color:#b9a8ff;margin-top:2px}
.inv.all{background:linear-gradient(135deg,rgba(255,79,135,.22),rgba(243,207,142,.16));box-shadow:inset 0 0 0 1px rgba(243,207,142,.4)}
.inv.alone{opacity:.85}

/* ---------- 收藏 ---------- */
.cgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.cg{aspect-ratio:3/4;border-radius:12px;overflow:hidden;position:relative;background:var(--card)}
.cg .pimg{position:absolute;inset:0}
.cg.off{display:grid;place-items:center;color:var(--ink3);font-size:11.5px;text-align:center;padding:6px;box-shadow:inset 0 0 0 1px var(--line)}
.cg small{position:absolute;left:0;right:0;bottom:0;z-index:2;font-size:10.5px;padding:10px 6px 4px;background:linear-gradient(transparent,rgba(0,0,0,.8))}
.erow{display:flex;gap:12px;align-items:center;padding:10px;border-radius:16px;background:var(--card);margin-bottom:8px;text-align:left;width:100%}
.erow .en{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;font:800 14px var(--serif);background:rgba(255,79,135,.15);color:var(--rose2);flex:none}
.erow.off .en{background:rgba(255,255,255,.05);color:var(--ink3)}
.erow .er{flex:1;min-width:0}
.erow .er b{display:block;font-size:15px}
.erow .er span{font-size:12.5px;color:var(--ink3)}
.erow.off .er b{color:var(--ink3)}
.ach{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:14px;background:var(--card);margin-bottom:6px}
.ach i{font-style:normal;font-size:22px;width:30px;text-align:center}
.ach b{display:block;font-size:14px}
.ach span{font-size:12px;color:var(--ink3)}
.ach.off{opacity:.78}
.ach.off b{color:var(--ink2)}
.ach .achlock{font-style:normal;font-size:10.5px;font-weight:500;margin-left:6px;padding:1px 7px;border-radius:8px;background:rgba(255,255,255,.08);color:var(--ink3)}
.ach span{display:block}.ach .achhint{color:var(--gold);opacity:.85;margin-top:2px}
.ach.off i{filter:grayscale(1)}

/* ---------- 結局頁 ---------- */
.endpage{position:absolute;inset:0;z-index:58;overflow-y:auto;background:#0a080d;animation:fadein .6s}
.endpage .eh{position:relative;height:66%;min-height:420px}
.endpage .eh .pimg{position:absolute;inset:0}
.endpage .eh:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,8,13,.2),transparent 30%,rgba(10,8,13,.5) 65%,#0a080d)}
.endpage .et{position:absolute;z-index:2;left:22px;right:22px;bottom:16px;text-align:center}
.endpage .et small{font-size:11.5px;letter-spacing:.34em;color:var(--gold)}
.endpage .et h1{font-family:var(--serif);font-size:40px;letter-spacing:.2em;margin:4px 0 6px .2em;font-weight:900}
.endpage .et p{margin:0;font-family:var(--serif);color:#f2dbe4;font-size:15px}
.endpage .eb{padding:6px 18px calc(36px + var(--sab))}
.estat{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0}
.estat div{text-align:center;padding:10px 4px;border-radius:14px;background:var(--card)}
.estat b{display:block;font-size:20px;color:var(--rose2);font-variant-numeric:tabular-nums}
.estat span{font-size:11.5px;color:var(--ink3)}
.letter{margin-top:16px;padding:18px;border-radius:20px;background:linear-gradient(160deg,rgba(255,143,177,.1),rgba(243,207,142,.06));box-shadow:inset 0 0 0 1px rgba(255,143,177,.2)}
.letter .lh{display:flex;gap:10px;align-items:center;margin-bottom:6px}
.letter .lh .av{width:44px;height:44px;background:#fff}
.letter .lh small{display:block;font-size:11px;letter-spacing:.24em;color:var(--rose2)}
.letter .lh b{font-family:var(--serif);font-size:17px}
.letter p{font-size:14px;color:var(--ink2);margin:8px 0}
.links{display:grid;gap:8px;margin-top:12px}
.lnk{display:flex;gap:12px;align-items:center;padding:12px;border-radius:16px;background:rgba(0,0,0,.25);text-decoration:none;color:var(--ink)}
.lnk i{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;font-style:normal;font-weight:900;flex:none;color:#fff}
.lnk div{flex:1}
.lnk b{display:block;font-size:14.5px}
.lnk span{font-size:12px;color:var(--ink3)}
.edots{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:10px 0}
.edots i{width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.12)}
.edots i.on{background:var(--rose)}

/* ---------- 設定／存檔／作者模式 ---------- */
.setrow{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:14px;border-radius:14px;background:var(--card);margin-bottom:8px;width:100%;text-align:left;font-size:14.5px}
.setrow small{display:block;font-size:12px;color:var(--ink3)}
.tog{width:46px;height:28px;border-radius:14px;background:rgba(255,255,255,.15);position:relative;flex:none;transition:background .2s}
.tog:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .2s}
.tog.on{background:var(--rose)}
.tog.on:after{transform:translateX(18px)}
.slot{padding:14px;border-radius:16px;background:var(--card);margin-bottom:8px}
.slot b{display:block;font-size:14.5px}
.slot span{font-size:12.5px;color:var(--ink3);display:block;margin-bottom:8px}
.slot .row2 .btn{min-height:40px;font-size:13.5px}
.auth .ar{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:9px 12px;border-radius:12px;background:var(--card);margin-bottom:5px;font-size:13px}
.auth .ar small{display:block;color:var(--ink3);font-size:11.5px}
.auth .ar .ok{color:#5cf0a0}
.auth .ar .no{color:var(--ink3)}
.auth .ar button{padding:4px 10px;border-radius:10px;background:var(--card2);font-size:12px;flex:none}
.auth input{width:70px;height:30px;border-radius:8px;border:0;background:var(--card2);padding:0 8px;text-align:right}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* grid 裡的長文字不撐破版面 */
.mlist>*,.clist>*,.shopgrid>*,.mgrid>*,.cgrid>*,.pgrid>*,.apps>*{min-width:0}
.mlist,.clist{grid-template-columns:minmax(0,1fr)}

.pimg.emo{display:grid;place-items:center;font-size:56px;background:radial-gradient(circle at 50% 40%,#3a1626,#120a10)}
.item .pimg.emo{aspect-ratio:1/1}
.sheet .simg .pimg.emo{font-size:80px}
.mtabs{overflow-x:auto;scrollbar-width:none}.mtabs::-webkit-scrollbar{display:none}.mtabs button{flex:1 0 auto;padding:0 10px;white-space:nowrap}

/* 頭像：人物照片的重點在上方（嘴角、下巴） */
.av img{object-position:50% 18%}
.title .hero .pimg img{object-position:58% 50%}

/* 探索進度／島民沒放圖時的佔位 */
.pnote{margin-top:10px;font-size:12px;line-height:1.55;color:var(--ink2);background:rgba(255,79,135,.08);border:1px solid rgba(255,79,135,.18);border-radius:12px;padding:8px 10px}
.pimg.resph{display:grid;place-items:center;width:100%;height:100%;min-height:120px;background:var(--dc)}
.pimg.resph b{font:900 clamp(40px,22vw,120px)/1 var(--serif);color:rgba(255,255,255,.22);letter-spacing:0}
.swc .pimg.resph,.mcard .pimg.resph{position:absolute;inset:0}

/* =====================================================================
   手機 App（20261029.1）
   核心與日常＝玫瑰金　重口味體驗＝暗紅配黑　蒐集與安全＝深紫配銀
   ===================================================================== */
.agrp{margin:16px 0 0;border-radius:24px;padding:10px 6px 12px;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.agrp .apps{padding-top:6px}
.agt{font-size:11.5px;letter-spacing:.24em;padding:0 10px;font-weight:700}
.agrp.g-rose{background:linear-gradient(150deg,rgba(247,214,196,.16),rgba(160,96,106,.12));box-shadow:inset 0 0 0 1px rgba(247,214,196,.22)}
.agrp.g-rose .agt{color:#f7d6c4}
.agrp.g-red{background:linear-gradient(150deg,rgba(140,10,34,.32),rgba(10,2,4,.55));box-shadow:inset 0 0 0 1px rgba(255,60,90,.22)}
.agrp.g-red .agt{color:#ff6b84}
.agrp.g-pur{background:linear-gradient(150deg,rgba(75,42,120,.34),rgba(12,6,24,.55));box-shadow:inset 0 0 0 1px rgba(216,219,230,.2)}
.agrp.g-pur .agt{color:#d8dbe6}
.view.ax.g-rose .vhead h2{color:#f7d6c4}
.view.ax.g-red{background:radial-gradient(120% 60% at 50% 0%,#2a0710,var(--phone) 60%)}
.view.ax.g-red .vhead{background:linear-gradient(#1c050b 70%,transparent)}
.view.ax.g-red .vhead h2{color:#ff8fa3}
.view.ax.g-pur{background:radial-gradient(120% 60% at 50% 0%,#1d1033,var(--phone) 60%)}
.view.ax.g-pur .vhead{background:linear-gradient(#150b26 70%,transparent)}
.view.ax.g-pur .vhead h2{color:#d8dbe6}
.row3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.lockh{background:rgba(255,60,90,.08);box-shadow:inset 0 0 0 1px rgba(255,60,90,.3)}
.pos{color:#ff8fb1}.neg{color:var(--ink3)}b.card{color:var(--gold)}
.btn.sos{background:linear-gradient(135deg,#ff2d4a,#8a0012);color:#fff;margin-top:10px;box-shadow:0 8px 22px rgba(255,30,60,.3)}
.pickman button.pk .av{box-shadow:0 0 0 3px var(--rose)}
.rng{width:100%;accent-color:var(--rose);height:28px}
.mtitle{font:900 28px var(--serif);color:var(--rose2);letter-spacing:.1em;margin:6px 0 10px}

/* 情環主頁 */
.rstat{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:8px;margin-top:14px}
.rstat>div{background:var(--card);border-radius:14px;padding:10px;text-align:center;box-shadow:inset 0 0 0 1px var(--line)}
.rstat b{display:block;font-size:16px;color:var(--rose2);font-variant-numeric:tabular-nums}
.rstat b small{font-size:11px;color:var(--ink3)}
.rstat span{font-size:11px;color:var(--ink3)}
.plog{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 6px;scrollbar-width:none}.plog::-webkit-scrollbar{display:none}
.plb{flex:none;width:64px;text-align:center;font-size:11.5px}
.plb .av{margin:0 auto 4px;box-shadow:0 0 0 2px rgba(255,143,177,.5)}
.plb b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.plb small{color:var(--gold);font-size:10px}
.lgrow{display:flex;gap:12px;padding:12px;border-radius:16px;background:var(--card);margin-bottom:8px}
.lgrow.on{box-shadow:inset 0 0 0 1.5px var(--rose)}
.lgr{flex:1;min-width:0}.lgr>b{display:block;font-size:15px}.lgr>b small{display:block;font-weight:400;color:var(--ink3);font-size:12px}
.rtl{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;color:var(--ink2);margin-top:3px}
.rts button{font-size:19px;color:rgba(255,255,255,.18);padding:0 1px}.rts button.on{color:var(--gold)}
.bigscr{margin-top:8px;border-radius:14px;overflow:hidden;background:#000;box-shadow:0 0 0 2px #2a1520,0 0 30px rgba(255,79,135,.25)}
.bsh{display:flex;justify-content:space-between;padding:6px 12px;font-size:12px;background:linear-gradient(90deg,#3a0f22,#120408)}
.bsh span{color:#ff2d6f;font-weight:900;animation:blink 1.2s infinite}
@keyframes blink{50%{opacity:.3}}
.bsm{overflow:hidden;white-space:nowrap;padding:10px 0;font:700 14px var(--serif);color:#ffd3e0;text-shadow:0 0 8px rgba(255,79,135,.8)}
.bst{display:inline-block;animation:marq 28s linear infinite}
.bst span{margin-right:40px}
@keyframes marq{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* 副卡與付款 */
.ccard{position:relative;aspect-ratio:1.586;border-radius:16px;padding:14px 16px;background:linear-gradient(135deg,var(--c1,#ffb3c9),var(--c2,#9c1f4d));color:#fff;display:flex;flex-direction:column;justify-content:flex-end;box-shadow:0 10px 30px rgba(0,0,0,.45),inset 0 0 0 1px rgba(255,255,255,.18);overflow:hidden;margin-bottom:10px;text-shadow:0 1px 3px rgba(0,0,0,.5)}
.ccard:before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 35%,rgba(255,255,255,.22) 50%,transparent 65%)}
.ccard.me{--c1:#fff;--c2:#f3cf8e;color:#3a2306;text-shadow:none}
.ccard b{font:900 17px var(--serif);letter-spacing:.06em}.ccard small{font-size:13px;letter-spacing:.2em;opacity:.85}.ccard em{position:absolute;top:14px;right:16px;font-style:normal;font-size:12px;opacity:.85}
.chipg{position:absolute;top:16px;left:16px;width:36px;height:27px;border-radius:6px;background:linear-gradient(135deg,#f6e0a8,#b48a4a);box-shadow:inset 0 0 0 1px rgba(0,0,0,.2)}
.ccard.sm{width:210px;flex:none;margin:0}
.ccard.lock{--c1:#2a2430;--c2:#120e16;opacity:.6;justify-content:center;text-align:center}
.cscroll{display:flex;gap:10px;overflow-x:auto;padding-bottom:6px}
.cmeta{display:flex;justify-content:space-between;font-size:12px;color:var(--ink3);margin:-4px 4px 12px}
.paybar{display:grid;gap:6px}
.payc{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;background:var(--card);box-shadow:inset 0 0 0 1px var(--line);text-align:left}
.payc.on{box-shadow:inset 0 0 0 1.5px var(--gold);background:rgba(243,207,142,.08)}
.payc.low{opacity:.5}
.payc b{flex:1;font-size:14px}.payc small{font-size:11.5px;color:var(--ink3)}
.pcme{width:34px;height:22px;border-radius:5px;background:linear-gradient(135deg,#fff,var(--gold));color:#3a2306;font-style:normal;display:grid;place-items:center;font-weight:900}
.pcd{width:34px;height:22px;border-radius:5px;background:linear-gradient(135deg,var(--c1),var(--c2))}

/* 慾望地圖 */
.smk{position:absolute;width:var(--s);height:var(--s);transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,rgba(255,110,160,var(--o)),rgba(255,79,135,0) 70%);filter:blur(4px);pointer-events:none;animation:smk 4s ease-in-out infinite;z-index:1}
.smk:after{content:"♥";position:absolute;left:50%;top:40%;transform:translateX(-50%);color:rgba(255,210,225,.7);font-size:calc(var(--s)*.28);animation:smkh 4s ease-in-out infinite}
@keyframes smk{0%,100%{transform:translate(-50%,-50%) scale(.85)}50%{transform:translate(-50%,-58%) scale(1.12)}}
@keyframes smkh{0%{opacity:0;transform:translate(-50%,10px)}40%{opacity:1}100%{opacity:0;transform:translate(-50%,-26px)}}
.hpin .pi{background:linear-gradient(135deg,#ffd3e0,#ff8fb1)}
.hpin small em{font-style:normal;color:#ff8fb1}
.lvlist{display:grid;gap:8px}
.lvrow{display:flex;gap:10px;align-items:center;padding:10px;border-radius:14px;background:var(--card);text-align:left;width:100%}
.lvi{font-size:24px;width:40px;text-align:center}.lvr{flex:1;min-width:0}.lvr b{display:block;font-size:14.5px}.lvr span{font-size:12px;color:var(--ink3)}
.lvh{width:56px;height:6px;border-radius:3px;background:rgba(255,255,255,.08);overflow:hidden}.lvh i{display:block;height:100%;background:linear-gradient(90deg,#ff8fb1,#ff2d6f)}
.lvcard{background:var(--card);border-radius:16px;padding:12px;margin-top:10px;box-shadow:inset 0 0 0 1px var(--line)}
.lvt{display:flex;justify-content:space-between}.lvt b{font-size:15.5px}
.lvcard p{margin:4px 0 6px;font-size:13.5px;color:var(--ink2)}
.lvm{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--ink3)}

/* 愛幣錢包 */
.walhead{text-align:center;padding:10px 0 14px}
.walhead small{color:var(--ink3);letter-spacing:.2em;font-size:11px}.walhead b{display:block;font:900 34px var(--serif);color:#f7d6c4;font-variant-numeric:tabular-nums}.walhead span{font-size:12px;color:var(--ink3)}
.wst{text-align:center}.wst span{display:block;font-size:12px;color:var(--ink3)}.wst b{font-size:18px}
.wbars{display:flex;gap:6px;align-items:flex-end;height:110px;padding:6px 4px;background:var(--card);border-radius:14px}
.wb{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%}
.wbb{flex:1;width:100%;display:flex;gap:2px;align-items:flex-end;justify-content:center}
.wbb i{width:40%;border-radius:3px 3px 0 0;min-height:2px}.wbb .in{background:linear-gradient(#ff8fb1,#c2306a)}.wbb .out{background:rgba(255,255,255,.22)}
.wb small{font-size:10.5px;color:var(--ink3)}.wb.now small{color:var(--rose2);font-weight:700}
.ledrow{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 4px;border-bottom:1px solid var(--line);font-size:13.5px}
.ledrow small{display:block;font-size:11px;color:var(--ink3)}.ledrow b{font-variant-numeric:tabular-nums;white-space:nowrap}
.fgt{display:flex;gap:10px;align-items:center;padding:10px;border-radius:16px;background:var(--card);margin-bottom:8px}
.fgr{flex:1;min-width:0}.fgr b{display:block;font-size:14.5px}.fgr span{font-size:11.5px;color:var(--ink3);display:block}.fgr em{font-style:normal;font-size:11.5px;color:var(--gold)}
.fgo{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.fgo b{color:var(--gold);font-size:16px}
.fgo button{font-size:12px;padding:3px 10px;border-radius:10px;background:rgba(255,79,135,.18)}.fgo button[disabled]{opacity:.35}
.fxbox{text-align:center;padding:16px;border-radius:18px;background:linear-gradient(150deg,rgba(247,214,196,.12),rgba(0,0,0,.2));box-shadow:inset 0 0 0 1px rgba(247,214,196,.2)}
.fxbox small{color:var(--ink3);font-size:12px}.fxbox b{display:block;font:900 22px var(--serif);margin:4px 0}.fxbox b em{font-style:normal;font-size:13px}.fxbox span{font-size:12px;color:var(--ink3)}
.row3 .btn{min-height:42px;padding:6px;font-size:13px}
.rkrow{display:flex;gap:10px;align-items:center;padding:9px 6px;border-bottom:1px solid var(--line);font-size:14px}
.rkrow em{width:22px;font-style:normal;color:var(--gold);font-weight:900}.rkrow span{flex:1}.rkrow i{font-style:normal;font-size:11px}
.rkrow.me{background:rgba(255,79,135,.12);border-radius:10px}

/* 情浪動態 */
.wlist{margin-top:12px}
.wpost{background:var(--card);border-radius:18px;padding:12px;margin-bottom:12px;box-shadow:inset 0 0 0 1px var(--line)}
.wpost .ph1{display:flex;gap:10px;align-items:center;margin-bottom:8px}.wpost .ph1 b{display:block;font-size:14px}.wpost .ph1 small{color:var(--ink3);font-size:11.5px}
.wimg{border-radius:14px;overflow:hidden;aspect-ratio:4/5}.wimg .pimg{height:100%}
.wtile{border-radius:14px;aspect-ratio:4/3;background:linear-gradient(150deg,var(--c1),var(--c2));display:grid;place-items:center;position:relative;overflow:hidden;padding:16px;text-align:center}
.wtile b{font:900 90px/1 var(--serif);color:rgba(255,255,255,.18);position:absolute}.wtile span{position:relative;font-size:13.5px;color:#fff;text-shadow:0 1px 4px #000}
.wpost .pt{font-size:14px;margin-top:8px}.wpost .pt b{margin-right:6px}
.wpost .cm{font-size:13px;color:var(--ink2);margin-top:3px}.wpost .cm b{margin-right:6px;color:var(--ink)}
.wpost .pa{display:flex;gap:14px;margin-top:8px;font-size:13px;color:var(--ink2)}.wpost .pa button{display:flex;gap:4px;align-items:center}.wpost .pa button.on{color:var(--rose)}.wpost .pa i{font-style:normal}
.wvoice{display:flex;align-items:center;gap:10px;width:100%;padding:12px;border-radius:14px;background:linear-gradient(135deg,rgba(247,214,196,.14),rgba(160,96,106,.18))}
.wvoice .pl{width:36px;height:36px;border-radius:50%;background:#f7d6c4;color:#5a2a32;display:grid;place-items:center;font-style:normal;flex:none}
.wf{flex:1;display:flex;align-items:center;gap:2px;height:34px}.wf i{flex:1;height:var(--h);border-radius:2px;background:rgba(247,214,196,.55)}
.wvoice.on .wf i{animation:wv .5s ease-in-out infinite alternate}.wvoice.on .wf i:nth-child(3n){animation-delay:.15s}.wvoice.on .wf i:nth-child(3n+1){animation-delay:.3s}
@keyframes wv{from{transform:scaleY(.3)}to{transform:scaleY(1.15)}}
.wvoice small{font-size:11.5px;color:var(--ink3)}
.wvoice.big{margin-top:12px}
.vtx{margin-top:8px;padding:10px 14px;border-radius:12px;background:rgba(0,0,0,.25);font:500 15px/1.7 var(--serif);color:#ffe3ec}
.vr18{margin-top:8px;padding-top:8px;border-top:1px dashed rgba(255,143,177,.35);font-size:14px;white-space:pre-wrap}
.wclip{position:relative;display:grid;place-items:center;width:100%;aspect-ratio:9/12;border-radius:14px;overflow:hidden;background:radial-gradient(circle at 50% 40%,#3a1626,#08040a)}
.wclip .pimg{position:absolute;inset:0;filter:blur(14px) brightness(.6)}
.wclip .pl{position:relative;width:60px;height:60px;border-radius:50%;background:rgba(255,255,255,.18);backdrop-filter:blur(6px);display:grid;place-items:center;font-style:normal;font-size:22px}
.wclip small{position:absolute;right:10px;bottom:8px;font-size:12px}.wclip em{position:absolute;left:10px;top:8px;font-style:normal;font-size:11px;padding:1px 8px;border-radius:8px;background:#ff2d6f}

/* 掠奪配對・安全環 */
.rolecards{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.rolec{padding:16px 10px;border-radius:18px;background:linear-gradient(160deg,#2a0810,#0b0204);box-shadow:inset 0 0 0 1px rgba(255,60,90,.22);text-align:center}
.rolec i{font-style:normal;font-size:34px;display:block}.rolec b{display:block;font:900 16px var(--serif);margin-top:4px}.rolec span{font-size:12px;color:var(--ink3)}
.rolec.on{box-shadow:inset 0 0 0 2px #ff2d4a,0 0 24px rgba(255,45,74,.35);background:linear-gradient(160deg,#5a0c1e,#120306)}
.radar{position:absolute;inset:0;z-index:70;background:rgba(5,0,2,.86);display:grid;place-items:center}
.rd{position:relative;width:220px;height:220px;display:grid;place-items:center}
.rd i{position:absolute;inset:0;border-radius:50%;border:2px solid #ff2d4a;animation:rd 1.5s ease-out infinite;opacity:0}.rd i:nth-child(2){animation-delay:.5s}.rd i:nth-child(3){animation-delay:1s}
@keyframes rd{from{transform:scale(.2);opacity:1}to{transform:scale(1.2);opacity:0}}
.rd b{position:relative;font:700 15px var(--serif);color:#ff8fa3}
.alarmfx{position:absolute;inset:0;z-index:90;pointer-events:none;animation:alf .2s steps(2) infinite;background:rgba(255,0,40,.28)}
@keyframes alf{50%{background:rgba(255,0,40,0)}}
.sosw{text-align:center;padding:8px 0}
.sosbig{position:relative;width:170px;height:170px;border-radius:50%;margin:4px auto 6px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 40%,#6a4aa0,#22113f 70%);box-shadow:0 0 0 6px rgba(216,219,230,.12),0 0 40px rgba(140,100,220,.35);color:#eef0f8;touch-action:none;user-select:none;-webkit-user-select:none}
.sosbig b{font:900 26px var(--serif);letter-spacing:.2em}.sosbig span{font-size:12px;color:#c9c6dc}
.sosbig i{position:absolute;inset:-6px;border-radius:50%;background:conic-gradient(#d8dbe6 var(--p,0%),transparent 0)}
.sosbig i:after{content:"";position:absolute;inset:6px;border-radius:50%;background:radial-gradient(circle at 50% 40%,#6a4aa0,#22113f 70%)}
.sosbig b,.sosbig span{position:relative}
.sosbig.hold i{animation:hold 1.5s linear forwards}
@property --p{syntax:'<percentage>';inherits:false;initial-value:0%}
@keyframes hold{to{--p:100%}}
.sfst .card{text-align:center;padding:10px 6px}.sfst b{display:block;font-size:16px;color:#d8dbe6}.sfst span{font-size:11px;color:var(--ink3)}

/* 觸夢預約 */
.tprev{display:flex;gap:12px;align-items:center;padding:12px;border-radius:18px;background:radial-gradient(circle at 20% 80%,#1c3a2a,#06100a 75%);box-shadow:inset 0 0 0 1px rgba(120,255,180,.15)}
.tv{position:relative;width:96px;height:96px;flex:none}
.tv i{position:absolute;left:50%;bottom:0;width:7px;height:78px;margin-left:-3.5px;border-radius:6px 6px 3px 3px;background:linear-gradient(#b8ffd8,#2a8a5a);transform-origin:bottom center;transform:rotate(var(--r));animation:tent 2.2s ease-in-out infinite alternate;animation-delay:var(--d);box-shadow:0 0 8px rgba(140,255,200,.5)}
@keyframes tent{from{transform:rotate(calc(var(--r) - 8deg)) scaleY(.92)}to{transform:rotate(calc(var(--r) + 8deg)) scaleY(1.04)}}
.tmeta b{display:block;color:#b8ffd8;font-size:14px}.tmeta span{font-size:12.5px;color:var(--ink2);display:block}.tmeta em{font-style:normal;color:var(--gold);font-weight:700}
.thermo{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.thermo button{padding:10px 4px;border-radius:12px;background:var(--card);text-align:center}.thermo b{display:block;font-size:14px}.thermo span{font-size:11px;color:var(--ink3)}
.thermo button.on{background:linear-gradient(180deg,rgba(255,120,80,.25),rgba(255,45,74,.12));box-shadow:inset 0 0 0 1.5px #ff6a4a}

/* 鞭欲名單 */
.wcard{background:linear-gradient(160deg,#1e060c,#0a0204);border-radius:18px;padding:12px;margin-bottom:12px;box-shadow:inset 0 0 0 1px rgba(255,60,90,.18)}
.wct{display:flex;gap:12px;align-items:center}.wct .av{box-shadow:0 0 0 2px #ff2d4a}
.wcr{flex:1;min-width:0}.wcr b{display:block;font-size:15.5px}.wcr span{display:block;font-size:12px;color:var(--ink3)}.wcr .wst{color:var(--gold);font-size:12.5px}
.wtools{font-size:12px;color:var(--ink3);margin:8px 0 4px}
.wrev{font-size:12.5px;color:var(--ink2);padding:6px 10px;border-left:2px solid rgba(255,60,90,.5);margin-top:6px;background:rgba(255,255,255,.03);border-radius:0 8px 8px 0}

/* 劇場開演 */
.show{background:linear-gradient(160deg,#20070c,#0b0204);border-radius:18px;padding:14px;margin-top:12px;box-shadow:inset 0 0 0 1px rgba(255,60,90,.18)}
.show.now{box-shadow:inset 0 0 0 1.5px var(--gold),0 0 24px rgba(243,207,142,.2)}
.shh small{color:var(--gold);font-size:12px}.shh b{display:block;font:900 20px var(--serif)}.shh span{font-size:12px;color:var(--ink3)}
.show p{font-size:13.5px;color:var(--ink2);margin:6px 0}
.shbar{position:relative;height:18px;border-radius:9px;background:rgba(255,255,255,.07);overflow:hidden;margin:6px 0 10px}.shbar i{display:block;height:100%;background:linear-gradient(90deg,#7a0f22,#ff2d4a)}.shbar span{position:absolute;inset:0;font-size:11px;display:grid;place-items:center}
.tix{font-size:13px;color:var(--gold);margin-bottom:8px}
.show .btn{min-height:42px}
.seatov{position:absolute;inset:0;z-index:70;background:rgba(8,2,4,.96);padding:calc(48px + var(--sat)) 16px 20px;display:flex;flex-direction:column;gap:10px}
.sth{display:flex;justify-content:space-between;align-items:center}.sth b{font:900 18px var(--serif)}.sth span{font:900 26px var(--serif);color:#ff2d4a;font-variant-numeric:tabular-nums}
.stage-l{text-align:center;padding:8px;border-radius:50% 50% 8px 8px/30% 30% 8px 8px;background:linear-gradient(#7a0f22,#3a0610);letter-spacing:1em;font-weight:700;font-size:13px}
.seats{display:grid;grid-template-columns:repeat(10,1fr);gap:5px;padding:6px}
.seats button{aspect-ratio:1;border-radius:6px 6px 3px 3px;background:#3a2a30;box-shadow:inset 0 -3px 0 rgba(0,0,0,.35);transition:transform .15s}
.seats button.f{background:#8a5a2a}
.seats button:not(.x):active{transform:scale(.85)}
.seats button.x{background:#151015;pointer-events:none}
.seats button.pop{animation:pop .3s}
@keyframes pop{50%{transform:scale(1.25);background:#ff2d4a}}

/* 溫泉濕池 */
.plist{display:grid;gap:10px}
.pcard{display:flex;gap:10px;padding:8px;border-radius:16px;background:var(--card)}
.pct{position:relative;width:92px;height:80px;border-radius:12px;overflow:hidden;flex:none}.pct .pimg{height:100%}
.ptemp{position:absolute;right:4px;bottom:4px;padding:1px 6px;border-radius:8px;background:rgba(0,0,0,.6);font-size:11px}.ptemp b{font-size:15px;color:#ffb38a}
.pcr{flex:1;min-width:0}.pcr b{display:block;font-size:14.5px}.pcr span{display:block;font-size:12px;color:var(--ink3)}.pcr em{display:block;font-style:normal;font-size:12px;color:#ffb3c9;margin-top:2px}

/* 肌硬訓練 */
.coach{display:flex;gap:12px;width:100%;text-align:left;padding:10px;border-radius:18px;background:linear-gradient(160deg,#1e060c,#0a0204);margin-bottom:10px;box-shadow:inset 0 0 0 1px rgba(255,60,90,.18)}
.cph{position:relative;width:96px;height:128px;border-radius:12px;overflow:hidden;flex:none}.cph .pimg{height:100%;min-height:0}
.cbadge{position:absolute;left:6px;top:6px;font-size:10.5px;padding:1px 7px;border-radius:8px;background:#ff2d4a}
.cr{flex:1;min-width:0}.cr>b{font-size:16px;display:block}.cr>span{font-size:12px;color:var(--ink3)}
.fit{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin:8px 0}
.fit>div{text-align:center;padding:6px 2px;border-radius:10px;background:rgba(255,255,255,.05)}.fit b{display:block;font-size:14px;color:#ff8fa3}.fit b small{font-size:10px;color:var(--ink3)}.fit span{font-size:10.5px;color:var(--ink3)}
.repov{position:absolute;inset:0;z-index:70;background:radial-gradient(circle at 50% 30%,#3a0812,#050102 70%);display:flex;flex-direction:column;justify-content:center;align-items:center;gap:24px;padding:24px}
.rph{text-align:center}.rph small{color:var(--ink3);letter-spacing:.2em}.rph b{display:block;font:900 24px var(--serif)}.rph span{font:900 20px var(--serif);color:var(--gold)}
.rpbar{position:relative;width:100%;height:34px;border-radius:17px;background:rgba(255,255,255,.08);overflow:hidden}
.rpbar .zone{position:absolute;top:0;bottom:0;background:linear-gradient(90deg,rgba(255,79,135,.4),rgba(255,79,135,.75),rgba(255,79,135,.4));transition:left .2s,width .2s}
.rpbar .mk{position:absolute;top:-4px;bottom:-4px;width:6px;margin-left:-3px;border-radius:3px;background:#fff;box-shadow:0 0 12px #fff}
.rpmsg{font:700 18px var(--serif);min-height:28px;color:var(--ink2)}.rpmsg.ok{color:#ff8fb1}.rpmsg.ng{color:var(--ink3)}
.rpbtn{width:150px;height:150px;border-radius:50%;background:radial-gradient(circle at 50% 35%,#ff4f6f,#8a0012);font:900 34px var(--serif);color:#fff;box-shadow:0 10px 40px rgba(255,30,60,.45),inset 0 -6px 0 rgba(0,0,0,.25)}
.rpbtn:active{transform:scale(.94)}

/* 迷宮迷途 */
.mzhero{padding:18px;border-radius:18px;background:linear-gradient(160deg,#16301e,#050d08);text-align:center;margin-bottom:10px;box-shadow:inset 0 0 0 1px rgba(120,255,160,.15)}
.mzhero b{display:block;font:900 24px var(--serif);color:#b8ffd0}.mzhero span{font-size:12px;color:var(--ink3)}
.mzov{position:absolute;inset:0;z-index:70;background:#050a07;display:flex;flex-direction:column;padding:calc(44px + var(--sat)) 10px calc(12px + var(--sab));gap:8px}
.mzh{display:flex;align-items:center;gap:10px}.mzh b{font-size:15px}.mzh span{font:900 22px var(--serif);color:#ff8fb1;font-variant-numeric:tabular-nums;flex:1;text-align:center}.mzh em{font-style:normal;font-size:12.5px;color:var(--ink2)}
.mzh button{font-size:12px;padding:4px 10px;border-radius:10px;background:var(--card2)}
.mzb{position:relative;display:grid;grid-template-columns:repeat(var(--n),1fr);width:100%;aspect-ratio:1;border-radius:10px;overflow:hidden;touch-action:none}
.mzb i{display:block;transition:opacity .25s}
.mzb i.w{background:linear-gradient(135deg,#1f5a32,#0e2a17);box-shadow:inset 0 0 0 1px rgba(0,0,0,.25)}
.mzb i.p{background:#0b1a10}
.mzb i.p.fog{opacity:.35}
.mzb b{position:absolute;left:calc(var(--x)*100%/var(--n));top:calc(var(--y)*100%/var(--n));width:calc(100%/var(--n));height:calc(100%/var(--n));display:grid;place-items:center;transition:left .16s,top .16s;font-size:calc(min(100vw,430px)/var(--n)*.6)}
.mzb b.mzp:after{content:"";width:62%;height:62%;border-radius:50%;background:radial-gradient(circle,#fff,#f3cf8e);box-shadow:0 0 12px #f3cf8e}
.mzb b.mzn:after{content:"";width:58%;height:58%;border-radius:50%;background:radial-gradient(circle,#ffd3e0,#ff2d6f);box-shadow:0 0 14px #ff2d6f;animation:blink 1s infinite}
.mzb b.mzg,.mzb b.mze{font-style:normal}
.mzpad{display:grid;grid-template-columns:repeat(3,64px);grid-template-rows:repeat(2,56px);gap:6px;justify-content:center;margin-top:auto}
.mzpad button{border-radius:14px;background:var(--card2);font-size:20px;touch-action:none;user-select:none;-webkit-user-select:none}
.mzpad button:nth-child(1){grid-column:2;grid-row:1}.mzpad button:nth-child(2){grid-column:1;grid-row:2}.mzpad button:nth-child(3){grid-column:3;grid-row:2}.mzpad button:nth-child(4){grid-column:2;grid-row:2}
.mzend{text-align:center;padding:14px;border-radius:16px;background:var(--card)}.mzend b{display:block;font:900 22px var(--serif);color:#b8ffd0}.mzend span{font-size:13px;color:var(--ink2)}

/* 電梯塔通行 */
.liftv{display:flex;gap:12px;height:220px}
.lshaft{position:relative;width:120px;flex:none;border-radius:14px;background:linear-gradient(#0e0a14,#1c0a12);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08);overflow:hidden}
.lshaft i{position:absolute;left:0;right:0;height:0;border-top:1px dashed rgba(255,255,255,.12);font-style:normal}
.lshaft i span{position:absolute;left:6px;top:-14px;font-size:9.5px;color:var(--ink3);white-space:nowrap}.lshaft i.on span{color:#ff8fa3}
.lcab{position:absolute;right:8px;width:26px;height:22px;margin-bottom:-11px;border-radius:4px;background:rgba(200,240,255,.35);box-shadow:0 0 0 1.5px #c8f0ff,0 0 16px rgba(200,240,255,.6);transition:bottom .3s}
.lread{flex:1;display:flex;flex-direction:column;justify-content:center}
.lread small{color:var(--ink3);font-size:12px}.lread b{font:900 56px/1 var(--serif);color:#ff8fa3}.lread b em{font-style:normal;font-size:22px}.lread span{font-weight:700}.lread p{font-size:12.5px;color:var(--ink2);margin:4px 0 0}
.lshop{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.lsi{padding:12px;border-radius:16px;background:linear-gradient(160deg,#1e060c,#0a0204);text-align:left;box-shadow:inset 0 0 0 1px rgba(243,207,142,.2)}
.lsi i{font-style:normal;font-size:26px}.lsi b{display:block;font-size:13.5px}.lsi span{display:block;font-size:11px;color:var(--ink3);min-height:44px}.lsi em{font-style:normal;font-size:12px;color:var(--gold);font-weight:700}
.lsi.got{opacity:.45}
.liftov{position:absolute;inset:0;z-index:70;background:radial-gradient(circle at 50% 50%,#1c0a14,#000);display:grid;place-items:center}
.lfn{text-align:center}.lfn small{color:var(--ink3);letter-spacing:.3em}.lfn b{display:block;font:900 96px/1 var(--serif);color:#ff8fa3;font-variant-numeric:tabular-nums;text-shadow:0 0 30px rgba(255,79,135,.6)}.lfn span{color:#ff8fa3;animation:blink .6s infinite}

/* 情海校務通 */
.stcard{position:relative;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;padding:16px;border-radius:18px;background:linear-gradient(135deg,#5a0c1e,#1a0408);box-shadow:inset 0 0 0 1px rgba(243,207,142,.25);margin-bottom:10px}
.stcard small{color:var(--gold);font-size:11.5px;letter-spacing:.1em}.stcard b{display:block;font:900 22px var(--serif)}.stcard span{font-size:12px;color:var(--ink3)}
.stcr{text-align:center}.stcr b{font-size:28px;color:var(--gold)}.stcr b small{font-size:13px;color:var(--ink3)}
.stcard p{width:100%;margin:8px 0 0;font-size:11px;color:var(--ink3)}
.ttab{display:grid;gap:3px;font-size:11.5px}
.tth,.ttr{display:grid;grid-template-columns:58px repeat(3,1fr);gap:3px}
.tth span{text-align:center;color:var(--ink3);padding:4px 0}
.ttr span{padding:7px 4px;border-radius:8px;background:var(--card);text-align:center;line-height:1.3}
.ttr span:first-child{background:none;color:var(--ink3);text-align:left}.ttr span small{font-size:9.5px}
.ttr.now span{background:rgba(255,79,135,.1)}.ttr.now span:first-child{color:var(--rose2);font-weight:700;background:none}
.ttr span.cur{box-shadow:inset 0 0 0 1.5px var(--gold);color:var(--gold)}.ttr span.done{color:var(--ink3)}
.prof{background:var(--card);border-radius:18px;padding:12px;margin-bottom:12px}
.pft{display:flex;gap:12px;align-items:center}.pft b{display:block;font-size:16px}.pft span{display:block;font-size:12px;color:var(--ink3)}
.pfr{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12px;color:var(--ink2);margin:8px 0}.pfr b{color:var(--gold);font-weight:400}
.prof .btn{min-height:40px;margin-top:8px}

/* 隱藏卡牌 */
.hchead{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:6px;margin-bottom:10px}
.hchead>div{background:var(--card);border-radius:12px;padding:8px;text-align:center;font-size:13px}
.hchead b{font-size:22px;color:#d8dbe6}.hchead b small{font-size:12px;color:var(--ink3)}.hchead span{display:block;font-size:10.5px;color:var(--ink3)}
.hchead em{display:block;font-style:normal;font-weight:900;font-size:12px}
em.SSR{color:#ffd76a}em.SR{color:#c8a8ff}em.R{color:#a8c8e0}
.hgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}
.hcw{position:relative}
.hcw.new:after{content:"NEW";position:absolute;top:-6px;right:-4px;font-size:10px;font-weight:900;padding:1px 6px;border-radius:8px;background:#ff2d6f;z-index:3}
.hcard{position:relative;aspect-ratio:5/7;border-radius:12px;overflow:hidden;background:#100a18;box-shadow:0 6px 16px rgba(0,0,0,.5)}
.hcard>.pimg{position:absolute;inset:0;height:100%;min-height:0}
.hcard.SSR{box-shadow:0 0 0 2px #ffd76a,0 0 18px rgba(255,215,106,.45)}
.hcard.SR{box-shadow:0 0 0 2px #c8a8ff,0 0 12px rgba(200,168,255,.35)}
.hcard.R{box-shadow:0 0 0 1.5px #a8c8e0}
.hcard.SSR:before{content:"";position:absolute;inset:0;z-index:2;background:linear-gradient(115deg,transparent 30%,rgba(255,240,200,.35) 45%,transparent 60%);background-size:250% 100%;animation:shine 3s linear infinite;pointer-events:none}
@keyframes shine{from{background-position:120% 0}to{background-position:-120% 0}}
.hcb{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:16px 6px 6px;background:linear-gradient(transparent,rgba(0,0,0,.85));text-align:left}
.hcb em{font-style:normal;font-size:10px;font-weight:900}.hcard.SSR .hcb em{color:#ffd76a}.hcard.SR .hcb em{color:#c8a8ff}.hcard.R .hcb em{color:#a8c8e0}
.hcb b{display:block;font:900 13px var(--serif)}.hcb small{display:block;font-size:9.5px;color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hcard.big .hcb b{font-size:22px}.hcard.big .hcb em{font-size:13px}.hcard.big .hcb small{font-size:12px}
.hcard.back{background:repeating-linear-gradient(45deg,#1d1033 0 8px,#160c28 8px 16px)}
.hbk{position:absolute;inset:8px;border-radius:8px;border:1px solid rgba(216,219,230,.25);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:6px}
.hbk i{font-style:normal;font-size:26px;color:#d8dbe6;opacity:.7}.hbk em{font-style:normal;font-weight:900;font-size:12px;color:#d8dbe6}.hbk b{font-size:11px;color:var(--ink2);margin-top:4px}.hbk small{font-size:10px;color:var(--ink3)}
.hcard.back.SSR .hbk i,.hcard.back.SSR .hbk em{color:#ffd76a}
.sheet .hcard.back{width:150px}
.hflip{perspective:900px;width:220px;margin:4px auto 0}
.hfi{position:relative;transform-style:preserve-3d}
.hfi>.hcard{backface-visibility:hidden}
.hfb{position:absolute;inset:0;transform:rotateY(180deg);backface-visibility:hidden}.hfb .hcard{height:100%}
.hflip.go .hfi{animation:flip 1.1s cubic-bezier(.3,1.4,.5,1) both}
@keyframes flip{from{transform:rotateY(180deg)}to{transform:rotateY(0)}}
.newc{text-align:center;font:900 20px var(--serif);color:#ffd76a;margin:8px 0 0;letter-spacing:.2em;animation:blink 1s 3}

/* =====================================================================
   20261030 改版：開場、序章、登島登記、左右滑主畫面、導覽
   ===================================================================== */

/* ---------- 標題畫面 ---------- */
.title2{position:absolute;inset:0;overflow:hidden;background:#07050a}
.t2bg{position:absolute;inset:0}
.t2bg .pimg{position:absolute;inset:0}
.t2bg img{object-position:50% 30%}
@keyframes kb{from{transform:scale(1.04) translate(0,0)}to{transform:scale(1.14) translate(-2%,-3%)}}
.t2shade{position:absolute;inset:0;background:radial-gradient(120% 60% at 50% 18%,transparent 30%,rgba(7,5,10,.35) 60%),linear-gradient(180deg,rgba(7,5,10,.25) 0%,rgba(7,5,10,0) 22%,rgba(7,5,10,.55) 48%,rgba(7,5,10,.94) 66%,#07050a 100%)}
.t2spark{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.t2spark i{position:absolute;left:var(--x);bottom:-20px;width:var(--s);height:var(--s);border-radius:50%;background:radial-gradient(circle,#ffd9e6,rgba(255,143,177,.6) 40%,transparent 70%);opacity:0;animation:rise 9s linear infinite;animation-delay:var(--d);filter:blur(calc(var(--z)*.6px))}
@keyframes rise{0%{transform:translate(0,0);opacity:0}12%{opacity:.9}70%{opacity:.6}100%{transform:translate(30px,-105vh);opacity:0}}
.t2main{position:absolute;left:0;right:0;bottom:0;z-index:3;padding:0 24px calc(22px + var(--sab));text-align:center}
.t2logo .tag{font-size:12.5px;letter-spacing:.42em;color:var(--rose2);opacity:0;animation:up .6s .05s forwards}
.t2logo h1{margin:6px 0 0 .22em;font-family:var(--serif);font-weight:900;font-size:clamp(54px,17vw,70px);letter-spacing:.22em;line-height:1.08}
.t2logo h1 span{display:inline-block;background:linear-gradient(170deg,#fff 15%,#ffc2d6 55%,#f3cf8e 95%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 6px 24px rgba(255,79,135,.45));opacity:0;animation:inkin 1.1s cubic-bezier(.2,.8,.2,1) forwards}
.t2logo h1 span:nth-child(1){animation-delay:.1s}.t2logo h1 span:nth-child(2){animation-delay:.2s}.t2logo h1 span:nth-child(3){animation-delay:.3s}
@keyframes inkin{from{opacity:0;transform:translateY(14px) scale(1.08);filter:blur(10px) drop-shadow(0 6px 24px rgba(255,79,135,0))}to{opacity:1;transform:none;filter:blur(0) drop-shadow(0 6px 24px rgba(255,79,135,.45))}}
.t2logo .en{font-size:10.5px;letter-spacing:.6em;color:var(--gold);display:flex;align-items:center;justify-content:center;gap:12px;opacity:0;animation:up .6s .4s forwards;margin-top:2px}
.t2logo .en:before,.t2logo .en:after{content:"";width:34px;height:1px;background:linear-gradient(90deg,transparent,currentColor)}
.t2logo .en:after{transform:scaleX(-1)}
@keyframes up{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.t2pitch{font-family:var(--serif);font-size:14.5px;line-height:1.85;color:#d9ccd4;margin:14px 0 14px;opacity:0;animation:up .6s .45s forwards}
.t2pitch b{color:#fff;font-weight:700}
.t2btns{display:grid;gap:10px;opacity:0;animation:up .6s .55s forwards}
.btn.glow{position:relative;overflow:hidden;min-height:54px;font-size:16.5px;letter-spacing:.22em;box-shadow:0 10px 34px rgba(255,79,135,.42),inset 0 0 0 1px rgba(255,255,255,.2)}
.btn.glow:after{content:"";position:absolute;top:0;bottom:0;width:40%;left:-60%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.45),transparent);animation:sheen 3.2s .9s infinite}
@keyframes sheen{0%{left:-60%}35%,100%{left:130%}}
.t2feat{display:grid;grid-template-columns:repeat(4,1fr);margin:16px 0 4px;opacity:0;animation:up .6s .65s forwards}
.t2feat div{position:relative}
.t2feat div+div:before{content:"";position:absolute;left:0;top:18%;bottom:18%;width:1px;background:var(--line)}
.t2feat b{display:block;font-family:var(--serif);font-size:20px;color:var(--gold);line-height:1.2}
.t2feat span{font-size:11px;color:var(--ink3);letter-spacing:.06em}
.t2links{display:flex;justify-content:center;align-items:center;gap:14px;margin-top:10px;font-size:13px;color:var(--ink2);opacity:0;animation:up .6s .75s forwards}
.t2links i{width:3px;height:3px;border-radius:50%;background:var(--ink3)}
.t2links button{padding:6px 4px}
.t2ver{font-size:10.5px;color:var(--ink3);opacity:.6;margin:6px 0 0}

/* ---------- 序章：妳自己的手機 ---------- */
.plock{position:absolute;inset:0;overflow:hidden;background:#000;animation:fadein .6s}
.plbg{position:absolute;inset:0}
.plbg .pimg{position:absolute;inset:0}
.plbg img{filter:saturate(.35) brightness(.42) blur(1px)}
.plock:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.25),rgba(0,0,0,.05) 35%,rgba(0,0,0,.65));pointer-events:none}
.pltime{position:relative;z-index:2;text-align:center;padding-top:calc(76px + var(--sat))}
.pltime .d{font-size:15px;font-weight:600;opacity:.85}
.pltime .t{font-size:84px;font-weight:200;line-height:1;letter-spacing:-.02em;margin-top:4px}
.plnotes{position:absolute;z-index:3;left:12px;right:12px;bottom:calc(120px + var(--sab));display:flex;flex-direction:column;gap:8px}
.pln{display:flex;gap:11px;align-items:center;padding:12px 13px;border-radius:22px;background:rgba(40,34,44,.62);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);text-align:left;width:100%;animation:nin .5s cubic-bezier(.2,.9,.3,1.15);box-shadow:0 8px 24px rgba(0,0,0,.35)}
@keyframes nin{from{opacity:0;transform:translateY(-16px) scale(.96)}}
.pln .nt{flex:1;min-width:0}
.pln .nt b{font-size:13.5px;display:flex;justify-content:space-between}
.pln .nt b small{font-weight:400;color:var(--ink3)}
.pln .nt span{font-size:13px;color:var(--ink2);display:block;line-height:1.45}
.pln.go{background:rgba(70,22,44,.72);box-shadow:0 0 0 1px rgba(255,143,177,.45),0 10px 30px rgba(255,79,135,.25);animation:nin .5s cubic-bezier(.2,.9,.3,1.15),gpulse 2s 1s infinite}
@keyframes gpulse{50%{box-shadow:0 0 0 1px rgba(255,143,177,.85),0 10px 40px rgba(255,79,135,.5)}}
.plic{width:38px;height:38px;border-radius:10px;flex:none;display:grid;place-items:center;font-size:18px;font-weight:700}
.plic.cal{background:#fff;color:#e33;font-size:16px}
.plic.mail{background:linear-gradient(135deg,#5aa7ff,#2a5fd0);color:#fff}
.plic.ring{background:radial-gradient(circle at 50% 45%,#ff7aa2,#9c1f4d 70%,#3a0f22);position:relative}
.plic.ring:after{content:"";width:16px;height:16px;border-radius:50%;border:2.5px solid #fff;box-shadow:inset 0 0 0 3px transparent}
.plhint{position:absolute;z-index:3;left:0;right:0;bottom:calc(60px + var(--sab));text-align:center;font-size:13.5px;color:rgba(255,255,255,.85);animation:breath 2.4s infinite;min-height:1em}
.plskip{position:absolute;z-index:4;top:calc(42px + var(--sat));right:14px;height:30px;padding:0 12px;border-radius:15px;background:rgba(0,0,0,.45);font-size:12.5px;color:var(--ink2);backdrop-filter:blur(8px)}

/* ---------- 登島登記 ---------- */
.reg{position:absolute;inset:0;z-index:20;display:flex;flex-direction:column;background:#0b0810;animation:regin .5s cubic-bezier(.2,.9,.25,1);overflow:hidden}
@keyframes regin{from{transform:translateY(100%)}}
.reg.closing{animation:regout .25s forwards}
@keyframes regout{to{transform:translateY(100%)}}
.regbg{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.regbg i{position:absolute;border-radius:50%;filter:blur(60px);opacity:.55;animation:drift 14s ease-in-out infinite alternate}
.regbg i:nth-child(1){width:300px;height:300px;left:-90px;top:-60px;background:#c2306a}
.regbg i:nth-child(2){width:260px;height:260px;right:-100px;top:34%;background:#6a2ab0;animation-delay:-5s;opacity:.4}
.regbg i:nth-child(3){width:240px;height:240px;left:20%;bottom:-120px;background:#b48a4a;animation-delay:-9s;opacity:.3}
@keyframes drift{to{transform:translate(40px,30px) scale(1.15)}}
.reghead{position:relative;z-index:2;padding:calc(44px + var(--sat)) 22px 4px;display:flex;align-items:center;justify-content:space-between}
.regbrand{display:flex;align-items:center;gap:10px}
.regbrand b{display:block;font-family:var(--serif);font-size:17px;letter-spacing:.18em;line-height:1.2}
.regbrand small{font-size:10px;letter-spacing:.2em;color:var(--ink3)}
.rlogo{width:34px;height:34px;border-radius:50%;background:conic-gradient(from 0deg,#ff8fb1,#f3cf8e,#c2306a,#ff8fb1);animation:spin 6s linear infinite;position:relative;flex:none}
.rlogo:after{content:"";position:absolute;inset:6px;border-radius:50%;background:#0b0810;box-shadow:inset 0 0 0 4px rgba(255,255,255,.9)}
@keyframes spin{to{transform:rotate(360deg)}}
.regsteps{display:flex;gap:6px}
.regsteps i{width:8px;height:8px;border-radius:4px;background:rgba(255,255,255,.14);transition:all .35s}
.regsteps i.on{width:24px;background:var(--rose)}
.regsteps i.done{background:var(--rose2)}
.regstage{position:relative;z-index:2;flex:1;overflow:hidden}
.regpane{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;padding:14px 22px 20px;-webkit-overflow-scrolling:touch}
.regpane.inr{animation:pinr .38s cubic-bezier(.2,.8,.2,1)}
.regpane.inl{animation:pinl .38s cubic-bezier(.2,.8,.2,1)}
.regpane.outl{animation:poutl .34s forwards;pointer-events:none}
.regpane.outr{animation:poutr .34s forwards;pointer-events:none}
@keyframes pinr{from{opacity:0;transform:translateX(60px)}}
@keyframes pinl{from{opacity:0;transform:translateX(-60px)}}
@keyframes poutl{to{opacity:0;transform:translateX(-60px)}}
@keyframes poutr{to{opacity:0;transform:translateX(60px)}}
.rkick{font-size:11.5px;letter-spacing:.26em;color:var(--rose2)}
.regpane h2{font-family:var(--serif);font-size:22px;line-height:1.4;margin:6px 0 16px;letter-spacing:.03em}
.rlab{font-size:12px;letter-spacing:.18em;color:var(--ink3);margin:18px 0 8px;display:flex;justify-content:space-between}
.rlab em{font-style:normal;letter-spacing:0;color:var(--ink3);opacity:.8}
.rnote{font-size:12.5px;color:var(--ink3);margin:10px 0 0}
.regfoot{position:relative;z-index:2;padding:10px 22px calc(18px + var(--sab));display:flex;gap:10px;background:linear-gradient(transparent,#0b0810 40%)}
.regfoot .btn{flex:1}.regfoot .btn.ghost{flex:.5}
.field.shake{animation:shake .4s}
@keyframes shake{20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}

/* 船票 */
.tk3{perspective:900px;margin:2px 0 16px}
.tkc{position:relative;display:flex;border-radius:18px;background:linear-gradient(135deg,#fbf6f0,#ece0d6 55%,#e3d3c6);color:#2b1a1f;overflow:hidden;box-shadow:0 18px 40px rgba(0,0,0,.45),0 0 0 1px rgba(243,207,142,.5);animation:tfloat 6s ease-in-out infinite;transform-style:preserve-3d}
@keyframes tfloat{0%,100%{transform:rotateX(6deg) rotateY(-8deg)}50%{transform:rotateX(-4deg) rotateY(8deg) translateY(-4px)}}
.tkl{flex:1;padding:16px 16px 14px 18px;min-width:0}
.tkl small{font-size:9.5px;letter-spacing:.28em;color:#9b6a74}
.tkl h3{font-family:var(--serif);margin:2px 0 6px;font-size:19px;letter-spacing:.12em}
.tkn{font-family:var(--serif);font-size:24px;font-weight:900;color:#8a1f45;min-height:34px;border-bottom:1px dashed rgba(155,106,116,.5);margin-bottom:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;animation:none}
.tkn em{display:inline-block;width:2px;height:24px;background:#8a1f45;vertical-align:middle;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.tkm{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11.5px;color:#5a3a42}
.tkm em{font-style:normal;color:#9b6a74;margin-right:4px}
.tkr{width:74px;flex:none;border-left:2px dashed rgba(155,106,116,.35);display:grid;place-items:center;position:relative}
.tkr:before,.tkr:after{content:"";position:absolute;left:-9px;width:16px;height:16px;border-radius:50%;background:#0b0810}
.tkr:before{top:-8px}.tkr:after{bottom:-8px}
.seal{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;font:900 20px var(--serif);font-style:normal;color:#7a4a10;background:radial-gradient(circle at 35% 30%,#ffe7a8,#d6a24e 55%,#9a6a22);box-shadow:inset 0 0 0 3px rgba(255,255,255,.35),0 3px 8px rgba(122,74,16,.4)}
.tksheen{position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.75) 45%,rgba(255,200,230,.35) 52%,transparent 65%);background-size:250% 100%;animation:holo 4s ease-in-out infinite;mix-blend-mode:soft-light;pointer-events:none}
@keyframes holo{0%{background-position:120% 0}60%,100%{background-position:-60% 0}}

/* 性別切換 */
.seg{position:relative;display:grid;grid-template-columns:1fr 1fr;padding:4px;border-radius:16px;background:var(--card2);box-shadow:inset 0 0 0 1px var(--line)}
.seg button{position:relative;z-index:2;height:44px;border-radius:12px;font-weight:700;color:var(--ink2);transition:color .3s}
.seg button.on{color:#fff}
.seg i{position:absolute;z-index:1;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);border-radius:12px;background:linear-gradient(135deg,var(--rose),#c2306a);box-shadow:0 6px 18px rgba(255,79,135,.35);transition:transform .35s cubic-bezier(.3,1.3,.5,1)}
.seg[data-v="m"] i{transform:translateX(100%)}

/* 喜歡誰 */
.likes{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.likes button{position:relative;padding:18px 6px 14px;border-radius:20px;background:var(--card);box-shadow:inset 0 0 0 1px var(--line);text-align:center;transition:transform .3s cubic-bezier(.3,1.4,.5,1),box-shadow .3s,background .3s;overflow:hidden}
.likes .lg{display:block;font-family:var(--serif);font-weight:900;font-size:40px;line-height:1.1;background:linear-gradient(170deg,#fff,#ffb3cc);-webkit-background-clip:text;background-clip:text;color:transparent;opacity:.5;transition:opacity .3s}
.likes b{display:block;font-size:15px;margin-top:4px}
.likes small{display:block;font-size:10.5px;line-height:1.5;color:var(--ink3);margin-top:4px}
.likes button.on{transform:translateY(-4px);background:linear-gradient(170deg,rgba(255,79,135,.28),rgba(80,20,50,.3));box-shadow:inset 0 0 0 1.5px var(--rose),0 14px 30px rgba(255,79,135,.25)}
.likes button.on .lg{opacity:1}
.lkpeek{margin-top:22px;padding:14px;border-radius:18px;background:rgba(0,0,0,.25);box-shadow:inset 0 0 0 1px var(--line)}
.lkt{font-size:11.5px;letter-spacing:.2em;color:var(--gold);margin-bottom:10px}
.lkav{display:flex;gap:10px;flex-wrap:wrap;min-height:52px}
.lkav span{animation:popin .45s cubic-bezier(.3,1.5,.5,1) backwards;animation-delay:calc(var(--i)*70ms)}
@keyframes popin{from{opacity:0;transform:scale(.4)}}
.av.sil{border-radius:50%;overflow:hidden;position:relative;background:#120d16;box-shadow:0 0 0 1.5px rgba(243,207,142,.45)}
.av.sil img{width:100%;height:100%;object-fit:cover;filter:brightness(.38) contrast(1.3) blur(1.2px) grayscale(.5)}
.av.sil b{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--serif);font-size:18px;color:rgba(243,207,142,.9);text-shadow:0 1px 6px #000}
.lkav{flex-wrap:nowrap}

/* 慾望卡片 */
.pcar{display:flex;gap:14px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;padding:6px 13% 14px;margin:0 -22px;scrollbar-width:none;cursor:grab}
.pcar::-webkit-scrollbar{display:none}
.pcard{flex:0 0 74%;scroll-snap-align:center;border-radius:24px;background:var(--pg);min-height:340px;position:relative;overflow:hidden;transform:scale(.9);opacity:.55;transition:transform .35s cubic-bezier(.3,1.3,.5,1),opacity .35s,box-shadow .35s;box-shadow:0 10px 30px rgba(0,0,0,.4)}
.pcard:before{content:"";position:absolute;inset:0;background:radial-gradient(120% 70% at 80% 0%,rgba(255,255,255,.25),transparent 55%)}
.pcard.on{transform:none;opacity:1;box-shadow:0 18px 44px rgba(0,0,0,.55),0 0 0 1.5px rgba(255,255,255,.35)}
.pcard.gold.on{box-shadow:0 18px 44px rgba(0,0,0,.55),0 0 0 1.5px rgba(243,207,142,.7)}
.pcin{position:relative;padding:24px 20px;display:flex;flex-direction:column;height:100%;min-height:340px}
.pci{font-size:46px;line-height:1;filter:drop-shadow(0 6px 14px rgba(0,0,0,.35))}
.pcard b{font-family:var(--serif);font-size:26px;margin-top:auto;letter-spacing:.08em;color:#fff}
.pcard.gold b{color:var(--gold)}
.pcard span{font-size:13px;color:rgba(255,255,255,.85);margin-top:6px;line-height:1.6}
.pcard q{display:block;margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,.22);font-family:var(--serif);font-size:14px;color:#fff;quotes:none}
.pdots{display:flex;justify-content:center;gap:6px}
.pdots i{width:6px;height:6px;border-radius:3px;background:rgba(255,255,255,.2);transition:all .3s}
.pdots i.on{width:18px;background:var(--rose2)}

/* 最後一步 */
.bans{margin-top:16px;border-radius:16px;background:rgba(0,0,0,.22);box-shadow:inset 0 0 0 1px var(--line);padding:0 14px}
.bans summary{list-style:none;display:flex;justify-content:space-between;align-items:center;padding:14px 0;cursor:pointer;font-size:14px}
.bans summary::-webkit-details-marker{display:none}
.bans summary em{font-style:normal;font-size:12px;color:var(--ink3)}
.bans summary:after{content:"›";transform:rotate(90deg);color:var(--ink3);margin-left:8px;transition:transform .25s}
.bans[open] summary:after{transform:rotate(-90deg)}
.bans .tags{padding-bottom:4px}
.bans .rnote{padding-bottom:14px}
.tagbtn{transition:transform .2s,background .2s,box-shadow .2s}
.tagbtn.on{animation:tagpop .3s cubic-bezier(.3,1.6,.5,1)}
@keyframes tagpop{50%{transform:scale(1.12)}}
.mtk{position:relative;margin-top:18px;padding:14px 16px;border-radius:16px;background:linear-gradient(135deg,#fbf6f0,#e9ddd2);color:#2b1a1f;overflow:hidden}
.mtk small{font-size:11px;letter-spacing:.12em;color:#9b6a74}
.mtk b{display:block;font-family:var(--serif);font-size:16px;margin:2px 0}
.mtk span{display:block;font-size:12.5px;color:#5a3a42}
.stamp{position:absolute;right:12px;top:50%;width:92px;height:92px;margin-top:-46px;border-radius:50%;border:3px double #c2304a;color:#c2304a;display:grid;place-items:center;font:900 17px var(--serif);font-style:normal;letter-spacing:.1em;transform:rotate(-14deg) scale(2.6);opacity:0;pointer-events:none;mix-blend-mode:multiply}
.reg.stamping .stamp{animation:stampin .45s cubic-bezier(.5,0,.6,1.6) forwards}
@keyframes stampin{to{opacity:.9;transform:rotate(-14deg) scale(1)}}
.reg.stamping .mtk{animation:thud .45s .3s}
@keyframes thud{40%{transform:scale(.97)}}
.reg.stamping{animation:regleave .5s .85s forwards}
@keyframes regleave{to{opacity:0;transform:scale(1.04)}}
.btn.stampbtn{background:linear-gradient(135deg,#d6a24e,#c2306a);letter-spacing:.14em}

/* ---------- 主畫面（左右滑） ---------- */
.home .pager{position:absolute;inset:0;z-index:2;display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.home .pager::-webkit-scrollbar{display:none}
.home .pg{flex:0 0 100%;scroll-snap-align:start;scroll-snap-stop:always;overflow:hidden;padding:calc(46px + var(--sat)) 14px calc(132px + var(--sab));display:flex;flex-direction:column}
.home .wid{margin-bottom:10px}
.home .wt{padding:13px 13px 12px}
.home .wtime{margin-bottom:8px}
.home .slots{margin-bottom:10px}
.home .apps{padding:6px 4px 0;gap:14px 6px}
.home .pg2 .apps{padding-top:8px}
.home .app.lk{opacity:.42}
.home .app.d1,.home .app.d2{display:none}
@media (max-height:640px){.home .p1apps .r2{display:none}.home .app.d2{display:flex}}
.phone:has(.topbtns button) .sbar .r{visibility:hidden}
.hdots{position:absolute;z-index:3;left:50%;transform:translateX(-50%);bottom:calc(104px + var(--sab));display:flex;justify-content:center;gap:4px;padding:2px 6px;border-radius:12px}
.hdots button{width:16px;height:16px;display:grid;place-items:center}
.hdots button:after{content:"";width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.35);transition:all .3s}
.hdots button.on:after{background:#fff;width:7px}
.prow{display:flex;justify-content:space-around;gap:4px}
.pm{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 2px;min-width:0;flex:1}
.pm .av{box-shadow:0 0 0 2px var(--mc,var(--rose))}
.pm b{font-size:14px;font-weight:800;color:var(--rose2);font-variant-numeric:tabular-nums;line-height:1.2;margin-top:2px}
.pm small{font-size:10.5px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.pm.locked .av{filter:grayscale(1) brightness(.5);box-shadow:0 0 0 1.5px #444}
.pm.locked b{color:var(--ink3)}
.pm .here{position:absolute;top:-2px;right:0;z-index:2;font-size:9.5px;background:var(--sea-d);color:#bfefff;border-radius:6px;padding:0 4px}
.pwid .pnote{margin-top:8px;font-size:11.5px;color:var(--ink2);background:rgba(255,255,255,.05);border-radius:10px;padding:6px 10px}
.pwid .ptitle{margin-bottom:6px}
.cta.pre{background:linear-gradient(135deg,rgba(243,207,142,.32),rgba(194,48,106,.3));box-shadow:inset 0 0 0 1px rgba(243,207,142,.5)}
.cta.pre .ct small{color:var(--gold)}
.cta.pulse{animation:ctap 1.8s ease-in-out infinite}
@keyframes ctap{50%{box-shadow:inset 0 0 0 1px rgba(243,207,142,.9),0 0 26px rgba(255,79,135,.5);transform:scale(1.015)}}
.evbar{display:flex;align-items:center;gap:10px;width:100%;margin-top:8px;padding:9px 12px;border-radius:14px;background:rgba(243,207,142,.1);box-shadow:inset 0 0 0 1px rgba(243,207,142,.28);text-align:left}
.evbar i{font-style:normal;font-size:18px}
.evbar span{flex:1;min-width:0}
.evbar small{display:block;font-size:10.5px;letter-spacing:.12em;color:var(--gold)}
.evbar b{display:block;font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.evbar em{font-style:normal;color:var(--gold)}
.ctarow .btn.main{min-height:42px}
/* 安裝動畫 */
.home.installing .wid{animation:widin .6s cubic-bezier(.2,.9,.3,1.1) backwards}
.home.installing .pwid{animation-delay:.12s}
.home.installing .app .ic{animation:icpop .5s cubic-bezier(.3,1.6,.5,1) backwards;animation-delay:calc(.1s + var(--i)*16ms)}
@keyframes widin{from{opacity:0;transform:translateY(16px) scale(.97)}}
@keyframes icpop{from{opacity:0;transform:scale(.2)}}

/* ---------- 導覽 ---------- */
.tour{position:absolute;inset:0;z-index:80;cursor:pointer}
.thole{position:absolute;border-radius:20px;box-shadow:0 0 0 2000px rgba(4,3,8,.78),0 0 0 2px rgba(255,143,177,.9),0 0 30px rgba(255,79,135,.6);transition:all .45s cubic-bezier(.3,1.1,.4,1);pointer-events:none}
.tbub{position:absolute;left:18px;right:18px;padding:14px 16px;border-radius:18px;background:linear-gradient(160deg,#2a1622,#160d16);box-shadow:0 14px 40px rgba(0,0,0,.6),inset 0 0 0 1px rgba(255,143,177,.35)}
.tbub.in{animation:bubin .35s cubic-bezier(.3,1.4,.5,1)}
@keyframes bubin{from{opacity:0;transform:translateY(8px) scale(.96)}}
.tbub small{font-size:11px;letter-spacing:.2em;color:var(--rose2)}
.tbub b{display:block;font-family:var(--serif);font-size:18px;margin:2px 0 4px}
.tbub p{margin:0;font-size:13.5px;color:var(--ink2);line-height:1.65}
.tnav{display:flex;justify-content:space-between;align-items:center;margin-top:10px;font-size:12px;color:var(--ink3)}
.tskip{font-size:12.5px;color:var(--ink2);padding:4px 10px;border-radius:12px;background:rgba(255,255,255,.08)}

/* =====================================================================
   交通動畫（20261031.1）
   ===================================================================== */
.trip{position:absolute;inset:0;z-index:38;overflow:hidden;cursor:pointer;animation:tpin .35s ease both;
  --b1:#ff8fb1;--b2:#e04a7e;--roof:#ffd1df;--trim:#fff0f5;--w1:#dff3ff;--w2:#9cc6e4;--pax:rgba(40,30,60,.32);--hub:#eadbe2;--led:#ff8fb1;--txt:#fff;
  --s1:#8ec9e6;--s2:#f9d3dc;--s3:#f9d3dc;--road:#4a4552}
.trip.out{animation:tpout .4s ease both}
@keyframes tpin{from{opacity:0}to{opacity:1}}
@keyframes tpout{to{opacity:0;transform:scale(1.03)}}
.trip.t-pm{--s1:#f6c98a;--s2:#f3a0a0;--s3:#f3a0a0;--road:#4b3d45}
.trip.t-eve{--s1:#2f2466;--s2:#c4508a;--s3:#f3a26e;--road:#2a2230;--w1:#ffe6b0;--w2:#f2b46a;--pax:rgba(70,30,20,.45)}
.trip.t-night{--s1:#060920;--s2:#1b1442;--s3:#2a1a48;--road:#15131b;--b1:#43357a;--b2:#1d1640;--roof:#ff8fb1;--trim:#ff8fb1;--w1:#ffe3a8;--w2:#f0b060;--pax:rgba(60,30,20,.5);--hub:#ff8fb1}
.trip.t-zone{--s1:#120306;--s2:#3e0a1c;--s3:#5a0f24;--road:#140a0e;--b1:#7a1028;--b2:#35050f;--roof:#1f0207;--trim:#ff4f6e;--w1:#6a1424;--w2:#2a0610;--pax:rgba(0,0,0,.5);--hub:#ff4f6e;--led:#ff4f6e}
.trip.k-charter{--b1:#2c2329;--b2:#0e0a0d;--roof:#3a3036;--trim:#f3cf8e;--w1:#3c3242;--w2:#17111a;--pax:rgba(0,0,0,0);--hub:#f3cf8e;--led:#f3cf8e}
.tp-sky{position:absolute;inset:0;background:linear-gradient(180deg,var(--s1) 0%,var(--s2) 46%,var(--s3) 60%)}
.tp-stars{position:absolute;inset:0 0 50%;opacity:0;background-image:radial-gradient(1px 1px at 12% 20%,#fff,transparent),radial-gradient(1px 1px at 30% 8%,#fff,transparent),radial-gradient(1.4px 1.4px at 52% 26%,#fff,transparent),radial-gradient(1px 1px at 70% 14%,#fff,transparent),radial-gradient(1px 1px at 86% 30%,#fff,transparent),radial-gradient(1.2px 1.2px at 40% 36%,#fff,transparent),radial-gradient(1px 1px at 92% 6%,#fff,transparent),radial-gradient(1px 1px at 6% 40%,#fff,transparent)}
.t-night .tp-stars,.t-zone .tp-stars{opacity:.8;animation:twk 3s ease-in-out infinite alternate}
@keyframes twk{to{opacity:.4}}
.tp-sun{position:absolute;left:68%;top:34%;width:76px;height:76px;border-radius:50%;background:radial-gradient(circle,#fff8e6 0 40%,rgba(255,240,210,.0) 70%);opacity:.9}
.t-pm .tp-sun{background:radial-gradient(circle,#fff1c9 0 36%,rgba(255,200,140,0) 70%);top:38%}
.t-eve .tp-sun{background:radial-gradient(circle,#ffd0a0 0 34%,rgba(255,120,120,0) 70%);top:47%;left:22%;width:120px;height:120px}
.t-night .tp-sun,.t-zone .tp-sun{left:74%;top:16%;width:44px;height:44px;background:radial-gradient(circle,#fff7e8 0 45%,rgba(255,255,255,0) 72%);opacity:.85}
.t-zone .tp-sun{background:radial-gradient(circle,#ff9aa8 0 40%,rgba(255,80,100,0) 72%)}
.tp-sea{position:absolute;left:0;right:0;top:50%;height:16%;background-color:var(--sea,#4a93b0);background-repeat:repeat-x;background-size:auto 100%}
.t-am .tp-sea{--sea:#5aa9c2}.t-pm .tp-sea{--sea:#d48c7c}.t-eve .tp-sea{--sea:#4a2c62}.t-night .tp-sea{--sea:#0f1531}.t-zone .tp-sea{--sea:#1c0711}
.tp-far{position:absolute;left:0;right:0;top:38%;height:14%;background-repeat:repeat-x;background-size:auto 100%}
.tp-mid{position:absolute;left:0;right:0;top:42%;height:25%;background-repeat:repeat-x;background-size:auto 100%}
.tp-road{position:absolute;left:0;right:0;top:66%;height:13%;background:var(--road);box-shadow:inset 0 3px 0 rgba(255,255,255,.08),inset 0 -2px 0 rgba(0,0,0,.3)}
.tp-lane{position:absolute;left:0;right:0;top:58%;height:7px;background-repeat:repeat-x;background-size:auto 100%}
.tp-near{position:absolute;left:0;right:0;top:78%;height:7%;background-repeat:repeat-x;background-size:auto 100%;filter:brightness(.9)}
.tp-near:after{content:"";position:absolute;left:0;right:0;top:100%;height:200px;background:var(--road);filter:brightness(.55)}
.tp-bus{position:absolute;left:4%;width:84%;top:57%;filter:drop-shadow(0 6px 10px rgba(0,0,0,.35));animation:bob .42s ease-in-out infinite alternate}
.tp-bus svg{width:100%;height:auto;overflow:visible}
@keyframes bob{to{transform:translateY(1.5px)}}
.tp-bus .hlc{opacity:0}.t-eve .tp-bus .hlc,.t-night .tp-bus .hlc,.t-zone .tp-bus .hlc{opacity:1}
.tp-bus .dl,.tp-bus .dr{transition:transform .45s cubic-bezier(.3,.8,.3,1)}
.trip.arrive .tp-bus{animation:busstop .5s ease-out both}
.trip.arrive .tp-bus .dl{transform:translateX(-14px)}.trip.arrive .tp-bus .dr{transform:translateX(14px)}
@keyframes busstop{0%{transform:translateX(0)}40%{transform:translateX(5px) rotate(.6deg)}100%{transform:translateX(0)}}
/* 纜車 */
.k-cable .tp-sea{top:56%;height:44%;background-color:var(--sea);box-shadow:inset 0 30px 60px rgba(0,0,0,.15)}
.k-cable .tp-far{top:47%;height:11%}
.k-cable .tp-mid{top:30%;height:70%;opacity:.55}
.tp-wire{position:absolute;left:0;top:20%;width:100%;height:30%}
.tp-gon{position:absolute;left:32%;top:calc(32.4% - 7px);width:34%;transform-origin:50% 4%}
.tp-gon svg{width:100%;height:auto;filter:drop-shadow(0 10px 18px rgba(0,0,0,.35))}
/* 車內跑馬燈 */
.tp-led{position:absolute;z-index:3;left:14px;right:14px;top:calc(52px + var(--sat));padding:12px 14px 14px;border-radius:18px;background:rgba(14,9,16,.82);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08),0 12px 30px rgba(0,0,0,.35)}
.tp-lh{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--ink3);letter-spacing:.08em}
.tp-no{color:var(--led);font-weight:700;letter-spacing:.12em}
.tp-next{margin:6px 0 12px;display:flex;align-items:baseline;gap:10px}
.tp-next small{font-size:11px;letter-spacing:.2em;color:var(--ink3);flex:none}
.tp-next b{font-family:var(--serif);font-size:22px;letter-spacing:.08em;color:#fff;text-shadow:0 0 14px color-mix(in srgb,var(--led) 55%,transparent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tp-next.flip{animation:flip .4s ease both}
@keyframes flip{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.trip.arrive .tp-next small{color:var(--led)}
.tp-route{position:relative;height:34px;margin:0 10px}
.tp-bar{position:absolute;left:0;right:0;top:6px;height:3px;border-radius:2px;background:rgba(255,255,255,.14)}
.tp-bar i{display:block;height:100%;width:0;border-radius:2px;background:var(--led);box-shadow:0 0 8px var(--led)}
.tp-stop{position:absolute;top:0;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:5px}
.tp-stop em{width:15px;height:15px;border-radius:50%;background:#1a1218;box-shadow:inset 0 0 0 2px rgba(255,255,255,.3);transition:.25s}
.tp-stop.on em{box-shadow:inset 0 0 0 2px var(--led);background:var(--led)}
.tp-stop span{font-size:10.5px;color:var(--ink3);white-space:nowrap}
.tp-stop.on span{color:var(--ink)}
.tp-stop:first-of-type{transform:none;align-items:flex-start}.tp-stop:last-of-type{transform:translateX(-100%);align-items:flex-end}
.tp-me{position:absolute;top:-13px;transform:translateX(-50%);font-size:15px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.5))}
.tp-say{position:absolute;z-index:3;left:24px;right:24px;bottom:calc(86px + var(--sab));margin:0;text-align:center;font-family:var(--serif);font-size:15px;line-height:1.8;color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.8);animation:sayin .8s .35s ease both}
@keyframes sayin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.tp-skip{position:absolute;z-index:3;left:0;right:0;bottom:calc(44px + var(--sab));text-align:center;font-size:11.5px;letter-spacing:.2em;color:rgba(255,255,255,.5)}
.trip.short .tp-say{display:none}
/* 交通動畫・圖片版（20261031.5）：assets/trip/ 有圖時使用 */
.trip.art .tp-sky{background:#0d0a12}
.trip.art .tp-stars,.trip.art .tp-sun{display:none}
.tpi-up,.tpi-lo,.tpi-fg,.tpi-sky{position:absolute;left:0;right:0;background-repeat:repeat-x;background-size:auto 100%;will-change:background-position}
.tpi-up{top:0;height:68.7%}
.tpi-lo{top:68.7%;height:31.3%}
.tpi-sky{inset:0}
.tpi-fg{bottom:0;height:15%;z-index:2;filter:blur(.6px) brightness(.92)}
.t-night .tpi-fg,.t-zone .tpi-fg{filter:blur(.6px) brightness(.7)}
.tpi-shade{position:absolute;left:0;right:0;bottom:0;height:34%;z-index:2;pointer-events:none;background:linear-gradient(180deg,rgba(0,0,0,0),rgba(0,0,0,.45))}
.trip.art .tp-bus{left:6%;width:88%;top:auto;bottom:16%;animation:none;filter:drop-shadow(0 8px 10px rgba(0,0,0,.4))}
.tpi-car:before{content:"";position:absolute;left:4%;right:4%;bottom:-2.5%;height:7%;border-radius:50%;background:rgba(0,0,0,.45);filter:blur(4px)}
.tpi-body{position:relative;display:block;width:100%;height:auto;animation:bob .42s ease-in-out infinite alternate;user-select:none;-webkit-user-drag:none}
.tpi-rim{position:absolute;height:auto;will-change:transform;user-select:none;-webkit-user-drag:none}
.tpi-hl{position:absolute;right:-26%;top:55%;width:40%;height:42%;border-radius:50%;pointer-events:none;
  background:radial-gradient(ellipse at 0% 50%,rgba(255,244,214,.55),rgba(255,244,214,0) 70%);mix-blend-mode:screen}
.t-zone .tpi-hl{background:radial-gradient(ellipse at 0% 50%,rgba(255,120,140,.5),rgba(255,80,100,0) 70%)}
.trip.art.arrive .tpi-body{animation:none}
.trip.art .tp-gon img{display:block;width:100%;height:auto;filter:drop-shadow(0 12px 20px rgba(0,0,0,.4));user-select:none;-webkit-user-drag:none}
.trip.art .tp-gon{width:40%;left:30%;top:calc(32.4% - 2px)}
.trip.art .tp-say{z-index:4}
.pin.cur{z-index:4}
.pin.cur .pi{box-shadow:0 0 0 3px var(--sea),0 0 16px rgba(63,179,201,.8),0 4px 10px rgba(0,0,0,.45)}
.curtag{position:absolute;bottom:100%;margin-bottom:4px;font-style:normal;font-size:10px;font-weight:700;color:#06232b;background:#7fe0f0;padding:1px 7px;border-radius:8px;white-space:nowrap;animation:curb 1.6s ease-in-out infinite}
@keyframes curb{50%{transform:translateY(-3px)}}
/* 主畫面小工具 */
.hwids{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:auto;padding:14px 4px 0}
.hw{position:relative;height:148px;border-radius:22px;overflow:hidden;text-align:left;padding:13px 13px 12px;display:flex;flex-direction:column;background:var(--glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.hw small{font-size:10.5px;letter-spacing:.12em;color:var(--ink3);display:flex;align-items:center;gap:6px}
.hw-live{background:linear-gradient(160deg,rgba(255,79,135,.28),rgba(40,12,30,.78) 70%)}
.hw-live small{color:var(--rose2)}
.lvdot{width:7px;height:7px;border-radius:50%;background:#ff4f87;box-shadow:0 0 0 0 rgba(255,79,135,.7);animation:lvp 1.6s infinite}
@keyframes lvp{70%{box-shadow:0 0 0 7px rgba(255,79,135,0)}100%{box-shadow:0 0 0 0 rgba(255,79,135,0)}}
.hw-live b{margin-top:8px;font-family:var(--serif);font-size:16px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hw-live span{font-size:12px;color:var(--ink2);margin-top:3px}
.hw-live em{font-style:normal;font-size:11px;margin-top:2px}
.hw-live u{text-decoration:none;font-size:10.5px;color:var(--ink3);margin-top:auto}
.hw-feed{padding:0}
.hw-feed>.pimg{position:absolute;inset:0}
.hw-feed>.pimg img{width:100%;height:100%;object-fit:cover}
.hw-feed:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.15),rgba(10,6,12,.85) 72%)}
.hwf{position:relative;z-index:2;margin-top:auto;padding:12px;display:flex;flex-direction:column;gap:4px;height:100%;justify-content:flex-end}
.hwf small{color:rgba(255,255,255,.75)}
.hwby{display:flex;align-items:center;gap:6px}
.hwby b{font-size:12.5px}
.hwf span{font-size:12px;line-height:1.45;color:var(--ink2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
@media (max-height:720px){.hwids{display:none}}
/* 愛幣入帳膠囊 */
.cpill{position:absolute;z-index:47;left:50%;top:calc(40px + var(--sat));transform:translate(-50%,-8px);opacity:0;pointer-events:none;display:flex;align-items:center;gap:8px;padding:6px 12px 6px 10px;border-radius:18px;background:rgba(12,8,14,.92);font-size:12px;white-space:nowrap;box-shadow:0 8px 22px rgba(0,0,0,.5),inset 0 0 0 1px rgba(255,143,177,.3);transition:.35s cubic-bezier(.3,1.3,.5,1)}
.cpill.on{opacity:1;transform:translate(-50%,0)}
.cpill i{font-style:normal}
.cpill span{color:var(--ink2)}
.cpill b{color:var(--gold);font-variant-numeric:tabular-nums}
.plhint.flash{animation:flip .4s ease both}
.hw-feed.empty{background:linear-gradient(160deg,rgba(249,160,63,.22),rgba(131,58,180,.28) 60%,rgba(20,10,24,.8))}
.hw-feed.empty:after{display:none}
.hwe{font-family:var(--serif);font-size:15px;font-weight:700}

/* =====================================================================
   20261101.1　登島合意書・夜遊・UI 打磨
   ===================================================================== */
.shake{animation:shake .4s}
/* 合意書：深色燙金的契約紙 */
.pact{position:relative;border-radius:18px;padding:18px 16px 16px;background:
  radial-gradient(120% 60% at 50% 0%,rgba(255,79,135,.16),transparent 60%),
  linear-gradient(180deg,#1c1018,#120a10);box-shadow:inset 0 0 0 1px rgba(243,207,142,.28),0 18px 50px rgba(0,0,0,.45)}
.pact:before{content:"";position:absolute;inset:6px;border-radius:13px;box-shadow:inset 0 0 0 1px rgba(243,207,142,.12);pointer-events:none}
.pacthd{text-align:center;padding-bottom:12px;margin-bottom:6px;border-bottom:1px dashed rgba(243,207,142,.25)}
.pacthd small{display:block;font-size:10px;letter-spacing:.32em;color:var(--gold-d)}
.pacthd b{display:block;font:900 24px/1.3 var(--serif);letter-spacing:.24em;margin:4px 0 2px;background:linear-gradient(120deg,#fff3dc,var(--gold) 55%,var(--rose2));-webkit-background-clip:text;background-clip:text;color:transparent}
.pacthd span{font-size:11px;color:var(--ink3);letter-spacing:.1em}
.pactls{margin:0;padding:0;counter-reset:pc;list-style:none}
.pactls li{position:relative;font-size:13.2px;line-height:1.75;color:var(--ink2);padding:9px 0 9px 28px;border-bottom:1px solid rgba(255,255,255,.05)}
.pactls li:before{counter-increment:pc;content:counter(pc);position:absolute;left:0;top:12px;width:19px;height:19px;border-radius:50%;display:grid;place-items:center;font:700 10.5px var(--sans);color:#2a1606;background:linear-gradient(135deg,#fff0d0,var(--gold) 60%,var(--gold-d))}
.pactls li b{color:var(--ink)}
.pactopt{display:grid;grid-template-columns:1fr;gap:7px;margin-top:10px}
.popt{display:flex;align-items:center;gap:10px;text-align:left;padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px var(--line);font-size:13.5px;color:var(--ink2);transition:background .2s,box-shadow .2s,color .2s}
.popt i{width:20px;height:20px;border-radius:6px;flex:none;box-shadow:inset 0 0 0 1.5px var(--ink3);display:grid;place-items:center;font-style:normal;transition:background .2s}
.popt.on{background:rgba(255,79,135,.13);box-shadow:inset 0 0 0 1.5px rgba(255,79,135,.7);color:#fff}
.popt.on i{background:var(--rose);box-shadow:none}
.popt.on i:after{content:"✓";color:#fff;font-weight:900;font-size:12.5px}
.pactall{margin-top:8px;font-size:12.5px;color:var(--rose2);padding:4px 2px;text-decoration:underline;text-underline-offset:3px}
.pactsw{display:flex;align-items:center;gap:10px;margin-top:10px}
.pactsw span{font-size:12.5px;color:var(--gold);white-space:nowrap}
.pactsw .field{height:42px;font-size:15px;margin:0;text-align:center;letter-spacing:.2em}
.pact .check{margin-top:10px;background:rgba(255,255,255,.04)}
.pact .check b{color:#fff}
.sign{position:relative;margin-top:14px;height:96px;border-radius:14px;overflow:hidden;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:none;
  background:repeating-linear-gradient(0deg,transparent 0 23px,rgba(243,207,142,.08) 23px 24px),rgba(0,0,0,.25);box-shadow:inset 0 0 0 1px rgba(243,207,142,.3)}
.sign small{position:absolute;left:12px;top:8px;font-size:10.5px;letter-spacing:.2em;color:var(--gold-d)}
.sign em{position:absolute;right:12px;bottom:8px;font-style:normal;font-size:11px;color:var(--ink3)}
.sign .sgn{position:absolute;left:0;right:0;top:30px;text-align:center;font:italic 900 32px var(--serif);letter-spacing:.12em;color:var(--rose2);
  clip-path:inset(0 100% 0 0);text-shadow:0 0 18px rgba(255,79,135,.45)}
.sign .sbar{position:absolute;left:0;bottom:0;height:3px;width:0;background:linear-gradient(90deg,var(--rose),var(--gold))}
.sign.holding .sgn{transition:clip-path 1s linear;clip-path:inset(0 0 0 0)}
.sign.holding .sbar{transition:width 1s linear;width:100%}
.sign.done .sgn{clip-path:inset(0 0 0 0)}
.sign.done{box-shadow:inset 0 0 0 1.5px var(--rose),0 0 30px rgba(255,79,135,.25)}
.sign.done em{color:var(--rose2)}
.sign.done em:before{content:"已簽署・"}
.sign.done:after{content:"合意";position:absolute;right:18px;top:16px;font:900 15px var(--serif);color:var(--rose);border:2.5px solid var(--rose);border-radius:8px;padding:2px 8px;transform:rotate(-12deg);animation:stampin .35s cubic-bezier(.2,1.6,.4,1)}
@keyframes stampin{from{transform:rotate(-12deg) scale(2.2);opacity:0}}
.regsteps i{transition:all .3s}

/* 主畫面 CTA 與夜晚按鈕 */
.cta.night{background:linear-gradient(135deg,rgba(60,14,48,.92),rgba(18,8,28,.92));box-shadow:inset 0 0 0 1px rgba(255,143,177,.35),0 12px 34px rgba(120,20,80,.35)}
.cta.night .ci{background:radial-gradient(circle at 35% 30%,#ffd6e6,#ff4f87 55%,#5a0f30)}
.ctarow #cta-out{background:rgba(255,79,135,.14);box-shadow:inset 0 0 0 1px rgba(255,79,135,.45);color:#fff}
.nightov .ctarow{display:flex;gap:8px;margin-top:6px}
.nightov .ctarow .btn{flex:1}
/* App 圖示更有質感 */
.app .ic{box-shadow:0 6px 16px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.22),inset 0 -1px 0 rgba(0,0,0,.25)}
.app:active .ic{transform:scale(.92)}
.app .ic{transition:transform .15s}
.app span{text-shadow:0 1px 6px rgba(0,0,0,.7)}
.hw{backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3)}
.lvcard{box-shadow:inset 0 0 0 1px rgba(255,79,135,.18)}
/* 主畫面：刺激專區快捷列 */
.hzone{margin-top:10px;padding:10px 10px 12px;border-radius:20px;background:linear-gradient(160deg,rgba(120,10,36,.55),rgba(14,4,8,.72));box-shadow:inset 0 0 0 1px rgba(255,90,120,.28);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.hzone>small{display:flex;align-items:center;gap:6px;font-size:11px;letter-spacing:.14em;color:#ff9fb4;padding:0 4px 8px}
.hzone>small em{margin-left:auto;font-style:normal;font-size:10.5px;letter-spacing:.05em;color:var(--ink3)}
.hzrow{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.home .hwids .hw{height:132px}
.hz{position:relative;aspect-ratio:1/1.08;border-radius:12px;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding-bottom:6px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.hz .pimg{position:absolute;inset:0;width:100%;height:100%}
.hz .pimg img{width:100%;height:100%;object-fit:cover;filter:brightness(.6) saturate(1.25)}
.hz:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 35%,rgba(10,0,4,.85))}
.hz span,.hz b,.hz em{position:relative;z-index:1}
.hz span{font-size:17px;line-height:1}
.hz b{font-size:10.5px;font-weight:700;letter-spacing:.02em;margin-top:3px;white-space:nowrap}
.hz em{position:absolute;top:5px;right:5px;font-style:normal;font-size:9.5px;padding:0 5px;border-radius:8px;background:#ff2d55;color:#fff}
.hz.lk{opacity:.4}
.hz:active{transform:scale(.95)}
@media (max-height:820px){.home .hwids .hw{height:104px}.hzone{margin-top:8px;padding:8px 8px 10px}}
@media (max-height:720px){.hzone{margin-top:auto;padding:6px;border-radius:16px}.hzone>small{display:none}.hz{aspect-ratio:auto;height:42px;padding-bottom:3px;border-radius:10px}.hz span{font-size:13px}.hz b{font-size:9.5px;margin-top:1px}.hz em{top:2px;right:2px;font-size:8.5px}}

/* =====================================================================
   20261102.1　現場、分區地圖、白天／夜晚
   ===================================================================== */
.slots.two i{font-size:12px}
.acts{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:#fff}
.acts i{width:12px;height:12px;border-radius:50%;background:rgba(255,255,255,.18);box-shadow:inset 0 0 0 1px rgba(255,255,255,.3)}
.acts i.on{background:radial-gradient(circle at 35% 35%,#ffd1df,var(--rose) 70%);box-shadow:0 0 8px rgba(255,79,135,.7)}
.acts b{font-weight:700;margin-left:4px;text-shadow:0 1px 4px rgba(0,0,0,.7)}
.acts.night{color:#cdd6ff;text-shadow:0 1px 4px rgba(0,0,0,.7)}

.site{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--phone);animation:vin .3s ease;overflow:hidden}
.stop2{position:absolute;top:0;left:0;right:0;z-index:6;display:flex;align-items:center;gap:8px;padding:calc(42px + var(--sat)) 12px 8px;background:linear-gradient(rgba(0,0,0,.7),transparent)}
.stop2 .backbtn{flex:none}
.stt{flex:1;min-width:0;line-height:1.25}
.stt small{display:block;font-size:11px;color:var(--ink2);letter-spacing:.06em}
.stt b{display:block;font-family:var(--serif);font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 6px #000}
.sthome{width:36px;height:36px;border-radius:50%;background:rgba(0,0,0,.45);box-shadow:inset 0 0 0 1px rgba(255,255,255,.15);font-size:16px;flex:none}
.sscene{position:relative;flex:none;height:56%;min-height:300px;overflow:hidden}
.sscene>.pimg,.sscene>img{position:absolute;inset:0;width:100%;height:100%}
.sscene .pimg img{width:100%;height:100%;object-fit:cover;animation:skb 22s ease-in-out infinite alternate}
@keyframes skb{from{transform:scale(1.04)}to{transform:scale(1.12) translate(-1.5%,-1%)}}
.sshade{position:absolute;inset:0;background:linear-gradient(transparent 55%,rgba(13,10,18,.65) 85%,var(--phone)),radial-gradient(120% 80% at 50% 40%,transparent 50%,rgba(0,0,0,.35))}
.site.night .sshade{background:linear-gradient(rgba(10,14,40,.35),rgba(10,14,40,.35)),linear-gradient(transparent 55%,rgba(13,10,18,.7) 85%,var(--phone))}
.spot{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:3px;z-index:3;animation:spin .5s cubic-bezier(.2,.9,.3,1.3) both;animation-delay:var(--d)}
@keyframes spin{from{opacity:0;transform:translate(-50%,-30%) scale(.6)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
.spot .av,.spot .sico{box-shadow:0 0 0 2.5px rgba(255,255,255,.85),0 6px 16px rgba(0,0,0,.6)}
.spot small{font-size:11px;font-weight:700;background:rgba(0,0,0,.62);padding:1px 8px;border-radius:9px;white-space:nowrap;max-width:110px;overflow:hidden;text-overflow:ellipsis}
.spot.hot .av,.spot.hot .sico{box-shadow:0 0 0 2.5px var(--rose),0 0 18px var(--rose),0 6px 16px rgba(0,0,0,.6);animation:hotp 1.8s ease-in-out infinite}
@keyframes hotp{50%{box-shadow:0 0 0 2.5px var(--rose2),0 0 28px var(--rose),0 6px 16px rgba(0,0,0,.6)}}
.spot.k-meet .av{box-shadow:0 0 0 2px var(--gold),0 0 22px rgba(243,207,142,.7)}
.spot.k-meet small{color:var(--gold)}
.sico{border-radius:50%;display:grid;place-items:center;font-size:20px;background:rgba(20,14,24,.78);flex:none}
.spot.k-app .sico{border-radius:14px}
.sacts{position:absolute;left:14px;bottom:12px;z-index:4}
.sbody{flex:1;overflow-y:auto;padding:4px 16px calc(24px + var(--sab));-webkit-overflow-scrolling:touch}
.sline{font-family:var(--serif);font-size:14px;color:var(--ink2);margin:2px 0 12px;line-height:1.75}
.sline span{color:var(--ink3);font-size:13px}
.srows{display:grid;gap:8px;grid-template-columns:minmax(0,1fr)}
.srow{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:14px;background:var(--card);text-align:left;min-width:0}
.srow>.av,.srow>.sico{flex:none}
.srow b{display:block;font-size:14.5px}
.srow span{display:block;font-size:12px;color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.srow em{font-style:normal;font-size:12px;padding:3px 10px;border-radius:12px;background:var(--card2);color:var(--ink2);flex:none}
.srow.hot{box-shadow:inset 0 0 0 1px rgba(255,79,135,.5);background:rgba(255,79,135,.08)}
.srow.hot em{background:var(--rose);color:#fff}
.srow.k-meet{box-shadow:inset 0 0 0 1px rgba(243,207,142,.45);background:rgba(243,207,142,.07)}
.srow.k-meet em{background:var(--gold);color:#2a1a06}
.scost{font-size:12px;text-align:center;margin:10px 0 6px}
.snb{margin:12px 0 4px}
.snb small{display:block;font-size:11.5px;color:var(--ink3);margin-bottom:6px}
.snb>div{display:flex;gap:8px;flex-wrap:wrap}
.snb button{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:20px;background:var(--card2);font-size:13px;position:relative}
.snb button i{font-style:normal;font-size:10.5px;font-weight:700;background:var(--rose);color:#fff;border-radius:9px;padding:0 6px;margin-left:2px}
.psh{display:flex;gap:12px;align-items:center;margin-bottom:8px}
.psh h3{margin:0}
.ptalk{margin:10px 0 4px;padding:12px 14px;border-radius:16px;background:var(--card)}
.ptalk p{margin:0 0 6px;font-family:var(--serif);font-size:14.5px;line-height:1.75}
.ptalk p:last-child{margin:0;color:var(--ink2);font-size:13.5px}
.ptalk p:first-child{color:var(--ink)}
.sev{position:absolute;left:12px;right:12px;bottom:46px;z-index:7;animation:sevin .35s cubic-bezier(.2,.9,.3,1.2) both}
.sev.out{animation:sevout .3s ease forwards}
@keyframes sevin{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes sevout{to{opacity:0;transform:translateY(10px)}}
.sevc{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:16px;background:rgba(20,13,24,.9);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:inset 0 0 0 1px rgba(255,143,177,.35),0 10px 30px rgba(0,0,0,.5)}
.sevc p{margin:0;font-size:13.5px;line-height:1.6}
.sevi{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:rgba(255,79,135,.18);color:var(--rose2);flex:none}

/* 地圖：分區 */
.pin .pi{box-shadow:0 0 0 2px var(--dc,#fff),0 4px 10px rgba(0,0,0,.45)}
.pin .who .more{font-style:normal;font-size:9.5px;font-weight:700;background:#0b1e28;color:#fff;border-radius:9px;padding:0 4px;margin-left:-4px;align-self:center}
.pin .bub{position:absolute;top:-16px;right:18px;font-style:normal;font-size:16px;animation:bub 2s ease-in-out infinite;filter:drop-shadow(0 2px 4px rgba(0,0,0,.6))}
@keyframes bub{50%{transform:translateY(-3px)}}
.pin.rumor .pi{box-shadow:0 0 0 3px var(--gold),0 0 18px rgba(243,207,142,.8)}
.dlab{position:absolute;transform:translateX(-50%);z-index:1;font-size:10.5px;font-weight:700;letter-spacing:.12em;color:var(--dc);text-shadow:0 1px 3px #000,0 0 8px #000;white-space:nowrap;pointer-events:none;opacity:.95}
.mdist{display:grid;gap:8px;grid-template-columns:minmax(0,1fr);padding-left:10px;border-left:3px solid var(--dc);margin-bottom:6px}
.mdh{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-top:4px}
.mdh b{font-family:var(--serif);font-size:15px}
.mdh small{font-size:11.5px;color:var(--ink3)}
.srow>.st{flex:1;min-width:0}
.sev{position:relative;left:auto;right:auto;bottom:auto;margin:6px 0 12px}
.dleg{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:10px;font-size:11.5px;color:var(--ink2)}
.dleg span{display:inline-flex;align-items:center;gap:5px}
.dleg i{width:9px;height:9px;border-radius:50%;background:var(--dc);box-shadow:0 0 6px var(--dc)}
.pin .pi{width:30px;height:30px}
.pin .pi span{font-size:15px}
.pin .who{top:-12px;left:18px}

/* =====================================================================
   20261103.1　劇情畫面的在場感、名冊、過客、痕跡
   ===================================================================== */
.reader.por .rimg{height:46%}
.reader .rpor{position:absolute;top:0;bottom:0;right:0;width:70%;z-index:1;-webkit-mask-image:linear-gradient(90deg,transparent,#000 34%);mask-image:linear-gradient(90deg,transparent,#000 34%);overflow:hidden;transition:width .9s ease}
.reader .rpor .pimg{position:absolute;inset:0}
.reader .rpor img{width:100%;height:100%;object-fit:cover;object-position:50% 18%;transform-origin:50% 26%;transition:transform 1.4s cubic-bezier(.2,.8,.2,1),filter 1.4s}
.reader.por .rimg>.pimgw{filter:brightness(.85)}
.reader.r18on .rpor{width:100%;-webkit-mask-image:none;mask-image:none}
.reader.r18on .rpor img{transform:scale(1.7);filter:saturate(1.15) contrast(1.05)}
.reader .rimg:before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:radial-gradient(120% 90% at 50% 40%,transparent 45%,rgba(120,10,50,.55));opacity:0;transition:opacity 1.2s}
.reader.r18on .rimg:before{opacity:1}
.reader .rimg:after{z-index:2}
.reader .rhead{z-index:3}
.rbody p.hasspk{position:relative}
.rbody .spk{display:flex;align-items:center;gap:6px;margin:0 0 2px;font-family:var(--sans);font-style:normal}
.rbody .spk .av{box-shadow:0 0 0 1.5px rgba(255,143,177,.6)}
.rbody .spk b{font-size:12px;color:var(--rose2);letter-spacing:.06em;font-weight:700}
.sico.seek{background:radial-gradient(circle,rgba(243,207,142,.35),rgba(20,14,24,.85));box-shadow:0 0 0 2px var(--gold),0 0 18px rgba(243,207,142,.7)!important}
.spot.k-seek small{color:var(--gold)}
.srow.k-seek{box-shadow:inset 0 0 0 1px rgba(243,207,142,.5);background:rgba(243,207,142,.07)}
.srow.k-seek em{background:var(--gold);color:#2a1a06}
.av.pass{display:grid;place-items:center;background:radial-gradient(circle at 50% 35%,#4a3040,#160c14)}
.av.pass b{position:static;font-family:var(--serif);font-size:18px;color:var(--rose2)}
.spot.k-pass small{color:#ffd1df}
.srow.k-pass{box-shadow:inset 0 0 0 1px rgba(255,143,177,.3)}
.sev.trace .sevc{box-shadow:inset 0 0 0 1px rgba(243,207,142,.5),0 10px 30px rgba(0,0,0,.5)}
.sev .sevc small{display:block;margin-top:4px;font-size:11.5px;color:var(--gold)}
.clue em.how{font-style:normal;font-size:12px;color:var(--gold)}
.rlist{display:grid;gap:8px;grid-template-columns:minmax(0,1fr)}
.rost{display:flex;gap:12px;align-items:center;padding:8px 10px;border-radius:14px;background:var(--card);text-align:left;min-width:0}
.rost>div:not(.av){flex:1;min-width:0}
.rost b{display:block;font-size:14.5px}
.rost b small{font-size:10.5px;color:var(--ink3);margin-left:6px;font-weight:400}
.rost span{display:block;font-size:12px;color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rost em{font-style:normal;font-size:11.5px;color:var(--rose2)}
.reader .rimg>.pimgw img{transition:transform 1.6s cubic-bezier(.2,.8,.2,1),filter 1.6s}
.reader.r18on:not(.por) .rimg>.pimgw img{transform:scale(1.25);filter:saturate(1.2) brightness(.85)}
/* 20261103.2　地圖插畫 */
.mapwrap{aspect-ratio:1/1}
.mapwrap .isleimg{position:absolute;inset:0}
.mapwrap .isleimg .pimg,.mapwrap .isleimg img{width:100%;height:100%;object-fit:cover}

/* =====================================================================
   20261104.1　主畫面 v2：重口味在第一頁最上面，App 各有顏色
   ===================================================================== */
.home.v2 .pg{padding:calc(46px + var(--sat)) 14px calc(120px + var(--sab))}
.home.v2 .pg1{overflow-y:auto;overscroll-behavior-y:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.home.v2 .pg1::-webkit-scrollbar{display:none}
.home.v2 .pg1>*{flex:none}
.home.v2 .apps{gap:16px 6px;padding:4px 2px 0}
.home.v2 .app span{font-size:11.5px;font-weight:500;letter-spacing:.02em;white-space:nowrap}
.home.v2 .app .ic{width:58px;height:58px;border-radius:16px;overflow:hidden}
.home.v2 .app .ic:after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.28),rgba(255,255,255,0) 46%);pointer-events:none}
.home.v2 .app .ic svg{width:29px;height:29px;position:relative;z-index:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.25))}
.home.v2 .app .dot{z-index:2}
.home.v2 .p1apps{margin-top:2px}
/* 重口味面板 */
.hot{position:relative;margin-bottom:12px;padding:12px 10px 10px;border-radius:24px;overflow:hidden;
  background:radial-gradient(130% 90% at 15% 0%,rgba(190,16,52,.62),rgba(48,4,14,.86) 55%,rgba(8,1,3,.92));
  box-shadow:inset 0 0 0 1px rgba(255,70,105,.38),0 10px 30px rgba(120,0,30,.35);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.hot:before{content:"";position:absolute;inset:-40% -10% auto;height:120%;background:radial-gradient(closest-side,rgba(255,40,80,.22),transparent);pointer-events:none;animation:hotpulse 3.6s ease-in-out infinite}
@keyframes hotpulse{0%,100%{opacity:.5}50%{opacity:1}}
.hoth{position:relative;display:flex;align-items:center;gap:7px;padding:0 4px 8px}
.hoth b{font-size:13px;letter-spacing:.14em;color:#ffb3c2;font-weight:700}
.hoth em{margin-left:auto;font-style:normal;font-size:10.5px;color:#ff8fa3;letter-spacing:.04em;padding:2px 8px;border-radius:10px;background:rgba(255,45,85,.16);box-shadow:inset 0 0 0 1px rgba(255,90,120,.3)}
.hotapps{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:10px}
.home.v2 .app.hotic .ic{width:62px;height:62px;border-radius:18px;box-shadow:0 0 0 1px rgba(255,90,120,.5),0 8px 22px rgba(200,0,40,.45),inset 0 1px 0 rgba(255,255,255,.2)}
.home.v2 .app.hotic span{color:#ffd0da;font-weight:700}
.hot .hzrow{position:relative;gap:5px}
.hot .hz{aspect-ratio:1/1.05;height:auto;border-radius:12px;padding-bottom:5px;box-shadow:inset 0 0 0 1px rgba(255,120,150,.25)}
.hot .hz span{font-size:15px}.hot .hz b{font-size:10px;margin-top:2px}
.hot .hz em{top:4px;right:4px;font-size:9px}
.home.v2 .wid.wt{margin-bottom:12px}
.home.v2 .hwids{margin-top:14px;padding:0 2px}
.home.v2 .pg2h{font-size:11px;letter-spacing:.2em;color:rgba(255,255,255,.6);padding:4px 6px 12px;text-shadow:0 1px 4px rgba(0,0,0,.6)}
@media (max-height:720px){.home.v2 .hwids{display:grid}.hot .hz{aspect-ratio:1/1;height:auto}.hot .hz span{font-size:13px}}
@media (max-width:360px){.home.v2 .app .ic{width:52px;height:52px}.home.v2 .app.hotic .ic{width:56px;height:56px}.home.v2 .app span{font-size:10.5px}}
/* App 內頁：「色色體驗」的配色（不再是紅色） */
.view.ax.g-hot{background:radial-gradient(120% 60% at 50% 0%,#2a0c2e,var(--phone) 60%)}
.view.ax.g-hot .vhead{background:linear-gradient(#1e0a22 70%,transparent)}
.view.ax.g-hot .vhead h2{color:#ffb6e1}

/* =====================================================================
   慾島圈 v2：像真的社群 App
   ===================================================================== */
.view.feedv .vbody{padding-top:4px}
.fstory{display:flex;gap:12px;overflow-x:auto;margin:0 -16px 6px;padding:6px 16px 12px;border-bottom:1px solid var(--line);scrollbar-width:none}
.fstory::-webkit-scrollbar{display:none}
.fst{flex:none;width:66px;display:flex;flex-direction:column;align-items:center;gap:5px}
.fst .av{width:58px!important;height:58px!important;box-shadow:0 0 0 2px var(--phone),0 0 0 4px rgba(255,255,255,.18)}
.fst.new .av{box-shadow:0 0 0 2px var(--phone),0 0 0 4px #e1306c,0 0 0 5px #f9a03f}
.fst span{font-size:11px;color:var(--ink2);max-width:66px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.view.feedv .post{margin:0 -16px 6px;padding-bottom:14px}
.view.feedv .post .ph1{padding:10px 16px 10px}
.view.feedv .post .ph1 .av{width:36px;height:36px;box-shadow:0 0 0 2px var(--phone),0 0 0 3.5px #e1306c}
.view.feedv .post .ph1>div{flex:1;min-width:0}
.view.feedv .post .ph1 b{font-size:14px;display:flex;align-items:center;gap:4px}
.view.feedv .post .ph1 em{font-style:normal;color:var(--ink3);font-size:18px;letter-spacing:1px}
.vfy{font-style:normal;display:inline-grid;place-items:center;width:14px;height:14px;border-radius:50%;background:#3897f0;color:#fff;font-size:9px;font-weight:900}
.pmedia{position:relative}
.view.feedv .post .pimg{aspect-ratio:4/5}
.view.feedv .post .pimg img{width:100%;height:100%;object-fit:cover}
.pnew{position:absolute;top:10px;right:10px;font-size:10px;font-weight:800;letter-spacing:.1em;padding:3px 8px;border-radius:10px;background:rgba(225,48,108,.9);color:#fff}
.view.feedv .post .pa{gap:14px;padding:10px 14px 4px;align-items:center}
.view.feedv .post .pa .sp{flex:1}
.view.feedv .post .pa button i{font-size:23px}
.view.feedv .post .pa button[disabled]{opacity:.85}
.view.feedv .post .pa button.on i{color:#ff3b6b;animation:likepop .35s}
@keyframes likepop{50%{transform:scale(1.3)}}
.plk{padding:2px 16px 4px;font-size:13.5px;color:var(--ink)}
.plk b{font-weight:700}
.view.feedv .post .pt{white-space:pre-line;line-height:1.6;font-size:14px;padding:0 16px 4px}
.pcn{display:block;padding:2px 16px 4px;font-size:13px;color:var(--ink3);text-align:left}
.view.feedv .post .cm{padding:2px 16px;line-height:1.5}
.view.feedv .post .cm.me b{color:var(--rose2)}
.pask{display:flex;align-items:center;gap:8px;width:calc(100% - 32px);margin:6px 16px 2px;font-size:13px;color:var(--ink3);text-align:left}
.pask .av{width:24px!important;height:24px!important}
.pwhen{padding:4px 16px 0;font-size:11px;color:var(--ink3);letter-spacing:.04em}
.hw-feed .hwf span{white-space:normal}

/* 交歡紀錄（不再評分） */
.lgd{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.lgd i{font-style:normal;font-size:11px;padding:2px 8px;border-radius:10px;background:rgba(255,79,135,.12);color:var(--rose2)}

/* =====================================================================
   小說閱讀器 v2：封面大圖、圖文穿插、舒服的排版
   ===================================================================== */
.reader{background:#09070c}
.reader .rbg{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.reader .rbg .pimg{position:absolute;inset:-40px}
.reader .rbg img{width:100%;height:100%;object-fit:cover;filter:blur(28px) brightness(.32) saturate(1.3);transform:scale(1.15);transition:opacity 1s}
.reader .rbg:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(9,7,12,.35),rgba(9,7,12,.72) 60%,rgba(9,7,12,.9))}
.reader .rbody{position:relative;z-index:1;padding:0 0 48px;font-size:17px;line-height:2;letter-spacing:.03em;scroll-behavior:auto}
.reader .rbody>p,.reader .rbody>.rch{margin-left:24px;margin-right:24px}
.reader .rcover{position:relative;flex:none;width:100%;min-height:0;margin:0 0 22px;transition:height .5s}
.reader.por .rcover{height:auto}
.reader .rcover .pimgw{position:absolute;inset:0}
.reader .rcover .pimgw .pimg{position:absolute;inset:0}
.reader .rcover .pimgw img{width:100%;height:100%;object-fit:cover}
.reader .rcover:after{background:linear-gradient(180deg,rgba(9,7,12,.45),transparent 22%,transparent 55%,rgba(9,7,12,.55) 80%,rgba(9,7,12,.96))}
.reader .rcover .rhead{left:24px;right:24px;bottom:4px}
.reader .rcover .rhead small{display:inline-block;font-size:11.5px;letter-spacing:.26em;color:#ffc2d4;padding:3px 10px;border-radius:12px;background:rgba(0,0,0,.35);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);margin-bottom:8px}
.reader .rcover .rhead h2{font-size:30px;font-weight:900;letter-spacing:.1em;line-height:1.25;text-shadow:0 2px 18px rgba(0,0,0,.85)}
.reader .rcover .rhead h2:after{content:"";display:block;width:36px;height:2px;margin-top:12px;border-radius:2px;background:linear-gradient(90deg,var(--rose),transparent)}
.reader.por .rcover .rpor{width:78%}
.reader.r18on .rcover .rpor{width:100%}
.reader .rbody p{margin-bottom:1.15em}
.reader .rbody p.n{color:#d6c9d1;font-style:normal}
.reader .rbody p.d{color:#fff}
.reader .rbody p.mine{color:#ffa6c4;font-family:var(--sans);font-size:15px;padding:8px 14px;border-radius:14px;background:rgba(255,79,135,.1);line-height:1.7}
.reader .rbody p.mine:before{content:"▸ "}
.reader .rbody p.r18{padding-left:14px;border-left:2px solid rgba(255,79,135,.55)}
.reader .rbody p.r18.n{color:#f1dde6}
.reader .rbody p.sys{margin-left:24px;margin-right:24px}
.reader .rbody p.fade{margin:1.6em 24px}
/* 文字中間的大圖：滿版、照原圖比例 */
.reader .rfig{margin:10px 0 26px;position:relative;animation:figin .7s ease}
.reader .rfw{position:relative;width:100%;max-height:82vh;overflow:hidden;box-shadow:0 18px 40px rgba(0,0,0,.55)}
.reader .rfw .pimg{position:absolute;inset:0}
.reader .rfw img{width:100%;height:100%;object-fit:cover}
.reader .rfw:before,.reader .rfw:after{content:"";position:absolute;left:0;right:0;height:38px;z-index:1;pointer-events:none}
.reader .rfw:before{top:0;background:linear-gradient(rgba(9,7,12,.7),transparent)}
.reader .rfw:after{bottom:0;background:linear-gradient(transparent,rgba(9,7,12,.75))}
.reader .rclose .rfw{aspect-ratio:4/5}
.reader .rclose .rfw img{object-position:50% 16%;transform:scale(1.12);animation:closezoom 9s ease-out forwards}
.reader .rclose .rfw:after{height:60%;background:radial-gradient(120% 80% at 50% 30%,transparent 40%,rgba(120,10,50,.55)),linear-gradient(transparent 50%,rgba(9,7,12,.8))}
.reader .rclose figcaption{position:absolute;left:24px;bottom:14px;z-index:2;font-family:var(--sans);font-size:12px;letter-spacing:.3em;color:#ffc2d4}
@keyframes figin{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes closezoom{from{transform:scale(1.02)}to{transform:scale(1.18)}}
.reader .rch{margin-top:14px}
.reader .rch button{background:rgba(20,10,18,.72);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:inset 0 0 0 1px rgba(255,79,135,.45);font-size:15.5px}
.reader .rtap{position:relative;z-index:2;background:linear-gradient(transparent,rgba(9,7,12,.9) 40%)}
.reader .rdone{position:relative;z-index:2}
.reader .rtop{z-index:4}
@media (min-width:500px){.reader .rbody{font-size:17.5px}}
.view.feedv .post .ph1>div{flex:none}
.view.feedv .post .ph1>div:nth-child(2){flex:1;min-width:0}
.view.feedv .post .pa button{width:28px;height:28px;padding:0;color:var(--ink)}
.view.feedv .post .pa button svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round}
.view.feedv .post .pa button.on{color:#ff3b6b}
.view.feedv .post .pa button.on svg{fill:currentColor;animation:likepop .35s}
.view.feedv .post .pa button[disabled]{opacity:1}
.home.v2 .app .ic{overflow:visible}
.home.v2 .pg1{-webkit-mask-image:linear-gradient(transparent 0,#000 calc(34px + var(--sat)),#000 100%);mask-image:linear-gradient(transparent 0,#000 calc(34px + var(--sat)),#000 100%)}
.home.v2~.hdots,.home.v2 .hdots{background:rgba(10,6,14,.45);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:2px 4px}
.reader:before{content:"";position:absolute;left:0;right:0;top:0;height:calc(64px + var(--sat));z-index:3;pointer-events:none;background:linear-gradient(rgba(9,7,12,.92),rgba(9,7,12,.6) 55%,transparent)}

/* =====================================================================
   20261104.2　App 外殼：品牌標頭、主題色、底部 Home 條
   ===================================================================== */
.home.v2 .app .ic:after{background:linear-gradient(180deg,rgba(255,255,255,.2),rgba(255,255,255,0) 42%)}
.home.v2 .app .ic{box-shadow:0 6px 16px rgba(0,0,0,.38),inset 0 1px 0 rgba(255,255,255,.28),inset 0 -1px 0 rgba(0,0,0,.25),inset 0 0 0 .5px rgba(255,255,255,.14)}
.home.v2 .app .ic svg{width:32px;height:32px;filter:drop-shadow(0 1px 1.5px rgba(0,0,0,.28))}
.dock .app .ic svg{width:33px;height:33px}
.home.v2 .pg1{-webkit-mask-image:linear-gradient(transparent 0,#000 calc(34px + var(--sat)),#000 calc(100% - 150px - var(--sab)),transparent calc(100% - 112px - var(--sab)));mask-image:linear-gradient(transparent 0,#000 calc(34px + var(--sat)),#000 calc(100% - 150px - var(--sab)),transparent calc(100% - 112px - var(--sab)))}
.home.v2 .pg1{padding-bottom:calc(150px + var(--sab))}
.home.v2 .hdots{background:none;backdrop-filter:none;-webkit-backdrop-filter:none}

.view[data-app]{--rose:var(--ac);--rose2:color-mix(in srgb,var(--ac) 58%,#fff);
  background:radial-gradient(130% 42% at 50% -6%,color-mix(in srgb,var(--ac) 20%,transparent),transparent 70%),var(--phone)}
.view[data-app] .vhead{gap:9px;padding-top:calc(46px + var(--sat));background:linear-gradient(rgba(13,10,18,.86) 62%,rgba(13,10,18,0));backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.view[data-app] .backbtn{width:36px;height:36px;padding:0;margin-left:-4px;justify-content:center;border-radius:50%;font-size:0;background:rgba(255,255,255,.08)}
.view[data-app] .backbtn svg{width:20px;height:20px;margin-left:-2px}
.vic{flex:none;width:32px;height:32px;border-radius:9px;display:grid;place-items:center;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 3px 10px rgba(0,0,0,.35)}
.vic svg{width:21px;height:21px}
.view[data-app] .vhead h2{font-family:var(--sans);font-weight:800;font-size:18.5px;letter-spacing:.02em;color:#fff}
.view[data-app] .vhead .sub{font-size:11.5px;margin-top:1px;font-weight:400;letter-spacing:.02em}
.view[data-app] .btn.main{background:linear-gradient(135deg,var(--ac),var(--acb));color:var(--act);box-shadow:0 8px 22px color-mix(in srgb,var(--ac) 30%,transparent)}
.view[data-app] .mtabs button{border-radius:18px;background:rgba(255,255,255,.06)}
.view[data-app] .mtabs button.on{background:color-mix(in srgb,var(--ac) 22%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ac) 60%,transparent);color:#fff}
.view[data-app] .tog.on{background:var(--ac)}
.view[data-app] .chip.rose{background:color-mix(in srgb,var(--ac) 16%,transparent);color:var(--rose2)}
.view[data-app] .vbody{padding-bottom:calc(40px + var(--sab))}
.vacts{display:flex;gap:14px;color:var(--ink2);flex:none}
.vacts i{display:grid;place-items:center;width:22px;height:22px}
.vacts svg{width:22px;height:22px}
/* 底部 Home 條：點一下回主畫面 */
.homebar{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:160px;height:calc(18px + var(--sab));display:flex;align-items:flex-end;justify-content:center;padding-bottom:calc(6px + var(--sab));z-index:6}
.homebar i{display:block;width:134px;height:5px;border-radius:3px;background:rgba(255,255,255,.55);transition:background .2s,width .2s}
.homebar:active i{background:#fff;width:120px}

/* =====================================================================
   LIME：像真的通訊 App
   ===================================================================== */
.view.lime .vbody{padding-top:2px}
.lsearch{display:flex;align-items:center;gap:8px;height:38px;border-radius:12px;background:rgba(255,255,255,.08);padding:0 12px;margin:0 0 8px;color:var(--ink3)}
.lsearch svg{width:17px;height:17px;flex:none}
.lsearch input{flex:1;min-width:0;background:none;border:0;outline:0;color:var(--ink);font:inherit;font-size:14.5px}
.lsearch input::placeholder{color:var(--ink3)}
.view.lime .crow{padding:9px 2px;border-radius:0}
.view.lime .crow .cr{padding-bottom:11px}
.view.lime .crow .cr b{align-items:center;gap:8px}
.view.lime .crow .cr b>span{display:flex;align-items:center;gap:6px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.view.lime .crow .cr b small{flex:none;font-size:11px}
.view.lime .crow.unread .cr b small{color:var(--ac)}
.view.lime .crow .cr span{margin-top:3px}
.view.lime .crow .cr .dot{background:var(--ac);font-style:normal;min-width:20px;height:20px;border-radius:10px;font-size:11px;display:grid;place-items:center;padding:0 6px;color:#fff;flex:none;font-weight:700}
.ctag{font-style:normal;font-size:10.5px;font-weight:500;color:var(--ink3);padding:1px 6px;border-radius:8px;background:rgba(255,255,255,.07)}
.cofc{font-style:normal;display:inline-grid;place-items:center;width:15px;height:15px;border-radius:50%;background:var(--ac);color:#fff;font-size:9px;font-weight:900}
/* 聊天室 */
.view.chat{background:#141821}
.view.chat:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;background:radial-gradient(circle at 20% 30%,rgba(19,199,99,.06),transparent 40%),radial-gradient(circle at 80% 70%,rgba(255,79,135,.05),transparent 40%)}
.view.chat .vhead{background:rgba(20,24,33,.94);border-bottom:1px solid rgba(255,255,255,.06)}
.view.chat .vhead h2{font-size:16.5px}
.view.chat .msgs{position:relative;padding:12px 12px 14px;gap:6px}
.cdate{align-self:center;margin:8px 0 6px;font-size:11.5px;color:rgba(255,255,255,.75);background:rgba(255,255,255,.1);padding:3px 12px;border-radius:12px}
.view.chat .msg{max-width:86%;gap:7px}
.view.chat .msg .av{width:32px;height:32px;align-self:flex-start}
.view.chat .msg.cont .av{visibility:hidden;height:0}
.view.chat .msg .bb{background:#2e333d;border-radius:18px;border-top-left-radius:6px;font-size:15px}
.view.chat .msg.cont .bb{border-top-left-radius:18px}
.view.chat .msg.me .bb{background:linear-gradient(135deg,#1fd16f,#0bb35a);color:#062b14;border-radius:18px;border-top-right-radius:6px;font-weight:500}
.view.chat .msg.me .bb.r18{box-shadow:inset 0 0 0 1.5px rgba(255,79,135,.8)}
.view.chat .msg .mt{flex:none;align-self:flex-end;font-size:10px;line-height:1.3;color:rgba(255,255,255,.45);white-space:nowrap}
.view.chat .msg.me .mt{text-align:right}
.view.chat .msg .bb.pic{background:#2e333d;padding:4px}
.view.chat .cfoot{position:relative;background:rgba(20,24,33,.98);border-top:1px solid rgba(255,255,255,.06);padding:8px 10px calc(24px + var(--sab))}
.view.chat .cbar{gap:6px}
.cbi{flex:none;display:grid;place-items:center;width:30px;height:36px;color:var(--ink2)}
.cbi svg{width:23px;height:23px}
.view.chat .cfoot .cbar .fake{height:38px;border-radius:19px;padding:0 6px 0 14px;justify-content:space-between;gap:6px;background:rgba(255,255,255,.08);font-size:14px}
.view.chat .cfoot .cbar .fake span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.view.chat .cfoot .cbar .fake.on{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ac) 70%,transparent);color:var(--ink)}
.view.chat .cfoot .cbar .fake em{font-style:normal;flex:none;min-width:22px;height:22px;border-radius:11px;background:var(--ac);color:#fff;font-size:11.5px;font-weight:800;display:grid;place-items:center;padding:0 6px}
.view.chat .cfoot .cbar .fake b{flex:none;font-weight:400;color:var(--ink3);font-size:17px;padding-right:6px}
.cqr small{display:block;font-size:11px;color:var(--ink3);letter-spacing:.1em;margin:0 2px 6px}
.view.chat .cfoot .copts button{border-radius:20px;background:rgba(19,199,99,.1);box-shadow:inset 0 0 0 1px rgba(19,199,99,.55);color:#e9fff1}

/* ---------- 溫泉濕池：大圖卡片 ---------- */
.plist{gap:12px}
.poolc{position:relative;height:178px;border-radius:20px;overflow:hidden;box-shadow:0 10px 26px rgba(0,0,0,.4),inset 0 0 0 1px rgba(255,255,255,.08)}
.poolc>.pimg{position:absolute;inset:0;height:100%}
.poolc>.pimg img{width:100%;height:100%;object-fit:cover}
.poolc:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,4,14,.15),rgba(10,4,14,.2) 35%,rgba(10,4,14,.88))}
.pcin{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;justify-content:space-between;padding:12px 14px}
.pctop{display:flex;justify-content:space-between;align-items:flex-start}
.pclive{display:inline-flex;align-items:center;gap:6px;font-size:11px;padding:3px 9px;border-radius:12px;background:rgba(0,0,0,.45);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.poolc.full .pclive .lvdot{background:#999;animation:none}
.pctemp{font:800 30px/1 var(--sans);color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.5);letter-spacing:-.02em}
.pctemp small{font-size:14px;font-weight:600;opacity:.85}
.pcbot b{display:block;font:900 20px var(--serif);letter-spacing:.06em}
.pccap{height:4px;border-radius:2px;background:rgba(255,255,255,.18);overflow:hidden;margin:6px 0 4px}
.pccap i{display:block;height:100%;background:linear-gradient(90deg,#8af3e4,#ff8fc8)}
.pcbot span{font-size:12px;color:rgba(255,255,255,.8)}
.pcbot em{display:block;font-style:normal;font-size:12px;color:#ffc6e2;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- 愛幣錢包：黑金卡 ---------- */
.walcard{position:relative;aspect-ratio:1.586;border-radius:20px;padding:18px 20px;margin:4px 0 10px;overflow:hidden;color:#f6e3bd;
  background:radial-gradient(120% 90% at 85% 0%,rgba(243,207,142,.28),transparent 55%),linear-gradient(135deg,#2c2730 0%,#141116 55%,#08070a 100%);
  box-shadow:0 18px 40px rgba(0,0,0,.55),inset 0 0 0 1px rgba(243,207,142,.35);display:flex;flex-direction:column;justify-content:flex-end}
.walcard:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(115deg,rgba(255,255,255,.025) 0 2px,transparent 2px 6px),linear-gradient(115deg,transparent 40%,rgba(255,255,255,.1) 50%,transparent 60%);pointer-events:none}
.wctop{position:absolute;top:16px;left:20px;right:20px;display:flex;justify-content:space-between;align-items:baseline}
.wctop span{font:900 16px var(--serif);letter-spacing:.2em}
.wctop em{font-style:normal;font-size:9.5px;letter-spacing:.24em;opacity:.7}
.walcard .chipg{top:auto;bottom:auto;left:20px;top:50px;width:40px;height:30px}
.wcnfc{position:absolute;left:70px;top:55px;width:20px;height:20px;border-radius:50%;background:radial-gradient(circle,transparent 30%,rgba(243,207,142,.6) 32%,transparent 40%,transparent 52%,rgba(243,207,142,.5) 54%,transparent 62%);clip-path:inset(0 0 0 50%)}
.walcard small{font-size:10.5px;letter-spacing:.24em;opacity:.65}
.walcard>b{font:800 32px/1.2 var(--sans);color:#fff2d6;letter-spacing:.01em;font-variant-numeric:tabular-nums;text-shadow:0 2px 10px rgba(0,0,0,.4)}
.wcbot{display:flex;justify-content:space-between;margin-top:8px;font-size:12px;letter-spacing:.18em;opacity:.85;font-variant-numeric:tabular-nums}
.walsub{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-radius:14px;background:rgba(255,255,255,.05);margin-bottom:10px;font-size:13px;color:var(--ink2)}
.walsub b{font-variant-numeric:tabular-nums;color:var(--ink)}
.view[data-app=wallet] .wbb .in{background:linear-gradient(#f6d9a6,#b07a33)}
.view[data-app=wallet] .wb.now small{color:var(--gold)}

/* ---------- 愛幣商城：搜尋、輪播、銷量 ---------- */
.shopcoin{font-size:12.5px;font-weight:800;color:var(--gold);padding:5px 10px;border-radius:14px;background:rgba(243,207,142,.12)}
.sban{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -16px 10px;padding:0 16px;scrollbar-width:none}
.sban::-webkit-scrollbar{display:none}
.sbi{position:relative;flex:0 0 86%;height:150px;border-radius:18px;overflow:hidden;scroll-snap-align:center;text-align:left;box-shadow:0 10px 24px rgba(0,0,0,.4)}
.sbi .pimg{position:absolute;inset:0;height:100%}.sbi .pimg img{width:100%;height:100%;object-fit:cover}
.sbi:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(14,8,6,.88),rgba(14,8,6,.35) 60%,transparent)}
.sbi>div{position:absolute;left:16px;bottom:14px;right:40%;z-index:1}
.sbi small{display:inline-block;font-size:10.5px;letter-spacing:.1em;color:#2a1606;background:var(--gold);padding:2px 8px;border-radius:8px;font-weight:700}
.sbi b{display:block;font:900 19px/1.3 var(--serif);margin-top:6px}
.sbi span{font-size:13px;color:var(--gold);font-weight:800}
.item{position:relative}
.ihot,.ilim{position:absolute;top:8px;left:8px;z-index:1;font-style:normal;font-size:10.5px;font-weight:800;padding:2px 7px;border-radius:7px;background:#ff4d6d;color:#fff;box-shadow:0 2px 8px rgba(0,0,0,.3)}
.ilim{left:auto;right:8px;background:var(--gold);color:#2a1606}
.item .ii small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.7em;margin-top:2px;line-height:1.35}
.ipr{display:flex;justify-content:space-between;align-items:baseline;margin-top:6px}
.ipr span{font-size:14px;color:var(--gold);font-weight:800}
.ipr em{font-style:normal;font-size:10.5px;color:var(--ink3)}

/* ---------- 夜蘭色系（劇場、溫泉、健身房、電梯塔、校務通）：不再是紅色 ---------- */
.view[data-fam=orchid] .show,.view[data-fam=orchid] .coach,.view[data-fam=orchid] .lsi{background:linear-gradient(160deg,#2b1036,#0f0616);box-shadow:inset 0 0 0 1px rgba(232,90,176,.22)}
.view[data-fam=orchid] .show.now{box-shadow:inset 0 0 0 1.5px var(--gold),0 0 24px rgba(243,207,142,.2)}
.view[data-fam=orchid] .stcard{background:linear-gradient(135deg,#6a1f7a,#1c0826);box-shadow:inset 0 0 0 1px rgba(255,170,220,.25)}
.view[data-fam=orchid] .shbar i{background:linear-gradient(90deg,#7e2a8f,#ff6fc0)}
.view[data-fam=orchid] .cbadge{background:#c84c9a}
.view[data-fam=orchid] .fit b,.view[data-fam=orchid] .lread b,.view[data-fam=orchid] .lshaft i.on span{color:#ffb0dc}
.view.ax.g-hot .vhead,.view.ax.g-red .vhead,.view.ax.g-pur .vhead,.view.ax.g-rose .vhead{background:linear-gradient(rgba(13,10,18,.86) 62%,rgba(13,10,18,0))}
.view.ax.g-hot .vhead h2,.view.ax.g-pur .vhead h2,.view.ax.g-rose .vhead h2{color:#fff}
.view.ax.g-red .vhead h2{color:#ffb3c2}
.view.ax.g-pur{background:radial-gradient(130% 42% at 50% -6%,color-mix(in srgb,var(--ac) 18%,transparent),transparent 70%),var(--phone)}
.view.ax.g-rose{background:radial-gradient(130% 42% at 50% -6%,color-mix(in srgb,var(--ac) 18%,transparent),transparent 70%),var(--phone)}

/* ---------- 通知（鎖定畫面、橫幅） ---------- */
.note.n2{align-items:flex-start;gap:11px;padding:11px 13px 12px;border-radius:22px;background:rgba(40,32,46,.62);backdrop-filter:blur(24px) saturate(1.4);-webkit-backdrop-filter:blur(24px) saturate(1.4);box-shadow:inset 0 0 0 .5px rgba(255,255,255,.12)}
.banner .note.n2{background:rgba(40,32,46,.9);box-shadow:0 12px 34px rgba(0,0,0,.5),inset 0 0 0 .5px rgba(255,255,255,.12)}
.nlead{position:relative;flex:none;width:40px;height:40px;margin-top:1px}
.nlead .av{width:40px!important;height:40px!important;border-radius:50%}
.nbadge{position:absolute;right:-4px;bottom:-4px;width:19px;height:19px;border-radius:6px;display:grid;place-items:center;box-shadow:0 0 0 2px rgba(30,24,34,.95)}
.nbadge svg{width:13px;height:13px}
.napp{display:grid;place-items:center;width:40px;height:40px;border-radius:11px;box-shadow:inset 0 1px 0 rgba(255,255,255,.25)}
.napp svg{width:26px;height:26px}
.note.n2 .nt{flex:1;min-width:0}
.note.n2 .nh{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:rgba(255,255,255,.62);letter-spacing:.04em;margin-bottom:1px}
.note.n2 .nh small{font-size:11px;color:rgba(255,255,255,.5)}
.note.n2 .nt b{display:block;font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.note.n2 .nt>span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal;font-size:13.5px;line-height:1.4;color:rgba(255,255,255,.86)}

/* ---------- 慾島圈・限時動態 ---------- */
.storyv{position:absolute;inset:0;z-index:58;background:#000;animation:fadein .25s;overflow:hidden}
.svimg{position:absolute;inset:0}.svimg .pimg{position:absolute;inset:0;height:100%}.svimg img{width:100%;height:100%;object-fit:cover;animation:svzoom 7s ease-out forwards}
@keyframes svzoom{from{transform:scale(1.02)}to{transform:scale(1.1)}}
.storyv:after{content:"";position:absolute;inset:0;background:linear-gradient(rgba(0,0,0,.55),transparent 22%,transparent 55%,rgba(0,0,0,.8));pointer-events:none}
.svbars{position:absolute;z-index:2;top:calc(44px + var(--sat));left:10px;right:10px;display:flex;gap:3px}
.svbars i{flex:1;height:2.5px;border-radius:2px;background:rgba(255,255,255,.3);overflow:hidden}
.svbars i b{display:block;height:100%;width:0;background:#fff}
.svbars i.done b{width:100%}
.svbars i.on b{animation:svbar 6s linear forwards}
@keyframes svbar{to{width:100%}}
.svhd{position:absolute;z-index:2;top:calc(56px + var(--sat));left:12px;right:12px;display:flex;align-items:center;gap:8px}
.svhd .av{width:34px!important;height:34px!important;box-shadow:0 0 0 1.5px #fff}
.svhd b{font-size:14px}.svhd small{font-size:12px;color:rgba(255,255,255,.7)}
.svx{margin-left:auto;width:34px;height:34px;font-size:18px;color:#fff}
.svtx{position:absolute;z-index:2;left:18px;right:18px;bottom:calc(86px + var(--sab));font-size:16px;line-height:1.6;white-space:pre-line;text-shadow:0 2px 10px rgba(0,0,0,.8);font-weight:500}
.svtx small{display:block;margin-top:8px;font-size:12px;opacity:.85}
.svft{position:absolute;z-index:2;left:12px;right:12px;bottom:calc(24px + var(--sab));display:flex;gap:10px;align-items:center}
.svrp{flex:1;height:44px;border-radius:22px;border:1px solid rgba(255,255,255,.55);text-align:left;padding:0 18px;font-size:14px;color:#fff;background:rgba(0,0,0,.2)}
.svrp[disabled]{opacity:.55}
.svlk{width:44px;height:44px;display:grid;place-items:center;color:#fff}
.svlk svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:1.8}
.svlk.on{color:#ff3b6b}.svlk.on svg{fill:currentColor}

/* =====================================================================
   20261104.3　新 App
   ===================================================================== */
.hotapps{grid-template-columns:repeat(4,1fr)}
.home.v2 .app.hotic .ic{width:58px;height:58px;border-radius:16px}
/* 費洛蒙外送 */
.dladdr{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:14px;background:rgba(255,255,255,.06);font-size:13px;margin-bottom:10px}
.dladdr span{color:var(--ink3)}.dladdr b{flex:1}.dladdr em{font-style:normal;font-size:11.5px;padding:2px 8px;border-radius:10px;background:color-mix(in srgb,var(--ac) 20%,transparent);color:var(--rose2)}
.dlpromo{padding:12px 14px;border-radius:16px;margin-bottom:10px;background:linear-gradient(120deg,#ff5f97,#b0216a);box-shadow:0 8px 22px rgba(255,79,135,.3)}
.dlpromo b{display:block;font-size:15px}.dlpromo span{font-size:12px;opacity:.9}
.dlist{display:grid;gap:10px;padding-bottom:70px}
.dli{display:flex;gap:12px;padding:10px;border-radius:16px;background:var(--card)}
.dli>.pimg{width:84px;height:84px;flex:none;border-radius:12px;overflow:hidden}.dli>.pimg img{width:100%;height:100%;object-fit:cover}
.dli>.pimg.emo{display:grid;place-items:center;font-size:34px;background:rgba(255,255,255,.06)}
.dlr{flex:1;min-width:0;display:flex;flex-direction:column}.dlr b{font-size:14.5px}.dlr small{font-size:11.5px;color:var(--ink3);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.dlp{display:flex;justify-content:space-between;align-items:center;margin-top:auto}.dlp span{font-weight:800;color:var(--rose2)}
.dladd{width:30px;height:30px;border-radius:50%;background:var(--ac);color:#fff;font-size:18px;font-weight:700}
.qty{display:flex;align-items:center;gap:8px}.qty button{width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.1);font-size:16px}.qty i{font-style:normal;font-weight:800;min-width:14px;text-align:center}
.dlcart{position:absolute;left:14px;right:14px;bottom:calc(30px + var(--sab));z-index:5;display:flex;align-items:center;gap:10px;height:54px;padding:0 16px;border-radius:27px;background:linear-gradient(135deg,var(--ac),var(--acb));box-shadow:0 10px 26px rgba(0,0,0,.45);font-weight:700}
.dlcart i{font-style:normal;min-width:26px;height:26px;border-radius:13px;background:rgba(255,255,255,.25);display:grid;place-items:center;font-size:13px}.dlcart span{flex:1;text-align:left}
.dlsum{display:grid;gap:6px;margin:8px 0;font-size:13.5px}.dlsum div{display:flex;justify-content:space-between}
.dlrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.dlrid button{text-align:left;padding:10px;border-radius:14px;background:var(--card);box-shadow:inset 0 0 0 1px var(--line)}
.dlrid button.on{box-shadow:inset 0 0 0 1.5px var(--rose);background:rgba(255,79,135,.1)}
.dlrid i{font-style:normal;font-size:22px}.dlrid b{display:block;font-size:13.5px}.dlrid small{display:block;font-size:11px;color:var(--ink3);line-height:1.4}
.dlpay{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.dlpay button{padding:12px;border-radius:14px;background:var(--card);box-shadow:inset 0 0 0 1px var(--line);text-align:left}.dlpay button.on{box-shadow:inset 0 0 0 1.5px var(--rose);background:rgba(255,79,135,.1)}
.dlpay button[disabled]{opacity:.4}.dlpay b{display:block;font-size:14px}.dlpay small{font-size:11.5px;color:var(--ink3)}
.dltot{display:flex;justify-content:space-between;align-items:baseline;margin:14px 2px 10px}.dltot b{font-size:20px;color:var(--gold)}
.dltrack{position:absolute;inset:0;z-index:58;background:rgba(8,4,10,.82);display:grid;place-items:center;animation:fadein .25s;padding:24px}
.dltc{width:100%;padding:20px;border-radius:22px;background:#1e1420;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.dltc small{color:var(--rose2);letter-spacing:.14em;font-size:11px}.dltc>b{display:block;font-size:19px;margin:4px 0 12px}
.dlbar{height:6px;border-radius:3px;background:rgba(255,255,255,.1);overflow:hidden}.dlbar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#ff8fb1,#ff3d7f);animation:dlbar 2.6s ease-in-out forwards}
@keyframes dlbar{to{width:100%}}
.dlst{display:flex;justify-content:space-between;font-size:11.5px;color:var(--ink3);margin:8px 0 14px}.dlst span.on{color:#fff;font-weight:700}
.dlrd{display:flex;gap:10px;align-items:center}.dlrd>i{font-style:normal;font-size:30px;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.08)}.dlrd b{display:block}.dlrd small{font-size:12px;color:var(--ink3)}
/* 支配者契約 */
.pcstat{display:flex;gap:12px;align-items:center;padding:12px;border-radius:18px;margin-bottom:10px;background:linear-gradient(135deg,#3a0612,#0e0204);box-shadow:inset 0 0 0 1px rgba(216,219,230,.35)}
.pcstat small{color:#d8dbe6;font-size:11px;letter-spacing:.1em}.pcstat b{display:block;font-size:17px}.pcstat span{font-size:12px;color:var(--ink3)}.pcstat em{display:block;font-style:normal;font-size:11.5px;color:#ffb3c2;margin-top:2px}
.pcdom{display:flex;gap:12px;padding:12px;border-radius:18px;margin-bottom:10px;background:linear-gradient(160deg,#22050c,#0a0204);box-shadow:inset 0 0 0 1px rgba(255,60,90,.2)}
.pcdom>.av{flex:none}.pcr{flex:1;min-width:0}.pcr>b{display:flex;align-items:center;gap:6px;font-size:16px}.pcr>span{font-size:12px;color:var(--ink3)}
.pcs{display:flex;align-items:center;gap:8px;margin:6px 0}.pcs small{font-size:11px;color:var(--ink3)}.pcs i{flex:1;height:5px;border-radius:3px;background:rgba(255,255,255,.08);position:relative;overflow:hidden}.pcs i:after{content:"";position:absolute;inset:0;width:var(--w);background:linear-gradient(90deg,#7a0f22,#ff2d4a)}
.pcr q{display:block;font-family:var(--serif);font-size:13.5px;color:var(--ink2);quotes:none;margin:4px 0 10px;line-height:1.6}
.pcr .btn{min-height:42px}
.pctools{display:grid;gap:10px}.pctool{display:flex;gap:12px;padding:10px;border-radius:16px;background:var(--card)}
.pctool>.pimg{width:76px;height:76px;flex:none;border-radius:12px;overflow:hidden}.pctool>.pimg img{width:100%;height:100%;object-fit:cover}.pctool>.pimg.emo{display:grid;place-items:center;font-size:30px}
.pctool b{display:block;font-size:14px}.pctool small{font-size:12px;color:var(--ink3);line-height:1.5}.pctool em{display:inline-block;font-style:normal;font-size:11px;color:#ff8fa3;margin-top:4px}.pctool.ban{opacity:.45}
.pccon{margin:12px 0 0;padding:12px 14px;border-radius:14px;background:#f4ece0;color:#2a1a10;font-family:var(--serif);font-size:12.5px;line-height:1.7}.pccon p{margin:0 0 6px}
.pcsign{position:relative;overflow:hidden}.pcsign i{position:absolute;left:0;top:0;bottom:0;width:0;background:rgba(255,255,255,.28)}.pcsign span{position:relative}
.pcsign.hold i{width:100%;transition:width 1.2s linear}
/* 遠端玩具 */
.rmhero{display:flex;gap:16px;align-items:center;padding:18px;border-radius:22px;background:radial-gradient(120% 120% at 20% 30%,rgba(232,90,176,.35),rgba(30,8,40,.9));box-shadow:inset 0 0 0 1px rgba(255,170,220,.25)}
.rmegg{position:relative;width:76px;height:100px;flex:none}
.rmegg i{position:absolute;inset:0;border-radius:50% 50% 50% 50%/58% 58% 42% 42%;background:radial-gradient(circle at 38% 30%,#fff,#ffb3e6 30%,#b14fd6 100%);box-shadow:0 0 calc(10px + var(--lv)*4px) rgba(255,120,220,.8);animation:rmvib calc(1.2s - var(--lv)*.1s) linear infinite}
.rmegg:before,.rmegg:after{content:"";position:absolute;inset:-10px;border-radius:50%;border:2px solid rgba(255,180,230,.5);opacity:calc(var(--lv)/10);animation:rmring 1.4s ease-out infinite}
.rmegg:after{animation-delay:.7s}
@keyframes rmvib{0%,100%{transform:translate(0)}25%{transform:translate(calc(var(--lv)*.25px),calc(var(--lv)*-.2px))}75%{transform:translate(calc(var(--lv)*-.25px),calc(var(--lv)*.2px))}}
@keyframes rmring{from{transform:scale(.8);opacity:calc(var(--lv)/10)}to{transform:scale(1.5);opacity:0}}
.rmi small{color:#7ff0b8;font-size:11px}.rmi b{display:block;font-size:18px;margin:2px 0}.rmi span{font-size:12.5px;color:var(--ink2)}.rmi em{font-style:normal;font-weight:800;color:#ffb3e6;font-size:16px}
.rmbars{display:flex;gap:4px;margin:14px 2px 8px}.rmbars i{flex:1;height:22px;border-radius:5px;background:rgba(255,255,255,.08)}.rmbars i.on{background:linear-gradient(#ffb3e6,#c84c9a);box-shadow:0 0 10px rgba(255,120,220,.5)}
.rmsl{width:100%;accent-color:#e85ab0}
.rmmode{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:14px;border-radius:16px;background:var(--card);margin-bottom:8px;box-shadow:inset 0 0 0 1px rgba(232,90,176,.25)}
.rmmode>i{font-style:normal;font-size:24px;width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:rgba(232,90,176,.18)}.rmmode div{flex:1}.rmmode b{display:block}.rmmode small{font-size:12px;color:var(--ink3)}.rmmode em{font-style:normal;color:var(--ink3);font-size:20px}
.rmdev{display:flex;gap:10px;align-items:center;padding:10px;border-radius:14px;background:var(--card);margin-bottom:8px}.rmdev.on{box-shadow:inset 0 0 0 1.5px #e85ab0}
.rmdev>.pimg{width:56px;height:56px;flex:none;border-radius:10px;overflow:hidden}.rmdev>.pimg img{width:100%;height:100%;object-fit:cover}.rmdev>.pimg.emo{display:grid;place-items:center;font-size:26px}
.rmdev div{flex:1;min-width:0}.rmdev b{display:block;font-size:14px}.rmdev small{font-size:11.5px;color:var(--ink3);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.qrbox{text-align:center;margin:10px 0}.qr{width:180px;height:180px;border-radius:14px;box-shadow:0 0 0 6px rgba(255,95,168,.35),0 10px 30px rgba(0,0,0,.5)}.qrbox small{display:block;margin-top:8px;color:var(--ink3);letter-spacing:.2em;font-size:11px}
.rmpool{text-align:center;padding:14px;border-radius:18px;background:rgba(232,90,176,.12);margin:10px 0}.rmpool b{font:900 34px var(--sans);color:#ffb3e6}.rmpool small{display:block;color:var(--ink3);font-size:12px}
.rmwave{display:flex;gap:3px;align-items:flex-end;height:48px;margin-top:10px}.rmwave i{flex:1;height:var(--h);border-radius:2px;background:linear-gradient(#ffb3e6,#7e2a8f);animation:rmw 1s ease-in-out infinite alternate;animation-delay:var(--d)}
@keyframes rmw{from{transform:scaleY(.35)}to{transform:scaleY(1)}}
/* 實況轉播台 */
.csh{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}.csh div{padding:12px 6px;border-radius:14px;background:var(--card);text-align:center}.csh b{display:block;font-size:17px;font-variant-numeric:tabular-nums}.csh small{font-size:11px;color:var(--ink3)}
.cslist{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.csi{position:relative;height:200px;border-radius:16px;overflow:hidden;text-align:left;box-shadow:0 8px 20px rgba(0,0,0,.4)}
.csi>.pimg{position:absolute;inset:0;height:100%}.csi>.pimg img{width:100%;height:100%;object-fit:cover}
.csi:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 40%,rgba(10,2,12,.9))}
.cslive{position:absolute;top:8px;left:8px;z-index:1;font-size:10px;font-weight:900;letter-spacing:.08em;padding:2px 7px;border-radius:5px;background:#ff2d55;color:#fff;animation:breath 1.6s infinite}
.csv{position:absolute;top:8px;right:8px;z-index:1;font-size:10.5px;padding:2px 7px;border-radius:8px;background:rgba(0,0,0,.55)}
.csi>div{position:absolute;left:10px;right:10px;bottom:10px;z-index:1}.csi>div b{display:block;font-size:13.5px;line-height:1.35}.csi>div small{font-size:11px;color:var(--ink2)}
.csview{position:absolute;inset:0;z-index:58;background:#000;overflow:hidden;animation:fadein .25s}
.csview:after{content:"";position:absolute;inset:0;background:linear-gradient(rgba(0,0,0,.5),transparent 25%,transparent 50%,rgba(0,0,0,.9));pointer-events:none}
.csvt{position:absolute;z-index:3;top:calc(48px + var(--sat));left:12px;right:12px;display:flex;align-items:center;gap:8px}.csvt .cslive{position:static}.csvn{font-size:13px;padding:3px 10px;border-radius:12px;background:rgba(0,0,0,.5)}
.csvb{position:absolute;z-index:3;left:16px;right:16px;bottom:calc(26px + var(--sab))}.csvb>b{display:block;font:900 20px var(--serif)}.csvb small{font-size:12px;color:var(--ink2)}.csvb p{font-size:13.5px;color:var(--ink2);margin:8px 0 12px}
.dmk{position:absolute;inset:0;z-index:57;pointer-events:none;overflow:hidden}
.dmk span{position:absolute;left:100%;white-space:nowrap;font-size:15px;font-weight:700;color:#fff;text-shadow:0 0 4px rgba(0,0,0,.9),0 1px 2px #000;animation:dmk linear forwards;padding:2px 10px;border-radius:12px;background:rgba(255,45,85,.25)}
.dmk span:nth-child(3n){color:#ffd6e6}.dmk span:nth-child(4n){color:#fff3b0;background:rgba(0,0,0,.25)}
@keyframes dmk{from{transform:translateX(0)}to{transform:translateX(calc(-100vw - 100%))}}
.csview .dmk{z-index:2}
/* 我的資產 */
.eshero{padding:18px;border-radius:22px;margin-bottom:10px;background:radial-gradient(120% 90% at 85% 0%,rgba(243,207,142,.32),transparent 60%),linear-gradient(135deg,#2c2730,#100d12);box-shadow:inset 0 0 0 1px rgba(243,207,142,.3)}
.eshero>small{font-size:11px;letter-spacing:.24em;color:var(--ink3)}.eshero>b{display:block;font:800 32px/1.2 var(--sans);color:#fff2d6;font-variant-numeric:tabular-nums}
.estt{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 0}.estt em{font-style:normal;font-size:11.5px;color:var(--ink3)}
.esbar{height:6px;border-radius:3px;background:rgba(255,255,255,.08);overflow:hidden}.esbar i{display:block;height:100%;background:linear-gradient(90deg,#b07a33,#ffe3a3);border-radius:3px}
.esrow{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:12px}.esrow small{display:block;font-size:10.5px;color:var(--ink3)}.esrow b{font-size:14px;font-variant-numeric:tabular-nums}
.escollect{display:flex;align-items:center;gap:12px;width:100%;padding:14px 16px;border-radius:18px;margin-bottom:10px;background:var(--card);text-align:left}
.escollect.on{background:linear-gradient(135deg,#f6d9a6,#c48d45);color:#2a1606;box-shadow:0 10px 26px rgba(243,207,142,.3);animation:escol 1.8s ease-in-out infinite}
@keyframes escol{50%{transform:scale(1.015)}}
.escollect>i{font-style:normal;font-size:28px}.escollect div{flex:1}.escollect b{display:block;font-size:16px}.escollect small{font-size:12px;opacity:.75}.escollect em{font-style:normal;font-weight:900;font-size:18px}
.eslist{display:grid;gap:12px}
.esi{position:relative;border-radius:20px;overflow:hidden;background:var(--card);box-shadow:inset 0 0 0 1px var(--line)}
.esi.own{box-shadow:inset 0 0 0 1.5px rgba(243,207,142,.7)}
.esi>.pimg{height:150px}.esi>.pimg img{width:100%;height:100%;object-fit:cover}.esi>.pimg.emo{display:grid;place-items:center;font-size:64px}
.esown{position:absolute;top:10px;left:10px;font-size:11px;font-weight:800;padding:3px 9px;border-radius:9px;background:var(--gold);color:#2a1606}
.esin{padding:12px 14px 14px}.esin>b{display:block;font:900 17px var(--serif)}.esin>small{display:block;font-size:12px;color:var(--ink3);line-height:1.55;margin:4px 0 10px}
.esm{display:flex;justify-content:space-between;align-items:center;gap:10px}.esm span{font-size:12.5px;color:var(--gold);font-weight:700}.esm span em{display:block;font-style:normal;font-weight:400;font-size:11px;color:var(--ink3)}
.esm .btn{width:auto;min-height:40px;padding:8px 14px;font-size:13.5px;flex:none}.esmax{color:var(--gold);font-weight:900}
.acq{position:absolute;inset:0;z-index:62;display:grid;place-items:center;padding:28px;background:radial-gradient(circle,rgba(243,207,142,.25),rgba(6,4,8,.92) 70%);animation:fadein .3s}
.acqc{width:100%;text-align:center;border-radius:24px;overflow:hidden;background:#1a1418;box-shadow:0 0 0 1.5px rgba(243,207,142,.7),0 20px 60px rgba(243,207,142,.25);animation:acqpop .5s cubic-bezier(.3,1.5,.5,1)}
.acqc>.pimg{height:200px}.acqc>.pimg img{width:100%;height:100%;object-fit:cover}.acqc>.pimg.emo{display:grid;place-items:center;font-size:80px}
.acqc small{display:block;margin-top:14px;letter-spacing:.4em;color:var(--gold);font-size:12px}.acqc b{display:block;font:900 24px var(--serif);margin:4px 0}.acqc span{display:block;font-size:13px;color:var(--ink2);margin-bottom:14px}.acqc .btn{width:auto;margin:0 auto 18px;padding:10px 30px}
@keyframes acqpop{from{transform:scale(.7);opacity:0}}
.crain{position:absolute;inset:0;z-index:63;pointer-events:none;overflow:hidden}.crain i{position:absolute;top:-30px;font-style:normal;color:#ffd36b;text-shadow:0 0 8px rgba(255,200,80,.8);animation:crain 1.8s ease-in forwards}
@keyframes crain{to{transform:translateY(110vh) rotate(360deg)}}

/* 痕跡的小圖（20261104.4） */
.clth{position:relative;width:64px;height:64px;flex:none;border-radius:12px;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.clth .pimg{height:100%}.clth img{width:100%;height:100%;object-fit:cover}
.clth b{position:absolute;inset:0;display:grid;place-items:center;background:rgba(0,0,0,.55);font-size:22px;color:#7ff0b8}
.clue.off .clth img{filter:grayscale(.6) brightness(.7)}
.sevth{width:52px;height:52px;flex:none;border-radius:12px;overflow:hidden}.sevth .pimg{height:100%}.sevth img{width:100%;height:100%;object-fit:cover}
.av.pass img{width:100%;height:100%;object-fit:cover}

/* ---------- 登島登記・兩頁版（口味合意書） ---------- */
.likes.sm button{padding:12px 6px 10px}
.likes.sm .lg{font-size:28px}
.likes.sm b{font-size:13.5px}
.fpre{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:-4px 0 14px}
.fpre button{padding:10px 4px;border-radius:14px;background:var(--card);box-shadow:inset 0 0 0 1px var(--line);font-size:13px;font-weight:700;color:var(--ink2);transition:all .25s}
.fpre button.on{background:linear-gradient(135deg,rgba(255,79,135,.3),rgba(194,48,106,.25));box-shadow:inset 0 0 0 1.5px var(--rose),0 8px 20px rgba(255,79,135,.2);color:#fff}
.flvs-list{display:flex;flex-direction:column;gap:7px}
.flv{display:flex;align-items:center;gap:10px;padding:9px 10px 9px 12px;border-radius:14px;background:var(--card);box-shadow:inset 0 0 0 1px var(--line);transition:background .25s,box-shadow .25s,opacity .25s}
.flv.v2{background:linear-gradient(100deg,rgba(255,79,135,.2),rgba(255,79,135,.05));box-shadow:inset 0 0 0 1.5px rgba(255,79,135,.6)}
.flv.v0{opacity:.55}
.flv.v0 .flvt b{text-decoration:line-through;text-decoration-color:rgba(255,255,255,.4)}
.flvi{font-size:22px;flex:none;width:26px;text-align:center}
.flvt{flex:1;min-width:0}
.flvt b{display:block;font-size:14px;line-height:1.3}
.flvt span{display:block;font-size:11px;line-height:1.45;color:var(--ink3);margin-top:2px}
.flvs{flex:none;display:flex;padding:3px;border-radius:11px;background:rgba(0,0,0,.28);box-shadow:inset 0 0 0 1px var(--line)}
.flvs button{min-width:40px;height:30px;padding:0 7px;border-radius:8px;font-size:11.5px;font-weight:700;color:var(--ink3);white-space:nowrap;transition:all .2s}
.flvs.n2:before{content:"";min-width:40px}
.flvs button.on[data-fv="0"]{background:#5a5560;color:#fff}
.flvs button.on[data-fv="1"]{background:rgba(255,255,255,.18);color:#fff}
.flvs button.on[data-fv="2"]{background:linear-gradient(135deg,var(--rose),#c2306a);color:#fff;box-shadow:0 4px 12px rgba(255,79,135,.4)}
.fmore{display:flex;align-items:center;gap:6px;margin:14px 0 0;font-size:13px;color:var(--rose2);font-weight:700}
.fmore i{font-style:normal;transition:transform .25s}
.fmore.open i{transform:rotate(180deg)}
.fmorebox{margin-top:10px}
.pmini{margin-top:16px;padding:12px 14px;border-radius:14px;background:rgba(243,207,142,.06);box-shadow:inset 0 0 0 1px rgba(243,207,142,.18)}
.pmini p{margin:0;font-size:12px;line-height:1.7;color:var(--ink2)}
.pmini .pactsw{flex-wrap:wrap;margin-top:10px}
.pmini .pactsw .field{flex:0 0 110px;height:38px}
.pmini .pactsw small{flex:1 1 100%;font-size:11px;color:var(--ink3)}
.pswitch{display:flex;align-items:center;justify-content:space-between;width:100%;margin-top:10px;font-size:12.5px;color:var(--ink2);text-align:left}
.pswitch i{flex:none;width:38px;height:22px;border-radius:11px;background:rgba(255,255,255,.15);position:relative;transition:background .25s}
.pswitch i:after{content:"";position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .25s}
.pswitch.on i{background:var(--rose)}
.pswitch.on i:after{transform:translateX(16px)}

/* =====================================================================
   20261104.5 介面加強：標題頭像、桌機側欄、登島前的出發卡、空狀態、按壓回饋
   ===================================================================== */
/* 標題：島民頭像疊在一起 */
.t2cast{display:flex;align-items:center;justify-content:center;gap:10px;margin:0 0 16px;opacity:0;animation:up .6s .5s forwards}
.t2cast span{font-size:12.5px;color:var(--ink2);letter-spacing:.04em}
.t2cast span b{font-family:var(--serif);font-size:16px;color:var(--gold);margin-right:2px}
.cstack{display:flex;padding-left:8px}
.cstack i{position:relative;width:34px;height:34px;margin-left:-9px;border-radius:50%;overflow:hidden;box-shadow:0 0 0 2px #120c16,0 4px 10px rgba(0,0,0,.5);animation:cpop .5s cubic-bezier(.3,1.5,.5,1) backwards}
.cstack i:nth-child(2){animation-delay:.58s}.cstack i:nth-child(3){animation-delay:.64s}.cstack i:nth-child(4){animation-delay:.7s}.cstack i:nth-child(5){animation-delay:.76s}
.cstack i:first-child{animation-delay:.52s}
.cstack .pimg,.cstack img{width:100%;height:100%;object-fit:cover}
@keyframes cpop{from{transform:scale(.4);opacity:0}}

/* 桌機側欄 */
.aside .alead{font-family:var(--serif);font-size:16px;line-height:1.85;color:#e6d8e0;margin:0 0 22px}
.acast{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:22px}
.acard{position:relative;aspect-ratio:3/4;border-radius:16px;overflow:hidden;box-shadow:0 12px 30px rgba(0,0,0,.45),inset 0 0 0 1px rgba(255,255,255,.08);animation:acin .7s var(--d) cubic-bezier(.2,.9,.3,1) backwards;transition:transform .35s cubic-bezier(.3,1.4,.5,1)}
.acard:hover{transform:translateY(-4px) scale(1.03)}
.acard .pimg,.acard img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.acard:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 55%,rgba(10,6,12,.85))}
.acard span{position:absolute;left:10px;bottom:8px;z-index:2;font-family:var(--serif);font-weight:700;font-size:14px;letter-spacing:.06em}
@keyframes acin{from{opacity:0;transform:translateY(16px)}}
.afeat{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.afeat li{padding:11px 13px;border-radius:14px;background:rgba(255,255,255,.05);box-shadow:inset 0 0 0 1px rgba(255,255,255,.07)}
.afeat b{display:block;font-size:14px;color:var(--gold)}
.afeat span{font-size:12px;color:var(--ink3)}
@media (min-width:900px){.aside{max-width:380px}}

/* 登島前：大張的出發卡 */
.cta.hero{position:relative;overflow:hidden;display:block;min-height:168px;padding:0;margin-top:2px;box-shadow:inset 0 0 0 1px rgba(243,207,142,.5),0 16px 40px rgba(194,48,106,.3)}
.cta.hero>.pimg{position:absolute;inset:0}
.cta.hero>.pimg img{width:100%;height:100%;object-fit:cover;animation:kb 18s ease-in-out infinite alternate}
.cta.hero:before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(10,6,12,0) 20%,rgba(10,6,12,.55) 55%,rgba(10,6,12,.92))}
.cta.hero .ct{position:absolute;left:16px;right:96px;bottom:14px;z-index:2}
.cta.hero .ct b{font-size:21px}
.cta.hero em{position:absolute;right:14px;bottom:16px;z-index:2;padding:9px 14px;border-radius:999px;font-size:14px;font-weight:700;color:#2a1606;background:linear-gradient(135deg,#ffe2a8,#f3cf8e 50%,#d6a24e);box-shadow:0 6px 18px rgba(243,207,142,.4)}
.cta.hero.pulse{animation:none}
.cta.hero.pulse em{animation:ctabtn 1.6s ease-in-out infinite}
@keyframes ctabtn{50%{transform:scale(1.07);box-shadow:0 8px 26px rgba(243,207,142,.65)}}

/* 空狀態 */
.emp{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;padding:22px 16px;border-radius:18px;background:var(--card);box-shadow:inset 0 0 0 1px var(--line)}
.emp i{font-style:normal;font-size:30px;line-height:1.2;margin-bottom:4px}
.emp b{font-size:15px}
.emp span{font-size:12.5px;color:var(--ink3)}
.emp .btn{margin-top:10px;width:auto;padding:0 22px;height:40px;font-size:14px}

/* 按壓回饋：每個能點的東西都有一點手感 */
.app:active .ic,.dock .app:active .ic{transform:scale(.88);transition:transform .08s}
.btn:active,.cta:active,.lvrow:active,.rost:active,.setrow:active,.flv button:active,.fpre button:active,.tagbtn:active,.likes button:active{transform:scale(.97);transition:transform .08s}
.app .ic{transition:transform .2s cubic-bezier(.3,1.6,.5,1)}
/* 開 App 的轉場：從下方浮上來，更像手機 */
.view{animation:vin .26s cubic-bezier(.2,.9,.3,1)}
@keyframes vin{from{opacity:0;transform:translateY(14px) scale(.985)}}
.cstack i{width:38px;height:38px}
.cstack img{object-position:50% 12%;transform:scale(1.7);transform-origin:50% 14%}

/* ---------- 島嶼地圖 v3：分區篩選＋放大＋推薦 ---------- */
.dchips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:2px -16px 10px;padding:0 16px}
.dchips::-webkit-scrollbar{display:none}
.dchips button{flex:none;display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 13px;border-radius:999px;background:var(--card);box-shadow:inset 0 0 0 1px var(--line);font-size:13px;font-weight:700;color:var(--ink2);white-space:nowrap;transition:all .2s}
.dchips button i{width:8px;height:8px;border-radius:50%;background:var(--dc);box-shadow:0 0 6px var(--dc)}
.dchips button.on{color:#fff;background:color-mix(in srgb,var(--dc,#ff4f87) 26%,transparent);box-shadow:inset 0 0 0 1.5px var(--dc,var(--rose))}
.mapwrap.mz{border-radius:0;overflow:hidden}
.mapz{position:absolute;inset:0;transform-origin:50% 50%;transition:transform .55s cubic-bezier(.3,.9,.3,1)}
.mapz .isle{position:absolute;inset:0}
.dtints{position:absolute;inset:0;pointer-events:none}
.dtint{position:absolute;width:30%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,var(--dc),transparent 62%);opacity:.26;transition:opacity .4s}
.dtint.on{opacity:.34}.dtint.off{opacity:0}
.mapz .pin{transform-origin:50% 100%;transform:translate(-50%,-100%) scale(var(--ik,1));transition:opacity .3s,filter .3s}
.mapz .pin small{display:none}
.mapz .pin.lab small{display:block}
.mapz .pin.dim{opacity:.32;filter:saturate(.3)}
.mapz .pin.dim .who{display:none}
.mapz .dlab{pointer-events:auto;transform:translate(-50%,-50%);z-index:3;padding:3px 9px;border-radius:999px;background:rgba(8,10,16,.62);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);box-shadow:inset 0 0 0 1px var(--dc);font-size:10.5px;letter-spacing:.06em;color:#fff;opacity:.92}
.mzout{position:absolute;left:12px;top:10px;z-index:5;height:30px;padding:0 12px;border-radius:999px;background:rgba(8,10,16,.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);font-size:12.5px;font-weight:700;box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}
.mnow{display:flex;gap:10px;align-items:center;margin-top:12px;padding:11px 13px;border-radius:16px;background:linear-gradient(100deg,color-mix(in srgb,var(--dc) 18%,transparent),rgba(255,255,255,.03));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--dc) 45%,transparent)}
.mnow>i{font-style:normal;font-size:20px}
.mnow b{display:block;font-size:14.5px}
.mnow span{display:block;font-size:12px;color:var(--ink3)}
.mlist2{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
.mrow2{display:flex;gap:11px;align-items:center;padding:8px;border-radius:16px;background:var(--card);box-shadow:inset 0 0 0 1px var(--line);text-align:left;width:100%;min-width:0}
.mrow2.lk{opacity:.5}
.mrow2>.pimg{width:70px;height:70px;border-radius:12px;flex:none}
.mrow2 .mr{flex:1;min-width:0}
.mrow2 .mr b{display:block;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mrow2 .mr span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:12px;line-height:1.5;color:var(--ink3);margin-top:2px}
.mchips{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}
.mchips:empty{display:none}
.mchips .chip{font-size:10.5px;padding:1px 7px}
.mside{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.mside .mw{display:flex}
.mside .mw .av{width:24px;height:24px;margin-left:-6px;box-shadow:0 0 0 2px var(--phone)}
.tgo{font-style:normal;font-size:11px;font-weight:700;padding:3px 8px;border-radius:999px;white-space:nowrap;background:rgba(255,255,255,.08);color:var(--ink2)}
.tgo.walk{background:rgba(127,214,138,.16);color:#9fe8a8}
.tgo.bus{background:rgba(255,143,177,.14);color:var(--rose2)}
.tgo.deep{background:rgba(194,48,74,.22);color:#ff8a9a}
.tgo.cur{background:rgba(127,224,240,.18);color:#9feaf5}
.dhead{margin:12px 0 10px;padding:13px 14px;border-radius:16px;background:linear-gradient(120deg,color-mix(in srgb,var(--dc) 22%,transparent),rgba(255,255,255,.02));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--dc) 50%,transparent)}
.dht{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.dht b{font-family:var(--serif);font-size:18px}
.dht span{font-size:11.5px;color:var(--ink3);white-space:nowrap}
.dhead p{margin:8px 0 0;font-family:var(--serif);font-size:13px;line-height:1.75;color:var(--ink2);font-style:italic}
.dgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.dcard{position:relative;height:96px;border-radius:16px;overflow:hidden;text-align:left;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.dcard>.pimg{position:absolute;inset:0}
.dcard>.pimg img{width:100%;height:100%;object-fit:cover}
.dcard:before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,transparent 15%,rgba(8,6,12,.9)),linear-gradient(90deg,color-mix(in srgb,var(--dc) 35%,transparent),transparent 70%)}
.dcard:after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;z-index:2;background:var(--dc)}
.dct{position:absolute;left:12px;right:10px;bottom:9px;z-index:2}
.dct b{display:block;font-size:14px}
.dct span{display:block;font-size:11px;color:var(--ink2)}
.dhere{position:absolute;right:8px;top:8px;z-index:2;font-style:normal;font-size:10px;font-weight:700;padding:2px 7px;border-radius:8px;background:#7fe0f0;color:#06232b}
.mtip{margin-top:12px;font-size:12px}

/* ---------- 結環名冊 v2：關係卡 ---------- */
.rsum{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:2px 0 4px}
.rsum div{text-align:center;padding:10px 0 8px;border-radius:14px;background:var(--card);box-shadow:inset 0 0 0 1px var(--line)}
.rsum b{display:block;font-family:var(--serif);font-size:20px;line-height:1.2;color:var(--ac,var(--rose2))}
.rsum span{font-size:11px;color:var(--ink3)}
.rleads{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
.rlead{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:18px;text-align:left;width:100%;background:linear-gradient(110deg,color-mix(in srgb,var(--c1) 30%,transparent),color-mix(in srgb,var(--c2) 60%,transparent));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--c1) 55%,transparent)}
.rlead .av{box-shadow:0 0 0 2px var(--c1)}
.rlt{flex:1;min-width:0}
.rlt b{display:block;font-family:var(--serif);font-size:16px}
.rlt>span{display:block;font-size:11.5px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rdots{display:flex;align-items:center;gap:4px;margin-top:5px}
.rdots i{width:16px;height:4px;border-radius:2px;background:rgba(255,255,255,.18)}
.rdots i.on{background:var(--c1);box-shadow:0 0 6px var(--c1)}
.rdots small{font-size:10.5px;color:var(--ink3);margin-left:4px}
.rlp{text-align:center;flex:none}
.rlp b{display:block;font-family:var(--serif);font-size:22px;line-height:1.1;color:#fff}
.rlp small{font-size:10.5px;color:var(--ink2)}
.rbar{display:flex;align-items:center;gap:8px;margin:16px 0 10px}
.rtabs{flex:1;display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}
.rtabs::-webkit-scrollbar{display:none}
.rtabs button{flex:none;height:32px;padding:0 12px;border-radius:999px;background:var(--card);font-size:12.5px;font-weight:700;color:var(--ink2);white-space:nowrap}
.rtabs button small{margin-left:4px;font-weight:400;opacity:.7}
.rtabs button.on{background:color-mix(in srgb,var(--ac,var(--rose)) 25%,transparent);color:#fff;box-shadow:inset 0 0 0 1.5px var(--ac,var(--rose))}
.rsort{flex:none;font-size:12px;color:var(--ink3);padding:6px 4px}
.rgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.rcard{display:flex;flex-direction:column;border-radius:18px;overflow:hidden;background:var(--card);box-shadow:inset 0 0 0 1px var(--line);text-align:left;min-width:0}
.rcard.r-ring{box-shadow:inset 0 0 0 1.5px rgba(255,79,135,.55),0 8px 22px rgba(255,79,135,.12)}
.rcard.r-wed{box-shadow:inset 0 0 0 1.5px rgba(243,207,142,.7),0 8px 22px rgba(243,207,142,.15)}
.rcph{position:relative;aspect-ratio:4/5;overflow:hidden}
.rcph>.pimg{position:absolute;inset:0}
.rcph>.pimg img{width:100%;height:100%;object-fit:cover;object-position:50% 20%}
.rcph:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 60%,rgba(10,7,14,.75))}
.rrel{position:absolute;left:8px;top:8px;z-index:2;font-style:normal;font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:999px;background:rgba(0,0,0,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:#fff}
.rrel.rose{background:rgba(255,79,135,.85)}
.rrel.gold{background:linear-gradient(135deg,#ffe2a8,#d6a24e);color:#2a1606}
.rrel.pink{background:rgba(255,143,177,.35);box-shadow:inset 0 0 0 1px rgba(255,143,177,.7)}
.rwh{position:absolute;left:8px;bottom:7px;z-index:2;font-size:10.5px;font-weight:700;color:#fff;text-shadow:0 1px 4px #000}
.run{position:absolute;right:8px;top:8px;z-index:2;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:#06c755;color:#fff;font-style:normal;font-size:11px;font-weight:700;display:grid;place-items:center}
.rinfo{padding:9px 10px 10px}
.rinfo>b{display:flex;align-items:baseline;gap:6px;font-size:15px}
.rinfo>b span{font-size:11px;font-weight:400;color:var(--ink3)}
.rinfo>b small{font-size:10px;font-weight:400;padding:0 5px;border-radius:5px;background:rgba(255,255,255,.1);color:var(--ink2)}
.rjob{display:block;font-size:11px;color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rmeter{height:4px;border-radius:2px;background:rgba(255,255,255,.1);margin:8px 0 5px;overflow:hidden}
.rmeter i{display:block;height:100%;border-radius:2px;background:linear-gradient(90deg,var(--rose),#ffb3cc)}
.rmeter.big{height:6px;margin:4px 0 12px}
.rmeta{display:flex;justify-content:space-between;font-size:10.5px;color:var(--ink3)}
.rmeta b{color:var(--rose2)}
/* 個人頁 */
.rpimg{position:relative;height:340px!important;margin:-6px -4px 12px;border-radius:20px;overflow:hidden}
.rpimg>.pimg{position:absolute;inset:0}
.rpimg>.pimg img{object-position:50% 18%}
.rpimg:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(10,7,14,.92))}
.rpov{position:absolute;left:16px;right:16px;bottom:14px;z-index:2}
.rpov .rrel{position:static;display:inline-block;margin-bottom:6px}
.rpov h3{margin:0;font-family:var(--serif);font-size:26px;letter-spacing:.06em}
.rpov span{font-size:12.5px;color:var(--ink2)}
.rptags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.rpbio{font-family:var(--serif);font-size:15.5px;line-height:1.75;margin:8px 0 4px}
.rpmore{font-size:13px;line-height:1.75;color:var(--ink2);margin:0 0 12px}
.rpstats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:8px}
.rpstats div{text-align:center;padding:9px 0;border-radius:12px;background:var(--card)}
.rpstats b{display:block;font-family:var(--serif);font-size:18px;color:var(--rose2)}
.rpstats span{font-size:11px;color:var(--ink3)}
.rpwhere{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:14px;background:var(--card);font-size:13px;margin-bottom:12px}
.rpwhere>i{font-style:normal}
.rpwhere span{display:block;font-size:12px;color:var(--ink3);margin-top:2px}
.rpbtns{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.rpbtns .btn:only-child{grid-column:1/-1}

/* ---------- LIME：話題分隔線、在線狀態、未讀分頁 ---------- */
.cdiv{align-self:stretch;display:flex;align-items:center;gap:10px;margin:14px 2px 4px;font-size:11.5px;color:var(--ink3)}
.cdiv:before,.cdiv:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.16))}
.cdiv:after{background:linear-gradient(270deg,transparent,rgba(255,255,255,.16))}
.cdiv span{display:inline-flex;align-items:center;gap:6px;padding:3px 11px;border-radius:999px;background:rgba(255,255,255,.06);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08);max-width:78%}
.cdiv b{font-weight:700;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cdiv small{flex:none;font-size:10.5px;opacity:.8}
.msgs>.cdiv:first-child{margin-top:2px}
.cav{position:relative;flex:none}
.onl{position:absolute;right:1px;bottom:1px;width:13px;height:13px;border-radius:50%;background:#06c755;box-shadow:0 0 0 2.5px var(--phone)}
.ltabs{display:flex;gap:6px;margin:0 0 6px}
.ltabs button{height:30px;padding:0 13px;border-radius:999px;background:var(--card);font-size:12.5px;font-weight:700;color:var(--ink2);display:inline-flex;align-items:center;gap:6px}
.ltabs button.on{background:#06c755;color:#fff}
.ltabs button i{font-style:normal;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#ff3b30;color:#fff;font-size:10.5px;display:grid;place-items:center}
.ltabs button.on i{background:#fff;color:#06c755}
.view.lime .crow.unread .cr em{color:var(--ink)}

/* ---------- 沒有照片時：敏感內容模糊卡、無照片的個人頭像 ---------- */
.wsens{position:relative;display:block;width:100%;aspect-ratio:4/5;margin:10px 0 0;border-radius:14px;overflow:hidden;text-align:center}
.wsens>.pimg{position:absolute;inset:0}
.wsens>.pimg img{width:100%;height:100%;object-fit:cover;object-position:50% 20%;filter:blur(22px) brightness(.55) saturate(1.2);transform:scale(1.18);transition:filter .45s,transform .45s}
.wsv{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:0 28px;color:#fff;transition:opacity .3s}
.wsv i{font-style:normal;font-size:30px}
.wsv b{font-size:15px;letter-spacing:.08em}
.wsv span{font-family:var(--serif);font-size:13.5px;line-height:1.7;color:rgba(255,255,255,.82)}
.wsv em{font-style:normal;margin-top:6px;font-size:12px;padding:5px 14px;border-radius:999px;background:rgba(255,255,255,.16);box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}
.wcap{position:absolute;left:0;right:0;bottom:0;padding:30px 14px 12px;font-family:var(--serif);font-size:13px;line-height:1.6;color:#fff;text-align:left;background:linear-gradient(transparent,rgba(0,0,0,.7));opacity:0;transition:opacity .4s}
.wsens.shown>.pimg img{filter:none;transform:none}
.wsens.shown .wsv{opacity:0;pointer-events:none}
.wsens.shown .wcap{opacity:1}
.pimg.resph{position:relative;overflow:hidden;background:radial-gradient(120% 80% at 50% 25%,rgba(255,255,255,.16),transparent 60%),var(--dc)}
.pimg.resph:before{content:"";position:absolute;left:50%;bottom:0;width:72%;aspect-ratio:1/1.05;transform:translateX(-50%);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 105'%3E%3Ccircle cx='50' cy='34' r='22' fill='%23fff' fill-opacity='.16'/%3E%3Cpath d='M6 105c2-26 20-40 44-40s42 14 44 40z' fill='%23fff' fill-opacity='.16'/%3E%3C/svg%3E") center bottom/contain no-repeat}
.pimg.resph b{position:absolute;right:10px;bottom:6px;font:900 22px/1 var(--serif)!important;color:rgba(255,255,255,.55)!important}

/* ---------- 20261104.10：主畫面只左右滑（兩頁），不再上下捲；iPhone 式資料夾 ---------- */
.home.v2 .pg1,.home.v2 .pg2{overflow:hidden;-webkit-mask-image:none;mask-image:none;padding-bottom:calc(118px + var(--sab))}
.home.v2 .pg2 .hwids{margin:0 0 14px}
/* 資料夾圖示：霧面玻璃底，裡面 3×3 小圖示 */
.home.v2 .app.fold .ic.fic{background:rgba(255,255,255,.2);backdrop-filter:blur(16px) saturate(1.3);-webkit-backdrop-filter:blur(16px) saturate(1.3);box-shadow:0 6px 16px rgba(0,0,0,.3),inset 0 0 0 .5px rgba(255,255,255,.3);overflow:visible}
.home.v2 .app.fold .ic.fic:after{display:none}
.home.v2 .app.fold-tools .ic.fic{background:rgba(20,16,24,.55)}
.fgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:3.5px;width:72%;aspect-ratio:1}
.fgrid i{display:grid;place-items:center;border-radius:3.5px;aspect-ratio:1;box-shadow:0 1px 2px rgba(0,0,0,.25)}
.home.v2 .fgrid i svg{width:72%;height:72%;filter:none}
/* 打開的資料夾 */
.fold-ov{position:absolute;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;background:rgba(10,6,14,0);backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0);transition:background .26s,backdrop-filter .26s,-webkit-backdrop-filter .26s}
.fold-ov.on{background:rgba(10,6,14,.35);backdrop-filter:blur(22px) saturate(1.2);-webkit-backdrop-filter:blur(22px) saturate(1.2)}
.fold-box{width:min(318px,84%);transform-origin:var(--ox) var(--oy);transform:scale(.2);opacity:0;transition:transform .3s cubic-bezier(.2,.9,.3,1.08),opacity .2s}
.fold-ov.on .fold-box{transform:none;opacity:1}
.fold-box h4{margin:0 0 14px 8px;font-size:26px;font-weight:700;color:#fff;letter-spacing:.04em;text-shadow:0 2px 8px rgba(0,0,0,.45)}
.fold-pan{border-radius:34px;padding:22px 16px 18px;background:rgba(255,255,255,.2);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);box-shadow:inset 0 0 0 .5px rgba(255,255,255,.3),0 20px 50px rgba(0,0,0,.35)}
.fold-tools .fold-pan{background:rgba(24,20,30,.6)}
.fold-pan .apps{display:grid;grid-template-columns:repeat(3,1fr);gap:18px 6px;padding:0}
.home.v2 .fold-pan .app .ic{width:62px;height:62px}
/* 小螢幕：讓第一頁塞得下，不用上下捲 */
@media (max-height:780px){.home.v2 .hot{padding:9px 9px 8px;margin-bottom:9px}.home.v2 .hoth{padding-bottom:5px}.home.v2 .hotapps{margin-bottom:7px}.home.v2 .app.hotic .ic{width:54px;height:54px}.home.v2 .wid.wt{margin-bottom:9px}}
@media (max-height:700px){.home.v2 .hot .hz{aspect-ratio:auto;height:44px}.home.v2 .app .ic{width:52px;height:52px}.home.v2 .app.hotic .ic{width:50px;height:50px}.home.v2 .app span{font-size:10.5px}.home.v2 .apps{gap:10px 6px}}
.home.v2 .app .ic.fic .fgrid{width:46px;height:46px}
.home.v2 .app .ic.fic .fgrid i{width:13px;height:13px;overflow:hidden}
.home.v2 .app .ic.fic .fgrid i svg{width:10px;height:10px;filter:none}
.home.v2 .app .ic.fic .fgrid i:after{display:none}
@media (max-height:700px){.home.v2 .app .ic.fic .fgrid{width:40px;height:40px}.home.v2 .app .ic.fic .fgrid i{width:11.5px;height:11.5px}.home.v2 .app .ic.fic .fgrid i svg{width:9px;height:9px}}
@media (max-height:740px){
 .home.v2 .wt .slots{display:none}
 .home.v2 .wt .cta{padding-top:9px;padding-bottom:9px}
 .home.v2 .wt .cta .ct span{display:none}
 .home.v2 .wt .cta .ci{width:38px;height:38px}
 .home.v2 .wt .evbar{padding-top:6px;padding-bottom:6px;margin-top:7px}
 .home.v2 .wt .ctarow{margin-top:7px}.home.v2 .wt .ctarow .btn{padding-top:8px;padding-bottom:8px;min-height:0}
 .home.v2 .wtime{margin-bottom:6px}
}

/* ===== 20261105.1 四條路線 ===== */
.likes.two{grid-template-columns:1fr 1fr}
.likes.routes button{padding:14px 10px 12px}
.likes.routes .lg{font-size:30px}
.likes.routes small{font-size:11px}
.likes.three{grid-template-columns:repeat(3,1fr)}
.likes.three button{padding:12px 6px 10px}
.likes.three b{font-size:15px}
.cta.main{background:linear-gradient(135deg,rgba(243,207,142,.30),rgba(194,48,106,.34));box-shadow:inset 0 0 0 1px rgba(243,207,142,.55)}
.cta.main .ct small{color:var(--gold)}

/* 20261106.1：玩家自己說的話，跟對方的台詞分開（金色名字＋左邊一條金線） */
.rbody p.hasspk.me{padding-left:12px;border-left:2px solid rgba(232,196,120,.55)}
.rbody p.hasspk.me .spk b{color:#e8c478}
.rbody p.hasspk.me .spk .av{box-shadow:0 0 0 1.5px rgba(232,196,120,.7)}
/* 20261106.1：選人格子，選中的那位要看得出來（之前只有 .pk 有框，用 .on 的面板點了像沒反應） */
.pickman button.on .av{box-shadow:0 0 0 3px var(--rose)}
.pickman button.on{color:var(--rose2);font-weight:700}
.storyv{z-index:59}
.storyv .svx{width:44px;height:44px;font-size:18px}
/* 20261106.1 彈幕：分軌、放慢、不疊字 */
.dmk span{left:100%;font-size:14px;padding:2px 10px;animation-name:dmk2;animation-timing-function:linear;animation-fill-mode:forwards;will-change:transform}
.dmk span.gold{color:#ffe08a;background:rgba(120,70,0,.55);box-shadow:0 0 0 1px rgba(255,210,120,.55)}
.dmk.ending{opacity:.9}
@keyframes dmk2{from{transform:translateX(0)}to{transform:translateX(var(--dx,-120vw))}}
/* 開播中：閱讀器上方的 LIVE 列、左邊的禮物 */
.lvhud{position:absolute;z-index:6;left:12px;top:calc(12px + var(--sat));display:flex;gap:8px;align-items:center;pointer-events:none}
.lvhud span{background:rgba(0,0,0,.55);border-radius:999px;padding:4px 10px;font-size:12.5px;font-weight:700;color:#fff}
.lvhud .cslive{background:#ff2d55}
.lvhud .lvg{color:#ffe08a}
.reader .dmk{z-index:5}
.lvgifts{position:absolute;z-index:7;left:10px;top:44%;display:flex;flex-direction:column;gap:6px;pointer-events:none;max-width:72%}
.lvgift{display:flex;flex-direction:column;background:linear-gradient(90deg,rgba(255,45,85,.85),rgba(255,45,85,.15));border-radius:14px 22px 22px 14px;padding:5px 14px 6px;animation:lvin .35s cubic-bezier(.2,.9,.3,1.3);transition:opacity .5s,transform .5s}
.lvgift b{font-size:11.5px;color:#ffe3ec;font-weight:700}
.lvgift span{font-size:14px;color:#fff;font-weight:700}
.lvgift.big{background:linear-gradient(90deg,rgba(230,160,40,.95),rgba(230,160,40,.15))}
.lvgift.him{background:linear-gradient(90deg,rgba(150,40,200,.95),rgba(150,40,200,.15))}
.lvgift.out{opacity:0;transform:translateX(-30px)}
@keyframes lvin{from{opacity:0;transform:translateX(-60px)}to{opacity:1;transform:none}}
.lvhud .cslive{position:static;inset:auto}
.lvgifts{top:31%}
.reader.islive .dmk span{opacity:.92}
/* 20261106.1 自動播放 */
.reader .rtop .rauto.on{background:rgba(255,77,128,.85);color:#fff;box-shadow:0 0 0 1px rgba(255,180,200,.5)}
.reader .rtop .rauto.on:after{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#fff;margin-left:6px;vertical-align:middle;animation:rpulse 1.2s infinite}
@keyframes rpulse{50%{opacity:.25}}
/* 20261106.1 選擇的後果：「○○會記得這句話」 */
.membadge{position:absolute;z-index:8;left:50%;top:calc(92px + var(--sat));transform:translateX(-50%);display:flex;align-items:center;gap:8px;padding:7px 14px 7px 8px;border-radius:999px;background:rgba(20,10,18,.88);box-shadow:0 0 0 1px rgba(255,143,177,.45),0 8px 24px rgba(0,0,0,.5);font-size:13px;color:#ffd6e6;white-space:nowrap;animation:mbin .4s cubic-bezier(.2,.9,.3,1.3);transition:opacity .5s,transform .5s;pointer-events:none}
.membadge.out{opacity:0;transform:translate(-50%,-10px)}
@keyframes mbin{from{opacity:0;transform:translate(-50%,-14px)}to{opacity:1;transform:translateX(-50%)}}
/* 佔有慾高點：來電、即時位置 */
.heatov{position:absolute;inset:0;z-index:64;display:grid;place-items:center;background:#07040a;animation:fadein .3s;overflow:hidden}
.heatov .hbg{position:absolute;inset:-30px;filter:blur(26px) brightness(.45) saturate(1.2);transform:scale(1.1)}
.heatov .hbg .pimg{width:100%;height:100%}
.heatov .hin{position:relative;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;padding:0 26px;width:100%}
.heatov small{letter-spacing:.2em;color:rgba(255,255,255,.65);font-size:12px}
.heatov h2{font-family:var(--serif);font-size:30px;margin:6px 0 0;color:#fff}
.heatov p{margin:0;color:rgba(255,255,255,.75)}
.heatov.call .av{box-shadow:0 0 0 4px rgba(255,255,255,.15);animation:hpulse 1.6s infinite}
@keyframes hpulse{0%{box-shadow:0 0 0 0 rgba(255,77,128,.6)}70%{box-shadow:0 0 0 26px rgba(255,77,128,0)}100%{box-shadow:0 0 0 0 rgba(255,77,128,0)}}
.hring i{font-style:normal;animation:rpulse 1.2s infinite}.hring i:nth-child(2){animation-delay:.2s}.hring i:nth-child(3){animation-delay:.4s}
.hbtns{display:flex;justify-content:space-between;width:100%;max-width:280px;margin-top:70px}
.hbtns button{display:flex;flex-direction:column;align-items:center;gap:8px;background:none;color:#fff;font-size:13px}
.hbtns button b{width:68px;height:68px;border-radius:50%;display:grid;place-items:center;font-size:28px}
.hno b{background:#ff3b30}.hyes b{background:#34c759;animation:hshake 1.2s infinite}
@keyframes hshake{0%,60%,100%{transform:none}65%{transform:rotate(-14deg)}75%{transform:rotate(12deg)}85%{transform:rotate(-8deg)}}
.hbtns.two{max-width:320px;gap:10px;margin-top:40px}.hbtns.two .btn{flex:1;flex-direction:row;font-size:15px}
.hradar{position:relative;width:200px;height:200px;display:grid;place-items:center;margin:14px 0 4px}
.hradar i{position:absolute;inset:0;border-radius:50%;border:2px solid rgba(255,77,128,.55);animation:hrad 2.4s infinite;opacity:0}
.hradar i:nth-child(2){animation-delay:.8s}.hradar i:nth-child(3){animation-delay:1.6s}
@keyframes hrad{from{transform:scale(.35);opacity:1}to{transform:scale(1.1);opacity:0}}
.hdist{font-size:15px}.hdist b{font-size:34px;color:#ff8fb1;font-family:var(--serif);margin-right:4px}
/* 20261106.2 億萬人生：富豪榜、投資 */
.esrk{float:right;background:rgba(243,207,142,.16);color:#f3cf8e;border-radius:999px;padding:2px 10px;font-size:11.5px;font-weight:700}
.rklist{display:grid;gap:6px;margin-top:8px}
.rkrow{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:14px;background:rgba(255,255,255,.04)}
.rkrow em{width:22px;font-style:normal;font-weight:800;color:#f3cf8e;text-align:center}
.rkrow div:not(.av):not(.ph){flex:1;min-width:0;display:flex;flex-direction:column}
.rkrow b{font-size:14px}.rkrow small{font-size:11.5px;color:var(--muted,#aaa)}
.rkrow span{font-weight:700;color:#f3cf8e;font-size:13px;white-space:nowrap}
.rkrow.me{background:linear-gradient(90deg,rgba(243,207,142,.28),rgba(243,207,142,.06));box-shadow:0 0 0 1px rgba(243,207,142,.5)}
.ivcard{background:rgba(255,255,255,.04);border-radius:16px;padding:12px;margin-bottom:10px}
.ivh{display:flex;gap:10px;align-items:center}.ivh i{font-style:normal;font-size:26px}
.ivh div{flex:1;display:flex;flex-direction:column}.ivh small{color:var(--muted,#aaa);font-size:12px}
.ivh em{font-style:normal;color:#f3cf8e;font-size:12px;font-weight:700}
.ivbtns{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:10px}.ivbtns .btn{margin:0;padding:8px 0;font-size:12.5px;min-height:0}
.ledrow b.neg{color:#ff7a8a}

/* =====================================================================
   20261106.3　主畫面「第幾天」卡片
   ===================================================================== */
.home .wid.dayc{position:relative;overflow:hidden;padding:14px 14px 12px;border-radius:26px;
  background:linear-gradient(160deg,var(--dc1),var(--dc2) 60%,var(--dc3));box-shadow:inset 0 0 0 1px var(--dcl),0 14px 36px rgba(0,0,0,.35);transition:background .6s}
.dayc:before{content:"";position:absolute;right:-30%;top:-55%;width:90%;aspect-ratio:1;border-radius:50%;background:radial-gradient(closest-side,var(--dcg),transparent);pointer-events:none;opacity:.9}
.dayc>*{position:relative}
.dayc.ph-am{--dc1:rgba(92,58,30,.72);--dc2:rgba(46,24,30,.78);--dc3:rgba(24,14,24,.82);--dcl:rgba(255,206,140,.28);--dcg:rgba(255,196,110,.38);--dca:#ffd38a}
.dayc.ph-pm{--dc1:rgba(110,36,62,.72);--dc2:rgba(54,18,38,.8);--dc3:rgba(24,12,24,.84);--dcl:rgba(255,150,170,.3);--dcg:rgba(255,120,120,.36);--dca:#ff9fb5}
.dayc.ph-night{--dc1:rgba(30,30,86,.78);--dc2:rgba(28,14,48,.84);--dc3:rgba(10,8,20,.88);--dcl:rgba(170,170,255,.28);--dcg:rgba(130,120,255,.32);--dca:#b9b6ff}
.dayc.ph-late{--dc1:rgba(16,16,40,.84);--dc2:rgba(12,8,24,.88);--dc3:rgba(6,4,12,.9);--dcl:rgba(140,140,200,.2);--dcg:rgba(90,80,180,.22);--dca:#9b98d8}
.dc-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.dc-day b{display:block;font-family:var(--serif);font-size:25px;font-weight:700;letter-spacing:.05em;line-height:1.1}
.dc-day .dn{display:inline-block;font-size:30px;color:var(--dca);text-shadow:0 0 18px var(--dcg)}
.dc-day .dn.flip{animation:dnflip .9s cubic-bezier(.2,.9,.3,1.2)}
@keyframes dnflip{0%{transform:perspective(200px) rotateX(90deg);opacity:0}60%{transform:perspective(200px) rotateX(-12deg);opacity:1}100%{transform:none}}
.dayc.newday{animation:newday 1.2s ease-out}
@keyframes newday{0%{box-shadow:inset 0 0 0 1px var(--dcl),0 0 0 0 var(--dcg)}40%{box-shadow:inset 0 0 0 1px var(--dca),0 0 40px 6px var(--dcg)}100%{box-shadow:inset 0 0 0 1px var(--dcl),0 14px 36px rgba(0,0,0,.35)}}
.dc-day small{display:block;font-size:12px;color:var(--ink2);margin-top:3px;letter-spacing:.02em}
.dayc .coin{font-size:13px;color:var(--gold);font-weight:700;padding:5px 10px;border-radius:12px;background:rgba(0,0,0,.25);box-shadow:inset 0 0 0 1px rgba(243,207,142,.25);white-space:nowrap}
.dc-tag{margin:9px 0 0;font-size:14px;line-height:1.5;color:#fff;letter-spacing:.03em;font-family:var(--serif)}
.dc-meta{display:flex;align-items:center;gap:10px;margin-top:10px}
.dc-beads{display:flex;gap:5px}
.dc-beads i{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.14)}
.dc-beads i.past{background:var(--dca);opacity:.55}
.dc-beads i.now{background:var(--dca);box-shadow:0 0 0 3px rgba(255,255,255,.12),0 0 10px var(--dca);animation:bead 1.6s ease-in-out infinite}
.dc-beads i.fest{box-shadow:inset 0 0 0 1.5px #ff4f87}
.dc-beads i.fest.now{background:#ff4f87;box-shadow:0 0 0 3px rgba(255,79,135,.25),0 0 12px #ff4f87}
@keyframes bead{50%{transform:scale(1.25)}}
.dc-cd{margin-left:auto;font-size:11.5px;color:var(--ink2);letter-spacing:.06em;white-space:nowrap}
.dc-cd.u1{color:#ffb3c2}
.dc-cd.u2{color:#ff7ea0;font-weight:700}
.dc-cd.u3{color:#fff;font-weight:700;padding:2px 9px;border-radius:10px;background:linear-gradient(90deg,#ff4f87,#c2306a);box-shadow:0 0 14px rgba(255,79,135,.5)}
.dc-cd.post{margin-left:0;color:var(--gold)}
.dc-arc{position:relative;height:62px;margin:6px 4px 14px}
.dc-arc svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.dc-arc path{fill:none;stroke-linecap:round}
.dc-arc .a0{stroke:rgba(255,255,255,.16);stroke-width:2;stroke-dasharray:3 5}
.dc-arc .a1{stroke:var(--dca);stroke-width:2.5;filter:drop-shadow(0 0 4px var(--dca));transition:stroke-dasharray .8s}
.dc-node{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center}
.dc-node i{width:10px;height:10px;border-radius:50%;background:rgba(20,14,26,.9);box-shadow:inset 0 0 0 2px rgba(255,255,255,.3)}
.dc-node.past i{background:var(--dca);box-shadow:none;opacity:.7}
.dc-node span{position:absolute;top:15px;font-size:11px;color:var(--ink3);white-space:nowrap;text-align:center;line-height:1.2;letter-spacing:.06em}
.dc-node span small{display:block;font-size:9.5px;opacity:.75;letter-spacing:0}
.dc-node.now span{color:#fff;font-weight:700}
.dc-node.past span{text-decoration:line-through;opacity:.6}
.dc-mk{position:absolute;transform:translate(-50%,-62%);width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:17px;
  background:radial-gradient(circle at 40% 35%,rgba(255,255,255,.35),rgba(255,190,90,.25) 60%,transparent 72%);filter:drop-shadow(0 0 10px var(--dca));
  transition:left 1.1s cubic-bezier(.4,0,.2,1),top 1.1s cubic-bezier(.4,0,.2,1);animation:mkb 3s ease-in-out infinite}
.dc-mk.moon{background:radial-gradient(circle at 40% 35%,rgba(255,255,255,.3),rgba(140,140,255,.25) 60%,transparent 72%)}
@keyframes mkb{50%{margin-top:-2px}}
/* 白天的行動卡：場景圖＋人 */
.cta.hook{position:relative;overflow:hidden;display:block;padding:0;min-height:112px;border-radius:20px;box-shadow:inset 0 0 0 1px var(--dcl,rgba(255,143,177,.35)),0 10px 28px rgba(0,0,0,.35);background:#140c16}
.cta.hook>.pimg{position:absolute;inset:0}
.cta.hook>.pimg img{width:100%;height:100%;object-fit:cover;animation:kb 18s ease-in-out infinite alternate}
.hk-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(10,6,14,.88) 0,rgba(10,6,14,.6) 55%,rgba(10,6,14,.2)),linear-gradient(0deg,rgba(10,6,14,.6),transparent 60%)}
.hk-in{position:relative;display:flex;align-items:center;gap:12px;padding:16px 14px;min-height:112px}
.hk-in .av{flex:none;border-radius:50%;box-shadow:0 0 0 2px var(--dca,#ff8fb1),0 0 16px var(--dcg,rgba(255,79,135,.4))}
.hk-in .ct small{color:var(--dca,var(--rose2))}
.hk-in .ct b{font-size:17.5px;margin:2px 0}
.hk-in .ct span{color:rgba(255,255,255,.78)}
.hk-in em{flex:none;align-self:flex-end;font-size:12.5px;font-style:normal;font-weight:700;color:#fff;padding:6px 11px;border-radius:14px;background:rgba(255,79,135,.85);box-shadow:0 4px 14px rgba(255,79,135,.4)}
.hk-live{flex:none;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:800;letter-spacing:.06em;color:#fff;background:rgba(255,45,85,.3);box-shadow:inset 0 0 0 1.5px #ff4f87}
.hk-live .lvdot{display:block;margin:0 auto -8px}
.dayc .ctarow.dc-row .btn{flex:1}
.dc-skip{display:block;margin:8px auto 0;padding:4px 8px;font-size:12px;color:var(--ink3);letter-spacing:.04em;background:none}
.dc-skip:active{color:#fff}
/* 夜晚：今晚可能的人疊在一起 */
.cta .ci.faces{width:58px;background:none;display:flex;align-items:center;justify-content:flex-start}
.cta .ci.faces span{margin-left:-12px;border-radius:50%;box-shadow:0 0 0 2px #1a0d20;z-index:calc(10 - var(--k))}
.cta .ci.faces span:first-child{margin-left:0}
.cta .ci.faces .av{border-radius:50%}

/* =====================================================================
   20261106.5　主畫面：只能左右滑；第一頁＝天數卡＋重口味專區＋一排 App
   ===================================================================== */
.home .pager{touch-action:pan-x pan-y;overscroll-behavior:contain}
/* 20261108.24 保險：萬一某支手機怎麼縮都放不下，頁面可以往下捲，不會被 Dock 吃掉 */
.home.v2 .pg{overflow-y:auto;overscroll-behavior-y:contain;scrollbar-width:none}.home.v2 .pg::-webkit-scrollbar{display:none}
.home.v2 .pg,.home.v2 .pg1,.home.v2 .pg2,.home.v2 .pg3{overflow:hidden;overscroll-behavior:none;-webkit-mask-image:none;mask-image:none;touch-action:pan-x}
.home.v2 .pg3 .apps{padding-top:8px}
/* 天數卡壓扁一點 */
.home .wid.dayc{padding:12px 12px 10px}
.dayc .dc-top{align-items:center}
.dc-day b{font-size:22px;display:inline}
.dc-day .dn{font-size:27px}
.dc-day small{display:inline;margin-left:8px;font-size:11.5px}
.dc-tag{margin-top:6px;font-size:13.5px}
.dc-meta{margin-top:7px}
.dc-arc{height:48px;margin:2px 4px 12px}
.dc-node span{top:12px;font-size:10.5px}
.dc-node span small{display:inline;margin-left:3px}
.dc-mk{width:26px;height:26px;font-size:15px}
.cta.hook,.hk-in{min-height:88px}
.hk-in{padding:12px}
.hk-in .ct b{font-size:16.5px}
.hk-in .ct span{font-size:12px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.dayc .ctarow.dc-row{margin-top:8px}
.dayc .ctarow.dc-row .btn{min-height:36px;font-size:12.5px;padding:4px 6px;white-space:nowrap}
.dayc .ctarow.dc-row .dc-skipb{flex:0 0 auto;color:var(--ink2);background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.home.v2 .p1apps{margin-top:0}
/* 放不下時一級一級縮 */
.home .pg.fit1 .dc-arc{height:38px;margin-bottom:8px}
.home .pg.fit1 .dc-node span small{display:none}
.home .pg.fit1 .hot{padding:8px 8px 8px;margin-bottom:8px}
.home .pg.fit1 .hot .hoth{padding-bottom:5px}
.home .pg.fit1 .wid.dayc{margin-bottom:8px}
.home .pg.fit2 .dc-tag{font-size:12.5px;margin-top:3px}
.home .pg.fit2 .cta.hook,.home .pg.fit2 .hk-in{min-height:66px}
.home .pg.fit2 .hk-in{padding:9px 10px}
.home .pg.fit2 .hk-in .av{width:38px!important;height:38px!important}
.home .pg.fit2 .hk-in .ct small{display:none}
.home .pg.fit2 .app .ic{width:52px;height:52px}
.home .pg.fit2 .hot .app.hotic .ic{width:46px;height:46px}
.home .pg.fit3 .dc-meta{display:none}
.home .pg.fit3 .dc-arc{height:30px;margin:0 4px 4px}
.home .pg.fit3 .dc-node span{display:none}
.home .pg.fit3 .hot .app span{font-size:10px}
.home .pg.fit3 .apps{gap:6px 6px}
.home .pg.fit4 .dc-tag{display:none}
.home .pg.fit4 .dayc .ctarow.dc-row .btn{min-height:32px}
.home .pg.fit4 .hot .hoth{display:none}
.home .pg.fit4 .hwids{display:none}
.dayc .ctarow.dc-row .btn{flex:1 1 0;width:auto;min-width:0}
.dayc .ctarow.dc-row .dc-skipb{flex:.85 1 0}
@media (min-height:800px){
  .dc-arc{height:58px;margin-bottom:16px}
  .cta.hook,.hk-in{min-height:116px}
  .hk-in .ct span{-webkit-line-clamp:2}
  .home.v2 .p1apps{margin-top:6px}
}
/* 20261106.5：封面是 CG 時，不疊人物半身照 */
.reader.cgcover .rcover .rpor,.reader.cgcover.r18on .rcover .rpor{display:none}
.reader.cgcover .rimg>.pimgw{filter:none}

/* =====================================================================
   20261107.1　愛幣錢包：會升級的實體卡
   ===================================================================== */
.wstage{position:relative;margin:2px 0 12px;perspective:1100px}
.wc3{--rx:0deg;--ry:0deg;--gx:50%;--gy:30%;--fl:0deg;position:relative;aspect-ratio:1.586;border-radius:20px;cursor:pointer;outline:none;touch-action:pan-y}
.wc3:focus-visible{box-shadow:0 0 0 3px rgba(243,207,142,.6);border-radius:20px}
.wcin{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateX(var(--rx)) rotateY(calc(var(--ry) + var(--fl)));transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.wc3:hover .wcin{transition:transform .12s ease-out}
.wc3.flip{--fl:180deg}
.wc3.flip .wcin{transition:transform .75s cubic-bezier(.3,1.25,.4,1)}
.wcf{position:absolute;inset:0;border-radius:20px;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;padding:18px 20px;
  --ink:#f6e3bd;--foil:#f3cf8e;color:var(--ink);box-shadow:0 22px 44px rgba(0,0,0,.55),inset 0 0 0 1px color-mix(in srgb,var(--foil) 45%,transparent)}
.wback{transform:rotateY(180deg)}
.wgrain{position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(115deg,rgba(255,255,255,.03) 0 1px,transparent 1px 5px)}
.wglare{position:absolute;inset:-20%;pointer-events:none;background:radial-gradient(40% 40% at var(--gx) var(--gy),rgba(255,255,255,.34),transparent 70%);mix-blend-mode:soft-light;transition:background .15s}
.wch{position:relative;display:flex;justify-content:space-between;align-items:baseline}
.wch b{font:900 16px var(--serif);letter-spacing:.22em;color:var(--foil)}
.wch span{font:700 11px var(--serif);letter-spacing:.3em;opacity:.8}
.wchip{position:absolute;left:20px;top:54px;width:42px;height:31px;border-radius:7px;background:linear-gradient(135deg,#fbe7b4,#c99a4e 55%,#8a6428);box-shadow:inset 0 0 0 1px rgba(0,0,0,.25)}
.wchip:after{content:"";position:absolute;inset:7px 9px;border:1px solid rgba(80,50,10,.45);border-radius:3px;box-shadow:0 0 0 0 transparent,inset 8px 0 0 -7px rgba(80,50,10,.45)}
.wnfc{position:absolute;left:72px;top:59px;width:22px;height:22px;border-radius:50%;background:radial-gradient(circle,transparent 28%,var(--foil) 30%,transparent 38%,transparent 50%,var(--foil) 52%,transparent 60%,transparent 72%,var(--foil) 74%,transparent 82%);clip-path:inset(0 0 0 52%);opacity:.7}
.wcbal{position:absolute;left:20px;right:20px;bottom:44px}
.wcbal small{display:block;font-size:10.5px;letter-spacing:.24em;opacity:.7}
.wcbal b{display:flex;align-items:baseline;gap:6px;font:800 30px/1.15 var(--sans);font-variant-numeric:tabular-nums;letter-spacing:.01em;white-space:nowrap;text-shadow:0 2px 12px rgba(0,0,0,.35)}
.wcbal b i{font-style:normal;font-size:.72em;color:var(--foil)}
.wcbot{position:absolute;left:20px;right:20px;bottom:16px;display:flex;justify-content:space-between;font-size:12px;letter-spacing:.18em;opacity:.85;font-variant-numeric:tabular-nums}
/* 背面 */
.wstripe{position:absolute;left:0;right:0;top:22px;height:40px;background:linear-gradient(#111,#222 50%,#0a0a0a)}
.wsig{position:absolute;left:20px;right:20px;top:76px;height:40px;border-radius:4px;background:repeating-linear-gradient(-45deg,#f8f1e4 0 6px,#efe4cf 6px 12px);display:flex;align-items:center;justify-content:space-between;padding:0 12px;color:#3a2a1a}
.wsig em{font:italic 700 19px var(--serif);letter-spacing:.06em}
.wsig span{font-size:11px;font-weight:700;color:#8a5a2a}
.wnext{position:absolute;left:20px;right:20px;bottom:40px}
.wnext small{display:block;font-size:11px;opacity:.85}
.wnbar{height:6px;border-radius:3px;background:rgba(255,255,255,.14);margin:6px 0;overflow:hidden}
.wnbar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,var(--foil),#fff)}
.wnext b{font-size:13px;font-variant-numeric:tabular-nums}
.wfine{position:absolute;left:20px;right:20px;bottom:14px;font-size:9.5px;opacity:.55}
/* 卡材 */
.t-obs .wcf{background:radial-gradient(120% 90% at 85% 0%,rgba(243,207,142,.24),transparent 55%),linear-gradient(135deg,#2e2832 0%,#151217 55%,#060508 100%)}
.t-rose .wcf{--ink:#fff6f1;--foil:#fff0e2;background:radial-gradient(90% 80% at 80% 10%,rgba(255,255,255,.4),transparent 60%),linear-gradient(135deg,#f6c7b5 0%,#d98d7c 38%,#a65a5a 72%,#6a2f39 100%)}
.t-plat .wcf{--ink:#22242b;--foil:#4a4f5c;background:radial-gradient(90% 80% at 75% 0%,rgba(255,255,255,.85),transparent 55%),linear-gradient(135deg,#f5f6f9 0%,#cfd2da 42%,#9da1ac 78%,#6c707b 100%)}
.t-plat .wglare{mix-blend-mode:overlay}
.t-ruby .wcf{--ink:#ffe9cf;--foil:#f3cf8e;background:radial-gradient(70% 60% at 25% 20%,rgba(255,90,120,.45),transparent 60%),radial-gradient(60% 60% at 90% 90%,rgba(255,200,120,.2),transparent 60%),linear-gradient(140deg,#8d0d2c 0%,#4a0516 55%,#1c0108 100%)}
.t-holo .wcf{--ink:#2a1d40;--foil:#5b3a8c;background:linear-gradient(115deg,#ffd3ee,#d2ecff,#dbffe0,#fff1c2,#ffd3ee,#e0d4ff);background-size:320% 320%;animation:holo 9s ease-in-out infinite alternate}
.t-holo .wglare{mix-blend-mode:overlay}
@keyframes holo{to{background-position:100% 100%}}
.t-dia .wcf{--ink:#eef3ff;--foil:#cfe0ff;background:radial-gradient(1.4px 1.4px at 18% 30%,#fff,transparent),radial-gradient(1.2px 1.2px at 62% 18%,#fff,transparent),radial-gradient(1.6px 1.6px at 82% 62%,#fff,transparent),radial-gradient(1px 1px at 40% 72%,#fff,transparent),radial-gradient(1.3px 1.3px at 90% 28%,#fff,transparent),conic-gradient(from 210deg at 70% 40%,#0c1430,#1e2c5c,#0a0f22,#2a3a70,#0c1430),#0a0f22}
.t-leg .wcf{--ink:#f8e7bf;--foil:#f3cf8e;background:radial-gradient(1.3px 1.3px at 22% 28%,#f3cf8e,transparent),radial-gradient(1.3px 1.3px at 48% 18%,#f3cf8e,transparent),radial-gradient(1.6px 1.6px at 74% 40%,#ffe7a8,transparent),radial-gradient(1.1px 1.1px at 86% 70%,#f3cf8e,transparent),radial-gradient(1.2px 1.2px at 34% 66%,#f3cf8e,transparent),linear-gradient(140deg,#120d06,#050403);box-shadow:0 22px 44px rgba(0,0,0,.6),inset 0 0 0 2px #c9a35a}
.t-dia .wglare,.t-leg .wglare{background:radial-gradient(30% 30% at var(--gx) var(--gy),rgba(255,255,255,.5),transparent 70%);mix-blend-mode:screen;opacity:.5}
/* 入帳：愛幣掉進卡片 */
.wdrop{position:absolute;inset:0;z-index:40;pointer-events:none;overflow:hidden}
.wdrop i{position:absolute;left:var(--x0);top:-30px;width:26px;height:26px;margin-left:-13px;border-radius:50%;display:grid;place-items:center;font:900 15px/1 var(--sans);font-style:normal;color:#5a3a08;
  background:radial-gradient(circle at 35% 30%,#fff3cf,#f3cf8e 45%,#b48a4a);box-shadow:0 2px 6px rgba(0,0,0,.4);transform:scale(var(--s));animation:wdrop 1.1s cubic-bezier(.55,0,.75,.4) var(--d) forwards;opacity:0}
@keyframes wdrop{0%{opacity:0;top:-30px}12%{opacity:1}85%{opacity:1}100%{opacity:0;left:var(--tx);top:var(--ty);transform:scale(.3)}}
.wc3.gulp .wcin{animation:gulp .5s ease-out}
@keyframes gulp{40%{transform:rotateX(var(--rx)) rotateY(var(--ry)) scale(1.035)}}
.wc3.lvup .wcin{animation:lvup 1.4s cubic-bezier(.3,1.2,.4,1)}
@keyframes lvup{0%{transform:rotateY(0) scale(.9)}60%{transform:rotateY(380deg) scale(1.04)}100%{transform:rotateY(360deg) scale(1)}}
.wgain{position:absolute;left:50%;bottom:-24px;transform:translate(-50%,0);z-index:3;display:flex;align-items:baseline;gap:8px;white-space:nowrap;padding:7px 14px;border-radius:999px;background:rgba(20,14,10,.92);box-shadow:0 8px 24px rgba(0,0,0,.5),inset 0 0 0 1px rgba(243,207,142,.45);animation:wgin .5s .5s both cubic-bezier(.2,1.3,.4,1)}
.wgain span{font-size:11.5px;color:var(--ink2)}.wgain b{color:var(--gold);font-variant-numeric:tabular-nums}
.wgain.up{background:linear-gradient(135deg,#3a2a10,#140e06)}.wgain.up b{color:#fff2cf}
.wgain.out{transition:opacity .5s,transform .5s;opacity:0;transform:translate(-50%,6px)}
@keyframes wgin{from{opacity:0;transform:translate(-50%,10px) scale(.9)}}
/* 分頁 */
.wtabs{position:relative;display:flex;gap:2px;margin:6px 0 12px;padding:4px;border-radius:16px;background:rgba(255,255,255,.05);overflow-x:auto;scrollbar-width:none}
.wtabs::-webkit-scrollbar{display:none}
.wtabs button{position:relative;z-index:1;flex:1 0 auto;padding:0 12px;height:34px;border-radius:12px;font-size:13.5px;color:var(--ink2);white-space:nowrap;transition:color .2s}
.wtabs button.on{color:#1d1406;font-weight:700}
.wind{position:absolute;z-index:0;left:0;top:4px;height:34px;border-radius:12px;background:linear-gradient(135deg,#f8e1b0,#d9aa5f);box-shadow:0 4px 14px rgba(243,207,142,.3);transition:transform .38s cubic-bezier(.3,1.3,.5,1),width .3s}
.wpane.swap{animation:wswap .3s ease-out}
@keyframes wswap{from{opacity:0;transform:translateY(6px)}}
/* 總覽 */
.wtoday{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px;border-radius:16px;overflow:hidden;background:rgba(243,207,142,.12)}
.wtoday>div{background:#120e12;padding:10px 6px;text-align:center}
.wtoday small{display:block;font-size:11px;color:var(--ink3)}.wtoday b{font-size:16px;font-variant-numeric:tabular-nums}
.view[data-app=wallet] .pos{color:#f6c27a}.view[data-app=wallet] .neg{color:#9a8fa0}
.wchart{display:flex;gap:6px;align-items:flex-end;height:132px;padding:22px 6px 6px;border-radius:16px;background:linear-gradient(rgba(255,255,255,.04),rgba(255,255,255,.02))}
.wcol{flex:1;height:100%;display:flex;flex-direction:column;align-items:center;gap:4px;position:relative}
.wcol em{position:absolute;top:-18px;font-style:normal;font-size:10px;color:var(--gold);white-space:nowrap;font-weight:700}
.wcb{flex:1;width:100%;display:flex;gap:2px;align-items:flex-end}
.wcb i{flex:1;border-radius:4px 4px 1px 1px;min-height:2px;transform-origin:bottom;animation:wgrow .7s calc(var(--j)*.05s) both cubic-bezier(.2,1.2,.4,1)}
.wcb .in{background:linear-gradient(#ffe2a8,#b8853c)}.wcb .out{background:rgba(255,255,255,.18)}
.wcol.now .wcb .in{box-shadow:0 0 14px rgba(243,207,142,.55)}
.wcol small{font-size:10px;color:var(--ink3)}.wcol.now small{color:var(--gold);font-weight:700}
@keyframes wgrow{from{transform:scaleY(0)}}
.wlegend{display:flex;gap:14px;font-size:11.5px;color:var(--ink3);margin:6px 2px 0}
.wlegend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px;vertical-align:0}.wlegend .in{background:#e3b56c}.wlegend .out{background:rgba(255,255,255,.25)}
.wsrc{display:grid;gap:8px}
.wsr{display:grid;grid-template-columns:30px 1fr auto;grid-template-rows:auto 4px;column-gap:10px;align-items:center;animation:wswap .4s calc(var(--j)*.06s) both}
.wsr i{grid-row:1/3;width:30px;height:30px;border-radius:10px;display:grid;place-items:center;font-style:normal;background:rgba(243,207,142,.1)}
.wsr span{font-size:13.5px}.wsr b{font-size:13.5px;color:var(--gold);font-variant-numeric:tabular-nums}
.wsr u{grid-column:2/4;height:4px;border-radius:2px;background:rgba(255,255,255,.06);overflow:hidden}
.wsr s{display:block;height:100%;background:linear-gradient(90deg,#b8853c,#ffe2a8);border-radius:2px;transform-origin:left;animation:wbar .8s .2s both cubic-bezier(.2,1,.3,1)}
@keyframes wbar{from{transform:scaleX(0)}}
/* 帳本 */
.wldh{position:sticky;top:-4px;z-index:1;display:flex;justify-content:space-between;align-items:baseline;padding:8px 4px 6px;background:linear-gradient(var(--phone) 70%,transparent);font-size:12.5px}
.wldh b{color:var(--gold);font-family:var(--serif)}.wldh span{font-size:12px;font-variant-numeric:tabular-nums}
.wlr{display:flex;align-items:center;gap:10px;padding:9px 4px;border-bottom:1px solid var(--line)}
.wlr>i{flex:none;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-style:normal;background:rgba(255,255,255,.06);font-size:16px}
.wlr span{flex:1;min-width:0;font-size:13.5px}.wlr small{display:block;font-size:11px;color:var(--ink3)}
.wlr b{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:14px}
.wlr b.card{color:#b9a8ff}

/* =====================================================================
   20261107.1　情環：佔有值軌道
   ===================================================================== */
.rhero{position:relative;width:300px;height:300px;margin:0 auto;max-width:100%}
.rhero svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.rguide{fill:none;stroke:rgba(255,180,210,.09);stroke-width:1;stroke-dasharray:2 6}
.rb{fill:rgba(255,255,255,.13)}
.rb.past{fill:#ff8fb1}
.rb.now{fill:#fff;transform-box:fill-box;transform-origin:center;animation:rbnow 1.6s ease-in-out infinite;filter:drop-shadow(0 0 6px #ff6ea6)}
@keyframes rbnow{50%{transform:scale(1.35)}}
.rbeat{transform-origin:150px 150px;animation:rbeat 1.7s ease-in-out infinite}
@keyframes rbeat{0%,100%{transform:scale(1)}14%{transform:scale(1.045)}28%{transform:scale(1)}42%{transform:scale(1.03)}}
.rcore{transform-origin:150px 150px;animation:rspin 14s linear infinite}
@keyframes rspin{to{transform:rotate(360deg)}}
.orb{position:absolute;left:50%;top:50%;width:0;height:0;transform:rotate(var(--a));animation:orb var(--dur) linear infinite}
.orb .arm{position:absolute;left:var(--r);top:0}
.oface{position:absolute;left:-20px;top:-20px;width:40px;height:40px;border-radius:50%;transform:rotate(calc(0deg - var(--a)));animation:orbr var(--dur) linear infinite;box-shadow:0 0 0 2px var(--mc),0 0 0 4px rgba(13,10,18,.9),0 6px 16px rgba(0,0,0,.55)}
.oface .av{width:40px!important;height:40px!important}
.orb.top .oface{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--mc),0 0 22px 4px color-mix(in srgb,var(--mc) 70%,#ff4f93)}
.orb.top .oface:after{content:"";position:absolute;inset:-6px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--mc) 60%,#ff8fb1);animation:otop 1.7s ease-out infinite}
@keyframes otop{from{transform:scale(.9);opacity:.9}to{transform:scale(1.6);opacity:0}}
@keyframes orb{from{transform:rotate(var(--a))}to{transform:rotate(calc(var(--a) + 360deg))}}
@keyframes orbr{from{transform:rotate(calc(0deg - var(--a)))}to{transform:rotate(calc(-360deg - var(--a)))}}
.rctr{position:absolute;left:50%;top:50%;width:76px;height:76px;margin:-38px 0 0 -38px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.2}
.rctr b{font:900 17px var(--serif);color:#fff;letter-spacing:.04em;white-space:nowrap}
.rctr span{font-size:11px;color:#ffb8d2}
.rhero:after{content:"";position:absolute;left:50%;top:50%;width:96px;height:96px;margin:-48px 0 0 -48px;border-radius:50%;border:2px solid #ff8fb1;opacity:0;pointer-events:none}
.rhero.rip:after{animation:rrip .9s ease-out}
@keyframes rrip{from{opacity:.9;transform:scale(.9)}to{opacity:0;transform:scale(3)}}
.rnear{display:flex;align-items:center;justify-content:center;gap:8px;margin:2px 0 6px;font-size:13px;color:var(--ink2);text-align:center}
.rnear .av{width:28px;height:28px;flex:none}
.rnear b{color:#fff}
.ringv .serial{margin-top:2px}
/* 放在心上的人 */
.rpc{display:flex;gap:12px;align-items:center;width:100%;text-align:left;padding:10px 12px;margin-bottom:8px;border-radius:20px;
  background:linear-gradient(100deg,color-mix(in srgb,var(--mc) 22%,transparent),rgba(255,255,255,.03) 60%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--mc) 30%,transparent)}
.rpav{flex:none;padding:3px;border-radius:50%;background:conic-gradient(var(--mc) calc(var(--p)*1%),rgba(255,255,255,.1) 0)}
.rpav .av{width:52px;height:52px;box-shadow:0 0 0 2px var(--phone)}
.rpc.hot .rpav{background:conic-gradient(#ff4f93 calc(var(--p)*1%),rgba(255,255,255,.1) 0);filter:drop-shadow(0 0 8px rgba(255,79,147,.55))}
.rpr{flex:1;min-width:0}
.rpr>b{display:flex;align-items:baseline;gap:6px;font-size:16px}
.rpr>b small{font-size:11.5px;color:var(--ink3);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rpm{display:flex;align-items:center;gap:10px;margin-top:4px;font-size:12px;color:var(--ink3)}
.rpm em{font-style:normal;color:#fff;font-weight:700;font-variant-numeric:tabular-nums}
.rpst{padding:1px 8px;border-radius:8px;background:color-mix(in srgb,var(--mc) 35%,rgba(0,0,0,.3));color:#fff;font-weight:700}
.rpc.hot .rpst{background:linear-gradient(90deg,#ff4f93,#c21f63)}
.rpgo{font-style:normal;font-size:22px;color:var(--ink3)}

/* =====================================================================
   20261107.1　觸夢預約：深淵水族箱＋訂單票根
   ===================================================================== */
.tnk{position:relative;height:232px;margin:2px 0 6px;border-radius:24px;overflow:hidden;isolation:isolate;
  background:radial-gradient(90% 70% at 50% 110%,color-mix(in srgb,var(--c1) 55%,transparent),transparent 70%),radial-gradient(60% 50% at 50% 0%,rgba(255,255,255,.06),transparent 70%),linear-gradient(var(--c2),#020103);
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--c0) 25%,transparent),inset 0 -40px 60px rgba(0,0,0,.4),0 16px 40px color-mix(in srgb,var(--c1) 22%,transparent);transition:box-shadow .5s}
.tnk:before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:repeating-linear-gradient(100deg,transparent 0 22px,rgba(255,255,255,.025) 22px 26px);animation:caust 9s linear infinite}
@keyframes caust{to{background-position:220px 0}}
.tnk svg{position:absolute;inset:0;width:100%;height:100%}
.tt{transform-box:fill-box;transform-origin:50% 100%;animation:tsway var(--sp) ease-in-out var(--d) infinite alternate}
@keyframes tsway{from{transform:rotate(calc(0deg - var(--sw))) skewX(3deg)}to{transform:rotate(var(--sw)) skewX(-3deg)}}
.tt.grow path:first-child,.tt.grow{animation:tgrow .7s var(--gd) cubic-bezier(.2,1.4,.4,1) both,tsway var(--sp) ease-in-out var(--d) infinite alternate}
@keyframes tgrow{from{transform:scaleY(0)}}
.tnk.surge .tt{animation:tsurge 1.4s cubic-bezier(.3,1.4,.5,1) forwards}
@keyframes tsurge{40%{transform:scaleY(1.25) rotate(calc(var(--sw)*1.6))}100%{transform:scaleY(1.5) rotate(0)}}
.tnk.surge{box-shadow:inset 0 0 0 2px var(--c0),0 0 50px color-mix(in srgb,var(--c0) 45%,transparent)}
.tnbub i{position:absolute;bottom:-12px;left:var(--x);width:var(--bz);height:var(--bz);border-radius:50%;border:1px solid color-mix(in srgb,var(--c0) 70%,transparent);background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.6),transparent 60%);animation:tnbub var(--bs) ease-in var(--bd) infinite;opacity:0}
@keyframes tnbub{0%{opacity:0;transform:translate(0,0)}15%{opacity:.8}100%{opacity:0;transform:translate(10px,-240px)}}
.tnhud{position:absolute;left:16px;top:12px;z-index:3;line-height:1.1;text-shadow:0 2px 10px rgba(0,0,0,.7)}
.tnhud b{font:900 40px var(--serif);color:#fff}.tnhud b small{font-size:14px;margin-left:3px;color:var(--c0)}
.tnhud span{display:block;font-size:12px;color:var(--c0);margin-top:2px}
.tnlv{position:absolute;right:14px;top:14px;z-index:3;font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:10px;color:#fff;background:color-mix(in srgb,var(--c1) 60%,rgba(0,0,0,.4));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--c0) 50%,transparent)}
/* 滑桿 */
.tnrng{-webkit-appearance:none;appearance:none;width:100%;height:28px;background:transparent;margin:0}
.tnrng::-webkit-slider-runnable-track{height:8px;border-radius:4px;background:linear-gradient(90deg,#ff4f6e var(--v),rgba(255,255,255,.1) var(--v))}
.tnrng::-moz-range-track{height:8px;border-radius:4px;background:linear-gradient(90deg,#ff4f6e var(--v),rgba(255,255,255,.1) var(--v))}
.tnrng::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;margin-top:-9px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#ffb3c2 60%,#e0284a);box-shadow:0 0 0 4px rgba(255,79,110,.25),0 4px 12px rgba(0,0,0,.5)}
.tnrng::-moz-range-thumb{width:26px;height:26px;border:0;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#ffb3c2 60%,#e0284a)}
/* 溫度：一條冷到熱的漸層，水銀滑到選的那一格 */
.tnth{position:relative;display:grid;grid-template-columns:repeat(4,1fr);padding:4px;border-radius:16px;background:linear-gradient(90deg,rgba(80,200,255,.16),rgba(80,230,160,.14),rgba(230,110,220,.16),rgba(255,80,60,.2))}
.tnth button{position:relative;z-index:1;padding:9px 2px;border-radius:12px;text-align:center}
.tnth b{display:block;font-size:14px;font-variant-numeric:tabular-nums}.tnth span{font-size:11px;color:var(--ink3)}
.tnth button.on span{color:#fff}
.tnmerc{position:absolute;z-index:0;top:4px;bottom:4px;left:4px;width:calc((100% - 8px)/4);border-radius:12px;transform:translateX(calc(var(--i)*100%));transition:transform .45s cubic-bezier(.3,1.3,.5,1),background .45s;background:rgba(255,255,255,.12);box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.5)}
/* 觸感、姿勢：2×2 卡片 */
.tngrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.tnc{text-align:left;padding:10px 12px;border-radius:16px;background:rgba(255,255,255,.045);box-shadow:inset 0 0 0 1px var(--line);transition:background .25s,box-shadow .25s,transform .15s}
.tnc:active{transform:scale(.97)}
.tnc b{display:block;font-size:14.5px}.tnc span{display:block;font-size:12px;line-height:1.45;color:var(--ink3);margin-top:2px}
.tnc.on{background:linear-gradient(150deg,rgba(255,60,100,.22),rgba(120,10,40,.18));box-shadow:inset 0 0 0 1.5px #ff5a78}
.tnc.on span{color:#ffd0da}
/* 強度：三段，越右越紅 */
.tnlvs{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.tnlvs button{padding:10px 6px;border-radius:14px;text-align:center;background:rgba(255,255,255,.045);box-shadow:inset 0 0 0 1px var(--line);transition:all .25s}
.tnlvs b{display:block;font-size:14.5px}.tnlvs span{display:block;font-size:11px;color:var(--ink3);line-height:1.4}
.tnlvs button:nth-child(1).on{background:rgba(255,140,170,.18);box-shadow:inset 0 0 0 1.5px #ff9ab3}
.tnlvs button:nth-child(2).on{background:rgba(255,70,110,.24);box-shadow:inset 0 0 0 1.5px #ff4f6e}
.tnlvs button:nth-child(3).on{background:linear-gradient(150deg,#b3122f,#4a0414);box-shadow:inset 0 0 0 1.5px #ff2d4a,0 0 22px rgba(255,30,60,.35)}
.tnlvs button.on span{color:#ffe0e6}
/* 訂單票根 */
.tnkt{position:relative;margin:18px 0 10px;padding:14px 16px 12px;border-radius:16px;background:linear-gradient(#f7efe6,#eadccc);color:#3a1f22;box-shadow:0 14px 30px rgba(0,0,0,.45);overflow:hidden;
  -webkit-mask:radial-gradient(circle 9px at 0 calc(100% - 52px),transparent 98%,#000) ,radial-gradient(circle 9px at 100% calc(100% - 52px),transparent 98%,#000);-webkit-mask-composite:source-in;mask:radial-gradient(circle 9px at 0 calc(100% - 52px),transparent 98%,#000) intersect,radial-gradient(circle 9px at 100% calc(100% - 52px),transparent 98%,#000)}
.tnkh{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:8px;margin-bottom:4px;border-bottom:1px solid rgba(58,31,34,.15)}
.tnkh b{font:900 15px var(--serif);letter-spacing:.08em;color:#7a0f2a}.tnkh span{font-size:12px;color:#8a6a6a;font-variant-numeric:tabular-nums}
.tnkr{display:grid;grid-template-columns:76px 1fr auto;gap:8px;align-items:baseline;padding:4px 0;font-size:13px}
.tnkr span{color:#8a6a6a;font-size:12px}.tnkr em{font-style:normal;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tnkr b{font-variant-numeric:tabular-nums;font-weight:700}
.tnkcut{margin:8px -16px 8px;border-top:2px dashed rgba(58,31,34,.22)}
.tnktot{display:flex;justify-content:space-between;align-items:baseline}
.tnktot>span{font-size:12px;color:#8a6a6a}.tnktot b{font:900 24px var(--sans);color:#a3112f;font-variant-numeric:tabular-nums}
.tnkstamp{position:absolute;left:50%;margin-left:-62px;bottom:78px;padding:6px 14px;border:3px solid #c21234;border-radius:10px;color:#c21234;font:900 22px var(--serif);letter-spacing:.2em;transform:rotate(-14deg) scale(2.4);opacity:0;pointer-events:none;mix-blend-mode:multiply}
.tnkt.stamped .tnkstamp{animation:tnkst .45s cubic-bezier(.2,1.6,.4,1) forwards}
@keyframes tnkst{to{opacity:.9;transform:rotate(-14deg) scale(1)}}
.tnkt.stamped{animation:tnkshake .35s .35s}
@keyframes tnkshake{30%{transform:translateY(3px)}60%{transform:translateY(-1px)}}

/* =====================================================================
   20261107.2　LIME：頭像列、角色色調的聊天室、愛心、回覆動畫
   ===================================================================== */
.lstory{display:flex;gap:12px;overflow-x:auto;scrollbar-width:none;margin:2px -16px 10px;padding:4px 16px 2px}
.lstory::-webkit-scrollbar{display:none}
.ls{flex:none;width:62px;text-align:center;animation:lsin .45s calc(var(--j)*.04s) both cubic-bezier(.2,1.3,.4,1)}
@keyframes lsin{from{opacity:0;transform:translateY(8px) scale(.9)}}
.lsr{position:relative;display:block;width:62px;height:62px;border-radius:50%;padding:3px;background:rgba(255,255,255,.12)}
.lsr .av{width:56px!important;height:56px!important;box-shadow:0 0 0 2px var(--phone)}
.ls.new .lsr{background:none}
.ls.new .lsr:before{content:"";position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,#13c763,#9cff57,var(--cc),#13c763);animation:lsspin 3s linear infinite}
.lsr .av{position:relative}
@keyframes lsspin{to{transform:rotate(360deg)}}
.lsr .onl{position:absolute;right:2px;bottom:2px;width:14px;height:14px;border-radius:50%;background:#13c763;box-shadow:0 0 0 3px var(--phone)}
.ls b{display:block;margin-top:4px;font-size:11.5px;font-weight:500;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ls.new b{color:#fff;font-weight:700}
.ctag.ph{color:#ffb3cc;background:rgba(255,79,135,.12)}
.ctag.ph.warm{color:#fff;background:rgba(255,79,135,.35)}
.ctag.ph.hot{color:#fff;background:linear-gradient(90deg,#ff4f87,#c2185b);box-shadow:0 0 10px rgba(255,79,135,.45)}
.view.lime .crow.unread{background:linear-gradient(90deg,rgba(19,199,99,.09),transparent 70%);border-radius:14px}
.view.lime .crow.unread .cr span em{color:var(--ink);font-weight:500}
/* 聊天室：每個人有自己的底色 */
.view.chat{--cc:#13c763;background:radial-gradient(120% 70% at 100% 0%,color-mix(in srgb,var(--cc) 16%,transparent),transparent 60%),radial-gradient(100% 60% at 0% 100%,color-mix(in srgb,var(--cc) 10%,transparent),transparent 60%),#12151d}
.view.chat:before{background:radial-gradient(circle at 1px 1px,rgba(255,255,255,.05) 1px,transparent 1.5px) 0 0/22px 22px;opacity:1}
.view.chat .vhead h2{display:flex;flex-direction:column}
.chav{position:relative;flex:none}
.chav .av{box-shadow:0 0 0 2px color-mix(in srgb,var(--cc) 80%,transparent)}
.cpm{display:block;width:96px;height:3px;border-radius:2px;background:rgba(255,255,255,.1);margin:3px 0 1px;overflow:hidden}
.cpm s{display:block;height:100%;border-radius:2px;background:linear-gradient(90deg,var(--cc),#ff4f87);transition:width 1.2s cubic-bezier(.2,1,.3,1)}
.view.chat .msg:not(.me) .bb{background:color-mix(in srgb,var(--cc) 14%,#2b303a);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--cc) 18%,transparent)}
.view.chat .msg:not(.me) .bb.pic{background:color-mix(in srgb,var(--cc) 14%,#2b303a)}
.view.chat .msg{animation:mpop .42s cubic-bezier(.2,1.4,.4,1) both;transform-origin:0 100%}
.view.chat .msg.me{transform-origin:100% 100%}
@keyframes mpop{from{opacity:0;transform:translateY(8px) scale(.86)}}
.view.chat .bb.typing{display:flex;gap:4px;padding:12px 14px}
.view.chat .bb.typing i{width:7px;height:7px;border-radius:50%;background:color-mix(in srgb,var(--cc) 60%,#fff);animation:tdot 1s ease-in-out infinite}
.view.chat .bb.typing i:nth-child(2){animation-delay:.15s}.view.chat .bb.typing i:nth-child(3){animation-delay:.3s}
@keyframes tdot{0%,60%,100%{transform:translateY(0);opacity:.5}30%{transform:translateY(-5px);opacity:1}}
.view.chat .cdiv span{backdrop-filter:blur(6px)}
/* 回覆選項：一個一個滑上來，選中的那個飛出去 */
.view.chat .cfoot .copts button{animation:qin .4s calc(var(--k)*.07s) both cubic-bezier(.2,1.3,.4,1);transition:transform .15s,opacity .25s,background .2s}
.view.chat .cfoot .copts button:active{transform:scale(.97)}
@keyframes qin{from{opacity:0;transform:translateY(14px)}}
.cfoot.picking .copts button:not(.pick){opacity:0;transform:translateY(10px)}
.cfoot .copts button.pick{background:linear-gradient(135deg,#1fd16f,#0bb35a)!important;color:#062b14!important;box-shadow:none!important;transform:translateY(-10px) scale(1.02)}
.cqr small{letter-spacing:.04em}
/* 愛心 */
.chearts{position:absolute;z-index:30;width:0;height:0;pointer-events:none}
.chearts i{position:absolute;left:-8px;top:-8px;font-style:normal;font-size:18px;color:#ff4f87;text-shadow:0 0 8px rgba(255,79,135,.7);opacity:0;animation:cht 1.3s var(--d) ease-out forwards}
@keyframes cht{0%{opacity:0;transform:translate(0,0) scale(.4)}20%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(var(--s))}}
.chearts b{position:absolute;left:24px;top:-10px;white-space:nowrap;font-size:12px;font-weight:800;color:#fff;padding:3px 9px;border-radius:10px;background:linear-gradient(90deg,#ff4f87,#c2185b);box-shadow:0 4px 14px rgba(255,79,135,.5);animation:chb 1.6s ease-out forwards}
@keyframes chb{0%{opacity:0;transform:translateY(6px) scale(.8)}15%{opacity:1;transform:none}80%{opacity:1}100%{opacity:0;transform:translateY(-8px)}}

/* =====================================================================
   20261107.2　掠奪配對：雷達、獵物紅／獵人琥珀、心電圖強度、鎖定
   ===================================================================== */
.pyv{--py:#ff2d4a;--py2:#7a0718;--pyg:rgba(255,45,74,.35)}
.pyv.py-hunt{--py:#ffb03a;--py2:#7a3f06;--pyg:rgba(255,176,58,.32)}
.pyv.py-hunt.view.ax.g-red{background:radial-gradient(120% 60% at 50% 0%,#2a1604,var(--phone) 60%)}
.pyv.py-hunt .vhead h2{color:#ffd08a!important}
.pyrad,.pyl{position:relative;width:240px;height:240px;margin:2px auto 0;border-radius:50%;overflow:hidden;
  background:radial-gradient(circle,color-mix(in srgb,var(--py) 16%,transparent),transparent 70%),radial-gradient(circle,#140406,#050102 72%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--py) 45%,transparent),0 0 40px var(--pyg)}
.pyrad i,.pyl i{position:absolute;pointer-events:none}
.pyr1,.pyr2,.pyr3{border-radius:50%;border:1px solid color-mix(in srgb,var(--py) 30%,transparent);left:50%;top:50%;transform:translate(-50%,-50%)}
.pyr1{width:33%;height:33%}.pyr2{width:66%;height:66%}.pyr3{width:98%;height:98%}
.pyx{left:0;right:0;top:50%;height:1px;background:color-mix(in srgb,var(--py) 22%,transparent)}
.pyy{top:0;bottom:0;left:50%;width:1px;background:color-mix(in srgb,var(--py) 22%,transparent)}
.pysw{inset:0;border-radius:50%;background:conic-gradient(from 0deg,transparent 0deg,transparent 290deg,color-mix(in srgb,var(--py) 55%,transparent) 358deg,var(--py) 360deg);animation:pysw 3.2s linear infinite;mix-blend-mode:screen}
@keyframes pysw{to{transform:rotate(360deg)}}
.pyb{position:absolute;left:50%;top:50%;width:0;height:0;transform:rotate(var(--a)) translateX(calc(var(--d) * 1.2px)) rotate(calc(0deg - var(--a)))}
.pyb .av{position:absolute;left:-15px;top:-15px;width:30px!important;height:30px!important;box-shadow:0 0 0 2px var(--py),0 0 10px var(--py);filter:saturate(.6) brightness(.8);opacity:.35;animation:pyblip 3.2s var(--t) linear infinite}
@keyframes pyblip{0%{opacity:1;filter:none;transform:scale(1.15)}30%{opacity:.75;transform:scale(1)}100%{opacity:.25}}
.pyme{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:30px;filter:drop-shadow(0 0 10px var(--py))}
.pycnt{display:flex;align-items:center;justify-content:center;gap:6px;margin:8px 0 12px;font-size:12.5px;color:color-mix(in srgb,var(--py) 60%,#fff)}
.pycnt .lvdot{background:var(--py);box-shadow:0 0 8px var(--py)}
.pyv .rolec{transition:transform .2s,box-shadow .3s,background .3s}
.pyv .rolec:active{transform:scale(.97)}
.pyv .rolec.r-hunt.on{box-shadow:inset 0 0 0 2px #ffb03a,0 0 24px rgba(255,176,58,.35);background:linear-gradient(160deg,#5a330a,#120a02)}
.pyv .rolec.on i{animation:pyhop .5s cubic-bezier(.2,1.6,.4,1)}
@keyframes pyhop{40%{transform:translateY(-6px) scale(1.15)}}
.pylvs{display:grid;gap:8px}
.pylv{position:relative;display:flex;gap:12px;align-items:center;text-align:left;padding:12px 14px;border-radius:16px;overflow:hidden;background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px var(--line);transition:background .25s,box-shadow .25s}
.pylv:disabled{opacity:.35}
.pylv svg{flex:none;width:74px;height:32px}
.pylv path{fill:none;stroke:color-mix(in srgb,var(--py) 55%,#555);stroke-width:2;stroke-linejoin:round;stroke-dasharray:240;stroke-dashoffset:0}
.pylv.on path{stroke:var(--py);filter:drop-shadow(0 0 4px var(--py));animation:ecg 1.6s linear infinite}
.pylv:nth-child(2).on path{animation-duration:1.1s}.pylv:nth-child(3).on path{animation-duration:.7s}
@keyframes ecg{from{stroke-dashoffset:240}to{stroke-dashoffset:0}}
.pylv b{display:block;font-size:15.5px}.pylv span{display:block;font-size:12px;color:var(--ink3);line-height:1.5}
.pylv.on{background:linear-gradient(100deg,color-mix(in srgb,var(--py) 20%,transparent),rgba(0,0,0,.2));box-shadow:inset 0 0 0 1.5px var(--py)}
.pylv.on span{color:var(--ink2)}
.pyv .btn.main{background:linear-gradient(135deg,var(--py),var(--py2));box-shadow:0 8px 22px var(--pyg)}
.pyv.py-hunt .btn.main{color:#1d0f00}
.check.nudge{animation:nudge .5s}
@keyframes nudge{20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}
/* 鎖定 */
.pylock{--py:#ff2d4a;--pyg:rgba(255,45,74,.35);display:flex!important;flex-direction:column;align-items:center;justify-content:center;gap:18px;animation:fin .25s}
.pylock.hunt{--py:#ffb03a;--pyg:rgba(255,176,58,.32)}
.pylock .pyl{width:270px;height:270px}
.pyf{position:absolute;left:50%;top:50%;width:0;height:0;transform:rotate(var(--a)) translateX(92px) rotate(calc(0deg - var(--a)))}
.pyf .av{position:absolute;left:-17px;top:-17px;width:34px!important;height:34px!important;opacity:0;box-shadow:0 0 0 2px var(--py);animation:pyff 1.6s calc(var(--j)*.22s) ease-out}
@keyframes pyff{30%{opacity:.9}100%{opacity:0}}
.pyt{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(.3);opacity:0;transition:all .5s cubic-bezier(.2,1.5,.4,1)}
.pyt .av{width:84px!important;height:84px!important;box-shadow:0 0 0 3px var(--py),0 0 30px var(--py);filter:blur(4px)}
.pyc{left:50%;top:50%;width:150px;height:150px;margin:-75px 0 0 -75px;border:2px solid var(--py);border-radius:50%;opacity:0;transform:scale(1.8) rotate(45deg);transition:all .45s cubic-bezier(.3,1.4,.5,1)}
.pyc:before,.pyc:after{content:"";position:absolute;background:var(--py)}
.pyc:before{left:50%;top:-14px;bottom:-14px;width:2px;margin-left:-1px;clip-path:polygon(0 0,100% 0,100% 18%,0 18%,0 82%,100% 82%,100% 100%,0 100%)}
.pyc:after{top:50%;left:-14px;right:-14px;height:2px;margin-top:-1px;clip-path:polygon(0 0,18% 0,18% 100%,0 100%,0 0,82% 0,100% 0,100% 100%,82% 100%)}
.pylock.lock .pyt{opacity:1;transform:translate(-50%,-50%) scale(1)}
.pylock.lock .pyt .av{filter:none;transition:filter .4s .1s}
.pylock.lock .pyc{opacity:1;transform:scale(1) rotate(0)}
.pylock.lock .pysw{animation-duration:.6s}
.pymsg{font:700 16px var(--serif);color:color-mix(in srgb,var(--py) 55%,#fff);letter-spacing:.06em}
.pylock.lock .pymsg{font-size:26px;letter-spacing:.4em;color:#fff;text-shadow:0 0 18px var(--py)}
.pyres .av{margin:4px auto 0;box-shadow:0 0 0 3px #ff2d4a,0 0 26px rgba(255,45,74,.5)}
.pyres.hunt .av{box-shadow:0 0 0 3px #ffb03a,0 0 26px rgba(255,176,58,.5)}
.pyres .mtitle{color:#ff5a78;animation:pyhop .5s}
.pyres.hunt .mtitle{color:#ffc46a}

/* =====================================================================
   20261107.2　鞭欲名單：絲絨名冊卡、蠟封、紙條、燭火
   ===================================================================== */
.whead{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:0 0 10px;padding:12px 14px;border-radius:18px;background:linear-gradient(120deg,#2a0610,#120206);box-shadow:inset 0 0 0 1px rgba(255,60,90,.2)}
.whead b{display:block;font:900 16px var(--serif);color:#ffd7de}.whead span{font-size:11.5px;color:var(--ink3)}
.wcand{display:flex;align-items:flex-end;gap:6px}
.wcand i{position:relative;width:7px;height:20px;border-radius:2px;background:linear-gradient(#f6eadb,#bfa98f);opacity:.35}
.wcand i.on{opacity:1}
.wcand i.on:before{content:"";position:absolute;left:50%;top:-11px;width:8px;height:12px;margin-left:-4px;border-radius:50% 50% 50% 50%/60% 60% 40% 40%;background:radial-gradient(circle at 50% 70%,#fff6c8,#ffb03a 45%,rgba(255,80,40,.2) 75%);animation:flick 1.2s calc(var(--j)*.17s) ease-in-out infinite alternate;filter:drop-shadow(0 0 6px #ff9a3a)}
@keyframes flick{0%{transform:scale(1) rotate(-3deg)}50%{transform:scale(.9,1.1) rotate(2deg)}100%{transform:scale(1.05,.95) rotate(-1deg)}}
.wcand small{margin-left:4px;font-size:11.5px;color:#ffcf9a;white-space:nowrap}
.wvel{position:relative;margin-bottom:14px;padding:14px;border-radius:20px;overflow:hidden;animation:wvin .5s calc(var(--j)*.06s) both cubic-bezier(.2,1.2,.4,1);
  background:repeating-linear-gradient(135deg,rgba(255,255,255,.012) 0 2px,transparent 2px 5px),radial-gradient(120% 90% at 0% 0%,rgba(150,10,40,.45),transparent 60%),linear-gradient(160deg,#25050d,#0b0205);box-shadow:inset 0 0 0 1px rgba(255,60,90,.22),0 14px 30px rgba(0,0,0,.4)}
.wvel.sub{background:repeating-linear-gradient(135deg,rgba(255,255,255,.012) 0 2px,transparent 2px 5px),radial-gradient(120% 90% at 0% 0%,rgba(90,40,120,.45),transparent 60%),linear-gradient(160deg,#170a22,#07030b);box-shadow:inset 0 0 0 1px rgba(190,140,255,.22),0 14px 30px rgba(0,0,0,.4)}
@keyframes wvin{from{opacity:0;transform:translateY(14px)}}
.wvt{display:flex;gap:14px;align-items:center}
.wvav{position:relative;flex:none}
.wvav .av{width:72px!important;height:72px!important;box-shadow:0 0 0 2px rgba(255,90,120,.7)}
.wvel.sub .wvav .av{box-shadow:0 0 0 2px rgba(190,140,255,.7)}
.wseal{position:absolute;right:-6px;bottom:-4px;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font:900 14px var(--serif);font-style:normal;color:#ffe3c2;
  background:radial-gradient(circle at 35% 30%,#e0425e,#8a0b22 60%,#4a0410);box-shadow:0 2px 6px rgba(0,0,0,.5),inset 0 0 0 2px rgba(0,0,0,.18);clip-path:polygon(50% 0,62% 6%,76% 4%,82% 16%,95% 22%,94% 36%,100% 50%,94% 64%,95% 78%,82% 84%,76% 96%,62% 94%,50% 100%,38% 94%,24% 96%,18% 84%,5% 78%,6% 64%,0 50%,6% 36%,5% 22%,18% 16%,24% 4%,38% 6%)}
.wseal.sub{background:radial-gradient(circle at 35% 30%,#a07ae0,#4a2a8a 60%,#22104a)}
.wvr{min-width:0}
.wvr b{display:flex;align-items:center;gap:8px;font:900 19px var(--serif);color:#fff}
.wvr b em{font:700 10.5px var(--sans);font-style:normal;padding:2px 7px;border-radius:8px;color:#2a1606;background:linear-gradient(90deg,#f6dca0,#c9a35a)}
.wvr span{display:block;font-size:12.5px;color:#ffb3c2;margin-top:2px}.wvel.sub .wvr span{color:#d6c2ff}
.wvr small{display:block;font-size:11.5px;color:var(--ink3)}
.wvtools{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:12px 0 4px}
.wvtools small{font-size:11px;color:var(--ink3);margin-right:2px}
.wvtools span{font-size:12px;padding:3px 10px;border-radius:999px;color:#ffd7de;background:rgba(255,255,255,.05);box-shadow:inset 0 0 0 1px rgba(255,120,150,.28)}
.wvnotes{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;margin:10px -14px 12px;padding:4px 14px 6px;scrollbar-width:none}
.wvnotes::-webkit-scrollbar{display:none}
.wvnotes p{flex:0 0 78%;scroll-snap-align:start;margin:0;padding:12px 14px 10px;border-radius:4px 14px 14px 14px;background:#f3ead9;color:#3a2016;font:500 13px/1.6 var(--serif);transform:rotate(var(--r));box-shadow:0 6px 14px rgba(0,0,0,.35)}
.wvnotes p i{display:block;margin-top:6px;font:400 10.5px var(--sans);font-style:normal;color:#9a7a6a}
.wvel .btn.main{margin-top:0}
/* 預約：包廂卡＋蠟封 */
.wbk{position:relative}
.wbkh{display:flex;gap:12px;align-items:center}.wbkh h3{margin:0}
.wrooms{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.wroom{text-align:left;padding:12px;border-radius:16px;background:linear-gradient(160deg,#2a0810,#0e0306);box-shadow:inset 0 0 0 1px rgba(255,60,90,.22);animation:wvin .4s calc(var(--j)*.06s) both;transition:transform .15s,box-shadow .2s}
.wroom:active{transform:scale(.97)}
.wroom i{display:block;font-style:normal;font-size:24px}.wroom b{display:block;font-size:14.5px;margin-top:4px}.wroom span{display:block;font-size:11.5px;color:var(--ink3);line-height:1.45}
.wroom.full{opacity:.35}
.wroom.pick{box-shadow:inset 0 0 0 2px #ff2d4a,0 0 22px rgba(255,45,74,.4)}
.wstamp{position:absolute;left:50%;top:44%;width:120px;height:120px;margin:-60px 0 0 -60px;border-radius:50%;display:grid;place-items:center;text-align:center;font:900 20px/1.25 var(--serif);color:#ffe3c2;letter-spacing:.2em;pointer-events:none;opacity:0;transform:scale(2.4) rotate(-20deg);
  background:radial-gradient(circle at 35% 30%,#e0425e,#8a0b22 60%,#4a0410);box-shadow:0 10px 30px rgba(0,0,0,.6),inset 0 0 0 6px rgba(0,0,0,.15);clip-path:polygon(50% 0,60% 4%,72% 2%,78% 10%,90% 14%,92% 26%,100% 36%,96% 48%,100% 60%,92% 72%,90% 84%,78% 90%,72% 98%,60% 96%,50% 100%,40% 96%,28% 98%,22% 90%,10% 84%,8% 72%,0 60%,4% 48%,0 36%,8% 26%,10% 14%,22% 10%,28% 2%,40% 4%)}
.wbk.done .wstamp{animation:wst .5s cubic-bezier(.2,1.5,.4,1) forwards}
@keyframes wst{to{opacity:1;transform:scale(1) rotate(-8deg)}}

/* =====================================================================
   20261107.2　支配者契約：皮革卷宗、S 度燈、羊皮紙契約、蓋章
   ===================================================================== */
.pcd2{position:relative;animation:wvin .5s calc(var(--j)*.06s) both;background:repeating-linear-gradient(90deg,rgba(255,255,255,.012) 0 1px,transparent 1px 4px),linear-gradient(160deg,#2b0710,#0b0204)!important;box-shadow:inset 0 0 0 1px rgba(201,163,90,.28),0 12px 26px rgba(0,0,0,.4)!important}
.pcd2:before{content:"";position:absolute;left:10px;right:10px;top:8px;bottom:8px;border:1px dashed rgba(201,163,90,.18);border-radius:12px;pointer-events:none}
.pcav{position:relative;flex:none}.pcav .av{box-shadow:0 0 0 2px #c9a35a}
.pcd2 .pcr>b{font:900 18px var(--serif);background:linear-gradient(90deg,#f6dca0,#c9a35a);-webkit-background-clip:text;background-clip:text;color:transparent}
.pcpips{display:flex;align-items:center;gap:3px;margin:8px 0 6px}
.pcpips small{font-size:11px;color:var(--ink3);margin-right:5px}
.pcpips i{width:9px;height:14px;border-radius:2px;background:rgba(255,255,255,.08);transform:skewX(-12deg)}
.pcpips i.on{background:linear-gradient(#ff7a8a,#c2183c);box-shadow:0 0 6px rgba(255,45,74,.6);animation:pip .3s calc(var(--k)*.05s + .2s) both}
@keyframes pip{from{opacity:0;transform:skewX(-12deg) scaleY(.2)}}
.pcd2 q{display:block;font:italic 500 14px/1.6 var(--serif);color:#f3e2c8;quotes:none;margin:4px 0 10px}
.pcstat{animation:wvin .4s}
.pcstat small{animation:lockp 2s ease-in-out infinite}
@keyframes lockp{50%{opacity:.5}}
.pcparch{position:relative;background:linear-gradient(#f7efe1,#ead9bd)!important;box-shadow:inset 0 0 30px rgba(120,80,30,.25),0 6px 16px rgba(0,0,0,.35);padding-right:58px!important}
.pcseal{position:absolute;right:10px;top:10px;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font:900 16px var(--serif);font-style:normal;color:#ffe3c2;background:radial-gradient(circle at 35% 30%,#e0425e,#8a0b22 60%,#4a0410);box-shadow:0 2px 6px rgba(0,0,0,.4)}
.pcsigline{display:flex;align-items:flex-end;gap:10px;margin:12px 4px 0;padding-bottom:4px;border-bottom:1px solid rgba(255,255,255,.25)}
.pcsigline span{font-size:11.5px;color:var(--ink3);white-space:nowrap}
.pcsigline em{flex:1;font:italic 700 22px var(--serif);color:#fff;clip-path:inset(0 100% 0 0);transition:clip-path .2s}
.pcsign.hold~*,.pcsign.hold{}
#sheet:has(.pcsign.hold) .pcsigline em{clip-path:inset(0 0 0 0);transition:clip-path 1.2s linear}
#sheet.pcsigned .pcsigline em{clip-path:inset(0 0 0 0)}
#sheet.pcsigned .pcparch:after{content:"已簽";position:absolute;left:50%;top:50%;width:110px;height:110px;margin:-55px 0 0 -55px;border-radius:50%;display:grid;place-items:center;font:900 26px var(--serif);letter-spacing:.2em;color:#ffe3c2;
  background:radial-gradient(circle at 35% 30%,#e0425e,#8a0b22 60%,#4a0410);box-shadow:0 10px 30px rgba(0,0,0,.5);animation:wst .5s cubic-bezier(.2,1.5,.4,1) forwards;opacity:0;transform:scale(2.4) rotate(-20deg)}
.pcd2 .pcr>b{display:block;width:max-content}

/* 20261107.3　情環：上方「情環／結環名冊」分頁 */
.rgtabs{position:relative;display:grid;grid-template-columns:1fr 1fr;padding:4px;margin:0 0 10px;border-radius:16px;background:rgba(255,255,255,.05)}
.rgtabs i{position:absolute;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);border-radius:12px;background:linear-gradient(135deg,#ff6ea6,#c2185b);box-shadow:0 4px 14px rgba(255,79,147,.35);transform:translateX(calc(var(--i)*100%));transition:transform .35s cubic-bezier(.3,1.3,.5,1)}
.rgtabs button{position:relative;z-index:1;height:34px;font-size:14px;color:var(--ink2)}
.rgtabs button.on{color:#fff;font-weight:700}

/* =====================================================================
   20261107.3　情浪動態：今日熱浪跑馬燈、雙擊愛心、浮動發文鈕
   ===================================================================== */
.wvhot{display:flex;align-items:center;gap:10px;margin:0 0 10px;padding:9px 12px;border-radius:14px;overflow:hidden;background:linear-gradient(90deg,rgba(255,95,168,.22),rgba(156,28,128,.12));box-shadow:inset 0 0 0 1px rgba(255,120,190,.25)}
.wvhot>b{flex:none;font:900 13px var(--serif);color:#ffd0ea;letter-spacing:.08em}
.wvtk{flex:1;overflow:hidden;-webkit-mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.wvtk>div{display:flex;gap:22px;width:max-content;animation:wvtk 34s linear infinite}
.wvtk span{font-size:12.5px;color:var(--ink2);white-space:nowrap}.wvtk em{font-style:normal;margin-left:6px;color:#ff8fc8;font-weight:700}
@keyframes wvtk{to{transform:translateX(-50%)}}
.wvch.mtabs{flex-wrap:nowrap;margin-bottom:4px}
.view[data-app=wave] .wpost{position:relative;animation:wvin .45s calc(var(--j,0)*.05s) both cubic-bezier(.2,1.2,.4,1);background:linear-gradient(170deg,rgba(255,255,255,.06),rgba(255,255,255,.02));box-shadow:inset 0 0 0 1px rgba(255,140,200,.14),0 10px 26px rgba(0,0,0,.3)}
.view[data-app=wave] .wpost .ph1 .av{box-shadow:0 0 0 2px #ff5fa8}
.wimg,.wsens,.wtile{position:relative;user-select:none;-webkit-user-select:none}
.wvbig{position:absolute;left:50%;top:50%;z-index:3;font-style:normal;font-size:96px;line-height:1;color:#ff4f93;text-shadow:0 6px 30px rgba(255,79,147,.8);transform:translate(-50%,-50%) scale(0);animation:wvbig 1.1s cubic-bezier(.2,1.6,.4,1) forwards;pointer-events:none}
@keyframes wvbig{40%{transform:translate(-50%,-50%) scale(1.15);opacity:1}70%{transform:translate(-50%,-50%) scale(.95)}100%{transform:translate(-50%,-80%) scale(1);opacity:0}}
.wpost .pa button.on i{color:#ff4f93}
.wpost .pa button.pop i{animation:wvpop .45s cubic-bezier(.2,1.8,.4,1)}
@keyframes wvpop{40%{transform:scale(1.6) rotate(-12deg)}}
.wvfab{position:sticky;bottom:calc(14px + var(--sab));margin:8px 0 0 auto;display:grid;place-items:center;width:58px;height:58px;border-radius:50%;z-index:5;color:#fff;font-size:28px;
  background:linear-gradient(135deg,#ff8fc8,#ff4f93 50%,#9c1c80);box-shadow:0 10px 26px rgba(255,79,147,.5)}
.wvfab:before,.wvfab:after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid rgba(255,143,200,.6);animation:wvrip 2.4s ease-out infinite}
.wvfab:after{animation-delay:1.2s}
@keyframes wvrip{from{transform:scale(1);opacity:.8}to{transform:scale(1.7);opacity:0}}
.wvfab i{font-style:normal;line-height:1;margin-top:-2px}
.wvfab em{position:absolute;right:-2px;top:-2px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:#fff;color:#c2185b;font:800 11.5px/20px var(--sans);font-style:normal;text-align:center}
.wvfab:disabled{filter:grayscale(.8);opacity:.6}.wvfab:disabled:before,.wvfab:disabled:after{display:none}

/* =====================================================================
   20261107.3　情海校務通：學生證、學分圓環、彩色課表
   ===================================================================== */
.stid{position:relative;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:16px;border-radius:20px;overflow:hidden;margin-bottom:10px;
  background:radial-gradient(90% 90% at 100% 0%,rgba(255,170,220,.25),transparent 60%),linear-gradient(135deg,#6a1f7a,#2a0c38 60%,#14061c);box-shadow:inset 0 0 0 1px rgba(255,190,230,.25),0 14px 30px rgba(0,0,0,.4)}
.stid.enr{background:radial-gradient(90% 90% at 100% 0%,rgba(243,207,142,.3),transparent 60%),linear-gradient(135deg,#1f3a7a,#0c1838 60%,#060a1c)}
.stid.grad{background:radial-gradient(90% 90% at 100% 0%,rgba(255,230,160,.45),transparent 60%),linear-gradient(135deg,#7a5a1f,#38280c 60%,#1c1406)}
.stholo{position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.18) 45%,rgba(200,230,255,.12) 52%,transparent 65%);background-size:250% 100%;animation:holo 6s ease-in-out infinite alternate}
.stl{display:flex;gap:12px;align-items:center;min-width:0}
.stl .av{width:64px!important;height:64px!important;border-radius:14px!important;box-shadow:0 0 0 2px rgba(255,255,255,.6)}
.stl small{display:block;font-size:11px;letter-spacing:.08em;color:#ffd0ea}.stid.enr .stl small{color:#cfe0ff}.stid.grad .stl small{color:#ffe6a8}
.stl b{display:block;font:900 22px var(--serif)}
.stl span{font-size:12px;color:rgba(255,255,255,.6);font-variant-numeric:tabular-nums}
.stbar{display:flex;gap:2px;height:18px;margin-top:4px;opacity:.8}.stbar i{display:block;background:#fff;height:100%}
.string{position:relative;width:84px;height:84px;flex:none;display:grid;place-items:center;text-align:center}
.string svg{position:absolute;inset:0;transform:rotate(-90deg)}
.string circle{fill:none;stroke-width:7}.string .b{stroke:rgba(255,255,255,.12)}
.string .f{stroke:url(#none);stroke:#ffcf6e;stroke-linecap:round;stroke-dasharray:var(--p) 207;animation:strd 1.2s .2s both cubic-bezier(.2,1,.3,1)}
@keyframes strd{from{stroke-dasharray:0 207}}
.string b{font:900 24px/1 var(--serif);color:#ffe6a8}.string b small{font-size:11px;color:rgba(255,255,255,.6)}
.string span{position:absolute;bottom:14px;font-size:10.5px;color:rgba(255,255,255,.7)}
.stid p{width:100%;margin:0;font-size:11px;color:rgba(255,255,255,.5);position:relative}
.stnow{display:flex;align-items:center;gap:12px;width:100%;text-align:left;margin-bottom:10px;padding:12px 14px;border-radius:16px;background:linear-gradient(100deg,rgba(255,207,110,.18),rgba(255,207,110,.04));box-shadow:inset 0 0 0 1.5px rgba(255,207,110,.55)}
.stnow>i{font-style:normal;font-size:24px;animation:bell 1.6s ease-in-out infinite;transform-origin:50% 10%}
@keyframes bell{0%,60%,100%{transform:rotate(0)}10%{transform:rotate(16deg)}20%{transform:rotate(-14deg)}30%{transform:rotate(10deg)}40%{transform:rotate(-6deg)}}
.stnow div{flex:1;min-width:0}.stnow small{display:block;font-size:11px;color:#ffcf6e}.stnow b{display:block;font-size:16px}.stnow span{font-size:12px;color:var(--ink3)}
.stnow em{font-style:normal;font-size:24px;color:#ffcf6e}
.tt2 .ttr span:not(:first-child){position:relative;background:hsla(var(--h,0),60%,55%,.16);box-shadow:inset 3px 0 0 hsla(var(--h,0),80%,70%,.8);color:hsl(var(--h,0),70%,86%);transition:transform .15s}
.tt2 .ttr span:not(:first-child):empty{background:rgba(255,255,255,.03);box-shadow:none}
.tt2 .ttr span.past{opacity:.45}
.tt2 .ttr.now span:first-child{color:#ffcf6e}
.tt2 .ttr.now{position:relative}
.tt2 .ttr span.cur{box-shadow:inset 0 0 0 2px #ffcf6e,0 0 16px rgba(255,207,110,.45);color:#fff;animation:curp 1.6s ease-in-out infinite}
@keyframes curp{50%{box-shadow:inset 0 0 0 2px #ffcf6e,0 0 4px rgba(255,207,110,.2)}}
.tt2 .ttr span u{position:absolute;right:-4px;top:-6px;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;text-decoration:none;font-size:10px;font-weight:900;color:#1d1406;background:#ffcf6e;transform:rotate(-12deg);box-shadow:0 2px 6px rgba(0,0,0,.4)}

/* =====================================================================
   20261107.3　遠端玩具：轉盤、震動波形、模式、控制權卡
   ===================================================================== */
.rmc{--lv:0;position:relative;padding:14px 14px 12px;border-radius:24px;margin-bottom:6px;overflow:hidden;
  background:radial-gradient(70% 55% at 50% 38%,rgba(255,95,200,calc(.08 + var(--lv)*.035)),transparent 70%),linear-gradient(170deg,#2a0f36,#100618);box-shadow:inset 0 0 0 1px rgba(255,150,230,.2),0 14px 34px rgba(0,0,0,.4)}
.rmst{display:flex;justify-content:space-between;font-size:11.5px;color:#9fe6b8}.rmst span:last-child{color:var(--ink3)}
.rmst .lvdot{background:#36d07a;box-shadow:0 0 8px #36d07a}
.rmdial{position:relative;width:220px;height:220px;margin:4px auto 0;touch-action:none;cursor:grab;outline:none}
.rmdial svg{position:absolute;inset:0}
.rmdial .tr,.rmdial .ac{fill:none;stroke-width:12;stroke-linecap:round;transform:rotate(135deg);transform-origin:100px 100px;stroke-dasharray:386 515}
.rmdial .tr{stroke:rgba(255,255,255,.08)}
.rmdial .ac{stroke:url(#none);stroke:#ff5fc8;stroke-dasharray:calc(var(--lv)*38.6) 515;transition:stroke-dasharray .25s;filter:drop-shadow(0 0 6px #ff5fc8)}
.rmdial .tk{fill:rgba(255,255,255,.18)}.rmdial .tk.on{fill:#ffb3ea}
.rmknob{position:absolute;inset:26px;border-radius:50%;transition:transform .25s cubic-bezier(.3,1.4,.5,1)}
.rmknob i{position:absolute;left:50%;top:-2px;width:18px;height:18px;margin-left:-9px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#ffb3ea 50%,#d02a9a);box-shadow:0 0 12px #ff5fc8}
.rmegg2{position:absolute;left:50%;top:50%;width:84px;height:104px;margin:-60px 0 0 -42px;animation:rmshake calc(1s - var(--lv)*.085s) linear infinite}
.rmegg2 i{display:block;width:100%;height:100%;border-radius:50% 50% 50% 50%/58% 58% 42% 42%;background:radial-gradient(circle at 35% 28%,#fff,#ffc2ec 30%,#e04aa8 75%,#7a1458);box-shadow:0 0 calc(10px + var(--lv)*4px) rgba(255,95,200,calc(.25 + var(--lv)*.06))}
@keyframes rmshake{0%,100%{transform:translate(0,0) rotate(0)}25%{transform:translate(calc(var(--lv)*.35px),calc(var(--lv)*-.25px)) rotate(calc(var(--lv)*.5deg))}75%{transform:translate(calc(var(--lv)*-.35px),calc(var(--lv)*.25px)) rotate(calc(var(--lv)*-.5deg))}}
.rmval{position:absolute;left:0;right:0;bottom:30px;text-align:center}
.rmval b{font:900 28px var(--serif);color:#fff;text-shadow:0 0 12px #ff5fc8}.rmval small{font-size:12px;color:var(--ink3)}
.rmpm{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:-6px 6px 4px}
.rmpm button{width:42px;height:42px;border-radius:50%;font-size:22px;background:rgba(255,255,255,.08);box-shadow:inset 0 0 0 1px rgba(255,150,230,.3)}
.rmpm button:active{transform:scale(.92)}
.rmpm b{font-size:14px;color:#ffd0f2}
.rmosc{display:block;width:100%;height:46px;margin:4px 0 8px;border-radius:12px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.04) 0 1px,transparent 1px 12px),rgba(0,0,0,.25)}
.rmosc path{fill:none;stroke:#ff8fe0;stroke-width:1.6;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 3px #ff5fc8)}
.rmpats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.rmpats button{padding:8px 4px;border-radius:12px;text-align:center;background:rgba(255,255,255,.05);box-shadow:inset 0 0 0 1px var(--line)}
.rmpats b{display:block;font-size:13.5px}.rmpats small{display:block;font-size:10px;line-height:1.35;color:var(--ink3)}
.rmpats button.on{background:rgba(255,95,200,.2);box-shadow:inset 0 0 0 1.5px #ff5fc8}.rmpats button.on small{color:#ffd0f2}
.rmmodes{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.rmm{text-align:left;padding:12px;border-radius:18px;background:linear-gradient(160deg,#2c0f38,#120618);box-shadow:inset 0 0 0 1px rgba(255,150,230,.2);transition:transform .15s}
.rmm:active{transform:scale(.97)}
.rmm b{display:block;font-size:14.5px;margin-top:8px}.rmm small{display:block;font-size:11.5px;line-height:1.45;color:var(--ink3);margin-top:2px}
.rmmi{position:relative;height:64px;border-radius:12px;overflow:hidden;display:grid;place-items:center;background:rgba(0,0,0,.3)}
.rmmi span{position:relative;font-size:28px}
.rmm.qr .rmmi{background:repeating-linear-gradient(0deg,rgba(255,255,255,.06) 0 4px,transparent 4px 8px),repeating-linear-gradient(90deg,rgba(255,255,255,.06) 0 4px,transparent 4px 8px),rgba(0,0,0,.3)}
.qrs{position:absolute;left:0;right:0;height:2px;background:#36d07a;box-shadow:0 0 10px #36d07a;animation:qrs 1.8s ease-in-out infinite alternate}
@keyframes qrs{from{top:8%}to{top:88%}}
.pls{position:absolute;left:50%;top:50%;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;border:2px solid rgba(255,143,224,.7);animation:wvrip 2.4s ease-out infinite}
.pls:nth-child(2){animation-delay:.8s}.pls:nth-child(3){animation-delay:1.6s}
.rmdevs{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -16px;padding:2px 16px 8px;scrollbar-width:none}
.rmdevs::-webkit-scrollbar{display:none}
.rmd{flex:0 0 62%;scroll-snap-align:start;display:flex;flex-direction:column;gap:4px;padding:10px;border-radius:18px;background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px var(--line)}
.rmd .pimg{width:100%;height:110px;border-radius:12px;overflow:hidden}.rmd .pimg img{width:100%;height:100%;object-fit:cover}
.rmd .pimg.emo{display:grid;place-items:center;font-size:44px;background:radial-gradient(circle,#4a1458,#1a0620)}
.rmd b{font-size:14.5px;margin-top:4px}.rmd small{flex:1;font-size:11.5px;line-height:1.45;color:var(--ink3)}
.rmd .tagbtn{align-self:flex-start}
.rmd.on{box-shadow:inset 0 0 0 1.5px #ff5fc8,0 0 20px rgba(255,95,200,.2)}
/* 20261107.4 掠奪配對：固定當獵物 */
.pyv .pyrule{margin:14px 0 4px;padding:14px 16px;border-radius:16px;background:linear-gradient(135deg,rgba(190,30,50,.22),rgba(40,8,14,.55));border:1px solid rgba(255,90,110,.35);display:flex;flex-direction:column;gap:4px;box-shadow:0 0 24px rgba(255,40,70,.15) inset}
.pyv .pyrule b{font-size:15px;color:#ffd2d8;letter-spacing:.06em}
.pyv .pyrule span{font-size:13px;color:#f3c4ca;line-height:1.6}

/* ===== 20261108.1 ===== */
/* 玩家自己的第一張卡：不是黑卡，改成夜光紫 */
.t-obs .wcf{background:radial-gradient(120% 90% at 85% 0%,rgba(190,160,255,.32),transparent 55%),linear-gradient(135deg,#4a3a78 0%,#2a2050 55%,#140f2a 100%)}
/* 全島三張的黑卡 */
.ccard.blk{background:radial-gradient(120% 90% at 80% 0%,rgba(243,207,142,.28),transparent 55%),linear-gradient(135deg,var(--c1),var(--c2));box-shadow:0 10px 30px rgba(0,0,0,.55),inset 0 0 0 1px rgba(243,207,142,.45)}
.ccard .cblk{position:absolute;top:14px;right:16px;font-style:normal;font-size:9.5px;letter-spacing:.18em;padding:2px 7px;border-radius:8px;border:1px solid rgba(243,207,142,.6);color:#f3cf8e;background:rgba(0,0,0,.35)}
.ccard.blk em{top:auto;bottom:16px}
/* SSR 求婚 */
.ssrprop{position:relative;height:180px;border-radius:18px;overflow:hidden;margin:-4px 0 12px;box-shadow:inset 0 0 0 1px rgba(243,207,142,.55),0 10px 30px rgba(0,0,0,.4)}
.ssrprop>.pimg,.ssrprop>.av{position:absolute;inset:0;width:100%!important;height:100%!important;border-radius:0}
.ssrprop>.pimg img{width:100%;height:100%;object-fit:cover;object-position:center 18%}
.ssrprop:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 30%,rgba(20,10,4,.9))}
.ssrprop em,.ssrprop b,.ssrprop small{position:absolute;z-index:1;left:16px;font-style:normal}
.ssrprop em{top:12px;font:900 12px var(--sans);letter-spacing:.2em;padding:3px 9px;border-radius:10px;background:linear-gradient(135deg,#f3cf8e,#c08a3a);color:#2a1606}
.ssrprop b{bottom:34px;font:900 24px var(--serif);color:#fbe7c0;letter-spacing:.08em}
.ssrprop small{bottom:12px;right:16px;font-size:12.5px;color:rgba(255,236,200,.85)}
.ssrwed{position:absolute;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;background:#0c0705;animation:swIn .5s ease both}
.ssrwed.out{animation:swOut .3s ease both}
.ssrwed .swbg{position:absolute;inset:0;opacity:.45}.ssrwed .swbg img{width:100%;height:100%;object-fit:cover;filter:saturate(1.1)}
.ssrwed:before{content:"";position:absolute;inset:0;z-index:1;background:radial-gradient(80% 60% at 50% 45%,rgba(243,207,142,.28),transparent 70%),linear-gradient(180deg,rgba(12,7,5,.3),rgba(12,7,5,.92))}
.swin{position:relative;z-index:2;text-align:center;padding:0 28px;display:flex;flex-direction:column;align-items:center;gap:10px}
.swin em{font-style:normal;font:900 12px var(--sans);letter-spacing:.3em;color:#f3cf8e}
.swin .av{box-shadow:0 0 0 3px #f3cf8e,0 0 40px rgba(243,207,142,.6)}
.swin h2{margin:4px 0 0;font:900 30px var(--serif);color:#fbe7c0;letter-spacing:.1em}
.swin p{margin:0;font:500 16px/1.7 var(--serif);color:#fff}
.swin small{color:rgba(255,236,200,.75);font-size:12.5px}
.swin .btn{margin-top:10px;min-width:180px}
@keyframes swIn{from{opacity:0;transform:scale(1.04)}to{opacity:1;transform:none}}
@keyframes swOut{to{opacity:0}}
/* 溫泉 App */
.phero{position:relative;overflow:hidden;border-radius:20px;padding:16px 18px;margin-bottom:10px;background:linear-gradient(150deg,#1f6f86 0%,#173a6a 55%,#2a1640 100%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.phero small{display:block;font-size:11.5px;letter-spacing:.12em;color:rgba(220,250,255,.75)}
.phero b{display:block;font:800 40px/1.05 var(--sans);color:#fff;letter-spacing:-.02em}.phero b i{font-style:normal;font-size:16px;font-weight:600;opacity:.8;margin-left:2px}
.phero span{font-size:12.5px;color:rgba(220,250,255,.85)}
.phbub{position:absolute;right:16px;bottom:0;top:0;width:90px;pointer-events:none}
.phbub i{position:absolute;bottom:-14px;width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.35);animation:phb 4.5s linear infinite}
.phbub i:nth-child(1){left:8px;animation-delay:0s}.phbub i:nth-child(2){left:30px;width:6px;height:6px;animation-delay:1.1s}.phbub i:nth-child(3){left:52px;animation-delay:2.2s}.phbub i:nth-child(4){left:70px;width:7px;height:7px;animation-delay:3s}.phbub i:nth-child(5){left:42px;width:12px;height:12px;animation-delay:3.8s}
@keyframes phb{0%{transform:translateY(0);opacity:0}15%{opacity:.8}100%{transform:translateY(-140px);opacity:0}}
button.poolc{display:block;width:100%;padding:0;border:0;text-align:left;color:#fff;font:inherit;cursor:pointer;transition:transform .18s ease}
button.poolc:active{transform:scale(.985)}
.poolc.full{filter:grayscale(.35) brightness(.85)}
.pcgo{position:absolute;z-index:2;right:12px;bottom:12px;font-style:normal;font-size:11.5px;padding:4px 10px;border-radius:12px;background:rgba(255,255,255,.18);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.pcbot{padding-right:78px}
.pcav{display:inline-flex;margin-left:6px;vertical-align:middle;font-style:normal}.pcav .av{margin-left:-6px;box-shadow:0 0 0 2px rgba(10,4,14,.8)}
.psimg{position:relative;height:170px;border-radius:16px;overflow:hidden;margin:-2px 0 12px}
.psimg>.pimg{position:absolute;inset:0;height:100%}.psimg>.pimg img{width:100%;height:100%;object-fit:cover}
.psov{position:absolute;inset:0;display:flex;justify-content:space-between;align-items:flex-start;padding:10px 12px;background:linear-gradient(180deg,rgba(0,0,0,.25),transparent 45%)}
.psov b{font:800 30px/1 var(--sans);color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.5)}.psov b small{font-size:14px}
.pstat{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:6px 0 10px}
.pstat div{border-radius:12px;padding:8px 6px;text-align:center;background:rgba(138,243,228,.08);box-shadow:inset 0 0 0 1px rgba(138,243,228,.18)}
.pstat b{display:block;font-size:15px}.pstat b small{font-size:11px;opacity:.7}.pstat span{font-size:11px;color:var(--ink2,#bbb)}
.psnow{font-size:13px;color:#ffc6e2;padding:8px 10px;border-radius:12px;background:rgba(255,143,200,.08);margin-bottom:8px}
.pstip{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}.pstip span{font-size:11.5px;padding:3px 9px;border-radius:10px;background:rgba(255,255,255,.07)}
.psg{display:grid;gap:8px}
.psg button{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:14px;border:0;background:rgba(255,255,255,.06);color:inherit;font:inherit;text-align:left}
.psg button span{flex:1;display:flex;flex-direction:column}.psg button small{font-size:11px;opacity:.7}
.psg button em{font-style:normal;font-size:12px;padding:5px 11px;border-radius:12px;background:linear-gradient(135deg,#8af3e4,#ff8fc8);color:#1a0a1a;font-weight:700}

/* 20261108.3 音量滑桿（設定 → 音樂與音效） */
.setrow.volrow{padding:10px 14px;gap:12px}
.setrow.volrow>div{flex:0 0 48%;min-width:0}
.setrow.volrow input[type=range]{-webkit-appearance:none;appearance:none;flex:1;min-width:0;height:28px;background:transparent;margin:0}
.setrow.volrow input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:3px;background:linear-gradient(90deg,var(--rose2,#ff7aa2) var(--v),rgba(255,255,255,.12) var(--v))}
.setrow.volrow input[type=range]::-moz-range-track{height:6px;border-radius:3px;background:linear-gradient(90deg,var(--rose2,#ff7aa2) var(--v),rgba(255,255,255,.12) var(--v))}
.setrow.volrow input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;margin-top:-8px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#ffc7d6 60%,#e0507a);box-shadow:0 0 0 3px rgba(255,122,162,.22),0 3px 10px rgba(0,0,0,.45)}
.setrow.volrow input[type=range]::-moz-range-thumb{width:22px;height:22px;border:0;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#ffc7d6 60%,#e0507a)}
.setrow.volrow b{flex:0 0 30px;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink2);font-weight:600;font-size:13px}

/* 20261108.6 左上角：原設角色聊天 */
.phone.haspromo .sbar{padding-left:48px}
.promo{position:absolute;top:calc(4px + var(--sat));left:12px;z-index:46;width:30px;height:30px;border-radius:9px;padding:0;background:none;display:block;filter:drop-shadow(0 2px 6px rgba(0,0,0,.5))}
.promo img{width:30px;height:30px;border-radius:9px;display:block;box-shadow:0 0 0 1.5px rgba(241,198,116,.9) inset;outline:1.5px solid rgba(241,198,116,.85);outline-offset:-1px}
.promo i{position:absolute;inset:-3px;border-radius:12px;border:1.5px solid rgba(255,122,162,.8);animation:promoPulse 2.6s ease-out infinite;pointer-events:none}
.promo::after{content:'';position:absolute;top:-3px;right:-3px;width:9px;height:9px;border-radius:50%;background:#ff4f6e;box-shadow:0 0 0 2px #0d0a12}
.promo:active{transform:scale(.92)}
@keyframes promoPulse{0%{opacity:.9;transform:scale(1)}70%{opacity:0;transform:scale(1.35)}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.promo i{animation:none;opacity:.6}}
.pmhero{position:relative;margin:-4px -4px 12px;border-radius:16px;overflow:hidden;aspect-ratio:1200/630;background:#1a1420}
.pmhero img{width:100%;height:100%;object-fit:cover;display:block}
.pmhero::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(13,10,18,.85))}
.pmtag{position:absolute;left:12px;bottom:10px;z-index:1;font-size:12px;font-weight:700;letter-spacing:.08em;color:#f1c674;background:rgba(0,0,0,.45);padding:4px 10px;border-radius:20px;border:1px solid rgba(241,198,116,.5)}
.pmh{font:900 22px/1.35 var(--serif,serif);margin:4px 0 8px;letter-spacing:.02em}
.pmlead{font-size:14px;color:var(--ink2);margin:0 0 12px;line-height:1.6}
.pmchips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}
.pmchips span{font-size:12.5px;font-weight:700;color:#ffd0dc;background:rgba(255,79,135,.14);border:1px solid rgba(255,122,162,.35);padding:4px 11px;border-radius:20px}
.pmlist{display:grid;gap:8px;margin-bottom:14px}
.pmlist>div{background:var(--card);border-radius:12px;padding:10px 12px}
.pmlist b{display:block;font-size:14.5px;margin-bottom:2px}
.pmlist span{font-size:13px;color:var(--ink2);line-height:1.55}
.pmgo{display:flex;justify-content:center;text-decoration:none;width:100%}
.pmfine{text-align:center;font-size:11.5px;margin:8px 0 0}

/* 20261108.8 右上角：請作者喝咖啡（金色）＋一鍵靜音 */
.phone.hasrt .sbar{padding-right:86px}
.phone.hasrt .topbtns{right:84px}
.rtbtns{position:absolute;top:calc(5px + var(--sat));right:12px;z-index:46;display:flex;gap:6px}
.rtbtns button{width:30px;height:30px;border-radius:50%;padding:0;display:grid;place-items:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.rtbtns svg{width:16px;height:16px}
.rtcup{color:#3a2306;background:radial-gradient(circle at 35% 30%,#fff1c2,#f1c674 55%,#b8862f);box-shadow:0 0 0 1px rgba(255,236,180,.7) inset,0 2px 10px rgba(241,198,116,.45)}
.rtmute{color:#fff;background:rgba(0,0,0,.45)}
.rtmute.off{color:#ff8fa3}
.rtbtns button:active{transform:scale(.9)}
.tiph{text-align:center;padding:6px 4px 2px}
.tipcup{width:62px;height:62px;margin:2px auto 10px;border-radius:50%;display:grid;place-items:center;color:#3a2306;background:radial-gradient(circle at 35% 30%,#fff1c2,#f1c674 55%,#b8862f);box-shadow:0 6px 24px rgba(241,198,116,.4)}
.tipcup svg{width:30px;height:30px}
.tiph h3{font:900 21px/1.3 var(--serif,serif);margin:0 0 6px;color:#f6d892}
.tiph p{font-size:14px;color:var(--ink2);line-height:1.7;margin:0 0 10px}
.tiph .tipkao{display:block;font:600 15px/1.4 system-ui,sans-serif;color:#ffb3c8;margin-top:4px;letter-spacing:.02em}
.tiph .tipsoft{font-size:13px;color:var(--ink3,var(--ink2));opacity:.85;margin:4px 0 16px}
.tipgo{text-decoration:none;color:#3a2306;background:linear-gradient(135deg,#ffe7a8,#f1c674 50%,#c9952f);box-shadow:0 6px 20px rgba(241,198,116,.3)}

/* 20261108.8 情海校務通：課程目錄、考試卡、教授評分 */
.stnow.sn2{align-items:flex-start}
.stnow .snav{flex:none;border-radius:50%;box-shadow:0 0 0 2px #ffcf6e}
.stnow.sn2 p{margin:3px 0 4px;font-size:13px;line-height:1.5;color:var(--ink2)}
.stnow.sn2 em{font-size:13px;font-weight:700;align-self:center;white-space:nowrap}
.stnow small i,.cch em i{font-style:normal;opacity:.22;filter:grayscale(1)}
.schlist{display:grid;gap:8px;margin-bottom:8px}
.schc,.excard{position:relative;background:linear-gradient(120deg,hsla(var(--h,330),60%,45%,.16),rgba(255,255,255,.03));border-radius:14px;padding:11px 13px;border-left:3px solid hsla(var(--h,330),70%,62%,.85)}
.excard{--h:340;margin-bottom:10px;padding:13px 14px}
.excard.ban{opacity:.55}
.cch{display:flex;justify-content:space-between;align-items:center;gap:8px}
.cch b{font-size:15px}.cch em{font-style:normal;font-size:12px;letter-spacing:-1px;flex:none}
.schc p,.excard p{margin:4px 0 6px;font-size:13px;line-height:1.55;color:var(--ink2)}
.ccf{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--ink3)}
.ccf .av{flex:none}
.ccdone{margin-left:auto;color:#7fe0b0}
.exmeta{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.exmeta span{font-size:11px;padding:3px 8px;border-radius:10px;background:rgba(255,255,255,.06);color:var(--ink2)}
.excard .btn{min-height:42px}
.pfr{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:10px 0 4px}
.pfr span{background:rgba(255,255,255,.04);border-radius:10px;padding:6px 8px;text-align:center}
.pfr small{display:block;font-size:10.5px;color:var(--ink3)}
.pfr b{font-size:12px;color:#ff6f91;letter-spacing:1px}.pfr b i{font-style:normal;opacity:.2}

.rkgap{text-align:center;color:var(--ink3);letter-spacing:.3em;padding:4px 0}

.rklist .rkrow em{min-width:44px;width:auto;flex:none;font-size:13px;text-align:center;font-variant-numeric:tabular-nums}

/* 20261108.8 彩蛋 */
.eggh{text-align:center;margin-bottom:8px}.eggh i{font-style:normal;font-size:38px;display:block}
.eggh small{font-size:11.5px;color:var(--gold,#f1c674);letter-spacing:.1em}.eggh h3{font:900 21px/1.3 var(--serif,serif);margin:4px 0 0}
.eggb p{font-family:var(--serif,serif);font-size:15px;line-height:1.85;margin:0 0 8px;color:var(--ink)}
.stbar{cursor:pointer}

.btn.shareb{margin:10px 0 4px;background:linear-gradient(120deg,rgba(243,207,142,.22),rgba(255,79,135,.22));border:1px solid rgba(243,207,142,.45);color:#ffe7c0}

/* 20261108.8 靈動島：右上角多了咖啡和喇叭，5G／電量被推到中間會被靈動島擋住
   → 靈動島出現時把 5G／電量收起來；靈動島寬度也封頂，名字太長就省略 */
.phone:has(#island:not([hidden])) .sbar .r{visibility:hidden}
.island{max-width:min(190px,48%)}
.island small:first-of-type{max-width:5.5em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:340px){.island small{display:none}.island{min-width:0;padding:0 10px 0 5px}}

/* =====================================================================
   20261108.11　開場封面：碧海島嶼（cover.webp）＋年齡確認重做
   ===================================================================== */
/* 桌機背景：用新封面，不要糊成一片黑 */
.bghero img{filter:blur(22px) brightness(.42) saturate(1.25)}
.bghero:after{content:"";position:absolute;inset:0;background:radial-gradient(80% 70% at 50% 40%,transparent 30%,rgba(5,6,12,.75) 100%)}

/* ---------- 年齡確認 ---------- */
.agegate{background:#05070d;backdrop-filter:none;padding:0;display:block;overflow:hidden;animation:agein .5s ease both}
.agegate.out{animation:ageout .42s ease forwards;pointer-events:none}
@keyframes agein{from{opacity:0}to{opacity:1}}
@keyframes ageout{to{opacity:0;transform:scale(1.03)}}
.agebg{position:absolute;inset:0}
.agebg img{width:100%;height:100%;object-fit:cover;object-position:50% 46%}
.ageshade{position:absolute;inset:0;background:
  linear-gradient(180deg,rgba(4,8,16,.55) 0%,rgba(4,8,16,0) 24%,rgba(4,8,16,0) 38%,rgba(6,7,14,.7) 60%,rgba(6,6,12,.96) 82%,#06060c 100%)}
.agewrap{position:relative;z-index:1;height:100%;overflow-y:auto;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:calc(28px + var(--sat)) 18px calc(18px + var(--sab))}
.agelogo{text-align:center;margin:0 0 auto;padding-top:4vh;animation:up .7s .1s both}
.agelogo .tag{font-size:12px;letter-spacing:.42em;color:#fff;text-shadow:0 1px 10px rgba(0,30,50,.8)}
.agelogo b{display:block;font:900 clamp(48px,15vw,72px)/1.1 var(--serif);letter-spacing:.2em;margin:6px 0 0 .2em;color:#fff;
  text-shadow:0 2px 0 rgba(160,40,90,.35),0 6px 30px rgba(0,25,45,.75),0 0 60px rgba(255,120,170,.35)}
.agelogo .en{font-size:10.5px;letter-spacing:.6em;color:#fff3d8;margin-top:2px;text-shadow:0 1px 8px rgba(0,30,50,.9)}
.agebox{position:relative;max-width:400px;width:100%;margin-top:24px;padding:22px 20px 18px;border-radius:24px;
  background:linear-gradient(165deg,rgba(28,22,36,.78),rgba(10,9,16,.86));backdrop-filter:blur(18px) saturate(1.3);-webkit-backdrop-filter:blur(18px) saturate(1.3);
  box-shadow:inset 0 0 0 1px rgba(243,207,142,.28),0 24px 60px rgba(0,0,0,.55);animation:up .7s .25s both}
.agebox:before{content:"";position:absolute;left:24px;right:24px;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(243,207,142,.8),transparent)}
.agehead{display:flex;align-items:center;gap:14px;margin-bottom:10px}
.agehead h2{text-align:left;font-size:20px}
.agehead .sub{text-align:left;margin:2px 0 0;letter-spacing:.14em}
.agemark{width:54px;height:54px;flex:none;margin:0;border:0;color:#fff;font:900 21px/1 var(--sans);letter-spacing:-.02em;
  background:radial-gradient(circle at 35% 30%,#ff7aa5,var(--rose) 45%,#9c1f4d);box-shadow:0 6px 20px rgba(255,79,135,.45),inset 0 0 0 2px rgba(255,255,255,.25)}
.agemark small{font-size:13px;margin-left:1px;transform:translateY(-5px)}
.ageleave .agemark{margin:0 auto 12px}
.agebox p{font-size:13px;line-height:1.75}
.agebox p b{color:var(--rose2)}
.agebox .btn{margin-top:10px}
.agebox .ageyes{position:relative;overflow:hidden;min-height:52px;font-size:16px;letter-spacing:.08em;margin-top:14px;box-shadow:0 10px 30px rgba(243,180,100,.3),inset 0 0 0 1px rgba(255,255,255,.35)}
.agebox .ageyes:after{content:"";position:absolute;top:0;bottom:0;width:40%;left:-60%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.6),transparent);animation:sheen 3.2s 1s infinite}
.agebox #age-no{min-height:42px;font-weight:500;color:var(--ink2);font-size:13.5px}
@media (min-width:700px){
  .agewrap{justify-content:center}
  .agelogo{margin:0 0 6px;padding-top:0}
  .ageshade{background:radial-gradient(70% 80% at 50% 55%,rgba(6,6,12,.55),rgba(4,6,12,.2) 70%),linear-gradient(180deg,rgba(4,8,16,.35),rgba(4,8,16,.1) 40%,rgba(6,6,12,.6))}
}

/* ---------- 開始畫面 ---------- */
.title2.t3{background:#06070d}
.t3 .t2bg{bottom:auto;height:max(56%,calc(100cqw * 1.3333));max-height:72%}
.t3 .t2bg img{object-position:50% 62%}
.title2.t3{container-type:size}
.t3 .t2shade{background:
  linear-gradient(180deg,rgba(4,8,16,.5) 0%,rgba(4,8,16,0) 13%),
  linear-gradient(180deg,transparent 0%,transparent 34%,rgba(6,7,13,.35) 44%,rgba(6,7,13,.82) 56%,#06070d 70%,#06070d 100%)}
/* 海面反光：很慢的一道光，畫面本身不動 */
.t3glint{position:absolute;left:0;right:0;top:0;height:60%;pointer-events:none;mix-blend-mode:soft-light;
  background:linear-gradient(115deg,transparent 35%,rgba(255,250,230,.55) 48%,transparent 60%);background-size:260% 100%;animation:glint 9s ease-in-out infinite}
@keyframes glint{0%{background-position:120% 0}55%,100%{background-position:-60% 0}}
.t3 .t2spark i{background:radial-gradient(circle,#fff,rgba(255,170,200,.55) 40%,transparent 70%)}
.t3badge{position:absolute;z-index:3;top:calc(56px + var(--sat));left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;white-space:nowrap;
  padding:5px 12px 5px 5px;border-radius:99px;font-size:11.5px;letter-spacing:.12em;color:#fff;
  background:rgba(6,14,24,.38);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.22);animation:up .6s .2s both}
.t3badge span{padding:2px 7px;border-radius:99px;background:var(--rose);font:800 11px/1.3 var(--sans);letter-spacing:0}
.t3 .t2main{padding-bottom:calc(16px + var(--sab))}
.t3 .t2logo .tag{color:#ffc4d8;text-shadow:0 1px 10px rgba(0,0,0,.6)}
.t3 .t2logo h1 span{background:linear-gradient(175deg,#fff 20%,#ffd3e2 58%,#f3cf8e 96%);-webkit-background-clip:text;background-clip:text;
  filter:drop-shadow(0 4px 18px rgba(0,0,0,.55)) drop-shadow(0 0 28px rgba(255,79,135,.35))}
@keyframes inkin3{from{opacity:0;transform:translateY(14px) scale(1.08);filter:blur(10px)}to{opacity:1;transform:none;filter:drop-shadow(0 4px 18px rgba(0,0,0,.55)) drop-shadow(0 0 28px rgba(255,79,135,.35))}}
.t3 .t2logo h1 span{animation-name:inkin3}
.t3 .t2pitch{color:#dcd3dc;margin:12px 0}
.t3 .t2cast{margin-bottom:14px}
.t3 .cstack i{box-shadow:0 0 0 2px #0b0d16,0 4px 10px rgba(0,0,0,.5)}
.t3 .btn.glow{min-height:56px;border-radius:16px;background:linear-gradient(120deg,#ff6a9a,var(--rose) 40%,#c2306a);
  box-shadow:0 12px 34px rgba(255,79,135,.45),0 0 0 1px rgba(255,255,255,.18) inset,0 -3px 0 rgba(0,0,0,.18) inset}
.t3 .btn.glow .t3bt{position:relative;z-index:1}
.t3 .t3arr{position:absolute;right:20px;top:50%;transform:translateY(-52%);font:400 24px/1 var(--sans);font-style:normal;opacity:.85;animation:nudge 1.8s ease-in-out infinite}
@keyframes nudge{0%,100%{transform:translate(0,-52%)}50%{transform:translate(4px,-52%)}}
.t3 .t3ghost{background:rgba(255,255,255,.06);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)}
.t3 .t2feat{margin:14px 0 2px;padding:10px 4px;border-radius:16px;background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px rgba(255,255,255,.07)}
.t3 .t2feat b{font-size:19px}
.t3 .t2links{margin-top:8px}
@media (max-height:700px){
  .t3 .t2pitch{font-size:13.5px;line-height:1.7;margin:8px 0}
  .t3 .t2feat{display:none}
  .t3badge{display:none}
  .t3 .t2logo h1{font-size:50px}
}
/* 20261108.11 微調 */
.t3badge{left:0;right:0;width:max-content;margin:0 auto;transform:none}
.agemark{display:flex;align-items:center;justify-content:center}
.agemark small{transform:translateY(-6px)}
.ageposter{display:none}
.agecol{display:contents}
.ageshade{background:
  radial-gradient(90% 26% at 50% 13%,rgba(4,10,22,.5),transparent 75%),
  linear-gradient(180deg,rgba(4,8,16,.55) 0%,rgba(4,8,16,.08) 26%,rgba(4,8,16,0) 38%,rgba(6,7,14,.7) 60%,rgba(6,6,12,.96) 82%,#06060c 100%)}
.t3 .t2shade{background:
  linear-gradient(180deg,rgba(4,8,16,.5) 0%,rgba(4,8,16,0) 13%),
  linear-gradient(180deg,transparent 0%,transparent 32%,rgba(6,7,13,.45) 42%,rgba(6,7,13,.86) 55%,#06070d 68%,#06070d 100%)}
@media (min-width:700px){
  .agebg img{filter:blur(26px) brightness(.5) saturate(1.2);transform:scale(1.1)}
  .ageshade{background:radial-gradient(80% 80% at 50% 50%,transparent 30%,rgba(4,6,12,.7))}
  .agewrap{flex-direction:row;align-items:center;justify-content:center;gap:44px;padding:32px}
  .ageposter{display:block;flex:none;height:min(86vh,760px);aspect-ratio:3/4;border-radius:28px;overflow:hidden;
    box-shadow:0 30px 80px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.12);animation:up .8s .05s both}
  .ageposter img{width:100%;height:100%;object-fit:cover}
  .agecol{display:flex;flex-direction:column;align-items:center;width:400px;flex:none}
  .agelogo{margin:0 0 4px}
  .agebox{margin-top:18px}
}
@media (min-width:700px) and (max-width:980px){.ageposter{display:none}}
/* 20261108.11：年齡確認一律滿版（電腦也是整張圖鋪滿，不用海報框） */
@media (min-width:700px){
  .ageposter,.agewrap .ageposter{display:none!important}
  .agebg img{filter:none;transform:none;object-position:50% 50%}
  .ageshade{background:
    radial-gradient(42% 70% at 50% 52%,rgba(5,6,12,.62),rgba(5,6,12,.15) 70%,transparent),
    linear-gradient(180deg,rgba(4,8,16,.45),rgba(4,8,16,0) 30%,rgba(4,8,16,0) 70%,rgba(4,8,16,.55))}
  .agewrap{flex-direction:column;gap:0}
  .agecol{width:420px}
}
.t3 .t2pitch{font-size:clamp(12.5px,3.6vw,14.5px);letter-spacing:.01em}

/* ===== 20261108.11 宣傳優化：標題畫面兩張卡、左上提示、聊天預覽、贊助用途 ===== */
.t3promo{display:grid;gap:8px;margin:14px 0 6px;opacity:0;animation:up .6s .8s forwards}
.ipc-card{position:relative;display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:16px;text-decoration:none;color:var(--ink,#fff);overflow:hidden;text-align:left;-webkit-tap-highlight-color:transparent;transition:transform .15s}
.ipc-card:active{transform:scale(.97)}
.ipc-card::before{content:'';position:absolute;inset:0;border-radius:inherit;padding:1px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.ipc-card::after{content:'';position:absolute;top:0;bottom:0;width:40%;left:-60%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.16),transparent);transform:skewX(-18deg);animation:pcShine 4.8s ease-in-out infinite;pointer-events:none}
.ipc-tip::after{animation-delay:2.4s}
@keyframes pcShine{0%,70%{left:-60%}100%{left:130%}}
.ipc-chat{background:linear-gradient(120deg,rgba(255,79,135,.26),rgba(120,40,140,.22));box-shadow:0 8px 26px rgba(255,79,135,.22)}
.ipc-chat::before{background:linear-gradient(120deg,#ff8fb1,#b46cff)}
.ipc-tip{background:linear-gradient(120deg,rgba(243,207,142,.18),rgba(180,120,50,.14));box-shadow:0 6px 20px rgba(241,198,116,.14)}
.ipc-tip::before{background:linear-gradient(120deg,#ffe7a8,#b48a4a)}
.ipc-av{position:relative;display:flex;flex:none;padding-bottom:4px}
.ipc-av i{width:30px;height:30px;border-radius:50%;overflow:hidden;border:2px solid #1a0f1c;margin-left:-9px;display:block}
.ipc-av i:first-child{margin-left:0}
.ipc-av img{width:100%;height:100%;object-fit:cover;display:block}
.ipc-live{position:absolute;left:50%;bottom:-6px;transform:translateX(-50%);font:700 9.5px/1 var(--sans);font-style:normal;color:#fff;background:#1d1220;border:1px solid rgba(80,220,140,.6);border-radius:9px;padding:2px 6px 2px 5px;white-space:nowrap;display:flex;align-items:center;gap:3px}
.ipc-live s,.pmon s,.promotip s{width:6px;height:6px;border-radius:50%;background:#45e08a;box-shadow:0 0 0 0 rgba(69,224,138,.7);animation:liveDot 1.8s infinite;display:inline-block;text-decoration:none}
@keyframes liveDot{0%{box-shadow:0 0 0 0 rgba(69,224,138,.7)}70%{box-shadow:0 0 0 6px rgba(69,224,138,0)}100%{box-shadow:0 0 0 0 rgba(69,224,138,0)}}
.ipc-cup{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;color:#3a2306;background:radial-gradient(circle at 35% 30%,#fff1c2,#f1c674 55%,#b8862f);animation:cupBob 3.2s ease-in-out infinite}
.ipc-cup svg{width:20px;height:20px}
@keyframes cupBob{0%,100%{transform:rotate(0)}8%{transform:rotate(-10deg)}16%{transform:rotate(8deg)}24%{transform:rotate(0)}}
.ipc-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ipc-tx b{font:800 14.5px/1.3 var(--sans);letter-spacing:.02em}
.ipc-tx span{font-size:11.5px;color:var(--ink2);line-height:1.4}
.ipc-go{flex:none;font:800 12.5px/1 var(--sans);font-style:normal;padding:8px 11px;border-radius:20px;white-space:nowrap}
.ipc-go i{font-style:normal;margin-left:3px}
.ipc-chat .ipc-go{color:#fff;background:linear-gradient(135deg,#ff6b9a,#c1307a);box-shadow:0 3px 12px rgba(255,79,135,.45)}
.ipc-tip .ipc-go{color:#3a2306;background:linear-gradient(135deg,#ffe7a8,#f1c674 55%,#c9952f)}
.promotip{position:absolute;top:calc(40px + var(--sat));left:10px;z-index:47;display:flex;align-items:center;gap:6px;font:700 12px/1 var(--sans);color:#fff;background:linear-gradient(135deg,#ff5f93,#a8327f);padding:8px 12px 8px 10px;border-radius:12px;box-shadow:0 6px 18px rgba(0,0,0,.4);opacity:0;transform:translateY(-6px) scale(.96);pointer-events:none;transition:opacity .35s,transform .35s}
.promotip::before{content:'';position:absolute;top:-5px;left:13px;width:10px;height:10px;background:#ff5f93;transform:rotate(45deg);border-radius:2px}
.promotip.on{opacity:1;transform:none;pointer-events:auto;animation:tipFloat 2.4s ease-in-out .4s infinite}
@keyframes tipFloat{50%{transform:translateY(2px)}}
.rtcup{animation:cupBob 6s ease-in-out 3s infinite}
.pmon{position:absolute;right:10px;top:10px;display:flex;align-items:center;gap:5px;font:700 11px/1 var(--sans);color:#fff;background:rgba(13,10,18,.7);border:1px solid rgba(80,220,140,.5);padding:5px 9px;border-radius:12px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.pmchat{display:grid;gap:8px;margin:2px 0 14px}
.pmrow{display:flex;gap:9px;align-items:flex-end;opacity:0;animation:up .45s forwards}
.pmrow:nth-child(1){animation-delay:.15s}.pmrow:nth-child(2){animation-delay:.75s}.pmrow:nth-child(3){animation-delay:1.35s}
.pmrow>img{width:34px;height:34px;border-radius:50%;object-fit:cover;flex:none}
.pmrow>div{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.08);border-radius:14px 14px 14px 4px;padding:7px 11px;max-width:82%}
.pmrow small{display:flex;gap:6px;font-size:11px;font-weight:700;color:#ffb3c8;margin-bottom:2px}
.pmrow small em{font-style:normal;font-weight:400;color:var(--ink3,var(--ink2));opacity:.8}
.pmrow p{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink,#fff)}
.pmrow.pmtyping p{display:flex;gap:4px;padding:5px 0}
.pmrow.pmtyping p i{width:6px;height:6px;border-radius:50%;background:#ffb3c8;animation:typeDot 1.2s infinite}
.pmrow.pmtyping p i:nth-child(2){animation-delay:.2s}.pmrow.pmtyping p i:nth-child(3){animation-delay:.4s}
@keyframes typeDot{0%,60%,100%{opacity:.25;transform:none}30%{opacity:1;transform:translateY(-3px)}}
.pmgo i,.tipgo i{font-style:normal;margin-left:6px}
.pmgo{animation:goPulse 2.4s ease-in-out infinite}
@keyframes goPulse{50%{box-shadow:0 0 0 6px rgba(255,79,135,.18),0 8px 24px rgba(255,79,135,.35)}}
.tipuse{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:4px 0 12px}
.tipuse div{background:rgba(243,207,142,.08);border:1px solid rgba(243,207,142,.22);border-radius:12px;padding:8px 2px}
.tipuse b{display:block;font-size:18px;line-height:1.2}
.tipuse span{font-size:11px;color:var(--ink2)}
@media (prefers-reduced-motion:reduce){.ipc-card::after,.ipc-cup,.rtcup,.promotip.on,.pmgo,.ipc-live s,.pmon s,.promotip s{animation:none}}
.ipc-av .pimg,.pmav .pimg{position:relative;width:100%;height:100%;aspect-ratio:auto;padding:0;margin:0;border-radius:inherit;overflow:hidden}
.ipc-av .pimg img,.pmav .pimg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pmav{flex:none;display:block;width:34px;height:34px;border-radius:50%;overflow:hidden}

/* 20261108.11b 兩個小圖示點進去的頁面 */
.pmapp{display:flex;align-items:center;gap:10px;margin:2px 0 12px}
.pmapp img{width:42px;height:42px;border-radius:11px;box-shadow:0 0 0 1.5px rgba(241,198,116,.8),0 4px 14px rgba(255,79,135,.35)}
.pmapp b{display:block;font:800 15px/1.3 var(--sans)}
.pmapp small{display:flex;align-items:center;gap:5px;font-size:12px;color:#8fe8b4}
.pmapp small s{width:6px;height:6px;border-radius:50%;background:#45e08a;animation:liveDot 1.8s infinite;display:inline-block}
.pmcast{display:flex;justify-content:space-between;gap:4px;margin:0 0 14px;padding:10px 6px;border-radius:14px;background:rgba(255,255,255,.04)}
.pmcast span{display:flex;flex-direction:column;align-items:center;gap:4px;flex:1}
.pmcast .pmav{width:40px;height:40px;box-shadow:0 0 0 1.5px rgba(255,143,177,.6)}
.pmcast b{font-size:11px;font-weight:700;color:var(--ink2)}
.pmfeat{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 12px}
.pmfeat div{padding:10px 11px;border-radius:14px;background:linear-gradient(140deg,rgba(255,79,135,.14),rgba(140,60,160,.1));border:1px solid rgba(255,122,162,.22)}
.pmfeat b{font-size:17px;line-height:1}
.pmfeat strong{display:block;font:800 14px/1.3 var(--sans);margin:5px 0 2px;color:#ffd0dc}
.pmfeat span{font-size:11.5px;line-height:1.45;color:var(--ink2)}
.pmlater{display:block;width:100%;margin:8px 0 0;padding:10px;background:none;border:0;color:var(--ink2);font-size:13.5px;opacity:.8}
.tipme{position:relative;width:76px;height:76px;margin:0 auto 10px}
.tipav{display:block;width:76px;height:76px;border-radius:50%;overflow:hidden;box-shadow:0 0 0 2.5px #f1c674,0 6px 20px rgba(241,198,116,.35)}
.tipav .pimg{position:relative;width:100%;height:100%;aspect-ratio:auto;padding:0;margin:0}
.tipav .pimg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tipcup2{position:absolute;right:-6px;bottom:-4px;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;color:#3a2306;background:radial-gradient(circle at 35% 30%,#fff1c2,#f1c674 55%,#b8862f);box-shadow:0 0 0 2.5px var(--bg,#0d0a12);animation:cupBob 4s ease-in-out infinite}
.tipcup2 svg{width:16px;height:16px}
.tipsign{text-align:right!important;font-family:var(--serif);color:#ffb3c8!important;margin:-4px 6px 14px!important}
@media (prefers-reduced-motion:reduce){.tipcup2,.pmapp small s{animation:none}}

/* 20261108.11 主畫面修正：男性向／BL 攻沒有「掠奪配對」時，重口味專區三個圖示平均排開；行動卡標題換行不要只剩一個字 */
.hotapps.n3{grid-template-columns:repeat(3,1fr)}
.hk-in .ct{min-width:0}
.hk-in .ct b{text-wrap:balance}
/* 20261108.11 修正：底下 Dock 隱藏文字標籤時，連紅點（未讀數）也一起被藏掉了；紅點要留著 */
.dock .app .ic .dot{display:inline-block}

/* 20261108.12 作者模式：R18 劇情包 */
.ar.apk-open{width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer}
.apk-stat{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:10px 0}
.apk-stat div{background:rgba(255,255,255,.05);border-radius:12px;padding:8px 4px;text-align:center}
.apk-stat b{display:block;font-size:18px;color:var(--gold)}.apk-stat span{font-size:11px;color:var(--ink3)}
.apk-q{display:block;width:100%;box-sizing:border-box;margin:4px 0 8px}
.auth.apk .apk-q{width:100%;height:44px;padding:0 14px;border-radius:12px;font-size:15px;text-align:left}  /* 蓋掉 .auth input 的 70px 小框 */
.apk-wbtn{display:inline;padding:0;background:none;border:0;font:inherit;color:var(--rose2);font-weight:700;text-decoration:underline;cursor:pointer}
.apk-chips{margin:0 0 6px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.apk-chips::-webkit-scrollbar{display:none}
.apk-chips .tagbtn{flex:none}
.apk-list{display:flex;flex-direction:column;gap:6px}
.apk-row{display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;text-align:left;padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.05);color:inherit;font:inherit;cursor:pointer}
.apk-row>div{min-width:0}
.apk-row b{display:block;font-size:13.5px;word-break:break-all}.apk-row b em{font-style:normal;color:var(--rose2);font-weight:500}
.apk-row small{display:block;font-size:11.5px;color:var(--ink3);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.apk-row>span{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:3px}
.apk-row i{font-style:normal;font-size:10.5px;padding:1px 7px;border-radius:8px;background:rgba(255,255,255,.08)}
.apk-row i.apk-new{background:rgba(69,224,138,.18);color:#7ff0b0}.apk-row i.apk-upd{background:rgba(241,198,116,.18);color:var(--gold)}
.apk-row i.apk-warn{background:rgba(255,90,110,.2);color:#ff8a9a}
.apk-row i.apk-fix{background:rgba(120,170,255,.18);color:#9cc0ff}
.apk-fixnote{color:#9cc0ff;background:rgba(120,170,255,.08);border-radius:10px;padding:8px 10px}
.apk .apk-stat{grid-template-columns:repeat(5,1fr)}
.apk-row u{text-decoration:none;font-size:10.5px;color:var(--ink3)}
.apk-row.seen{opacity:.6}.apk-row.seen b{color:#7ff0b0}
.apk-chat{display:flex;flex-direction:column;gap:6px;max-height:58vh;overflow:auto;padding:4px 2px}
.apk-b{align-self:flex-start;max-width:82%;padding:8px 12px;border-radius:16px 16px 16px 4px;background:rgba(255,255,255,.09);font-size:14px;line-height:1.6;white-space:pre-wrap}
.apk-b.me{align-self:flex-end;border-radius:16px 16px 4px 16px;background:linear-gradient(135deg,#ff6b9a,#c23d7a);color:#fff}
.apk-b.sys{align-self:center;background:none;color:var(--ink3);font-size:12.5px;padding:2px 8px}
.apk-opts{display:flex;flex-direction:column;gap:6px;margin:4px 0}
.apk-opt{border:1px dashed rgba(255,143,177,.4);border-radius:14px;padding:8px;display:flex;flex-direction:column;gap:6px}
.apk-ot{font-size:12px;font-weight:700;color:var(--rose2)}
.apk-raw{white-space:pre-wrap;font:13.5px/1.7 var(--sans);max-height:58vh;overflow:auto;margin:0}

/* 20261108.13 法規：分級情節標示（遊戲軟體分級管理辦法第12條） */
.agerate{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:4px 0 12px;font-size:12.5px}
.agerate span{color:var(--ink3);letter-spacing:.12em;margin-right:2px}
.agerate b{font-weight:700;color:#fff;padding:3px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.08)}
.agemark{min-width:54px;min-height:54px}

/* ===== 20261108.23 秘密 App（攻略教學版） ===== */
.secretv{--sp:#c9a6ff}
.secv{display:flex;flex-direction:column;gap:10px}
.sec-tabs{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding:2px 0 4px;margin:0 -2px}
.sec-tabs::-webkit-scrollbar{display:none}
.sec-tabs button{flex:0 0 auto;padding:8px 14px;border-radius:999px;background:rgba(255,255,255,.06);color:var(--ink2);font-size:13.5px;box-shadow:inset 0 0 0 1px rgba(201,166,255,.25)}
.sec-tabs button.on{background:linear-gradient(135deg,#c9a6ff,#7b4fd6);color:#160b26;font-weight:700;box-shadow:none}
.sec-lead{font-size:13px;line-height:1.65;margin:0 0 6px}
.sec-foot{text-align:center;font-size:11.5px;margin-top:10px}
.sec-card{display:flex;gap:12px;padding:12px 13px;border-radius:16px;background:rgba(255,255,255,.05);box-shadow:inset 0 0 0 1px rgba(255,255,255,.07);margin-bottom:8px}
.sec-card.got{box-shadow:inset 0 0 0 1px rgba(201,166,255,.45);background:rgba(201,166,255,.07)}
.sec-no{flex:0 0 30px;height:30px;border-radius:50%;display:grid;place-items:center;background:rgba(201,166,255,.14);color:var(--sp);font-weight:700;font-size:13px;font-family:var(--serif)}
.sec-av{flex:0 0 54px}.sec-av img,.sec-av .av{width:54px;height:54px;border-radius:50%}
.sec-ct{flex:1;min-width:0}
.sec-ct b{display:block;font-size:15px;font-family:var(--serif);letter-spacing:.04em}
.sec-ct b small{display:block;font-weight:400;font-family:var(--sans);font-size:11.5px;color:var(--ink2);letter-spacing:0;margin-top:1px}
.sec-line{margin:6px 0 2px;font-size:12.5px;color:#e9d6ff;font-family:var(--serif)}
.sec-how{margin:5px 0 0;font-size:13px;line-height:1.6}
.sec-how.dim{color:var(--ink2);font-size:12.5px}
.sec-chk{display:inline-block;margin-top:7px;font-size:11px;font-style:normal;padding:2px 9px;border-radius:999px;background:rgba(255,255,255,.07);color:var(--ink2)}
.sec-chk.on{background:rgba(201,166,255,.2);color:#e9d6ff}
.sec-sec{display:flex;align-items:center;gap:10px;margin:12px 0 8px;font-size:12px;letter-spacing:.2em;color:var(--sp)}
.sec-sec i{flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(201,166,255,.4),transparent)}
.sec-list{display:flex;flex-direction:column;gap:6px}
.sec-row{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;align-items:start;padding:10px 12px;border-radius:14px;background:rgba(255,255,255,.045);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.sec-row.got{box-shadow:inset 0 0 0 1px rgba(201,166,255,.4)}
.sec-row>i{grid-row:span 3;font-style:normal;font-size:20px;width:28px;text-align:center;margin-top:2px}
.sec-row>b{font-size:14px;display:block}
.sec-row>b small{display:block;font-weight:400;font-size:11.5px;color:var(--ink2);margin-top:1px}
.sec-row>span{font-size:12.5px;line-height:1.55;color:var(--ink)}
.sec-row .sec-chk{margin-top:3px;justify-self:start}
.sec-tip{padding:12px 13px;border-radius:16px;background:rgba(255,255,255,.05);box-shadow:inset 0 0 0 1px rgba(255,255,255,.07);margin-bottom:8px}
.sec-tip b{display:block;font-family:var(--serif);font-size:15px;color:#e9d6ff;margin-bottom:4px}
.sec-tip p{margin:0;font-size:13px;line-height:1.65}
.secv.seclk{min-height:60vh;display:grid;place-items:center}
.sec-lock{text-align:center;max-width:300px}
.sec-lock>i{font-style:normal;font-size:46px;display:block;margin-bottom:8px}
.sec-lock h3{margin:0 0 4px;font-family:var(--serif)}
.sec-lock p{margin:0 0 16px;color:var(--ink2);font-size:13px}
.sec-code{position:relative;display:flex;justify-content:center;gap:9px;margin:0 auto 14px;cursor:text}
.sec-code i{width:36px;height:46px;border-radius:11px;background:rgba(255,255,255,.07);box-shadow:inset 0 0 0 1px rgba(201,166,255,.35);display:grid;place-items:center;font-style:normal;font-size:16px;color:#e9d6ff}
.sec-code i.on{box-shadow:inset 0 0 0 1.5px #c9a6ff}
.sec-code input{position:absolute;inset:0;z-index:2;opacity:0;width:100%;height:100%;font-size:16px;border:0;background:transparent;color:transparent;caret-color:transparent;-webkit-user-select:text;user-select:text}
.sec-code.bad{animation:secshake .4s}
@keyframes secshake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}

/* 20261108.25 iPhone（Safari／LINE 內建瀏覽器）：頁面高度一定鎖在畫面內，不可以被內容撐高（撐高就會鑽到 Dock 底下） */
.home .pager>.pg{height:100%;max-height:100%;min-height:0;box-sizing:border-box}

/* ===== 20261108.26 上線前驗收修正 ===== */
/* 鎖定畫面／開場鎖定畫面：通知蓋到時鐘時，時鐘縮小（js 的 lockFit） */
.lock .lk.lkfit{padding-top:calc(50px + var(--sat))}
.lock .lk.lkfit .t{font-size:60px}
.lock .lk.lkfit .patl{margin-bottom:6px}
.pltime.lkfit{padding-top:calc(50px + var(--sat))}
.pltime.lkfit .t{font-size:60px}
/* VIP 開始畫面：皇冠徽章壓到上面那行時收掉那行（js 的 titleFit） */
.ptitle.ptfit .pt-top{display:none}
.ptitle.ptfit2 .pt-crest{display:none}
/* 主畫面只能左右滑；整個網頁不可以被拖動或回彈 */
html,body{overscroll-behavior:none}
.home.v2,.home .pager{touch-action:pan-x}
/* 每一頁用 overflow:clip（不是捲動容器）：原本 overflow:hidden＋overscroll-behavior:none 會把手指的左右滑吃掉，Android／新版 iPhone 只能點頁點換頁 */
.home.v2 .pg,.home.v2 .pg1,.home.v2 .pg2,.home.v2 .pg3{overflow:hidden;overflow:clip;overscroll-behavior:auto}
/* 短句不要只剩一兩個字掉到下一行 */
.agebox .fine,.pln .nt span{text-wrap:balance}
/* 愛幣錢包的卡片：不靠 backface-visibility（有些 WebKit 會把背面反著畫在正面上），翻到一半才切換正反面 */
.wc3 .wback{visibility:hidden;transition:visibility 0s .3s}
.wc3 .wfront{visibility:visible;transition:visibility 0s .3s}
.wc3.flip .wback{visibility:visible}
.wc3.flip .wfront{visibility:hidden}
.hfb{opacity:0}
.hflip.go .hfb{animation:hfbx 1.1s both}
.hflip.go .hfi>.hcard{animation:hffx 1.1s both}
@keyframes hfbx{0%,27%{opacity:1}28%,100%{opacity:0}}
@keyframes hffx{0%,27%{opacity:0}28%,100%{opacity:1}}
/* 年齡確認頁：內容比畫面高時，原本 flex-end 會把上面的標誌切掉、而且捲不上去 → 改從上往下排（標誌的 margin-bottom:auto 照樣把確認框推到底） */
.agewrap{justify-content:flex-start}
@media (max-height:600px){.agewrap{padding-top:calc(16px + var(--sat));padding-bottom:calc(10px + var(--sab))}.agelogo{padding-top:0}.agelogo b{font-size:40px}.agelogo .en{display:none}.agebox{margin-top:10px;padding:16px 16px 12px}.agebox p{margin:5px 0;line-height:1.6}.agebox .ageyes{min-height:46px;margin-top:10px}.agebox #age-no{min-height:38px;margin-top:8px}.agebox .fine{margin-top:8px}.agehead{margin-bottom:4px}}
@media (max-height:500px){.agelogo{display:none}}
/* ===== 20261108.26 秘密攻略：介面整理 ===== */
.secretv .vbody{padding-top:0}
.sx-hero{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin:2px 0 2px}
.sx-st{position:relative;overflow:hidden;padding:9px 2px 10px;border-radius:14px;background:linear-gradient(160deg,rgba(201,166,255,.12),rgba(255,255,255,.03));box-shadow:inset 0 0 0 1px rgba(201,166,255,.22);text-align:center;color:var(--ink)}
.sx-st.on{box-shadow:inset 0 0 0 1px rgba(201,166,255,.75);background:linear-gradient(160deg,rgba(201,166,255,.26),rgba(123,79,214,.12))}
.sx-st b{display:block;font:700 17px/1.15 var(--serif);color:#f1e6ff;white-space:nowrap}
.sx-st b small{font:500 10.5px var(--sans);color:var(--ink3);margin-left:1px}
.sx-st span{display:block;font-size:10.5px;color:var(--ink2);margin-top:2px;white-space:nowrap}
.sx-st i{position:absolute;left:8px;right:8px;bottom:5px;height:2px;border-radius:2px;background:rgba(255,255,255,.08)}
.sx-st i:after{content:"";position:absolute;left:0;top:0;bottom:0;width:var(--p);border-radius:2px;background:linear-gradient(90deg,#c9a6ff,#8f5cf0)}
.secretv .sec-tabs{position:sticky;top:0;z-index:2;margin:0 -16px;padding:8px 16px 8px;background:linear-gradient(var(--phone) 78%,transparent)}
.sx-note{display:flex;flex-direction:column;gap:3px;padding:11px 13px;border-radius:14px;background:rgba(201,166,255,.1);box-shadow:inset 0 0 0 1px rgba(201,166,255,.35);margin:0 0 4px}
.sx-note b{font-family:var(--serif);font-size:14px;color:#f1e6ff;letter-spacing:.06em}
.sx-note span{font-size:12.5px;line-height:1.6;color:var(--ink2)}
.sx-steps{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.sx-step{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:start}
.sx-step em{font-style:normal;font-size:11px;font-weight:700;white-space:nowrap;padding:2px 8px;border-radius:999px;color:#160b26;background:linear-gradient(135deg,#d9c0ff,#a77bf0);margin-top:1px}
.sx-step span{font-size:13px;line-height:1.6}
.sx-other{display:flex;flex-wrap:wrap;gap:6px}
.sx-other span{padding:4px 10px;border-radius:999px;font-size:12px;color:var(--ink3);background:rgba(255,255,255,.05);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
@media (max-width:360px){.sx-st b{font-size:15px}.sx-st span{font-size:10px}.sx-hero{gap:4px}}
