:root{--honey:#f6b21b;--honey-dark:#d98e04;--brown:#4a2f12;--cream:#fff6dc;--green:#58b947;--green-dark:#3b8f2e;--red:#e5533d}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}html,body{overscroll-behavior:none;background:#1b1710;height:100%;margin:0;overflow:hidden}#app{width:min(100vw,56.25dvh);height:100dvh;color:var(--brown);background:#8fce5a;margin:0 auto;font-family:ui-rounded,SF Pro Rounded,Arial Rounded MT Bold,system-ui,sans-serif;font-weight:800;position:relative;overflow:hidden;container-type:inline-size}#scene{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}#fx,#hud,#markers{pointer-events:none;position:absolute;inset:0}.ico{flex:none;width:1.3em;height:1.3em;display:inline-flex}.ico svg{width:100%;height:100%}.top{padding:calc(env(safe-area-inset-top) + 10px) 10px 0;align-items:center;gap:8px;display:flex;position:absolute;top:0;left:0;right:0}.pill{color:#fff;font-variant-numeric:tabular-nums;background:#4a2f12e0;border-radius:999px;align-items:center;gap:6px;padding:5px 14px 5px 6px;font-size:20px;line-height:1;display:inline-flex}.gear{border:3px solid var(--brown);background:var(--cream);width:42px;height:42px;box-shadow:0 3px 0 var(--brown);cursor:pointer;pointer-events:auto;touch-action:manipulation;border-radius:50%;margin-left:auto;padding:6px}.gear svg{width:100%;height:100%;display:block}.gear:active{box-shadow:0 1px 0 var(--brown);transform:translateY(2px)}.pill.rate{color:#c9f5b5;padding:7px 12px;font-size:14px}.pill.quality{color:#ffe9a8;gap:4px;padding:5px 11px 5px 6px;font-size:15px}.setup .bottom-bar,.setup .menu,.setup .pill.rate,.setup .pill.quality{display:none}.bottom-bar{padding:0 8px calc(env(safe-area-inset-bottom) + 12px);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:8px;display:grid;position:absolute;bottom:0;left:0;right:0}.menu-btn{border:3px solid var(--brown);background:var(--honey);min-width:0;height:54px;box-shadow:0 4px 0 var(--brown);color:var(--brown);font:inherit;white-space:nowrap;cursor:pointer;pointer-events:auto;touch-action:manipulation;border-radius:16px;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-size:clamp(14px,4.6cqw,18px);line-height:1;display:flex;position:relative}.menu-label{text-overflow:ellipsis;min-width:0;overflow:hidden}.menu-btn:active,.menu-btn.active{box-shadow:0 1px 0 var(--brown);transform:translateY(3px)}.menu-btn.active{background:#fff}.badge{background:var(--red);color:#fff;text-align:center;border:2px solid #fff;border-radius:13px;min-width:26px;height:26px;padding:0 6px;font-size:13px;font-style:normal;line-height:22px;display:none;position:absolute;top:-9px;right:6px}.badge.show{display:block}.menu{height:60%;padding-bottom:calc(env(safe-area-inset-bottom) + 76px);border-top:4px solid var(--brown);background:var(--cream);pointer-events:auto;border-radius:22px 22px 0 0;flex-direction:column;transition:transform .25s;display:flex;position:absolute;bottom:0;left:0;right:0;transform:translateY(105%);box-shadow:0 -6px 18px #1b17104d}.menu.open{transform:none}.menu-head{justify-content:space-between;align-items:center;padding:10px 12px 6px 16px;display:flex}.menu-head h2{margin:0;font-size:20px}.menu-close{border:3px solid var(--brown);cursor:pointer;background:#fff;border-radius:50%;width:38px;height:38px;padding:7px}.menu-close svg{width:100%;height:100%;display:block}.menu-body{flex-direction:column;flex:1;min-height:0;display:flex}.tabs{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:5px;padding:2px 8px 8px;display:grid}.tab{border:3px solid var(--brown);min-width:0;color:var(--brown);font:inherit;cursor:pointer;touch-action:manipulation;background:#ecdcb8;border-radius:12px;flex-direction:column;align-items:center;gap:2px;padding:5px 2px 4px;font-size:clamp(9px,2.7cqw,12px);line-height:1.1;display:flex;position:relative}.tab .ico{width:26px;height:26px}.tab.active{background:var(--honey);box-shadow:0 3px 0 var(--brown);transform:translateY(-2px)}.tab .badge{min-width:22px;height:22px;padding:0 5px;font-size:12px;line-height:18px;top:-8px;right:-4px}.menu-list{touch-action:pan-y;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;padding:0 10px 4px;overflow-y:auto}.row{border:3px solid var(--brown);box-shadow:0 3px 0 var(--brown);background:#fff;border-radius:14px;grid-template-columns:44px 1fr auto;align-items:center;gap:10px;margin-bottom:7px;padding:6px 8px;display:grid}.row.pop{animation:.22s ease-out pop}.row.shake{animation:.25s linear shake}.row-icon{width:44px;height:44px}.row-icon svg{width:100%;height:100%}.row-main{min-width:0}.row-title{flex-wrap:wrap;align-items:center;gap:2px 6px;font-size:15px;line-height:1.15;display:flex}.row-title em{color:var(--honey-dark);font-size:12px;font-style:normal}.row-about{opacity:.7;font-size:11px;font-weight:600;line-height:1.2}.row-stat{font-variant-numeric:tabular-nums;opacity:.85;font-size:12px}.row-stat .next{color:var(--green-dark)}.tag{background:var(--red);color:#fff;border-radius:999px;padding:1px 6px;font-size:10px;line-height:1.4;display:none}.row.slow .tag{display:inline-block}.bar{background:#4a2f122e;border-radius:999px;width:100%;height:13px;margin-top:4px;display:block;position:relative;overflow:hidden}.bar i{background:var(--honey);border-radius:999px;transition:width .2s;position:absolute;inset:0 auto 0 0}.bar b{text-align:center;font-size:9px;line-height:13px;position:absolute;inset:0}.buy{border:3px solid var(--brown);min-width:88px;min-height:44px;box-shadow:0 3px 0 var(--brown);color:#fff;font:inherit;font-variant-numeric:tabular-nums;cursor:pointer;touch-action:manipulation;background:#b9b3a4;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:6px 8px;font-size:15px;line-height:1;display:flex}.buy:active{box-shadow:0 1px 0 var(--brown);transform:translateY(2px)}.row.affordable .buy{background:var(--green)}.row.maxed .buy{background:var(--honey)}.row.maxed .buy .ico{display:none}.buy-cost{align-items:center;gap:4px;display:flex}.buy-label{font-size:12px;display:none}.store-note{opacity:.75;margin:0 4px 10px;font-size:13px;font-weight:600;line-height:1.3}.row.product .buy{background:var(--honey);color:var(--brown);font-size:14px}.row.unbuilt .row-level,.row.unbuilt .row-stat,.row.unbuilt .bar{display:none}.row.unbuilt .row-icon{filter:grayscale();opacity:.55}.row.unbuilt .buy-label{display:block}.float{color:#fff;text-shadow:0 2px 0 var(--brown), 0 0 6px #4a2f12cc;white-space:nowrap;font-size:18px;animation:1s ease-out forwards rise;position:absolute;transform:translate(-50%,-50%)}#areas{pointer-events:none;position:absolute;inset:0}.area-pill{border:3px solid var(--brown);background:var(--cream);width:78px;box-shadow:0 3px 0 var(--brown);color:var(--brown);font:inherit;cursor:pointer;pointer-events:auto;touch-action:manipulation;border-radius:13px;flex-direction:column;align-items:stretch;gap:2px;margin:-24px 0 0 -39px;padding:3px;line-height:1;display:none;position:absolute;top:0;left:0}.area-pill.show{display:flex}.area-level{padding:2px 0 1px;font-size:13px}.area-cost{color:#fff;font-variant-numeric:tabular-nums;background:#b9b3a4;border-radius:8px;justify-content:center;align-items:center;gap:3px;padding:3px 2px;font-size:13px;display:flex}.area-pill.affordable .area-cost{background:var(--green)}.area-pill.maxed .area-cost{background:var(--honey);color:var(--brown)}.area-pill.maxed .area-cost .ico{display:none}.area-pill .dot{background:var(--red);border:2px solid #fff;border-radius:50%;width:18px;height:18px;display:none;position:absolute;top:-9px;right:-9px}.area-pill.full .dot{display:block}.area-level.pop{animation:.22s ease-out pop}.area-level.shake{animation:.3s ease-out shake}.guide{top:calc(env(safe-area-inset-top) + 64px);border:3px solid var(--brown);background:var(--cream);box-shadow:0 4px 0 var(--brown);border-radius:16px;align-items:center;gap:10px;padding:10px 12px;display:flex;position:absolute;left:10px;right:10px}.guide-face{flex:none;width:40px;height:40px}.guide-face svg{width:100%;height:100%}.guide p{margin:0;font-size:14px;font-weight:700;line-height:1.3}.pointer{pointer-events:none;width:44px;height:44px;margin:-52px 0 0 -22px;position:absolute;top:0;left:0}.pointer svg{filter:drop-shadow(0 3px 2px #00000059);width:100%;height:100%;animation:.7s ease-in-out infinite point}.hidden{display:none!important}.marker{background:var(--red);color:#fff;text-align:center;border:3px solid #fff;border-radius:50%;width:30px;height:30px;margin:-15px 0 0 -15px;font-size:18px;line-height:24px;display:none;position:absolute;top:0;left:0;box-shadow:0 2px 6px #00000059}.marker.show{display:block}.modal{pointer-events:auto;background:#1b171099;justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.sheet{border:4px solid var(--brown);background:var(--cream);width:100%;max-width:300px;box-shadow:0 6px 0 var(--brown);text-align:center;border-radius:22px;padding:20px 18px 18px}.sheet h2{margin:0 0 6px;font-size:22px}.sheet p{opacity:.8;margin:0 0 14px;font-size:14px;font-weight:600}.reward{justify-content:center;align-items:center;gap:8px;margin-bottom:16px;font-size:30px;display:flex}.sheet button{border:3px solid var(--brown);background:var(--green);width:100%;box-shadow:0 4px 0 var(--brown);color:#fff;font:inherit;cursor:pointer;border-radius:14px;padding:12px;font-size:18px}.sheet button+button{margin-top:12px}.choice{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.choice span{text-align:left;opacity:.8;width:100%;font-size:14px}.sheet .choice button{flex:1;width:auto;margin-top:0;padding:9px 4px;font-size:16px}.sheet .choice button.active{background:var(--honey);box-shadow:0 1px 0 var(--brown);transform:translateY(3px)}.sheet button.danger{background:var(--red)}.sheet button.plain{color:var(--brown);background:#fff}.sheet button:active{box-shadow:0 1px 0 var(--brown);transform:translateY(3px)}@keyframes rise{0%{opacity:0;transform:translate(-50%,-30%)scale(.7)}15%{opacity:1;transform:translate(-50%,-60%)scale(1.1)}to{opacity:0;transform:translate(-50%,-260%)scale(1)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}@keyframes point{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes pop{0%{transform:scale(1)}50%{transform:scale(1.06)}to{transform:scale(1)}}
