/* OverWorld Shop: Big Frank style (near-black, bold uppercase type, numbered sections) with colours that follow the holiday. */
:root{
  --bg:#07080d;--bg2:#0d0f17;--card:#10131c;--card2:#161a26;--line:#222836;--txt:#f1f2f7;--mut:#9aa1b5;
  --a:#ffd27a;--b:#f0a030;--ink:#150d00;--glow:rgba(255,190,80,.14);
  --bad:#ff7b7b;--good:#62e39a;--radius:14px;--max:1180px;
  --display:"Archivo","Arial Black",system-ui,sans-serif;--mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
}
[data-theme="halloween"]{--bg:#0b0610;--bg2:#120a1a;--card:#160d20;--card2:#1e122c;--line:#33204a;--a:#ffa545;--b:#a46bff;--ink:#190b00;--glow:rgba(255,140,40,.16)}
[data-theme="christmas"]{--bg:#060c12;--bg2:#0b141d;--card:#0e1823;--card2:#14212f;--line:#233549;--a:#ff6b6b;--b:#59d68c;--ink:#1a0505;--glow:rgba(255,90,90,.14)}
[data-theme="easter"]{--bg:#0b0a14;--bg2:#12101d;--card:#171428;--card2:#1f1b36;--line:#332e55;--a:#ff9fd2;--b:#b7a6ff;--ink:#1a0714;--glow:rgba(255,159,210,.15)}
[data-theme="newyear"]{--bg:#07070d;--bg2:#0e0e18;--card:#12121f;--card2:#191929;--line:#282842;--a:#ffd24d;--b:#4dd2ff;--ink:#150f00;--glow:rgba(255,210,77,.15)}
[data-theme="valentines"]{--bg:#10060c;--bg2:#190a12;--card:#1d0c16;--card2:#28101e;--line:#481a35;--a:#ff5a96;--b:#ffa0c4;--ink:#1c0410;--glow:rgba(255,90,150,.17)}
[data-theme="stpatricks"]{--bg:#040d07;--bg2:#081509;--card:#0a1a0e;--card2:#10240f;--line:#1c4426;--a:#4ae77f;--b:#ffd34d;--ink:#021208;--glow:rgba(74,231,127,.15)}
[data-theme="july4"]{--bg:#050813;--bg2:#0a0f20;--card:#0d1428;--card2:#131c38;--line:#22305c;--a:#ff5a5a;--b:#5a9bff;--ink:#190505;--glow:rgba(90,155,255,.15)}
[data-theme="thanksgiving"]{--bg:#0d0805;--bg2:#160e08;--card:#1b110a;--card2:#251810;--line:#45291a;--a:#ffa04a;--b:#e0553a;--ink:#1a0c00;--glow:rgba(255,160,74,.15)}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:80px}
body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--txt);font:16px/1.6 "Archivo",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;font-stretch:100%;overflow-x:hidden}
body::before{content:"";position:fixed;inset:0;z-index:-2;background:radial-gradient(900px 520px at 78% -8%,var(--glow),transparent 70%),radial-gradient(700px 480px at -10% 30%,color-mix(in srgb,var(--b) 10%,transparent),transparent 70%),var(--bg)}
a{color:inherit}img{max-width:100%}
main{flex:1}
#fx{position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.75}
.wrap{max-width:var(--max);margin:0 auto;padding:0 24px}
.mut{color:var(--mut)}.center{text-align:center}.hide{display:none!important}.small{font-size:13px}
/* type */
.eyebrow{display:flex;align-items:center;gap:12px;font:500 12px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--a);margin:0 0 20px}
.eyebrow::before{content:"";width:34px;height:1px;background:var(--a);flex:none}
h1,h2,h3{font-family:var(--display);font-stretch:112%;font-weight:800;text-transform:uppercase;line-height:.98;letter-spacing:-.012em;margin:0 0 .45em}
h1{font-size:clamp(40px,7.6vw,92px)}
h2{font-size:clamp(30px,4.6vw,56px)}
h3{font-size:20px;line-height:1.1;letter-spacing:0}
.hl{background:linear-gradient(180deg,var(--a),var(--b));-webkit-background-clip:text;background-clip:text;color:transparent;display:inline}
p{margin:.4em 0 1em}
.lead{color:var(--mut);font-size:18px;max-width:560px}
/* header */
header.top{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;gap:18px;height:68px}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;font:800 15px/1.05 var(--display);font-stretch:115%;text-transform:uppercase;letter-spacing:.02em}
.brand img{width:38px;height:38px;border-radius:50%;image-rendering:pixelated;border:1px solid var(--line);background:var(--card)}
.brand em{font-style:normal;display:block;color:var(--a)}
nav.links{display:flex;gap:2px;margin-left:auto;align-items:center}
nav.links a{padding:8px 11px;border-radius:9px;text-decoration:none;color:var(--mut);font-size:14px;font-weight:600;white-space:nowrap}
nav.links a:hover,nav.links a.on{color:var(--txt);background:var(--card)}
nav.links a.town{color:var(--a);border:1px solid color-mix(in srgb,var(--a) 45%,transparent)}
nav.links a.town:hover{background:color-mix(in srgb,var(--a) 14%,transparent)}
.userbtn{display:flex;align-items:center;gap:8px;padding:4px 12px 4px 4px;border-radius:99px;background:var(--card);border:1px solid var(--line);text-decoration:none;font-size:14px;margin-left:6px}
.userbtn img{width:28px;height:28px;border-radius:50%;background:var(--card2)}
.menu{display:none;margin-left:auto;background:var(--card);border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:8px 12px;font-size:18px;cursor:pointer}
@media(max-width:1000px){.menu{display:block}nav.links{display:none;position:absolute;top:68px;left:0;right:0;flex-direction:column;align-items:stretch;background:var(--bg);border-bottom:1px solid var(--line);padding:10px 24px}nav.links.open{display:flex}.userbtn{margin:6px 0}}
.bar{background:linear-gradient(90deg,color-mix(in srgb,var(--a) 20%,var(--bg)),color-mix(in srgb,var(--b) 20%,var(--bg)));border-bottom:1px solid var(--line);font:500 12px var(--mono);letter-spacing:.06em;text-align:center;padding:8px 14px;text-transform:uppercase}
/* buttons and forms */
.btn{display:inline-flex;align-items:center;gap:8px;padding:13px 22px;border-radius:11px;font:700 14px var(--display);font-stretch:105%;letter-spacing:.02em;text-decoration:none;border:1px solid transparent;cursor:pointer;transition:transform .15s,box-shadow .15s,background .15s;color:var(--txt)}
.btn:hover{transform:translateY(-2px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.btn.primary{background:linear-gradient(180deg,var(--a),var(--b));color:var(--ink);box-shadow:0 10px 34px color-mix(in srgb,var(--a) 28%,transparent)}
.btn.ghost{background:color-mix(in srgb,var(--card) 80%,transparent);border-color:var(--line)}
.btn.ghost:hover{border-color:color-mix(in srgb,var(--a) 50%,var(--line))}
.btn.danger{background:#2a1218;border-color:#5b2230;color:#ffb4b4}
.btn.small{padding:7px 13px;font-size:12px;border-radius:9px}
select,input,textarea{font:inherit;color:var(--txt);background:var(--card2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;max-width:100%}
textarea{width:100%;min-height:90px;resize:vertical}
select:focus,input:focus,textarea:focus,.btn:focus-visible,a:focus-visible,button:focus-visible{outline:2px solid var(--a);outline-offset:2px}
label{display:block;font:500 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin:14px 0 6px}
/* layout pieces */
.hero{padding:76px 0 34px;position:relative}
.hero h1{margin-bottom:.35em}
.hero .lead{margin-bottom:26px}
.hero .cta{display:flex;gap:12px;flex-wrap:wrap}
.ticks{display:flex;gap:22px;flex-wrap:wrap;margin:16px 0 0;font:500 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--mut)}
.ticks span::before{content:"●";color:var(--b);margin-right:7px;font-size:9px}
.hero.sub{padding:60px 0 20px}.hero.sub h1{font-size:clamp(34px,6vw,68px)}
section.block{padding:42px 0}
.grid{display:grid;gap:16px}.g2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.g3{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.g4{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.card{background:linear-gradient(180deg,color-mix(in srgb,var(--card) 92%,var(--a)),var(--card));border:1px solid var(--line);border-radius:var(--radius);padding:22px;position:relative}
.card h3{margin-bottom:.35em}
.stat{padding:6px 0 0;text-align:left;background:none;border:0;border-top:1px solid var(--line);border-radius:0}
.stat b{display:block;font:800 clamp(38px,5vw,60px)/1 var(--display);font-stretch:112%;color:var(--txt);margin-bottom:8px}
.stat span{color:var(--mut);font-size:14px;font-weight:500}
.pill{display:inline-block;padding:3px 10px;border-radius:99px;font:500 11px var(--mono);letter-spacing:.06em;text-transform:uppercase;background:var(--card2);border:1px solid var(--line);color:var(--mut);margin:2px 5px 2px 0}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}
.notice{border:1px dashed var(--line);border-radius:var(--radius);padding:24px;text-align:center;color:var(--mut)}
.err{color:var(--bad)}.ok{color:var(--good)}
table{width:100%;border-collapse:collapse}th,td{padding:10px;border-bottom:1px solid var(--line);text-align:left;font-size:14px}th{color:var(--mut);font:500 11px var(--mono);letter-spacing:.1em;text-transform:uppercase}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 18px}.tabs button{background:var(--card);border:1px solid var(--line);color:var(--mut);border-radius:9px;padding:9px 15px;cursor:pointer;font:600 13px var(--display)}.tabs button.on{color:var(--ink);background:linear-gradient(180deg,var(--a),var(--b));border-color:transparent}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--card2);border:1px solid var(--line);padding:12px 20px;border-radius:12px;z-index:200;box-shadow:0 12px 34px #000a}
/* ticker (the scrolling strip under the hero) */
.ticker{border-block:1px solid var(--line);background:color-mix(in srgb,var(--bg2) 90%,transparent);overflow:hidden;white-space:nowrap}
.ticker .row{display:inline-flex;gap:34px;padding:12px 0;animation:tick 42s linear infinite;font:700 13px var(--display);font-stretch:108%;letter-spacing:.04em}
.ticker .tag{font:500 11px var(--mono);letter-spacing:.14em;color:var(--a)}
.ticker b{color:var(--mut);font-weight:700;margin-right:8px}.ticker i{font-style:normal;color:var(--good)}
@keyframes tick{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.ticker .row{animation:none}html{scroll-behavior:auto}}
/* numbered sections and the doors */
.sec-head{display:grid;grid-template-columns:1.2fr 1fr;gap:40px;align-items:end;margin-bottom:30px}
@media(max-width:800px){.sec-head{grid-template-columns:1fr;gap:10px}}
.sec-head p{color:var(--mut);margin:0}
.doors{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.door{border:1px solid var(--line);border-radius:var(--radius);padding:20px;background:linear-gradient(180deg,var(--card),var(--bg2));text-decoration:none;display:block;transition:transform .2s,border-color .2s}
.door:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--a) 55%,var(--line))}
.door .n{font:500 11px var(--mono);letter-spacing:.14em;color:var(--a);text-transform:uppercase}
.door h3{margin:10px 0 6px;font-size:22px}.door p{color:var(--mut);font-size:14px;margin:0}
.showcase{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:#000;position:relative}
.showcase img,.showcase canvas{display:block;width:100%}
.showcase .cap{position:absolute;left:16px;bottom:14px;font:500 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:#fff;text-shadow:0 1px 6px #000}
/* footer */
footer.foot{border-top:1px solid var(--line);padding:30px 0;margin-top:50px;color:var(--mut);font-size:14px}
footer.foot .wrap{display:flex;gap:18px;flex-wrap:wrap;justify-content:space-between;align-items:center}
footer.foot a{margin-right:16px;text-decoration:none}footer.foot a:hover{color:var(--txt)}
/* shop */
.item{display:flex;flex-direction:column;gap:6px}.item .price{font:800 28px var(--display);font-stretch:112%;color:var(--a)}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.chips button{background:var(--card);border:1px solid var(--line);color:var(--mut);border-radius:99px;padding:8px 15px;cursor:pointer;font:600 13px var(--display)}.chips button.on{color:var(--ink);background:var(--a);border-color:transparent}
/* collection */
.acard{padding:14px}.aimg{border-radius:10px;overflow:hidden;background:#000;aspect-ratio:16/9;display:flex;align-items:center}.aimg img{width:100%;display:block}
/* staff */
.person{display:flex;gap:16px;align-items:flex-start}.person img,.person .ph{width:68px;height:68px;border-radius:14px;background:var(--card2);flex:none;object-fit:cover}.person .ph{display:flex;align-items:center;justify-content:center;font:800 28px var(--display);color:var(--a)}
.stars{color:var(--a);letter-spacing:2px}
@media(max-width:600px){.hero{padding:44px 0 14px}.wrap{padding:0 18px}}
