/* Gradd pack game. Colours match the homepage: yellow #F4DF7C, cream #FFF9E3, ink #1C2629, moss #2D6A4F */
*{box-sizing:border-box}
:root{--vh:100vh;--cw:max(150px,min(62vw,290px,calc((var(--vh) - 400px)*.716)));--ease:cubic-bezier(.2,.8,.2,1)}
@supports (height:100dvh){:root{--vh:100dvh}}
html{-webkit-text-size-adjust:100%}
body{margin:0;min-height:var(--vh);display:flex;flex-direction:column;background:#F4DF7C;color:#1C2629;font-family:Rubik,"Segoe UI",system-ui,sans-serif;-webkit-font-smoothing:antialiased;position:relative;isolation:isolate;overflow-x:hidden;transition:background .4s ease,color .4s ease}
body.dark{background:#1C2629;color:#EEF2F1}
.topo{position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:repeating-radial-gradient(ellipse 120% 90% at 12% 18%,transparent 0 26px,rgba(28,38,41,.05) 26px 27.5px),repeating-radial-gradient(ellipse 90% 120% at 88% 86%,transparent 0 34px,rgba(28,38,41,.038) 34px 35.5px)}
body.dark .topo{opacity:.25;filter:invert(1)}
[hidden]{display:none!important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);margin:0}

.bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px clamp(16px,4vw,48px)}
.logo{height:36px;width:auto;display:block}
body.dark .logo{content:url(../brand/logo-lockup-white.svg)}
.bar-right{display:flex;align-items:center;gap:8px}
.ghost{all:unset;box-sizing:border-box;cursor:pointer;height:38px;padding:0 13px;display:flex;align-items:center;border-radius:12px;background:#FFF9E3;color:#1C2629;font-family:inherit;font-weight:700;font-size:14px;white-space:nowrap;box-shadow:0 1px 2px rgba(80,60,0,.1),0 8px 24px -14px rgba(90,70,0,.4)}

main{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4px 16px 20px}
.view{width:100%;max-width:960px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px}
h1{margin:0;font-weight:800;font-size:clamp(38px,6vw,68px);line-height:1.02;letter-spacing:-1.5px;text-wrap:balance}
h2{margin:0;font-weight:800;font-size:clamp(26px,4vw,40px);line-height:1.08;letter-spacing:-.5px;text-wrap:balance}
.lede{margin:0;font-size:clamp(17px,2vw,20px);line-height:1.45;text-wrap:balance}

.btn{all:unset;box-sizing:border-box;cursor:pointer;min-width:190px;height:52px;padding:0 26px;display:flex;align-items:center;justify-content:center;border-radius:14px;font-family:inherit;font-weight:700;font-size:17px;transition:transform .22s var(--ease),box-shadow .22s ease}
.btn:hover{transform:translateY(-2px);box-shadow:0 14px 26px -12px rgba(28,38,41,.55)}
.btn:active{transform:scale(.97)}
.btn.dark{background:#1C2629;color:#F4DF7C}
body.dark .btn.dark{background:#F4DF7C;color:#1C2629}
.link{all:unset;cursor:pointer;font-family:inherit;font-weight:700;font-size:15px;color:#2D6A4F;padding:6px}
body.dark .link{color:#7CC8A1}
.btn:focus-visible,.link:focus-visible,.ghost:focus-visible,.pack:focus-visible{outline:3px solid #2D6A4F;outline-offset:3px}
body.dark .btn:focus-visible,body.dark .link:focus-visible{outline-color:#7CC8A1}
.actions{display:flex;flex-direction:column;align-items:center;gap:6px;min-height:92px}

/* Packs */
.shelf{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(30%,130px),150px));justify-content:center;gap:clamp(14px,2.4vw,26px) clamp(8px,2vw,24px);padding:14px 0 8px;width:100%}
.pack{all:unset;box-sizing:border-box;cursor:pointer;position:relative;display:block;width:100%;aspect-ratio:5/8;--c1:#C8323C;--c2:#F2A33A;--c3:#2F5FB5;transition:transform .28s var(--ease),filter .28s ease;filter:drop-shadow(0 16px 16px rgba(70,50,0,.34))}
.shelf .pack:nth-child(odd){transform:rotate(-1.5deg)}
.shelf .pack:nth-child(even){transform:rotate(1.5deg)}
.shelf .pack:hover,.shelf .pack:focus-visible{transform:translateY(-8px) rotate(0) scale(1.03)}
.pack-body{position:absolute;inset:6% 0 0;overflow:hidden;border-radius:0 0 4px 4px;background:linear-gradient(145deg,var(--c1) 0%,var(--c2) 42%,var(--c1) 58%,var(--c3) 100%);container-type:inline-size}
.pack-body::before{content:"";position:absolute;inset:-30%;background:repeating-conic-gradient(from 0deg at 50% 52%,rgba(255,255,255,.14) 0 9deg,transparent 9deg 18deg)}
.pack-body::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 28%,rgba(255,255,255,.5) 46%,rgba(255,255,255,.08) 56%,transparent 70%);background-size:260% 100%;background-position:120% 0;transition:background-position .9s ease}
.pack:hover .pack-body::after{background-position:-30% 0}
.pack-strip,.pack-end{position:absolute;left:0;right:0;height:6%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 2px,rgba(0,0,0,.12) 2px 5px),var(--c3)}
.pack-strip{top:0;border-radius:3px 3px 0 0;transform-origin:0 100%;z-index:2}
.pack-end{bottom:-3%;border-radius:0 0 3px 3px;z-index:2}
.pack-in{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:7cqw 5cqw 9cqw;color:#FFF9E3;text-shadow:0 2px 0 rgba(28,38,41,.5)}
.pack-kicker{font-size:12px;font-size:8cqw;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.pack-face{width:52%;aspect-ratio:1;border-radius:50%;background:#FFF9E3;padding:5cqw;box-shadow:0 0 0 2cqw rgba(28,38,41,.28)}
.pack-face img{width:100%;height:100%;display:block}
.pack-name{font-style:italic;font-weight:800;font-size:20px;font-size:15cqw;line-height:1;text-align:center;text-wrap:balance;letter-spacing:-.02em;text-transform:uppercase;text-shadow:.6cqw .6cqw 0 #1C2629,1.4cqw 1.4cqw 0 rgba(28,38,41,.4)}
.pack-sub{font-size:11px;font-size:7cqw;font-weight:700}

.pack-spot{padding:14px 0 6px}
.pack-spot .pack{width:max(130px,min(62vw,250px,calc((var(--vh) - 300px)*.625)));cursor:grab;touch-action:none;animation:wiggle 2.6s ease-in-out infinite}
.pack.ripping{animation:none;cursor:default}
.pack.ripping .pack-strip{transition:transform .5s var(--ease),opacity .5s ease .1s;transform:translate(46%,-190%) rotate(26deg);opacity:0}
.pack.ripping .pack-body,.pack.ripping .pack-end{transition:transform .55s ease-in .22s,opacity .4s ease .36s;transform:translateY(55%);opacity:0}
@keyframes wiggle{0%,86%,100%{transform:rotate(0)}89%{transform:rotate(-2.5deg)}93%{transform:rotate(2.5deg)}97%{transform:rotate(-1deg)}}

/* Cards */
.count{margin:0;font-weight:700;font-size:15px;min-height:20px}
.price{margin:0;font-weight:700;font-size:16px;line-height:1.3;min-height:21px;color:#2D6A4F;text-wrap:balance}
body.dark .price{color:#7CC8A1}
.deck{position:relative;width:var(--cw);aspect-ratio:63/88;perspective:1200px;touch-action:manipulation;cursor:pointer}
.flat{position:absolute;inset:0;border-radius:4.6%/3.3%;overflow:hidden;background:#FFF9E3;box-shadow:0 18px 34px -14px rgba(28,38,41,.65);will-change:transform;transition:transform .22s var(--ease) .1s,opacity .16s ease .1s}
.flat img{width:100%;height:100%;object-fit:cover;display:block}
.flat.under{visibility:hidden;opacity:0;transform:scale(.97)}
.flat.leave{transform:translate(-8%,62%) rotate(-7deg) scale(.42);opacity:0;pointer-events:none;transition:transform .2s ease-in,opacity .14s ease .04s}
.card{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .6s var(--ease)}
.card.under{visibility:hidden}
.card.flipped{transform:rotateY(180deg)}
.face-side{position:absolute;inset:0;isolation:isolate;border-radius:4.6%/3.3%;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:0 18px 34px -14px rgba(28,38,41,.65)}
.card-back{background:repeating-conic-gradient(from 0deg at 50% 50%,#24333a 0 15deg,#1C2629 15deg 30deg);border:clamp(5px,2.6%,9px) solid #2D6A4F;display:flex;align-items:center;justify-content:center}
.card-back img{width:58%;height:auto;display:block}
.card-front{transform:rotateY(180deg);background:#FFF9E3}
.card-front img{width:100%;height:100%;object-fit:cover;display:block}
.fallback{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:12%;background:#FFF9E3;color:#1C2629;font-weight:800;font-size:clamp(16px,6vw,24px);line-height:1.15}
.fallback small{font-weight:500;font-size:13px;color:#4F4A2E}
.halo::before{content:"";position:absolute;inset:-10%;border-radius:16px;background:radial-gradient(closest-side,rgba(255,249,227,.95),rgba(255,249,227,0));animation:halo 1.5s ease-in-out infinite;z-index:-1}
.halo.holo::before{background:conic-gradient(from 0deg,#ff7a85,#ffd76a,#8df0b0,#7cc8ff,#c79bff,#ff7a85);filter:blur(16px);border-radius:24px}
@keyframes halo{0%,100%{opacity:.55;transform:scale(.97)}50%{opacity:1;transform:scale(1.04)}}
.shine{position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 20%,rgba(255,110,160,.5) 34%,rgba(255,226,110,.5) 44%,rgba(110,255,190,.5) 54%,rgba(110,190,255,.5) 64%,transparent 80%);background-size:240% 240%;background-position:var(--mx,50%) var(--my,50%);mix-blend-mode:color-dodge;opacity:.65}
.shine-move{animation:shine 3.6s ease-in-out infinite alternate}
@keyframes shine{from{background-position:0% 0%}to{background-position:100% 100%}}

.tray{display:grid;grid-template-columns:repeat(11,minmax(0,34px));gap:4px;justify-content:center;width:100%;min-height:48px}
.tray img,.tray span{width:100%;aspect-ratio:63/88;border-radius:3px;display:block;object-fit:cover;background:#FFF9E3;box-shadow:0 2px 5px rgba(28,38,41,.35);animation:pop .3s var(--ease)}
@keyframes pop{from{transform:scale(.3);opacity:0}to{transform:scale(1);opacity:1}}

/* Grading */
.face{width:84px;height:84px;display:block}
.scan-card{position:relative;width:max(110px,min(44vw,200px,calc((var(--vh) - 440px)*.716)));aspect-ratio:63/88;border-radius:9px;overflow:hidden;box-shadow:0 18px 34px -14px rgba(28,38,41,.65);background:#FFF9E3}
.scan-card img{width:100%;height:100%;object-fit:cover;display:block}
.scan-line{position:absolute;z-index:2;left:0;right:0;height:4px;background:#2D6A4F;box-shadow:0 0 16px 4px rgba(45,106,79,.6);animation:scan 1.5s ease-in-out infinite alternate}
@keyframes scan{from{top:2%}to{top:97%}}
.checks{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,170px));gap:8px;justify-content:center}
.checks li{background:#FFF9E3;border-radius:12px;padding:9px 12px;display:flex;justify-content:space-between;gap:10px;font-weight:500;font-size:15px;opacity:.45;transition:opacity .25s ease,transform .25s var(--ease)}
.checks li.done{opacity:1;transform:scale(1.03)}
.checks b{font-weight:800;color:#2D6A4F}

/* Result */
.quip{margin:0;font-size:17px;line-height:1.45;max-width:38ch;text-wrap:balance}
[data-view="result"] .face{width:64px;height:64px}
.slab{position:relative;width:max(150px,min(58vw,250px,calc((var(--vh) - 490px)*.62)));padding:3.5% 3.5% 4.5%;border-radius:12px;background:linear-gradient(145deg,rgba(255,255,255,.75),rgba(255,255,255,.3));box-shadow:0 0 0 1px rgba(28,38,41,.16) inset,0 24px 40px -18px rgba(28,38,41,.65);display:flex;flex-direction:column;gap:7px;animation:drop .5s var(--ease)}
@keyframes drop{from{transform:translateY(-16px) scale(.92);opacity:0}to{transform:none;opacity:1}}
.slab-label{background:#1C2629;color:#F4DF7C;border-radius:7px;padding:7px 9px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;text-align:left}
.slab-name{font-weight:800;font-size:13px;line-height:1.15}
.slab-set{display:block;font-weight:500;font-size:10.5px;color:#A5B2B4;margin-top:2px}
.slab-num{font-weight:800;font-size:30px;line-height:1}
.slab-card{position:relative;aspect-ratio:63/88;border-radius:5px;overflow:hidden;background:#FFF9E3}
.slab-card>img{width:100%;height:100%;object-fit:cover;display:block}
.slab-fun{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#4F4A2E}
body.dark .slab{background:#FFF9E3}
.cta{margin:0;font-size:15px;line-height:1.4}
.cta a{color:#2D6A4F;font-weight:700}
body.dark .cta a{color:#F4DF7C}
.bit{position:fixed;top:-20px;width:10px;height:16px;z-index:40;pointer-events:none;animation:fall linear forwards}
@keyframes fall{to{transform:translateY(calc(var(--vh) + 60px)) rotate(720deg)}}

.foot{padding:10px clamp(16px,4vw,48px) calc(14px + env(safe-area-inset-bottom));text-align:center}
.foot p{margin:0 auto;max-width:78ch;font-size:12px;line-height:1.45;color:#4F4A2E}
body.dark .foot p{color:#A5B2B4}

@media (max-width:460px){
  .ghost[href]{display:none}
  .tray{grid-template-columns:repeat(11,minmax(0,1fr))}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .scan-line{display:none}
}
