/* The pack opening.

   The animation is the one that was already built for the prototype, kept beat for beat:
   three packs you can turn with the mouse, a charge with rings and sparks, a screen shake
   as it cracks, the torn pack bursting through, a white flash, and the creature arriving
   out of the light. What changed is the dressing, not the choreography: the brand fonts,
   the brand yellow, the site's buttons, and the real AneeMate renders instead of the
   prototype's placeholders. The theatre itself stays dark on purpose. A reveal needs a
   room with the lights off, and the rest of the page is white. */

.store{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;align-items:stretch}
@media(max-width:940px){.store{grid-template-columns:1fr}}
.pack{position:relative;display:flex;flex-direction:column;border:3px solid var(--line);border-radius:26px;
  background:#fff;padding:22px;overflow:hidden;
  transition:transform .22s var(--ease),box-shadow .22s var(--ease),border-color .22s}
.pack:hover{transform:translateY(-6px);box-shadow:0 24px 50px rgba(17,16,21,.18);border-color:var(--yellow)}
.pack::before{content:"";position:absolute;inset:0 0 auto;height:6px;background:var(--pc,var(--yellow))}
.pack.best{border-color:var(--yellow)}
.pack .flag{position:absolute;top:0;right:20px;background:var(--grad-main);color:#fff;font-family:var(--display);
  font-size:13px;letter-spacing:.06em;padding:6px 12px 7px;border-radius:0 0 12px 12px;z-index:2}
/* The pack art is the original marketing render and it carries its own dark surround and
   its own glow, so the card gives it a dark stage to sit on instead of cutting it out.
   The stage is a fixed height and the image is centred inside it, which is what puts the
   three packs on one baseline whatever their own proportions are. min-height:0 is not
   optional: a grid item defaults to min-height:auto, which for an image is its intrinsic
   height, and that quietly wins over height:100% and blows the box open. */
.pack .shot{position:relative;display:grid;place-items:center;height:286px;margin:6px 0 4px;border-radius:20px;
  overflow:hidden;background:radial-gradient(120% 100% at 50% 42%,
    color-mix(in srgb, var(--pc,#FDCA4B) 30%, #14121A) 0%, #14121A 68%, #0D0C11 100%)}
.pack .shot img{width:100%;height:100%;min-height:0;min-width:0;object-fit:contain;position:relative;z-index:1;
  padding:14px;transition:transform .35s var(--ease)}
.pack:hover .shot img{transform:translateY(-5px) rotate(-1.5deg) scale(1.05)}
.pack h3{font-size:26px}
.pack .tag2{font-size:12.5px;font-weight:800;color:var(--ink-3);text-transform:uppercase;letter-spacing:.12em}
.pack .price{font-family:var(--display);font-size:38px;line-height:1;margin:12px 0 2px}
.pack .usd{font-size:13px;color:var(--ink-3);font-weight:700}
.pack ul{list-style:none;margin:16px 0 0;display:grid;gap:9px}
.pack li{font-size:14.5px;display:flex;gap:9px;align-items:flex-start;color:var(--ink-2)}
.pack li::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--pc,var(--yellow));margin-top:7px;flex:0 0 auto}
.pack .odds{display:flex;gap:4px;margin-top:16px;height:10px;border-radius:99px;overflow:hidden;background:var(--line)}
.pack .odds i{display:block;height:100%}
.pack .oddskey{display:flex;flex-wrap:wrap;gap:7px 14px;margin-top:10px;font-size:11.5px;font-weight:800;letter-spacing:.04em;color:var(--ink-3)}
.pack .oddskey span{display:inline-flex;align-items:center;gap:5px}
.pack .oddskey b{width:9px;height:9px;border-radius:50%}
.split3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:16px}
.split3 div{border:2px solid var(--line);border-radius:14px;padding:9px 10px;text-align:center}
.split3 .k{display:block;font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.split3 .v{display:block;font-family:var(--display);font-size:19px;line-height:1.1;margin-top:2px}
.split3 .v.burn{color:#FF7A45}.split3 .v.tre{color:#2E8FE0}.split3 .v.fee{color:#3F9E31}
.guarantee{margin-top:14px;font-size:13px;color:var(--ink-3);border-top:2px solid var(--line);padding-top:12px}
.guarantee b{color:var(--ink)}
.pack .buy{margin-top:auto;padding-top:18px;display:grid;gap:9px}
.pack .buy .btn{width:100%}

/* ── the theatre ─────────────────────────────────────────────────────── */
.openhead{padding:clamp(44px,6vw,80px) 0 26px}
.openhead h2{color:#fff}
.openhead .lead{color:#A9B0BE;max-width:62ch}
.burnline{font-size:13.5px;color:#8B93A5;margin-top:16px}
.burnline b{color:#FF7A45}
.tierpick{display:flex;gap:9px;flex-wrap:wrap}
.tierpick button{font-family:var(--display);font-size:15px;letter-spacing:.04em;text-transform:uppercase;
  padding:10px 18px;border-radius:99px;border:2px solid rgba(255,255,255,.22);color:#fff;
  background:rgba(255,255,255,.06);transition:transform .18s var(--ease),background .18s,color .18s}
.tierpick button:hover{transform:translateY(-2px)}
.tierpick button[aria-pressed=true]{background:var(--grad-main);color:#fff;border-color:transparent;
  text-shadow:0 2px 0 rgba(140,90,10,.5)}

.open{position:relative;min-height:min(86vh,840px);overflow:hidden;
  background:radial-gradient(120% 90% at 50% 40%,rgba(24,16,38,.92),#06080D 70%),#06080D;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  --rar:#FDCA4B}
.open .hint{position:absolute;top:6%;left:0;right:0;text-align:center;z-index:6;transition:opacity .4s var(--ease)}
.open .hint h3{font-family:var(--display);font-size:clamp(22px,3vw,34px);color:#fff}
.open .hint p{color:#8B93A5;font-size:13.5px;margin-top:6px}

.picker{display:flex;gap:clamp(10px,3vw,40px);align-items:center;justify-content:center;width:100%;padding:0 16px}
.pick{position:relative;width:min(28vw,230px);aspect-ratio:.62;perspective:900px;cursor:grab;
  transition:transform .3s cubic-bezier(.34,1.56,.64,1),filter .3s var(--ease),opacity .3s;
  filter:brightness(.74) saturate(.92)}
.pick:active{cursor:grabbing}
.pick:hover{transform:translateY(-14px) scale(1.03);filter:brightness(1)}
.pick.chosen{transform:translateY(-6px) scale(1.12);filter:brightness(1.08);z-index:3}
.pick.gone{opacity:0;transform:scale(.9) translateY(40px);pointer-events:none}
.capsule{position:absolute;inset:0;transform-style:preserve-3d;
  transform:rotateX(4deg) rotateY(-14deg);transition:transform .5s var(--ease);
  animation:capfloat 6s ease-in-out infinite}
.capsule.dragging{transition:none;animation:none}
@keyframes capfloat{0%,100%{translate:0 -8px}50%{translate:0 8px}}
.pick .capsule{animation-duration:7s}
.pick:nth-child(2) .capsule{animation-delay:-2s}
.pick:nth-child(3) .capsule{animation-delay:-4s}
.cap-img{position:absolute;left:50%;top:50%;translate:-50% -50%;width:106%;display:block;
  filter:drop-shadow(0 30px 50px rgba(0,0,0,.9))}
.cap-glow{position:absolute;left:50%;top:50%;translate:-50% -50%;width:150%;aspect-ratio:1;border-radius:50%;
  background:radial-gradient(circle,var(--rar),transparent 62%);opacity:.16;filter:blur(38px);z-index:-1;
  transition:opacity .4s var(--ease)}
.pick:hover .cap-glow{opacity:.3}
.cap-shadow{position:absolute;left:50%;bottom:-9%;translate:-50%;width:70%;height:22px;border-radius:50%;
  background:radial-gradient(ellipse,rgba(0,0,0,.75),transparent 70%);filter:blur(9px)}

.stagebar{position:absolute;bottom:5%;left:0;right:0;display:flex;flex-direction:column;align-items:center;gap:12px;
  z-index:6;transition:opacity .4s var(--ease)}
.count{font-size:11.5px;color:#7C8496;letter-spacing:.12em;font-weight:700;text-transform:uppercase}
.skip{font-size:11.5px;color:#8B93A5;letter-spacing:.1em;text-transform:uppercase;font-weight:800;
  border-bottom:2px solid rgba(255,255,255,.18);padding-bottom:2px}
.skip:hover{color:#fff}

.charging .capsule{animation:capshake .16s linear infinite}
@keyframes capshake{0%{translate:-1px 0}25%{translate:2px -1px}50%{translate:-2px 1px}75%{translate:1px 1px}100%{translate:-1px 0}}
.ring{position:absolute;left:50%;top:50%;translate:-50% -50%;border-radius:50%;
  border:1px solid var(--rar);opacity:0;pointer-events:none}
.ring.go{animation:ringIn 1.05s var(--ease) forwards}
@keyframes ringIn{0%{width:520px;height:520px;opacity:0}30%{opacity:.55}100%{width:60px;height:60px;opacity:0}}
.torn{position:absolute;left:50%;top:50%;translate:-50% -50%;width:min(62vh,520px);
  opacity:0;pointer-events:none;z-index:35;
  filter:drop-shadow(0 0 60px color-mix(in srgb,var(--rar) 65%,transparent))}
.torn.go{animation:tornIn 1.25s var(--ease) forwards}
@keyframes tornIn{0%{opacity:0;scale:.72}18%{opacity:1;scale:1.02}62%{opacity:1;scale:1.1}100%{opacity:0;scale:1.3}}
.flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none;z-index:40}
.flash.go{animation:flash 1.1s var(--ease) forwards}
@keyframes flash{0%{opacity:0}8%{opacity:1}24%{opacity:.25}42%{opacity:.9}100%{opacity:0}}
.shakeScreen{animation:screenShake .5s var(--ease)}
@keyframes screenShake{0%,100%{transform:translate(0,0)}20%{transform:translate(-7px,3px)}
  40%{transform:translate(6px,-4px)}60%{transform:translate(-4px,-3px)}80%{transform:translate(4px,3px)}}
.spark{position:absolute;width:3px;height:3px;border-radius:50%;background:var(--rar);pointer-events:none;
  box-shadow:0 0 8px var(--rar);z-index:30}

/* ── the reveal ──────────────────────────────────────────────────────── */
.reveal{position:absolute;inset:0;display:grid;grid-template-columns:1.1fr .9fr;opacity:0;pointer-events:none;
  transition:opacity .5s var(--ease);z-index:45}
.reveal.on{opacity:1;pointer-events:auto}
@media(max-width:900px){.reveal{grid-template-columns:1fr;grid-template-rows:minmax(280px,44vh) 1fr;overflow-y:auto}}
.creature-stage{position:relative;display:grid;place-items:center;overflow:hidden}
.aura{position:absolute;width:min(78%,540px);aspect-ratio:1;border-radius:50%;
  background:radial-gradient(circle,var(--rar),transparent 62%);opacity:.14;filter:blur(46px)}
.aura.pulse{animation:auraPulse 4.5s ease-in-out infinite}
@keyframes auraPulse{0%,100%{opacity:.14;scale:1}50%{opacity:.3;scale:1.08}}
.halo{position:absolute;width:min(62%,420px);aspect-ratio:1;border-radius:50%;
  border:1px solid color-mix(in srgb,var(--rar) 45%,transparent);opacity:.5;
  background:conic-gradient(from 0deg,transparent,color-mix(in srgb,var(--rar) 22%,transparent),transparent 42%);
  animation:halospin 18s linear infinite}
@keyframes halospin{to{rotate:360deg}}
.floorlight{position:absolute;bottom:8%;left:50%;translate:-50%;width:min(60%,420px);height:60px;border-radius:50%;
  background:radial-gradient(ellipse,color-mix(in srgb,var(--rar) 40%,transparent),transparent 70%);filter:blur(18px)}
.shafts{position:absolute;inset:0;pointer-events:none;opacity:.22;
  background:repeating-conic-gradient(from 0deg at 50% 45%,transparent 0 7deg,color-mix(in srgb,var(--rar) 28%,transparent) 7deg 9deg);
  mask:radial-gradient(circle at 50% 45%,#000 10%,transparent 62%);
  -webkit-mask:radial-gradient(circle at 50% 45%,#000 10%,transparent 62%);
  animation:halospin 60s linear infinite}
.motes{position:absolute;inset:0;pointer-events:none}
.mote{position:absolute;width:3px;height:3px;border-radius:50%;background:var(--rar);
  box-shadow:0 0 9px var(--rar);animation:moterise linear infinite}
@keyframes moterise{0%{transform:translateY(0);opacity:0}12%{opacity:.85}100%{transform:translateY(-70vh);opacity:0}}
.creature{position:relative;width:min(62%,420px);z-index:3;display:grid;place-items:center}
.creature img{width:100%;display:block;filter:drop-shadow(0 30px 44px rgba(0,0,0,.55))}
.creature.silhouette img{filter:brightness(0) drop-shadow(0 0 30px var(--rar))}
.creature.enter{animation:creatureIn 1.1s cubic-bezier(.34,1.56,.64,1)}
@keyframes creatureIn{0%{opacity:0;scale:.6;filter:brightness(6) blur(6px)}
  45%{opacity:1;filter:brightness(2.4) blur(0)}100%{opacity:1;scale:1;filter:brightness(1)}}
.creature.breathe{animation:creatureBreathe 4.2s ease-in-out infinite}
@keyframes creatureBreathe{0%,100%{translate:0 0;scale:1}50%{translate:0 -10px;scale:1.012}}
.creature .fallback{width:min(300px,70%);aspect-ratio:1;
  background:url('/assets/icons/Logo.svg') center/70% no-repeat;filter:invert(1);opacity:.2}
.serialmark{position:absolute;top:22px;left:24px;font-size:11px;color:#7C8496;letter-spacing:.14em;
  font-weight:800;z-index:5;text-transform:uppercase}

.info{border-left:1px solid rgba(255,255,255,.1);background:linear-gradient(180deg,#0D111A,#080A0F);
  padding:clamp(22px,3vw,36px);display:flex;flex-direction:column;gap:16px;overflow-y:auto;color:#fff}
@media(max-width:900px){.info{border-left:0;border-top:1px solid rgba(255,255,255,.1)}}
.info .owned{font-size:11.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#7C8496}
.rar-badge{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;
  border:2px solid var(--rar);color:var(--rar);border-radius:99px;padding:6px 14px;
  font-size:11.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}
.rar-badge .dot{width:9px;height:9px;border-radius:50%;background:var(--rar)}
.info .cname{font-family:var(--display);font-size:clamp(32px,4.4vw,54px);line-height:.98;text-transform:uppercase;color:#fff}
.info .meta{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.info .meta .k{font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#7C8496}
.info .meta .v{font-family:var(--display);font-size:19px;margin-top:3px}
.info .stats{display:flex;flex-direction:column;gap:9px}
.info .srow .l{display:flex;justify-content:space-between;font-size:11.5px;font-weight:800;
  letter-spacing:.1em;text-transform:uppercase;color:#8B93A5;margin-bottom:5px}
.info .srow .l b{color:#fff;font-family:var(--display);font-size:15px;letter-spacing:0}
.info .bar{height:6px;border-radius:3px;background:rgba(255,255,255,.1);overflow:hidden}
.info .bar i{display:block;height:100%;border-radius:3px;background:var(--rar);width:0;transition:width .9s var(--ease)}
.info .traits{display:flex;flex-wrap:wrap;gap:7px}
.info .trait{font-size:11.5px;font-weight:700;border:1px solid rgba(255,255,255,.16);border-radius:99px;
  padding:5px 11px;color:#B9BECC}
.info .ability{border:1px solid rgba(255,255,255,.12);border-left:3px solid var(--rar);border-radius:12px;padding:12px 14px}
.info .ability .n{font-family:var(--display);font-size:16px;text-transform:uppercase}
.info .ability .d{font-size:13px;color:#8B93A5;margin-top:3px}

/* The shard block: the same card as an ability, with the running total drawn under it so
   the number has somewhere to go instead of just counting up. */
.info .ability.shards{border-left-color:#FDCA4B}
.info .ability.shards .n{color:#FDCA4B}
.info .ability.shards .bar{margin-top:10px;height:6px;border-radius:99px;background:rgba(255,255,255,.10);overflow:hidden}
.info .ability.shards .bar i{display:block;height:100%;width:0;border-radius:99px;
  background:linear-gradient(90deg,#FDCA4B,#F5A623);transition:width .9s cubic-bezier(.2,.7,.2,1)}
.info .actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}
.info .actions .btn{flex:1 1 160px}
