:root{--bg:#14100d;--card:#1e1814;--card2:#251d18;--line:#3a2e25;--text:#f5ede4;--mut:#a89b8d;--soft:#c9bcae;
--g:#ff6a2b;--o:#ffb04a;--p:#ff6b5e;--on:#1a0e06;--w:1100px;
--disp:"Bricolage Grotesque","DM Sans",system-ui,-apple-system,"Segoe UI",sans-serif;--body:"DM Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
box-sizing:border-box;padding-top:env(safe-area-inset-top,0px)}
*,*::before,*::after{box-sizing:inherit}
html{scroll-padding-top:calc(env(safe-area-inset-top,0px) + 80px);scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font:400 16px/1.5 var(--body);-webkit-font-smoothing:antialiased}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);background:var(--bg);z-index:20}
button{font:inherit;color:inherit;cursor:pointer}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--g);outline-offset:3px}
svg.i{width:1em;height:1em;fill:currentColor;flex:none}
svg.s{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* ---- top bar + navigation (bottom tabs on phones, inline on wide screens) ---- */
header{position:sticky;top:env(safe-area-inset-top,0px);z-index:10;background:rgba(20,16,13,.97);border-bottom:1px solid var(--line);padding:10px 16px}
.bar{display:flex;align-items:center;gap:12px;max-width:var(--w);margin:0 auto}
.logo{display:flex;flex:none;align-items:center;gap:9px;font:600 22px/1 var(--disp);letter-spacing:-.01em}
.logo svg{font-size:28px}.logo b{color:var(--g);font-weight:600}
.search{display:flex;flex:1;min-width:0;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:0 12px;color:var(--mut);font-size:17px}
.search input{flex:1;min-width:0;background:none;border:0;color:var(--text);font:400 15px var(--body);padding:10px 0}
.search input::placeholder{color:var(--mut)}
.search input:focus{outline:0}.search:focus-within{border-color:var(--g)}
nav{position:fixed;left:0;right:0;bottom:0;z-index:15;display:flex;background:rgba(20,16,13,.98);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px)}
nav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 4px 9px;color:var(--mut);font:500 12px var(--body)}
nav a svg{font-size:22px}
nav a.on{color:var(--g)}
body{padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))}
@media(max-width:380px){.logo span{display:none}}
@media(min-width:760px){
  body{padding-bottom:0}
  header{padding:12px 24px}
  .logo{font-size:24px}
  .search{flex:0 1 380px;margin-left:auto}
  nav{position:static;order:3;background:none;border:0;padding:0;gap:4px}
  nav a{flex-direction:row;gap:8px;padding:8px 12px;border-radius:10px;font-size:15px}
  nav a svg{font-size:17px}
  nav a:hover{color:var(--text)}
  nav a.on{background:var(--card);color:var(--text)}
  nav a.on svg{color:var(--g)}
}

main{max-width:var(--w);margin:0 auto;padding:0 16px 56px}
section{margin-top:40px}
.sh{display:flex;align-items:baseline;gap:12px;margin-bottom:14px}
.sh>svg,.sh i{display:none}
.sh h2{margin:0;min-width:0;font:600 clamp(20px,5.5vw,24px)/1.2 var(--disp);letter-spacing:-.01em}
.sh .see{margin-left:auto;flex:none;display:flex;align-items:center;gap:6px;color:var(--mut);font:500 14px var(--body)}
.sh .see:hover{color:var(--g)}

/* ---- home: spotlight carousel ---- */
.spot{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-left:16px;margin:18px -16px 0;padding:0 16px 4px;scrollbar-width:none}
.sp{flex:0 0 88%;max-width:500px;scroll-snap-align:start;display:flex;gap:14px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px}
.sp:hover{border-color:var(--g)}
.sp .thumb{flex:none;width:104px;align-self:flex-start}.sp .cover.mini{border-radius:16px}.sp .cover.mini span{font-size:46px}
.spt{display:flex;flex-direction:column;min-width:0}
.spt b{font:600 20px/1.15 var(--disp);letter-spacing:-.01em}
.spt small{margin-top:3px;color:var(--mut);font-size:13px}
.spt p{margin:8px 0 12px;color:var(--soft);font-size:14px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.go{margin-top:auto;display:inline-flex;align-items:center;gap:6px;align-self:flex-start;color:var(--g);font:600 14px var(--body)}
@media(min-width:760px){.spot{margin:22px 0 0;padding:0 0 4px;scroll-padding-left:0}.sp{flex-basis:calc(50% - 6px)}}

/* ---- categories as a single scrolling strip ---- */
.cats{display:flex;gap:8px;overflow-x:auto;margin:16px -16px 0;padding:0 16px 4px;scrollbar-width:none}
.cat{flex:none;display:flex;align-items:center;gap:7px;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:8px 14px;font:500 14px var(--body);white-space:nowrap}
.cat svg{font-size:15px}.cat:hover{border-color:var(--g)}
.cat.on{background:var(--g);border-color:var(--g);color:var(--on)}
@media(min-width:760px){.cats{margin:16px 0 0;padding:0 0 4px;flex-wrap:wrap;overflow:visible}}

/* ---- game cards ---- */
.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 14px}
@media(min-width:560px){.grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(min-width:760px){.grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:26px 16px}}
.card{display:block;min-width:0;font-family:inherit}
.thumb{position:relative}
.cover{aspect-ratio:1;border-radius:14px;display:flex;align-items:flex-end;padding:10px;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(255,255,255,.07)}
.cover span{font:600 var(--fs,24px)/1.02 var(--disp);overflow-wrap:anywhere;letter-spacing:-.01em;text-shadow:0 1px 6px rgba(0,0,0,.35)}
.cover.mini{align-items:center;justify-content:center;padding:0;border-radius:12px}.cover.mini span{font-size:22px}
.card .thumb .badge{position:absolute;top:8px;left:8px;background:rgba(20,16,13,.78);backdrop-filter:blur(4px)}
.card:hover .cover,.card:focus-visible .cover{box-shadow:0 0 0 2px var(--g)}
.card b{display:block;margin-top:10px;font:600 15px/1.3 var(--body);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card i{display:block;margin-top:3px;font:400 13px var(--body);color:var(--mut)}
.badge{display:inline-flex;align-items:center;gap:6px;background:var(--card2);border-radius:999px;padding:3px 10px;font:500 12px var(--body);color:var(--mut)}
.badge.ok{color:var(--o)}
.thumb .badge.ok{background:rgba(20,16,13,.78)}

/* ---- ranked lists (Trending / Most popular) ---- */
.duo{display:grid;gap:0 40px}
@media(min-width:760px){.duo{grid-template-columns:1fr 1fr}}
.ranks{border-top:1px solid var(--line)}
.rk{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.rk .n{flex:none;width:20px;text-align:center;font:600 17px var(--disp);color:var(--mut)}
.rt{flex:none;width:50px}
.rb{flex:1;min-width:0}.rb b{display:block;font:600 15px/1.3 var(--body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rb i{display:block;font:400 13px var(--body);color:var(--mut)}
.rk .badge{flex:none}
.rk:hover .rb b{color:var(--g)}
@media(max-width:400px){.rk .badge{display:none}}

/* ---- filters + load more ---- */
.flt{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.f label{display:block;margin:0 0 5px;font:500 12px var(--body);color:var(--mut)}
select{width:100%;background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:10px;padding:10px;font:400 14px var(--body)}
select:focus{outline:0;border-color:var(--g)}
#grid{margin-top:22px}
.more{display:flex;align-items:center;justify-content:center;width:100%;max-width:360px;margin:30px auto 0;background:none;border:1px solid var(--line);border-radius:12px;color:var(--text);padding:13px 20px;font:500 15px var(--body)}
.more:hover{border-color:var(--g);color:var(--g)}
.empty{grid-column:1/-1;color:var(--mut);font:400 15px var(--body);padding:20px 0}
.browse{display:flex;width:max-content;margin:18px 0 0;align-items:center;gap:8px;color:var(--g);font:500 15px var(--body)}

footer{border-top:1px solid var(--line);color:var(--mut);font-size:14px}
.fi{max-width:var(--w);margin:0 auto;padding:24px 16px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px 24px}
.fl{display:flex;flex-wrap:wrap;gap:8px 20px}.fl a:hover{color:var(--text)}
.gn{color:var(--g);font-weight:600}

/* ---- game page ---- */
.crumb{margin:20px 0 18px;font:400 14px/1.6 var(--body);color:var(--mut)}.crumb b{color:var(--text);font-weight:500}.crumb a:hover{color:var(--g)}
.gp-top{display:flex;gap:16px;align-items:center}
.gp-cov{flex:none;width:96px}.gp-cov .cover{border-radius:20px;padding:8px}.gp-cov .cover span{font-size:calc(var(--fs,24px)*.7)}
.gp h1{margin:0;font:600 clamp(26px,7vw,40px)/1.08 var(--disp);letter-spacing:-.02em}
.dev{margin:4px 0 10px;color:var(--mut);font-size:15px}
.bds{display:flex;flex-wrap:wrap;gap:6px}
.cta{margin-top:22px}
.dls{font-weight:500;opacity:.85}
.dl{display:flex;align-items:center;justify-content:center;gap:10px;background:var(--g);color:var(--on);border-radius:12px;padding:16px;font:600 17px var(--body)}
.dl:hover{filter:brightness(1.08)}
.cta small{display:block;margin-top:8px;color:var(--mut);font-size:13px;text-align:center}
.gp-cols{display:grid;grid-template-columns:minmax(0,1fr);gap:0}
.sec{margin-top:30px;padding-top:26px;border-top:1px solid var(--line)}
.gp h2{margin:0 0 12px;font:600 22px/1.2 var(--disp);letter-spacing:-.01em}
.desc{margin:0;max-width:68ch;color:var(--soft);font-size:16px;line-height:1.7}
.desc+.desc{margin-top:16px}
.note{margin:0 0 14px;color:var(--mut);font-size:15px}
.info{border:1px solid var(--line);background:var(--card);border-radius:14px;padding:2px 16px}
.info div{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:12px 0;border-bottom:1px solid var(--line)}.info div:last-child{border:0}
.info small{margin:0;color:var(--mut);font:400 14px var(--body)}.info span{font:500 14px var(--body);text-align:right}
.tgs{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.tg{background:var(--card2);color:var(--mut);border-radius:999px;padding:5px 12px;font:500 13px var(--body)}
.ver{border:1px solid var(--line);background:var(--card);border-radius:14px;padding:10px}.ver+.ver{margin-top:14px}
.vh{display:flex;justify-content:space-between;align-items:center;background:var(--bg);gap:10px;padding:12px 14px;border-radius:10px}.vh b{font:600 17px var(--disp)}
.rec{background:rgba(255,176,74,.13);color:var(--o);border-radius:999px;white-space:nowrap;padding:4px 12px;font:500 12px var(--body)}
.dli{display:flex;align-items:center;gap:12px;margin-top:10px;border:1px solid var(--line);background:var(--card2);border-radius:12px;padding:12px 14px}
.dli:hover{border-color:var(--g)}
.ic{flex:none;width:42px;height:42px;border-radius:12px;background:rgba(255,106,43,.14);color:var(--g);display:grid;place-items:center;font-size:20px}
.dli b{display:block;font:600 16px/1.3 var(--body)}.dli small{display:block;margin:4px 0 10px;color:var(--mut);font-size:14px}
.chip{display:inline-block;white-space:nowrap;border-radius:999px;padding:4px 12px;margin:0 6px 6px 0;background:#32271f;color:var(--soft);font:500 12px var(--body)}
.chip.ok{background:rgba(255,176,74,.14);color:var(--o)}
.mk{display:flex;gap:10px;margin-top:18px;color:var(--mut);font:400 14px/1.5 var(--body)}.mk svg{color:var(--o);margin-top:3px}
.also h2{margin:44px 0 18px;font:600 22px var(--disp)}

/* ---- screenshots ---- */
.shots{display:flex;gap:12px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding:2px 0 14px;scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.shot{flex:none;scroll-snap-align:start;display:block;border-radius:14px;overflow:hidden;background:var(--card);min-width:120px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.07);cursor:zoom-in}
.shot img{display:block;height:240px;width:auto;max-width:none;border-radius:14px}
.shot:hover,.shot:focus-visible{box-shadow:0 0 0 2px var(--g)}
.shots:focus-visible{outline-offset:6px}
@media(min-width:760px){.shot img{height:300px}}

/* fullscreen viewer (built by app.js) */
.lb{position:fixed;inset:0;z-index:100;background:#0a0705;display:flex;align-items:center;justify-content:center;padding:calc(env(safe-area-inset-top,0px) + 56px) 12px calc(env(safe-area-inset-bottom,0px) + 44px)}
.lb img{max-width:100%;max-height:100%;object-fit:contain;border-radius:10px;user-select:none;-webkit-user-drag:none}
.lb button{position:absolute;display:grid;place-items:center;border:0;border-radius:999px;background:rgba(255,255,255,.12);color:var(--text);width:44px;height:44px;font:400 28px/1 var(--body)}
.lb button:hover{background:rgba(255,255,255,.22)}
.lb .lb-x{top:calc(env(safe-area-inset-top,0px) + 8px);right:10px}
.lb .lb-p,.lb .lb-n{top:50%;margin-top:-22px}
.lb .lb-p{left:8px}.lb .lb-n{right:8px}
.lb .lb-c{position:absolute;left:0;right:0;bottom:calc(env(safe-area-inset-bottom,0px) + 12px);text-align:center;color:var(--mut);font:500 14px var(--body)}
@media(max-width:600px){.lb .lb-p,.lb .lb-n{display:none}}
body.lb-open{overflow:hidden}
@media(min-width:900px){
  .gp-cols{grid-template-columns:minmax(0,1fr) 300px;gap:0 48px}
  .gp-side{align-self:start;position:sticky;top:calc(env(safe-area-inset-top,0px) + 80px)}
  .gp-cov{width:128px}
  .cta{max-width:420px}
}
@media(max-width:430px){.ic,.dli>svg{display:none}}

/* ---- plain pages (community, legal, 404) ---- */
.ph{margin:20px 0 0;font:600 clamp(30px,8vw,44px)/1.05 var(--disp);letter-spacing:-.02em}
.gp.doc{max-width:70ch}
.doc h1{margin:0 0 16px;font-size:clamp(30px,8vw,44px)}
.doc h2{font-size:22px;margin:26px 0 8px}
.doc p,.doc li{color:var(--soft);font-size:16px;line-height:1.7}
.doc a{color:var(--g);text-decoration:underline;text-underline-offset:3px}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

.rep{margin:12px 0 0;font-size:14px}.rep a{color:var(--mut);text-decoration:underline;text-underline-offset:3px}.rep a:hover{color:var(--g)}
.news{margin:0;padding-left:20px;color:var(--soft)}.news li{margin:4px 0}
