:root{--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px)}html{touch-action:manipulation;overscroll-behavior:none}html,body{overscroll-behavior:none;-webkit-user-select:none;user-select:none;height:100%;margin:0;font-family:Segoe UI,system-ui,sans-serif;overflow:hidden}#app{height:100dvh;position:relative}#app canvas{display:block}.hud{top:calc(12px + var(--safe-top));left:calc(12px + var(--safe-left));pointer-events:none;flex-wrap:wrap;gap:16px;display:flex;position:absolute}.hud-group{gap:8px;display:flex}.stat{color:#f2f5f7;letter-spacing:.02em;background:#141a20d1;border-radius:8px;padding:7px 14px;font-size:17px;font-weight:600}.stat.hidden{display:none}.icon-stone{filter:sepia()saturate(1.35)hue-rotate()brightness(.53)}.icon-iron{filter:sepia()hue-rotate(172deg)saturate(.55)brightness(.85)}.icon-crimsonite{filter:hue-rotate(165deg)saturate(4.5)brightness(.55)}.stat-incoming,.stat-leaks{pointer-events:auto;cursor:default;position:relative}.stat-tooltip{white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;z-index:1;background:#080a0cfa;border:1px solid #ffffff40;border-radius:8px;margin-top:6px;padding:6px 10px;font-size:15px;font-weight:600;transition:opacity .12s;position:absolute;top:100%;left:0;box-shadow:0 4px 14px #0000008c}.stat-incoming:hover .stat-tooltip,.stat-leaks:hover .stat-tooltip{opacity:1;visibility:visible}.leak-tooltip-title{opacity:.7;text-transform:uppercase;margin-top:4px;font-size:12px}.leak-team-self{color:#ffd35c}.leak-clear-bonus{color:#6fdc6f}.leak-clear-penalty{color:#ff6b6b}.leak-tooltip-note{opacity:.7;margin-top:6px;font-size:12px;font-weight:400}.stat-opponent{background:#3c1414d1}.stat-nightcycle{background:#141a3cd1}.hut-panel,.barracks-panel{top:calc(110px + var(--safe-top));left:calc(14px + var(--safe-left));color:#f2f5f7;background:#141a20eb;border-radius:10px;flex-direction:column;align-items:stretch;gap:6px;width:340px;max-height:calc(100vh - 130px);padding:12px 16px;font-size:16px;display:flex;position:absolute;overflow-y:auto}.hut-panel.hidden,.barracks-panel.hidden{display:none}.monster-panel{top:calc(148px + var(--safe-top));right:calc(14px + var(--safe-right));color:#f2f5f7;background:#141a20eb;border-radius:10px;flex-direction:column;gap:6px;width:260px;padding:12px 16px;font-size:16px;display:flex;position:absolute}.monster-panel.hidden{display:none}.stat-grid{grid-template-columns:1fr 1fr;gap:4px 10px;display:grid}.stat-grid span{opacity:.85;font-size:15px;line-height:1.4}.monster-extra,.entity-traits{flex-direction:column;gap:3px;margin:0;padding-left:18px;display:flex}.monster-extra{opacity:.85;font-size:14px}.entity-traits{opacity:.7;font-size:13px}.tutorial-panel{top:calc(12px + var(--safe-top));color:#f2f5f7;z-index:20;text-align:center;background:#141a20eb;border-radius:10px;width:420px;max-width:calc(100vw - 40px);padding:14px 18px;position:absolute;left:50%;transform:translate(-50%)}.tutorial-panel.hidden{display:none}.tutorial-header{margin-bottom:6px;font-weight:700}.tutorial-instruction{margin:0 0 10px;font-size:16px;line-height:1.4}.tutorial-actions,.tutorial-complete{justify-content:center;align-items:center;gap:10px;display:flex}.tutorial-actions.hidden,.tutorial-complete.hidden,.tutorial-next.hidden{display:none}.tutorial-highlight{pointer-events:none;z-index:15;border:2px solid #38f0ff;border-radius:10px;transition:opacity .15s,left .15s,top .15s,width .15s,height .15s;position:fixed;box-shadow:0 0 0 9999px #06080a99,0 0 16px 4px #38f0ffcc}.tutorial-highlight.hidden{display:none}.hut-panel>span,.barracks-panel>span{opacity:.75;font-size:15px}.hut-panel .upgrade-max,.barracks-panel .upgrade-max{color:#d8b545;font-weight:600}.info-header{text-align:left;align-items:center;gap:10px;width:100%;display:flex}.info-swatch{border:1px solid #ffffff2e;border-radius:8px;flex-shrink:0;width:36px;height:36px}.info-header-text{flex-direction:column;gap:2px;min-width:0;display:flex}.info-description{opacity:.7;max-width:260px;margin:0;font-size:14px;font-weight:400}.preview-badge{opacity:.65;color:#9fe8ff;font-size:13px;font-style:italic}.attack-panel{bottom:calc(110px + var(--safe-bottom));color:#f2f5f7;background:#141a20eb;border-radius:10px;flex-direction:column;align-items:center;gap:6px;max-width:640px;padding:12px 16px;font-size:16px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.attack-panel.hidden{display:none}.attack-panel>span{opacity:.75;text-align:center;font-size:14px}.attack-panel>span small{opacity:.85;display:block}.attack-catalog{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;width:100%;max-height:260px;padding-right:4px;display:grid;overflow-y:auto}.attack-tile{text-align:center;padding:10px 8px;position:relative}.attack-tile .info-swatch{width:28px;height:28px}.attack-tile-name{font-size:15px;font-weight:600}.attack-tile-cost{opacity:.8;font-size:14px}.attack-tile-badge{color:#1a1408;background:#d9b545e6;border-radius:6px;padding:1px 5px;font-size:12px;font-weight:700;position:absolute;top:4px;right:4px}.focus-row{align-items:center;gap:6px;margin-top:2px;display:flex}.focus-row>span{opacity:.7;margin-right:4px;font-size:14px}.focus-button{color:#f2f5f7;cursor:pointer;background:#26303ae6;border:2px solid #0000;border-radius:8px;padding:5px 9px;font-family:inherit;font-size:15px}.focus-button:hover:not(:disabled){border-color:#ffffff59}.focus-button.active{background:#1e3426eb;border-color:#4cd472}.focus-button:disabled{opacity:.4;cursor:default}.upgrade-path-row{flex-direction:column;gap:8px;width:100%;margin-top:4px;display:flex}.upgrade-path-row>.upgrade-button{text-align:left;align-items:flex-start}.upgrade-path-row>.upgrade-button small{white-space:normal}.menu-corner-button{top:calc(12px + var(--safe-top));right:calc(12px + var(--safe-right));color:#f2f5f7;cursor:pointer;z-index:6;background:#141a20db;border:2px solid #0000;border-radius:8px;padding:7px 12px;font-family:inherit;font-size:16px;font-weight:600;position:absolute}.menu-corner-button:hover{border-color:#ffffff59}.menu-corner-button.confirm{background:#421e1eeb;border-color:#e04848}.menu-popover{top:calc(58px + var(--safe-top));right:calc(12px + var(--safe-right));z-index:8;background:#141a20f0;border-radius:10px;flex-direction:column;gap:6px;min-width:190px;padding:8px;display:flex;position:absolute}.menu-popover.hidden{display:none}.menu-popover-button{color:#f2f5f7;text-align:left;cursor:pointer;background:#ffffff0f;border:2px solid #0000;border-radius:8px;padding:8px 12px;font-family:inherit;font-size:15px;font-weight:600}.menu-popover-button:hover{border-color:#ffffff59}.menu-popover-button.hidden{display:none}.abandon-run-button.confirm{background:#421e1eeb;border-color:#e04848}.pause-overlay{z-index:100;background:#080a0eb8;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.pause-overlay.hidden{display:none}.pause-overlay-content{color:#f2f5f7;background:#141a20f0;border-radius:12px;flex-direction:column;align-items:center;gap:16px;padding:32px 40px;display:flex}.pause-overlay-title{font-size:28px;font-weight:700}.pause-overlay-resume-button{color:#eaffea;cursor:pointer;background:#2e7d32d9;border:2px solid #eaffea99;border-radius:8px;padding:10px 22px;font-family:inherit;font-size:16px;font-weight:600}.pause-overlay-resume-button:hover{border-color:#fff}.build-bar{bottom:calc(14px + var(--safe-bottom));flex-wrap:wrap;justify-content:center;gap:10px;max-width:96vw;display:flex;position:absolute;left:50%;transform:translate(-50%)}.wave-bar{bottom:calc(14px + var(--safe-bottom));right:calc(14px + var(--safe-right));display:flex;position:absolute}.wave-bar .build-group-row{flex-direction:column}.economy-bar{bottom:calc(14px + var(--safe-bottom));left:calc(14px + var(--safe-left));display:flex;position:absolute}.economy-bar .build-group-row{flex-direction:column}.mining-bar{top:calc(60px + var(--safe-top));display:flex;position:absolute;left:50%;transform:translate(-50%)}#app.tutorial-panel-open .mining-bar{top:calc(200px + var(--safe-top))}.build-group{background:#0c101466;border:1px solid #ffffff14;border-radius:12px;flex-direction:column;align-items:center;gap:4px;padding:6px 8px 8px;display:flex}.build-group-label{text-transform:uppercase;letter-spacing:.08em;color:#f2f5f78c;font-size:12px;font-weight:700}.build-group-row{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.build-button{color:#f2f5f7;cursor:pointer;background:#141a20db;border:2px solid #0000;border-radius:10px;flex-direction:column;align-items:center;gap:2px;padding:9px 16px;font-family:inherit;font-size:16px;font-weight:600;transition:border-color .12s,transform 80ms;display:flex}.build-button small{opacity:.65;white-space:nowrap;font-size:14px;font-weight:400}.build-button:hover{border-color:#ffffff59;transform:translateY(-1px)}.build-button.active{background:#1e3426eb;border-color:#4cd472}.build-button.unaffordable{opacity:.55}.build-button.unaffordable small{opacity:1;color:#ffb4a8}.build-button:disabled{opacity:.5;cursor:default}.build-button:disabled small{opacity:1}.wave-button{background:#26422ceb;position:relative}.wave-button .stat-tooltip{margin-top:0;margin-bottom:6px;inset:auto 0 100% auto}.wave-button:hover .stat-tooltip{opacity:1;visibility:visible}.ready-button{background:#26422ceb}.ready-button.confirming{background:#785c18f2;border-color:#f0c34a}.build-button.hidden{display:none}.upgrade-panel{top:calc(110px + var(--safe-top));left:calc(14px + var(--safe-left));color:#f2f5f7;background:#141a20eb;border-radius:10px;flex-direction:column;align-items:stretch;gap:6px;width:340px;max-height:calc(100vh - 130px);padding:12px 16px;font-size:16px;display:flex;position:absolute;overflow-y:auto}.upgrade-panel.hidden{display:none}.upgrade-panel span{opacity:.75;font-size:15px}.upgrade-panel .upgrade-max{color:#d8b545;font-weight:600}.obelisk-panel{top:calc(110px + var(--safe-top));left:calc(14px + var(--safe-left));color:#f2f5f7;background:#141a20eb;border-radius:10px;flex-direction:column;align-items:stretch;gap:6px;width:340px;max-height:calc(100vh - 130px);padding:12px 16px;font-size:16px;display:flex;position:absolute;overflow-y:auto}.obelisk-panel.hidden{display:none}.obelisk-panel span{opacity:.75;font-size:15px}.obelisk-panel .upgrade-max{color:#d8b545;font-weight:600}.wall-panel{top:calc(110px + var(--safe-top));left:calc(14px + var(--safe-left));color:#f2f5f7;background:#141a20eb;border-radius:10px;flex-direction:column;align-items:stretch;gap:6px;width:340px;max-height:calc(100vh - 130px);padding:12px 16px;font-size:16px;display:flex;position:absolute;overflow-y:auto}.wall-panel.hidden{display:none}.ore-node-panel{top:calc(110px + var(--safe-top));left:calc(14px + var(--safe-left));color:#f2f5f7;background:#141a20eb;border-radius:10px;flex-direction:column;align-items:stretch;gap:6px;width:340px;max-height:calc(100vh - 130px);padding:12px 16px;font-size:16px;display:flex;position:absolute;overflow-y:auto}.ore-node-panel.hidden{display:none}.banner{color:#fff;text-shadow:0 3px 10px #0000008c;opacity:0;pointer-events:none;font-size:46px;font-weight:800;transition:opacity .25s,transform .25s;position:absolute;top:22%;left:50%;transform:translate(-50%,-50%)scale(.9)}.banner.visible{opacity:1;transform:translate(-50%,-50%)scale(1)}.banner.alert{color:#ff5c3d;animation:.6s ease-in-out infinite banner-alert-pulse}.touch-placement{z-index:25;pointer-events:none;flex-direction:column;gap:6px;display:flex;position:fixed;top:0;left:0}.touch-placement.hidden,.touch-placement-hint.hidden,.touch-placement-reason.hidden{display:none}.touch-placement-row{gap:8px;display:flex}.touch-placement-button{pointer-events:auto;color:#f2f5f7;cursor:pointer;touch-action:manipulation;background:#141a20db;border:2px solid #ffffff2e;border-radius:12px;min-width:52px;min-height:52px;font-family:inherit;font-size:24px}.touch-placement-confirm{border-color:#4cd472}.touch-placement-confirm:disabled{opacity:.4;cursor:default;border-color:#ffffff2e}.touch-placement-keep.active{background:#1e3426eb;border-color:#4cd472}.touch-placement-reason{color:#ffb4a8;background:#141a20db;border-radius:8px;max-width:220px;padding:6px 10px;font-size:14px}.touch-placement-hint{left:50%;top:calc(72px + var(--safe-top));z-index:25;color:#f2f5f7;pointer-events:none;background:#141a20db;border-radius:10px;padding:8px 14px;font-size:16px;position:fixed;transform:translate(-50%)}@keyframes banner-alert-pulse{0%,to{text-shadow:0 3px 10px #0000008c,0 0 12px #ff5c3d66}50%{text-shadow:0 3px 10px #0000008c,0 0 26px #ff5c3df2}}.spectate-banner{color:#ffb0a8;text-shadow:0 2px 6px #00000080;pointer-events:none;z-index:5;background:#141a20eb;border-radius:10px;padding:10px 18px;font-size:18px;font-weight:700;position:absolute;top:12px;left:50%;transform:translate(-50%)}.spectate-banner.hidden{display:none}.overlay{z-index:30;background:#0a0e12a8;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.overlay.hidden{display:none}.overlay-panel{color:#f2f5f7;text-align:center;background:#141a20f5;border-radius:14px;padding:36px 48px}.fireworks-canvas{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.overlay.victory{background:#0a0e1c8c}.overlay .overlay-panel{z-index:1;position:relative}.coop-end-leaks{text-align:left;max-width:360px;margin:14px auto;padding:0;list-style:none}.coop-end-row{background:#26303a80;border-radius:6px;justify-content:space-between;gap:18px;margin-bottom:4px;padding:4px 10px;font-size:16px;display:flex}.overlay-panel h1{margin:0 0 8px;font-size:39px}.overlay-panel p{opacity:.8;margin:0 0 22px}.overlay-actions{justify-content:center;gap:10px;display:flex}.main-menu{background:#0a0e1280;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.main-menu.hidden{display:none}.auth-gate{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#06090c73;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.auth-card{width:340px}.auth-logo{width:88px;height:auto;margin:0 auto 2px;display:block}.auth-title{margin:0;font-size:28px}.auth-button-row{gap:10px;display:flex}.auth-button-row .menu-button{flex:1;padding:12px 8px;font-size:17px}.auth-divider{opacity:.5;align-items:center;gap:10px;margin:2px 0;font-size:13px;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:#ffffff40;flex:1;height:1px}.auth-guest-link{color:#9fd0e8;cursor:pointer;text-underline-offset:3px;background:0 0;border:none;padding:4px;font-family:inherit;font-size:15px;font-weight:600;text-decoration:underline}.auth-guest-link:hover{color:#c8e8f5}.auth-guest-link:disabled{opacity:.4;cursor:default;text-decoration:none}.guest-badge{top:calc(104px + var(--safe-top));right:calc(12px + var(--safe-right));color:#f2c94c;z-index:6;background:#141a20d9;border-radius:8px;padding:6px 12px;font-size:13px;position:fixed}.guest-badge.hidden{display:none}.gm-button{top:calc(104px + var(--safe-top));left:calc(12px + var(--safe-left));color:#9fd8ff;cursor:pointer;z-index:6;background:#141a20d9;border:1px solid #9fd8ff66;border-radius:8px;padding:6px 12px;font-size:13px;position:fixed}.gm-button.active{color:#eaffea;background:#2e7d32d9;border-color:#eaffea99}.gm-button.hidden{display:none}.menu-panel{color:#f2f5f7;text-align:center;background:#141a20f0;border-radius:14px;flex-direction:column;align-items:stretch;gap:10px;min-width:320px;padding:34px 44px;display:flex;position:relative}html:not(.layout-compact) .menu-panel{max-height:calc(100vh - 24px);overflow-y:auto}.menu-panel.hidden{display:none}.menu-fullscreen-button{color:#f2f5f7;cursor:pointer;background:#ffffff14;border:1px solid #ffffff29;border-radius:8px;padding:6px 10px;font-family:inherit;font-size:14px;position:absolute;top:10px;right:10px}.menu-fullscreen-button.hidden,.home-screen-tip.hidden{display:none}.home-screen-tip{background:#4cd4721f;border-radius:8px;margin:0;padding:8px 10px;font-size:14px;line-height:1.4}.home-screen-tip-close{color:inherit;cursor:pointer;background:0 0;border:none;margin-left:6px;font-size:14px}.menu-button.hidden{display:none}.menu-title{margin:0;font-size:39px}.menu-tagline{opacity:.75;margin:0 0 14px}.profile-bar{cursor:pointer;background:#141a20d9;border:2px solid #0000;border-radius:10px;align-items:center;gap:10px;padding:8px 14px 8px 8px;transition:border-color .12s;display:flex;position:absolute;top:12px;left:12px}.profile-bar:hover{border-color:#ffffff59}.profile-bar.hidden{display:none}.profile-bar-avatar{object-fit:cover;border-radius:8px;flex-shrink:0;width:40px;height:40px}.profile-bar-info{flex-direction:column;gap:2px;min-width:0;display:flex}.profile-bar-name{color:#f2f5f7;font-size:15px;font-weight:700}.profile-bar-stats{opacity:.75;color:#f2f5f7;font-size:13px}.menu-button{color:#f2f5f7;cursor:pointer;background:#26303ae6;border:2px solid #0000;border-radius:10px;flex-direction:column;align-items:center;gap:2px;padding:12px 18px;font-family:inherit;font-size:20px;font-weight:600;transition:border-color .12s,transform 80ms;display:flex}.menu-button small{opacity:.65;font-size:13px;font-weight:400}.menu-button:hover:not(:disabled){border-color:#ffffff59;transform:translateY(-1px)}.menu-button:disabled{opacity:.4;cursor:default}.menu-setting{justify-content:space-between;align-items:center;gap:12px;padding:4px 0;font-size:17px;font-weight:600;display:flex}.menu-setting.hidden{display:none}.graphics-note{opacity:.7;margin:-2px 0 4px;font-size:12px}.biome-picker,.difficulty-picker,.wave-structure-picker,.mode-picker{color:#f2f5f7;cursor:pointer;background:#26303ae6;border:2px solid #0000;border-radius:8px;padding:7px 10px;font-family:inherit;font-size:16px;font-weight:600}.controls-sheet{border-collapse:collapse;opacity:.85;margin:6px 0;font-size:15px}.controls-sheet td{text-align:left;padding:3px 10px}.controls-sheet td:first-child{white-space:nowrap;color:#f5c451;font-weight:700}.mp-input{color:#f2f5f7;background:#26303ae6;border:2px solid #0000;border-radius:8px;min-width:180px;padding:7px 10px;font-family:inherit;font-size:16px;font-weight:600}.mp-input:focus{border-color:#ffffff59;outline:none}.mp-error{color:#ff8a80;margin:0;font-size:16px;font-weight:600}.mp-error.hidden{display:none}.mp-hint{opacity:.6;margin:0;font-size:16px}.mp-hint.hidden{display:none}.coop-rules-note{width:0;min-width:100%}.lobby-list{flex-direction:column;gap:6px;max-height:340px;display:flex;overflow-y:auto}.lobby-row{color:#f2f5f7;cursor:pointer;text-align:left;background:#26303ae6;border:2px solid #0000;border-radius:10px;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 14px;font-family:inherit;display:flex}.lobby-row:hover:not(:disabled){border-color:#ffffff59}.lobby-row:disabled{opacity:.45;cursor:default}.lobby-row-name{font-size:17px;font-weight:700}.lobby-row-info{opacity:.7;font-size:14px}.mp-toggles{flex-direction:column;gap:4px;margin:4px 0;display:flex}.mp-check{cursor:pointer;align-items:center;gap:8px;font-size:16px;font-weight:600;display:flex}.player-list{flex-direction:column;gap:4px;margin-bottom:6px;display:flex}.player-row{text-align:left;background:#26303a99;border-radius:8px;padding:8px 12px;font-size:17px;font-weight:600}.mp-settings-summary{opacity:.85;text-align:left;background:#26303a66;border-radius:8px;flex-direction:column;gap:3px;padding:10px 12px;font-size:16px;display:flex}.mp-settings-summary.hidden,[data-form].hidden{display:none}.mp-account-bar{opacity:.85;text-align:left;background:#26303a66;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;font-size:15px;display:flex}.mp-account-bar .menu-button{flex-direction:row;gap:6px;padding:6px 10px;font-size:15px}.achievement-list{flex-direction:column;gap:4px;max-height:460px;display:flex;overflow-y:auto}.achievement-row{background:#26303a66;border-radius:8px;flex-direction:column;gap:1px;padding:6px 10px;font-size:14px;display:flex}.achievement-row.locked{opacity:.5}.achievement-name{font-size:15px;font-weight:700}.achievement-desc{opacity:.8}.achievement-reward{color:#ffd54a;font-weight:600}.mp-equip-row{gap:10px;display:flex}.shop-list{flex-direction:column;gap:4px;max-height:460px;display:flex;overflow-y:auto}.shop-row{background:#26303a66;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;font-size:14px;display:flex}.shop-row.locked{opacity:.5}.shop-item-label{font-size:15px;font-weight:700}.shop-owned{color:#7ee787;font-size:14px;font-weight:600}.shop-buy{flex-direction:row;gap:4px;padding:4px 10px;font-size:14px}.achievement-list,.shop-list,.lobby-list,.attack-catalog,.chat-history-list{scrollbar-width:thin;scrollbar-color:#ffffff59 #26303a66}.achievement-list::-webkit-scrollbar{width:8px}.shop-list::-webkit-scrollbar{width:8px}.lobby-list::-webkit-scrollbar{width:8px}.attack-catalog::-webkit-scrollbar{width:8px}.chat-history-list::-webkit-scrollbar{width:8px}.achievement-list::-webkit-scrollbar-track{background:#26303a66;border-radius:8px}.shop-list::-webkit-scrollbar-track{background:#26303a66;border-radius:8px}.lobby-list::-webkit-scrollbar-track{background:#26303a66;border-radius:8px}.attack-catalog::-webkit-scrollbar-track{background:#26303a66;border-radius:8px}.chat-history-list::-webkit-scrollbar-track{background:#26303a66;border-radius:8px}.achievement-list::-webkit-scrollbar-thumb{background:#ffffff59;border-radius:8px}.shop-list::-webkit-scrollbar-thumb{background:#ffffff59;border-radius:8px}.lobby-list::-webkit-scrollbar-thumb{background:#ffffff59;border-radius:8px}.attack-catalog::-webkit-scrollbar-thumb{background:#ffffff59;border-radius:8px}.chat-history-list::-webkit-scrollbar-thumb{background:#ffffff59;border-radius:8px}.achievement-list::-webkit-scrollbar-thumb:hover{background:#ffffff80}.shop-list::-webkit-scrollbar-thumb:hover{background:#ffffff80}.lobby-list::-webkit-scrollbar-thumb:hover{background:#ffffff80}.attack-catalog::-webkit-scrollbar-thumb:hover{background:#ffffff80}.chat-history-list::-webkit-scrollbar-thumb:hover{background:#ffffff80}.chat-root{left:calc(12px + var(--safe-left));bottom:calc(12px + var(--safe-bottom));z-index:50;flex-direction:column;align-items:flex-start;gap:8px;max-width:340px;font-size:15px;display:flex;position:fixed}.chat-root.hidden{display:none}.chat-toasts{flex-direction:column;gap:4px;width:100%;display:flex}.chat-toast{color:#f2f5f7;opacity:1;word-break:break-word;background:#141a20d9;border-radius:8px;padding:6px 10px;transition:opacity .4s}.chat-toast.chat-toast-fade{opacity:0}.chat-sender{font-weight:700}.chat-toggle{color:#f2f5f7;cursor:pointer;background:#141a20d9;border:none;border-radius:50%;width:40px;height:40px;font-size:18px}.chat-toggle:hover{background:#1e262ef2}.chat-history-panel{background:#0f1419f0;border-radius:10px;flex-direction:column;gap:6px;width:320px;max-height:320px;padding:10px;display:flex}.chat-history-panel.hidden{display:none}.chat-history-header{color:#f2f5f7;justify-content:space-between;align-items:center;font-weight:600;display:flex}.chat-history-close{color:#f2f5f7;cursor:pointer;background:0 0;border:none;font-size:16px}.chat-history-list{color:#f2f5f7;flex-direction:column;gap:4px;display:flex;overflow-y:auto}.chat-history-row{word-break:break-word;gap:6px;display:flex}.chat-time{color:#ffffff73;flex-shrink:0;font-size:12px}.chat-input-bar.hidden{display:none}.chat-input{box-sizing:border-box;color:#f2f5f7;background:#0f1419f0;border:1px solid #ffffff40;border-radius:8px;width:100%;padding:8px 10px;font-size:15px}.small-screen-block{z-index:9999;color:#f2f5f7;text-align:center;background:#0a0e12f5;flex-direction:column;justify-content:center;align-items:center;padding:24px;font-family:Segoe UI,system-ui,sans-serif;display:none;position:fixed;inset:0}.small-screen-block-icon{font-size:74px;animation:1.4s ease-in-out infinite small-screen-bounce}.small-screen-block h1{margin:18px 0 8px;font-size:30px}.small-screen-block p{opacity:.8;max-width:380px;margin:0;font-size:17px;line-height:1.5}@keyframes small-screen-bounce{0%,to{transform:translateY(0)rotate(-8deg)}50%{transform:translateY(-14px)rotate(8deg)}}html.layout-too-small .small-screen-block{justify-content:safe center;display:flex;overflow-y:auto}.small-screen-size{opacity:.8;margin:0 0 8px;font-size:15px}.rotate-prompt{z-index:9999;color:#f2f5f7;text-align:center;background:#0a0e12f5;justify-content:center;align-items:center;padding:24px;font-family:Segoe UI,system-ui,sans-serif;display:none;position:fixed;inset:0}html.layout-rotate .rotate-prompt{display:flex}.rotate-prompt-mouse,html.layout-touch .rotate-prompt-touch{display:block}.rotate-prompt-touch,html.layout-touch .rotate-prompt-mouse{display:none}.rotate-prompt-icon{font-size:74px;animation:2.4s ease-in-out infinite rotate-prompt-turn}.rotate-prompt h1{margin:18px 0 8px;font-size:30px}.rotate-prompt p{opacity:.8;margin:0;font-size:17px;line-height:1.5}@keyframes rotate-prompt-turn{0%,20%{transform:rotate(0)}50%,80%{transform:rotate(-90deg)}to{transform:rotate(0)}}@media (prefers-reduced-motion:reduce){.rotate-prompt-icon{animation:none}}#app.menu-open .hud,#app.menu-open .build-bar,#app.menu-open .wave-bar,#app.menu-open .economy-bar,#app.menu-open .mining-bar,#app.menu-open .upgrade-panel,#app.menu-open .hut-panel,#app.menu-open .barracks-panel,#app.menu-open .obelisk-panel,#app.menu-open .wall-panel,#app.menu-open .tutorial-panel,#app.menu-open .tutorial-highlight,#app.menu-open .ore-node-panel,#app.menu-open .monster-panel,#app.menu-open .attack-panel,#app.menu-open .banner,#app.menu-open .guest-badge,#app.menu-open .gm-button,#app.menu-open .menu-corner-button,#app.menu-open .audio-popover,#app.menu-open .menu-popover,#app.menu-open .touch-placement,#app.menu-open .hud-view-toggle,#app.menu-open .sheet-close,#app.menu-open .rail-bubble,#app.menu-open .compact-fullscreen-button,#app.menu-open .compact-recenter-button,#app.menu-open .touch-placement-hint,#app.menu-open .pause-overlay{display:none}.tutorial-chapter-list{text-align:left;flex-direction:column;gap:8px;max-height:340px;display:flex;overflow-y:auto}.tutorial-chapter-row{background:#ffffff0f;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;display:flex}.tutorial-chapter-info{flex-direction:column;gap:2px;display:flex}.tutorial-chapter-info small{opacity:.75}.audio-settings-panel{flex-direction:column;gap:10px;margin:10px 0;display:flex}.audio-slider-row{justify-content:space-between;align-items:center;gap:12px;font-size:15px;font-weight:600;display:flex}.audio-slider{accent-color:#f5c451;flex:1;max-width:180px}.audio-mute-row{justify-content:flex-start;gap:8px}.music-picker{border-top:1px solid #ffffff26;flex-direction:column;gap:8px;padding-top:10px;display:flex}.music-picker.hidden{display:none}.music-now-playing{align-items:center;gap:8px;display:flex}.music-title{text-align:center;color:#f5c451;flex:1;font-size:14px;font-weight:600}.music-skip,.music-track{color:inherit;cursor:pointer;font:inherit;background:#ffffff14;border:1px solid #ffffff26;border-radius:6px}.music-skip{padding:4px 10px;font-size:16px}.music-track-list{flex-direction:column;gap:4px;display:flex}.music-track{text-align:left;padding:6px 10px;font-size:13px}.music-skip:hover,.music-track:hover{background:#ffffff29}.music-track.playing{color:#f5c451;border-color:#f5c451}.audio-popover{top:calc(58px + var(--safe-top));right:calc(12px + var(--safe-right));color:#f2f5f7;z-index:7;min-width:200px;max-height:calc(100vh - 70px - var(--safe-top) - var(--safe-bottom));background:#141a20f0;border-radius:10px;padding:12px 16px;position:absolute;overflow-y:auto}.audio-popover.hidden{display:none}.faction-select{z-index:50;background:#0a0e12b8;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.faction-select.hidden{display:none}.faction-select-panel{color:#f2f5f7;background:#141a20f5;border-radius:14px;flex-direction:column;align-items:center;gap:18px;width:min(560px,90vw);max-height:85vh;padding:30px 36px;display:flex}.faction-select-title{text-align:center;margin:0}.faction-accordion{flex-direction:column;gap:8px;width:100%;max-height:58vh;display:flex;overflow-y:auto}.faction-item{background:#ffffff0a;border:1px solid #0000;border-radius:10px;flex-direction:column;display:flex;overflow:hidden}.faction-item.dim{opacity:.5}.faction-item.marked{background:#d8b34a1f;border-color:#d8b34a}.faction-row{cursor:pointer;width:100%;color:inherit;text-align:center;font:inherit;background:0 0;border:none;border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:10px 12px;display:flex}.faction-row:hover{background:#ffffff14}.faction-row.marked{color:#f5dd9a}.faction-item-body{grid-template-rows:0fr;transition:grid-template-rows .3s;display:grid}.faction-item.expanded .faction-item-body{grid-template-rows:1fr}.faction-item-body-inner{opacity:0;text-align:center;min-height:0;padding:0 16px;transition:opacity .2s,padding .3s;overflow:hidden}.faction-item.expanded .faction-item-body-inner{opacity:1;padding:4px 16px 16px}.faction-tagline{opacity:.8;margin:0 0 6px;font-style:italic}.faction-hint{margin:0;line-height:1.4}.faction-select-footer{flex-direction:column;align-items:center;gap:8px;display:flex}.faction-waiting{opacity:.8;font-style:italic}.faction-waiting.hidden{display:none}.faction-lock-button:disabled{opacity:.5;cursor:not-allowed}.reconnect-overlay{z-index:60;background:#0a0e12b8;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.reconnect-overlay.hidden{display:none}.reconnect-panel{color:#f2f5f7;text-align:center;background:#141a20f5;border-radius:14px;flex-direction:column;align-items:center;gap:16px;width:min(420px,90vw);padding:30px 36px;display:flex}.reconnect-title{margin:0}.coop-pause-card{z-index:45;pointer-events:none;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.coop-pause-card.hidden{display:none}.coop-pause-panel{color:#f2f5f7;pointer-events:auto;background:#141a20f0;border-radius:14px;flex-direction:column;align-items:stretch;gap:12px;width:min(420px,90vw);padding:20px 28px;display:flex}.coop-pause-title{text-align:center;margin:0}.coop-pause-row{justify-content:space-between;align-items:center;gap:10px;font-size:14px;display:flex}.coop-pause-countdown{text-align:center;font-weight:600}.coop-pause-countdown.hidden,.coop-pause-resume.hidden,.stat-ores,.hud-view-toggle,.sheet-close,.rail-bubble,.compact-fullscreen-button,.compact-recenter-button{display:none}.stat-incoming.open .stat-tooltip,.stat-leaks.open .stat-tooltip,.stat-ores.open .stat-tooltip,.wave-button.open .stat-tooltip{opacity:1;visibility:visible}.stat-ores{pointer-events:auto;cursor:pointer;position:relative}.ore-row{padding:2px 0}html.layout-compact .hud{top:calc(8px + var(--safe-top));left:calc(8px + var(--safe-left));flex-wrap:nowrap;gap:6px}html.layout-compact .hud-group{gap:4px}html.layout-compact .stat{white-space:nowrap;border-radius:6px;padding:4px 8px;font-size:13px}html.layout-compact .stat-stone,html.layout-compact .stat-iron,html.layout-compact .stat-crimsonite,html.layout-compact .stat-diamond,html.layout-compact .stat-label{display:none}html.layout-compact .stat-ores{display:block}html.layout-compact .stat-tooltip{font-size:13px}html.layout-compact .menu-corner-button{top:calc(8px + var(--safe-top));right:calc(8px + var(--safe-right));padding:6px 10px}html.layout-compact .menu-corner-label,html.layout-compact .gm-label{display:none}html.layout-compact .guest-badge{top:calc(8px + var(--safe-top));right:calc(104px + var(--safe-right));pointer-events:auto;cursor:pointer;padding:6px 9px}html.layout-compact .guest-badge-text{display:none}html.layout-compact .guest-badge.open{max-width:60vw}html.layout-compact .guest-badge.open .guest-badge-text{display:inline}html.layout-compact .gm-button{top:calc(8px + var(--safe-top));left:auto;right:calc(152px + var(--safe-right));padding:6px 9px}html.layout-compact .build-bar,html.layout-compact .mining-bar{top:calc(56px + var(--safe-top));bottom:calc(64px + var(--safe-bottom));right:calc(8px + var(--safe-right));overscroll-behavior:contain;scrollbar-width:none;touch-action:pan-y;flex-flow:column;justify-content:flex-start;gap:6px;width:64px;max-width:none;padding:2px 0;left:auto;overflow:hidden auto;transform:none}html.layout-compact .build-bar::-webkit-scrollbar{display:none}html.layout-compact .mining-bar::-webkit-scrollbar{display:none}html.layout-compact .build-bar .build-group,html.layout-compact .mining-bar .build-group{background:0 0;border:none;gap:6px;padding:0}html.layout-compact .build-group+.build-group{border-top:1px solid #ffffff2e;padding-top:6px}html.layout-compact .build-bar .build-group-label,html.layout-compact .mining-bar .build-group-label,html.layout-compact .build-bar .build-name,html.layout-compact .mining-bar .build-name{display:none}html.layout-compact .build-bar .build-group-row,html.layout-compact .mining-bar .build-group-row{flex-flow:column;gap:6px}html.layout-compact .build-bar .build-button,html.layout-compact .mining-bar .build-button{-webkit-touch-callout:none;gap:0;width:56px;min-height:56px;padding:4px 2px;font-size:22px}html.layout-compact .build-bar .build-button small,html.layout-compact .mining-bar .build-button small{text-overflow:ellipsis;max-width:52px;font-size:11px;overflow:hidden}html.layout-compact .build-bar .build-extra,html.layout-compact .mining-bar .build-extra{display:none}html.layout-compact .rail-bubble.visible{display:flex}.rail-bubble{z-index:26;color:#f2f5f7;pointer-events:none;background:#080a0cf5;border:1px solid #ffffff40;border-radius:8px;flex-direction:column;gap:2px;max-width:220px;padding:8px 10px;font-size:14px;position:fixed;transform:translateY(-50%)}.rail-bubble small{opacity:.8;font-size:12px}html.layout-compact #app:not(.hud-view-mining) .mining-bar,html.layout-compact #app.hud-view-mining .build-bar{display:none}html.layout-compact .wave-bar{bottom:calc(8px + var(--safe-bottom));right:calc(8px + var(--safe-right))}html.layout-compact .wave-bar .build-group{background:0 0;border:none;padding:0}html.layout-compact .wave-bar .build-group-label{display:none}html.layout-compact .wave-bar .build-group-row{flex-direction:row;gap:6px}html.layout-compact .wave-bar .build-button{min-height:44px;padding:6px 10px;font-size:14px}html.layout-compact .wave-bar .build-button small{display:none}html.layout-compact .wave-bar .stat-tooltip{white-space:normal;width:max-content;max-width:60vw;left:auto;right:0}html.layout-compact .upgrade-panel,html.layout-compact .hut-panel,html.layout-compact .barracks-panel,html.layout-compact .obelisk-panel,html.layout-compact .wall-panel,html.layout-compact .ore-node-panel,html.layout-compact .monster-panel,html.layout-compact .attack-panel{top:calc(52px + var(--safe-top));bottom:calc(8px + var(--safe-bottom));left:calc(8px + var(--safe-left));box-sizing:border-box;overscroll-behavior:contain;z-index:20;align-items:stretch;width:min(280px,40vw);max-width:none;max-height:none;padding:40px 12px 12px;font-size:14px;position:fixed;right:auto;overflow-y:auto;transform:none}html.layout-compact #app:has(>.upgrade-panel:not(.hidden),>.hut-panel:not(.hidden),>.barracks-panel:not(.hidden),>.obelisk-panel:not(.hidden),>.wall-panel:not(.hidden),>.ore-node-panel:not(.hidden),>.monster-panel:not(.hidden),>.attack-panel:not(.hidden))>.sheet-close{display:block}.sheet-close{z-index:21;top:calc(56px + var(--safe-top));left:calc(8px + var(--safe-left) + min(280px, 40vw) - 44px);color:#f2f5f7;cursor:pointer;background:#ffffff14;border:1px solid #fff3;border-radius:8px;width:36px;height:36px;font-family:inherit;font-size:16px;position:fixed}html.layout-compact .hud-view-toggle{left:calc(8px + var(--safe-left));bottom:calc(8px + var(--safe-bottom));color:#f2f5f7;cursor:pointer;background:#141a20db;border:2px solid #0000;border-radius:10px;width:112px;min-height:44px;padding:6px 10px;font-family:inherit;font-size:14px;font-weight:600;display:block;position:absolute}html.layout-compact #app.tutorial-panel-open .mining-bar{top:calc(56px + var(--safe-top))}.chat-send{display:none}html.layout-touch .chat-send,html.layout-compact .chat-send{color:#f2f5f7;background:#4cd47240;border:1px solid #fff3;border-radius:8px;min-width:44px;min-height:40px;margin-left:6px;font-family:inherit;font-size:18px;display:inline-block}html.layout-touch .chat-input-bar,html.layout-compact .chat-input-bar{align-items:center;display:flex}html.layout-touch .chat-input-bar.hidden,html.layout-compact .chat-input-bar.hidden{display:none}.chat-toggle.has-unread:after{content:"";background:#ff5c3d;border-radius:50%;width:9px;height:9px;position:absolute;top:4px;right:4px}.chat-toggle{position:relative}html.layout-compact .chat-root{left:calc(128px + var(--safe-left));bottom:calc(8px + var(--safe-bottom));max-width:min(320px,45vw)}html.layout-compact .chat-history-panel{width:min(320px,45vw);max-height:60vh}html.layout-compact .chat-toast{font-size:13px}html.layout-compact .coop-pause-card{padding-top:calc(52px + var(--safe-top));align-items:flex-start}html.layout-compact .coop-pause-panel{width:min(360px,60vw);padding:12px 16px;font-size:14px}html.layout-compact .banner{top:calc(30% + var(--safe-top));font-size:26px}html.layout-compact .tutorial-panel{top:calc(52px + var(--safe-top));width:min(420px,60vw);font-size:13px}html.layout-compact .touch-placement-hint{top:calc(52px + var(--safe-top))}html.layout-compact .compact-fullscreen-button{top:calc(8px + var(--safe-top));right:calc(56px + var(--safe-right));color:#f2f5f7;cursor:pointer;background:#141a20d1;border:none;border-radius:8px;width:40px;height:32px;font-family:inherit;font-size:18px;display:block;position:absolute}html.layout-compact .compact-fullscreen-button.hidden{display:none}html.layout-compact .compact-recenter-button{left:calc(8px + var(--safe-left));bottom:calc(60px + var(--safe-bottom));color:#f2f5f7;cursor:pointer;background:#141a20db;border:none;border-radius:10px;width:44px;height:44px;font-family:inherit;font-size:20px;display:block;position:absolute}.menu-side,.menu-body,.menu-side-end{display:contents}.touch-controls{display:none}html.layout-compact .main-menu,html.layout-compact .auth-gate,html.layout-compact .faction-select{box-sizing:border-box;padding:calc(8px + var(--safe-top)) calc(8px + max(var(--safe-left), var(--safe-right))) calc(8px + var(--safe-bottom)) calc(8px + max(var(--safe-left), var(--safe-right)));justify-content:stretch;align-items:stretch}html.layout-compact .menu-panel:not(.hidden):has(>.menu-body){box-sizing:border-box;border-radius:12px;grid-template-rows:1fr auto;grid-template-columns:minmax(180px,34%) 1fr;place-items:stretch stretch;gap:8px 12px;width:100%;min-width:0;height:100%;max-height:none;padding:10px 12px;display:grid}html.layout-compact .faction-select-panel:has(>.menu-body){box-sizing:border-box;border-radius:12px;grid-template-rows:1fr auto;grid-template-columns:minmax(180px,34%) 1fr;place-items:stretch stretch;gap:8px 12px;width:100%;min-width:0;height:100%;max-height:none;padding:10px 12px;display:grid}html.layout-compact .menu-side{text-align:center;flex-direction:column;grid-area:1/1;align-items:stretch;gap:6px;min-height:0;display:flex;overflow-y:auto}html.layout-compact .menu-side-end{flex-direction:column;grid-area:2/1;gap:6px;display:flex}html.layout-compact .menu-body{overscroll-behavior:contain;grid-area:1/2/span 2;grid-template-columns:1fr 1fr;align-content:start;gap:8px;min-height:0;padding-right:2px;display:grid;overflow-y:auto}html.layout-compact .menu-body>:not(.menu-button){grid-column:1/-1}html.layout-compact .menu-body>.menu-button,html.layout-compact .menu-side-end>.menu-button{touch-action:manipulation;min-height:48px;margin:0;padding:8px 10px;font-size:15px}html.layout-compact .menu-side img{width:auto;max-width:100%;height:auto;max-height:38vh;margin:0 auto;display:block}html.layout-compact .menu-side .menu-title{margin:0;font-size:20px}html.layout-compact .menu-side .menu-tagline{margin:0;font-size:13px}html.layout-compact .menu-side .menu-fullscreen-button{align-self:flex-end;position:static}html.layout-compact .menu-setting{font-size:14px}html.layout-compact .controls-sheet{display:none}html.layout-compact .touch-controls{text-align:left;margin:0;padding-left:18px;font-size:13px;line-height:1.5;display:block}html.layout-compact .profile-bar{top:auto;bottom:calc(18px + var(--safe-bottom));left:calc(20px + var(--safe-left));max-width:calc(34vw - 40px)}html.layout-compact .main-menu:not(:has(.menu-panel[data-page=home]:not(.hidden))) .profile-bar{display:none}html.layout-compact .auth-logo{width:auto;max-width:100%;max-height:38vh;margin:0 auto}html.layout-compact .auth-title{margin:0;font-size:20px}html.layout-compact .auth-button-row{gap:8px;display:flex}html.layout-compact .auth-button-row .menu-button{flex:1;min-height:48px;margin:0}html.layout-compact .faction-select-title{font-size:20px}html.layout-compact .faction-accordion{max-height:none;overflow:visible}html.layout-compact .faction-item{flex-shrink:0}html.layout-compact .faction-row{min-height:44px;padding:6px 10px}html.layout-compact .faction-select-footer{flex-direction:column;gap:6px;display:flex}html.layout-compact .faction-lock-button{min-height:48px;margin:0}html.layout-compact #app:has(.faction-select:not(.hidden)) :is(.hud,.build-bar,.mining-bar,.wave-bar,.hud-view-toggle,.menu-corner-button,.guest-badge,.gm-button,.compact-fullscreen-button,.compact-recenter-button){display:none}html.layout-compact .overlay-panel{box-sizing:border-box;max-height:calc(100% - 16px);padding:14px 20px;overflow-y:auto}html.layout-compact .overlay-panel h1{margin:0 0 6px;font-size:26px}html.layout-compact .overlay-panel p{margin:0 0 8px;font-size:14px}html.layout-compact .pause-overlay-title,html.layout-compact .reconnect-title{font-size:22px}html.layout-compact .menu-side .player-list{min-height:0;font-size:13px;overflow-y:auto}html.layout-compact .mp-equip-row,html.layout-compact .mp-toggles{flex-direction:column;gap:4px;display:flex}html.layout-compact .mp-input{min-height:36px;font-size:16px}html.layout-compact .lobby-list,html.layout-compact .shop-list,html.layout-compact .achievement-list{max-height:none}html.layout-compact #app.menu-open .chat-root{left:auto;right:calc(14px + var(--safe-right));bottom:calc(14px + var(--safe-bottom));align-items:flex-end}html.layout-compact .menu-setting:has(>.mp-input){justify-content:flex-start}html.layout-compact .menu-setting>.mp-input{flex:1;min-width:0}html.layout-compact .menu-side{justify-content:safe center}html.layout-compact .menu-body{align-content:safe center}html.layout-compact .menu-body>.menu-button,html.layout-compact .menu-side-end>.menu-button{text-align:center;justify-content:center}.tool-info-card{display:none}html.layout-compact .tool-info-card:not(.hidden){top:calc(42px + var(--safe-top));box-sizing:border-box;color:#f2f5f7;z-index:24;background:#141a20e6;border:1px solid #4cd47273;border-radius:10px;align-items:center;gap:8px;width:min(440px,58vw);padding:6px 6px 6px 12px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.tool-info-text{flex:1;min-width:0}.tool-info-title{font-size:14px;font-weight:700}.tool-info-desc{opacity:.8;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.3;display:-webkit-box;overflow:hidden}.tool-info-more{color:#f2f5f7;cursor:pointer;background:#ffffff14;border:1px solid #fff3;border-radius:8px;flex-shrink:0;width:40px;height:40px;font-family:inherit;font-size:18px}html.layout-compact .touch-placement-hint,#app.menu-open .tool-info-card{display:none}
