/* 樂遊玩家筆記 — midnight violet + champagne gold */
:root{
  --bg:#100b1f;--bg2:#160f2b;--panel:#1c1436;--panel2:#241a45;--line:#34295c;--line2:#4a3b7e;
  --ink:#f3effb;--soft:#ddd5ef;--muted:#a99fc6;
  --gold:#f4c65a;--gold-ink:#ffdf8e;--gold-deep:#c98a1c;
  --grad:linear-gradient(135deg,#fff3c4 0%,#f7cc62 42%,#d8962a 100%);
  --violet:#a07bff;--violet-soft:#2b2052;
  --green:#06c755;--red:#ff9a8f;--red-bg:#2e1426;--red-line:#6b2a45;
  --r:12px;--max:880px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
[id]{scroll-margin-top:76px}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.85 "Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;padding-bottom:calc(76px + env(safe-area-inset-bottom))}
a{color:var(--gold-ink);text-underline-offset:3px}
a:focus-visible,summary:focus-visible,.btn:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:6px}
img{max-width:100%;height:auto}
strong{color:#fff}
.wrap{max-width:var(--max);margin:0 auto;padding-inline:16px}

/* ===== top bar ===== */
.topbar{position:sticky;top:0;z-index:20;background:rgba(16,11,31,.9);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.topbar .wrap{display:flex;align-items:center;gap:12px;min-height:60px;max-width:1120px}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;flex:none}
.brand-mark{width:34px;height:34px;display:block;filter:drop-shadow(0 3px 10px rgba(247,204,98,.4))}
.brand-text{display:flex;flex-direction:column;line-height:1.15}
.brand-name{font-weight:900;font-size:16.5px;letter-spacing:.5px;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.brand-sub{font-size:10.5px;color:var(--muted);letter-spacing:.8px}
.menu{display:flex;gap:2px;overflow-x:auto;flex:1;min-width:0;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);mask-image:linear-gradient(90deg,#000 88%,transparent)}
.menu::-webkit-scrollbar{display:none}
.menu a{color:var(--soft);text-decoration:none;padding:6px 11px;border-radius:8px;white-space:nowrap;font-size:15px}
.menu a:hover{color:var(--gold-ink);background:var(--violet-soft)}
.menu a[aria-current]{color:#1b1206;background:var(--grad);font-weight:700}
.topcta{display:none}
@media (min-width:920px){.topcta{display:inline-block;flex:none;padding:8px 18px;border-radius:10px;background:var(--grad);color:#1b1206;font-weight:900;text-decoration:none;font-size:14px;box-shadow:0 6px 18px rgba(247,204,98,.25)}}
/* desktop: bigger, easier-to-click top bar */
@media (min-width:1100px){
  .topbar .wrap{min-height:76px;gap:20px;max-width:1240px}
  .brand-mark{width:42px;height:42px}
  .brand-name{font-size:20px}
  .brand-sub{font-size:12px}
  .menu{gap:6px;-webkit-mask-image:none;mask-image:none}
  .menu a{font-size:17.5px;padding:9px 16px;border-radius:10px}
  .topcta{font-size:16px;padding:11px 24px}
}

/* ===== inner page head ===== */
.pagehero{position:relative;overflow:hidden;border-bottom:1px solid var(--line);background:
  radial-gradient(700px 260px at 85% -40%,rgba(160,123,255,.35),transparent 65%),
  radial-gradient(500px 220px at 0% 120%,rgba(247,204,98,.14),transparent 60%),
  linear-gradient(180deg,#1a1233,#100b1f)}
.pagehero .wrap{padding-top:18px;padding-bottom:24px}
.trail{font-size:13px;color:var(--muted);display:flex;gap:8px;align-items:center;margin:0 0 6px}
.trail a{color:var(--muted);text-decoration:none}
.trail a:hover{color:var(--gold-ink)}
.pagehero h1{margin:4px 0 8px}
.meta{color:var(--muted);font-size:13px;margin:0}

/* ===== home opening ===== */
.opening{position:relative;overflow:hidden;border-bottom:1px solid var(--line);background:
  radial-gradient(640px 340px at 90% 0%,rgba(160,123,255,.42),transparent 62%),
  radial-gradient(520px 300px at -5% 105%,rgba(247,204,98,.18),transparent 60%),
  linear-gradient(165deg,#1d1438 0%,#100b1f 72%)}
.opening::after{content:"";position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(rgba(255,233,170,.5) 1px,transparent 1.5px);background-size:44px 44px;opacity:.12;-webkit-mask-image:linear-gradient(180deg,#000,transparent 80%);mask-image:linear-gradient(180deg,#000,transparent 80%)}
.opening .wrap{position:relative;z-index:1;padding-top:30px;padding-bottom:34px;max-width:1040px}
.opening-grid{display:grid;gap:24px;align-items:center}
@media (min-width:840px){.opening-grid{grid-template-columns:1.1fr .9fr}}
.badge-line{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.badge{font-size:12px;color:var(--gold-ink);border:1px solid #5f4a1f;background:rgba(247,204,98,.07);border-radius:6px;padding:2px 9px}
.opening h1{font-size:31px;line-height:1.35;margin:0 0 12px;letter-spacing:.3px}
.opening h1 .g{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.opening .sub{color:var(--soft);margin:0 0 18px}
.opening .btns{display:flex;gap:10px;flex-wrap:wrap}
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:18px}
.stat{background:rgba(255,255,255,.035);border:1px solid var(--line);border-radius:10px;padding:10px 6px;text-align:center}
.stat b{display:block;font-size:19px;color:var(--gold-ink);line-height:1.25;font-variant-numeric:tabular-nums}
.stat span{font-size:12px;color:var(--muted)}
.offer{position:relative;background:linear-gradient(165deg,#2a1f4f,#181030);border:1px solid var(--line2);border-radius:16px;padding:14px 14px 16px;box-shadow:0 18px 50px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.07)}
.offer img{display:block;width:100%;border-radius:10px;aspect-ratio:1920/450;object-fit:cover}
.offer .cap{font-size:11px;color:var(--muted);margin:6px 2px 10px}
.offer .o-label{font-size:13px;color:var(--soft)}
.offer .o-big{font-size:38px;font-weight:900;line-height:1.15;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;font-variant-numeric:tabular-nums}
.offer .o-big small{font-size:18px}
.offer .o-note{display:inline-block;margin-top:6px;background:rgba(247,204,98,.12);color:var(--gold-ink);border:1px solid #5f4a1f;padding:2px 12px;border-radius:6px;font-size:14px;font-weight:700}
.offer .o-foot{font-size:12px;color:var(--muted);margin-top:8px}

/* ===== article ===== */
main{padding:20px 0 44px}
h1{font-size:28px;line-height:1.4;text-wrap:balance}
h2{font-size:22px;line-height:1.45;margin:42px 0 14px;display:flex;align-items:center;gap:12px;text-wrap:balance}
h2::before{content:"";flex:none;width:10px;height:10px;border-radius:2px;transform:rotate(45deg);background:var(--grad);box-shadow:0 0 0 4px rgba(247,204,98,.12)}
h3{font-size:18px;margin:26px 0 8px;color:var(--gold-ink)}
p{margin:0 0 14px}
ul,ol{padding-left:22px}
li{margin:5px 0}
.intro{font-size:17px;color:var(--soft);border-left:3px solid var(--gold);padding:4px 0 4px 16px;margin:4px 0 20px}
.quick{background:linear-gradient(160deg,#261b4a,#1a1334);border:1px solid var(--line2);border-radius:var(--r);padding:16px 18px;margin:18px 0}
.quick h2{margin:0 0 8px;font-size:17px;color:var(--gold-ink)}
.quick h2::before{width:8px;height:8px}
.quick ul{margin:0;padding-left:20px}
.tip{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-size:14.5px;color:var(--muted)}
.tip strong{color:var(--soft)}
.alert{background:var(--red-bg);border:1px solid var(--red-line);border-radius:10px;padding:12px 14px;font-size:15px;color:#f5d9de}
.alert strong{color:var(--red)}
.todo{background:#4a3a00;border:2px dashed #e0b400;padding:12px;border-radius:10px;font-weight:700;color:#ffe48a}

/* tables */
.tablebox{overflow-x:auto;margin:12px 0 18px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel)}
table{border-collapse:collapse;width:100%;min-width:520px;font-size:15px}
th,td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{background:var(--panel2);color:var(--gold-ink);font-weight:700;white-space:nowrap}
td:first-child{min-width:6.5em}
tr:last-child td{border-bottom:0}
td.num,th.num{font-variant-numeric:tabular-nums;white-space:nowrap}

/* numbered flow */
ol.flow{counter-reset:f;list-style:none;padding:0;margin:14px 0 18px}
ol.flow>li{counter-increment:f;position:relative;padding:2px 0 16px 50px;margin:0}
ol.flow>li::before{content:counter(f);position:absolute;left:0;top:0;width:34px;height:34px;border-radius:10px;background:var(--grad);color:#1b1206;font-weight:900;display:grid;place-items:center;font-size:15px}
ol.flow>li:not(:last-child)::after{content:"";position:absolute;left:16px;top:40px;bottom:4px;width:2px;background:var(--line)}

/* cards */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin:12px 0 20px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px;min-width:0}
a.card{display:block;text-decoration:none;color:inherit;transition:border-color .2s,transform .2s}
a.card:hover{border-color:var(--line2);transform:translateY(-2px)}
.card h3{margin:0 0 6px;font-size:17px;color:#fff}
.card p{margin:0;font-size:14.5px;color:var(--muted)}
.card .go{display:inline-block;margin-top:8px;font-size:14px;color:var(--gold-ink)}

/* key facts */
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:14px 0 20px}
.fact{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.fact span{display:block;font-size:12.5px;color:var(--muted)}
.fact b{display:block;font-size:17px;color:#fff;line-height:1.45;margin-top:2px}

/* promo coupons */
.coupons{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px;margin:12px 0 20px}
.coupon{position:relative;background:linear-gradient(140deg,#2c2053,#1b1435);border:1px solid var(--line2);border-radius:14px;padding:16px 16px 14px 20px;overflow:hidden}
.coupon::before{content:"";position:absolute;left:0;top:14px;bottom:14px;border-left:3px dotted rgba(247,204,98,.45)}
.coupon .c-tag{font-size:12px;color:var(--violet);letter-spacing:.5px;font-weight:700}
.coupon .c-amount{font-size:26px;font-weight:900;line-height:1.25;margin:3px 0 4px;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.coupon p{margin:0;font-size:14px;color:var(--soft)}
.coupon .c-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.chip{font-size:12px;padding:1px 9px;border-radius:6px;background:rgba(247,204,98,.1);color:var(--gold-ink);border:1px solid #5f4a1f;white-space:nowrap}
.chip.v{background:var(--violet-soft);color:#cdb8ff;border-color:var(--line2)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 14px}

/* official banners */
.banner-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;margin:10px 0 16px}
.promo-banner{margin:0;border-radius:12px;overflow:hidden;border:1px solid var(--line);background:var(--panel)}
.promo-banner img{display:block;width:100%;aspect-ratio:1920/450;object-fit:cover}
.promo-banner figcaption{display:grid;grid-template-columns:1fr auto;column-gap:8px;padding:9px 12px 10px;line-height:1.45}
.promo-banner figcaption b{font-size:15px;color:#fff}
.promo-banner figcaption span{grid-column:1;font-size:12.5px;color:var(--muted)}
.promo-banner figcaption em{grid-column:2;grid-row:1/3;align-self:center;font-style:normal;font-size:11px;color:var(--muted);border:1px solid var(--line2);border-radius:6px;padding:1px 8px;white-space:nowrap}

/* game category tiles (no images) */
.cat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0 10px}
@media (max-width:640px){.cat-grid{grid-template-columns:repeat(2,1fr)}}
.cat{position:relative;display:flex;flex-direction:column;justify-content:flex-end;min-height:118px;padding:14px;border-radius:14px;text-decoration:none;color:#fff;overflow:hidden;border:1px solid var(--line2);background:
  radial-gradient(160px 120px at 100% 0%,rgba(247,204,98,.28),transparent 70%),
  linear-gradient(150deg,#33266a,#1a1334 70%);transition:transform .2s,border-color .2s}
.cat:hover{transform:translateY(-2px);border-color:#6a55b0}
.cat.has-img{min-height:150px;background:linear-gradient(195deg,rgba(16,11,31,0) 0%,rgba(16,11,31,.45) 50%,rgba(16,11,31,.92) 100%),var(--bg) center right/cover no-repeat,#1a1334}
.cat.has-img .cat-count{text-shadow:none;filter:drop-shadow(0 2px 6px rgba(0,0,0,.6))}
.cat.has-img b,.cat.has-img small{text-shadow:0 1px 6px rgba(0,0,0,.8)}
.cat.has-img small{color:var(--soft)}
.game-img{margin:6px 0 18px;border-radius:14px;overflow:hidden;border:1px solid var(--line2)}
.game-img img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover}
.cat .cat-count{position:absolute;top:10px;right:12px;font-size:24px;font-weight:900;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;font-variant-numeric:tabular-nums}
.cat b{font-size:17px}
.cat small{color:var(--muted);font-size:12.5px;line-height:1.5}

/* pros / cons */
.vs{display:grid;gap:12px;margin:12px 0 20px}
@media (min-width:700px){.vs{grid-template-columns:1fr 1fr}.vs.single{grid-template-columns:1fr}}
.vs>div{border-radius:var(--r);padding:14px 16px;border:1px solid var(--line);background:var(--panel)}
.vs h3{margin:0 0 6px;font-size:16px}
.vs .pros h3{color:#8fe3b0}
.vs .cons h3{color:var(--red)}
.vs ul{margin:0;padding-left:20px;font-size:15px}

/* player voices + chat screenshot */
.voices{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;margin:14px 0 16px}
.voice{position:relative;margin:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:12px 16px 10px 18px}
.voice::before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:0 3px 3px 0;background:var(--grad)}
.voice blockquote{margin:0}
.voice blockquote p{margin:0;line-height:1.7}
.voice figcaption{margin-top:6px;font-size:12.5px;color:var(--muted)}
.shot{margin:4px 0 18px;max-width:440px}
.shot.wide{max-width:100%}
.shot img{display:block;width:100%;border-radius:12px;border:1px solid var(--line2);background:#fff}
.shot figcaption{margin-top:6px;font-size:12.5px;color:var(--muted)}
.chat-wall{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(150px,1fr);gap:10px;overflow-x:auto;margin:14px 0 8px;padding-bottom:8px;scroll-snap-type:x mandatory;scrollbar-width:thin}
.chat{scroll-snap-align:start;display:block;text-decoration:none;text-align:center;color:var(--muted);font-size:12.5px}
.chat img{display:block;width:100%;aspect-ratio:480/1041;object-fit:cover;border-radius:12px;border:1px solid var(--line2);background:#fff;transition:transform .2s}
.chat:hover img{transform:translateY(-2px)}
.chat span{display:block;margin-top:6px}

/* home promo cards */
.promo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin:14px 0 16px}
.pcard{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:14px;overflow:hidden;text-decoration:none;color:inherit;transition:border-color .2s,transform .2s}
.pcard:hover{border-color:#6a55b0;transform:translateY(-2px)}
.pcard img{display:block;width:100%;aspect-ratio:1920/450;object-fit:cover}
.p-body{display:flex;flex-direction:column;gap:4px;padding:12px 14px 14px;flex:1}
.p-tag{font-size:12px;color:var(--violet);font-weight:700;letter-spacing:.5px}
.p-amt{font-size:21px;font-weight:900;line-height:1.35;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.p-body p{margin:0;font-size:14px;color:var(--soft)}
.p-body .c-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto;padding-top:8px}
.p-body .go{font-size:13.5px;color:var(--gold-ink);margin-top:4px}

/* FAQ */
details.qa{background:var(--panel);border:1px solid var(--line);border-radius:10px;margin:8px 0;padding:0 16px}
details.qa[open]{border-color:var(--line2)}
details.qa summary{cursor:pointer;font-weight:700;padding:14px 30px 14px 0;list-style:none;position:relative}
details.qa summary::-webkit-details-marker{display:none}
details.qa summary::after{content:"";position:absolute;right:4px;top:20px;width:9px;height:9px;border-right:2px solid var(--gold);border-bottom:2px solid var(--gold);transform:rotate(45deg);transition:transform .2s}
details.qa[open] summary::after{transform:rotate(-135deg);top:24px}
details.qa .ans{padding:0 0 14px;color:var(--soft)}

/* callout (CTA) */
.callout{position:relative;overflow:hidden;margin:34px 0;padding:24px 18px;text-align:center;border-radius:16px;border:1px solid var(--line2);background:
  radial-gradient(420px 180px at 50% -30%,rgba(247,204,98,.25),transparent 70%),
  linear-gradient(160deg,#2a1f4f,#150f2a)}
.callout-text{margin:0 0 14px;color:var(--soft)}
.callout-btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.callout small{display:block;margin-top:12px;color:var(--muted);font-size:12px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:150px;padding:12px 20px;border-radius:10px;font-weight:900;text-decoration:none;text-align:center;transition:transform .15s,filter .15s}
.btn:hover{transform:translateY(-1px);filter:brightness(1.07)}
.btn-gold{background:var(--grad);color:#1b1206;box-shadow:0 8px 22px rgba(247,204,98,.22)}
.btn-line{background:var(--green);color:#fff}
.btn-ghost{border:1px solid var(--line2);color:var(--soft)}

/* next read */
.next-read{margin-top:38px}
.next-read ul{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.next-read li{margin:0}
.next-read a{display:grid;gap:2px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;text-decoration:none}
.next-read a b{color:var(--gold-ink);font-size:15px}
.next-read a span{color:var(--muted);font-size:13.5px}
.next-read a:hover{border-color:var(--line2)}

/* mobile dock */
.dock{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;gap:8px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:rgba(16,11,31,.96);border-top:1px solid var(--line);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.dock .btn{flex:1;min-width:0;padding:11px 8px;font-size:15px}
@media (min-width:920px){.dock{display:none}body{padding-bottom:0}}

/* footer */
.foot{background:#0b0716;border-top:1px solid var(--line);color:var(--muted);font-size:14px;padding:30px 0 36px}
.foot a{color:var(--soft);text-decoration:none}
.foot a:hover{color:var(--gold-ink)}
.foot-nav{display:flex;flex-wrap:wrap;gap:6px 16px;margin-bottom:16px}
.foot-note{border-top:1px solid var(--line);padding-top:16px;margin:0 0 10px;line-height:1.75}
.foot-note strong{color:var(--soft)}
.foot-copy{margin:0;font-size:12.5px}

@media (max-width:600px){
  h1,.pagehero h1{font-size:24px}
  .opening h1{font-size:26px}
  h2{font-size:20px}
  .offer .o-big{font-size:33px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
