:root{color-scheme:dark;--bg:#111613;--panel:#1a201c;--line:#30382e;--text:#eeeede;--muted:#929b8b;--accent:#c5df8d;--enemy:#e3946c;--mono:ui-monospace,SFMono-Regular,Consolas,monospace;--sans:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px var(--sans);background-image:radial-gradient(ellipse at 40% 0,#25302055,transparent 65%)}button,a,canvas{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button:disabled{opacity:.32;cursor:not-allowed}button:not(:disabled){transition:background .15s,color .15s,border-color .15s}button:not(:disabled):active{transform:translateY(1px)}[hidden]{display:none!important}.muted{color:var(--muted)}
.topbar{height:88px;max-width:1600px;padding:0 38px;margin:auto;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:20px}.brand{display:flex;gap:13px;color:var(--text);text-decoration:none;font-size:23px;letter-spacing:-1px;font-weight:850;line-height:1.1}.brand-mark{height:39px;width:39px;border:1px solid #889b66;display:grid;place-items:center;color:var(--accent);font-size:38px;font-weight:400;line-height:1}.brand-light{font-weight:350;color:var(--accent);margin-left:4px}.brand small{display:block;font:8px var(--mono);letter-spacing:2.2px;color:var(--muted);margin-top:7px}.session-label{font:10px var(--mono);letter-spacing:1.2px;display:flex;align-items:center;gap:11px}.separator{margin:0 6px;color:#505c49}.live-dot,.enemy-dot{display:inline-block;height:6px;width:6px;background:var(--accent);border-radius:50%;box-shadow:0 0 12px #c5df8d45}.enemy-dot{background:var(--enemy);box-shadow:none}.top-actions{display:flex;gap:13px;align-items:center}.quiet{font-size:12px;color:#c8cebf}.quiet span{border:1px solid #4a5444;border-radius:3px;padding:2px 5px;margin-left:8px;font:10px var(--mono)}.icon-button{width:32px;height:32px;color:var(--muted);font-size:21px;border:1px solid transparent;border-radius:4px}.icon-button:hover,.quiet:hover{color:var(--accent)}.icon-button[aria-pressed=true]{color:var(--accent);border-color:var(--line)}
.app{max-width:1600px;padding:24px 38px 0;margin:auto}.command-bar{display:flex;align-items:center;gap:36px;margin-bottom:22px}.eyebrow{display:block;font:9px var(--mono);letter-spacing:1.3px;color:var(--muted);margin-bottom:8px}.resource{min-width:207px}.resource>div,.wave-info>div,.army-info>div{display:flex;align-items:center}.resource strong{font:29px var(--mono);letter-spacing:-1px;min-width:58px}.coin{color:var(--accent);font-size:21px;margin-right:5px}.income{font:11px var(--mono);color:var(--accent);margin-left:14px;background:#c5df8d10;border:1px solid #c5df8d26;border-radius:4px;padding:5px 7px}.wave-info{border-left:1px solid var(--line);padding-left:30px;min-width:235px}.wave-info strong{font:25px var(--mono)}.wave-info .eyebrow span{color:var(--accent);margin-left:8px}.wave-track{display:block;width:90px;height:3px;background:#323d2b;margin-left:18px}.wave-track i{display:block;height:100%;background:var(--accent);transition:width .1s}.army-info{border-left:1px solid var(--line);padding-left:30px}.army-info strong{font:25px var(--mono)}.army-info .muted{font:13px var(--mono);margin-left:6px}#army-types{font:10px var(--mono);color:var(--muted);margin-left:18px}.match-controls{margin-left:auto;display:flex;align-items:center;gap:12px}#match-time{font:13px var(--mono);color:var(--muted);margin-right:8px}.speed,.pause{border:1px solid #3e4836;border-radius:4px;height:34px;min-width:36px;font:13px var(--mono);background:#20271d}.pause{color:var(--accent);font-size:17px}.speed:hover,.pause:hover{background:#323d2a}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 258px;gap:18px;align-items:stretch}.battlefield{border:1px solid #3c4735;background:#20281c;border-radius:6px;overflow:hidden;min-width:0;display:flex;flex-direction:column}.field-heading{height:48px;display:flex;align-items:center;justify-content:space-between;padding:0 21px;background:#1e261b;border-bottom:1px solid #414a34}.field-heading>div{display:flex;align-items:center;gap:10px}.field-heading strong{font:10px var(--mono);letter-spacing:1.2px}.field-heading #player-hp{font:10px var(--mono);color:var(--muted);margin-left:8px}.enemy-heading strong{color:#e6a083}.bot-badge{font:8px var(--mono);border:1px solid #a16b454f;color:#c19577;border-radius:3px;padding:4px 6px;margin-right:4px;letter-spacing:.7px}.canvas-wrap{position:relative;flex:1;display:flex;align-items:center;background:#293021}canvas{width:100%;height:auto;aspect-ratio:1200/640;display:block;touch-action:none}.field-footer{min-height:37px;padding:8px 16px;display:flex;align-items:center;justify-content:space-between;gap:8px;font:9px var(--mono);color:#929c85;border-top:1px solid #3b4430;background:#20271c}.key{font:8px var(--mono);padding:2px 4px;border:1px solid #4d5740;border-radius:2px;margin:0 4px 0 10px}.key:first-child{margin-left:0}#battle-status{font-size:8px;letter-spacing:.5px;white-space:nowrap}#battle-status .live-dot{height:4px;width:4px;margin-right:5px}#target-clear{color:var(--enemy);font-size:10px}.sidebar{display:flex;flex-direction:column;gap:14px}.inspector{background:linear-gradient(135deg,#252d21,#1c221b);border:1px solid #3c4735;border-radius:6px;padding:19px;flex:1;min-height:310px}.section-label{font:9px var(--mono);letter-spacing:1.2px;color:var(--muted);display:flex;justify-content:space-between;align-items:center}.section-label span{color:#67765a}.selected-art{display:flex;align-items:center;justify-content:center;height:93px;margin:8px 0;background:radial-gradient(ellipse,#c5df8d09,transparent 70%)}.selected-art svg{width:100px;height:80px}.inspector h2{font-size:19px;font-weight:550;letter-spacing:-.5px;margin:4px 0 6px}.inspector .description{font-size:11px;line-height:1.7;color:#a6ae9b;margin:10px 0 17px}.level-tag{color:var(--accent);font:9px var(--mono);letter-spacing:.7px}.stats-row{display:flex;justify-content:space-between;align-items:center;font:10px var(--mono);color:#a6ae9b;margin:12px 0 7px}.stats-row strong{color:#e0e7d5;font-weight:400}.hp-bar{height:4px;border-radius:2px;background:#343d2b;overflow:hidden}.hp-bar i{display:block;background:var(--accent);height:100%;transition:width .2s}.action-button{width:100%;padding:10px;border:1px solid #46533a;border-radius:4px;font-size:11px;margin-top:8px;display:flex;justify-content:space-between;align-items:center}.action-button.primary{background:var(--accent);color:#25301c;font-weight:650;border-color:var(--accent);padding:12px 10px}.action-button:hover:not(:disabled){background:#3d4b30}.action-button.primary:hover:not(:disabled){background:#d8eeac}.action-button.danger{border-color:transparent;color:#a7af9c;padding-bottom:0}.action-button.danger:hover:not(:disabled){background:transparent;color:var(--enemy)}.inspector-note{font:9px/1.7 var(--mono);color:#87927a;margin:12px 0 0}.intel{border:1px solid #343e2e;border-radius:6px;padding:16px;background:#1b2219}.intel p{font-size:11px;line-height:1.7;color:#abb5a0;margin:12px 0}.intel-footer{border-top:1px solid #323d2c;padding-top:11px;display:flex;flex-direction:column;gap:6px;font:9px var(--mono);color:#a7b39a}.intel-footer>span:first-child{font-size:8px;color:#6f7b64;letter-spacing:1px}.construction{margin-top:21px}.build-heading{display:flex;align-items:center;gap:18px;margin-bottom:11px;font:9px var(--mono);letter-spacing:1px}.build-heading>span:first-child{color:#b5c2a3}.build-heading>span:nth-child(2){font-family:var(--sans);font-size:11px;color:#7d8a71;letter-spacing:0}.build-heading button{margin-left:auto;letter-spacing:0;color:var(--accent);font-size:11px}.build-menu{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}.build-card{position:relative;text-align:left;display:flex;align-items:center;gap:10px;padding:12px 11px;border:1px solid #35402d;background:linear-gradient(135deg,#232c1e,#1d241a);border-radius:5px;min-height:81px}.build-card:hover{border-color:#8b9e6c;background:#303d25}.build-card.active{border-color:var(--accent);background:#364528;box-shadow:inset 0 0 0 1px #c5df8d22}.build-card.unaffordable{opacity:.5}.build-card svg{width:46px;height:46px;flex-shrink:0}.build-card strong{display:block;font-size:11px;font-weight:550;line-height:1.4;margin-bottom:8px}.build-card .price{font:11px var(--mono);color:var(--accent)}.build-card .hotkey{position:absolute;right:7px;top:6px;color:#6d7b5f;font:8px var(--mono)}.bottom-bar{display:flex;justify-content:space-between;gap:20px;padding:15px 0 20px;font:9px var(--mono);color:#8d9b80}.bottom-bar>span{font-size:7px;letter-spacing:.7px;display:flex;align-items:center;gap:9px;color:#626f58}.bottom-bar i{height:3px;width:3px;background:#67755c}.toast{position:absolute;top:16px;left:50%;transform:translate(-50%,-8px);opacity:0;pointer-events:none;background:#11190eed;border:1px solid #839b5d;color:#dfedc9;border-radius:5px;padding:11px 18px;font-size:12px;transition:all .2s;max-width:90%;text-align:center;z-index:4}.toast.visible{opacity:1;transform:translate(-50%,0)}.toast.error{border-color:#bd805c;color:#f1c0a1}.pause-banner{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background:#111911a8;backdrop-filter:blur(3px);font:22px var(--mono);letter-spacing:6px;gap:20px}.pause-banner>span{color:var(--accent);font-size:40px}.pause-banner small{font:11px var(--sans);letter-spacing:0;color:#b9c4ad}.modal-backdrop{position:fixed;inset:0;background:#0b110de0;backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:20;padding:22px;overflow:auto}.modal{width:550px;max-width:100%;background:linear-gradient(145deg,#2b3525,#181f18);border:1px solid #576347;border-radius:10px;padding:36px;box-shadow:0 24px 100px #0008;position:relative}.modal-kicker{font:9px var(--mono);letter-spacing:2px;color:var(--accent);display:flex;align-items:center;gap:8px}.modal h1{font-size:46px;letter-spacing:-2px;margin:22px 0 14px;font-weight:750;line-height:1.05}.modal h1 em{font-style:normal;font-weight:350;color:var(--accent)}.modal .intro{font-size:14px;line-height:1.7;color:#b4bfaa;margin-bottom:24px}.briefing{border-top:1px solid #48553b;margin:22px 0 24px;padding-top:6px}.briefing>div{display:flex;gap:16px;align-items:flex-start;margin-top:17px}.briefing .number{font:11px var(--mono);color:var(--accent);border:1px solid #51613d;border-radius:4px;padding:7px;flex-shrink:0}.briefing p{margin:0;color:#a3b097;font-size:12px;line-height:1.6}.briefing strong{display:block;color:#e4eadb;font-size:13px;font-weight:550;margin-bottom:3px}.modal-primary{width:100%;border-radius:4px;background:var(--accent);color:#202d16;padding:16px 18px;text-align:left;font-weight:650;display:flex;justify-content:space-between;align-items:center}.modal-primary:hover{background:#d8eead}.modal-secondary{padding:13px;width:100%;color:#aabb99;font-size:12px}.modal-foot{font:9px var(--mono);line-height:1.7;color:#849278;text-align:center;margin:14px 0 0}.result-stats{display:flex;gap:30px;margin:25px 0;border-top:1px solid #45513a;padding-top:20px}.result-stats strong{display:block;font:23px var(--mono);margin-bottom:8px;color:var(--accent)}.result-stats span{font-size:11px;color:#9eac92}.help-copy{font-size:12px;line-height:1.8;color:#bbc5ae}.help-copy p{margin:12px 0}.help-copy b{color:#e9efdf}.modal h2{font-size:25px;font-weight:550;margin:20px 0}.help-scroll{max-height:60vh;overflow:auto;margin-bottom:18px}.close-modal{position:absolute;right:17px;top:13px;color:#afbf9b;font-size:23px}.enemy-text{color:var(--enemy)!important}
@media(min-width:1550px){.game-layout{grid-template-columns:minmax(0,1fr) 280px}.inspector{padding:23px}.inspector h2{font-size:22px}.selected-art{height:120px}.build-card strong{font-size:12px}.build-card{padding:16px}.build-card svg{width:55px;height:55px}}
@media(max-width:1180px){.topbar{padding:0 22px}.app{padding:20px 22px 0}.command-bar{gap:22px}.army-info{padding-left:20px}#army-types{display:none}.wave-info{min-width:200px;padding-left:20px}.resource{min-width:190px}.game-layout{grid-template-columns:minmax(0,1fr) 230px;gap:12px}.inspector{padding:15px}.selected-art{height:65px}.inspector .description{font-size:10px}.build-card{padding:10px 8px;gap:7px}.build-card svg{width:32px}.build-card strong{font-size:10px}.field-heading{padding:0 14px}.session-label{font-size:9px}.field-heading #player-hp{display:none}#battle-status{display:none}.bottom-bar>span{display:none}}
@media(max-width:900px){.session-label{display:none}.topbar{height:72px}.command-bar{gap:16px}.wave-info{min-width:170px;padding-left:16px}.wave-track{width:55px}.resource{min-width:174px}.army-info{display:none}.game-layout{grid-template-columns:1fr}.sidebar{display:grid;grid-template-columns:1.3fr 1fr;gap:12px}.inspector{min-height:170px;padding:15px 17px}.selected-art{float:left;width:80px;height:70px;margin:8px 14px 6px 0}.inspector h2{font-size:18px}.inspector .description{margin:8px 0 12px}.inspector .action-button{max-width:100%}.inspector-note{font-size:8px}.intel{padding:18px}.build-menu{grid-template-columns:repeat(3,1fr)}.build-card{min-height:73px}.build-card svg{width:45px}.build-card strong{font-size:12px}.construction{margin-top:17px}.field-footer{font-size:10px}.field-heading #player-hp{display:inline}.battlefield{order:0}.sidebar{order:1}.inspector .hp-bar{clear:both}}
@media(max-width:560px){.topbar{padding:0 14px;height:67px}.brand{font-size:20px;gap:10px}.brand-mark{width:33px;height:33px;font-size:30px}.brand small{font-size:6px}.top-actions{gap:3px}.quiet{font-size:10px}.quiet span{display:none}.icon-button{font-size:19px;width:30px}.app{padding:16px 10px 0}.command-bar{gap:10px;margin-bottom:15px}.resource{min-width:140px}.resource strong{font-size:23px;min-width:45px}.income{font-size:9px;margin-left:7px;padding:4px}.wave-info{min-width:100px;padding-left:10px}.wave-info strong{font-size:21px}.wave-info .eyebrow{font-size:7px;letter-spacing:.3px}.wave-info .eyebrow span{margin-left:2px}.wave-track{display:none}.eyebrow{font-size:8px}.match-controls{gap:5px;flex-wrap:wrap;justify-content:flex-end}#match-time{width:100%;font-size:9px;text-align:right;margin:0}.speed,.pause{height:25px;min-width:29px;font-size:11px}.field-heading{height:39px;padding:0 10px}.field-heading strong{font-size:8px;letter-spacing:.5px}.field-heading>div{gap:6px}.field-heading #player-hp{font-size:8px;margin-left:0}.bot-badge{font-size:6px;padding:3px}.field-footer{font-size:8px;padding:8px}.field-footer .key{font-size:7px;margin-left:4px}.sidebar{grid-template-columns:1fr}.intel{display:none}.inspector{min-height:150px}.inspector .description{font-size:11px}.build-menu{gap:6px}.build-card{display:block;padding:8px;min-height:96px}.build-card svg{width:34px;height:31px}.build-card strong{font-size:10px;margin-bottom:5px}.build-card .price{font-size:10px}.build-heading{gap:9px;font-size:8px}.build-heading>span:nth-child(2){font-size:9px;max-width:180px}.modal{padding:26px}.modal h1{font-size:39px}.modal .intro{font-size:12px}.briefing p{font-size:11px}.briefing strong{font-size:12px}.briefing>div{gap:12px}.pause-banner{font-size:15px;gap:8px}.pause-banner>span{font-size:26px}.pause-banner small{font-size:9px}.toast{font-size:10px;padding:8px 12px}.bottom-bar{font-size:8px;line-height:1.5}}
@media(max-width:900px){.app{display:flex;flex-direction:column}.command-bar{order:0}.game-layout{display:contents}.battlefield{order:1}.construction{order:2}.sidebar{order:3;margin-top:15px}.bottom-bar{order:4}}
.pause-banner{inset:auto;top:12px;left:50%;transform:translateX(-50%);flex-direction:row;background:#15200fe8;border:1px solid #657c47;border-radius:4px;padding:9px 13px;backdrop-filter:none;gap:10px;font-size:11px;letter-spacing:1px;pointer-events:none;white-space:nowrap}.pause-banner>span{font-size:15px}.pause-banner small{font-size:9px}
@media(max-width:560px){.pause-banner{top:6px;padding:6px 10px;font-size:9px}.pause-banner small{display:none}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.report-nav{color:var(--accent)}.modal.report-modal{width:650px;padding:26px 30px}.report-modal h2{margin-bottom:8px}.report-duration{font:20px var(--mono);color:var(--accent);margin-left:12px}.report-muted{font-size:11px;line-height:1.7;color:#a4b096;margin:8px 0 14px}.report-scroll{max-height:54vh;overflow:auto;padding-right:8px;overscroll-behavior:contain}.report-legend{font:9px var(--mono);display:flex;gap:20px;margin:17px 0 4px;color:var(--accent)}.report-legend span+span{color:var(--enemy)}.report-chart{display:block;width:100%;height:auto;max-height:150px}.report-chart text{font:9px var(--mono);fill:#9dab8c}.report-table{width:100%;border-collapse:collapse;font-size:11px;margin:14px 0}.report-table th,.report-table td{padding:8px;border-bottom:1px solid #3c4932;text-align:right;font-weight:400;font-variant-numeric:tabular-nums}.report-table th:first-child{text-align:left;color:#aebba1}.report-table thead th{font:9px var(--mono);color:var(--accent)}.report-table td:last-child{color:var(--enemy)}.report-modal h3{font-size:13px;font-weight:550;margin:24px 0 12px}.report-observations{padding-left:17px;font-size:11px;line-height:1.7;color:#ccd5bf}.report-observations li{padding-left:3px;margin-bottom:10px}.report-timeline,.report-history{padding:12px 0;border-top:1px solid #435038}.report-timeline summary,.report-history summary{cursor:pointer;font-size:12px;color:#d5e1c7;padding:5px 0}.report-timeline p{font:9px/1.6 var(--mono);color:#b4c1a6;border-bottom:1px solid #35402e;padding:8px 0;margin:0}.report-timeline small{display:block;font-size:10px;line-height:1.6;color:#8f9e80;margin-top:12px}.history-item{display:flex;justify-content:space-between;width:100%;font-size:11px;padding:12px 8px;border-bottom:1px solid #3c4932;gap:10px;text-align:left}.history-item:hover{background:#3b4930}.history-item span+span{font:10px var(--mono);color:#98a888}.report-actions{margin-top:17px}.report-actions .modal-primary{font-size:12px;padding:13px}.report-actions .modal-secondary{font-size:11px;padding:10px}.report-modal .modal-foot{margin-top:2px;font-size:9px}.report-modal textarea{width:100%;height:100px;background:#141d11;color:#dce8cc;border:1px solid #566645;margin-top:12px;padding:10px;font:10px var(--mono)}
@media(max-width:560px){.top-actions{gap:1px}.quiet{font-size:9px}.report-nav{margin-right:5px}.brand{font-size:17px;gap:7px}.brand-mark{width:29px;height:29px;font-size:28px}.brand small{letter-spacing:1.2px}.modal.report-modal{padding:24px 18px}.report-scroll{max-height:53vh}.report-modal h2{font-size:22px}.report-duration{font-size:16px}.report-table th,.report-table td{padding:7px 3px;font-size:10px}}
.duel-label{display:block;font:11px var(--mono);color:var(--accent);margin:18px 0 8px}.duel-input{display:block;width:100%;min-width:0;background:#172013;border:1px solid #5a6c45;border-radius:5px;padding:13px;color:var(--text);font:14px var(--sans)}.duel-input[readonly]{font:11px var(--mono)}.duel-error{color:var(--enemy);font-size:12px;line-height:1.6;min-height:19px}.duel-players{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:22px 0}.duel-players>div{border:1px solid #4b5a3b;background:#1a2416;border-radius:5px;padding:16px;overflow-wrap:anywhere}.duel-players strong{display:block;font-size:14px;margin-bottom:8px}.duel-players span{font:10px var(--mono);color:var(--muted)}#network-status{color:var(--accent);letter-spacing:0;font-size:9px}.top-actions{gap:10px}@media(max-width:560px){.top-actions{gap:1px}.topbar{gap:8px}.brand small{display:none}#help-button{font-size:0}#help-button span{display:block;font-size:10px;margin:0}#network-status{display:block;font-size:8px}.bottom-bar{flex-wrap:wrap}.duel-players>div{padding:12px}.duel-players strong{font-size:12px}}
