/* Dark = black + red, Light = white + red. Brand colors: --pr / --pr2 */
:root{--h:56px;--nb:64px;--top:calc(var(--h) + env(safe-area-inset-top));--bot:calc(var(--nb) + env(safe-area-inset-bottom));--r:16px}
[data-theme=dark]{--bg:#0a0a0d;--sf:#14141a;--sf2:#1b1b23;--tx:#f5f5f7;--mu:#9b9bab;--bd:#272731;--pr:#ff1b00;--pr2:#ff5a3c;--prs:rgba(255,27,0,.14);--ac:#ff8a80;--sh:0 10px 30px rgba(0,0,0,.5);--hd:rgba(20,20,26,.85)}
[data-theme=light]{--bg:#faf6f5;--sf:#ffffff;--sf2:#fff3f1;--tx:#1a1111;--mu:#6f5f5d;--bd:#eadcd9;--pr:#e61a00;--pr2:#ff4d2e;--prs:rgba(230,26,0,.09);--ac:#7f0d17;--sh:0 10px 30px rgba(120,30,20,.12);--hd:rgba(255,255,255,.88)}
*{box-sizing:border-box;margin:0}
html{-webkit-tap-highlight-color:transparent;color-scheme:light dark;scroll-behavior:smooth}
body{font:16px/1.6 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:radial-gradient(900px 380px at 50% -140px,var(--prs),transparent) no-repeat,var(--bg);color:var(--tx);padding:var(--top) 0 var(--bot);min-height:100vh}
a{color:var(--pr)}img{max-width:100%}
:focus-visible{outline:3px solid var(--pr2);outline-offset:2px}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.muted{color:var(--mu);font-size:.92rem}.sp{flex:1}
#loader{position:fixed;inset:0;z-index:100;background:var(--bg);display:grid;place-items:center;transition:opacity .3s}
#loader img{animation:pulse 1s ease-in-out infinite}#loader.hide{opacity:0;pointer-events:none}
@keyframes pulse{50%{transform:scale(1.12);opacity:.7}}
/* header + bottom nav */
.top{position:fixed;top:0;left:0;right:0;z-index:50;height:var(--top);padding:env(safe-area-inset-top) 8px 0 12px;display:flex;align-items:center;gap:0;background:var(--sf);background:var(--hd);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--bd)}
.brand{display:flex;align-items:center;gap:8px;text-decoration:none;min-width:0}.brand img{display:block}
.tx{height:20px;width:auto}[data-theme=dark] .tx-light,[data-theme=light] .tx-dark{display:none}
.ib{width:38px;height:40px;display:grid;place-items:center;border:0;background:none;color:var(--tx);border-radius:12px;cursor:pointer;transition:background .15s}
.ib:hover{background:var(--prs)}.ib svg{width:22px;height:22px}
.bot{position:fixed;bottom:0;left:0;right:0;z-index:50;height:var(--bot);padding-bottom:env(safe-area-inset-bottom);display:grid;grid-template-columns:repeat(4,1fr);background:var(--sf);background:var(--hd);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--bd)}
.bot a{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--mu);text-decoration:none;font-size:.72rem;font-weight:600;transition:color .15s}
.bot svg{width:24px;height:24px}.bot a[aria-current=page]{color:var(--pr)}
.bot a[aria-current=page]::before{content:"";position:absolute;top:0;width:30px;height:3px;border-radius:0 0 4px 4px;background:var(--pr)}
/* layout + type */
.wrap{max-width:960px;margin:0 auto;padding:20px 16px}.wrap.narrow{max-width:760px}
h1{font-size:1.7rem;line-height:1.25;margin-bottom:10px;letter-spacing:-.01em}h2{font-size:1.2rem;margin:22px 0 10px;letter-spacing:-.005em}
p{margin-bottom:12px}ul,ol{padding-left:22px;margin-bottom:12px}li{margin-bottom:6px}
.lead{color:var(--mu);font-size:1.05rem}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 22px;border:2px solid transparent;border-radius:14px;background:linear-gradient(135deg,var(--pr2),var(--pr));color:#fff;font:inherit;font-weight:700;text-decoration:none;cursor:pointer;box-shadow:0 6px 18px var(--prs);transition:transform .12s,box-shadow .12s}
.btn:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(255,27,0,.28)}.btn:active{transform:none}
.btn.ghost{background:none;color:var(--pr);border-color:var(--pr);box-shadow:none}.btn.ghost:hover{background:var(--prs)}
.btn.sm{padding:8px 14px;font-size:.9rem}.btn svg{width:18px;height:18px}
/* footer */
.foot{max-width:1040px;margin:28px auto 0;padding:28px 16px 18px;border-top:1px solid var(--bd)}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.fbrand{grid-column:1/-1}.fbrand p{color:var(--mu);font-size:.92rem;max-width:380px;margin:12px 0}
.foot nav{display:flex;flex-direction:column;gap:8px}.foot h4{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mu);margin-bottom:2px}
.foot nav a{color:var(--tx);text-decoration:none;font-size:.94rem}.foot nav a:hover{color:var(--pr)}
.fbot{display:flex;flex-wrap:wrap;gap:6px 16px;justify-content:space-between;margin-top:24px;padding-top:16px;border-top:1px solid var(--bd);color:var(--mu);font-size:.85rem}
@media(min-width:760px){.fgrid{grid-template-columns:1.5fr 1fr 1fr 1fr 1fr}.fbrand{grid-column:auto}}
.fl{display:flex;flex-wrap:wrap;gap:6px 18px}
.socials{display:flex;gap:10px;flex-wrap:wrap}.socials a{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;border:1px solid var(--bd);background:var(--sf);color:var(--tx);transition:.15s}
.socials a:hover{background:var(--pr);border-color:var(--pr);color:#fff;transform:translateY(-2px)}.socials svg{width:20px;height:20px}
/* play tab */
.stage{position:fixed;top:var(--top);bottom:var(--bot);left:0;right:0;overflow:hidden}
body[data-page=play]{overflow:hidden;overscroll-behavior:none}
#game{position:absolute;inset:44px 0 0 0;display:flex;flex-direction:column;align-items:center;justify-content:center;touch-action:none;user-select:none;-webkit-user-select:none}
#game.in-down{animation:inD .3s ease-out}#game.in-up{animation:inU .3s ease-out}
@keyframes inD{from{transform:translateY(40px);opacity:0}}@keyframes inU{from{transform:translateY(-40px);opacity:0}}
.ob{position:absolute;z-index:5;display:grid;place-items:center;border:2px solid #ff1b00;background:#ff1b00;color:#fff;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.35)}
.ob svg{width:60%;height:60%}
.gspin{position:absolute;top:50%;left:50%;margin:-20px 0 0 -20px}.spin{width:40px;height:40px;border:4px solid var(--bd);border-top-color:var(--pr);border-radius:50%;animation:sp 1s linear infinite}@keyframes sp{to{transform:rotate(360deg)}}
/* games tab + cards */
.searchbar{position:sticky;top:var(--top);z-index:20;padding:10px 16px;background:var(--bg);border-bottom:1px solid var(--bd)}
.searchbar input,.sin{width:100%;max-width:928px;display:block;margin:auto;padding:12px 16px;border:2px solid var(--bd);border-radius:14px;background:var(--sf);color:var(--tx);font:inherit}
.searchbar input:focus,.sin:focus{outline:none;border-color:var(--pr)}
.cat{content-visibility:auto;contain-intrinsic-size:auto 260px}
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
@media(min-width:600px){.grid{grid-template-columns:repeat(3,1fr);gap:16px}}@media(min-width:860px){.grid{grid-template-columns:repeat(4,1fr)}}
.card{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;aspect-ratio:1;padding:12px;overflow:hidden;border:1px solid var(--bd);border-radius:24px;background:linear-gradient(160deg,var(--sf2),var(--sf) 60%);color:var(--tx);text-decoration:none;transition:transform .15s,border-color .15s,box-shadow .15s}
.card:hover{border-color:var(--pr);transform:translateY(-3px);box-shadow:0 12px 28px var(--prs)}
.card h3{width:100%;font-size:1rem;line-height:1.3;margin:8px 0 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card p{font-size:.78rem;line-height:1.35;color:var(--mu);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
@media(min-width:420px){.card p{-webkit-line-clamp:3;font-size:.85rem}.card{padding:16px}}
.ic{display:grid;place-items:center;width:46px;height:46px;border-radius:16px;background:var(--prs);color:var(--pr)}.ic svg{width:28px;height:28px}
.card .ic{width:clamp(48px,28%,64px);aspect-ratio:1;height:auto;border-radius:18px}.card .ic svg{width:62%;height:62%}
[hidden]{display:none!important}
/* game page */
.wrap.gp{max-width:1040px}
.crumb{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;font-size:.85rem;color:var(--mu);margin-bottom:14px}.crumb a{color:var(--mu);text-decoration:none}.crumb a:hover{color:var(--pr)}.crumb i{font-style:normal;opacity:.5}.crumb span{color:var(--tx);font-weight:600}
.gh{display:flex;gap:16px;align-items:center;margin-bottom:18px}.gh h1{font-size:1.5rem;margin-bottom:4px}.gh .lead{margin-bottom:10px;font-size:1rem}
.ic.xl{width:72px;height:72px;border-radius:22px;flex:none;box-shadow:inset 0 0 0 1px var(--bd)}.ic.xl svg{width:42px;height:42px}
.chips{display:flex;flex-wrap:wrap;gap:6px}.chips span{padding:3px 11px;border-radius:99px;border:1px solid var(--bd);background:var(--sf);font-size:.78rem;font-weight:600;color:var(--mu)}.chips span:first-child{background:var(--prs);color:var(--pr);border-color:transparent}
.player{border:1px solid var(--bd);border-radius:22px;background:var(--sf);box-shadow:var(--sh);overflow:hidden}
.bar{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--bd);font-size:.95rem}
.dot{width:9px;height:9px;border-radius:50%;background:var(--pr);box-shadow:0 0 0 4px var(--prs)}
#ctl{display:flex;gap:6px}.mini{padding:6px 12px;border:1px solid var(--bd);border-radius:10px;background:var(--sf2);color:var(--tx);font:inherit;font-size:.82rem;font-weight:600;cursor:pointer}.mini:hover{border-color:var(--pr)}.mini.danger{color:var(--pr)}
.area{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;height:min(66vh,540px);background:radial-gradient(500px 260px at 50% 0,var(--prs),transparent),var(--bg);overflow:hidden;touch-action:pan-y}
.area.live{touch-action:none}
.idle{text-align:center;padding:20px}.idle .ic{margin:0 auto 12px}.idle h2{margin:0 0 4px;font-size:1.25rem}.idle .muted{margin-bottom:16px}
.fsrow{margin:14px 0 4px}
.cols{display:grid;gap:8px}@media(min-width:900px){.cols{grid-template-columns:1fr 320px;gap:28px}.area{height:560px}}
.sec h2{display:flex;align-items:center;gap:10px}.sec h2::before{content:"";width:4px;height:1.1em;border-radius:3px;background:var(--pr)}
.sec.side{border:1px solid var(--bd);border-radius:18px;background:var(--sf);padding:4px 18px 18px}
.steps{list-style:none;padding:0;counter-reset:s}.steps li{counter-increment:s;display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:1px solid var(--bd);border-radius:14px;background:var(--sf)}
.steps li::before{content:counter(s);flex:none;width:26px;height:26px;border-radius:50%;background:var(--pr);color:#fff;font-weight:700;font-size:.85rem;display:grid;place-items:center}
.dl{display:grid;grid-template-columns:max-content 1fr;gap:10px 16px;font-size:.92rem}.dl dt{font-weight:700;color:var(--mu)}.dl dd{margin:0}
/* info pages */
.hero{border-bottom:1px solid var(--bd);background:linear-gradient(135deg,var(--prs),transparent 65%),var(--sf)}
.hero-in{max-width:760px;margin:0 auto;padding:36px 16px;text-align:center}.hero h1{font-size:2rem;margin-bottom:8px}.hero p{color:var(--mu);margin:0;font-size:1.05rem}
.feats{display:grid;grid-template-columns:1fr 1fr;gap:12px}.feats.three{grid-template-columns:1fr}
@media(min-width:700px){.feats{grid-template-columns:repeat(4,1fr)}.feats.three{grid-template-columns:repeat(3,1fr)}}
.feat{display:block;padding:18px;border:1px solid var(--bd);border-radius:18px;background:var(--sf);color:var(--tx);text-decoration:none}.feat h3{font-size:1rem;margin:12px 0 4px}.feat p{font-size:.88rem;color:var(--mu);margin:0}
a.feat:hover{border-color:var(--pr);transform:translateY(-2px);box-shadow:0 10px 24px var(--prs)}a.feat{transition:.15s}
.soc-ic{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:var(--prs);color:var(--pr);flex:none}.soc-ic svg{width:22px;height:22px}
.soc-grid{display:grid;grid-template-columns:1fr;gap:10px;margin-top:12px}@media(min-width:560px){.soc-grid{grid-template-columns:1fr 1fr}}@media(min-width:860px){.soc-grid{grid-template-columns:repeat(3,1fr)}}
.soc{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--bd);border-radius:16px;background:var(--sf);color:var(--tx);text-decoration:none;transition:.15s}
.soc:hover{border-color:var(--pr);transform:translateY(-2px)}.soc b{display:block;line-height:1.2}.soc small{color:var(--mu)}
.mailcard{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:18px;border:1px solid var(--bd);border-radius:20px;background:var(--sf);box-shadow:var(--sh)}.mailcard>div{flex:1 1 180px;min-width:0}.mailcard small{display:block;color:var(--mu)}
.mail{font-size:1rem;font-weight:700;text-decoration:none}
.cta{margin:28px 0 8px;padding:26px 18px;border-radius:22px;text-align:center;background:linear-gradient(135deg,var(--prs),transparent),var(--sf);border:1px solid var(--bd)}.cta h2{margin-top:0}
.lg{padding:4px 18px 10px;margin-bottom:14px;border:1px solid var(--bd);border-radius:18px;background:var(--sf)}.lg h2{display:flex;align-items:center;gap:10px;font-size:1.1rem}
.lg h2 span{width:28px;height:28px;border-radius:50%;background:var(--pr);color:#fff;font-size:.85rem;display:grid;place-items:center;flex:none}
/* settings, stats */
.panel{border:1px solid var(--bd);border-radius:18px;background:var(--sf);padding:6px 16px 16px;margin-bottom:16px}
.row{display:flex;align-items:center;gap:12px;margin:14px 0}.row>span:first-child{flex:0 0 118px}.row select{flex:1;padding:9px;border-radius:10px;border:1px solid var(--bd);background:var(--bg);color:var(--tx);font:inherit}.row output{width:34px;text-align:right;color:var(--mu);font-size:.9rem}
.sl{position:relative;flex:1;height:6px;margin:0 14px;border-radius:6px;background:var(--bd)}
.sl-fill{position:absolute;left:0;top:0;bottom:0;width:var(--p,0);border-radius:6px;background:var(--pr)}
.sl-thumb{position:absolute;left:var(--p,0);top:50%;width:28px;height:28px;margin:-14px 0 0 -14px;border-radius:50%;background:var(--pr);border:4px solid var(--sf);box-shadow:0 0 0 2px var(--pr),0 3px 8px rgba(0,0,0,.35);cursor:grab;touch-action:none}
.sl-thumb.drag{cursor:grabbing;transform:scale(1.15)}
.swatches{display:flex;gap:12px}.swatches button{width:34px;height:34px;border-radius:50%;border:3px solid transparent;cursor:pointer;box-shadow:0 0 0 2px var(--bd)}
.swatches [data-color=red]{background:#ff1b00}.swatches [data-color=black]{background:#111}.swatches .on{box-shadow:0 0 0 3px var(--pr2);border-color:var(--sf)}
.seg{display:flex;gap:8px}.seg button{flex:1;padding:10px;border:2px solid var(--bd);border-radius:12px;background:none;color:var(--tx);font:inherit;font-weight:700;cursor:pointer}.seg .on{border-color:var(--pr);background:var(--pr);color:#fff}
.preview{position:relative;height:200px;border:2px dashed var(--bd);border-radius:14px;margin:8px 0;overflow:hidden}
.tot{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:16px}@media(min-width:600px){.tot{grid-template-columns:repeat(4,1fr)}}.tot div,.st{border:1px solid var(--bd);border-radius:14px;background:var(--sf);padding:12px;text-align:center}.tot b{display:block;font-size:1.4rem;color:var(--pr)}
.st{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;text-align:left;margin-bottom:10px}.st h3{grid-column:1/-1;font-size:1.05rem}.st small{display:block;color:var(--mu)}
/* modal + overlays */
.modal{position:fixed;inset:0;z-index:90;background:#0009;display:grid;place-items:center;padding:16px}
.mbox{width:100%;max-width:420px;max-height:85vh;overflow:auto;background:var(--sf);color:var(--tx);border:1px solid var(--bd);border-radius:20px;padding:20px;box-shadow:var(--sh);animation:pop .2s ease-out}@keyframes pop{from{transform:scale(.92);opacity:0}}
.mbox h2{margin-top:0}.mbox .btn{width:100%;margin-top:8px}
.over{text-align:center}.nb{color:var(--pr);font-weight:700}.sc{display:flex;gap:12px;margin:14px 0}.sc div{flex:1;background:var(--bg);border-radius:14px;padding:12px}.sc span{display:block;color:var(--mu);font-size:.85rem}.sc b{font-size:2rem}
.gover{position:absolute;inset:0;z-index:3;display:grid;place-items:center;padding:16px;background:#000a}.gover .mbox{max-width:320px}
.sr{display:flex;align-items:center;gap:12px;padding:8px;border-radius:12px;color:var(--tx);text-decoration:none}.sr:hover{background:var(--prs)}.sr .ic{width:40px;height:40px;border-radius:12px}.sr .ic svg{width:24px;height:24px}.sr small{display:block;color:var(--mu)}.sres{margin-top:10px}
.toast{position:fixed;left:50%;bottom:calc(var(--bot) + 14px);transform:translateX(-50%);z-index:95;background:var(--tx);color:var(--bg);padding:10px 18px;border-radius:99px;font-weight:600}
/* in-game */
.g-score{font-weight:700;font-size:1.1rem;margin-bottom:10px}.g-msg{margin-top:10px;min-height:1.5em;font-weight:700}
canvas.sn{border-radius:12px;border:2px solid var(--bd);background:var(--sf);max-width:100%}
.b2048{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;width:min(86%,360px,calc(100vh - 220px));aspect-ratio:1;padding:8px;border-radius:14px;background:var(--bd)}
.b2048 i{display:grid;place-items:center;border-radius:9px;background:#0003;font:700 clamp(1rem,5vw,1.7rem) system-ui;font-style:normal;color:#fff}
.ttt{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:min(80%,320px)}
.ttt button{aspect-ratio:1;border:0;border-radius:14px;background:var(--sf2);color:var(--tx);font:700 clamp(2rem,12vw,3.4rem) system-ui;cursor:pointer}.ttt button:disabled{cursor:default}
@media(max-width:360px){.tx{display:none}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.gname{position:absolute;top:0;left:0;right:0;height:44px;z-index:4;display:flex;align-items:center;justify-content:center;padding:0 60px;font-weight:700;font-size:1rem;pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pbtn{position:absolute;top:1px;left:10px;z-index:5;width:42px;height:42px;display:grid;place-items:center;border:0;border-radius:50%;background:rgba(0,0,0,.5);color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.pbtn svg{width:22px;height:22px}.pbtn:hover{background:var(--pr)}
.paused>*{opacity:.55;transition:opacity .2s}

.bestchip{position:absolute;top:10px;right:10px;z-index:2;padding:4px 12px;border-radius:99px;background:var(--prs);color:var(--pr);font-size:.8rem;font-weight:700}.bestchip b{color:inherit}
.btns{display:flex;gap:8px;margin-top:8px}.btns .btn{flex:1;width:auto;margin-top:0;padding:10px 8px;font-size:.9rem}
.over .muted{margin:6px 0 0}

/* framed games (sahigames-js collection) */
.gf{flex:1;width:100%;min-height:0;height:100%;border:0;display:block;background:transparent;color-scheme:normal}
.gf~.bestchip{display:none}
.em{font-style:normal;line-height:1;font-size:1.5rem;filter:saturate(1.05)}
.card .ic .em{font-size:clamp(1.5rem,7vw,2.1rem)}.ic.xl .em{font-size:2.3rem}.sr .ic .em{font-size:1.35rem}

/* ---- share popup ---- */
.mbox.share{max-width:440px}
.sh-prev{margin:0 0 12px;border-radius:16px;overflow:hidden;border:1px solid var(--bd);background:var(--sf2);min-height:140px;display:grid;place-items:center}
.sh-prev img{display:block;width:100%;max-height:46vh;object-fit:contain}
.sh-load{display:flex;flex-direction:column;align-items:center;gap:10px;padding:28px 0;color:var(--mu);font-size:.9rem;font-weight:600}
.sh-txt{margin:0 0 12px;padding:10px 12px;border-radius:12px;background:var(--sf2);border:1px solid var(--bd);color:var(--mu);font:inherit;font-size:.82rem;line-height:1.45;white-space:pre-wrap;word-break:break-word;max-height:96px;overflow:auto}
.sh-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px 6px;margin-top:16px}
.mbox .sh-b{all:unset;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;font-size:.74rem;font-weight:600;color:var(--tx);text-align:center;border-radius:12px;padding:4px 0}
.sh-b:focus-visible{outline:2px solid var(--pr);outline-offset:2px}
.sh-i{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:1.05rem;border:1px solid var(--bd);transition:transform .15s}
.sh-b:hover .sh-i,.sh-b:active .sh-i{transform:scale(1.08)}
.mbox .btn[disabled]{opacity:.55;cursor:wait;transform:none;box-shadow:none}
.sh-i{color:var(--tx);background:var(--sf2)}
.sh-i.bare{width:46px;height:46px;background:none;border:0}
.sh-i.bare svg{width:46px;height:46px;display:block}
.sh-i.fill{border-color:var(--bd)}
.sh-hint{margin:10px 2px 0;font-size:.78rem;line-height:1.4;color:var(--mu)}
.sh-hint[hidden]{display:none}

ul.tips{list-style:none;padding:0;display:grid;gap:8px}ul.tips li{padding:10px 14px;border:1px solid var(--bd);border-radius:12px;background:var(--sf)}
.faq h3{font-size:1rem;margin:16px 0 4px}.faq p{color:var(--mu);margin:0}
.catp h1{margin:6px 0 8px}.catp .lead{margin-bottom:18px}
.catlinks{display:flex;flex-wrap:wrap;gap:8px}.catlinks a{padding:6px 14px;border:1px solid var(--bd);border-radius:99px;background:var(--sf);color:var(--tx);text-decoration:none;font-size:.9rem;font-weight:600}.catlinks a:hover{border-color:var(--pr);color:var(--pr)}
.gintro h1{margin-bottom:6px}.gintro .lead{margin-bottom:10px}.cat h2 a{color:inherit;text-decoration:none}.cat h2 a:hover{color:var(--pr)}.cat .cb{color:var(--mu);margin:-4px 0 12px;font-size:.92rem}

/* profile card (Me tab) */
.profile{padding:18px 16px 14px;background:radial-gradient(420px 160px at 0 0,var(--prs),transparent),var(--sf);position:relative;overflow:hidden}
.pf-top{display:flex;align-items:center;gap:14px}
.pf-av{position:relative;flex:none;width:76px;height:76px;border-radius:50%;border:3px solid var(--pr);background:linear-gradient(135deg,var(--prs),var(--sf2));font-size:2.3rem;line-height:1;display:grid;place-items:center;cursor:pointer;box-shadow:0 0 0 4px var(--prs)}
.pf-pen{position:absolute;right:-4px;bottom:-2px;width:26px;height:26px;border-radius:50%;background:var(--pr);color:#fff;display:grid;place-items:center;border:2px solid var(--sf)}.pf-pen svg{width:13px;height:13px}
.pf-info{min-width:0}.pf-info h2{margin:0;font-size:1.35rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pf-lvl{display:flex;align-items:center;gap:8px;margin-top:4px;color:var(--mu);font-size:.9rem}
.pf-badge{background:var(--pr);color:#fff;font-weight:700;font-size:.75rem;padding:2px 10px;border-radius:99px}
.pf-bar{height:8px;border-radius:8px;background:var(--bd);margin:16px 0 6px;overflow:hidden}.pf-bar span{display:block;height:100%;width:0;border-radius:8px;background:linear-gradient(90deg,var(--pr2),var(--pr));transition:width .6s ease}
.pf-xp{display:block;color:var(--mu);font-size:.8rem}
.pf-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0}.pf-stats div{border:1px solid var(--bd);border-radius:14px;background:var(--bg);padding:10px 6px;text-align:center}.pf-stats b{display:block;font-size:1.35rem;color:var(--pr);line-height:1.2}.pf-stats small{color:var(--mu);font-size:.78rem}
.pf-edit{width:100%}.pf-edit svg{width:16px;height:16px}
.pf-form{margin-top:4px}.pf-l{display:block;margin:10px 0 6px;font-weight:700;font-size:.9rem}
.pf-form input{width:100%;padding:11px 12px;border-radius:12px;border:1px solid var(--bd);background:var(--bg);color:var(--tx);font:inherit}.pf-form input:focus{outline:2px solid var(--pr);border-color:transparent}
.pf-avs{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-bottom:12px}.pf-avs button{aspect-ratio:1;border-radius:50%;border:2px solid var(--bd);background:var(--bg);font-size:1.5rem;cursor:pointer}.pf-avs .on{border-color:var(--pr);background:var(--prs);box-shadow:0 0 0 2px var(--pr)}
.pf-note{margin:10px 0 0;font-size:.8rem}

/* stats page */
.s-tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:12px}@media(min-width:600px){.s-tiles{grid-template-columns:repeat(4,1fr)}}
.s-tile{position:relative;border:1px solid var(--bd);border-radius:16px;padding:14px 12px;background:radial-gradient(160px 80px at 0 0,var(--prs),transparent),var(--sf)}.s-tile i{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:var(--prs);color:var(--pr);margin-bottom:8px}.s-tile i svg{width:18px;height:18px}.s-tile b{display:block;font-size:1.5rem;line-height:1.2}.s-tile small{color:var(--mu)}
.s-hl{display:grid;grid-template-columns:1fr;gap:10px;margin-bottom:12px}@media(min-width:600px){.s-hl{grid-template-columns:1fr 1fr}}
.s-hc{display:flex;align-items:center;gap:12px;border:1px solid var(--bd);border-radius:16px;background:var(--sf);padding:12px}.s-hc small{display:block;color:var(--mu);font-size:.78rem}.s-hc b{display:block}.s-hc span{color:var(--pr);font-size:.85rem;font-weight:600}
.s-ic{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--prs);color:var(--pr)}.s-ic svg{width:26px;height:26px}
.s-prog{border:1px solid var(--bd);border-radius:16px;background:var(--sf);padding:12px 14px;margin-bottom:6px}.s-pt{display:flex;justify-content:space-between;margin-bottom:8px;font-size:.9rem}.s-pt b{color:var(--pr)}
.s-bar{height:6px;border-radius:6px;background:var(--bd);overflow:hidden}.s-bar span{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--pr2),var(--pr))}
.s-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-top:8px}.s-h{font-size:1.15rem;margin:18px 0 10px}.s-head .s-h{margin:18px 0 10px}
.s-sort{display:flex;gap:6px;overflow-x:auto;max-width:100%;scrollbar-width:none}.s-sort::-webkit-scrollbar{display:none}.s-sort button{flex:none;padding:6px 12px;border:1px solid var(--bd);border-radius:99px;background:none;color:var(--mu);font:inherit;font-size:.85rem;font-weight:600;cursor:pointer}.s-sort .on{background:var(--pr);border-color:var(--pr);color:#fff}
.s-list{display:grid;grid-template-columns:1fr;gap:10px}@media(min-width:700px){.s-list{grid-template-columns:1fr 1fr}}
.s-card{border:1px solid var(--bd);border-radius:18px;background:var(--sf);padding:14px}.s-card header{display:flex;align-items:center;gap:12px;margin-bottom:12px}.s-card header>div{flex:1;min-width:0}.s-card h3{font-size:1.05rem;margin:0}.s-card h3 a{color:inherit;text-decoration:none}.s-card header small{color:var(--mu)}
.s-nums{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:12px}.s-nums div{background:var(--bg);border-radius:12px;padding:8px 6px;text-align:center}.s-nums small{display:block;color:var(--mu);font-size:.72rem}.s-nums b{font-size:1.05rem}.s-nums .s-best{background:var(--prs)}.s-nums .s-best b{color:var(--pr)}
.s-time{display:flex;justify-content:space-between;font-size:.82rem;color:var(--mu);margin-bottom:6px}.s-time b{color:var(--tx)}
.s-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.s-chips a{display:inline-flex;align-items:center;gap:8px;padding:5px 12px 5px 5px;border:1px solid var(--bd);border-radius:99px;background:var(--sf);color:var(--tx);text-decoration:none;font-size:.88rem;font-weight:600}.s-chips a:hover{border-color:var(--pr)}.s-chips .s-ic{width:28px;height:28px;border-radius:50%}.s-chips .s-ic svg{width:16px;height:16px}
.s-empty{text-align:center;padding:28px 16px}.s-big{display:grid;place-items:center;width:72px;height:72px;margin:0 auto 12px;border-radius:50%;background:var(--prs);color:var(--pr)}.s-big svg{width:36px;height:36px}.s-empty h2{margin:0 0 6px}.s-empty .muted{margin-bottom:16px}

.s-range{display:flex;justify-content:center;margin:0 0 14px}.s-range .s-sort{justify-content:center}
