/* =========================================================================
   RETRO 3.0 — REDUX COIN
   Every word on this page is pure white. Hierarchy comes from size, weight and
   glow — never from grey. Colour lives only in fills: the REDUX green and the
   four achievement tiers.
   ========================================================================= */

.rdxpage{--rx:#02f88d;--rxd:rgba(2,248,141,.5)}
.rdxpage *{color:#fff}

/* tier fills — used on stripes, bars, chips and glows only */
.rx{--t:#ffffff;--t2:rgba(255,255,255,.42)}
.rx.common{--t:#ffffff;--t2:rgba(255,255,255,.40)}
.rx.rare  {--t:#63a2ff;--t2:rgba(99,162,255,.42)}
.rx.epic  {--t:#c06bff;--t2:rgba(192,107,255,.42)}
.rx.legend{--t:#02f88d;--t2:rgba(2,248,141,.42)}

/* =====================================================================
   THE VAULT — page header
   ===================================================================== */
.vault{position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.16);margin-bottom:24px;
  background:#040405}
/* hex-ish lattice, drifting */
.vault .grid{position:absolute;inset:-40px;pointer-events:none;opacity:.5;
  background:
    repeating-linear-gradient(60deg,rgba(2,248,141,.10) 0 1px,transparent 1px 26px),
    repeating-linear-gradient(-60deg,rgba(2,248,141,.10) 0 1px,transparent 1px 26px),
    repeating-linear-gradient(0deg,rgba(255,255,255,.045) 0 1px,transparent 1px 26px);
  animation:vdrift 26s linear infinite}
@keyframes vdrift{to{transform:translate(26px,45px)}}
.vault .glow{position:absolute;left:-6%;top:-140%;width:52%;height:380%;pointer-events:none;
  background:radial-gradient(ellipse at center,rgba(2,248,141,.20),transparent 64%)}
.vault .scan{position:absolute;left:0;right:0;top:0;height:1px;pointer-events:none;
  background:linear-gradient(90deg,transparent,var(--rx),transparent);
  box-shadow:0 0 18px var(--rx);animation:vscan 5.5s cubic-bezier(.6,0,.4,1) infinite}
@keyframes vscan{0%{top:0;opacity:0}12%{opacity:1}88%{opacity:1}100%{top:100%;opacity:0}}

.vault-in{position:relative;z-index:3;display:flex;align-items:center;gap:clamp(22px,4vw,54px);
  padding:clamp(26px,3.4vw,40px) clamp(22px,3vw,38px);flex-wrap:wrap}

.vw{flex:1;min-width:270px}
.vw-eb{display:flex;align-items:center;gap:11px;font-family:var(--fm);font-size:9.5px;letter-spacing:.3em;
  text-transform:uppercase;margin-bottom:20px;opacity:.85}
.vw-eb i{width:5px;height:5px;background:var(--rx);box-shadow:0 0 12px var(--rx);animation:bl 2.4s infinite}

.vbal{display:flex;align-items:center;gap:clamp(14px,2vw,22px)}
.vmark{width:clamp(56px,6.4vw,82px);flex:0 0 auto;
  filter:drop-shadow(0 0 22px rgba(2,248,141,.55));animation:vfloat 5s ease-in-out infinite}
@keyframes vfloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
.vnum{font-family:var(--fm);font-weight:700;font-size:clamp(42px,6.4vw,80px);line-height:.9;
  letter-spacing:-.05em;text-shadow:0 0 54px rgba(255,255,255,.4)}
.vunit{font-family:var(--fm);font-size:10.5px;letter-spacing:.36em;text-transform:uppercase;margin-top:13px;
  opacity:.8}

.vstats{display:flex;flex-wrap:wrap;margin-top:26px;border-top:1px solid rgba(255,255,255,.14)}
.vst{padding:17px 24px 0 0;margin-right:24px;border-right:1px solid rgba(255,255,255,.12)}
.vst:last-child{border-right:0;margin-right:0}
.vst b{display:block;font-family:var(--fm);font-weight:700;font-size:20px;letter-spacing:-.01em;
  text-shadow:0 0 20px rgba(255,255,255,.28)}
.vst span{display:block;margin-top:7px;font-family:var(--fm);font-size:8.5px;letter-spacing:.26em;
  text-transform:uppercase;opacity:.62}

/* 12-cell completion map — one square per achievement */
.vmap{flex:0 0 auto;display:grid;grid-template-columns:repeat(4,1fr);gap:6px;width:clamp(148px,15vw,196px)}
.vcell{position:relative;aspect-ratio:1;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.03);
  transition:background .4s,border-color .4s,box-shadow .4s}
.vcell.on{background:var(--t);border-color:var(--t);box-shadow:0 0 18px var(--t2)}
.vcell.on::after{content:'';position:absolute;inset:3px;border:1px solid rgba(0,0,0,.35)}
.vmap-l{width:100%;margin-top:12px;font-family:var(--fm);font-size:8.5px;letter-spacing:.24em;
  text-transform:uppercase;text-align:right;opacity:.62}

/* =====================================================================
   ACHIEVEMENTS
   ===================================================================== */
.abar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.aseg{display:inline-flex;border:1px solid rgba(255,255,255,.18)}
.aseg button{height:38px;padding:0 17px;background:none;border:0;border-right:1px solid rgba(255,255,255,.14);
  font-family:var(--fm);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;cursor:pointer;
  opacity:.62;transition:.18s}
.aseg button:last-child{border-right:0}
.aseg button:hover{opacity:1}
.aseg button.on{background:#fff;opacity:1}
.aseg button.on{color:#000}
.abar .hint{font-family:var(--fm);font-size:10.5px;letter-spacing:.1em;opacity:.62}

.agrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:32px}
@media(max-width:960px){.agrid{grid-template-columns:1fr}}

.ach{position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.13);padding:22px 24px 22px 28px;
  background:linear-gradient(170deg,rgba(255,255,255,.035),transparent 52%);
  transition:border-color .26s,transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s;
  animation:achin .45s cubic-bezier(.2,.7,.2,1) backwards}
@keyframes achin{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.ach::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--t2);transition:.26s}
.ach .wm{position:absolute;right:14px;bottom:-16px;font-family:var(--fd);font-weight:800;font-size:76px;
  line-height:1;letter-spacing:-.06em;color:#fff;opacity:.045;pointer-events:none}
.ach:hover{transform:translateY(-4px);border-color:rgba(255,255,255,.3);
  box-shadow:0 22px 52px rgba(0,0,0,.85)}
.ach:hover::before{background:var(--t);box-shadow:0 0 18px var(--t2)}

.ach.got{border-color:var(--t2);
  background:linear-gradient(115deg,color-mix(in srgb,var(--t) 12%,transparent),transparent 56%)}
.ach.got::before{background:var(--t);box-shadow:0 0 20px var(--t2)}
/* a slow shine that only unlocked cards get */
.ach.got .shine{position:absolute;top:0;bottom:0;width:38%;pointer-events:none;
  background:linear-gradient(105deg,transparent,rgba(255,255,255,.13),transparent);
  animation:ashine 4.6s ease-in-out infinite}
@keyframes ashine{0%{left:-45%}55%,100%{left:115%}}

.ach-h{position:relative;z-index:2;display:flex;align-items:flex-start;gap:16px}
.ach-t{flex:1;min-width:0}
.ach-t h3{font-family:var(--fd);font-weight:700;font-size:17px;letter-spacing:-.015em;
  text-shadow:0 0 24px rgba(255,255,255,.22)}
.ach-t p{margin-top:8px;font-size:12.5px;line-height:1.6;opacity:.82}
.ach-r{flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 12px;
  border:1px solid var(--t2);font-family:var(--fm);font-size:12.5px;font-weight:700}
.ach-r img{width:15px;height:15px;object-fit:contain;
  filter:drop-shadow(0 0 6px rgba(2,248,141,.7))}
.ach.got .ach-r{background:var(--t);border-color:var(--t);box-shadow:0 0 22px var(--t2)}
.ach.got .ach-r,.ach.got .ach-r *{color:#04060a}
/* the mark is REDUX green; on a coloured plate it has to go dark like the text */
.ach.got .ach-r img{filter:brightness(0)}

/* segmented progress bar */
.ach-p{position:relative;z-index:2;margin-top:20px}
.ach-bar{position:relative;height:9px;background:rgba(255,255,255,.09);overflow:hidden;
  -webkit-mask-image:repeating-linear-gradient(90deg,#000 0 7px,transparent 7px 9px);
          mask-image:repeating-linear-gradient(90deg,#000 0 7px,transparent 7px 9px)}
.ach-fill{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--t);
  box-shadow:0 0 16px var(--t2);transition:width 1s cubic-bezier(.2,.7,.2,1)}
.ach-n{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin-top:11px}
.ach-n .cur{font-family:var(--fm);font-size:13px;font-weight:700}
.ach-n .cur em{font-style:normal;font-weight:400;opacity:.6}
.ach-n .nx{font-weight:400;font-size:10px;letter-spacing:.2em;text-transform:uppercase;opacity:.55}
.ach-seal{position:relative;z-index:2;display:inline-flex;align-items:center;gap:8px;margin-top:14px;
  font-family:var(--fm);font-size:8.5px;letter-spacing:.26em;text-transform:uppercase}
.ach-seal svg{width:13px;height:13px}

/* =====================================================================
   STORE
   ===================================================================== */
.sgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(266px,1fr));gap:12px}
.sk{position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.13);padding:26px 24px 24px;
  display:flex;flex-direction:column;
  background:linear-gradient(172deg,rgba(255,255,255,.04),transparent 50%);transition:.28s}
.sk::before{content:'';position:absolute;left:0;right:0;top:0;height:1px;background:rgba(255,255,255,.2);transition:.28s}
.sk .bgmark{position:absolute;right:-26px;bottom:-26px;width:150px;opacity:.05;pointer-events:none;
  transition:opacity .3s,transform .4s}
.sk:hover{border-color:rgba(255,255,255,.32);transform:translateY(-6px);
  box-shadow:0 26px 60px rgba(0,0,0,.88),0 0 34px rgba(2,248,141,.12)}
.sk:hover::before{background:var(--rx);box-shadow:0 0 18px var(--rx)}
.sk:hover .bgmark{opacity:.13;transform:translate(-6px,-6px) rotate(-6deg)}
.sk.hot{border-color:rgba(2,248,141,.4)}
.sk.hot::before{background:var(--rx);box-shadow:0 0 16px var(--rx)}

.sk-n{position:relative;z-index:2;font-family:var(--fd);font-weight:700;font-size:18.5px;letter-spacing:-.015em}
.sk-b{position:relative;z-index:2;margin-top:12px;font-size:12.5px;line-height:1.6;flex:1;opacity:.86}
.sk-tag{position:absolute;right:0;top:0;z-index:3;font-family:var(--fm);font-size:8px;font-weight:700;
  letter-spacing:.2em;text-transform:uppercase;background:var(--rx);padding:6px 11px}
.sk-tag,.sk-tag *{color:#04060a}
.sk-warn{position:relative;z-index:2;margin-top:12px;font-size:11.5px;line-height:1.5;opacity:.9;
  border-left:2px solid var(--rx);padding-left:10px}
.sk-p{position:relative;z-index:2;display:flex;align-items:center;gap:11px;margin-top:22px;padding-top:18px;
  border-top:1px solid rgba(255,255,255,.12)}
.sk-p img{width:24px;height:24px;object-fit:contain;flex:0 0 auto;
  filter:drop-shadow(0 0 9px rgba(2,248,141,.6))}
.sk-p b{font-family:var(--fm);font-weight:700;font-size:27px;letter-spacing:-.035em;
  text-shadow:0 0 24px rgba(255,255,255,.26)}
.sk-p span{font-family:var(--fm);font-size:9px;letter-spacing:.24em;opacity:.6}
.sk .btn{position:relative;z-index:2;margin-top:18px;width:100%;height:47px}

/* =====================================================================
   LEDGER
   ===================================================================== */
.led{border:1px solid rgba(255,255,255,.13)}
.led-r{display:grid;grid-template-columns:126px minmax(0,1fr) 98px 112px;align-items:center;gap:14px;
  padding:13px 18px;border-bottom:1px solid rgba(255,255,255,.06)}
.led-r:last-child{border-bottom:0}
.led-d{font-family:var(--fm);font-size:11px;opacity:.55}
.led-t{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.led-v{font-family:var(--fm);font-size:13.5px;font-weight:700;text-align:right}
.led-v.up{text-shadow:0 0 16px rgba(2,248,141,.9)}
.led-v.dn{opacity:.72}
.led-b{font-family:var(--fm);font-size:11.5px;text-align:right;opacity:.62}
@media(max-width:700px){.led-r{grid-template-columns:1fr auto}.led-d,.led-b{display:none}}

/* ---------- repeat badge + in-game tag line ---------- */
.ach-t h3 .xn{display:inline-block;margin-left:10px;vertical-align:2px;font-family:var(--fm);
  font-size:11px;font-weight:700;letter-spacing:.04em;padding:3px 8px;
  border:1px solid var(--t2);background:color-mix(in srgb,var(--t) 16%,transparent);
  text-shadow:0 0 14px var(--t2)}
.sk-tagline{position:relative;z-index:2;display:inline-flex;align-items:center;gap:8px;margin-top:13px;
  font-family:var(--fm);font-size:11px;letter-spacing:.06em;border:1px solid rgba(2,248,141,.4);
  padding:6px 11px}
.sk-tagline img{width:14px;height:14px;object-fit:contain}
.sk-tagline b{font-weight:700;text-shadow:0 0 14px rgba(2,248,141,.8)}

/* ---------- completed state ---------- */
.ach-done{position:relative;z-index:2;display:flex;align-items:center;gap:9px;margin-top:14px;
  padding:9px 12px;border:1px solid var(--t2);
  background:color-mix(in srgb,var(--t) 12%,transparent);
  font-family:var(--fm);font-size:10px;letter-spacing:.2em;text-transform:uppercase}
.ach-done svg{width:14px;height:14px;flex:0 0 auto}
.ach-done b{font-weight:700;letter-spacing:.06em}
.ach-done .again{margin-left:auto;letter-spacing:.14em;opacity:.72;text-transform:none;font-size:10.5px}
.ach.once .ach-bar{opacity:.9}

/* =====================================================================
   PURCHASE DIALOG
   ===================================================================== */
.rdlg{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
  padding:20px;opacity:0;visibility:hidden;transition:opacity .22s,visibility .22s}
.rdlg.show{opacity:1;visibility:visible}
.rdlg-bd{position:absolute;inset:0;background:rgba(0,0,0,.82);backdrop-filter:blur(3px)}
.rdlg-w{position:relative;width:min(460px,100%);max-height:92vh;overflow-y:auto}
.rdlg-x{position:relative;border:1px solid rgba(2,248,141,.34);background:#08080b;
  box-shadow:0 34px 80px rgba(0,0,0,.92),0 0 46px rgba(2,248,141,.12);
  transform:translateY(14px) scale(.98);transition:transform .28s cubic-bezier(.2,.7,.2,1)}
.rdlg.show .rdlg-x{transform:none}
.rdlg-x::before{content:'';position:absolute;left:0;right:0;top:0;height:1px;background:var(--rx);
  box-shadow:0 0 16px var(--rx)}
.rdlg-cl{position:absolute;right:12px;top:12px;width:32px;height:32px;display:flex;align-items:center;
  justify-content:center;border:1px solid var(--line2);color:#fff;background:none;z-index:3}
.rdlg-cl:hover{border-color:var(--line3);background:rgba(255,255,255,.08)}
.rdlg-cl svg{width:15px;height:15px}
.rdlg-h{display:flex;align-items:center;gap:15px;padding:22px 22px 18px;border-bottom:1px solid var(--line)}
.rdlg-mark{width:40px;height:40px;object-fit:contain;flex:0 0 auto;
  filter:drop-shadow(0 0 14px rgba(2,248,141,.6))}
.rdlg-t{font-family:var(--fd);font-weight:700;font-size:18px;letter-spacing:-.01em;color:#fff}
.rdlg-s{margin-top:5px;font-family:var(--fm);font-size:9.5px;letter-spacing:.24em;
  text-transform:uppercase;color:#fff;opacity:.55}
.rdlg-b{padding:20px 22px}
.rdlg-b.busy{display:flex;flex-direction:column;align-items:center;gap:16px;padding:44px 22px;
  font-family:var(--fm);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:#fff}
.rdlg-spin{width:34px;height:34px;border:2px solid rgba(255,255,255,.14);border-top-color:var(--rx);
  animation:rspin .8s linear infinite}
@keyframes rspin{to{transform:rotate(360deg)}}
.rdlg-p{font-size:13px;line-height:1.6;color:#fff;opacity:.86}
.rdlg-p.mid{text-align:center;margin-top:14px}
.rdlg-lb{display:block;margin-top:18px;margin-bottom:8px;font-family:var(--fm);font-size:9px;
  letter-spacing:.24em;text-transform:uppercase;color:#fff;opacity:.55}
.rdlg-in{width:100%;height:46px;padding:0 14px;border:1px solid var(--line2);background:rgba(255,255,255,.03);
  color:#fff;font-family:var(--fm);font-size:14px;letter-spacing:.06em;outline:none}
.rdlg-in:focus{border-color:var(--rx);box-shadow:0 0 18px rgba(2,248,141,.2)}
.rdlg-in.bad{border-color:var(--red)}
.rdlg-sum{margin-top:20px;border:1px solid var(--line)}
.rdlg-sum .row{display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:12px 15px;border-bottom:1px solid rgba(255,255,255,.07);font-size:13px;color:#fff}
.rdlg-sum .row:last-child{border-bottom:0}
.rdlg-sum .row span{opacity:.6}
.rdlg-sum .row b{display:inline-flex;align-items:center;gap:8px;font-family:var(--fm);font-weight:700;
  font-size:14px}
.rdlg-sum .row b img{width:15px;height:15px;object-fit:contain}
.rdlg-sum .row.tot{background:rgba(255,255,255,.04)}
.rdlg-sum .row.tot b{font-size:17px}
.rdlg-sum .row.tot b.neg{color:#fff;text-shadow:0 0 14px rgba(255,59,78,.9)}
.rdlg-note{margin-top:14px;font-size:12px;line-height:1.55;color:#fff;opacity:.9;
  border-left:2px solid var(--rx);padding-left:11px}
.rdlg-note.bad{border-left-color:var(--red)}
.rdlg-res{display:flex;align-items:center;justify-content:center;width:60px;height:60px;margin:8px auto 0;
  border:1px solid var(--rx);color:#fff}
.rdlg-res svg{width:28px;height:28px}
.rdlg-res.ok{box-shadow:0 0 34px rgba(2,248,141,.35)}
.rdlg-res.bad{border-color:var(--red);box-shadow:0 0 34px rgba(255,59,78,.3)}
.rdlg-f{display:flex;gap:10px;padding:0 22px 22px}
.rdlg-f .btn{flex:1;height:48px}
@media(max-width:520px){.rdlg{padding:12px}.rdlg-h{padding:18px 18px 15px}.rdlg-b{padding:16px 18px}
  .rdlg-f{padding:0 18px 18px}}
