:root{
  --bg:#F1EBD6;--bg2:#E8E1C8;--panel:#FBF7E8;--line:#CFC7A6;--text:#17261C;--mute:#566557;
  --accent:#1F5D2B;--accent-ink:#F7F3E3;--accent-text:#1F5D2B;--bomb:#B8381A;--good:#1F7A46;--warn:#8A5A00;
  --shadow:0 1px 0 rgba(23,38,28,.08);
  box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#0B1510;--bg2:#101D15;--panel:#12221A;--line:#27412F;--text:#EFE9D2;--mute:#9DB0A0;
    --accent:#C6F24E;--accent-ink:#0B1510;--accent-text:#C6F24E;--bomb:#FF7A59;--good:#7BE0A0;--warn:#F2C14E;
    --shadow:none;
  }
}
:root[data-theme="dark"]{
  --bg:#0B1510;--bg2:#101D15;--panel:#12221A;--line:#27412F;--text:#EFE9D2;--mute:#9DB0A0;
  --accent:#C6F24E;--accent-ink:#0B1510;--accent-text:#C6F24E;--bomb:#FF7A59;--good:#7BE0A0;--warn:#F2C14E;
  --shadow:none;
}
html{scroll-padding-top:calc(env(safe-area-inset-top,0px) + 76px);scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:400 16px/1.55 Figtree,system-ui,sans-serif;-webkit-font-smoothing:antialiased}
a{color:var(--accent-text);text-decoration:none}
a:hover{text-decoration:underline}
button{font:inherit;color:inherit}
h1,h2,h3{font-family:'Bricolage Grotesque',Figtree,sans-serif;margin:0;letter-spacing:-.025em;line-height:1.02}
:focus-visible{outline:3px solid var(--accent-text);outline-offset:2px;border-radius:6px}
.wrap{max-width:1240px;margin:0 auto;padding:0 clamp(16px,4vw,48px)}
.mono{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:.88em}
.num{font-variant-numeric:tabular-nums}
.mute{color:var(--mute)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* nav */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:var(--bg);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:20px;min-height:64px}
.logo{display:flex;align-items:center;gap:10px;font:800 23px 'Bricolage Grotesque',sans-serif;letter-spacing:-.03em;color:var(--text);flex:none}
.logo:hover{text-decoration:none}
.links{display:flex;gap:2px;overflow-x:auto;flex:1;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.links::-webkit-scrollbar{display:none}
.links a{flex:none;display:inline-flex;align-items:center;min-height:44px;padding:0 13px;border-radius:10px;color:var(--mute);font-weight:600;font-size:15px}
.links a:hover{color:var(--text);background:var(--bg2);text-decoration:none}
.links a.on{color:var(--text);box-shadow:inset 0 -3px 0 var(--accent-text);border-radius:0}
.tools{display:flex;gap:8px;align-items:center;flex:none}
.ib{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;border:1px solid var(--line);background:transparent;color:var(--text);cursor:pointer}
.ib:hover{background:var(--bg2);text-decoration:none}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 22px;border-radius:12px;border:1px solid transparent;font-weight:700;font-size:15px;cursor:pointer;text-decoration:none;white-space:nowrap}
.btn:hover{text-decoration:none}
.btn.pri{background:var(--accent);color:var(--accent-ink)}
.btn.pri:hover{filter:brightness(1.07)}
.btn.sec{background:transparent;border-color:var(--line);color:var(--text)}
.btn.sec:hover{background:var(--bg2)}
.btn.sm{min-height:44px;padding:0 16px}
.btn[disabled]{opacity:.45;cursor:not-allowed}

/* layout helpers */
.page{padding:40px 0 72px;min-height:70vh}
.h1{font-size:clamp(40px,6.4vw,84px)}
.h2{font-size:clamp(26px,3.4vw,38px)}
.h3{font-size:22px}
.lead{font-size:clamp(17px,2vw,20px);color:var(--mute);max-width:56ch}
.row2{display:flex;flex-wrap:wrap;gap:32px}
.grow{flex:1 1 360px;min-width:0}
.rule{border:0;border-top:1px solid var(--line);margin:0}
.sec{padding:48px 0 0}
.sechead{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}

/* hero */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}
.hero .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:40px;padding-top:56px;padding-bottom:56px}
.heroL{flex:1 1 480px;min-width:0}
.heroR{flex:1 1 400px;min-width:0;display:flex;justify-content:center}
.rings{position:absolute;right:-180px;top:50%;transform:translateY(-50%);width:760px;height:760px;pointer-events:none;color:var(--accent-text);opacity:.22}
.pill{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:999px;border:1px solid var(--line);font-size:14px;font-weight:600;color:var(--mute)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--accent-text);flex:none}

/* rows / lists */
.list{border-top:1px solid var(--line)}
.li{display:grid;align-items:center;gap:14px;padding:15px 4px;border-bottom:1px solid var(--line);color:var(--text)}
a.li:hover,button.li:hover{background:var(--bg2);text-decoration:none}
.li.tok{grid-template-columns:36px minmax(0,2.2fr) minmax(0,1fr) minmax(0,1fr) 110px}
.li.hd{padding:10px 4px;color:var(--mute);font-size:13px;font-weight:600}
.mark{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:14px;background:var(--accent);color:var(--accent-ink);font:800 18px 'Bricolage Grotesque',sans-serif;flex:none}
.up{color:var(--good)}.down{color:var(--bomb)}
.spark{display:flex;align-items:flex-end;gap:3px;height:30px}
.spark i{display:block;width:7px;border-radius:2px;background:currentColor;opacity:.85}

/* panels */
.panel{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:26px;box-shadow:var(--shadow)}
.panel.flat{border-radius:8px}
.fld{width:100%;min-height:48px;padding:0 14px;border-radius:12px;border:1px solid var(--line);background:var(--bg);color:var(--text);font:500 16px Figtree,sans-serif}
.fld::placeholder{color:var(--mute)}
.lbl{display:block;margin:0 0 7px;font-weight:600;font-size:14px}
.help{font-size:14px;color:var(--mute);margin-top:6px}
.err{font-size:14px;color:var(--bomb);margin-top:6px;font-weight:600}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--text);font-weight:600;font-size:14px;cursor:pointer}
.chip:hover{background:var(--bg2)}
.chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
input[type=range]{width:100%;min-height:44px;accent-color:var(--accent-text);background:transparent}
.kv{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);font-size:15px}
.kv:last-child{border-bottom:0}
.steps{display:flex;gap:10px;flex-wrap:wrap;margin:26px 0 28px}
.stp{display:flex;align-items:center;gap:10px;padding:8px 16px 8px 8px;border-radius:999px;border:1px solid var(--line);font-weight:600;color:var(--mute);background:transparent;cursor:pointer;min-height:44px}
.stp b{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--bg2);font:800 14px 'Bricolage Grotesque',sans-serif}
.stp.on{color:var(--text);border-color:var(--accent-text)}
.stp.on b,.stp.done b{background:var(--accent);color:var(--accent-ink)}
.stp.done{color:var(--text)}

/* split bar */
.split{position:relative;height:44px;border-radius:12px;display:flex;overflow:visible;touch-action:none;user-select:none}
.split .seg{height:100%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;color:#0B1510;min-width:0;overflow:hidden}
.split .seg:first-child{border-radius:12px 0 0 12px}.split .seg:last-child{border-radius:0 12px 12px 0}
.knob{position:absolute;top:-6px;width:26px;height:56px;margin-left:-13px;border-radius:9px;background:var(--text);border:3px solid var(--bg);cursor:ew-resize;display:flex;align-items:center;justify-content:center;padding:0}
.knob:after{content:"";width:3px;height:22px;border-radius:2px;background:var(--bg)}
.legend{display:flex;flex-wrap:wrap;gap:18px;margin-top:14px;font-size:14px}
.legend span{display:inline-flex;align-items:center;gap:8px}
.legend i{width:12px;height:12px;border-radius:4px;display:inline-block}

/* chart */
.chart{width:100%;height:auto;display:block}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:6px;overflow-x:auto}
.tabs button{flex:none;min-height:44px;padding:0 16px;border:0;background:transparent;color:var(--mute);font-weight:600;cursor:pointer;border-bottom:3px solid transparent}
.tabs button.on{color:var(--text);border-bottom-color:var(--accent-text)}

/* carousel */
.car{position:relative;border:1px solid var(--line);border-radius:20px;overflow:hidden;background:var(--panel)}
.slide{display:none;padding:28px;gap:24px;flex-wrap:wrap;align-items:center}
.slide.on{display:flex}
.cdots{display:flex;gap:8px;align-items:center}
.cdots button{width:44px;height:44px;border:0;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center}
.cdots button i{display:block;width:10px;height:10px;border-radius:50%;background:var(--line)}
.cdots button.on i{background:var(--accent-text);width:26px;border-radius:6px}

/* modal / toast */
.modal{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(5,10,7,.62)}
.modal .box{background:var(--panel);border:1px solid var(--line);border-radius:22px;padding:30px;max-width:460px;width:100%}
.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:60;background:var(--text);color:var(--bg);padding:12px 20px;border-radius:12px;font-weight:600;max-width:calc(100vw - 32px)}
.flight{position:relative;height:90px;margin:18px 0}
.flight svg{position:absolute;left:0;top:30px;width:56px;height:30px;color:var(--accent-text);animation:fly 1.5s ease-in forwards}
@keyframes fly{to{transform:translateX(calc(min(420px,100vw - 150px)))}}
.flight .tgt{position:absolute;right:0;top:6px;width:78px;height:78px;color:var(--text)}

/* ring timer */
.ring{width:84px;height:84px;flex:none}
.ring text{font:800 26px 'Bricolage Grotesque',sans-serif;fill:var(--text)}

/* docs */
.docs{display:flex;flex-wrap:wrap;gap:40px;align-items:flex-start}
.toc{flex:0 0 220px;position:sticky;top:calc(env(safe-area-inset-top,0px) + 84px);display:flex;flex-direction:column;gap:2px}
.toc button{text-align:left;min-height:44px;padding:0 12px;border:0;border-left:3px solid var(--line);background:transparent;color:var(--mute);font-weight:600;cursor:pointer}
.toc button:hover{color:var(--text);border-left-color:var(--accent-text)}
.doc{flex:1 1 520px;min-width:0;max-width:760px}
.doc section{padding-bottom:40px}
.doc h2{margin-bottom:12px;font-size:30px}
.doc p,.doc li{max-width:68ch}
.doc details{border-bottom:1px solid var(--line);padding:4px 0}
.doc summary{min-height:44px;display:flex;align-items:center;font-weight:700;cursor:pointer}
@media (max-width:760px){.toc{position:static;flex:1 1 100%;flex-direction:row;overflow-x:auto}.toc button{flex:none;border-left:0;border-bottom:3px solid var(--line)}.li.tok{grid-template-columns:36px minmax(0,1fr) 90px}.li.tok .hide-s{display:none}.rings{right:-380px}}
.foot{border-top:1px solid var(--line);padding:26px 0 36px;color:var(--mute);font-size:14px}
.foot .wrap{display:flex;flex-wrap:wrap;gap:12px 28px;justify-content:space-between}
.banner{background:var(--bg2);border-bottom:1px solid var(--line);font-size:14px;color:var(--mute)}
.banner .wrap{padding-top:8px;padding-bottom:8px}

/* ===== v2 visuals ===== */
:root{--far:#C9DAB0;--mid:#A3C08F;--near:#7BA074;--sun:#F2C14E;--pop:#E7DDB8}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--far:#14291D;--mid:#10231A;--near:#0A1912;--sun:#E9E3C6;--pop:#1A2F22}}
:root[data-theme="dark"]{--far:#14291D;--mid:#10231A;--near:#0A1912;--sun:#E9E3C6;--pop:#1A2F22}

.crit{display:block;width:100%;height:100%;overflow:visible}
.blink{transform-box:fill-box;transform-origin:center;animation:blink 4.6s infinite}
@keyframes blink{0%,93%,100%{transform:scaleY(1)}96%{transform:scaleY(.08)}}
.mas{display:inline-flex;align-items:flex-end;justify-content:center;width:var(--s);height:var(--s);border-radius:30%;background:var(--bg);flex:none;overflow:hidden;padding:12% 10% 0}
.mas .crit{height:100%}
.mas.big .crit{animation:bob 3.2s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4%)}}

/* hero scene */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line);isolation:isolate}
.scene{position:absolute;inset:0;width:100%;height:100%;z-index:-1}
.scene .sun{fill:var(--sun);opacity:.9}
.scene .par{transition:transform .25s ease-out}
.scene .p1{transform:translate(calc(var(--px,0)*-8px),calc(var(--py,0)*-4px))}
.scene .p2{transform:translate(calc(var(--px,0)*-18px),calc(var(--py,0)*-8px))}
.scene .p3{transform:translate(calc(var(--px,0)*-34px),calc(var(--py,0)*-12px))}
.scene .p4{transform:translate(calc(var(--px,0)*-52px),calc(var(--py,0)*-18px))}
.ff{fill:var(--sun);opacity:0;animation:ff 6s ease-in-out infinite}
@keyframes ff{0%,100%{opacity:0;transform:translate(0,0)}30%{opacity:.9}60%{opacity:.5;transform:translate(14px,-18px)}80%{opacity:.9;transform:translate(-8px,-30px)}}
.hero .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:40px;padding-top:64px;padding-bottom:72px}
.hero h1{text-shadow:0 2px 0 var(--bg)}

/* poster cards */
.posters{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:22px;margin-top:20px}
.poster{position:relative;display:flex;flex-direction:column;gap:12px;padding:28px 20px 20px;border:2px solid var(--line);border-radius:10px;background:var(--panel);color:var(--text);transition:transform .18s,border-color .18s;transform:rotate(var(--r,0deg))}
.poster:nth-child(3n+1){--r:-.8deg}.poster:nth-child(3n+2){--r:.6deg}.poster:nth-child(3n){--r:-.3deg}
.poster:hover{transform:rotate(0) translateY(-4px);border-color:var(--accent-text);text-decoration:none}
.poster:before{content:"";position:absolute;left:50%;top:9px;width:12px;height:12px;margin-left:-6px;border-radius:50%;background:var(--bomb);box-shadow:inset -2px -2px 0 rgba(0,0,0,.25)}
.poster .top2{display:flex;align-items:center;gap:14px}
.poster .nm{font:800 20px 'Bricolage Grotesque',sans-serif;letter-spacing:-.02em;line-height:1.1;overflow-wrap:anywhere}
.tag{display:inline-block;padding:2px 10px;border-radius:999px;border:1px solid var(--line);font-size:13px;font-weight:600;color:var(--mute)}
.tag.you{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.mini{display:flex;height:8px;border-radius:5px;overflow:hidden;gap:2px}
.mini i{display:block;height:100%}

/* game tiles */
.board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;width:100%}
.shake{animation:shake .4s}
@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-7px)}40%{transform:translateX(7px)}60%{transform:translateX(-4px)}80%{transform:translateX(4px)}}
.tile{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:8px 6px 8px;aspect-ratio:1/1;min-height:96px;border-radius:22px;border:3px solid transparent;background:var(--c);color:#1d1612;cursor:pointer;overflow:hidden;font:700 13px Figtree,sans-serif;transition:transform .15s,border-color .15s}
.tile .crit{flex:1;min-height:0;width:78%;animation:bob 3.4s ease-in-out infinite;animation-delay:var(--dl,0s)}
.tile .nm{margin-top:2px;font-size:12px;font-weight:700;opacity:.8}
.tile:before{content:"";position:absolute;left:-10%;right:-10%;bottom:-14%;height:34%;border-radius:50%;background:rgba(40,70,30,.28)}
.tile:hover:not([disabled]){transform:translateY(-4px) rotate(-1.5deg);border-color:var(--accent-text)}
.tile:hover:not([disabled]) .crit{animation:wiggle .5s}
@keyframes wiggle{0%,100%{transform:rotate(0)}25%{transform:rotate(-7deg)}75%{transform:rotate(7deg)}}
.tile[disabled]{cursor:default}
.tile.sel{border-color:var(--accent-text);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent-text) 28%,transparent)}
.tile .ret{position:absolute;inset:14%;color:var(--bomb);opacity:0;pointer-events:none}
.tile.sel .ret{opacity:1;animation:spin 6s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.tile.safe{border-color:var(--good)}
.tile.safe .crit{animation:hop .7s ease-out 1}
@keyframes hop{0%{transform:translateY(0)}35%{transform:translateY(-22%) scale(1.06)}70%{transform:translateY(0)}85%{transform:translateY(-6%)}100%{transform:translateY(0)}}
.tile .badge{position:absolute;top:6px;right:6px;display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:var(--good);color:#fff}
.tile .badge svg{width:15px;height:15px}
.tile.boom{border-color:var(--bomb)}
.tile.boom .crit{animation:ouch .6s ease-out 1 forwards}
@keyframes ouch{0%{transform:translateY(0)}30%{transform:translateY(-30%) rotate(-18deg)}100%{transform:translateY(8%) rotate(14deg);opacity:.9}}
.tile .bombsvg{position:absolute;width:46%;left:27%;top:12%;filter:drop-shadow(0 3px 0 rgba(0,0,0,.2))}
.tile.boom .bombsvg{animation:pop .5s ease-out 1 forwards}
@keyframes pop{0%{transform:scale(.4)}60%{transform:scale(1.5)}100%{transform:scale(1.1)}}
.tile .mybomb{position:absolute;right:5px;bottom:20px;width:34%}
.tile .mybomb .bombsvg{position:static;width:100%}
.fuse{animation:sparkle .5s infinite alternate;transform-box:fill-box;transform-origin:center}
@keyframes sparkle{from{transform:scale(.8) rotate(0)}to{transform:scale(1.2) rotate(20deg)}}
.burst{position:absolute;left:50%;top:44%;width:0;height:0;pointer-events:none}
.burst i{position:absolute;left:-4px;top:-4px;width:9px;height:9px;border-radius:50%;background:var(--c);animation:burst .7s ease-out forwards}
@keyframes burst{from{transform:rotate(var(--a)) translateY(0);opacity:1}to{transform:rotate(var(--a)) translateY(calc(var(--d)*-1));opacity:0}}
.sparkles i{position:absolute;width:10px;height:10px;background:var(--good);clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);animation:twinkle .9s ease-out forwards}
@keyframes twinkle{from{transform:scale(0) rotate(0);opacity:1}to{transform:scale(1.8) rotate(90deg);opacity:0}}
.arrowfx{position:absolute;left:50%;top:50%;width:70px;color:var(--text);z-index:3;pointer-events:none;animation:shot .5s ease-in forwards}
@keyframes shot{from{transform:translate(-210px,150px) rotate(-35deg);opacity:1}to{transform:translate(-34px,-8px) rotate(-35deg);opacity:1}}
.leaves{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.leaves i{position:absolute;top:-14px;width:10px;height:14px;border-radius:0 80% 0 80%;animation:fall var(--d) ease-in var(--dl) forwards}
@keyframes fall{to{transform:translate(var(--x),360px) rotate(540deg);opacity:0}}
.vs{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap}
.who{display:flex;flex-direction:column;align-items:center;gap:6px;font-weight:700}
.vs b.v{font:800 28px 'Bricolage Grotesque',sans-serif;color:var(--mute)}

/* split donut + bow */
.donutw{display:flex;flex-wrap:wrap;gap:24px;align-items:center}
.donut{width:260px;max-width:100%;height:auto;touch-action:none;flex:none;user-select:none}
.donut .kn{cursor:grab;fill:var(--text);stroke:var(--bg);stroke-width:4}
.donut .kn:focus-visible{outline:none;stroke:var(--accent-text);stroke-width:5}
.bowbox{max-width:360px}
.bowsvg{width:100%;height:auto;display:block}
.pickrow{display:flex;gap:10px;flex-wrap:wrap}
.pickrow button{display:flex;align-items:center;justify-content:center;width:64px;height:64px;padding:0;border-radius:20px;border:3px solid transparent;background:transparent;cursor:pointer}
.pickrow button.on{border-color:var(--accent-text)}
.pickrow .sw{width:44px;height:44px;border-radius:50%;border:3px solid var(--panel);box-shadow:0 0 0 2px var(--line)}
.pickrow .sw.on{box-shadow:0 0 0 3px var(--accent-text)}
.opt{display:flex;flex-direction:column;gap:6px;align-items:flex-start;flex:1 1 220px;padding:20px;border-radius:18px;border:2px solid var(--line);background:transparent;color:var(--text);cursor:pointer;text-align:left}
.opt:hover{background:var(--bg2)}
.opt.on{border-color:var(--accent-text);background:var(--bg2)}
.opt svg{width:44px;height:44px;color:var(--accent-text)}
.table{display:flex;flex-direction:column;gap:14px;padding:18px;border:2px solid var(--line);border-radius:18px;background:var(--panel)}
.seats{display:flex;align-items:center;justify-content:center;gap:12px}
.seat{display:flex;align-items:center;justify-content:center;width:68px;height:68px;border-radius:50%;border:2px dashed var(--line);color:var(--mute);font:800 22px 'Bricolage Grotesque',sans-serif;overflow:hidden}
.seat .mas{border-radius:50%}
.rankrow{display:flex;gap:8px;margin-top:14px}
.rk{display:flex;flex-direction:column;align-items:center;gap:4px;flex:1;padding:10px 4px;border-radius:14px;border:1px solid var(--line);color:var(--mute);font-size:12px;font-weight:700}
.rk.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.rk.got{color:var(--text)}
.hist{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.hist i{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;font:800 14px Figtree,sans-serif;font-style:normal;color:#fff}
.stage{position:relative;overflow:hidden;border:2px solid var(--line);border-radius:22px;background:var(--bg2);padding:22px}
.shotfx{position:absolute;left:0;top:44%;width:90px;color:var(--text);z-index:4;pointer-events:none;animation:cross .9s ease-in forwards}
@keyframes cross{from{transform:translateX(-90px)}to{transform:translateX(calc(100vw))}}
.draw{stroke-dasharray:1;stroke-dashoffset:1;animation:draw 1.1s ease-out forwards}
@keyframes draw{to{stroke-dashoffset:0}}
.launchscene{position:relative;height:200px;margin:14px 0;border-radius:16px;overflow:hidden;background:var(--bg2)}
.launchscene .scene{position:absolute;inset:0}
.launchscene .arrow{position:absolute;left:0;top:92px;width:70px;color:var(--text);animation:fly2 1.4s ease-in forwards}
.launchscene .tgt{position:absolute;right:14px;top:50px;width:100px;color:var(--bomb)}
.popcard{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(0);animation:popin .5s ease-out 1.3s forwards}
@keyframes fly2{from{transform:translateX(-20px)}to{transform:translateX(calc(100% * 0 + 340px))}}
@keyframes popin{to{transform:translate(-50%,-50%) scale(1)}}
@media (max-width:760px){.launchscene .arrow{animation-name:fly2m}@keyframes fly2m{from{transform:translateX(-20px)}to{transform:translateX(200px)}}}
.arrowfx svg,.launchscene .arrow svg{width:100%;height:auto;display:block}
.tile .ret svg{width:100%;height:100%}
.pickrow .mas{pointer-events:none}
@keyframes showl{to{opacity:1}}
.donutwrap{position:relative;width:260px;max-width:100%;flex:none}
.donutwrap .ctr{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none}
.grid3{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-top:12px}
.panel.rel{position:relative;overflow:hidden}
.shotfx svg{width:100%;height:auto;display:block}

.mas.logo{padding:0;background:var(--bg2)}
.mas img{width:100%;height:100%;object-fit:cover;display:block}
@media (max-width:900px){
 .top .wrap{flex-wrap:wrap;gap:6px 12px;padding-top:8px;padding-bottom:0}
 .links{order:3;flex:1 1 100%;margin:0 -4px;-webkit-mask-image:linear-gradient(to right,#000 88%,transparent);mask-image:linear-gradient(to right,#000 88%,transparent)}
 .tools{margin-left:auto}
 html{scroll-padding-top:calc(env(safe-area-inset-top,0px) + 120px)}
}

.skel{background:var(--bg2);border-radius:12px;animation:skp 1.1s ease-in-out infinite alternate}
@keyframes skp{from{opacity:.5}to{opacity:1}}
textarea.fld{resize:vertical;font:500 16px Figtree,sans-serif}
select.fld{appearance:auto}
.noscript{padding:40px;text-align:center}
