﻿@font-face{font-family:'ChonburiTitle';src:url('../assets/fonts/Chonburi-Regular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
:root{--ink:#eaf2ff;--muted:#8ea0c4;--gold:#f5d27a;--gold2:#c9a14a;--neon:#36d0ff;--line:rgba(120,160,255,.16);--display:'Orbitron',sans-serif;--body:'Chakra Petch',sans-serif;--thai:'Kanit','Chakra Petch',sans-serif;--title-thai:'ChonburiTitle','Kanit','Chakra Petch',sans-serif;}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--body);background:#03040a;color:var(--ink);overflow-x:hidden;position:relative;min-height:100vh}

.stageBg{position:fixed;inset:0;z-index:-5;background-image:url("../assets/bg/stage-bg.jpg");background-repeat:repeat;background-size:1200px 900px;animation:flowDown 26s linear infinite;will-change:background-position}
@keyframes flowDown{from{background-position:0 0}to{background-position:0 900px}}
#ripples{position:fixed;inset:0;z-index:90;pointer-events:none;overflow:hidden}
.ripple{position:absolute;border-radius:50%;border:2px solid var(--gold);transform:translate(-50%,-50%) scale(0);box-shadow:0 0 26px rgba(245,210,122,.6),inset 0 0 18px rgba(54,208,255,.4);animation:rip .7s ease-out forwards}
@keyframes rip{0%{opacity:.85;transform:translate(-50%,-50%) scale(0)}100%{opacity:0;transform:translate(-50%,-50%) scale(1)}}

.world{transition:transform 1.1s cubic-bezier(.2,.8,.2,1),filter 1.1s}
body.scene-active .world{transform:scale(.92) translateY(12px);filter:blur(8px) brightness(.55)}
header{position:fixed;top:0;left:0;right:0;z-index:60;display:flex;align-items:center;justify-content:space-between;padding:14px clamp(16px,4vw,48px);background:rgba(5,8,18,.5);backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:14px}
.cover{width:48px;height:48px;border-radius:12px;display:grid;place-items:center;position:relative;overflow:hidden;font-family:var(--display);font-weight:900;font-size:13px;color:#1a1405;background:linear-gradient(135deg,var(--gold),#fff5d6 45%,var(--gold2));box-shadow:0 0 26px rgba(245,210,122,.5)}
.cover::after{content:"";position:absolute;inset:0;z-index:2;background:linear-gradient(115deg,transparent 40%,rgba(255,255,255,.6) 50%,transparent 60%);background-size:250% 250%;animation:holoSweep 3.2s linear infinite;pointer-events:none}
.cover .logo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;z-index:1}
.brand .phase{font-family:var(--display);font-weight:900;font-size:20px;letter-spacing:2px;line-height:1}
.brand .phase b{background:linear-gradient(90deg,var(--gold),#fff,var(--neon));-webkit-background-clip:text;background-clip:text;color:transparent}
@keyframes holoSweep{0%{background-position:200% 0}100%{background-position:-80% 0}}
.title{text-align:center;padding:96px 20px 14px;position:relative;overflow:visible}
.title h1{font-family:var(--title-thai);font-weight:400;font-size:clamp(46px,9vw,106px);letter-spacing:.015em;line-height:1.24;padding:.16em 0}
.title h1 span{display:inline-block;padding:.08em 8px .2em 12px;overflow:visible;background:linear-gradient(100deg,#ffcf5e 0%,#fff3d0 42%,#ffffff 52%,#ffd86b 70%,#ffb347 100%);background-size:220% auto;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-stroke:.6px rgba(8,18,38,.38);animation:shineText 5s linear infinite,glowPulse 3.4s ease-in-out infinite;filter:drop-shadow(0 0 20px rgba(255,205,90,.78)) drop-shadow(0 0 48px rgba(255,170,60,.44))}
@keyframes shineText{to{background-position:220% center}}
@keyframes glowPulse{0%,100%{filter:drop-shadow(0 0 18px rgba(255,205,90,.75)) drop-shadow(0 0 46px rgba(255,170,60,.4))}50%{filter:drop-shadow(0 0 30px rgba(255,235,170,.98)) drop-shadow(0 0 74px rgba(255,180,70,.62))}}
.stage{max-width:1320px;margin:0 auto;padding:6px clamp(16px,4vw,48px) 90px;perspective:1600px}
.players{display:flex;flex-wrap:wrap;gap:30px 26px;justify-content:center;align-items:flex-start}
.pcard{cursor:pointer;transform-style:preserve-3d;transition:transform .2s ease,filter .4s;opacity:0;transform:translateY(40px);width:190px;flex:0 0 190px;max-width:210px;position:relative}
.pcard.in{opacity:1;transform:none;transition:opacity .7s,transform .7s}
.pcard.launch .inner{animation:launch .42s cubic-bezier(.3,.9,.3,1)}
@keyframes launch{40%{transform:scale(.94)}100%{transform:scale(1.06)}}
.pcard .inner{position:relative;border-radius:14px;overflow:hidden;aspect-ratio:260/372;transition:box-shadow .4s,transform .4s;box-shadow:0 22px 50px -26px #000;background:#05070f}
/* unified glowing animated frame for ALL cards */
.pcard .inner::before{content:"";position:absolute;inset:0;z-index:3;border-radius:14px;padding:2.5px;pointer-events:none;background:conic-gradient(from var(--ang,0deg),#ffe9a8,#ffcf5e,#ff9e57,#d65bff,#8b5cff,#36d0ff,#7fe9ff,#ffe9a8);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:frameSpin 6s linear infinite}
.pcard .inner::after{content:"";position:absolute;inset:0;z-index:3;border-radius:14px;pointer-events:none;box-shadow:inset 0 0 22px rgba(255,210,120,.25),0 0 26px -8px rgba(255,205,110,.7)}
@property --ang{syntax:"<angle>";inherits:false;initial-value:0deg}
@keyframes frameSpin{to{--ang:360deg}}
.pcard img.card{width:100%;height:100%;object-fit:cover;display:block}
.pcard .scan{position:absolute;inset:0;opacity:.14;background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(120,200,255,.25) 3px 4px);mix-blend-mode:overlay;pointer-events:none}
.pcard .shine{position:absolute;inset:0;z-index:2;opacity:.25;mix-blend-mode:screen;background:linear-gradient(115deg,transparent 38%,rgba(255,255,255,.5) 50%,transparent 62%);background-size:250% 250%;pointer-events:none;animation:holoSweep 6s linear infinite}
.pcard:hover .inner{transform:translateY(-2px);box-shadow:0 0 46px -6px rgba(255,205,110,.7),0 0 70px -10px rgba(54,208,255,.45),0 44px 80px -26px #000}
.pcard:hover .shine{opacity:.9;animation:holoSweep 1.1s ease}
.cap{margin-top:11px;text-align:center}
.cap .nm{font-family:var(--display);font-size:13px;font-weight:700;letter-spacing:.5px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cap .mt{font-size:11px;letter-spacing:1px;color:var(--muted);margin-top:2px}
.wipe{position:fixed;inset:0;z-index:150;pointer-events:none;overflow:hidden;display:none}
.wipe.run{display:block}
.wipe .burst{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:50%}
/* core flash */
.wipe .bloom{width:72vmax;height:72vmax;mix-blend-mode:screen;filter:blur(6px);
  background:radial-gradient(circle,rgba(255,255,255,.98),rgba(255,238,190,.7) 14%,rgba(255,205,110,.45) 30%,rgba(54,208,255,.28) 50%,rgba(139,92,255,.16) 64%,transparent 75%);
  animation:bloomOut 1.5s cubic-bezier(.2,.7,.14,1) both}
@keyframes bloomOut{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}16%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(1.75)}}
.wipe.closing .bloom{animation:bloomIn 1.5s cubic-bezier(.2,.7,.14,1) both}
@keyframes bloomIn{0%{opacity:0;transform:translate(-50%,-50%) scale(1.75)}30%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(0)}}
/* shockwave ring of light */
.wipe .shock{width:62vmax;height:62vmax;mix-blend-mode:screen;
  background:radial-gradient(circle,transparent 42%,rgba(255,235,180,.55) 52%,rgba(54,208,255,.4) 60%,transparent 70%);
  animation:shockOut 1.35s cubic-bezier(.1,.8,.12,1) both}
@keyframes shockOut{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}12%{opacity:.95}100%{opacity:0;transform:translate(-50%,-50%) scale(1.95)}}
.wipe.closing .shock{opacity:0;animation:none}
/* triple expanding rings */
.wipe .ring{width:60vmax;height:60vmax;border-style:solid;background:transparent}
.wipe .ring.g{border-width:3px;border-color:rgba(255,210,120,.9);box-shadow:0 0 52px rgba(255,205,110,.6),inset 0 0 36px rgba(255,205,110,.3);animation:ringOut 1.3s .02s cubic-bezier(.14,.82,.14,1) both}
.wipe .ring.c{border-width:2px;border-color:rgba(54,208,255,.85);box-shadow:0 0 52px rgba(54,208,255,.55),inset 0 0 36px rgba(54,208,255,.26);animation:ringOut 1.42s .16s cubic-bezier(.14,.82,.14,1) both}
.wipe .ring.w{border-width:1.5px;border-color:rgba(214,91,255,.7);box-shadow:0 0 52px rgba(214,91,255,.5);animation:ringOut 1.55s .3s cubic-bezier(.14,.82,.14,1) both}
@keyframes ringOut{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}14%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(1)}}
.wipe.closing .ring{animation-name:ringIn!important}
@keyframes ringIn{0%{opacity:0;transform:translate(-50%,-50%) scale(1.12)}26%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(0)}}
/* rotating light shafts */
.wipe .rays{width:96vmax;height:96vmax;mix-blend-mode:screen;filter:blur(1.5px);
  background:repeating-conic-gradient(from 0deg,rgba(255,235,170,.20) 0deg 1.1deg,transparent 1.1deg 7.5deg,rgba(54,208,255,.17) 7.5deg 8.6deg,transparent 8.6deg 15deg);
  -webkit-mask:radial-gradient(circle,transparent 20%,#000 28%,#000 58%,transparent 70%);mask:radial-gradient(circle,transparent 20%,#000 28%,#000 58%,transparent 70%);
  animation:rays 1.5s cubic-bezier(.2,.7,.2,1) both}
@keyframes rays{0%{opacity:0;transform:translate(-50%,-50%) scale(.15) rotate(-42deg)}22%{opacity:.95}100%{opacity:0;transform:translate(-50%,-50%) scale(1.4) rotate(58deg)}}
/* radiating sparks (spawned by JS) */
.wipe .sparks{position:absolute;left:50%;top:50%;width:0;height:0}
.wipe .spark{position:absolute;left:0;top:0;width:7px;height:7px;border-radius:50%;background:radial-gradient(circle,#fff,rgba(255,210,120,.9));box-shadow:0 0 12px rgba(255,210,120,.95),0 0 24px rgba(54,208,255,.6);transform:translate(-50%,-50%);animation:sparkFly 1s cubic-bezier(.1,.7,.2,1) forwards}
@keyframes sparkFly{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}15%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) scale(.5)}}
.scene{position:fixed;inset:0;z-index:120;display:none;background:rgba(2,4,10,.5);backdrop-filter:blur(12px)}
.scene.open{display:block;animation:sFade .7s ease}
@keyframes sFade{from{opacity:0}to{opacity:1}}
.panel{position:absolute;inset:0;display:block;overflow:auto}
.phero{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:74px 18px 8px;min-height:54vh;overflow:hidden}
.scene.open .phero{animation:heroIn 1s .25s both cubic-bezier(.2,.8,.2,1)}
.scene.open .pgal{animation:galUp 1s 1.7s both cubic-bezier(.2,.8,.2,1)}
@keyframes heroIn{from{opacity:0;transform:translateY(-30px) scale(.98)}to{opacity:1;transform:none}}
@keyframes galUp{from{opacity:0;transform:translateY(70px)}to{opacity:1;transform:none}}
.phero .rings{position:absolute;inset:0;display:grid;place-items:center;z-index:0}
.phero .rg{position:absolute;border:1px solid var(--fg);border-radius:50%;opacity:.4}
.rg.a{width:230px;height:230px;animation:spin 24s linear infinite}.rg.b{width:360px;height:360px;animation:spin 38s linear infinite reverse}.rg.c{width:500px;height:500px;animation:spin 56s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.holowrap{position:relative;z-index:2;animation:floaty 5s ease-in-out infinite}
@keyframes floaty{50%{transform:translateY(-16px)}}
.holocard{position:relative;width:min(225px,62vw);border-radius:16px;overflow:hidden;box-shadow:0 0 60px var(--fg),0 30px 60px -20px #000}
.scene.open .holocard{animation:cardflip 1.5s .5s both cubic-bezier(.18,.7,.16,1)}
@keyframes cardflip{0%{opacity:0;transform:perspective(1200px) rotateY(105deg) scale(.55)}45%{opacity:1}70%{transform:perspective(1200px) rotateY(-12deg) scale(1.05)}100%{opacity:1;transform:perspective(1200px) rotateY(0) scale(1)}}
.holocard img{width:100%;display:block}
.holocard::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 5px,rgba(120,200,255,.22) 5px 6px);mix-blend-mode:overlay;pointer-events:none;animation:scanmove 4s linear infinite}
@keyframes scanmove{to{background-position:0 60px}}
.holocard .sweep{position:absolute;inset:0;mix-blend-mode:screen;background:linear-gradient(115deg,transparent 38%,rgba(255,255,255,.4) 50%,transparent 62%);background-size:250% 250%;animation:holoSweep 3.5s linear infinite;pointer-events:none}
.platform{position:relative;z-index:1;margin-top:24px;width:60%;height:40px;border-radius:50%;background:radial-gradient(ellipse,var(--fg),transparent 70%);filter:blur(5px)}
.ptitle{position:relative;z-index:3;text-align:center;margin-top:16px}
.ptitle h2{font-family:var(--display);font-size:clamp(19px,2.8vw,32px);text-transform:uppercase;letter-spacing:1px;margin:6px 0 4px;background:linear-gradient(180deg,#fff,var(--fa));-webkit-background-clip:text;background-clip:text;color:transparent}
.ptitle .meta{color:var(--muted);font-size:13px;letter-spacing:2px}
.scene.open .ptitle h2{animation:fadeUp .9s 1.45s both cubic-bezier(.2,.8,.2,1)}.scene.open .ptitle .meta{animation:fadeUp .9s 1.62s both cubic-bezier(.2,.8,.2,1)}
@keyframes fadeUp{from{opacity:0;transform:translateY(34px)}to{opacity:1;transform:none}}
.pgal{position:relative;max-width:1240px;margin:0 auto;padding:0 clamp(16px,4vw,40px) 70px}
.ghead{display:flex;align-items:center;justify-content:center;text-align:center;margin-bottom:14px}
.ghead h3{font-family:var(--display);font-size:18px;text-transform:uppercase;letter-spacing:1px}
.imgs{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,420px));gap:18px;justify-content:center}
.shot{position:relative;border-radius:14px;overflow:hidden;cursor:pointer;border:1px solid var(--line);transition:transform .35s,box-shadow .35s,border-color .35s;opacity:0;transform:translateY(40px) scale(.92);aspect-ratio:960/540;box-shadow:0 14px 36px -22px #000}
.shot.in{opacity:1;transform:none;transition:opacity .8s cubic-bezier(.2,.8,.2,1),transform .8s cubic-bezier(.2,.8,.2,1),box-shadow .35s,border-color .35s}
.shot img{width:100%;height:100%;object-fit:cover;display:block}
.shot .hsc{position:absolute;inset:0;opacity:.12;background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(120,200,255,.2) 3px 4px);mix-blend-mode:overlay;pointer-events:none}
.shot .sh{position:absolute;inset:0;opacity:0;mix-blend-mode:screen;transition:.3s;background:linear-gradient(115deg,transparent 40%,rgba(255,255,255,.45) 50%,transparent 60%);background-size:250% 250%;pointer-events:none}
.shot:hover{transform:scale(1.02);box-shadow:0 24px 50px -20px rgba(0,0,0,.9),0 0 30px -6px var(--fg);border-color:var(--fa);z-index:5}
.shot:hover .sh{opacity:.6;animation:holoSweep 1.1s ease}
.back{position:absolute;top:22px;left:22px;z-index:10;display:grid;place-items:center;width:66px;height:66px;border-radius:50%;cursor:pointer;color:#f7fbff;border:1px solid rgba(255,255,255,.16);background:linear-gradient(145deg,rgba(9,31,59,.92),rgba(3,12,30,.96));box-shadow:0 16px 34px -24px #000,0 0 0 1px rgba(255,255,255,.04),inset 0 1px 0 rgba(255,255,255,.12),inset 0 -18px 26px rgba(0,0,0,.24);backdrop-filter:blur(12px);overflow:hidden;transition:transform .28s ease,border-color .28s ease,box-shadow .28s ease;animation:backFloat 3.2s ease-in-out infinite,backGlow 2.8s ease-in-out infinite}
.back span{position:relative;z-index:1;display:block;width:28px;height:3px;border-radius:99px;background:currentColor;font-size:0;transform:translateX(3px);filter:none;transition:transform .28s ease,width .28s ease}
.back span::before,.back span::after{content:"";position:absolute;left:-1px;width:14px;height:3px;border-radius:99px;background:currentColor;transform-origin:1px 50%}
.back span::before{transform:rotate(42deg)}
.back span::after{transform:rotate(-42deg)}
@keyframes backFloat{0%,100%{transform:translateX(0) translateY(0)}50%{transform:translateX(-4px) translateY(-2px)}}
@keyframes backGlow{0%,100%{box-shadow:0 16px 34px -24px #000,0 0 0 1px rgba(255,255,255,.04),inset 0 1px 0 rgba(255,255,255,.12),inset 0 -18px 26px rgba(0,0,0,.24)}50%{box-shadow:0 16px 34px -24px #000,0 0 0 1px rgba(255,255,255,.07),inset 0 1px 0 rgba(255,255,255,.16),inset 0 -18px 26px rgba(0,0,0,.24)}}
.back:hover{border-color:rgba(255,255,255,.26);box-shadow:0 18px 38px -24px #000,0 0 0 1px rgba(255,255,255,.06),inset 0 1px 0 rgba(255,255,255,.16);animation-play-state:paused;transform:translateX(-6px) scale(1.08)}
.back:hover span{width:33px;transform:translateX(-1px)}
.back:active{transform:translateX(-4px) scale(.96)}
.lb{position:fixed;inset:0;z-index:200;display:none;place-items:center;background:rgba(2,3,9,.93);backdrop-filter:blur(14px);padding:24px}
.lb.open{display:grid;animation:sFade .35s ease}
.lb .frame{position:relative;width:min(900px,94vw);border-radius:16px;overflow:hidden;box-shadow:0 0 70px var(--fg);animation:zoomIn .4s ease}
@keyframes zoomIn{from{transform:scale(.9);opacity:0}to{transform:none;opacity:1}}
.lb .frame img{width:100%;display:block}
.lb .frame .hsc{position:absolute;inset:0;opacity:.1;background:repeating-linear-gradient(0deg,transparent 0 4px,rgba(120,200,255,.22) 4px 5px);mix-blend-mode:overlay;pointer-events:none}
.lb .nav{position:absolute;top:50%;transform:translateY(-50%);font-size:48px;color:#fff;cursor:pointer;z-index:6;padding:8px 14px;user-select:none;opacity:.65;transition:.2s;background:rgba(0,0,0,.3);border-radius:12px}
.lb .nav:hover{opacity:1}.lb .prev{left:18px}.lb .next{right:18px}
.lb .x{position:absolute;top:18px;right:24px;font-size:30px;color:var(--ink);cursor:pointer;z-index:7;line-height:1}
.lb .count{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);z-index:7;font-family:var(--display);font-size:12px;letter-spacing:2px;color:#fff;background:rgba(0,0,0,.45);padding:6px 14px;border-radius:20px}
@media(max-width:860px){.phero{min-height:62vh}}
@media(max-width:600px){.imgs{grid-template-columns:1fr;gap:14px}.pgal{padding:24px 16px 40px}.phero{padding:30px 16px}}
@media(max-width:480px){.players{gap:20px 16px}.pcard{width:calc(50% - 8px);flex:0 1 calc(50% - 8px);max-width:190px;min-width:0}}

/* ===== loading screen ===== */
#loader{position:fixed;inset:0;z-index:500;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;
  background:radial-gradient(circle at 50% 38%,#0c3350,#04101a 72%);transition:opacity .6s ease,visibility .6s}
#loader.hide{opacity:0;visibility:hidden}
#loader .lg{width:98px;height:98px;border-radius:24px;overflow:hidden;box-shadow:0 0 44px rgba(54,208,255,.5),0 0 0 2px rgba(255,255,255,.12);animation:lgPulse 1.8s ease-in-out infinite}
#loader .lg img{width:100%;height:100%;object-fit:cover;display:block}
@keyframes lgPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
#loader .lt{font-family:var(--display);font-weight:700;letter-spacing:8px;font-size:clamp(26px,5vw,44px);
  background:linear-gradient(100deg,#ffcf5e,#fff,#36d0ff);background-size:220% auto;-webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 0 18px rgba(54,208,255,.5));animation:shineText 4s linear infinite}
#loader .bar{width:min(260px,60vw);height:5px;border-radius:10px;background:rgba(255,255,255,.12);overflow:hidden}
#loader .bar i{display:block;height:100%;width:38%;border-radius:10px;background:linear-gradient(90deg,#ffcf5e,#36d0ff);box-shadow:0 0 14px rgba(54,208,255,.7);animation:loadBar 1.25s ease-in-out infinite}
@keyframes loadBar{0%{transform:translateX(-130%)}100%{transform:translateX(330%)}}
#loader .tip{font-size:12px;letter-spacing:3px;text-transform:uppercase;color:var(--muted)}
.pcard,.scene,.lb{--fa:#bfe3ff;--fg:rgba(120,180,255,.5)}
.holocard::before{content:"";position:absolute;inset:0;z-index:5;border-radius:16px;padding:3px;pointer-events:none;background:conic-gradient(from var(--ang,0deg),#ffe9a8,#ffcf5e,#ff9e57,#d65bff,#8b5cff,#36d0ff,#7fe9ff,#ffe9a8);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:frameSpin 6s linear infinite}
.lb .frame::before{content:"";position:absolute;inset:0;z-index:5;border-radius:16px;padding:3px;pointer-events:none;background:conic-gradient(from var(--ang,0deg),#ffe9a8,#ffcf5e,#ff9e57,#d65bff,#8b5cff,#36d0ff,#7fe9ff,#ffe9a8);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:frameSpin 6s linear infinite}

/* ===== CLOSE animation (mirror of open: everything collapses inward) ===== */
.scene.open.closing{animation:sFadeOut .6s ease both}
@keyframes sFadeOut{to{opacity:0}}
.wipe.closing .spark{animation-name:sparkIn!important}
@keyframes sparkIn{0%{opacity:0;transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) scale(.6)}15%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(.25)}}
.scene.closing .holocard{animation:cardOut .5s cubic-bezier(.5,.05,.7,.4) both!important}
@keyframes cardOut{0%{opacity:1;transform:perspective(1100px) rotateY(0) scale(1)}100%{opacity:0;transform:perspective(1100px) rotateY(-72deg) scale(.66)}}
.scene.closing .pgal{animation:galDown .46s ease both!important}
@keyframes galDown{from{opacity:1;transform:none}to{opacity:0;transform:translateY(54px)}}
.scene.closing .ptitle h2,.scene.closing .ptitle .meta{animation:fadeDown .42s ease both!important}
@keyframes fadeDown{to{opacity:0;transform:translateY(22px)}}
.catwrap{text-align:center;margin:-12px auto 24px;max-width:980px}
.catlabel{position:relative;display:inline-flex;align-items:center;justify-content:center;font-family:var(--thai);font-size:21px;font-weight:700;letter-spacing:.05em;margin-bottom:13px;padding:0 2px 12px;color:rgba(234,242,255,.9)}
.catlabel::after{content:"";position:absolute;left:50%;bottom:0;width:66px;height:1px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,rgba(245,210,122,.9),transparent)}
.catlabel .t{color:inherit}
.tabs{display:grid;grid-template-columns:repeat(13,minmax(0,1fr));gap:5px;width:min(820px,100%);margin:0 auto;padding:6px;border:1px solid rgba(160,190,255,.13);border-radius:18px;background:rgba(4,10,22,.42);box-shadow:0 18px 45px -32px #000;backdrop-filter:blur(12px)}
.tab{display:inline-flex;align-items:center;justify-content:center;font-family:var(--display);font-size:12px;font-weight:700;letter-spacing:1.1px;text-transform:uppercase;min-width:0;padding:9px 0;border-radius:12px;cursor:pointer;color:rgba(234,244,255,.76);border:1px solid transparent;background:transparent;box-shadow:none;transition:color .22s ease,background .22s ease,border-color .22s ease,box-shadow .22s ease;white-space:nowrap}
.tab:hover{color:#fff;border-color:rgba(127,233,255,.24);background:rgba(127,233,255,.08)}
.tab.active{color:#06101c;background:linear-gradient(135deg,rgba(245,210,122,.96),rgba(255,244,207,.94));border-color:rgba(255,235,170,.82);box-shadow:0 8px 22px -14px rgba(245,210,122,.9)}
.tab.all{padding:9px 0}
@media(max-width:600px){.catwrap{margin:-8px auto 18px}.catlabel{font-size:17px;margin-bottom:12px}.tabs{display:flex;flex-wrap:wrap;width:100%;gap:5px;padding:5px;border-radius:14px}.tab{flex:1 1 calc(25% - 5px);min-width:54px;padding:9px 8px;font-size:11px;letter-spacing:.7px;border-radius:10px}.tab.all{flex-basis:100%;padding:9px 8px}}
.empty{flex:0 0 100%;display:flex;flex-direction:column;align-items:center;gap:18px;padding:80px 10px;color:var(--muted)}
.empty .x{position:relative;width:140px;height:140px;opacity:.95}
.empty .x::before,.empty .x::after{content:"";position:absolute;top:50%;left:0;width:100%;height:8px;border-radius:8px;background:linear-gradient(90deg,#ff5b6e,#ff2d4d);box-shadow:0 0 24px rgba(255,60,90,.8)}
.empty .x::before{transform:translateY(-50%) rotate(45deg)}
.empty .x::after{transform:translateY(-50%) rotate(-45deg)}

