:root {
    --bg: #000;
    --bg-2: #0a0a0a;
    --bg-3: #111;
    --border: rgba(255,255,255,0.06);
    --border-h: rgba(255,255,255,0.12);
    --t1: #fff;
    --t2: rgba(255,255,255,0.5);
    --t3: rgba(255,255,255,0.22);
    --accent: #e49b32;
    --r: 10px;
    --tr: .15s ease;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:15px}
body{font-family:'Inter',system-ui,sans-serif;background:var(--bg);color:var(--t1);height:100vh;-webkit-font-smoothing:antialiased;overflow:hidden}
html{overflow:hidden;height:100vh}
.hidden{display:none!important}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input{font-family:inherit}

/* ========== Login ========== */
.screen{min-height:100vh;display:flex;align-items:center;justify-content:center}
.login-wrap{text-align:center}
.login-label{font-size:2rem;font-weight:800;letter-spacing:-.04em;margin-bottom:32px;color:var(--t1)}
.login-btn{display:inline-block;padding:12px 32px;border-radius:50px;background:#fff;color:#000;font-weight:600;font-size:.85rem;transition:all var(--tr)}
.login-btn:hover{transform:scale(1.03);box-shadow:0 0 30px rgba(255,255,255,.06)}
.login-btn.ghost{background:transparent;color:var(--t2);border:1px solid var(--border)}
.login-sub{color:var(--t3);font-size:.75rem;margin-top:14px}

/* ========== Navbar ========== */
.topbar{
    position:fixed;top:0;left:0;right:0;height:44px;
    display:flex;align-items:center;justify-content:center;
    padding:0 20px;z-index:100;
    background:transparent;
}
.nav-tabs{display:flex;gap:0}
.nav-tab{
    padding:6px 18px;font-size:.82rem;font-weight:700;letter-spacing:-.02em;
    color:rgba(255,255,255,.25);transition:color var(--tr);
    background:transparent;border:none;cursor:pointer;
}
.nav-tab:hover{color:rgba(255,255,255,.5)}
.nav-tab.active{color:#fff}
.nav-right{position:absolute;right:20px;display:flex;align-items:center;gap:10px}
.nav-avatar{width:22px;height:22px;border-radius:50%;opacity:.6}
.nav-logout{color:rgba(255,255,255,.2);font-size:1rem;display:flex;transition:color var(--tr)}
.nav-logout:hover{color:#ff4466}
.nav-toggle{
    display:none;position:absolute;left:12px;top:50%;transform:translateY(-50%);
    width:34px;height:34px;border-radius:8px;
    background:transparent;border:1px solid rgba(255,255,255,.08);
    color:rgba(255,255,255,.6);font-size:1.25rem;align-items:center;justify-content:center;
    cursor:pointer;transition:color .2s,background .2s,border-color .2s;
    z-index:101;
}
.nav-toggle:hover{color:#fff;background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.18)}
.nav-toggle.open{color:#fff;background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.22)}

/* ========== Main ========== */
main{margin-top:44px;height:calc(100vh - 44px);overflow-y:auto;overflow-x:hidden}

/* ========== Page Heading ========== */
.page-heading{
    font-size:1.8rem;font-weight:800;letter-spacing:-.04em;
    color:var(--t1);z-index:2;margin-bottom:20px;
}

/* ========== Roll Page ========== */
.roll-page{
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    height:calc(100vh - 44px);max-height:calc(100vh - 44px);padding:40px 24px;position:relative;overflow:hidden;
    background:
        radial-gradient(ellipse at 50% 30%,rgba(228,155,50,.06) 0%,transparent 55%),
        radial-gradient(ellipse at 20% 70%,rgba(200,130,30,.04) 0%,transparent 45%),
        radial-gradient(ellipse at 80% 60%,rgba(215,140,35,.03) 0%,transparent 40%);
}
.roll-page.easter-active .roll-hero{margin-top:40px;margin-bottom:12px}
.roll-vignette{
    position:absolute;inset:0;pointer-events:none;z-index:0;opacity:0;
    background:radial-gradient(ellipse at center,transparent 20%,rgba(0,0,0,.85) 100%);
    transition:opacity .6s cubic-bezier(.4,0,.2,1);
}
.roll-vignette.active{opacity:1}
.roll-flash{position:absolute;inset:0;pointer-events:none;z-index:20;opacity:0}
.roll-flash.fire{background:transparent}
.roll-flash.fire-gold{background:transparent}
.screen-shake{animation:screenShake .35s cubic-bezier(.4,0,.2,1)}
@keyframes screenShake{
    0%,100%{transform:translate(0)}
    10%{transform:translate(-5px,-3px) rotate(-.3deg)}
    20%{transform:translate(6px,2px) rotate(.3deg)}
    30%{transform:translate(-4px,3px) rotate(-.2deg)}
    40%{transform:translate(5px,-2px) rotate(.2deg)}
    50%{transform:translate(-3px,-1px)}
    60%{transform:translate(4px,1px)}
    70%{transform:translate(-2px,2px)}
    80%{transform:translate(3px,-1px)}
    62%{transform:translate(-1px,1px)}75%{transform:translate(2px,-2px)}
    87%{transform:translate(-1px,1px)}
}
.roll-hero{
    position:relative;z-index:2;display:flex;align-items:center;justify-content:center;
    margin-bottom:10px;transition:transform .5s cubic-bezier(.4,0,.2,1),filter .5s cubic-bezier(.4,0,.2,1);
}
.roll-hero.clickable{cursor:pointer}
.roll-hero.clickable:hover .hero-img{transform:scale(1.03);filter:brightness(1.05)}
.roll-hero.clickable:active .hero-img{transform:scale(.97)}
.roll-hero.locked{opacity:.3;pointer-events:none}
.hero-img{width:clamp(140px,15vw,200px);height:clamp(140px,15vw,200px);object-fit:contain;position:relative;z-index:2;transition:all .5s cubic-bezier(.4,0,.2,1);user-select:none;
    filter:drop-shadow(0 0 20px rgba(228,155,50,.12));
}
.hero-glow{position:absolute;width:clamp(140px,15vw,200px);height:clamp(140px,15vw,200px);border-radius:50%;background:var(--c, var(--accent));filter:blur(60px);opacity:0;z-index:0;transition:opacity .4s}
.roll-page.easter-active .roll-hero::before{
    content:'';position:absolute;width:clamp(200px,20vw,280px);height:clamp(200px,20vw,280px);border-radius:50%;z-index:-1;
    background:radial-gradient(circle,rgba(228,155,50,.08) 0%,rgba(200,130,30,.04) 40%,transparent 70%);
    animation:ambientPulse 4s ease-in-out infinite;
}
@keyframes ambientPulse{
    0%,100%{opacity:.6;transform:scale(1)}
    50%{opacity:1;transform:scale(1.08)}
}
.hero-glow.active{opacity:.4}
.hero-ring{position:absolute;width:clamp(180px,18vw,240px);height:clamp(180px,18vw,240px);border-radius:50%;border:2px solid var(--c, var(--accent));opacity:0;z-index:1;pointer-events:none;transform:scale(.5)}
.hero-ring.burst{animation:ringBurst .7s cubic-bezier(.2,.8,.3,1) forwards}
@keyframes ringBurst{0%{opacity:.7;transform:scale(.5)}100%{opacity:0;transform:scale(2.5)}}
.roll-hero.inhale{transform:scale(.8)}
.roll-hero.inhale .hero-img{filter:brightness(.25) saturate(.2)}
.roll-hero.charge{transform:scale(.75)}
.roll-hero.charge .hero-img{animation:chargeVibrate .07s ease-in-out infinite alternate;filter:brightness(.2) saturate(.1)}
@keyframes chargeVibrate{from{transform:translate(-2px,1px) rotate(-.5deg)}to{transform:translate(2px,-1px) rotate(.5deg)}}
.roll-hero.compress{transform:scale(.6);transition:transform .25s cubic-bezier(.4,0,.2,1)}
.roll-hero.compress .hero-img{filter:brightness(.1) saturate(0)}
.roll-hero.explode{transform:scale(1.15);transition:transform .12s cubic-bezier(.2,1.5,.4,1)}
.roll-hero.explode .hero-img{filter:brightness(1.1) saturate(1.2);transition:filter .12s}
.roll-hero.reveal{transform:scale(1.02);transition:transform .6s cubic-bezier(.4,0,.2,1)}
.roll-hero.reveal .hero-img{filter:brightness(1.05) saturate(1.1);transition:filter .6s}
.roll-hero.miss{transform:scale(1);transition:transform .25s}
.roll-hero.miss .hero-img{animation:missJolt .35s cubic-bezier(.4,0,.2,1);filter:brightness(.5) saturate(.4)}
@keyframes missJolt{
    0%,100%{transform:translateX(0)}20%{transform:translateX(-7px) rotate(-1.5deg)}
    40%{transform:translateX(5px) rotate(1deg)}60%{transform:translateX(-3px)}80%{transform:translateX(2px)}
}
.roll-result{text-align:center;min-height:32px;margin-bottom:4px;z-index:2;opacity:0;transform:translateY(10px);transition:opacity .5s cubic-bezier(.4,0,.2,1),transform .5s cubic-bezier(.4,0,.2,1)}
.roll-result.show{opacity:1;transform:translateY(0)}
.win-name{font-size:1.4rem;font-weight:800;letter-spacing:-.03em;color:var(--c);text-shadow:0 0 30px var(--c),0 0 60px color-mix(in srgb, var(--c) 30%, transparent);animation:nameIn .4s cubic-bezier(.2,1,.4,1) both}
.win-coins{font-size:1.2rem;font-weight:800;letter-spacing:-.02em;color:#ff69b4;text-shadow:0 0 24px rgba(255,105,180,.5);animation:nameIn .4s cubic-bezier(.2,1,.4,1) both}
@keyframes nameIn{0%{opacity:0;transform:translateY(14px) scale(.9);filter:blur(4px)}100%{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}

/* Easter win particles & effects */
.win-particle{
    position:absolute;border-radius:50%;pointer-events:none;z-index:25;
    opacity:1;box-shadow:0 0 8px currentColor, 0 0 16px currentColor;
}
.wp-star{
    border-radius:2px;transform:rotate(45deg);
    box-shadow:0 0 10px currentColor, 0 0 24px currentColor, 0 0 40px currentColor;
}
.wp-trail{
    border-radius:1px;height:2px !important;
    box-shadow:0 0 12px currentColor, 0 0 20px currentColor;
}
@keyframes particleBurst{
    0%{transform:translate(0,0) rotate(0deg) scale(1);opacity:1}
    50%{opacity:.9}
    100%{transform:translate(var(--dx),var(--dy)) rotate(var(--spin)) scale(0);opacity:0}
}
.easter-win-glow::after{
    content:'';position:absolute;inset:0;pointer-events:none;z-index:3;
    background:
        radial-gradient(circle at 50% 45%,rgba(228,155,50,.15) 0%,rgba(200,130,30,.08) 25%,transparent 60%),
        radial-gradient(circle at 30% 60%,rgba(215,140,35,.06) 0%,transparent 30%),
        radial-gradient(circle at 70% 35%,rgba(200,150,50,.05) 0%,transparent 25%);
    animation:easterGlowPulse 1.5s ease-in-out infinite;
}
@keyframes easterGlowPulse{
    0%,100%{opacity:.5}
    50%{opacity:1}
}
.easter-win-text{
    font-size:1.8rem !important;
    text-shadow:
        0 0 20px var(--c),
        0 0 50px var(--c),
        0 0 100px var(--c),
        0 0 160px color-mix(in srgb,var(--c) 50%,transparent) !important;
    animation:easterNameIn .7s cubic-bezier(.2,1.8,.3,1) both !important;
}
@keyframes easterNameIn{
    0%{opacity:0;transform:translateY(24px) scale(.5);filter:blur(12px)}
    50%{transform:translateY(-6px) scale(1.12);filter:blur(0)}
    75%{transform:translateY(2px) scale(.98)}
    100%{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}
}
.roll-info{z-index:2;text-align:center}
.no-event-wrap{display:flex;flex-direction:column;align-items:center;gap:14px;opacity:.25}
.no-event-logo{width:64px;height:64px;object-fit:contain;filter:grayscale(1)}
.no-event-text{font-size:.72rem;font-weight:700;letter-spacing:2px;color:rgba(255,255,255,.6);text-transform:uppercase}
.roll-admin{position:absolute;top:12px;right:16px;display:flex;flex-wrap:wrap;gap:5px;z-index:5;max-width:300px;justify-content:flex-end}
.roll-admin-label{width:100%;font-size:.55rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.2);text-align:right;margin-top:2px}
.roll-admin button{padding:3px 10px;border-radius:6px;font-size:.65rem;font-weight:600;color:var(--t3);border:1px solid var(--border);transition:all var(--tr)}
.roll-admin button:hover{color:var(--t1);border-color:var(--border-h)}
.roll-admin button.mega-active{color:#00e64d;border-color:rgba(0,210,80,.4);background:rgba(0,210,80,.1)}
.roll-admin button.mega-active:hover{background:rgba(0,210,80,.2)}

/* -- Mega Luck Banner -- */
.mega-luck-banner{
    display:flex;align-items:center;gap:8px;
    margin:6px auto 0;width:fit-content;
    padding:5px 16px;border-radius:10px;
    background:linear-gradient(135deg,rgba(0,210,80,.15),rgba(0,180,60,.12));
    border:1px solid rgba(0,210,80,.3);
    animation:mega-pulse 2s ease-in-out infinite;
}
.mega-luck-icon{width:20px;height:20px;object-fit:contain}
.mega-luck-text{font-size:.7rem;font-weight:800;color:#00e64d;text-transform:uppercase;letter-spacing:.06em;text-shadow:0 0 12px rgba(0,230,77,.4)}
.mega-luck-timer{font-size:.65rem;font-weight:700;color:rgba(0,230,77,.8);font-variant-numeric:tabular-nums}
@keyframes mega-pulse{0%,100%{border-color:rgba(0,210,80,.3);box-shadow:0 0 8px rgba(0,210,80,.05)}50%{border-color:rgba(0,210,80,.5);box-shadow:0 0 16px rgba(0,210,80,.12)}}

/* -- AFK Mode -- */
.afk-btn{
    position:absolute;bottom:24px;right:20px;z-index:5;
    padding:6px 20px;border-radius:8px;border:1px solid rgba(255,255,255,.1);
    background:rgba(255,255,255,.04);color:var(--t3);font-size:.72rem;font-weight:600;
    cursor:pointer;transition:all .2s;letter-spacing:.02em;
}
.afk-btn:hover{color:var(--t1);border-color:rgba(255,255,255,.2);background:rgba(255,255,255,.08)}
.afk-btn:disabled{opacity:.3;pointer-events:none}

.afk-active .lb-panel,
.afk-active .wf-floats,
.afk-active .easter-layer,
.afk-active .roll-admin,
.afk-active .roll-vignette,
.afk-active .roll-flash,
.afk-active .hero-glow,
.afk-active .hero-ring{display:none!important}
.afk-active .roll-hero{transition:none}
.afk-active .roll-hero.inhale,.afk-active .roll-hero.charge,
.afk-active .roll-hero.compress,.afk-active .roll-hero.explode,
.afk-active .roll-hero.miss{animation:none!important;transform:none!important}

.afk-hud-bar{
    position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:10;
    display:flex;align-items:center;gap:8px;
    padding:5px 16px;border-radius:8px;
    background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);
}
.afk-hud-label{font-size:.62rem;font-weight:700;color:#fe4a78;text-transform:uppercase;letter-spacing:.06em;margin-right:4px}
.afk-hud-count{font-size:.82rem;font-weight:800;color:var(--t1);font-variant-numeric:tabular-nums}
.afk-hud-unit{font-size:.58rem;font-weight:600;color:var(--t3);letter-spacing:.04em}
.afk-auto-btn{
    margin-left:6px;padding:3px 10px;border-radius:6px;
    font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
    color:var(--t2);background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);
    cursor:pointer;transition:all .15s;
}
.afk-auto-btn:hover{color:var(--t1);background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.18)}
.afk-auto-btn.active{color:#fff;background:rgba(254,74,120,.35);border-color:rgba(254,74,120,.5)}
.afk-hud-note{font-size:.52rem;color:var(--t3);opacity:.7;font-style:italic}

.afk-summary{
    position:absolute;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;
    background:rgba(0,0,0,.85);backdrop-filter:blur(10px);
    opacity:0;transition:opacity .4s ease;
}
.afk-summary.show{opacity:1}
.afk-summary-inner{
    text-align:center;max-width:360px;width:100%;padding:32px 24px;
    background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:16px;
}
.afk-summary-title{font-size:1.3rem;font-weight:800;color:var(--t1);letter-spacing:-.03em;margin-bottom:8px}
.afk-summary-stat{font-size:.82rem;font-weight:600;color:var(--t3);margin-bottom:12px}
.afk-summary-coins{font-size:.88rem;font-weight:700;color:#ff69b4;margin-bottom:16px}
.afk-summary-empty{font-size:.78rem;color:var(--t3);margin:16px 0;opacity:.6}
.afk-summary-wins{display:flex;flex-direction:column;gap:6px;margin:16px 0}
.afk-win-card{
    display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:8px;
    background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);
    position:relative;overflow:hidden;
}
.afk-win-card::before{
    content:'';position:absolute;inset:0;opacity:.1;
    background:linear-gradient(135deg,var(--rc),transparent 60%);pointer-events:none;
}
.afk-win-icon{width:22px;height:22px;object-fit:contain;border-radius:4px;position:relative;z-index:1}
.afk-win-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;position:relative;z-index:1}
.afk-win-name{font-size:.82rem;font-weight:700;color:var(--t1);position:relative;z-index:1}
.afk-win-qty{margin-left:auto;font-size:.7rem;font-weight:700;color:var(--rc);position:relative;z-index:1}
.afk-dismiss{
    margin-top:20px;padding:8px 28px;border-radius:8px;border:none;
    background:#fe4a78;color:#fff;font-size:.78rem;font-weight:700;cursor:pointer;
    transition:all .2s;
}
.afk-dismiss:hover{background:#e5406c;transform:scale(1.04)}

/* -- Roll Lock Countdown -- */
.roll-lock-overlay{
    position:absolute;inset:0;z-index:15;display:flex;flex-direction:column;align-items:center;justify-content:center;
    background:rgba(0,0,0,.5);backdrop-filter:blur(3px);pointer-events:all;
}
.roll-lock-inner{text-align:center;max-width:380px}
.roll-lock-title{
    font-size:1.2rem;font-weight:800;color:#e49b32;letter-spacing:.04em;margin-bottom:8px;
    text-shadow:0 0 20px rgba(228,155,50,.3);
}
.roll-lock-timer{
    font-size:2rem;font-weight:900;letter-spacing:.02em;font-variant-numeric:tabular-nums;
    background:linear-gradient(135deg,#e49b32,#f0c060);
    -webkit-background-clip:text;-webkit-text-fill-color:transparent;
    background-clip:text;
    margin-bottom:6px;
}
.roll-lock-bypass{
    margin-top:14px;padding:6px 18px;border-radius:6px;
    font-size:.68rem;font-weight:600;color:var(--t3);
    background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);
    cursor:pointer;transition:all .15s;
}
.roll-lock-bypass:hover{color:var(--t1);background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.2)}

/* ========== Trade Page ========== */
.trade-page{max-width:480px;margin:0 auto;padding:40px 20px}

/* -- Home -- */
.t-home{display:flex;flex-direction:column;gap:8px;margin-bottom:28px}
.t-big-link{
    font-size:1.1rem;font-weight:800;letter-spacing:-.03em;
    color:var(--t2);text-align:left;padding:18px 20px;
    border:1px solid var(--border);border-radius:12px;
    transition:all .15s ease;display:flex;align-items:center;justify-content:space-between;
}
.t-big-link::after{content:'→';font-weight:400;color:var(--t3);font-size:1rem;transition:transform .15s ease}
.t-big-link:hover{color:var(--t1);border-color:var(--border-h);background:rgba(255,255,255,.02)}
.t-big-link:hover::after{transform:translateX(3px)}

/* -- Back -- */
.t-back{
    color:var(--t3);margin-bottom:24px;display:inline-flex;
    transition:color var(--tr);
}
.t-back:hover{color:var(--t1)}
.t-back i{font-size:1.2rem}

/* -- Heading -- */
.t-heading{font-size:1.6rem;font-weight:800;letter-spacing:-.04em;margin-bottom:28px}

/* -- Section -- */
.t-section{margin-bottom:24px}

/* -- Search -- */
.t-search{
    width:100%;padding:12px 0;
    background:transparent;border:none;border-bottom:1px solid var(--border);
    color:var(--t1);font-size:.9rem;font-weight:500;outline:none;
    transition:border-color .2s ease;
}
.t-search:focus{border-color:rgba(255,255,255,.2)}
.t-search::placeholder{color:var(--t3)}
.t-search-results{display:flex;flex-direction:column;gap:0;margin-top:8px}
.t-user-row{display:flex;align-items:center;gap:10px;padding:10px 4px;cursor:pointer;transition:opacity .15s ease}
.t-user-row:hover{opacity:.7}
.t-user-row.t-banned{opacity:.35;cursor:not-allowed}
.t-user-row.t-banned:hover{opacity:.35}
.t-ban-tag{font-size:.6rem;font-weight:700;color:#ff4466;background:rgba(255,68,102,.1);border:1px solid rgba(255,68,102,.15);padding:1px 6px;border-radius:4px;margin-left:auto}
.t-user-row img{width:28px;height:28px;border-radius:50%}
.t-user-name{font-size:.85rem;font-weight:600}
.t-user-tag{font-size:.72rem;color:var(--t3);margin-left:4px}
.t-no-result{padding:10px 4px;color:var(--t3);font-size:.8rem}

/* -- Selected user -- */
.t-selected{
    display:flex;align-items:center;gap:10px;padding:10px 0;
}
.t-selected img{width:28px;height:28px;border-radius:50%}
.t-selected span{font-size:.9rem;font-weight:600}
.t-selected-x{color:var(--t3);font-size:1rem;margin-left:auto;transition:color var(--tr)}
.t-selected-x:hover{color:#ff4466}

/* -- Exchange -- */
.t-exchange{
    display:flex;gap:0;margin-bottom:28px;
}
.t-exchange-side{flex:1}
.t-exchange-mid{width:1px;background:var(--border);margin:0 16px;flex-shrink:0}
.t-side-label{font-size:1rem;font-weight:800;letter-spacing:-.03em;margin-bottom:14px;color:var(--t2)}

/* -- Role grid -- */
.t-role-grid{display:flex;flex-wrap:wrap;gap:6px}
.t-role-empty{font-size:.78rem;color:var(--t3)}

/* -- Case key qty controls in trade builder -- */
.t-keys-row{margin-top:14px}
.t-keys-row:empty{display:none}
.t-keys-head{
    font-size:.58rem;font-weight:700;letter-spacing:.08em;
    text-transform:uppercase;color:var(--t3);margin-bottom:6px;
}
.t-keys-list{display:flex;flex-direction:column;gap:6px}
.t-key-row{
    --rc:#888;
    display:flex;align-items:center;gap:10px;
    padding:6px 10px;border-radius:8px;
    background:rgba(255,255,255,.02);
    border:1px solid var(--border);
    transition:border-color .15s ease,background .15s ease;
}
.t-key-row.on{
    border-color:color-mix(in srgb,var(--rc) 45%,var(--border));
    background:color-mix(in srgb,var(--rc) 6%,transparent);
}
.t-key-img{
    width:26px;height:26px;object-fit:contain;flex-shrink:0;
    filter:drop-shadow(0 0 4px color-mix(in srgb,var(--rc) 50%,transparent));
}
.t-key-meta{display:flex;flex-direction:column;flex:1;min-width:0}
.t-key-name{font-size:.78rem;font-weight:700;color:var(--t1)}
.t-key-have{font-size:.6rem;font-weight:600;color:var(--t3);letter-spacing:.04em}
.t-key-ctrl{display:flex;align-items:center;gap:6px}
.t-key-btn{
    width:24px;height:24px;border-radius:6px;
    background:rgba(255,255,255,.05);border:1px solid var(--border);
    color:var(--t1);font-weight:700;cursor:pointer;font-size:.85rem;line-height:1;
    display:flex;align-items:center;justify-content:center;
    transition:background .12s ease,border-color .12s ease;
}
.t-key-btn:hover:not(:disabled){background:rgba(255,255,255,.1);border-color:color-mix(in srgb,var(--rc) 40%,var(--border))}
.t-key-btn:disabled{opacity:.3;cursor:not-allowed}
.t-key-qty{font-size:.78rem;font-weight:700;color:var(--rc);min-width:20px;text-align:center}

/* -- Role chips -- */
.t-chip{
    position:relative;
    display:inline-flex;align-items:center;gap:5px;
    padding:7px 12px;border-radius:8px;
    border:1px solid var(--border);cursor:pointer;transition:all .15s ease;
    font-size:.75rem;font-weight:500;
}
.t-chip:hover{border-color:color-mix(in srgb,var(--rc) 40%,transparent);background:rgba(255,255,255,.02)}
/* SELECTED — strong, unambiguous visual lock-in:
   bold tinted background (kept dark so light role colours like Summer don't
   blow out), thick coloured ring (border + inset), lift, halo, and a small
   ✓ badge at the top-right corner so it reads "selected" instantly. */
.t-chip.on{
    border-color:var(--rc);
    background:color-mix(in srgb,var(--rc) 14%,#0a0a14);
    box-shadow:
        inset 0 0 0 1px color-mix(in srgb,var(--rc) 70%,#0a0a14),
        0 0 0 1px color-mix(in srgb,var(--rc) 30%,transparent);
    transform:translateY(-1px);
    font-weight:700;
}
.t-chip.on::before{
    content:'\2713';
    position:absolute;top:-6px;right:-6px;
    width:16px;height:16px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    font-size:.65rem;font-weight:900;color:#0a0a14;
    background:linear-gradient(135deg,var(--g1,var(--rc)),var(--g2,var(--rc)));
    box-shadow:0 0 0 2px #0a0a14, 0 0 10px color-mix(in srgb,var(--rc) 70%,transparent);
    z-index:6;
}

.t-chip.has-grad{
    background:linear-gradient(135deg,
        color-mix(in srgb,var(--g1) 16%,#0d0d15),
        color-mix(in srgb,var(--g2) 10%,#0a0a14));
}
.t-chip.has-grad::after{display:none}
.t-chip.has-grad:hover{
    background:linear-gradient(135deg,
        color-mix(in srgb,var(--g1) 24%,#0d0d15),
        color-mix(in srgb,var(--g2) 16%,#0a0a14));
}
/* Gradient-aware selected variant: same bold treatment, but the ring + halo
   use both gradient stops so the role's full colour reads at a glance.
   Kept darker than a flat tint so light gradients (Summer, Lunar, etc.)
   don't wash out the chip text. */
.t-chip.has-grad.on{
    background:linear-gradient(135deg,
        color-mix(in srgb,var(--g1) 26%,#0a0a14),
        color-mix(in srgb,var(--g2) 18%,#0a0a14));
    box-shadow:
        inset 0 0 0 1px color-mix(in srgb,var(--g1) 70%,#0a0a14),
        0 0 0 1px color-mix(in srgb,var(--g2) 35%,transparent);
}
.t-chip-icon{width:15px;height:15px;object-fit:contain;flex-shrink:0}
.t-chip-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.t-chip-qty{
    font-size:.65rem;font-weight:800;color:var(--rc);
    background:color-mix(in srgb,var(--rc) 15%,transparent);
    padding:1px 5px;border-radius:4px;margin-left:2px;
}
.t-chip-owned{
    font-size:.6rem;font-weight:700;color:rgba(255,255,255,.25);
    margin-left:2px;
}
.t-chip-serial{
    font-size:.6rem;font-weight:800;
    color:color-mix(in srgb, var(--rc) 55%, white);
    margin-left:1px;
}

/* -- Submit -- */
.t-submit{
    width:100%;padding:14px;border-radius:50px;
    background:#fff;color:#000;font-weight:700;font-size:.88rem;
    letter-spacing:-.01em;transition:all .2s ease;
}
.t-submit:hover:not(:disabled){background:#eee;box-shadow:0 0 30px rgba(255,255,255,.06)}
.t-submit:disabled{opacity:.12;cursor:not-allowed}

/* -- Section headings -- */
.t-section-head{
    font-size:.68rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
    color:var(--t3);margin-top:36px;margin-bottom:12px;
}

/* -- Trade cards -- */
.t-card{
    position:relative;
    padding:12px 14px;margin-bottom:10px;
    background:rgba(255,255,255,.025);
    border:1px solid rgba(255,255,255,.06);
    border-radius:10px;
    transition:border-color .25s ease, background .25s ease;
    overflow:visible;
    z-index:0;
}
.t-card::before{
    content:'';position:absolute;
    inset:-8px;border-radius:18px;
    background:linear-gradient(120deg, var(--cg), transparent 45%, transparent 55%, var(--cr));
    opacity:.07;filter:blur(24px);
    z-index:-1;pointer-events:none;
    transition:opacity .3s ease;
}
.t-card:hover{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.1)}
.t-card:hover::before{opacity:.14}

.tc-top{display:flex;align-items:center;gap:6px;margin-bottom:10px}
.tc-user{display:flex;align-items:center;gap:7px;flex:1;min-width:0}
.tc-user img{width:18px;height:18px;border-radius:50%}
.tc-user span{font-size:.78rem;font-weight:600;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.tc-badge{padding:2px 7px;border-radius:20px;font-size:.52rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.tc-badge.accepted{background:rgba(0,210,106,.1);color:#00d26a}
.tc-badge.rejected{background:rgba(255,68,102,.1);color:#ff4466}
.tc-badge.cancelled,.tc-badge.expired{background:rgba(255,255,255,.04);color:var(--t3)}

/* -- Swap row -- */
.tc-swap{display:flex;align-items:flex-start;gap:8px}
.tc-side{display:flex;flex-wrap:wrap;gap:4px;flex:1;min-width:0}
.tc-label{display:block;width:100%;font-size:.62rem;font-weight:700;letter-spacing:-.01em;color:rgba(255,255,255,.22);margin-bottom:4px}
.tc-arrow{color:rgba(255,255,255,.15);font-size:.72rem;flex-shrink:0;margin-top:16px}

.tc-pill{
    display:inline-flex;align-items:center;gap:4px;
    padding:4px 10px;border-radius:20px;
    border:1px solid color-mix(in srgb,var(--rc) 20%,transparent);
    font-size:.68rem;font-weight:500;
    background:color-mix(in srgb,var(--rc) 5%,transparent);
    color:var(--t2);transition:all .15s ease;
}
.tc-pill:hover{
    background:color-mix(in srgb,var(--rc) 12%,transparent);
    border-color:color-mix(in srgb,var(--rc) 35%,transparent);
}
.tc-pill.has-grad{
    background:linear-gradient(135deg,
        color-mix(in srgb,var(--g1) 14%,#0d0d15),
        color-mix(in srgb,var(--g2) 8%,#0a0a14));
}
.tc-pill.has-grad::after{display:none}
.tc-pill.has-grad:hover{
    background:linear-gradient(135deg,
        color-mix(in srgb,var(--g1) 22%,#0d0d15),
        color-mix(in srgb,var(--g2) 14%,#0a0a14));
}
.tc-pill.empty{border-color:var(--border);color:var(--t3);background:transparent}
.tc-icon{width:12px;height:12px;object-fit:contain;flex-shrink:0}
.tc-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.tc-qty{font-size:.6rem;font-weight:800;color:var(--rc);margin-left:1px}
.tc-serial{font-size:.58rem;font-weight:700;color:color-mix(in srgb, var(--rc) 55%, white)}

/* -- Card actions -- */
.tc-btns{display:flex;gap:5px;flex-shrink:0}
.tc-btn{
    padding:4px 13px;border-radius:50px;
    font-size:.68rem;font-weight:600;transition:all .15s ease;
}
.tc-btn.accept{background:#fff;color:#000}
.tc-btn.accept:hover{background:#eee}
.tc-btn.reject,.tc-btn.cancel{color:var(--t3);border:1px solid var(--border)}
.tc-btn.reject:hover,.tc-btn.cancel:hover{color:#ff4466;border-color:rgba(255,68,102,.25)}

/* ========== Toast ========== */
.toast-wrap{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:9999;display:flex;flex-direction:column;gap:6px;align-items:center}
.toast{padding:8px 18px;border-radius:50px;font-size:.78rem;font-weight:500;background:var(--bg-3);border:1px solid var(--border);animation:toastIn .25s ease}
.toast.success{border-color:rgba(0,210,106,.25);color:#00d26a}
.toast.error{border-color:rgba(255,68,102,.25);color:#ff4466}
.toast.removing{animation:toastOut .25s ease forwards}
@keyframes toastIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@keyframes toastOut{from{opacity:1}to{opacity:0;transform:translateY(6px)}}

/* ========== Skeleton ========== */
.skeleton{background:linear-gradient(90deg,var(--bg-2) 25%,var(--bg-3) 50%,var(--bg-2) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:8px;height:60px;margin-bottom:8px}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* ========== Modal ========== */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.8);backdrop-filter:blur(8px);z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .12s ease}
.modal{background:var(--bg-2);border:1px solid var(--border);border-radius:12px;padding:20px;max-width:360px;width:90vw;animation:modalIn .15s ease}
.modal-title{font-size:.95rem;font-weight:700;margin-bottom:8px}
.modal-title:empty{display:none}
.modal-body{color:var(--t2);font-size:.82rem;margin-bottom:16px;line-height:1.5}
.modal-actions{display:flex;gap:6px;justify-content:flex-end}
.modal-actions button{padding:7px 16px;border-radius:8px;font-size:.78rem;font-weight:600}
.modal-actions .btn-ghost{color:var(--t3);border:1px solid var(--border)}
.modal-actions .btn-confirm{background:#fff;color:#000}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes modalIn{from{opacity:0;transform:scale(.97) translateY(6px)}to{opacity:1;transform:scale(1) translateY(0)}}

/* ========== Serial Picker ========== */
.sp-modal{max-width:400px}
.sp-desc{color:var(--t3);font-size:.78rem;margin-bottom:14px}
.sp-roles{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}
.sp-group{
    padding:10px 12px;border-radius:8px;
    background:rgba(255,255,255,.02);
    border:1px solid rgba(255,255,255,.06);
    position:relative;overflow:hidden;
    transition:border-color .2s ease;
}
.sp-group::before{
    content:'';position:absolute;inset:0;opacity:.08;
    background:linear-gradient(135deg,var(--rc),transparent 60%);
    pointer-events:none;
}
.sp-group.sp-done{border-color:color-mix(in srgb,var(--rc) 25%,transparent)}
.sp-group-header{
    display:flex;align-items:center;gap:6px;
    margin-bottom:8px;position:relative;z-index:1;
}
.sp-group-icon{width:16px;height:16px;border-radius:50%;object-fit:contain}
.sp-group-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.sp-group-name{font-size:.8rem;font-weight:600;color:var(--t1)}
.sp-group-label{
    margin-left:auto;font-size:.58rem;font-weight:700;
    color:var(--t3);letter-spacing:.03em;
}
.sp-group-label b{color:color-mix(in srgb,var(--rc) 65%,white);font-weight:800}
.sp-group-chips{
    display:flex;flex-wrap:wrap;gap:5px;position:relative;z-index:1;
}
.sp-chip{padding:5px 11px;font-size:.72rem;font-weight:600;border-radius:6px}
.sp-chip.sp-auto{
    pointer-events:none;
    border-color:color-mix(in srgb,var(--rc) 30%,transparent);
    background:color-mix(in srgb,var(--rc) 8%,transparent);
    opacity:.5;
}
.sp-chip.sp-auto.on{opacity:.7}
.modal-actions .btn-confirm:disabled{opacity:.15;cursor:not-allowed}

/* ========== Dupe Message ========== */
.dupe-overlay{
    position:fixed;inset:0;z-index:2000;
    display:flex;align-items:center;justify-content:center;
    background:rgba(0,0,0,.85);backdrop-filter:blur(6px);
    opacity:0;transition:opacity .4s ease;pointer-events:none;
}
.dupe-overlay.show{opacity:1;pointer-events:auto}
.dupe-text{
    font-size:1.1rem;font-weight:500;color:var(--t2);
    letter-spacing:.01em;text-align:center;
    max-width:400px;padding:0 24px;line-height:1.6;
}

/* ========== Directory ========== */
.dir-page{min-height:calc(100vh - 80px);background:var(--bg)}

/* Header */
.dir-header{background:linear-gradient(180deg,rgba(168,85,247,.06) 0%,transparent 100%);border-bottom:1px solid var(--border);padding:52px 24px 40px}
.dir-header-inner{max-width:960px;margin:0 auto;display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px}
.dir-title{font-size:2.6rem;font-weight:900;letter-spacing:-.03em;color:var(--t1);margin:0}
.dir-search-wrap{margin-top:16px;width:100%;max-width:400px}
.dir-search{width:100%;box-sizing:border-box;background:rgba(255,255,255,.06);border:1px solid var(--border-h);border-radius:24px;padding:10px 20px;color:var(--t1);font-size:.9rem;outline:none;transition:border-color .15s,box-shadow .15s}
.dir-search:focus{border-color:rgba(168,85,247,.5);box-shadow:0 0 0 3px rgba(168,85,247,.12)}
.dir-search::placeholder{color:var(--t3)}

/* Body */
.dir-body{max-width:960px;margin:0 auto;padding:32px 20px 60px}

/* Grid */
.dir-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}
.dir-empty{grid-column:1/-1;text-align:center;color:var(--t3);padding:80px 20px;font-size:.9rem}

/* Card — vertical layout, role color theming */
.dir-card{
    position:relative;
    background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,.008));
    border:1px solid rgba(255,255,255,.06);
    border-radius:18px;padding:22px 16px 18px;cursor:pointer;overflow:hidden;
    transition:transform .22s cubic-bezier(.2,.7,.2,1),border-color .22s ease,box-shadow .28s ease;
    isolation:isolate;
    display:flex;flex-direction:column;align-items:center;gap:10px;
    text-align:center;
}
.dir-card.has-rc{
    background:linear-gradient(160deg,
        color-mix(in srgb,var(--rc) 12%,#0d0d15) 0%,
        #0a0a14 100%);
    border-color:color-mix(in srgb,var(--rc) 16%,rgba(255,255,255,.05));
}
.dir-card.has-grad{
    background:linear-gradient(160deg,
        color-mix(in srgb,var(--g1) 16%,#0d0d15) 0%,
        color-mix(in srgb,var(--g2) 8%,#0a0a14) 100%);
    border-color:color-mix(in srgb,var(--g1) 20%,rgba(255,255,255,.05));
}
.dir-card:hover{
    transform:translateY(-4px);
    border-color:color-mix(in srgb,var(--rc,#888) 40%,rgba(255,255,255,.1));
    box-shadow:0 18px 44px -22px color-mix(in srgb,var(--rc,#888) 85%,transparent);
}
.dir-card.has-grad:hover{
    border-color:color-mix(in srgb,var(--g1) 40%,rgba(255,255,255,.1));
    box-shadow:0 18px 44px -22px color-mix(in srgb,var(--g1) 85%,transparent);
}
.dir-card:active{transform:translateY(-2px)}

/* Card glow layer (top radial + corner) */
.dir-card-glow-layer{
    position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;z-index:0;
    background:
        radial-gradient(70% 55% at 50% -10%,color-mix(in srgb,var(--rc,#888) 24%,transparent),transparent 65%),
        radial-gradient(40% 40% at 100% 100%,color-mix(in srgb,var(--rc,#888) 12%,transparent),transparent 70%);
    opacity:.6;transition:opacity .3s ease;
}
.dir-card.has-grad .dir-card-glow-layer{
    background:
        radial-gradient(70% 55% at 50% -10%,color-mix(in srgb,var(--g1) 30%,transparent),transparent 65%),
        radial-gradient(40% 40% at 100% 100%,color-mix(in srgb,var(--g2) 20%,transparent),transparent 70%);
}
.dir-card:hover .dir-card-glow-layer{opacity:.95}

/* Top accent stripe across the very top */
.dir-card-accent{
    position:absolute;top:0;left:18%;right:18%;height:2px;
    background:color-mix(in srgb,var(--rc,#888) 75%,transparent);
    box-shadow:0 0 12px color-mix(in srgb,var(--rc,#888) 55%,transparent);
    opacity:.6;transition:opacity .25s ease,left .25s ease,right .25s ease;z-index:1;border-radius:0 0 2px 2px;
}
.dir-card.has-grad .dir-card-accent{
    background:linear-gradient(90deg,var(--g1),var(--g2));
    box-shadow:0 0 12px color-mix(in srgb,var(--g1) 55%,transparent);
}
.dir-card:hover .dir-card-accent{opacity:1;left:8%;right:8%}

/* Skeleton */
.dir-card-skel{min-height:200px;pointer-events:none;background:linear-gradient(90deg,rgba(255,255,255,.04) 25%,rgba(255,255,255,.07) 50%,rgba(255,255,255,.04) 75%);background-size:200% 100%;animation:dir-skel-shimmer 1.4s infinite}
@keyframes dir-skel-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* Avatar */
.dir-card-avatar-wrap{position:relative;width:74px;height:74px;flex-shrink:0;z-index:1}
.dir-card-avatar{
    width:74px;height:74px;border-radius:50%;object-fit:cover;
    position:relative;z-index:2;
    border:2px solid color-mix(in srgb,var(--rc,#888) 50%,rgba(0,0,0,.4));
}
.dir-card-avatar-fallback{
    width:74px;height:74px;border-radius:50%;
    background:rgba(255,255,255,.08);
    display:flex;align-items:center;justify-content:center;
    font-weight:700;font-size:1.2rem;color:var(--t2);
    position:relative;z-index:2;
    border:2px solid color-mix(in srgb,var(--rc,#888) 50%,rgba(0,0,0,.4));
}
.dir-card-avatar-ring{
    position:absolute;inset:-6px;border-radius:50%;z-index:0;
    background:radial-gradient(50% 50% at 50% 50%,color-mix(in srgb,var(--rc,#888) 70%,transparent),transparent 75%);
    filter:blur(8px);opacity:.7;
    transition:opacity .25s ease;
}
.dir-card.has-grad .dir-card-avatar-ring{
    background:radial-gradient(50% 50% at 50% 50%,color-mix(in srgb,var(--g1) 70%,transparent),color-mix(in srgb,var(--g2) 30%,transparent) 60%,transparent 75%);
}
.dir-card:hover .dir-card-avatar-ring{opacity:1}

/* Role icon decoration — bottom-right of avatar (bare icon, no circle bg) */
.dir-card-deco{
    position:absolute;right:-8px;bottom:-6px;
    width:38px;height:38px;object-fit:contain;z-index:3;
    filter:
        drop-shadow(0 0 8px color-mix(in srgb,var(--rc,#888) 70%,transparent))
        drop-shadow(0 2px 4px rgba(0,0,0,.5));
}

/* Info block */
.dir-card-info{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:4px;width:100%;min-width:0}
.dir-card-name{
    font-size:.95rem;font-weight:800;color:#fff;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    letter-spacing:-.01em;line-height:1.2;
    max-width:100%;
}

/* Role label — clean text, no pill, no dot */
.dir-card-role{
    display:inline-flex;align-items:center;
    font-size:.7rem;font-weight:700;
    text-transform:uppercase;letter-spacing:.05em;
    max-width:100%;overflow:hidden;
    text-shadow:0 1px 6px rgba(0,0,0,.55);
}
.dir-card-role-name{
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;
    color:color-mix(in srgb,var(--rc,#bbb) 60%,#fff 50%);
}
/* Gradient-role text: subtle two-stop blend, secondary slightly mixed in */
.dir-card.has-grad .dir-card-role-name{
    background:linear-gradient(90deg,
        color-mix(in srgb,var(--g1) 65%,#fff 45%) 0%,
        color-mix(in srgb,var(--g2) 70%,#fff 35%) 100%);
    -webkit-background-clip:text;background-clip:text;
    -webkit-text-fill-color:transparent;color:transparent;
}

/* Stats row (subtle, below role) */
.dir-card-stats{
    display:flex;align-items:center;gap:6px;
    margin-top:2px;
    padding-top:8px;
    border-top:1px solid rgba(255,255,255,.06);
    width:100%;justify-content:center;
}
.dir-stat{font-size:.7rem;color:rgba(255,255,255,.5)}
.dir-stat b{color:#fff;font-weight:800}
.dir-stat-sep{font-size:.7rem;color:rgba(255,255,255,.25)}

/* Share button on card */
.dir-card-share{
    position:absolute;top:10px;right:10px;z-index:2;
    width:26px;height:26px;border-radius:8px;border:none;
    background:rgba(255,255,255,.07);
    color:rgba(255,255,255,.45);
    cursor:pointer;display:flex;align-items:center;justify-content:center;
    transition:background .15s,color .15s,opacity .15s;
    opacity:0;
}
.dir-card:hover .dir-card-share{opacity:1}
.dir-card-share:hover{background:rgba(168,85,247,.25);color:#fff}

/* Toast */
.dir-toast{
    position:fixed;bottom:28px;left:50%;transform:translateX(-50%) translateY(16px);
    background:#1e1e32;border:1px solid rgba(168,85,247,.45);
    color:#fff;font-size:.82rem;font-weight:600;
    padding:8px 18px;border-radius:24px;
    box-shadow:0 4px 20px rgba(0,0,0,.4);
    pointer-events:none;z-index:99999;
    opacity:0;transition:opacity .2s ease,transform .2s ease;
}
.dir-toast.dir-toast-show{opacity:1;transform:translateX(-50%) translateY(0)}
.dir-pagination{display:flex;justify-content:center;gap:6px;margin-top:32px;flex-wrap:wrap}
.dir-pg-btn{padding:7px 13px;border-radius:10px;border:1px solid var(--border-h);background:rgba(255,255,255,.05);color:var(--t2);font-size:.82rem;font-weight:600;cursor:pointer;transition:all .15s}
.dir-pg-btn:hover:not(:disabled):not(.active){background:rgba(255,255,255,.1);color:var(--t1)}
.dir-pg-btn.active{background:#a855f7;color:#fff;border-color:#a855f7;box-shadow:0 0 12px rgba(168,85,247,.4)}
.dir-pg-btn:disabled{opacity:.3;cursor:not-allowed}
.dir-pg-arrow{font-size:1.1rem;padding:6px 12px}
.dir-pg-ellipsis{padding:7px 4px;color:var(--t3);font-size:.82rem;line-height:1}

/* Modal overlay */
.dir-modal-wrap{position:fixed;inset:0;background:rgba(0,0,0,.75);backdrop-filter:blur(8px);z-index:9000;display:flex;align-items:center;justify-content:center;padding:20px;animation:dir-modal-bg-in .25s ease forwards}
.dir-modal-wrap.dir-modal-out{animation:dir-modal-bg-out .28s ease forwards}
@keyframes dir-modal-bg-in{from{opacity:0}to{opacity:1}}
@keyframes dir-modal-bg-out{to{opacity:0}}
.dir-modal{position:relative;background:var(--bg-3);border:1px solid rgba(255,255,255,.1);border-radius:20px;width:100%;max-width:720px;max-height:88vh;overflow-y:auto;padding:28px;animation:dir-modal-in .25s cubic-bezier(.2,.8,.3,1.1) forwards;border-top:2px solid rgba(168,85,247,.6)}
.dir-modal-loading{display:flex;align-items:center;justify-content:center;min-height:200px}
@keyframes dir-modal-in{from{opacity:0;transform:scale(.94) translateY(16px)}to{opacity:1;transform:none}}
.dir-modal-close{position:absolute;top:16px;right:16px;width:32px;height:32px;border-radius:50%;border:1px solid var(--border-h);background:rgba(255,255,255,.06);color:var(--t2);font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;z-index:2}
.dir-modal-close:hover{background:rgba(168,85,247,.2);color:#fff;border-color:rgba(168,85,247,.5)}

/* Modal hero */
.dir-modal-hero{display:flex;gap:20px;align-items:flex-start;margin-bottom:28px}
.dir-modal-avatar-wrap{position:relative;flex-shrink:0}
.dir-modal-avatar{width:72px;height:72px;border-radius:50%;object-fit:cover;position:relative;z-index:1}
.dir-modal-avatar-ring{position:absolute;inset:-4px;border-radius:50%;background:rgba(168,85,247,.4);opacity:.5;filter:blur(8px);z-index:0}
.dir-modal-hero-info{flex:1;min-width:0;padding-top:4px}
.dir-modal-name{font-size:1.5rem;font-weight:900;color:var(--t1);margin:0 0 6px;letter-spacing:-.02em}
.dir-modal-meta{display:flex;gap:14px;flex-wrap:wrap}
.dir-modal-stat{font-size:.78rem;color:var(--t3)}
.dir-modal-stat b{color:var(--t2);font-weight:700}
.dir-modal-stat-sep{font-size:.78rem;color:var(--t3);opacity:.4}

/* Modal grid — uses ix-card classes directly */
.dir-modal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:4px}

/* ix-card overrides when inside modal (no fixed width, pointer default, allow name wrap) */
.dir-modal-grid .ix-card{width:auto;cursor:default;text-align:center;padding:14px 10px 12px}
.dir-modal-grid .ix-card-name{
    white-space:normal;overflow:visible;text-overflow:clip;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
    line-height:1.25;word-break:break-word;hyphens:auto;
}

/* Serial / qty pills below role name in modal cards */
.dir-inv-serials{display:flex;flex-wrap:wrap;gap:3px;justify-content:center;margin-top:2px}
.dir-serial{font-size:.6rem;font-weight:700;color:var(--rc,#888);background:color-mix(in srgb,var(--rc,#888) 15%,transparent);border:1px solid color-mix(in srgb,var(--rc,#888) 30%,transparent);padding:1px 5px;border-radius:6px}
.dir-qty{font-size:.65rem;color:var(--t3);font-weight:600}

/* Spinner */
.dir-spinner{width:36px;height:36px;border:3px solid rgba(255,255,255,.1);border-top-color:#a855f7;border-radius:50%;animation:dir-spin .7s linear infinite}
@keyframes dir-spin{to{transform:rotate(360deg)}}

/* =====================================================================
   PROFILE / INVENTORY PAGE (prof-*)
   ===================================================================== */

/* Two-column grid: card left, roles right */
.prof-page{
    display:grid;
    grid-template-columns:220px 1fr;
    gap:24px;
    max-width:820px;
    margin:0 auto;
    padding:36px 20px 60px;
    align-items:start;
}

/* ── Profile card ── */
.prof-card{
    --rc:#a855f7;
    --g1:#a855f7;
    --g2:#a855f7;
    position:sticky;top:16px;
    background:linear-gradient(155deg,
        color-mix(in srgb,var(--rc) 32%,#080810) 0%,
        color-mix(in srgb,var(--rc) 10%,var(--bg-2)) 48%,
        var(--bg-2) 100%);
    border:1px solid color-mix(in srgb,var(--rc) 45%,rgba(255,255,255,.07));
    box-shadow:0 0 28px color-mix(in srgb,var(--rc) 18%,transparent),
               inset 0 1px 0 color-mix(in srgb,var(--rc) 30%,rgba(255,255,255,.08));
    border-radius:18px;
    padding:24px 18px 20px;
    display:flex;flex-direction:column;align-items:center;
    text-align:center;
    gap:0;
    overflow:hidden;
    position:relative;
    transition:border-color .3s ease,box-shadow .3s ease,background .3s ease;
}
.prof-card-body{width:100%;display:flex;flex-direction:column;align-items:center;min-width:0}
/* Top accent stripe */
.prof-card::before{
    content:'';
    position:absolute;top:0;left:15%;right:15%;height:2px;
    background:color-mix(in srgb,var(--rc) 80%,transparent);
    box-shadow:0 0 16px color-mix(in srgb,var(--rc) 70%,transparent);
    border-radius:0 0 3px 3px;z-index:1;
}
/* Gradient role — two-color background */
.prof-card.has-grad{
    background:linear-gradient(155deg,
        color-mix(in srgb,var(--g1) 34%,#080810) 0%,
        color-mix(in srgb,var(--g2) 20%,var(--bg-2)) 52%,
        color-mix(in srgb,var(--g2) 6%,var(--bg-2)) 100%);
    border-color:color-mix(in srgb,var(--g1) 50%,rgba(255,255,255,.07));
    box-shadow:0 0 32px color-mix(in srgb,var(--g1) 22%,transparent),
               inset 0 1px 0 color-mix(in srgb,var(--g1) 35%,rgba(255,255,255,.08));
}
.prof-card.has-grad::before{
    background:linear-gradient(90deg,var(--g1),var(--g2));
    box-shadow:0 0 16px color-mix(in srgb,var(--g1) 65%,transparent);
}

/* Avatar */
.prof-avatar-wrap{
    --rc:#a855f7;
    position:relative;
    width:76px;height:76px;
    margin-bottom:12px;
    flex-shrink:0;
}
.prof-avatar-glow{
    position:absolute;inset:-10px;
    border-radius:50%;
    opacity:.6;
    pointer-events:none;
    filter:blur(18px);
}
.prof-avatar{
    width:76px;height:76px;border-radius:50%;
    object-fit:cover;
    position:relative;z-index:1;
    box-shadow:0 0 0 2.5px color-mix(in srgb,var(--rc) 55%,transparent);
}
.prof-avatar-role-icon{
    position:absolute;bottom:-6px;right:-8px;
    width:32px;height:32px;object-fit:contain;
    z-index:2;
    filter:
        drop-shadow(0 0 8px color-mix(in srgb,var(--rc,#888) 65%,transparent))
        drop-shadow(0 2px 4px rgba(0,0,0,.5));
}

/* Name */
.prof-name{
    font-size:1rem;font-weight:800;letter-spacing:-.02em;
    color:var(--t1);margin-bottom:8px;
    max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}

/* Displayed role badge */
.prof-role-badge{
    --rc:#a855f7;
    display:inline-flex;align-items:center;gap:5px;
    padding:3px 9px;border-radius:20px;
    background:color-mix(in srgb,var(--rc) 12%,transparent);
    border:1px solid color-mix(in srgb,var(--rc) 30%,transparent);
    font-size:.72rem;font-weight:700;color:var(--t1);
    margin-bottom:14px;max-width:100%;
}
.prof-role-badge-icon{width:14px;height:14px;object-fit:contain;flex-shrink:0;border-radius:3px}
.prof-role-badge-dot{width:7px;height:7px;border-radius:50%;background:var(--rc);flex-shrink:0}
.prof-role-badge-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Stats */
.prof-stats{
    display:flex;gap:10px;flex-wrap:wrap;justify-content:center;
    font-size:.73rem;color:var(--t2);margin-bottom:14px;
}
.prof-stats b{color:var(--t1);font-weight:700}
.prof-stat-skel{
    display:inline-block;width:70px;height:14px;border-radius:4px;
    background:linear-gradient(90deg,var(--bg-2) 25%,var(--bg-3) 50%,var(--bg-2) 75%);
    background-size:200% 100%;animation:shimmer 1.5s infinite;
}

/* Items grid — keys + VIP credits as small icon+count pills */
.prof-items{width:100%;margin-bottom:14px}
.prof-items-grid{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
.prof-item{
    --ic:#888;
    display:flex;align-items:center;gap:5px;
    padding:4px 9px 4px 6px;border-radius:20px;
    background:color-mix(in srgb,var(--ic) 10%,rgba(255,255,255,.03));
    border:1px solid color-mix(in srgb,var(--ic) 25%,rgba(255,255,255,.06));
    cursor:default;
}
.prof-item-img{width:20px;height:20px;object-fit:contain;flex-shrink:0;border-radius:3px}
.prof-item-n{font-size:.7rem;font-weight:700;color:color-mix(in srgb,var(--ic) 80%,#fff)}
.prof-item--vip{cursor:pointer;transition:filter .15s}
.prof-item--vip:hover{filter:brightness(1.3)}
.prof-item-use{font-size:.62rem;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.05em;margin-left:1px}

/* Action buttons */
.prof-actions{display:flex;flex-direction:column;gap:7px;width:100%}
.prof-copy-btn,.prof-trade-btn{
    display:flex;align-items:center;justify-content:center;gap:6px;
    width:100%;padding:8px 14px;border-radius:10px;
    font-size:.78rem;font-weight:700;
    transition:opacity var(--tr),transform var(--tr),border-color var(--tr),color var(--tr);
}
.prof-copy-btn{
    background:rgba(255,255,255,.04);border:1px solid var(--border);
    color:var(--t2);cursor:pointer;
}
.prof-copy-btn:hover{color:var(--t1);border-color:var(--border-h)}
.prof-copy-btn.copied{color:#4afe98;border-color:rgba(74,254,152,.35);background:rgba(74,254,152,.07)}
.prof-trade-btn{display:none}

/* ── Roles column ── */
.prof-roles{min-width:0}
.prof-roles-head{
    display:flex;align-items:center;justify-content:space-between;
    margin-bottom:16px;
}
.prof-roles-skel{
    height:48px;border-radius:8px;
    background:linear-gradient(90deg,var(--bg-2) 25%,var(--bg-3) 50%,var(--bg-2) 75%);
    background-size:200% 100%;animation:shimmer 1.5s infinite;
}

/* ── Role list rows ───────────────────────────────────────────────────── */
.inv-empty{color:var(--t3);font-size:.82rem;padding:12px 0}
.inv-grid{display:flex;flex-direction:column;gap:5px}
.inv-item{
    padding:10px 12px 9px 15px;
    background:rgba(255,255,255,.025);
    border:1px solid rgba(255,255,255,.06);
    border-left:3px solid color-mix(in srgb,var(--rc) 55%,transparent);
    border-radius:8px;
    transition:border-color .18s ease,background .18s ease;
    position:relative;overflow:hidden;
}
.inv-item::before{
    content:'';position:absolute;inset:0;opacity:.07;
    background:linear-gradient(135deg,var(--rc),transparent 55%);
    pointer-events:none;
}
.inv-item.has-grad{
    border-left-color:color-mix(in srgb,var(--g1) 65%,transparent);
    background:linear-gradient(150deg,
        color-mix(in srgb,var(--g1) 22%,#0d0d15),
        color-mix(in srgb,var(--g2) 14%,#0a0a14));
}
.inv-item.has-grad::before,.inv-item.has-grad::after{display:none}
.inv-item:hover{
    border-color:rgba(255,255,255,.11);
    border-left-color:color-mix(in srgb,var(--rc) 85%,transparent);
    background:rgba(255,255,255,.038);
}
.inv-item.has-grad:hover{
    background:linear-gradient(150deg,
        color-mix(in srgb,var(--g1) 30%,#0d0d15),
        color-mix(in srgb,var(--g2) 20%,#0a0a14));
    border-left-color:color-mix(in srgb,var(--g1) 90%,transparent);
    border-color:color-mix(in srgb,var(--g1) 22%,rgba(255,255,255,.06));
}
/* Whole-role locked visual state */
.inv-item.role-locked{
    border-left-color:#fb923c;
    background:rgba(251,146,60,.05);
}
.inv-item.role-locked::before{
    background:linear-gradient(135deg,rgba(251,146,60,.2),transparent 55%);
}
.inv-item.role-locked:hover{
    border-color:rgba(251,146,60,.22);
    border-left-color:#fb923c;
    background:rgba(251,146,60,.09);
}
/* Top row: drag + icon + name + badges + controls */
.inv-row{display:flex;align-items:center;gap:8px;position:relative;z-index:1}
.inv-icon{width:22px;height:22px;object-fit:contain;border-radius:4px;flex-shrink:0}
.inv-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.inv-name{font-size:.83rem;font-weight:600;color:var(--t1);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Count badge — for no-serial roles with multiple copies */
.inv-count-badge{
    font-size:.62rem;font-weight:800;letter-spacing:.02em;
    color:color-mix(in srgb,var(--rc) 85%,var(--t2));
    background:color-mix(in srgb,var(--rc) 13%,transparent);
    border:1px solid color-mix(in srgb,var(--rc) 22%,transparent);
    padding:1px 7px;border-radius:10px;flex-shrink:0;
}
/* Small status badges beside name */
.inv-badge{display:inline-flex;align-items:center;flex-shrink:0}
.inv-badge--lock{color:var(--t3);font-size:.8rem;opacity:.5}
.inv-badge--disp{font-size:.55rem;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.07em;opacity:.55;padding:1px 4px;border:1px solid rgba(255,255,255,.1);border-radius:4px}
/* Controls: qty toggle + lock btn */
.inv-controls{display:flex;align-items:center;gap:3px;margin-left:auto;flex-shrink:0}
.inv-qty-toggle,.inv-role-lock-btn{
    flex-shrink:0;background:none;border:1px solid transparent;border-radius:6px;
    color:var(--t3);cursor:pointer;
    width:28px;height:28px;
    display:flex;align-items:center;justify-content:center;
    font-size:.78rem;
    transition:color .12s,border-color .12s,background .12s;
}
.inv-qty-toggle:hover{color:var(--t1);border-color:var(--border);background:rgba(255,255,255,.05)}
.inv-qty-toggle.on{color:var(--rc);border-color:color-mix(in srgb,var(--rc) 38%,transparent);background:color-mix(in srgb,var(--rc) 11%,transparent)}
.inv-qty-toggle.forced{opacity:.45;cursor:not-allowed}
.inv-role-lock-btn:hover{color:#fb923c;border-color:rgba(251,146,60,.38);background:rgba(251,146,60,.08)}
.inv-role-lock-btn.on{color:#fb923c;border-color:rgba(251,146,60,.45);background:rgba(251,146,60,.12)}
/* Chips row */
.inv-chips{
    display:flex;flex-wrap:wrap;gap:4px;
    margin-top:6px;padding-left:30px;
    position:relative;z-index:1;
}
/* Serial chip — two zones: label (click=lock) + pin button (click=pin) */
.inv-chip{
    display:inline-flex;align-items:stretch;gap:0;
    font-size:.65rem;font-weight:700;letter-spacing:.02em;
    color:var(--rc);
    background:color-mix(in srgb,var(--rc) 13%,transparent);
    padding:0;border-radius:6px;
    cursor:default;user-select:none;min-height:26px;
    overflow:hidden;
    transition:background .12s;
}
/* Serial label zone — click to lock */
.inv-chip-label{
    padding:4px 6px 4px 9px;
    cursor:pointer;
    display:flex;align-items:center;
    transition:background .1s;
}
.inv-chip-label:hover{background:rgba(255,255,255,.07)}
.inv-chip.locked{background:rgba(251,146,60,.16)}
.inv-chip.locked .inv-chip-label{color:#fb923c}
.inv-chip.locked .inv-chip-label:hover{background:rgba(251,146,60,.15)}
.inv-chip.pinned{background:rgba(250,204,21,.15)}
.inv-chip.pinned .inv-chip-label{color:#facc15}
.inv-chip.pinned .inv-chip-label:hover{background:rgba(250,204,21,.12)}
.inv-chip.locked.pinned .inv-chip-label{color:#facc15}
/* Pin button zone — right side with divider */
.inv-chip-pin{
    background:none;border:none;border-left:1px solid rgba(255,255,255,.1);
    padding:0 8px;margin:0;
    cursor:pointer;
    color:var(--t3);
    font-size:.72rem;
    display:flex;align-items:center;justify-content:center;
    transition:color .12s,background .12s;
}
.inv-chip-pin:hover{color:#facc15;background:rgba(250,204,21,.12)}
.inv-chip-pin.active{color:#facc15;background:rgba(250,204,21,.15)}
.inv-chip.locked .inv-chip-pin{border-left-color:rgba(251,146,60,.2)}
.inv-chip.pinned .inv-chip-pin{border-left-color:rgba(250,204,21,.2)}
/* Non-interactive qty / pinned display chips */
.inv-chip--qty{cursor:default;color:var(--t2);background:rgba(255,255,255,.08);font-size:.7rem;padding:4px 10px;min-height:26px}
.inv-chip--pin{cursor:default;color:#facc15;background:rgba(250,204,21,.13);font-weight:800;padding:4px 10px;min-height:26px}
/* Custom inv embed color picker */
.inv-cpick-wrap{width:100%;box-sizing:border-box;padding:10px 0 14px;margin-top:8px;border-top:1px solid var(--border)}
.inv-cpick{display:flex;flex-direction:column;gap:7px}
.inv-cpick-track{position:relative;height:11px;border-radius:6px;cursor:crosshair;user-select:none}
.inv-cpick-hue{background:linear-gradient(to right,#f00,#ff0,#0f0,#0ff,#00f,#f0f,#f00)}
.inv-cpick-thumb{position:absolute;top:50%;width:17px;height:17px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 5px rgba(0,0,0,.55);transform:translate(-50%,-50%);pointer-events:none;transition:left 0s}
.inv-cpick-row{display:flex;align-items:center;gap:6px}
.inv-cpick-swatch{width:22px;height:22px;border-radius:50%;flex-shrink:0;border:2px solid rgba(255,255,255,.15)}
.inv-cpick-hex{flex:1;min-width:0;background:rgba(255,255,255,.05);border:1px solid var(--border);border-radius:7px;color:var(--t1);padding:5px 8px;font-size:.78rem;font-family:monospace;letter-spacing:.04em;outline:none;transition:border-color var(--tr)}
.inv-cpick-hex:focus{border-color:var(--accent)}
.inv-cpick-save{flex-shrink:0;background:var(--accent);border:none;border-radius:7px;color:#fff;cursor:pointer;font-size:.72rem;font-weight:600;padding:5px 11px;transition:opacity var(--tr)}
.inv-cpick-save:hover{opacity:.82}
.inv-cpick-rst{flex-shrink:0;background:none;border:1px solid var(--border);border-radius:7px;color:var(--t3);cursor:pointer;font-size:.82rem;padding:4px 8px;transition:color var(--tr),border-color var(--tr)}
.inv-cpick-rst:hover{color:var(--t1);border-color:var(--t2)}
/* VIP swatch palette */
.inv-cpick-swatches{display:flex;flex-wrap:wrap;gap:7px;align-items:center;padding-top:2px}
.inv-swatch-btn{width:24px;height:24px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;flex-shrink:0;transition:border-color .15s,transform .15s,box-shadow .15s}
.inv-swatch-btn.active{border-color:#fff;transform:scale(1.18);box-shadow:0 0 6px rgba(255,255,255,.4)}
.inv-swatch-btn:hover:not(.active){border-color:rgba(255,255,255,.5);transform:scale(1.08)}
.inv-swatch-rst{background:none;border:1px solid var(--border);border-radius:7px;color:var(--t3);cursor:pointer;font-size:.82rem;padding:4px 8px;margin-left:2px;transition:color var(--tr),border-color var(--tr)}
.inv-swatch-rst:hover{color:var(--t1);border-color:var(--t2)}
/* Owner tier-preview toggle */
.inv-cpick-tier-toggle{flex-shrink:0;background:none;border:1px dashed rgba(255,255,255,.2);border-radius:6px;color:var(--t3);cursor:pointer;font-size:.68rem;font-weight:600;padding:3px 7px;letter-spacing:.04em;transition:color var(--tr),border-color var(--tr)}
.inv-cpick-tier-toggle:hover{color:var(--t1);border-color:rgba(255,255,255,.4)}

/* Toolbar row: slots + presets left, save/cancel right */
.inv-toolbar{
    display:flex;align-items:center;justify-content:space-between;
    flex-wrap:wrap;gap:8px;margin-bottom:12px;
}
/* Slot switcher */
.inv-slots{display:flex;align-items:center;gap:5px}
.inv-slots-label{font-size:.64rem;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.06em;margin-right:2px}
.inv-slot-btn{
    width:28px;height:28px;border-radius:6px;font-size:.72rem;font-weight:800;
    color:var(--t3);border:1px solid var(--border);background:transparent;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    transition:color var(--tr),border-color var(--tr),background var(--tr);
    position:relative;
}
.inv-slot-btn:hover{color:var(--t1);border-color:var(--border-h)}
.inv-slot-btn.active{color:#fe4a78;border-color:rgba(254,74,120,.45);background:rgba(254,74,120,.09);font-weight:900}
.inv-slot-btn.has-data::after{
    content:'';position:absolute;top:3px;right:3px;
    width:4px;height:4px;border-radius:50%;
    background:#fe4a78;opacity:.7;
}
.inv-slot-btn.active.has-data::after{opacity:1}
.inv-slot-btn:disabled{opacity:.4;cursor:default}
.inv-preset-btns{display:flex;gap:5px;flex-wrap:wrap}
.inv-preset-btn{
    display:flex;align-items:center;gap:4px;
    padding:4px 10px;border-radius:7px;font-size:.72rem;font-weight:700;
    color:var(--t3);border:1px solid var(--border);background:transparent;cursor:pointer;
    transition:color var(--tr),border-color var(--tr),background var(--tr);
}
.inv-preset-btn i{font-size:.85rem}
.inv-preset-btn:hover{color:var(--t1);border-color:var(--border-h)}
.inv-preset-btn.active{color:#fe4a78;border-color:rgba(254,74,120,.35);background:rgba(254,74,120,.07)}
.inv-save-actions{display:flex;gap:7px}
.inv-sort-cancel{
    padding:4px 11px;border-radius:7px;font-size:.74rem;font-weight:600;
    color:var(--t2);border:1px solid var(--border);background:transparent;cursor:pointer;
    transition:color var(--tr),border-color var(--tr);
}
.inv-sort-cancel:hover{color:var(--t1);border-color:var(--border-h)}
.inv-sort-save{
    display:flex;align-items:center;gap:4px;
    padding:4px 11px;border-radius:7px;font-size:.74rem;font-weight:700;
    color:#000;background:#fe4a78;border:none;cursor:pointer;
    transition:opacity var(--tr),transform var(--tr),background var(--tr);
}
.inv-sort-save:hover{opacity:.88;transform:translateY(-1px)}
.inv-sort-save:disabled{opacity:.4;cursor:default;transform:none}
.inv-sort-save.saved{background:#4afe98}

/* Drag states */
.inv-drag-handle{
    display:flex;align-items:center;
    color:var(--t3);font-size:1.05rem;
    cursor:grab;flex-shrink:0;
    transition:color var(--tr);
}
.inv-drag-handle:active{cursor:grabbing}
.inv-item.sortable{cursor:grab;user-select:none}
.inv-item.sortable:active{cursor:grabbing}
.inv-item.sortable:hover .inv-drag-handle{color:var(--t2)}
.inv-item.dragging{opacity:.3;border-style:dashed}
.inv-item.drag-over-top{border-top:2px solid #fe4a78}
.inv-item.drag-over-bottom{border-bottom:2px solid #fe4a78}

/* ── Mobile ──────────────────────────────────────────────────────────── */
@media(max-width:680px){
    .prof-page{grid-template-columns:1fr;padding:12px 10px 80px;gap:14px}

    /* Card: avatar left, content right */
    .prof-card{
        position:static;flex-direction:row;align-items:flex-start;
        text-align:left;padding:14px;gap:12px;border-radius:12px;
    }
    .prof-card-body{flex:1;min-width:0;align-items:flex-start}
    .prof-avatar-wrap{width:52px;height:52px;flex-shrink:0;margin-bottom:0}
    .prof-avatar{width:52px;height:52px}
    .prof-avatar-role-icon{width:20px;height:20px}
    .prof-avatar-glow{inset:-8px}
    .prof-name{font-size:.88rem;margin-bottom:4px}
    .prof-role-badge{margin-bottom:7px;font-size:.66rem;padding:3px 8px}
    .prof-stats{gap:7px;margin-bottom:7px;font-size:.72rem}
    .prof-items{margin-bottom:8px}
    .prof-items-grid{justify-content:flex-start;gap:4px}
    .prof-actions{flex-direction:row;gap:5px}
    .prof-copy-btn{padding:7px 12px;font-size:.73rem;border-radius:8px}
    /* Color picker */
    .inv-cpick-wrap{margin-top:6px;padding:8px 0 10px}
    .inv-cpick-swatches{gap:6px}
    .inv-swatch-btn{width:24px;height:24px}
    /* Toolbar */
    .inv-toolbar{gap:6px;margin-bottom:8px}
    .inv-slots{gap:4px}
    .inv-slots-label{display:none}
    .inv-slot-btn{width:32px;height:32px;font-size:.76rem}
    .inv-preset-btns{gap:4px}
    .inv-preset-btn{padding:6px 10px;font-size:.71rem}
    .inv-save-actions{margin-left:auto;gap:5px}
    .inv-sort-cancel,.inv-sort-save{padding:6px 10px;font-size:.71rem}
    /* Role rows */
    .inv-item{padding:10px 10px 8px 12px}
    .inv-icon{width:20px;height:20px}
    .inv-drag-handle{font-size:1.1rem;min-width:24px;justify-content:center}
    .inv-name{font-size:.81rem}
    .inv-qty-toggle,.inv-role-lock-btn{width:32px;height:32px;font-size:.82rem}
    .inv-chips{padding-left:28px;gap:4px;margin-top:5px}
    .inv-chip{min-height:32px}
    .inv-chip-label{font-size:.67rem;padding:5px 7px 5px 10px}
    .inv-chip--qty,.inv-chip--pin{padding:5px 12px;min-height:32px;font-size:.72rem}
    .inv-chip-pin{padding:0 10px;font-size:.78rem;min-height:32px}
}

/* =====================================================================
   ROLE INDEX (ix-*)
   ===================================================================== */
.ix-page{max-width:1080px;margin:0 auto;padding:36px 22px 80px}

/* Toolbar */
.ix-toolbar{
    display:flex;align-items:center;gap:12px;
    margin:14px 0 22px;
    flex-wrap:wrap;
}
.ix-search-wrap{
    flex:1;min-width:220px;
    position:relative;
}
.ix-search-icon{
    position:absolute;left:12px;top:50%;transform:translateY(-50%);
    color:rgba(255,255,255,.32);font-size:1rem;pointer-events:none;
    transition:color .2s ease;
}
.ix-search{
    width:100%;padding:11px 14px 11px 38px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.06);
    border-radius:10px;
    color:var(--t1);font-size:.85rem;font-family:inherit;
    outline:none;
    transition:border-color .2s ease,background .2s ease;
}
.ix-search::placeholder{color:rgba(255,255,255,.32);font-weight:500}
.ix-search:focus{
    border-color:rgba(255,255,255,.22);
    background:rgba(255,255,255,.05);
}
.ix-search:focus + .ix-search-icon,
.ix-search-wrap:focus-within .ix-search-icon{color:rgba(255,255,255,.6)}

.ix-sort-wrap{display:flex;align-items:center}
.ix-sort{
    appearance:none;-webkit-appearance:none;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.06);
    color:var(--t1);font-family:inherit;
    font-size:.78rem;font-weight:600;
    padding:9px 32px 9px 14px;border-radius:10px;
    cursor:pointer;outline:none;
    transition:border-color .2s,background .2s;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path fill='%23999' d='M0 0l5 6 5-6z'/></svg>");
    background-repeat:no-repeat;background-position:right 12px center;
}
.ix-sort:hover{background-color:rgba(255,255,255,.06);border-color:rgba(255,255,255,.14)}
.ix-sort:focus{border-color:rgba(255,255,255,.22)}
.ix-sort option{background:#16161c;color:var(--t1)}

/* Grid */
.ix-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(180px,1fr));
    gap:14px;
    margin-bottom:24px;
}
.ix-grid-skeleton{
    grid-column:1 / -1;
    display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;
}
.ix-card-skel{
    height:170px;border-radius:14px;
    background:linear-gradient(110deg,rgba(255,255,255,.02) 30%,rgba(255,255,255,.05) 50%,rgba(255,255,255,.02) 70%);
    background-size:200% 100%;
    animation:ixSkel 1.4s linear infinite;
    border:1px solid rgba(255,255,255,.04);
}
@keyframes ixSkel{
    0%{background-position:200% 0}
    100%{background-position:-200% 0}
}
.ix-empty{
    grid-column:1 / -1;
    text-align:center;padding:60px 20px;
    color:var(--t3);font-size:.85rem;
}
.ix-empty b{color:var(--t1)}

/* Role card */
.ix-card{
    --rc:#888;
    position:relative;
    display:flex;flex-direction:column;
    padding:18px 16px 14px;
    border-radius:14px;
    background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,.008));
    border:1px solid rgba(255,255,255,.06);
    cursor:pointer;
    overflow:hidden;text-align:left;
    transition:transform .22s cubic-bezier(.2,.7,.2,1),border-color .22s ease,box-shadow .28s ease,background .25s ease;
    isolation:isolate;
}
.ix-card.has-grad{
    --rc:var(--g1);
    background:linear-gradient(160deg,
        color-mix(in srgb,var(--g1) 14%,#0d0d15) 0%,
        color-mix(in srgb,var(--g2) 7%,#0a0a14) 100%);
    border-color:color-mix(in srgb,var(--g1) 18%,rgba(255,255,255,.05));
}

/* Soft top radial glow + corner highlight */
.ix-card-glow{
    position:absolute;inset:-1px;border-radius:inherit;
    pointer-events:none;z-index:0;
    background:
        radial-gradient(70% 55% at 50% -20%,color-mix(in srgb,var(--rc) 28%,transparent),transparent 65%),
        radial-gradient(40% 40% at 100% 100%,color-mix(in srgb,var(--rc) 14%,transparent),transparent 70%);
    opacity:.6;
    transition:opacity .3s ease;
}
.ix-card.has-grad .ix-card-glow{
    background:
        radial-gradient(70% 55% at 50% -20%,color-mix(in srgb,var(--g1) 32%,transparent),transparent 65%),
        radial-gradient(40% 40% at 100% 100%,color-mix(in srgb,var(--g2) 22%,transparent),transparent 70%);
}

/* Left accent stripe (role color) */
.ix-card-accent{
    position:absolute;left:0;top:14%;bottom:14%;
    width:2px;border-radius:0 2px 2px 0;
    background:color-mix(in srgb,var(--rc) 70%,transparent);
    box-shadow:0 0 10px color-mix(in srgb,var(--rc) 55%,transparent);
    opacity:.45;
    transition:opacity .25s ease,top .25s ease,bottom .25s ease;
    z-index:1;
}
.ix-card.has-grad .ix-card-accent{
    background:linear-gradient(180deg,var(--g1),var(--g2));
    box-shadow:0 0 12px color-mix(in srgb,var(--g1) 55%,transparent);
}

/* Hero block (icon area) */
.ix-card-hero{
    position:relative;z-index:1;
    width:64px;height:64px;border-radius:14px;
    margin:0 auto 12px;
    display:flex;align-items:center;justify-content:center;
    background:radial-gradient(70% 70% at 50% 50%,color-mix(in srgb,var(--rc) 22%,transparent),transparent 75%);
}
.ix-card-hero::before{
    content:'';position:absolute;inset:-3px;border-radius:inherit;
    background:radial-gradient(60% 60% at 50% 50%,color-mix(in srgb,var(--rc) 16%,transparent),transparent 70%);
    filter:blur(6px);opacity:.7;
    transition:opacity .25s ease;
    z-index:-1;
}
.ix-card-icon{
    width:48px;height:48px;object-fit:contain;
    filter:drop-shadow(0 0 12px color-mix(in srgb,var(--rc) 60%,transparent));
    transition:transform .3s cubic-bezier(.2,.7,.2,1),filter .25s ease;
}
.ix-card-dot{
    width:38px;height:38px;border-radius:50%;
    box-shadow:0 0 14px color-mix(in srgb,var(--rc) 55%,transparent),
        inset 0 -3px 8px rgba(0,0,0,.35);
}

/* Body */
.ix-card-body{
    position:relative;z-index:1;
    display:flex;flex-direction:column;gap:8px;
    text-align:center;
}
.ix-card-name{
    font-size:.92rem;font-weight:800;color:#fff;
    letter-spacing:-.01em;line-height:1.2;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.ix-card-stats{
    display:flex;align-items:center;justify-content:center;
    gap:14px;
    font-size:.62rem;color:rgba(255,255,255,.45);
    position:relative;
}
.ix-card-stats > .ix-card-stat:first-child::after{
    content:'';
    position:absolute;left:50%;top:50%;
    width:1px;height:18px;
    background:rgba(255,255,255,.08);
    transform:translate(-50%,-50%);
}
.ix-card-stat{display:inline-flex;flex-direction:column;align-items:center;gap:1px;min-width:48px}
.ix-card-stat b{
    font-size:.95rem;font-weight:800;color:#fff;
    font-variant-numeric:tabular-nums;
    letter-spacing:-.015em;line-height:1;
}
.ix-card-stat-l{
    font-size:.56rem;font-weight:700;letter-spacing:.06em;
    text-transform:uppercase;color:rgba(255,255,255,.4);
}

/* Hover */
.ix-card:hover{
    transform:translateY(-4px);
    border-color:color-mix(in srgb,var(--rc) 38%,rgba(255,255,255,.1));
    box-shadow:0 18px 44px -22px color-mix(in srgb,var(--rc) 85%,transparent);
}
.ix-card:hover .ix-card-glow{opacity:.95}
.ix-card:hover .ix-card-icon{transform:scale(1.08);filter:drop-shadow(0 0 16px color-mix(in srgb,var(--rc) 75%,transparent))}
.ix-card:hover .ix-card-accent{opacity:1;top:6%;bottom:6%}

/* Active (selected) */
.ix-card.is-active{
    transform:translateY(-4px);
    border-color:color-mix(in srgb,var(--rc) 75%,#fff 6%);
    box-shadow:
        0 0 0 1px color-mix(in srgb,var(--rc) 55%,transparent),
        0 18px 44px -22px color-mix(in srgb,var(--rc) 90%,transparent);
}
.ix-card.is-active .ix-card-glow{opacity:1}
.ix-card.is-active .ix-card-accent{opacity:1;top:6%;bottom:6%;width:3px}
.ix-card.is-active .ix-card-icon{filter:drop-shadow(0 0 18px color-mix(in srgb,var(--rc) 80%,transparent))}
.ix-card.has-grad.is-active{
    border-color:color-mix(in srgb,var(--g1) 60%,#fff 8%);
    box-shadow:
        0 0 0 1px color-mix(in srgb,var(--g1) 48%,transparent),
        0 18px 44px -22px color-mix(in srgb,var(--g2) 80%,transparent);
}

/* =====================================================================
   ROLE INDEX — DETAIL DRAWER
   ===================================================================== */
.ix-drawer{
    position:relative;
    margin-top:6px;
    border-radius:16px;
    background:rgba(255,255,255,.02);
    border:1px solid color-mix(in srgb,var(--rc) 18%,rgba(255,255,255,.06));
    overflow:hidden;
    opacity:0;transform:translateY(-8px);
    transition:opacity .25s ease,transform .3s cubic-bezier(.2,.7,.2,1);
    isolation:isolate;
}
.ix-drawer.is-open{opacity:1;transform:none}
.ix-drawer.is-closing{opacity:0;transform:translateY(-8px)}
.ix-drawer.has-grad{
    background:linear-gradient(155deg,
        color-mix(in srgb,var(--g1) 10%,#0c0c14),
        color-mix(in srgb,var(--g2) 6%,#0a0a14));
    border-color:color-mix(in srgb,var(--g1) 22%,rgba(255,255,255,.06));
}
.ix-drawer-bg{
    position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;z-index:0;
    background:radial-gradient(60% 50% at 0% 0%,color-mix(in srgb,var(--rc) 18%,transparent),transparent 60%);
}
.ix-drawer.has-grad .ix-drawer-bg{
    background:
        radial-gradient(60% 50% at 0% 0%,color-mix(in srgb,var(--g1) 22%,transparent),transparent 60%),
        radial-gradient(60% 50% at 100% 100%,color-mix(in srgb,var(--g2) 22%,transparent),transparent 60%);
}

.ix-drawer-head{
    position:relative;z-index:1;
    display:flex;align-items:center;gap:14px;
    padding:18px 20px;
    border-bottom:1px solid color-mix(in srgb,var(--rc) 12%,rgba(255,255,255,.04));
}
.ix-drawer-icon-wrap{
    width:54px;height:54px;border-radius:12px;
    display:flex;align-items:center;justify-content:center;
    background:radial-gradient(60% 60% at 50% 50%,color-mix(in srgb,var(--rc) 22%,transparent),transparent 75%);
    flex-shrink:0;
}
.ix-drawer-icon{width:38px;height:38px;object-fit:contain;
    filter:drop-shadow(0 0 8px color-mix(in srgb,var(--rc) 55%,transparent));
}
.ix-drawer-dot{width:30px;height:30px;border-radius:50%;box-shadow:0 0 10px color-mix(in srgb,var(--rc) 50%,transparent)}

.ix-drawer-text{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1}
.ix-drawer-name{
    font-size:1.1rem;font-weight:800;color:#fff;
    letter-spacing:-.01em;line-height:1.1;
    margin:0;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.ix-drawer-tags{display:flex;gap:8px;flex-wrap:wrap}
.ix-drawer-tag{
    font-size:.66rem;font-weight:700;color:rgba(255,255,255,.7);
    letter-spacing:.02em;
    padding:4px 9px;border-radius:99px;
    background:rgba(255,255,255,.05);
    border:1px solid rgba(255,255,255,.06);
}
.ix-drawer-tag b{color:#fff;font-weight:900;margin-right:4px;font-variant-numeric:tabular-nums}
.ix-drawer-obtain{
    font-size:.72rem;color:rgba(255,255,255,.45);
    margin:7px 0 0;line-height:1.5;
}
.ix-drawer-obtain-badge{
    display:inline-block;
    font-size:.58rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;
    padding:1px 6px;border-radius:4px;
    margin-right:7px;vertical-align:middle;position:relative;top:-1px;
}
.ix-drawer-obtain-badge--limited{background:rgba(255,70,70,.15);color:rgba(255,110,110,.9);}
.ix-drawer-obtain-badge--obtainable{background:rgba(60,210,110,.13);color:rgba(80,220,130,.9);}
.ix-cmd{
    display:inline-block;
    font-family:'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size:.68rem;font-weight:600;
    background:rgba(124,92,252,.14);
    color:#c8b9ff;
    border:1px solid rgba(124,92,252,.28);
    padding:1px 6px;border-radius:4px;
    line-height:1.3;
    white-space:nowrap;
}

.ix-drawer-close{
    width:34px;height:34px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    background:rgba(255,255,255,.05);
    border:1px solid rgba(255,255,255,.08);
    color:rgba(255,255,255,.6);
    font-size:1.3rem;line-height:1;cursor:pointer;
    transition:background .15s ease,color .15s ease,border-color .15s ease;
    flex-shrink:0;
}
.ix-drawer-close:hover{
    background:rgba(255,255,255,.08);
    color:#fff;
    border-color:rgba(255,255,255,.18);
}

.ix-drawer-body{
    position:relative;z-index:1;
    max-height:480px;overflow-y:auto;
}
.ix-owner-row{
    display:flex;align-items:center;gap:12px;
    padding:10px 20px;
    border-bottom:1px solid rgba(255,255,255,.03);
    transition:background .15s ease;
}
.ix-owner-row:last-child{border-bottom:none}
.ix-owner-row:hover{background:rgba(255,255,255,.02)}
.ix-owner-avatar{
    width:28px;height:28px;border-radius:50%;
    object-fit:cover;flex-shrink:0;
    background:rgba(255,255,255,.05);
}
.ix-owner-avatar--ph{background:rgba(255,255,255,.06)}
.ix-owner-name{
    font-size:.82rem;font-weight:600;color:#fff;
    min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    flex:1;
}
.ix-owner-serials{
    display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end;
    flex-shrink:0;max-width:50%;
}
.ix-serial{
    font-size:.62rem;font-weight:800;color:#fff;
    font-variant-numeric:tabular-nums;letter-spacing:.02em;
    padding:3px 8px;border-radius:99px;
    background:color-mix(in srgb,var(--rc) 16%,rgba(255,255,255,.04));
    border:1px solid color-mix(in srgb,var(--rc) 28%,rgba(255,255,255,.06));
}
.ix-drawer.has-grad .ix-serial{
    background:linear-gradient(135deg,
        color-mix(in srgb,var(--g1) 22%,rgba(255,255,255,.04)),
        color-mix(in srgb,var(--g2) 22%,rgba(255,255,255,.04)));
    border-color:color-mix(in srgb,var(--g1) 30%,rgba(255,255,255,.08));
}
.ix-owner-empty{
    padding:24px 20px;text-align:center;
    color:var(--t3);font-size:.78rem;
}

/* =====================================================================
   COLLECTION LEADERBOARD (ix-lb-*) — compact, collapsible
   ===================================================================== */

.ix-lb{
    margin:0 0 18px;
    border-radius:12px;
    background:linear-gradient(180deg,rgba(255,255,255,.028),rgba(255,255,255,.012));
    border:1px solid rgba(255,255,255,.06);
    overflow:hidden;
    transition:border-color .2s ease;
}
.ix-lb:hover{border-color:rgba(255,255,255,.09)}

.ix-lb-toggle{
    display:flex;align-items:center;gap:12px;
    width:100%;padding:10px 14px;
    background:transparent;border:0;
    color:#fff;font:inherit;cursor:pointer;
    text-align:left;
}
.ix-lb-title{
    display:inline-flex;align-items:center;gap:8px;
    font-size:.82rem;font-weight:700;letter-spacing:-.01em;
    color:#fff;
}
.ix-lb-title .bxs-trophy{
    font-size:.95rem;
    color:#f5c84b;
    filter:drop-shadow(0 0 6px rgba(245,200,75,.35));
}
.ix-lb-you{
    margin-left:auto;
    display:inline-flex;align-items:center;
    padding:3px 9px;border-radius:99px;
    font-size:.66rem;font-weight:700;letter-spacing:.01em;
    color:#ffb6cc;
    background:rgba(254,74,120,.10);
    border:1px solid rgba(254,74,120,.22);
    font-variant-numeric:tabular-nums;
}
.ix-lb-chev{
    font-size:1.05rem;color:rgba(255,255,255,.35);
    transition:transform .2s ease;
    flex-shrink:0;
}
.ix-lb-toggle:hover .ix-lb-chev{color:rgba(255,255,255,.65)}
.ix-lb.is-collapsed .ix-lb-chev{transform:rotate(-90deg)}
.ix-lb-toggle:not(:has(.ix-lb-you)) .ix-lb-chev{margin-left:auto}

.ix-lb-list{
    list-style:none;margin:0;padding:4px 6px 8px;
    display:flex;flex-direction:column;gap:1px;
    border-top:1px solid rgba(255,255,255,.05);
}
.ix-lb.is-collapsed .ix-lb-list{display:none}

.ix-lb-row{
    display:grid;
    grid-template-columns:22px 22px 1fr auto;
    align-items:center;gap:10px;
    padding:5px 10px;border-radius:8px;
    position:relative;
    transition:background .12s ease;
}
.ix-lb-row:hover{background:rgba(255,255,255,.025)}

.ix-lb-row.is-me{
    background:linear-gradient(90deg,rgba(254,74,120,.08),rgba(156,108,255,.05));
    box-shadow:inset 0 0 0 1px rgba(254,74,120,.18);
}
.ix-lb-row.is-me:hover{background:linear-gradient(90deg,rgba(254,74,120,.12),rgba(156,108,255,.08))}

.ix-lb-row.is-tail{margin-top:5px;position:relative}
.ix-lb-row.is-tail::before{
    content:'';position:absolute;left:10px;right:10px;top:-3px;height:1px;
    background:linear-gradient(90deg,transparent,rgba(255,255,255,.08),transparent);
}

.ix-lb-rank{
    font-size:.7rem;font-weight:800;color:rgba(255,255,255,.34);
    text-align:center;font-variant-numeric:tabular-nums;
    letter-spacing:-.01em;
}
.ix-lb-row.is-top-1 .ix-lb-rank{color:#f5c84b}
.ix-lb-row.is-top-2 .ix-lb-rank{color:#cfd2d8}
.ix-lb-row.is-top-3 .ix-lb-rank{color:#d59265}

.ix-lb-avatar{
    width:22px;height:22px;border-radius:50%;
    object-fit:cover;display:block;
    background:rgba(255,255,255,.06);
    border:1px solid rgba(255,255,255,.05);
}
.ix-lb-avatar-fb{
    display:inline-flex;align-items:center;justify-content:center;
    font-size:.62rem;font-weight:800;color:rgba(255,255,255,.65);
}
.ix-lb-row.is-top-1 .ix-lb-avatar{box-shadow:0 0 0 1px rgba(245,200,75,.4),0 0 8px rgba(245,200,75,.25)}
.ix-lb-row.is-top-2 .ix-lb-avatar{box-shadow:0 0 0 1px rgba(207,210,216,.35)}
.ix-lb-row.is-top-3 .ix-lb-avatar{box-shadow:0 0 0 1px rgba(213,146,101,.35)}

.ix-lb-name{
    font-size:.78rem;font-weight:600;color:rgba(255,255,255,.88);
    letter-spacing:-.005em;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.ix-lb-row.is-me .ix-lb-name{color:#fff;font-weight:700}
.ix-lb-row.is-top-1 .ix-lb-name{color:#fff;font-weight:700}

.ix-lb-count{
    font-size:.78rem;font-weight:700;color:#fff;
    font-variant-numeric:tabular-nums;letter-spacing:-.01em;
}
.ix-lb-count i{
    font-style:normal;font-size:.68rem;font-weight:600;
    color:rgba(255,255,255,.3);margin-left:1px;
}

@media (max-width:560px){
    .ix-lb{margin-bottom:14px;border-radius:10px}
    .ix-lb-toggle{padding:9px 12px}
    .ix-lb-title{font-size:.78rem}
    .ix-lb-row{padding:4px 8px;gap:8px;grid-template-columns:20px 20px 1fr auto}
    .ix-lb-avatar{width:20px;height:20px}
    .ix-lb-name,.ix-lb-count{font-size:.74rem}
}

/* =====================================================================
   COLLECTION PAGE (ix-coll-*)
   ===================================================================== */

/* Controls (count + search + filters) */
.ix-coll-controls{
    display:flex;align-items:center;gap:12px;
    margin-bottom:18px;
    flex-wrap:wrap;
}
.ix-coll-count{
    display:flex;align-items:baseline;gap:3px;
    font-variant-numeric:tabular-nums;letter-spacing:-.01em;
    padding:0 6px;flex-shrink:0;
}
.ix-coll-count b{font-size:1rem;font-weight:800;color:#fff}
.ix-coll-count span{font-size:.85rem;font-weight:700;color:rgba(255,255,255,.32)}

/* Filters */
.ix-coll-filters{
    display:flex;flex-wrap:wrap;gap:6px;
}
.ix-coll-filter{
    padding:7px 14px;border-radius:99px;
    background:transparent;
    border:1px solid rgba(255,255,255,.06);
    color:rgba(255,255,255,.55);
    font-family:inherit;font-size:.74rem;font-weight:700;
    letter-spacing:-.005em;
    cursor:pointer;
    transition:border-color .15s ease,background .15s ease,color .15s ease;
}
.ix-coll-filter:hover{
    color:#fff;border-color:rgba(255,255,255,.14);
}
.ix-coll-filter.is-active{
    background:rgba(255,255,255,.06);
    border-color:rgba(255,255,255,.16);
    color:#fff;
}

/* Grid */
.ix-coll-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(150px,1fr));
    gap:10px;
}

.ix-coll-card{
    --rc:#888;
    position:relative;
    display:flex;flex-direction:column;align-items:center;gap:10px;
    padding:18px 12px 14px;
    border-radius:12px;
    background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,.008));
    border:1px solid rgba(255,255,255,.05);
    overflow:hidden;
    isolation:isolate;
    transition:transform .18s ease,border-color .18s ease,filter .25s ease,opacity .25s ease;
}
.ix-coll-card.has-grad{
    --rc:var(--g1);
    background:linear-gradient(160deg,
        color-mix(in srgb,var(--g1) 12%,#0d0d15),
        color-mix(in srgb,var(--g2) 6%,#0a0a14));
    border-color:color-mix(in srgb,var(--g1) 14%,rgba(255,255,255,.05));
}
.ix-coll-card.is-missing{
    filter:grayscale(1) brightness(.5);
    opacity:.4;
    background:rgba(255,255,255,.015);
    border-color:rgba(255,255,255,.04);
}
.ix-coll-card.is-missing:hover{opacity:.7;filter:grayscale(.85) brightness(.65)}
.ix-coll-card.is-collected:hover{
    transform:translateY(-2px);
    border-color:color-mix(in srgb,var(--rc) 30%,rgba(255,255,255,.1));
}

.ix-coll-glow{
    position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;z-index:0;
    background:radial-gradient(70% 55% at 50% -20%,color-mix(in srgb,var(--rc) 20%,transparent),transparent 65%);
    opacity:.7;
}
.ix-coll-card.is-missing .ix-coll-glow{display:none}

.ix-coll-hero{
    position:relative;z-index:1;
    width:56px;height:56px;border-radius:12px;
    display:flex;align-items:center;justify-content:center;
    background:radial-gradient(60% 60% at 50% 50%,color-mix(in srgb,var(--rc) 18%,transparent),transparent 75%);
}
.ix-coll-card.is-missing .ix-coll-hero{background:rgba(255,255,255,.02)}
.ix-coll-icon{
    width:40px;height:40px;object-fit:contain;
    filter:drop-shadow(0 0 9px color-mix(in srgb,var(--rc) 55%,transparent));
}
.ix-coll-card.is-missing .ix-coll-icon{filter:none}
.ix-coll-dot{width:30px;height:30px;border-radius:50%;box-shadow:0 0 10px color-mix(in srgb,var(--rc) 50%,transparent)}

.ix-coll-name{
    position:relative;z-index:1;
    font-size:.78rem;font-weight:700;color:#fff;
    letter-spacing:-.005em;line-height:1.2;text-align:center;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;
}

.ix-coll-check{
    --check:var(--rc);
    position:absolute;top:8px;right:8px;z-index:2;
    width:20px;height:20px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    background:color-mix(in srgb,var(--check) 78%,#fff 5%);
    color:#0a0a14;
    font-size:.95rem;
    box-shadow:0 0 10px color-mix(in srgb,var(--check) 60%,transparent);
}
.ix-coll-check i{display:flex;font-weight:900}

/* Mobile */
@media (max-width:600px){
    .ix-page{padding:24px 14px 60px}
    .ix-toolbar{gap:8px}
    .ix-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
    .ix-card{padding:14px 12px 12px}
    .ix-card-hero{width:54px;height:54px;margin-bottom:10px}
    .ix-card-icon{width:40px;height:40px}
    .ix-card-name{font-size:.85rem}
    .ix-card-stats{gap:12px}
    .ix-card-stat b{font-size:.85rem}
    .ix-drawer-head{padding:14px 16px;gap:10px}
    .ix-drawer-icon-wrap{width:46px;height:46px}
    .ix-drawer-icon{width:32px;height:32px}
    .ix-drawer-name{font-size:.95rem}
    .ix-owner-row{padding:9px 14px;gap:9px}
    .ix-owner-serials{max-width:60%}

    .ix-coll-controls{gap:8px;margin-bottom:14px;margin-top:6px}
    .ix-coll-count{padding:0 2px}
    .ix-coll-count b{font-size:.92rem}
    .ix-coll-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}
    .ix-coll-card{padding:14px 10px 11px}
    .ix-coll-hero{width:48px;height:48px}
    .ix-coll-icon{width:34px;height:34px}
    .ix-coll-name{font-size:.74rem}
    .ix-coll-num{font-size:1.4rem}
}

/* ========== Scrollbar ========== */
::-webkit-scrollbar{width:3px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.06);border-radius:2px}

/* ========== Admin ========== */
.admin-page{max-width:600px;margin:0 auto;padding:40px 20px}
.admin-stats{margin-bottom:16px}
.admin-stat{font-size:.72rem;font-weight:600;color:var(--t3);letter-spacing:.04em}
.admin-search{
    width:100%;padding:10px 0;margin-bottom:16px;
    background:transparent;border:none;border-bottom:1px solid var(--border);
    color:var(--t1);font-size:.85rem;font-weight:500;outline:none;
    transition:border-color .2s ease;
}
.admin-search:focus{border-color:rgba(255,255,255,.2)}
.admin-search::placeholder{color:var(--t3)}
.admin-list{display:flex;flex-direction:column;gap:6px}
.admin-card{
    padding:14px 16px;background:rgba(255,255,255,.02);
    border:1px solid rgba(255,255,255,.06);border-radius:10px;
    transition:border-color .2s ease;
}
.admin-card:hover{border-color:rgba(255,255,255,.1)}
.ac-header{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.ac-avatar{width:28px;height:28px;border-radius:50%}
.ac-info{display:flex;flex-direction:column;gap:1px;min-width:0}
.ac-name{font-size:.82rem;font-weight:700;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ac-sub{font-size:.65rem;color:var(--t3);font-family:monospace}
.ac-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px 12px;margin-bottom:6px}
.ac-cell{display:flex;flex-direction:column;gap:1px}
.ac-cell--span{grid-column:1/-1}
.ac-label{font-size:.58rem;font-weight:600;color:var(--t3);text-transform:uppercase;letter-spacing:.04em}
.ac-val{font-size:.75rem;font-weight:600;color:var(--t2)}
.ac-roles{font-size:.68rem;color:var(--t3);line-height:1.5;padding-top:4px;border-top:1px solid rgba(255,255,255,.04)}

/* Gacha config */
.admin-gacha{margin-bottom:16px}
.admin-grant{margin-bottom:24px}
.ag-card{
    padding:16px 18px;background:rgba(255,255,255,.02);
    border:1px solid rgba(255,255,255,.06);border-radius:10px;
}
.ag-title{font-size:.72rem;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:12px}
.ag-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ag-label{font-size:.82rem;color:var(--t2);font-weight:500}
.ag-input{
    width:64px;padding:6px 8px;text-align:center;
    background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);border-radius:6px;
    color:var(--t1);font-size:.85rem;font-weight:600;outline:none;
    transition:border-color .2s ease;
}
.ag-input:focus{border-color:rgba(255,255,255,.25)}
.ag-input--wide{width:100%}
.ag-hint{font-size:.62rem;color:var(--t3)}
.ag-unit{font-size:.78rem;color:var(--t3);font-weight:500}
.ag-btn{
    padding:6px 14px;border-radius:6px;font-size:.72rem;font-weight:700;
    background:rgba(255,255,255,.08);color:var(--t1);border:1px solid rgba(255,255,255,.1);
    cursor:pointer;transition:all .15s ease;margin-left:auto;
}
.ag-btn:hover{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.18)}
.ag-meta{display:flex;gap:16px;margin-top:12px;font-size:.68rem;color:var(--t3);flex-wrap:wrap}
.ag-meta b{color:var(--t2);font-weight:600}
.ag-ready{color:#6ee77a}
.ag-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.ag-action{
    padding:7px 14px;border-radius:6px;font-size:.72rem;font-weight:600;
    background:rgba(255,255,255,.05);color:var(--t2);border:1px solid rgba(255,255,255,.08);
    cursor:pointer;transition:all .15s ease;
}
.ag-action:hover{background:rgba(255,255,255,.1);color:var(--t1);border-color:rgba(255,255,255,.15)}
.ag-action--active{background:rgba(110,231,122,.1);color:#6ee77a;border-color:rgba(110,231,122,.2)}
.ag-action--active:hover{background:rgba(110,231,122,.15)}
.ag-action--subtle{color:var(--t3)}
.ag-action--subtle:hover{color:var(--t2)}
.ag-msg{font-size:.68rem;margin-top:8px;min-height:1em}
.ag-ok{color:#6ee77a}
.ag-err{color:#e76e6e}
.ag-btn--easter{background:rgba(228,155,50,.12);color:#e49b32;border-color:rgba(228,155,50,.25)}
.ag-btn--easter:hover{background:rgba(228,155,50,.2);border-color:rgba(228,155,50,.35)}
.ag-btn--danger{background:rgba(231,110,110,.12);color:#e76e6e;border-color:rgba(231,110,110,.2)}
.ag-btn--danger:hover{background:rgba(231,110,110,.2);border-color:rgba(231,110,110,.3)}
.ag-card--easter{border-color:rgba(228,155,50,.2)}
.ag-tab{padding:6px 14px;border-radius:8px;border:1px solid rgba(255,255,255,.1);background:transparent;color:var(--t3);font-size:.75rem;font-weight:600;cursor:pointer;letter-spacing:.04em;transition:color .15s,background .15s,border-color .15s}
.ag-tab:hover{color:var(--t2);background:rgba(255,255,255,.06)}
.ag-tab--active{color:#fff;background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2)}

/* Event mode roll page */
.roll-page.easter-active .hero-glow{opacity:.18;background:radial-gradient(circle,rgba(228,155,50,.4) 0%,transparent 70%)}
.roll-page.easter-active::before{
    content:'';position:absolute;inset:0;pointer-events:none;
    background:radial-gradient(ellipse at 50% 100%,rgba(228,155,50,.07) 0%,transparent 50%),
               radial-gradient(ellipse at 12% 20%,rgba(200,130,30,.05) 0%,transparent 35%),
               radial-gradient(ellipse at 88% 30%,rgba(215,140,35,.04) 0%,transparent 30%);
}

.easter-layer{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}

.easter-word{
    position:absolute;top:40px;left:50%;transform:translateX(-50%);
    font-size:clamp(4rem,12vw,8rem);font-weight:900;letter-spacing:-.03em;line-height:1;
    background:linear-gradient(135deg,rgba(228,155,50,.18),rgba(240,192,96,.14));
    -webkit-background-clip:text;-webkit-text-fill-color:transparent;
    background-clip:text;
    filter:drop-shadow(0 0 60px rgba(228,155,50,.06));
    user-select:none;white-space:nowrap
}

.easter-bunny{position:absolute;user-select:none;object-fit:contain;height:auto}
.eb{filter:drop-shadow(0 0 20px rgba(228,155,50,.4)) drop-shadow(0 0 60px rgba(200,130,30,.2))}

.eb-1{width:70px;bottom:2%;left:50%;margin-left:-35px;opacity:.1;transform:rotate(-5deg)}
.eb-2{width:44px;top:12%;right:6%;opacity:.12;transform:rotate(10deg)}
.eb-3{width:30px;top:38%;left:22%;opacity:.09;transform:rotate(-8deg)}
.eb-4{width:60px;bottom:8%;right:4%;opacity:.12;transform:rotate(5deg)}
.eb-5{width:24px;top:10%;left:14%;opacity:.08;transform:rotate(15deg)}
.eb-6{width:36px;bottom:50%;left:6%;opacity:.09;transform:rotate(-3deg)}
.eb-7{width:32px;top:24%;right:16%;opacity:.08;transform:rotate(8deg)}
.eb-8{width:50px;bottom:20%;right:10%;opacity:.1;transform:rotate(-6deg)}

@keyframes eb-drift{
    0%,100%{transform:translateY(0) scale(1)}
    50%{transform:translateY(-6px) scale(1.02)}
}
@keyframes eb-glow{
    0%,100%{filter:drop-shadow(0 0 20px rgba(228,155,50,.4)) drop-shadow(0 0 60px rgba(200,130,30,.2))}
    50%{filter:drop-shadow(0 0 30px rgba(228,155,50,.55)) drop-shadow(0 0 80px rgba(200,130,30,.3))}
}
.eb-1{animation:eb-drift 6s ease-in-out infinite, eb-glow 6s ease-in-out infinite}
.eb-2{animation:eb-drift 5s ease-in-out 1s infinite, eb-glow 5s ease-in-out 1s infinite}
.eb-3{animation:eb-drift 7s ease-in-out 2s infinite, eb-glow 7s ease-in-out 2s infinite}
.eb-4{animation:eb-drift 5.5s ease-in-out .5s infinite, eb-glow 5.5s ease-in-out .5s infinite}
.eb-5{animation:eb-drift 8s ease-in-out 3s infinite, eb-glow 8s ease-in-out 3s infinite}
.eb-6{animation:eb-drift 6.5s ease-in-out 1.5s infinite, eb-glow 6.5s ease-in-out 1.5s infinite}
.eb-7{animation:eb-drift 7.5s ease-in-out 2.5s infinite, eb-glow 7.5s ease-in-out 2.5s infinite}
.eb-8{animation:eb-drift 5.8s ease-in-out .8s infinite, eb-glow 5.8s ease-in-out .8s infinite}

.easter-foot{position:absolute;top:clamp(110px,15vw,155px);left:50%;transform:translateX(-50%);text-align:center}
.easter-foot-time{
    display:block;font-size:clamp(.9rem,2.5vw,1.3rem);font-weight:800;
    letter-spacing:-.02em;font-variant-numeric:tabular-nums;
    background:linear-gradient(135deg,rgba(228,155,50,.25),rgba(240,192,96,.2));
    -webkit-background-clip:text;-webkit-text-fill-color:transparent;
    background-clip:text;
}
.info-bar{
    position:absolute;bottom:clamp(10px,1.5vw,20px);left:50%;transform:translateX(-50%);z-index:4;
    display:flex;align-items:stretch;
    pointer-events:none;
    padding:clamp(8px,1vw,14px) clamp(10px,1.1vw,16px);border-radius:clamp(10px,1vw,14px);
    background:rgba(6,6,10,.6);
    border:1px solid rgba(255,255,255,.05);
    backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
}
.ib-section{display:flex;flex-direction:column;gap:clamp(3px,.4vw,5px)}
.ib-label{
    font-size:clamp(.52rem,.7vw,.7rem);font-weight:800;letter-spacing:-.02em;
    color:rgba(255,255,255,.18);padding:0 2px 1px;
}
.ib-items{display:flex;flex-direction:column;gap:clamp(2px,.3vw,4px)}
.ib-divider{
    width:1px;align-self:stretch;flex-shrink:0;margin:0 clamp(8px,1vw,14px);
    background:linear-gradient(180deg,transparent,rgba(255,255,255,.06),transparent);
}
.ib-item{
    display:flex;align-items:center;gap:clamp(4px,.5vw,7px);
    padding:clamp(3px,.4vw,5px) clamp(6px,.7vw,10px);border-radius:6px;
    background:rgba(255,255,255,.025);
    border:1px solid rgba(255,255,255,.04);
    white-space:nowrap;
}
.ib-item.has-grad{
    background:linear-gradient(135deg,
        color-mix(in srgb,var(--g1) 14%,#0d0d15),
        color-mix(in srgb,var(--g2) 8%,#0a0a14));
}
.ib-item.has-grad::after{display:none}
.ib-item.has-grad.lb-on,.ib-item.has-grad.lb-best{
    background:linear-gradient(135deg,
        color-mix(in srgb,var(--g1) 24%,#0d0d15),
        color-mix(in srgb,var(--g2) 16%,#0a0a14));
}
.ib-icon{width:clamp(14px,1.4vw,20px);height:clamp(14px,1.4vw,20px);object-fit:contain;flex-shrink:0}
.ib-name{font-size:clamp(.56rem,.7vw,.75rem);font-weight:700;color:rgba(255,255,255,.32);letter-spacing:-.01em}
.ib-val{font-size:clamp(.5rem,.6vw,.66rem);font-weight:800;color:rgba(255,255,255,.18);font-variant-numeric:tabular-nums}

.ib-aura{
    border-color:color-mix(in srgb,var(--rc) 14%,transparent);
    background:linear-gradient(135deg,color-mix(in srgb,var(--rc) 5%,transparent),transparent);
    box-shadow:0 0 12px color-mix(in srgb,var(--rc) 6%,transparent),
               inset 0 0 8px color-mix(in srgb,var(--rc) 3%,transparent);
}
.ib-aura .ib-icon{
    filter:drop-shadow(0 0 4px color-mix(in srgb,var(--rc) 35%,transparent))
           drop-shadow(0 0 8px color-mix(in srgb,var(--rc) 15%,transparent));
}

.ib-mobile-only{display:none}
.lb-off{opacity:.3}
.lb-off .ib-icon{filter:grayscale(1)}
.lb-off .ib-name{color:rgba(255,255,255,.1)}
.lb-off .ib-val{color:rgba(255,255,255,.06)!important}
.lb-on{
    border-color:color-mix(in srgb,var(--rc) 10%,transparent);
    background:color-mix(in srgb,var(--rc) 3%,transparent);
}
.lb-on .ib-icon{filter:drop-shadow(0 0 3px color-mix(in srgb,var(--rc) 35%,transparent))}
.lb-on .ib-name{color:rgba(255,255,255,.4)}
.lb-best{
    border-color:color-mix(in srgb,var(--rc) 18%,transparent);
    background:color-mix(in srgb,var(--rc) 6%,transparent);
    box-shadow:0 0 14px color-mix(in srgb,var(--rc) 7%,transparent);
}
.lb-best .ib-icon{
    filter:drop-shadow(0 0 5px var(--rc)) drop-shadow(0 0 10px color-mix(in srgb,var(--rc) 40%,transparent));
}
.lb-best .ib-name{color:rgba(255,255,255,.5)}

/* ========== Leaderboard ========== */
.lb-panel{
    position:absolute;left:clamp(10px,1.5vw,20px);top:50%;transform:translateY(-50%);z-index:4;
    display:flex;flex-direction:column;gap:clamp(3px,.35vw,5px);
    padding:clamp(8px,1vw,14px) clamp(10px,1.1vw,16px);border-radius:clamp(10px,1vw,14px);
    background:rgba(6,6,10,.6);
    border:1px solid rgba(255,255,255,.05);
    backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
    pointer-events:none;
}
.lb-title{
    font-size:clamp(.52rem,.7vw,.7rem);font-weight:800;letter-spacing:-.02em;
    color:rgba(255,255,255,.18);padding:0 2px 2px;
}
.lb-entry{
    display:flex;align-items:center;gap:clamp(5px,.6vw,8px);
    padding:clamp(3px,.35vw,5px) clamp(4px,.5vw,6px);border-radius:5px;white-space:nowrap;
}
.lb-pos{
    font-size:clamp(.5rem,.6vw,.66rem);font-weight:800;width:clamp(10px,1.2vw,16px);text-align:right;flex-shrink:0;
    color:rgba(255,255,255,.14);font-variant-numeric:tabular-nums;
}
.lb-avatar{
    width:clamp(16px,1.6vw,22px);height:clamp(16px,1.6vw,22px);border-radius:50%;object-fit:cover;flex-shrink:0;
    border:1px solid rgba(255,255,255,.06);
}
.lb-user{
    font-size:clamp(.56rem,.7vw,.75rem);font-weight:600;color:rgba(255,255,255,.25);
    max-width:clamp(60px,8vw,100px);overflow:hidden;text-overflow:ellipsis;
}
.lb-count{
    font-size:clamp(.5rem,.6vw,.66rem);font-weight:800;color:rgba(255,255,255,.14);
    font-variant-numeric:tabular-nums;margin-left:auto;flex-shrink:0;
}
.lb-r1{background:linear-gradient(90deg,rgba(255,215,0,.06),transparent);border-radius:5px}
.lb-r1 .lb-pos{color:rgba(255,215,0,.5)}
.lb-r1 .lb-avatar{border-color:rgba(255,215,0,.2);box-shadow:0 0 6px rgba(255,215,0,.1)}
.lb-r1 .lb-user{color:rgba(255,215,0,.4)}
.lb-r1 .lb-count{color:rgba(255,215,0,.25)}
.lb-rewards{display:flex;flex-direction:column;gap:3px;padding:0 2px}
.lb-reward{
    display:flex;align-items:center;gap:5px;
    padding:3px 6px;border-radius:5px;
}
.lb-reward-icon{width:clamp(14px,1.4vw,20px);height:clamp(14px,1.4vw,20px);object-fit:contain;flex-shrink:0}
.lb-reward-name{font-size:clamp(.52rem,.65vw,.7rem);font-weight:700;color:rgba(255,255,255,.28)}
.lb-reward-tag{font-size:clamp(.46rem,.55vw,.6rem);font-weight:800;margin-left:auto;flex-shrink:0}
.lb-reward-champ{
    background:linear-gradient(90deg,rgba(255,215,0,.06),transparent);
    border:1px solid rgba(255,215,0,.08);
}
.lb-reward-champ .lb-reward-name{color:rgba(255,215,0,.4)}
.lb-reward-champ .lb-reward-tag{color:rgba(255,215,0,.3)}
.lb-reward-champ .lb-reward-icon{filter:drop-shadow(0 0 3px rgba(255,215,0,.2))}
.lb-reward-trophy{
    background:linear-gradient(90deg,rgba(200,200,220,.04),transparent);
    border:1px solid rgba(200,200,220,.06);
}
.lb-reward-trophy .lb-reward-name{color:rgba(200,200,220,.3)}
.lb-reward-trophy .lb-reward-tag{color:rgba(200,200,220,.22)}
.lb-reward-trophy .lb-reward-icon{filter:drop-shadow(0 0 3px rgba(200,200,220,.15))}
.lb-sep{height:1px;margin:3px 2px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent)}

/* ========== Win Floats ========== */
.wf-floats{
    position:absolute;right:clamp(8px,1.2vw,16px);top:0;bottom:0;
    width:clamp(44px,4.5vw,58px);
    overflow:visible;pointer-events:none;z-index:3;
    -webkit-mask-image:linear-gradient(to bottom,transparent 0%,black 12%,black 88%,transparent 100%);
    mask-image:linear-gradient(to bottom,transparent 0%,black 12%,black 88%,transparent 100%);
}
.wf-track{
    display:flex;flex-direction:column;gap:clamp(10px,1.2vw,16px);
    animation:wf-scroll linear infinite;
    overflow:hidden;
}
.wf-bubble{
    display:flex;flex-direction:column;align-items:center;gap:3px;
    flex-shrink:0;pointer-events:all;cursor:default;position:relative;
}
.wf-bubble:hover .wf-bubble-avatar{
    border-color:color-mix(in srgb, var(--rc) 80%, transparent);
    box-shadow:0 0 16px color-mix(in srgb, var(--rc) 40%, transparent);
    transform:scale(1.08);
    transition:all .18s ease;
}
.wf-tooltip{
    position:absolute;right:calc(100% + 10px);top:50%;transform:translateY(-50%);
    background:rgba(8,8,14,.92);border:1px solid rgba(255,255,255,.08);
    backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
    border-radius:8px;padding:7px 10px;white-space:nowrap;
    pointer-events:none;
    opacity:0;transform:translateY(-50%) translateX(4px);
    transition:opacity .15s ease, transform .15s ease;
    z-index:10;
}
.wf-bubble:hover .wf-tooltip{opacity:1;transform:translateY(-50%) translateX(0)}
.wf-tt-name{font-size:.62rem;font-weight:700;color:rgba(255,255,255,.85);display:block;margin-bottom:2px}
.wf-tt-role{font-size:.56rem;font-weight:700;color:color-mix(in srgb, var(--rc) 70%, white);display:block;margin-bottom:2px}
.wf-tt-time{font-size:.52rem;color:rgba(255,255,255,.3);display:block}
.wf-bubble-inner{position:relative;width:clamp(32px,3.2vw,44px);height:clamp(32px,3.2vw,44px)}
.wf-bubble-avatar{
    width:100%;height:100%;border-radius:50%;object-fit:cover;
    border:2px solid color-mix(in srgb, var(--rc) 35%, transparent);
    box-shadow:0 0 10px color-mix(in srgb, var(--rc) 18%, transparent);
}
.wf-bubble-role{
    position:absolute;bottom:-3px;right:-3px;
    width:clamp(13px,1.3vw,17px);height:clamp(13px,1.3vw,17px);
    border-radius:50%;object-fit:cover;
    border:1.5px solid rgba(8,8,12,.9);
    background:rgba(8,8,12,.7);
    filter:drop-shadow(0 0 3px var(--rc));
}
.wf-bubble-name{
    font-size:clamp(.38rem,.42vw,.48rem);font-weight:700;
    color:rgba(255,255,255,.13);white-space:nowrap;
    max-width:clamp(36px,3.8vw,50px);overflow:hidden;text-overflow:ellipsis;
    text-align:center;
}
@keyframes wf-scroll{from{transform:translateY(0)}to{transform:translateY(-50%)}}
.afk-active .wf-floats{display:none}
@media(max-width:900px){.wf-floats{display:none}}

/* ========== Event Ended ========== */
/* ========== Event Ended Screen ========== */
.ee-page{
    display:flex;flex-direction:column;align-items:center;justify-content:flex-start;
    gap:clamp(10px,1.4vw,18px);overflow-y:auto;position:relative;
    padding:clamp(16px,3vh,36px) 16px clamp(16px,2vh,24px);
    height:calc(100vh - 44px);box-sizing:border-box;
}
.ee-bg-glow{
    position:absolute;top:0;left:50%;transform:translateX(-50%);
    width:600px;height:220px;pointer-events:none;z-index:0;
    background:radial-gradient(ellipse at 50% 0%,rgba(228,155,50,.1) 0%,transparent 70%);
}
.ee-hero{
    display:flex;align-items:center;gap:clamp(8px,1vw,14px);z-index:1;
}
.ee-prize-icon{
    width:clamp(38px,4vw,54px);height:clamp(38px,4vw,54px);object-fit:contain;
    filter:drop-shadow(0 0 14px rgba(228,155,50,.5));
}
.ee-title-wrap{display:flex;flex-direction:column;gap:3px}
.ee-title{
    font-size:clamp(1.8rem,3.5vw,3rem);font-weight:900;letter-spacing:3px;line-height:1;
    background:linear-gradient(120deg,#e49b32 0%,#ffffff 50%,#f0c060 100%);
    -webkit-background-clip:text;-webkit-text-fill-color:transparent;
}
.ee-ended-pill{
    display:inline-block;font-size:clamp(.48rem,.55vw,.6rem);font-weight:800;letter-spacing:2px;
    color:rgba(255,255,255,.3);background:rgba(255,255,255,.05);
    border:1px solid rgba(255,255,255,.07);border-radius:20px;
    padding:2px 8px;width:fit-content;
}
.ee-rewards-row{
    display:flex;gap:8px;z-index:1;flex-wrap:wrap;justify-content:center;
}
.ee-reward-chip{
    display:flex;align-items:center;gap:6px;
    padding:6px 12px;border-radius:20px;font-size:clamp(.54rem,.65vw,.7rem);font-weight:700;
}
.ee-reward-chip img{width:16px;height:16px;object-fit:contain}
.ee-reward-tag{font-size:.52rem;font-weight:800;opacity:.6;margin-left:4px}
.ee-reward-champ{
    background:rgba(255,200,50,.06);border:1px solid rgba(255,200,50,.15);
    color:rgba(255,210,80,.8);
}
.ee-reward-trophy{
    background:rgba(160,160,200,.05);border:1px solid rgba(160,160,200,.12);
    color:rgba(180,180,210,.6);
}
.ee-lb-label{
    font-size:clamp(.58rem,.68vw,.72rem);font-weight:800;letter-spacing:2px;
    color:rgba(255,255,255,.18);text-transform:uppercase;z-index:1;
}
.ee-lb{
    width:clamp(280px,32vw,460px);z-index:1;
    display:flex;flex-direction:column;gap:2px;
}
.ee-row{
    display:flex;align-items:center;gap:clamp(5px,.6vw,9px);
    padding:clamp(4px,.45vw,6px) clamp(7px,.8vw,11px);
    border-radius:7px;background:rgba(255,255,255,.025);
    border:1px solid transparent;transition:background .15s;
}
.ee-row:hover{background:rgba(255,255,255,.04)}
.ee-row-champ{
    background:rgba(255,200,50,.05);border-color:rgba(255,200,50,.1);
}
.ee-rank{
    font-size:clamp(.58rem,.7vw,.75rem);font-weight:800;color:rgba(255,255,255,.2);
    width:16px;text-align:right;flex-shrink:0;
}
.ee-row-champ .ee-rank{color:rgba(255,200,80,.5)}
.ee-avatar{
    width:clamp(22px,2.2vw,28px);height:clamp(22px,2.2vw,28px);
    border-radius:50%;object-fit:cover;flex-shrink:0;
    border:1px solid rgba(255,255,255,.08);
}
.ee-row-champ .ee-avatar{border-color:rgba(255,200,50,.25)}
.ee-name{
    font-size:clamp(.62rem,.75vw,.8rem);font-weight:700;color:rgba(255,255,255,.75);
    flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.ee-row-champ .ee-name{color:rgba(255,220,100,.9)}
.ee-rolls{
    font-size:clamp(.52rem,.62vw,.66rem);font-weight:600;color:rgba(255,255,255,.2);
    flex-shrink:0;
}
.ee-crown,.ee-tcrown{
    width:clamp(14px,1.4vw,18px);height:clamp(14px,1.4vw,18px);
    object-fit:contain;flex-shrink:0;opacity:.7;
}
.ee-row-champ .ee-crown{filter:drop-shadow(0 0 4px rgba(255,200,50,.4));opacity:1}

/* ========== Live Rollers ========== */
.live-page{max-width:900px;margin:0 auto;padding:24px 16px}
.live-status{font-size:.8rem;font-weight:600;letter-spacing:1px;margin-bottom:16px;padding:6px 14px;border-radius:8px;display:inline-block}
.live-active{color:#4ade80;background:rgba(74,222,128,.06);border:1px solid rgba(74,222,128,.1)}
.live-empty{color:rgba(255,255,255,.3);background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.05)}
.live-grid{display:flex;flex-direction:column;gap:10px}
.lr-card{background:rgba(20,20,30,.7);border:1px solid rgba(255,255,255,.06);border-radius:12px;padding:14px 16px;backdrop-filter:blur(8px);transition:border-color .3s,box-shadow .3s}
.lr-fastest{border-color:rgba(74,222,128,.2);box-shadow:0 0 20px rgba(74,222,128,.06)}
.lr-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.lr-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover}
.lr-info{display:flex;flex-direction:column}
.lr-name{font-size:.85rem;font-weight:700;color:#fff}
.lr-id{font-size:.65rem;color:rgba(255,255,255,.25);font-family:monospace}
.lr-crown{font-size:.6rem;font-weight:800;color:#4ade80;background:rgba(74,222,128,.1);border:1px solid rgba(74,222,128,.15);padding:2px 8px;border-radius:4px;margin-left:auto;letter-spacing:.5px}
.lr-flag{font-size:.6rem;font-weight:800;color:#ff4466;background:rgba(255,68,102,.1);border:1px solid rgba(255,68,102,.15);padding:2px 8px;border-radius:4px;margin-left:auto;letter-spacing:.5px}
.lr-stats{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
.lr-stat{display:flex;flex-direction:column;align-items:center;padding:6px 4px;background:rgba(255,255,255,.02);border-radius:6px}
.lr-label{font-size:.55rem;font-weight:600;color:rgba(255,255,255,.3);letter-spacing:.5px;text-transform:uppercase}
.lr-val{font-size:.85rem;font-weight:700;color:#fff}
.lr-pace{color:#4ade80}
.lr-delta{font-size:.65rem;color:rgba(255,255,255,.35);margin-top:6px;text-align:right}
.lr-bar{height:3px;background:rgba(255,255,255,.04);border-radius:2px;margin-top:8px;overflow:hidden}
.lr-bar-fill{height:100%;background:linear-gradient(90deg,#4ade80,#22d3ee);border-radius:2px;transition:width .5s}
@media(max-width:600px){
    .lr-stats{grid-template-columns:repeat(3,1fr)}
}

/* ========== Recent Winners ========== */
.rw-panel{
    position:absolute;right:16px;top:50%;transform:translateY(-50%);z-index:4;
    display:flex;flex-direction:column;gap:3px;
    padding:10px 12px;border-radius:12px;
    background:rgba(6,6,10,.6);
    border:1px solid rgba(255,255,255,.05);
    backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
    pointer-events:none;
}
.rw-title{
    font-size:.54rem;font-weight:800;letter-spacing:-.02em;
    color:rgba(255,255,255,.15);padding:0 2px 2px;
}
.rw-entry{
    display:flex;align-items:center;gap:6px;
    padding:3px 4px;border-radius:5px;white-space:nowrap;
}
.rw-avatar{
    width:16px;height:16px;border-radius:50%;object-fit:cover;flex-shrink:0;
    border:1px solid rgba(255,255,255,.06);
}
.rw-user{
    font-size:.58rem;font-weight:600;color:rgba(255,255,255,.22);
    max-width:72px;overflow:hidden;text-overflow:ellipsis;
}
.rw-role{
    font-size:.48rem;font-weight:800;color:rgba(228,155,50,.3);
    margin-left:auto;flex-shrink:0;
}
.rw-time{
    font-size:.42rem;font-weight:700;color:rgba(255,255,255,.1);
    flex-shrink:0;min-width:28px;text-align:right;
}

/* ========== Mobile ========== */
@media(max-width:600px){
    .topbar{padding:0 12px;justify-content:flex-end}
    .nav-toggle{display:inline-flex}
    .nav-tabs{
        display:none;flex-direction:column;gap:2px;
        position:absolute;top:calc(100% + 6px);left:8px;
        min-width:170px;padding:8px;
        background:rgba(14,14,22,.96);
        border:1px solid rgba(255,255,255,.08);
        border-radius:12px;
        box-shadow:0 18px 36px -12px rgba(0,0,0,.7),0 0 0 1px rgba(255,255,255,.02);
        backdrop-filter:blur(14px);
        z-index:100;
    }
    .nav-tabs.open{display:flex;animation:nav-stack-in .2s cubic-bezier(.2,.7,.2,1)}
    .nav-tab{
        padding:9px 14px;font-size:.84rem;text-align:left;border-radius:7px;
        color:rgba(255,255,255,.55);
    }
    .nav-tab:hover{background:rgba(255,255,255,.04);color:#fff}
    .nav-tab.active{background:rgba(254,74,120,.12);color:#fff}
    @keyframes nav-stack-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}

    .roll-page{padding:20px 12px}
    .hero-img{width:160px;height:160px}
    .hero-glow{width:160px;height:160px}
    .hero-ring{width:190px;height:190px}
    .roll-page.easter-active .roll-hero{margin-top:16px;margin-bottom:8px}
    .trade-page{padding:28px 16px}
    .t-big-link{font-size:1.4rem}
    .t-heading{font-size:1.3rem}
    .easter-word{top:20px;font-size:clamp(2.4rem,10vw,4rem)}
    .easter-foot{top:clamp(56px,11vw,80px)}
    .easter-foot-time{font-size:clamp(.6rem,2vw,.8rem)}
    .easter-bunny{transform:scale(.5)!important}
    .roll-admin{top:6px;right:8px;gap:3px}
    .roll-admin button{padding:2px 6px;font-size:.5rem}
    .lb-panel{display:none}
    .rw-panel{display:none}
    .info-bar{display:none}

    /* ----- Cases (mobile) ----- */
    .cs-page{padding:24px 14px 60px}
    .cs-page-head{margin-bottom:18px}
    .cs-grid{grid-template-columns:1fr;gap:14px}
    .cs-card{padding:14px}
    .cs-card-open{padding:12px 14px}
    .cs-card-open-label{font-size:.9rem}
    .cs-card-open-price{font-size:.9rem}
    .cs-showcase{height:64px}
    .cs-show-tile{flex:0 0 56px;height:56px}

    /* Case opening overlay */
    .cs-stage{padding:14px 10px;gap:14px}
    .cs-reel-frame{height:160px;border-radius:14px}
    .cs-reel-track{gap:6px;padding:0 6px}
    .cs-tile{flex:0 0 130px;height:130px;border-radius:11px;gap:8px}
    .cs-tile img{width:54px;height:54px}
    .cs-tile-dot{width:36px;height:36px}
    .cs-tile-name{font-size:.65rem;max-width:108px}
    /* Winning tile shows the full role name (may wrap to 2 lines) so the
       user can actually read what they won before the result modal opens. */
    .cs-tile.cs-tile-win .cs-tile-name{
        white-space:normal;line-height:1.15;max-width:118px;
        font-size:.7rem;font-weight:800;
        display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
        overflow:hidden;
    }
    /* Marker stays full-size on mobile and gets a thicker, brighter line so
       it's clearly visible against the small tile. */
    .cs-reel-marker{width:4px}
    .cs-reel-marker::before{border-left-width:8px;border-right-width:8px;border-top-width:11px}
    .cs-reel-marker::after{border-left-width:8px;border-right-width:8px;border-bottom-width:11px}
    .cs-confetti{transform:scale(.8)}
}

/* ========== MAFIA ========== */

/* --- foundation --- */
.mf{position:relative;min-height:calc(100vh - 44px);overflow:hidden;isolation:isolate}
.mf-bg{position:fixed;inset:0;z-index:-2;pointer-events:none;transition:background 1.4s ease,opacity 1s}
.mf-game{position:relative;z-index:1;max-width:540px;margin:0 auto;padding:24px 20px 60px}
.mf-lower{position:relative;z-index:1;max-width:540px;margin:0 auto;padding:0 20px 60px}
.mf-load{display:flex;align-items:center;justify-content:center;height:calc(100vh - 44px)}
.mf-spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.06);border-top-color:rgba(255,255,255,.3);border-radius:50%;animation:mfSpin .5s linear infinite}
@keyframes mfSpin{to{transform:rotate(360deg)}}

/* --- particles --- */
.mf-particles{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.mf-particle{position:absolute;bottom:-10px;background:rgba(255,255,255,.5);border-radius:50%;animation:mfFloat linear infinite}
@keyframes mfFloat{0%{transform:translateY(0) scale(1);opacity:var(--o,.04)}50%{opacity:calc(var(--o,.04)*1.5)}100%{transform:translateY(calc(-100vh - 20px)) scale(.3);opacity:0}}

/* --- phase backgrounds --- */
.mf--idle .mf-bg{background:radial-gradient(ellipse at 50% 60%,rgba(200,40,80,.06),transparent 55%)}
.mf--lobby .mf-bg{background:radial-gradient(ellipse at 50% 50%,rgba(255,200,60,.04),transparent 50%)}
.mf--night .mf-bg{background:
    radial-gradient(ellipse at 20% 15%,rgba(50,20,100,.25),transparent 45%),
    radial-gradient(ellipse at 80% 80%,rgba(30,10,80,.2),transparent 40%),
    linear-gradient(180deg,rgba(0,0,0,.4) 0%,rgba(10,5,30,.15) 50%,transparent 100%)}
.mf--day .mf-bg,.mf--voting .mf-bg{background:
    radial-gradient(ellipse at 50% 10%,rgba(245,180,60,.08),transparent 45%),
    radial-gradient(ellipse at 50% 90%,rgba(200,100,40,.04),transparent 40%)}
.mf--gameover .mf-bg{background:radial-gradient(ellipse at 50% 50%,rgba(200,30,60,.08),transparent 50%)}
.mf--transition .mf-bg{animation:mfPhaseFlash .8s ease}
@keyframes mfPhaseFlash{0%{filter:brightness(2.5) saturate(2);opacity:.3}100%{filter:brightness(1) saturate(1);opacity:1}}

/* --- night overlay on tokens --- */
.mf--night .mf-table{position:relative}
.mf--night .mf-table::before{
    content:'';position:absolute;inset:-12px;z-index:0;pointer-events:none;
    background:radial-gradient(ellipse at 50% 30%,transparent 30%,rgba(10,5,30,.25) 100%);
    border-radius:16px;
}

/* --- splash screen (idle) --- */
.mf-splash{
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    min-height:calc(100vh - 120px);text-align:center;position:relative;z-index:1;
}
.mf-splash-icon{width:48px;height:48px;color:rgba(255,255,255,.12);margin-bottom:24px;animation:mfPulseIcon 3s ease-in-out infinite}
.mf-splash-icon svg{width:100%;height:100%}
@keyframes mfPulseIcon{0%,100%{opacity:.12;transform:scale(1)}50%{opacity:.25;transform:scale(1.05)}}
.mf-splash-title{
    font-size:3.2rem;font-weight:900;letter-spacing:.16em;
    color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.15);
    margin-bottom:8px;
}
.mf-splash-sub{font-size:.68rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.2);margin-bottom:36px}
.mf-splash-wait{font-size:.72rem;color:rgba(255,255,255,.18);letter-spacing:.06em}

/* --- action button --- */
.mf-action{
    padding:10px 32px;border-radius:6px;font-size:.7rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;
    background:transparent;border:1px solid rgba(255,255,255,.12);color:rgba(255,255,255,.6);
    cursor:pointer;transition:all .25s ease;position:relative;overflow:hidden;
}
.mf-action::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.04),transparent);opacity:0;transition:opacity .25s}
.mf-action:hover{border-color:rgba(255,255,255,.25);color:rgba(255,255,255,.9);transform:translateY(-1px);box-shadow:0 4px 20px rgba(0,0,0,.3)}
.mf-action:hover::before{opacity:1}
.mf-action:active{transform:translateY(0);box-shadow:none}
.mf-action--dim{opacity:.4}.mf-action--dim:hover{opacity:.7}
.mf-action--pulse{animation:mfBtnPulse 2s ease-in-out infinite}
@keyframes mfBtnPulse{0%,100%{box-shadow:0 0 0 0 rgba(255,255,255,.05)}50%{box-shadow:0 0 0 8px rgba(255,255,255,0)}}

/* --- HUD --- */
.mf-hud{display:flex;align-items:center;gap:12px;margin-bottom:24px}
.mf-hud-phase{display:flex;align-items:center;gap:8px}
.mf-hud-icon{width:18px;height:18px;color:rgba(255,255,255,.2);transition:color .4s}
.mf-hud-icon svg{width:100%;height:100%}
.mf-hud-icon--night{color:rgba(160,130,255,.5)}
.mf-hud-icon--day,.mf-hud-icon--voting{color:rgba(245,180,60,.5)}
.mf-hud-icon--gameover{color:rgba(255,80,80,.5)}
.mf-hud-label{font-size:.65rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.35)}
.mf-hud-stats{display:flex;gap:8px;margin-left:auto}
.mf-hud-alive,.mf-hud-dead{
    font-size:.6rem;font-weight:700;letter-spacing:.06em;
    padding:3px 8px;border-radius:4px;font-variant-numeric:tabular-nums;
}
.mf-hud-alive{background:rgba(255,255,255,.04);color:rgba(255,255,255,.3)}
.mf-hud-dead{background:rgba(255,60,80,.06);color:rgba(255,80,80,.4)}

/* --- timer ring --- */
.mf-timer{position:relative;width:44px;height:44px;flex-shrink:0;margin-left:4px}
.mf-timer-ring{width:100%;height:100%}
.mf-timer-arc{color:rgba(255,255,255,.18);transition:stroke-dashoffset .3s linear,color .4s}
.mf-timer-num{
    position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
    font-size:.72rem;font-weight:800;color:rgba(255,255,255,.4);font-variant-numeric:tabular-nums;
    transition:color .3s;
}
.mf-timer--urgent .mf-timer-arc{color:#ff4466}
.mf-timer--urgent .mf-timer-num{color:#ff4466;animation:mfTimerPulse 1s ease-in-out infinite}
@keyframes mfTimerPulse{0%,100%{opacity:1}50%{opacity:.5}}

/* --- briefing card (role) --- */
.mf-brief{
    display:flex;align-items:center;gap:16px;padding:18px 22px;border-radius:12px;
    margin-bottom:20px;position:relative;overflow:hidden;
    background:rgba(255,255,255,.015);
    border:1px solid rgba(255,255,255,.04);
    animation:mfBriefIn .6s cubic-bezier(.16,1,.3,1) both;
}
@keyframes mfBriefIn{0%{opacity:0;transform:translateY(16px) scale(.96)}100%{opacity:1;transform:translateY(0) scale(1)}}
.mf-brief-edge{display:none}
.mf-brief::before{
    content:'';position:absolute;inset:0;opacity:.06;pointer-events:none;
    border-radius:12px;
}
.mf-brief--mafia::before{background:radial-gradient(ellipse at 10% 50%,rgba(255,50,50,.8),transparent 60%)}
.mf-brief--sheriff::before{background:radial-gradient(ellipse at 10% 50%,rgba(80,120,255,.7),transparent 60%)}
.mf-brief--doctor::before{background:radial-gradient(ellipse at 10% 50%,rgba(0,200,120,.7),transparent 60%)}
.mf-brief--innocent::before{background:radial-gradient(ellipse at 10% 50%,rgba(255,255,255,.15),transparent 60%)}
.mf-brief--mafia{border-color:rgba(255,50,50,.1)}
.mf-brief--sheriff{border-color:rgba(80,120,255,.1)}
.mf-brief--doctor{border-color:rgba(0,200,120,.08)}
.mf-brief--dead{opacity:.35}
.mf-brief-icon{width:32px;height:32px;flex-shrink:0;opacity:.6}
.mf-brief-icon svg{width:100%;height:100%}
.mf-brief--mafia .mf-brief-icon{color:#ff4444;filter:drop-shadow(0 0 8px rgba(255,50,50,.25))}
.mf-brief--sheriff .mf-brief-icon{color:#6688ff;filter:drop-shadow(0 0 8px rgba(80,120,255,.2))}
.mf-brief--doctor .mf-brief-icon{color:#00dd88;filter:drop-shadow(0 0 8px rgba(0,200,100,.2))}
.mf-brief--innocent .mf-brief-icon{color:rgba(255,255,255,.25)}
.mf-brief--dead .mf-brief-icon{color:rgba(255,255,255,.15);filter:none}
.mf-brief-body{min-width:0;flex:1}
.mf-brief-title{font-size:.82rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.65)}
.mf-brief--mafia .mf-brief-title{color:rgba(255,100,100,.8)}
.mf-brief--sheriff .mf-brief-title{color:rgba(120,150,255,.8)}
.mf-brief--doctor .mf-brief-title{color:rgba(0,220,130,.7)}
.mf-brief-msg{font-size:.68rem;color:rgba(255,255,255,.22);margin-top:3px;letter-spacing:.02em}

/* intel result */
.mf-intel{
    display:flex;align-items:center;gap:8px;margin-top:10px;padding:8px 14px;border-radius:8px;
    font-size:.68rem;font-weight:700;letter-spacing:.04em;
    animation:mfBriefIn .5s cubic-bezier(.16,1,.3,1) both;animation-delay:.2s;
}
.mf-intel-icon{width:15px;height:15px;flex-shrink:0}.mf-intel-icon svg{width:100%;height:100%}
.mf-intel--threat{background:rgba(255,50,50,.06);border:1px solid rgba(255,50,50,.1);color:#ff5555}
.mf-intel--clear{background:rgba(0,200,100,.04);border:1px solid rgba(0,200,100,.08);color:#00dd88}

/* --- lobby --- */
.mf-lobby{text-align:center;padding:16px 0 20px}
.mf-lobby-bar{
    width:100%;height:3px;background:rgba(255,255,255,.04);border-radius:3px;overflow:hidden;margin-bottom:14px;
}
.mf-lobby-fill{height:100%;background:linear-gradient(90deg,rgba(255,255,255,.1),rgba(255,255,255,.2));border-radius:3px;transition:width .4s ease}
.mf-lobby-info{margin-bottom:18px}
.mf-lobby-count{font-size:2.2rem;font-weight:900;letter-spacing:-.02em;color:rgba(255,255,255,.7);display:block}
.mf-lobby-label{font-size:.65rem;color:rgba(255,255,255,.2);letter-spacing:.1em;text-transform:uppercase;margin-top:2px}
.mf-lobby-actions{display:flex;gap:8px;justify-content:center}

/* --- events (day) --- */
.mf-event{
    display:flex;align-items:center;gap:14px;padding:16px 20px;border-radius:12px;
    margin-bottom:20px;position:relative;overflow:hidden;
    animation:mfEventIn .7s cubic-bezier(.16,1,.3,1) both;
}
@keyframes mfEventIn{0%{opacity:0;transform:scale(.94)}100%{opacity:1;transform:scale(1)}}
.mf-event-stripe{display:none}
.mf-event--kill{background:rgba(255,40,60,.03);border:1px solid rgba(255,40,60,.08)}
.mf-event--kill::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 0% 50%,rgba(255,40,50,.08),transparent 50%);pointer-events:none}
.mf-event--save{background:rgba(0,200,100,.02);border:1px solid rgba(0,200,100,.06)}
.mf-event--save::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 0% 50%,rgba(0,200,100,.06),transparent 50%);pointer-events:none}
.mf-event-icon{width:24px;height:24px;flex-shrink:0;position:relative;z-index:1}
.mf-event-icon svg{width:100%;height:100%}
.mf-event--kill .mf-event-icon{color:rgba(255,60,70,.55);filter:drop-shadow(0 0 6px rgba(255,50,50,.2))}
.mf-event--save .mf-event-icon{color:rgba(0,200,100,.45);filter:drop-shadow(0 0 6px rgba(0,200,100,.15))}
.mf-event-body{font-size:.76rem;color:rgba(255,255,255,.45);line-height:1.5;position:relative;z-index:1}
.mf-event-body b{color:rgba(255,255,255,.7);font-weight:700}
.mf-event-sub{display:block;font-size:.62rem;color:rgba(255,255,255,.18);margin-top:2px;letter-spacing:.04em}

/* --- role label --- */
.mf-role{font-size:.55rem;font-weight:700;letter-spacing:.05em;padding:2px 7px;border-radius:3px;text-transform:uppercase}
.mf-role--mafia{background:rgba(255,50,50,.1);color:rgba(255,80,80,.7)}
.mf-role--sheriff{background:rgba(80,120,255,.1);color:rgba(100,140,255,.7)}
.mf-role--doctor{background:rgba(0,200,100,.08);color:rgba(0,220,120,.6)}
.mf-role--innocent{background:rgba(255,255,255,.04);color:rgba(255,255,255,.25)}
.mf-role--{background:none;color:rgba(255,255,255,.15)}

/* --- game over --- */
.mf-end{text-align:center;padding:30px 0}
.mf-end-title{
    font-size:2.2rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase;
    margin-bottom:6px;animation:mfEndTitle 1s cubic-bezier(.16,1,.3,1) both;
}
@keyframes mfEndTitle{0%{opacity:0;transform:scale(.7) translateY(20px);filter:blur(12px)}100%{opacity:1;transform:scale(1) translateY(0);filter:blur(0)}}
.mf-end-title--town{
    color:rgba(0,220,130,.8);
    text-shadow:0 0 60px rgba(0,200,100,.2),0 2px 20px rgba(0,200,100,.1);
}
.mf-end-title--mafia{
    color:rgba(255,60,60,.8);
    text-shadow:0 0 60px rgba(255,50,50,.2),0 2px 20px rgba(255,50,50,.1);
}
.mf-end-mafia{
    font-size:.72rem;color:rgba(255,255,255,.3);letter-spacing:.04em;margin-bottom:28px;
    animation:mfEndTitle .8s cubic-bezier(.16,1,.3,1) both;animation-delay:.15s;
}
.mf-end-grid{
    display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:10px;
    perspective:600px;
}
.mf-end-card{
    padding:18px 10px 14px;border-radius:10px;text-align:center;position:relative;overflow:hidden;
    background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.04);
    animation:mfRevealCard .6s cubic-bezier(.16,1,.3,1) both;
    backdrop-filter:blur(2px);
}
@keyframes mfRevealCard{
    0%{opacity:0;transform:perspective(600px) rotateY(80deg) scale(.85)}
    60%{opacity:.8;transform:perspective(600px) rotateY(-5deg) scale(1.02)}
    100%{opacity:1;transform:perspective(600px) rotateY(0deg) scale(1)}
}
.mf-end-card--mafia{border-color:rgba(255,50,50,.15)}
.mf-end-card--mafia::before{
    content:'';position:absolute;inset:0;pointer-events:none;
    background:radial-gradient(ellipse at 50% 30%,rgba(255,50,50,.08),transparent 60%);
}
.mf-end-card--dead{opacity:.45}
.mf-end-av{
    width:40px;height:40px;border-radius:50%;overflow:hidden;margin:0 auto 8px;
    border:2px solid rgba(255,255,255,.06);
}
.mf-end-card--mafia .mf-end-av{border-color:rgba(255,50,50,.25);box-shadow:0 0 12px rgba(255,50,50,.08)}
.mf-end-name{font-size:.7rem;font-weight:600;color:rgba(255,255,255,.55);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mf-end-role{font-size:.58rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin-bottom:2px}
.mf-end-role--mafia{color:rgba(255,80,80,.75)}
.mf-end-role--sheriff{color:rgba(100,140,255,.65)}
.mf-end-role--doctor{color:rgba(0,220,120,.55)}
.mf-end-role--innocent{color:rgba(255,255,255,.22)}
.mf-end-fate{font-size:.5rem;color:rgba(255,255,255,.12);letter-spacing:.06em;text-transform:uppercase;margin-top:2px}

/* --- player tokens (game board) --- */
.mf-table{margin-top:18px;position:relative;z-index:1}
.mf-table-hint{display:none}
.mf-table-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:10px}
.mf-table-grid--dead{opacity:.25;margin-top:4px}
.mf-table-dead-label{font-size:.55rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.08);margin:16px 0 8px}

.mf-token{
    position:relative;padding:18px 8px 14px;border-radius:10px;text-align:center;
    background:rgba(255,255,255,.015);
    border:1px solid rgba(255,255,255,.04);
    transition:all .25s cubic-bezier(.16,1,.3,1);
    cursor:default;
    backdrop-filter:blur(2px);
}
.mf-token--target{cursor:pointer}
.mf-token--target:hover{
    transform:translateY(-3px);
    border-color:rgba(255,255,255,.12);
    background:rgba(255,255,255,.03);
    box-shadow:0 8px 24px rgba(0,0,0,.25),0 0 0 1px rgba(255,255,255,.04);
}
.mf-token--target:active{transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.2)}

/* night: purple hover */
.mf--night .mf-token--target:hover{
    border-color:rgba(140,100,240,.2);background:rgba(100,60,200,.05);
    box-shadow:0 8px 24px rgba(60,20,120,.2),0 0 20px rgba(120,80,220,.06);
}
.mf--night .mf-token--target:hover .mf-token-av{box-shadow:0 0 12px rgba(120,80,220,.2)}

/* day/vote: warm hover */
.mf--day .mf-token--target:hover,.mf--voting .mf-token--target:hover{
    border-color:rgba(255,100,80,.15);background:rgba(255,80,60,.03);
    box-shadow:0 8px 24px rgba(120,20,10,.15);
}

/* voted state */
.mf-token--voted{border-color:rgba(255,60,80,.2);background:rgba(255,40,60,.04)}
.mf-token-voted-indicator{
    position:absolute;top:4px;right:4px;width:14px;height:14px;color:rgba(255,60,80,.5);
    animation:mfVoteSpin 4s linear infinite;
}
.mf-token-voted-indicator svg{width:100%;height:100%}
@keyframes mfVoteSpin{to{transform:rotate(360deg)}}
.mf-token-ring{position:absolute;inset:0;pointer-events:none}

.mf-token--self{border-color:rgba(255,255,255,.08)}
.mf-token--dead{opacity:.2;filter:grayscale(.6)}

.mf-token-av{
    width:40px;height:40px;border-radius:50%;overflow:hidden;
    margin:0 auto 8px;border:2px solid rgba(255,255,255,.06);
    transition:box-shadow .25s,border-color .25s;
}
.mf-token-av img{width:100%;height:100%;object-fit:cover}
.mf-token-av span{
    width:100%;height:100%;display:flex;align-items:center;justify-content:center;
    background:rgba(255,255,255,.03);font-size:.9rem;font-weight:700;color:rgba(255,255,255,.15);
}
.mf-token-name{font-size:.68rem;font-weight:600;color:rgba(255,255,255,.45);margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mf-token-self-tag{
    font-size:.48rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
    color:rgba(255,255,255,.15);margin-top:3px;
}

/* --- game log --- */
.mf-log-wrap{margin-top:22px}
.mf-log-hd{
    font-size:.55rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
    color:rgba(255,255,255,.12);cursor:pointer;padding:4px 0;list-style:none;
}
.mf-log-hd::-webkit-details-marker{display:none}
.mf-log-hd::before{content:'+ ';opacity:.4}
details[open]>.mf-log-hd::before{content:'- '}
.mf-log{
    max-height:140px;overflow-y:auto;margin-top:6px;padding:8px 12px;
    border-radius:6px;background:rgba(255,255,255,.01);border:1px solid rgba(255,255,255,.03);
}
.mf-log-row{font-size:.62rem;color:rgba(255,255,255,.2);padding:3px 0;border-bottom:1px solid rgba(255,255,255,.015)}
.mf-log-row:last-child{border-bottom:none}
.mf-log::-webkit-scrollbar{width:2px}
.mf-log::-webkit-scrollbar-thumb{background:rgba(255,255,255,.04);border-radius:2px}

/* --- admin panel --- */
.mf-adm{margin-top:28px;padding-top:14px;border-top:1px solid rgba(255,255,255,.03)}
.mf-adm-toggle{
    font-size:.55rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
    color:rgba(255,255,255,.1);cursor:pointer;padding:4px 0;transition:color .15s;
}
.mf-adm-toggle:hover{color:rgba(255,255,255,.25)}
.mf-adm-body{max-height:0;overflow:hidden;transition:max-height .35s ease}
.mf-adm-body.open{max-height:1400px;padding-top:10px}
.mf-adm-group{margin-bottom:12px}
.mf-adm-label{font-size:.5rem;font-weight:700;letter-spacing:.1em;color:rgba(255,255,255,.1);text-transform:uppercase;margin-bottom:5px}
.mf-adm-btns{display:flex;flex-wrap:wrap;gap:4px}
.mf-adm-btn{
    padding:4px 10px;border-radius:4px;font-size:.6rem;font-weight:600;font-family:inherit;
    background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.04);
    color:rgba(255,255,255,.25);cursor:pointer;transition:all .15s;
}
.mf-adm-btn:hover{background:rgba(255,255,255,.06);color:rgba(255,255,255,.45);border-color:rgba(255,255,255,.08)}
.mf-adm-btn--go{color:rgba(0,200,100,.4);border-color:rgba(0,200,100,.1)}
.mf-adm-btn--go:hover{background:rgba(0,200,100,.06);color:rgba(0,220,120,.6)}
.mf-adm-btn--red{color:rgba(255,80,80,.35);border-color:rgba(255,80,80,.08)}
.mf-adm-btn--red:hover{background:rgba(255,80,80,.06);color:rgba(255,80,80,.55)}
.mf-adm-btn--sm{padding:2px 7px;font-size:.55rem}
.mf-adm-row{display:flex;align-items:center;gap:6px;padding:3px 0;font-size:.65rem;font-weight:600;color:rgba(255,255,255,.35)}
.mf-adm--dead{text-decoration:line-through;opacity:.3}
.mf-adm-sel{
    padding:2px 4px;border-radius:3px;font-size:.55rem;font-family:inherit;
    background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.04);color:rgba(255,255,255,.25);cursor:pointer;
}

@media(max-width:500px){
    .mf-game,.mf-lower{padding-left:14px;padding-right:14px}
    .mf-table-grid{grid-template-columns:repeat(auto-fill,minmax(85px,1fr));gap:7px}
    .mf-end-grid{grid-template-columns:repeat(auto-fill,minmax(80px,1fr))}
    .mf-splash-title{font-size:2.4rem;letter-spacing:.12em}
}

/* ========== Gamble (reuses .trade-page / .t-card etc.) ========== */
.g-gamble-tag{display:none}
.g-vs-icon{font-size:1.1rem;opacity:.6}
.t-card.g-card{overflow:hidden}
.t-card.g-card::after{content:'🎲';position:absolute;right:12px;bottom:8px;font-size:1.6rem;opacity:.06;pointer-events:none;animation:g-dice-drift 6s ease-in-out infinite alternate}
@keyframes g-dice-drift{0%{transform:translate(0,0) rotate(0deg)}100%{transform:translate(-6px,-4px) rotate(20deg)}}
.g-mode-toggle{display:inline-flex;gap:2px;margin-bottom:10px;background:rgba(255,255,255,.04);border-radius:8px;padding:2px;border:1px solid rgba(255,255,255,.06)}
.g-mode-btn{font-size:.68rem;font-weight:600;padding:5px 14px;border-radius:6px;border:none;background:transparent;color:var(--t3);cursor:pointer;transition:all .2s ease;letter-spacing:.02em}
.g-mode-btn:hover{color:var(--t2)}
.g-mode-btn.active{background:rgba(228,155,50,.18);color:#f0b24a;box-shadow:0 1px 6px rgba(228,155,50,.15)}
.g-mode-label{display:block;font-size:.6rem;font-weight:500;letter-spacing:.01em;line-height:1;padding:4px 0;color:rgba(255,255,255,.2)}

/* ===== Gamble Animation (Full Redesign) ===== */
.ga-overlay{
    position:fixed;inset:0;z-index:200;
    background:rgba(0,0,0,0);backdrop-filter:blur(0px);
    display:flex;align-items:center;justify-content:center;
    transition:background .6s ease,backdrop-filter .6s ease;
}
.ga-overlay.ga-in{
    background:rgba(0,0,0,.95);backdrop-filter:blur(16px);
}
.ga-overlay.ga-fade{opacity:0;transition:opacity .4s ease}

.ga-scene{
    width:100%;max-width:800px;padding:20px;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    opacity:0;transform:scale(.92);
    transition:opacity .5s ease .2s,transform .5s ease .2s;
}
.ga-overlay.ga-in .ga-scene{opacity:1;transform:scale(1)}

/* Waiting state */
.ga-waiting{
    display:flex;flex-direction:column;align-items:center;gap:16px;
}
.ga-waiting.ga-hidden{display:none}
.ga-waiting-text{
    font-size:1.2rem;font-weight:800;color:rgba(255,255,255,.5);
    letter-spacing:-.02em;
}
.ga-waiting-sub{
    font-size:.72rem;color:rgba(255,255,255,.2);letter-spacing:.02em;
}
.ga-waiting-dots{display:flex;gap:6px}
.ga-waiting-dots span{
    width:8px;height:8px;border-radius:50%;background:rgba(228,155,50,.4);
    animation:ga-dot-pulse 1.4s ease-in-out infinite;
}
.ga-waiting-dots span:nth-child(2){animation-delay:.2s}
.ga-waiting-dots span:nth-child(3){animation-delay:.4s}
@keyframes ga-dot-pulse{
    0%,80%,100%{transform:scale(.4);opacity:.3}
    40%{transform:scale(1);opacity:1}
}

/* Arena */
.ga-arena{
    display:none;width:100%;
    align-items:center;justify-content:center;gap:24px;
}
.ga-arena.ga-active{display:flex}

/* Players */
.ga-player{
    flex:1;display:flex;flex-direction:column;align-items:center;gap:12px;
    padding:20px 12px;border-radius:16px;
    background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.05);
    transition:all .6s cubic-bezier(.4,0,.2,1);
    position:relative;overflow:hidden;
}
.ga-player::before{
    content:'';position:absolute;inset:0;border-radius:16px;opacity:0;
    transition:opacity .8s ease;pointer-events:none;
}
.ga-player.ga-winner{
    border-color:rgba(168,85,247,.25);
    background:rgba(168,85,247,.06);
    box-shadow:0 0 40px rgba(168,85,247,.12),0 0 80px rgba(168,85,247,.06);
}
.ga-player.ga-winner::before{
    opacity:1;
    background:radial-gradient(ellipse at center,rgba(168,85,247,.1),transparent 70%);
}
.ga-player.ga-winner .ga-avatar{
    box-shadow:0 0 20px rgba(168,85,247,.35),0 0 40px rgba(168,85,247,.18);
    border-color:rgba(168,85,247,.45);
}
.ga-player.ga-loser{
    opacity:.35;filter:grayscale(.6);
    border-color:rgba(248,113,113,.15);
}

.ga-avatar{
    width:72px;height:72px;border-radius:50%;
    border:3px solid rgba(255,255,255,.1);
    object-fit:cover;
    transition:all .6s ease;
}

.ga-player-name{
    font-size:.85rem;font-weight:700;color:rgba(255,255,255,.7);
    letter-spacing:-.01em;text-align:center;
}

.ga-player-roles{
    display:flex;flex-direction:column;gap:4px;align-items:center;
}
.ga-role-pill{
    display:inline-flex;align-items:center;gap:5px;
    padding:4px 10px;border-radius:20px;
    background:color-mix(in srgb,var(--rc) 8%,transparent);
    border:1px solid color-mix(in srgb,var(--rc) 15%,transparent);
    font-size:.68rem;font-weight:600;color:rgba(255,255,255,.55);
    white-space:nowrap;
}
.ga-role-pill.has-grad{
    background:linear-gradient(135deg,
        color-mix(in srgb,var(--g1) 16%,#0d0d15),
        color-mix(in srgb,var(--g2) 10%,#0a0a14));
}
.ga-role-pill.has-grad::after{display:none}
.ga-role-icon{width:16px;height:16px;object-fit:contain;flex-shrink:0}
.ga-role-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.ga-role-serial{
    font-size:.58rem;font-weight:700;color:rgba(255,255,255,.25);
    margin-left:2px;
}

/* Center column */
.ga-center{
    display:flex;flex-direction:column;align-items:center;gap:20px;
    flex-shrink:0;min-width:100px;
}

.ga-vs{
    font-size:1.4rem;font-weight:900;letter-spacing:.12em;
    color:rgba(255,255,255,.12);
}

/* Coin */
.ga-coin-wrap{
    perspective:600px;width:88px;height:88px;
    transition:all .5s ease;
    position:relative;
}
.ga-coin-wrap::after{
    content:'';position:absolute;inset:-20px;border-radius:50%;
    background:radial-gradient(circle,rgba(228,155,50,.08) 0%,transparent 70%);
    opacity:0;transition:opacity .3s ease;pointer-events:none;
}
.ga-coin-wrap.ga-coin-done{
    opacity:.35;transform:scale(.75);
}
.ga-coin{
    width:88px;height:88px;position:relative;
    transform-style:preserve-3d;
    --coin-speed:1.1s;
    transition:transform .3s ease;
}
.ga-coin-face{
    position:absolute;inset:0;backface-visibility:hidden;
    display:flex;align-items:center;justify-content:center;
    border-radius:50%;
}
.ga-coin-heads{
    background:radial-gradient(circle at 35% 35%,rgba(255,220,80,.5),rgba(200,150,30,.2));
    border:2.5px solid rgba(228,180,50,.55);
    box-shadow:0 0 28px rgba(228,180,50,.25),inset 0 0 18px rgba(228,180,50,.12);
}
.ga-coin-tails{
    transform:rotateY(180deg);
    background:radial-gradient(circle at 35% 35%,rgba(190,200,220,.4),rgba(130,140,160,.2));
    border:2.5px solid rgba(180,190,210,.45);
    box-shadow:0 0 28px rgba(160,170,190,.18),inset 0 0 18px rgba(160,170,190,.1);
}
.ga-coin.ga-coin-spinning{
    animation:ga-coin-flip var(--coin-speed,1.1s) linear infinite;
}
@keyframes ga-coin-flip{
    0%{transform:rotateY(0deg)}
    100%{transform:rotateY(360deg)}
}

/* Phase classes */
.ga-phase-2 .ga-coin-wrap::after{opacity:1}
.ga-phase-2 .ga-arena{animation:ga-arena-pulse 1s ease-in-out infinite}
@keyframes ga-arena-pulse{
    0%,100%{background:transparent}
    50%{background:rgba(228,100,20,.025)}
}
.ga-phase-3 .ga-coin{filter:blur(.4px)}
.ga-phase-3 .ga-coin-wrap::after{opacity:1;background:radial-gradient(circle,rgba(255,80,20,.12) 0%,transparent 70%)}
.ga-phase-3 .ga-timer{color:rgba(255,90,30,.7)!important;text-shadow:0 0 24px rgba(255,90,30,.4)!important}
.ga-phase-critical .ga-coin{filter:blur(1.2px)}
.ga-phase-critical .ga-arena{animation:ga-shake-screen .09s ease-in-out infinite}
.ga-phase-critical .ga-coin-wrap{animation:none}
.ga-phase-critical .ga-coin-wrap::after{
    opacity:1;
    background:radial-gradient(circle,rgba(255,40,10,.2) 0%,transparent 60%);
    animation:ga-coin-glow-pulse .12s ease-in-out infinite;
}
.ga-phase-critical .ga-timer{
    color:rgba(255,50,30,.9)!important;
    font-size:3.5rem!important;
    text-shadow:0 0 40px rgba(255,50,30,.6)!important;
    animation:ga-timer-throb .12s ease-in-out infinite!important;
}
@keyframes ga-shake-screen{
    0%,100%{transform:translateX(0)}
    25%{transform:translateX(-3px)}
    75%{transform:translateX(3px)}
}
@keyframes ga-coin-glow-pulse{
    0%,100%{transform:scale(1)}
    50%{transform:scale(1.15)}
}
@keyframes ga-timer-throb{
    0%,100%{transform:scale(1)}
    50%{transform:scale(1.1)}
}
.ga-phase-slam .ga-coin{
    filter:none!important;
    animation:ga-coin-slam .25s cubic-bezier(.34,1.6,.64,1) forwards;
}
@keyframes ga-coin-slam{
    0%{transform:rotateY(720deg) scale(1.4)}
    100%{transform:rotateY(0deg) scale(1)}
}

/* Dice */
.ga-dice-wrap{
    width:44px;height:44px;display:flex;align-items:center;justify-content:center;
}
.ga-dice{
    font-size:1.8rem;filter:drop-shadow(0 0 10px rgba(228,155,50,.2));
    transition:all .3s ease;
}
.ga-dice.ga-dice-rolling{
    animation:ga-dice-roll .4s ease-in-out infinite;
}
@keyframes ga-dice-roll{
    0%{transform:rotate(0deg) scale(1)}
    25%{transform:rotate(90deg) scale(1.1)}
    50%{transform:rotate(180deg) scale(1)}
    75%{transform:rotate(270deg) scale(1.1)}
    100%{transform:rotate(360deg) scale(1)}
}

/* Player side indicator */
.ga-side{
    display:flex;align-items:center;gap:4px;margin-top:-4px;
}
.ga-side span{
    font-size:.62rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
}
.ga-side.heads span{color:rgba(228,180,50,.45)}
.ga-side.tails span{color:rgba(160,170,190,.4)}

/* Gamble accept modal sections */
.gam-section{margin-bottom:14px}
.gam-label{
    font-size:.68rem;font-weight:600;color:var(--t3);
    margin-bottom:6px;
}
.gam-pills{display:flex;flex-wrap:wrap;gap:4px}
.gam-chips{display:flex;flex-wrap:wrap;gap:4px}

/* Heads/Tails picker overlay */
.ga-pick-overlay{
    position:fixed;inset:0;z-index:210;
    background:rgba(0,0,0,.85);backdrop-filter:blur(12px);
    display:flex;align-items:center;justify-content:center;
    opacity:0;transition:opacity .3s ease;
}
.ga-pick-overlay.ga-pick-in{opacity:1}
.ga-pick-box{
    text-align:center;display:flex;flex-direction:column;align-items:center;gap:20px;
}
.ga-pick-title{
    font-size:1.1rem;font-weight:800;color:rgba(255,255,255,.6);
    letter-spacing:-.02em;
}
.ga-pick-sub{
    font-size:.72rem;color:rgba(255,255,255,.2);margin-top:-12px;
}
.ga-pick-options{display:flex;gap:16px}
.ga-pick-btn{
    width:110px;padding:20px 0;border-radius:16px;
    display:flex;flex-direction:column;align-items:center;gap:10px;
    cursor:pointer;transition:all .2s ease;
    border:2px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03);
}
.ga-pick-btn:hover{transform:scale(1.05)}
.ga-pick-btn:active{transform:scale(.97)}
.ga-pick-btn--heads{border-color:rgba(228,180,50,.2);background:rgba(228,180,50,.05)}
.ga-pick-btn--heads:hover{border-color:rgba(228,180,50,.4);background:rgba(228,180,50,.1);box-shadow:0 0 30px rgba(228,180,50,.1)}
.ga-pick-btn--tails{border-color:rgba(160,170,190,.2);background:rgba(160,170,190,.05)}
.ga-pick-btn--tails:hover{border-color:rgba(160,170,190,.4);background:rgba(160,170,190,.1);box-shadow:0 0 30px rgba(160,170,190,.1)}
.ga-pick-coin{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.ga-pick-coin--heads{
    background:linear-gradient(145deg,rgba(228,180,50,.35),rgba(200,150,30,.2));
    border:2px solid rgba(228,180,50,.45);
}
.ga-pick-coin--tails{
    background:linear-gradient(145deg,rgba(160,170,190,.3),rgba(130,140,160,.2));
    border:2px solid rgba(180,190,210,.4);
}
.ga-pick-label{font-size:.78rem;font-weight:700;color:rgba(255,255,255,.5);text-transform:uppercase;letter-spacing:.06em}

/* Timer */
.ga-timer{
    font-size:2.8rem;font-weight:900;
    color:rgba(255,255,255,.15);
    font-variant-numeric:tabular-nums;
    letter-spacing:-.02em;line-height:1;
    transition:color .4s ease, font-size .3s ease, text-shadow .4s ease;
    min-height:2.8rem;
}
.ga-phase-1 .ga-timer{color:rgba(255,255,255,.18)}
.ga-phase-2 .ga-timer{color:rgba(228,155,50,.4);text-shadow:0 0 20px rgba(228,155,50,.2)}

/* Big countdown numbers */
.ga-big-num{
    position:fixed;inset:0;
    display:flex;align-items:center;justify-content:center;
    font-size:22vw;font-weight:900;
    color:rgba(255,255,255,.04);
    letter-spacing:-.06em;
    pointer-events:none;z-index:201;
    animation:ga-big-num-pop .8s cubic-bezier(.22,1,.36,1) forwards;
}
@keyframes ga-big-num-pop{
    0%{opacity:0;transform:scale(.4)}
    20%{opacity:1;transform:scale(1.05)}
    60%{opacity:.6;transform:scale(1)}
    100%{opacity:0;transform:scale(1.4)}
}

/* Role icon explosion on reveal */
.ga-role-fly{
    position:fixed;top:50%;left:50%;
    transform:translate(-50%,-50%);
    pointer-events:none;z-index:202;
    opacity:0;
    animation:ga-role-fly-out var(--dur,1200ms) var(--delay,0ms) cubic-bezier(.2,.8,.4,1) forwards;
}
@keyframes ga-role-fly-out{
    0%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(0deg)}
    15%{opacity:1;transform:translate(-50%,-50%) scale(1.1) rotate(calc(var(--rot)*0.05))}
    70%{opacity:.8;transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) scale(1) rotate(calc(var(--rot)*0.7))}
    100%{opacity:0;transform:translate(calc(-50% + var(--tx)*1.15),calc(-50% + var(--ty)*1.15)) scale(.5) rotate(var(--rot))}
}

/* Winner / loser */
.ga-player.ga-winner{
    border-color:rgba(168,85,247,.35);
    background:rgba(168,85,247,.07);
    box-shadow:0 0 60px rgba(168,85,247,.18),0 0 120px rgba(168,85,247,.08);
    animation:ga-winner-pulse 2s ease-in-out infinite;
}
@keyframes ga-winner-pulse{
    0%,100%{box-shadow:0 0 60px rgba(168,85,247,.18),0 0 120px rgba(168,85,247,.08)}
    50%{box-shadow:0 0 80px rgba(168,85,247,.28),0 0 160px rgba(168,85,247,.14)}
}
.ga-player.ga-winner::before{
    opacity:1;
    background:radial-gradient(ellipse at center,rgba(168,85,247,.12),transparent 70%);
}
.ga-player.ga-winner .ga-avatar{
    box-shadow:0 0 24px rgba(168,85,247,.45),0 0 50px rgba(168,85,247,.22);
    border-color:rgba(168,85,247,.55);
    transform:scale(1.08);
}
.ga-player.ga-loser{
    opacity:.25;filter:grayscale(.8) brightness(.7);
    border-color:rgba(248,113,113,.1);
    transform:scale(.95);
}

/* Result label */
.ga-result-label{
    position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);
    font-size:clamp(1.6rem,5vw,3rem);font-weight:900;letter-spacing:-.02em;
    pointer-events:none;z-index:203;
    animation:ga-result-slam .7s cubic-bezier(.22,1.5,.36,1) forwards;
}
.ga-result-win{
    color:#fff;
    text-shadow:0 0 40px rgba(168,85,247,.8),0 0 80px rgba(168,85,247,.4);
}
.ga-result-lose{
    color:rgba(255,255,255,.3);
    font-size:clamp(1rem,3vw,1.8rem)!important;
    text-shadow:none;
}
@keyframes ga-result-slam{
    0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}
    60%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}
    100%{opacity:1;transform:translate(-50%,-50%) scale(1)}
}

/* Confetti particles */
.ga-confetti-p{
    position:fixed;top:-10px;width:7px;height:12px;
    border-radius:2px;
    opacity:0;pointer-events:none;z-index:202;
    animation:ga-confetti-fall var(--dur,1600ms) var(--delay,0ms) ease-in forwards;
}
@keyframes ga-confetti-fall{
    0%{opacity:1;transform:translateX(0) translateY(0) rotate(0deg)}
    100%{opacity:0;transform:translateX(var(--drift,60px)) translateY(110vh) rotate(720deg)}
}

/* Dismiss hint */
.ga-dismiss-hint{
    position:fixed;bottom:48px;left:50%;transform:translateX(-50%);
    font-size:.7rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
    color:rgba(255,255,255,.2);pointer-events:none;z-index:203;
    animation:ga-hint-in .6s ease .8s both;
}
@keyframes ga-hint-in{
    from{opacity:0;transform:translateX(-50%) translateY(8px)}
    to{opacity:1;transform:translateX(-50%) translateY(0)}
}


@media(max-width:600px){
    .ga-arena{flex-direction:column;gap:16px}
    .ga-center{flex-direction:row;gap:16px;min-width:auto}
    .ga-player{padding:14px 10px}
    .ga-avatar{width:56px;height:56px}
}

/* ========== Cases ========== */
.cs-page{max-width:880px;margin:0 auto;padding:40px 20px 80px}
.cs-page-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:28px}
.cs-page-head .page-heading{margin-bottom:0}
.cs-bal{display:inline-flex;align-items:center;gap:7px;font-size:.82rem;font-weight:700;color:var(--t1);letter-spacing:-.01em}
.cs-bal-img{width:18px;height:18px;object-fit:contain;filter:drop-shadow(0 0 6px rgba(168,76,255,.5))}
.cs-bal-num{font-variant-numeric:tabular-nums}
.cs-bal-inf{font-size:1rem;font-weight:800;color:var(--t1);letter-spacing:-.02em}

/* ----- Owner controls bar ----- */
.cs-owner-bar{margin:-8px 0 18px;display:flex;justify-content:flex-end;gap:8px}
.cs-owner-bar[hidden]{display:none}

/* Screencast mode — owner-only UI hidden so it doesn't show up in screen recordings */
body.screencast-mode #cs-owner-bar,
body.screencast-mode #ct-owner-bar{display:none!important}
.cs-owner-toggle{
    display:inline-flex;align-items:center;gap:10px;
    padding:8px 14px;border-radius:9px;
    background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);
    font-size:.74rem;font-weight:700;letter-spacing:.02em;text-transform:lowercase;
    color:var(--t2);
    transition:background .15s ease,border-color .15s ease,color .15s ease;
}
.cs-owner-toggle:hover{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.18);color:var(--t1)}
.cs-owner-dot{width:8px;height:8px;border-radius:50%;background:#666;box-shadow:0 0 8px transparent}
.cs-owner-toggle.is-on .cs-owner-dot{background:#3da4ff;box-shadow:0 0 10px rgba(61,164,255,.7)}
.cs-owner-toggle.is-off .cs-owner-dot{background:#ff5d6f;box-shadow:0 0 10px rgba(255,93,111,.6)}
.cs-owner-toggle b{color:var(--t1);font-weight:800}
.cs-owner-action{font-size:.62rem;color:var(--t3);letter-spacing:.08em;text-transform:uppercase;margin-left:4px}

/* ----- Case grid ----- */
.cs-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px;margin-bottom:36px}
.cs-card{
    --rc:#888;
    position:relative;display:flex;flex-direction:column;gap:14px;
    padding:20px 18px 14px;border-radius:18px;
    background:
        radial-gradient(110% 60% at 50% 0%, color-mix(in srgb,var(--rc) 9%,transparent), transparent 55%),
        linear-gradient(180deg,#0f0f15 0%,#0a0a10 100%);
    border:1px solid color-mix(in srgb,var(--rc) 18%,rgba(255,255,255,.05));
    overflow:hidden;cursor:default;isolation:isolate;
    transition:border-color .3s ease,transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .4s ease;
}
.cs-card:hover{
    transform:translateY(-4px);
    border-color:color-mix(in srgb,var(--rc) 42%,rgba(255,255,255,.1));
    box-shadow:
        0 0 0 1px color-mix(in srgb,var(--rc) 20%,transparent),
        0 28px 56px -24px color-mix(in srgb,var(--rc) 70%,transparent),
        0 8px 24px -12px rgba(0,0,0,.6);
}
/* Soft outer halo behind card. */
.cs-card::before{
    content:'';position:absolute;inset:-1px;border-radius:inherit;
    background:radial-gradient(80% 60% at 50% 0%,color-mix(in srgb,var(--rc) 28%,transparent),transparent 70%);
    pointer-events:none;opacity:.5;z-index:-1;
}
/* Animated aura element (sweeps a soft sheen across the card). */
.cs-card-aura{
    position:absolute;inset:-30%;pointer-events:none;z-index:0;
    background:conic-gradient(from 0deg,
        transparent 0deg,
        color-mix(in srgb,var(--rc) 30%,transparent) 40deg,
        transparent 90deg,
        transparent 360deg);
    opacity:.0;
    filter:blur(28px);
    animation:cs-aura-rotate 9s linear infinite;
    transition:opacity .4s ease;
}
.cs-card:hover .cs-card-aura{opacity:.5}
@keyframes cs-aura-rotate{
    0%{transform:rotate(0deg)}
    100%{transform:rotate(360deg)}
}

.cs-card-head{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.cs-card-name{font-size:1.05rem;font-weight:800;color:#fff;letter-spacing:-.02em}
.cs-card-test{
    font-size:.6rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;
    color:var(--t3);padding:4px 9px;border-radius:5px;
    background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);
    transition:color .15s ease,border-color .15s ease;
}
.cs-card-test:hover{color:var(--t1);border-color:rgba(255,255,255,.18)}
/* Event case card */
.cs-card-event{
    background:
        radial-gradient(110% 60% at 50% 0%, color-mix(in srgb,var(--rc) 16%,transparent), transparent 55%),
        linear-gradient(180deg,#0f0f15 0%,#0a0a10 100%);
    border-color:color-mix(in srgb,var(--rc) 28%,rgba(255,255,255,.06));
}
/* Exclusive case — countdown on the open button instead of a blocking overlay */
.cs-excl-locked-btn{
    display:flex;align-items:center;justify-content:center;gap:8px;
    cursor:not-allowed !important;
    opacity:.75;
    background:color-mix(in srgb,var(--rc) 8%,rgba(255,255,255,.03)) !important;
    border-color:color-mix(in srgb,var(--rc) 22%,var(--border)) !important;
}
.cs-excl-locked-btn .cs-card-open-label{
    color:var(--t3);font-size:.72rem;font-weight:500;
}
.cs-excl-lock-countdown{
    color:var(--rc);font-weight:700;font-size:.85rem;
    font-variant-numeric:tabular-nums;letter-spacing:.02em;
}
/* Hell Rock locked state — dim the card and show overlay */
.cs-hr-locked{pointer-events:none;filter:saturate(.35) brightness(.6)}
.cs-hr-lock-overlay{
    position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;
    background:rgba(0,0,0,.55);border-radius:inherit;pointer-events:none;
    backdrop-filter:blur(2px);
}
.cs-hr-lock-badge{
    display:flex;flex-direction:column;align-items:center;gap:6px;
    background:rgba(10,10,18,.88);border:1px solid rgba(255,68,0,.4);
    border-radius:14px;padding:18px 32px;
    box-shadow:0 0 32px rgba(255,68,0,.25),0 0 8px rgba(255,68,0,.15);
}
.cs-hr-lock-title{
    font-size:1.4rem;font-weight:900;letter-spacing:.2em;
    color:#ff4400;text-transform:uppercase;
    text-shadow:0 0 18px rgba(255,68,0,.7);
    animation:cs-hr-pulse 1.2s ease-in-out infinite alternate;
}
.cs-hr-lock-timer{
    font-size:.95rem;font-variant-numeric:tabular-nums;
    font-weight:700;color:rgba(255,255,255,.75);letter-spacing:.05em;
}
@keyframes cs-hr-pulse{from{opacity:.8}to{opacity:1;text-shadow:0 0 30px rgba(255,68,0,.95)}}
.cs-event-badge{
    display:inline-flex;align-items:center;
    font-size:.55rem;font-weight:900;letter-spacing:.16em;text-transform:uppercase;
    color:var(--rc);padding:3px 7px;border-radius:4px;margin-left:8px;vertical-align:middle;
    background:color-mix(in srgb,var(--rc) 14%,transparent);
    border:1px solid color-mix(in srgb,var(--rc) 35%,transparent);
    text-shadow:0 0 8px color-mix(in srgb,var(--rc) 80%,transparent);
    animation:cs-event-badge-pulse 2s ease infinite;
}
@keyframes cs-event-badge-pulse{
    0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--rc) 0%,transparent)}
    50%{box-shadow:0 0 0 3px color-mix(in srgb,var(--rc) 30%,transparent)}
}

.cs-showcase{
    position:relative;z-index:1;height:96px;border-radius:11px;
    background:
        radial-gradient(80% 80% at 50% 50%, color-mix(in srgb,var(--rc) 8%,transparent), transparent 70%),
        rgba(0,0,0,.3);
    border:1px solid color-mix(in srgb,var(--rc) 12%,rgba(255,255,255,.04));
    overflow:hidden;
}
.cs-showcase-track{
    position:absolute;left:0;top:0;bottom:0;display:flex;gap:6px;padding:8px;
    align-items:center;
}
.cs-show-tile{
    --rc:#888;
    flex:0 0 auto;width:64px;height:78px;border-radius:9px;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
    background:rgba(255,255,255,.03);border:1px solid color-mix(in srgb,var(--rc) 18%,rgba(255,255,255,.06));
    overflow:hidden;position:relative;
}
.cs-show-tile::before{content:'';position:absolute;inset:0;opacity:.22;background:linear-gradient(135deg,var(--rc),transparent 60%);pointer-events:none}
.cs-show-tile.has-grad{
    background:
        linear-gradient(150deg,
            color-mix(in srgb,var(--g1) 18%,#0d0d15),
            color-mix(in srgb,var(--g2) 12%,#0a0a14));
}
.cs-show-tile.has-grad::before{
    opacity:.32;
    background:linear-gradient(135deg,var(--g1),var(--g2));
    mix-blend-mode:overlay;
}
.cs-show-tile img{width:32px;height:32px;object-fit:contain;border-radius:6px;position:relative;z-index:1}
.cs-show-dot{width:18px;height:18px;border-radius:50%;position:relative;z-index:1}
.cs-show-pct{font-size:.56rem;font-weight:700;color:var(--t1);letter-spacing:.02em;position:relative;z-index:1;background:rgba(0,0,0,.55);padding:1px 6px;border-radius:3px;font-variant-numeric:tabular-nums}
.cs-showcase-fade{position:absolute;top:0;bottom:0;width:36px;pointer-events:none;z-index:2}
.cs-showcase-fade-l{left:0;background:linear-gradient(90deg,#0e0e16,transparent)}
.cs-showcase-fade-r{right:0;background:linear-gradient(270deg,#0e0e16,transparent)}

/* ----- Open button (the hero CTA) ----- */
.cs-card-open{
    position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;
    width:100%;padding:14px 16px;border-radius:12px;
    background:linear-gradient(160deg,
        color-mix(in srgb,var(--rc) 55%,#09091a),
        color-mix(in srgb,var(--rc) 78%,#141428) 48%,
        color-mix(in srgb,var(--rc) 50%,#0b0b1e));
    color:#fff;font-weight:800;letter-spacing:-.01em;
    border:1px solid color-mix(in srgb,var(--rc) 55%,transparent);
    box-shadow:
        0 0 0 1px color-mix(in srgb,var(--rc) 22%,transparent),
        0 10px 28px -14px color-mix(in srgb,var(--rc) 80%,transparent),
        inset 0 1px 0 rgba(255,255,255,.22),
        inset 0 -1px 0 rgba(0,0,0,.25);
    transition:transform .15s ease,filter .2s ease,box-shadow .25s ease;
    overflow:hidden;
}
.cs-card-open::after{
    content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;
    background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.15) 50%,transparent 70%);
    transform:translateX(-100%);
    transition:transform .9s ease;
}
.cs-card-open:hover{
    transform:translateY(-1px);
    filter:brightness(1.06) saturate(.88);
    box-shadow:
        0 0 0 1px color-mix(in srgb,var(--rc) 42%,transparent),
        0 16px 36px -14px color-mix(in srgb,var(--rc) 90%,transparent),
        inset 0 1px 0 rgba(255,255,255,.28),
        inset 0 -1px 0 rgba(0,0,0,.3);
}
.cs-card-open:hover::after{transform:translateX(100%)}
.cs-card-open:active{transform:translateY(0);filter:brightness(.96)}
.cs-card-open-label{font-size:.95rem;font-weight:800;letter-spacing:.02em}
.cs-card-open-price{display:inline-flex;align-items:center;gap:6px;font-size:.95rem;font-weight:800;font-variant-numeric:tabular-nums}
.cs-card-open-price img{width:18px;height:18px;object-fit:contain;filter:drop-shadow(0 0 6px rgba(255,255,255,.4))}
.cs-card-open-keyimg{
    display:inline-flex;align-items:center;justify-content:center;
    width:26px;height:26px;border-radius:7px;
    background:rgba(0,0,0,.45);
    border:1px solid rgba(255,255,255,.18);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.08);
}
.cs-card-open-keyimg img{width:18px;height:18px;object-fit:contain;filter:drop-shadow(0 0 4px rgba(0,0,0,.55))}
.cs-card-open-test{
    font-size:.62rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;
    color:rgba(255,255,255,.85);
    background:rgba(0,0,0,.28);
    padding:5px 9px;border-radius:6px;
    border:1px solid rgba(255,255,255,.18);
    white-space:nowrap;
}

/* ----- Inline chances toggle + panel ----- */
.cs-card-toggle{
    position:relative;z-index:1;display:flex;align-items:center;justify-content:center;gap:6px;
    margin-top:-2px;padding:6px 10px;width:100%;
    background:transparent;border:none;
    color:var(--t3);font-size:.7rem;font-weight:700;letter-spacing:.02em;text-transform:lowercase;
    transition:color .15s ease;
}
.cs-card-toggle:hover{color:var(--t1)}
.cs-card-toggle-chev{font-size:1rem;transition:transform .25s ease}
.cs-card-toggle[aria-expanded="true"] .cs-card-toggle-chev{transform:rotate(180deg)}

.cs-card-chances{
    position:relative;z-index:1;
    margin-top:-2px;padding:10px 10px 8px;
    border-radius:11px;
    background:
        linear-gradient(180deg,rgba(0,0,0,.55),rgba(0,0,0,.32));
    border:1px solid color-mix(in srgb,var(--rc) 22%,rgba(255,255,255,.08));
    box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
    animation:cs-chances-in .25s cubic-bezier(.2,.7,.2,1);
}
.cs-card-chances[hidden]{display:none}

/* ----- Section tabs (cases / keys) ----- */
.cs-section-tabs{
    display:flex;gap:4px;margin-bottom:18px;
    padding:4px;border-radius:10px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.06);
    width:fit-content;
}
.cs-section-tab{
    padding:7px 18px;border-radius:7px;
    background:transparent;border:none;cursor:pointer;
    color:rgba(255,255,255,.5);font-size:.78rem;font-weight:700;letter-spacing:.02em;
    transition:color .18s ease,background .18s ease;
}
.cs-section-tab:hover{color:#fff}
.cs-section-tab.active{background:rgba(255,255,255,.07);color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}

/* ===========================================================
   KEYS / FUSE — premium card layout (matches cases aesthetic)
   =========================================================== */

/* Inventory strip */
.kf-stats{
    display:flex;flex-wrap:wrap;gap:10px;align-items:center;
    margin-bottom:22px;
}
.kf-stat-divider{
    width:1px;height:40px;
    background:linear-gradient(to bottom,transparent,rgba(255,255,255,.12),transparent);
    flex-shrink:0;
}
.kf-section-label{
    display:flex;align-items:center;gap:12px;margin:6px 0 10px;
}
.kf-section-label::before,.kf-section-label::after{
    content:'';flex:1;height:1px;
    background:linear-gradient(to right,transparent,rgba(255,255,255,.1),transparent);
}
.kf-section-label-text{
    font-size:.6rem;font-weight:900;letter-spacing:.2em;text-transform:uppercase;
    color:rgba(255,255,255,.3);white-space:nowrap;
}
.kf-stat{
    --rc:#888;
    flex:1 1 120px;
    position:relative;display:flex;align-items:center;gap:11px;
    padding:12px 14px;border-radius:12px;
    background:
        radial-gradient(120% 80% at 50% 0%, color-mix(in srgb,var(--rc) 12%,transparent), transparent 60%),
        linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.012));
    border:1px solid color-mix(in srgb,var(--rc) 14%,rgba(255,255,255,.06));
    overflow:hidden;
}
.kf-stat::before{
    content:'';position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;z-index:-1;
    background:radial-gradient(80% 60% at 50% 0%,color-mix(in srgb,var(--rc) 28%,transparent),transparent 70%);
    opacity:.45;
}
.kf-stat-img{
    display:flex;align-items:center;justify-content:center;
    width:34px;height:34px;border-radius:9px;flex-shrink:0;
    background:rgba(0,0,0,.35);
    border:1px solid color-mix(in srgb,var(--rc) 28%,rgba(255,255,255,.08));
    box-shadow:inset 0 1px 0 rgba(255,255,255,.06);
}
.kf-stat-img img{width:22px;height:22px;object-fit:contain;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--rc) 55%,transparent))}
.kf-stat-num{font-size:1.25rem;font-weight:800;color:#fff;font-variant-numeric:tabular-nums;line-height:1}
.kf-stat-name{font-size:.66rem;font-weight:800;color:rgba(255,255,255,.55);letter-spacing:.12em;text-transform:uppercase;margin-left:auto}

/* Recipe grid (matches cs-grid feel) */
.kf-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px;margin-bottom:36px}

.kf-card{
    --rc:#888;
    position:relative;display:flex;flex-direction:column;gap:12px;
    padding:18px 18px 14px;border-radius:16px;
    background:
        radial-gradient(120% 80% at 50% 0%, color-mix(in srgb,var(--rc) 14%,transparent), transparent 60%),
        linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.012));
    border:1px solid color-mix(in srgb,var(--rc) 14%,rgba(255,255,255,.06));
    overflow:hidden;cursor:default;isolation:isolate;
    transition:border-color .35s ease,transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .45s ease;
}
.kf-card:hover{
    transform:translateY(-3px);
    border-color:color-mix(in srgb,var(--rc) 38%,rgba(255,255,255,.1));
    box-shadow:
        0 22px 52px -28px color-mix(in srgb,var(--rc) 80%,transparent),
        0 0 0 1px color-mix(in srgb,var(--rc) 18%,transparent);
}
.kf-card::before{
    content:'';position:absolute;inset:-1px;border-radius:inherit;
    background:radial-gradient(80% 60% at 50% 0%,color-mix(in srgb,var(--rc) 32%,transparent),transparent 70%);
    pointer-events:none;opacity:.55;z-index:-1;
}
.kf-card-aura{
    position:absolute;inset:-30%;pointer-events:none;z-index:0;
    background:conic-gradient(from 0deg,
        transparent 0deg,
        color-mix(in srgb,var(--rc) 35%,transparent) 40deg,
        transparent 90deg,
        transparent 360deg);
    opacity:0;
    filter:blur(28px);
    animation:cs-aura-rotate 9s linear infinite;
    transition:opacity .4s ease;
}
.kf-card:hover .kf-card-aura{opacity:.55}

.kf-card-head{
    position:relative;z-index:1;
    display:flex;align-items:center;justify-content:space-between;gap:8px;
}
.kf-card-name{
    font-size:1rem;font-weight:800;color:#fff;letter-spacing:-.01em;
    text-transform:capitalize;
}

/* Stage: input → output, mirrors cs-showcase */
.kf-stage{
    --from:#888;--to:var(--rc);
    position:relative;z-index:1;
    display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;
    padding:14px 12px;border-radius:11px;
    background:
        radial-gradient(80% 80% at 50% 50%, color-mix(in srgb,var(--rc) 8%,transparent), transparent 70%),
        rgba(0,0,0,.3);
    border:1px solid color-mix(in srgb,var(--rc) 12%,rgba(255,255,255,.04));
    overflow:hidden;
}
.kf-stage::before{
    content:'';position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(90deg,
        color-mix(in srgb,var(--from) 10%,transparent),
        transparent 35%,transparent 65%,
        color-mix(in srgb,var(--to) 12%,transparent));
}
.kf-stage-arrow{
    display:flex;align-items:center;justify-content:center;
    color:rgba(255,255,255,.4);font-size:1.6rem;
    position:relative;z-index:1;
}

/* Foot text under role-fuse stage (warn line + clear) */
.kf-foot{
    position:relative;z-index:1;
    text-align:center;
    font-size:.68rem;font-weight:600;letter-spacing:.02em;
    margin-top:-4px;
}
.kf-foot.kf-warn{
    color:rgba(255,180,80,.7);
    display:flex;align-items:center;justify-content:center;gap:5px;
}
.kf-foot.kf-warn i{font-size:.9rem}
.kf-clear-link{
    background:none;border:none;cursor:pointer;padding:0;
    color:rgba(255,255,255,.55);font-size:.68rem;font-weight:700;
    text-decoration:underline;text-underline-offset:2px;text-decoration-color:rgba(255,255,255,.25);
}
.kf-clear-link:hover{color:#fff;text-decoration-color:rgba(255,255,255,.6)}

/* Key tile inside stage */
.kf-tile{
    --rc:#888;
    position:relative;z-index:1;
    display:flex;flex-direction:column;align-items:center;gap:5px;
    padding:10px 8px;border-radius:10px;
    background:
        radial-gradient(80% 80% at 50% 30%,color-mix(in srgb,var(--rc) 22%,transparent),transparent 70%),
        rgba(0,0,0,.35);
    border:1px solid color-mix(in srgb,var(--rc) 35%,rgba(255,255,255,.08));
    box-shadow:inset 0 1px 0 rgba(255,255,255,.06);
    transition:transform .25s ease,opacity .2s ease;
}
.kf-tile.dim{opacity:.55}
.kf-tile-img{
    display:flex;align-items:center;justify-content:center;
    width:48px;height:48px;border-radius:10px;
    background:rgba(0,0,0,.35);
    border:1px solid color-mix(in srgb,var(--rc) 35%,rgba(255,255,255,.1));
}
.kf-tile-img img{width:34px;height:34px;object-fit:contain;filter:drop-shadow(0 0 8px color-mix(in srgb,var(--rc) 60%,transparent))}
.kf-tile-name{font-size:.72rem;font-weight:800;color:#fff;letter-spacing:-.005em;text-align:center;line-height:1.1}
.kf-tile-x{
    font-size:.7rem;font-weight:800;color:#fff;font-variant-numeric:tabular-nums;
    background:rgba(0,0,0,.45);padding:1px 7px;border-radius:99px;
    border:1px solid color-mix(in srgb,var(--rc) 30%,rgba(255,255,255,.08));
}

/* Multi-key output wrapper */
.kf-multi-output{display:flex;gap:6px;align-items:center;justify-content:center}
/* Role-fuse stage variant */
.kf-stage-roles{padding:14px 12px}
.kf-rslots{
    display:flex;gap:6px;justify-content:center;align-items:center;flex-wrap:wrap;
    position:relative;z-index:1;
}
.kf-rslot{
    --rc:#888;
    width:54px;height:54px;border-radius:11px;
    display:flex;align-items:center;justify-content:center;
    background:rgba(0,0,0,.35);
    border:1px dashed rgba(255,255,255,.16);
    color:rgba(255,255,255,.35);font-size:1.4rem;font-weight:800;
    cursor:pointer;position:relative;overflow:hidden;
    transition:transform .15s ease,border-color .15s ease,background .15s ease,color .15s ease;
}
.kf-rslot:hover{
    transform:translateY(-1px);
    border-color:rgba(255,255,255,.32);
    color:rgba(255,255,255,.7);
    background:rgba(255,255,255,.03);
}
.kf-rslot.filled{
    border-style:solid;
    border-color:color-mix(in srgb,var(--rc) 55%,rgba(255,255,255,.12));
    background:
        radial-gradient(80% 80% at 50% 30%,color-mix(in srgb,var(--rc) 28%,transparent),transparent 70%),
        rgba(0,0,0,.45);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.08);
}
.kf-rslot.filled:hover{filter:brightness(1.1)}
.kf-rslot img{width:34px;height:34px;object-fit:contain}
.kf-rslot-dot{width:22px;height:22px;border-radius:50%}
.kf-rslot-tag{
    position:absolute;bottom:2px;right:4px;
    font-size:.55rem;font-weight:800;color:rgba(255,255,255,.92);
    text-shadow:0 1px 2px rgba(0,0,0,.85);
    background:rgba(0,0,0,.6);padding:0 4px;border-radius:3px;
}

/* CTA — mirror .cs-card-open */
.kf-cta{
    position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;
    width:100%;padding:14px 16px;border-radius:11px;cursor:pointer;
    background:linear-gradient(135deg,
        color-mix(in srgb,var(--rc) 80%,#000),
        color-mix(in srgb,var(--rc) 100%,#000) 60%,
        color-mix(in srgb,var(--rc) 70%,#000));
    color:#fff;font-weight:800;letter-spacing:-.01em;
    border:1px solid color-mix(in srgb,var(--rc) 60%,transparent);
    box-shadow:
        0 0 0 1px color-mix(in srgb,var(--rc) 30%,transparent),
        0 12px 30px -16px color-mix(in srgb,var(--rc) 90%,transparent),
        inset 0 1px 0 rgba(255,255,255,.18);
    transition:transform .15s ease,filter .15s ease,box-shadow .25s ease,background .25s ease;
    overflow:hidden;
}
.kf-cta::after{
    content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;
    background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.18) 50%,transparent 70%);
    transform:translateX(-100%);
    transition:transform .9s ease;
}
.kf-cta:hover:not(:disabled){
    transform:translateY(-1px);
    filter:brightness(1.08) saturate(1.1);
    box-shadow:
        0 0 0 1px color-mix(in srgb,var(--rc) 50%,transparent),
        0 18px 38px -16px color-mix(in srgb,var(--rc) 100%,transparent),
        inset 0 1px 0 rgba(255,255,255,.25);
}
.kf-cta:hover:not(:disabled)::after{transform:translateX(100%)}
.kf-cta:active:not(:disabled){transform:translateY(0)}
.kf-cta:disabled{
    cursor:not-allowed;
    background:rgba(255,255,255,.05);
    color:rgba(255,255,255,.3);
    border-color:rgba(255,255,255,.07);
    box-shadow:none;
    filter:none;
}
.kf-cta-label{font-size:.95rem;font-weight:800;letter-spacing:.02em}
.kf-cta-solo{justify-content:center}
.kf-cta-price{
    display:inline-flex;align-items:center;gap:6px;
    font-size:.95rem;font-weight:800;font-variant-numeric:tabular-nums;
}
.kf-cta-keyimg{
    display:inline-flex;align-items:center;justify-content:center;
    width:26px;height:26px;border-radius:7px;
    background:rgba(0,0,0,.45);
    border:1px solid rgba(255,255,255,.18);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.08);
}
.kf-cta-keyimg img{width:18px;height:18px;object-fit:contain;filter:drop-shadow(0 0 4px rgba(0,0,0,.55))}

/* Mobile */
@media (max-width:600px){
    .kf-stats{grid-template-columns:repeat(2,1fr)}
    .kf-grid{grid-template-columns:1fr;gap:14px}
    .kf-card{padding:16px 14px 14px}
    .kf-stage{padding:12px 10px 32px}
}

/* ----- Role picker modal (premium) ----- */
.kf-pick-overlay{
    --rc:#3da4ff;
    position:fixed;inset:0;z-index:1200;
    display:flex;align-items:center;justify-content:center;
    background:rgba(0,0,0,0);backdrop-filter:blur(0px);
    opacity:0;transition:background .3s ease,backdrop-filter .3s ease,opacity .25s ease;
    padding:24px;
}
.kf-pick-overlay.open{opacity:1;background:rgba(0,0,0,.78);backdrop-filter:blur(14px)}
.kf-pick-modal{
    --rc:#3da4ff;
    position:relative;
    width:min(720px,100%);max-height:86vh;
    display:flex;flex-direction:column;gap:14px;
    padding:22px;border-radius:18px;
    background:
        radial-gradient(120% 80% at 50% 0%, color-mix(in srgb,var(--rc) 16%,transparent), transparent 60%),
        linear-gradient(180deg,#16161e,#0e0e16);
    border:1px solid color-mix(in srgb,var(--rc) 24%,rgba(255,255,255,.08));
    box-shadow:
        0 30px 80px -20px rgba(0,0,0,.7),
        0 0 0 1px color-mix(in srgb,var(--rc) 14%,transparent),
        0 0 60px -20px color-mix(in srgb,var(--rc) 50%,transparent);
    overflow:hidden;isolation:isolate;
    transform:translateY(8px) scale(.985);
    transition:transform .3s cubic-bezier(.2,.7,.2,1),opacity .25s ease;
}
.kf-pick-overlay.open .kf-pick-modal{transform:translateY(0) scale(1)}
.kf-pick-aura{
    position:absolute;inset:-30%;pointer-events:none;z-index:0;
    background:conic-gradient(from 0deg,
        transparent 0deg,
        color-mix(in srgb,var(--rc) 32%,transparent) 60deg,
        transparent 120deg,
        transparent 360deg);
    opacity:.35;filter:blur(40px);
    animation:cs-aura-rotate 14s linear infinite;
}

.kf-pick-head{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:center;gap:12px}
.kf-pick-title{font-size:1.15rem;font-weight:800;color:#fff;letter-spacing:-.01em}
.kf-pick-title b{color:color-mix(in srgb,var(--rc) 80%,#fff)}
.kf-pick-close{
    background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);
    color:rgba(255,255,255,.6);font-size:1.2rem;cursor:pointer;
    width:32px;height:32px;border-radius:8px;
    display:flex;align-items:center;justify-content:center;
    transition:color .15s,background .15s,border-color .15s;
}
.kf-pick-close:hover{color:#fff;background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.16)}

.kf-pick-progress{position:relative;z-index:1;display:flex;align-items:center;gap:12px}
.kf-pick-progress-bar{
    flex:1;height:6px;border-radius:3px;
    background:rgba(255,255,255,.05);
    border:1px solid rgba(255,255,255,.06);
    overflow:hidden;
}
.kf-pick-progress-fill{
    height:100%;width:0%;border-radius:inherit;
    background:linear-gradient(90deg,
        color-mix(in srgb,var(--rc) 70%,#000),
        color-mix(in srgb,var(--rc) 100%,#000));
    box-shadow:0 0 12px color-mix(in srgb,var(--rc) 60%,transparent);
    transition:width .3s cubic-bezier(.2,.7,.2,1);
}
.kf-pick-progress-text{
    font-size:.72rem;font-weight:800;color:rgba(255,255,255,.85);
    font-variant-numeric:tabular-nums;letter-spacing:.04em;
    min-width:50px;text-align:right;
}

.kf-pick-grid{
    position:relative;z-index:1;
    display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px;
    overflow-y:auto;padding:2px 4px 2px 0;
    max-height:50vh;
}
.kf-pick-grid::-webkit-scrollbar{width:6px}
.kf-pick-grid::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);border-radius:3px}
.kf-pick-grid::-webkit-scrollbar-track{background:transparent}

.kf-pick-tile{
    --rc:#888;
    position:relative;
    display:flex;flex-direction:column;align-items:center;gap:6px;
    padding:12px 8px 10px;border-radius:11px;cursor:pointer;
    background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.012));
    border:1px solid rgba(255,255,255,.06);
    color:rgba(255,255,255,.9);
    transition:transform .15s,background .2s,border-color .2s,box-shadow .25s;
    overflow:hidden;
}
.kf-pick-tile::before{
    content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;
    background:radial-gradient(80% 60% at 50% 0%,color-mix(in srgb,var(--rc) 18%,transparent),transparent 70%);
    opacity:0;transition:opacity .25s ease;
}
.kf-pick-tile:hover{
    transform:translateY(-2px);
    background:rgba(255,255,255,.05);
    border-color:color-mix(in srgb,var(--rc) 30%,rgba(255,255,255,.14));
}
.kf-pick-tile:hover::before{opacity:.7}
.kf-pick-tile.sel{
    background:
        radial-gradient(80% 80% at 50% 0%,color-mix(in srgb,var(--rc) 24%,transparent),transparent 70%),
        rgba(255,255,255,.04);
    border-color:color-mix(in srgb,var(--rc) 60%,rgba(255,255,255,.18));
    box-shadow:
        0 0 0 1px color-mix(in srgb,var(--rc) 40%,transparent),
        0 12px 28px -12px color-mix(in srgb,var(--rc) 70%,transparent);
}
.kf-pick-tile.sel::before{opacity:1}
.kf-pick-tile.shake{animation:kf-shake .35s ease}
@keyframes kf-shake{
    10%,90%{transform:translateX(-1px)}
    20%,80%{transform:translateX(2px)}
    30%,50%,70%{transform:translateX(-3px)}
    40%,60%{transform:translateX(3px)}
}
.kf-pick-tile-icon{
    position:relative;z-index:1;
    width:46px;height:46px;border-radius:10px;
    display:flex;align-items:center;justify-content:center;
    background:rgba(0,0,0,.4);
    border:1px solid color-mix(in srgb,var(--rc) 22%,rgba(255,255,255,.06));
}
.kf-pick-tile-icon img{width:32px;height:32px;object-fit:contain}
.kf-pick-dot{width:24px;height:24px;border-radius:50%}
.kf-pick-tile-name{
    position:relative;z-index:1;
    font-size:.72rem;font-weight:700;text-align:center;line-height:1.15;
    max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    color:rgba(255,255,255,.92);
}
.kf-pick-tile-serial{
    position:relative;z-index:1;
    font-size:.6rem;color:rgba(255,255,255,.45);font-weight:700;
    font-variant-numeric:tabular-nums;
}
.kf-pick-tile-check{
    position:absolute;top:6px;right:6px;
    width:18px;height:18px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    background:color-mix(in srgb,var(--rc) 80%,#000);
    color:#fff;font-size:.85rem;
    opacity:0;transform:scale(.4);
    transition:opacity .2s ease,transform .2s cubic-bezier(.2,.7,.2,1);
    box-shadow:0 0 0 2px rgba(0,0,0,.5),0 0 12px color-mix(in srgb,var(--rc) 60%,transparent);
}
.kf-pick-tile.sel .kf-pick-tile-check{opacity:1;transform:scale(1)}

.kf-pick-foot{position:relative;z-index:1;display:flex;justify-content:flex-end;gap:8px}
.kf-pick-btn{
    padding:10px 22px;border-radius:9px;cursor:pointer;
    font-size:.82rem;font-weight:800;letter-spacing:.02em;
    background:linear-gradient(135deg,
        color-mix(in srgb,var(--rc) 80%,#000),
        color-mix(in srgb,var(--rc) 100%,#000));
    color:#fff;
    border:1px solid color-mix(in srgb,var(--rc) 50%,transparent);
    box-shadow:
        0 0 0 1px color-mix(in srgb,var(--rc) 25%,transparent),
        0 8px 22px -10px color-mix(in srgb,var(--rc) 80%,transparent),
        inset 0 1px 0 rgba(255,255,255,.18);
    transition:transform .15s,filter .15s,box-shadow .25s;
}
.kf-pick-btn:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.1) saturate(1.05)}
.kf-pick-btn:disabled{
    opacity:.4;cursor:not-allowed;
    background:rgba(255,255,255,.04);
    border-color:rgba(255,255,255,.08);
    box-shadow:none;color:rgba(255,255,255,.5);
}
.kf-pick-btn.ghost{
    background:rgba(255,255,255,.04);
    border-color:rgba(255,255,255,.08);
    color:rgba(255,255,255,.7);
    box-shadow:none;
}
.kf-pick-btn.ghost:hover:not(:disabled){background:rgba(255,255,255,.08);color:#fff}
.kf-pick-btn.ready{animation:kf-pick-ready 1.6s ease-in-out infinite}
@keyframes kf-pick-ready{
    0%,100%{box-shadow:0 0 0 1px color-mix(in srgb,var(--rc) 25%,transparent),0 8px 22px -10px color-mix(in srgb,var(--rc) 80%,transparent),inset 0 1px 0 rgba(255,255,255,.18)}
    50%{box-shadow:0 0 0 1px color-mix(in srgb,var(--rc) 50%,transparent),0 12px 32px -8px color-mix(in srgb,var(--rc) 100%,transparent),inset 0 1px 0 rgba(255,255,255,.25)}
}

@media (max-width:600px){
    .kf-pick-overlay{padding:12px}
    .kf-pick-modal{padding:16px;gap:12px}
    .kf-pick-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}
}

/* ----- Mint animation (after successful fuse) ----- */
.kf-mint-overlay{
    --rc:#3da4ff;
    position:fixed;inset:0;z-index:1400;
    display:flex;align-items:center;justify-content:center;
    background:rgba(0,0,0,0);backdrop-filter:blur(0);
    opacity:0;transition:background .3s ease,backdrop-filter .3s ease,opacity .3s ease;
    pointer-events:none;
}
.kf-mint-overlay.go{
    opacity:1;background:rgba(0,0,0,.55);backdrop-filter:blur(8px);
}
.kf-mint-overlay.out{opacity:0;background:rgba(0,0,0,0);backdrop-filter:blur(0)}

.kf-mint-stage{
    position:relative;width:300px;height:300px;
    display:flex;align-items:center;justify-content:center;
}
.kf-mint-rings,.kf-mint-sparks{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.kf-mint-ring{
    position:absolute;border-radius:50%;
    border:2px solid color-mix(in srgb,var(--rc) 70%,transparent);
    width:80px;height:80px;
    opacity:0;
}
.kf-mint-overlay.go .kf-mint-ring{
    animation:kf-mint-ring 1.4s cubic-bezier(.2,.6,.2,1) forwards;
}
.kf-mint-overlay.go .kf-mint-ring.r1{animation-delay:.05s}
.kf-mint-overlay.go .kf-mint-ring.r2{animation-delay:.25s;border-width:1.5px}
.kf-mint-overlay.go .kf-mint-ring.r3{animation-delay:.45s;border-width:1px}
@keyframes kf-mint-ring{
    0%{width:60px;height:60px;opacity:.0;border-color:color-mix(in srgb,var(--rc) 90%,#fff)}
    20%{opacity:.8}
    100%{width:280px;height:280px;opacity:0;border-color:color-mix(in srgb,var(--rc) 0%,#fff)}
}

.kf-mint-spark{
    position:absolute;width:6px;height:6px;border-radius:50%;
    background:color-mix(in srgb,var(--rc) 90%,#fff);
    box-shadow:0 0 12px color-mix(in srgb,var(--rc) 100%,transparent);
    transform:rotate(var(--ang)) translate(0,0);
    opacity:0;
}
.kf-mint-overlay.go .kf-mint-spark{
    animation:kf-mint-spark 1.2s cubic-bezier(.2,.6,.2,1) forwards;
    animation-delay:var(--d);
}
@keyframes kf-mint-spark{
    0%{transform:rotate(var(--ang)) translate(0,0) scale(.4);opacity:0}
    20%{opacity:1;transform:rotate(var(--ang)) translate(0,0) scale(1)}
    100%{transform:rotate(var(--ang)) translate(140px,0) scale(.2);opacity:0}
}

.kf-mint-key{
    position:relative;z-index:2;
    width:120px;height:120px;border-radius:24px;
    display:flex;align-items:center;justify-content:center;
    background:
        radial-gradient(70% 70% at 50% 35%,color-mix(in srgb,var(--rc) 35%,transparent),transparent 75%),
        linear-gradient(180deg,rgba(255,255,255,.06),rgba(0,0,0,.5));
    border:1px solid color-mix(in srgb,var(--rc) 55%,rgba(255,255,255,.18));
    box-shadow:
        0 0 0 1px color-mix(in srgb,var(--rc) 30%,transparent),
        0 30px 60px -10px color-mix(in srgb,var(--rc) 80%,transparent),
        0 0 80px color-mix(in srgb,var(--rc) 60%,transparent),
        inset 0 1px 0 rgba(255,255,255,.2);
    transform:scale(.2) rotate(-15deg);
    opacity:0;
}
.kf-mint-overlay.go .kf-mint-key{
    animation:kf-mint-key 1.5s cubic-bezier(.18,1.3,.4,1) forwards;
}
@keyframes kf-mint-key{
    0%{transform:scale(.2) rotate(-25deg);opacity:0}
    35%{transform:scale(1.15) rotate(8deg);opacity:1}
    55%{transform:scale(.95) rotate(-3deg);opacity:1}
    75%{transform:scale(1.04) rotate(1deg);opacity:1}
    100%{transform:scale(1) rotate(0);opacity:1}
}
.kf-mint-key img{
    width:80px;height:80px;object-fit:contain;
    filter:drop-shadow(0 0 16px color-mix(in srgb,var(--rc) 80%,transparent));
}
.kf-mint-key::after{
    content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;
    background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.35) 50%,transparent 70%);
    transform:translateX(-100%);
}
.kf-mint-overlay.go .kf-mint-key::after{
    animation:kf-mint-shine 1.2s ease forwards;
    animation-delay:.4s;
}
@keyframes kf-mint-shine{
    0%{transform:translateX(-100%)}
    100%{transform:translateX(100%)}
}

.kf-mint-label{
    position:absolute;bottom:-10px;left:50%;transform:translateX(-50%);
    font-size:1.05rem;font-weight:800;letter-spacing:.02em;
    color:#fff;white-space:nowrap;
    text-shadow:0 0 16px color-mix(in srgb,var(--rc) 80%,transparent),0 2px 8px rgba(0,0,0,.7);
    opacity:0;
}
.kf-mint-overlay.go .kf-mint-label{
    animation:kf-mint-label 1.4s ease forwards;
    animation-delay:.5s;
}
@keyframes kf-mint-label{
    0%{opacity:0;transform:translate(-50%,12px)}
    100%{opacity:1;transform:translate(-50%,0)}
}
@keyframes cs-chances-in{
    from{opacity:0;transform:translateY(-4px)}
    to{opacity:1;transform:none}
}
.cs-ch-list{
    list-style:none;padding:0;margin:0;
    display:flex;flex-direction:column;gap:4px;
    max-height:220px;overflow-y:auto;
    padding-right:4px;
}
.cs-ch-list::-webkit-scrollbar{width:5px}
.cs-ch-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.08);border-radius:3px}
.cs-ch-row{
    --rc:#888;
    display:grid;grid-template-columns:22px minmax(0,1fr) minmax(50px,90px) 48px;
    gap:9px;align-items:center;
    padding:6px 9px;border-radius:6px;
    background:rgba(255,255,255,.04);
    border:1px solid color-mix(in srgb,var(--rc) 16%,rgba(255,255,255,.06));
}
.cs-ch-icon{width:22px;height:22px;object-fit:contain;border-radius:4px}
.cs-ch-dot{width:14px;height:14px;border-radius:50%;background:var(--rc);justify-self:center}
.cs-ch-row > img{width:22px;height:22px;object-fit:contain;border-radius:4px}
.cs-ch-name{font-size:.74rem;font-weight:600;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cs-ch-bar{position:relative;height:5px;border-radius:3px;background:rgba(255,255,255,.05);overflow:hidden}
.cs-ch-bar-fill{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,var(--rc),color-mix(in srgb,var(--rc) 70%,#fff));border-radius:3px;min-width:2px}
.cs-ch-row.has-grad .cs-ch-bar-fill{background:linear-gradient(90deg,var(--g1),var(--g2))}
.cs-ch-pct{font-size:.74rem;font-weight:700;color:var(--t1);text-align:right;font-variant-numeric:tabular-nums}

/* ----- BIG case opening overlay ----- */
.cs-overlay{
    position:fixed;inset:0;z-index:1100;
    background:rgba(0,0,0,0);backdrop-filter:blur(0px);
    display:flex;align-items:center;justify-content:center;
    transition:background .35s ease,backdrop-filter .35s ease,opacity .25s ease;
}
.cs-overlay.cs-in{background:rgba(0,0,0,.96);backdrop-filter:blur(16px)}
.cs-overlay.cs-out{opacity:0}

.cs-stage{
    --rc:#fff;
    width:100%;max-width:1400px;padding:32px;
    position:relative;
    display:flex;flex-direction:column;align-items:stretch;gap:22px;
    transform:translateY(12px) scale(.98);opacity:0;
    transition:transform .45s cubic-bezier(.2,.7,.2,1),opacity .45s ease,filter .8s ease;
}
.cs-overlay.cs-in .cs-stage{transform:none;opacity:1}

.cs-reel-frame{
    position:relative;width:100%;height:240px;border-radius:16px;
    background:linear-gradient(180deg,#0d0d13,#090910);
    border:1px solid rgba(255,255,255,.07);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 0 0 1px rgba(0,0,0,.4);
    overflow:hidden;z-index:1;
}
.cs-reel{position:absolute;inset:0;overflow:hidden}
.cs-reel-track{position:absolute;left:0;top:50%;transform:translateY(-50%);display:flex;gap:10px;padding:0 10px;will-change:transform}
.cs-tile{
    --rc:#888;
    flex:0 0 196px;height:196px;border-radius:14px;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;
    background:linear-gradient(180deg,#111118 0%,#0c0c12 100%);
    border:1px solid rgba(255,255,255,.065);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.045),inset 0 -1px 0 rgba(0,0,0,.35);
    color:var(--t1);
    overflow:hidden;position:relative;user-select:none;
}
.cs-tile::before{content:'';position:absolute;inset:0;opacity:.12;background:linear-gradient(135deg,var(--rc),transparent 60%);pointer-events:none}
.cs-tile.has-grad{
    background:
        linear-gradient(155deg,
            color-mix(in srgb,var(--g1) 16%,#0d0d15),
            color-mix(in srgb,var(--g2) 10%,#0a0a14));
}
.cs-tile.has-grad::before{
    opacity:.28;
    background:linear-gradient(135deg,var(--g1),var(--g2));
    mix-blend-mode:overlay;
}
.cs-tile img{width:80px;height:80px;object-fit:contain;border-radius:14px;position:relative;z-index:1}
.cs-tile-dot{width:50px;height:50px;border-radius:50%;position:relative;z-index:1}
.cs-tile-name{font-size:.8rem;font-weight:700;color:var(--t1);max-width:170px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;position:relative;z-index:1}
/* On win we only dim the losing tiles — the frame itself stays neutral so
   the focus is purely on the winning tile, no full-bar border glow. */
.cs-reel-frame.cs-frame-reveal .cs-tile:not(.cs-tile-win){
    opacity:.18;filter:saturate(.4);
    transition:opacity .35s ease,filter .35s ease;
}

.cs-tile.cs-tile-win{
    border-color:transparent;
    background:rgba(255,255,255,.06);
    z-index:3;
    animation:cs-tile-impact 700ms cubic-bezier(.2,.8,.2,1) forwards,
              cs-tile-breathe 2.4s ease-in-out 700ms infinite;
}
.cs-tile.cs-tile-win::before{
    opacity:.7;
    background:linear-gradient(135deg, var(--g1), var(--g2));
    mix-blend-mode:overlay;
}
.cs-tile.cs-tile-win img{
    animation:cs-tile-pop 700ms cubic-bezier(.2,.9,.3,1.4) forwards;
    filter:drop-shadow(0 0 14px color-mix(in srgb,var(--g1) 70%,transparent))
           drop-shadow(0 0 28px color-mix(in srgb,var(--g2) 50%,transparent));
}
.cs-tile.cs-tile-win .cs-tile-name{
    color:#fff;
    text-shadow:0 0 14px color-mix(in srgb,var(--g1) 70%,transparent),
                0 0 24px color-mix(in srgb,var(--g2) 45%,transparent);
}

@keyframes cs-tile-pop{
    0%  {transform:scale(.45);opacity:.6}
    52% {transform:scale(1.26)}
    76% {transform:scale(.93)}
    100%{transform:scale(1)}
}
/* Box-shadow ring uses both gradient stops layered: g1 inside ring, g2 in
   the outer halo. Reads as a true gradient glow rather than a single colour. */
@keyframes cs-tile-impact{
    0%{
        transform:scale(.82);
        box-shadow:0 0 0 0 var(--g1), 0 0 0 0 transparent;
    }
    28%{
        transform:scale(1.3);
        box-shadow:
            0 0 0 2px var(--g1),
            0 0 0 5px color-mix(in srgb,var(--g2) 80%,transparent),
            0 0 44px color-mix(in srgb,var(--g1) 95%,transparent),
            0 0 120px color-mix(in srgb,var(--g2) 75%,transparent);
    }
    55%{
        transform:scale(1.06);
    }
    78%{
        transform:scale(1.13);
    }
    100%{
        transform:scale(1.1);
        box-shadow:
            0 0 0 1px var(--g1),
            0 0 0 2px color-mix(in srgb,var(--g2) 70%,transparent),
            0 0 22px color-mix(in srgb,var(--g1) 80%,transparent),
            0 0 64px color-mix(in srgb,var(--g2) 55%,transparent);
    }
}
@keyframes cs-tile-breathe{
    0%,100%{
        transform:scale(1.1);
        box-shadow:
            0 0 0 1px var(--g1),
            0 0 0 2px color-mix(in srgb,var(--g2) 70%,transparent),
            0 0 22px color-mix(in srgb,var(--g1) 80%,transparent),
            0 0 64px color-mix(in srgb,var(--g2) 55%,transparent);
    }
    50%{
        transform:scale(1.14);
        box-shadow:
            0 0 0 1px var(--g1),
            0 0 0 3px color-mix(in srgb,var(--g2) 85%,transparent),
            0 0 38px color-mix(in srgb,var(--g1) 100%,transparent),
            0 0 96px color-mix(in srgb,var(--g2) 70%,transparent);
    }
}

/* one-shot impact flash on landing */
.cs-tile-impact{
    position:absolute;inset:0;border-radius:inherit;pointer-events:none;
    background:radial-gradient(60% 60% at 50% 50%, rgba(255,255,255,.92), transparent 70%);
    animation:cs-flash-out 700ms ease-out forwards;
    z-index:2;mix-blend-mode:screen;
}
@keyframes cs-flash-out{
    0%{opacity:0;transform:scale(.5)}
    16%{opacity:1;transform:scale(1.1)}
    100%{opacity:0;transform:scale(2.6)}
}

/* ----- Spinning effects ----- */
/* Blur is applied during the high-speed cruise. Filter is animated via its
   own transition so the unblur can ease out smoothly instead of snapping. */
.cs-reel-track{transition:transform 0s, filter 1.1s cubic-bezier(.2,.7,.2,1)}
.cs-track-blur{filter:blur(2.6px) saturate(1.18)}
/* Pre-impact micro slow-mo: visually slows the last sliver of the spin. */
.cs-track-slo{transition-timing-function:cubic-bezier(.18,.9,.4,1) !important}

.cs-reel-frame.cs-frame-charging{
    animation:cs-frame-charge 320ms cubic-bezier(.4,.05,.6,1.2);
}
@keyframes cs-frame-charge{
    0%{box-shadow:0 0 0 0 transparent;border-color:rgba(255,255,255,.08)}
    100%{
        box-shadow:0 0 0 1px rgba(255,255,255,.22), inset 0 0 50px rgba(255,255,255,.05);
        border-color:rgba(255,255,255,.18);
    }
}

/* Tense buildup before landing — narrows attention and dims surroundings. */
.cs-stage.cs-stage-tense{
    transition:filter .9s ease;
    filter:contrast(1.06) brightness(.88) saturate(1.05);
}

/* Vignette: pulls focus to the frame after landing. */
.cs-stage-vignette{
    --rc:#fff;
    position:absolute;inset:-80px;pointer-events:none;z-index:0;
    background:
        radial-gradient(50% 45% at 50% 50%, transparent 38%,
            color-mix(in srgb,var(--rc) 6%,transparent) 60%,
            rgba(0,0,0,.7) 100%);
    opacity:0;
    animation:cs-vignette-in 700ms ease-out forwards;
}
@keyframes cs-vignette-in{to{opacity:1}}

/* Multi-layer flash overlays. */
.cs-stage-flash.cs-flash-white{
    background:
        radial-gradient(35% 35% at 50% 50%, rgba(255,255,255,.98), transparent 70%),
        radial-gradient(80% 80% at 50% 50%, rgba(255,255,255,.45), transparent 60%);
}
.cs-stage-flash.cs-flash-color{
    --rc:#fff;
    background:
        radial-gradient(50% 45% at 50% 50%, color-mix(in srgb,var(--rc) 75%,transparent), transparent 70%),
        radial-gradient(85% 85% at 50% 50%, color-mix(in srgb,var(--rc) 30%,transparent), transparent 60%);
    animation:cs-stage-flash-color 1100ms cubic-bezier(.2,.7,.3,1) forwards;
}
@keyframes cs-stage-flash-color{
    0%{opacity:0;transform:scale(.75)}
    16%{opacity:1;transform:scale(1.05)}
    100%{opacity:0;transform:scale(1.24)}
}

/* Rotating light rays behind the winning tile — alternates between both
   gradient stops so the rays read as the role's full colour. */
.cs-tile-rays{
    position:absolute;inset:-60%;border-radius:50%;pointer-events:none;
    background:conic-gradient(from 0deg,
        var(--g1) 0deg, transparent 14deg, transparent 36deg,
        var(--g2) 50deg, transparent 64deg, transparent 86deg,
        var(--g1) 100deg, transparent 114deg, transparent 136deg,
        var(--g2) 150deg, transparent 164deg, transparent 186deg,
        var(--g1) 200deg, transparent 214deg, transparent 236deg,
        var(--g2) 250deg, transparent 264deg, transparent 286deg,
        var(--g1) 300deg, transparent 314deg, transparent 336deg,
        var(--g2) 350deg);
    opacity:0;
    animation:cs-rays-in 700ms ease-out forwards,
              cs-rays-rotate 9s linear infinite 700ms;
    z-index:0;
    filter:blur(2px) brightness(1.1);
    mix-blend-mode:screen;
}
@keyframes cs-rays-in{
    0%{opacity:0;transform:scale(.5)}
    50%{opacity:.85}
    100%{opacity:.55;transform:scale(1)}
}
@keyframes cs-rays-rotate{
    from{transform:scale(1) rotate(0deg)}
    to{transform:scale(1) rotate(360deg)}
}

/* Shockwave rings emanating from the winning tile. */
.cs-tile-wave{
    position:absolute;inset:0;border-radius:inherit;pointer-events:none;
    border:3px solid var(--g1);
    box-shadow:
        0 0 30px var(--g1),
        0 0 60px color-mix(in srgb,var(--g2) 70%,transparent),
        inset 0 0 16px var(--g2);
    z-index:1;
    animation:cs-wave 1100ms cubic-bezier(.2,.65,.3,1) forwards;
}
.cs-tile-wave.cs-tile-wave-fast{
    animation:cs-wave 800ms cubic-bezier(.2,.65,.3,1) forwards;
    border-width:2px;
    border-color:var(--g2);
}
@keyframes cs-wave{
    0%{transform:scale(.4);opacity:1}
    100%{transform:scale(3.4);opacity:0}
}

.cs-reel-marker{
    position:absolute;left:50%;top:-6px;bottom:-6px;width:3px;
    background:linear-gradient(180deg,transparent,#fff 12%,#fff 88%,transparent);
    transform:translateX(-50%);z-index:5;opacity:.85;pointer-events:none;
    box-shadow:0 0 18px rgba(255,255,255,.45);
    transition:filter .12s ease,box-shadow .12s ease,opacity .12s ease;
}
.cs-reel-marker::before,
.cs-reel-marker::after{
    content:'';position:absolute;left:50%;width:0;height:0;
    border-left:7px solid transparent;border-right:7px solid transparent;
    transform:translateX(-50%);
}
.cs-reel-marker::before{top:-2px;border-top:9px solid #fff;filter:drop-shadow(0 0 6px rgba(255,255,255,.6))}
.cs-reel-marker::after{bottom:-2px;border-bottom:9px solid #fff;filter:drop-shadow(0 0 6px rgba(255,255,255,.6))}
.cs-reel-marker.cs-marker-tick{
    box-shadow:0 0 36px rgba(255,255,255,.95),0 0 70px rgba(255,255,255,.5);
    filter:brightness(2.4);
}
.cs-reel-marker.cs-marker-land{
    animation:cs-marker-land 800ms cubic-bezier(.2,.8,.3,1) forwards;
}
@keyframes cs-marker-land{
    0%{box-shadow:0 0 0 0 var(--rc, #fff);filter:brightness(2)}
    40%{box-shadow:0 0 60px var(--rc, #fff);filter:brightness(1.6)}
    100%{box-shadow:0 0 18px rgba(255,255,255,.45);filter:brightness(1)}
}

/* ----- Stage burst (base flash; layered with cs-flash-white/color) ----- */
.cs-stage-flash{
    position:absolute;inset:-60px;border-radius:24px;pointer-events:none;z-index:2;
    animation:cs-stage-flash 750ms ease-out forwards;
    mix-blend-mode:screen;
}
@keyframes cs-stage-flash{
    0%{opacity:0;transform:scale(.82)}
    16%{opacity:1;transform:scale(1.03)}
    100%{opacity:0;transform:scale(1.18)}
}

/* ----- Stage thud on win — vertical drop, not position jitter ----- */
.cs-stage.cs-stage-shake{
    animation:cs-stage-thud 750ms cubic-bezier(.2,.8,.3,1);
}
@keyframes cs-stage-thud{
    0%  {transform:translate3d(0,0,0) scale(1)}
    9%  {transform:translate3d(0,-10px,0) scale(.962)}
    24% {transform:translate3d(0,5px,0) scale(1.028)}
    42% {transform:translate3d(0,-3px,0) scale(.990)}
    62% {transform:translate3d(0,2px,0) scale(1.007)}
    82% {transform:translate3d(0,-1px,0) scale(.999)}
    100%{transform:translate3d(0,0,0) scale(1)}
}

/* ----- Sparks (replace confetti — circular, float upward, glow in role color) ----- */
.cs-confetti-layer{position:fixed;inset:0;pointer-events:none;z-index:1200;overflow:hidden}
.cs-confetti{
    position:absolute;border-radius:50%;
    transform:translate(-50%,-50%);
    animation:cs-spark-float var(--dur,1.3s) cubic-bezier(.2,.7,.32,1) forwards;
    will-change:transform,opacity;
    box-shadow:0 0 7px 2px currentColor;
    filter:blur(.4px);
}
@keyframes cs-spark-float{
    0%{
        transform:translate(-50%,-50%) scale(0);
        opacity:1;
    }
    16%{
        transform:translate(calc(-50% + var(--dx)*.22),calc(-50% + var(--dy)*.22)) scale(1.4);
        opacity:1;
    }
    100%{
        transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy) - 130px)) scale(.06);
        opacity:0;
    }
}
.cs-reel-fade{position:absolute;top:0;bottom:0;width:140px;pointer-events:none;z-index:4}
.cs-reel-fade-l{left:0;background:linear-gradient(90deg,#000 10%,transparent)}
.cs-reel-fade-r{right:0;background:linear-gradient(270deg,#000 10%,transparent)}

.cs-prize{
    --rc:#888;
    display:none;align-items:center;gap:24px;
    padding:24px 28px;border-radius:18px;
    background:linear-gradient(135deg,color-mix(in srgb,var(--rc) 12%,#0a0a0a),#0a0a0a);
    border:1px solid color-mix(in srgb,var(--rc) 30%,rgba(255,255,255,.06));
    box-shadow:0 30px 80px -30px color-mix(in srgb,var(--rc) 60%,transparent);
    position:relative;overflow:hidden;
    opacity:0;transform:translateY(8px);
    transition:opacity .4s ease,transform .4s ease;
    margin:0 auto;min-width:480px;max-width:720px;
}
.cs-prize.cs-prize-show{display:flex;opacity:1;transform:none}
.cs-prize-img{width:84px;height:84px;object-fit:contain;border-radius:14px;position:relative;z-index:1;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.08)}
.cs-prize-meta{display:flex;flex-direction:column;gap:6px;position:relative;z-index:1;flex:1}
.cs-prize-name{font-size:1.6rem;font-weight:800;color:var(--t1);letter-spacing:-.02em}
.cs-prize-tier{font-size:.74rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--rc)}
.cs-prize-serial{font-size:.85rem;color:var(--t2)}
.cs-prize-serial code{background:rgba(255,255,255,.08);padding:2px 8px;border-radius:5px;color:var(--t1);font-weight:700;font-family:inherit;text-shadow:0 0 6px var(--rc),0 0 2px var(--rc)}

@media(max-width:600px){
    .cs-grid{grid-template-columns:1fr}
    .cs-prize{min-width:0;width:100%;flex-direction:column;text-align:center;gap:12px;padding:18px}
    .cs-prize-name{font-size:1.2rem}
}

/* ===========================================================
   Case-open result card (post-reel summary)
   =========================================================== */
.cs-result{
    --rc:#888;--g1:#888;--g2:#888;
    position:absolute;left:50%;top:50%;
    transform:translate(-50%,calc(-50% + 44px)) scale(.72);
    width:min(440px,92vw);
    display:flex;flex-direction:column;align-items:center;gap:14px;
    padding:34px 28px 22px;border-radius:22px;
    background:
        radial-gradient(120% 80% at 0% 0%, color-mix(in srgb,var(--g1) 26%,transparent), transparent 60%),
        radial-gradient(120% 80% at 100% 0%, color-mix(in srgb,var(--g2) 22%,transparent), transparent 60%),
        linear-gradient(180deg,#15151d 0%,#0c0c14 100%);
    border:1px solid color-mix(in srgb,var(--g1) 38%,rgba(255,255,255,.08));
    box-shadow:
        0 0 0 1px color-mix(in srgb,var(--g2) 28%,transparent),
        0 40px 90px -22px rgba(0,0,0,.85),
        0 -10px 80px -16px color-mix(in srgb,var(--g1) 60%,transparent),
        0 30px 80px -16px color-mix(in srgb,var(--g2) 50%,transparent);
    opacity:0;
    transition:opacity .32s ease,transform .72s cubic-bezier(.1,1.65,.34,1);
    z-index:5;
    text-align:center;
    overflow:hidden;
    isolation:isolate;
}
.cs-result.cs-result-in{
    opacity:1;
    transform:translate(-50%,-50%) scale(1);
}

/* Top accent bar — a clean tier-color stripe across the top edge. */
.cs-result::before{
    content:'';position:absolute;left:14%;right:14%;top:0;height:2px;border-radius:0 0 4px 4px;
    background:linear-gradient(90deg,
        transparent,
        color-mix(in srgb,var(--g1) 90%,#fff) 35%,
        color-mix(in srgb,var(--g2) 90%,#fff) 65%,
        transparent);
    box-shadow:
        0 0 18px color-mix(in srgb,var(--g1) 70%,transparent),
        0 0 32px color-mix(in srgb,var(--g2) 50%,transparent);
    z-index:2;
}

/* Diffuse top glow behind everything. */
.cs-result-glow{
    position:absolute;inset:0;pointer-events:none;z-index:0;
    background:
        radial-gradient(60% 60% at 28% 0%,color-mix(in srgb,var(--g1) 38%,transparent),transparent 70%),
        radial-gradient(60% 60% at 72% 0%,color-mix(in srgb,var(--g2) 32%,transparent),transparent 70%);
    opacity:.65;
}

/* Slow rotating conic rays behind the icon — alternates between both
   gradient stops so the godrays read as the role's full colour, not one tint. */
.cs-result-rays{
    position:absolute;left:50%;top:90px;width:340px;height:340px;
    transform:translate(-50%,-50%);
    pointer-events:none;z-index:0;
    background:conic-gradient(from 0deg,
        transparent 0deg,
        color-mix(in srgb,var(--g1) 28%,transparent) 30deg,
        transparent 60deg,
        transparent 150deg,
        color-mix(in srgb,var(--g2) 22%,transparent) 200deg,
        transparent 240deg,
        transparent 360deg);
    opacity:.6;
    filter:blur(14px);
    animation:cs-result-rays-spin 12s linear infinite;
}
@keyframes cs-result-rays-spin{to{transform:translate(-50%,-50%) rotate(360deg)}}

.cs-result-icon-wrap{
    position:relative;z-index:1;
    width:120px;height:120px;
    display:flex;align-items:center;justify-content:center;
    margin-bottom:2px;
}
/* Icon stands alone — no plate, no ring. PNG transparency reads cleanly,
   and the godrays + outer glow already provide the lighting around it. */
.cs-result-icon{
    position:relative;z-index:1;
    width:120px;height:120px;
    display:flex;align-items:center;justify-content:center;
}
.cs-result-icon img{
    width:104px;height:104px;object-fit:contain;
    filter:drop-shadow(0 0 18px color-mix(in srgb,var(--g1) 90%,transparent))
           drop-shadow(0 0 38px color-mix(in srgb,var(--g2) 60%,transparent))
           drop-shadow(0 0 70px color-mix(in srgb,var(--g1) 35%,transparent))
           drop-shadow(0 6px 14px rgba(0,0,0,.6));
}
.cs-result-dot{width:56px;height:56px;border-radius:50%}

.cs-result-eyebrow{
    position:relative;z-index:1;
    font-size:.7rem;font-weight:800;letter-spacing:.34em;text-transform:uppercase;
    color:color-mix(in srgb,var(--rc) 65%,#fff);
    text-shadow:0 0 14px color-mix(in srgb,var(--rc) 50%,transparent);
    padding:0 4px;
    margin-top:4px;
}

.cs-result-name{
    position:relative;z-index:1;
    font-size:1.7rem;font-weight:800;color:#fff;letter-spacing:-.015em;line-height:1.1;
    word-break:break-word;
    text-shadow:
        0 0 24px color-mix(in srgb,var(--rc) 70%,transparent),
        0 2px 8px rgba(0,0,0,.5);
    margin:6px 0 0;
}

.cs-result-serial{
    position:relative;z-index:1;
    display:inline-flex;align-items:center;gap:8px;
    font-size:.74rem;color:rgba(255,255,255,.55);
    font-weight:700;letter-spacing:.12em;text-transform:uppercase;
    background:rgba(255,255,255,.04);
    padding:6px 12px 6px 12px;border-radius:999px;
    border:1px solid color-mix(in srgb,var(--rc) 22%,rgba(255,255,255,.06));
}
.cs-result-serial-label{opacity:.7}
.cs-result-serial code{
    background:transparent;padding:0;border:0;
    color:#fff;font-weight:800;font-family:inherit;
    font-variant-numeric:tabular-nums;letter-spacing:.02em;
    text-shadow:0 0 10px color-mix(in srgb,var(--rc) 80%,transparent);
}

/* Dismiss X button — top right corner of result card */
.cs-result-dismiss{
    position:absolute;top:12px;right:12px;z-index:3;
    width:28px;height:28px;border-radius:50%;
    background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);
    color:rgba(255,255,255,.4);font-size:.85rem;line-height:1;
    display:flex;align-items:center;justify-content:center;
    cursor:pointer;transition:color .15s,background .15s,border-color .15s;
}
.cs-result-dismiss:hover{
    color:#fff;background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);
}
.cs-result-close{
    position:relative;z-index:1;
    margin-top:6px;
    display:inline-flex;align-items:center;gap:8px;
    padding:11px 32px;border-radius:50px;cursor:pointer;
    background:linear-gradient(160deg,
        color-mix(in srgb,var(--rc) 52%,#0a0a18),
        color-mix(in srgb,var(--rc) 72%,#141428) 48%,
        color-mix(in srgb,var(--rc) 48%,#0c0c1e));
    color:#fff;font-weight:700;font-size:.82rem;letter-spacing:.08em;text-transform:uppercase;
    border:1px solid color-mix(in srgb,var(--rc) 50%,transparent);
    box-shadow:
        0 0 0 1px color-mix(in srgb,var(--rc) 22%,transparent),
        0 10px 24px -8px color-mix(in srgb,var(--rc) 70%,transparent),
        inset 0 1px 0 rgba(255,255,255,.2),
        inset 0 -1px 0 rgba(0,0,0,.2);
    transition:transform .18s,filter .2s;
}
.cs-result-close:hover{
    transform:translateY(-1px);
    filter:brightness(1.08) saturate(.9);
}
.cs-result-close:active{transform:translateY(0)}

/* Staggered entrance for the inner pieces. */
.cs-result .cs-result-icon-wrap,
.cs-result .cs-result-eyebrow,
.cs-result .cs-result-name,
.cs-result .cs-result-serial,
.cs-result .cs-result-close{
    opacity:0;transform:translateY(10px);
    transition:opacity .36s ease,transform .48s cubic-bezier(.15,1.2,.38,1);
}
.cs-result.cs-result-in .cs-result-icon-wrap{opacity:1;transform:none;transition-delay:.04s}
.cs-result.cs-result-in .cs-result-eyebrow{opacity:1;transform:none;transition-delay:.14s}
.cs-result.cs-result-in .cs-result-name{opacity:1;transform:none;transition-delay:.2s}
.cs-result.cs-result-in .cs-result-serial{opacity:1;transform:none;transition-delay:.28s}
.cs-result.cs-result-in .cs-result-close{opacity:1;transform:none;transition-delay:.38s}
/* Icon pops independently with a spring once the wrap has faded in */
.cs-result-icon img,
.cs-result-icon .cs-result-dot{
    animation:none;
}
.cs-result-in .cs-result-icon img,
.cs-result-in .cs-result-icon .cs-result-dot{
    animation:cs-result-icon-emerge .6s cubic-bezier(.14,.9,.3,1.48) .1s both;
}
@keyframes cs-result-icon-emerge{
    0%  {transform:scale(.32);opacity:0}
    55% {transform:scale(1.2);opacity:1}
    80% {transform:scale(.94)}
    100%{transform:scale(1)}
}

@media (max-width:600px){
    .cs-result{
        width:calc(100vw - 28px);
        padding:26px 20px 18px;border-radius:18px;
        gap:10px;
    }
    .cs-result-rays{top:74px;width:260px;height:260px}
    .cs-result-icon-wrap{width:104px;height:104px}
    .cs-result-icon{width:104px;height:104px}
    .cs-result-icon img{width:88px;height:88px}
    .cs-result-name{font-size:1.32rem}
    .cs-result-eyebrow{font-size:.62rem;letter-spacing:.28em}
    .cs-result-close{padding:11px 22px;font-size:.78rem}
}

/* =====================================================================
   GRADIENT ROLE STYLING — applied to any element with `.has-grad`.
   The element must also set --g1 and --g2 via inline style. Uses
   mask-composite for a true gradient border on rounded elements.
   ===================================================================== */

/* Animated gradient role NAME (used in marquee places only — result card,
   craft animation label). For most cards we use box gradients instead. */
.rl-grad-name{
    background:linear-gradient(135deg,var(--g1),var(--g2));
    -webkit-background-clip:text;
    background-clip:text;
    -webkit-text-fill-color:transparent;
    color:transparent;
    font-weight:800;
    background-size:200% 200%;
    animation:rl-grad-shift 8s ease-in-out infinite;
}
@keyframes rl-grad-shift{
    0%,100%{background-position:0% 50%}
    50%{background-position:100% 50%}
}

/* Gradient border on any role card. Add `.has-grad` to the element and
   set --g1 / --g2 inline. The border replaces the existing solid border;
   the existing background, glow, and other styling is preserved. */
.has-grad{
    position:relative;
    border-color:transparent !important;
}
/* Use a wrapper pseudo-element with mask-composite so we can paint a
   gradient border on rounded elements without touching the background. */
.has-grad > .has-grad-border,
.has-grad::after{
    content:'';
    position:absolute;inset:0;
    border-radius:inherit;
    padding:1.5px;
    background:linear-gradient(135deg,var(--g1),var(--g2));
    -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
    -webkit-mask-composite:xor;
            mask-composite:exclude;
    pointer-events:none;
    z-index:5;
    opacity:.9;
    transition:opacity .25s,filter .25s;
}
.has-grad:hover::after{opacity:1}
/* Thinner gradient border for small row-shaped elements */
.cs-ch-row.has-grad::after{padding:1px;opacity:.7}
.cs-ch-row.has-grad:hover::after{opacity:.95}
/* For tiles that already have full gradient backgrounds, hide the border ring */
.cs-show-tile.has-grad::after,
.cs-tile.has-grad::after{display:none}
/* Decorative-only tiles (case showcase carousel, reel tiles) — no hover glow */
.cs-show-tile.has-grad:hover,.cs-tile.has-grad:hover{box-shadow:none}
.cs-show-tile.has-grad:hover::after,.cs-tile.has-grad:hover::after{opacity:0}

/* =====================================================================
   CRAFTING TABLE PAGE
   ===================================================================== */
.ct-page{
    max-width:960px;margin:0 auto;padding:28px 20px 60px;
}
.ct-page-head{
    margin-bottom:32px;
    display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
}
.ct-owner-bar{display:flex;gap:8px;align-items:center}
.ct-owner-toggle{
    display:inline-flex;align-items:center;gap:8px;
    padding:8px 14px;border-radius:999px;
    background:rgba(255,255,255,.04);
    border:1px solid rgba(255,255,255,.08);
    color:rgba(255,255,255,.55);
    font-size:.66rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
    cursor:pointer;
    transition:background .2s,border-color .2s,color .2s;
}
.ct-owner-toggle:hover{background:rgba(255,255,255,.07);color:rgba(255,255,255,.8)}
.ct-owner-toggle-dot{
    width:8px;height:8px;border-radius:50%;
    background:rgba(255,255,255,.3);
    transition:background .25s,box-shadow .25s;
}
.ct-owner-toggle.on{
    background:color-mix(in srgb,#3da4ff 20%,transparent);
    border-color:color-mix(in srgb,#3da4ff 50%,rgba(255,255,255,.15));
    color:#cee6ff;
}
.ct-owner-toggle.on .ct-owner-toggle-dot{
    background:#3da4ff;
    box-shadow:0 0 8px #3da4ff;
}

/* Section blocks within the crafting page (key forge, role recipes) */
.ct-section-block{
    margin-top:32px;
}
.ct-section-block:first-of-type{margin-top:0}
.ct-section-head{
    margin-bottom:16px;
    padding-bottom:14px;
    border-bottom:1px solid rgba(255,255,255,.06);
}
.ct-section-title{
    font-size:1.05rem;font-weight:800;letter-spacing:-.005em;
    color:rgba(255,255,255,.92);
    margin:0 0 4px;
}
.ct-section-sub{
    font-size:.78rem;color:rgba(255,255,255,.45);
    margin:0;line-height:1.45;
}
.ct-keys-page{display:flex;flex-direction:column;gap:18px}

/* Divider between role fusion and key fusion sections */
.ct-divider{
    position:relative;
    margin:54px auto;
    width:min(100%,640px);
    height:22px;
    display:flex;align-items:center;justify-content:center;
    pointer-events:none;
    --ctd:rgba(255,255,255,.10);
    --ctd-strong:rgba(255,255,255,.22);
}
.ct-divider::before,
.ct-divider::after{
    content:'';
    flex:1;
    height:1px;
    background:linear-gradient(90deg,transparent,var(--ctd) 18%,var(--ctd-strong) 100%);
}
.ct-divider::after{
    background:linear-gradient(90deg,var(--ctd-strong) 0%,var(--ctd) 82%,transparent);
}
.ct-divider-glyph{
    position:relative;
    width:22px;height:22px;
    margin:0 16px;
    flex-shrink:0;
    display:grid;place-items:center;
}
.ct-divider-glyph::before{
    content:'';
    position:absolute;
    inset:5px;
    background:linear-gradient(135deg,rgba(255,255,255,.55),rgba(255,255,255,.18));
    border:1px solid rgba(255,255,255,.28);
    border-radius:2px;
    transform:rotate(45deg);
    box-shadow:
        0 0 14px rgba(255,255,255,.10),
        inset 0 0 6px rgba(255,255,255,.18);
}
.ct-divider-glyph::after{
    content:'';
    position:absolute;
    width:4px;height:4px;
    border-radius:50%;
    background:#fff;
    opacity:.85;
    box-shadow:0 0 10px rgba(255,255,255,.55);
}
@media (max-width:720px){
    .ct-divider{margin:36px auto;width:100%}
    .ct-divider-glyph{margin:0 12px}
}

/* Grid of craft recipe cards */
.ct-grid{
    display:flex;
    flex-direction:column;
    gap:18px;
}
.ct-empty{
    text-align:center;color:rgba(255,255,255,.35);
    font-size:.9rem;padding:60px 20px;
}

/* Recipe card */
.ct-card{
    --rc:#888;
    position:relative;display:flex;flex-direction:column;gap:14px;
    padding:18px 20px 16px;border-radius:16px;
    background:
        radial-gradient(110% 70% at 50% 0%, color-mix(in srgb,var(--rc) 14%,transparent), transparent 55%),
        linear-gradient(170deg,rgba(255,255,255,.05) 0%,rgba(255,255,255,.015) 100%);
    border:1px solid color-mix(in srgb,var(--rc) 28%,rgba(255,255,255,.08));
    overflow:hidden;isolation:isolate;
    transition:border-color .35s,transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .45s,background .35s;
}
/* Crafting cards keep the original tier-color look — no gradient overlay */
.ct-card.has-grad{border-color:color-mix(in srgb,var(--rc) 28%,rgba(255,255,255,.08))!important}
.ct-card.has-grad::after{display:none}
.ct-card:hover{
    transform:translateY(-4px);
    border-color:color-mix(in srgb,var(--rc) 45%,rgba(255,255,255,.15));
    box-shadow:0 24px 56px -24px color-mix(in srgb,var(--rc) 60%,transparent);
}
.ct-card-aura{
    position:absolute;inset:-40%;pointer-events:none;z-index:0;
    background:conic-gradient(from 0deg,
        transparent 0deg,
        color-mix(in srgb,var(--rc) 35%,transparent) 45deg,
        transparent 100deg,transparent 360deg);
    opacity:0;filter:blur(40px);
    animation:cs-aura-rotate 12s linear infinite;
    transition:opacity .5s;
}
.ct-card:hover .ct-card-aura{opacity:.45}

.ct-card-head{
    position:relative;z-index:1;
    font-size:.85rem;font-weight:800;letter-spacing:-.01em;
    color:#fff;
    padding-bottom:10px;
    border-bottom:1px solid color-mix(in srgb,var(--rc) 18%,rgba(255,255,255,.06));
}

/* Stage: inputs → output */
.ct-stage{
    position:relative;z-index:1;
    display:flex;align-items:center;gap:14px;
    justify-content:center;
}
.ct-inputs{display:flex;gap:12px;flex-wrap:nowrap}
.ct-arrow{
    display:flex;align-items:center;justify-content:center;
    color:rgba(255,255,255,.25);font-size:1.4rem;
    flex-shrink:0;width:28px;
}
.ct-output{display:flex;align-items:center}


/* Individual slot */
.ct-slot{
    --rc:#888;
    position:relative;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
    width:70px;min-height:78px;border-radius:12px;
    padding:8px 6px 7px;
    border:1.5px dashed color-mix(in srgb,var(--rc) 30%,rgba(255,255,255,.1));
    background:color-mix(in srgb,var(--rc) 5%,transparent);
    cursor:pointer;
    transition:border-color .2s,background .25s,transform .15s,box-shadow .2s;
    text-align:center;
}
.ct-slot.output{
    cursor:default;
    border-style:solid;
    border-color:color-mix(in srgb,var(--rc) 50%,rgba(255,255,255,.18));
    background:color-mix(in srgb,var(--rc) 10%,transparent);
    box-shadow:0 0 18px -6px color-mix(in srgb,var(--rc) 45%,transparent);
}
/* Crafting slots keep the original look (no full gradient background) */
.ct-slot.has-grad::after{display:none}
.ct-slot.has-grad{border-color:color-mix(in srgb,var(--rc) 35%,rgba(255,255,255,.12))!important}
.ct-slot.has-grad.filled,.ct-slot.has-grad.output{
    border-color:color-mix(in srgb,var(--rc) 55%,rgba(255,255,255,.2))!important;
}
.ct-slot.empty:hover:not(:disabled){
    border-color:color-mix(in srgb,var(--rc) 70%,rgba(255,255,255,.3));
    background:color-mix(in srgb,var(--rc) 14%,transparent);
    transform:translateY(-2px);
    box-shadow:0 6px 20px -6px color-mix(in srgb,var(--rc) 50%,transparent);
}
.ct-slot.filled{
    border-style:solid;
    border-color:color-mix(in srgb,var(--rc) 60%,rgba(255,255,255,.22));
    background:color-mix(in srgb,var(--rc) 12%,transparent);
    box-shadow:0 4px 16px -5px color-mix(in srgb,var(--rc) 40%,transparent);
    cursor:default;
}
.ct-slot.ct-slot-missing{opacity:.4;cursor:not-allowed}
.ct-slot-icon{
    width:32px;height:32px;
    display:flex;align-items:center;justify-content:center;
}
.ct-slot-icon img{width:32px;height:32px;object-fit:contain;filter:drop-shadow(0 0 5px color-mix(in srgb,var(--rc) 65%,transparent))}
.ct-slot-dot{width:24px;height:24px;border-radius:50%}
.ct-slot-name{
    font-size:.62rem;font-weight:800;
    color:#fff;letter-spacing:-.005em;line-height:1.1;text-align:center;
}
.ct-slot-serial{
    font-size:.62rem;font-weight:800;color:#fff;font-variant-numeric:tabular-nums;
    background:rgba(0,0,0,.45);padding:1px 7px;border-radius:99px;
    border:1px solid color-mix(in srgb,var(--rc) 30%,rgba(255,255,255,.08));
}
.ct-slot-lock{font-size:.6rem;font-weight:700;color:rgba(255,255,255,.5);letter-spacing:-.005em;margin-top:1px}
.ct-slot-clear{
    position:absolute;top:4px;right:5px;
    width:18px;height:18px;border-radius:50%;
    background:rgba(255,255,255,.08);border:none;
    font-size:.72rem;color:rgba(255,255,255,.45);
    display:flex;align-items:center;justify-content:center;
    cursor:pointer;padding:0;line-height:1;
    transition:background .15s,color .15s;
}
.ct-slot-clear:hover{background:rgba(255,60,60,.35);color:#fff}

/* Craft button */
.ct-cta{
    position:relative;z-index:1;width:100%;
    padding:14px 0;border-radius:12px;
    background:linear-gradient(135deg,
        color-mix(in srgb,var(--rc) 35%,rgba(0,0,0,.5)),
        color-mix(in srgb,var(--rc) 20%,rgba(0,0,0,.6))
    );
    border:1.5px solid color-mix(in srgb,var(--rc) 50%,rgba(255,255,255,.15));
    color:#fff;font-size:.95rem;font-weight:800;letter-spacing:.02em;
    cursor:pointer;
    transition:background .22s,border-color .22s,transform .15s,box-shadow .22s;
}
.ct-cta:not(:disabled):hover{
    background:linear-gradient(135deg,
        color-mix(in srgb,var(--rc) 55%,rgba(0,0,0,.3)),
        color-mix(in srgb,var(--rc) 38%,rgba(0,0,0,.4))
    );
    border-color:color-mix(in srgb,var(--rc) 80%,rgba(255,255,255,.35));
    transform:translateY(-2px);
    box-shadow:0 10px 32px -8px color-mix(in srgb,var(--rc) 65%,transparent);
}
.ct-cta:disabled{
    opacity:.4;cursor:not-allowed;transform:none;box-shadow:none;
    font-size:.85rem;font-weight:700;
}

/* =====================================================================
   CRAFT ANIMATION OVERLAY (cx-*)
   ===================================================================== */
.cx-overlay{
    --rc:#9c6cff;--g1:#9c6cff;--g2:#5b8cff;
    position:fixed;inset:0;z-index:10000;
    display:flex;align-items:center;justify-content:center;
    pointer-events:none;
    opacity:0;transition:opacity .35s ease;
}
.cx-overlay.cx-show{opacity:1;pointer-events:auto}
.cx-overlay.cx-out{opacity:0;transition:opacity .4s ease}

.cx-bg{
    position:absolute;inset:0;
    background:
        radial-gradient(ellipse at 50% 50%,
            color-mix(in srgb,var(--rc) 22%,rgba(0,0,0,.85)) 0%,
            rgba(0,0,0,.92) 60%,
            rgba(0,0,0,.96) 100%);
    backdrop-filter:blur(10px);
    -webkit-backdrop-filter:blur(10px);
}
.cx-vignette{
    position:absolute;inset:0;
    background:radial-gradient(circle at 50% 50%,transparent 30%,rgba(0,0,0,.55) 90%);
    pointer-events:none;
}

.cx-stage{
    position:relative;width:560px;max-width:90vw;height:560px;max-height:90vh;
    display:flex;align-items:center;justify-content:center;
}

/* INPUTS — bare icons (no boxy background), float in from above their final
   positions, drift to centre on .cx-pull, vanish on .cx-burst. */
.cx-inputs{
    position:absolute;inset:0;
    display:flex;align-items:center;justify-content:center;
    pointer-events:none;
}
.cx-input{
    --rc:#888;
    position:absolute;
    top:50%;left:50%;
    width:96px;height:96px;
    transform:translate(calc(-50% + (var(--ofs) * 220px)), calc(-50% - 80px)) scale(.6);
    opacity:0;
    display:flex;align-items:center;justify-content:center;
    transition:transform 1s cubic-bezier(.16,.78,.21,1),opacity .55s ease;
    z-index:2;
}
.cx-input img{
    width:96px;height:96px;object-fit:contain;
    filter:drop-shadow(0 0 14px color-mix(in srgb,var(--rc) 75%,transparent))
           drop-shadow(0 0 28px color-mix(in srgb,var(--rc) 35%,transparent))
           drop-shadow(0 6px 12px rgba(0,0,0,.45));
    animation:cx-input-bob 2.2s ease-in-out infinite;
    animation-delay:calc(var(--i) * 0.18s);
}
@keyframes cx-input-bob{
    0%,100%{transform:translateY(0)}
    50%{transform:translateY(-8px)}
}
.cx-overlay.cx-show .cx-input{
    opacity:1;
    transform:translate(calc(-50% + (var(--ofs) * 170px)), -50%) scale(1);
    transition-delay:calc(var(--i) * 90ms);
}
.cx-overlay.cx-pull .cx-input{
    opacity:1;
    transform:translate(calc(-50% + (var(--ofs) * 50px)), -50%) scale(.78);
    transition:transform .75s cubic-bezier(.5,0,.4,1),opacity .35s ease;
}
.cx-overlay.cx-pull .cx-input img{
    animation:cx-input-pulse .35s ease-in-out infinite alternate;
}
@keyframes cx-input-pulse{
    from{filter:drop-shadow(0 0 14px color-mix(in srgb,var(--rc) 75%,transparent))
               drop-shadow(0 0 28px color-mix(in srgb,var(--rc) 35%,transparent))
               drop-shadow(0 6px 12px rgba(0,0,0,.45))}
    to{filter:drop-shadow(0 0 24px color-mix(in srgb,var(--rc) 95%,#fff))
              drop-shadow(0 0 48px color-mix(in srgb,var(--rc) 55%,transparent))
              drop-shadow(0 6px 12px rgba(0,0,0,.45))
              brightness(1.25)}
}
.cx-overlay.cx-burst .cx-input{
    opacity:0;
    transform:translate(-50%,-50%) scale(.15);
    transition:transform .4s cubic-bezier(.7,-.15,.95,.5),opacity .3s ease;
}
.cx-overlay.cx-burst .cx-input img{animation:none}

/* FLASH — bright burst at the moment of collision */
.cx-flash{
    position:absolute;top:50%;left:50%;
    width:60px;height:60px;border-radius:50%;
    transform:translate(-50%,-50%) scale(0);
    background:radial-gradient(circle,#fff 0%,color-mix(in srgb,var(--g1) 60%,#fff) 35%,transparent 75%);
    filter:blur(8px);
    opacity:0;pointer-events:none;
    z-index:3;
}
.cx-overlay.cx-burst .cx-flash{
    animation:cx-flash-pop .65s cubic-bezier(.2,.7,.2,1) forwards;
}
@keyframes cx-flash-pop{
    0%{opacity:0;transform:translate(-50%,-50%) scale(0)}
    25%{opacity:1;transform:translate(-50%,-50%) scale(8)}
    100%{opacity:0;transform:translate(-50%,-50%) scale(14)}
}

/* CINEMATIC LETTERBOX BARS — slide in on burst, hold through reveal */
.cx-bar{
    position:absolute;left:0;right:0;
    height:14vh;min-height:80px;
    background:linear-gradient(to bottom,#000 0%,rgba(0,0,0,.85) 100%);
    z-index:5;pointer-events:none;
    transition:transform .8s cubic-bezier(.4,0,.2,1);
}
.cx-bar-top{top:0;transform:translateY(-100%);
    background:linear-gradient(to bottom,#000 0%,rgba(0,0,0,.85) 100%)}
.cx-bar-bot{bottom:0;transform:translateY(100%);
    background:linear-gradient(to top,#000 0%,rgba(0,0,0,.85) 100%)}
.cx-overlay.cx-burst .cx-bar-top,
.cx-overlay.cx-reveal .cx-bar-top{transform:translateY(0)}
.cx-overlay.cx-burst .cx-bar-bot,
.cx-overlay.cx-reveal .cx-bar-bot{transform:translateY(0)}

/* GODRAY — vertical light cone behind the icon, fades in on reveal */
.cx-godray{
    position:absolute;top:50%;left:50%;
    width:340px;height:760px;
    transform:translate(-50%,-50%) scale(.6);
    background:
        radial-gradient(50% 70% at 50% 50%,
            color-mix(in srgb,var(--g1) 40%,transparent) 0%,
            color-mix(in srgb,var(--g2) 18%,transparent) 35%,
            transparent 75%);
    filter:blur(20px);
    opacity:0;pointer-events:none;
    z-index:1;
    transition:opacity 1.1s ease,transform 1.4s cubic-bezier(.2,.7,.2,1);
}
.cx-overlay.cx-reveal .cx-godray{
    opacity:1;
    transform:translate(-50%,-50%) scale(1);
    animation:cx-godray-breathe 5.5s ease-in-out 1.4s infinite;
}
@keyframes cx-godray-breathe{
    0%,100%{opacity:.85;filter:blur(20px)}
    50%{opacity:1;filter:blur(28px)}
}

/* DRIFTING EMBERS — slow upward float through the godray for depth */
.cx-embers{
    position:absolute;top:50%;left:50%;
    width:0;height:0;
    pointer-events:none;
    z-index:2;
    opacity:0;
    transition:opacity .9s ease .4s;
}
.cx-overlay.cx-reveal .cx-embers{opacity:1}
.cx-ember{
    position:absolute;top:0;left:0;
    width:var(--sz);height:var(--sz);border-radius:50%;
    background:linear-gradient(135deg,var(--g1),var(--g2));
    box-shadow:0 0 8px color-mix(in srgb,var(--g1) 80%,transparent),
               0 0 16px color-mix(in srgb,var(--g2) 50%,transparent);
    opacity:0;
}
.cx-overlay.cx-reveal .cx-ember{
    animation:cx-ember-rise var(--dur) ease-in-out var(--d) infinite;
}
@keyframes cx-ember-rise{
    0%{opacity:0;transform:translate(calc(var(--x) - var(--drift)),200px) scale(.6)}
    15%{opacity:.9}
    85%{opacity:.7}
    100%{opacity:0;transform:translate(var(--x),-260px) scale(1)}
}

/* SHOCKWAVE — single dramatic ring expanding outward on reveal */
.cx-shockwave{
    position:absolute;top:50%;left:50%;
    width:140px;height:140px;border-radius:50%;
    transform:translate(-50%,-50%) scale(0);
    border:2px solid color-mix(in srgb,var(--rc) 80%,#fff);
    box-shadow:
        0 0 32px color-mix(in srgb,var(--g1) 70%,transparent),
        inset 0 0 32px color-mix(in srgb,var(--g2) 50%,transparent);
    opacity:0;pointer-events:none;
    z-index:3;
}
.cx-overlay.cx-reveal .cx-shockwave{
    animation:cx-shockwave-pulse 1.4s cubic-bezier(.15,.7,.2,1) forwards;
}
@keyframes cx-shockwave-pulse{
    0%  {opacity:0;transform:translate(-50%,-50%) scale(0)}
    20% {opacity:1;transform:translate(-50%,-50%) scale(1)}
    100%{opacity:0;transform:translate(-50%,-50%) scale(6.5);border-width:1px}
}

/* OUTPUT — the icon hero. Appears after the shockwave with a soft settle. */
.cx-output{
    position:relative;
    width:240px;height:240px;
    display:flex;align-items:center;justify-content:center;
    opacity:0;transform:translateY(-32px) scale(.7);
    transition:opacity .7s ease .15s,
               transform .9s cubic-bezier(.18,1.1,.25,1) .15s;
    z-index:4;
}
.cx-overlay.cx-reveal .cx-output{opacity:1;transform:translateY(0) scale(1)}

/* HALO — soft ambient glow that breathes behind the icon */
.cx-halo{
    position:absolute;top:50%;left:50%;
    width:280px;height:280px;border-radius:50%;
    transform:translate(-50%,-50%) scale(.8);
    background:radial-gradient(circle at 50% 50%,
        color-mix(in srgb,var(--g1) 35%,transparent) 0%,
        color-mix(in srgb,var(--g2) 18%,transparent) 38%,
        transparent 70%);
    filter:blur(14px);
    opacity:0;pointer-events:none;
    z-index:1;
    transition:opacity .9s ease .3s,transform 1.1s cubic-bezier(.2,.8,.2,1) .3s;
}
.cx-overlay.cx-reveal .cx-halo{
    opacity:1;
    transform:translate(-50%,-50%) scale(1);
    animation:cx-halo-breathe 3.4s ease-in-out 1.3s infinite;
}
@keyframes cx-halo-breathe{
    0%,100%{transform:translate(-50%,-50%) scale(1);opacity:.95}
    50%{transform:translate(-50%,-50%) scale(1.08);opacity:1}
}

.cx-output-orb{
    width:160px;height:160px;
    display:flex;align-items:center;justify-content:center;
    position:relative;z-index:2;
    /* No background or border — icon stands alone so PNG transparency
       (Galaxy / Bloo) reads cleanly. */
}
.cx-output-orb img{
    width:150px;height:150px;object-fit:contain;
    filter:drop-shadow(0 0 18px var(--g1))
           drop-shadow(0 0 38px var(--g2))
           drop-shadow(0 0 80px color-mix(in srgb,var(--g1) 55%,transparent))
           drop-shadow(0 8px 14px rgba(0,0,0,.55));
    animation:cx-orb-bob 4s ease-in-out 1.4s infinite;
}
@keyframes cx-orb-bob{
    0%,100%{transform:translateY(0)}
    50%{transform:translateY(-6px)}
}

/* BURST PARTICLES — fire outward at impact, no bursts during quiet reveal */
.cx-output-particles{
    position:absolute;top:50%;left:50%;
    width:0;height:0;
    pointer-events:none;
    z-index:3;
}
.cx-particle{
    position:absolute;top:0;left:0;
    width:7px;height:7px;border-radius:50%;
    margin:-3px;
    background:linear-gradient(135deg,var(--g1),var(--g2));
    box-shadow:0 0 10px color-mix(in srgb,var(--rc) 80%,#fff);
    opacity:0;transform:translate(0,0) scale(0);
}
.cx-overlay.cx-reveal .cx-particle{
    animation:cx-particle-fly var(--dur) cubic-bezier(.18,.7,.3,1) var(--d) forwards;
}
@keyframes cx-particle-fly{
    0%  {opacity:1;transform:translate(0,0) scale(1.5)}
    65% {opacity:.85}
    100%{opacity:0;
        transform:translate(
            calc(cos(var(--ang)) * var(--dist)),
            calc(sin(var(--ang)) * var(--dist))
        ) scale(.15);
    }
}

/* Responsive */
@media(max-width:600px){
    .ct-grid{grid-template-columns:1fr}
    .ct-stage{flex-direction:column;align-items:flex-start}
    .ct-arrow{transform:rotate(90deg)}
    .cx-stage{width:100%;height:100%}
    .cx-input{width:84px;height:84px;border-radius:18px}
    .cx-input img{width:60px;height:60px}
    .cx-overlay.cx-show .cx-input{transform:translate(calc(-50% + (var(--ofs) * 110px)), -50%) scale(1)}
    .cx-overlay.cx-pull .cx-input{transform:translate(calc(-50% + (var(--ofs) * 50px)), -50%) scale(.85)}
    .cx-output{width:200px;height:200px}
    .cx-output-orb{width:140px;height:140px}
    .cx-output-orb img{width:120px;height:120px}
    .cx-godray{width:240px;height:540px}
    .cx-halo{width:220px;height:220px}
    .cx-bar{height:10vh;min-height:60px}
}

/* =====================================================================
   TRADING V2 (tv2-*) — marketplace-first redesign
   ===================================================================== */

.tv2-page{max-width:1180px;margin:0 auto;padding:36px 22px 80px}

/* ── HEAD ─────────────────────────────────────────────────────────── */
.tv2-head{
    display:flex;align-items:center;gap:16px;
    margin-bottom:18px;flex-wrap:wrap;
}
.tv2-head .page-heading{margin:0;flex:1;min-width:0}
.tv2-create{
    display:inline-flex;align-items:center;gap:8px;
    padding:10px 16px;border-radius:99px;
    border:1px solid rgba(254,74,120,.30);
    background:linear-gradient(135deg,rgba(254,74,120,.18),rgba(156,108,255,.14));
    color:#fff;font:inherit;font-size:.82rem;font-weight:700;
    letter-spacing:-.005em;cursor:pointer;
    transition:transform .15s ease,box-shadow .2s ease,border-color .2s ease;
    box-shadow:0 6px 22px -10px rgba(254,74,120,.55);
}
.tv2-create i{font-size:1.1rem}
.tv2-create:hover{
    transform:translateY(-1px);
    border-color:rgba(254,74,120,.55);
    box-shadow:0 10px 30px -10px rgba(254,74,120,.7);
}

/* ── TABS ─────────────────────────────────────────────────────────── */
.tv2-tabs{
    display:flex;gap:4px;
    margin-bottom:18px;
    padding:4px;border-radius:12px;
    background:rgba(255,255,255,.025);
    border:1px solid rgba(255,255,255,.05);
    width:fit-content;
}
.tv2-tab{
    display:inline-flex;align-items:center;gap:8px;
    padding:8px 14px;border-radius:9px;
    background:transparent;border:0;
    color:rgba(255,255,255,.55);
    font:inherit;font-size:.8rem;font-weight:700;letter-spacing:-.005em;
    cursor:pointer;
    transition:background .15s ease,color .15s ease;
}
.tv2-tab i{font-size:1rem}
.tv2-tab:hover{color:#fff}
.tv2-tab.is-active{
    background:rgba(255,255,255,.06);
    color:#fff;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.04);
}
.tv2-tab-count{
    font-size:.65rem;font-weight:800;
    padding:2px 7px;border-radius:99px;
    background:rgba(255,255,255,.07);
    color:rgba(255,255,255,.65);
    font-variant-numeric:tabular-nums;letter-spacing:0;
    min-width:14px;text-align:center;line-height:1.2;
}
.tv2-tab-count:empty{display:none}
.tv2-tab.is-active .tv2-tab-count{
    background:rgba(254,74,120,.16);
    color:#ffb6cc;
}

/* ── FILTER BAR ────────────────────────────────────────────────────── */
.tv2-filterbar{
    display:flex;align-items:center;gap:10px;
    margin-bottom:14px;flex-wrap:wrap;
}
.tv2-search-wrap{
    flex:1;min-width:220px;position:relative;
}
.tv2-search-icon{
    position:absolute;left:12px;top:50%;transform:translateY(-50%);
    color:rgba(255,255,255,.32);font-size:1rem;pointer-events:none;
    transition:color .2s ease;
}
.tv2-search{
    width:100%;padding:10px 14px 10px 38px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.06);
    border-radius:10px;
    color:#fff;font-size:.85rem;font-family:inherit;
    outline:none;
    transition:border-color .2s ease,background .2s ease;
}
.tv2-search::placeholder{color:rgba(255,255,255,.32);font-weight:500}
.tv2-search:focus{border-color:rgba(255,255,255,.22);background:rgba(255,255,255,.05)}
.tv2-search-wrap:focus-within .tv2-search-icon{color:rgba(255,255,255,.6)}

.tv2-filter-right{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.tv2-filter-pill{
    display:inline-flex;align-items:center;gap:6px;
    padding:8px 12px;border-radius:99px;
    border:1px solid rgba(255,255,255,.06);
    background:rgba(255,255,255,.03);
    color:rgba(255,255,255,.55);
    font:inherit;font-size:.74rem;font-weight:700;letter-spacing:-.005em;
    cursor:pointer;
    transition:all .15s ease;
}
.tv2-filter-pill i{font-size:.95rem;color:rgba(255,255,255,.4)}
.tv2-filter-pill:hover{color:#fff;border-color:rgba(255,255,255,.14)}
.tv2-filter-pill.is-on{
    color:#fff;
    background:linear-gradient(135deg,rgba(74,200,140,.12),rgba(74,200,140,.06));
    border-color:rgba(74,200,140,.35);
}
.tv2-filter-pill.is-on i{color:#5ed397}

.tv2-sort{
    appearance:none;-webkit-appearance:none;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.06);
    color:#fff;font-family:inherit;
    font-size:.74rem;font-weight:600;
    padding:8px 30px 8px 12px;border-radius:10px;
    cursor:pointer;outline:none;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path fill='%23999' d='M0 0l5 6 5-6z'/></svg>");
    background-repeat:no-repeat;background-position:right 10px center;
}
.tv2-sort:hover{background-color:rgba(255,255,255,.06)}
.tv2-sort:focus{border-color:rgba(255,255,255,.22)}
.tv2-sort option{background:#16161c;color:#fff}

.tv2-counter{
    font-size:.72rem;font-weight:600;
    color:rgba(255,255,255,.32);
    margin-bottom:10px;letter-spacing:.005em;
}

/* ── GRID + CARDS ─────────────────────────────────────────────────── */
.tv2-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(340px,1fr));
    gap:14px;
}
.tv2-grid-skel{
    display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px;
}
.tv2-card-skel{
    height:170px;border-radius:14px;
    background:linear-gradient(110deg,rgba(255,255,255,.02) 30%,rgba(255,255,255,.05) 50%,rgba(255,255,255,.02) 70%);
    background-size:200% 100%;
    animation:ixSkel 1.4s linear infinite;
    border:1px solid rgba(255,255,255,.04);
}

.tv2-empty{
    grid-column:1/-1;
    text-align:center;padding:64px 20px;
    color:rgba(255,255,255,.42);
}
.tv2-empty i{font-size:2.4rem;color:rgba(255,255,255,.18);display:block;margin-bottom:10px}
.tv2-empty-title{font-size:1rem;font-weight:800;color:#fff;letter-spacing:-.01em;margin-bottom:4px}
.tv2-empty-sub{font-size:.82rem;color:rgba(255,255,255,.4)}

.tv2-section{margin-bottom:22px}
.tv2-section-head{
    display:flex;align-items:baseline;gap:10px;
    margin:6px 2px 10px;
    font-size:.74rem;font-weight:800;
    color:rgba(255,255,255,.55);
    text-transform:lowercase;letter-spacing:.04em;
}
.tv2-section-n{
    font-size:.66rem;font-weight:800;
    padding:1px 7px;border-radius:99px;
    background:rgba(255,255,255,.05);
    color:rgba(255,255,255,.55);
    letter-spacing:0;
    font-variant-numeric:tabular-nums;
}

/* ── CARD ─────────────────────────────────────────────────────────── */
.tv2-card{
    position:relative;
    border-radius:14px;
    background:rgba(255,255,255,.025);
    border:1px solid rgba(255,255,255,.05);
    padding:14px 16px;
    cursor:pointer;
    isolation:isolate;
    overflow:hidden;
    transition:transform .18s ease,border-color .2s ease,background .2s ease;
}
.tv2-card:hover{
    transform:translateY(-2px);
    border-color:rgba(255,255,255,.12);
    background:rgba(255,255,255,.04);
}
.tv2-card.is-acceptable{
    border-color:rgba(74,200,140,.28);
    background:linear-gradient(140deg,rgba(74,200,140,.05),rgba(255,255,255,.025));
}
.tv2-card.is-acceptable:hover{
    border-color:rgba(74,200,140,.45);
    box-shadow:0 8px 30px -14px rgba(74,200,140,.4);
}
.tv2-card-glow{
    position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;
    z-index:0;opacity:0;
    background:radial-gradient(60% 60% at 50% 0%,rgba(255,255,255,.04),transparent 60%);
    transition:opacity .25s ease;
}
.tv2-card:hover .tv2-card-glow{opacity:1}
.tv2-card > *{position:relative;z-index:1}

.tv2-card-head{
    display:flex;align-items:center;gap:10px;
    margin-bottom:12px;
}
.tv2-card-user{
    display:flex;align-items:center;gap:8px;
    flex:1;min-width:0;
}
.tv2-card-user img{
    width:24px;height:24px;border-radius:50%;
    object-fit:cover;
    background:rgba(255,255,255,.06);
}
.tv2-card-avphfb{
    width:24px;height:24px;border-radius:50%;
    background:rgba(255,255,255,.05);
    display:inline-flex;align-items:center;justify-content:center;
    color:rgba(255,255,255,.5);font-size:.85rem;
}
.tv2-card-user span{
    font-size:.82rem;font-weight:700;color:#fff;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    letter-spacing:-.005em;
}

.tv2-card-meta{display:flex;align-items:center;gap:8px;flex-shrink:0}
.tv2-card-age{
    font-size:.68rem;font-weight:600;color:rgba(255,255,255,.32);
    letter-spacing:.005em;
}

.tv2-tag{
    display:inline-flex;align-items:center;gap:4px;
    font-size:.62rem;font-weight:800;letter-spacing:.04em;
    padding:3px 8px;border-radius:99px;text-transform:lowercase;
}
.tv2-tag i{font-size:.78rem}
.tv2-tag-go{background:rgba(74,200,140,.13);color:#5ed397;border:1px solid rgba(74,200,140,.25)}
.tv2-tag-pub{background:rgba(108,156,255,.13);color:#9bb5ff;border:1px solid rgba(108,156,255,.25)}
.tv2-tag-out{background:rgba(254,74,120,.12);color:#ffb6cc;border:1px solid rgba(254,74,120,.22)}
.tv2-tag-in{background:rgba(255,200,90,.12);color:#ffd07a;border:1px solid rgba(255,200,90,.22)}

.tv2-card-trade{
    display:grid;
    grid-template-columns:1fr auto 1fr;
    gap:10px;align-items:start;
}
.tv2-card-side{min-width:0}
.tv2-card-label{
    font-size:.66rem;font-weight:800;color:rgba(255,255,255,.4);
    letter-spacing:.06em;text-transform:lowercase;
    margin-bottom:6px;
    display:flex;align-items:center;gap:6px;
}
.tv2-card-pills{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.tv2-card-arrow{
    align-self:center;
    font-size:1.4rem;color:rgba(255,255,255,.22);
    transition:color .2s ease,transform .2s ease;
}
.tv2-card:hover .tv2-card-arrow{color:rgba(255,255,255,.5);transform:translateX(2px)}

/* ── PILLS ────────────────────────────────────────────────────────── */
.tv2-pill{
    display:inline-flex;align-items:center;gap:5px;
    padding:4px 9px;border-radius:99px;
    background:color-mix(in srgb,var(--rc) 14%,rgba(255,255,255,.04));
    border:1px solid color-mix(in srgb,var(--rc) 30%,rgba(255,255,255,.06));
    font-size:.7rem;font-weight:700;color:#fff;
    letter-spacing:-.005em;
    max-width:100%;
}
.tv2-pill.has-grad{
    background:linear-gradient(110deg,
        color-mix(in srgb,var(--g1) 22%,rgba(255,255,255,.04)),
        color-mix(in srgb,var(--g2) 22%,rgba(255,255,255,.04)));
    border-color:color-mix(in srgb,var(--g1) 32%,rgba(255,255,255,.06));
}
.tv2-pill > span{
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    max-width:140px;
}
.tv2-pill-icon{width:14px;height:14px;object-fit:contain;flex-shrink:0}
.tv2-pill-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.tv2-pill-serial{
    font-size:.6rem;font-weight:800;color:rgba(255,255,255,.6);
    background:rgba(0,0,0,.25);
    padding:1px 5px;border-radius:99px;
    letter-spacing:0;font-variant-numeric:tabular-nums;
}
.tv2-pill-qty{
    font-size:.6rem;font-weight:800;
    background:rgba(0,0,0,.3);color:#fff;
    padding:1px 5px;border-radius:99px;
}
.tv2-pill-empty{
    background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.06);
    color:rgba(255,255,255,.32);font-weight:700;
}
.tv2-or{
    display:inline-flex;align-items:center;
    font-size:.6rem;font-weight:800;color:rgba(255,255,255,.5);
    text-transform:uppercase;letter-spacing:.1em;
    padding:0 4px;
}
.tv2-mode-tag{
    font-size:.55rem;font-weight:800;letter-spacing:.08em;
    padding:1px 6px;border-radius:99px;text-transform:uppercase;
    background:rgba(108,156,255,.13);color:#9bb5ff;
    margin-left:5px;
}

/* ── DRAWER ──────────────────────────────────────────────────────── */
.tv2-drawer-host{margin-top:14px}
.tv2-drawer{
    position:relative;
    border-radius:18px;
    background:rgba(255,255,255,.02);
    border:1px solid color-mix(in srgb,var(--rc) 18%,rgba(255,255,255,.06));
    overflow:hidden;
    opacity:0;transform:translateY(-8px);
    transition:opacity .25s ease,transform .3s cubic-bezier(.2,.7,.2,1);
    isolation:isolate;
}
.tv2-drawer.is-open{opacity:1;transform:none}
.tv2-drawer.is-closing{opacity:0;transform:translateY(-8px)}
.tv2-drawer.has-grad{
    background:linear-gradient(155deg,
        color-mix(in srgb,var(--g1) 10%,#0c0c14),
        color-mix(in srgb,var(--g2) 6%,#0a0a14));
    border-color:color-mix(in srgb,var(--g1) 22%,rgba(255,255,255,.06));
}
.tv2-drawer-bg{
    position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;z-index:0;
    background:radial-gradient(60% 50% at 0% 0%,color-mix(in srgb,var(--rc) 18%,transparent),transparent 60%);
}
.tv2-drawer.has-grad .tv2-drawer-bg{
    background:
        radial-gradient(60% 50% at 0% 0%,color-mix(in srgb,var(--g1) 22%,transparent),transparent 60%),
        radial-gradient(60% 50% at 100% 100%,color-mix(in srgb,var(--g2) 22%,transparent),transparent 60%);
}

.tv2-drawer-head{
    position:relative;z-index:1;
    display:flex;align-items:center;
    padding:16px 20px;
    border-bottom:1px solid color-mix(in srgb,var(--rc) 12%,rgba(255,255,255,.04));
}
.tv2-drawer-title{
    font-size:.95rem;font-weight:800;color:#fff;
    letter-spacing:-.01em;text-transform:lowercase;
    flex:1;
}
.tv2-drawer-close{
    width:32px;height:32px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    background:rgba(255,255,255,.05);
    border:1px solid rgba(255,255,255,.08);
    color:rgba(255,255,255,.6);
    font-size:1.2rem;line-height:1;cursor:pointer;
    transition:background .15s ease,color .15s ease,border-color .15s ease;
}
.tv2-drawer-close:hover{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.18)}

.tv2-drawer-body{
    position:relative;z-index:1;
    padding:18px 20px;
    max-height:560px;overflow-y:auto;
}
.tv2-drawer-foot{
    position:relative;z-index:1;
    padding:14px 20px;
    border-top:1px solid rgba(255,255,255,.05);
    display:flex;justify-content:flex-end;gap:8px;
    flex-wrap:wrap;
}
.tv2-drawer-foot:empty{display:none}

/* Detail user header */
.tv2-d-user{
    display:flex;align-items:center;gap:12px;
    margin-bottom:18px;
}
.tv2-d-user img{
    width:42px;height:42px;border-radius:50%;
    object-fit:cover;
    background:rgba(255,255,255,.05);
    border:1px solid rgba(255,255,255,.08);
}
.tv2-d-userph{
    width:42px;height:42px;border-radius:50%;
    background:rgba(255,255,255,.06);
}
.tv2-d-user-meta{display:flex;flex-direction:column;gap:2px;min-width:0}
.tv2-d-user-name{
    font-size:.95rem;font-weight:800;color:#fff;
    letter-spacing:-.01em;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.tv2-d-user-time{
    font-size:.7rem;font-weight:600;color:rgba(255,255,255,.4);
}

.tv2-d-trade{
    display:flex;flex-direction:column;gap:10px;
}
.tv2-d-side{
    padding:14px 16px;border-radius:12px;
    background:rgba(255,255,255,.025);
    border:1px solid rgba(255,255,255,.05);
}
.tv2-d-label{
    font-size:.7rem;font-weight:800;color:rgba(255,255,255,.45);
    letter-spacing:.06em;text-transform:lowercase;
    margin-bottom:8px;
    display:flex;align-items:center;gap:6px;
}
.tv2-d-pills{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.tv2-d-arrow{
    text-align:center;
    color:rgba(255,255,255,.32);
    font-size:1.3rem;
    line-height:1;
    margin:-2px 0;
}

.tv2-d-status{
    display:inline-flex;
    padding:6px 12px;border-radius:99px;
    background:rgba(255,255,255,.06);
    color:rgba(255,255,255,.7);
    font-size:.74rem;font-weight:700;
    text-transform:lowercase;letter-spacing:.02em;
}
.tv2-d-blocked{
    display:inline-flex;align-items:center;gap:6px;
    color:rgba(255,255,255,.45);font-size:.78rem;font-weight:600;
    padding:8px 12px;
}
.tv2-d-blocked i{color:rgba(255,255,255,.32)}

/* Action buttons */
.tv2-btn{
    display:inline-flex;align-items:center;gap:6px;
    padding:9px 16px;border-radius:10px;
    font:inherit;font-size:.82rem;font-weight:700;
    letter-spacing:-.005em;cursor:pointer;
    transition:transform .15s ease,box-shadow .2s ease,background .15s ease,border-color .15s ease;
}
.tv2-btn i{font-size:1rem}
.tv2-btn-go{
    background:linear-gradient(135deg,#3da46e,#4fbf8a);
    border:1px solid rgba(80,200,140,.45);
    color:#fff;
    box-shadow:0 6px 22px -10px rgba(80,200,140,.55);
}
.tv2-btn-go:hover{transform:translateY(-1px);box-shadow:0 10px 30px -10px rgba(80,200,140,.7)}
.tv2-btn-go:disabled{
    opacity:.45;cursor:not-allowed;transform:none;box-shadow:none;
    background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.08);
}
.tv2-btn-ghost{
    background:rgba(255,255,255,.05);
    border:1px solid rgba(255,255,255,.08);
    color:rgba(255,255,255,.7);
}
.tv2-btn-ghost:hover{background:rgba(255,255,255,.08);color:#fff}

/* ── CREATE DRAWER ────────────────────────────────────────────────── */
.tv2-modepick{
    display:grid;grid-template-columns:1fr 1fr;gap:8px;
    margin-bottom:18px;
}
.tv2-modepick-btn{
    display:flex;flex-direction:column;align-items:flex-start;gap:2px;
    padding:14px 16px;border-radius:12px;
    background:rgba(255,255,255,.025);
    border:1px solid rgba(255,255,255,.05);
    color:#fff;font:inherit;cursor:pointer;text-align:left;
    transition:all .15s ease;
}
.tv2-modepick-btn i{font-size:1.1rem;color:rgba(255,255,255,.45);margin-bottom:2px}
.tv2-modepick-btn span{font-size:.85rem;font-weight:800;letter-spacing:-.005em}
.tv2-modepick-sub{font-size:.66rem;font-weight:600;color:rgba(255,255,255,.35);letter-spacing:.005em}
.tv2-modepick-btn:hover{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.12)}
.tv2-modepick-btn.is-on{
    background:linear-gradient(135deg,rgba(254,74,120,.10),rgba(156,108,255,.07));
    border-color:rgba(254,74,120,.30);
}
.tv2-modepick-btn.is-on i{color:#ffb6cc}

.tv2-create-section{
    margin-bottom:18px;
}
.tv2-create-label{
    display:flex;align-items:center;gap:10px;
    font-size:.74rem;font-weight:800;color:rgba(255,255,255,.55);
    letter-spacing:.06em;text-transform:lowercase;
    margin-bottom:10px;
}
.tv2-create-grid{
    display:flex;flex-wrap:wrap;gap:6px;
    margin-bottom:10px;
}
.tv2-create-empty{
    width:100%;text-align:center;padding:20px 12px;
    color:rgba(255,255,255,.32);font-size:.76rem;
    background:rgba(255,255,255,.02);
    border:1px dashed rgba(255,255,255,.06);
    border-radius:10px;
}

.tv2-mode-toggle{
    margin-left:auto;display:inline-flex;gap:2px;
    padding:2px;border-radius:99px;
    background:rgba(255,255,255,.04);
    border:1px solid rgba(255,255,255,.06);
}
.tv2-mode-btn{
    padding:5px 12px;border-radius:99px;
    background:transparent;border:0;
    color:rgba(255,255,255,.5);
    font:inherit;font-size:.66rem;font-weight:700;letter-spacing:.02em;
    cursor:pointer;text-transform:lowercase;
}
.tv2-mode-btn.is-on{background:rgba(255,255,255,.08);color:#fff}

/* Builder chips */
.tv2-bchip{
    display:inline-flex;align-items:center;gap:6px;
    padding:6px 11px;border-radius:99px;
    background:color-mix(in srgb,var(--rc) 9%,rgba(255,255,255,.025));
    border:1px solid color-mix(in srgb,var(--rc) 22%,rgba(255,255,255,.06));
    font:inherit;font-size:.72rem;font-weight:700;color:#fff;
    letter-spacing:-.005em;cursor:pointer;
    transition:transform .12s ease,background .15s ease,border-color .15s ease,box-shadow .2s ease;
}
.tv2-bchip.has-grad{
    background:linear-gradient(110deg,
        color-mix(in srgb,var(--g1) 14%,rgba(255,255,255,.025)),
        color-mix(in srgb,var(--g2) 14%,rgba(255,255,255,.025)));
    border-color:color-mix(in srgb,var(--g1) 24%,rgba(255,255,255,.06));
}
.tv2-bchip:hover{
    transform:translateY(-1px);
    background:color-mix(in srgb,var(--rc) 16%,rgba(255,255,255,.04));
    border-color:color-mix(in srgb,var(--rc) 36%,rgba(255,255,255,.1));
}
.tv2-bchip.has-grad:hover{
    background:linear-gradient(110deg,
        color-mix(in srgb,var(--g1) 22%,rgba(255,255,255,.04)),
        color-mix(in srgb,var(--g2) 22%,rgba(255,255,255,.04)));
}
.tv2-bchip.is-on{
    background:color-mix(in srgb,var(--rc) 26%,rgba(255,255,255,.04));
    border-color:color-mix(in srgb,var(--rc) 55%,rgba(255,255,255,.12));
    box-shadow:0 0 0 2px color-mix(in srgb,var(--rc) 30%,transparent),
               0 4px 16px -8px color-mix(in srgb,var(--rc) 70%,transparent);
}
.tv2-bchip.has-grad.is-on{
    background:linear-gradient(110deg,
        color-mix(in srgb,var(--g1) 30%,rgba(255,255,255,.04)),
        color-mix(in srgb,var(--g2) 30%,rgba(255,255,255,.04)));
    border-color:color-mix(in srgb,var(--g1) 60%,rgba(255,255,255,.12));
    box-shadow:0 0 0 2px color-mix(in srgb,var(--g1) 30%,transparent),
               0 4px 16px -8px color-mix(in srgb,var(--g2) 70%,transparent);
}
.tv2-bchip-icon{width:14px;height:14px;object-fit:contain;flex-shrink:0}
.tv2-bchip-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.tv2-bchip-name{
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    max-width:140px;
}
.tv2-bchip-serial{
    font-size:.6rem;font-weight:800;color:rgba(255,255,255,.55);
    background:rgba(0,0,0,.28);
    padding:1px 5px;border-radius:99px;
    letter-spacing:0;font-variant-numeric:tabular-nums;
}
.tv2-bchip.is-on .tv2-bchip-serial{color:rgba(255,255,255,.85)}
.tv2-bchip-qty{
    font-size:.6rem;font-weight:800;
    padding:1px 5px;border-radius:99px;
    background:rgba(0,0,0,.3);color:#fff;
}

/* Partner picker */
.tv2-partner{margin-bottom:18px}
.tv2-partner.is-set{
    display:flex;align-items:center;gap:10px;
    padding:10px 12px;border-radius:12px;
    background:rgba(255,255,255,.04);
    border:1px solid rgba(255,255,255,.08);
}
.tv2-partner.is-set img{
    width:32px;height:32px;border-radius:50%;
    object-fit:cover;
    background:rgba(255,255,255,.05);
}
.tv2-partner-meta{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
.tv2-partner-name{font-size:.86rem;font-weight:800;color:#fff;letter-spacing:-.005em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tv2-partner-tag{font-size:.7rem;font-weight:600;color:rgba(255,255,255,.4)}
.tv2-partner-x{
    width:28px;height:28px;border-radius:50%;
    background:rgba(255,255,255,.05);
    border:1px solid rgba(255,255,255,.08);
    color:rgba(255,255,255,.5);
    cursor:pointer;font-size:1.1rem;line-height:1;
    display:inline-flex;align-items:center;justify-content:center;
}
.tv2-partner-x:hover{background:rgba(255,255,255,.1);color:#fff}
.tv2-partner-results{
    margin-top:8px;display:flex;flex-direction:column;gap:4px;
    max-height:240px;overflow-y:auto;
}
.tv2-partner-empty{
    padding:14px;text-align:center;
    color:rgba(255,255,255,.32);font-size:.76rem;
}

.tv2-user-row{
    display:grid;grid-template-columns:32px 1fr auto auto;
    gap:10px;align-items:center;
    padding:8px 12px;border-radius:10px;
    cursor:pointer;
    transition:background .15s ease;
}
.tv2-user-row:hover{background:rgba(255,255,255,.04)}
.tv2-user-row img{width:32px;height:32px;border-radius:50%;object-fit:cover;background:rgba(255,255,255,.05)}
.tv2-user-name{font-size:.84rem;font-weight:700;color:#fff;letter-spacing:-.005em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tv2-user-tag{font-size:.7rem;color:rgba(255,255,255,.38);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tv2-user-row.is-banned{opacity:.5;cursor:not-allowed}
.tv2-ban{
    font-size:.6rem;font-weight:800;letter-spacing:.04em;
    padding:2px 7px;border-radius:99px;text-transform:uppercase;
    background:rgba(255,80,80,.12);color:#ff8080;
}

/* Key rows */
.tv2-keys-list{display:flex;flex-direction:column;gap:6px}
.tv2-key-row{
    display:grid;grid-template-columns:auto 1fr auto;
    gap:10px;align-items:center;
    padding:8px 12px;border-radius:10px;
    background:rgba(255,255,255,.025);
    border:1px solid rgba(255,255,255,.05);
    transition:border-color .15s ease,background .15s ease;
}
.tv2-key-row.is-on{
    background:color-mix(in srgb,var(--rc) 14%,rgba(255,255,255,.025));
    border-color:color-mix(in srgb,var(--rc) 36%,rgba(255,255,255,.08));
}
.tv2-key-img{width:24px;height:24px;object-fit:contain}
.tv2-key-meta{display:flex;flex-direction:column;gap:1px;min-width:0}
.tv2-key-name{font-size:.78rem;font-weight:700;color:#fff;letter-spacing:-.005em}
.tv2-key-have{font-size:.65rem;font-weight:600;color:rgba(255,255,255,.4)}
.tv2-key-ctrl{display:inline-flex;align-items:center;gap:6px}
.tv2-key-btn{
    width:24px;height:24px;border-radius:6px;
    border:1px solid rgba(255,255,255,.1);
    background:rgba(255,255,255,.04);
    color:#fff;font-weight:800;cursor:pointer;
    display:inline-flex;align-items:center;justify-content:center;
    font-size:.85rem;line-height:1;
    transition:background .15s ease;
}
.tv2-key-btn:hover:not(:disabled){background:rgba(255,255,255,.08)}
.tv2-key-btn:disabled{opacity:.32;cursor:not-allowed}
.tv2-key-qty{
    font-size:.85rem;font-weight:800;color:#fff;
    font-variant-numeric:tabular-nums;
    min-width:18px;text-align:center;
}

/* ── Mobile ──────────────────────────────────────────────────────── */
@media (max-width:640px){
    .tv2-page{padding:24px 16px 70px}
    .tv2-grid,.tv2-grid-skel{grid-template-columns:1fr;gap:12px}
    .tv2-card{padding:12px 14px}
    .tv2-card-trade{grid-template-columns:1fr;gap:12px}
    .tv2-card-arrow{display:none}
    .tv2-modepick{grid-template-columns:1fr}
    .tv2-drawer-body{padding:14px 14px}
    .tv2-drawer-head{padding:14px 16px}
    .tv2-drawer-foot{padding:12px 14px}
    .tv2-create{padding:9px 14px;font-size:.78rem}
    .tv2-tab{padding:7px 12px;font-size:.74rem}
    .tv2-tab span{display:none}
}

/* ============================================================
   Admin Abuse — realtime party room
   ============================================================ */
.aa-page{
    --rc:#a371f7;
    min-height:calc(100vh - 44px);
    display:flex;flex-direction:column;
    overflow:hidden;
    padding:0;
}

@keyframes aa-shimmer{
    0%{background-position:0 0}
    100%{background-position:-200% 0}
}

/* Clean (non-owner) view: full-bleed stage with no chrome. */
.aa-page-clean{padding:0}
.aa-page-clean .aa-stage{
    flex:1 1 auto;
    position:relative;
    display:flex;align-items:center;justify-content:center;
    gap:18px;padding:32px 24px;flex-wrap:wrap;
    overflow:hidden;
}

/* Owner full-screen layout */
.aa-page-owner{padding:0;display:flex;flex-direction:column}
.aa-fhead{
    position:relative;flex:0 0 auto;
    display:flex;align-items:center;gap:18px;
    padding:10px 16px;
    background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.01));
    border-bottom:1px solid var(--border);
    z-index:5;
}
.aa-fhead-title{
    display:inline-flex;flex-direction:column;gap:4px;flex:0 0 auto;
    min-width:148px;
}
.aa-fhead-title .aa-title-text{
    font-size:1.05rem;font-weight:900;letter-spacing:-.02em;color:#fff;
    text-transform:lowercase;
}
.aa-fhead-title .aa-title-bar{
    display:block;height:3px;border-radius:3px;
    background:linear-gradient(90deg,#ff5db1,#a371f7,#4aebf5,#7aff5a,#ffb547,#ff6b6b,#ff5db1);
    background-size:200% 100%;
    animation:aa-shimmer 6s linear infinite;
}
.aa-fhead-tabs{
    display:flex;gap:4px;flex:1 1 auto;justify-content:center;
}
.aa-fhead-tab{
    padding:8px 16px;border-radius:9px;
    background:transparent;border:1px solid transparent;
    color:var(--t2);font-size:.78rem;font-weight:700;cursor:pointer;letter-spacing:.02em;
    transition:color .15s ease,background .15s ease,border-color .15s ease;
}
.aa-fhead-tab:hover{color:#fff;background:rgba(255,255,255,.04)}
.aa-fhead-tab--active{
    color:#fff;background:rgba(255,255,255,.06);
    border-color:var(--border-h);
    box-shadow:inset 0 -2px 0 0 var(--rc);
}
.aa-fhead-stats{
    display:inline-flex;align-items:center;gap:6px;
    font-size:.74rem;font-weight:800;color:var(--t2);
    padding:6px 12px;border-radius:999px;
    background:rgba(255,255,255,.04);border:1px solid var(--border);
    font-variant-numeric:tabular-nums;
    flex:0 0 auto;
}
.aa-fhead-dot{
    color:#7aff5a;font-size:.6rem;
    animation:aa-pulse-dot 1.6s ease-in-out infinite;
}
.aa-fhead-stats-label{color:var(--t3);font-weight:700}

/* Stage strip (owner view) — collapses cleanly when no drops are active. */
.aa-page-owner .aa-stage{
    position:relative;flex:0 0 auto;
    display:flex;align-items:center;justify-content:center;
    gap:18px;padding:0 24px;flex-wrap:wrap;
    overflow:hidden;
    transition:padding .25s ease,min-height .25s ease;
    background:
        radial-gradient(60% 100% at 50% 0%,color-mix(in srgb,#a371f7 12%,transparent),transparent 70%),
        linear-gradient(180deg,rgba(255,255,255,.012),rgba(0,0,0,0));
    border-bottom:1px solid transparent;
}
.aa-page-owner .aa-stage:has([data-dropcard]){
    padding:18px 24px;min-height:300px;
    border-bottom-color:var(--border);
}

/* Tab pane host fills the remaining viewport. */
.aa-pane-host{
    flex:1 1 auto;min-height:0;overflow:auto;
    padding:18px 22px 22px;
    background:linear-gradient(180deg,rgba(255,255,255,.012),transparent);
}
.aa-pane{display:flex;flex-direction:column;gap:14px;min-height:0}
.aa-pane[hidden]{display:none}
.aa-pane-grid{display:grid;gap:14px}
.aa-pane-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.aa-pane-grid-target{grid-template-columns:1fr;gap:18px}
.aa-pane-grid-actions{grid-template-columns:repeat(2,minmax(0,1fr))}
.aa-card-wide{grid-column:1/-1}
.aa-card-target{grid-column:1/-1}
.aa-card-fill{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:8px}
.aa-card-fill > .aa-feed,
.aa-card-fill > .aa-people{flex:1 1 auto;min-height:0;overflow:auto}
.aa-card-help{
    font-size:.7rem;color:var(--t3);font-weight:500;line-height:1.45;
    margin:-2px 0 4px;
}
.aa-input-narrow{width:90px;flex:0 0 auto}

/* Role search autocomplete */
.aa-rs{position:relative;display:inline-flex;align-items:center;min-width:0}
.aa-rs-grow{flex:1 1 auto}
.aa-rs-input{width:100%}
.aa-rs-list{
    position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:30;
    max-height:240px;overflow:auto;
    border:1px solid var(--border);border-radius:9px;
    background:rgba(20,20,28,.98);
    backdrop-filter:blur(12px);
    box-shadow:0 18px 50px -16px rgba(0,0,0,.7);
    padding:4px;display:flex;flex-direction:column;gap:2px;
}
.aa-rs-item{
    display:flex;align-items:center;gap:8px;
    padding:6px 8px;border-radius:6px;
    background:transparent;border:1px solid transparent;
    color:#fff;font-size:.78rem;font-weight:600;cursor:pointer;text-align:left;
}
.aa-rs-item img{width:18px;height:18px;object-fit:contain;flex:0 0 auto}
.aa-rs-item:hover{background:rgba(255,255,255,.06);border-color:var(--border)}
.aa-rs-dot{display:inline-block;width:14px;height:14px;border-radius:50%;flex:0 0 auto}
.aa-rs-empty{padding:8px 10px;font-size:.72rem;color:var(--t3)}

/* Target preview pane */
.aa-target-preview{margin-top:6px}
.aa-tp{display:flex;flex-direction:column;gap:14px}
.aa-tp-header{
    display:flex;align-items:center;gap:14px;
    padding:12px;border-radius:12px;
    background:linear-gradient(135deg,rgba(255,93,177,.08),rgba(163,113,247,.08));
    border:1px solid var(--border);
}
.aa-tp-avatar{
    width:56px;height:56px;border-radius:50%;
    background:rgba(255,255,255,.06);object-fit:cover;
    border:2px solid color-mix(in srgb,#a371f7 50%,transparent);
}
.aa-tp-headinfo{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.aa-tp-name{font-size:1rem;font-weight:900;color:#fff;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.aa-tp-id{font-size:.7rem;color:var(--t3);font-variant-numeric:tabular-nums}
.aa-tp-display{font-size:.74rem;color:var(--t2)}
.aa-tp-balance{
    display:inline-flex;align-items:center;gap:6px;
    padding:8px 12px;border-radius:999px;
    background:rgba(255,181,71,.12);border:1px solid rgba(255,181,71,.3);
    font-weight:900;color:#ffd478;font-size:.92rem;font-variant-numeric:tabular-nums;
}
.aa-tp-balance img{width:18px;height:18px;object-fit:contain}
.aa-tp-section{display:flex;flex-direction:column;gap:6px}
.aa-tp-sectionhead{
    font-size:.62rem;font-weight:900;letter-spacing:.18em;text-transform:uppercase;
    color:var(--t3);
}
.aa-tp-keys{
    display:flex;flex-wrap:wrap;gap:6px;
    padding:8px;border-radius:10px;
    background:rgba(0,0,0,.18);border:1px solid var(--border);
    min-height:40px;align-items:center;
}
.aa-tp-keychip{
    --rc:#a371f7;
    display:inline-flex;align-items:center;gap:6px;
    padding:4px 10px;border-radius:999px;
    background:color-mix(in srgb,var(--rc) 14%,rgba(0,0,0,.3));
    border:1px solid color-mix(in srgb,var(--rc) 40%,transparent);
    color:#fff;font-size:.78rem;font-weight:800;
}
.aa-tp-keychip img{width:18px;height:18px;object-fit:contain}
.aa-tp-roles{
    display:flex;flex-direction:column;gap:4px;
    max-height:240px;overflow:auto;
    padding:6px;border-radius:10px;
    background:rgba(0,0,0,.18);border:1px solid var(--border);
}
.aa-tp-row{
    display:grid;
    grid-template-columns:24px minmax(0,1fr) auto;
    align-items:center;gap:8px;
    padding:5px 8px;border-radius:6px;
    font-size:.74rem;color:#fff;
}
.aa-tp-row:hover{background:rgba(255,255,255,.04)}
.aa-tp-row img{width:20px;height:20px;object-fit:contain}
.aa-tp-rowdot{display:inline-block;width:14px;height:14px;border-radius:50%}
.aa-tp-rowname{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.aa-tp-rowser{
    color:var(--t2);font-size:.7rem;font-variant-numeric:tabular-nums;font-weight:700;
    display:flex;flex-wrap:wrap;gap:2px 8px;justify-content:flex-end;
}

/* Drop spawn extras */
.aa-drop-flash{
    position:absolute;inset:0;border-radius:18px;z-index:3;pointer-events:none;
    background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.7),rgba(255,255,255,0) 60%);
    animation:aa-drop-flash .65s ease-out forwards;
}
@keyframes aa-drop-flash{
    0%{opacity:1;transform:scale(.4)}
    100%{opacity:0;transform:scale(1.6)}
}
.aa-drop-sparks{
    position:absolute;inset:0;pointer-events:none;z-index:1;
}
.aa-drop-spark{
    position:absolute;top:50%;left:50%;
    width:6px;height:6px;border-radius:50%;
    background:var(--rc);
    box-shadow:0 0 12px var(--rc);
    transform:translate(-50%,-50%);
    animation:aa-spark-out 1.2s cubic-bezier(.2,.6,.4,1) forwards;
    animation-delay:calc(var(--i) * 30ms);
}
@keyframes aa-spark-out{
    0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}
    20%{opacity:1}
    100%{
        opacity:0;
        transform:
            translate(
                calc(-50% + cos(calc(var(--i) * 45deg)) * 90px),
                calc(-50% + sin(calc(var(--i) * 45deg)) * 90px)
            ) scale(.6);
    }
}

/* Make the drop entrance a touch more dramatic. */
.aa-drop-in{animation:aa-drop-in 820ms cubic-bezier(.22,1.6,.32,1) both}
@keyframes aa-drop-in{
    0%{opacity:0;transform:translateY(-180px) scale(.2) rotate(-12deg);filter:blur(4px)}
    55%{opacity:1;transform:translateY(14px) scale(1.12) rotate(3deg);filter:blur(0)}
    78%{transform:translateY(-4px) scale(.98) rotate(-1.5deg)}
    100%{opacity:1;transform:translateY(0) scale(1) rotate(0deg)}
}

/* Drop card */
.aa-drop{
    --rc:#a371f7;
    position:absolute;width:220px;
    border-radius:18px;padding:14px 12px;
    background:
        radial-gradient(120% 80% at 50% 0%,color-mix(in srgb,var(--rc) 22%,transparent),transparent 65%),
        linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.012));
    border:1px solid color-mix(in srgb,var(--rc) 30%,rgba(255,255,255,.08));
    box-shadow:
        0 24px 60px -28px color-mix(in srgb,var(--rc) 70%,transparent),
        inset 0 0 0 1px color-mix(in srgb,var(--rc) 14%,transparent);
    display:flex;flex-direction:column;align-items:center;gap:8px;
    isolation:isolate;overflow:hidden;
    transform-origin:center top;
    z-index:2;
}
.aa-drop-in{animation:aa-drop-in 720ms cubic-bezier(.22,1.4,.36,1) both}
@keyframes aa-drop-in{
    0%{opacity:0;transform:translateY(-80px) scale(.4) rotate(-6deg)}
    60%{opacity:1;transform:translateY(8px) scale(1.06) rotate(2deg)}
    100%{opacity:1;transform:translateY(0) scale(1) rotate(0deg)}
}
.aa-drop-aura{
    position:absolute;inset:-30%;z-index:-1;
    background:conic-gradient(from 0deg,
        transparent 0deg,
        color-mix(in srgb,var(--rc) 60%,transparent) 50deg,
        transparent 110deg,transparent 360deg);
    filter:blur(28px);opacity:.55;
    animation:aa-aura-spin 6s linear infinite;
}
@keyframes aa-aura-spin{
    0%{transform:rotate(0)}
    100%{transform:rotate(360deg)}
}
.aa-drop-tag{
    position:absolute;top:10px;left:10px;
    font-size:.55rem;font-weight:900;letter-spacing:.2em;
    color:var(--rc);
    background:color-mix(in srgb,var(--rc) 16%,transparent);
    border:1px solid color-mix(in srgb,var(--rc) 35%,transparent);
    padding:3px 7px;border-radius:4px;
}
.aa-drop-time{
    position:absolute;top:10px;right:10px;
    font-size:.62rem;font-weight:800;color:var(--t2);
    font-variant-numeric:tabular-nums;
    background:rgba(0,0,0,.4);padding:3px 7px;border-radius:4px;
}
.aa-drop-visual{
    margin-top:12px;display:flex;align-items:center;justify-content:center;
    min-height:90px;
}
.aa-drop-coin{
    position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;
}
.aa-drop-coin img{
    width:78px;height:78px;object-fit:contain;
    filter:drop-shadow(0 0 18px rgba(255,181,71,.55));
    animation:aa-spin-y 2.2s ease-in-out infinite;
}
.aa-drop-coin-amount{
    font-size:1.1rem;font-weight:900;color:#ffd478;
    text-shadow:0 0 10px rgba(255,181,71,.55);
}
@keyframes aa-spin-y{
    0%{transform:rotateY(0deg)}
    50%{transform:rotateY(180deg)}
    100%{transform:rotateY(360deg)}
}
.aa-drop-key{
    display:flex;flex-direction:column;align-items:center;gap:6px;
}
.aa-drop-key img{width:78px;height:78px;object-fit:contain;filter:drop-shadow(0 0 14px color-mix(in srgb,var(--rc) 60%,transparent))}
.aa-drop-key-amount{font-size:1rem;font-weight:900;color:#fff}
.aa-drop-role{display:flex;align-items:center;justify-content:center}
.aa-drop-role img{
    width:84px;height:84px;object-fit:contain;
    filter:drop-shadow(0 0 18px color-mix(in srgb,var(--rc) 60%,transparent));
    animation:aa-bob 2.4s ease-in-out infinite;
}
.aa-drop-role-dot{display:inline-block;width:84px;height:84px;border-radius:50%}
@keyframes aa-bob{
    0%,100%{transform:translateY(0)}
    50%{transform:translateY(-6px)}
}
.aa-drop-label{
    font-size:.95rem;font-weight:800;color:#fff;text-align:center;letter-spacing:-.005em;
    background:linear-gradient(90deg,var(--g1,var(--rc)),var(--g2,var(--rc)));
    -webkit-background-clip:text;background-clip:text;color:transparent;
}
.aa-drop-claim-btn{
    position:relative;
    margin-top:6px;width:140px;height:60px;border-radius:14px;
    background:linear-gradient(135deg,var(--rc),color-mix(in srgb,var(--rc) 50%,#000));
    color:#fff;font-weight:900;font-size:1rem;letter-spacing:.06em;
    border:1px solid color-mix(in srgb,var(--rc) 60%,#fff);
    cursor:pointer;
    box-shadow:
        0 14px 30px -14px color-mix(in srgb,var(--rc) 80%,transparent),
        inset 0 1px 0 rgba(255,255,255,.25);
    overflow:hidden;
    animation:aa-claim-pulse 1.4s ease-in-out infinite;
    transition:transform .12s ease;
}
.aa-drop-claim-btn:hover:not(:disabled){transform:translateY(-1px) scale(1.02)}
.aa-drop-claim-btn:active:not(:disabled){transform:translateY(0) scale(.98)}
.aa-drop-claim-btn:disabled{opacity:.4;cursor:not-allowed;animation:none}
.aa-claim-locked{animation:aa-claim-unlock 1s linear forwards!important}
@keyframes aa-claim-unlock{from{opacity:.35;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
.aa-drop-claim-pressing{transform:scale(.94) !important}
@keyframes aa-claim-pulse{
    0%,100%{box-shadow:0 14px 30px -14px color-mix(in srgb,var(--rc) 80%,transparent),inset 0 1px 0 rgba(255,255,255,.25),0 0 0 0 color-mix(in srgb,var(--rc) 50%,transparent)}
    50%{box-shadow:0 14px 30px -14px color-mix(in srgb,var(--rc) 80%,transparent),inset 0 1px 0 rgba(255,255,255,.25),0 0 0 12px color-mix(in srgb,var(--rc) 0%,transparent)}
}
.aa-drop-claim-ring{position:absolute;inset:0;pointer-events:none;opacity:.35}
.aa-drop-claim-ring svg{width:100%;height:100%}
.aa-drop-claim-ring circle{fill:none;stroke:rgba(255,255,255,.5);stroke-width:1.5;stroke-dasharray:289;stroke-dashoffset:0}
.aa-drop-claim-text{position:relative;z-index:1}

.aa-drop-winner{
    position:absolute;inset:0;
    background:radial-gradient(circle at 50% 50%,rgba(0,0,0,.7),rgba(0,0,0,.95));
    display:flex;align-items:center;justify-content:center;
    animation:aa-fade-in .4s ease both;
    z-index:2;
}
.aa-drop-winner-self{
    background:radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--rc) 35%,#000),rgba(0,0,0,.95));
    animation:aa-winner-pop .5s cubic-bezier(.22,1.4,.36,1) both;
}
@keyframes aa-fade-in{from{opacity:0}to{opacity:1}}
@keyframes aa-winner-pop{
    0%{opacity:0;transform:scale(.4)}
    60%{opacity:1;transform:scale(1.06)}
    100%{transform:scale(1)}
}
.aa-drop-winner-inner{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}
.aa-drop-winner-avatar{
    width:64px;height:64px;border-radius:50%;
    border:2px solid var(--rc);
    background:rgba(255,255,255,.06);
    box-shadow:0 0 28px color-mix(in srgb,var(--rc) 70%,transparent);
}
.aa-drop-winner-line{font-size:1rem;font-weight:900;color:#fff;letter-spacing:-.01em}
.aa-drop-winner-sub{font-size:.65rem;font-weight:900;color:var(--rc);letter-spacing:.18em}
.aa-drop-leaving{animation:aa-drop-out .55s cubic-bezier(.4,.1,.5,1) forwards}
@keyframes aa-drop-out{
    to{opacity:0;transform:translateY(-30px) scale(.85);filter:blur(2px)}
}
.aa-drop-expired{animation:aa-drop-fade .65s ease forwards}
@keyframes aa-drop-fade{
    to{opacity:0;transform:translateY(8px) scale(.94);filter:grayscale(1)}
}

/* Activity feed */
.aa-feed-wrap{
    border-radius:14px;
    border:1px solid var(--border);
    background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,.005));
    display:flex;flex-direction:column;
    min-height:0;overflow:hidden;
}
.aa-feed-head{
    flex:0 0 auto;padding:10px 14px;
    font-size:.7rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;
    color:var(--t2);border-bottom:1px solid var(--border);
}
.aa-feed{
    flex:1 1 auto;overflow:auto;padding:8px 12px;
    display:flex;flex-direction:column;gap:4px;
    font-size:.78rem;color:var(--t1);
}
.aa-feed-row{
    padding:4px 6px;border-radius:6px;
    color:var(--t2);line-height:1.45;
}
.aa-feed-row b{color:#fff;font-weight:800}
.aa-feed-time{color:var(--t3);font-size:.66rem;font-variant-numeric:tabular-nums;margin-right:6px}
.aa-feed-tag{
    display:inline-block;padding:1px 6px;border-radius:4px;
    font-size:.58rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase;
    margin-right:6px;
}
.aa-feed-tag-drop{color:#a371f7;background:rgba(163,113,247,.14)}
.aa-feed-tag-claim{color:#7aff5a;background:rgba(122,255,90,.14)}
.aa-feed-tag-exp{color:var(--t3);background:rgba(255,255,255,.05)}
.aa-feed-tag-admin{color:#ff5db1;background:rgba(255,93,177,.14)}
.aa-feed-tag-fx{color:#4aebf5;background:rgba(74,235,245,.14)}
.aa-feed-in{animation:aa-feed-in .35s cubic-bezier(.22,1.4,.36,1) both}
@keyframes aa-feed-in{
    from{opacity:0;transform:translateY(-6px)}
    to{opacity:1;transform:translateY(0)}
}

/* Admin panel */
.aa-admin{
    border-radius:14px;border:1px solid var(--border);
    background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.008));
    display:flex;flex-direction:column;min-width:0;overflow:hidden;
}
.aa-admin-head{
    display:flex;align-items:center;justify-content:space-between;gap:8px;
    padding:12px 14px;border-bottom:1px solid var(--border);
}
.aa-admin-title{font-size:.78rem;font-weight:900;letter-spacing:.16em;text-transform:uppercase;color:#fff}
.aa-admin-headcount{
    display:inline-flex;align-items:center;gap:6px;
    font-size:.7rem;font-weight:800;color:var(--t2);
    padding:3px 9px;border-radius:999px;
    background:rgba(255,255,255,.04);border:1px solid var(--border);
    font-variant-numeric:tabular-nums;
}
.aa-admin-headcount-dot{
    color:#7aff5a;font-size:.6rem;
    animation:aa-pulse-dot 1.6s ease-in-out infinite;
}
@keyframes aa-pulse-dot{
    0%,100%{opacity:1;transform:scale(1)}
    50%{opacity:.4;transform:scale(.85)}
}
.aa-admin-tabs{display:flex;gap:4px;padding:8px 8px 0;border-bottom:1px solid var(--border)}
.aa-admin-tab{
    flex:1 1 auto;padding:7px 8px;border-radius:8px 8px 0 0;
    background:transparent;border:1px solid transparent;
    color:var(--t2);font-size:.72rem;font-weight:700;cursor:pointer;
    transition:color .15s ease,background .15s ease;
}
.aa-admin-tab:hover{color:var(--t1)}
.aa-admin-tab--active{
    color:#fff;background:rgba(255,255,255,.04);
    border:1px solid var(--border);border-bottom-color:transparent;
}
.aa-admin-body{padding:12px;overflow:auto;flex:1 1 auto;display:flex;flex-direction:column;gap:10px;min-height:0}
.aa-admin-pane{display:flex;flex-direction:column;gap:10px;min-height:0}
.aa-admin-pane-feed{
    flex:1 1 auto;
    border:1px solid var(--border);
    border-radius:10px;
    background:rgba(0,0,0,.18);
    overflow:hidden;padding:6px;
}
.aa-admin-pane-feed > .aa-feed{padding:6px 8px}
.aa-card{
    border-radius:10px;border:1px solid var(--border);
    background:rgba(255,255,255,.018);
    padding:10px 12px;display:flex;flex-direction:column;gap:8px;
}
.aa-card-title{
    font-size:.62rem;font-weight:900;letter-spacing:.18em;text-transform:uppercase;
    color:var(--t2);
}
.aa-row{display:flex;align-items:center;gap:6px;flex-wrap:nowrap}
.aa-row-wrap{flex-wrap:wrap}
.aa-input{
    background:rgba(255,255,255,.04);border:1px solid var(--border);
    color:#fff;font-size:.78rem;font-family:inherit;
    padding:7px 9px;border-radius:7px;min-width:0;width:auto;
    transition:border-color .15s ease;
}
.aa-input:focus{outline:none;border-color:var(--border-h)}
.aa-input-grow{flex:1 1 auto}
.aa-btn{
    background:rgba(255,255,255,.06);border:1px solid var(--border);
    color:#fff;font-size:.74rem;font-weight:700;
    padding:7px 11px;border-radius:7px;cursor:pointer;
    transition:background .15s ease,transform .1s ease;white-space:nowrap;
}
.aa-btn:hover:not(:disabled){background:rgba(255,255,255,.1)}
.aa-btn:active:not(:disabled){transform:translateY(1px)}
.aa-btn:disabled{opacity:.4;cursor:not-allowed}
.aa-btn-mini{padding:4px 8px;font-size:.66rem;border-radius:6px}
.aa-btn-primary{
    background:linear-gradient(135deg,#ff5db1,#a371f7);
    border-color:rgba(255,255,255,.1);
}
.aa-btn-primary:hover:not(:disabled){background:linear-gradient(135deg,#ff7ac0,#b48dff)}
.aa-btn-danger{
    background:linear-gradient(135deg,#ff6b6b,#a92020);
    border-color:rgba(255,255,255,.1);
}
.aa-meta{font-size:.7rem;color:var(--t3)}
.aa-rolepick{
    display:flex;flex-wrap:wrap;gap:4px;
    max-height:140px;overflow:auto;
    padding:6px;border:1px solid var(--border);border-radius:8px;
    background:rgba(0,0,0,.2);
}
.aa-rolepick-item{
    display:inline-flex;align-items:center;gap:6px;
    background:rgba(255,255,255,.04);border:1px solid var(--border);
    color:#fff;font-size:.7rem;font-weight:600;
    padding:4px 8px;border-radius:6px;cursor:pointer;
}
.aa-rolepick-item img{width:16px;height:16px;object-fit:contain}
.aa-rolepick-item:hover{border-color:var(--border-h)}
.aa-rolepick-active{background:linear-gradient(135deg,rgba(163,113,247,.3),rgba(255,93,177,.18));border-color:#a371f7;color:#fff}
.aa-rolepick-dot{display:inline-block;width:14px;height:14px;border-radius:50%}
.aa-people-row{
    display:flex;align-items:center;gap:8px;
    padding:7px 9px;border-radius:8px;
    background:rgba(255,255,255,.02);
    border:1px solid var(--border);
}
.aa-people-avatar{
    width:32px;height:32px;border-radius:50%;
    background:rgba(255,255,255,.06);object-fit:cover;
}
.aa-people-info{flex:1 1 auto;min-width:0}
.aa-people-name{font-size:.8rem;font-weight:700;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.aa-people-id{font-size:.62rem;color:var(--t3);font-variant-numeric:tabular-nums}
.aa-people-acts{display:flex;gap:4px}

/* Effects layer */
.aa-effects{
    position:fixed;inset:0;pointer-events:none;z-index:9999;
    overflow:hidden;
}
.aa-confetti-piece{
    position:absolute;top:-10vh;width:8px;height:14px;
    border-radius:2px;
    transform:translateX(0) rotate(0deg);
}
@keyframes aa-confetti-fall{
    0%{transform:translate(0,-10vh) rotate(0deg);opacity:1}
    100%{transform:translate(var(--drift,0),110vh) rotate(var(--rot,720deg));opacity:0.9}
}
.aa-emoji-piece{
    position:absolute;top:-12vh;
    transform:translateX(0);
}
@keyframes aa-emoji-fly{
    0%{transform:translate(0,-12vh) rotate(-10deg);opacity:1}
    100%{transform:translate(var(--drift,0),110vh) rotate(20deg);opacity:0.9}
}
.aa-banner{
    position:fixed;left:50%;top:14%;transform:translate(-50%,0);
    pointer-events:none;
    animation:aa-banner-in .55s cubic-bezier(.22,1.4,.36,1) both;
}
.aa-banner-out{animation:aa-banner-out .55s ease both}
.aa-banner-inner{
    padding:14px 26px;border-radius:14px;
    background:linear-gradient(135deg,#ff5db1,#a371f7);
    color:#fff;font-size:1.2rem;font-weight:900;letter-spacing:-.01em;
    box-shadow:0 24px 60px -16px rgba(163,113,247,.6),inset 0 1px 0 rgba(255,255,255,.25);
}
@keyframes aa-banner-in{
    0%{opacity:0;transform:translate(-50%,-40px) scale(.6)}
    60%{opacity:1;transform:translate(-50%,4px) scale(1.04)}
    100%{transform:translate(-50%,0) scale(1)}
}
@keyframes aa-banner-out{
    to{opacity:0;transform:translate(-50%,-40px) scale(.85)}
}

.aa-splash{
    position:fixed;inset:0;display:flex;align-items:center;justify-content:center;
    background:radial-gradient(circle at 50% 50%,rgba(0,0,0,.65),rgba(0,0,0,.92));
    pointer-events:none;
    animation:aa-splash-in .35s ease both;
}
.aa-splash-out{animation:aa-splash-out .5s ease both}
.aa-splash-text{
    font-size:3rem;font-weight:900;letter-spacing:-.02em;color:#fff;
    background:linear-gradient(90deg,#ff5db1,#a371f7,#4aebf5);
    background-size:200% 100%;
    animation:aa-shimmer 4s linear infinite;
    -webkit-background-clip:text;background-clip:text;color:transparent;
    text-align:center;padding:0 24px;max-width:80vw;
}
@keyframes aa-splash-in{
    from{opacity:0;backdrop-filter:blur(0)}
    to{opacity:1;backdrop-filter:blur(2px)}
}
@keyframes aa-splash-out{
    to{opacity:0;backdrop-filter:blur(0)}
}

.aa-toast-big{
    position:fixed;left:50%;bottom:8%;transform:translate(-50%,0);
    pointer-events:none;padding:12px 22px;border-radius:12px;
    background:rgba(20,20,30,.92);color:#fff;font-weight:800;font-size:1rem;
    border:1px solid rgba(255,255,255,.1);
    box-shadow:0 18px 40px -12px rgba(0,0,0,.65);
    animation:aa-toast-in .45s cubic-bezier(.22,1.4,.36,1) both;
}
.aa-toast-big-out{animation:aa-toast-out .4s ease both}
@keyframes aa-toast-in{
    0%{opacity:0;transform:translate(-50%,40px)}
    100%{opacity:1;transform:translate(-50%,0)}
}
@keyframes aa-toast-out{
    to{opacity:0;transform:translate(-50%,40px)}
}
.aa-toast-personal{
    position:fixed;right:24px;top:24px;max-width:320px;
    pointer-events:none;padding:10px 16px;border-radius:10px;
    background:rgba(20,20,30,.95);color:#fff;font-weight:700;font-size:.85rem;
    border:1px solid rgba(255,93,177,.4);
    box-shadow:0 18px 40px -12px rgba(255,93,177,.45);
    animation:aa-personal-in .45s cubic-bezier(.22,1.4,.36,1) both;
}
.aa-toast-personal-out{animation:aa-personal-out .4s ease both}
@keyframes aa-personal-in{
    0%{opacity:0;transform:translateX(50px)}
    100%{opacity:1;transform:translateX(0)}
}
@keyframes aa-personal-out{
    to{opacity:0;transform:translateX(50px)}
}

.aa-prank-flying{
    position:absolute;left:-10vw;
    transform:translateX(0);user-select:none;
}
@keyframes aa-prank-fly{
    0%{transform:translateX(0) rotate(-4deg)}
    100%{transform:translateX(120vw) rotate(8deg)}
}

/* Body screenshake */
body.aa-shake-now{animation:aa-shake var(--aa-shake-ms,600ms) cubic-bezier(.36,.07,.19,.97) 1}
@keyframes aa-shake{
    0%{transform:translate(0,0)}
    10%{transform:translate(-6px,-3px)}
    20%{transform:translate(7px,2px)}
    30%{transform:translate(-8px,4px)}
    40%{transform:translate(6px,-4px)}
    50%{transform:translate(-5px,3px)}
    60%{transform:translate(7px,-2px)}
    70%{transform:translate(-4px,2px)}
    80%{transform:translate(3px,-3px)}
    90%{transform:translate(-2px,1px)}
    100%{transform:translate(0,0)}
}

/* Gift tag on auto-gift drops */
.aa-drop-gift-tag{
    position:absolute;bottom:8px;left:50%;transform:translateX(-50%);
    font-size:.6rem;font-weight:900;letter-spacing:.18em;text-transform:uppercase;
    color:#ffb547;background:rgba(255,181,71,.14);
    border:1px solid rgba(255,181,71,.35);padding:2px 8px;border-radius:4px;
}
.aa-drop-winner-gift{
    font-size:.62rem;font-weight:900;letter-spacing:.1em;
    color:#ffb547;margin-top:2px;text-transform:uppercase;
}

/* Autoclicker block overlay */
.aa-block-overlay{
    position:fixed;inset:0;z-index:10000;
    background:rgba(6,0,18,.94);
    backdrop-filter:blur(16px);
    display:flex;align-items:center;justify-content:center;
    pointer-events:all;
}
.aa-block-inner{
    display:flex;flex-direction:column;align-items:center;gap:16px;
    max-width:440px;text-align:center;padding:40px;
}
.aa-block-icon{font-size:4rem;line-height:1}
.aa-block-title{
    font-size:1.9rem;font-weight:900;letter-spacing:-.02em;
    background:linear-gradient(90deg,#ff5db1,#a371f7);
    -webkit-background-clip:text;background-clip:text;color:transparent;
}
.aa-block-msg{font-size:1rem;font-weight:600;color:#fff;line-height:1.6}
.aa-block-sub{font-size:.8rem;color:var(--t3);margin-top:4px}

/* Song player bar */
.aa-song-bar{
    position:fixed;bottom:0;left:0;right:0;z-index:9990;
    display:flex;align-items:center;gap:12px;
    padding:10px 20px;
    background:linear-gradient(90deg,rgba(10,0,22,.96),rgba(20,5,40,.96));
    border-top:1px solid rgba(163,113,247,.35);
    box-shadow:0 -8px 40px -12px rgba(163,113,247,.4);
    animation:aa-song-in .4s cubic-bezier(.22,1.4,.36,1) both;
}
@keyframes aa-song-in{
    from{transform:translateY(100%);opacity:0}
    to{transform:translateY(0);opacity:1}
}
.aa-song-note{font-size:1.2rem;animation:aa-bob 1.6s ease-in-out infinite}
.aa-song-title{
    flex:1 1 auto;font-size:.85rem;font-weight:700;color:#fff;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.aa-song-play-btn{flex:0 0 auto}
.aa-song-close{
    flex:0 0 auto;background:none;border:none;color:var(--t2);
    font-size:1rem;cursor:pointer;padding:4px 8px;border-radius:6px;
    transition:color .15s ease;
}
.aa-song-close:hover{color:#fff;background:rgba(255,255,255,.06)}

/* ---- Drops pane grid ---- */
.aa-dp-grid{display:flex;flex-direction:column;gap:10px;padding:16px}
.aa-dp-row{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:12px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:12px 14px}
.aa-dp-icon{font-size:1.5rem;text-align:center;flex-shrink:0}
.aa-dp-body{display:flex;flex-direction:column;gap:6px;min-width:0}
.aa-dp-label{font-size:.82rem;font-weight:600;color:#e2e8f0;white-space:nowrap}
.aa-dp-sub{font-size:.7rem;font-weight:400;color:#94a3b8;margin-left:6px}
.aa-dp-btns{display:flex;flex-direction:column;gap:6px;align-items:stretch;min-width:112px}
.aa-btn-gift{background:linear-gradient(135deg,#7c3aed,#a855f7)!important;border-color:rgba(168,85,247,.4)!important}
.aa-btn-gift:hover{background:linear-gradient(135deg,#6d28d9,#9333ea)!important}
.aa-btn-sm{padding:5px 10px!important;font-size:.74rem!important}
.aa-row-wrap{flex-wrap:wrap;gap:6px!important}

/* ---- Emote bar (user view) ---- */
.aa-emote-bar{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);display:flex;gap:8px;background:rgba(15,15,25,.85);border:1px solid rgba(255,255,255,.1);border-radius:40px;padding:8px 14px;backdrop-filter:blur(12px);z-index:200;box-shadow:0 4px 24px rgba(0,0,0,.5)}
.aa-emote-btn{background:transparent;border:none;cursor:pointer;font-size:1.6rem;line-height:1;padding:4px 6px;border-radius:8px;transition:transform .15s,background .15s;user-select:none}
.aa-emote-btn:hover{background:rgba(255,255,255,.1);transform:scale(1.2)}
.aa-emote-btn:active{transform:scale(.95)}
.aa-emote-btn-pop{animation:aa-btn-pop .4s ease forwards}
@keyframes aa-btn-pop{0%{transform:scale(1)}40%{transform:scale(1.4)}100%{transform:scale(1)}}

/* ---- Emote float (all screens) ---- */
.aa-emote-float{position:fixed;bottom:100px;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:4px;animation:aa-emote-fly var(--dur,3000ms) var(--delay,0ms) ease-out forwards;z-index:300}
.aa-emote-avatar{width:32px;height:32px;border-radius:50%;border:2px solid rgba(255,255,255,.3);object-fit:cover}
.aa-emote-glyph{font-size:inherit;line-height:1}
@keyframes aa-emote-fly{0%{opacity:1;transform:translateY(0) scale(1)}70%{opacity:.9;transform:translateY(-55vh) scale(1.15)}100%{opacity:0;transform:translateY(-70vh) scale(.8)}}

/* ---- Pinned message banner ---- */
.aa-pin-banner{position:sticky;top:0;z-index:400;display:flex;align-items:center;gap:8px;background:linear-gradient(90deg,rgba(168,85,247,.2),rgba(99,102,241,.15));border-bottom:1px solid rgba(168,85,247,.4);padding:8px 16px;animation:aa-pin-in .4s cubic-bezier(.17,.67,.26,1.3) forwards;backdrop-filter:blur(6px)}
.aa-pin-icon{font-size:1rem;flex-shrink:0}
.aa-pin-text{font-size:.85rem;font-weight:600;color:#e2e8f0;flex:1 1 auto}
@keyframes aa-pin-in{from{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}

/* ---- New effect animations ---- */
.aa-screen-flash{position:fixed;inset:0;background:#fff;pointer-events:none;z-index:9999;animation:aa-flash-out .7s ease-out forwards}
@keyframes aa-flash-out{0%{opacity:.9}100%{opacity:0}}

.aa-rainbow-storm{position:fixed;inset:0;pointer-events:none;z-index:9998;background:linear-gradient(135deg,#ff0000,#ff7700,#ffff00,#00ff00,#0000ff,#8b00ff,#ff0000);background-size:400% 400%;animation:aa-rainbow-wave 2s linear forwards}
.aa-rainbow-out{animation:aa-rainbow-fade .8s ease-out forwards!important}
@keyframes aa-rainbow-wave{0%{opacity:0;background-position:0% 50%}20%{opacity:.45}80%{opacity:.45;background-position:100% 50%}100%{opacity:.45;background-position:100% 50%}}
@keyframes aa-rainbow-fade{to{opacity:0}}

.aa-countdown-num{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(1);font-size:clamp(5rem,20vw,12rem);font-weight:900;color:#fff;text-shadow:0 0 60px rgba(168,85,247,.9),0 0 20px rgba(168,85,247,.6);pointer-events:none;z-index:9999;animation:aa-cd-in .5s cubic-bezier(.17,.67,.26,1.5) forwards}
.aa-countdown-go{color:#a855f7;font-size:clamp(4rem,16vw,9rem)}
.aa-countdown-out{animation:aa-cd-out .4s ease-in forwards!important}
@keyframes aa-cd-in{from{transform:translate(-50%,-50%) scale(2.5);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}
@keyframes aa-cd-out{to{transform:translate(-50%,-50%) scale(.2);opacity:0}}

.aa-typewriter-wrap{position:fixed;bottom:25%;left:50%;transform:translateX(-50%);background:rgba(10,10,18,.9);border:1px solid rgba(168,85,247,.5);border-radius:8px;padding:18px 28px;font-size:clamp(1rem,3vw,1.6rem);font-weight:600;color:#e2e8f0;white-space:pre-wrap;max-width:80vw;z-index:9998;pointer-events:none;box-shadow:0 8px 40px rgba(0,0,0,.6)}
.aa-typewriter-cursor{color:#a855f7;animation:aa-blink .6s step-end infinite}
.aa-typewriter-out{animation:aa-fade-out .6s ease forwards!important}
@keyframes aa-blink{0%,100%{opacity:1}50%{opacity:0}}

.aa-glitch-wrap{position:fixed;top:40%;left:50%;transform:translateX(-50%);z-index:9998;pointer-events:none}
.aa-glitch-text{font-size:clamp(1.5rem,5vw,3rem);font-weight:900;color:#fff;position:relative;animation:aa-glitch-main 2.5s steps(1) forwards}
.aa-glitch-text::before,.aa-glitch-text::after{content:attr(data-text);position:absolute;inset:0}
.aa-glitch-text::before{color:#ff0080;clip-path:polygon(0 0,100% 0,100% 35%,0 35%);animation:aa-glitch-top 2.5s steps(1) infinite}
.aa-glitch-text::after{color:#00ffff;clip-path:polygon(0 65%,100% 65%,100% 100%,0 100%);animation:aa-glitch-bot 2.5s steps(1) infinite}
.aa-glitch-out{animation:aa-fade-out .6s ease forwards!important}
@keyframes aa-glitch-main{0%,90%{transform:none}10%{transform:skewX(-6deg)}20%{transform:skewX(4deg)}30%{transform:none}}
@keyframes aa-glitch-top{0%,100%{transform:none;opacity:1}14%{transform:translate(-3px,2px)}28%{transform:translate(3px,-2px)}42%{transform:none}56%{transform:translate(-2px,3px)}70%{transform:translate(2px,-1px)}}
@keyframes aa-glitch-bot{0%,100%{transform:none;opacity:1}14%{transform:translate(3px,-2px)}28%{transform:translate(-3px,2px)}42%{transform:none}}
@keyframes aa-fade-out{to{opacity:0}}

.aa-spotlight-wrap{position:fixed;inset:0;background:rgba(0,0,0,.85);display:flex;align-items:center;justify-content:center;z-index:9998;pointer-events:none;animation:aa-spotlight-in .4s ease forwards}
.aa-spotlight-text{font-size:clamp(1.5rem,5vw,3rem);font-weight:900;color:#fff;text-shadow:0 0 80px rgba(255,255,255,.8);text-align:center;padding:0 20px;max-width:80vw;animation:aa-spotlight-pulse 2.5s ease-in-out infinite}
.aa-spotlight-out{animation:aa-spotlight-fade .7s ease forwards!important}
@keyframes aa-spotlight-in{from{opacity:0}to{opacity:1}}
@keyframes aa-spotlight-pulse{0%,100%{text-shadow:0 0 80px rgba(255,255,255,.8)}50%{text-shadow:0 0 120px rgba(255,255,255,1),0 0 40px rgba(168,85,247,.9)}}
@keyframes aa-spotlight-fade{to{opacity:0}}

/* ---- 10 new animations ---- */

/* Role Parade */
.aa-parade-wrap{position:fixed;inset:0;display:flex;flex-direction:column;justify-content:space-around;pointer-events:none;z-index:9998;overflow:hidden}
.aa-parade-row{display:flex;align-items:center;gap:16px;animation:aa-parade-scroll var(--row-dur,10s) var(--row-delay,0s) linear forwards;white-space:nowrap}
.aa-parade-icon{width:56px;height:56px;object-fit:contain;flex-shrink:0;filter:drop-shadow(0 0 8px rgba(168,85,247,.7))}
@keyframes aa-parade-scroll{from{transform:translateX(100vw)}to{transform:translateX(-200%)}}

/* Role Explosion */
.aa-role-explode{position:fixed;top:50%;left:50%;width:52px;height:52px;object-fit:contain;pointer-events:none;z-index:9999;
    animation:aa-explode-out 4s var(--delay,0ms) cubic-bezier(.17,.67,.12,.99) forwards;
    filter:drop-shadow(0 0 6px rgba(255,255,255,.8))}
@keyframes aa-explode-out{
    0%{transform:translate(-50%,-50%) rotate(0deg) scale(0);opacity:1}
    60%{opacity:1;transform:translate(calc(-50% + cos(var(--angle)) * var(--dist,30vmin)),calc(-50% + sin(var(--angle)) * var(--dist,30vmin))) rotate(var(--spin,360deg)) scale(1.2)}
    100%{opacity:0;transform:translate(calc(-50% + cos(var(--angle)) * calc(var(--dist,30vmin) * 1.5)),calc(-50% + sin(var(--angle)) * calc(var(--dist,30vmin) * 1.5))) rotate(var(--spin,720deg)) scale(0.3)}
}

/* Role Tornado */
.aa-tornado-wrap{position:fixed;inset:0;pointer-events:none;z-index:9998;perspective:600px}
.aa-tornado-icon{position:absolute;left:50%;top:50%;width:44px;height:44px;object-fit:contain;
    animation:aa-tornado-spin 8s var(--delay,0ms) ease-in-out infinite;
    transform-origin:center center;filter:drop-shadow(0 0 4px rgba(168,85,247,.6))}
@keyframes aa-tornado-spin{
    0%{transform:translate(-50%,-50%) rotate(var(--phase,0deg)) translateX(8vmin) scale(0.5) translateY(-40vh)}
    20%{transform:translate(-50%,-50%) rotate(calc(var(--phase,0deg) + 120deg)) translateX(22vmin) scale(1) translateY(-10vh)}
    50%{transform:translate(-50%,-50%) rotate(calc(var(--phase,0deg) + 300deg)) translateX(28vmin) scale(1.2) translateY(15vh)}
    80%{transform:translate(-50%,-50%) rotate(calc(var(--phase,0deg) + 540deg)) translateX(18vmin) scale(0.9) translateY(35vh)}
    100%{transform:translate(-50%,-50%) rotate(calc(var(--phase,0deg) + 720deg)) translateX(4vmin) scale(0.2) translateY(50vh);opacity:0}
}

/* Role Snow */
.aa-snow-icon{position:fixed;top:-60px;object-fit:contain;pointer-events:none;z-index:9998;
    animation:aa-snow-fall var(--fall-dur,7s) var(--delay,0ms) ease-in forwards;
    filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}
@keyframes aa-snow-fall{
    0%{transform:translateY(0) translateX(0) rotate(0deg);opacity:1}
    100%{transform:translateY(110vh) translateX(var(--drift,0px)) rotate(360deg);opacity:.4}
}

/* Matrix */
.aa-matrix-wrap{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:9998;background:rgba(0,10,0,.5);animation:aa-matrix-fade 2s 8s ease forwards}
.aa-matrix-col{position:absolute;top:-30vh;display:flex;flex-direction:column;gap:2px;animation:aa-matrix-col-fall var(--dur,5s) var(--delay,0s) ease-in forwards}
.aa-matrix-col span{font-family:monospace;font-size:1.1rem;color:#00ff41;text-shadow:0 0 8px #00ff41;line-height:1.3}
@keyframes aa-matrix-col-fall{from{transform:translateY(0)}to{transform:translateY(160vh)}}
@keyframes aa-matrix-fade{to{opacity:0}}

/* Disco */
.aa-disco-flash{position:fixed;inset:0;pointer-events:none;z-index:9998;transition:opacity .08s}

/* Earthquake crack */
.aa-crack-wrap{position:fixed;inset:0;pointer-events:none;z-index:9997}
.aa-crack-svg{width:100%;height:100%;position:absolute;inset:0}
.aa-crack-line{fill:none;stroke:rgba(255,255,255,.7);stroke-width:.4;stroke-linecap:round;animation:aa-crack-draw .4s .3s ease forwards}
.aa-crack-2{stroke:rgba(255,255,255,.4);animation:aa-crack-draw .5s .5s ease forwards}
@keyframes aa-crack-draw{to{stroke-dashoffset:0}}

/* Laser show */
.aa-laser-beam{position:fixed;left:0;right:0;height:3px;background:var(--color,#ff0000);box-shadow:0 0 12px 4px var(--color,#ff0000);pointer-events:none;z-index:9998;
    animation:aa-laser-sweep var(--dur,1500ms) var(--delay,0ms) ease-in-out forwards;
    transform:rotate(var(--angle,0deg));transform-origin:left center;opacity:0}
@keyframes aa-laser-sweep{0%{opacity:0;transform:rotate(var(--angle,0deg)) scaleX(0)}20%{opacity:.9}50%{opacity:.9;transform:rotate(var(--angle,0deg)) scaleX(1)}100%{opacity:0;transform:rotate(var(--angle,0deg)) scaleX(1.2)}}

/* Big Slam */
.aa-bigslam-wrap{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:9999;overflow:hidden}
.aa-bigslam-text{font-size:clamp(3rem,14vw,9rem);font-weight:900;color:#fff;text-align:center;text-transform:uppercase;
    text-shadow:0 0 40px rgba(168,85,247,1),0 0 80px rgba(168,85,247,.6),4px 4px 0 rgba(0,0,0,.8);
    padding:0 20px;word-break:break-word;max-width:90vw;
    animation:aa-slam-in .35s cubic-bezier(.17,.67,.12,1.5) forwards}
.aa-bigslam-shatter .aa-bigslam-text{animation:aa-slam-shatter .5s ease forwards!important}
@keyframes aa-slam-in{from{transform:scale(4);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes aa-slam-shatter{0%{transform:scale(1);opacity:1}50%{transform:scale(1.3) skewX(5deg);filter:brightness(2)}100%{transform:scale(8);opacity:0;filter:brightness(3)}}

/* Vortex */
.aa-vortex-wrap{position:fixed;inset:0;pointer-events:none;z-index:9998;
    background:conic-gradient(from 0deg,rgba(168,85,247,.0),rgba(168,85,247,.6),rgba(99,102,241,.4),rgba(168,85,247,.0));
    animation:aa-vortex-spin 3s linear infinite,aa-vortex-in .5s ease forwards}
.aa-vortex-out{animation:aa-vortex-spin 1s linear infinite,aa-vortex-fade .5s ease forwards!important}
@keyframes aa-vortex-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes aa-vortex-in{from{opacity:0;transform:scale(.5) rotate(0deg)}to{opacity:1;transform:scale(1) rotate(360deg)}}
@keyframes aa-vortex-fade{to{opacity:0;transform:scale(3) rotate(720deg)}}


/* Role anim button accent */
.aa-btn-role{background:linear-gradient(135deg,rgba(99,102,241,.25),rgba(168,85,247,.25))!important;border-color:rgba(168,85,247,.4)!important}
.aa-btn-role:hover{background:linear-gradient(135deg,rgba(99,102,241,.4),rgba(168,85,247,.4))!important}

/* ---- FX panel redesign ------------------------------------------------- */
.aa-fx-grid{display:flex;flex-direction:column;gap:14px;padding:4px 0}
.aa-fx-section{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:14px 16px}
.aa-fx-section-title{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.45);margin-bottom:10px}
.aa-fx-chip-row{display:flex;flex-wrap:wrap;gap:6px}
.aa-fx-chip{display:inline-flex;align-items:center;gap:4px;padding:5px 11px;border-radius:20px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.07);color:rgba(255,255,255,.85);font-size:.8rem;cursor:pointer;transition:all .15s;white-space:nowrap}
.aa-fx-chip:hover{background:rgba(255,255,255,.15);border-color:rgba(255,255,255,.25);transform:translateY(-1px)}
.aa-fx-chip:active{transform:translateY(0);opacity:.7}
.aa-fx-chip-hot{border-color:rgba(239,68,68,.4);background:rgba(239,68,68,.1);color:#fca5a5}
.aa-fx-chip-hot:hover{background:rgba(239,68,68,.2)!important}
.aa-fx-chip-role{border-color:rgba(168,85,247,.35);background:rgba(168,85,247,.1);color:#c4b5fd}
.aa-fx-chip-role:hover{background:rgba(168,85,247,.22)!important}
.aa-fx-chip-danger{border-color:rgba(239,68,68,.4);background:rgba(239,68,68,.12);color:#fca5a5}
.aa-fx-chip-danger:hover{background:rgba(239,68,68,.2)!important}
.aa-fx-wide{/* full width naturally since flex col */}

/* ---- New animation CSS -------------------------------------------------- */

/* zoom */
.aa-zoom-text{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:9999;font-size:5rem;font-weight:900;color:#fff;text-shadow:0 0 40px rgba(255,255,255,.6);animation:aa-zoom-in .4s cubic-bezier(.2,.8,.3,1.2) forwards;text-align:center;padding:0 20px}
.aa-zoom-out{animation:aa-zoom-fade .5s ease forwards!important}
@keyframes aa-zoom-in{from{opacity:0;transform:scale(4)}to{opacity:1;transform:scale(1)}}
@keyframes aa-zoom-fade{to{opacity:0;transform:scale(.3)}}

/* neon */
.aa-neon-text{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:9999;font-size:3.5rem;font-weight:900;color:#fff;text-shadow:0 0 10px #a855f7,0 0 30px #a855f7,0 0 60px #a855f7,0 0 100px #7c3aed;animation:aa-neon-flicker 3.5s ease forwards;text-align:center;padding:0 20px}
.aa-neon-out{animation:aa-neon-fade .6s ease forwards!important}
@keyframes aa-neon-flicker{0%{opacity:0}5%{opacity:1}8%{opacity:.3}12%{opacity:1}20%{text-shadow:0 0 10px #a855f7,0 0 30px #a855f7,0 0 80px #7c3aed}50%{text-shadow:0 0 5px #a855f7,0 0 15px #a855f7}70%{text-shadow:0 0 10px #a855f7,0 0 40px #a855f7,0 0 100px #7c3aed}100%{opacity:1}}
@keyframes aa-neon-fade{to{opacity:0;filter:blur(8px)}}

/* rise */
.aa-rise-text{position:fixed;left:50%;bottom:15%;transform:translateX(-50%) translateY(60px);pointer-events:none;z-index:9999;font-size:3rem;font-weight:800;color:#fff;text-shadow:0 2px 20px rgba(0,0,0,.8);animation:aa-rise-in .6s cubic-bezier(.2,.8,.3,1.1) forwards;white-space:nowrap}
.aa-rise-out{animation:aa-rise-fade .6s ease forwards!important}
@keyframes aa-rise-in{to{transform:translateX(-50%) translateY(0);opacity:1}from{opacity:0}}
@keyframes aa-rise-fade{to{opacity:0;transform:translateX(-50%) translateY(-80px)}}

/* bounce-text */
.aa-bounce-text{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:9999;font-size:4rem;font-weight:900;color:#facc15;text-shadow:0 4px 0 #92400e;animation:aa-bounce-in 2.5s ease forwards;text-align:center;padding:0 20px}
.aa-bounce-out{animation:aa-bounce-fade .5s ease forwards!important}
@keyframes aa-bounce-in{0%{opacity:0;transform:translateY(-200px)}20%{opacity:1;transform:translateY(20px)}35%{transform:translateY(-40px)}50%{transform:translateY(10px)}65%{transform:translateY(-20px)}80%{transform:translateY(5px)}100%{transform:translateY(0)}}
@keyframes aa-bounce-fade{to{opacity:0;transform:scale(.5)}}

/* wave-text */
.aa-wave-text-wrap{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:9999;font-size:3.5rem;font-weight:900;color:#38bdf8;text-shadow:0 0 20px rgba(56,189,248,.5);text-align:center;padding:0 20px}
.aa-wave-text-wrap span{display:inline-block;animation:aa-wave-char 1.2s ease infinite}
.aa-wave-out{animation:aa-wave-fade .6s ease forwards!important}
@keyframes aa-wave-char{0%,100%{transform:translateY(0)}50%{transform:translateY(-20px)}}
@keyframes aa-wave-fade{to{opacity:0}}

/* shatter */
.aa-shatter-wrap{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:9999}
.aa-shatter-text{font-size:4rem;font-weight:900;color:#fff;text-shadow:0 0 30px rgba(255,255,255,.4);transition:all .3s ease}
.aa-shatter-go{animation:aa-shatter-break .6s ease forwards}
@keyframes aa-shatter-break{0%{opacity:1;transform:scale(1)}30%{transform:scale(1.05)}100%{opacity:0;transform:scale(0) rotate(15deg);filter:blur(20px)}}

/* pixel */
.aa-pixel-text{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:9999;font-size:3.5rem;font-weight:900;color:#4ade80;font-family:monospace;letter-spacing:.15em;text-shadow:2px 2px 0 #16a34a;image-rendering:pixelated;animation:aa-pixel-in .4s steps(4) forwards;text-align:center;padding:0 20px}
.aa-pixel-out{animation:aa-pixel-fade .5s steps(4) forwards!important}
@keyframes aa-pixel-in{from{opacity:0;transform:scale(2)}to{opacity:1;transform:scale(1)}}
@keyframes aa-pixel-fade{to{opacity:0;filter:blur(4px)}}

/* strobe */
.aa-strobe-wrap{position:fixed;inset:0;background:#fff;pointer-events:none;z-index:9999;animation:aa-strobe 2s steps(1) forwards}
@keyframes aa-strobe{0%{opacity:1}5%{opacity:0}10%{opacity:.8}15%{opacity:0}20%{opacity:.6}25%{opacity:0}35%{opacity:.4}40%{opacity:0}55%{opacity:.2}60%{opacity:0}100%{opacity:0}}

/* thunderstorm */
.aa-thunderstorm-wrap{position:fixed;inset:0;background:rgba(10,10,30,.6);pointer-events:none;z-index:9990;animation:aa-thunder-bg 8s ease forwards}
.aa-lightning-bolt{position:absolute;top:0;width:4px;background:linear-gradient(to bottom,#fff,rgba(200,220,255,.8),transparent);border-radius:2px;transform-origin:top center;animation:aa-lightning .6s ease forwards;box-shadow:0 0 20px 6px rgba(180,200,255,.8)}
@keyframes aa-thunder-bg{0%,100%{opacity:0}10%,90%{opacity:1}}
@keyframes aa-lightning{0%{height:0;opacity:1}40%{height:60vh;opacity:1}60%{height:70vh;opacity:.6}100%{height:80vh;opacity:0}}

/* heartbeat */
.aa-heartbeat-wrap{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:9999}
.aa-heartbeat-icon{font-size:10rem;animation:aa-heartbeat-pulse 3s ease forwards}
.aa-heartbeat-out{animation:aa-heartbeat-shrink .6s ease forwards!important}
@keyframes aa-heartbeat-pulse{0%{transform:scale(0);opacity:0}10%{transform:scale(1.3);opacity:1}20%{transform:scale(.95)}30%{transform:scale(1.2)}40%{transform:scale(.98)}100%{transform:scale(1);opacity:1}}
@keyframes aa-heartbeat-shrink{to{opacity:0;transform:scale(0)}}

/* smoke */
.aa-smoke-puff{position:fixed;width:80px;height:80px;border-radius:50%;background:radial-gradient(circle,rgba(150,150,150,.5) 0%,transparent 70%);pointer-events:none;z-index:9998;animation:aa-smoke-rise linear forwards}
@keyframes aa-smoke-rise{from{opacity:0;transform:scale(.3) translateY(0)}20%{opacity:.7}to{opacity:0;transform:scale(3) translateY(-120px)}}

/* ripple */
.aa-ripple-ring{position:fixed;top:50%;left:50%;width:60px;height:60px;margin:-30px 0 0 -30px;border-radius:50%;border:4px solid var(--rc,#a855f7);pointer-events:none;z-index:9998;animation:aa-ripple-expand 1.8s ease forwards}
@keyframes aa-ripple-expand{from{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(18)}}

/* role-orbit */
.aa-role-orbit-wrap{position:fixed;inset:0;pointer-events:none;z-index:9998;display:flex;align-items:center;justify-content:center}
.aa-role-orbit-item{position:absolute;width:44px;height:44px;animation:aa-orbit-spin 4s linear infinite;transform-origin:0 160px}
.aa-role-orbit-item img{width:100%;height:100%;border-radius:50%;box-shadow:0 0 10px rgba(168,85,247,.5)}
.aa-role-orbit-out{animation:aa-orbit-fade .8s ease forwards!important}
@keyframes aa-orbit-spin{from{transform:rotate(calc(var(--idx)*calc(360deg/var(--total)))) translateX(160px) rotate(0deg)}to{transform:rotate(calc(var(--idx)*calc(360deg/var(--total)) + 360deg)) translateX(160px) rotate(-360deg)}}
@keyframes aa-orbit-fade{to{opacity:0;transform:scale(2)}}

/* role-bounce */
.aa-role-bounce-wrap{position:fixed;inset:0;pointer-events:none;z-index:9998}
.aa-role-bounce-item{position:absolute;left:var(--tx,50%);bottom:-60px;animation:aa-role-bounce-fly 5s cubic-bezier(.2,.8,.3,1.1) forwards}
.aa-role-bounce-item img{width:40px;height:40px;border-radius:50%}
.aa-role-bounce-out{animation:aa-bounce-vanish .6s ease forwards!important}
@keyframes aa-role-bounce-fly{0%{bottom:-60px;opacity:0}10%{opacity:1}40%{bottom:70%}60%{bottom:50%}80%{bottom:65%}100%{bottom:55%;opacity:.8}}
@keyframes aa-bounce-vanish{to{opacity:0;transform:scale(0)}}

/* portal-open */
.aa-portal-wrap{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:9998}
.aa-portal-wrap::before{content:'';width:300px;height:300px;border-radius:50%;background:conic-gradient(#7c3aed,#2563eb,#16a34a,#d97706,#dc2626,#ec4899,#7c3aed);animation:aa-portal-spin 2s linear infinite,aa-portal-grow .5s ease forwards;filter:blur(2px);opacity:.85}
.aa-portal-out{animation:aa-portal-vanish .8s ease forwards!important}
.aa-portal-out::before{animation:aa-portal-vanish .8s ease forwards!important}
@keyframes aa-portal-spin{to{transform:rotate(360deg)}}
@keyframes aa-portal-grow{from{transform:scale(0)}to{transform:scale(1)}}
@keyframes aa-portal-vanish{to{opacity:0;transform:scale(5)}}

/* glitch-storm */
.aa-glitch-storm-wrap{position:fixed;inset:0;pointer-events:none;z-index:9998;overflow:hidden}
.aa-glitch-bar{position:absolute;left:-5%;width:110%;background:linear-gradient(90deg,transparent,rgba(99,102,241,.6),rgba(236,72,153,.6),transparent);animation:aa-glitch-slide linear forwards}
@keyframes aa-glitch-slide{from{transform:translateX(-30%);opacity:1}to{transform:translateX(130%);opacity:0}}

/* color-flood */
.aa-color-flood-wrap{position:fixed;inset:0;pointer-events:none;z-index:9997;transition:background .3s,opacity .25s}

/* star-burst */
.aa-star-burst-item{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:9998;animation:aa-star-shoot 2s ease forwards}
@keyframes aa-star-shoot{0%{opacity:0;transform:translate(-50%,-50%) rotate(var(--angle)) translateY(0)}20%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) rotate(var(--angle)) translateY(calc(-1 * var(--dist)))}}

/* text-rain */
.aa-text-rain-item{position:fixed;top:-2rem;pointer-events:none;z-index:9998;color:#38bdf8;font-weight:700;text-shadow:0 0 10px rgba(56,189,248,.7);white-space:nowrap;animation:aa-text-rain-fall linear forwards}
@keyframes aa-text-rain-fall{from{top:-3rem;opacity:0}10%{opacity:1}90%{opacity:.8}to{top:110vh;opacity:0}}

/* role-spiral */
.aa-role-spiral-wrap{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:9998}
.aa-role-spiral-item{position:absolute;animation:aa-spiral-path 9s linear forwards}
.aa-role-spiral-out{animation:aa-role-fade .8s ease forwards!important}
@keyframes aa-spiral-path{0%{transform:rotate(calc(var(--idx)*30deg)) translateX(20px) scale(0);opacity:0}10%{opacity:1;transform:rotate(calc(var(--idx)*30deg)) translateX(60px) scale(.6)}50%{transform:rotate(calc(var(--idx)*30deg + 540deg)) translateX(180px) scale(1)}90%{transform:rotate(calc(var(--idx)*30deg + 900deg)) translateX(260px) scale(1);opacity:1}100%{transform:rotate(calc(var(--idx)*30deg + 1080deg)) translateX(300px) scale(.3);opacity:0}}
@keyframes aa-role-fade{to{opacity:0;transform:scale(3)}}

/* clock-wipe */
.aa-clock-wipe-wrap{position:fixed;inset:0;pointer-events:none;z-index:9998;background:conic-gradient(rgba(99,102,241,.4) 0deg,transparent 0deg);animation:aa-clock-sweep 4s linear forwards}
.aa-clock-wipe-out{animation:aa-clock-fade .6s ease forwards!important}
@keyframes aa-clock-sweep{0%{background:conic-gradient(rgba(99,102,241,.4) 0deg,transparent 0deg)}100%{background:conic-gradient(rgba(99,102,241,.4) 360deg,transparent 360deg)}}
@keyframes aa-clock-fade{to{opacity:0}}

/* shockwave */
.aa-shockwave-ring{position:fixed;top:50%;left:50%;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;border:6px solid rgba(255,255,255,.8);pointer-events:none;z-index:9999;box-shadow:0 0 20px rgba(255,255,255,.4);animation:aa-shockwave-expand 1.2s ease forwards}
@keyframes aa-shockwave-expand{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(60)}}

/* ---- Quick Lines / Lyrics Bank ----------------------------------------- */
.aa-ql-chips{display:flex;flex-wrap:wrap;gap:5px;max-height:260px;overflow-y:auto;padding:2px 0}
.aa-ql-chip{display:inline-block;padding:4px 10px;border-radius:16px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.06);color:rgba(255,255,255,.8);font-size:.78rem;cursor:pointer;text-align:left;transition:all .12s;white-space:normal;word-break:break-word;max-width:100%}
.aa-ql-chip:hover{background:rgba(99,102,241,.25);border-color:rgba(99,102,241,.5);color:#fff;transform:translateY(-1px)}
.aa-ql-chip:active{transform:translateY(0)}
.aa-ql-chip-sent{background:rgba(34,197,94,.3)!important;border-color:rgba(34,197,94,.6)!important;transform:scale(1.05)!important}

/* ---- Timed Lyrics Panel ------------------------------------------------- */
.aa-lyrics-pane{display:flex;flex-direction:column;gap:12px;padding:2px 0}
.aa-lyrics-np-card{background:linear-gradient(135deg,rgba(99,102,241,.12),rgba(163,113,247,.08))!important;border-color:rgba(163,113,247,.3)!important}
.aa-lyrics-np-header{display:flex;align-items:center;gap:12px}
.aa-lyrics-np-icon{font-size:1.5rem;animation:aa-bob 1.6s ease-in-out infinite}
.aa-lyrics-np-info{flex:1;min-width:0}
.aa-lyrics-np-title{font-size:.95rem;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px}
.aa-lyrics-seek-row{display:flex;align-items:center;gap:8px}
.aa-lyrics-elapsed{font-size:.72rem;color:var(--t3);font-family:monospace;flex-shrink:0;min-width:32px}
.aa-lyrics-seek-track{flex:1;height:4px;background:rgba(255,255,255,.1);border-radius:2px;overflow:hidden}
.aa-lyrics-seek-fill{height:100%;width:0%;background:linear-gradient(90deg,#a371f7,#ff5db1);border-radius:2px;transition:width .5s linear}
.aa-lyrics-cur-card{background:rgba(163,113,247,.06)!important;border-color:rgba(163,113,247,.2)!important}
.aa-lyrics-cur-label{font-size:.65rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--t3);margin-bottom:6px}
.aa-lyrics-cur-sub{font-size:.7rem;color:var(--t3)}
.aa-lyrics-upcoming-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;flex-wrap:wrap;gap:6px}
.aa-lyrics-current-line{font-size:1.1rem;font-weight:700;color:#fff;line-height:1.5;letter-spacing:.01em}
.aa-lyrics-idle{font-size:.85rem;color:var(--t3);font-style:italic}
.aa-lyrics-upcoming-card{background:rgba(10,0,22,.5)!important}
.aa-lyrics-upcoming{display:flex;flex-direction:column;gap:6px}
.aa-lyrics-chip{
    display:flex;align-items:center;gap:10px;
    width:100%;padding:10px 14px;
    border-radius:10px;border:1px solid rgba(255,255,255,.08);
    background:rgba(255,255,255,.04);
    color:rgba(255,255,255,.75);font-size:.9rem;
    cursor:pointer;text-align:left;
    transition:all .12s;
}
.aa-lyrics-chip:hover{background:rgba(99,102,241,.2);border-color:rgba(99,102,241,.4);color:#fff;transform:translateX(3px)}
.aa-lyrics-chip-next{
    background:linear-gradient(90deg,rgba(163,113,247,.18),rgba(99,102,241,.1))!important;
    border-color:rgba(163,113,247,.45)!important;
    color:#fff!important;font-size:1rem;font-weight:600;
    box-shadow:0 0 12px -4px rgba(163,113,247,.4);
}
.aa-lyrics-chip-next .aa-lyrics-chip-timer{color:#a371f7!important;font-weight:700}
.aa-lyrics-chip-sent{background:rgba(34,197,94,.25)!important;border-color:rgba(34,197,94,.5)!important;transform:scale(1.02)!important}
.aa-lyrics-chip-timer{font-size:.68rem;font-family:monospace;color:var(--t3);flex-shrink:0;min-width:30px;text-align:right}
.aa-lyrics-chip-text{flex:1}

/* Style picker row */
.aa-lyrics-style-card{background:rgba(99,102,241,.07)!important;border-color:rgba(99,102,241,.25)!important}
.aa-lyrics-style-row{display:flex;flex-wrap:wrap;gap:5px}
.aa-lyrics-style-btn{
    padding:5px 11px;border-radius:14px;border:1px solid rgba(255,255,255,.1);
    background:rgba(255,255,255,.05);color:rgba(255,255,255,.65);
    font-size:.75rem;cursor:pointer;transition:all .12s;white-space:nowrap;
}
.aa-lyrics-style-btn:hover{background:rgba(99,102,241,.2);border-color:rgba(99,102,241,.4);color:#fff}
.aa-lyrics-style-btn--active{
    background:linear-gradient(135deg,rgba(99,102,241,.4),rgba(163,113,247,.3))!important;
    border-color:rgba(163,113,247,.6)!important;color:#fff!important;
    box-shadow:0 0 10px -3px rgba(163,113,247,.5);font-weight:600;
}

/* Song controls inside lyrics card */
.aa-lyrics-song-controls{margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.07)}

/* Timing offset nudge control */
.aa-lyrics-offset-ctrl{display:flex;align-items:center;gap:4px;flex-shrink:0}
.aa-lyrics-offset-btn{
    padding:4px 8px;border-radius:8px;border:1px solid rgba(255,255,255,.15);
    background:rgba(255,255,255,.06);color:rgba(255,255,255,.7);
    font-size:.78rem;font-weight:700;cursor:pointer;transition:all .1s;
    font-family:monospace;
}
.aa-lyrics-offset-btn:hover{background:rgba(255,255,255,.12);color:#fff}
.aa-lyrics-offset-btn-plus{border-color:rgba(163,113,247,.35);color:#a371f7}
.aa-lyrics-offset-btn-plus:hover{background:rgba(163,113,247,.2)!important;color:#c4a1fa!important}
.aa-lyrics-offset-val{font-size:.72rem;font-family:monospace;color:var(--t3);min-width:26px;text-align:center}

/* Mobile */
@media (max-width:900px){
    .aa-page{height:auto;min-height:calc(100vh - 80px)}
    .aa-fhead{flex-wrap:wrap;gap:10px;padding:10px 12px}
    .aa-fhead-title{min-width:0;flex:1 1 auto}
    .aa-fhead-tabs{flex-basis:100%;justify-content:flex-start;overflow-x:auto;padding-bottom:2px}
    .aa-fhead-tab{padding:6px 10px;font-size:.72rem}
    .aa-pane-host{padding:12px}
    .aa-pane-grid-2{grid-template-columns:1fr}
    .aa-pane-grid-actions{grid-template-columns:1fr}
    .aa-page-owner .aa-stage:has([data-dropcard]){min-height:200px}
    .aa-drop{width:100%;max-width:280px}
    .aa-splash-text{font-size:1.8rem}
    .aa-dp-row{grid-template-columns:1fr;gap:8px}
    .aa-dp-icon{display:none}
    .aa-dp-btns{flex-direction:row}
    .aa-emote-bar{gap:4px;padding:6px 10px}
    .aa-emote-btn{font-size:1.3rem}
}

/* ── Role Manager (rm-*) ──────────────────────────────────────────────────── */
.rm-page{max-width:1100px;margin:0 auto;padding:28px 20px 60px}
.rm-add-card{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:18px 20px;margin-bottom:28px}
.rm-add-title{font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.4);margin-bottom:12px}
.rm-add-row{display:flex;gap:10px;align-items:center}
.rm-id-input{flex:1;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:8px 12px;color:#fff;font-size:.85rem;outline:none;font-family:inherit;transition:border-color .15s}
.rm-id-input:focus{border-color:rgba(255,255,255,.3)}
.rm-btn{padding:8px 18px;border-radius:8px;border:none;font-size:.83rem;font-weight:600;cursor:pointer;transition:opacity .15s}
.rm-btn--primary{background:#7c5cfc;color:#fff}
.rm-btn--primary:hover{opacity:.85}
.rm-btn:disabled{opacity:.45;cursor:not-allowed}
.rm-add-preview{margin-top:12px}
.rm-hidden{display:none!important}
.rm-preview-inner{display:flex;align-items:center;gap:10px}
.rm-preview-hint{font-size:.75rem;color:rgba(255,255,255,.45);margin-left:4px}
.rm-preview-err{font-size:.78rem;color:#ff6b6b;padding:4px 0}

.rm-list-header{display:grid;grid-template-columns:28px 32px 160px 1fr 168px 64px 14px 28px;gap:0 10px;align-items:center;padding:0 10px 6px;font-size:.65rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.28);border-bottom:1px solid rgba(255,255,255,.07);margin-bottom:4px}
.rm-list{display:flex;flex-direction:column;gap:3px}
.rm-row{display:grid;grid-template-columns:28px 32px 160px 1fr 168px 64px 14px 28px;gap:0 10px;align-items:center;padding:6px 10px;border-radius:8px;background:rgba(255,255,255,.025);transition:background .1s}
.rm-row:hover{background:rgba(255,255,255,.045)}
.rm-row--ghost{opacity:.4;background:rgba(124,92,252,.12)!important}
.rm-row--chosen{background:rgba(124,92,252,.15)!important}
.rm-drag-handle{color:rgba(255,255,255,.22);font-size:1.1rem;cursor:grab;user-select:none;text-align:center;line-height:1}
.rm-drag-handle:active{cursor:grabbing}
.rm-col--icon{display:flex;align-items:center;justify-content:center}
.rm-icon{width:26px;height:26px;object-fit:contain;display:block}
.rm-icon--empty{width:26px;height:26px;background:rgba(255,255,255,.06);border-radius:6px;display:block}
.rm-icon--lg{width:34px;height:34px}
.rm-col--name,.rm-col--obtain,.rm-col--limited,.rm-col--flags,.rm-col--dot,.rm-col--del{display:flex;align-items:center}
.rm-name{font-size:.82rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rm-name--lg{font-size:.9rem;font-weight:700}
.rm-obtain-input{width:100%;background:transparent;border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:5px 8px;color:rgba(255,255,255,.75);font-size:.78rem;outline:none;font-family:inherit;transition:border-color .15s}
.rm-obtain-input:focus{border-color:rgba(124,92,252,.5);background:rgba(255,255,255,.04)}
.rm-limited-wrap{display:flex;gap:4px}
.rm-lbtn{padding:3px 9px;border-radius:5px;border:1px solid rgba(255,255,255,.1);background:transparent;color:rgba(255,255,255,.35);font-size:.68rem;font-weight:700;cursor:pointer;transition:all .12s}
.rm-lbtn:hover{border-color:rgba(255,255,255,.25);color:rgba(255,255,255,.6)}
.rm-lbtn--active.rm-lbtn--lim{background:rgba(255,70,70,.15);border-color:rgba(255,110,110,.4);color:rgba(255,110,110,.9)}
.rm-lbtn--active.rm-lbtn--open{background:rgba(60,210,110,.12);border-color:rgba(80,220,130,.35);color:rgba(80,220,130,.9)}
.rm-lbtn--active.rm-lbtn--unset{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.2);color:rgba(255,255,255,.55)}
.rm-flags-wrap{display:flex;gap:4px}
.rm-flag-btn{width:26px;height:24px;border-radius:5px;border:1px solid rgba(255,255,255,.1);background:transparent;color:rgba(255,255,255,.3);font-size:.72rem;font-weight:800;cursor:pointer;transition:all .12s;display:flex;align-items:center;justify-content:center;line-height:1}
.rm-flag-btn:hover{border-color:rgba(255,255,255,.25);color:rgba(255,255,255,.6)}
.rm-flag-btn--on{background:rgba(124,92,252,.18);border-color:rgba(124,92,252,.45);color:#bca7ff}
.rm-add-opts{display:flex;gap:18px;margin-top:10px;font-size:.78rem;color:rgba(255,255,255,.55)}
.rm-add-opt{display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none}
.rm-add-opt input[type="checkbox"]{accent-color:#7c5cfc;width:14px;height:14px;cursor:pointer}
.rm-status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:transparent;transition:background .2s}
.rm-status-dot--saving{background:#f5a623}
.rm-status-dot--saved{background:#3cd68e}
.rm-status-dot--err{background:#ff4466}
.rm-del-btn{background:none;border:none;color:rgba(255,100,100,.45);font-size:.78rem;cursor:pointer;padding:2px 4px;border-radius:4px;transition:color .12s,background .12s;line-height:1}
.rm-del-btn:hover{color:rgba(255,80,80,.9);background:rgba(255,60,60,.1)}
.rm-loading{padding:40px 0;text-align:center;color:rgba(255,255,255,.3);font-size:.85rem}
.rm-err{color:#ff6b6b}

    .aa-page{height:auto;min-height:calc(100vh - 80px)}
    .aa-fhead{flex-wrap:wrap;gap:10px;padding:10px 12px}
    .aa-fhead-title{min-width:0;flex:1 1 auto}
    .aa-fhead-tabs{flex-basis:100%;justify-content:flex-start;overflow-x:auto;padding-bottom:2px}
    .aa-fhead-tab{padding:6px 10px;font-size:.72rem}
    .aa-pane-host{padding:12px}
    .aa-pane-grid-2{grid-template-columns:1fr}
    .aa-pane-grid-actions{grid-template-columns:1fr}
    .aa-page-owner .aa-stage:has([data-dropcard]){min-height:200px}
    .aa-drop{width:100%;max-width:280px}
    .aa-splash-text{font-size:1.8rem}
    .aa-dp-row{grid-template-columns:1fr;gap:8px}
    .aa-dp-icon{display:none}
    .aa-dp-btns{flex-direction:row}
    .aa-emote-bar{gap:4px;padding:6px 10px}
    .aa-emote-btn{font-size:1.3rem}
}

/* =========================================================================
 * Abuse panel — Admin UX redesign (sticky quick bar, drops v2, FX search)
 * ========================================================================= */

/* Sticky quick action bar — visible across all admin tabs */
.aa-quick-bar{position:sticky;top:0;z-index:50;display:flex;flex-direction:column;gap:8px;padding:10px 16px;background:rgba(15,18,30,.92);backdrop-filter:blur(10px);border-bottom:1px solid rgba(255,255,255,.06)}
.aa-quick-msg-wrap{display:flex;gap:6px;align-items:center}
.aa-quick-msg{flex:1 1 auto;min-width:0;padding:9px 14px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:10px;color:#fff;font-size:.92rem;outline:none;transition:border-color .15s,background .15s}
.aa-quick-msg:focus{border-color:rgba(168,85,247,.5);background:rgba(255,255,255,.08)}
.aa-quick-style{flex:0 0 auto;padding:9px 10px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:10px;color:#fff;font-size:.78rem;outline:none;cursor:pointer;max-width:160px}
.aa-quick-send{flex:0 0 auto;padding:9px 18px;background:linear-gradient(135deg,#7c3aed,#a855f7);border:none;border-radius:10px;color:#fff;font-weight:700;font-size:.85rem;cursor:pointer;transition:transform .12s,box-shadow .12s;box-shadow:0 2px 12px rgba(168,85,247,.4)}
.aa-quick-send:hover{transform:translateY(-1px);box-shadow:0 4px 18px rgba(168,85,247,.55)}
.aa-quick-send:active{transform:translateY(0)}
.aa-quick-icon{flex:0 0 auto;width:38px;height:38px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:10px;color:#fff;font-size:1rem;cursor:pointer;transition:background .12s}
.aa-quick-icon:hover{background:rgba(255,255,255,.12)}
.aa-quick-icon-danger{color:#fca5a5}
.aa-quick-icon-danger:hover{background:rgba(239,68,68,.18)}
.aa-quick-favs{display:flex;flex-wrap:wrap;gap:6px}
.aa-quick-fav{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;border-radius:18px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.05);color:rgba(255,255,255,.85);font-size:.85rem;cursor:pointer;transition:all .12s;white-space:nowrap}
.aa-quick-fav:hover{background:rgba(255,255,255,.14);transform:translateY(-1px)}
.aa-quick-fav-combo{border-color:rgba(244,114,182,.4);background:linear-gradient(135deg,rgba(168,85,247,.18),rgba(236,72,153,.18));color:#fbcfe8;font-weight:700}
.aa-quick-fav-combo:hover{background:linear-gradient(135deg,rgba(168,85,247,.32),rgba(236,72,153,.32))!important}
.aa-quick-fav-random{border-color:rgba(34,197,94,.45);background:rgba(34,197,94,.12);color:#86efac;font-weight:700}
.aa-quick-fav-random:hover{background:rgba(34,197,94,.22)!important}
.aa-quick-fav-danger{border-color:rgba(239,68,68,.45);background:rgba(239,68,68,.12);color:#fca5a5}
.aa-quick-fav-danger:hover{background:rgba(239,68,68,.24)!important}

/* Drops v2 — unified launcher */
.aa-dp2{display:flex;flex-direction:column;gap:14px;padding:16px;max-width:920px;margin:0 auto}
.aa-dp2-types{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.aa-dp2-type{display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px 8px;background:rgba(255,255,255,.04);border:2px solid rgba(255,255,255,.08);border-radius:12px;color:rgba(255,255,255,.7);cursor:pointer;transition:all .15s}
.aa-dp2-type:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.18)}
.aa-dp2-type--active{background:linear-gradient(135deg,rgba(124,58,237,.22),rgba(168,85,247,.22));border-color:rgba(168,85,247,.55);color:#fff;box-shadow:0 0 18px rgba(168,85,247,.18)}
.aa-dp2-type-icon{font-size:1.6rem}
.aa-dp2-type-label{font-size:.82rem;font-weight:700}
.aa-dp2-config{padding:14px 16px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:12px}
.aa-dp2-cfg-label{display:block;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.45);margin-bottom:8px}
.aa-dp2-cfg-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.aa-dp2-preset{padding:7px 12px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:8px;color:rgba(255,255,255,.8);font-size:.78rem;cursor:pointer;transition:background .12s}
.aa-dp2-preset:hover{background:rgba(168,85,247,.18)}
.aa-dp2-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.aa-dp2-launch{display:flex;flex-direction:column;align-items:center;gap:2px;padding:18px 16px;border-radius:14px;cursor:pointer;border:none;color:#fff;font-weight:700;transition:transform .15s,box-shadow .15s;background:linear-gradient(135deg,#6366f1,#8b5cf6);box-shadow:0 3px 16px rgba(99,102,241,.35)}
.aa-dp2-launch:hover{transform:translateY(-2px);box-shadow:0 6px 24px rgba(99,102,241,.5)}
.aa-dp2-launch--gift{background:linear-gradient(135deg,#10b981,#22c55e)!important;box-shadow:0 3px 16px rgba(16,185,129,.4)!important}
.aa-dp2-launch--gift:hover{box-shadow:0 6px 24px rgba(16,185,129,.55)!important}
.aa-dp2-launch-icon{font-size:1.5rem}
.aa-dp2-launch-label{font-size:1rem}
.aa-dp2-launch-sub{font-size:.7rem;font-weight:500;opacity:.85}
.aa-dp2-burst{padding:12px 16px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:12px}
.aa-dp2-burst-title{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.45);margin-bottom:8px}
.aa-dp2-burst-row{display:flex;gap:6px;flex-wrap:wrap}
.aa-dp2-history{padding:12px 16px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:12px}
.aa-dp2-history-title{display:flex;justify-content:space-between;align-items:center;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.45);margin-bottom:8px}
.aa-dp2-history-clear{font-size:.65rem;color:rgba(239,68,68,.7);cursor:pointer;text-transform:lowercase;letter-spacing:0;font-weight:500;padding:2px 8px;border-radius:6px;transition:background .12s}
.aa-dp2-history-clear:hover{background:rgba(239,68,68,.12)}
.aa-dp2-history-list{display:flex;flex-direction:column;gap:6px}
.aa-dp2-history-empty{font-size:.78rem;color:rgba(255,255,255,.3);text-align:center;padding:8px 0}
.aa-dp2-history-row{display:flex;justify-content:space-between;padding:8px 12px;background:rgba(255,255,255,.04);border-radius:8px;font-size:.82rem;color:rgba(255,255,255,.85)}
.aa-dp2-history-ago{font-size:.72rem;color:rgba(255,255,255,.4);font-variant-numeric:tabular-nums}

/* FX search + recents + combos */
.aa-fx-controls{display:flex;flex-direction:column;gap:10px}
.aa-fx-search-row{display:flex;gap:8px;align-items:center}
.aa-fx-search-input{flex:1 1 auto;padding:11px 16px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:10px;color:#fff;font-size:.92rem;outline:none;transition:border-color .15s}
.aa-fx-search-input:focus{border-color:rgba(168,85,247,.5);background:rgba(255,255,255,.08)}
.aa-fx-chip-random{border-color:rgba(34,197,94,.45)!important;background:rgba(34,197,94,.12)!important;color:#86efac!important;font-weight:700;font-size:.85rem;padding:9px 16px}
.aa-fx-chip-random:hover{background:rgba(34,197,94,.22)!important}
.aa-fx-chip-combo{border-color:rgba(244,114,182,.4)!important;background:linear-gradient(135deg,rgba(168,85,247,.18),rgba(236,72,153,.18))!important;color:#fbcfe8!important;font-weight:700}
.aa-fx-chip-combo:hover{background:linear-gradient(135deg,rgba(168,85,247,.32),rgba(236,72,153,.32))!important}
.aa-fx-section--combos{background:linear-gradient(135deg,rgba(168,85,247,.06),rgba(236,72,153,.06))!important;border-color:rgba(244,114,182,.18)!important}
.aa-fx-section--recents{background:rgba(34,197,94,.04)!important;border-color:rgba(34,197,94,.18)!important}
.aa-fx-quick-emoji{display:inline-flex;gap:4px;flex-wrap:wrap;margin-left:8px}
.aa-fx-quick-emoji .aa-fx-chip{font-size:1rem;padding:5px 9px}

/* =========================================================================
 * New animations CSS
 * ========================================================================= */

/* TV Static */
.aa-tv-static-wrap{position:fixed;inset:0;background:repeating-linear-gradient(0deg,rgba(255,255,255,.04) 0,rgba(0,0,0,.05) 2px,rgba(255,255,255,.04) 4px);pointer-events:none;z-index:9998;overflow:hidden;animation:aa-tv-flicker 4.5s ease}
.aa-tv-static-px{position:absolute;width:3px;height:3px;background:#fff;animation:aa-tv-px .12s steps(2) infinite}
.aa-tv-scanline{position:absolute;left:0;right:0;height:2px;background:rgba(255,255,255,.4);box-shadow:0 0 12px 4px rgba(255,255,255,.2);animation:aa-tv-scan 2.2s linear infinite;top:0}
@keyframes aa-tv-flicker{0%,100%{opacity:.85}5%{opacity:1}45%{opacity:.7}55%{opacity:1}}
@keyframes aa-tv-px{0%{opacity:.7}50%{opacity:0}100%{opacity:.9}}
@keyframes aa-tv-scan{from{top:-2%}to{top:102%}}

/* Police Siren */
.aa-siren-overlay{position:fixed;inset:0;background:rgba(239,68,68,.45);pointer-events:none;z-index:9997}
.aa-siren-spot{position:fixed;top:0;width:50vw;height:100vh;pointer-events:none;z-index:9998;mix-blend-mode:screen;animation:aa-siren-pulse .44s ease infinite alternate}
.aa-siren-spot-left{left:0;background:radial-gradient(ellipse at 30% 50%,rgba(239,68,68,.7),transparent 60%)}
.aa-siren-spot-right{right:0;background:radial-gradient(ellipse at 70% 50%,rgba(59,130,246,.7),transparent 60%);animation-delay:.22s}
@keyframes aa-siren-pulse{from{opacity:.4}to{opacity:.95}}

/* Aurora Borealis */
.aa-aurora-wrap{position:fixed;inset:0;pointer-events:none;z-index:9997;overflow:hidden;background:linear-gradient(180deg,#020617 0%,#0f172a 50%,#020617 100%);opacity:0;animation:aa-aurora-fadein 1.2s ease forwards}
.aa-aurora-out{opacity:0;transition:opacity .8s}
.aa-aurora-band{position:absolute;left:-20%;right:-20%;height:35%;filter:blur(40px);opacity:.85;mix-blend-mode:screen}
.aa-aurora-band-1{top:15%;background:linear-gradient(90deg,transparent,#10b981,#3b82f6,#a855f7,transparent);animation:aa-aurora-flow 8s ease-in-out infinite}
.aa-aurora-band-2{top:35%;background:linear-gradient(90deg,transparent,#a855f7,#ec4899,#f59e0b,transparent);animation:aa-aurora-flow 11s ease-in-out infinite reverse}
.aa-aurora-band-3{top:55%;background:linear-gradient(90deg,transparent,#3b82f6,#06b6d4,#10b981,transparent);animation:aa-aurora-flow 9s ease-in-out infinite}
@keyframes aa-aurora-fadein{from{opacity:0}to{opacity:1}}
@keyframes aa-aurora-flow{0%,100%{transform:translateX(-10%) scaleY(.8)}50%{transform:translateX(10%) scaleY(1.2)}}

/* Paint Splatter */
.aa-paint-wrap{position:fixed;inset:0;pointer-events:none;z-index:9998;overflow:hidden}
.aa-paint-splat{position:absolute;border-radius:50%;transform:translate(-50%,-50%) scale(0);opacity:.85;animation:aa-paint-pop .5s cubic-bezier(.2,.9,.3,1.4) forwards;filter:blur(.5px)}
.aa-paint-splat::after{content:'';position:absolute;inset:-15%;border-radius:50%;background:inherit;opacity:.5;filter:blur(8px)}
.aa-paint-fade{transition:opacity 1.5s}
.aa-paint-fade .aa-paint-splat{opacity:0;transition:opacity 1.5s ease}
@keyframes aa-paint-pop{from{transform:translate(-50%,-50%) scale(0) rotate(0deg);opacity:0}to{transform:translate(-50%,-50%) scale(1) rotate(180deg);opacity:.85}}

/* Fireball */
.aa-fireball{position:fixed;left:-10vw;font-size:5rem;pointer-events:none;z-index:9998;filter:drop-shadow(0 0 20px #f59e0b) drop-shadow(0 0 40px #ef4444);animation:aa-fb-fly 2.4s linear forwards;top:var(--from-y,-20vh)}
@keyframes aa-fb-fly{from{left:-10vw;top:var(--from-y);transform:rotate(0deg) scale(.5)}to{left:110vw;top:var(--to-y);transform:rotate(720deg) scale(1.5)}}
.aa-fireball-spark{position:fixed;width:14px;height:14px;background:radial-gradient(circle,#fef3c7,#f59e0b 50%,transparent 80%);border-radius:50%;pointer-events:none;z-index:9997;animation:aa-fb-spark .8s ease forwards}
@keyframes aa-fb-spark{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.2) translateY(40px)}}

/* Kaleidoscope */
.aa-kaleido-wrap{position:fixed;inset:0;pointer-events:none;z-index:9997;overflow:hidden;animation:aa-kaleido-spin 5.5s linear}
.aa-kaleido-out{opacity:0;transition:opacity .8s}
.aa-kaleido-slice{position:absolute;left:50%;top:50%;width:50vw;height:50vh;background:conic-gradient(from 0deg,#ef4444,#f59e0b,#facc15,#10b981,#3b82f6,#a855f7,#ec4899,#ef4444);transform-origin:0 0;clip-path:polygon(0 0,100% 0,0 100%);mix-blend-mode:screen;opacity:.6;animation:aa-kaleido-slice 5s ease-in-out}
@keyframes aa-kaleido-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes aa-kaleido-slice{0%,100%{filter:hue-rotate(0deg)}50%{filter:hue-rotate(180deg)}}

/* Midnight (fade to dark with stars) */
.aa-midnight-wrap{position:fixed;inset:0;pointer-events:none;z-index:9997;background:radial-gradient(ellipse at 50% 50%,rgba(15,23,42,.85),rgba(2,6,23,.95));animation:aa-mid-fadein 1.2s ease forwards;opacity:0}
.aa-midnight-out{opacity:0;transition:opacity 1s}
.aa-midnight-star{position:absolute;width:var(--size,2px);height:var(--size,2px);background:#fff;border-radius:50%;box-shadow:0 0 6px rgba(255,255,255,.6);animation:aa-mid-twinkle 2s ease-in-out infinite}
@keyframes aa-mid-fadein{to{opacity:1}}
@keyframes aa-mid-twinkle{0%,100%{opacity:.2;transform:scale(.7)}50%{opacity:1;transform:scale(1.3)}}

/* Black Hole */
.aa-bh-wrap{position:fixed;inset:0;pointer-events:none;z-index:9998;display:flex;align-items:center;justify-content:center}
.aa-bh-disk{width:60px;height:60px;border-radius:50%;background:radial-gradient(circle,#000 35%,#a855f7 60%,#3b82f6 80%,transparent 100%);animation:aa-bh-grow 4s ease-in forwards;box-shadow:0 0 100px 50px rgba(168,85,247,.4)}
.aa-bh-ring{position:absolute;width:120px;height:120px;border-radius:50%;border:2px solid rgba(168,85,247,.6);animation:aa-bh-ring 4s linear infinite,aa-bh-grow 4s ease-in forwards}
.aa-bh-out{opacity:0;transition:opacity .8s}
@keyframes aa-bh-grow{from{transform:scale(.3)}to{transform:scale(8);opacity:.3}}
@keyframes aa-bh-ring{from{transform:scale(.3) rotate(0deg)}to{transform:scale(8) rotate(720deg);opacity:0}}

/* Bubbles */
.aa-bubble-wrap{position:fixed;inset:0;pointer-events:none;z-index:9997;overflow:hidden}
.aa-bubble{position:absolute;bottom:-80px;border-radius:50%;background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.6),rgba(135,206,235,.2) 60%,rgba(135,206,235,.05));border:1px solid rgba(255,255,255,.3);animation:aa-bubble-rise linear forwards}
@keyframes aa-bubble-rise{from{transform:translateY(0) translateX(0);opacity:.8}50%{transform:translateY(-50vh) translateX(20px)}to{transform:translateY(-110vh) translateX(-20px);opacity:0}}

/* Snowfall */
.aa-snowfall-wrap{position:fixed;inset:0;pointer-events:none;z-index:9997;overflow:hidden}
.aa-snowflake{position:absolute;top:-30px;color:#fff;text-shadow:0 0 8px rgba(255,255,255,.5);animation:aa-snow-fall linear forwards}
@keyframes aa-snow-fall{from{transform:translateY(0) translateX(0) rotate(0deg)}to{transform:translateY(110vh) translateX(40px) rotate(360deg)}}

/* Role Galaxy */
.aa-galaxy-wrap{position:fixed;inset:0;pointer-events:none;z-index:9998;overflow:hidden}
.aa-galaxy-out{opacity:0;transition:opacity .8s}
.aa-galaxy-icon{position:absolute;width:42px;height:42px;border-radius:50%;filter:drop-shadow(0 0 8px rgba(168,85,247,.6));transform:translate(-50%,-50%) scale(0);animation:aa-galaxy-spawn 6s cubic-bezier(.25,.8,.25,1) forwards}
@keyframes aa-galaxy-spawn{0%{transform:translate(-50%,-50%) scale(0) rotate(0deg)}30%{transform:translate(calc(-50% + var(--tx) * .5), calc(-50% + var(--ty) * .5)) scale(1) rotate(360deg);opacity:1}80%{transform:translate(calc(-50% + var(--tx)), calc(-50% + var(--ty))) scale(.9) rotate(720deg);opacity:1}100%{transform:translate(calc(-50% + var(--tx) * 1.3), calc(-50% + var(--ty) * 1.3)) scale(0) rotate(1080deg);opacity:0}}

/* Role Heavy Rain */
.aa-rrh-wrap{position:fixed;inset:0;pointer-events:none;z-index:9998;overflow:hidden}
.aa-rrh-drop{position:absolute;top:-80px;width:var(--size,32px);height:var(--size,32px);border-radius:50%;filter:drop-shadow(0 2px 6px rgba(0,0,0,.4));animation:aa-rrh-drop var(--dur,2s) linear forwards}
@keyframes aa-rrh-drop{from{top:-80px;transform:rotate(0deg)}to{top:110vh;transform:rotate(var(--rot,360deg))}}

/* Role Confetti */
.aa-rconf-wrap{position:fixed;inset:0;pointer-events:none;z-index:9998;overflow:hidden}
.aa-rconf-piece{position:absolute;width:36px;height:36px;border-radius:50%;filter:drop-shadow(0 2px 6px rgba(0,0,0,.4));animation:aa-rconf-fly var(--dur,2s) cubic-bezier(.2,.6,.4,1) forwards}
@keyframes aa-rconf-fly{from{transform:translate(0,0) rotate(0deg);opacity:1}to{transform:translate(var(--tx),var(--ty)) rotate(var(--rot,360deg));opacity:0}}

/* Role Formation (star) */
.aa-rform-wrap{position:fixed;inset:0;pointer-events:none;z-index:9998}
.aa-rform-out{opacity:0;transition:opacity .8s}
.aa-rform-icon{position:absolute;width:36px;height:36px;border-radius:50%;filter:drop-shadow(0 0 10px rgba(168,85,247,.6));transform:translate(-50%,-50%) scale(0);animation:aa-rform-fly 1.5s cubic-bezier(.2,.9,.3,1.2) forwards}
@keyframes aa-rform-fly{0%{transform:translate(-50%,-50%) scale(0);opacity:0}50%{transform:translate(calc(-50% + var(--tx) * .5),calc(-50% + var(--ty) * .5)) scale(.7);opacity:.8}100%{transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) scale(1);opacity:1}}

/* Karaoke (bouncing ball) */
.aa-karaoke-wrap{position:fixed;left:0;right:0;bottom:30vh;pointer-events:none;z-index:9999;text-align:center}
.aa-karaoke-out{opacity:0;transition:opacity .6s}
.aa-karaoke-ball{position:fixed;left:0;top:0;width:24px;height:24px;color:#facc15;font-size:24px;text-shadow:0 0 12px #facc15;line-height:24px;transition:transform .15s ease}
.aa-karaoke-text{display:inline-block;font-size:2.5rem;font-weight:800;color:rgba(255,255,255,.4);text-shadow:0 2px 12px rgba(0,0,0,.6);padding:0 20px;max-width:90vw;word-break:break-word}
.aa-karaoke-text span{display:inline-block;transition:color .15s,transform .15s}
.aa-karaoke-active{color:#facc15!important;transform:translateY(-4px) scale(1.1);text-shadow:0 0 16px #facc15}

/* Mobile responsive overrides */
@media (max-width: 720px){
    .aa-quick-msg-wrap{flex-wrap:wrap}
    .aa-quick-style{max-width:none;flex:1 1 100%}
    .aa-quick-msg{flex:1 1 100%}
    .aa-quick-favs{justify-content:center}
    .aa-dp2-types{grid-template-columns:repeat(2,1fr)}
    .aa-dp2-actions{grid-template-columns:1fr}
}

/* Rigged gift block — same row as gift random visually but admin picks recipient */
.aa-dp2-rigged{padding:12px 14px;background:linear-gradient(135deg,rgba(244,114,182,.05),rgba(168,85,247,.05));border:1px solid rgba(244,114,182,.18);border-radius:12px}
.aa-dp2-rigged-head{margin-bottom:8px}
.aa-dp2-rigged-title{font-size:.78rem;font-weight:700;color:#fbcfe8}
.aa-dp2-rigged-row{display:flex;gap:8px;align-items:center}
.aa-dp2-target{flex:1 1 auto;background:rgba(255,255,255,.06)!important;border-color:rgba(244,114,182,.3)!important}
.aa-dp2-rigged-btn{flex:0 0 auto;background:linear-gradient(135deg,#ec4899,#a855f7)!important;border:none!important;color:#fff!important;font-weight:700;padding:9px 18px!important;border-radius:10px!important;box-shadow:0 2px 12px rgba(236,72,153,.35)}
.aa-dp2-rigged-btn:hover{box-shadow:0 4px 18px rgba(236,72,153,.55)!important;transform:translateY(-1px)}

/* ===========================================================================
   Coinflip — admin pane and player overlay (matches dir-card / cases vibe)
   =========================================================================== */

/* ---- Admin pane (owner-only, lives in the abuse panel) ---- */
.aa-cf-admin{display:flex;justify-content:center;padding:18px}
.aa-cf-admin-card{
    width:100%;max-width:680px;
    background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,.008));
    border:1px solid rgba(255,255,255,.06);border-radius:18px;
    padding:22px 22px 18px;display:flex;flex-direction:column;gap:18px;
}
.aa-cf-admin-head{display:flex;flex-direction:column;gap:4px}
.aa-cf-admin-title{font-size:1rem;font-weight:600;color:var(--t1,#fff);letter-spacing:.01em}
.aa-cf-admin-sub{font-size:.78rem;color:var(--t2,rgba(255,255,255,.5))}

.aa-cf-admin-row{display:flex;align-items:flex-end;gap:10px}
.aa-cf-admin-field{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:6px}
.aa-cf-admin-label{font-size:.7rem;font-weight:500;color:var(--t2,rgba(255,255,255,.5));text-transform:uppercase;letter-spacing:.08em}
.aa-cf-admin-select{width:100%}
.aa-cf-admin-swap{
    flex:0 0 auto;align-self:flex-end;
    padding:9px 12px;font-size:.72rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;
    background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);
    border-radius:8px;color:var(--t2,rgba(255,255,255,.6));cursor:pointer;transition:all var(--tr,.15s);
}
.aa-cf-admin-swap:hover{background:rgba(255,255,255,.06);color:var(--t1,#fff);border-color:rgba(255,255,255,.15)}

.aa-cf-admin-prize{
    display:flex;flex-direction:column;gap:10px;
    background:rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.05);
    border-radius:12px;padding:14px;
}
.aa-cf-admin-prize-label{font-size:.7rem;font-weight:500;color:var(--t2,rgba(255,255,255,.5));text-transform:uppercase;letter-spacing:.08em}
.aa-cf-admin-prize-types{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.aa-cf-admin-pt{
    padding:9px 6px;background:rgba(255,255,255,.02);
    border:1px solid rgba(255,255,255,.06);border-radius:8px;
    color:var(--t2,rgba(255,255,255,.55));cursor:pointer;
    font-size:.78rem;font-weight:500;transition:all var(--tr,.15s);
}
.aa-cf-admin-pt:hover{background:rgba(255,255,255,.05);color:var(--t1,#fff);border-color:rgba(255,255,255,.12)}
.aa-cf-admin-pt--active{
    background:rgba(255,255,255,.06);
    border-color:rgba(255,255,255,.18);
    color:var(--t1,#fff);
}

.aa-cf-admin-actions{display:flex;gap:10px}
.aa-cf-admin-launch{flex:1 1 auto;font-weight:500;letter-spacing:.02em}
.aa-cf-admin-cancel{flex:0 0 auto}

.aa-cf-admin-status{margin-top:2px}
.aa-cf-admin-status-card{
    padding:12px 14px;background:rgba(255,255,255,.02);
    border:1px solid rgba(255,255,255,.05);border-radius:10px;
    display:flex;flex-direction:column;gap:6px;
}
.aa-cf-admin-status-row{display:flex;align-items:center;gap:10px;font-weight:500;color:var(--t1,#fff)}
.aa-cf-admin-status-vs{color:var(--t3,rgba(255,255,255,.3));font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}
.aa-cf-admin-status-prize{font-size:.78rem;color:var(--t2,rgba(255,255,255,.55))}
.aa-cf-admin-status-line{font-size:.82rem;color:var(--t1,#fff)}

/* ---- Player overlay (everyone except the admin) ---- */
.aa-cf-overlay{
    position:fixed;inset:0;z-index:9000;
    display:flex;align-items:center;justify-content:center;
    background:rgba(0,0,0,.78);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
    animation:aa-cf-fade-in .25s ease-out;pointer-events:auto;
}
.aa-cf-overlay--leaving{animation:aa-cf-fade-out .2s ease-in forwards}
@keyframes aa-cf-fade-in{from{opacity:0}to{opacity:1}}
@keyframes aa-cf-fade-out{from{opacity:1}to{opacity:0}}

.aa-cf-card{
    width:min(92vw,440px);
    background:linear-gradient(180deg,#0d0d15,#0a0a14);
    border:1px solid rgba(255,255,255,.08);
    border-radius:18px;padding:28px 24px;
    box-shadow:0 24px 60px rgba(0,0,0,.5);
    display:flex;flex-direction:column;align-items:center;gap:18px;
    position:relative;overflow:hidden;
    animation:aa-cf-card-in .28s ease-out;
}
.aa-cf-card::before{
    content:"";position:absolute;top:0;left:18%;right:18%;height:1px;
    background:linear-gradient(90deg,transparent,rgba(255,255,255,.18),transparent);
    pointer-events:none;
}
@keyframes aa-cf-card-in{from{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}

.aa-cf-head{
    font-size:.7rem;font-weight:500;color:var(--t2,rgba(255,255,255,.5));
    text-transform:uppercase;letter-spacing:.18em;
}

.aa-cf-vs{display:flex;align-items:center;gap:18px;width:100%;justify-content:center}
.aa-cf-side{display:flex;flex-direction:column;align-items:center;gap:8px;flex:1 1 0;min-width:0}
.aa-cf-side-avatar{
    width:48px;height:48px;border-radius:50%;object-fit:cover;
    background:rgba(255,255,255,.04);
    border:1px solid rgba(255,255,255,.1);
}
.aa-cf-side-avatar--blank{background:rgba(255,255,255,.04)}
.aa-cf-side-name{
    font-size:.85rem;font-weight:500;color:var(--t1,#fff);
    max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.aa-cf-vs-x{
    font-size:.7rem;color:var(--t3,rgba(255,255,255,.28));
    text-transform:uppercase;letter-spacing:.14em;font-weight:500;
}

.aa-cf-prize-pill{
    display:inline-flex;align-items:center;gap:8px;
    padding:6px 14px;background:rgba(255,255,255,.04);
    border:1px solid rgba(255,255,255,.08);border-radius:999px;
}
.aa-cf-prize-label{
    font-size:.65rem;font-weight:500;color:var(--t3,rgba(255,255,255,.32));
    text-transform:uppercase;letter-spacing:.14em;
}
.aa-cf-prize-text{font-size:.85rem;font-weight:500;color:var(--t1,#fff)}

.aa-cf-body{display:flex;flex-direction:column;align-items:center;gap:16px;width:100%}

/* ---- Coin (idle / flipping / done) ---- */
.aa-cf-coin{
    width:96px;height:96px;position:relative;
    display:flex;align-items:center;justify-content:center;
    perspective:600px;transform-style:preserve-3d;
}
.aa-cf-coin-side{
    position:absolute;inset:0;width:96px;height:96px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    font-size:2.4rem;font-weight:700;letter-spacing:.02em;
    background:linear-gradient(155deg,#1a1a24 0%,#0d0d15 100%);
    border:1px solid rgba(255,255,255,.12);
    color:var(--t1,#fff);
    backface-visibility:hidden;-webkit-backface-visibility:hidden;
    box-shadow:0 4px 18px rgba(0,0,0,.4),inset 0 0 0 1px rgba(255,255,255,.02);
}
.aa-cf-coin-side--tails{transform:rotateY(180deg);background:linear-gradient(155deg,#16161e 0%,#0a0a12 100%)}
.aa-cf-coin--idle{animation:aa-cf-idle 2.4s ease-in-out infinite}
@keyframes aa-cf-idle{0%,100%{transform:rotateY(0)}50%{transform:rotateY(180deg)}}
.aa-cf-coin--flipping{animation:aa-cf-flip var(--cf-anim,3000ms) cubic-bezier(.4,.7,.4,1) forwards}
.aa-cf-coin--flipping.aa-cf-coin--land-tails{animation-name:aa-cf-flip-tails}
@keyframes aa-cf-flip{0%{transform:rotateY(0)}100%{transform:rotateY(3960deg)}}
@keyframes aa-cf-flip-tails{0%{transform:rotateY(0)}100%{transform:rotateY(4140deg)}}
.aa-cf-coin--done.aa-cf-coin--land-heads{transform:rotateY(0)}
.aa-cf-coin--done.aa-cf-coin--land-tails{transform:rotateY(180deg)}

/* ---- Caller's call buttons ---- */
.aa-cf-prompt{
    font-size:.72rem;font-weight:500;color:var(--t2,rgba(255,255,255,.55));
    text-transform:uppercase;letter-spacing:.16em;
}
.aa-cf-prompt--waiting{
    text-transform:none;letter-spacing:.01em;font-size:.85rem;
    color:var(--t2,rgba(255,255,255,.55));
    display:flex;align-items:center;gap:8px;
}
.aa-cf-prompt--waiting strong{color:var(--t1,#fff);font-weight:500}
.aa-cf-spinner{
    width:12px;height:12px;border:1.5px solid rgba(255,255,255,.18);
    border-top-color:var(--t1,#fff);border-radius:50%;
    animation:aa-cf-spin .8s linear infinite;
}
@keyframes aa-cf-spin{to{transform:rotate(360deg)}}

.aa-cf-call-row{display:flex;gap:10px;width:100%;justify-content:center}
.aa-cf-call{
    display:flex;flex-direction:column;align-items:center;gap:4px;
    padding:14px 24px;border-radius:12px;
    background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.1);
    color:var(--t1,#fff);cursor:pointer;
    min-width:108px;transition:all var(--tr,.15s);
}
.aa-cf-call:hover{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.22);transform:translateY(-1px)}
.aa-cf-call:active{transform:translateY(0)}
.aa-cf-call:disabled{opacity:.45;cursor:wait;transform:none}
.aa-cf-call-letter{font-size:1.4rem;font-weight:700;letter-spacing:.04em}
.aa-cf-call-label{font-size:.72rem;color:var(--t2,rgba(255,255,255,.55));text-transform:uppercase;letter-spacing:.12em}

/* ---- Result ---- */
.aa-cf-call-result{font-size:.82rem;color:var(--t2,rgba(255,255,255,.55))}
.aa-cf-call-result strong{color:var(--t1,#fff);font-weight:500}
.aa-cf-call-pick{
    display:inline-block;padding:1px 7px;
    background:rgba(255,255,255,.05);border-radius:5px;
    color:var(--t1,#fff);font-weight:500;text-transform:uppercase;
    letter-spacing:.08em;font-size:.72rem;
}
.aa-cf-prompt--flipping{font-size:.7rem}

.aa-cf-result{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%;animation:aa-cf-result-in .35s ease-out}
@keyframes aa-cf-result-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.aa-cf-result-line{font-size:.82rem;color:var(--t2,rgba(255,255,255,.55));text-align:center}
.aa-cf-result-line strong{color:var(--t1,#fff);font-weight:500;text-transform:uppercase;letter-spacing:.04em}

.aa-cf-winner{
    display:flex;align-items:center;gap:12px;
    padding:12px 14px;width:100%;max-width:320px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.08);border-radius:12px;
}
.aa-cf-winner--you{
    background:rgba(255,255,255,.06);
    border-color:rgba(255,255,255,.18);
    box-shadow:0 0 0 1px rgba(255,255,255,.04) inset;
}
.aa-cf-winner-avatar{
    width:42px;height:42px;border-radius:50%;flex-shrink:0;
    object-fit:cover;background:rgba(255,255,255,.04);
    border:1px solid rgba(255,255,255,.1);
}
.aa-cf-winner-meta{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto}
.aa-cf-winner-name{
    font-size:.92rem;font-weight:500;color:var(--t1,#fff);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.aa-cf-winner-prize{font-size:.78rem;color:var(--t2,rgba(255,255,255,.55))}
.aa-cf-winner-serial{color:var(--t3,rgba(255,255,255,.4));font-variant-numeric:tabular-nums}

@media (max-width:600px){
    .aa-cf-card{padding:22px 18px;gap:14px}
    .aa-cf-coin{width:80px;height:80px}
    .aa-cf-coin-side{width:80px;height:80px;font-size:2rem}
    .aa-cf-call{min-width:96px;padding:12px 18px}
    .aa-cf-side-name{max-width:90px}
    .aa-cf-admin-prize-types{grid-template-columns:repeat(2,1fr)}
    .aa-cf-admin-row{flex-direction:column;align-items:stretch}
    .aa-cf-admin-swap{align-self:center}
}

/* ── Guess page ──────────────────────────────────────────────────────────── */
.gs-wrap{max-width:500px;margin:0 auto;padding:40px 16px 80px}
.gs-wrap--admin{max-width:860px}
.gs-spinner{width:32px;height:32px;border:2.5px solid rgba(255,255,255,.08);border-top-color:rgba(255,255,255,.35);border-radius:50%;animation:spin .8s linear infinite;margin:80px auto}

.gs-page-title{font-size:1rem;font-weight:800;color:#fff;letter-spacing:-.01em;margin-bottom:2px}
.gs-page-sub{font-size:.8rem;color:rgba(255,255,255,.3);margin-bottom:32px}

/* form */
.gs-fields{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}
.gs-input{
    width:100%;
    background:rgba(255,255,255,.05);
    border:1px solid rgba(255,255,255,.08);
    border-radius:14px;
    padding:13px 18px;
    color:#fff;
    font-size:.92rem;
    font-weight:500;
    outline:none;
    transition:border-color .15s,background .15s;
    box-sizing:border-box;
}
.gs-input:focus{border-color:rgba(255,255,255,.2);background:rgba(255,255,255,.07)}
.gs-input::placeholder{color:rgba(255,255,255,.18)}
.gs-hint{font-size:.75rem;color:rgba(255,255,255,.25);margin-bottom:20px;line-height:1.55}
.gs-submit-btn{
    width:100%;
    padding:13px;
    border-radius:14px;
    border:1px solid rgba(255,255,255,.1);
    background:rgba(255,255,255,.06);
    color:rgba(255,255,255,.9);
    font-weight:700;
    font-size:.9rem;
    cursor:pointer;
    transition:background .15s,border-color .15s;
    letter-spacing:.01em;
}
.gs-submit-btn:hover:not(:disabled){background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.16)}
.gs-submit-btn:disabled{opacity:.3;cursor:not-allowed}
.gs-err{font-size:.77rem;color:rgba(255,90,90,.8);min-height:16px;margin-top:10px;text-align:center}

/* submitted / cooldown */
.gs-sub-heading{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:rgba(255,255,255,.2);margin-bottom:14px}
.gs-guess-list{display:flex;flex-direction:column;gap:6px;margin-bottom:18px}
.gs-guess-row{
    display:flex;align-items:baseline;gap:10px;
    padding:11px 16px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.055);
    border-radius:12px;
}
.gs-guess-n{font-size:.68rem;font-weight:700;color:rgba(255,255,255,.2);min-width:12px}
.gs-guess-val{font-size:.9rem;font-weight:600;color:rgba(255,255,255,.8)}
.gs-sub-status{font-size:.75rem;color:rgba(255,255,255,.25);margin-bottom:6px}
.gs-sub-status.incorrect{color:rgba(255,110,110,.5)}
.gs-cd-note{font-size:.77rem;color:rgba(255,255,255,.22);line-height:1.5}

/* ended */
.gs-ended{padding:16px 0 8px}
.gs-ended-heading{font-size:.95rem;font-weight:700;color:rgba(255,255,255,.6);margin-bottom:8px}
.gs-ended-note{font-size:.82rem;color:rgba(255,255,255,.3);line-height:1.6}
.gs-error{color:rgba(255,255,255,.25);text-align:center;padding:60px 0;font-size:.85rem}

/* ── Admin ─────────────────────────────────────────────────────────────── */
.gs-admin-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.gs-admin-controls{display:flex;gap:8px;flex-wrap:wrap}
.gs-admin-btn{padding:6px 13px;border-radius:8px;border:1px solid rgba(255,255,255,.1);font-size:.78rem;font-weight:700;cursor:pointer;background:rgba(255,255,255,.05);color:rgba(255,255,255,.6);transition:background .15s}
.gs-admin-btn:hover{background:rgba(255,255,255,.1)}
.gs-admin-btn--danger{border-color:rgba(239,68,68,.3);color:rgba(255,150,150,.8);background:rgba(239,68,68,.07)}
.gs-admin-btn--danger:hover{background:rgba(239,68,68,.15)}
.gs-admin-btn--safe{border-color:rgba(99,102,241,.3);color:rgba(165,180,252,.85);background:rgba(99,102,241,.07)}
.gs-admin-btn--safe:hover{background:rgba(99,102,241,.15)}
.gs-admin-counts{font-size:.78rem;color:rgba(255,255,255,.3);display:flex;gap:14px;margin-bottom:18px}
.gs-admin-counts b{color:rgba(255,255,255,.7)}
.gs-ended-bar{background:rgba(239,68,68,.07);border:1px solid rgba(239,68,68,.15);border-radius:9px;padding:9px 13px;font-size:.82rem;color:rgba(255,150,150,.7);margin-bottom:14px}
.gs-ac{background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.06);border-radius:12px;padding:14px;margin-bottom:8px;transition:opacity .2s}
.gs-ac--rejected{opacity:.45}
.gs-ac-top{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:9px}
.gs-ac-avatar{width:26px;height:26px;border-radius:50%;object-fit:cover;flex-shrink:0}
.gs-ac-avatar--ph{background:rgba(255,255,255,.07)}
.gs-ac-name{font-weight:700;font-size:.88rem;color:#fff;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gs-ac-time{font-size:.7rem;color:rgba(255,255,255,.25);margin-left:auto;white-space:nowrap}
.gs-badge{display:inline-block;font-size:.68rem;font-weight:700;padding:2px 8px;border-radius:5px}
.gs-badge--pending{background:rgba(255,255,255,.07);color:rgba(255,255,255,.5)}
.gs-badge--rejected{background:rgba(239,68,68,.1);color:rgba(255,140,140,.7)}
.gs-admin-action{padding:4px 11px;border-radius:6px;border:none;font-size:.72rem;font-weight:700;cursor:pointer;background:rgba(255,255,255,.06);color:rgba(255,255,255,.5);transition:background .15s}
.gs-admin-action:hover{background:rgba(255,255,255,.12)}
.gs-admin-action--reject{background:rgba(239,68,68,.1);color:rgba(255,140,140,.75)}
.gs-admin-action--reject:hover{background:rgba(239,68,68,.2)}
.gs-admin-action--restore{background:rgba(99,102,241,.1);color:rgba(165,180,252,.75)}
.gs-admin-action--restore:hover{background:rgba(99,102,241,.2)}
.gs-ac-guesses{padding-left:18px;display:flex;flex-direction:column;gap:3px}
.gs-ac-guesses li{font-size:.85rem;color:rgba(255,255,255,.65)}
.gs-empty{color:rgba(255,255,255,.25);text-align:center;padding:40px 0;font-size:.88rem}
.gs-admin-msg{font-size:.78rem;color:rgba(255,255,255,.35);min-height:18px;margin-top:6px;text-align:center}

/* per-guess result buttons (admin) */
.gs-ac-guesses-grid{display:flex;flex-direction:column;gap:5px}
.gs-ac-guess-row{display:flex;align-items:center;gap:9px}
.gs-result-btn{
    width:24px;height:24px;border-radius:6px;border:1px solid rgba(255,255,255,.1);
    background:rgba(255,255,255,.05);color:rgba(255,255,255,.3);
    font-size:.75rem;font-weight:700;cursor:pointer;flex-shrink:0;
    display:flex;align-items:center;justify-content:center;transition:all .12s;
}
.gs-result-btn:hover{border-color:rgba(255,255,255,.2);background:rgba(255,255,255,.1)}
.gs-result-btn.gs-result--correct{background:rgba(60,210,110,.15);border-color:rgba(60,210,110,.35);color:rgba(80,220,130,.9)}
.gs-result-btn.gs-result--incorrect{background:rgba(239,68,68,.12);border-color:rgba(239,68,68,.3);color:rgba(255,130,130,.85)}
.gs-result-btn:disabled{opacity:.4;cursor:not-allowed}
.gs-ac-guess-text{font-size:.87rem;color:rgba(255,255,255,.7)}
.gs-guess-result{font-size:.68rem;font-weight:700;letter-spacing:.04em;margin-left:auto;flex-shrink:0}
.gs-guess-result--correct{color:rgba(80,220,130,.75)}
.gs-guess-result--incorrect{color:rgba(255,110,110,.55)}
.gs-sub-status.partial{color:rgba(255,210,80,.6)}
.gs-result-btn.gs-result--wrong-spot{background:rgba(255,185,0,.12);border-color:rgba(255,185,0,.32);color:rgba(255,210,80,.85)}
.gs-guess-result--wrong-spot{color:rgba(255,210,80,.7)}
.gs-past-wrap{margin-top:4px}
.gs-past-attempt{margin-bottom:16px}
.gs-past-date{font-size:.68rem;color:rgba(255,255,255,.2);margin-bottom:6px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.gs-guess-row--past .gs-guess-val{color:rgba(255,255,255,.45)}

/* ── Marketplace ─────────────────────────────────────── */
.mk-page{max-width:880px;margin:0 auto;padding:40px 20px 80px}
.mk-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px}
.mk-head .page-heading{margin-bottom:0}
.mk-bal{display:inline-flex;align-items:center;gap:7px;font-size:.82rem;font-weight:700;color:var(--t1);letter-spacing:-.01em}
.mk-bal-img{width:18px;height:18px;object-fit:contain;filter:drop-shadow(0 0 6px rgba(168,76,255,.5))}
.mk-bal-num{font-variant-numeric:tabular-nums}

.mk-form{margin:14px 0 28px}
.mk-form .t-side-label{margin-bottom:10px}
.mk-form-foot{display:flex;gap:10px;align-items:stretch;margin-top:16px}
.mk-form-err{font-size:.78rem;color:#ff4466;margin-top:8px;min-height:14px}

.mk-price-input-wrap{
    flex:1;display:flex;align-items:center;gap:8px;
    background:transparent;
    border:1px solid var(--border);border-radius:50px;
    padding:0 16px;transition:border-color .15s ease;
}
.mk-price-input-wrap:focus-within{border-color:rgba(255,255,255,.2)}
.mk-price-icon{width:16px;height:16px;object-fit:contain;filter:drop-shadow(0 0 6px rgba(168,76,255,.4));flex-shrink:0;opacity:.85}
.mk-price-input{
    flex:1;background:transparent;border:none;outline:none;
    color:var(--t1);font-size:.85rem;font-weight:600;
    padding:13px 0;font-variant-numeric:tabular-nums;
}
.mk-price-input::placeholder{color:var(--t3);font-weight:400}
.mk-price-input::-webkit-outer-spin-button,
.mk-price-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.mk-price-input[type=number]{-moz-appearance:textfield}
.mk-submit{flex-shrink:0;width:auto;padding:0 28px}

.mk-list{display:flex;flex-direction:column;gap:0;margin-bottom:24px}
.mk-pill-price{font-variant-numeric:tabular-nums;color:var(--t1)}
.mk-pill-coin{filter:drop-shadow(0 0 4px rgba(168,76,255,.5))}

/* Listing grid (smaller, index-style cards) */
.mk-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(170px,1fr));
    gap:12px;margin-bottom:24px;
}
.mk-card{cursor:default;padding:16px 14px 14px}
.mk-card .ix-card-hero{width:56px;height:56px;border-radius:12px;margin-bottom:10px}
.mk-card .ix-card-icon{width:42px;height:42px}
.mk-card .ix-card-name{font-size:.82rem}
.mk-card-serial{
    font-size:.62rem;font-weight:700;
    color:color-mix(in srgb,var(--rc) 60%,white);
    margin-left:4px;font-variant-numeric:tabular-nums;
}
.mk-card-price{
    display:inline-flex;align-items:center;justify-content:center;gap:5px;
    font-size:.78rem;font-weight:800;color:var(--t1);
    font-variant-numeric:tabular-nums;margin-top:2px;
}
.mk-card-price-icon{width:13px;height:13px;object-fit:contain;filter:drop-shadow(0 0 5px rgba(168,76,255,.55))}
.mk-card-seller{
    display:inline-flex;align-items:center;gap:5px;justify-content:center;
    font-size:.6rem;color:var(--t3);font-weight:600;
    min-width:0;max-width:100%;
}
.mk-card-seller-av{width:13px;height:13px;border-radius:50%;object-fit:cover;flex-shrink:0}
.mk-card-seller-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.mk-card-seller--system .mk-card-seller-name{color:#a86bff;font-weight:800;font-size:.62rem}
.mk-card-serial--next{color:#a86bff;font-style:italic}
.mk-card--system{outline:1px solid rgba(168,76,255,.18)}
.mk-card-btn{
    margin-top:10px;
    width:100%;padding:7px 0;border-radius:50px;
    font-size:.72rem;font-weight:700;letter-spacing:-.01em;
    cursor:pointer;transition:all .15s ease;
    border:1px solid transparent;position:relative;z-index:2;
}
.mk-card-btn.buy{background:#fff;color:#000}
.mk-card-btn.buy:hover:not(:disabled){background:#eee}
.mk-card-btn.buy:disabled{
    background:transparent;color:var(--t3);
    border-color:var(--border);
    cursor:not-allowed;font-weight:600;
}
.mk-card-btn.cancel{background:transparent;color:var(--t3);border-color:var(--border)}
.mk-card-btn.cancel:hover{color:#ff4466;border-color:rgba(255,68,102,.25)}

/* Bundle listing card — same shape as single, hero shows stacked icons */
.mk-card--bundle .mk-stack-hero{
    position:relative;z-index:1;
    display:flex;align-items:center;justify-content:center;
    width:100%;height:72px;
    margin-bottom:6px;
}
.mk-stack-item{
    --i:0;--n:1;
    position:absolute;
    width:54px;height:54px;border-radius:14px;
    display:flex;align-items:center;justify-content:center;
    background:
        radial-gradient(70% 70% at 50% 35%,color-mix(in srgb,var(--rc) 38%,transparent),transparent 75%),
        linear-gradient(180deg,rgba(255,255,255,.06),rgba(0,0,0,.5));
    border:1px solid color-mix(in srgb,var(--rc) 55%,rgba(255,255,255,.18));
    box-shadow:0 0 18px color-mix(in srgb,var(--rc) 55%,transparent);
    transform:translateX(calc((var(--i) - (var(--n) - 1) / 2) * 30px)) rotate(calc((var(--i) - (var(--n) - 1) / 2) * 6deg));
    z-index:calc(10 - var(--i));
    transition:transform 220ms cubic-bezier(.2,.9,.25,1.2);
}
.mk-card--bundle:hover .mk-stack-item{
    transform:translateX(calc((var(--i) - (var(--n) - 1) / 2) * 38px)) rotate(calc((var(--i) - (var(--n) - 1) / 2) * 3deg));
}
.mk-stack-item .mk-stack-icon{
    width:36px;height:36px;object-fit:contain;
    filter:drop-shadow(0 0 10px color-mix(in srgb,var(--rc) 60%,transparent));
}
.mk-stack-item .mk-stack-dot{
    width:30px;height:30px;border-radius:50%;
    box-shadow:0 0 12px color-mix(in srgb,var(--rc) 70%,transparent);
}
.mk-bundle-name{
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
    overflow:hidden;line-height:1.15;
    font-size:.78rem;
}

/* Builder hint */
.mk-hint{
    font-size:.6rem;font-weight:600;color:var(--t3);
    letter-spacing:.04em;text-transform:none;margin-left:8px;
}
.mk-cvs-hint{
    margin:10px 0 0 0;text-align:center;
    color:var(--t3);font-size:.62rem;font-weight:600;
    letter-spacing:.06em;text-transform:lowercase;opacity:.85;
}
.mk-builder .t-side-label{margin-bottom:10px}
.mk-side-label-spaced{margin-top:18px !important}
.mk-builder-foot{display:flex;gap:10px;align-items:stretch;margin-top:20px}
.mk-builder-foot .mk-price-input-wrap{flex:1}
.mk-builder-foot .mk-submit{flex-shrink:0;width:auto;padding:0 28px}

/* Marketplace builder — keys */
.mk-key-grid{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.mk-key-chip{
    --rc:#9c6cff;
    display:inline-flex;align-items:center;gap:8px;
    padding:8px 12px;border-radius:10px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.06);
    color:var(--t1);font-size:.78rem;font-weight:700;
    cursor:pointer;transition:.15s ease;
    line-height:1;
}
.mk-key-chip:hover{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12)}
.mk-key-chip.on{
    background:color-mix(in srgb, var(--rc) 14%, transparent);
    border-color:var(--rc);
    box-shadow:0 0 0 1px var(--rc) inset, 0 0 12px -2px color-mix(in srgb, var(--rc) 60%, transparent);
}
.mk-key-chip-img{width:22px;height:22px;object-fit:contain;flex-shrink:0}
.mk-key-chip-name{letter-spacing:.02em}
.mk-key-chip-count{color:var(--t3);font-weight:600;font-size:.72rem}
.mk-key-amount-wrap{
    display:flex;align-items:center;gap:10px;margin:8px 0 4px;
    padding:8px 12px;border-radius:10px;
    background:rgba(255,255,255,.02);
    border:1px solid rgba(255,255,255,.06);
}
.mk-key-amount-wrap.hidden{display:none}
.mk-key-amount-label{
    font-size:.7rem;font-weight:700;color:var(--t3);
    letter-spacing:.06em;text-transform:lowercase;
}
.mk-key-amount-input{
    flex:1;background:transparent;border:none;outline:none;
    color:var(--t1);font-size:.95rem;font-weight:700;
}
.mk-key-amount-input::-webkit-outer-spin-button,
.mk-key-amount-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.mk-key-amount-input{-moz-appearance:textfield}

/* Marketplace listing card — keys */
.mk-card--keys .ix-card-icon{width:48px;height:48px}

/* Marketplace — value flag: a rubber-stamp watermark across the card.
   Big, tilted, outlined letters that overlay the icon area without
   replacing it. No pills, no badges, no tooltips, no price recolor. */
/* Stamp sits centered over the hero icon (top of the card) — keeps the
   price, seller and reactions in the body completely readable. */
.mk-card-flag{
    --flag-col: rgba(255,122,140,.92);
    position:absolute;
    top:42px;left:50%;
    transform:translate(-50%,-50%) rotate(-14deg);
    z-index:4;
    font-size:1.25rem;
    font-weight:900;
    letter-spacing:.18em;
    text-transform:uppercase;
    line-height:1;
    white-space:nowrap;
    pointer-events:none;
    color:transparent;
    -webkit-text-stroke:1.5px var(--flag-col);
    text-stroke:1.5px var(--flag-col);
    text-shadow:
        0 0 18px rgba(0,0,0,.6),
        0 0 2px rgba(0,0,0,.7);
    padding:5px 12px;
    border:2.5px solid var(--flag-col);
    border-radius:6px;
    background:rgba(0,0,0,.28);
    backdrop-filter:blur(1px);
    -webkit-backdrop-filter:blur(1px);
    opacity:.92;
    animation:mk-flag-in .35s cubic-bezier(.2,.8,.2,1) both;
}
@keyframes mk-flag-in{
    from { opacity:0; transform:translate(-50%,-50%) rotate(-14deg) scale(1.25); }
    to   { opacity:.92; transform:translate(-50%,-50%) rotate(-14deg) scale(1); }
}

.mk-card.flagged-scam .mk-card-flag{--flag-col:rgba(255,90,108,.95)}
.mk-card.flagged-bad  .mk-card-flag{--flag-col:rgba(255,178,80,.92)}
.mk-card.flagged-deal .mk-card-flag{--flag-col:rgba(96,222,150,.92)}

/* Tint the existing accent strip + add a thin matching outline glow on
   the card so the stamp doesn't feel disconnected. */
.mk-card.flagged-scam .ix-card-accent{background:linear-gradient(180deg,rgba(255,80,98,.95),rgba(255,80,98,.35))}
.mk-card.flagged-bad  .ix-card-accent{background:linear-gradient(180deg,rgba(255,170,80,.9),rgba(255,170,80,.3))}
.mk-card.flagged-deal .ix-card-accent{background:linear-gradient(180deg,rgba(80,210,140,.9),rgba(80,210,140,.3))}

.mk-card.flagged-scam{box-shadow:0 0 0 1px rgba(255,80,98,.18) inset, 0 18px 38px -22px rgba(255,80,98,.45)}
.mk-card.flagged-bad {box-shadow:0 0 0 1px rgba(255,170,80,.16) inset, 0 18px 38px -22px rgba(255,170,80,.4)}
.mk-card.flagged-deal{box-shadow:0 0 0 1px rgba(80,210,140,.16) inset, 0 18px 38px -22px rgba(80,210,140,.4)}

/* Dim the hero icon a touch behind the stamp so the text reads cleanly. */
.mk-card.flagged-scam .ix-card-hero,
.mk-card.flagged-bad  .ix-card-hero,
.mk-card.flagged-deal .ix-card-hero{filter:saturate(.85) brightness(.92)}

/* Marketplace — reactions row (compact, centered) */
.mk-react{
    display:flex;gap:5px;margin:4px 0 8px;
    align-items:center;justify-content:center;
}
.mk-react-btn{
    --col:#8a91a3;
    display:inline-flex;align-items:center;gap:4px;
    padding:3px 8px;border-radius:6px;
    background:transparent;
    border:1px solid rgba(255,255,255,.08);
    color:var(--col);
    font-size:.68rem;font-weight:700;line-height:1;
    cursor:pointer;transition:.14s ease;
    user-select:none;
}
.mk-react-btn i{font-size:.95rem;line-height:1}
.mk-react-btn:hover:not(:disabled){border-color:rgba(255,255,255,.18);color:#fff}
.mk-react-btn:disabled{opacity:.35;cursor:not-allowed}
.mk-react-btn span{font-variant-numeric:tabular-nums}
.mk-react-btn.up.on{
    --col:#7fe2a8;
    border-color:rgba(80,210,140,.38);
    background:rgba(80,210,140,.1);
}
.mk-react-btn.down.on{
    --col:#ff7a8c;
    border-color:rgba(255,68,98,.4);
    background:rgba(255,68,98,.1);
}
.mk-react-btn.up.on i,
.mk-react-btn.down.on i{animation:mk-react-pop .3s ease}
@keyframes mk-react-pop{
    0%   { transform:scale(.7); }
    55%  { transform:scale(1.18); }
    100% { transform:scale(1); }
}

/* Marketplace modals */
.mk-modal{font-size:.85rem;color:var(--t2);line-height:1.5;text-align:center}
.mk-modal-line{margin-bottom:14px}
.mk-modal-line b{color:var(--t1);font-weight:800}
.mk-modal-pills{
    display:flex;flex-wrap:wrap;justify-content:center;gap:5px;
    margin-bottom:14px;
}
.mk-modal-price{
    display:flex;align-items:center;justify-content:center;gap:8px;
    padding:14px 0;margin-bottom:12px;
    background:rgba(255,255,255,.02);border-radius:10px;
    border:1px solid var(--border);
    font-size:1.05rem;font-weight:800;color:var(--t1);
    font-variant-numeric:tabular-nums;letter-spacing:-.01em;
}
.mk-modal-coin{width:20px;height:20px;object-fit:contain;filter:drop-shadow(0 0 6px rgba(168,76,255,.5))}
.mk-modal-bal{font-size:.78rem;text-align:center;color:var(--t3)}
.mk-modal-bal.ok b{color:var(--t1)}
.mk-modal-bal.low{color:#ff7a8a}
.mk-modal-bal.low b{color:#ff4466}
.mk-serial-tag{
    font-size:.7rem;font-weight:700;color:var(--t3);
    font-variant-numeric:tabular-nums;
}

/* Fusion: coin output tile */
.kf-coins-output{
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
    padding:14px 18px;min-width:96px;height:96px;border-radius:12px;
    background:
        radial-gradient(120% 80% at 50% 0%, color-mix(in srgb,#a84cff 18%,transparent), transparent 60%),
        linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.012));
    border:1px solid color-mix(in srgb,#a84cff 22%,rgba(255,255,255,.06));
}
.kf-coins-output img.kf-coins-img{width:36px;height:36px;object-fit:contain;filter:drop-shadow(0 0 8px rgba(168,76,255,.55))}
.kf-coins-amount{font-size:.82rem;font-weight:800;color:var(--t1);font-variant-numeric:tabular-nums;letter-spacing:-.01em}

/* ── Marketplace purchase overlay ─────────────────────────────
   Phased cinematic reveal. Keep it understated: backdrop dim,
   light-bar parting, a single halo & shockwave, and a soft icon
   settle. No spark fields, no swarms of rings. */
.mk-buy-overlay{
    position:fixed;inset:0;z-index:9999;overflow:hidden;
    color:#fff;cursor:pointer;
    --rc:#9c6cff;
    opacity:0;transition:opacity 180ms ease;
}
.mk-buy-overlay.mk-buy-show{opacity:1}
.mk-buy-overlay.mk-buy-out{opacity:0;transition:opacity 220ms ease}

.mk-buy-overlay .mk-buy-bg{
    position:absolute;inset:0;
    background:
        radial-gradient(55% 55% at 50% 46%, color-mix(in srgb,var(--rc) 18%,transparent) 0%, transparent 100%),
        rgba(8,8,14,.82);
    backdrop-filter:blur(14px);
    -webkit-backdrop-filter:blur(14px);
}

.mk-buy-overlay .mk-buy-stage{
    position:absolute;inset:0;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:20px;
}

/* Expanding ring — fires once on show */
.mk-buy-overlay .mk-buy-ring{
    position:absolute;top:50%;left:50%;
    width:148px;height:148px;border-radius:50%;
    transform:translate(-50%,-54%);
    border:1.5px solid color-mix(in srgb,var(--rc) 70%,transparent);
    opacity:0;pointer-events:none;
    animation:none;
}
.mk-buy-overlay.mk-buy-show .mk-buy-ring{
    animation:mk-buy-ring 700ms cubic-bezier(.2,.8,.2,1) 60ms forwards;
}

/* Hero icon */
.mk-buy-overlay .mk-buy-hero{
    position:relative;
    width:148px;height:148px;border-radius:28px;
    display:flex;align-items:center;justify-content:center;
    background:rgba(255,255,255,.04);
    border:1px solid rgba(255,255,255,.09);
    box-shadow:0 16px 48px -12px color-mix(in srgb,var(--rc) 55%,transparent);
    transform:scale(.72);opacity:0;
    transition:transform 340ms cubic-bezier(.2,.85,.3,1.1), opacity 220ms ease;
}
.mk-buy-overlay.mk-buy-show .mk-buy-hero{transform:scale(1);opacity:1}
.mk-buy-overlay.mk-buy-out  .mk-buy-hero{transform:scale(.94);opacity:0;transition-duration:180ms}
.mk-buy-overlay .mk-buy-hero img{
    width:100px;height:100px;object-fit:contain;
    filter:drop-shadow(0 2px 16px color-mix(in srgb,var(--rc) 65%,transparent));
}
.mk-buy-overlay .mk-buy-dot{
    width:84px;height:84px;border-radius:50%;background:var(--rc);
    box-shadow:0 0 20px color-mix(in srgb,var(--rc) 60%,transparent);
}

/* Label */
.mk-buy-overlay .mk-buy-label{
    font-size:1.25rem;font-weight:700;letter-spacing:.01em;
    color:#fff;text-align:center;max-width:260px;
    opacity:0;transform:translateY(8px);
    transition:opacity 280ms ease 160ms, transform 320ms cubic-bezier(.2,.8,.2,1) 160ms;
}
.mk-buy-overlay.mk-buy-show .mk-buy-label{opacity:1;transform:translateY(0)}
.mk-buy-overlay.mk-buy-out  .mk-buy-label{opacity:0;transition-delay:0ms}

@keyframes mk-buy-ring{
    0%   { opacity:.8; transform:translate(-50%,-54%) scale(.85); }
    100% { opacity:0;  transform:translate(-50%,-54%) scale(2.1); }
}

/* ── CVSystem auto-buy reward overlay ─────────────────────── */
.mk-coin-reward{
    position:fixed;inset:0;z-index:9999;
    display:flex;align-items:center;justify-content:center;
    background:rgba(0,0,0,0);
    opacity:0;transition:opacity 180ms ease, background 180ms ease;
    cursor:pointer;
}
.mk-coin-reward.go{opacity:1;background:rgba(6,6,12,.72);backdrop-filter:blur(6px);}
.mk-coin-reward.out{opacity:0;background:rgba(0,0,0,0);}
.mk-coin-reward-stage{
    display:flex;flex-direction:column;align-items:center;gap:18px;
    transform:scale(.7);
    transition:transform 260ms cubic-bezier(.2,.9,.25,1.25);
}
.mk-coin-reward.go .mk-coin-reward-stage{transform:scale(1);}
.mk-coin-reward.out .mk-coin-reward-stage{transform:scale(.85);}
.mk-coin-reward-img{
    width:180px;height:180px;object-fit:contain;
    filter:
        drop-shadow(0 0 28px rgba(156,108,255,.9))
        drop-shadow(0 0 70px rgba(168,76,255,.6));
    animation:mk-coin-spin 1100ms cubic-bezier(.2,.7,.3,1) both,
              mk-coin-pulse 2200ms ease-in-out 1100ms infinite;
}
.mk-coin-reward-amt{
    font-size:2.6rem;font-weight:900;letter-spacing:-.02em;
    color:#fff;font-variant-numeric:tabular-nums;
    text-shadow:
        0 0 18px rgba(156,108,255,.95),
        0 0 40px rgba(168,76,255,.55);
    animation:mk-coin-amt-in 420ms cubic-bezier(.2,.9,.25,1.2) 120ms both;
}
@keyframes mk-coin-pulse{
    0%,100% {filter:drop-shadow(0 0 28px rgba(156,108,255,.9)) drop-shadow(0 0 70px rgba(168,76,255,.55));transform:scale(1)}
    50%     {filter:drop-shadow(0 0 38px rgba(156,108,255,1))  drop-shadow(0 0 100px rgba(168,76,255,.75));transform:scale(1.035)}
}
@keyframes mk-coin-spin{
    0%   {transform:rotateY(-180deg) scale(.5);opacity:0}
    60%  {transform:rotateY(20deg)  scale(1.06);opacity:1}
    100% {transform:rotateY(0deg)   scale(1);opacity:1}
}
@keyframes mk-coin-amt-in{
    0%   {transform:translateY(14px) scale(.85);opacity:0}
    100% {transform:translateY(0)    scale(1);opacity:1}
}

/* ── Fuse role→coins overlay ────────────────────────────── */
.cd-overlay .cd-stage{position:relative;width:340px;height:340px}
.cd-role{
    position:absolute;left:50%;top:38%;transform:translate(-50%,-50%) scale(1);
    width:112px;height:112px;border-radius:24px;
    display:flex;align-items:center;justify-content:center;z-index:3;
    background:
        radial-gradient(70% 70% at 50% 35%,color-mix(in srgb,var(--rc) 38%,transparent),transparent 75%),
        linear-gradient(180deg,rgba(255,255,255,.06),rgba(0,0,0,.5));
    border:1px solid color-mix(in srgb,var(--rc) 55%,rgba(255,255,255,.18));
    box-shadow:0 0 50px color-mix(in srgb,var(--rc) 60%,transparent);
    opacity:0;
    transition:opacity .25s ease;
}
.cd-overlay.go .cd-role{
    animation:cd-role-pop 1.6s cubic-bezier(.18,1.3,.4,1) forwards;
}
@keyframes cd-role-pop{
    0%{opacity:0;transform:translate(-50%,-50%) scale(.5) rotate(-12deg)}
    25%{opacity:1;transform:translate(-50%,-50%) scale(1.08) rotate(4deg)}
    60%{opacity:1;transform:translate(-50%,-50%) scale(.96) rotate(-2deg)}
    85%{opacity:.85;transform:translate(-50%,-50%) scale(1.02) rotate(0)}
    100%{opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(0);filter:blur(8px)}
}
.cd-role-img{width:84px;height:84px;object-fit:contain;filter:drop-shadow(0 0 18px color-mix(in srgb,var(--rc) 80%,transparent))}
.cd-role-dot{width:64px;height:64px;border-radius:50%;box-shadow:0 0 24px color-mix(in srgb,var(--rc) 75%,transparent)}

.cd-coins{position:absolute;inset:0;pointer-events:none;z-index:2}
.cd-coin{
    --x:0px;--drift:0px;--d:0ms;
    position:absolute;left:50%;top:38%;
    width:20px;height:20px;border-radius:50%;
    background:radial-gradient(circle at 35% 30%,#ffd75e,#a84cff 60%,#5e2eb8 100%);
    box-shadow:0 0 12px rgba(168,76,255,.6),0 0 24px rgba(168,76,255,.35);
    opacity:0;
    transform:translate(-50%,-50%);
}
.cd-overlay.go .cd-coin{
    animation:cd-coin-fall 1.4s cubic-bezier(.36,0,.2,1) forwards;
    animation-delay:var(--d);
}
@keyframes cd-coin-fall{
    0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}
    15%{opacity:1;transform:translate(calc(-50% + var(--x) * .2),calc(-50% + 0px)) scale(1)}
    100%{opacity:0;transform:translate(calc(-50% + var(--x) + var(--drift)),calc(-50% + 260px)) scale(.7)}
}

.cd-result{
    position:absolute;left:50%;bottom:30px;transform:translateX(-50%);
    display:inline-flex;align-items:center;gap:10px;
    padding:12px 22px;border-radius:50px;
    background:rgba(0,0,0,.55);backdrop-filter:blur(10px);
    border:1px solid rgba(168,76,255,.35);
    box-shadow:0 0 40px rgba(168,76,255,.45),inset 0 1px 0 rgba(255,255,255,.08);
    opacity:0;
}
.cd-overlay.go .cd-result{
    animation:cd-result-in .7s cubic-bezier(.2,1.2,.3,1) forwards;
    animation-delay:.95s;
}
@keyframes cd-result-in{
    0%{opacity:0;transform:translate(-50%,16px) scale(.85)}
    100%{opacity:1;transform:translate(-50%,0) scale(1)}
}
.cd-result-coin{width:24px;height:24px;object-fit:contain;filter:drop-shadow(0 0 8px rgba(168,76,255,.65))}
.cd-result-num{font-size:1.15rem;font-weight:900;color:#fff;letter-spacing:-.02em;font-variant-numeric:tabular-nums;text-shadow:0 0 14px rgba(168,76,255,.7)}

.cd-spark{
    background:radial-gradient(circle,#ffd75e 0%,color-mix(in srgb,var(--rc) 90%,#fff) 60%,transparent 100%);
}

/* ===== Gamble spectate ===== */
.g-live-section{margin-top:8px}
.g-live-heading{display:flex;align-items:center;gap:6px;font-size:.62rem;font-weight:700;letter-spacing:-.01em;color:rgba(255,255,255,.22);margin-bottom:6px}
.g-live-dot{width:5px;height:5px;border-radius:50%;background:#ff4466;opacity:.7;animation:g-live-pulse 1.6s ease-in-out infinite}
@keyframes g-live-pulse{0%,100%{opacity:.7}50%{opacity:.25}}
.g-live-badge{font-size:.52rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#ff6685;opacity:.8}
.ga-spectate-label{position:absolute;top:14px;left:50%;transform:translateX(-50%);font-size:.6rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.25);z-index:10;pointer-events:none;white-space:nowrap}
.ga-spectate-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#ff4466;opacity:.6;margin-right:5px;vertical-align:middle;animation:g-live-pulse 1.6s ease-in-out infinite}
.ga-spectate-close{position:absolute;top:12px;right:14px;z-index:20;padding:4px 8px;border-radius:6px;border:none;background:transparent;color:rgba(255,255,255,.25);font-size:.85rem;cursor:pointer;transition:color .15s}
.ga-spectate-close:hover{color:rgba(255,255,255,.6)}
.ga-spectate-winner{position:absolute;bottom:60px;left:50%;transform:translateX(-50%);font-size:.95rem;font-weight:800;color:rgba(255,255,255,.7);letter-spacing:-.02em;white-space:nowrap;opacity:0;animation:ga-winner-in .4s ease forwards .1s}
@keyframes ga-winner-in{0%{opacity:0;transform:translateX(-50%) translateY(6px)}100%{opacity:1;transform:translateX(-50%) translateY(0)}}

/* ===== Generic (non-coinflip) spectate view ===== */
.gspec-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:32px 24px;height:100%}
.gspec-mode{font-size:.7rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--gmc,#fff);border:1px solid var(--gmc,rgba(255,255,255,.2));border-radius:20px;padding:4px 14px;opacity:.85}
.gspec-players{display:flex;align-items:flex-start;gap:28px;flex-wrap:wrap;justify-content:center}
.gspec-player{display:flex;flex-direction:column;align-items:center;gap:8px;opacity:1;transition:opacity .3s}
.gspec-player.loser{opacity:.35}
.gspec-player.winner .gspec-name{color:#e4b432}
.gspec-name{font-size:.85rem;font-weight:700;color:#fff;letter-spacing:-.01em}
.gspec-roles{display:flex;flex-wrap:wrap;gap:5px;justify-content:center;max-width:160px}
.gspec-vs{font-size:.7rem;font-weight:800;color:rgba(255,255,255,.18);letter-spacing:.1em;align-self:center;margin-top:24px}
.gspec-status{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.3);animation:gspec-pulse 1.6s ease-in-out infinite}
@keyframes gspec-pulse{0%,100%{opacity:.3}50%{opacity:.7}}
.gspec-result{font-size:1.2rem;font-weight:900;letter-spacing:-.02em;color:#fff;opacity:0;animation:ga-winner-in .4s ease forwards .1s}

/* ===== Game Mode Selector (builder) ===== */
.g-gamemode-label{font-size:.6rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.22);margin-bottom:8px}
.g-gm-bar{padding:0 0 16px;display:flex;flex-direction:column}
.g-gm-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:6px;
}
.g-gm-card{
    display:flex;flex-direction:column;align-items:flex-start;
    gap:3px;padding:10px 11px 10px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.06);
    border-radius:8px;cursor:pointer;
    transition:background .12s,border-color .12s,transform .1s;
    text-align:left;
}
.g-gm-card:hover{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12);transform:translateY(-1px)}
.g-gm-card:active{transform:scale(.97)}
.g-gm-card.active{
    background:color-mix(in srgb,var(--gmc) 10%,transparent);
    border-color:color-mix(in srgb,var(--gmc) 50%,transparent);
    box-shadow:0 0 0 1px color-mix(in srgb,var(--gmc) 20%,transparent) inset;
}
.g-gm-glyph{
    font-size:.85rem;font-weight:900;line-height:1;
    color:rgba(255,255,255,.18);
    transition:color .12s;
}
.g-gm-card.active .g-gm-glyph{color:var(--gmc)}
.g-gm-name{
    font-size:.72rem;font-weight:800;letter-spacing:.01em;line-height:1;
    color:rgba(255,255,255,.5);
    transition:color .12s;
}
.g-gm-card.active .g-gm-name{color:#fff}
.g-gm-desc{
    font-size:.58rem;font-weight:500;line-height:1.3;
    color:rgba(255,255,255,.22);
    transition:color .12s;
}
.g-gm-card.active .g-gm-desc{color:rgba(255,255,255,.45)}

/* ===== Game Mode Badges on cards ===== */
.g-mode-badge{
    display:inline-flex;align-items:center;gap:3px;
    font-size:.56rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
    padding:2px 6px;border-radius:10px;
    background:color-mix(in srgb,var(--gmc) 14%,transparent);
    border:1px solid color-mix(in srgb,var(--gmc) 35%,transparent);
    color:var(--gmc);vertical-align:middle;
}

/* ===== Shared game-mode overlay styles ===== */
.gm-bj,.gm-hl,.gm-ng,.gm-cr{background:#080809}

/* shared buttons */
.gm-btn{
    flex:1;padding:15px 0;border:none;cursor:pointer;
    font-size:.9rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
    transition:opacity .1s,transform .1s;
}
.gm-btn:active{transform:scale(.97);opacity:.85}
.gm-btn:disabled{opacity:.25;cursor:not-allowed}
.gm-btn-primary{background:#fff;color:#080809}
.gm-btn-alt{background:rgba(255,255,255,.08);color:rgba(255,255,255,.7)}

/* shared waiting state */
.gm-waiting{
    font-size:.72rem;font-weight:600;letter-spacing:.04em;
    text-transform:uppercase;color:rgba(255,255,255,.25);
    text-align:center;padding:14px 0;
    animation:gm-wait-pulse 1.8s ease-in-out infinite;
}
@keyframes gm-wait-pulse{0%,100%{opacity:.25}50%{opacity:.55}}

/* shared result screen */
.gm-result-screen{
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:20px;text-align:center;
    width:100%;max-width:440px;margin:0 auto;
    padding:32px 24px;box-sizing:border-box;min-height:100vh;
}
.gm-result-verdict{
    font-size:4rem;font-weight:900;letter-spacing:-.06em;line-height:1;
}
.gm-result-screen.win .gm-result-verdict{color:#fff}
.gm-result-screen.lose .gm-result-verdict{color:rgba(255,255,255,.18)}

.gm-tap-close{
    font-size:.6rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
    color:rgba(255,255,255,.18);margin-top:8px;
}

/* ===== Blackjack ===== */
.gm-bj-wrap{
    display:flex;flex-direction:column;
    width:100%;max-width:500px;margin:0 auto;
    height:100vh;box-sizing:border-box;
}
.gm-bj-top{
    flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:10px;padding:24px 20px 0;
    border-bottom:1px solid rgba(255,255,255,.06);
    opacity:.55;
}
.gm-bj-opp-label{
    font-size:.65rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
    color:rgba(255,255,255,.35);
}
.gm-bj-opp-label .gm-bj-opp-status{
    margin-left:6px;color:rgba(255,255,255,.6);
}
.gm-bj-opp-hand{display:flex;gap:4px;justify-content:center;flex-wrap:wrap}
.gm-bj-divider{height:1px;background:rgba(255,255,255,.06)}
.gm-bj-bottom{
    flex:2;display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:12px;padding:20px;
}
.gm-bj-my-hand{display:flex;gap:5px;justify-content:center;flex-wrap:wrap;min-height:70px;align-items:center}
.gm-bj-total{
    font-size:3.5rem;font-weight:900;letter-spacing:-.06em;color:#fff;line-height:1;
    transition:color .15s;
}
.gm-bj-total.bust{color:rgba(255,255,255,.2)}
.gm-bj-total.twenty-one{color:#fff}
.gm-bj-wager{display:flex;flex-wrap:wrap;gap:3px;justify-content:center}
.gm-bj-actions{display:flex;gap:0;border-top:1px solid rgba(255,255,255,.06)}

/* playing cards */
.bj-card{
    width:42px;height:60px;border-radius:4px;
    background:#fff;
    display:flex;align-items:center;justify-content:center;
    font-size:1.1rem;font-weight:900;color:#111;
    animation:bj-card-in .12s cubic-bezier(.22,1,.36,1) both;
    flex-shrink:0;
}
.bj-card.red{color:#cc2020}
.bj-card.bj-back{background:rgba(255,255,255,.08);color:transparent}
@keyframes bj-card-in{0%{opacity:0;transform:translateY(-10px) scale(.85)}100%{opacity:1;transform:none}}

/* blackjack reveal */
.gm-bj-reveal{display:flex;gap:20px;justify-content:center;align-items:flex-start}
.gm-bj-reveal-side{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px;border-bottom:2px solid transparent}
.gm-bj-reveal-side.winner{border-bottom-color:#fff}
.gm-bj-reveal-hand{display:flex;gap:4px;flex-wrap:wrap;justify-content:center}
.gm-bj-reveal-total{font-size:2rem;font-weight:900;color:#fff;letter-spacing:-.04em}
.gm-bj-reveal-total.bust{color:rgba(255,255,255,.2);font-size:1rem}
.gm-bj-reveal-name{font-size:.6rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:rgba(255,255,255,.3)}

/* ===== HiLo ===== */
.gm-hl-wrap{
    display:flex;flex-direction:column;
    width:100%;max-width:420px;margin:0 auto;
    height:100vh;box-sizing:border-box;
}
.gm-hl-score-row{
    display:flex;align-items:center;justify-content:space-between;
    padding:18px 20px 12px;gap:8px;
}
.gm-hl-score-you,.gm-hl-score-them{
    display:flex;flex-direction:column;align-items:center;gap:2px;
    font-size:2rem;font-weight:900;color:#fff;letter-spacing:-.04em;line-height:1;
    min-width:50px;
}
.gm-hl-score-you span,.gm-hl-score-them span{
    font-size:.55rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
    color:rgba(255,255,255,.3);
}
.gm-hl-dots{display:flex;gap:4px;align-items:center}
.hl-dot{
    width:6px;height:6px;border-radius:50%;
    background:rgba(255,255,255,.12);transition:background .2s;
}
.hl-dot.done{background:rgba(255,255,255,.5)}
.hl-dot.cur{background:#fff;width:8px;height:8px}

.gm-hl-card-area{
    flex:1;display:flex;align-items:center;justify-content:center;
    position:relative;
}
.gm-hl-flash{
    position:absolute;inset:0;pointer-events:none;border-radius:0;
    animation:hl-flash .4s ease forwards;
}
.gm-hl-flash.correct{background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 3px rgba(255,255,255,.25)}
.gm-hl-flash.wrong{background:rgba(200,30,30,.08);box-shadow:inset 0 0 0 3px rgba(200,50,50,.2)}
@keyframes hl-flash{0%{opacity:1}100%{opacity:0}}

.gm-hl-card{
    width:110px;height:160px;border-radius:8px;
    background:#fff;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
    box-shadow:0 12px 40px rgba(0,0,0,.6);
}
.gm-hl-card.flipping{animation:hl-card-flip .3s ease both}
@keyframes hl-card-flip{0%{transform:scaleX(1)}50%{transform:scaleX(0)}100%{transform:scaleX(1)}}
.gm-hl-card-rank{font-size:2.8rem;font-weight:900;color:#111;line-height:1}
.gm-hl-card-suit{font-size:1.4rem;color:#555;line-height:1}

.gm-hl-actions{display:flex;gap:0;border-top:1px solid rgba(255,255,255,.06)}
.gm-hl-low{background:rgba(255,255,255,.05);color:rgba(255,255,255,.65)}
.gm-hl-high{background:#fff;color:#080809}

/* hilo result */
.gm-hl-final{display:flex;align-items:center;gap:16px}
.gm-hl-final-side{display:flex;flex-direction:column;align-items:center;gap:5px;padding:16px 20px;border-bottom:2px solid transparent}
.gm-hl-final-side.winner{border-bottom-color:#fff}
.gm-hl-final-num{font-size:3.5rem;font-weight:900;color:#fff;letter-spacing:-.06em;line-height:1}
.gm-hl-final-label{font-size:.6rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:rgba(255,255,255,.3)}
.gm-hl-final-sep{font-size:1rem;font-weight:700;color:rgba(255,255,255,.15)}
.gm-hl-sub{font-size:.65rem;font-weight:600;letter-spacing:.04em;color:rgba(255,255,255,.2);margin-top:-8px}

/* ===== Number Duel ===== */
.gm-ng-wrap{
    display:flex;flex-direction:column;align-items:center;
    width:100%;max-width:380px;margin:0 auto;
    height:100vh;box-sizing:border-box;
    padding:0 20px;justify-content:center;gap:28px;
}
.gm-ng-header{display:flex;flex-direction:column;align-items:center;gap:6px}
.gm-ng-title{font-size:1.1rem;font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.5)}
.gm-ng-sub{font-size:.7rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:rgba(255,255,255,.25);min-height:16px}
/* tiebreaker tag - shared across modes */
.gm-ng-tiebreaker-tag{font-size:.6rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#f59e0b;border:1px solid rgba(245,158,11,.4);border-radius:20px;padding:2px 10px;display:inline-block;animation:tb-pulse 1s ease-in-out infinite}
@keyframes tb-pulse{0%,100%{opacity:.7;border-color:rgba(245,158,11,.4)}50%{opacity:1;border-color:rgba(245,158,11,.8)}}
/* numguess tie flash screen */
.gm-ng-tie-banner{font-size:2.4rem;font-weight:900;letter-spacing:.08em;color:#f59e0b;animation:ng-pick .2s ease}
.gm-ng-tie-detail{display:flex;align-items:center;gap:8px;font-size:.75rem;color:rgba(255,255,255,.5);flex-wrap:wrap;justify-content:center}
.gm-ng-tie-detail strong{color:#fff}
.gm-ng-tie-sep{color:rgba(255,255,255,.2)}
.gm-ng-tie-sub{font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.3);margin-top:4px;animation:gspec-pulse 1s ease-in-out infinite}
/* hilo tiebreaker dot */
.hl-dot.tb{background:rgba(245,158,11,.6);border-color:rgba(245,158,11,.8)}

.gm-ng-grid{
    display:grid;grid-template-columns:repeat(5,1fr);
    gap:8px;width:100%;
}
.gm-ng-num{
    aspect-ratio:1;
    background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);
    font-size:1.4rem;font-weight:900;color:rgba(255,255,255,.4);
    cursor:pointer;transition:all .1s;border-radius:0;
}
.gm-ng-num:hover:not(:disabled){background:rgba(255,255,255,.1);color:#fff;border-color:rgba(255,255,255,.3)}
.gm-ng-num.picked{background:#fff;color:#080809;border-color:#fff;animation:ng-pick .15s cubic-bezier(.22,1,.36,1)}
.gm-ng-num:disabled:not(.picked){opacity:.2}
@keyframes ng-pick{0%{transform:scale(.85)}100%{transform:scale(1)}}

/* number duel result */
.gm-ng-reveal{display:flex;align-items:flex-end;gap:12px}
.gm-ng-reveal-col{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 18px;border-bottom:2px solid transparent}
.gm-ng-reveal-col.winner{border-bottom-color:#fff}
.gm-ng-reveal-col.roll{border-bottom-color:rgba(255,255,255,.2)}
.gm-ng-reveal-col.exact{border-bottom-color:#fff}
.gm-ng-big{font-size:3.5rem;font-weight:900;color:#fff;letter-spacing:-.06em;line-height:1}
.gm-ng-reveal-col.roll .gm-ng-big{font-size:2.5rem;color:rgba(255,255,255,.55)}
.gm-ng-reveal-col.exact .gm-ng-big{color:#fff}
.gm-ng-reveal-label{font-size:.55rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:rgba(255,255,255,.3)}
.gm-ng-exact{font-size:.7rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#fff;animation:ng-exact-in .3s ease both}
@keyframes ng-exact-in{0%{opacity:0;transform:scale(.7)}100%{opacity:1;transform:scale(1)}}

/* ===== Crash Duel ===== */
.gm-cr-wrap{
    display:flex;flex-direction:column;
    width:100%;max-width:480px;margin:0 auto;
    height:100vh;box-sizing:border-box;
    position:relative;
}
.gm-cr-wager{
    position:absolute;top:18px;left:18px;
    display:flex;flex-wrap:wrap;gap:3px;z-index:2;
}
.gm-cr-mult-wrap{
    flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
    padding-bottom:80px;
}
.gm-cr-mult{
    font-size:clamp(3rem,12vw,6rem);
    font-weight:900;letter-spacing:-.06em;line-height:1;
    color:#fff;
    font-variant-numeric:tabular-nums;
    transition:transform .05s;
}
.gm-cr-mult span{font-size:.6em;opacity:.6}
.gm-cr-status{
    font-size:.65rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
    color:rgba(255,255,255,.3);text-align:center;min-height:16px;
}
.gm-cr-canvas{
    position:absolute;bottom:70px;left:0;right:0;height:80px;
    opacity:.35;
}
.gm-cr-footer{
    position:absolute;bottom:0;left:0;right:0;
    display:flex;
}
.gm-cr-btn{
    width:100%;padding:20px;border:none;cursor:pointer;
    background:#fff;color:#080809;
    font-size:.9rem;font-weight:900;letter-spacing:.06em;text-transform:uppercase;
    transition:background .1s,opacity .1s;
}
.gm-cr-btn:hover:not(:disabled){background:rgba(255,255,255,.88)}
.gm-cr-btn:active{transform:scale(.99)}
.gm-cr-btn.cashed{background:rgba(255,255,255,.12);color:rgba(255,255,255,.4)}
.gm-cr-btn:disabled{cursor:not-allowed}

/* crash result */
.gm-cr-crash-at{font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:rgba(255,255,255,.3)}
.gm-cr-outcome{display:flex;gap:20px;align-items:flex-start}
.gm-cr-outcome-col{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 22px;border-bottom:2px solid transparent}
.gm-cr-outcome-col.winner{border-bottom-color:#fff}
.gm-cr-outcome-val{font-size:2.8rem;font-weight:900;color:#fff;letter-spacing:-.05em;line-height:1}
.gm-cr-outcome-label{font-size:.6rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:rgba(255,255,255,.3)}

.ct-vip-page{display:flex;flex-direction:column;gap:18px}
.ct-sub-head{font-size:.7rem;font-weight:700;letter-spacing:-.01em;color:rgba(255,255,255,.25);margin-bottom:-6px}

/* ===== Case multi-open ===== */
.cs-multi-btns{display:flex;gap:6px;padding:0 14px 14px}
.cs-multi-btn{
    flex:1;padding:7px 0;border-radius:9px;
    font-size:.76rem;font-weight:700;letter-spacing:.04em;
    color:color-mix(in srgb,var(--rc) 75%,rgba(255,255,255,.7));
    background:color-mix(in srgb,var(--rc) 6%,rgba(0,0,0,.15));
    border:1px solid color-mix(in srgb,var(--rc) 22%,rgba(255,255,255,.04));
    transition:background .15s,border-color .15s,color .15s,transform .1s;
    cursor:pointer;position:relative;z-index:1;
}
.cs-multi-btn:hover:not(:disabled){
    background:color-mix(in srgb,var(--rc) 14%,rgba(255,255,255,.04));
    border-color:color-mix(in srgb,var(--rc) 48%,rgba(255,255,255,.08));
    color:color-mix(in srgb,var(--rc) 90%,#fff);
    transform:translateY(-1px);
}
.cs-multi-btn:active:not(:disabled){transform:translateY(0)}
.cs-multi-btn:disabled{opacity:.22;cursor:default}

.cs-multi-overlay{
    position:fixed;inset:0;z-index:300;
    background:rgba(0,0,0,0);backdrop-filter:blur(0px);
    display:flex;align-items:center;justify-content:center;
    transition:background .35s,backdrop-filter .35s;
}
.cs-multi-overlay.cs-in{background:rgba(0,0,0,.88);backdrop-filter:blur(14px)}
.cs-multi-overlay.cs-out{opacity:0;transition:opacity .32s}
.cs-multi-stage{
    width:min(580px,94vw);max-height:80vh;display:flex;flex-direction:column;gap:14px;
    background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);
    border-radius:16px;padding:20px;overflow:hidden;
    opacity:0;transform:translateY(10px);
    transition:opacity .3s ease .1s,transform .3s ease .1s;
}
.cs-multi-overlay.cs-in .cs-multi-stage{opacity:1;transform:none}
.cs-multi-header{display:flex;align-items:center;justify-content:space-between}
.cs-multi-title{font-size:.85rem;font-weight:700;color:var(--t1)}
.cs-multi-progress{font-size:.75rem;font-weight:600;color:var(--t3);font-variant-numeric:tabular-nums}
.cs-multi-grid{
    display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px;
    overflow-y:auto;max-height:52vh;padding-right:4px;
}
.cs-multi-tile{
    display:flex;flex-direction:column;align-items:center;gap:4px;
    padding:10px 6px;border-radius:10px;
    background:color-mix(in srgb,var(--rc) 6%,transparent);
    border:1px solid color-mix(in srgb,var(--rc) 18%,transparent);
    text-align:center;
}
.cs-multi-tile.has-grad{background:linear-gradient(135deg,color-mix(in srgb,var(--g1) 12%,#0d0d15),color-mix(in srgb,var(--g2) 7%,#0a0a14))}
.cs-multi-tile-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center}
.cs-multi-tile-name{font-size:.6rem;font-weight:600;color:var(--t2);line-height:1.2;word-break:break-word}
.cs-multi-tile-serial{font-size:.55rem;font-weight:700;color:color-mix(in srgb,var(--rc) 60%,white);opacity:.7}
.cs-multi-tile-err{background:rgba(255,68,102,.06);border-color:rgba(255,68,102,.15);color:#f87171;font-size:.62rem;justify-content:center;padding:12px 6px}
.cs-multi-close{
    align-self:center;padding:8px 32px;border-radius:50px;
    background:#fff;color:#000;font-size:.78rem;font-weight:700;cursor:pointer;
    transition:background .15s;border:none;
}
.cs-multi-close:hover{background:#eee}
.cs-multi-close.hidden{display:none}


/* ═══════════════════════════════════════════════════════════════
   FEED RIXIN
   ═══════════════════════════════════════════════════════════════ */

.fr-page{
    display:flex;flex-direction:column;align-items:center;
    padding:32px 20px 60px;min-height:100%;
    background:radial-gradient(ellipse 70% 40% at 50% 0%,rgba(100,0,255,.08),transparent);
}

/* ── heading ─────────────────────────────────────────────────── */
.fr-heading{
    font-size:2rem;font-weight:900;letter-spacing:-.04em;
    color:#fff;margin-bottom:36px;text-align:center;
}

/* ── hero (Rixin avatar) ─────────────────────────────────────── */
.fr-hero{
    display:flex;flex-direction:column;align-items:center;gap:20px;
    margin-bottom:40px;
}
    position:relative;width:140px;height:140px;
}
.fr-avatar-ring{
    position:absolute;inset:-8px;border-radius:50%;
    background:conic-gradient(from 0deg,#6400ff,#a855f7,#6400ff);
    animation:fr-spin 4s linear infinite;
    mask:radial-gradient(farthest-side,transparent calc(100% - 4px),#000 calc(100% - 3px));
    -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 4px),#000 calc(100% - 3px));
}
.fr-avatar-glow{
    position:absolute;inset:-16px;border-radius:50%;
    background:radial-gradient(circle,rgba(100,0,255,.35) 0%,transparent 70%);
    animation:fr-pulse 2.4s ease-in-out infinite;pointer-events:none;
}
.fr-avatar{
    position:relative;z-index:1;
    width:140px;height:140px;border-radius:50%;
    object-fit:cover;display:block;
    border:3px solid rgba(255,255,255,.08);
    background:#1a1a2e;
}
/* ── timer ───────────────────────────────────────────────────── */
.fr-timer{
    font-size:1.05rem;font-weight:800;letter-spacing:.12em;
    color:rgba(255,255,255,.55);
    font-variant-numeric:tabular-nums;
    transition:color .3s;
}
.fr-timer--expired{color:rgba(255,255,255,.2)}
.fr-timer--eating{
    font-size:.82rem;letter-spacing:.06em;font-weight:700;
    color:rgba(255,255,255,.45);
    animation:fr-eating-pulse 2.8s ease-in-out infinite;
}
@keyframes fr-eating-pulse{
    0%,100%{opacity:.45}
    50%{opacity:.9}
}
.fr-ring--expired{opacity:.15;animation:none}
.fr-timer:hover{color:rgba(255,255,255,.7)}

/* ── donate button ───────────────────────────────────────────── */
.fr-donate-btn{
    width:48px;height:48px;border-radius:50%;border:none;
    background:linear-gradient(135deg,#6400ff,#a855f7);
    color:#fff;font-size:1.4rem;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    box-shadow:0 4px 24px rgba(100,0,255,.4);
    transition:transform .15s,box-shadow .15s,opacity .15s;
    flex-shrink:0;
}
.fr-donate-btn:hover{transform:translateY(-2px) scale(1.08);box-shadow:0 6px 32px rgba(100,0,255,.55)}
.fr-donate-btn:active{transform:translateY(0) scale(.97);box-shadow:0 2px 12px rgba(100,0,255,.3)}
.fr-donate-btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}

/* ── donation wall ───────────────────────────────────────────── */
.fr-wall{
    width:100%;max-width:860px;
    display:flex;flex-wrap:wrap;gap:16px;
    justify-content:center;
    align-items:flex-end;
}

/* ── bubble ──────────────────────────────────────────────────── */
.fr-bubble{
    position:relative;
    width:var(--size,140px);height:var(--size,140px);
    border-radius:20px;overflow:hidden;
    background:color-mix(in srgb,var(--rc,#888) 8%,rgba(18,18,30,.95));
    border:1px solid color-mix(in srgb,var(--rc,#888) 22%,transparent);
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:6px;padding:12px 10px 18px;
    cursor:default;
    animation:fr-float var(--fdur,4s) ease-in-out infinite;
    animation-delay:var(--fdelay,0s);
    transition:transform .2s,box-shadow .2s;
    flex-shrink:0;
}
.fr-bubble:hover{
    transform:translateY(-4px) scale(1.04);
    box-shadow:0 8px 32px color-mix(in srgb,var(--rc,#888) 35%,transparent);
    z-index:2;
}
.fr-bubble.has-grad{
    background:linear-gradient(135deg,
        color-mix(in srgb,var(--g1) 14%,rgba(18,18,30,.95)),
        color-mix(in srgb,var(--g2) 10%,rgba(12,12,22,.95)));
}
.fr-bubble-accent{
    position:absolute;inset:0;border-radius:inherit;
    background:linear-gradient(135deg,color-mix(in srgb,var(--rc,#888) 12%,transparent) 0%,transparent 60%);
    pointer-events:none;
}
.fr-bubble-glow{
    position:absolute;inset:0;
    background:radial-gradient(circle at 50% 20%,color-mix(in srgb,var(--rc,#888) 20%,transparent),transparent 65%);
    pointer-events:none;
}
.fr-bubble-icon{
    position:relative;z-index:1;
    width:calc(var(--size,140px) * .38);height:calc(var(--size,140px) * .38);
    object-fit:contain;border-radius:50%;
    flex-shrink:0;
}
.fr-bubble-dot{
    position:relative;z-index:1;
    width:calc(var(--size,140px) * .28);height:calc(var(--size,140px) * .28);
    border-radius:50%;
    background:var(--rc,#888);
    flex-shrink:0;
}
.fr-bubble-body{
    position:relative;z-index:1;
    display:flex;flex-direction:column;align-items:center;gap:3px;
    width:100%;
}
.fr-bubble-name{
    font-size:calc(var(--size,140px) * .085);
    font-weight:700;color:#fff;
    text-align:center;line-height:1.2;
    word-break:break-word;
    text-shadow:0 1px 4px rgba(0,0,0,.6);
    max-width:100%;
}
.fr-bubble-serial{
    font-size:calc(var(--size,140px) * .07);
    font-weight:700;padding:1px 6px;border-radius:6px;
    background:color-mix(in srgb,var(--rc,#888) 25%,rgba(0,0,0,.5));
    color:color-mix(in srgb,var(--rc,#888) 60%,#fff);
    border:1px solid color-mix(in srgb,var(--rc,#888) 30%,transparent);
    line-height:1.4;
}
.fr-bubble-donor{
    position:absolute;bottom:6px;right:6px;
    width:22px;height:22px;border-radius:50%;
    border:1.5px solid rgba(255,255,255,.18);
    object-fit:cover;background:#222;
    z-index:2;
    box-shadow:0 1px 4px rgba(0,0,0,.5);
}

.fr-bubble--returnable{cursor:pointer}
.fr-bubble--returnable:hover{
    box-shadow:0 8px 32px color-mix(in srgb,var(--rc,#888) 35%,transparent),
               0 0 0 1.5px color-mix(in srgb,var(--rc,#888) 50%,transparent);
}
.fr-bubble--returning{opacity:.5;pointer-events:none}

/* ── role picker modal content ───────────────────────────────── */
.fr-picker-list{
    display:flex;flex-direction:column;gap:8px;
    max-height:320px;overflow-y:auto;
    padding-right:4px;
}
.fr-picker-item{
    display:flex;align-items:center;gap:10px;
    padding:10px 14px;border-radius:10px;cursor:pointer;
    border:1.5px solid transparent;
    background:rgba(255,255,255,.04);
    transition:background .12s,border-color .12s;
}
.fr-picker-item:hover{background:rgba(255,255,255,.07)}
.fr-picker-item.selected{
    background:rgba(100,0,255,.12);
    border-color:rgba(100,0,255,.4);
}
.fr-picker-icon{width:28px;height:28px;border-radius:50%;object-fit:cover;flex-shrink:0}
.fr-picker-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.fr-picker-info{flex:1;min-width:0}
.fr-picker-name{font-size:.85rem;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fr-picker-serial{font-size:.72rem;color:var(--t3);margin-top:1px}

/* ── projectile (suck-in clone) ──────────────────────────────── */
.fr-projectile{
    position:fixed;z-index:9999;
    width:52px;height:52px;border-radius:14px;
    background:color-mix(in srgb,var(--rc,#888) 12%,rgba(18,18,30,.95));
    border:1.5px solid color-mix(in srgb,var(--rc,#888) 30%,transparent);
    display:flex;align-items:center;justify-content:center;
    pointer-events:none;
    transition:transform .7s cubic-bezier(.55,.06,.68,.19),opacity .6s ease;
    will-change:transform,opacity;
}
.fr-projectile img{width:28px;height:28px;border-radius:50%;object-fit:cover}
.fr-projectile.flying{opacity:0;transform:var(--fly-transform)}

/* ── animations ──────────────────────────────────────────────── */
@keyframes fr-float{
    0%,100%{transform:translateY(0)}
    50%{transform:translateY(-6px)}
}
@keyframes fr-pulse{
    0%,100%{opacity:.5;transform:scale(1)}
    50%{opacity:1;transform:scale(1.08)}
}
@keyframes fr-spin{
    to{transform:rotate(360deg)}
}
@keyframes fr-bubble-in{
    from{opacity:0;transform:scale(.5)}
    to{opacity:1;transform:scale(1)}
}
.fr-bubble.entering{
    animation:fr-bubble-in .5s cubic-bezier(.34,1.56,.64,1) both,
              fr-float var(--fdur,4s) ease-in-out infinite var(--fdelay,0s);
}

/* ── Feed Rixin: winners display ──────────────────────────────── */
.fr-wall:has(.fr-winner){
    display:flex;flex-wrap:wrap;gap:1.5rem;justify-content:center;
    padding:2.5rem 1rem;
}
.fr-winner{
    display:flex;flex-direction:column;align-items:center;gap:.55rem;
    opacity:0;
    animation:fr-winner-in .55s cubic-bezier(.34,1.3,.64,1) forwards;
}
.fr-winner-avatar{
    width:76px;height:76px;border-radius:50%;object-fit:cover;
    border:2px solid rgba(168,85,247,.22);
    box-shadow:0 0 18px rgba(168,85,247,.12);
}
.fr-winner-avatar--blank{
    background:rgba(40,40,60,.7);
}
.fr-winner-prizes{
    display:flex;gap:.3rem;flex-wrap:wrap;justify-content:center;max-width:96px;
}
.fr-winner-prize{
    width:26px;height:26px;border-radius:50%;object-fit:cover;
    opacity:.82;filter:drop-shadow(0 0 3px rgba(0,0,0,.5));
}
@keyframes fr-winner-in{
    from{opacity:0;transform:translateY(14px) scale(.88)}
    to{opacity:1;transform:none}
}

/* =====================================================================
   VIP PAGE
   ===================================================================== */
.vp-page{
    max-width:960px;margin:0 auto;padding:28px 20px 80px;
}
.vp-page-head{
    margin-bottom:28px;
    display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
}
.vp-owner-bar{display:flex;gap:8px;align-items:center}

/* VIP activate section */
.vp-act-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
    gap:14px;
}
.vp-act-card{
    --rc:#a855f7;
    position:relative;overflow:hidden;
    border-radius:16px;padding:16px;
    background:
        radial-gradient(100% 90% at 50% 0%,color-mix(in srgb,var(--rc) 14%,transparent),transparent 60%),
        linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.015));
    border:1px solid color-mix(in srgb,var(--rc) 20%,rgba(255,255,255,.07));
    transition:border-color .22s,transform .22s;
}
.vp-act-card:hover{
    border-color:color-mix(in srgb,var(--rc) 38%,rgba(255,255,255,.1));
    transform:translateY(-2px);
}
.vp-act-header{display:flex;align-items:center;gap:11px;margin-bottom:14px}
.vp-act-icon{
    width:38px;height:38px;border-radius:10px;flex-shrink:0;
    display:flex;align-items:center;justify-content:center;
    background:rgba(0,0,0,.35);
    border:1px solid color-mix(in srgb,var(--rc) 30%,rgba(255,255,255,.07));
}
.vp-act-icon img{width:24px;height:24px;object-fit:contain;filter:drop-shadow(0 0 6px color-mix(in srgb,var(--rc) 60%,transparent))}
.vp-act-meta{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.vp-act-name{font-size:.75rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:color-mix(in srgb,var(--rc) 90%,#fff)}
.vp-act-count{font-size:.7rem;color:var(--t3)}
.vp-act-btns{display:flex;flex-direction:column;gap:6px}
.vp-act-btn{
    display:flex;align-items:center;gap:7px;
    width:100%;padding:8px 12px;border-radius:9px;
    font-size:.75rem;font-weight:600;cursor:pointer;text-align:left;
    background:color-mix(in srgb,var(--rc) 14%,rgba(255,255,255,.03));
    border:1px solid color-mix(in srgb,var(--rc) 22%,transparent);
    color:color-mix(in srgb,var(--rc) 90%,#fff);
    transition:background .2s,border-color .2s,transform .15s;
}
.vp-act-btn:hover:not(:disabled){
    background:color-mix(in srgb,var(--rc) 22%,rgba(255,255,255,.05));
    border-color:color-mix(in srgb,var(--rc) 38%,transparent);
    transform:translateY(-1px);
}
.vp-act-btn:active:not(:disabled){transform:translateY(0)}
.vp-act-btn:disabled{opacity:.35;cursor:not-allowed}
.vp-act-btn--ghost{
    background:rgba(255,255,255,.025);
    border-color:rgba(255,255,255,.07);
    color:var(--t2);
}
.vp-act-btn--ghost:hover:not(:disabled){
    background:rgba(255,255,255,.05);
    border-color:color-mix(in srgb,var(--rc) 22%,transparent);
    color:color-mix(in srgb,var(--rc) 80%,#fff);
}
.vp-act-btn--trial{
    background:color-mix(in srgb,var(--rc) 8%,rgba(255,255,255,.02));
    border-color:color-mix(in srgb,var(--rc) 14%,transparent);
    color:color-mix(in srgb,var(--rc) 70%,#fff);
}

/* VIP credits balance bar */
.vp-credits-bar{margin-bottom:32px}
.vp-credits-wrap{
    display:flex;flex-wrap:wrap;gap:10px;
}
.vp-credit-chip{
    --rc:#888;
    display:flex;align-items:center;gap:10px;
    padding:10px 14px 10px 10px;border-radius:14px;
    background:
        radial-gradient(100% 80% at 50% 0%,color-mix(in srgb,var(--rc) 14%,transparent),transparent 60%),
        linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.012));
    border:1px solid color-mix(in srgb,var(--rc) 18%,rgba(255,255,255,.07));
    flex:1 1 160px;min-width:150px;max-width:240px;
    transition:border-color .25s ease,transform .18s ease;
}
.vp-credit-chip--active{cursor:pointer}
.vp-credit-chip--active:hover{
    border-color:color-mix(in srgb,var(--rc) 38%,rgba(255,255,255,.1));
    transform:translateY(-2px);
}
.vp-credit-chip--active:active{transform:translateY(0)}
.vp-credit-chip-use{
    margin-left:auto;flex-shrink:0;
    font-size:.85rem;color:color-mix(in srgb,var(--rc) 60%,rgba(255,255,255,.3));
    transition:color .18s;
}
.vp-credit-chip--active:hover .vp-credit-chip-use{
    color:color-mix(in srgb,var(--rc) 90%,#fff);
}
.vp-credit-chip-img{
    width:36px;height:36px;border-radius:9px;flex-shrink:0;
    display:flex;align-items:center;justify-content:center;
    background:rgba(0,0,0,.35);
    border:1px solid color-mix(in srgb,var(--rc) 30%,rgba(255,255,255,.07));
}
.vp-credit-chip-img img{width:26px;height:26px;object-fit:contain;filter:drop-shadow(0 0 5px color-mix(in srgb,var(--rc) 55%,transparent))}
.vp-credit-chip-info{display:flex;flex-direction:column;gap:2px}
.vp-credit-chip-name{font-size:.7rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:color-mix(in srgb,var(--rc) 90%,#fff)}
.vp-credit-chip-count{font-size:1.05rem;font-weight:800;color:#fff}

/* Section blocks */
.vp-section{margin-bottom:0}
.vp-section-head{margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.06)}
.vp-section-title{font-size:1.3rem;font-weight:800;letter-spacing:-.03em;color:#fff;margin-bottom:4px}
.vp-section-sub{font-size:.8rem;color:rgba(255,255,255,.45);line-height:1.5}

.vp-empty{
    text-align:center;padding:48px 24px;
    color:rgba(255,255,255,.25);font-size:.9rem;font-weight:600;letter-spacing:-.01em;
}

/* Card owner controls */
.vp-card-owner-actions{display:flex;gap:4px;align-items:center}
.vp-card-action{
    width:28px;height:28px;border-radius:7px;
    display:flex;align-items:center;justify-content:center;
    color:rgba(255,255,255,.45);font-size:1rem;
    background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);
    cursor:pointer;transition:color .15s,background .15s,border-color .15s;
}
.vp-card-action:hover{color:#fff;background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.15)}
.vp-card-action--delete:hover{color:#ff4466;background:rgba(255,50,80,.08);border-color:rgba(255,50,80,.25)}

.vp-card-desc{
    position:relative;z-index:1;
    font-size:.76rem;font-weight:500;color:rgba(255,255,255,.45);line-height:1.5;
    padding:0 2px;margin-top:-4px;
}

/* Edit modal */
.vp-edit-modal{max-width:460px!important}
.vp-edit-form{display:flex;flex-direction:column;gap:12px;padding:0 2px}
.vp-ef-group{display:flex;flex-direction:column;gap:10px;padding:12px 14px;border-radius:10px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06)}
.vp-ef-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.vp-edit-label{
    display:flex;flex-direction:column;gap:5px;
    font-size:.7rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
    color:rgba(255,255,255,.45);
}
.vp-edit-input{
    width:100%;padding:9px 12px;border-radius:9px;
    border:1px solid rgba(255,255,255,.1);
    background:rgba(255,255,255,.06);
    color:#fff;font-family:inherit;font-size:.88rem;font-weight:600;
    outline:none;transition:border-color .15s,background .15s;
    -webkit-appearance:none;appearance:none;
}
.vp-edit-input:focus{border-color:rgba(168,107,255,.6);background:rgba(168,107,255,.06)}
.vp-edit-select{cursor:pointer}
.vp-edit-select option{background:#111;color:#fff}

/* Sub heading in recipes */
.vp-sub-head{
    font-size:1rem;font-weight:800;letter-spacing:-.02em;
    color:rgba(255,255,255,.6);margin:28px 0 14px;
}

/* Recipe card read-only layout */
.vp-ct-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}
.vp-recipe-stage{
    position:relative;z-index:1;
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;
    padding:14px 12px;border-radius:11px;
    background:rgba(0,0,0,.28);
    border:1px solid rgba(255,255,255,.05);
}
.vp-recipe-inputs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;flex:1}
.vp-recipe-input{
    --rc:#888;
    display:flex;align-items:center;gap:6px;
    padding:5px 9px 5px 5px;border-radius:8px;
    background:color-mix(in srgb,var(--rc) 10%,rgba(255,255,255,.04));
    border:1px solid color-mix(in srgb,var(--rc) 20%,rgba(255,255,255,.06));
    font-size:.75rem;font-weight:700;color:#fff;
}
.vp-recipe-input.has-grad{
    background:linear-gradient(135deg,color-mix(in srgb,var(--g1) 12%,rgba(255,255,255,.04)),color-mix(in srgb,var(--g2) 10%,rgba(255,255,255,.03)));
    border-color:color-mix(in srgb,var(--g1) 22%,rgba(255,255,255,.07));
}
.vp-recipe-plus{font-size:.8rem;font-weight:800;color:rgba(255,255,255,.3)}
.vp-recipe-output{display:flex;flex-direction:column;align-items:center;gap:5px;flex-shrink:0}
.vp-recipe-output-icon{display:flex;align-items:center;justify-content:center}
.vp-recipe-output-name{font-size:.78rem;font-weight:800;color:#fff;text-align:center;line-height:1.2}
.vp-recipe-output-name.has-grad{
    background:linear-gradient(135deg,var(--g1),var(--g2));
    -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
}
.vp-recipe-note{
    position:relative;z-index:1;
    font-size:.72rem;font-weight:600;color:rgba(255,255,255,.35);
    text-align:center;padding:2px 0;
}
.vp-recipe-note b{color:rgba(255,255,255,.55)}

/* ct-card / ct-arrow reused on VIP page */
.ct-card{
    --rc:#888;
    position:relative;display:flex;flex-direction:column;gap:12px;
    padding:18px 18px 16px;border-radius:16px;
    background:
        radial-gradient(120% 80% at 50% 0%,color-mix(in srgb,var(--rc) 14%,transparent),transparent 60%),
        linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.012));
    border:1px solid color-mix(in srgb,var(--rc) 14%,rgba(255,255,255,.06));
    overflow:hidden;isolation:isolate;cursor:default;
    transition:border-color .35s ease,transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .45s ease;
}
.ct-card:hover{
    transform:translateY(-3px);
    border-color:color-mix(in srgb,var(--rc) 38%,rgba(255,255,255,.1));
    box-shadow:0 22px 52px -28px color-mix(in srgb,var(--rc) 80%,transparent);
}
.ct-card::before{
    content:'';position:absolute;inset:-1px;border-radius:inherit;
    background:radial-gradient(80% 60% at 50% 0%,color-mix(in srgb,var(--rc) 32%,transparent),transparent 70%);
    pointer-events:none;opacity:.55;z-index:-1;
}
.ct-card.has-grad{
    background:
        radial-gradient(120% 80% at 50% 0%,color-mix(in srgb,var(--g1) 10%,transparent) 0%,color-mix(in srgb,var(--g2) 8%,transparent) 100%,transparent),
        linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.012));
    border-color:color-mix(in srgb,var(--g1) 20%,rgba(255,255,255,.08));
}
.ct-card-aura{
    position:absolute;inset:-30%;pointer-events:none;z-index:0;
    background:conic-gradient(from 0deg,transparent 0deg,color-mix(in srgb,var(--rc) 35%,transparent) 40deg,transparent 90deg,transparent 360deg);
    opacity:0;filter:blur(28px);animation:cs-aura-rotate 9s linear infinite;transition:opacity .4s ease;
}
.ct-card:hover .ct-card-aura{opacity:.55}
.ct-card-head{
    position:relative;z-index:1;
    font-size:.82rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
    color:color-mix(in srgb,var(--rc) 90%,#fff);
}
.ct-arrow{display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.4);font-size:1.5rem;position:relative;z-index:1;flex-shrink:0}

/* ---- Type picker (Keys / Role / Coins) ---- */
.vp-type-picker{display:flex;gap:6px;flex-wrap:wrap}
.vp-type-chip{
    display:inline-flex;align-items:center;gap:5px;
    padding:7px 14px;border-radius:8px;
    font-size:.8rem;font-weight:700;
    background:rgba(255,255,255,.05);
    border:1px solid rgba(255,255,255,.09);
    color:rgba(255,255,255,.5);
    cursor:pointer;transition:background .15s,border-color .15s,color .15s;
}
.vp-type-chip:hover{background:rgba(255,255,255,.09);color:rgba(255,255,255,.8)}
.vp-type-chip.sel{
    background:rgba(168,107,255,.18);
    border-color:rgba(168,107,255,.45);
    color:#d4b8ff;
}

/* ---- VIP tier picker ---- */
.vp-tier-picker{display:flex;gap:6px;flex-wrap:wrap}
.vp-tier-chip{
    --rc:#888;
    display:inline-flex;align-items:center;gap:7px;
    padding:7px 12px;border-radius:9px;
    background:rgba(255,255,255,.04);
    border:1px solid rgba(255,255,255,.08);
    color:rgba(255,255,255,.5);
    font-size:.8rem;font-weight:700;
    cursor:pointer;transition:background .15s,border-color .15s,color .15s;
    flex:1 1 auto;
}
.vp-tier-chip img{width:20px;height:20px;object-fit:contain;flex-shrink:0;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--rc) 55%,transparent))}
.vp-tier-chip:hover{background:color-mix(in srgb,var(--rc) 10%,rgba(255,255,255,.04));color:#fff}
.vp-tier-chip.sel{
    background:color-mix(in srgb,var(--rc) 18%,transparent);
    border-color:color-mix(in srgb,var(--rc) 55%,rgba(255,255,255,.12));
    color:#fff;
}

/* ---- Key tier chips ---- */
.vp-key-tier-list{display:flex;gap:5px;flex-wrap:wrap}
.vp-key-tier-chip{
    --rc:#888;
    display:inline-flex;align-items:center;gap:6px;
    padding:5px 10px;border-radius:8px;
    background:rgba(255,255,255,.04);
    border:1px solid rgba(255,255,255,.08);
    color:rgba(255,255,255,.5);
    font-size:.78rem;font-weight:700;
    cursor:pointer;transition:background .15s,border-color .15s,color .15s;
}
.vp-key-tier-chip img{width:18px;height:18px;object-fit:contain;flex-shrink:0;filter:drop-shadow(0 0 3px color-mix(in srgb,var(--rc) 50%,transparent))}
.vp-key-tier-chip:hover{background:color-mix(in srgb,var(--rc) 10%,rgba(255,255,255,.03));color:#fff}
.vp-key-tier-chip.sel{
    background:color-mix(in srgb,var(--rc) 18%,transparent);
    border-color:color-mix(in srgb,var(--rc) 50%,rgba(255,255,255,.1));
    color:#fff;
}

/* ---- Role picker button / selected display ---- */
.vp-role-pick-btn{
    display:inline-flex;align-items:center;gap:7px;
    padding:9px 14px;border-radius:9px;
    background:rgba(255,255,255,.05);
    border:1px dashed rgba(255,255,255,.15);
    color:rgba(255,255,255,.5);
    font-size:.85rem;font-weight:600;
    cursor:pointer;width:100%;
    transition:background .15s,border-color .15s,color .15s;
}
.vp-role-pick-btn:hover{background:rgba(255,255,255,.09);color:#fff;border-color:rgba(255,255,255,.28)}
.vp-role-selected{
    --rc:#888;
    display:flex;align-items:center;gap:9px;
    padding:8px 12px;border-radius:9px;
    background:color-mix(in srgb,var(--rc) 10%,rgba(255,255,255,.04));
    border:1px solid color-mix(in srgb,var(--rc) 25%,rgba(255,255,255,.08));
    transition:filter .15s;
}
.vp-role-selected:hover{filter:brightness(1.1)}
.vp-role-selected-name{flex:1;font-size:.88rem;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vp-role-selected-change{font-size:.7rem;font-weight:700;color:rgba(255,255,255,.35);letter-spacing:.05em;text-transform:uppercase;flex-shrink:0}

/* ---- Role picker sub-modal ---- */
.vp-rpick-list{
    display:flex;flex-direction:column;gap:4px;
    max-height:320px;overflow-y:auto;
    padding-right:4px;
}
.vp-rpick-item{
    display:flex;align-items:center;gap:10px;
    padding:8px 12px;border-radius:9px;
    background:transparent;
    border:1px solid transparent;
    color:rgba(255,255,255,.75);
    font-size:.85rem;font-weight:600;
    cursor:pointer;text-align:left;
    transition:background .12s,border-color .12s,color .12s;
}
.vp-rpick-item:hover{
    background:color-mix(in srgb,var(--rc) 10%,rgba(255,255,255,.04));
    border-color:color-mix(in srgb,var(--rc) 22%,rgba(255,255,255,.07));
    color:#fff;
}
.vp-rpick-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Mobile adjustments */
@media(max-width:600px){
    .vp-page{padding:20px 14px 60px}
    .vp-credits-wrap{gap:8px}
    .vp-credit-chip{min-width:130px}
    .vp-ct-grid{grid-template-columns:1fr}
    .vp-tier-picker{flex-direction:column}
}

/* =====================================================================
   VIP EXCHANGE RESULT CARD  (.vpa-*)
   ===================================================================== */
.vpa-card{
    --rc:#9c6cff;--g1:#9c6cff;--g2:#d4843d;
    position:relative;overflow:hidden;isolation:isolate;
    width:min(380px,92vw);
    display:flex;flex-direction:column;align-items:center;gap:14px;
    padding:32px 28px 22px;border-radius:22px;
    background:
        radial-gradient(120% 80% at 0% 0%,color-mix(in srgb,var(--g1) 24%,transparent),transparent 60%),
        radial-gradient(120% 80% at 100% 0%,color-mix(in srgb,var(--g2) 18%,transparent),transparent 60%),
        linear-gradient(180deg,#15151d 0%,#0c0c14 100%);
    border:1px solid color-mix(in srgb,var(--g1) 35%,rgba(255,255,255,.08));
    box-shadow:
        0 0 0 1px color-mix(in srgb,var(--g2) 22%,transparent),
        0 40px 90px -22px rgba(0,0,0,.85),
        0 -8px 70px -16px color-mix(in srgb,var(--g1) 55%,transparent),
        0 28px 70px -16px color-mix(in srgb,var(--g2) 45%,transparent);
    opacity:0;
    transform:translateY(18px) scale(.9);
    transition:opacity .32s ease,transform .6s cubic-bezier(.1,1.55,.34,1);
    text-align:center;
}
/* top stripe */
.vpa-card::before{
    content:'';position:absolute;left:14%;right:14%;top:0;height:2px;border-radius:0 0 4px 4px;
    background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--g1) 90%,#fff) 35%,color-mix(in srgb,var(--g2) 90%,#fff) 65%,transparent);
    box-shadow:0 0 18px color-mix(in srgb,var(--g1) 70%,transparent),0 0 32px color-mix(in srgb,var(--g2) 50%,transparent);
    z-index:2;
}
.vpa-card.vpa-card-in{
    opacity:1;transform:translateY(0) scale(1);
}
.vpa-card-glow{
    position:absolute;inset:0;pointer-events:none;z-index:0;
    background:
        radial-gradient(60% 55% at 30% 0%,color-mix(in srgb,var(--g1) 35%,transparent),transparent 70%),
        radial-gradient(60% 55% at 70% 0%,color-mix(in srgb,var(--g2) 28%,transparent),transparent 70%);
    opacity:.6;
}
.vpa-card-rays{
    position:absolute;left:50%;top:100px;width:300px;height:300px;
    transform:translate(-50%,-50%);
    pointer-events:none;z-index:0;
    background:conic-gradient(from 0deg,
        transparent 0deg,
        color-mix(in srgb,var(--g1) 22%,transparent) 30deg,
        transparent 60deg,transparent 150deg,
        color-mix(in srgb,var(--g2) 18%,transparent) 200deg,
        transparent 240deg,transparent 360deg);
    opacity:.55;filter:blur(12px);
    animation:cs-result-rays-spin 12s linear infinite;
}
/* "spent X →" chip */
.vpa-card-cost{
    --ic:#d4843d;
    position:relative;z-index:1;
    display:inline-flex;align-items:center;gap:6px;
    padding:4px 10px 4px 6px;border-radius:99px;
    background:color-mix(in srgb,var(--ic) 10%,rgba(255,255,255,.04));
    border:1px solid color-mix(in srgb,var(--ic) 22%,rgba(255,255,255,.07));
    font-size:.68rem;font-weight:700;
    color:color-mix(in srgb,var(--ic) 80%,#fff);
    letter-spacing:.04em;
}
.vpa-card-cost img{width:14px;height:14px;object-fit:contain;border-radius:3px}
.vpa-card-cost i{font-size:.7rem;opacity:.55}
/* output icon */
.vpa-card-icon-wrap{
    position:relative;z-index:1;
    width:110px;height:110px;
    display:flex;align-items:center;justify-content:center;
    margin-top:4px;
}
.vpa-card-icon{
    width:96px;height:96px;border-radius:22px;
    display:flex;align-items:center;justify-content:center;
    background:
        radial-gradient(80% 80% at 50% 20%,color-mix(in srgb,var(--rc) 28%,transparent),transparent 70%),
        rgba(0,0,0,.55);
    border:1.5px solid color-mix(in srgb,var(--rc) 50%,rgba(255,255,255,.15));
    box-shadow:
        0 0 48px color-mix(in srgb,var(--rc) 60%,transparent),
        0 0 14px color-mix(in srgb,var(--rc) 35%,transparent),
        inset 0 1px 0 rgba(255,255,255,.13);
}
.vpa-card-icon img{width:60px;height:60px;object-fit:contain;display:block}
.vpa-dot{display:block;width:54px;height:54px;border-radius:50%}
.vpa-card-name{
    position:relative;z-index:1;
    font-size:.95rem;font-weight:800;letter-spacing:-.015em;
    color:#fff;
    text-shadow:0 0 22px color-mix(in srgb,var(--rc) 55%,transparent);
    max-width:260px;line-height:1.3;
}
.vpa-card-close{
    position:relative;z-index:1;
    margin-top:4px;
    padding:7px 20px;border-radius:10px;
    background:rgba(255,255,255,.05);
    border:1px solid rgba(255,255,255,.09);
    color:rgba(255,255,255,.45);
    font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
    cursor:pointer;
    transition:background .18s,border-color .18s,color .18s;
}
.vpa-card-close:hover{
    background:rgba(255,255,255,.09);
    border-color:rgba(255,255,255,.16);
    color:rgba(255,255,255,.75);
}

/* =====================================================================
   VIP AUCTION CARDS  (.vpa-*)
   ===================================================================== */
.vpa-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(200px,1fr));
    gap:14px;margin-bottom:8px;
}
.vpa-auccard{
    --rc:#9c6cff;
    position:relative;overflow:hidden;isolation:isolate;
    display:flex;flex-direction:column;align-items:center;gap:12px;
    padding:20px 18px 16px;border-radius:18px;text-align:center;
    background:linear-gradient(160deg,color-mix(in srgb,var(--rc) 12%,#0d0d15) 0%,#0a0a14 100%);
    border:1px solid color-mix(in srgb,var(--rc) 16%,rgba(255,255,255,.05));
    transition:transform .22s cubic-bezier(.2,.7,.2,1),border-color .22s,box-shadow .28s;
}
.vpa-auccard:hover{
    transform:translateY(-4px);
    border-color:color-mix(in srgb,var(--rc) 40%,rgba(255,255,255,.1));
    box-shadow:0 18px 44px -22px color-mix(in srgb,var(--rc) 85%,transparent);
}
.vpa-auccard-stripe{
    position:absolute;top:0;left:18%;right:18%;height:2px;border-radius:0 0 2px 2px;
    background:color-mix(in srgb,var(--rc) 75%,transparent);
    box-shadow:0 0 12px color-mix(in srgb,var(--rc) 55%,transparent);
    transition:left .25s,right .25s;
}
.vpa-auccard:hover .vpa-auccard-stripe{left:8%;right:8%}
.vpa-auccard-glow{
    position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;z-index:0;
    background:radial-gradient(70% 55% at 50% -10%,color-mix(in srgb,var(--rc) 24%,transparent),transparent 65%);
    opacity:.65;transition:opacity .3s;
}
.vpa-auccard:hover .vpa-auccard-glow{opacity:1}
/* cancel button — absolute top-right */
.vpa-auccard-x{
    position:absolute;top:9px;right:9px;z-index:2;
    width:18px;height:18px;border-radius:4px;
    display:flex;align-items:center;justify-content:center;
    background:none;border:none;
    color:rgba(255,255,255,.2);cursor:pointer;font-size:.7rem;
    transition:color .15s;
}
.vpa-auccard-x:hover{color:#f87171}
/* hero */
.vpa-auccard-hero{
    position:relative;z-index:1;
    width:90px;height:90px;
    display:flex;align-items:center;justify-content:center;
}
.vpa-auccard-halo{
    position:absolute;inset:0;border-radius:50%;
    background:radial-gradient(circle,color-mix(in srgb,var(--rc) 40%,transparent),transparent 70%);
}
.vpa-auccard-role-img{
    width:68px;height:68px;object-fit:contain;position:relative;z-index:1;
    filter:drop-shadow(0 0 14px color-mix(in srgb,var(--rc) 70%,transparent));
}
.vpa-auccard-role-dot{
    width:60px;height:60px;border-radius:50%;display:block;position:relative;z-index:1;
    box-shadow:0 0 24px color-mix(in srgb,var(--rc) 60%,transparent);
}
.vpa-auccard-rolename{
    position:relative;z-index:1;
    font-size:.9rem;font-weight:800;color:#fff;letter-spacing:-.01em;
}
.vpa-auccard-title{
    position:relative;z-index:1;
    font-size:.68rem;font-weight:600;color:var(--t2);margin-top:-6px;
}
.vpa-auccard-desc{
    position:relative;z-index:1;
    font-size:.67rem;color:var(--t3);line-height:1.45;
    margin-top:-4px;
    overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
}
/* cost tile — mirrors kf-tile */
.vpa-cost-tile{
    --tc:#d4843d;
    position:relative;z-index:1;
    display:flex;flex-direction:column;align-items:center;gap:4px;
    padding:8px 16px;border-radius:10px;
    background:
        radial-gradient(80% 80% at 50% 30%,color-mix(in srgb,var(--tc) 22%,transparent),transparent 70%),
        rgba(0,0,0,.35);
    border:1px solid color-mix(in srgb,var(--tc) 35%,rgba(255,255,255,.08));
    box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
}
.vpa-cost-label{
    font-size:.6rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
    color:color-mix(in srgb,var(--tc) 80%,rgba(255,255,255,.6));
    opacity:.8;
}
.vpa-cost-tile img{
    width:28px;height:28px;object-fit:contain;
    filter:drop-shadow(0 0 8px color-mix(in srgb,var(--tc) 60%,transparent));
}
.vpa-bid-dot{width:24px;height:24px;border-radius:50%;background:var(--tc);box-shadow:0 0 10px var(--tc)}
.vpa-cost-x{
    font-size:.68rem;font-weight:800;color:#fff;
    background:rgba(0,0,0,.45);padding:1px 8px;border-radius:99px;
    border:1px solid color-mix(in srgb,var(--tc) 30%,rgba(255,255,255,.08));
}
/* leader box */
.vpa-leader-box{
    position:relative;z-index:1;
    width:100%;display:flex;align-items:center;justify-content:space-between;
    padding:6px 10px;border-radius:8px;
    background:color-mix(in srgb,var(--rc) 8%,rgba(0,0,0,.3));
    border:1px solid color-mix(in srgb,var(--rc) 18%,rgba(255,255,255,.05));
}
.vpa-leader-label{
    font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;
    color:color-mix(in srgb,var(--rc) 70%,rgba(255,255,255,.4));
}
.vpa-leader-name{
    font-size:.72rem;font-weight:800;color:#fff;
    display:flex;align-items:center;gap:5px;
}
.vpa-leader-you{
    padding:1px 6px;border-radius:99px;
    background:color-mix(in srgb,var(--rc) 18%,transparent);
    border:1px solid color-mix(in srgb,var(--rc) 30%,transparent);
    color:color-mix(in srgb,var(--rc) 85%,#fff);
    font-size:.58rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
}
/* footer row: timer + bid button */
.vpa-auccard-footer{
    position:relative;z-index:1;
    width:100%;display:flex;align-items:center;justify-content:space-between;gap:6px;
    margin-top:auto;
}
.vpa-timer{
    position:relative;z-index:1;
    display:inline-flex;align-items:center;gap:4px;
    padding:3px 10px;border-radius:99px;
    font-size:.65rem;font-weight:700;letter-spacing:.03em;
    color:rgba(255,255,255,.5);font-variant-numeric:tabular-nums;white-space:nowrap;
    background:rgba(255,255,255,.05);
    border:1px solid rgba(255,255,255,.07);
}
.vpa-timer--ended{color:var(--t3);background:none;border-color:transparent}
/* footer row removed — button is now full-width */
.vpa-auccard-footer{display:none}
.vpa-auccard-cta{
    position:relative;z-index:1;
    width:100%;height:36px;border-radius:10px;
    background:color-mix(in srgb,var(--rc) 18%,rgba(255,255,255,.06));
    border:1px solid color-mix(in srgb,var(--rc) 30%,rgba(255,255,255,.08));
    color:#fff;font-size:.78rem;font-weight:800;cursor:pointer;letter-spacing:.02em;
    margin-top:auto;
    transition:background .18s,border-color .18s,transform .15s;
}
.vpa-auccard-cta:hover:not(:disabled){
    background:color-mix(in srgb,var(--rc) 32%,rgba(255,255,255,.1));
    border-color:color-mix(in srgb,var(--rc) 55%,rgba(255,255,255,.15));
    transform:translateY(-1px);
}
.vpa-auccard-cta:disabled{opacity:.4;cursor:default}

/* ═══════════════════════════════════════════════════════════════
   CODEBREAKER
   ═══════════════════════════════════════════════════════════════ */

.cb-page{
    position:relative;max-width:520px;margin:0 auto;
    padding:48px 16px 80px;min-height:calc(100vh - 44px);
}
.cb-page--takeover{
    max-width:none;margin:0;padding:0;
    min-height:calc(100vh - 44px);overflow:hidden;
    display:flex;align-items:center;justify-content:center;
    background:#000;
}
.cb-page--complete{
    display:flex;align-items:center;justify-content:center;
    min-height:calc(100vh - 44px);max-width:none;margin:0;
}

.cb-bg-glow{
    position:absolute;top:-10%;left:50%;transform:translateX(-50%);
    width:600px;height:400px;pointer-events:none;
    background:radial-gradient(ellipse,rgba(92,255,58,.08) 0%,transparent 70%);
    filter:blur(50px);
}
.cb-bg-glow--success{background:radial-gradient(ellipse,rgba(92,255,58,.12) 0%,transparent 70%)}

.cb-inner{position:relative;z-index:1}
.cb-spinner{width:32px;height:32px;border:2.5px solid rgba(255,255,255,.08);border-top-color:rgba(255,255,255,.35);border-radius:50%;animation:spin .8s linear infinite;margin:80px auto}

.cb-heading{
    font-size:1.8rem;font-weight:800;letter-spacing:-.04em;
    color:#fff;margin:0 0 6px;
}
.cb-sub{font-size:.82rem;color:rgba(255,255,255,.3);margin:0 0 32px}

.cb-form{display:flex;gap:10px;margin-bottom:28px}
.cb-input{
    flex:1;padding:12px 14px;border-radius:10px;
    border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);
    color:#fff;font-size:.95rem;font-weight:600;outline:none;
    transition:border-color .15s,background .15s;
}
.cb-input:focus{border-color:rgba(255,255,255,.22);background:rgba(255,255,255,.07)}
.cb-btn{
    padding:12px 22px;border-radius:10px;border:1px solid rgba(255,255,255,.12);
    background:rgba(255,255,255,.06);color:rgba(255,255,255,.75);
    font-size:.85rem;font-weight:700;cursor:pointer;white-space:nowrap;
    transition:background .15s,border-color .15s;
}
.cb-btn:hover:not(:disabled){background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.18)}
.cb-btn:disabled{opacity:.35;cursor:not-allowed}

.cb-flash{
    min-height:48px;display:flex;align-items:center;justify-content:center;
    margin-top:8px;
}
.cb-flash-text{
    font-size:.95rem;color:rgba(255,255,255,.45);margin:0;font-weight:500;
    animation:cb-flash-fade 1.8s ease forwards;
}
.cb-flash-text--rixin{color:#fe4a78;font-weight:800;font-size:1.05rem;animation:cb-flash-fade-rixin 2.5s ease forwards}
@keyframes cb-flash-fade-rixin{0%{opacity:0;transform:translateY(6px)}8%{opacity:1;transform:none}75%{opacity:1}100%{opacity:0}}
.cb-flash-text--late{
    color:rgba(255,90,90,.85);font-weight:700;font-size:.9rem;text-align:center;
    animation:cb-flash-fade-late 3.5s ease forwards;
}
@keyframes cb-flash-fade{
    0%{opacity:0;transform:translateY(6px)}
    12%{opacity:1;transform:none}
    70%{opacity:1}
    100%{opacity:0}
}
@keyframes cb-flash-fade-late{
    0%{opacity:0;transform:translateY(6px)}
    8%{opacity:1;transform:none}
    75%{opacity:1}
    100%{opacity:0}
}
.cb-error{color:rgba(255,255,255,.3);text-align:center;padding:60px 0;font-size:.85rem}

.cb-page--roles,.cb-page--vortex,.cb-page--final{
    max-width:none;margin:0;padding:0;
    min-height:calc(100vh - 44px);overflow:hidden;background:#000;
}
.cb-form--stack{flex-direction:column;max-width:320px;margin:0 auto}
.cb-input--center{text-align:center}
.cb-input--shake{animation:cb-shake .4s ease}

/* stage 2 */
.cb-role-layer,.cb-doge-layer{position:absolute;inset:0;pointer-events:none}
.cb-role-float{
    position:absolute;pointer-events:auto;cursor:pointer;object-fit:contain;
    animation:cb-float ease-in-out infinite;transition:transform .15s;user-select:none;
    filter:drop-shadow(0 3px 10px rgba(0,0,0,.5));
}
.cb-doge-float{
    position:absolute;pointer-events:auto;cursor:pointer;object-fit:contain;border-radius:50%;
    animation:cb-float ease-in-out infinite;transition:transform .15s;user-select:none;
    filter:drop-shadow(0 4px 12px rgba(251,237,201,.25));
}
.cb-role-float--pulse{transform:scale(1.15)!important}
.cb-garden-text{
    position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:5;
    font-size:clamp(1.4rem,4vw,2rem);font-weight:900;color:#fff;letter-spacing:-.03em;
    pointer-events:none;margin:0;text-align:center;
}
.cb-garden-text.hidden,.cb-garden-form.hidden{display:none}
.cb-garden-form{
    position:absolute;bottom:12%;left:50%;transform:translateX(-50%);z-index:10;
    width:min(320px,88vw);display:flex;flex-direction:column;gap:10px;
}

/* stage 3 */
.cb-page--vortex{display:flex;align-items:center;justify-content:center}
.cb-vortex{
    position:absolute;inset:-50%;pointer-events:none;
    background:conic-gradient(from 0deg,#000,#fe4a78,#8b4ffb,#000,#fe4a78,#000);
    animation:cb-vortex-spin 6s linear infinite;opacity:.35;filter:blur(40px);
}
@keyframes cb-vortex-spin{to{transform:rotate(360deg)}}
.cb-vortex-content{position:relative;z-index:2;text-align:center;padding:0 20px;width:100%;max-width:400px}
.cb-vortex-title{font-size:clamp(1.6rem,5vw,2.4rem);font-weight:900;color:#fff;letter-spacing:-.03em;margin:0 0 32px}

/* stage 4 */
.cb-final-content{
    position:relative;z-index:2;text-align:center;padding:0 20px;width:100%;max-width:400px;
    margin:0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;
    min-height:calc(100vh - 44px);
}
.cb-final-prompt{font-size:clamp(1.1rem,3vw,1.5rem);font-weight:700;color:rgba(255,255,255,.7);margin:0 0 28px;letter-spacing:-.02em}

/* legacy removed — old meebo/takeover styles below kept minimal for cache */
.cb-takeover-glow{display:none}
.cb-float-layer{display:none}
.cb-meebo{display:none}
.cb-takeover-title{display:none}
.cb-secret-wrap{display:none}
.cb-start-over{display:none}
.cb-complete-img{display:none}

@keyframes cb-shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
@keyframes cb-float{
    0%,100%{transform:translate(0,0) rotate(0deg)}
    50%{transform:translate(10px,-14px) rotate(3deg)}
}

.cb-complete{text-align:center;padding:40px 20px}
.cb-complete-title{font-size:1.3rem;font-weight:800;color:#fff;margin:0;letter-spacing:-.03em}

.cb-page--locked{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 44px);max-width:none;margin:0;text-align:center}
.cb-page--locked .cb-inner{max-width:360px}
.cb-winner-avatar{width:72px;height:72px;border-radius:50%;object-fit:cover;margin:24px auto 16px;display:block;border:2px solid rgba(255,255,255,.1)}
.cb-locked-name{font-size:1.4rem;font-weight:800;color:#fff;margin:0 0 4px;letter-spacing:-.03em}
.cb-locked-text{font-size:.9rem;color:rgba(255,255,255,.35);margin:0}

.cb-page--admin{max-width:960px;margin:0 auto;padding:32px 16px 60px}
.cb-admin-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}
.cb-admin-header .cb-heading{margin:0}
.cb-btn--ghost{background:transparent;border-color:rgba(255,255,255,.12);font-size:.78rem;padding:8px 14px}
.cb-admin-winner{display:flex;align-items:center;gap:10px;padding:12px 16px;margin-bottom:16px;border-radius:10px;background:rgba(254,74,120,.08);border:1px solid rgba(254,74,120,.2);font-size:.88rem;color:rgba(255,255,255,.75)}
.cb-admin-winner-avatar{width:28px;height:28px;border-radius:50%;object-fit:cover}
.cb-admin-stats{display:flex;flex-wrap:wrap;gap:12px 20px;margin-bottom:20px;font-size:.78rem;color:rgba(255,255,255,.45)}
.cb-admin-stats b{color:rgba(255,255,255,.85);font-weight:700}
.cb-admin-table-wrap{overflow-x:auto;border-radius:12px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.02)}
.cb-admin-table{width:100%;border-collapse:collapse;font-size:.82rem}
.cb-admin-table th,.cb-admin-table td{padding:12px 14px;text-align:left;border-bottom:1px solid rgba(255,255,255,.06)}
.cb-admin-table th{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:rgba(255,255,255,.35);background:rgba(255,255,255,.03)}
.cb-admin-table tr:last-child td{border-bottom:none}
.cb-admin-player{display:flex;align-items:center;gap:10px;min-width:180px}
.cb-admin-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover;flex-shrink:0}
.cb-admin-avatar--ph{background:rgba(255,255,255,.08)}
.cb-admin-player-info{display:flex;flex-direction:column;gap:2px;min-width:0}
.cb-admin-name{font-weight:600;color:rgba(255,255,255,.9);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
.cb-admin-id{font-size:.68rem;color:rgba(255,255,255,.25);font-family:ui-monospace,monospace}
.cb-admin-stage{display:inline-block;padding:3px 8px;border-radius:6px;font-size:.72rem;font-weight:600;background:rgba(255,255,255,.06);color:rgba(255,255,255,.6)}
.cb-admin-stage--roles{background:rgba(92,255,58,.1);color:#5cff3a}
.cb-admin-stage--vortex{background:rgba(100,180,255,.12);color:#64b4ff}
.cb-admin-stage--final{background:rgba(254,74,120,.12);color:#fe4a78}
.cb-admin-stage--complete{background:rgba(255,200,80,.12);color:#ffc850}
.cb-admin-mono{font-family:ui-monospace,monospace;font-size:.78rem;color:rgba(255,255,255,.55)}
.cb-admin-muted{color:rgba(255,255,255,.35);font-size:.76rem;white-space:nowrap}
.cb-admin-empty{text-align:center;color:rgba(255,255,255,.3);padding:32px 0}
.cb-admin-results{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.cb-admin-winner--honor{background:rgba(255,174,0,.08);border-color:rgba(255,174,0,.2)}

.cb-results{max-width:520px}
.cb-end{
    border-radius:14px;
    border:1px solid rgba(255,255,255,.06);
    background:rgba(255,255,255,.02);
    overflow:hidden;
}
.cb-end-row{
    display:flex;align-items:center;gap:12px;
    padding:13px 18px;
    border-bottom:1px solid rgba(255,255,255,.04);
}
.cb-end-row:last-child{border-bottom:none}
.cb-end-row.is-you{background:rgba(255,255,255,.025)}
.cb-end-avatar{
    width:30px;height:30px;border-radius:50%;object-fit:cover;flex-shrink:0;
}
.cb-end-avatar--ph{display:block;background:rgba(255,255,255,.06)}
.cb-end-name{
    font-size:.84rem;font-weight:600;color:#fff;
    min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.cb-end-role{
    margin-left:auto;display:flex;align-items:center;gap:7px;flex-shrink:0;
}
.cb-end-role-icon{width:20px;height:20px;object-fit:contain}
.cb-end-role-name{font-size:.8rem;font-weight:700}
.cb-end-role .rl-grad-name{font-size:.8rem}
.cb-end-note{font-size:.74rem;color:rgba(255,255,255,.28)}
.cb-end-empty{
    margin:0;padding:28px 18px;text-align:center;
    font-size:.82rem;color:rgba(255,255,255,.25);
}

@media(max-width:640px){
    .cb-end-row{flex-wrap:wrap;gap:8px 12px}
    .cb-end-role{margin-left:0;padding-left:42px}
}

@media(max-width:640px){
    .cb-page{padding:32px 12px 60px}
    .cb-form:not(.cb-form--stack){flex-direction:column}
}