*{box-sizing:border-box}body{margin:0;background:#0d0f12;color:#eee;font:13px Arial,sans-serif}
#app{width:760px;margin:16px auto;background:#17191d;border:2px solid #34373b;border-radius:10px;overflow:hidden;box-shadow:0 6px 25px #000}
header{height:58px;padding:7px 8px;display:flex;justify-content:space-between;align-items:center;background:linear-gradient(#20252a,#0c0f12)}
.wave{width:430px;padding-left:8px}.mini{color:#a2d22a;font-size:10px;letter-spacing:4px;margin-top:3px}
.stats{height:44px;display:flex;gap:22px;align-items:center;padding:7px 12px;background:linear-gradient(#2456a8,#091c42);border:1px solid #7599e4;border-radius:7px}.stats div{min-width:62px}.stats b{display:block;color:white;font-size:14px}
main{display:flex;gap:10px;padding:8px}.left{width:455px}.canvas-wrap{position:relative}.canvas-wrap canvas{display:block;width:455px;height:410px;border-radius:7px}
#cellTip{position:absolute;display:none;pointer-events:none;background:#111d;color:#fff;padding:3px 5px;border:1px solid #9ab;border-radius:3px;font-size:10px}
.bottom{height:42px;background:#111923;display:flex;align-items:center;justify-content:space-between;padding:5px 8px;border-radius:0 0 8px 8px}.heart{font-size:23px;color:#f22;margin-right:4px;text-shadow:0 1px 2px #000}.heart.off{color:#333}
button{cursor:pointer}.bottom button{background:#78a92a;color:white;border:1px solid #d5ec7b;border-radius:6px;padding:5px 10px;font-weight:bold}
aside{width:270px;min-height:452px;padding:10px;border:1px solid #1c3157;border-radius:10px;background:linear-gradient(#071227,#0a1528)}
.tabs{display:flex;gap:6px}.tabs button,.panel-tabs button{color:#fff;background:linear-gradient(#3e56b3,#172d84);border:1px solid #9cafff;border-radius:7px;padding:4px 9px;font-weight:bold}.tabs .active,.panel-tabs .active{background:linear-gradient(#6579dc,#263f9d)}
.label{font-size:12px;margin:14px 0 8px}.weapon-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.weapon{height:43px;padding:2px;background:linear-gradient(#f0f0f0,#aaa);border:1px solid #555;border-radius:5px;position:relative}.weapon.selected{outline:2px solid #67df6c}.weapon.locked{opacity:.45}.weapon img{image-rendering:auto;width:39px;height:39px;object-fit:contain}.weapon .cost{position:absolute;right:1px;bottom:1px;background:#111c;color:#fff;font-size:8px;padding:1px 2px;border-radius:2px}
.swat-icon-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0}.swat-icon-btn{height:74px;padding:2px;background:linear-gradient(#8fdc8f,#4caf50);border:1px solid #2e6b30;border-radius:6px;position:relative;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:2px}.swat-icon-btn:disabled{opacity:.4;cursor:default}.swat-icon-btn.targeting{outline:2px solid #ffd23f}.swat-icon-btn img{width:40px;height:40px;object-fit:contain}.swat-icon-label{font-size:9px;line-height:1.1;color:#0a2e0a;font-weight:bold;text-align:center}.swat-badge{position:absolute;top:-6px;right:-6px;background:#c1272d;color:#fff;font-size:11px;font-weight:bold;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid #700}.swat-badge.used{background:#2e7d32;border-color:#1b4d1e}
.panel{margin-top:16px;background:#0b172b;border-radius:8px;padding:9px;min-height:195px;border-top:1px solid #294165}.panel-tabs{display:flex;gap:6px;margin-bottom:12px}.panel-tabs #cancelBtn{margin-left:auto;width:27px;padding:2px}.panel-tabs button:disabled{opacity:.45;cursor:default}
.info-title{font-size:17px;display:flex;align-items:center;gap:8px}.info-title img{width:28px;height:28px}.panel p{font-size:12px;line-height:1.4;color:#d4deec}.row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #203653;padding:6px 2px;font-size:12px}.small{font-size:10px;color:#8da0b8}.action{background:#536dc9;color:white;border:1px solid #a5b5ff;border-radius:4px;padding:4px 8px}.target-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.target-icon-btn{background:#8f9296;border:1px solid #456182;border-radius:6px;padding:2px;cursor:pointer}.target-icon-btn.active{background:#5fb95f;border-color:#3d8a3d}.target-icon-btn img{width:36px;height:36px;display:block}.hidden{display:none}
footer{height:34px;border-top:1px solid #333;padding:5px 10px;display:flex;justify-content:space-between;align-items:center;color:#8c9aac;font-size:11px}#pause{background:#79a927;color:white;border:1px solid #d4ec7a;border-radius:5px;padding:4px 15px}

.wave-controls{display:flex;align-items:center;gap:5px}
.wave-controls button{background:#536dc9;color:#fff;border:1px solid #a5b5ff;border-radius:4px;padding:4px 6px;font-size:10px}
.wave-controls #releaseWave{background:#79a927}
#timer{font-size:10px;color:#b9c8da;min-width:40px;text-align:center}
footer{gap:10px}
.speed{margin-left:auto}
footer button.speed{background:#263b62;color:#cdd9eb;border:1px solid #55709a;border-radius:4px;padding:3px 6px;font-size:10px}
footer button.speed.active{background:#536dc9;color:#fff}

.wave-controls #skip5:disabled,.wave-controls #startWave:disabled{opacity:.45;cursor:default}.wave-controls #skip5{min-width:52px}

#enemyType{font-size:9px;color:#8ea5c1;min-width:58px;max-width:90px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.enemy-marker{position:absolute;pointer-events:none}

.wave-controls button{white-space:nowrap}
.wave-controls #skip5,.wave-controls #releaseWave{min-width:72px}
.wave-controls button:disabled{opacity:.5;cursor:default}

.wave-controls #skip5{min-width:68px}.panel .selected-range{color:#a9c7ff}

.speed button.speed.active{background:#536dc9!important;color:#fff!important}.speed button.speed{min-width:34px}

.tabs{flex-wrap:wrap}
.tabs button{font-size:11px}
.debug-actions{display:flex;gap:5px;flex-wrap:wrap;margin:8px 0}
.debug-actions button{background:#253b62;color:#dce8ff;border:1px solid #58749e;border-radius:4px;padding:4px 7px;font-size:10px}
.debug-actions button.on{background:#3d6394;color:#fff;border-color:#8fb4e4}
#debugLog{width:100%;height:225px;background:#06101d;color:#bfe2ff;border:1px solid #28466c;border-radius:5px;padding:7px;font:10px Consolas,monospace;resize:none}
.debug-note{font-size:10px;color:#92a8c3;line-height:1.35;margin-top:6px}
.research-points{background:#0b172b;border:1px solid #294165;border-radius:5px;padding:7px 8px;margin-bottom:7px;color:#dce8ff;font-size:12px}.research-row{display:flex;justify-content:space-between;align-items:center;gap:7px;border-bottom:1px solid #203653;padding:6px 2px}.research-main{display:flex;align-items:center;gap:7px;min-width:0}.research-main img{width:30px;height:30px;object-fit:contain}.research-note{font-size:10px;line-height:1.35;color:#8da0b8;margin-top:8px}.research-row .action:disabled{opacity:.45}
/* --- lobby: the original's map tree, drawn over the board --- */
#lobby{position:absolute;inset:0;background:rgba(4,10,20,.88);border-radius:7px;display:flex;align-items:center;justify-content:center;z-index:5}
#lobby.hidden{display:none}
.lobby-inner{width:100%;padding:10px 12px;text-align:center}
.lobby-title{color:#dce8ff;font-size:14px;font-weight:700;letter-spacing:.4px;margin-bottom:5px}
.lobby-tree{width:100%}
.lobby-svg{width:100%;height:175px}
.lobby-join{stroke:#27405f;stroke-width:2}
.lobby-join.open{stroke:#4d7cb5}
.lobby-node rect{fill:none;stroke:#3d6394;stroke-width:1.5}
.lobby-node .lobby-veil{fill:rgba(4,10,20,.62);stroke:none}
.lobby-node text{fill:#dce8ff;font:10px system-ui,sans-serif}
.lobby-node.open{cursor:pointer}
.lobby-node.open:hover rect{stroke:#7ea9dd;stroke-width:2}
.lobby-node.locked rect{stroke:#26384f}
.lobby-node.locked text{fill:#5f7392}
.lobby-node.current rect{stroke:#ffd479;stroke-width:2.5}
.lobby-best{fill:#8da0b8;font-size:9px}
.lobby-locked-tag{fill:#4d6480;font-size:9px}
.lobby-hint{color:#a9c0dc;font-size:11px;line-height:1.4;min-height:30px;margin:2px 10px 8px}
.lobby-close{background:#253b62;color:#dce8ff;border:1px solid #58749e;border-radius:4px;padding:5px 14px;font-size:11px;cursor:pointer}
#mapsBtn{background:#253b62;color:#dce8ff;border:1px solid #58749e;border-radius:4px;padding:4px 10px;font-size:11px;margin-right:6px;cursor:pointer}

#soundBtn{background:#253b62;color:#dce8ff;border:1px solid #58749e;border-radius:4px;padding:4px 10px;font-size:11px;margin-right:6px;cursor:pointer}
#soundBtn.off{color:#8095ad;border-color:#3a5070}

.lobby-records{width:100%;max-width:430px;margin:0 auto 6px;border-collapse:collapse;font-size:10px;color:#a9c0dc}
.lobby-records th{font-weight:400;text-align:right;padding:1px 6px;white-space:nowrap}
.lobby-records td{text-align:right;padding:1px 6px;color:#c8d9ef;width:22%}
.lobby-records .lobby-head th{color:#7f96b2;text-align:right}
.lobby-records .lobby-server td{color:#63799a}
.lobby-records .lobby-own th,.lobby-records .lobby-own td{color:#ffd479;padding-top:4px}

#themeBtn{background:#253b62;color:#dce8ff;border:1px solid #58749e;border-radius:4px;padding:4px 10px;font-size:11px;margin-right:6px;cursor:pointer}

#releaseWave{margin-right:6px}
#releaseWave:disabled{opacity:.45}

/* --- class cc: the Settings window. 400x360, checkboxes at x=25 (45 when
   indented) by 18 high, OK at (305,322,75,23) - cc's own numbers. --- */
#settings{position:fixed;inset:0;background:rgba(4,8,14,.72);display:flex;align-items:center;justify-content:center;z-index:20}
#settings.hidden{display:none}
.settings-panel{position:relative;width:400px;height:360px;background:#0b172b center/cover no-repeat;border:1px solid #58749e;border-radius:6px;box-shadow:0 8px 30px #000;color:#eef4ff}
.settings-title{position:absolute;left:25px;top:2px;font-size:13px;font-weight:700;letter-spacing:.3px;color:#ffffff;text-shadow:0 1px 2px #000}
.settings-row{position:absolute;left:25px;width:360px;height:18px;display:flex;align-items:center;gap:7px;font-size:11px;line-height:18px;cursor:pointer;text-shadow:0 1px 2px #000}
.settings-row.indent{left:45px;width:340px}
.settings-row input{margin:0;cursor:pointer}
.settings-row span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.settings-ok{position:absolute;left:305px;top:322px;width:75px;height:23px;background:linear-gradient(#6d86e4,#22357e);color:#fff;border:1px solid #9cafff;border-radius:5px;font-weight:bold;font-size:11px;cursor:pointer}
#settingsBtn{background:#253b62;color:#dce8ff;border:1px solid #58749e;border-radius:4px;padding:4px 10px;font-size:11px;margin-right:6px;cursor:pointer}

/* --- class fb: the quit confirmation. 300x125, question at (17,25) wrapped to
   270, cancel at (15,88,125,25) and quit at (160,88,125,25) - fb's numbers. --- */
#quitConfirm{position:fixed;inset:0;background:rgba(4,8,14,.72);display:flex;align-items:center;justify-content:center;z-index:30}
#quitConfirm.hidden{display:none}
.quit-panel{position:relative;width:300px;height:125px;background:#0b172b center/cover no-repeat;border:1px solid #58749e;border-radius:6px;box-shadow:0 8px 30px #000;color:#eef4ff}
.quit-title{position:absolute;left:17px;top:2px;font-size:12px;font-weight:700;color:#fff;text-shadow:0 1px 2px #000}
.quit-text{position:absolute;left:17px;top:18px;width:270px;font-size:11px;line-height:1.35;text-shadow:0 1px 2px #000}
.quit-btn{position:absolute;top:88px;width:125px;height:25px;border-radius:5px;font-weight:bold;font-size:11px;cursor:pointer;color:#fff}
.quit-cancel{left:15px;background:linear-gradient(#6d86e4,#22357e);border:1px solid #9cafff}
.quit-ok{left:160px;background:linear-gradient(#d08a4a,#7d3f14);border:1px solid #efb97e}

/* --- the Debug panel's password gate --- */
.debug-gate{background:#0b172b;border:1px solid #294165;border-radius:6px;padding:12px;margin:10px 0}
.debug-gate-title{font-size:12px;color:#dce8ff;margin-bottom:8px}
#debugGateForm-wrap{display:flex;gap:6px}
.debug-gate input{flex:1;min-width:0;background:#06101d;color:#dce8ff;border:1px solid #28466c;border-radius:4px;padding:5px 7px;font-size:11px}
.debug-gate button{background:#253b62;color:#dce8ff;border:1px solid #58749e;border-radius:4px;padding:5px 12px;font-size:11px;cursor:pointer}
.debug-gate-note{font-size:10px;color:#e0a3a3;line-height:1.35;margin-top:7px;min-height:12px}
