/* Floor 5 · Bangkok Ad & Sign Expo 2026 seminar hall (expo-hall.html). Dark stage, magenta accents. */
:root{
 --x-bg:#0c0b10;--x-panel:#15131c;--x-panel-2:#1d1a26;--x-line:#2d2938;--x-text:#f4f1f6;--x-dim:#b3abbd;--x-mute:#8a8295;
 --x-pink:#ff1f8f;--x-pink-2:#ff5fb3;--x-cyan:#20c4e8;--x-gold:#ffc531;--x-taken:#565a66;--x-blue:#1d4fb5;
 --x-r:14px;--x-bar:60px;--x-panel-w:400px
}
[hidden]{display:none!important}
html,body{height:100%}
body{background:var(--x-bg);color:var(--x-text);overflow:hidden}
.expo{position:fixed;inset:0;display:grid;grid-template-rows:var(--x-bar) 1fr;grid-template-columns:1fr var(--x-panel-w)}
.xvideo{position:fixed;left:0;top:0;width:2px;height:2px;opacity:0;pointer-events:none}
button{font:inherit;color:inherit}
svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* ---------- top bar ---------- */
.xbar{grid-column:1/-1;display:flex;align-items:center;gap:16px;padding:0 16px;background:#09080d;border-bottom:1px solid var(--x-line);min-width:0}
.xbrand{display:flex;align-items:baseline;gap:2px;color:#fff;text-decoration:none;font-weight:700;font-size:20px;white-space:nowrap}
.xbrand span{color:var(--x-pink-2);font-weight:500}
.xbrand small{margin-left:10px;font-size:12px;font-weight:500;color:var(--x-dim)}
.xtitle{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.xtitle b{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.xtitle small{font-size:12px;color:var(--x-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.xcount{display:flex;gap:8px;margin-left:auto}
.xchip{display:flex;align-items:center;gap:10px;padding:5px 12px;border-radius:999px;background:var(--x-panel-2);border:1px solid var(--x-line);font-size:13px;white-space:nowrap;cursor:pointer;transition:border-color .2s}
.xchip:hover,.xchip[aria-pressed="true"]{border-color:var(--x-pink)}
.xchip b{font-size:13px}
.xchip .n{font-variant-numeric:tabular-nums;font-weight:700;font-size:16px;color:var(--x-cyan)}
.xchip .n.st{color:var(--x-gold)}
.xchip i{font-style:normal;color:var(--x-mute);font-size:12px}
.xtools{display:flex;gap:6px}
.xtools button{display:flex;align-items:center;gap:6px;min-height:40px;padding:0 12px;border-radius:999px;border:1px solid var(--x-line);background:var(--x-panel-2);cursor:pointer;font-size:13px}
.xtools button:hover{border-color:var(--x-pink)}
#sound .on{display:none}#sound[aria-pressed="true"] .on{display:inline}#sound[aria-pressed="true"] .off{display:none}
#sound[aria-pressed="true"]{border-color:var(--x-pink);color:var(--x-pink-2)}

/* ---------- 3D stage ---------- */
.xstage{position:relative;overflow:hidden;min-height:0;background:radial-gradient(ellipse at 50% 30%,#241c33,#0c0b10 70%)}
#scene{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;outline:none}
.xstage.dragging #scene{cursor:grabbing}
.xstage.hovering #scene{cursor:pointer}
.xtip{position:absolute;z-index:4;pointer-events:none;transform:translate(-50%,calc(-100% - 14px));padding:6px 10px;border-radius:10px;background:rgba(12,11,16,.92);border:1px solid var(--x-line);font-size:13px;white-space:nowrap}
.xtip b{color:var(--x-cyan)}.xtip .tk{color:var(--x-mute)}.xtip .mn{color:var(--x-gold)}
.xviews{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);display:flex;gap:4px;padding:5px;border-radius:999px;background:rgba(12,11,16,.78);border:1px solid var(--x-line);z-index:3;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);max-width:calc(100% - 32px);overflow-x:auto;scrollbar-width:none}
.xviews::-webkit-scrollbar{display:none}
.xviews button{min-height:38px;padding:0 14px;border-radius:999px;border:0;background:transparent;cursor:pointer;font-size:13px;white-space:nowrap;color:var(--x-dim)}
.xviews button:hover:not(:disabled){color:#fff;background:var(--x-panel-2)}
.xviews button[aria-pressed="true"]{background:var(--x-pink);color:#fff}
.xviews button:disabled{opacity:.4;cursor:default}
.xhint{position:absolute;left:16px;bottom:70px;margin:0;font-size:12px;color:var(--x-mute);z-index:2;max-width:340px;pointer-events:none}
.xlift{position:absolute;left:16px;top:16px;display:flex;flex-direction:column;gap:3px;padding:6px;border-radius:20px;background:rgba(12,11,16,.78);border:1px solid var(--x-line);z-index:3;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.xlift .xlift-head{font-size:10px;letter-spacing:.14em;text-align:center;color:var(--x-mute);padding:2px 0 4px}
.xlift a{display:flex;align-items:center;gap:10px;min-height:40px;padding:3px 14px 3px 3px;border-radius:999px;color:var(--x-text);text-decoration:none;font-size:13px;font-weight:600}
.xlift a:hover{background:var(--x-panel-2)}
.xlift a b{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;border:1.5px solid var(--x-line);font-variant-numeric:tabular-nums;flex:none}
.xlift a[aria-current] b{background:var(--x-pink);border-color:var(--x-pink);color:#fff}
.xlift a span{display:flex;flex-direction:column;line-height:1.2}
.xlift small{font-size:11px;font-weight:500;color:var(--x-mute)}
.xlift-toggle{display:none}
/* desktop: numbers only until hovered or focused */
.xlift a span,.xlift .xlift-head{display:none}
.xlift a{padding:3px}
.xlift:hover a span,.xlift:focus-within a span{display:flex}
.xlift:hover a,.xlift:focus-within a{padding:3px 14px 3px 3px}
.xlift:hover .xlift-head,.xlift:focus-within .xlift-head{display:block}
.xloading{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:14px;z-index:5;background:var(--x-bg);color:var(--x-dim);font-size:15px;transition:opacity .6s}
.xloading span{width:34px;height:34px;border-radius:50%;border:3px solid var(--x-line);border-top-color:var(--x-pink);animation:xspin 1s linear infinite}
.xloading.done{opacity:0;pointer-events:none}
@keyframes xspin{to{transform:rotate(360deg)}}
.xnogl{position:absolute;inset:0;display:grid;place-items:center;padding:24px;text-align:center;color:var(--x-dim);z-index:5}
.xdoors{position:absolute;inset:0;z-index:8;display:grid;place-items:center;pointer-events:none}
.xdoors::before,.xdoors::after{content:"";position:absolute;top:0;bottom:0;width:50.5%;background:#2b2a30 var(--door-img,none) no-repeat;background-size:200% 100%;transition:transform 1.1s cubic-bezier(.6,0,.2,1)}
.xdoors::before{left:0;background-position:0 50%;border-right:2px solid #111}
.xdoors::after{right:0;background-position:100% 50%;border-left:2px solid #111}
.xdoors b{position:relative;z-index:1;padding:10px 18px;border-radius:999px;background:rgba(12,11,16,.85);font-size:15px;transition:opacity .4s}
.xdoors.open::before{transform:translateX(-101%)}.xdoors.open::after{transform:translateX(101%)}.xdoors.open b{opacity:0}

/* ---------- booking panel ---------- */
.xpanel{grid-row:2;grid-column:2;display:flex;flex-direction:column;min-height:0;background:var(--x-panel);border-left:1px solid var(--x-line)}
.xgrip{display:none}
.xpanel-body{flex:1;overflow-y:auto;padding:18px 18px 28px;overscroll-behavior:contain}
.xsay{display:flex;gap:12px;align-items:flex-start;margin:0 0 16px}
.xsay .av{flex:none;width:52px;height:52px;border-radius:50%;background:#3a2232 center 18%/cover no-repeat;border:2px solid var(--x-pink)}
.xsay .bub{position:relative;padding:10px 14px;border-radius:4px 16px 16px 16px;background:var(--x-panel-2);border:1px solid var(--x-line);font-size:15px;line-height:1.55}
.xsay .who{display:block;font-size:12px;color:var(--x-pink-2);font-weight:600;margin-bottom:2px}
.xsay.typing .bub::after{content:"";display:inline-block;width:6px;height:6px;margin-left:6px;border-radius:50%;background:var(--x-dim);animation:xblink 1s infinite}
@keyframes xblink{50%{opacity:.2}}
.xh{font-size:13px;letter-spacing:.04em;color:var(--x-mute);margin:20px 0 8px;font-weight:600}
.xdays{display:grid;gap:10px}
.xday{display:block;width:100%;text-align:left;padding:14px 16px;border-radius:var(--x-r);border:1.5px solid var(--x-line);background:var(--x-panel-2);cursor:pointer;transition:border-color .2s,transform .2s}
.xday:hover:not(:disabled){border-color:var(--x-pink);transform:translateY(-1px)}
.xday:disabled{opacity:.55;cursor:default}
.xday .d{display:flex;align-items:baseline;gap:10px}
.xday .d b{font-size:22px;color:#fff}
.xday .d span{font-size:13px;color:var(--x-dim)}
.xday .tp{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.xday .tp span{padding:2px 10px;border-radius:999px;background:rgba(255,31,143,.14);color:var(--x-pink-2);font-size:13px;font-weight:600}
.xday .lf{font-size:13px;color:var(--x-dim)}
.xday .lf b{color:var(--x-cyan);font-variant-numeric:tabular-nums}.xday .lf b.st{color:var(--x-gold)}
.xday .mine{display:block;margin-top:4px;font-size:12px;color:var(--x-gold)}
.xnote{font-size:13px;color:var(--x-mute);margin:12px 0 0}
.xtabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:4px;border-radius:999px;background:var(--x-panel-2);border:1px solid var(--x-line)}
.xtabs button{min-height:40px;border:0;border-radius:999px;background:transparent;cursor:pointer;font-size:14px;color:var(--x-dim)}
.xtabs button[aria-pressed="true"]{background:var(--x-pink);color:#fff;font-weight:600}
.xprog{margin:12px 0 0;font-size:14px;color:var(--x-dim)}
.xprog b{color:#fff}
.xbig{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0 0}
.xbig div{padding:10px 12px;border-radius:12px;background:var(--x-panel-2);border:1px solid var(--x-line)}
.xbig small{display:block;font-size:12px;color:var(--x-mute)}
.xbig b{font-size:30px;line-height:1.1;font-variant-numeric:tabular-nums;color:var(--x-cyan)}
.xbig b.st{color:var(--x-gold)}
.xbig i{font-style:normal;color:var(--x-mute);font-size:14px}
.xbig b.bump{animation:xbump .5s}
@keyframes xbump{40%{transform:scale(1.18);color:#fff}}
.xlegend{display:flex;flex-wrap:wrap;gap:12px;margin:12px 0 0;font-size:12px;color:var(--x-dim)}
.xlegend span{display:flex;align-items:center;gap:6px}
.xlegend i{width:12px;height:12px;border-radius:3px;background:var(--x-cyan)}
.xlegend i.tk{background:var(--x-taken)}.xlegend i.sl{background:var(--x-pink)}.xlegend i.mn{background:var(--x-gold)}
.xmap{margin:10px 0 0;padding:12px;border-radius:var(--x-r);background:#0f0e14;border:1px solid var(--x-line)}
.xmap .stg{margin:0 auto 10px;width:70%;padding:3px 0;border-radius:6px;background:linear-gradient(90deg,#3a0d27,#ff1f8f,#3a0d27);text-align:center;font-size:11px;letter-spacing:.2em;color:#fff}
.xrow{display:grid;grid-template-columns:16px repeat(5,1fr) 16px;gap:4px;align-items:center;margin:0 0 4px}
.xrow>em{font-style:normal;font-size:11px;color:var(--x-mute);text-align:center}
.xtbl{display:grid;grid-template-columns:1fr 1fr;gap:2px;padding:2px;border-radius:4px;background:#2a2733}
.xs{min-width:0;aspect-ratio:1/1;border:0;border-radius:4px;background:var(--x-cyan);cursor:pointer;font-size:9px;font-weight:700;color:#05323d;padding:0;line-height:1}
.xs:hover:not(:disabled){outline:2px solid #fff;outline-offset:1px}
.xs[data-s="taken"]{background:var(--x-taken);color:#9a9ca6;cursor:not-allowed}
.xs[data-s="sel"]{background:var(--x-pink);color:#fff}
.xs[data-s="mine"]{background:var(--x-gold);color:#3a2a00}
.xs[data-s="closed"]{background:#2d2b35;color:#6b6676;cursor:not-allowed}
.xstands{display:grid;grid-template-columns:repeat(10,1fr);gap:4px;margin-top:10px}
.xstands .xs{border-radius:50%}
.xmap small{display:block;margin:10px 0 4px;font-size:11px;color:var(--x-mute)}
.xform{margin:16px 0 0;padding:16px;border-radius:var(--x-r);background:var(--x-panel-2);border:1.5px solid var(--x-pink)}
.xform h3{margin:0 0 4px;font-size:18px}
.xform p{margin:0 0 12px;font-size:13px;color:var(--x-dim)}
.xform label{display:block;font-size:13px;margin:10px 0 4px;color:var(--x-dim)}
.xform input{width:100%;box-sizing:border-box;min-height:46px;padding:10px 14px;border-radius:10px;border:1px solid var(--x-line);background:#0f0e14;color:#fff;font:inherit;font-size:16px}
.xform input:focus{outline:2px solid var(--x-pink);border-color:transparent}
.xbtn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:48px;margin-top:14px;border:0;border-radius:999px;background:var(--x-pink);color:#fff;font-weight:700;font-size:16px;cursor:pointer;text-decoration:none;transition:background .2s}
.xbtn:hover{background:#e0107a}
.xbtn:disabled{opacity:.6;cursor:wait}
.xbtn.ghost{background:transparent;border:1px solid var(--x-line);color:var(--x-text);font-weight:600;font-size:14px;min-height:42px}
.xbtn.ghost:hover{border-color:var(--x-pink);background:transparent}
.xerr{margin:10px 0 0;padding:8px 12px;border-radius:10px;background:rgba(255,60,90,.12);color:#ff8aa4;font-size:14px}
.xticket{position:relative;margin:4px 0 0;padding:18px;border-radius:var(--x-r);background:linear-gradient(135deg,#2b0b20,#16121f 60%);border:1.5px solid var(--x-gold);overflow:hidden}
.xticket::after{content:"";position:absolute;right:-40px;top:-40px;width:120px;height:120px;border-radius:50%;background:radial-gradient(circle,rgba(255,31,143,.35),transparent 70%)}
.xticket small{display:block;font-size:12px;color:var(--x-gold);letter-spacing:.08em}
.xticket h3{margin:4px 0 2px;font-size:26px}
.xticket p{margin:2px 0;font-size:14px;color:var(--x-dim)}
.xticket p b{color:#fff}
.xticket .ref{margin-top:10px;font-family:ui-monospace,Menlo,monospace;font-size:13px;color:var(--x-gold)}
.xmine{margin:18px 0 0;display:grid;gap:8px}
.xmine div{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:var(--x-panel-2);border:1px solid var(--x-line);font-size:14px}
.xmine div span{flex:1;min-width:0}
.xmine div span b{color:var(--x-gold)}
.xmine div span small{display:block;color:var(--x-mute);font-size:12px}
.xmine button{flex:none;min-height:34px;padding:0 12px;border-radius:999px;border:1px solid var(--x-line);background:transparent;cursor:pointer;font-size:12px;color:var(--x-dim)}
.xmine button:hover{border-color:#ff8aa4;color:#ff8aa4}
.xpinfo{margin:18px 0 0;font-size:12px;color:var(--x-mute)}
.xposter{display:block;width:100%;margin:16px 0 0;border-radius:12px;border:1px solid var(--x-line)}

/* ---------- admin list (/expo/admin) ---------- */
body.expo-admin{overflow:auto;background:#fdf8fa;color:#17131a}
.expo-admin main{max-width:960px;margin:0 auto;padding:24px 16px 48px}
.expo-admin h1{font-size:22px;margin:8px 0 18px}
.expo-admin h2{font-size:17px;margin:26px 0 4px}
.expo-admin table{width:100%;border-collapse:collapse;font-size:14px;background:#fff}
.expo-admin th,.expo-admin td{padding:8px 10px;border-bottom:1px solid #ece3e8;text-align:left}
.expo-admin th{background:#fbe9f1}
.expo-admin-left{margin:0 0 8px;color:#6f6470;font-size:14px}
.expo-admin-top{font-size:14px}
.expo-admin-x{margin:0}.expo-admin-x button{min-height:32px;padding:0 10px;border-radius:999px;border:1px solid #dccfd6;background:#fff;cursor:pointer;font:inherit;font-size:12px;color:#9b2c4d}
.expo-admin-flash{background:#eaf6ee;color:#23633a;border-radius:10px;padding:10px 12px;font-size:14px}

/* ---------- phones: stage on top, the booking sheet below ---------- */
@media (max-width:900px){
 :root{--x-bar:54px}
 .expo{grid-template-columns:1fr;grid-template-rows:var(--x-bar) minmax(0,1fr) auto}
 .xbar{gap:10px;padding:0 12px}
 .xbrand small,.xtitle small,.xtools span,.xhint{display:none}
 .xtitle b{font-size:13px}
 .xcount{display:none}
 .xtools button{padding:0 10px}
 .xpanel{grid-row:3;grid-column:1;max-height:min(56vh,560px);border-left:0;border-top:1px solid var(--x-line);border-radius:18px 18px 0 0;margin-top:-18px;z-index:6;box-shadow:0 -10px 30px rgba(0,0,0,.45)}
 .xpanel.collapsed .xpanel-body{display:none}
 .xgrip{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 0 6px;border:0;background:transparent;cursor:pointer;color:var(--x-dim);font-size:13px}
 .xgrip span{width:40px;height:4px;border-radius:2px;background:var(--x-line)}
 .xpanel-body{padding:4px 16px 24px}
 .xviews{bottom:26px}
 .xviews button{padding:0 11px;font-size:12px;min-height:34px}
 .xlift{left:10px;top:10px;padding:4px}
 .xlift a span,.xlift .xlift-head{display:none}
 .xlift a{padding:2px;min-height:0}
 .xlift a b{width:30px;height:30px;font-size:13px}
}
@media (prefers-reduced-motion:reduce){.xdoors::before,.xdoors::after,.xday,.xbig b.bump{transition:none;animation:none}}

/* ---------- booking card at the chosen chair ---------- */
.xcard{position:absolute;left:50%;top:50%;z-index:6;width:min(300px,calc(100% - 24px));box-sizing:border-box;transform:translate(-50%,calc(-100% - 16px));padding:14px 14px 12px;border-radius:16px;background:rgba(21,19,28,.96);border:1.5px solid var(--x-pink);box-shadow:0 16px 40px rgba(0,0,0,.55);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:xpop .35s cubic-bezier(.2,.9,.3,1.2)}
.xcard::after{content:"";position:absolute;left:50%;bottom:-9px;width:16px;height:16px;transform:translateX(-50%) rotate(45deg);background:rgba(21,19,28,.96);border-right:1.5px solid var(--x-pink);border-bottom:1.5px solid var(--x-pink)}
.xcard.behind{opacity:0;pointer-events:none}
.xcard h3{margin:0 0 2px;font-size:17px}
.xcard p{margin:0 0 6px;font-size:12px;color:var(--x-dim)}
.xcard label{display:block;font-size:12px;margin:8px 0 3px;color:var(--x-dim)}
.xcard input{width:100%;box-sizing:border-box;min-height:42px;padding:8px 12px;border-radius:10px;border:1px solid var(--x-line);background:#0f0e14;color:#fff;font:inherit;font-size:16px}
.xcard input:focus{outline:2px solid var(--x-pink);border-color:transparent}
.xcard .xbtn{margin-top:10px;min-height:44px;font-size:15px}
.xcard .xbtn.ghost{margin-top:6px;min-height:36px;font-size:13px}
.xform h3{margin:0 0 4px;font-size:18px}
@keyframes xpop{from{opacity:0;transform:translate(-50%,calc(-100% - 4px)) scale(.92)}}
@media (prefers-reduced-motion:reduce){.xcard{animation:none}}

/* ---------- program booths: shortcuts in the panel, and the gallery ---------- */
.xbooths{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:6px}
.xbooths button{--c:var(--x-pink);display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:9px 11px;border-radius:12px;border:1px solid var(--x-line);border-left:4px solid var(--c);background:var(--x-panel-2);cursor:pointer;text-align:left}
.xbooths button:hover{border-color:var(--c)}
.xbooths b{font-size:14px}.xbooths small{font-size:11px;color:var(--x-mute)}
.xgal{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:16px;background:rgba(6,5,9,.82);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.xgal-box{--c:var(--x-pink);position:relative;width:min(980px,100%);max-height:calc(100vh - 32px);overflow-y:auto;box-sizing:border-box;padding:16px 18px 18px;border-radius:18px;background:var(--x-panel);border:1px solid var(--x-line);border-top:4px solid var(--c);box-shadow:0 24px 60px rgba(0,0,0,.6)}
.xgal-box.poster{width:auto;padding:12px;border-top-color:var(--x-gold)}
.xgal-box.poster img{display:block;max-height:calc(100vh - 60px);max-width:100%;border-radius:10px}
.xgal-box header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
.xgal-name{display:block;font-size:22px;color:var(--c)}
.xgal-box header small{display:block;font-size:13px;color:var(--x-dim)}
.xgal-x{flex:none;width:40px;height:40px;border-radius:50%;border:1px solid var(--x-line);background:var(--x-panel-2);cursor:pointer;font-size:16px}
.xgal-box.poster .xgal-x{position:absolute;right:20px;top:20px;background:rgba(12,11,16,.85)}
.xgal-tabs{display:inline-flex;gap:4px;padding:4px;border-radius:999px;background:var(--x-panel-2);border:1px solid var(--x-line);margin-bottom:10px}
.xgal-tabs button{min-height:36px;padding:0 14px;border:0;border-radius:999px;background:transparent;cursor:pointer;font-size:13px;color:var(--x-dim)}
.xgal-tabs button[aria-pressed="true"]{background:var(--c);color:#fff;font-weight:600}
.xgal figure{position:relative;margin:0;border-radius:12px;overflow:hidden;background:#0d0c12}
.xgal figure img{display:block;width:100%;height:min(58vh,560px);object-fit:contain}
.xgal figcaption{display:flex;justify-content:space-between;gap:12px;padding:10px 14px;font-size:15px;background:#111015}
.xgal figcaption span{color:var(--x-mute);font-size:13px;flex:none}
.xgal-nav{position:absolute;top:calc(50% - 40px);width:44px;height:44px;border-radius:50%;border:0;background:rgba(12,11,16,.7);cursor:pointer;font-size:26px;line-height:1}
.xgal-nav:hover{background:var(--c)}
.xgal-nav.prev{left:10px}.xgal-nav.next{right:10px}
.xgal-thumbs{display:flex;gap:6px;margin:10px 0 0;overflow-x:auto;scrollbar-width:thin}
.xgal-thumbs button{flex:none;width:86px;height:54px;padding:0;border-radius:8px;border:2px solid transparent;background:#0d0c12;cursor:pointer;overflow:hidden;opacity:.6}
.xgal-thumbs button[aria-current]{border-color:var(--c);opacity:1}
.xgal-thumbs img{width:100%;height:100%;object-fit:cover}
.xgal footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}
.xgal footer p{margin:0;font-size:14px;color:var(--x-dim)}
.xgal footer p b{color:#fff}
.xgal footer div{display:flex;gap:8px;flex-wrap:wrap}
.xgal footer .xbtn{width:auto;margin:0;padding:0 18px;min-height:42px;font-size:14px}
@media (max-width:900px){.xgal{padding:8px}.xgal-box{padding:12px}.xgal figure img{height:46vh}.xgal-name{font-size:19px}.xgal footer .xbtn{flex:1}}

/* ---------- Lumina's speech bubble over her head ---------- */
.xlumi{position:absolute;left:50%;top:40%;z-index:5;width:min(340px,calc(100% - 24px));box-sizing:border-box;transform:translate(-50%,calc(-100% - 14px));padding:14px;border-radius:18px;background:#fff;color:#1d1320;box-shadow:0 18px 44px rgba(0,0,0,.5);animation:xpop .35s cubic-bezier(.2,.9,.3,1.2)}
.xlumi::after{content:"";position:absolute;left:50%;bottom:-8px;width:16px;height:16px;transform:translateX(-50%) rotate(45deg);background:#fff}
.xlumi.off{opacity:0;pointer-events:none}
.xlumi-say{margin:0 0 10px;font-size:16px;line-height:1.5}
.xlumi-say b:first-child{display:block;font-size:12px;color:#c2186b;letter-spacing:.02em}
.xlumi-say b.c{color:#c2186b}
.xlumi-days{display:grid;gap:6px}
.xlumi-days button{display:flex;align-items:flex-start;gap:10px;width:100%;text-align:left;padding:9px 11px;border-radius:12px;border:1.5px solid #ead9e3;background:#fdf6fa;cursor:pointer;color:#1d1320;font-size:14px}
.xlumi-days button[aria-pressed="true"]{border-color:var(--x-pink);background:#ffe3f1}
.xlumi-days button:disabled{opacity:.55;cursor:default}
.xlumi-days i{flex:none;display:grid;place-items:center;width:22px;height:22px;margin-top:1px;border-radius:6px;border:2px solid #d9bfcd;font-style:normal;font-weight:700;font-size:14px;color:#fff;background:#fff}
.xlumi-days button[aria-pressed="true"] i{background:var(--x-pink);border-color:var(--x-pink)}
.xlumi-days span{display:block;line-height:1.35}
.xlumi-days span b{font-size:16px}
.xlumi-days small{display:block;font-size:12px;color:#7a6a74}
.xlumi-days em{display:block;font-style:normal;font-size:12px;color:#0f7f99;font-weight:600}
.xlumi-note{margin:8px 0 0;font-size:12px;color:#7a6a74;text-align:center}
.xlumi .xbtn{margin-top:8px;min-height:44px;font-size:15px}
.xform-note,.xcard .xform-note{display:block;margin-top:6px;font-size:11px;color:var(--x-mute)}
