/* ===================================================================
   POWER MINE — Bedrock Network
   Futuristic game-launcher UI
   =================================================================== */

/* ---------- TOKENS ---------- */
:root{
  --bg:#05030f;
  --bg2:#0a0420;
  --bg3:#120a2e;

  --purple:#a855f7;
  --purple-bright:#c98cff;
  --purple-deep:#7c3aed;
  --blue:#3b6ef5;
  --blue-bright:#5b8cff;
  --cyan:#22d3ee;
  --amber:#f5a623;
  --green:#34d399;
  --red:#ff4d6d;

  --text:#ece9ff;
  --muted:#8d87b8;
  --faint:#5d5790;

  --glass:rgba(150,120,255,0.045);
  --glass-2:rgba(255,255,255,0.05);
  --glass-brd:rgba(168,130,255,0.18);
  --glass-brd-hi:rgba(168,130,255,0.42);

  --disp:'Orbitron','Rajdhani',system-ui,sans-serif;
  --ui:'Rajdhani',system-ui,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;

  --dock-h:78px;
  --safe-b:env(safe-area-inset-bottom,0px);
  --maxw:520px;

  --ease:cubic-bezier(.22,.85,.24,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
}

/* ---------- RESET ---------- */
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  font-family:var(--ui);
  background:var(--bg);
  color:var(--text);
  overflow:hidden;
  position:fixed;
  inset:0;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  letter-spacing:.01em;
}
button{font-family:inherit;color:inherit;background:none;border:none;cursor:pointer}
svg{display:block}
b{font-weight:700}

/* ===================================================================
   BACKGROUND ENGINE
   =================================================================== */
#bg{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.bg-photo{
  position:absolute;inset:-10%;
  background-size:cover;background-position:center;
  opacity:.42;filter:saturate(1.25) contrast(1.05) hue-rotate(-8deg);
  transform:scale(1.08);
  transition:transform 1.2s var(--ease-out);
  will-change:transform;
}
#stars{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:.9}
.bg-aurora{
  position:absolute;inset:-30%;
  background:
    radial-gradient(40% 50% at 20% 25%,rgba(124,58,237,.30),transparent 60%),
    radial-gradient(45% 55% at 85% 70%,rgba(34,108,245,.28),transparent 60%),
    radial-gradient(35% 40% at 60% 10%,rgba(34,211,238,.16),transparent 60%);
  filter:blur(20px);
  animation:aurora 24s ease-in-out infinite alternate;
  will-change:transform,opacity;
}
.bg-grid{
  position:absolute;inset:0;
  background-image:
    linear-gradient(rgba(168,130,255,.06) 1px,transparent 1px),
    linear-gradient(90deg,rgba(168,130,255,.06) 1px,transparent 1px);
  background-size:46px 46px;
  mask-image:radial-gradient(120% 80% at 50% 30%,#000 30%,transparent 80%);
  -webkit-mask-image:radial-gradient(120% 80% at 50% 30%,#000 30%,transparent 80%);
  animation:gridDrift 40s linear infinite;
}
.bg-noise{
  position:absolute;inset:0;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.bg-vignette{
  position:absolute;inset:0;
  background:radial-gradient(130% 90% at 50% 38%,transparent 40%,rgba(3,2,12,.55) 78%,rgba(3,2,12,.92) 100%);
}
#cursor-glow{
  position:absolute;width:380px;height:380px;border-radius:50%;
  left:0;top:0;transform:translate(-50%,-50%);
  background:radial-gradient(circle,rgba(168,85,247,.18),transparent 65%);
  opacity:0;transition:opacity .4s;filter:blur(8px);
  pointer-events:none;
}
@media(hover:hover){#cursor-glow{opacity:1}}

/* ===================================================================
   LOADER
   =================================================================== */
#loader{
  position:fixed;inset:0;z-index:100;background:var(--bg);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;
  transition:opacity .8s var(--ease),visibility .8s;
}
#loader.hidden{opacity:0;visibility:hidden}
.loader-core{position:relative;width:90px;height:90px;display:grid;place-items:center}
.loader-ring{
  position:absolute;inset:0;border-radius:50%;
  border:2px solid transparent;
  border-top-color:var(--purple);border-right-color:var(--blue);
  animation:spin .9s linear infinite;
  box-shadow:0 0 30px rgba(168,85,247,.5),inset 0 0 20px rgba(59,110,245,.3);
}
.loader-logo{font-family:var(--disp);font-weight:900;font-size:1.7rem;color:var(--purple-bright);text-shadow:0 0 18px rgba(168,85,247,.8)}
.loader-bar{width:200px;height:3px;background:rgba(255,255,255,.08);border-radius:99px;overflow:hidden}
.loader-bar span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--purple),var(--blue),var(--cyan));box-shadow:0 0 12px var(--purple);animation:load 1.8s var(--ease) forwards}
.loader-status{font-family:var(--mono);font-size:.66rem;letter-spacing:.22em;color:var(--muted)}
.dots{animation:blink 1.2s steps(4) infinite}

/* ===================================================================
   SCREEN SYSTEM
   =================================================================== */
#app{position:fixed;inset:0;z-index:10}
.screen{
  position:fixed;inset:0;
  opacity:0;visibility:hidden;pointer-events:none;
  transform:scale(1.05) translateY(8px);
  transition:opacity .55s var(--ease-out),transform .55s var(--ease-out),visibility 0s linear .55s;
}
.screen.is-active{
  opacity:1;visibility:visible;pointer-events:auto;transform:none;
  transition-delay:0s;
}
.screen-scroll{
  height:100%;overflow-y:auto;overflow-x:hidden;
  -webkit-overflow-scrolling:touch;
  padding:0 18px calc(var(--dock-h) + var(--safe-b) + 26px);
  max-width:var(--maxw);margin:0 auto;
  scroll-behavior:smooth;
}
.screen-scroll::-webkit-scrollbar{width:0}
.screen-pad{height:10px}

/* ===================================================================
   1. PORTAL (LANDING)
   =================================================================== */
#screen-portal .screen-scroll{padding:0;max-width:none;display:flex;align-items:center;justify-content:center}
.portal-stage{
  position:relative;width:100%;height:100%;min-height:100dvh;
  display:flex;align-items:center;justify-content:center;
  overflow:hidden;
}
.portal-content{
  position:relative;z-index:3;text-align:center;padding:24px;
  display:flex;flex-direction:column;align-items:center;gap:0;
  animation:portalIn 1.4s var(--ease-out) both;
}

.portal-ring{position:absolute;top:50%;left:50%;border-radius:50%;pointer-events:none}
.portal-ring--1{
  width:min(86vw,420px);aspect-ratio:1;margin:-50% 0 0 -43vw;
  border:1px solid rgba(168,85,247,.25);
  border-top-color:rgba(201,140,255,.9);border-left-color:rgba(91,140,255,.6);
  animation:spin 14s linear infinite;
  box-shadow:0 0 80px rgba(124,58,237,.25),inset 0 0 60px rgba(59,110,245,.18);
}
.portal-ring--2{
  width:min(66vw,330px);aspect-ratio:1;margin:-33% 0 0 -33vw;
  border:1px dashed rgba(34,211,238,.3);
  animation:spin 9s linear infinite reverse;
}
.portal-ring--3{
  width:min(108vw,540px);aspect-ratio:1;margin:-54% 0 0 -54vw;
  border:1px solid rgba(168,85,247,.1);
  animation:spin 26s linear infinite;
}
.portal-core{
  position:absolute;top:50%;left:50%;width:min(60vw,300px);aspect-ratio:1;
  margin:-30vw 0 0 -30vw;border-radius:50%;
  background:radial-gradient(circle,rgba(168,85,247,.55),rgba(59,110,245,.25) 45%,transparent 70%);
  filter:blur(30px);
  animation:pulseCore 5s ease-in-out infinite;
}
.portal-sparks{position:absolute;inset:0;pointer-events:none}

.portal-tag{
  font-family:var(--mono);font-size:.58rem;letter-spacing:.24em;color:var(--purple-bright);
  background:var(--glass);border:1px solid var(--glass-brd);
  padding:7px 14px;border-radius:99px;backdrop-filter:blur(14px);
  margin-bottom:34px;display:flex;align-items:center;gap:8px;
  box-shadow:0 0 30px rgba(124,58,237,.25);
}

.portal-logo{position:relative;line-height:.84;margin-bottom:8px}
.logo-word{
  display:block;font-family:var(--disp);font-weight:900;
  font-size:clamp(3.2rem,15vw,5.6rem);
  letter-spacing:.04em;
  background:linear-gradient(180deg,#fff 0%,var(--purple-bright) 55%,var(--purple-deep) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 4px 26px rgba(168,85,247,.6));
  position:relative;
}
.logo-word--mine{
  background:linear-gradient(180deg,var(--cyan),var(--blue) 60%,var(--purple-deep));
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 4px 26px rgba(34,108,245,.6));
  animation:logoFlicker 6s ease-in-out infinite;
}
.logo-line{height:2px;width:46%;margin:14px auto 0;background:linear-gradient(90deg,transparent,var(--purple),var(--cyan),transparent);box-shadow:0 0 14px var(--purple)}

.portal-sub{
  font-size:.92rem;letter-spacing:.14em;color:var(--muted);font-weight:500;
  margin:20px 0 30px;line-height:1.7;
}

.portal-meta{display:flex;align-items:center;gap:18px;margin-bottom:40px}
.meta-item{display:flex;flex-direction:column;align-items:center}
.meta-item b{font-family:var(--disp);font-size:1.15rem;color:var(--text);text-shadow:0 0 14px rgba(168,85,247,.5)}
.meta-item span{font-size:.55rem;letter-spacing:.18em;color:var(--faint);margin-top:3px}
.meta-sep{width:1px;height:26px;background:linear-gradient(transparent,var(--glass-brd-hi),transparent)}

.portal-hint{
  margin-top:26px;
  font-family:var(--mono);font-size:.55rem;letter-spacing:.22em;color:var(--faint);
  animation:hintBlink 3s ease-in-out infinite;
}

/* ENTER BUTTON */
.enter-btn{
  position:relative;overflow:hidden;
  padding:18px 44px;border-radius:18px;
  font-family:var(--disp);font-weight:700;font-size:1rem;letter-spacing:.08em;
  display:inline-flex;align-items:center;gap:12px;
  isolation:isolate;
}
.enter-btn__bg{
  position:absolute;inset:0;z-index:-2;border-radius:inherit;
  background:linear-gradient(115deg,var(--purple-deep),var(--blue));
  box-shadow:0 10px 40px rgba(124,58,237,.5),0 0 0 1px rgba(201,140,255,.5) inset;
}
.enter-btn__sheen{
  position:absolute;inset:0;z-index:-1;border-radius:inherit;
  background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.45) 50%,transparent 70%);
  background-size:250% 100%;background-position:200% 0;
  animation:sheen 3.4s var(--ease) infinite;
  mix-blend-mode:overlay;
}
.enter-btn__label{position:relative;display:flex;align-items:center;gap:12px;color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.4)}
.enter-btn__label svg{filter:drop-shadow(0 0 6px rgba(255,255,255,.7))}
.enter-btn:active{transform:scale(.95)}
.enter-btn:active .enter-btn__bg{box-shadow:0 4px 20px rgba(124,58,237,.7)}
.enter-btn::after{
  content:"";position:absolute;inset:-3px;border-radius:20px;z-index:-3;
  background:linear-gradient(115deg,var(--purple),var(--cyan));
  opacity:.5;filter:blur(14px);animation:pulseCore 3s ease-in-out infinite;
}

/* ===================================================================
   WARP TRANSITION
   =================================================================== */
#fx-warp{position:fixed;inset:0;z-index:60;pointer-events:none;visibility:hidden}
.warp-ring{
  position:absolute;top:50%;left:50%;width:20px;height:20px;border-radius:50%;
  transform:translate(-50%,-50%) scale(0);
  background:radial-gradient(circle,#fff,var(--purple-bright) 30%,var(--blue) 55%,transparent 72%);
  box-shadow:0 0 80px 20px rgba(168,85,247,.7);
}
.warp-flash{position:absolute;inset:0;background:#fff;opacity:0}
#fx-warp.fire .warp-ring{animation:warpExpand .9s var(--ease) forwards}
#fx-warp.fire .warp-flash{animation:warpFlash .9s var(--ease) forwards}
#fx-warp.fire-nav{visibility:visible}
#fx-warp.fire-nav .warp-ring{animation:warpExpand .5s var(--ease) forwards;opacity:.55}
#fx-warp.fire-nav .warp-flash{display:none}

/* ===================================================================
   TOPBAR + CURRENCY
   =================================================================== */
.topbar{display:flex;align-items:center;justify-content:space-between;padding:18px 2px 14px;animation:rise .6s var(--ease) both}
.topbar__brand{display:flex;align-items:center;gap:11px}
.brand-mark{
  width:38px;height:38px;border-radius:11px;display:grid;place-items:center;
  font-family:var(--disp);font-weight:900;font-size:.95rem;color:#fff;
  background:linear-gradient(135deg,var(--purple-deep),var(--blue));
  box-shadow:0 0 22px rgba(124,58,237,.5),inset 0 0 0 1px rgba(255,255,255,.15);
}
.brand-txt b{display:block;font-family:var(--disp);font-size:.86rem;letter-spacing:.06em;line-height:1}
.brand-txt span{font-size:.56rem;letter-spacing:.2em;color:var(--faint)}

.chip--player{
  display:flex;align-items:center;gap:9px;padding:6px 12px 6px 6px;border-radius:99px;
  background:var(--glass);border:1px solid var(--glass-brd);backdrop-filter:blur(14px);
  transition:transform .25s var(--ease),border-color .25s;
}
.chip--player:active{transform:scale(.94);border-color:var(--glass-brd-hi)}
.chip-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--cyan),var(--purple));box-shadow:0 0 0 2px rgba(168,85,247,.4) inset}
.chip-info b{display:block;font-size:.78rem;font-family:var(--disp);line-height:1}
.chip-info span{font-size:.54rem;letter-spacing:.14em;color:var(--cyan)}

.currency-bar{display:flex;gap:10px;margin-bottom:18px;animation:rise .6s .05s var(--ease) both}
.cur{
  flex:1;display:flex;align-items:center;gap:8px;padding:11px 13px;border-radius:14px;
  background:var(--glass);border:1px solid var(--glass-brd);backdrop-filter:blur(12px);
  color:var(--amber);
}
.cur:nth-child(2){color:var(--cyan)}
.cur b{font-family:var(--disp);font-size:1rem;color:var(--text)}
.cur span{font-size:.5rem;letter-spacing:.16em;color:var(--faint);margin-left:auto}

/* ===================================================================
   FEATURE BANNER
   =================================================================== */
.feature{
  position:relative;overflow:hidden;border-radius:22px;padding:24px;margin-bottom:26px;
  background:linear-gradient(125deg,rgba(124,58,237,.32),rgba(34,108,245,.18));
  border:1px solid var(--glass-brd-hi);backdrop-filter:blur(16px);
  box-shadow:0 18px 50px rgba(124,58,237,.3),inset 0 1px 0 rgba(255,255,255,.08);
  animation:rise .6s .1s var(--ease) both;transition:transform .3s var(--ease);
}
.feature:active{transform:scale(.985)}
.feature__glow{
  position:absolute;width:240px;height:240px;border-radius:50%;top:-90px;right:-60px;
  background:radial-gradient(circle,rgba(34,211,238,.45),transparent 65%);filter:blur(20px);
  animation:floatGlow 8s ease-in-out infinite;
}
.feature__tag{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:.56rem;letter-spacing:.2em;color:var(--cyan);margin-bottom:12px}
.feature__title{font-family:var(--disp);font-weight:900;font-size:1.7rem;line-height:1.04;letter-spacing:.02em;text-shadow:0 2px 20px rgba(124,58,237,.5)}
.feature__desc{font-size:.84rem;color:var(--muted);margin:9px 0 16px;max-width:80%}
.feature__cta{display:inline-flex;align-items:center;gap:7px;font-family:var(--disp);font-weight:700;font-size:.72rem;letter-spacing:.12em;color:var(--purple-bright)}
.feature__countdown{position:absolute;bottom:18px;right:22px;font-family:var(--mono);font-size:.72rem;color:var(--cyan);letter-spacing:.1em;text-shadow:0 0 10px rgba(34,211,238,.6)}

/* ===================================================================
   SECTION TITLE
   =================================================================== */
.section-title{display:flex;align-items:center;gap:12px;margin:6px 0 16px;font-family:var(--disp);font-weight:700;font-size:.78rem;letter-spacing:.2em;color:var(--muted)}
.section-title span{white-space:nowrap}
.section-title i{flex:1;height:1px;background:linear-gradient(90deg,var(--glass-brd-hi),transparent)}

/* ===================================================================
   MODULES (HUB)
   =================================================================== */
.modules{display:flex;flex-direction:column;gap:13px;perspective:900px}
.module{
  position:relative;display:flex;align-items:center;gap:15px;width:100%;text-align:left;
  padding:17px 18px;border-radius:18px;
  background:var(--glass-2);border:1px solid var(--glass-brd);backdrop-filter:blur(16px);
  box-shadow:0 12px 30px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.05);
  transform-style:preserve-3d;
  animation:floatMod 6s ease-in-out infinite;
  transition:transform .35s var(--ease),border-color .35s,box-shadow .35s;
  overflow:hidden;
}
.module:nth-child(2){animation-delay:-1.2s}
.module:nth-child(3){animation-delay:-2.4s}
.module:nth-child(4){animation-delay:-3.6s}
.module:nth-child(5){animation-delay:-4.8s}
.module:active{transform:scale(.97)}
.module:hover{border-color:color-mix(in srgb,var(--mc) 60%,transparent);box-shadow:0 16px 44px color-mix(in srgb,var(--mc) 35%,transparent),inset 0 1px 0 rgba(255,255,255,.1)}
.module__ico{
  width:48px;height:48px;border-radius:13px;display:grid;place-items:center;flex-shrink:0;
  color:var(--mc);
  background:color-mix(in srgb,var(--mc) 16%,transparent);
  box-shadow:0 0 22px color-mix(in srgb,var(--mc) 40%,transparent),inset 0 0 0 1px color-mix(in srgb,var(--mc) 35%,transparent);
  transition:transform .35s var(--ease);
}
.module:hover .module__ico{transform:translateZ(18px) scale(1.06)}
.module__txt b{display:block;font-family:var(--disp);font-size:.92rem;letter-spacing:.04em}
.module__txt span{font-size:.66rem;color:var(--muted)}
.module__arrow{margin-left:auto;font-size:1.4rem;color:var(--faint);transition:transform .35s,color .35s}
.module:hover .module__arrow{transform:translateX(4px);color:var(--mc)}
.module__bar{position:absolute;left:0;bottom:0;height:2px;width:0;background:linear-gradient(90deg,var(--mc),transparent);transition:width .5s var(--ease);box-shadow:0 0 10px var(--mc)}
.module:hover .module__bar{width:100%}
.module--cta{
  background:linear-gradient(115deg,rgba(124,58,237,.28),rgba(59,110,245,.18));
  border-color:var(--glass-brd-hi);
}

/* ticker */
.ticker{margin-top:22px;overflow:hidden;border-top:1px solid var(--glass-brd);border-bottom:1px solid var(--glass-brd);padding:11px 0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.ticker__track{display:flex;gap:30px;width:max-content;animation:ticker 26s linear infinite}
.ticker__track span{font-family:var(--mono);font-size:.64rem;letter-spacing:.12em;color:var(--muted);white-space:nowrap;display:flex;align-items:center;gap:8px}
.ticker__track b{color:var(--cyan)}

/* ===================================================================
   SCREEN HEAD / BACK
   =================================================================== */
.screen-head{display:flex;align-items:center;gap:12px;padding:18px 2px 16px;animation:rise .5s var(--ease) both}
.back,.spacer{width:40px;height:40px;flex-shrink:0}
.back{display:grid;place-items:center;border-radius:12px;background:var(--glass);border:1px solid var(--glass-brd);backdrop-filter:blur(12px);color:var(--text);transition:transform .25s var(--ease),border-color .25s}
.back:active{transform:scale(.9) translateX(-3px)}
.screen-head__t{flex:1;text-align:center}
.screen-head__t small{display:block;font-family:var(--mono);font-size:.52rem;letter-spacing:.24em;color:var(--purple-bright);margin-bottom:2px}
.screen-head__t h1{font-family:var(--disp);font-weight:900;font-size:1.55rem;letter-spacing:.06em;background:linear-gradient(180deg,#fff,var(--purple-bright));-webkit-background-clip:text;background-clip:text;color:transparent}

/* ===================================================================
   FILTER CHIPS
   =================================================================== */
.filter-chips{display:flex;gap:8px;overflow-x:auto;margin-bottom:18px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.filter-chips::-webkit-scrollbar{display:none}
.chip-filter{
  flex-shrink:0;padding:8px 16px;border-radius:99px;font-family:var(--disp);font-weight:700;font-size:.62rem;letter-spacing:.14em;
  background:var(--glass);border:1px solid var(--glass-brd);color:var(--muted);backdrop-filter:blur(12px);
  transition:all .25s var(--ease);
}
.chip-filter.is-active{background:linear-gradient(115deg,var(--purple-deep),var(--blue));color:#fff;border-color:transparent;box-shadow:0 6px 20px rgba(124,58,237,.4)}
.chip-filter:active{transform:scale(.94)}

/* ===================================================================
   WORLDS
   =================================================================== */
.world-list{display:flex;flex-direction:column;gap:18px}
.world-card{
  position:relative;overflow:hidden;border-radius:22px;height:230px;
  display:flex;flex-direction:column;justify-content:flex-end;
  border:1px solid var(--glass-brd);
  box-shadow:0 16px 44px rgba(0,0,0,.45);
  animation:worldIn .7s var(--ease) both;isolation:isolate;
  transition:transform .4s var(--ease),box-shadow .4s;
}
.world-card:nth-child(2){animation-delay:.08s}
.world-card:nth-child(3){animation-delay:.16s}
.world-card:nth-child(4){animation-delay:.24s}
.world-card:nth-child(5){animation-delay:.32s}
.world-card:nth-child(6){animation-delay:.4s}
.world-card__bg{position:absolute;inset:0;background-size:cover;background-position:center;transform:scale(1.06);transition:transform .6s var(--ease)}
.world-card:active .world-card__bg{transform:scale(1.12)}
.world-card__overlay{position:absolute;inset:0;background:linear-gradient(180deg,transparent 30%,rgba(5,3,15,.4) 55%,rgba(5,3,15,.95) 100%)}
.world-card__sheen{position:absolute;inset:0;background:linear-gradient(110deg,transparent 40%,rgba(255,255,255,.12) 50%,transparent 60%);background-size:220% 100%;opacity:0;transition:opacity .4s}
.world-card:active .world-card__sheen{opacity:1;animation:sheenOnce .9s var(--ease)}
.world-card__energy{position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,transparent,var(--wc),transparent);background-size:200% 100%;animation:energyFlow 3s linear infinite;box-shadow:0 0 14px var(--wc)}
.world-card__content{position:relative;z-index:2;padding:18px}
.world-card__top{display:flex;align-items:center;gap:8px;margin-bottom:auto;padding-top:16px;padding-left:18px;padding-right:18px;position:relative;z-index:2}
.wc-status{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:.54rem;letter-spacing:.16em;padding:5px 10px;border-radius:99px;background:rgba(52,211,153,.16);border:1px solid rgba(52,211,153,.4);color:var(--green)}
.wc-status.off{background:rgba(141,135,184,.12);border-color:rgba(141,135,184,.3);color:var(--muted)}
.wc-status .live-dot{background:var(--green)}
.wc-status.off .live-dot{background:var(--faint);animation:none}
.wc-count{margin-left:auto;display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:.66rem;color:var(--text);background:rgba(5,3,15,.55);padding:5px 10px;border-radius:99px;backdrop-filter:blur(8px);border:1px solid var(--glass-brd)}
.wc-count b{color:var(--cyan)}
.world-card__title{font-family:var(--disp);font-weight:900;font-size:1.5rem;letter-spacing:.04em;text-shadow:0 3px 20px rgba(0,0,0,.6);line-height:1}
.world-card__desc{font-size:.74rem;color:var(--muted);margin:6px 0 14px}
.world-card__tags{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:14px}
.world-card__tags span{font-family:var(--mono);font-size:.5rem;letter-spacing:.1em;padding:3px 8px;border-radius:6px;background:var(--glass-2);border:1px solid var(--glass-brd);color:var(--muted)}
.wc-play{
  display:flex;align-items:center;justify-content:center;gap:9px;width:100%;padding:13px;border-radius:13px;
  font-family:var(--disp);font-weight:700;font-size:.78rem;letter-spacing:.14em;color:#fff;
  background:linear-gradient(115deg,var(--wc),color-mix(in srgb,var(--wc) 50%,#000));
  box-shadow:0 8px 24px color-mix(in srgb,var(--wc) 45%,transparent),inset 0 1px 0 rgba(255,255,255,.2);
  transition:transform .2s var(--ease);
}
.wc-play:active{transform:scale(.96)}

.world-card[data-world="survival"] .world-card__bg{background-image:linear-gradient(135deg,rgba(124,58,237,.4),rgba(5,3,15,.2)),url('../assets/world-survival.jpg')}
.world-card[data-world="skyblock"] .world-card__bg{background-image:linear-gradient(135deg,rgba(34,211,238,.4),rgba(5,3,15,.2)),url('../assets/world-skyblock.jpg')}
.world-card[data-world="bedwars"] .world-card__bg{background-image:linear-gradient(135deg,rgba(255,77,109,.4),rgba(5,3,15,.2)),url('../assets/world-bedwars.jpg')}
.world-card[data-world="pvp"] .world-card__bg{background-image:linear-gradient(135deg,rgba(245,166,35,.4),rgba(5,3,15,.2)),url('../assets/world-pvp.jpg')}
.world-card[data-world="creative"] .world-card__bg{background-image:linear-gradient(135deg,rgba(52,211,153,.4),rgba(5,3,15,.2)),url('../assets/world-creative.jpg')}
.world-card[data-world="factions"] .world-card__bg{background-image:linear-gradient(135deg,rgba(59,110,245,.4),rgba(5,3,15,.2)),url('../assets/world-bedwars.jpg')}

/* ===================================================================
   EVENTS
   =================================================================== */
.event-feature{position:relative;overflow:hidden;border-radius:24px;border:1px solid var(--glass-brd-hi);margin-bottom:26px;box-shadow:0 18px 50px rgba(124,58,237,.28);animation:rise .6s var(--ease) both}
.event-feature__bg{position:absolute;inset:0;background:linear-gradient(140deg,rgba(124,58,237,.5),rgba(34,108,245,.25) 50%,rgba(5,3,15,.7));}
.event-feature__bg::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 80% 0%,rgba(34,211,238,.5),transparent 50%);animation:floatGlow 7s ease-in-out infinite}
.event-feature__bg::after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px);background-size:100% 22px;opacity:.5}
.event-feature__body{position:relative;padding:24px}
.event-feature__tag{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:.56rem;letter-spacing:.2em;color:var(--red);margin-bottom:12px;background:rgba(255,77,109,.14);padding:5px 11px;border-radius:99px;border:1px solid rgba(255,77,109,.4)}
.event-feature h2{font-family:var(--disp);font-weight:900;font-size:1.85rem;line-height:1;letter-spacing:.02em;text-shadow:0 2px 24px rgba(124,58,237,.6)}
.event-feature p{font-size:.82rem;color:var(--muted);margin:10px 0 18px}

.countdown{display:flex;align-items:center;gap:6px;margin-bottom:20px}
.cd-unit{flex:1;background:rgba(5,3,15,.5);border:1px solid var(--glass-brd);border-radius:13px;padding:11px 4px;text-align:center;backdrop-filter:blur(10px)}
.cd-unit b{display:block;font-family:var(--disp);font-weight:900;font-size:1.5rem;line-height:1;color:var(--text);text-shadow:0 0 18px rgba(168,85,247,.6)}
.cd-unit span{font-size:.46rem;letter-spacing:.16em;color:var(--faint);display:block;margin-top:5px}
.cd-sep{font-family:var(--disp);font-weight:900;color:var(--purple);font-size:1.2rem;opacity:.5}
.cd-unit b.bump{animation:cdBump .4s var(--ease)}

.btn-primary{
  display:flex;align-items:center;justify-content:center;gap:9px;width:100%;padding:15px;border-radius:14px;
  font-family:var(--disp);font-weight:700;font-size:.82rem;letter-spacing:.14em;color:#fff;
  background:linear-gradient(115deg,var(--purple-deep),var(--blue));
  box-shadow:0 10px 30px rgba(124,58,237,.45),inset 0 1px 0 rgba(255,255,255,.2);
  transition:transform .2s var(--ease),box-shadow .2s;position:relative;overflow:hidden;
}
.btn-primary::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 40%,rgba(255,255,255,.3) 50%,transparent 60%);background-size:220% 100%;background-position:200%;transition:background-position .6s}
.btn-primary:active{transform:scale(.96)}
.btn-primary:hover::after{background-position:-100%}
.btn-primary--lg{padding:17px;font-size:.88rem;box-shadow:0 12px 38px rgba(124,58,237,.55)}

.live-strip{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:.58rem;letter-spacing:.2em;color:var(--red);margin-bottom:14px}
.event-list{display:flex;flex-direction:column;gap:13px}
.event-item{display:flex;align-items:center;gap:14px;padding:15px;border-radius:16px;background:var(--glass-2);border:1px solid var(--glass-brd);backdrop-filter:blur(14px);animation:rise .5s var(--ease) both;transition:transform .25s var(--ease),border-color .25s}
.event-item:active{transform:scale(.97)}
.event-item__icon{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;font-size:1.3rem;flex-shrink:0;background:color-mix(in srgb,var(--ec) 16%,transparent);color:var(--ec);box-shadow:0 0 18px color-mix(in srgb,var(--ec) 35%,transparent)}
.event-item__body{flex:1;min-width:0}
.event-item__body b{display:block;font-family:var(--disp);font-size:.88rem}
.event-item__body span{font-size:.66rem;color:var(--muted)}
.event-item__right{text-align:right;flex-shrink:0}
.event-item__live{font-family:var(--mono);font-size:.5rem;letter-spacing:.14em;color:var(--green);display:flex;align-items:center;gap:5px;justify-content:flex-end}
.event-item__live.later{color:var(--amber)}
.event-item__players{font-family:var(--disp);font-size:.78rem;color:var(--cyan);margin-top:3px}

/* ===================================================================
   STORE
   =================================================================== */
.balance-card{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;padding:20px;border-radius:20px;margin-bottom:16px;background:linear-gradient(120deg,rgba(245,166,35,.18),rgba(124,58,237,.14));border:1px solid var(--glass-brd-hi);backdrop-filter:blur(16px);animation:rise .5s var(--ease) both}
.balance-card__glow{position:absolute;width:200px;height:200px;border-radius:50%;top:-80px;left:-40px;background:radial-gradient(circle,rgba(245,166,35,.4),transparent 65%);filter:blur(20px);animation:floatGlow 8s ease-in-out infinite}
.balance-card small{font-family:var(--mono);font-size:.54rem;letter-spacing:.18em;color:var(--muted);display:block;margin-bottom:4px}
.balance-card b{font-family:var(--disp);font-size:1.7rem;color:var(--amber);text-shadow:0 0 18px rgba(245,166,35,.5)}
.balance-card b i{font-size:.8rem;color:var(--muted);font-style:normal;letter-spacing:.1em;margin-left:4px}
.btn-mini{padding:9px 16px;border-radius:10px;font-family:var(--disp);font-weight:700;font-size:.64rem;letter-spacing:.12em;color:var(--bg);background:linear-gradient(115deg,var(--amber),#ffd166);box-shadow:0 6px 18px rgba(245,166,35,.4);transition:transform .2s var(--ease)}
.btn-mini:active{transform:scale(.93)}

.bundle{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px;border-radius:18px;margin-bottom:26px;background:linear-gradient(120deg,rgba(124,58,237,.32),rgba(34,211,238,.18));border:1px solid var(--glass-brd-hi);backdrop-filter:blur(16px);box-shadow:0 14px 40px rgba(124,58,237,.3);animation:rise .5s .05s var(--ease) both}
.bundle__badge{position:absolute;top:-1px;right:14px;font-family:var(--mono);font-size:.5rem;letter-spacing:.14em;padding:5px 11px;border-radius:0 0 9px 9px;background:var(--amber);color:var(--bg);font-weight:700}
.bundle__txt b{display:block;font-family:var(--disp);font-size:.95rem}
.bundle__txt span{font-size:.66rem;color:var(--muted)}
.bundle__price{text-align:right;flex-shrink:0}
.bundle__price s{display:block;font-size:.74rem;color:var(--faint);text-decoration:line-through}
.bundle__price b{font-family:var(--disp);font-size:1.5rem;color:var(--cyan);text-shadow:0 0 14px rgba(34,211,238,.5)}

.rank-grid{display:flex;flex-direction:column;gap:14px}
.rank-card{position:relative;overflow:hidden;padding:18px;border-radius:18px;background:var(--glass-2);border:1px solid var(--glass-brd);backdrop-filter:blur(16px);animation:rise .5s var(--ease) both;transition:transform .3s var(--ease),border-color .3s,box-shadow .3s}
.rank-card:active{transform:scale(.97)}
.rank-card.feat{background:linear-gradient(130deg,rgba(124,58,237,.26),rgba(59,110,245,.16));border-color:var(--glass-brd-hi);box-shadow:0 14px 40px rgba(124,58,237,.3)}
.rank-card__top{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}
.rank-card__name{display:flex;align-items:center;gap:11px}
.rank-card__gem{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;font-family:var(--disp);font-weight:900;font-size:1.2rem;color:#fff;background:linear-gradient(135deg,var(--rc),color-mix(in srgb,var(--rc) 50%,#000));box-shadow:0 0 22px color-mix(in srgb,var(--rc) 50%,transparent),inset 0 1px 0 rgba(255,255,255,.25)}
.rank-card__tier b{display:block;font-family:var(--disp);font-size:1.05rem;letter-spacing:.04em}
.rank-card__tier span{font-size:.6rem;letter-spacing:.12em;color:var(--muted)}
.rank-card__price{text-align:right}
.rank-card__price b{font-family:var(--disp);font-size:1.35rem;color:var(--rc)}
.rank-card__price span{display:block;font-size:.58rem;color:var(--faint);text-decoration:line-through}
.rank-card__perks{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:15px}
.rank-card__perks span{font-size:.62rem;color:var(--muted);padding:4px 9px;border-radius:7px;background:var(--glass);border:1px solid var(--glass-brd)}
.rank-card__cta{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:12px;border-radius:12px;font-family:var(--disp);font-weight:700;font-size:.72rem;letter-spacing:.12em;color:#fff;background:linear-gradient(115deg,var(--rc),color-mix(in srgb,var(--rc) 50%,#000));box-shadow:0 8px 22px color-mix(in srgb,var(--rc) 45%,transparent),inset 0 1px 0 rgba(255,255,255,.2);transition:transform .2s var(--ease)}
.rank-card__cta:active{transform:scale(.96)}
.rank-card__tag{position:absolute;top:14px;left:18px;font-family:var(--mono);font-size:.46rem;letter-spacing:.12em;padding:3px 8px;border-radius:6px;background:var(--amber);color:var(--bg);font-weight:700}

/* ===================================================================
   PROFILE
   =================================================================== */
.profile-card{position:relative;overflow:hidden;display:flex;gap:16px;padding:22px;border-radius:22px;background:linear-gradient(130deg,rgba(124,58,237,.26),rgba(59,110,245,.14));border:1px solid var(--glass-brd-hi);backdrop-filter:blur(16px);box-shadow:0 16px 46px rgba(124,58,237,.28);margin-bottom:8px;animation:rise .55s var(--ease) both}
.profile-card__glow{position:absolute;width:240px;height:240px;border-radius:50%;top:-100px;right:-60px;background:radial-gradient(circle,rgba(34,211,238,.4),transparent 65%);filter:blur(20px);animation:floatGlow 8s ease-in-out infinite}
.profile-avatar{position:relative;width:74px;height:74px;border-radius:18px;display:grid;place-items:center;flex-shrink:0;background:linear-gradient(135deg,var(--purple-deep),var(--cyan));box-shadow:0 0 28px rgba(124,58,237,.5),inset 0 1px 0 rgba(255,255,255,.2)}
.profile-avatar span{font-family:var(--disp);font-weight:900;font-size:1.9rem;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.4)}
.profile-ring{position:absolute;inset:-4px;border-radius:22px;border:1.5px solid transparent;border-top-color:var(--cyan);border-right-color:var(--purple);animation:spin 6s linear infinite;box-shadow:0 0 16px rgba(34,211,238,.4)}
.profile-id{flex:1;min-width:0;position:relative}
.profile-name{font-family:var(--disp);font-weight:900;font-size:1.2rem;letter-spacing:.03em;text-shadow:0 2px 14px rgba(124,58,237,.4)}
.profile-rank{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:.56rem;letter-spacing:.14em;color:var(--cyan);margin:4px 0 14px}
.rank-gem{width:10px;height:10px;border-radius:3px;transform:rotate(45deg);background:var(--cyan);box-shadow:0 0 10px var(--cyan)}
.xp__head{display:flex;justify-content:space-between;font-family:var(--mono);font-size:.56rem;color:var(--muted);margin-bottom:6px}
.xp__head span:first-child{color:var(--purple-bright);font-weight:700}
.xp__bar{height:9px;border-radius:99px;background:rgba(5,3,15,.6);overflow:hidden;border:1px solid var(--glass-brd);box-shadow:inset 0 1px 3px rgba(0,0,0,.4)}
.xp__bar i{display:block;height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,var(--purple),var(--cyan));box-shadow:0 0 12px var(--purple);position:relative;transition:width 1.6s var(--ease-out)}
.xp__bar i::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent);background-size:200% 100%;animation:sheen 2s linear infinite}
.xp__foot{font-family:var(--mono);font-size:.52rem;color:var(--faint);margin-top:6px}

.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px}
.stat{padding:16px;border-radius:16px;background:var(--glass-2);border:1px solid var(--glass-brd);backdrop-filter:blur(14px);text-align:center;animation:rise .5s var(--ease) both}
.stat:nth-child(2){animation-delay:.06s}.stat:nth-child(3){animation-delay:.12s}.stat:nth-child(4){animation-delay:.18s}
.stat-no{display:block;font-family:var(--disp);font-weight:900;font-size:1.7rem;background:linear-gradient(180deg,#fff,var(--purple-bright));-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 20px rgba(168,85,247,.3)}
.stat span{font-size:.54rem;letter-spacing:.14em;color:var(--muted);display:block;margin-top:5px}

.achievement-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.ach{position:relative;padding:16px 8px;border-radius:14px;text-align:center;background:var(--glass);border:1px solid var(--glass-brd);backdrop-filter:blur(12px);animation:rise .5s var(--ease) both;filter:saturate(.3) brightness(.7);transition:filter .4s,transform .3s var(--ease)}
.ach:nth-child(2){animation-delay:.05s}.ach:nth-child(3){animation-delay:.1s}.ach:nth-child(4){animation-delay:.15s}.ach:nth-child(5){animation-delay:.2s}.ach:nth-child(6){animation-delay:.25s}
.ach--on{filter:none;border-color:var(--glass-brd-hi);box-shadow:0 0 22px rgba(168,85,247,.2)}
.ach:active{transform:scale(.93)}
.ach__ico{font-size:1.6rem;color:var(--purple-bright);margin-bottom:6px;text-shadow:0 0 14px rgba(168,85,247,.6);line-height:1}
.ach--on .ach__ico{color:var(--cyan)}
.ach b{display:block;font-family:var(--disp);font-size:.58rem;letter-spacing:.04em;line-height:1.1}
.ach span{font-size:.5rem;color:var(--faint);display:block;margin-top:3px}
.ach--on::after{content:"";position:absolute;top:8px;right:8px;width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green)}

/* ===================================================================
   JOIN
   =================================================================== */
.connect-card{position:relative;overflow:hidden;padding:24px;border-radius:22px;background:linear-gradient(135deg,rgba(124,58,237,.26),rgba(59,110,245,.14));border:1px solid var(--glass-brd-hi);backdrop-filter:blur(16px);box-shadow:0 16px 46px rgba(124,58,237,.28);margin-bottom:26px;animation:rise .55s var(--ease) both}
.connect-card__glow{position:absolute;width:240px;height:240px;border-radius:50%;top:-90px;left:-50px;background:radial-gradient(circle,rgba(124,58,237,.45),transparent 65%);filter:blur(20px);animation:floatGlow 8s ease-in-out infinite}
.connect-label{font-family:var(--mono);font-size:.54rem;letter-spacing:.2em;color:var(--muted)}
.connect-addr{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 0 18px;padding:14px 16px;border-radius:14px;background:rgba(5,3,15,.55);border:1px dashed var(--glass-brd-hi);backdrop-filter:blur(8px)}
.connect-addr b{font-family:var(--mono);font-size:1.05rem;color:var(--cyan);text-shadow:0 0 14px rgba(34,211,238,.5);letter-spacing:.02em}
.copy-btn{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;color:var(--purple-bright);background:var(--glass);border:1px solid var(--glass-brd);transition:transform .2s var(--ease),background .2s}
.copy-btn:active{transform:scale(.88)}
.copy-btn.copied{background:var(--green);color:var(--bg)}
.connect-meta{display:flex;gap:10px;margin-bottom:20px}
.connect-meta>div{flex:1;text-align:center;padding:12px 4px;border-radius:12px;background:rgba(5,3,15,.4);border:1px solid var(--glass-brd)}
.connect-meta b{display:block;font-family:var(--disp);font-size:.95rem;color:var(--text)}
.connect-meta span{font-size:.48rem;letter-spacing:.14em;color:var(--faint);display:block;margin-top:4px}
.ping-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green);margin-right:4px;vertical-align:middle;animation:pulseDot 1.4s ease-in-out infinite}
.connect-note{display:block;text-align:center;font-size:.62rem;color:var(--faint);margin-top:12px}

.steps{display:flex;flex-direction:column;gap:11px}
.step{display:flex;align-items:center;gap:14px;padding:14px;border-radius:14px;background:var(--glass-2);border:1px solid var(--glass-brd);backdrop-filter:blur(12px);animation:rise .5s var(--ease) both}
.step:nth-child(2){animation-delay:.06s}.step:nth-child(3){animation-delay:.12s}.step:nth-child(4){animation-delay:.18s}
.step__no{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;font-family:var(--disp);font-weight:900;color:#fff;background:linear-gradient(135deg,var(--purple-deep),var(--blue));box-shadow:0 0 16px rgba(124,58,237,.4)}
.step b{display:block;font-family:var(--disp);font-size:.84rem}
.step span{font-size:.66rem;color:var(--muted)}

/* ===================================================================
   DOCK
   =================================================================== */
#dock{
  position:fixed;left:50%;bottom:0;transform:translateX(-50%);
  z-index:40;width:100%;max-width:var(--maxw);
  display:flex;align-items:flex-end;justify-content:space-around;
  padding:10px 14px calc(var(--safe-b) + 10px);
  background:linear-gradient(180deg,transparent,rgba(5,3,15,.6) 30%,rgba(5,3,15,.85));
  backdrop-filter:blur(20px) saturate(1.3);
  border-top:1px solid var(--glass-brd);
  transition:transform .5s var(--ease),opacity .5s;
  box-shadow:0 -10px 40px rgba(0,0,0,.4);
}
body[data-screen="portal"] #dock{transform:translateX(-50%) translateY(120%);opacity:0;pointer-events:none}
.dock-btn{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 4px;color:var(--faint);transition:color .3s var(--ease);flex:1}
.dock-btn span{font-family:var(--disp);font-weight:700;font-size:.5rem;letter-spacing:.1em}
.dock-btn svg{transition:transform .3s var(--ease),filter .3s}
.dock-btn.is-active{color:var(--purple-bright)}
.dock-btn.is-active svg{transform:translateY(-3px);filter:drop-shadow(0 0 8px rgba(168,85,247,.8))}
.dock-btn:active svg{transform:scale(.82)}
.dock-ind{position:absolute;top:-1px;left:50%;transform:translateX(-50%) scaleX(0);width:24px;height:2px;border-radius:99px;background:linear-gradient(90deg,var(--purple),var(--cyan));box-shadow:0 0 8px var(--purple);transition:transform .35s var(--ease)}
.dock-btn.is-active .dock-ind{transform:translateX(-50%) scaleX(1)}
.dock-btn--center{flex:.85}
.dock-fab{
  width:52px;height:52px;border-radius:16px;display:grid;place-items:center;margin-top:-22px;color:#fff;
  background:linear-gradient(135deg,var(--purple-deep),var(--blue));
  box-shadow:0 8px 24px rgba(124,58,237,.6),inset 0 1px 0 rgba(255,255,255,.25);
  transition:transform .3s var(--ease);position:relative;
}
.dock-fab::before{content:"";position:absolute;inset:-6px;border-radius:20px;background:linear-gradient(135deg,var(--purple),var(--cyan));opacity:.4;filter:blur(12px);z-index:-1;animation:pulseCore 3s ease-in-out infinite}
.dock-btn--center:active .dock-fab{transform:scale(.9) translateY(2px)}

/* ===================================================================
   TOAST
   =================================================================== */
#toast{
  position:fixed;left:50%;bottom:calc(var(--dock-h) + var(--safe-b) + 18px);
  transform:translateX(-50%) translateY(20px);z-index:55;
  padding:13px 22px;border-radius:14px;max-width:90%;text-align:center;
  font-family:var(--disp);font-weight:700;font-size:.74rem;letter-spacing:.06em;color:#fff;
  background:linear-gradient(115deg,rgba(124,58,237,.9),rgba(59,110,245,.85));
  border:1px solid var(--glass-brd-hi);backdrop-filter:blur(16px);
  box-shadow:0 12px 34px rgba(124,58,237,.5);
  opacity:0;visibility:hidden;transition:opacity .4s var(--ease),transform .4s var(--ease);
}
#toast.show{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}

/* ===================================================================
   LIVE DOT (shared)
   =================================================================== */
.live-dot{width:7px;height:7px;border-radius:50%;background:var(--cyan);box-shadow:0 0 8px var(--cyan);animation:pulseDot 1.5s ease-in-out infinite;flex-shrink:0}
.live-dot--hot{background:var(--red);box-shadow:0 0 8px var(--red)}

/* ===================================================================
   RIPPLE / TAP FX
   =================================================================== */
.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.35);transform:scale(0);animation:ripple .6s var(--ease) forwards;pointer-events:none}

/* ===================================================================
   KEYFRAMES
   =================================================================== */
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes load{to{width:100%}}
@keyframes blink{33%{opacity:.3}66%{opacity:1}}
@keyframes aurora{
  0%{transform:translate(0,0) rotate(0deg) scale(1)}
  50%{transform:translate(4%,-3%) rotate(8deg) scale(1.1)}
  100%{transform:translate(-3%,4%) rotate(-6deg) scale(1.05)}
}
@keyframes gridDrift{to{background-position:46px 46px}}
@keyframes pulseCore{0%,100%{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}
@keyframes portalIn{0%{opacity:0;transform:translateY(30px) scale(.92);filter:blur(8px)}100%{opacity:1;transform:none;filter:blur(0)}}
@keyframes logoFlicker{0%,93%,100%{opacity:1}94%{opacity:.4}95%{opacity:1}96%{opacity:.6}97%{opacity:1}}
@keyframes hintBlink{0%,100%{opacity:.4}50%{opacity:1}}
@keyframes sheen{0%{background-position:200% 0}100%{background-position:-120% 0}}
@keyframes sheenOnce{0%{background-position:200% 0}100%{background-position:-120% 0}}
@keyframes floatMod{0%,100%{transform:translateY(0) rotateX(0deg)}50%{transform:translateY(-6px) rotateX(2deg)}}
@keyframes floatGlow{0%,100%{transform:translate(0,0)}50%{transform:translate(-12px,14px)}}
@keyframes energyFlow{0%{background-position:200% 0}100%{background-position:-200% 0}}
@keyframes rise{0%{opacity:0;transform:translateY(22px)}100%{opacity:1;transform:none}}
@keyframes worldIn{0%{opacity:0;transform:translateY(40px) scale(.95)}100%{opacity:1;transform:none}}
@keyframes ticker{to{transform:translateX(-50%)}}
@keyframes cdBump{0%{transform:scale(1);color:var(--text)}40%{transform:scale(1.25);color:var(--cyan)}100%{transform:scale(1);color:var(--text)}}
@keyframes pulseDot{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}
@keyframes warpExpand{0%{transform:translate(-50%,-50%) scale(0);opacity:0}30%{opacity:1}100%{transform:translate(-50%,-50%) scale(40);opacity:0}}
@keyframes warpFlash{0%,100%{opacity:0}45%{opacity:0}55%{opacity:.85}70%{opacity:0}}
@keyframes ripple{to{transform:scale(4);opacity:0}}

/* ===================================================================
   DESKTOP ENHANCEMENTS
   =================================================================== */
@media(min-width:640px){
  :root{--maxw:560px}
  .module:hover{transform:translateY(-4px) translateZ(0)}
  .world-card:hover{transform:translateY(-4px);box-shadow:0 24px 60px rgba(0,0,0,.55)}
  .world-card:hover .world-card__bg{transform:scale(1.12)}
  .world-card:hover .world-card__sheen{opacity:1;animation:sheenOnce .9s var(--ease)}
  .rank-card:hover{transform:translateY(-4px);border-color:var(--glass-brd-hi)}
  .event-item:hover{transform:translateX(4px);border-color:var(--glass-brd-hi)}
  .enter-btn:hover{transform:translateY(-2px)}
  .enter-btn:hover .enter-btn__bg{box-shadow:0 16px 56px rgba(124,58,237,.7)}
}
@media(min-width:900px){
  .screen-scroll{max-width:600px}
}

/* reduced motion safety */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.1ms!important}
}
