:root{--fg:#1f2328;--mut:#5f6b76;--bg:#fff;--soft:#f6f7f9;--ac:#0b5cad;--ac2:#094c90;--line:#e3e7eb;--gold:#e9a90c;--ok:#1a7f37}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:16px/1.55 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--fg);background:var(--bg)}
a{color:var(--ac)}
[hidden]{display:none!important}
.top{border-bottom:1px solid var(--line);background:#fff}
.top .in{max-width:1100px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 16px}
.brand{font-weight:800;text-decoration:none;color:var(--fg);font-size:1.1rem;display:flex;align-items:center;gap:8px}
.top nav a{margin-left:14px;color:var(--mut);text-decoration:none;font-size:.95rem}
.wrap{max-width:760px;margin:0 auto;padding:0 18px}
.btn{display:inline-block;font:inherit;font-weight:700;background:var(--ac);color:#fff;border:0;border-radius:12px;padding:12px 20px;cursor:pointer;text-decoration:none;text-align:center;touch-action:manipulation;transition:transform .08s,background .15s}
.btn:hover{background:var(--ac2)}.btn:active{transform:scale(.97)}
.btn:focus-visible,.ib:focus-visible{outline:3px solid #9cc3ec;outline-offset:2px}
.btn.big{font-size:1.15rem;padding:15px 26px;width:100%}
.btn.sec{background:#eaf2fb;color:var(--ac)}.btn.sec:hover{background:#d9e8f8}
.btn.gold{background:var(--gold);color:#2b2100}
.btn:disabled{opacity:.5;cursor:default;transform:none}
.ad-slot{background:var(--soft);border:1px dashed #c5ccd3;border-radius:8px;color:#8a949e;font-size:.72rem;display:flex;align-items:center;justify-content:center;text-transform:uppercase;letter-spacing:.06em;margin-left:auto;margin-right:auto}
.foot{border-top:1px solid var(--line);margin-top:40px;padding:20px 16px;color:var(--mut);font-size:.88rem;text-align:center}
.foot a{color:var(--mut);margin:0 8px}
/* landing */
.hero{text-align:center;padding:28px 0 8px}
.hero h1{font-size:2.1rem;line-height:1.15;margin:.3em 0 .25em}
.hero p{color:var(--mut);font-size:1.08rem;margin:0 auto 18px;max-width:520px}
.hero svg{width:100%;max-width:420px;height:auto;border-radius:16px;display:block;margin:0 auto 18px}
.hero .btn{min-width:220px}
.feat{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;padding:0;list-style:none}
.feat li{background:var(--soft);border-radius:12px;padding:14px}
.feat b{display:block}
.how ol{padding-left:1.2em}.how li{margin:.35em 0}
.promo{background:#eaf2fb;border-radius:12px;padding:16px;margin:24px 0}
kbd{background:#fff;border:1px solid #c5ccd3;border-bottom-width:2px;border-radius:5px;padding:0 6px;font:inherit;font-size:.9em}
/* play page */
.play-page .top .in{padding:8px 14px}
.stage{display:flex;justify-content:center;align-items:flex-start;gap:28px;padding:10px 8px 0}
.rail{display:none;width:160px;height:600px;flex:none;position:sticky;top:12px}
@media(min-width:1120px){.rail{display:flex}}
.ad-top{display:none;width:728px;height:90px;margin:12px auto 0}
@media(min-width:820px){.ad-top{display:flex}}
.ad-bottom{width:min(100% - 32px,336px);height:280px;margin:32px auto 0}
.game{position:relative;flex:none;width:min(100%,440px);width:min(100%,440px,calc((100vh - 140px)*.6));width:min(100%,440px,calc((100svh - 140px)*.6));aspect-ratio:3/5;border-radius:16px;overflow:hidden;background:#454b52;box-shadow:0 4px 18px rgba(0,0,0,.12);user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}
@media(min-width:820px){.game{width:min(440px,calc((100vh - 190px)*.6))}}
#cv{position:absolute;inset:0;width:100%;height:100%;touch-action:none;display:block}
.hud{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:6px;padding:8px;pointer-events:none;color:#fff;font-weight:800;text-shadow:0 1px 3px rgba(0,0,0,.55)}
.hud .hearts{font-size:17px;letter-spacing:1px;flex:1;min-width:0;white-space:nowrap;overflow:hidden}
.hud .sc{font-size:20px;flex:1;text-align:center}
.hud .cn{flex:1;text-align:right;font-size:16px;white-space:nowrap}
.ib{pointer-events:auto;width:38px;height:38px;border-radius:10px;border:0;background:rgba(0,0,0,.35);color:#fff;font-size:18px;cursor:pointer;touch-action:manipulation;display:flex;align-items:center;justify-content:center;flex:none}
.toast{position:absolute;top:56px;left:50%;transform:translateX(-50%);background:rgba(255,255,255,.96);color:var(--fg);font-weight:700;font-size:.9rem;padding:7px 14px;border-radius:999px;box-shadow:0 3px 12px rgba(0,0,0,.2);pointer-events:none;white-space:nowrap;max-width:94%;overflow:hidden;text-overflow:ellipsis;transition:opacity .25s;opacity:0}
.toast.on{opacity:1}
.ov{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:14px;background:rgba(12,22,38,.45);overflow:auto}
.ov.solid{background:rgba(12,22,38,.72)}
.panel{background:#fff;border-radius:16px;padding:16px;width:100%;max-width:350px;text-align:center;box-shadow:0 8px 28px rgba(0,0,0,.28);margin:auto}
.panel h2{margin:.1em 0 .2em;font-size:1.35rem;line-height:1.2}
.panel p{margin:.35em 0;color:var(--mut);font-size:.9rem}
.logo{font-size:2rem;font-weight:900;letter-spacing:-.02em;color:var(--ac);line-height:1.1;margin:.1em 0}
.row{display:flex;gap:8px;margin-top:8px}.row>*{flex:1}
.stats{display:flex;justify-content:center;gap:18px;margin:6px 0 4px}
.stats b{display:block;font-size:1.35rem;line-height:1.2}.stats span{font-size:.75rem;color:var(--mut)}
.pill{display:inline-block;background:var(--soft);border-radius:999px;padding:3px 10px;font-size:.82rem;font-weight:700;margin:2px}
.badge{display:inline-block;min-width:18px;padding:0 5px;border-radius:9px;background:#d33b3b;color:#fff;font-size:.72rem;line-height:18px;margin-left:4px}
.tip{background:var(--soft);border-left:4px solid var(--ac);border-radius:8px;padding:9px 11px;text-align:left;font-size:.86rem;margin:10px 0;line-height:1.45}
.tip strong{display:block}
.tip a{font-weight:700;text-decoration:none}
.new{color:var(--ok)!important;font-weight:800}
.done-list{font-size:.82rem;text-align:left;margin:6px 0;padding:0;list-style:none}
.done-list li{padding:2px 0}
.full .panel{max-width:400px;height:100%;display:flex;flex-direction:column;text-align:left;padding:0;overflow:hidden}
.ph{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--line)}
.ph h2{margin:0;font-size:1.15rem}
.ph .x{background:var(--soft);border:0;border-radius:10px;width:36px;height:36px;font-size:18px;cursor:pointer}
.tabs{display:flex;gap:6px;padding:8px 14px 0}
.tabs button{flex:1;font:inherit;font-weight:700;font-size:.9rem;border:0;border-radius:10px;padding:8px;background:var(--soft);color:var(--mut);cursor:pointer}
.tabs button.on{background:var(--ac);color:#fff}
.pb{flex:1;overflow:auto;padding:10px 14px 14px;-webkit-overflow-scrolling:touch}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.carc{border:2px solid var(--line);border-radius:12px;padding:8px;text-align:center;font-size:.8rem}
.carc.sel{border-color:var(--ac);background:#f2f7fd}
.carc canvas{width:44px;height:76px;display:block;margin:2px auto}
.carc b{display:block;font-size:.88rem}
.carc .d{color:var(--mut);min-height:2.4em;line-height:1.2;margin:2px 0 6px}
.carc .btn{padding:7px 8px;width:100%;font-size:.82rem;border-radius:9px}
.upg{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:.85rem}
.upg .ic{font-size:1.5rem;width:34px;text-align:center}
.upg .m{flex:1;min-width:0}.upg b{display:block;font-size:.92rem}
.pips{display:flex;gap:3px;margin-top:3px}.pips i{width:16px;height:6px;border-radius:3px;background:var(--line)}.pips i.f{background:var(--ac)}
.upg .btn{padding:8px 10px;font-size:.8rem;border-radius:9px;min-width:74px}
.goal{padding:10px 0;border-bottom:1px solid var(--line);font-size:.88rem}
.goal .t{display:flex;justify-content:space-between;gap:8px}
.goal .rw{color:var(--gold);font-weight:800;white-space:nowrap}
.bar{height:8px;border-radius:4px;background:var(--line);margin-top:5px;overflow:hidden}.bar i{display:block;height:100%;background:var(--ac);border-radius:4px}
.goal.ok .bar i{background:var(--ok)}.goal.ok .t span:first-child::before{content:"✅ "}
.ach{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line);font-size:.84rem}
.ach .ic{font-size:1.5rem;width:34px;text-align:center}.ach.lock{opacity:.45}.ach.lock .ic{filter:grayscale(1)}
.ach b{display:block;font-size:.9rem}
.coinbar{font-weight:800;color:var(--fg)}
.adph{background:#fff;border-radius:14px;width:100%;max-width:340px;padding:14px;text-align:center;margin:auto}
.adph .box{height:220px;border:2px dashed #c5ccd3;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#8a949e;font-size:.85rem;margin:8px 0 12px;background:var(--soft)}
.adlbl{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:#8a949e}
.below{max-width:600px;margin:0 auto;padding:0 18px;color:var(--mut);font-size:.92rem}
