.app{background-color:#0a0a1a;width:100vw;height:100vh;display:flex;overflow:hidden}.game-canvas-container{background-color:#0a0a1a;flex:none;width:min(100vh,100vw - 260px);height:min(100vh,100vw - 260px);position:relative}.ui-panel{box-sizing:border-box;color:#0ff;border-left:1px solid #1e2240;flex:260px;min-width:260px;height:100vh;padding:16px;overflow-y:auto}@media (orientation:portrait){.app{flex-direction:column;height:auto;min-height:100vh;overflow:hidden auto}.game-canvas-container{align-self:center;width:min(100vw,60vh);height:min(100vw,60vh)}.ui-panel{border-top:1px solid #1e2240;border-left:none;width:100%;height:auto;min-height:0}}.ui-title{color:#f0f;letter-spacing:.12em;text-transform:uppercase;margin:0 0 16px;font-family:Courier New,Courier,monospace;font-size:1.1rem}.offline-toast{color:#0f6;white-space:normal;text-align:center;box-sizing:border-box;z-index:500;pointer-events:none;background:#0a1a0a;border:1px solid #0a4;border-radius:4px;width:max-content;max-width:calc(100% - 24px);padding:8px 16px;font-family:Courier New,Courier,monospace;font-size:.78rem;animation:5s forwards toast-fade;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}@keyframes toast-fade{0%,70%{opacity:1}to{opacity:0}}.achievement-tray{z-index:20;pointer-events:none;flex-direction:column;align-items:center;gap:8px;width:calc(100% - 24px);max-width:400px;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.achievement-card{pointer-events:all;box-sizing:border-box;background:#050a1eeb;border:1px solid #4af;border-radius:6px;align-items:flex-start;gap:10px;width:100%;padding:10px 12px;animation:.35s ease-out achievement-slide-in;display:flex;box-shadow:0 0 12px #00b4ff40,inset 0 0 8px #0064c81a}@keyframes achievement-slide-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.achievement-icon{background:#0078c81f;border:1px solid #00b4ff33;border-radius:4px;flex:none;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.achievement-body{flex:auto;min-width:0}.achievement-title{color:#fd0;letter-spacing:.06em;text-transform:uppercase;margin-bottom:3px;font-family:Courier New,Courier,monospace;font-size:.82rem;font-weight:700}.achievement-title:before{content:"ACHIEVEMENT ";color:#4af;letter-spacing:.1em;vertical-align:1px;margin-right:4px;font-size:.65rem}.achievement-desc{color:#ace;font-family:Courier New,Courier,monospace;font-size:.72rem;line-height:1.4}.achievement-close{color:#4af;cursor:pointer;opacity:.7;background:0 0;border:none;flex:none;align-self:flex-start;padding:0 2px;font-size:1.2rem;line-height:1;transition:opacity .15s,color .15s}.achievement-close:hover{opacity:1;color:#fff}.hud-container{border-bottom:1px solid #1e2240;flex-direction:column;align-items:flex-start;gap:2px;margin-bottom:16px;padding:8px 0;display:flex}.hud-label{letter-spacing:.15em;color:#46a;font-family:Courier New,Courier,monospace;font-size:.65rem}.hud-value{color:#0ff;text-shadow:0 0 12px #0ff8;font-family:Courier New,Courier,monospace;font-size:1.6rem;font-weight:700;line-height:1}.hud-energy-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:4px 12px;width:100%;margin-bottom:6px;display:flex}.hud-energy-main{flex-direction:column;gap:1px;display:flex}.hud-last-photon{flex-direction:column;align-items:flex-end;gap:1px;display:flex}.hud-stat-value{color:#8df;font-family:Courier New,Courier,monospace;font-size:.85rem;font-weight:700}.hud-prestige-section{flex-direction:column;gap:4px;width:100%;display:flex}.hud-prestige-label{justify-content:space-between;width:100%;display:flex}.hud-prestige-numbers{color:#68b}.hud-progress-track{background:#1a1a33;border:1px solid #2a2a55;border-radius:3px;width:100%;height:5px;overflow:hidden}.hud-progress-fill{background:linear-gradient(90deg,#40f,#f0f);border-radius:3px;height:100%;transition:width .3s}.hud-prestige-btn{color:#f4f;letter-spacing:.08em;cursor:pointer;background:#1a0033;border:1px solid #c0f;border-radius:3px;width:100%;margin-top:8px;padding:6px 8px;font-family:Courier New,Courier,monospace;font-size:.72rem;font-weight:700;animation:1.2s ease-in-out infinite prestige-pulse}@keyframes prestige-pulse{0%,to{box-shadow:0 0 6px #c0f8}50%{box-shadow:0 0 18px #c0fc,0 0 32px #c0f4}}.hud-header{justify-content:space-between;align-items:center;width:100%;margin-bottom:8px;display:flex}.hud-title{color:#f0f;letter-spacing:.12em;text-transform:uppercase;text-shadow:0 0 10px #f0f6;font-family:Courier New,Courier,monospace;font-size:1rem;font-weight:700}.hud-menu-anchor{position:relative}.hud-hamburger{cursor:pointer;background:0 0;border:none;flex-direction:column;flex-shrink:0;justify-content:space-between;width:22px;height:16px;padding:0;display:flex}.hud-hamburger span{background:#46a;border-radius:1px;width:100%;height:2px;transition:background .15s;display:block}.hud-hamburger:hover span{background:#8af}.hud-menu{z-index:5000;background:#111128;border:1px solid #3a3a66;border-radius:4px;min-width:150px;padding:4px 0;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 4px 20px #000000b3}.hud-menu-item{text-align:left;color:#b0c4ee;cursor:pointer;letter-spacing:.04em;background:0 0;border:none;width:100%;padding:8px 14px;font-family:Courier New,Courier,monospace;font-size:.72rem;transition:background .1s,color .1s;display:block}.hud-menu-item:hover{color:#def;background:#5078ff26}.hud-menu-item--danger{color:#c67}.hud-menu-item--danger:hover{color:#f67;background:#c8283c1f}.hud-menu-divider{background:#2a2a50;height:1px;margin:4px 0}.hud-modal-overlay{z-index:10000;background:#000000a6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.hud-modal{box-sizing:border-box;background:#10102a;border:1px solid #35b;border-radius:6px;flex-direction:column;gap:12px;width:min(340px,100vw - 32px);padding:20px 24px;font-family:Courier New,Courier,monospace;display:flex;box-shadow:0 0 32px #0050c873}.hud-modal-title{letter-spacing:.15em;color:#8af;text-align:center;font-size:.9rem;font-weight:700}.hud-modal-body{color:#abc;font-size:.7rem;line-height:1.5}.hud-modal-textarea{color:#ace;box-sizing:border-box;resize:vertical;word-break:break-all;background:#08081a;border:1px solid #35a;border-radius:3px;width:100%;height:90px;padding:6px 8px;font-family:Courier New,Courier,monospace;font-size:.65rem}.hud-modal-textarea::placeholder{color:#457}.hud-modal-error{color:#f45;font-size:.68rem}.hud-modal-actions{gap:10px;display:flex}.hud-modal-btn{letter-spacing:.06em;cursor:pointer;border:1px solid;border-radius:3px;flex:1;padding:7px 0;font-family:Courier New,Courier,monospace;font-size:.72rem;font-weight:700;transition:background .15s,border-color .15s,color .15s}.hud-modal-btn:disabled{opacity:.35;cursor:not-allowed}.hud-modal-btn--confirm{color:#8bf;background:#0d1e35;border-color:#36b}.hud-modal-btn--confirm:hover:not(:disabled){color:#bdf;background:#102540;border-color:#5af}.hud-modal-btn--flashed{color:#0c5!important;border-color:#0a4!important}.hud-modal-btn--cancel{color:#679;background:#0a0a1a;border-color:#346}.hud-modal-btn--cancel:hover{color:#9ac;background:#111128;border-color:#468}.hud-modal-title--danger{color:#f67}.hud-modal-warn{color:#f67;font-weight:700}.hud-modal-btn--danger{color:#d56;background:#1a0810;border-color:#823}.hud-modal-btn--danger:hover{color:#f78;background:#250d18;border-color:#c34}.powerup-shop{flex-direction:column;gap:4px;padding:8px 0;display:flex}.tower-card.powerup-grid-card{border:2px solid #4d88aa}.tower-card.powerup-grid-card:hover:not(:disabled){border-color:#8bd}.powerup-section-label{letter-spacing:.15em;color:#a4a;margin-bottom:4px;font-family:Courier New,Courier,monospace;font-size:.65rem}.powerup-icon-grid{flex-wrap:wrap;gap:4px;display:flex}.powerup-icon{background:color-mix(in srgb, var(--tower-color,#346) 14%, #0b0b1e);border:1.5px solid var(--tower-color,#346);cursor:pointer;box-sizing:border-box;border-radius:3px;flex-direction:column;flex-shrink:0;justify-content:space-between;align-items:center;width:46px;height:46px;padding:3px 2px 2px;transition:border-color .15s,background .15s;display:flex}.powerup-icon:hover:not(:disabled){border-color:color-mix(in srgb, var(--tower-color,#346) 55%, white);background:color-mix(in srgb, var(--tower-color,#346) 26%, #0b0b1e)}.powerup-icon--grid{--tower-color:#346}.powerup-icon--unaffordable{opacity:.4;cursor:not-allowed}.powerup-icon>svg{flex-shrink:0;display:block}.powerup-icon-stat{color:#78a;letter-spacing:.02em;font-family:Courier New,Courier,monospace;font-size:.52rem;line-height:1}.powerup-icon-cost{color:#ccddf0;text-align:center;background:#00000073;border-radius:1px;width:100%;font-family:Courier New,Courier,monospace;font-size:.52rem;line-height:1.4}.powerup-tooltip{z-index:9999;pointer-events:none;background:#0d0d22;border:1px solid #2a2a50;border-radius:4px;width:168px;padding:8px 10px;position:fixed;box-shadow:0 3px 14px #000000bf}.powerup-tooltip-name{color:#c0d4ff;margin-bottom:4px;font-family:Courier New,Courier,monospace;font-size:.68rem;font-weight:700;line-height:1.3}.powerup-tooltip-subtitle{color:#89b;margin-bottom:3px;font-family:Courier New,Courier,monospace;font-size:.6rem}.powerup-tooltip-bonus{color:#c8f;margin-bottom:2px;font-family:Courier New,Courier,monospace;font-size:.62rem}.powerup-tooltip-cost{color:#ac8;margin-bottom:5px;font-family:Courier New,Courier,monospace;font-size:.62rem}.powerup-tooltip-desc{color:#456;font-family:Courier New,Courier,monospace;font-size:.58rem}.powerup-empty{color:#456;padding:4px 0;font-family:Courier New,Courier,monospace;font-size:.62rem}.expand-modal-overlay{z-index:10000;background:#000000a6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.expand-modal{box-sizing:border-box;background:#0d0d22;border:1px solid #369;border-radius:6px;width:min(280px,100vw - 32px);padding:20px 24px;font-family:Courier New,Courier,monospace;box-shadow:0 0 32px #0064c859}.expand-modal-title{letter-spacing:.15em;color:#69b;text-align:center;margin-bottom:14px;font-size:.9rem;font-weight:700}.expand-modal-body{color:#89b;flex-direction:column;gap:6px;margin-bottom:14px;font-size:.72rem;line-height:1.5;display:flex}.expand-modal-body p{margin:0}.expand-modal-highlight{color:#0ff;font-weight:700}.expand-modal-warn{color:#f45;font-weight:700}.expand-modal-ok{color:#4d8;font-weight:700}.expand-modal-cost{color:#ac8;text-align:center;margin-bottom:16px;font-size:.68rem}.expand-modal-actions{gap:10px;display:flex}.expand-modal-btn{letter-spacing:.08em;cursor:pointer;border:1px solid;border-radius:3px;flex:1;padding:7px 0;font-family:Courier New,Courier,monospace;font-size:.72rem;font-weight:700;transition:background .15s,border-color .15s}.expand-modal-btn--cancel{color:#679;background:#0a0a1a;border-color:#346}.expand-modal-btn--cancel:hover{color:#9ac;background:#111128;border-color:#468}.expand-modal-btn--confirm{color:#69b;background:#0a1a2a;border-color:#369}.expand-modal-btn--confirm:hover{color:#8bd;background:#0d2035;border-color:#48b}.tower-panel{z-index:1000;pointer-events:auto;background:#0a0a20f0;border:1px solid #0ff8;border-radius:4px;flex-direction:column;gap:6px;width:min(188px,100vw - 16px);padding:10px;display:flex;position:fixed;box-shadow:0 0 16px #0ff2,0 4px 20px #0008}.tower-panel-header{justify-content:space-between;align-items:center;display:flex}.tower-panel-type{letter-spacing:.15em;color:#0ff;font-family:Courier New,Courier,monospace;font-size:.75rem;font-weight:700}.tower-panel-close{color:#46a;cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:1.1rem;line-height:1}.tower-panel-close:hover{color:#fff}.tower-panel-stats{flex-direction:column;gap:5px;display:flex}.tower-panel-stat-row{border-bottom:1px solid #1a1a40;flex-direction:column;gap:2px;padding-bottom:5px;display:flex}.tower-panel-stat-row:last-child{border-bottom:none}.tower-panel-stat-header{justify-content:space-between;font-family:Courier New,Courier,monospace;font-size:.68rem;display:flex}.tower-panel-stat-label{color:#46a}.tower-panel-stat-value{color:#c0d4ff}.tower-panel-stat-next{color:#4f8;font-size:.65rem}.tower-panel-upgrade{color:#0c5;cursor:pointer;text-align:left;background:#091a0a;border:1px solid #0a4;border-radius:3px;justify-content:space-between;padding:3px 6px;font-family:Courier New,Courier,monospace;font-size:.68rem;transition:background .15s;display:flex}.tower-panel-upgrade:hover:not(:disabled){background:#0f2a14}.tower-panel-upgrade-disabled,.tower-panel-upgrade:disabled{color:#464;cursor:not-allowed;border-color:#343}.tower-panel-cost{color:#fd0;font-weight:700}.tower-panel-footer{color:#345;justify-content:flex-end;margin-top:2px;font-family:Courier New,Courier,monospace;font-size:.62rem;display:flex}.tower-panel-upgrade-count{color:#456}.tower-panel-sell{color:#f88;cursor:pointer;text-align:left;background:#1a0a0a;border:1px solid #f44;border-radius:3px;justify-content:space-between;margin-top:4px;padding:5px 8px;font-family:Courier New,Courier,monospace;font-size:.75rem;transition:background .15s;display:flex}.tower-panel-sell:hover{background:#2a0a0a;border-color:#f66}.tower-panel-refund{color:#fd0;font-weight:700}.tower-shop{flex-direction:column;gap:6px;padding:8px 0;display:flex}.tower-shop-title{letter-spacing:.15em;color:#46a;margin-bottom:4px;font-family:Courier New,Courier,monospace;font-size:.65rem}.tower-card{cursor:pointer;text-align:left;color:#c0d4ff;background:#0d0d22;border:1px solid #1e2240;border-radius:4px;align-items:center;gap:8px;width:100%;padding:6px 8px;font-family:Courier New,Courier,monospace;transition:border-color .15s,background .15s;display:flex}.tower-card:hover:not(:disabled){background:#113;border-color:#46a}.tower-card--selected{box-shadow:0 0 8px #0ff4;background:#0a1a2a!important;border-color:#0ff!important}.tower-card--dim{opacity:.4;cursor:not-allowed}.tower-card>svg{flex-shrink:0;display:block}.tower-card-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.tower-card-name{color:#e0eeff;font-size:.8rem;font-weight:700}.tower-card-desc{color:#57a;white-space:nowrap;text-overflow:ellipsis;font-size:.65rem;overflow:hidden}.tower-card-cost{color:#fd0;flex:none;font-family:Courier New,Courier,monospace;font-size:.75rem;font-weight:700}.tower-shop-hint{color:#0ff8;letter-spacing:.05em;text-align:center;border:1px dashed #0ff4;border-radius:3px;margin-top:2px;padding:4px;font-family:Courier New,Courier,monospace;font-size:.6rem}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{color:#6b6375;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0a0a1a;font-family:system-ui,Segoe UI,Roboto,sans-serif}
