:root{--bg:#0b0b12;--card:#161622;--line:#2a2a3a;--txt:#f4f4f8;--mut:#a3a3b8;--accent:#e23d3d;--accent2:#f5c04a;--glow:rgba(226,61,61,.35)}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--txt);font:16px/1.4 -apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;min-height:100vh;overflow-x:hidden}
body.stark{--accent:#e23d3d;--accent2:#f5c04a;--glow:rgba(245,192,74,.35);--bg:#120a0a}
body.wayne{--accent:#9aa3b2;--accent2:#ffd84d;--glow:rgba(255,216,77,.25);--bg:#0a0b0d}
body.tchalla{--accent:#9b5cff;--accent2:#d7b8ff;--glow:rgba(155,92,255,.4);--bg:#0c0814}
button{font:inherit;cursor:pointer}
button:focus-visible,input:focus-visible{outline:3px solid var(--accent2);outline-offset:2px}
[hidden]{display:none!important}
.screen{max-width:1100px;margin:0 auto;padding:0 14px}
.intro{text-align:center;padding:32px 6px 8px}
.kicker{margin:0;color:var(--accent2);font-weight:700;letter-spacing:.04em}
h1{font-size:clamp(30px,8vw,48px);margin:6px 0 4px;line-height:1.05}
.sub{margin:0;color:var(--mut)}
.fine{color:var(--mut);text-align:center;font-size:13px;margin:14px 0 8px}
.cards{display:grid;gap:14px;margin-top:20px}
@media(min-width:760px){.cards{grid-template-columns:repeat(3,1fr)}}
.hero-card{position:relative;display:block;width:100%;text-align:left;border:0;border-radius:22px;padding:0;overflow:hidden;color:#fff;min-height:200px;box-shadow:0 10px 30px rgba(0,0,0,.45);transition:transform .15s ease}
.hero-card:active{transform:scale(.98)}
.hero-card .art{position:absolute;inset:0}
.hero-card .info{position:relative;padding:18px 18px 16px;display:flex;flex-direction:column;justify-content:flex-end;min-height:200px;background:linear-gradient(to top,rgba(0,0,0,.75),rgba(0,0,0,0) 70%)}
.hero-card h2{margin:0;font-size:26px;line-height:1.1}
.hero-card .alias{margin:2px 0 8px;opacity:.85;font-size:14px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.hero-card .worth{font-variant-numeric:tabular-nums;font-weight:800;font-size:20px}
.hero-card .joke{font-size:13px;opacity:.85;margin-top:2px}
.hero-card .go{position:absolute;top:14px;right:14px;background:rgba(255,255,255,.16);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding:6px 12px;border-radius:999px;font-size:13px;font-weight:700}
/* Stark art */
.art.stark{background:radial-gradient(circle at 78% 38%,#ffcf5a 0,#c8102e 38%,#5a0712 80%)}
.reactor{position:absolute;right:28px;top:48px;width:96px;height:96px;border-radius:50%;background:radial-gradient(circle,#e9fdff 0 18%,#6ff3ff 26%,#1aa6c9 44%,#0b2a3a 46% 54%,#7fd8ea 56% 60%,#0b2a3a 62%);box-shadow:0 0 30px 8px rgba(120,240,255,.55),inset 0 0 12px #9ff;animation:pulse 2.4s ease-in-out infinite}
.reactor::after{content:"";position:absolute;inset:8px;border-radius:50%;background:repeating-conic-gradient(rgba(255,255,255,.25) 0 6deg,transparent 6deg 30deg)}
@keyframes pulse{50%{box-shadow:0 0 44px 14px rgba(120,240,255,.75),inset 0 0 14px #9ff}}
/* Wayne art */
.art.wayne{background:linear-gradient(180deg,#1b1f27 0,#2c313b 55%,#0d0f13 100%)}
.art.wayne .moon{position:absolute;right:26px;top:30px;width:110px;height:110px;border-radius:50%;background:radial-gradient(circle at 40% 40%,#fff9d6,#e8d98a 70%);box-shadow:0 0 40px 10px rgba(255,236,150,.25)}
.art.wayne .bat{position:absolute;right:46px;top:62px;width:72px;fill:#111}
.art.wayne .city{position:absolute;left:0;right:0;bottom:0;height:70px;background:
 linear-gradient(#0d0f13,#0d0f13) 0 30px/34px 40px no-repeat,linear-gradient(#111419,#111419) 30px 10px/26px 60px no-repeat,linear-gradient(#0d0f13,#0d0f13) 60px 22px/40px 48px no-repeat,linear-gradient(#111419,#111419) 104px 0/22px 70px no-repeat,linear-gradient(#0d0f13,#0d0f13) 130px 28px/50px 42px no-repeat,linear-gradient(#111419,#111419) 184px 14px/30px 56px no-repeat,linear-gradient(#0d0f13,#0d0f13) 218px 34px/60px 36px no-repeat,linear-gradient(#111419,#111419) 282px 6px/24px 64px no-repeat,linear-gradient(#0d0f13,#0d0f13) 310px 24px/100% 46px no-repeat}
/* T'Challa art */
.art.tchalla{background:radial-gradient(circle at 75% 35%,#b77dff 0,#5b21b6 40%,#14072b 85%)}
.art.tchalla .hex{position:absolute;inset:0;opacity:.35;background-image:radial-gradient(circle,#e9d8ff 1.4px,transparent 1.6px);background-size:16px 16px;mask-image:radial-gradient(circle at 75% 35%,#000,transparent 70%);-webkit-mask-image:radial-gradient(circle at 75% 35%,#000,transparent 70%)}
.art.tchalla svg{position:absolute;right:20px;top:26px;width:120px;filter:drop-shadow(0 0 10px #c49bff)}
/* Shop bar */
.bar{position:sticky;top:0;z-index:20;margin:0 -14px;padding:calc(8px + env(safe-area-inset-top)) 14px 10px;background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 45%,#000));box-shadow:0 6px 20px rgba(0,0,0,.4);text-align:center}
body.wayne .bar{background:linear-gradient(135deg,#2b2f38,#0e1014)}
body.tchalla .bar{background:linear-gradient(135deg,#6d28d9,#1b0b38)}
.bar-top{display:flex;align-items:center;justify-content:space-between;height:30px}
.ghost{background:rgba(255,255,255,.15);color:#fff;border:0;border-radius:999px;padding:4px 12px;font-size:14px;font-weight:600}
.bar-hero{font-weight:700;font-size:14px;opacity:.9}
.money{font-variant-numeric:tabular-nums;font-weight:900;font-size:clamp(26px,8.4vw,44px);line-height:1.15;letter-spacing:-.01em;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.35);white-space:nowrap;height:1.15em}
body.wayne .money{color:var(--accent2)}
.progress{height:6px;background:rgba(0,0,0,.35);border-radius:9px;overflow:hidden;margin:6px auto 4px;max-width:520px}
.progress span{display:block;height:100%;width:0;background:var(--accent2);border-radius:9px;transition:width .35s ease}
.bar-sub{font-size:12px;color:rgba(255,255,255,.85);height:16px;font-variant-numeric:tabular-nums}
.hero-banner{display:flex;gap:12px;align-items:center;margin:16px 0 4px;padding:14px;border-radius:18px;background:var(--card);border:1px solid var(--line)}
.hero-banner .hb-emoji{font-size:38px;width:56px;height:56px;display:grid;place-items:center;border-radius:14px;background:color-mix(in srgb,var(--accent) 30%,transparent);flex:none}
.hero-banner b{display:block;font-size:17px}
.hero-banner span{color:var(--mut);font-size:14px}
.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}
@media(min-width:700px){.grid{grid-template-columns:repeat(3,1fr)}}
@media(min-width:980px){.grid{grid-template-columns:repeat(4,1fr)}}
.item{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px 10px 10px;text-align:center;display:flex;flex-direction:column;position:relative}
.item.themed{border-color:color-mix(in srgb,var(--accent) 60%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 25%,transparent) inset,0 6px 18px var(--glow)}
.tag{position:absolute;top:8px;left:8px;font-size:10px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:99px;background:var(--accent);color:#fff}
body.wayne .tag{background:var(--accent2);color:#111}
.pic{font-size:46px;line-height:1;height:74px;width:74px;margin:6px auto 6px;display:grid;place-items:center;border-radius:20px;background:radial-gradient(circle,color-mix(in srgb,var(--accent) 22%,transparent),transparent 70%)}
.name{font-weight:700;font-size:14.5px;line-height:1.2;min-height:2.4em;display:flex;align-items:center;justify-content:center}
.price{color:var(--accent2);font-weight:800;font-variant-numeric:tabular-nums;font-size:15px;margin:2px 0 10px}
.ctl{display:grid;grid-template-columns:1fr 54px 1fr;gap:6px;margin-top:auto}
.ctl button{border:0;border-radius:10px;padding:10px 0;font-weight:800;font-size:14px;transition:opacity .15s}
.sell{background:#2b2b3b;color:#fff}
.buy{background:var(--accent);color:#fff}
body.wayne .buy{background:var(--accent2);color:#111}
.ctl button:disabled{opacity:.35;cursor:default}
.qty{width:100%;min-width:0;border:1px solid var(--line);background:#0f0f18;color:#fff;border-radius:10px;text-align:center;font:700 16px/1 inherit;font-variant-numeric:tabular-nums;padding:8px 2px;-moz-appearance:textfield}
.qty::-webkit-outer-spin-button,.qty::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.receipt{margin:22px 0 10px;background:#fbfaf5;color:#1b1b1b;border-radius:16px;padding:18px 16px;font-family:ui-monospace,"SF Mono",Menlo,monospace;box-shadow:0 10px 30px rgba(0,0,0,.4)}
.receipt h2{margin:0 0 10px;font-family:-apple-system,BlinkMacSystemFont,sans-serif;font-size:20px;text-align:center}
.receipt ul{list-style:none;margin:0;padding:0;font-size:14px}
.receipt li{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px dashed #cfcabb}
.receipt li .q{color:#777}
.receipt li .amt{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700}
.receipt .empty{color:#888;justify-content:center}
.rc-total{display:flex;justify-content:space-between;font-weight:900;font-size:17px;padding-top:10px;font-variant-numeric:tabular-nums}
.rc-actions{display:flex;gap:10px;margin-top:16px}
.btn{flex:1;border:0;border-radius:12px;padding:13px 10px;font-weight:800;background:var(--accent);color:#fff;font-family:-apple-system,BlinkMacSystemFont,sans-serif}
body.wayne .btn{background:#1b1e25;color:var(--accent2)}
.ghost-btn{background:#e8e5da;color:#222}
body.wayne .ghost-btn{background:#e8e5da;color:#222}
.foot{text-align:center;color:var(--mut);font-size:13px;padding:18px 14px calc(26px + env(safe-area-inset-bottom))}
.broke{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:20px;background:rgba(0,0,0,.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);animation:fade .25s ease}
.broke-card{width:100%;max-width:420px;background:linear-gradient(160deg,var(--accent),#111 75%);border-radius:24px;padding:26px 20px 20px;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.6);animation:pop .4s cubic-bezier(.2,1.4,.4,1)}
body.wayne .broke-card{background:linear-gradient(160deg,#3a3f4a,#0b0c0f 75%)}
.broke-emoji{font-size:64px}
.broke-card h2{font-size:28px;margin:6px 0 6px;line-height:1.1}
.broke-card p{margin:0 0 12px;color:rgba(255,255,255,.9)}
.broke-stats{font-variant-numeric:tabular-nums;font-size:14px;background:rgba(0,0,0,.3);border-radius:12px;padding:10px;text-align:left}
.broke-stats div{display:flex;justify-content:space-between;padding:2px 0}
.broke .ghost-btn{background:rgba(255,255,255,.18);color:#fff}
@keyframes fade{from{opacity:0}}
@keyframes pop{from{transform:scale(.8);opacity:0}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
