:root{--bg:#4a21b8;--bg2:#35148f;--card:#6238d6;--ink:#ffffff;--mute:#e6dcff;--accent:#ffc71f;--accent2:#12a150;--brand:#ffc71f;--line:rgba(255,255,255,.2);--r:18px}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg) linear-gradient(180deg,#5a2be0,#3f1aa8) fixed;color:var(--ink);font-family:"Trebuchet MS","Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;line-height:1.45}
a{color:inherit;text-decoration:none}
img{display:block}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;padding:0}
:focus-visible{outline:3px solid var(--brand);outline-offset:2px}

/* header */
.top{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:14px;padding:5px 18px;background:rgba(53,20,143,.97);backdrop-filter:blur(8px);box-shadow:0 3px 14px rgba(20,5,70,.4)}
.top::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,#ffc71f,#ff8a1f,#ff4d6d,#6d3df5,#1eb6ff)}
.logo{display:flex;align-items:center;gap:8px;font-weight:900;font-size:24px;letter-spacing:.2px;white-space:nowrap}
.logo img{height:58px;width:auto}
.footlogo{height:34px;width:auto;margin-right:2px}
footer{align-items:center}
.search{position:relative;flex:1;max-width:560px;margin:0 auto}
.search input{width:100%;height:44px;border-radius:999px;border:2px solid transparent;background:#fff;color:#2a1a5e;padding:0 20px 0 46px;font:inherit;font-size:16px}
.search input::placeholder{color:#5f5288}
.search input:focus{outline:none;border-color:var(--brand)}
.search::before{content:"🔍";position:absolute;left:16px;top:10px;font-size:17px;opacity:.8}
.results{position:absolute;left:0;right:0;top:52px;background:var(--bg2);border-radius:16px;box-shadow:0 14px 34px rgba(20,5,70,.5);overflow:hidden;display:none}
.results.on{display:block}
.results a{display:flex;align-items:center;gap:12px;padding:8px 14px}
.results a:hover,.results a:focus{background:var(--card)}
.results img{width:44px;height:44px;border-radius:10px}
.results small{color:var(--mute)}
.results p{margin:0;padding:14px;color:var(--mute)}
.results a.all{justify-content:center;padding:12px;font-weight:800;border-top:1px solid var(--line)}

/* layout */
.shell{display:flex;min-height:calc(100vh - 69px)}
.side{position:sticky;top:69px;align-self:flex-start;height:calc(100vh - 69px);width:92px;flex:none;padding:14px 8px;display:flex;flex-direction:column;gap:6px;overflow:auto}
.side a{display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 4px;border-radius:14px;font-size:12px;font-weight:700;color:var(--mute)}
.side a span{font-size:24px;line-height:1}
.side a:hover{background:var(--card);color:var(--ink)}
.side a.on{background:var(--accent);color:#2a1a5e}
main{flex:1;min-width:0;padding:18px 22px 40px}
h1{margin:6px 0 14px;font-size:clamp(24px,4vw,34px)}
h2{margin:30px 0 12px;font-size:22px}
.sub{color:var(--mute);margin:0 0 14px}

/* tiles */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;grid-auto-flow:dense}
.tile{position:relative;display:block;border-radius:var(--r);overflow:hidden;aspect-ratio:1;background:var(--card);border:3px solid #fff;transition:transform .18s,box-shadow .18s;box-shadow:0 5px 14px rgba(20,5,70,.4)}
.tile img{width:100%;height:100%;object-fit:cover}
.tile:hover,.tile:focus-visible{transform:translateY(-4px) scale(1.03);box-shadow:0 12px 26px rgba(20,5,70,.55)}
.tile .name{position:absolute;left:0;right:0;bottom:0;padding:26px 10px 9px;background:linear-gradient(transparent,rgba(5,12,28,.85));color:#fff;font-weight:800;font-size:15px;opacity:0;transform:translateY(8px);transition:.18s}
.tile:hover .name,.tile:focus-visible .name{opacity:1;transform:none}
.tile.big{grid-column:span 2;grid-row:span 2}
.tag{position:absolute;top:8px;left:8px;background:var(--accent);color:#3a2a00;font-size:11px;font-weight:900;padding:2px 8px;border-radius:999px}
@media (hover:none){.tile .name{opacity:1;transform:none}}
.tile.noimg img{visibility:hidden}
.tile.noimg .name{opacity:1;transform:none}

/* play page */
.crumb{font-size:14px;color:var(--mute);margin-bottom:6px}
.crumb a:hover{color:var(--ink)}
.stage{position:relative;background:#000;border-radius:var(--r);overflow:hidden;width:100%;max-width:1100px;aspect-ratio:16/9;max-height:calc(100vh - 190px);min-height:280px;box-shadow:0 10px 28px rgba(20,5,70,.45)}
.stage.port{aspect-ratio:9/16;height:min(86vh,760px);width:auto;max-width:100%;max-height:none;min-height:0;margin:0 auto}
#stage.fake-fs{position:fixed;inset:0;z-index:999;width:100vw;max-width:none;height:100vh;height:100dvh;max-height:none;min-height:0;aspect-ratio:auto;margin:0;border-radius:0}
body.fsfake{overflow:hidden}
.fsclose{position:absolute;top:10px;right:10px;z-index:2;width:44px;height:44px;border-radius:50%;background:rgba(5,12,28,.75);color:#fff;font-size:20px;font-weight:900}
.stage iframe{position:absolute;inset:0;width:100%;height:100%;border:0;background:#fff}
.cover{color:#fff;position:absolute;inset:0;display:grid;place-items:center;background-size:cover;background-position:center}
.cover::before{content:"";position:absolute;inset:0;background:rgba(8,16,34,.55);backdrop-filter:blur(3px)}
.cover .c{position:relative;display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;padding:12px}
.cover img{width:min(190px,36vw);height:auto;aspect-ratio:1;border-radius:24px;box-shadow:0 10px 26px rgba(0,0,0,.5)}
.cover h2{margin:0;font-size:clamp(22px,4vw,34px)}
.playbtn{background:var(--accent2);color:#fff;font-weight:900;font-size:22px;padding:13px 44px;border-radius:999px;box-shadow:0 5px 0 #0c7a3c}
.playbtn:hover{filter:brightness(1.08)}
.bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;max-width:1100px;margin:12px 0}
.bar h1{margin:0;font-size:22px;flex:1 1 220px;min-width:0}
.ibtn{display:flex;align-items:center;gap:6px;background:var(--card);padding:9px 16px;border-radius:999px;font-weight:800;font-size:14px}
.ibtn:hover{background:#7650e6}
.ibtn.on{background:#d81e4a;color:#fff}
.info{max-width:1100px;display:grid;grid-template-columns:1.4fr 1fr;gap:26px}
.info h2{margin-top:22px;font-size:19px}
.info ol{padding-left:20px;margin:6px 0}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chips a,.chips span{background:var(--card);padding:5px 12px;border-radius:999px;font-size:13px;color:var(--mute)}
.chips a:hover{color:var(--ink)}
.ad{display:none;margin:18px 0;text-align:center}
body.ads .ad{display:block;min-height:90px;border:1px dashed var(--line);border-radius:12px;color:var(--mute);font-size:12px;padding:30px 0}

footer{padding:26px 22px;color:var(--mute);font-size:14px;border-top:1px solid var(--line);background:var(--bg2);display:flex;gap:18px;flex-wrap:wrap}
footer a:hover{color:var(--ink)}
.page{max-width:760px}
.page p,.page li{color:#f1ebff}

@media (max-width:860px){
  .shell{display:block}
  .side{position:static;width:auto;height:auto;flex-direction:row;overflow-x:auto;padding:10px 12px;gap:8px;background:var(--bg2);border-bottom:1px solid var(--line)}
  .side a{flex:none;flex-direction:row;gap:8px;padding:8px 14px;font-size:14px;background:var(--card)}
  main{padding:14px 14px 34px}
  .grid{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:10px}
  .info{grid-template-columns:1fr}
  .top{gap:8px;padding:5px 12px}
  .logo img{height:46px}
  .stage{aspect-ratio:auto;height:calc(100vh - 200px);height:calc(100dvh - 200px);min-height:360px}
  .stage.land{height:min(calc(100dvh - 200px),125vw);min-height:300px}
  .bar h1{flex-basis:100%}
  .ibtn{flex:1 1 auto;justify-content:center;min-height:44px;padding:9px 12px}
}
/* phone held sideways: the game takes the whole screen height */
@media (max-height:500px) and (orientation:landscape){
  .top{position:static}
  body:has(#stage) .side,body:has(#stage) .crumb{display:none}
  body:has(#stage) main{padding-top:6px}
  .stage,.stage.land{aspect-ratio:auto;height:calc(100vh - 12px);height:calc(100dvh - 12px);min-height:0;max-height:none}
  .cover img{width:92px}
  .cover .c{gap:8px;padding:6px}
  .cover h2{font-size:18px}
  .playbtn{font-size:18px;padding:9px 34px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

h2 .more{font-size:14px;font-weight:700;color:var(--mute);margin-left:10px}
h2 .more:hover{color:var(--ink)}

/* account / sign-in */
.auth{display:flex;align-items:center;margin-left:auto;position:relative}
.auth[hidden],.auth [hidden]{display:none!important}
.signin{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:#fff;color:#2b2b2b;font-weight:800;font-size:14px;padding:8px 16px 8px 10px;border-radius:999px;box-shadow:0 2px 0 rgba(0,0,0,.25);white-space:nowrap}
.signin i{font-style:normal;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#4285f4;color:#fff;font-weight:900;font-size:13px}
.signin:hover{filter:brightness(.96)}
.avatar{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;overflow:hidden;background:var(--accent);color:#3a2a00;font-weight:900;border:2px solid var(--line)}
.avatar img{width:100%;height:100%;object-fit:cover}
.menu{position:absolute;right:0;top:46px;min-width:230px;background:var(--bg2);border-radius:16px;box-shadow:0 14px 34px rgba(20,5,70,.5);padding:8px;z-index:60}
.menu .who{padding:8px 10px 10px;border-bottom:1px solid var(--line);margin-bottom:6px;display:flex;flex-direction:column}
.menu .who small{color:var(--mute);word-break:break-all}
.menu a,.menu button{display:block;width:100%;text-align:left;padding:9px 10px;border-radius:10px;font-size:14px}
.menu a:hover,.menu button:hover{background:var(--card)}
.menu .danger{color:#ffc4c4}
@media (max-width:860px){.signin span{display:none}.signin{padding:8px}.top{flex-wrap:nowrap}}

body.noads .ad{display:none!important}
