/* NightReel — mobile-first short-drama app (H5)
   Tokens from the "深空紫" spec: near-black ground, glass surfaces, one magenta accent. */

:root{
  --bg:#0A050D;--bg-2:#100813;--bg-3:#1A0A1E;--bg-rgb:10,5,13;
  --orb-a:#3A0E2A;--orb-b:#1A1030;--orb-c:#46102F;
  --glass:rgba(255,255,255,.045);--glass-2:rgba(255,255,255,.07);
  --line:rgba(255,255,255,.08);--line-soft:rgba(255,255,255,.05);
  --ink:#EAEEF5;--ink-2:#9BA6B5;--ink-3:#78828F;
  --pp:#D8409B;--pp-1:#F27BC4;--pp-2:#A11C74;--pp-rgb:216,64,155;
  --pp-glow:rgba(216,64,155,.3);--pp-ink:#2B0019;--pp-lift:#FBA8DB;
  --red:#F6465D;--amber:#F0B90B;--blue:#7FB0FF;
  --sans:'Inter','Noto Sans TC',-apple-system,BlinkMacSystemFont,'PingFang TC','Microsoft JhengHei','Segoe UI',Roboto,sans-serif;
  --display:'Bodoni Moda','Noto Serif TC','PingFang TC','Songti TC','PMingLiU',Georgia,serif;
  --mono:'JetBrains Mono','SF Mono',ui-monospace,Consolas,monospace;
  --ease:cubic-bezier(.2,.7,.2,1);
  --gut:16px;
  --hdr:52px;
  --tab:60px;
  --sab:env(safe-area-inset-bottom,0px);
  --appw:520px;
  --vh:100vh;
}
@supports(height:100dvh){:root{--vh:100dvh}}
*{box-sizing:border-box}
html{color-scheme:dark;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-weight:300;font-size:14px;line-height:1.5;min-height:100vh;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overflow-x:hidden}
body.lock{overflow:hidden}
::selection{background:var(--pp);color:var(--pp-ink)}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
button{font-family:var(--sans);font-weight:300;color:inherit;background:none;border:0;cursor:pointer;padding:0;touch-action:manipulation}
button:disabled{cursor:not-allowed;opacity:.5}
:focus-visible{outline:2px solid var(--pp);outline-offset:2px}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums}
.eyebrow{font-family:var(--mono);font-size:9.5px;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-3)}
.hide{display:none!important}

/* ── atmosphere ── */
.orbs,.noise{position:fixed;inset:0;pointer-events:none}
.orbs{z-index:0;overflow:hidden}
.orb{position:absolute;border-radius:50%;filter:blur(120px)}
.orb.a{width:600px;height:600px;background:var(--orb-a);top:-160px;left:8%;animation:drift1 30s ease-in-out infinite alternate}
.orb.b{width:520px;height:520px;background:var(--orb-b);right:-120px;bottom:-140px;animation:drift2 38s ease-in-out infinite alternate}
.orb.c{width:480px;height:480px;background:var(--orb-c);top:38%;right:22%;animation:drift1 26s ease-in-out infinite alternate-reverse}
.noise{z-index:1;opacity:.28;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
@keyframes drift1{from{transform:translate(0,0) scale(1)}to{transform:translate(60px,-50px) scale(1.15)}}
@keyframes drift2{from{transform:translate(0,0) scale(1.1)}to{transform:translate(-70px,60px) scale(.95)}}

/* ── app shell: a phone column, centered on wide screens ── */
.app{position:relative;z-index:2;width:100%;max-width:var(--appw);margin:0 auto;min-height:var(--vh)}
.page{display:none;padding:0 var(--gut) calc(var(--tab) + var(--sab) + 24px)}
.page.on{display:block;animation:fadein .3s var(--ease)}
@keyframes fadein{from{opacity:0}to{opacity:1}}

.hdr{position:sticky;top:0;z-index:30;height:var(--hdr);display:flex;align-items:center;gap:10px;padding:0 var(--gut);margin:0 calc(-1 * var(--gut));background:rgba(var(--bg-rgb),.72);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-bottom:1px solid var(--line-soft)}
.hdr .brand{display:flex;align-items:center;gap:8px;flex:1;min-width:0}
.hdr .mk{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--pp-1),var(--pp-2));box-shadow:0 0 20px var(--pp-glow);display:grid;place-items:center;color:var(--pp-ink);font-family:var(--display);font-weight:800;font-size:17px;font-style:italic;flex:0 0 auto}
.hdr .brand b{font-family:var(--display);font-weight:700;font-size:18px;line-height:1;letter-spacing:.01em}
.hdr .brand b i{font-style:italic;color:var(--pp-1)}
.hdr h1{flex:1;margin:0;font-weight:300;font-size:16px;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}
.hdr .ib{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;color:var(--ink-2);background:rgba(255,255,255,.05);border:1px solid var(--line);flex:0 0 auto;transition:color .15s,background .15s}
.hdr .ib:hover{color:var(--ink);background:rgba(255,255,255,.08)}
.hdr .ib svg{width:18px;height:18px}
.coinpill{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 10px 0 6px;border-radius:999px;font-family:var(--mono);font-size:12px;font-weight:500;color:var(--amber);background:rgba(240,185,11,.1);box-shadow:inset 0 0 0 1px rgba(240,185,11,.28);flex:0 0 auto;font-variant-numeric:tabular-nums}
.coinpill i{width:16px;height:16px;border-radius:50%;background:linear-gradient(135deg,#FFE08A,#E0A400);display:grid;place-items:center;color:#3A2A00;font-size:9px;font-weight:700;font-style:normal}
.vippill{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 10px;border-radius:999px;font-size:11.5px;font-weight:500;background:rgba(var(--pp-rgb),.12);color:var(--pp);box-shadow:inset 0 0 0 1px rgba(var(--pp-rgb),.25);flex:0 0 auto;white-space:nowrap}
.vippill.off{background:rgba(255,255,255,.05);color:var(--ink-2);box-shadow:inset 0 0 0 1px var(--line)}

.tabbar{position:fixed;left:50%;transform:translateX(-50%);bottom:0;width:100%;max-width:var(--appw);z-index:40;height:calc(var(--tab) + var(--sab));padding-bottom:var(--sab);display:grid;grid-template-columns:repeat(4,1fr);background:rgba(var(--bg-rgb),.82);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-top:1px solid var(--line-soft);transition:transform .3s var(--ease)}
.tabbar.away{transform:translate(-50%,110%)}
.tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:10px;color:var(--ink-3);transition:color .15s;letter-spacing:.02em}
.tabbar a svg{width:23px;height:23px}
.tabbar a.on{color:var(--pp);font-weight:500}
.tabbar a.on svg{filter:drop-shadow(0 0 8px rgba(var(--pp-rgb),.6))}

.sec{margin-top:22px}
.sec-hd{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:10px}
.sec-hd h2{margin:0;font-weight:300;font-size:16.5px;letter-spacing:.02em;display:flex;align-items:baseline;gap:8px}
.sec-hd h2 span{font-family:var(--mono);font-size:9px;letter-spacing:.25em;text-transform:uppercase;color:var(--ink-3)}
.sec-hd a,.sec-hd button{font-size:12px;color:var(--ink-3);transition:color .15s;cursor:pointer;white-space:nowrap}
.sec-hd a:hover,.sec-hd button:hover{color:var(--pp)}

/* ── primitives ── */
.card{background:var(--glass);border:1px solid var(--line);border-radius:18px;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:0 20px 50px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.05)}
.card-pad{padding:14px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 20px;border-radius:999px;font-size:14px;font-weight:500;border:1px solid var(--line);background:rgba(255,255,255,.07);color:var(--ink);transition:transform .2s var(--ease),box-shadow .2s,background .15s;white-space:nowrap;cursor:pointer}
.btn:active{transform:scale(.97)}
.btn svg{flex:0 0 auto}
.btn-pp{background:linear-gradient(135deg,var(--pp-1),var(--pp-2));color:var(--pp-ink);font-weight:600;border-color:transparent;box-shadow:0 0 30px rgba(var(--pp-rgb),.28)}
.btn-ghost{background:rgba(var(--pp-rgb),.12);color:var(--pp);border-color:rgba(var(--pp-rgb),.25)}
.btn.sm{height:34px;padding:0 14px;font-size:12.5px}
.btn.xs{height:28px;padding:0 11px;font-size:11.5px}
.btn.full{width:100%}
.btn.ic{width:44px;padding:0;border-radius:50%}
.tag{display:inline-block;padding:.2em .65em;border-radius:999px;background:rgba(255,255,255,.07);font-size:11px;color:var(--ink-2);white-space:nowrap}
.tag.hot{background:rgba(240,185,11,.12);color:var(--amber)}
.tag.pp{background:rgba(var(--pp-rgb),.14);color:var(--pp-1)}
.tag.new{background:rgba(127,176,255,.14);color:var(--blue)}
.badge{display:inline-block;padding:.2em .6em;border-radius:999px;font-size:10px;font-weight:500;letter-spacing:.05em;white-space:nowrap}
.badge.s0{background:rgba(240,185,11,.12);color:var(--amber)}
.badge.s1{background:rgba(var(--pp-rgb),.12);color:var(--pp)}
.rating{display:inline-block;font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.1em;padding:1px 5px;border:1px solid rgba(255,255,255,.35);border-radius:4px;color:var(--ink);line-height:1.4}
.msg{padding:12px 14px;border-radius:14px;font-size:13px;line-height:1.6}
.msg.ok{background:rgba(var(--pp-rgb),.1);border:1px solid rgba(var(--pp-rgb),.3);color:var(--pp-lift)}
.msg.warn{background:rgba(240,185,11,.1);border:1px solid rgba(240,185,11,.3);color:#F7D36A}
.chips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin:0 calc(-1 * var(--gut));padding:2px var(--gut) 6px}
.chips::-webkit-scrollbar{display:none}
.chip{flex:0 0 auto;height:32px;display:inline-flex;align-items:center;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--ink-2);font-size:12.5px;transition:background .15s,color .15s,border-color .15s}
.chip.on{background:rgba(var(--pp-rgb),.12);border-color:rgba(var(--pp-rgb),.4);color:var(--pp);font-weight:500}
.chips.sticky{position:sticky;top:var(--hdr);z-index:25;background:rgba(var(--bg-rgb),.8);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);padding-top:8px}

/* posters */
.poster{position:relative;aspect-ratio:2/3;border-radius:10px;overflow:hidden;background:#12091A;border:1px solid var(--line);box-shadow:0 10px 26px rgba(0,0,0,.4);display:block;isolation:isolate;-webkit-user-select:none;user-select:none}
.poster img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.poster::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,4,10,.05),transparent 35%,transparent 52%,rgba(7,4,10,.92));z-index:1}
.poster .pt{position:absolute;left:8px;right:8px;bottom:9px;z-index:2;font-family:var(--display);font-weight:900;font-size:13.5px;letter-spacing:.04em;line-height:1.2;text-transform:uppercase;color:#F8F2F6;text-shadow:0 2px 12px rgba(0,0,0,.7);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.poster .flag{position:absolute;top:6px;left:6px;z-index:2;font-family:var(--mono);font-size:8px;font-weight:700;letter-spacing:.12em;padding:2px 6px;border-radius:999px}
.poster .flag.vip{background:linear-gradient(135deg,var(--pp-1),var(--pp-2));color:var(--pp-ink);box-shadow:0 0 14px rgba(var(--pp-rgb),.35)}
.poster .flag.free{background:rgba(255,255,255,.16);color:#fff;backdrop-filter:blur(6px)}
.poster .flag.new{background:rgba(127,176,255,.25);color:#DCE9FF;backdrop-filter:blur(6px)}
.poster .eps{position:absolute;top:6px;right:6px;z-index:2;font-family:var(--mono);font-size:8.5px;color:rgba(255,255,255,.8);background:rgba(0,0,0,.4);padding:2px 5px;border-radius:999px;backdrop-filter:blur(6px)}
.poster .prog{position:absolute;left:0;right:0;bottom:0;height:3px;background:rgba(255,255,255,.15);z-index:3}
.poster .prog i{display:block;height:100%;background:var(--pp);box-shadow:0 0 8px var(--pp)}
.poster .epn{position:absolute;left:0;right:0;bottom:6px;z-index:3;text-align:center;font-family:var(--mono);font-size:9.5px;color:var(--pp-1)}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.grid3 .cap{margin-top:6px;font-size:12px;font-weight:500;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.grid3 .sub{font-size:10.5px;color:var(--ink-3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.grid3 .sub b{font-family:var(--mono);font-weight:500;color:var(--pp)}
.rail{display:flex;gap:10px;overflow-x:auto;scrollbar-width:none;scroll-snap-type:x proximity;margin:0 calc(-1 * var(--gut));padding:4px var(--gut) 8px}
.rail::-webkit-scrollbar{display:none}
.rail>*{flex:0 0 31%;scroll-snap-align:start;min-width:0}
.rail.cw>*{flex-basis:27%}

/* banner carousel */
.banners{display:flex;gap:10px;overflow-x:auto;scrollbar-width:none;scroll-snap-type:x mandatory;margin:12px calc(-1 * var(--gut)) 0;padding:0 var(--gut)}
.banners::-webkit-scrollbar{display:none}
.banner{position:relative;flex:0 0 100%;scroll-snap-align:center;aspect-ratio:16/9;border-radius:16px;overflow:hidden;border:1px solid var(--line);background:#12091A;box-shadow:0 20px 50px rgba(0,0,0,.45);isolation:isolate;display:block}
.banner img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.banner .veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,4,10,.1),transparent 35%,rgba(7,4,10,.92))}
.banner .k{position:absolute;top:10px;left:10px;z-index:2}
.banner .tx{position:absolute;left:14px;right:14px;bottom:12px;z-index:2;display:flex;align-items:flex-end;gap:12px}
.banner .tx div{flex:1;min-width:0}
.banner .tx b{display:block;font-family:var(--display);font-weight:900;font-size:21px;line-height:1.15;letter-spacing:.04em;text-transform:uppercase;letter-spacing:.005em;text-shadow:0 2px 12px rgba(0,0,0,.7)}
.banner .tx small{display:block;margin-top:5px;color:var(--ink-2);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.banner .tx .btn{flex:0 0 auto}
.dots{display:flex;justify-content:center;gap:5px;margin-top:10px}
.dots i{width:5px;height:5px;border-radius:999px;background:rgba(255,255,255,.22);transition:width .22s,background .22s}
.dots i.on{width:16px;background:var(--pp)}

/* ranked list */
.rank{display:flex;flex-direction:column}
.rrow{display:grid;grid-template-columns:22px 54px 1fr auto;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line-soft)}
.rrow:last-child{border-bottom:0}
.rrow .no{font-family:var(--display);font-weight:800;font-size:22px;color:var(--ink-3);text-align:center;line-height:1;font-style:italic}
.rrow:nth-child(-n+3) .no{color:var(--pp)}
.rrow .poster{width:54px;border-radius:7px}
.rrow .poster .pt,.rrow .poster .flag,.rrow .poster .eps{display:none}
.rrow .t{min-width:0}
.rrow .t b{display:block;font-weight:500;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rrow .t small{display:block;color:var(--ink-3);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.rrow .t .h{font-family:var(--mono);font-size:10.5px;color:var(--pp);margin-top:2px}
.rrow .btn{height:30px;padding:0 12px;font-size:12px}

.vipbar{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:16px;background:linear-gradient(120deg,rgba(var(--pp-rgb),.18),rgba(var(--pp-rgb),.04));border:1px solid rgba(var(--pp-rgb),.3)}
.vipbar .ic{width:36px;height:36px;border-radius:11px;background:linear-gradient(135deg,var(--pp-1),var(--pp-2));display:grid;place-items:center;color:var(--pp-ink);flex:0 0 auto;box-shadow:0 0 18px var(--pp-glow)}
.vipbar .tx{flex:1;min-width:0}
.vipbar .tx b{display:block;font-weight:500;font-size:13.5px;line-height:1.3}
.vipbar .tx small{color:var(--ink-2);font-size:11.5px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.genres{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.gt{position:relative;padding:12px;border-radius:12px;overflow:hidden;border:1px solid var(--line);background:linear-gradient(135deg,var(--c1),var(--c2));min-height:62px;display:flex;flex-direction:column;justify-content:flex-end;isolation:isolate}
.gt::before{content:"";position:absolute;inset:0;background:radial-gradient(80% 80% at 100% 0%,rgba(255,255,255,.12),transparent 60%)}
.gt b{font-family:var(--display);font-weight:700;font-size:15px;text-transform:uppercase;position:relative}
.gt small{font-family:var(--mono);font-size:9px;color:rgba(255,255,255,.6);position:relative}
.foot{margin-top:34px;padding-top:16px;border-top:1px solid var(--line-soft);color:var(--ink-3);font-size:11px;line-height:1.6}
.foot .links{display:flex;flex-wrap:wrap;gap:4px 14px;margin-bottom:8px}
.foot .links a{color:var(--ink-2)}

/* ── immersive vertical feed (For You + player) ── */
.feed{position:fixed;left:50%;transform:translateX(-50%);top:0;width:100%;max-width:var(--appw);height:var(--vh);z-index:20;background:#07040A;overflow:hidden;display:none}
.feed.on{display:block}
.feed.tabbed{height:calc(var(--vh) - var(--tab) - var(--sab))}
.scroller{position:absolute;inset:0;z-index:1;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;scrollbar-width:none;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.scroller::-webkit-scrollbar{display:none}
.slide{position:relative;height:100%;scroll-snap-align:start;scroll-snap-stop:always;overflow:hidden;background:#07040A;isolation:isolate}
.slide img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .4s var(--ease)}
.slide img.ld{opacity:1}
.slide.act img.ld{animation:kb 28s ease-in-out infinite alternate}
@keyframes kb{from{transform:scale(1.02)}to{transform:scale(1.1) translate(-1%,1%)}}
.slide .veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,4,10,.55),transparent 22%,transparent 52%,rgba(7,4,10,.92));pointer-events:none;z-index:1}
.slide .fx{position:absolute;inset:0;background:repeating-linear-gradient(180deg,rgba(255,255,255,.03) 0 1px,transparent 1px 4px);mix-blend-mode:overlay;opacity:.5;pointer-events:none;z-index:1}
.slide .sub{position:absolute;left:14px;right:76px;bottom:46%;z-index:2;text-align:center;font-weight:500;font-size:13.5px;line-height:1.35;color:#F8F2F6;text-shadow:0 2px 12px rgba(0,0,0,.8);pointer-events:none}
.slide .sub span{display:inline-block;padding:4px 10px;background:rgba(0,0,0,.35);border-radius:6px;backdrop-filter:blur(4px)}
.slide .acts{position:absolute;right:10px;bottom:132px;display:flex;flex-direction:column;gap:14px;z-index:3}
.slide .acts button{display:flex;flex-direction:column;align-items:center;gap:3px;color:#fff;font-family:var(--mono);font-size:10px;text-shadow:0 1px 8px rgba(0,0,0,.7);font-variant-numeric:tabular-nums}
.slide .acts button i{width:42px;height:42px;border-radius:50%;background:rgba(var(--bg-rgb),.42);border:1px solid rgba(255,255,255,.18);backdrop-filter:blur(8px);display:grid;place-items:center;transition:transform .2s var(--ease),background .15s}
.slide .acts button:active i{transform:scale(.9)}
.slide .acts button.on i{background:rgba(var(--pp-rgb),.32);border-color:rgba(var(--pp-rgb),.6);color:var(--pp-1)}
.slide .acts button.on{color:var(--pp-1)}
.slide .acts .a-show{display:block}
.slide .acts .mini{display:block;width:42px;height:42px;border-radius:10px;overflow:hidden;border:1.5px solid rgba(255,255,255,.7);position:relative;box-shadow:0 4px 14px rgba(0,0,0,.5)}
.slide .acts .mini img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:1;animation:none!important;transform:none!important}
.slide .info{position:absolute;left:14px;right:70px;bottom:26px;z-index:3;display:flex;flex-direction:column;gap:7px;text-shadow:0 1px 10px rgba(0,0,0,.7)}
.slide .info .ttl{font-family:var(--display);font-weight:900;font-size:20px;line-height:1.2;letter-spacing:.04em;text-transform:uppercase;letter-spacing:.005em}
.slide .info .row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:11.5px;color:rgba(255,255,255,.8)}
.slide .info .ds{margin:0;font-size:12.5px;color:rgba(255,255,255,.78);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.5}
.slide .info .btn{align-self:flex-start;margin-top:2px}
.slide .pbar{position:absolute;left:14px;right:14px;bottom:10px;height:3px;border-radius:999px;background:rgba(255,255,255,.18);z-index:3;overflow:hidden}
.slide .pbar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--pp-2),var(--pp-1));box-shadow:0 0 12px rgba(var(--pp-rgb),.6);transition:width .5s linear}
.slide .pause{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:66px;height:66px;border-radius:50%;background:rgba(var(--bg-rgb),.5);border:1px solid rgba(255,255,255,.25);backdrop-filter:blur(10px);display:grid;place-items:center;color:#fff;z-index:3;opacity:0;pointer-events:none;transition:opacity .2s}
.slide.paused .pause{opacity:1}
.slide .lockcard{position:absolute;inset:0;z-index:4;display:grid;place-items:center;padding:24px;background:rgba(var(--bg-rgb),.55);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.slide .lockcard>div{width:100%;max-width:300px;text-align:center;display:flex;flex-direction:column;gap:10px;align-items:center}
.slide .lockcard .lk{width:58px;height:58px;border-radius:19px;background:linear-gradient(135deg,var(--pp-1),var(--pp-2));display:grid;place-items:center;color:var(--pp-ink);box-shadow:0 0 40px rgba(var(--pp-rgb),.4)}
.slide .lockcard h3{margin:4px 0 0;font-weight:300;font-size:18px}
.slide .lockcard p{margin:0;color:var(--ink-2);font-size:12.5px;line-height:1.6}
.slide .lockcard .or{font-family:var(--mono);font-size:9px;letter-spacing:.3em;color:var(--ink-3);text-transform:uppercase}
.fhdr{position:absolute;top:0;left:0;right:0;z-index:5;height:var(--hdr);display:flex;align-items:center;gap:10px;padding:0 10px;padding-top:env(safe-area-inset-top,0px);pointer-events:none}
.fhdr>*{pointer-events:auto}
.fhdr .ib{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;color:#fff;background:rgba(var(--bg-rgb),.35);border:1px solid rgba(255,255,255,.15);backdrop-filter:blur(8px);flex:0 0 auto}
.fhdr .ib svg{width:20px;height:20px}
.fhdr .ttl{flex:1;min-width:0;text-align:center;font-size:14px;font-weight:500;text-shadow:0 1px 8px rgba(0,0,0,.7);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fhdr .ttl small{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;color:var(--pp-1);text-transform:uppercase;font-weight:500}
.fhdr .tabs{flex:1;display:flex;justify-content:center;gap:22px;font-size:15px;color:rgba(255,255,255,.55);text-shadow:0 1px 8px rgba(0,0,0,.7)}
.fhdr .tabs span{position:relative;padding-bottom:4px}
.fhdr .tabs span.on{color:#fff;font-weight:500}
.fhdr .tabs span.on::after{content:"";position:absolute;left:25%;right:25%;bottom:0;height:2px;border-radius:2px;background:var(--pp)}

/* ── series detail ── */
.dback{position:relative;margin:0 calc(-1 * var(--gut));aspect-ratio:4/3;max-height:52vh;overflow:hidden;background:#0D0812;isolation:isolate}
.dback img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.dback::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,4,10,.55),transparent 30%,transparent 50%,var(--bg) 100%)}
.dback .fhdr{position:absolute}
.dback .tr{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);z-index:2;display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 16px 0 8px;border-radius:999px;background:rgba(var(--bg-rgb),.5);border:1px solid rgba(255,255,255,.25);backdrop-filter:blur(10px);font-size:12.5px;font-weight:500;color:#fff}
.dback .tr i{width:26px;height:26px;border-radius:50%;background:#fff;color:var(--pp-ink);display:grid;place-items:center}
.dhead{display:grid;grid-template-columns:96px 1fr;gap:14px;align-items:end;margin-top:-64px;position:relative;z-index:2}
.dhead .poster{width:96px;box-shadow:0 20px 40px rgba(0,0,0,.6)}
.dhead .poster .pt{display:none}
.dhead h1{margin:0 0 6px;font-family:var(--display);font-weight:900;font-size:22px;line-height:1.2;letter-spacing:.04em;text-transform:uppercase;letter-spacing:-.005em}
.dhead .meta{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;color:var(--ink-2);font-size:11.5px}
.dhead .meta .num{color:var(--ink)}
.dtags{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.dstats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line-soft);border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-top:14px}
.dstats div{background:var(--bg-2);padding:10px 6px;text-align:center}
.dstats b{display:block;font-family:var(--mono);font-weight:700;font-size:15px;font-variant-numeric:tabular-nums;line-height:1.2}
.dstats b.g{color:var(--pp)}
.dstats small{font-family:var(--mono);font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3)}
.dact{display:flex;gap:10px;margin-top:14px}
.dact .btn-pp{flex:1}
.syn{color:var(--ink-2);font-size:13px;line-height:1.7;margin:0}
.syn.fold{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.syn-t{font-size:12px;color:var(--pp);margin-top:4px}
.cast{display:flex;gap:12px;overflow-x:auto;scrollbar-width:none;margin:0 calc(-1 * var(--gut));padding:2px var(--gut) 4px}
.cast::-webkit-scrollbar{display:none}
.cast div{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:5px;width:68px;text-align:center}
.cast i{width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,var(--c1),var(--c2));border:1px solid var(--line);display:grid;place-items:center;font-family:var(--display);font-weight:700;font-size:16px;color:rgba(255,255,255,.85);font-style:normal}
.cast b{font-weight:500;font-size:11px;line-height:1.2}
.cast small{font-size:10px;color:var(--ink-3);line-height:1.2}
.epnav{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 calc(-1 * var(--gut)) 10px;padding:0 var(--gut)}
.epnav::-webkit-scrollbar{display:none}
.epnav button{flex:0 0 auto;height:28px;padding:0 11px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--ink-2);font-family:var(--mono);font-size:10.5px;transition:all .15s}
.epnav button.on{background:rgba(var(--pp-rgb),.12);border-color:rgba(var(--pp-rgb),.4);color:var(--pp)}
.epgrid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}
.ep{position:relative;aspect-ratio:1;border-radius:10px;border:1px solid var(--line);background:rgba(255,255,255,.04);display:grid;place-items:center;font-family:var(--mono);font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums;transition:background .15s,color .15s,border-color .15s}
.ep.on{background:rgba(var(--pp-rgb),.14);border-color:rgba(var(--pp-rgb),.4);color:var(--pp);font-weight:700}
.ep.seen{color:var(--ink-3);background:rgba(255,255,255,.02)}
.ep.lock{color:var(--ink-3)}
.ep.lock::after{content:"";position:absolute;top:4px;right:4px;width:8px;height:7px;border-radius:2px;border:1.5px solid rgba(var(--pp-rgb),.75);border-top:0;box-shadow:inset 0 -1px 0 0 rgba(var(--pp-rgb),.75)}
.ep.lock::before{content:"";position:absolute;top:0;right:5.5px;width:5px;height:5px;border:1.5px solid rgba(var(--pp-rgb),.75);border-bottom:0;border-radius:4px 4px 0 0}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:var(--ink-3);margin-top:10px}
.legend i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:4px;vertical-align:-1px;border:1px solid var(--line);background:rgba(255,255,255,.04)}
.legend i.on{background:rgba(var(--pp-rgb),.14);border-color:rgba(var(--pp-rgb),.4)}
.legend i.lk{border-color:rgba(var(--pp-rgb),.5);border-style:dashed}
.stickycta{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--tab) + var(--sab) + 10px);width:calc(100% - 2*var(--gut));max-width:calc(var(--appw) - 2*var(--gut));z-index:35;display:flex;gap:10px;padding:8px;border-radius:999px;background:rgba(var(--bg-rgb),.85);border:1px solid var(--line);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:0 20px 50px rgba(0,0,0,.55)}
.stickycta .btn-pp{flex:1}

/* ── bottom sheet ── */
.dim{position:fixed;inset:0;z-index:60;background:rgba(var(--bg-rgb),.6);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity .25s}
.dim.on{opacity:1;pointer-events:auto}
.sheet{position:fixed;left:50%;bottom:0;transform:translate(-50%,105%);width:100%;max-width:var(--appw);z-index:70;background:rgba(16,8,19,.96);border:1px solid var(--line);border-bottom:0;border-radius:22px 22px 0 0;padding:10px var(--gut) calc(16px + var(--sab));max-height:82vh;display:flex;flex-direction:column;transition:transform .34s var(--ease);box-shadow:0 -30px 70px rgba(0,0,0,.6)}
.sheet.on{transform:translate(-50%,0)}
.sheet .grab{width:38px;height:4px;border-radius:999px;background:rgba(255,255,255,.18);margin:0 auto 12px}
.sheet .sh{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.sheet .sh h3{margin:0;font-weight:300;font-size:16px}
.sheet .sh h3 small{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.25em;text-transform:uppercase;color:var(--ink-3);margin-top:2px}
.sheet .body{overflow-y:auto;min-height:0;scrollbar-width:none;margin:0 calc(-1 * var(--gut));padding:0 var(--gut)}
.sheet .body::-webkit-scrollbar{display:none}
.plansx{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.plan{position:relative;padding:14px 10px 12px;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.04);cursor:pointer;display:flex;flex-direction:column;gap:3px;text-align:center;width:100%;transition:background .15s,box-shadow .2s}
.plan .nm{font-size:12px;color:var(--ink-2)}
.plan .pr{font-family:var(--mono);font-weight:700;font-size:19px;font-variant-numeric:tabular-nums;line-height:1.1;color:var(--ink)}
.plan .pr small{font-size:11px;font-weight:500;color:var(--ink-3)}
.plan .pd{font-family:var(--mono);font-size:9.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.plan .pd s{opacity:.7}
.plan .rb{position:absolute;top:-1px;left:50%;transform:translateX(-50%);padding:2px 8px;border-radius:0 0 7px 7px;font-family:var(--mono);font-size:8px;letter-spacing:.12em;font-weight:700;text-transform:uppercase;background:linear-gradient(135deg,var(--pp-1),var(--pp-2));color:var(--pp-ink);white-space:nowrap}
.plan .rb.am{background:rgba(240,185,11,.9);color:#3A2A00}
.plan.on{background:rgba(var(--pp-rgb),.12);box-shadow:inset 0 0 0 1.5px rgba(var(--pp-rgb),.5),0 0 24px rgba(var(--pp-rgb),.12)}
.plan.on .pr{color:var(--pp)}
.plans.big{grid-template-columns:1fr;display:grid;gap:10px}
.plans.big .plan{flex-direction:row;align-items:center;text-align:left;padding:14px 16px;gap:12px}
.plans.big .plan .nm{flex:1;font-size:14px;color:var(--ink)}
.plans.big .plan .nm small{display:block;font-family:var(--mono);font-size:10px;color:var(--ink-3);margin-top:2px}
.plans.big .plan .pr{font-size:22px}
.plans.big .plan .rb{left:auto;right:14px;transform:none}
.payrow{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.pay{display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 4px;border-radius:12px;border:1px solid var(--line);background:rgba(255,255,255,.03);cursor:pointer;transition:background .15s,box-shadow .15s;width:100%}
.pay .lg{height:22px;padding:0 8px;border-radius:6px;display:grid;place-items:center;font-family:var(--mono);font-weight:700;font-size:9px;letter-spacing:.05em;background:rgba(255,255,255,.08);color:var(--ink)}
.pay small{font-size:10px;color:var(--ink-3);white-space:nowrap}
.pay.on{background:rgba(var(--pp-rgb),.08);box-shadow:inset 0 0 0 1.5px rgba(var(--pp-rgb),.45)}
.pay.on .lg{background:rgba(var(--pp-rgb),.2);color:var(--pp-1)}
.coins{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.cp{padding:12px;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.03);text-align:left;display:flex;flex-direction:column;gap:1px;width:100%;transition:background .15s}
.cp b{font-family:var(--mono);font-weight:700;font-size:17px;color:var(--amber);font-variant-numeric:tabular-nums}
.cp b small{font-size:10px;color:var(--ink-3);font-weight:500;margin-left:3px}
.cp em{font-style:normal;font-family:var(--mono);font-size:9.5px;color:var(--pp);letter-spacing:.06em;min-height:14px}
.cp span{font-size:12.5px;color:var(--ink-2);margin-top:3px}
.bene{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}
.bene div{display:flex;gap:8px;align-items:flex-start;font-size:12px;color:var(--ink-2);line-height:1.4}
.bene div b{display:block;font-weight:500;color:var(--ink);font-size:12.5px}
.bene i{flex:0 0 auto;width:20px;height:20px;border-radius:6px;background:rgba(var(--pp-rgb),.12);color:var(--pp);display:grid;place-items:center;font-style:normal;font-size:11px}
.trust{display:flex;flex-wrap:wrap;gap:6px 14px;color:var(--ink-3);font-size:11px;margin-top:10px}
.trust span::before{content:"✓";color:var(--pp);margin-right:5px}
.faq details{border-bottom:1px solid var(--line-soft);padding:11px 0}
.faq details:last-child{border-bottom:0}
.faq summary{cursor:pointer;list-style:none;font-size:13px;display:flex;justify-content:space-between;align-items:center;gap:10px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--mono);color:var(--ink-3)}
.faq details[open] summary::after{content:"–";color:var(--pp)}
.faq p{margin:8px 0 0;color:var(--ink-2);font-size:12.5px;line-height:1.65}
.vhero{padding:18px;border-radius:18px;background:linear-gradient(130deg,rgba(var(--pp-rgb),.2),rgba(var(--pp-rgb),.03) 60%);border:1px solid rgba(var(--pp-rgb),.3);position:relative;overflow:hidden;margin-top:12px}
.vhero::after{content:"VIP";position:absolute;right:-6px;top:-28px;font-family:var(--display);font-weight:800;font-size:120px;line-height:1;color:rgba(var(--pp-rgb),.08);pointer-events:none;letter-spacing:-.05em}
.vhero h1{margin:0 0 6px;font-family:var(--display);font-weight:900;font-size:23px;line-height:1.2;letter-spacing:.03em;position:relative}
.vhero h1 em{font-style:italic;color:var(--pp-1);font-weight:600}
.vhero p{margin:0;color:var(--ink-2);font-size:12.5px;position:relative}
.vhero .state{display:flex;gap:8px;align-items:center;margin-top:12px;font-family:var(--mono);font-size:10.5px;color:var(--ink-3);flex-wrap:wrap;position:relative}

/* ── me ── */
.me{display:flex;align-items:center;gap:12px;margin-top:14px}
.me .av{width:58px;height:58px;border-radius:18px;background:linear-gradient(135deg,var(--pp-1),var(--pp-2));display:grid;place-items:center;font-family:var(--display);font-weight:800;font-size:24px;color:var(--pp-ink);box-shadow:0 0 26px var(--pp-glow);flex:0 0 auto}
.me .av.off{background:var(--glass-2);color:var(--ink-2);box-shadow:none;border:1px solid var(--line)}
.me .nm{flex:1;min-width:0}
.me .nm b{display:flex;align-items:center;gap:7px;font-weight:500;font-size:16px;flex-wrap:wrap}
.me .nm small{display:block;font-family:var(--mono);font-size:10.5px;color:var(--ink-3);letter-spacing:.04em;margin-top:2px}
.wallet{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.wallet>a{padding:12px 14px;border-radius:16px;border:1px solid var(--line);background:var(--glass);display:flex;flex-direction:column;gap:2px;position:relative}
.wallet small{font-size:11px;color:var(--ink-3)}
.wallet b{font-family:var(--mono);font-weight:700;font-size:20px;font-variant-numeric:tabular-nums;line-height:1.1}
.wallet b.a{color:var(--amber)}
.wallet b.g{color:var(--pp)}
.wallet .btn{margin-top:8px;align-self:flex-start}
.wallet .vip{background:linear-gradient(130deg,rgba(var(--pp-rgb),.18),rgba(var(--pp-rgb),.03));border-color:rgba(var(--pp-rgb),.3)}
.wallet .coin{background:linear-gradient(130deg,rgba(240,185,11,.14),rgba(240,185,11,.02));border-color:rgba(240,185,11,.28)}
.hrow{display:grid;grid-template-columns:50px 1fr auto;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line-soft)}
.hrow:last-child{border-bottom:0}
.hrow .poster{width:50px;border-radius:7px}
.hrow .poster .pt,.hrow .poster .flag,.hrow .poster .eps{display:none}
.hrow .t{min-width:0}
.hrow .t b{display:block;font-weight:500;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hrow .t small{display:block;color:var(--ink-3);font-size:11px;font-family:var(--mono);margin-top:2px}
.hrow .t .bar{height:3px;border-radius:999px;background:rgba(255,255,255,.07);margin-top:6px;overflow:hidden}
.hrow .t .bar i{display:block;height:100%;background:var(--pp)}
.menu{display:flex;flex-direction:column}
.menu button,.menu a{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--line-soft);font-size:14px;text-align:left;width:100%}
.menu>:last-child{border-bottom:0}
.menu i{width:30px;height:30px;border-radius:9px;background:rgba(255,255,255,.05);border:1px solid var(--line);display:grid;place-items:center;color:var(--ink-2);flex:0 0 auto;font-style:normal;font-family:var(--mono);font-size:12px}
.menu span{flex:1}
.menu small{font-family:var(--mono);font-size:11px;color:var(--ink-3)}
.menu em{font-style:normal;color:var(--ink-3)}
.orders .orow{display:grid;grid-template-columns:1fr auto;gap:2px 12px;padding:10px 0;border-bottom:1px solid var(--line-soft);font-size:13px;align-items:center}
.orders .orow:last-child{border-bottom:0}
.orders .orow small{display:block;font-family:var(--mono);font-size:10px;color:var(--ink-3);margin-top:2px}
.orders .orow b{font-family:var(--mono);font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.orders .orow b.a{color:var(--amber)}

/* ── search ── */
.sbox{display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border-radius:999px;background:rgba(255,255,255,.05);border:1px solid var(--line);flex:1;min-width:0}
.sbox:focus-within{border-color:var(--pp);box-shadow:0 0 0 3px rgba(var(--pp-rgb),.12)}
.sbox svg{color:var(--ink-3);flex:0 0 auto}
.sbox input{flex:1;min-width:0;background:none;border:0;color:var(--ink);font-family:var(--sans);font-weight:300;font-size:14px;outline:0}
.sbox input::placeholder{color:var(--ink-3)}
.hdr .sbox{height:36px}

/* ── gate / toast ── */
.gate{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px;background:rgba(var(--bg-rgb),.86);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);transition:opacity .3s}
.gate.off{opacity:0;pointer-events:none}
.gate .card{width:100%;max-width:400px;text-align:center;display:flex;flex-direction:column;gap:12px;align-items:center;padding:24px 20px}
.gate .mk{width:56px;height:56px;border-radius:18px;background:linear-gradient(135deg,var(--pp-1),var(--pp-2));display:grid;place-items:center;font-family:var(--mono);font-weight:700;font-size:15px;color:var(--pp-ink);box-shadow:0 0 34px var(--pp-glow)}
.gate h2{margin:2px 0 0;font-family:var(--display);font-weight:700;font-size:24px;line-height:1.1}
.gate p{margin:0;color:var(--ink-2);font-size:12.5px;line-height:1.7;max-width:36ch}
.gate .row{display:flex;gap:10px;width:100%;margin-top:4px}
.gate .row .btn{flex:1;padding:0 10px}
.gate .fine{font-size:10.5px;color:var(--ink-3)}
.gate .fine a{color:var(--ink-2);text-decoration:underline;text-underline-offset:2px}
.toast{position:fixed;left:50%;bottom:calc(var(--tab) + var(--sab) + 18px);transform:translate(-50%,20px);z-index:95;padding:10px 18px;border-radius:999px;border:1px solid rgba(var(--pp-rgb),.5);background:rgba(var(--pp-rgb),.16);color:var(--pp-1);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);font-size:12.5px;opacity:0;pointer-events:none;white-space:nowrap;transition:opacity .25s,transform .25s;max-width:calc(100vw - 32px);overflow:hidden;text-overflow:ellipsis}
.toast.on{opacity:1;transform:translate(-50%,0);animation:tip-pulse 2.2s ease-in-out infinite}
@keyframes tip-pulse{0%,100%{box-shadow:0 10px 30px rgba(0,0,0,.4)}50%{box-shadow:0 10px 30px rgba(0,0,0,.4),0 0 0 6px rgba(var(--pp-rgb),.09)}}

/* wide screens: the phone column sits centered with a soft frame */
@media(min-width:640px){
  .app{box-shadow:0 0 0 1px var(--line),0 40px 120px rgba(0,0,0,.6)}
  .feed{border-left:1px solid var(--line);border-right:1px solid var(--line)}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* ── 收藏 ── */
.cap-row{display:flex;align-items:flex-start;gap:4px;margin-top:6px}
.cap-row .cap{flex:1;margin-top:0}
.cap-row .rm{flex:0 0 auto;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;color:var(--ink-3);font-size:11px;border:1px solid var(--line);background:rgba(255,255,255,.04)}
.cap-row .rm:hover{color:var(--red);border-color:rgba(246,70,93,.5)}

/* ── 製作（AI 換臉） ── */
.sthero{position:relative;overflow:hidden;padding:16px;border-radius:18px;margin-top:12px;background:linear-gradient(130deg,rgba(var(--pp-rgb),.2),rgba(var(--pp-rgb),.03) 65%);border:1px solid rgba(var(--pp-rgb),.3)}
.sthero::after{content:"AI";position:absolute;right:-4px;top:-26px;font-family:var(--display);font-weight:800;font-size:110px;line-height:1;color:rgba(var(--pp-rgb),.08);pointer-events:none;letter-spacing:-.05em}
.sthero h1{margin:0 0 6px;font-family:var(--display);font-weight:900;font-size:22px;line-height:1.2;letter-spacing:.03em;position:relative}
.sthero h1 em{font-style:normal;color:var(--pp-1)}
.sthero p{margin:0;color:var(--ink-2);font-size:12.5px;line-height:1.6;position:relative}
.sthero .cost{display:inline-flex;gap:8px;align-items:center;margin-top:10px;font-family:var(--mono);font-size:10.5px;color:var(--ink-3);position:relative}
.step{display:flex;align-items:center;gap:8px}
.step i{width:20px;height:20px;border-radius:50%;background:rgba(var(--pp-rgb),.14);color:var(--pp);font-family:var(--mono);font-size:10.5px;font-weight:700;display:grid;place-items:center;font-style:normal;box-shadow:inset 0 0 0 1px rgba(var(--pp-rgb),.35)}
.pick .poster{outline:2px solid transparent;outline-offset:2px;transition:outline-color .15s,transform .2s var(--ease)}
.pick .poster.on{outline-color:var(--pp);box-shadow:0 10px 26px rgba(0,0,0,.4),0 0 24px rgba(var(--pp-rgb),.35)}
.pick .poster .ck{position:absolute;right:6px;bottom:6px;z-index:3;width:20px;height:20px;border-radius:50%;background:var(--pp);color:var(--pp-ink);display:none;place-items:center;font-size:12px;font-weight:700}
.pick .poster.on .ck{display:grid}
.roles{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.role{display:flex;align-items:center;gap:10px;padding:12px;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.03);text-align:left;width:100%;transition:background .15s,box-shadow .15s}
.role i{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,var(--c1),var(--c2));border:1px solid var(--line);display:grid;place-items:center;font-family:var(--display);font-weight:900;font-size:16px;color:rgba(255,255,255,.9);font-style:normal;flex:0 0 auto}
.role b{display:block;font-weight:500;font-size:13.5px}
.role small{display:block;color:var(--ink-3);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.role .tx{min-width:0}
.role.on{background:rgba(var(--pp-rgb),.1);box-shadow:inset 0 0 0 1.5px rgba(var(--pp-rgb),.5)}
.role.on b{color:var(--pp-1)}
.upl{position:relative;display:grid;grid-template-columns:96px 1fr;gap:12px;align-items:center;padding:12px;border-radius:16px;border:1px dashed rgba(var(--pp-rgb),.45);background:rgba(var(--pp-rgb),.05)}
.upl input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.upl .ph{width:96px;aspect-ratio:3/4;border-radius:12px;overflow:hidden;background:rgba(255,255,255,.05);border:1px solid var(--line);display:grid;place-items:center;color:var(--ink-3);position:relative}
.upl .ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.upl .tx b{display:block;font-weight:500;font-size:13.5px}
.upl .tx small{display:block;color:var(--ink-3);font-size:11.5px;line-height:1.5;margin-top:3px}
.upl .tx .btn{margin-top:8px;position:relative;z-index:2}
.hint{font-size:11px;color:var(--ink-3);line-height:1.6;margin-top:8px}
.steps{display:flex;flex-direction:column;gap:10px}
.steps div{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--ink-3)}
.steps div i{width:18px;height:18px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;font-size:10px;font-style:normal;flex:0 0 auto}
.steps div.run{color:var(--ink)}
.steps div.run i{border-color:var(--pp);color:var(--pp);animation:live-blink 1.2s ease-in-out infinite}
.steps div.ok{color:var(--ink-2)}
.steps div.ok i{background:rgba(var(--pp-rgb),.14);border-color:rgba(var(--pp-rgb),.4);color:var(--pp)}
.stbar{height:4px;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden;margin-top:12px}
.stbar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--pp-2),var(--pp-1));box-shadow:0 0 12px rgba(var(--pp-rgb),.6);transition:width .5s var(--ease)}
.stres{position:relative;border-radius:18px;overflow:hidden;border:1px solid var(--line);aspect-ratio:9/16;max-height:66vh;margin:0 auto;background:#07040A;box-shadow:0 30px 70px rgba(0,0,0,.55)}
.stres img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.stres .lb{position:absolute;top:10px;left:10px;z-index:2}
.resrow{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}
.resrow .btn{padding:0 6px;font-size:12px;height:40px}
.works{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.work{position:relative;aspect-ratio:9/16;border-radius:12px;overflow:hidden;border:1px solid var(--line);background:#12091A;display:block}
.work img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.work small{position:absolute;left:0;right:0;bottom:0;padding:16px 8px 6px;background:linear-gradient(180deg,transparent,rgba(7,4,10,.9));font-size:10.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.work .rm{position:absolute;top:5px;right:5px;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,.5);color:#fff;font-size:11px;display:grid;place-items:center;backdrop-filter:blur(6px)}
.me .av{position:relative;overflow:hidden}
.me .av img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

/* ── 付款表單 ── */
.payrow{grid-template-columns:repeat(3,1fr)}
.pform{margin-top:12px;display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:16px;border:1px solid var(--line);background:rgba(255,255,255,.03)}
.pform label{display:flex;flex-direction:column;gap:5px;font-size:11.5px;color:var(--ink-3)}
.pform input:not([type=checkbox]){height:42px;border-radius:12px;background:rgba(255,255,255,.05);border:1px solid var(--line);color:var(--ink);padding:0 14px;font-family:var(--mono);font-size:14px;outline:0;width:100%;transition:border-color .15s,box-shadow .15s;font-variant-numeric:tabular-nums}
.pform input:not([type=checkbox])::placeholder{color:var(--ink-3);opacity:.7}
.pform input:not([type=checkbox]):focus{border-color:var(--pp);box-shadow:0 0 0 3px rgba(var(--pp-rgb),.12)}
.pform .row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pform .chk{flex-direction:row;align-items:center;gap:8px;font-size:12px;color:var(--ink-2)}
.pform .chk input{width:16px;height:16px;accent-color:var(--pp);margin:0}
.pform .secure{display:flex;gap:6px;align-items:flex-start;font-size:11px;color:var(--ink-3);line-height:1.5}
.pform .secure svg{flex:0 0 auto;margin-top:2px}
.walletbtn{height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;gap:6px;font-weight:600;font-size:16px;letter-spacing:-.01em;width:100%;transition:transform .2s var(--ease),opacity .15s}
.walletbtn span{font-weight:500;font-size:14px;opacity:.85}
.walletbtn:active{transform:scale(.98)}
.applepay{background:#000;color:#fff;border:1px solid rgba(255,255,255,.22);font-family:-apple-system,'SF Pro Text','Inter',sans-serif}
.gpay{background:#fff;color:#1F1F1F;border:1px solid #DADCE0;font-family:'Inter',Roboto,sans-serif}

/* ── 放大字級 · 修正溢出 · 精簡 ── */
body{overflow-x:hidden;overscroll-behavior-y:auto}
.page{overflow-x:clip}
body{font-size:15px}
.hdr .brand b{font-size:19px}
.vippill{height:34px;font-size:13px;padding:0 12px}
.hdr .ib{width:38px;height:38px}
.tabbar a{font-size:11.5px}
.sec-hd h2{font-size:18px}
.sec-hd h2 span{font-size:11px;letter-spacing:.12em}
.sec-hd a,.sec-hd button{font-size:13.5px}
.eyebrow{font-size:11px;letter-spacing:.18em}
.btn{font-size:15px;height:46px}
.btn.sm{height:36px;font-size:13.5px}
.btn.xs{height:32px;font-size:13px;padding:0 12px}
.tag{font-size:12.5px;padding:.25em .7em}
.badge{font-size:12px}
.rating{font-size:10.5px}
.msg{font-size:14px}
.chip{height:36px;font-size:14px;padding:0 16px}
.poster .pt{font-size:14.5px}
.poster .flag{font-size:9px;padding:3px 7px}
.poster .eps{font-size:9.5px}
.poster .epn{font-size:11px}
.grid3 .cap{font-size:13.5px}
.grid3 .sub{font-size:12px}
.banner .tx b{font-size:23px}
.banner .tx small{font-size:13px}
.banner .k{font-size:12.5px}
.rrow .t small{font-size:12.5px}.rrow .t .h{font-size:12px}
.vipbar{padding:14px 16px}
.vipbar .tx b{font-size:15.5px}.vipbar .tx small{font-size:13px;white-space:normal}
.foot{font-size:12.5px}
.slide .info .ttl{font-size:22px}
.slide .info .row{font-size:13px}
.slide .info .ds{font-size:14px}
.slide .acts button{font-size:11.5px}
.slide .sub{font-size:14.5px}
.slide .lockcard h3{font-size:20px}
.slide .lockcard p{font-size:14px}
.slide .lockcard .or{font-size:11px}
.fhdr .ttl{font-size:15px}.fhdr .ttl small{font-size:11px}
.dhead h1{font-size:24px}
.dhead .meta{font-size:13px}
.syn{font-size:14.5px}
.syn-t{font-size:13.5px}
.cast div{width:76px}.cast b{font-size:12.5px}.cast small{font-size:11.5px}
.epnav button{height:32px;font-size:12.5px}
.ep{font-size:15px}
.legend{font-size:12.5px}
.plan .nm{font-size:14px}.plans.big .plan .nm{font-size:16px}.plans.big .plan .nm small{font-size:12.5px}
.plan .pr{font-size:22px}.plans.big .plan .pr{font-size:26px}.plan .pr small{font-size:12px}
.plan .pd{font-size:11.5px}.plan .rb{font-size:9.5px}
.pay .lg{font-size:10.5px;height:24px}.pay small{font-size:12px}
.bene{grid-template-columns:1fr}.bene div{font-size:14px}.bene div b{display:inline;font-size:14.5px;margin-right:6px}
.trust{font-size:12.5px}
.faq summary{font-size:15px}.faq p{font-size:14px}
.vhero h1{font-size:26px}.vhero p{font-size:14px}.vhero .state{font-size:12px}
.pform label{font-size:13px}.pform input:not([type=checkbox]){height:46px;font-size:15px}.pform .chk{font-size:13px}.pform .secure{font-size:12px}
.walletbtn{height:50px}
.sheet .sh h3{font-size:18px}.sheet .sh h3 small{font-size:11px;letter-spacing:.12em}
.me .nm b{font-size:17px}.me .nm small{font-size:12.5px}
.wallet small{font-size:12.5px}.wallet b{font-size:22px}
.menu button,.menu a{font-size:15px;padding:14px 0}.menu small{font-size:12.5px}
.orders .orow{font-size:14px}.orders .orow small{font-size:11.5px}
.hrow .t b{font-size:14.5px}.hrow .t small{font-size:12.5px}
.sthero h1{font-size:24px}.sthero p{font-size:14px}.sthero .cost{font-size:12px}
.step i{width:22px;height:22px;font-size:11.5px}
.roles>*{min-width:0}
.role{padding:14px 12px;overflow:hidden}.role b{font-size:15px}.role small{font-size:12.5px}.role .tx{flex:1;min-width:0}
.upl .tx b{font-size:15px}.upl .tx small{font-size:13px}
.hint{font-size:12.5px}
.steps div{font-size:14px}
.resrow{grid-template-columns:1fr 1fr}
.resrow .btn{font-size:14px;height:44px}
.work small{font-size:12px}
.gate h2{font-size:26px}.gate p{font-size:14px}.gate .fine{font-size:12px}
.toast{font-size:14px}
.sbox input{font-size:15px}
.dback .tr{font-size:14px}

/* ── 效能：手機捲動流暢優先（覆寫上面的特效層） ── */
.orbs{top:0;left:0;right:0;bottom:auto;height:130vh;background:radial-gradient(62% 46% at 12% -6%,#3A0E2A 0%,rgba(58,14,42,0) 70%),radial-gradient(52% 42% at 104% 104%,#1A1030 0%,rgba(26,16,48,0) 70%),radial-gradient(46% 40% at 78% 44%,#46102F 0%,rgba(70,16,47,0) 70%);transform:translateZ(0);will-change:transform}
.orb{display:none}
.noise{mix-blend-mode:normal;opacity:.05;bottom:auto;height:130vh;transform:translateZ(0)}
.card,.plan,.vipbar,.sthero,.vhero,.upl,.pform,.gt,.role,.cp,.pay{backdrop-filter:none;-webkit-backdrop-filter:none}
.card{background:rgba(255,255,255,.05);box-shadow:0 10px 30px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.05)}
.poster{box-shadow:0 6px 16px rgba(0,0,0,.35)}
.poster .flag.free,.poster .flag.new,.poster .eps,.slide .acts button i,.slide .sub span,.dback .tr,.chips.sticky{backdrop-filter:none;-webkit-backdrop-filter:none}
.slide .acts button i{background:rgba(10,5,13,.55)}
.poster .eps{background:rgba(0,0,0,.55)}
.poster .flag.free{background:rgba(40,30,45,.85)}
.hdr,.tabbar,.stickycta,.sheet{backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
@media(hover:none) and (pointer:coarse){
  .noise{display:none}
  .hdr,.tabbar,.stickycta,.chips.sticky{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(10,5,13,.94)}
  .sheet,.dim,.gate{backdrop-filter:none;-webkit-backdrop-filter:none}
  .sheet{background:rgba(16,8,19,.98)}
  .gate{background:rgba(10,5,13,.94)}
  .slide .lockcard,.pbtn,.slide .pause{backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
  .slide.act img.ld{animation:none}
  .tabbar a.on svg{filter:none}
}

/* ── 付款方式品牌圖標統一 ── */
.pay{padding:10px 4px 9px;gap:6px}
.pay .lg{width:54px;height:32px;padding:0;border-radius:8px;display:flex;align-items:center;justify-content:center;gap:4px;background:rgba(255,255,255,.1);color:#fff;font-family:-apple-system,'Inter',Roboto,sans-serif;font-weight:700;font-size:13px;letter-spacing:-.01em;line-height:1}
.pay .lg b{font-weight:700}
.pay .lg svg{display:block;flex:0 0 auto}
.pay small{font-size:12.5px;color:var(--ink-2)}
.pay.on .lg{background:rgba(var(--pp-rgb),.22);color:#fff}
.pay.on small{color:var(--pp-1)}

/* ── 製作：雙人上傳 + 演示動畫 ── */
.upl2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.upl2 .upl{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 10px;text-align:center}
.upl2 .upl .ph{width:96px;height:96px;aspect-ratio:1;border-radius:50%;border:2px solid rgba(var(--pp-rgb),.35)}
.upl2 .upl .ph img{border-radius:50%}
.upl2 .upl .tx b{font-size:15px}.upl2 .upl .tx small{font-size:12px;color:var(--ink-3);display:block;margin-top:2px;line-height:1.4}
.demo{margin:14px 0 4px;position:relative}
.dm-stage{position:relative;aspect-ratio:16/9;border-radius:14px;overflow:hidden;background:#0B0610;border:1px solid var(--line)}
.dm-poster{position:absolute;left:50%;top:6%;width:34%;aspect-ratio:9/16;transform:translateX(-50%);border-radius:8px;overflow:hidden;border:1px solid rgba(255,255,255,.18);box-shadow:0 12px 30px rgba(0,0,0,.55);animation:dmPoster 6s ease-in-out infinite}
.dm-poster img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.dm-veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,4,10,.1),transparent 40%,rgba(7,4,10,.9))}
.dm-title{position:absolute;left:6px;right:6px;bottom:6px;font-family:var(--display);font-weight:900;font-size:10px;line-height:1.2;color:#F8F2F6;text-shadow:0 1px 6px rgba(0,0,0,.8)}
.dm-face{position:absolute;width:24%;aspect-ratio:1;border-radius:50%;overflow:hidden;border:2px solid #fff;box-shadow:0 8px 20px rgba(0,0,0,.5);will-change:transform,opacity}
.dm-face img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.dm-face span{position:absolute;left:50%;bottom:-2px;transform:translateX(-50%);font-family:var(--mono);font-size:9px;font-weight:700;color:#fff;background:var(--pp);padding:0 6px;border-radius:999px;line-height:14px}
.dm-face.me{left:8%;bottom:10%;animation:dmMe 6s ease-in-out infinite}
.dm-face.ta{right:8%;bottom:10%;animation:dmTa 6s ease-in-out infinite}
.dm-spark{position:absolute;left:50%;top:44%;width:8px;height:8px;border-radius:50%;background:#fff;box-shadow:0 0 0 0 rgba(var(--pp-rgb),.8),0 0 30px 10px rgba(var(--pp-rgb),.6);transform:translate(-50%,-50%) scale(0);animation:dmSpark 6s ease-out infinite}
.dm-cap{position:absolute;left:0;right:0;bottom:8px;text-align:center;font-family:var(--display);font-weight:900;font-size:15px;color:var(--pp-1);text-shadow:0 2px 10px rgba(0,0,0,.8);opacity:0;animation:dmCap 6s ease-in-out infinite}
.dm-steps{display:flex;justify-content:space-between;gap:6px;margin-top:8px;font-family:var(--mono);font-size:11px;color:var(--ink-3)}
@keyframes dmMe{0%,8%{transform:translate(0,40%) scale(.6);opacity:0}16%{transform:translate(0,0) scale(1);opacity:1}30%{transform:translate(0,0) scale(1)}46%,80%{transform:translate(95%,-118%) scale(.78);opacity:1}92%,100%{transform:translate(95%,-118%) scale(.78);opacity:0}}
@keyframes dmTa{0%,14%{transform:translate(0,40%) scale(.6);opacity:0}22%{transform:translate(0,0) scale(1);opacity:1}30%{transform:translate(0,0) scale(1)}46%,80%{transform:translate(-95%,-128%) scale(.6);opacity:1}92%,100%{transform:translate(-95%,-128%) scale(.6);opacity:0}}
@keyframes dmPoster{0%,30%{filter:brightness(.55) saturate(.6)}50%,80%{filter:brightness(1.05) saturate(1.1)}92%,100%{filter:brightness(.55) saturate(.6)}}
@keyframes dmSpark{0%,44%{transform:translate(-50%,-50%) scale(0);opacity:0}50%{transform:translate(-50%,-50%) scale(3);opacity:1}58%,100%{transform:translate(-50%,-50%) scale(0);opacity:0}}
@keyframes dmCap{0%,50%{opacity:0;transform:translateY(6px)}58%,82%{opacity:1;transform:none}92%,100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.dm-face.me{transform:translate(95%,-118%) scale(.78);opacity:1}.dm-face.ta{transform:translate(-95%,-128%) scale(.6);opacity:1}.dm-cap{opacity:1}}

/* ── 首頁一行兩張 ── */
.grid2{grid-template-columns:repeat(2,1fr);gap:14px}
.grid2 .poster{border-radius:14px}
.grid2 .poster .pt{font-size:19px;left:12px;right:12px;bottom:12px;-webkit-line-clamp:2}
.grid2 .poster .flag{font-size:10px;padding:4px 9px;top:9px;left:9px}
.grid2 .poster .eps{font-size:11px;padding:3px 8px;top:9px;right:9px}
.grid2 .cap{font-size:15px;margin-top:8px}
.grid2 .sub{font-size:13px;margin-top:3px}
.grid2 .cap{display:none}
.grid2 .sub{margin-top:8px;font-size:13.5px}

/* ── 真實影片播放 ── */
.slide video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#000}
.slide img.bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:blur(3px) brightness(.7)}
.slide .spin{position:absolute;left:50%;top:50%;width:36px;height:36px;margin:-18px 0 0 -18px;border-radius:50%;border:3px solid rgba(255,255,255,.2);border-top-color:var(--pp);opacity:0;z-index:3;animation:spin 1s linear infinite;pointer-events:none;transition:opacity .2s}
.slide.loading .spin{opacity:1}
@keyframes spin{to{transform:rotate(360deg)}}
.slide .acts{bottom:96px}
.slide .info{bottom:26px}

/* ── 三個 Tab ── */
.tabbar{grid-template-columns:repeat(3,1fr)}
.frstat{margin-top:10px;font-size:12.5px;color:var(--ink-3);display:flex;justify-content:space-between;align-items:center;gap:10px}
.frstat button{color:var(--pp);font-size:12.5px;font-weight:500}

/* ── 10 秒預覽 ── */
.slide .lockcard{display:none}
.slide.locked .lockcard{display:grid}
.slide.locked .pause{opacity:0}
.prevpill{position:absolute;left:12px;top:calc(var(--hdr) + 10px);z-index:3;display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border-radius:999px;background:rgba(10,5,13,.6);border:1px solid rgba(var(--pp-rgb),.4);color:var(--pp-1);font-family:var(--mono);font-size:12px;font-weight:500;pointer-events:none}
.prevpill i{width:7px;height:7px;border-radius:50%;background:var(--pp);box-shadow:0 0 8px var(--pp);animation:live-blink 1.6s ease-in-out infinite}

/* ── 登入 / 註冊 ── */
.auth{padding:8px 0 24px;display:flex;flex-direction:column;gap:16px}
.auth-brand{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:14px 0 4px}
.auth-brand .mk{width:52px;height:52px;border-radius:16px;background:linear-gradient(135deg,var(--pp-1),var(--pp-2));box-shadow:0 0 30px var(--pp-glow);display:grid;place-items:center;color:var(--pp-ink);font-family:var(--display);font-weight:800;font-size:26px;font-style:italic}
.auth-brand b{font-family:var(--display);font-weight:700;font-size:24px;line-height:1}
.auth-brand b i{font-style:italic;color:var(--pp-1)}
.auth-brand small{color:var(--ink-3);font-size:12.5px}
.tabs2{display:grid;grid-template-columns:1fr 1fr;padding:4px;border-radius:999px;background:rgba(255,255,255,.05);border:1px solid var(--line)}
.tabs2 button{height:38px;border-radius:999px;font-size:14.5px;color:var(--ink-2);transition:background .15s,color .15s}
.tabs2 button.on{background:rgba(var(--pp-rgb),.16);color:var(--pp-1);font-weight:500;box-shadow:inset 0 0 0 1px rgba(var(--pp-rgb),.35)}
.auth .pform{margin-top:0}
.auth .pform input:not([type=checkbox]){font-family:var(--sans)}
.pwwrap{display:flex;align-items:center;gap:8px}
.pwwrap input{flex:1}
.pwwrap .eye{flex:0 0 auto;height:46px;padding:0 12px;border-radius:12px;border:1px solid var(--line);color:var(--ink-2);font-size:12.5px}
.auth .chk a{color:var(--pp-1);text-decoration:underline;text-underline-offset:2px;margin:0 2px}
.auth-or{display:flex;align-items:center;gap:12px;color:var(--ink-3);font-size:12px}
.auth-or::before,.auth-or::after{content:"";flex:1;height:1px;background:var(--line)}
.social{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.social button{height:46px;border-radius:12px;border:1px solid var(--line);background:rgba(255,255,255,.05);display:flex;align-items:center;justify-content:center;gap:8px;font-size:14px;font-weight:500;color:var(--ink)}
.auth .fine{margin:0;text-align:center;font-size:12px;color:var(--ink-3)}
.plan-sum{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:14px;background:rgba(var(--pp-rgb),.1);border:1px solid rgba(var(--pp-rgb),.35)}
.plan-sum>div:first-child{flex:1;min-width:0}
.plan-sum b{display:block;font-size:16px;font-weight:500}
.plan-sum small{display:block;color:var(--ink-3);font-size:12px;font-family:var(--mono)}
.plan-sum .pr{font-family:var(--mono);font-weight:700;font-size:22px;color:var(--pp-1);font-variant-numeric:tabular-nums}
.sheet .sh .ib{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:var(--ink-2);background:rgba(255,255,255,.06);border:1px solid var(--line)}

/* ── 促銷彈窗 ── */
.promo{position:fixed;inset:0;z-index:98;display:grid;place-items:center;padding:24px;background:rgba(10,5,13,.78);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);opacity:0;pointer-events:none;transition:opacity .25s}
.promo.on{opacity:1;pointer-events:auto}
.promo-card{position:relative;width:100%;max-width:340px;padding:28px 22px 18px;border-radius:24px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px;background:linear-gradient(160deg,rgba(var(--pp-rgb),.28),rgba(16,8,19,.98) 55%);border:1px solid rgba(var(--pp-rgb),.45);box-shadow:0 30px 80px rgba(0,0,0,.6),0 0 60px rgba(var(--pp-rgb),.25);transform:translateY(12px);transition:transform .3s var(--ease)}
.promo.on .promo-card{transform:none}
.promo-x{position:absolute;top:10px;right:10px;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:var(--ink-2);background:rgba(255,255,255,.06);border:1px solid var(--line)}
.promo-price{display:flex;flex-direction:column;align-items:center;gap:2px;margin-top:4px}
.promo-price small{font-size:13px;color:var(--ink-2)}
.promo-price b{font-family:var(--mono);font-weight:700;font-size:56px;line-height:1;color:var(--pp-1);text-shadow:0 0 30px rgba(var(--pp-rgb),.5);font-variant-numeric:tabular-nums}
.promo-price b i{font-style:normal;font-size:20px;margin-right:4px;vertical-align:top;line-height:1.6}
.promo-card h2{margin:4px 0 0;font-family:var(--display);font-weight:900;font-size:21px;letter-spacing:.03em;line-height:1.3}
.promo-card p{margin:0;color:var(--ink-2);font-size:13px;line-height:1.6}
.promo-card .btn{margin-top:8px;height:48px;font-size:16px}
.promo-later{color:var(--ink-3);font-size:13px;padding:6px 10px}
.plan.is-promo{background:linear-gradient(130deg,rgba(var(--pp-rgb),.18),rgba(var(--pp-rgb),.04));border-color:rgba(var(--pp-rgb),.45)}
.plan.is-promo .pr{color:var(--pp-1)}
