:root{
  --ground:#0f1412; --s1:#18201c; --s2:#212c26; --s3:#2b3932;
  --ink:#f2f5ef; --soft:#c3cdc5; --gold:#ffd447; --good:#5be28f; --boss:#ff7a59;
  --pad:clamp(16px,4vw,40px); --r:10px;
  --font:ui-rounded,"SF Pro Rounded","Segoe UI",system-ui,-apple-system,Roboto,sans-serif;
  --code:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:76px;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
body{margin:0;background:var(--ground);color:var(--ink);font:400 1.0625rem/1.55 var(--font);padding-bottom:env(safe-area-inset-bottom)}
a{color:inherit}
h1,h2{margin:0;line-height:1;letter-spacing:-.03em}
p{margin:0 0 .9em}
.ns{padding:var(--pad)}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;min-height:44px;padding:.6em 1.1em;border:0;border-radius:var(--r);font:700 1rem/1.2 var(--font);text-decoration:none;cursor:pointer;color:var(--ink);background:var(--s2);transition:transform .12s ease,background .12s ease}
.btn:hover{background:var(--s3)}
.btn:active{transform:scale(.97)}
.btn-main{background:var(--gold);color:#17140a}
.btn-main:hover{background:#ffe07a}
.btn-ghost{background:var(--s1)}
.btn-big{min-height:56px;font-size:1.15rem;padding:.7em 1.5em}
.btn-small{min-height:44px;padding:.3em .9em;font-size:.95rem}

.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:var(--pad);padding:10px var(--pad);background:var(--ground)}
.mark{font-weight:900;font-size:1.5rem;letter-spacing:-.04em;text-decoration:none;color:var(--gold)}
.top-nav{display:flex;gap:18px;margin-left:auto}
.top-nav a{text-decoration:none;color:var(--soft);padding:10px 0;font-weight:600}
.top-nav a:hover{color:var(--ink)}
.top-xp{margin:0;padding:6px 14px;border-radius:99px;background:var(--s2);font-weight:600}
.top-xp b{color:var(--gold)}

.hero{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);gap:var(--pad);align-items:center;padding:clamp(40px,8vw,110px) var(--pad) clamp(40px,6vw,80px)}
h1{font-size:clamp(2.4rem,5.4vw,4.9rem);font-weight:900;max-width:20ch}
.lead{font-size:clamp(1.1rem,2vw,1.4rem);line-height:1.45;max-width:36em;margin:1.2em 0 1.4em}
.card{background:var(--s1);border-radius:16px;padding:24px}
.rank{margin:0;font-size:2rem;font-weight:900;letter-spacing:-.03em;color:var(--gold)}
.lvl{font-size:1.1rem;margin:0 0 14px;color:var(--soft)}
.bar{height:18px;border-radius:99px;background:#0a0f0d;overflow:hidden}
.bar-f{display:block;height:100%;background:var(--gold);border-radius:99px;transition:width .5s ease;min-width:0}
.bar-t{margin:10px 0 4px;color:var(--soft);font-size:.98rem}
.streak{margin:0;font-weight:700}

.layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:var(--pad);padding:0 var(--pad)}
.rail{position:sticky;top:64px;align-self:start;display:flex;flex-direction:column;gap:4px;max-height:calc(100vh - 80px);overflow:auto}
.rail-i{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:var(--r);text-decoration:none;min-height:44px}
.rail-i:hover{background:var(--s1)}
.rail-i span{display:flex;flex-direction:column;line-height:1.2}
.rail-i b{font-size:.98rem}
.rail-i i{font-style:normal;color:var(--soft);font-size:.88rem}
.badge-svg{width:34px;height:38px;flex:none}
.badge-svg path{fill:var(--s3)}
.badge-svg text{fill:var(--soft);font:800 20px var(--font)}
.badge-svg.on path{fill:var(--gold)}
.badge-svg.on text{fill:#17140a}

.world{margin-bottom:clamp(60px,9vw,120px)}
.world-h{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:16px;align-items:center;margin-bottom:22px}
.world-h .badge-svg{width:52px;height:58px}
.world-h h2{font-size:clamp(1.8rem,4.2vw,3.2rem);font-weight:900;margin-bottom:6px}
.world-h p{margin:0;color:var(--soft)}
.world-c{white-space:nowrap;font-weight:700;text-align:right}
.world-c b{color:var(--gold);display:block}

.q{background:var(--s1);border-radius:14px;margin-bottom:10px;overflow:hidden}
.q.is-done{background:#16231c}
.q.is-next{background:var(--s2)}
.q-head{all:unset;box-sizing:border-box;display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:14px;align-items:center;width:100%;min-height:64px;padding:14px 18px;cursor:pointer}
.q-head:hover{background:var(--s2)}
.q-head:focus-visible{outline:3px solid var(--gold);outline-offset:-3px}
.tick{width:30px;height:30px;border-radius:50%;background:var(--s3);display:grid;place-items:center;font-weight:900;color:#06210f}
.is-done .tick{background:var(--good)}
.is-boss .tick{background:var(--boss)}
.is-boss.is-done .tick{background:var(--good)}
.q-title{font-weight:800;font-size:1.15rem;line-height:1.25}
.q-meta{display:flex;gap:10px;align-items:baseline;color:var(--soft);font-size:.92rem;white-space:nowrap}
.q-meta b{color:var(--gold)}
.q-meta i{font-style:normal}
.is-done .q-title{color:var(--soft)}
.q-body{padding:4px 18px 22px 18px}
.q-body[hidden]{display:none}
.why{color:var(--soft);font-size:1.05rem}
.q-body p{max-width:46em}
.q-foot{margin-top:18px}

.code{position:relative;margin:0 0 14px;background:#0a0f0d;border-radius:var(--r)}
.code pre{margin:0;padding:14px 100px 14px 16px;overflow-x:auto;white-space:pre-wrap;word-break:break-word}
.code code{font:400 .95rem/1.5 var(--code);color:#e8f1ea}
.code .copy{position:absolute;top:6px;right:6px}
.say{margin:0 0 14px;background:var(--s2);border-radius:var(--r);padding:14px 16px;border-left:6px solid var(--gold)}
.say.ask{border-left-color:var(--good)}
.say-h{display:flex;justify-content:space-between;align-items:center;gap:10px;font-weight:800;margin-bottom:4px}
.say-t{margin:0!important;color:var(--ink);font-size:1.02rem;max-width:none!important}
.note{border-radius:var(--r);padding:12px 16px;background:var(--s2);max-width:46em}
.note.warn{background:#3a2218}
.note strong{color:var(--gold)}
.note.warn strong{color:var(--boss)}
.idchip{display:inline-block;padding:10px 18px;border-radius:99px;background:var(--gold);color:#17140a;font-weight:900;font-size:1.3rem}

.checks{list-style:none;margin:0 0 14px;padding:0}
.checks label{display:flex;gap:14px;align-items:flex-start;min-height:44px;padding:8px 0;cursor:pointer}
input[type=checkbox],input[type=radio]{width:26px;height:26px;flex:none;accent-color:var(--gold);margin:0}
.choose{border:0;padding:0;margin:0 0 18px}
.choose legend{font-weight:800;margin-bottom:6px;padding:0}
.opt{display:flex;gap:12px;align-items:center;min-height:48px;padding:8px 14px;margin-bottom:6px;border-radius:var(--r);background:var(--s2);cursor:pointer}
.opt:has(input:checked){background:var(--s3)}
.profile{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-bottom:14px}
.profile label{display:flex;flex-direction:column;gap:6px;font-weight:700}
input[type=text]{font:inherit;font-size:1rem;min-height:48px;padding:10px 14px;border-radius:var(--r);border:2px solid var(--s3);background:var(--ground);color:var(--ink)}
input[type=text]:focus{border-color:var(--gold);outline:0}

.map{width:100%;max-width:700px;height:auto;margin:6px 0 18px}
.map rect{fill:var(--s3)}
.map text{fill:var(--ink);font:700 17px var(--font)}
.map text.sm{font-size:13px;font-weight:500;fill:var(--ink)}
.map .m-hot rect{fill:var(--gold)}
.map .m-hot text{fill:#17140a}
.map .m-b rect{fill:#2f4a3a}
.map .m-l{stroke:var(--soft);stroke-width:4;fill:none}
.map .m-core rect{fill:#3f6b52}

.progress,.faqs{padding:0 var(--pad);margin:0 0 clamp(60px,8vw,110px);max-width:1100px}
.progress h2,.faqs h2{font-size:clamp(1.8rem,4vw,3rem);font-weight:900;margin-bottom:20px}
.achs{list-style:none;padding:0;margin:0 0 22px;display:flex;flex-wrap:wrap;gap:10px}
.ach{padding:10px 16px;border-radius:99px;background:var(--s1);color:var(--soft);font-weight:600}
.ach.on{background:var(--gold);color:#17140a;font-weight:800}
.tools{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.fine{color:var(--soft);font-size:.95rem}
.faq{background:var(--s1);border-radius:var(--r);margin-bottom:8px}
.faq summary{padding:16px 18px;font-weight:800;cursor:pointer;min-height:56px;list-style-position:inside}
.faq p{padding:0 18px 4px;margin:0 0 14px;max-width:46em}

.foot{padding:var(--pad);background:var(--s1)}
.foot-big{font-size:clamp(6rem,30vw,22rem);font-weight:900;letter-spacing:-.06em;line-height:.8;margin:0 0 20px;color:var(--gold)}
.toasts{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;z-index:50;width:min(92vw,440px)}
.toast{display:flex;justify-content:space-between;align-items:center;gap:12px;background:var(--gold);color:#17140a;font-weight:800;border-radius:12px;padding:12px 16px;animation:pop .25s ease;transition:opacity .4s}
.toast .btn{background:#17140a;color:var(--gold)}
.toast.out{opacity:0}
.ta-off{position:fixed;left:-9999px}
@keyframes pop{from{transform:translateY(14px);opacity:0}to{transform:none;opacity:1}}

@media (max-width:860px){
  html{scroll-padding-top:128px}
  .hero{grid-template-columns:1fr;align-items:start}
  .layout{grid-template-columns:1fr}
  .rail{position:sticky;top:56px;z-index:10;flex-direction:row;overflow-x:auto;max-height:none;background:var(--ground);padding:6px 0;margin:0 calc(-1*var(--pad));padding-left:var(--pad);padding-right:var(--pad);-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:6px}
  .rail::-webkit-scrollbar{display:none}
  .rail-i{flex:none;padding:6px 12px 6px 8px;background:var(--s1)}
  .rail-i i{display:none}
  .top-nav{display:none}
  .top-xp{margin-left:auto}
  .world-h{grid-template-columns:auto minmax(0,1fr)}
  .world-c{grid-column:1 / -1;text-align:left}
  .q-head{grid-template-columns:30px minmax(0,1fr);}
  .q-meta{grid-column:2;white-space:normal}
}
@media (max-width:420px){.world-h .badge-svg{width:40px;height:45px}.code pre{padding-right:16px;padding-bottom:56px}.code .copy{top:auto;bottom:6px}}
.btn.copy{color:var(--gold)}
