*{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:#0a0e08;color:#d4d4c8}.btn{padding:8px 18px;border:1px solid #4a5a3a;background:#2a3a1a;color:#c8d4b8;border-radius:6px;cursor:pointer;font-size:14px;font-weight:600;transition:all .15s}.btn:hover{background:#3a4a2a;border-color:#6a8a4a}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-sm{padding:5px 12px;font-size:12px}.btn-danger{border-color:#6a3a3a;background:#3a1a1a;color:#d4a8a8}.btn-danger:hover{background:#4a2a2a}.btn-cancel{margin-top:6px;display:block;width:100%}.btn-play{padding:14px 40px;font-size:18px;background:#2a4a1a;border-color:#4a8a2a}.btn-play:hover{background:#3a5a2a}.btn-wave{width:100%;padding:10px;font-size:15px;background:#1a3a4a;border-color:#2a6a8a;color:#a8d4e8}.btn-wave:hover{background:#2a4a5a}.app-shell{min-height:100vh}.topbar{background:linear-gradient(135deg,#1a2410,#0e1608);padding:24px 32px;border-bottom:2px solid #2a3a1a;display:flex;justify-content:space-between;align-items:center}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:2px;color:#6a7a5a;margin-bottom:4px}.topbar h1{font-size:28px;color:#c8d8b0;font-weight:800;letter-spacing:-.5px}.lead{color:#7a8a6a;font-size:13px;margin-top:4px;max-width:480px}.topbar-stats{display:flex;gap:16px}.topbar-stats span{background:#1a2410;border:1px solid #2a3a1a;padding:6px 12px;border-radius:20px;font-size:12px;color:#8a9a7a}.layout{max-width:1100px;margin:0 auto;padding:20px;display:flex;flex-direction:column;gap:16px}.panel{background:#141a0e;border:1px solid #2a3a1a;border-radius:8px;overflow:hidden}.panel-header{background:#1a2410;padding:10px 16px;font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:1px;color:#8a9a6a;border-bottom:1px solid #2a3a1a}.panel-body{padding:16px}.hero-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.hero-card{background:#1a2210;border:2px solid #2a3a1a;border-radius:8px;padding:14px;cursor:pointer;text-align:left;color:#c8d4b8;transition:all .15s}.hero-card:hover{border-color:#5a7a3a;background:#222e16}.hero-card.selected{border-color:#6aaa3a;background:#1a2e10;box-shadow:0 0 12px #50a02826}.hero-name{font-weight:700;font-size:15px;color:#b8d4a0;margin-bottom:4px}.hero-fantasy{font-size:12px;color:#7a8a6a;margin-bottom:8px}.hero-card ul{list-style:none;font-size:11px;color:#8a9a7a}.hero-card li{margin-bottom:3px}.era-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}.era-card{background:#1a2210;border:1px solid #2a3a1a;border-radius:6px;padding:10px}.era-title{font-weight:700;font-size:13px;color:#b8c8a0}.era-sub{font-size:11px;color:#6a7a5a;margin-bottom:6px}.level-row{display:flex;flex-wrap:wrap;gap:3px}.level-dot{width:22px;height:22px;border-radius:4px;background:#2a3a1a;display:flex;align-items:center;justify-content:center;font-size:10px;color:#8a9a7a}.level-dot.boss{background:#4a2a1a;color:#da8;border:1px solid #6a4a2a}.tech-columns{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.tech-branch{background:#1a2210;border:1px solid #2a3a1a;border-radius:6px;padding:10px}.branch-name{font-weight:700;font-size:12px;text-transform:capitalize;color:#8a9a6a;margin-bottom:6px}.tech-node{font-size:11px;padding:4px 8px;margin-bottom:3px;background:#222e16;border-radius:3px;color:#9aaa8a}.game-wrapper{min-height:100vh;display:flex;flex-direction:column;background:#0a0e08}.game-top-bar{background:#141a0e;border-bottom:2px solid #2a3a1a;padding:8px 16px;display:flex;align-items:center;gap:16px}.game-title{font-weight:700;font-size:16px;color:#b8c8a0;flex:1}.game-stats{display:flex;gap:14px}.stat{font-size:14px;font-weight:600;color:#c8d4b8}.game-main{display:flex;flex:1;overflow:hidden}.game-canvas-area{flex:1;position:relative;display:flex;align-items:flex-start;justify-content:center;padding:8px;background:#080c06}.game-canvas-area canvas{border:2px solid #2a3a1a;border-radius:4px;display:block}.game-sidebar{width:240px;background:#141a0e;border-left:2px solid #2a3a1a;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:8px}.sidebar-section{background:#1a2410;border:1px solid #2a3a1a;border-radius:6px;padding:10px}.section-title{font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:#8a9a6a;margin-bottom:8px}.hero-passive{font-size:11px;color:#7a8a6a;line-height:1.4}.turret-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.turret-btn{background:#222e16;border:2px solid #2a3a1a;border-radius:6px;padding:8px 6px;cursor:pointer;text-align:center;color:#c8d4b8;transition:all .15s}.turret-btn:hover:not(.disabled){border-color:#5a7a3a;background:#2a3a1a}.turret-btn.active{border-color:#6aaa3a;background:#1a3a10}.turret-btn.disabled{opacity:.35;cursor:not-allowed}.turret-btn-name{font-weight:700;font-size:11px;margin-bottom:3px}.turret-btn-cost{font-size:12px;font-weight:600;color:#d4c878}.turret-btn-stats{font-size:10px;color:#7a8a6a;margin-top:2px}.selected-info{font-size:12px;color:#8a9a7a;margin-bottom:6px}.selected-actions{display:flex;gap:6px}.controls-help{font-size:11px;color:#5a6a4a;line-height:1.6}.controls-help div{margin-bottom:2px}.game-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#0000008c;z-index:10}.overlay-box{background:#12180ceb;border:1px solid #3a4a2a;border-radius:3px;padding:24px 40px;text-align:center}.overlay-box h2{font-size:20px;margin-bottom:10px;letter-spacing:1px;text-transform:uppercase;font-weight:700}.overlay-box p{color:#7a8a6a;margin-bottom:6px;font-size:14px}.victory h2{color:#5a7a3a}.defeat h2{color:#7a4a3a}.wave-banner{position:absolute;top:10px;left:50%;transform:translate(-50%);background:#12180cd9;border:1px solid #3a4a2a;border-radius:2px;padding:5px 22px;z-index:5;pointer-events:none}.wave-banner h2{font-size:13px;letter-spacing:2px;text-transform:uppercase;color:#7a8a6a;font-weight:600}.info-banner{position:absolute;top:8px;right:8px;background:#28508cd9;padding:10px 16px;border-radius:8px;border:1px solid rgba(100,150,200,.6);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 4px 12px #0000004d;max-width:320px}.info-banner h2{font-size:13px;font-weight:500;color:#c4dcf4;text-shadow:0 0 6px rgba(0,0,0,.6);margin:0;line-height:1.4}.info-toggle{display:flex;gap:4px}.info-toggle button{flex:1;font-size:11px}.campaign-screen{min-height:100vh;display:flex;flex-direction:column;background:#0a0e08}.campaign-header{background:linear-gradient(135deg,#1a2410,#0e1608);padding:24px 32px;border-bottom:2px solid #2a3a1a;display:flex;justify-content:space-between;align-items:center}.campaign-header h1{font-size:28px;color:#c8d8b0;font-weight:800;letter-spacing:-.5px;margin-bottom:4px}.campaign-header p{color:#7a8a6a;font-size:13px}.campaign-stats{display:flex;gap:16px}.stat-box{background:#1a2410;border:1px solid #2a3a1a;padding:8px 16px;border-radius:8px;text-align:center}.stat-value{font-size:20px;font-weight:700;color:#b8c8a0}.stat-label{font-size:11px;color:#7a8a6a;text-transform:uppercase;letter-spacing:1px;margin-top:2px}.campaign-content{max-width:1100px;margin:0 auto;padding:20px;display:flex;flex-direction:column;gap:24px}.era-section{background:#141a0e;border:1px solid #2a3a1a;border-radius:8px;overflow:hidden}.era-header{background:#1a2410;padding:12px 16px;border-bottom:1px solid #2a3a1a;display:flex;justify-content:space-between;align-items:center}.era-title{font-size:16px;font-weight:700;color:#b8c8a0}.era-info{font-size:12px;color:#7a8a6a}.levels-grid{padding:16px;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}.level-card{background:#1a2210;border:2px solid #2a3a1a;border-radius:8px;padding:12px;cursor:pointer;transition:all .15s}.level-card:hover:not(.locked){border-color:#5a7a3a;background:#222e16;transform:translateY(-2px)}.level-card.locked{opacity:.5;cursor:not-allowed;filter:grayscale(.3)}.level-card.current{border-color:#6aaa3a;background:#1a3a10;box-shadow:0 0 12px #50a02826}.level-card.boss{border-color:#6a4a2a}.level-card.boss:hover:not(.locked){border-color:#8a6a3a}.level-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.level-number{font-size:14px;font-weight:700;color:#c8d4b8}.level-difficulty{font-size:10px;padding:2px 8px;border-radius:10px;text-transform:uppercase;font-weight:600;letter-spacing:.5px}.difficulty-easy{background:#1a3a2a;color:#8aca9a}.difficulty-medium{background:#3a3a1a;color:#cacaa0}.difficulty-hard{background:#3a2a1a;color:#caa08a}.difficulty-insane{background:#3a1a1a;color:#ca8a8a}.level-body h3{font-size:14px;font-weight:600;color:#b8c8a0;margin-bottom:4px}.level-body p{font-size:11px;color:#7a8a6a;margin-bottom:8px;line-height:1.4}.level-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.meta-item{font-size:10px;color:#6a7a5a}.boss-badge{font-weight:600;color:#da8}.level-stars{display:flex;gap:4px;justify-content:center;padding-top:8px;border-top:1px solid #2a3a1a}.star{font-size:20px;color:#4a4a4a}.star.earned{color:#d4c878;text-shadow:0 0 4px rgba(180,160,80,.4)}.level-locked{text-align:center;padding:8px;background:#1a1a1a;border-radius:4px;font-size:11px;color:#7a7a7a}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#141a0e;border:2px solid #2a3a1a;border-radius:8px;padding:24px;max-width:320px;text-align:center}.modal-content h2{font-size:18px;font-weight:700;color:#b8c8a0;margin-bottom:12px}.modal-content p{font-size:13px;color:#7a8a6a;margin-bottom:16px}.loading{display:flex;align-items:center;justify-content:center;min-height:100vh;font-size:16px;color:#7a8a6a}
