/* WULALA App 骨架：單一設計系統。深色＝墨綠，淺色＝白紫。所有模組只用這裡的 token 與元件。 */
:root{color-scheme:dark;--bg:#050f0c;--bgimg:radial-gradient(900px 520px at 5% -8%,rgba(18,107,89,.38),transparent 60%),radial-gradient(760px 520px at 104% 18%,rgba(24,90,78,.28),transparent 60%);--card:#0e201b;--card2:#12332b;--ink:#e9f6f1;--muted:#9db8ae;--line:rgba(94,230,189,.16);--accent:#5ee6bd;--accent2:#c9f8e8;--pri:linear-gradient(135deg,#5ee6bd,#a6f0a0);--priInk:#06231a;--tag:rgba(94,230,189,.14);--warn:#f5b82e;--bad:#ff8a8a;--ok:#7ff0cf;--barbg:rgba(7,20,16,.94);--shadow:0 12px 30px rgba(0,0,0,.35);--r:20px;--tabs:66px}
:root[data-theme=light]{color-scheme:light;--bg:#f6f3fd;--bgimg:radial-gradient(900px 500px at -8% -4%,rgba(179,156,255,.28),transparent 58%),radial-gradient(800px 500px at 108% 10%,rgba(214,201,246,.4),transparent 60%);--card:#fff;--card2:#fff;--ink:#231B3A;--muted:#5E5680;--line:#E6E0F3;--accent:#7c5cd6;--accent2:#4A3499;--pri:linear-gradient(135deg,#8b6cf0,#b39cff);--priInk:#fff;--tag:#EFEAFD;--warn:#b7791f;--bad:#c0263b;--ok:#0a7a62;--barbg:rgba(255,255,255,.95);--shadow:0 10px 26px rgba(110,84,190,.14)}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:var(--bgimg),var(--bg);background-attachment:fixed;color:var(--ink);font:15px/1.6 "Noto Sans TC",system-ui,-apple-system,"Microsoft JhengHei",sans-serif;padding-bottom:calc(var(--tabs) + env(safe-area-inset-bottom,0px))}
a{color:var(--accent)}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3{margin:0;font-weight:800}h1{font-size:24px}h2{font-size:19px}h3{font-size:16px}
[hidden]{display:none!important}
/* 頂欄 */
.bar{position:sticky;top:0;z-index:30;background:var(--barbg);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.bar .in{max-width:1180px;margin:0 auto;padding:0 16px;height:60px;display:flex;align-items:center;gap:12px}
.logo{display:flex;align-items:baseline;gap:6px;text-decoration:none;color:var(--ink)}.logo b{font:400 24px Huninn,sans-serif;letter-spacing:.04em}.logo span{font-size:12px;font-weight:700;color:var(--muted)}
.bar .sp{flex:1}
.icobtn{position:relative;width:42px;height:42px;border-radius:50%;border:1px solid var(--line);background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:0 0 auto}
.icobtn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.badge{position:absolute;top:-2px;right:-2px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#ff3b3b;color:#fff;font:800 11px/18px system-ui;text-align:center}
.rolepill{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--tag);font-size:13px;font-weight:800;cursor:pointer}
/* 分頁列 */
nav.tabs{position:fixed;left:0;right:0;bottom:0;z-index:40;height:calc(var(--tabs) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:var(--barbg);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}
nav.tabs a{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;text-decoration:none;color:var(--muted);font-size:11.5px;font-weight:700}
nav.tabs a svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}nav.tabs a[aria-current=page]{color:var(--accent);font-weight:900}
nav.tabs .badge{top:6px;right:calc(50% - 22px)}
@media(min-width:900px){body{padding-bottom:24px}nav.tabs{position:sticky;top:60px;bottom:auto;height:auto;padding:8px 16px;border:0;border-bottom:1px solid var(--line);display:flex;justify-content:center;gap:4px}nav.tabs a{flex-direction:row;gap:8px;font-size:14.5px;padding:8px 18px;border-radius:999px}nav.tabs a svg{width:19px;height:19px}nav.tabs a[aria-current=page]{background:var(--pri);color:var(--priInk)}nav.tabs .badge{position:static;margin-left:4px}}
main{max-width:1180px;margin:0 auto;padding:16px 16px 0}
.view{display:none}.view.on{display:block;animation:fade .18s ease}@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
/* 元件：面板／清單列／卡片／按鈕／標籤 */
.panel{border:1px solid var(--line);border-radius:var(--r);background:linear-gradient(165deg,var(--card2),var(--card));box-shadow:var(--shadow);overflow:hidden}
.panel+.panel,.panel+.sec,.sec+.panel{margin-top:14px}
.panel .ph{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--line)}.panel .ph h2{flex:1;font-size:17px}.panel .ph .more{font-size:13px;color:var(--accent);text-decoration:none;font-weight:700}
.sec{display:flex;align-items:flex-end;gap:12px;margin:22px 0 10px}.sec h2{flex:1}.sec .sub{color:var(--muted);font-size:13.5px}
.grp{padding:14px 18px 4px;font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--muted)}
.row{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:14px;width:100%;min-height:62px;padding:0 18px;position:relative;cursor:pointer;color:inherit;font-family:inherit}
.row.static{cursor:default}.row+.row:before,.grp+.row+.row:before{content:"";position:absolute;left:64px;right:0;top:0;height:1px;background:var(--line)}
.row.noico+.row:before{left:18px}
.row .ico{width:36px;height:36px;flex:0 0 auto;padding:7px;border-radius:11px;background:var(--tag);stroke:var(--accent);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.row .l{flex:1 1 auto;min-width:80px;font-size:15.5px;font-weight:700;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .l small{display:block;margin-top:2px;font-size:12.5px;font-weight:400;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .r{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:6px 10px;font-size:13.5px;font-weight:700;max-width:58%;text-align:right}.row .c{color:var(--muted);font-size:22px;font-weight:300;line-height:1}
.pill{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:800;background:var(--tag);color:var(--ok)}.pill.warn{background:rgba(245,184,46,.16);color:var(--warn)}.pill.bad{background:rgba(255,120,120,.16);color:var(--bad)}.pill.off{background:rgba(160,160,160,.18);color:var(--muted)}
.btn{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 20px;border-radius:999px;font-weight:800;font-size:15px;cursor:pointer;border:1.5px solid var(--line);color:var(--ink);text-align:center}
.btn.pri{background:var(--pri);color:var(--priInk);border-color:transparent}.btn.danger{color:var(--bad);border-color:rgba(255,120,120,.4)}.btn.sm{min-height:36px;padding:0 14px;font-size:13.5px}.btn.wide{width:100%}.btn[disabled]{opacity:.55;cursor:progress}
.field{display:grid;gap:5px;margin:12px 0}.field>span{font-size:13px;font-weight:600;color:var(--muted)}
.field input,.field select,.field textarea,.search input{width:100%;padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:rgba(127,127,127,.07);outline:0}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--accent)}
.search{display:flex;align-items:center;gap:8px;height:44px;padding:0 14px;background:rgba(127,127,127,.09);border-radius:999px;border:1px solid transparent}.search:focus-within{border-color:var(--accent)}.search svg{width:18px;height:18px;stroke:var(--muted);fill:none;stroke-width:2;stroke-linecap:round}.search input{border:0;background:transparent;padding:0;height:100%}
.empty{text-align:center;padding:30px 16px;color:var(--muted);border:1px dashed var(--line);border-radius:var(--r)}
.grid{display:grid;gap:14px}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:1000px){.g4{grid-template-columns:repeat(3,minmax(0,1fr))}.g3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){main{padding:12px 12px 0}.g4,.g3,.g2{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}}
.stat{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:14px 18px}.stat div{text-align:center}.stat b{display:block;font-size:20px}.stat small{color:var(--muted);font-size:12px}
/* 探索 */
.hero{position:relative;border-radius:26px;overflow:hidden;min-height:220px;background:#173a31}.hero .slides{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}.hero .slides::-webkit-scrollbar{display:none}.hero .slide{flex:0 0 100%;scroll-snap-align:start;aspect-ratio:16/6;max-height:320px}.hero .slide img{width:100%;height:100%;object-fit:cover;display:block}
.hero .dots{position:absolute;left:0;right:0;bottom:10px;display:flex;justify-content:center;gap:6px}.hero .dots i{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.5)}.hero .dots i.on{width:20px;border-radius:4px;background:#fff}
@media(max-width:640px){.hero .slide{aspect-ratio:5/2}}
.chips{display:flex;gap:10px;overflow-x:auto;scrollbar-width:none;padding:4px 0}.chips::-webkit-scrollbar{display:none}
.chip{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:2px;width:88px;padding:8px 4px 10px;border-radius:18px;border:1.5px solid var(--line);background:var(--card);cursor:pointer;font-size:13px;font-weight:800}.chip img{width:56px;height:56px;object-fit:contain}.chip[aria-pressed=true]{border-color:var(--accent);background:var(--tag)}
.pills{display:flex;gap:8px;flex-wrap:wrap}.pill2{padding:8px 16px;border-radius:999px;border:1.5px solid var(--line);background:var(--card);cursor:pointer;font-weight:700;font-size:14px}.pill2[aria-pressed=true]{background:var(--pri);border-color:transparent;color:var(--priInk)}
.pcard{all:unset;box-sizing:border-box;display:flex;flex-direction:column;border-radius:18px;overflow:hidden;border:2px solid transparent;background:linear-gradient(165deg,var(--card2),var(--card));box-shadow:var(--shadow);cursor:pointer;min-width:0;color:inherit}
.pcard .art{position:relative;aspect-ratio:4/5;background:var(--tag)}.pcard .art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pcard .on{position:absolute;left:8px;top:8px;padding:2px 9px;border-radius:999px;background:rgba(0,0,0,.55);color:#fff;font-size:11px;font-weight:800}.pcard .on.hot{background:linear-gradient(135deg,#a855f7,#6366f1)}
.pcard .body{display:grid;gap:4px;padding:10px 10px 12px;min-width:0}.pcard .nm{font-size:15px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pcard .star{font-size:13px;color:#e7a900;font-weight:700}.pcard .star em{font-style:normal;color:var(--muted);font-weight:400}
.pcard .ft{display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:26px;font-size:12px;color:var(--muted)}.pcard .ft b{font-size:15px;color:var(--ink)}
.pcard[data-rank=silver]{border-color:#b8c8e2}.pcard[data-rank=gold]{border-color:#ffbb2d}.pcard[data-rank=platinum]{border-color:#2febd6}.pcard[data-rank=diamond]{border-color:#975cff}
.listen{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:999px;border:1px solid var(--line);font-size:12px;font-weight:800;cursor:pointer;background:var(--tag)}.listen svg{width:12px;height:12px;fill:currentColor}.listen.on{background:var(--pri);color:var(--priInk);border-color:transparent}
/* 對話框／底部抽屜 */
dialog.sheet{border:1px solid var(--line);border-radius:24px 24px 0 0;padding:0;width:100%;max-width:none;margin:auto 0 0;background:var(--card);color:var(--ink);max-height:92dvh}
dialog.sheet::backdrop{background:rgba(0,0,0,.6)}dialog.sheet .in{padding:18px 18px calc(18px + env(safe-area-inset-bottom,0px));overflow:auto;max-height:92dvh}
dialog.sheet .hd{display:flex;align-items:center;gap:10px;margin-bottom:10px}dialog.sheet .hd h2{flex:1}dialog.sheet .x{all:unset;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:22px;color:var(--muted)}
@media(min-width:720px){dialog.sheet{border-radius:24px;max-width:560px;margin:auto;max-height:86dvh}dialog.sheet .in{max-height:86dvh}}
.offer{all:unset;box-sizing:border-box;display:grid;gap:4px;padding:12px 14px;border-radius:14px;border:1.5px solid var(--line);cursor:pointer;width:100%}.offer[aria-pressed=true]{border-color:var(--accent);background:var(--tag)}.offer .t{display:flex;justify-content:space-between;gap:8px;font-weight:800}.offer small{color:var(--muted)}
.toast{position:fixed;left:50%;bottom:calc(var(--tabs) + 16px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:60;padding:10px 18px;border-radius:999px;background:var(--ink);color:var(--bg);font-weight:700;font-size:14px;box-shadow:var(--shadow);opacity:0;transition:opacity .2s}.toast.on{opacity:1}
@media(min-width:900px){.toast{bottom:24px}}
.skel{background:linear-gradient(90deg,rgba(127,127,127,.08),rgba(127,127,127,.16),rgba(127,127,127,.08));background-size:200% 100%;animation:sk 1.2s infinite;border-radius:12px;min-height:60px}@keyframes sk{to{background-position:-200% 0}}
/* 聊天 */
.chat{display:flex;flex-direction:column;gap:8px;max-height:52dvh;overflow:auto;padding:4px 0}.msg{max-width:82%;padding:9px 12px;border-radius:16px;background:var(--tag);font-size:14.5px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.msg.me{align-self:flex-end;background:var(--pri);color:var(--priInk)}.msg.sys{align-self:center;background:transparent;color:var(--muted);font-size:12.5px}.msg small{display:block;font-size:11px;opacity:.65;margin-top:2px}
.chatbar{display:flex;gap:8px;margin-top:10px}.chatbar input{flex:1}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}}

/* 插圖空狀態與裝飾 */
.empty.art{display:grid;justify-items:center;gap:6px;padding:26px 16px;border-style:solid}.empty.art img{width:150px;max-width:60%;margin-bottom:4px}.empty.art b{color:var(--ink)}.empty.art small{font-size:13px}
.hero-art{position:relative;border-radius:var(--r);overflow:hidden;min-height:150px;background:#173a31 url(../assets/site-art/banner-first-quest-sm.webp) right center/cover no-repeat;display:flex;align-items:flex-end}
.hero-art:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,15,12,.9) 0%,rgba(5,15,12,.6) 45%,rgba(5,15,12,.05) 100%)}
:root[data-theme=light] .hero-art:before{background:linear-gradient(90deg,rgba(255,255,255,.94) 0%,rgba(255,255,255,.7) 45%,rgba(255,255,255,.05) 100%)}
.hero-art .in{position:relative;padding:18px 20px;display:flex;flex-direction:column;gap:6px;max-width:70%}.hero-art h2{font-size:22px}.hero-art .sub{color:var(--muted);font-size:13.5px}
.sec-ico{width:34px;height:34px;object-fit:contain}
.ic{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:-3px}
.dropcard{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:16px;background:linear-gradient(120deg,rgba(245,184,46,.18),rgba(245,184,46,.06));border:1px solid rgba(245,184,46,.35);margin:0 16px 10px}
.dropcard .t{flex:1;min-width:0;font-size:13.5px}.dropcard b{display:block;font-size:14.5px}.dropcard .ic{stroke:var(--warn)}

/* 送禮底部面板：不蓋住房間，特效在其上層播放 */
.gdock{position:fixed;left:0;right:0;bottom:calc(var(--tabs) + env(safe-area-inset-bottom,0px));z-index:45;max-height:46dvh;overflow:auto;background:var(--barbg);backdrop-filter:blur(12px);border-top:1px solid var(--line);border-radius:22px 22px 0 0;transform:translateY(110%);transition:transform .22s ease;box-shadow:0 -10px 30px rgba(0,0,0,.35)}
.gdock.on{transform:none}@media(min-width:900px){.gdock{bottom:0;left:50%;right:auto;width:min(720px,100vw);transform:translate(-50%,110%)}.gdock.on{transform:translate(-50%,0)}}
.gd-hd{display:flex;align-items:center;gap:8px;padding:10px 12px 0}.gd-hd .tg{flex:1;padding-bottom:4px}.gd-hd .x{all:unset;width:34px;height:34px;display:flex;align-items:center;justify-content:center;font-size:22px;color:var(--muted);cursor:pointer}
.gd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px;padding:6px 12px}.gd-grid .gift{padding:8px 4px}.gd-grid .gift img{width:48px;height:48px}.gd-grid .gift b{font-size:12px}.gd-grid .gift small{font-size:11px}
.gd-grid .gift:active{transform:scale(.94)}.gd-grid .gift[aria-pressed=true]{box-shadow:0 0 0 2px var(--accent) inset}
.gd-ft{display:flex;align-items:center;gap:10px;padding:8px 12px 12px;flex-wrap:wrap}
.gfx-root{z-index:70!important}

/* 版面裝飾：區塊標題插圖、面板角落線稿 */
.sec .sec-ico{width:36px;height:36px;object-fit:contain;filter:drop-shadow(0 2px 4px rgba(0,0,0,.25))}
.panel.deco{position:relative}.panel.deco:after{content:"";position:absolute;right:-18px;bottom:-18px;width:120px;height:120px;background:var(--deco) center/contain no-repeat;opacity:.12;pointer-events:none}
:root[data-theme=light] .panel.deco:after{opacity:.16}
.me-top{background:url(../assets/site-art/banner-first-quest-sm.webp) center 30%/cover no-repeat;min-height:120px}.me-top:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,15,12,.72) 0%,rgba(5,15,12,.45) 45%,rgba(5,15,12,.12) 100%)}
:root[data-theme=light] .me-top:before{background:linear-gradient(90deg,#fff 35%,rgba(255,255,255,.35))}.me-top>*{position:relative}

.covgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.covgrid button{all:unset;box-sizing:border-box;position:relative;aspect-ratio:1;border-radius:14px;background:var(--tag) center/cover;cursor:pointer;border:2px solid transparent}.covgrid button[aria-pressed=true]{border-color:var(--accent)}
.vctl{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.vctl .btn{min-height:44px;font-size:14px;padding:0 10px;white-space:nowrap}@media(min-width:720px){.vctl{grid-template-columns:repeat(6,minmax(0,1fr))}}
/* 頂欄吉祥物：吉娃娃奔跑小動畫 */
.mascot{display:inline-flex;align-items:center;margin-left:4px}.mascot wulala-loader{--wl-size:26px;gap:0}.mascot wulala-loader .wl-stage{width:40px}.mascot wulala-loader .wl-trail,.mascot wulala-loader .wl-puff{display:none}
/* 探索主視覺：讓彩圖露出更多 */
.hero-art{min-height:190px}.hero-art:before{background:linear-gradient(90deg,rgba(5,15,12,.88) 0%,rgba(5,15,12,.55) 38%,rgba(5,15,12,0) 62%)}
:root[data-theme=light] .hero-art:before{background:linear-gradient(90deg,rgba(255,255,255,.92) 0%,rgba(255,255,255,.6) 38%,rgba(255,255,255,0) 62%)}
/* 我的頁頂圖：整張插畫鋪滿，左側只壓一層半透明暗色讓文字清楚 */
:root[data-theme=light] .me-top:before{background:linear-gradient(90deg,rgba(35,27,58,.62) 0%,rgba(35,27,58,.35) 45%,rgba(35,27,58,.08) 100%)}
.me-top b,.me-top small,.me-top .n{color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.55)}.me-top small{color:rgba(255,255,255,.85)}.me-top .av,.me-top img{box-shadow:0 4px 14px rgba(0,0,0,.4)}
.me-top .pill{background:var(--card);border:1px solid var(--line);box-shadow:0 2px 8px rgba(0,0,0,.25)}
.gd-grid .gift{touch-action:pan-y;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.gd-grid .gift.holding{box-shadow:0 0 0 2px var(--warn) inset;animation:holdpulse .7s infinite}@keyframes holdpulse{50%{transform:scale(.96)}}

.wheelwrap{position:relative}.wheel{height:180px;overflow-y:auto;scroll-snap-type:y mandatory;scrollbar-width:none;border:1px solid var(--line);border-radius:16px;mask-image:linear-gradient(180deg,transparent,#000 30%,#000 70%,transparent);-webkit-mask-image:linear-gradient(180deg,transparent,#000 30%,#000 70%,transparent)}.wheel::-webkit-scrollbar{display:none}.wheel .pad{height:72px}
.wheel .it{height:36px;line-height:36px;text-align:center;scroll-snap-align:center;font-size:17px;color:var(--muted);cursor:pointer;font-variant-numeric:tabular-nums}.wheel .it.on{color:var(--accent);font-weight:900;font-size:22px}
.wheelwrap:after{content:"";position:absolute;left:12px;right:12px;top:72px;height:36px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);pointer-events:none;border-radius:8px}

.gd-grid .gift{position:relative}.gcount{position:absolute;top:-10px;right:-6px;padding:2px 9px;border-radius:999px;background:linear-gradient(135deg,#ffb84d,#ff7a3d);color:#1b0f00;font:900 15px/1.4 "Russo One","Arial Black",system-ui;box-shadow:0 4px 14px rgba(255,140,60,.45);transform-origin:center;pointer-events:none}
.gcount.pop{animation:gpop .3s cubic-bezier(.2,1.8,.4,1)}@keyframes gpop{0%{transform:scale(1.6)}100%{transform:scale(1)}}.gcount.out{transition:all .45s;transform:translateY(-24px) scale(1.2);opacity:0}

/* 手機頂欄：不換行、不擠壓 */
@media(max-width:640px){.bar .in{gap:8px;padding:0 12px}.logo b{font-size:22px}.logo span{display:none}.rolepill{white-space:nowrap;padding:5px 10px;font-size:12.5px}.rolepill svg{display:none}.icobtn{width:38px;height:38px}.mascot wulala-loader{--wl-size:22px}.badge{right:-4px}}
.bar .in>*{flex-shrink:0}.bar .logo{min-width:0}
/* 表單欄位不得撐出格線（iOS 日期欄位） */
.grid>*{min-width:0}.field input,.field select,.field textarea{min-width:0;max-width:100%}.field input[type=datetime-local],.field input[type=date]{-webkit-appearance:none;appearance:none;font-size:15px}
.bidrow{min-height:74px;align-items:center}.bav{width:48px;height:48px;border-radius:50%;background:var(--tag);display:flex;align-items:center;justify-content:center;font-weight:900;color:var(--accent);overflow:hidden;flex:0 0 auto;cursor:pointer}.bav img{width:100%;height:100%;object-fit:cover}

/* 檢舉入口與小元件 */
.icobtn.sm{width:34px;height:34px}.icobtn.sm svg{width:16px;height:16px}
.lnk{all:unset;cursor:pointer;color:var(--muted);font-size:12px;text-decoration:underline;text-underline-offset:2px}
.hint{color:var(--muted);font-size:12.5px;line-height:1.5}
.vm[data-report]{cursor:pointer}.msg[data-report]{cursor:pointer}

/* ===== 色彩點綴：主色墨綠／白紫之外加入暖金、珊瑚、紫、天藍四個輔色，讓按鈕與區塊有層次 ===== */
:root{--c-amber:#f5b82e;--c-coral:#ff8f8f;--c-violet:#b39cff;--c-sky:#7cc7ff;--c-amber-soft:rgba(245,184,46,.16);--c-coral-soft:rgba(255,143,143,.16);--c-violet-soft:rgba(179,156,255,.18);--c-sky-soft:rgba(124,199,255,.16)}
:root[data-theme=light]{--c-amber:#b7791f;--c-coral:#d9485f;--c-violet:#7c5cd6;--c-sky:#2f7fd6;--c-amber-soft:#fdf1d6;--c-coral-soft:#fde3e6;--c-violet-soft:#ece6fb;--c-sky-soft:#dfeefb}
.btn.pri{box-shadow:0 8px 20px rgba(94,230,189,.22)}:root[data-theme=light] .btn.pri{box-shadow:0 8px 20px rgba(124,92,214,.22)}
.btn.pri:active{transform:translateY(1px)}
/* 送禮、儲值＝暖金；危險＝珊瑚底 */
.gdock .btn.pri,.btn.gold{background:linear-gradient(135deg,#ffd166,#f5a623);color:#2b1b00;box-shadow:0 8px 20px rgba(245,166,35,.28)}
.btn.danger{background:var(--c-coral-soft)}
/* 底部分頁：每個分頁一個代表色，選中時亮起 */
nav.tabs a[data-tab=explore]{--tabc:var(--accent)}nav.tabs a[data-tab=feed]{--tabc:var(--c-coral)}nav.tabs a[data-tab=voice]{--tabc:var(--c-violet)}nav.tabs a[data-tab=quest]{--tabc:var(--c-amber)}nav.tabs a[data-tab=me]{--tabc:var(--c-sky)}
nav.tabs a[aria-current=page]{color:var(--tabc)}
nav.tabs a[aria-current=page]:before{content:"";position:absolute;top:-1px;left:50%;width:28px;height:3px;border-radius:0 0 4px 4px;background:var(--tabc);transform:translateX(-50%)}
/* 桌機：選中的分頁是實心膠囊，字用深色才不會反光；底下的色條保留分頁代表色 */
@media(min-width:900px){nav.tabs a[aria-current=page]{color:var(--priInk);background:var(--pri);box-shadow:0 6px 16px rgba(94,230,189,.25)}:root[data-theme=light] nav.tabs a[aria-current=page]{box-shadow:0 6px 16px rgba(124,92,214,.25)}nav.tabs a[aria-current=page]:before{top:auto;bottom:-9px;border-radius:4px 4px 0 0}}
/* 列表圖示：同一個面板裡輪流四種底色，掃描時更好分辨 */
.panel .row:nth-of-type(4n+2) .ico{background:var(--c-amber-soft);stroke:var(--c-amber)}
.panel .row:nth-of-type(4n+3) .ico{background:var(--c-violet-soft);stroke:var(--c-violet)}
.panel .row:nth-of-type(4n+4) .ico{background:var(--c-sky-soft);stroke:var(--c-sky)}
/* 統計數字：漸層字 */
.stat b{background:linear-gradient(135deg,var(--accent),var(--c-amber));-webkit-background-clip:text;background-clip:text;color:transparent}
/* 分類籤：選中時依模組上色 */
#v-feed .pill2[aria-pressed=true]{background:linear-gradient(135deg,var(--c-coral),#ffb08a);color:#3a0f0f}
#v-voice .pill2[aria-pressed=true],#v-voice .chip[aria-pressed=true]{background:linear-gradient(135deg,var(--c-violet),#d6c8ff);color:#1d1140;border-color:transparent}
#v-quest .pill2[aria-pressed=true]{background:linear-gradient(135deg,var(--c-amber),#ffd98a);color:#2b1b00}
/* 面板標題左側色條（有 data-tone 的面板） */
.panel[data-tone=amber]{border-left:4px solid var(--c-amber)}.panel[data-tone=coral]{border-left:4px solid var(--c-coral)}.panel[data-tone=violet]{border-left:4px solid var(--c-violet)}.panel[data-tone=sky]{border-left:4px solid var(--c-sky)}
/* 夥伴卡片的評分與價格標籤 */
.pcard .on.hot{background:linear-gradient(135deg,var(--c-coral),#ff6b6b)}
.pcard .price,.pcard .rate{color:var(--c-amber)}
/* 語音房卡片與麥位邊框帶紫色調 */
.rcard{border-color:rgba(179,156,255,.22)}.seat.on .av{border-color:var(--c-violet)!important;box-shadow:0 0 0 3px var(--c-violet-soft)}
.vm.gift{color:var(--c-amber)}
/* 空狀態插畫下的按鈕 */
.empty .btn.pri{background:linear-gradient(135deg,var(--c-violet),var(--accent));color:#0d1a16}

/* 頭像選擇與圓形裁切 */
.avpick{display:flex;gap:16px;align-items:center}.avprev{width:84px;height:84px;border-radius:50%;overflow:hidden;background:var(--tag);display:grid;place-items:center;font-weight:900;font-size:28px;color:var(--accent);flex:0 0 auto;border:2px solid var(--line)}.avprev img{width:100%;height:100%;object-fit:cover}
.avbtns{display:grid;gap:8px;justify-items:start}.avbtns .hint{font-size:12px}
.crop{position:relative;width:280px;height:280px;margin:0 auto;border-radius:18px;overflow:hidden;background:#000;touch-action:none}.crop canvas{display:block;cursor:grab}.crop canvas:active{cursor:grabbing}
.crop-mask{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at center,transparent 139px,rgba(0,0,0,.62) 140px);box-shadow:inset 0 0 0 2px rgba(255,255,255,.25)}.crop-mask:after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid rgba(255,255,255,.9)}

/* ===== 桌機優先：寬螢幕用多欄排版、滑鼠 hover 回饋；手機仍維持單欄 ===== */
@media(min-width:1000px){
  main{max-width:1280px;padding:20px 24px 0}
  .g4{grid-template-columns:repeat(4,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
  /* 我的：頂圖與統計橫跨，功能群組兩欄 */
  .mehome{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
  .mehome>.me-top,.mehome>.panel:nth-child(2),.mehome>.legal{grid-column:1/-1}
  .mehome>.panel+.panel{margin-top:0}
  /* 語音房：麥位與控制在左，聊天在右固定 */
  .room{grid-template-columns:minmax(0,1fr) 400px;align-items:start}
  .room>.panel.deco{grid-column:2;grid-row:1/span 12;position:sticky;top:124px}
  .room .vchat{height:calc(100vh - 330px);min-height:380px}
  .seats{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.seat .av{width:72px;height:72px}
  dialog.sheet{max-width:640px}
}
@media(min-width:1280px){.g4{grid-template-columns:repeat(5,minmax(0,1fr))}.g3{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(hover:hover){
  .pcard:hover,.rcard:hover{transform:translateY(-3px);box-shadow:0 18px 40px rgba(0,0,0,.4);transition:transform .15s,box-shadow .15s}
  .row:hover{background:rgba(127,127,127,.07)}
  .chip:hover,.pill2:hover{border-color:var(--accent)}
  nav.tabs a:hover{color:var(--ink)}
}

/* ===== 分頁列兩側：左邊問候、右邊快速動作（桌機） ===== */
.tabset{display:contents}.nav-side{display:none}
@media(min-width:900px){
  nav.tabs{display:grid!important;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;padding:8px 24px}
  .tabset{display:flex;gap:4px;justify-content:center}
  .nav-side{display:flex;align-items:center;gap:10px;min-width:0}.nav-side.r{justify-content:flex-end}
  .hello{font-size:15px;white-space:nowrap}.hello b{font-weight:900;background:linear-gradient(135deg,var(--accent),var(--c-amber));-webkit-background-clip:text;background-clip:text;color:transparent}
  .hello-sub{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .nav-side .btn.sm svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}
}
/* ===== 探索頁右側欄（桌機） ===== */
.xwrap{display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}.xrail{display:none}
@media(min-width:1100px){.xwrap{grid-template-columns:minmax(0,1fr) 340px;align-items:start}.xrail{display:grid;gap:14px;position:sticky;top:124px}.xrail .panel+.panel{margin-top:0}.xwrap .g4{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(min-width:1400px){.xwrap .g4{grid-template-columns:repeat(5,minmax(0,1fr))}}
.xrail .rail-live{background:linear-gradient(165deg,var(--card2),var(--card)),radial-gradient(120px 80px at 100% 0,var(--c-violet-soft),transparent)}
.xrail .row .tx{flex:1;min-width:0}.xrail .row .tx b{display:block;font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xrail .row .tx small{color:var(--muted);font-size:12px}
.xrail .stat{padding:10px 14px 4px}.xrail .stat b{font-size:22px}
/* ===== 整體質感：面板頂緣高光、區塊標題色條、背景微點陣 ===== */
body{background-image:radial-gradient(rgba(94,230,189,.045) 1px,transparent 1.5px),var(--bgimg);background-size:26px 26px,auto;background-attachment:fixed}
:root[data-theme=light] body{background-image:radial-gradient(rgba(124,92,214,.07) 1px,transparent 1.5px),var(--bgimg)}
.panel{position:relative}.panel:before{content:"";position:absolute;left:14px;right:14px;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.22),transparent);pointer-events:none;z-index:1}
.sec h2{position:relative;padding-left:12px}.sec h2:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:4px;height:70%;border-radius:4px;background:linear-gradient(180deg,var(--accent),var(--c-amber))}
.grp{position:relative}.grp:after{content:"";display:inline-block;width:24px;height:2px;margin-left:10px;vertical-align:middle;border-radius:2px;background:linear-gradient(90deg,var(--accent),transparent)}
.hero-art .in h2{text-shadow:0 2px 14px rgba(0,0,0,.45)}
/* ===== 錄音面板 ===== */
.rec{text-align:center}.rec-ring{width:132px;height:132px;margin:6px auto 12px;border-radius:50%;display:grid;place-content:center;border:3px solid var(--line);background:var(--tag);font-weight:900}.rec-ring span{font-size:34px;line-height:1}.rec-ring small{color:var(--muted);font-size:12px}
.rec-ring.on{border-color:var(--c-coral);box-shadow:0 0 0 8px var(--c-coral-soft);animation:recpulse 1.2s ease-in-out infinite}@keyframes recpulse{50%{box-shadow:0 0 0 16px rgba(255,143,143,.06)}}

/* ===== 一次到位修飾（桌機為主） ===== */
.me-name{font-size:22px;font-weight:900;color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.6);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.me-role{color:rgba(255,255,255,.85);font-size:13px;text-shadow:0 1px 6px rgba(0,0,0,.5)}
.qgrid{display:grid;gap:14px}@media(min-width:1000px){.qgrid{grid-template-columns:1fr 1fr;align-items:start}.qgrid>.panel+.panel{margin-top:0}}
@media(min-width:1000px){.post .pic{max-height:520px}}
.trust{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}@media(max-width:900px){.trust{grid-template-columns:repeat(2,minmax(0,1fr))}}
.trust .t{padding:16px;border-radius:18px;border:1px solid var(--line);background:linear-gradient(165deg,var(--card2),var(--card));display:grid;gap:4px}
.trust .t svg{width:34px;height:34px;padding:7px;border-radius:12px;background:var(--tag);fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;margin-bottom:6px}
.trust .t:nth-child(2) svg{background:var(--c-amber-soft);stroke:var(--c-amber)}.trust .t:nth-child(3) svg{background:var(--c-violet-soft);stroke:var(--c-violet)}.trust .t:nth-child(4) svg{background:var(--c-sky-soft);stroke:var(--c-sky)}
.trust .t b{font-size:15px}.trust .t small{color:var(--muted);font-size:12.5px;line-height:1.5}
.mini-post{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;border-radius:18px;overflow:hidden;border:1px solid var(--line);background:linear-gradient(165deg,var(--card2),var(--card));min-width:0}
.mini-post img,.mini-post .np{width:100%;aspect-ratio:16/10;object-fit:cover;background:var(--tag)}.mini-post .tx{padding:12px 14px;display:grid;gap:4px}.mini-post b{font-size:14px}.mini-post p{margin:0;font-size:13.5px;color:var(--ink);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.mini-post small{color:var(--muted);font-size:12px}
@media(hover:hover){.mini-post:hover{transform:translateY(-3px);transition:transform .15s}}
.vfeat{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:14px}@media(max-width:900px){.vfeat{grid-template-columns:repeat(2,minmax(0,1fr))}}
.vfeat>div{padding:14px 16px;border-radius:16px;border:1px solid rgba(179,156,255,.25);background:linear-gradient(165deg,var(--c-violet-soft),transparent);display:grid;gap:3px}.vfeat b{font-size:14.5px}.vfeat small{color:var(--muted);font-size:12.5px}
/* 頁尾（桌機；手機底部有分頁列故隱藏） */
.site-foot{display:none}
@media(min-width:900px){.site-foot{display:block;margin-top:48px;border-top:1px solid var(--line);background:linear-gradient(180deg,transparent,rgba(0,0,0,.18))}
  .site-foot .in{max-width:1280px;margin:0 auto;padding:32px 24px 18px;display:grid;grid-template-columns:1.6fr repeat(3,1fr);gap:24px}
  .site-foot .brand b{display:block;font:400 26px Huninn,sans-serif;letter-spacing:.04em}.site-foot .brand span{display:block;font-weight:700;margin:4px 0}.site-foot .brand small{color:var(--muted);font-size:12.5px}
  .site-foot nav{display:grid;gap:8px;align-content:start}.site-foot nav b{font-size:13px;color:var(--muted);letter-spacing:.08em}.site-foot a{color:var(--ink);text-decoration:none;font-size:14px}@media (hover:hover) and (pointer:fine){.site-foot a:hover{color:var(--accent)}}
  .site-foot .copy{text-align:center;color:var(--muted);font-size:12px;padding:0 0 20px}}

/* 夥伴詳情：桌機寬版雙欄 */
.gd-photos{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin:-4px 0 12px}.gd-photos img{height:200px;border-radius:14px;flex:0 0 auto;object-fit:cover;cursor:zoom-in}
@media(min-width:900px){
  dialog.sheet.wide{max-width:980px;width:min(980px,94vw)}
  .gd-cols{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:24px;align-items:start}
  .gd-photos{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;overflow:visible}.gd-photos img{width:100%;height:120px}.gd-photos img.main{grid-column:1/-1;height:300px}
  .gd-r{position:sticky;top:0;padding:16px;border-radius:18px;border:1px solid var(--line);background:rgba(127,127,127,.05)}
}

/* 新上架技能 */
.newskills{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:6px}@media(max-width:1000px){.newskills{grid-template-columns:repeat(2,minmax(0,1fr))}}
.nskill{all:unset;box-sizing:border-box;cursor:pointer;display:grid;gap:6px;padding:14px;border-radius:18px;border:1px solid var(--line);background:linear-gradient(165deg,var(--card2),var(--card));min-width:0;--gc:var(--accent);--gs:var(--tag)}
.nskill.g-talk{--gc:var(--c-violet);--gs:var(--c-violet-soft)}.nskill.g-game{--gc:var(--c-sky);--gs:var(--c-sky-soft)}.nskill.g-outing{--gc:var(--c-amber);--gs:var(--c-amber-soft)}
.nskill{border-top:3px solid var(--gc)}.nskill .top{display:flex;justify-content:space-between;align-items:center}.nskill .ngrp{font-size:11.5px;font-weight:900;padding:3px 10px;white-space:nowrap;line-height:1.4;border-radius:999px;background:var(--gs);color:var(--gc)}
.nskill .new{font-size:11px;font-weight:900;padding:2px 8px;border-radius:999px;background:linear-gradient(135deg,var(--c-coral),#ffb08a);color:#3a0f0f}
.nskill .nm{font-size:15.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nskill .ln{color:var(--muted);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nskill .who{display:flex;align-items:center;gap:8px;font-size:13px}.nskill .who img,.nskill .who i{width:24px;height:24px;border-radius:50%;object-fit:cover;background:var(--tag)}
.nskill .ft{display:flex;justify-content:space-between;align-items:center;margin-top:2px}.nskill .ft b{font-size:16px;color:var(--c-amber)}
@media(hover:hover){.nskill:hover{transform:translateY(-3px);box-shadow:0 14px 30px rgba(0,0,0,.35);transition:transform .15s,box-shadow .15s}}

/* ===== 技能圖示 ===== */
.skic{display:inline-grid;place-items:center;flex:0 0 auto;border-radius:30%;background:var(--c-amber-soft)}.skic svg{width:58%;height:58%;fill:none;stroke:var(--c-amber);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.skic.violet{background:var(--c-violet-soft)}.skic.violet svg{stroke:var(--c-violet)}.skic.sky{background:var(--c-sky-soft)}.skic.sky svg{stroke:var(--c-sky)}
.skic.game{background:none;overflow:hidden;box-shadow:0 4px 12px rgba(0,0,0,.3)}.skic.game img{width:100%;height:100%;object-fit:cover;display:block}
.nskill .top{gap:8px}.nskill .top .ngrp{margin-right:auto}
/* ===== 夥伴個人頁 ===== */
.gp{display:block}.gp[hidden]{display:none}
.gp-bar{display:flex;align-items:center;gap:12px;margin-bottom:14px}.gp-bar .crumb{color:var(--muted);font-size:13px}.gp-bar .crumb b{color:var(--ink)}.gp-bar .sp{flex:1}.gp-bar .btn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}
.gp-cols{display:grid;gap:18px;grid-template-columns:minmax(0,1fr)}@media(min-width:1000px){.gp-cols{grid-template-columns:360px minmax(0,1fr);align-items:start}}
.gp-card{border:1px solid var(--line);border-radius:24px;background:linear-gradient(170deg,var(--card2),var(--card));box-shadow:var(--shadow);overflow:hidden;padding-bottom:18px}
.gp-hero{position:relative;aspect-ratio:4/5;background:var(--tag)}.gp-hero img{width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in}.gp-hero:after{content:"";position:absolute;inset:auto 0 0;height:40%;background:linear-gradient(0deg,rgba(5,15,12,.75),transparent);pointer-events:none}
.gp-on{position:absolute;left:12px;top:12px;z-index:1;padding:4px 11px;border-radius:999px;font-size:12px;font-weight:900;background:rgba(10,40,30,.8);color:#7ff0cf;border:1px solid rgba(127,240,207,.45);backdrop-filter:blur(6px)}.gp-on.off{color:#cbd5e1;border-color:rgba(203,213,225,.3)}
.gp-rank{position:absolute;right:12px;bottom:12px;z-index:1;padding:4px 12px;border-radius:999px;font-size:12px;font-weight:900;color:#1b1500;background:linear-gradient(135deg,#ffe38a,#f5a623)}.gp-rank.r-bronze{background:linear-gradient(135deg,#e7b48a,#b0704a)}.gp-rank.r-silver{background:linear-gradient(135deg,#f1f5f9,#94a3b8)}.gp-rank.r-platinum{background:linear-gradient(135deg,#d1fae5,#5eead4)}.gp-rank.r-diamond{background:linear-gradient(135deg,#e0e7ff,#a78bfa)}
.gp-thumbs{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;padding:10px 12px 0}.gp-thumbs img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;cursor:pointer;opacity:.6;border:2px solid transparent}.gp-thumbs img.on{opacity:1;border-color:var(--accent)}
.gp-id{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 18px 0}.gp-id h1{font:400 26px Huninn,"Noto Sans TC",sans-serif}.gp-ver{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:800;color:var(--ok);padding:2px 9px;border-radius:999px;background:var(--tag)}.gp-ver svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2.4}
.gp-stats{display:grid;grid-template-columns:repeat(4,1fr);margin:14px 18px 0;border:1px solid var(--line);border-radius:16px;overflow:hidden}.gp-stats div{text-align:center;padding:10px 4px}.gp-stats div+div{border-left:1px solid var(--line)}.gp-stats b{display:block;font-size:19px;font-weight:900}.gp-stats div:first-child b{color:var(--c-amber)}.gp-stats small{color:var(--muted);font-size:11.5px}
.gp-head{margin:14px 18px 0;font-weight:800;font-size:15.5px}.gp-bio{margin:6px 18px 0;color:var(--muted);font-size:14px;line-height:1.7;white-space:pre-wrap;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}.gp-bio.open{display:block}.gp-card .lnk{margin:4px 18px 0;display:inline-block}
.gp-chips{display:flex;flex-wrap:wrap;gap:6px;margin:12px 18px 0}.gp-chips .c{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;font-size:12.5px;font-weight:700;background:rgba(127,127,127,.1);border:1px solid var(--line)}.gp-chips .c svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}.gp-chips .city{color:var(--c-amber)}.gp-chips .lang{color:var(--c-sky)}
.gp-sub{margin:14px 18px 6px;font-size:12.5px;color:var(--muted);font-weight:800}.gp-card>.vchip{margin:0 18px}
.gp-acts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:16px 18px 0}.gp-acts .btn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}
/* 語音膠囊 */
.vchip{all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;gap:10px;padding:6px 14px 6px 6px;border-radius:999px;background:var(--c-violet-soft);border:1px solid rgba(179,156,255,.35);color:var(--ink);font-weight:800;font-size:13.5px}
.vchip .pb{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,var(--c-violet),#d6c8ff)}.vchip .pb svg{width:14px;height:14px;fill:#1d1140}
.vchip .wv{display:inline-flex;align-items:center;gap:2px;height:18px}.vchip .wv i{width:3px;border-radius:2px;background:var(--c-violet);height:6px}.vchip .wv i:nth-child(2n){height:12px}.vchip .wv i:nth-child(3n){height:16px}
.vchip.on .wv i{animation:wv .8s ease-in-out infinite}.vchip.on .wv i:nth-child(2){animation-delay:.1s}.vchip.on .wv i:nth-child(3){animation-delay:.2s}.vchip.on .wv i:nth-child(4){animation-delay:.3s}.vchip.on .wv i:nth-child(5){animation-delay:.4s}.vchip.on .wv i:nth-child(6){animation-delay:.5s}@keyframes wv{50%{transform:scaleY(.35)}}
.vchip .du{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}
/* 右欄技能工作區 */
.gp-main{display:grid;gap:18px;min-width:0}
.gp-skills,.gp-reviews{border:1px solid var(--line);border-radius:24px;background:linear-gradient(170deg,var(--card2),var(--card));box-shadow:var(--shadow);overflow:hidden}
.gp-tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;padding:10px 12px 0;border-bottom:1px solid var(--line)}.gp-tabs::-webkit-scrollbar{display:none}
.gp-tabs button{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:8px;padding:10px 14px 12px;font-weight:800;font-size:14.5px;color:var(--muted);white-space:nowrap;border-bottom:3px solid transparent;margin-bottom:-1px}
.gp-tabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--c-amber)}.gp-tabs button.g-talk[aria-selected=true]{border-bottom-color:var(--c-violet)}.gp-tabs button.g-game[aria-selected=true]{border-bottom-color:var(--c-sky)}
.gs{padding:22px}.gs-hd{display:flex;gap:16px;align-items:center}.gs-hd .t{flex:1;min-width:0}.gs-hd .grp{font-size:12px;font-weight:900;color:var(--c-amber);padding:0}.gs-hd .grp:after{display:none}.gs.g-talk .gs-hd .grp{color:var(--c-violet)}.gs.g-game .gs-hd .grp{color:var(--c-sky)}
.gs-hd h2{font-size:24px;margin:2px 0 4px}.gs-hd .meta{display:flex;flex-wrap:wrap;gap:6px}.gs-hd .meta span{font-size:12.5px;font-weight:700;padding:2px 9px;border-radius:999px;background:rgba(127,127,127,.12)}
.gs-hd .price{text-align:right}.gs-hd .price b{display:block;font-size:32px;font-weight:900;line-height:1;color:var(--c-amber);font-variant-numeric:tabular-nums}.gs-hd .price small{font-size:13px;color:var(--muted);font-weight:700}.gs-hd .price em{display:block;font-style:normal;font-size:12px;color:var(--muted);margin-top:4px}
.gs-row{display:flex;align-items:center;gap:12px;margin-top:18px}.gs-row .k{font-size:12.5px;color:var(--muted);font-weight:800;width:40px}
.gs-desc{margin-top:16px;padding:14px 16px;border-radius:16px;background:rgba(127,127,127,.07);white-space:pre-wrap;line-height:1.7;font-size:14.5px}
.gs-book{display:grid;grid-template-columns:1fr 1fr;gap:0 14px;margin-top:18px}.gs-book .wide{grid-column:1/-1}@media(max-width:700px){.gs-book{grid-template-columns:1fr}}
.gs-cta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:8px}.gs-cta .btn.pri{min-height:50px;padding:0 28px;font-size:16px}.gs-cta .btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2}.gs-cta .hint{flex:1;min-width:220px}
/* 評價 */
.gp-reviews{padding:20px 22px}.rv-hd{display:flex;align-items:baseline;gap:10px}.rv-hd .n{color:var(--muted);font-size:13px}
.rv-sum{display:grid;grid-template-columns:140px 1fr;gap:20px;align-items:center;margin:14px 0 6px;padding:14px;border-radius:16px;background:rgba(127,127,127,.07)}.rv-sum .avg{text-align:center}.rv-sum .avg b{display:block;font-size:40px;font-weight:900;color:var(--c-amber);line-height:1}.st{color:#f5b82e;letter-spacing:1px;font-size:13px}
.rv-sum .bars div{display:grid;grid-template-columns:36px 1fr 28px;gap:8px;align-items:center;font-size:12px;color:var(--muted)}.rv-sum .bars i{height:7px;border-radius:4px;background:rgba(127,127,127,.18);overflow:hidden}.rv-sum .bars em{display:block;height:100%;background:linear-gradient(90deg,#f5b82e,#ffd98a);border-radius:4px}
.rv-list{display:grid}.rv{display:flex;gap:12px;padding:14px 0;border-top:1px solid var(--line)}.rv .av{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-weight:900;background:linear-gradient(135deg,var(--tag),var(--c-violet-soft));flex:0 0 auto}.rv .tx{flex:1;min-width:0}.rv .top{display:flex;align-items:center;gap:10px}.rv .top small{color:var(--muted);margin-left:auto;font-size:12px}.rv p{margin:4px 0 0;font-size:14px;line-height:1.6}

/* ===== 寶箱與守護榜 ===== */
.gp-box{margin:16px 18px 0;padding:14px;border-radius:18px;border:1px solid var(--line);background:radial-gradient(160px 90px at 100% 0,rgba(245,184,46,.14),transparent),rgba(127,127,127,.05)}
.gp-box-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.gp-box-hd .ttl{display:inline-flex;align-items:center;gap:6px;font-weight:900;font-size:15px}.gp-box-hd .ttl img{width:22px;height:22px}.gp-box-hd .ttl svg{width:18px;height:18px;fill:none;stroke:var(--c-amber);stroke-width:2}.gp-box-hd small{color:var(--muted);font-size:12px}
.chest{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.chest .ch{display:grid;justify-items:center;gap:2px;padding:8px 4px;border-radius:14px;background:rgba(0,0,0,.18);border:1px solid rgba(245,184,46,.18)}:root[data-theme=light] .chest .ch{background:#fff}
.chest .ic{width:42px;height:42px;display:grid;place-items:center}.chest .ic img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 3px 6px rgba(0,0,0,.35))}.chest .ic svg{width:26px;height:26px;fill:none;stroke:var(--c-amber);stroke-width:1.8}
.chest b{font-size:13px;color:var(--c-amber);font-variant-numeric:tabular-nums}.chest small{font-size:10.5px;color:var(--muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chest-empty{grid-column:1/-1;display:flex;align-items:center;gap:12px;padding:4px}.chest-empty img{width:64px;height:64px;object-fit:contain}.chest-empty span{font-weight:800;font-size:13.5px}.chest-empty small{color:var(--muted);font-weight:400}
.gift-btn{margin-top:12px;background:linear-gradient(135deg,#ffd166,#f5a623)!important;color:#2b1b00!important;box-shadow:0 8px 20px rgba(245,166,35,.28)}.gift-btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2}
.gd-row{display:flex;align-items:center;gap:10px;padding:7px 2px}.gd-row+.gd-row{border-top:1px dashed var(--line)}.gd-row .no{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:900;background:rgba(127,127,127,.18)}
.gd-row.r1 .no{background:linear-gradient(135deg,#ffe38a,#f5a623);color:#2b1b00}.gd-row.r2 .no{background:linear-gradient(135deg,#f1f5f9,#94a3b8);color:#111}.gd-row.r3 .no{background:linear-gradient(135deg,#e7b48a,#b0704a);color:#2b1300}
.gd-row img,.gd-row i{width:30px;height:30px;border-radius:50%;object-fit:cover;background:var(--tag);font-style:normal;display:grid;place-items:center;font-weight:900}.gd-row b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}.gd-row .amt{font-size:12.5px;font-weight:800;color:var(--c-amber)}
.gift-pick{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}@media(max-width:640px){.gift-pick{grid-template-columns:repeat(4,minmax(0,1fr))}}
.gift-pick .gift img{width:48px;height:48px;object-fit:contain}

/* ===== 美術裝飾（用現有插畫；之後可換成專屬圖） ===== */
.gp-bar{position:relative;padding:10px 14px;border-radius:18px;border:1px solid var(--line);background:linear-gradient(90deg,var(--card) 40%,transparent),url(../assets/site-art/banner-first-quest-sm.webp) right 30%/cover no-repeat;overflow:hidden}
.gp-hero{box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.gp-card{position:relative}.gp-card:before{content:"";position:absolute;left:-40px;top:-40px;width:160px;height:160px;border-radius:50%;background:radial-gradient(circle,rgba(94,230,189,.18),transparent 70%);pointer-events:none;z-index:0}.gp-card>*{position:relative;z-index:1}
.gs{position:relative}.gs:after{content:"";position:absolute;right:18px;bottom:14px;width:120px;height:120px;background:var(--gs-art) center/contain no-repeat;opacity:.13;pointer-events:none}
.gs.g-outing{--gs-art:url(../assets/site-art/trip-city-walk.webp)}.gs.g-talk{--gs-art:url(../assets/site-art/trip-voice-chat.webp)}.gs.g-game{--gs-art:url(../assets/wulala-guild-party-v1.png)}
.gp-reviews{background:radial-gradient(220px 120px at 100% 0,rgba(245,184,46,.10),transparent),linear-gradient(170deg,var(--card2),var(--card))}
.rv-hd h3:before{content:"";display:inline-block;width:18px;height:18px;margin-right:6px;vertical-align:-3px;background:url(../assets/wulala-rank-gold-v1.png) center/contain no-repeat}
.sec h2{letter-spacing:.02em}
.nskill{background:radial-gradient(120px 80px at 100% 0,var(--gs),transparent),linear-gradient(165deg,var(--card2),var(--card))}

.chest .ic .ic{display:contents}.chest .ic svg.ic{width:26px;height:26px}

.chest svg{fill:none;stroke:var(--c-amber);stroke-width:1.8;width:26px;height:26px}

.gd-row img.medal{width:30px;height:34px;border-radius:0;object-fit:contain;background:none;flex:0 0 auto;filter:drop-shadow(0 2px 4px rgba(0,0,0,.35))}
.gp-box-hd .ttl img{width:28px;height:26px}

/* 技能圖示：插畫版（白色線條吉娃娃放在淡色圓角底上） */
.skic.art{background:linear-gradient(160deg,rgba(255,255,255,.14),rgba(255,255,255,.04));border:1px solid var(--line);overflow:hidden;padding:2px}
.skic.art.amber{background:radial-gradient(circle at 50% 40%,rgba(245,184,46,.28),rgba(245,184,46,.08))}.skic.art.violet{background:radial-gradient(circle at 50% 40%,rgba(179,156,255,.32),rgba(179,156,255,.08))}
.skic.art img{width:100%;height:100%;object-fit:contain;display:block;transform:scale(1.12)}
:root[data-theme=light] .skic.art{background:#fff}

/* 個人相簿：最多 8 張，第一張是頭貼，可拖曳排序 */
.album{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:6px 0 8px;max-width:540px;touch-action:none}
@media (max-width:520px){.album{grid-template-columns:repeat(3,1fr)}}
.ph-tile{position:relative;aspect-ratio:1;border-radius:14px;overflow:hidden;background:var(--tag);border:1.5px solid var(--line);cursor:grab;user-select:none;transition:transform .15s,opacity .15s}
.ph-tile img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.ph-tile.first{grid-column:span 2;grid-row:span 2;aspect-ratio:1;border:2px solid var(--accent);box-shadow:0 6px 20px color-mix(in srgb,var(--accent) 22%,transparent)}
.ph-ring{position:absolute;inset:50% auto auto 50%;width:62%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;box-shadow:0 0 0 999px rgba(0,0,0,.28);border:2px dashed rgba(255,255,255,.85);pointer-events:none}
.ph-tag{position:absolute;left:8px;top:8px;background:var(--accent);color:#06140f;font-size:12px;font-weight:900;padding:3px 9px;border-radius:999px;z-index:1}
.ph-no{position:absolute;left:6px;top:6px;background:rgba(0,0,0,.55);color:#fff;font-size:11px;font-weight:800;min-width:20px;height:20px;border-radius:10px;display:grid;place-items:center}
.ph-x{position:absolute;right:6px;top:6px;width:24px;height:24px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;font-size:16px;line-height:1;cursor:pointer;z-index:1}

.ph-crop{position:absolute;right:8px;bottom:8px;border:0;border-radius:999px;background:rgba(0,0,0,.6);color:#fff;font-size:12px;padding:4px 10px;cursor:pointer;z-index:1}
.ph-hold{opacity:.35}
.ph-ghost{position:fixed;z-index:9999;pointer-events:none;box-shadow:0 14px 34px rgba(0,0,0,.45);cursor:grabbing;opacity:.95}
.ph-add{aspect-ratio:1;border-radius:14px;border:1.5px dashed var(--line);background:transparent;color:var(--muted);display:grid;place-content:center;gap:4px;cursor:pointer;font:inherit}
.ph-add b{font-size:26px;color:var(--accent);font-weight:700}.ph-add span{font-size:12.5px}


/* 組隊頁：兩張同尺寸入口卡 */
.qstart{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}@media(max-width:640px){.qstart{grid-template-columns:1fr}}
.qstart-card{display:flex;align-items:center;gap:14px;min-height:96px;padding:18px 20px;border-radius:var(--r);border:1px solid var(--line);background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 14%,transparent),color-mix(in srgb,var(--accent) 4%,transparent));color:var(--text);text-align:left;cursor:pointer;font:inherit;transition:transform .15s,border-color .15s}
.qstart-card.horn{background:linear-gradient(135deg,rgba(245,184,46,.18),rgba(245,184,46,.05))}

.qs-ico{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 20%,transparent);color:var(--accent);flex:0 0 auto}.qstart-card.horn .qs-ico{background:rgba(245,184,46,.2);color:#f5b82e}
.qs-t{flex:1;display:grid;gap:4px}.qs-t b{font-size:17px}.qs-t small{color:var(--muted);font-size:13px}.qstart-card .c{color:var(--muted);font-size:20px}

/* 推薦夥伴分類：線上遊戲／語聊／戶外探險 */
.gtabs{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:2px 0 12px}@media(max-width:640px){.gtabs{grid-template-columns:repeat(2,1fr)}}
.gtab{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:14px;border:1px solid var(--line);background:var(--card,transparent);color:var(--text);font:inherit;cursor:pointer;text-align:left;transition:border-color .15s,background .15s}
.gtab b{font-size:15px;flex:1}.gtab small{color:var(--muted);font-size:12px}

.gtab[aria-selected="true"]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,transparent)}
.gtab[aria-selected="true"] small{color:var(--accent)}
.gt-all{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 20%,transparent);color:var(--accent);font-size:15px}

/* 訪客：登入提示 */
.needlogin{display:grid;gap:10px;text-align:center}.needlogin img{width:120px;margin:0 auto}.needlogin p{margin:0 0 6px;color:var(--muted);line-height:1.7}.needlogin p b{color:var(--text);font-size:16px}
.needlogin .btn{justify-content:center;text-decoration:none}
.guest-me{max-width:520px;margin:30px auto;padding:28px 24px;border:1px solid var(--line);border-radius:var(--r);text-align:center;background:linear-gradient(160deg,color-mix(in srgb,var(--accent) 12%,transparent),transparent)}
.guest-me img{width:160px}.guest-me h2{margin:8px 0}.guest-me p{color:var(--muted);line-height:1.8;margin:0 0 16px}
.gm-btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.gm-btns .btn{text-decoration:none;min-width:150px;justify-content:center}
.gm-guide{display:inline-block;margin-top:14px;color:var(--accent);font-size:13.5px;text-decoration:none}
.bar .btn.sm{text-decoration:none;margin-left:6px}

.qs-ico svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.q-live{margin:0 0 12px;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--accent) 12%,transparent);font-size:13.5px;color:var(--text)}
.qtype{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media(max-width:520px){.qtype{grid-template-columns:1fr}}
.qt{display:grid;gap:3px;text-align:left;padding:12px 14px;border-radius:14px;border:1.5px solid var(--line);background:transparent;color:var(--text);font:inherit;cursor:pointer}
.qt b{font-size:15px}.qt em{font-style:normal;font-weight:900;color:var(--accent)}.qt small{color:var(--muted);font-size:12px;line-height:1.5}
.qt[aria-pressed="true"]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}
.qt.express em{color:#f5b82e}.qt.express[aria-pressed="true"]{border-color:#f5b82e;background:rgba(245,184,46,.12)}
/* 極速派單全站廣播橫幅 */
.bcast{position:fixed;left:50%;top:calc(64px + env(safe-area-inset-top,0px));transform:translate(-50%,-140%);z-index:9000;display:flex;gap:12px;align-items:center;max-width:min(560px,calc(100vw - 32px));padding:12px 14px 12px 16px;border-radius:16px;background:linear-gradient(135deg,#f5b82e,#ff8a3d);color:#1b1206;box-shadow:0 14px 40px rgba(0,0,0,.4);transition:transform .35s cubic-bezier(.2,.9,.3,1.2)}
.bcast.on{transform:translate(-50%,0)}.bcast .tx{flex:1;display:grid;gap:2px}.bcast b{font-size:15px}.bcast small{font-size:12.5px;opacity:.85}
.bcast button{border:0;border-radius:999px;padding:7px 14px;font:inherit;font-weight:800;cursor:pointer;background:#1b1206;color:#f5b82e}.bcast .x{background:transparent;color:#1b1206;padding:4px 6px;font-size:18px}
@media (prefers-reduced-motion:reduce){.bcast{transition:none}}

/* 組隊需求狀態：公開中（綠）、極速（橘）更醒目 */
.row.live{box-shadow:inset 4px 0 0 var(--accent);background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 10%,transparent),transparent 60%)}
.row.xp{box-shadow:inset 4px 0 0 #ff8a3d;background:linear-gradient(90deg,rgba(255,138,61,.16),rgba(245,184,46,.04) 70%)}
.row.xp .l{color:#ffd08a}
.pill.live{background:color-mix(in srgb,var(--accent) 22%,transparent);color:var(--accent);border-color:transparent}
.pill.xp{background:linear-gradient(135deg,#f5b82e,#ff8a3d);color:#1b1206;border-color:transparent;font-weight:900;animation:xpPulse 1.8s ease-in-out infinite}
@keyframes xpPulse{50%{box-shadow:0 0 0 5px rgba(255,138,61,.18)}}
@media (prefers-reduced-motion:reduce){.pill.xp{animation:none}}
.bcast button{white-space:nowrap;flex:0 0 auto}

/* 留言者名稱可點、誰看過我 */
.ulink{cursor:pointer}
.cm .av[data-u]{cursor:pointer}
.vs-head{display:flex;align-items:center;gap:14px}.vs-head>div{flex:1;display:grid;gap:3px}.vs-head small{color:var(--muted);font-size:12.5px}
.switch{position:relative;width:48px;height:28px;flex:0 0 auto}.switch input{opacity:0;width:0;height:0}.switch span{position:absolute;inset:0;border-radius:999px;background:var(--line);transition:.2s;cursor:pointer}
.switch span::after{content:"";position:absolute;left:3px;top:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:.2s}
.switch input:checked+span{background:var(--accent)}.switch input:checked+span::after{transform:translateX(20px)}.switch.off span{opacity:.45;cursor:not-allowed}
.vs-av{width:42px;height:42px;border-radius:50%;object-fit:cover;flex:0 0 auto;display:grid;place-items:center;background:var(--tag);font-weight:900;color:var(--accent)}

/* 推薦夥伴大分類改用吉娃娃插畫；小分類（遊戲／語聊類型）展開列 */
.gt-art{width:40px;height:40px;border-radius:12px;object-fit:cover;background:#fff;flex:0 0 auto;border:1px solid var(--line)}
.gtab{padding:8px 12px}
.gsubs{display:flex;gap:8px;overflow-x:auto;scrollbar-width:thin;padding:2px 2px 10px;margin:-2px 0 10px}
.gsubs[hidden]{display:none}
.gsub{display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;padding:6px 12px 6px 7px;border-radius:999px;border:1px solid var(--line);background:var(--card,transparent);color:var(--text);font:inherit;font-size:13.5px;font-weight:700;cursor:pointer;white-space:nowrap}
.gsub:first-child{padding-left:12px}
.gsub .skic{border-radius:8px}
.gsub i{font-style:normal;font-size:11.5px;font-weight:900;min-width:18px;height:18px;padding:0 5px;border-radius:9px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 22%,transparent);color:var(--accent)}

.gsub.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,transparent)}
.gsub.none{opacity:.55}

/* 有人看過你的主頁：右上角小卡片 */
.visit-card{position:fixed;right:18px;top:calc(76px + env(safe-area-inset-top,0px));z-index:8900;display:flex;align-items:center;gap:10px;max-width:min(380px,calc(100vw - 32px));padding:10px 10px 10px 12px;border-radius:16px;background:var(--card,#122a22);border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);box-shadow:0 14px 36px rgba(0,0,0,.35);transform:translateX(120%);opacity:0;transition:transform .35s cubic-bezier(.2,.9,.3,1.2),opacity .25s}
.visit-card.on{transform:none;opacity:1}
.visit-card img,.visit-card .vc-av{width:40px;height:40px;border-radius:50%;object-fit:cover;flex:0 0 auto;display:grid;place-items:center;background:var(--tag);font-weight:900;color:var(--accent)}
.visit-card .vc-tx{flex:1;display:grid;gap:1px;min-width:0}.visit-card .vc-tx b{font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.visit-card .vc-tx small{color:var(--muted);font-size:12.5px}
.visit-card .vc-go{border:0;border-radius:999px;padding:7px 12px;font:inherit;font-weight:800;font-size:13px;cursor:pointer;background:var(--accent);color:#06140f;white-space:nowrap}
.visit-card .vc-x{border:0;background:transparent;color:var(--muted);font-size:18px;cursor:pointer;padding:2px 4px}
@media (prefers-reduced-motion:reduce){.visit-card{transition:none}}

/* 手機寬度：區塊標題旁的按鈕太多時換到下一行，標題不會被擠成一字一行 */
.sec{flex-wrap:wrap}.sec>div:first-of-type{min-width:0;flex:1 1 220px}
.sec>.pills{flex:0 1 auto;max-width:100%;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}.sec>.pills::-webkit-scrollbar{display:none}
@media (max-width:640px){.sec>.pills{flex-basis:100%}}

.online-note{display:flex;align-items:center;gap:8px;padding:11px 14px;border-radius:14px;background:var(--tag);color:var(--accent);font-weight:800;font-size:14px}
.q-cg{margin-bottom:8px}.q-cg small{display:block;font-size:12px;font-weight:800;color:var(--muted);margin:2px 0 6px}
/* 接單／組隊分頁：有進行中的訂單或派單時，小吉娃娃在圖示旁跳 */
.tab-pet{position:absolute;top:-16px;left:50%;margin-left:2px;width:32px;height:32px;object-fit:contain;pointer-events:none;filter:drop-shadow(0 3px 4px rgba(0,0,0,.35));animation:petHop 1s infinite cubic-bezier(.3,0,.4,1)}
@keyframes petHop{0%,100%{transform:translateY(0) rotate(-6deg)}45%{transform:translateY(-8px) rotate(4deg)}60%{transform:translateY(-8px) rotate(4deg)}}
@media(min-width:900px){.tab-pet{top:-18px;left:auto;right:-8px;margin:0;width:30px;height:30px}}
@media(prefers-reduced-motion:reduce){.tab-pet{animation:none}}
/* 訂單結束提示卡（畫面中間） */
dialog.done-dlg{border:0;padding:0;background:transparent;max-width:min(92vw,380px);margin:auto}
dialog.done-dlg::backdrop{background:rgba(0,0,0,.55);backdrop-filter:blur(3px)}
.done-in{display:grid;justify-items:center;gap:8px;text-align:center;padding:24px 22px 20px;border-radius:26px;background:linear-gradient(165deg,var(--card2),var(--card));border:1px solid var(--line);box-shadow:var(--shadow);color:var(--ink);animation:doneIn .35s cubic-bezier(.2,.9,.3,1.2) both}
@keyframes doneIn{from{opacity:0;transform:scale(.9) translateY(10px)}to{opacity:1;transform:none}}
.done-img{width:110px;height:110px;object-fit:contain;margin-top:-6px}
.done-in h2{font-size:20px}.done-in p{margin:0 0 8px;color:var(--muted);font-size:14.5px;line-height:1.6}
.done-btns{display:grid;grid-template-columns:1fr 1.4fr;gap:10px;width:100%}
@media(prefers-reduced-motion:reduce){.done-in{animation:none}}
.rv-stars{display:flex;justify-content:center;gap:6px;margin:6px 0 2px}.rv-stars button{all:unset;cursor:pointer;font-size:40px;line-height:1;color:var(--line);transition:transform .12s,color .12s}.rv-stars button.on{color:#ffc53d}.rv-stars button:active{transform:scale(.88)}.rv-stars button:focus-visible{outline:2px solid var(--accent);border-radius:6px}
.rv-word{text-align:center;font-weight:800;color:var(--accent);margin-bottom:10px}
.pw-in{position:relative;display:flex}.pw-in input{flex:1;padding-right:64px}.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:var(--accent);font-weight:800;font-size:13px;padding:6px 8px;cursor:pointer}
.pw-rules{list-style:none;margin:-4px 0 12px;padding:0;display:flex;flex-wrap:wrap;gap:6px}.pw-rules li{font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px;background:var(--tag);color:var(--muted)}.pw-rules li::before{content:'○ '}.pw-rules li.ok{color:var(--ok)}.pw-rules li.ok::before{content:'✓ '}
.sec-log{list-style:none;margin:0;padding:0;display:grid;gap:6px}.sec-log li{display:flex;justify-content:space-between;gap:10px;padding:10px 14px;border-radius:12px;background:var(--tag);font-size:13.5px}.sec-log time{color:var(--muted);font-size:12.5px;flex:0 0 auto}
.aml-ok{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;margin:4px 0 12px;border-radius:14px;background:var(--tag);font-size:13.5px;line-height:1.5;cursor:pointer}.aml-ok input{margin-top:3px;flex:0 0 auto;width:18px;height:18px;accent-color:var(--accent)}
.tp-amts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:12px}.tp-amts button{all:unset;text-align:center;padding:11px 0;border-radius:14px;border:1px solid var(--line);font-weight:800;cursor:pointer;font-variant-numeric:tabular-nums}.tp-amts button[aria-pressed=true]{border-color:var(--accent);background:var(--tag);color:var(--accent)}
.tp-two{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:10px}
.tp-methods{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.tp-m{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:14px;border:1px solid var(--line);cursor:pointer;font-weight:800;font-size:14.5px}
.tp-m .i{width:34px;height:34px;flex:none;display:grid;place-items:center;border-radius:10px;background:var(--tag);color:var(--muted);transition:color 160ms ease,background-color 160ms ease}.tp-m .i svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.tp-m.on .i{color:var(--accent);background:transparent;box-shadow:0 0 0 1px var(--accent) inset}.tp-m .l{flex:1;min-width:0}.tp-m em{font-style:normal;font-size:11px;font-weight:800;padding:2px 7px;border-radius:999px;background:var(--tag);color:var(--muted)}
.tp-m.on{border-color:var(--accent);background:var(--tag);box-shadow:0 0 0 1px var(--accent) inset}.tp-m:disabled{opacity:.5;cursor:default}
/* 滑鼠才有的效果：手機點過後不會卡在 hover 狀態 */
@media (hover:hover) and (pointer:fine){button.row:hover{background:rgba(127,127,127,.06)}.btn:hover{filter:brightness(1.04)}.lnk:hover{color:var(--accent)}.ph-x:hover{background:var(--danger,#e5484d)}.ph-add:hover{border-color:var(--accent);color:var(--text)}.qstart-card:hover{transform:translateY(-2px);border-color:var(--accent)}.qstart-card.horn:hover{border-color:#f5b82e}.gtab:hover{border-color:var(--accent)}.ulink:hover{color:var(--accent);text-decoration:underline}.gsub:hover{border-color:var(--accent)}}
/* 「今天想怎麼冒險？」：篩選推薦夥伴的玩法按鈕。橫向小卡：小插圖＋名稱＋幾位夥伴，選中變主色 */
.chips.trips{gap:8px}
.chips.trips .chip{flex-direction:row;width:auto;gap:8px;padding:6px 14px 6px 6px;border-radius:14px;border-width:1px;text-align:left}
.chips.trips .chip img{width:36px;height:36px;border-radius:10px;background:var(--tag);padding:2px}
.chips.trips .chip .t{display:grid;line-height:1.25}.chips.trips .chip b{font-size:13.5px}.chips.trips .chip small{font-size:11.5px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.chips.trips .chip[aria-pressed=true]{border-color:var(--accent);background:var(--tag);box-shadow:0 0 0 1px var(--accent) inset}
.chips.trips .chip[aria-pressed=true] small{color:var(--accent)}
.chips.trips .chip.none{opacity:.5}
.fltag{display:inline-flex;align-items:center;gap:6px;padding:2px 4px 2px 10px;border-radius:999px;background:var(--tag);color:var(--accent);font-weight:800}
.fltag button{all:unset;cursor:pointer;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:15px;line-height:1}.fltag button:focus-visible{outline:2px solid var(--accent)}
/* 夥伴卡片：角標（右上）、接單次數、標籤 */
.pcard .gbadges{position:absolute;right:8px;top:8px;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.pcard .gb{font-style:normal;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:900;color:#fff;background:rgba(0,0,0,.55);box-shadow:0 2px 6px rgba(0,0,0,.25)}
.pcard .gb.pick{background:linear-gradient(135deg,#f5b82e,#f08a1c);color:#3b1d00}.pcard .gb.hot{background:linear-gradient(135deg,var(--c-coral),#ff6b6b)}.pcard .gb.new{background:linear-gradient(135deg,#34d399,#10b981);color:#04261a}.pcard .gb.fav{background:linear-gradient(135deg,#a855f7,#6366f1)}
.pcard .star{display:flex;align-items:baseline;gap:2px;flex-wrap:wrap}.pcard .star .done{margin-left:auto;font-size:11.5px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.pcard .ptags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.pcard .ptags span{font-size:11px;font-weight:700;padding:1px 7px;border-radius:999px;background:var(--tag);color:var(--muted);white-space:nowrap}
.gp-chips .c.gb-pick{background:var(--c-amber-soft);color:var(--c-amber);font-weight:900}.gp-chips .c.gb-hot{background:var(--c-coral-soft);color:var(--c-coral);font-weight:900}.gp-chips .c.gb-new{background:rgba(16,185,129,.16);color:#10b981;font-weight:900}.gp-chips .c.gb-fav{background:var(--c-violet-soft);color:var(--c-violet);font-weight:900}.gp-chips .c.plat{background:var(--c-sky-soft);color:var(--c-sky);font-weight:800}
/* 外出行程花費（誰付）：派單表單與需求／訂單詳情 */
.field .req{font-style:normal;font-size:11px;font-weight:800;color:var(--c-coral);margin-left:6px}
.field small.hint{display:block;margin-top:6px;font-size:12px;color:var(--muted)}
.exp-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 18px 12px;border-top:1px solid var(--line)}
.exp-row .exp-k{font-size:13px;color:var(--muted)}.exp-row .exp-n{font-size:13.5px}
/* 儲值金額下方「可得 X R幣」、提領「實際匯款 NT$」 */
.tp-get{margin-top:6px;font-size:13px;color:var(--muted);min-height:18px}.tp-get b{color:var(--accent);font-variant-numeric:tabular-nums}
.tp-amts button small{display:block;font-size:11px;font-weight:700;color:var(--muted);margin-top:2px}
