.td-game{color-scheme:dark;--bg:#101912;--panel:#19251c;--line:#334135;--text:#eef0df;--muted:#a2b19d;--p1:#8edbff;--p2:#ffbd83;font-family:system-ui,-apple-system,"Segoe UI","Noto Sans JP",sans-serif}
.td-game .session-overlay{position:absolute;inset:0;z-index:6;display:grid;place-items:center;background:#102015d9;padding:16px;backdrop-filter:blur(3px)}
.td-game .session-card{width:min(460px,100%);max-height:100%;overflow:auto;padding:22px 26px;border:1px solid #647454;border-radius:10px;background:#19251cf5;text-align:center;box-shadow:0 12px 30px #0005}
.td-game .session-card h2{font-size:clamp(22px,3vw,30px);margin:0 0 16px}
.td-game .session-card .eyebrow{margin-bottom:6px}
.td-game .session-card fieldset{border:0;margin:0 0 13px;padding:0}
.td-game .session-card legend{font-size:12px;color:var(--muted);margin:0 auto 7px}
.td-game .session-options{display:flex;gap:8px;justify-content:center}
.td-game .session-options label{flex:1;position:relative;cursor:pointer}
.td-game .session-options input{position:absolute;inset:0;width:100%;height:100%;opacity:0;margin:0;cursor:pointer}
.td-game .session-options span{display:block;padding:9px 5px;border:1px solid #465442;border-radius:6px;background:#253329;font-size:13px}
.td-game .session-options input:checked+span{background:#becb9c;border-color:#e0e6c1;color:#18251a;font-weight:750}
.td-game .session-options input:focus-visible+span{outline:3px solid var(--p1);outline-offset:3px}
.td-game .session-primary{width:100%;margin-top:2px}
.td-game .session-hint{font-size:10px;line-height:1.5;color:var(--muted);margin:12px 0 0}
.td-game .session-description{font-size:13px;line-height:1.7;margin:10px 0 16px}
.td-game .key-binding-settings{margin:0 0 13px;text-align:left;border-top:1px solid #465442;border-bottom:1px solid #465442;padding:9px 0}
.td-game .key-binding-settings>summary{cursor:pointer;color:var(--text);font-size:12px}
.td-game .key-binding-settings>.session-description{font-size:11px;color:var(--muted);margin:8px 0}
.td-game .key-binding-player{margin:0 0 8px!important;padding:7px 8px!important;border:1px solid #465442!important;border-radius:6px}
.td-game .key-binding-player legend{margin:0 0 5px;text-align:left;color:var(--text);font-size:11px}
.td-game .key-binding-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 6px}
.td-game .key-binding-grid label{display:flex;align-items:center;justify-content:space-between;gap:5px;font-size:11px;color:var(--muted)}
.td-game .key-binding-grid button{min-width:74px;padding:5px 6px;font-size:11px;text-align:center}
.td-game .key-binding-message{min-height:1.4em;margin:5px 0 0;font-size:10px;color:#c8d99e}
.td-game .key-binding-message[data-tone=error]{color:#ffb4a2}
.td-game [data-key-reset]{width:100%;padding:7px 8px;font-size:11px}
.td-game .checkpoint-card{margin:0 0 16px;padding:10px 12px;border:1px solid #60764f;border-radius:7px;background:#223126;text-align:left}
.td-game .checkpoint-card .eyebrow{margin-bottom:3px}
.td-game .checkpoint-card .session-description{margin:4px 0 10px}
.td-game .checkpoint-card button{width:100%}
.td-game .session-buttons{display:flex;flex-direction:column;gap:8px}
.td-game .result-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:0 0 13px}
.td-game .result-metrics div{padding:7px 4px;border:1px solid #465442;border-radius:6px;background:#253329}
.td-game .result-metrics dt{font-size:10px;color:var(--muted)}
.td-game .result-metrics dd{margin:2px 0 0;font-size:15px;font-variant-numeric:tabular-nums}
.td-game .result-stats{width:100%;border-collapse:collapse;margin:0 0 12px;font-size:11px;font-variant-numeric:tabular-nums}
.td-game .result-stats caption{text-align:left;color:var(--muted);font-size:11px;margin-bottom:4px}
.td-game .result-stats th,.td-game .result-stats td{padding:5px 3px;border-bottom:1px solid #465442;text-align:right}
.td-game .result-stats th:first-child,.td-game .result-stats td:first-child{text-align:left}
.td-game .result-stats thead th{color:var(--muted);font-weight:500}
.td-game .clear-record{font-size:11px;line-height:1.5;color:#c8d99e;margin:0 0 12px}
.td-game .map-clear-badge{display:block;margin-top:3px;color:#c8d99e;font-size:10px;font-weight:650}
.td-game .canvas-tools{position:absolute;top:8px;left:10px;right:10px;z-index:4;display:flex;gap:6px;align-items:center;pointer-events:none}
.td-game .canvas-tools>*{pointer-events:auto}
.td-game .canvas-tools>span{margin-right:auto;background:#14221ce8;padding:6px 9px;border-radius:4px;font-size:11px}
.td-game .canvas-tools button{padding:6px 9px;font-size:11px}
.td-game .volume-control{display:flex;align-items:center;gap:5px;padding:4px 7px;background:#14221ce8;border-radius:4px;font-size:10px;color:#dfe8d5;white-space:nowrap}
.td-game .volume-control span{padding:0;background:none;font-size:inherit;color:inherit}
.td-game .volume-control input{width:72px;margin:0;accent-color:#c4dba5;cursor:pointer}
.td-game .volume-control output{min-width:29px;text-align:right;font-variant-numeric:tabular-nums}
.td-game .canvas-wave{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);z-index:4;white-space:nowrap}
.td-game .battlefield .view-heading{top:50px}
.td-game .battlefield.awaiting-wave .view-note{bottom:60px}
.td-game .battlefield .curtain{z-index:8}
.td-game .battlefield canvas:focus-visible{outline:2px solid var(--p1);outline-offset:-2px}
@media(max-width:520px){.td-game .session-overlay{padding:10px}
.td-game .session-card{padding:14px 16px}
.td-game .session-card h2{margin-bottom:10px}
.td-game .session-card fieldset{margin-bottom:10px}
.td-game .session-options span{font-size:12px;padding:8px 3px}
.td-game .session-hint{margin-top:8px}
.td-game .session-description{font-size:12px}
.td-game .canvas-tools{left:6px;right:6px}
.td-game .canvas-tools button{font-size:10px;padding:6px}
.td-game .canvas-tools>span{font-size:10px}.td-game .volume-control{font-size:9px;gap:3px;padding:4px}.td-game .volume-control input{width:56px}}
.td-game *{box-sizing:border-box}
.td-game{margin:0;background:radial-gradient(ellipse at 20% 0,#253624 0,transparent 55%),var(--bg);color:var(--text)}
.td-game .game-content{max-width:1660px;margin:auto;padding:30px 32px 18px}
.td-game button,.td-game a{-webkit-tap-highlight-color:transparent}
.td-game button{font:inherit;font-size:13px;background:#253329;border:1px solid #465442;border-radius:6px;color:var(--text);padding:10px 14px;cursor:pointer;transition:background .15s}
.td-game button:hover{background:#344835}
.td-game button:focus-visible,.td-game a:focus-visible,.td-game summary:focus-visible{outline:3px solid var(--p1);outline-offset:3px}
.td-game button:disabled{opacity:.38;cursor:default}
.td-game button[aria-pressed=true]{border-color:#c4dba5;background:#3b4e32}
.td-game .masthead{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:26px}
.td-game .eyebrow{font-size:10px;font-weight:750;letter-spacing:.2em;color:#c1d6a6;margin:0 0 11px}
.td-game .game-title{font-size:clamp(24px,2.4vw,36px);font-weight:700;letter-spacing:.035em;margin:0 0 10px}
.td-game .intro{font-size:13px;color:var(--muted);margin:0}
.td-game .stage-label{white-space:nowrap;color:#ccd8bd;font-size:12px;border:1px solid var(--line);padding:11px 16px;border-radius:30px}
.td-game .stage-label i{display:inline-block;width:6px;height:6px;background:#abd88f;border-radius:100%;margin-right:10px}
.td-game .game{border:1px solid #46523c;border-radius:12px;overflow:hidden;background:var(--panel);box-shadow:0 15px 65px #0004}
.td-game .toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:13px 17px;border-bottom:1px solid var(--line)}
.td-game .checkpoint-status{margin:0;padding:6px 17px;border-bottom:1px solid var(--line);background:#142019;color:#c8d99e;font-size:11px;line-height:1.5;overflow-wrap:anywhere}
.td-game .checkpoint-status[data-tone=error],.td-game .checkpoint-warning{color:#ffb4a2}
.td-game .checkpoint-warning{font-size:11px;line-height:1.5;margin:0 0 12px}
.td-game .session,.td-game .tools{display:flex;align-items:center;gap:15px;font-size:12px}
.td-game .session>span:not(:first-child){color:var(--muted)}
.td-game .session b{font-variant-numeric:tabular-nums;color:var(--text);margin-left:5px;font-weight:650}
.td-game .session #state-light{width:6px;height:6px;background:#bcdf91;border-radius:50%;box-shadow:0 0 8px #bdde9166}
.td-game .divider{width:1px;height:15px;background:#4c5745}
.td-game .tools{gap:7px}
.td-game .tools button{padding:7px 10px;font-size:12px}
.td-game .battlefield{position:relative;height:clamp(410px,53vh,650px);background:#17221a}
.td-game .battlefield canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.td-game .screens{position:absolute;inset:0;display:grid;grid-template-columns:1fr 1fr;gap:3px}
.td-game .view{position:relative;overflow:hidden;--player:var(--p1);touch-action:none;cursor:crosshair}
.td-game .p2{--player:var(--p2)}
.td-game .view-heading{position:absolute;left:17px;right:17px;top:16px;display:flex;align-items:center;gap:9px;pointer-events:none;text-shadow:0 1px 5px #000;font-size:13px}
.td-game .badge{padding:5px 8px;border:1px solid var(--player);background:#18261de6;border-radius:4px;color:var(--player);font-size:11px;font-weight:800}
.td-game .view-mode{margin-left:auto;background:#122018bf;padding:6px 10px;border-radius:4px;font-size:11px}
.td-game .view-note{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);background:#14221cde;border:1px solid #a3bba54d;color:#edf1e4;padding:8px 13px;border-radius:5px;font-size:12px;white-space:nowrap;pointer-events:none}
.td-game .tower-labels{position:absolute;inset:0;pointer-events:none}
.td-game .tower-labels span{position:absolute;color:#f3f3d8;font-size:10px;transform:translate(-50%,0);padding:3px 6px;background:#162619d6;border:1px solid #dae2b943;border-radius:3px;white-space:nowrap}
.td-game .reticle{display:none;position:absolute;top:50%;left:50%;width:34px;height:34px;transform:translate(-50%,-50%);border:1px solid #ffffff65;border-radius:100%;pointer-events:none}
.td-game .reticle:before,.td-game .reticle:after{content:"";position:absolute;background:#eef8d9;box-shadow:0 0 3px #000}
.td-game .reticle:before{height:1px;width:50px;left:-9px;top:16px}
.td-game .reticle:after{width:1px;height:50px;top:-9px;left:16px}
.td-game .reticle i{position:absolute;inset:12px;background:#fff7d9;border-radius:100%}
.td-game .reticle.target{border-color:#ffac77;box-shadow:0 0 14px #ffbd8344}
.td-game .reticle.hit{transform:translate(-50%,-50%) rotate(45deg);border-color:#fff;filter:drop-shadow(0 0 6px #fff)}
.td-game .curtain{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#102015d9;z-index:4;color:#f3f1d8;backdrop-filter:blur(3px);font-size:18px;padding:24px;text-align:center;pointer-events:none}
.td-game .curtain.hidden{display:none}
.td-game .player-controls{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#46523c}
.td-game .control{--player:var(--p1);padding:18px 20px;background:#1a281e}
.td-game .control.p2{--player:var(--p2)}
.td-game .control-title{display:flex;align-items:center;gap:10px;margin-bottom:14px;font-size:12px}
.td-game .control-title strong{color:var(--player)}
.td-game .status{margin-left:auto;font-size:11px;color:#b5c0ae}
.td-game .select-row{display:flex;align-items:center;gap:7px}
.td-game .select-row .tower-select{flex:1;text-align:left;display:flex;justify-content:space-between;gap:5px}
.td-game .tower-select span{color:var(--muted);font-size:10px}
.td-game .tower-select.selected{border-color:var(--player);background:#334432}
.td-game .board{border-color:#cbd4ad;background:#becb9c;color:#18251a;font-weight:750;min-width:92px}
.td-game .board:hover{background:#d7e0b6}
.td-game .action-row{display:flex;gap:8px;margin-top:10px}
.td-game .action-row button{flex:1}
.td-game .trigger{color:var(--player);border-color:var(--player);font-weight:700;touch-action:none;user-select:none}
.td-game .trigger.firing{background:#596345}
.td-game .ammo-row{margin-top:13px;display:flex;justify-content:space-between;gap:8px;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
.td-game .ammo-row strong{color:var(--text)}
.td-game .ammo-track{height:3px;background:#374635;border-radius:3px;overflow:hidden;margin-top:7px}
.td-game .ammo-fill{height:100%;width:100%;background:var(--player);transition:width .1s linear}
.td-game .keyboard-hint{font-size:10px;color:#9eae96;margin:13px 0 0;line-height:1.8}
.td-game kbd{font:inherit;color:#dde6cd;border:1px solid #465742;border-radius:3px;padding:1px 4px;margin:0 1px}
.td-game .aim-controls{display:flex;gap:5px;margin-top:10px}
.td-game .aim-controls button{flex:1;touch-action:none;user-select:none;font-size:14px;padding:5px}
.td-game .aim-controls small{align-self:center;margin-right:5px;color:#a8b49c;white-space:nowrap}
.td-game .footnotes{font-size:12px;color:var(--muted);line-height:1.9;margin-top:17px}
.td-game .footnotes>p{margin-bottom:12px}
.td-game .footnotes strong{color:#d4debf}
.td-game .footnotes summary{cursor:pointer;display:list-item;padding:8px 0;border-top:1px solid var(--line)}
.td-game .detail-columns{display:grid;grid-template-columns:1fr 1fr;gap:25px;padding:4px 0 15px}
.td-game h2{font-size:12px;color:#e0e6ce}
.td-game .detail-columns p{margin:8px 0}
.td-game footer{display:flex;justify-content:space-between;gap:10px;font-size:10px;color:#84917a;margin-top:24px;letter-spacing:.06em}
.td-game a{color:#b8c8a6;text-decoration:none}
.td-game a:hover{text-decoration:underline}
.td-game .solo .screens,.td-game .solo .player-controls{grid-template-columns:1fr}
.td-game .solo #view-1,.td-game .solo #control-1{display:none}
.td-game .defense-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 17px;border-bottom:1px solid var(--line);background:#223020;font-size:12px}
.td-game .defense-stats{display:flex;gap:18px;flex-wrap:wrap;color:var(--muted)}
.td-game .defense-stats b{color:var(--text);margin-left:5px;font-variant-numeric:tabular-nums}
.td-game .defense-stats b.critical{color:#ff9f8c}
.td-game .wave-action{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.td-game .wave-action span{font-size:11px;color:var(--muted)}
.td-game #start-wave{background:#becb9c;color:#18251a;font-weight:700;padding:8px 12px}
.td-game .curtain{line-height:1.8}
@media(max-width:520px){.td-game .defense-bar{padding:10px;font-size:11px}
.td-game .defense-stats{gap:12px}
.td-game .wave-action{width:100%;justify-content:space-between;gap:8px}
.td-game #start-wave{font-size:11px}}
.td-game [hidden]{display:none!important}
.td-game .site-select{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
.td-game .site-select button{padding:8px 4px}
.td-game .site-select .built{box-shadow:inset 0 -3px #bbc9a6}
.td-game .type-select,.td-game .purchase-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.td-game .type-select button,.td-game .purchase-actions button{flex:1}
.td-game .type-select span{margin-left:6px;color:#ced9b8}
.td-game .tower-info{font-size:12px;line-height:1.7;margin:10px 0 5px}
.td-game .seat-info{font-size:11px;line-height:1.6;color:var(--muted);margin:5px 0}
.td-game .purchase-note{font-size:11px;color:#dfd6a6;margin:8px 0}
.td-game .purchase-note:empty{display:none}
.td-game .purchase-actions button{font-size:12px;padding:9px 7px}
@media(max-width:520px){.td-game .site-select{grid-template-columns:repeat(3,1fr);gap:4px}
.td-game .type-select{gap:4px}
.td-game .type-select button{font-size:11px;padding:8px 4px}
.td-game .type-select span{margin-left:2px}
.td-game .purchase-actions{flex-direction:column;gap:5px}
.td-game .tower-info,.td-game .seat-info{font-size:10px}
.td-game .purchase-actions button{font-size:11px}}
@media(min-width:1100px){.td-game .aim-controls{max-width:260px}
.td-game .battlefield{min-height:440px}}
@media(max-width:900px){.td-game .game-content{padding:20px 14px}
.td-game .masthead{margin-bottom:18px}
.td-game .stage-label{display:none}
.td-game .toolbar{flex-wrap:wrap}
.td-game .session{gap:10px}
.td-game .tools{width:100%;justify-content:flex-end}
.td-game .control{padding:14px 11px}
.td-game .select-row{flex-wrap:wrap}
.td-game .select-row .board{width:100%}
.td-game .tower-select{font-size:11px}
.td-game .keyboard-hint{font-size:10px}
.td-game .view-heading{left:10px;right:10px;top:10px;gap:6px}
.td-game .view-note{font-size:10px;padding:7px 8px}
.td-game .battlefield{height:400px}
.td-game .view-heading strong{display:none}}
@media(max-width:520px){.td-game .game-content{padding:18px 8px}
.td-game .intro{font-size:11px;line-height:1.8}
.td-game .toolbar{padding:10px;gap:10px}
.td-game .checkpoint-status{padding:6px 10px;font-size:10px}
.td-game .tools{justify-content:space-between;gap:4px}
.td-game .tools button{font-size:11px;padding:7px 9px}
.td-game .session{font-size:10px;gap:8px}
.td-game .battlefield{height:340px}
.td-game .control{padding:12px 8px}
.td-game .tower-select span{display:none}
.td-game .select-row{gap:5px}
.td-game .control-title{font-size:10px;gap:4px}
.td-game .status{font-size:9px}
.td-game .ammo-row{font-size:9px;flex-wrap:wrap}
.td-game .action-row{gap:4px}
.td-game .action-row button{padding:8px 3px;font-size:11px}
.td-game .view-note{white-space:normal;width:90%;text-align:center}
.td-game .view-mode{font-size:9px;padding:5px}
.td-game .aim-controls{gap:3px;flex-wrap:wrap}
.td-game .aim-controls small{display:none}
.td-game .aim-controls button{padding:5px 2px;min-width:24px}
.td-game .keyboard-hint{display:none}
.td-game .detail-columns{grid-template-columns:1fr;gap:8px}
.td-game .footnotes{font-size:11px}
.td-game footer{flex-direction:column;font-size:9px}}
.td-game .tower-labels span{pointer-events:auto;cursor:pointer}
.td-game .tower-labels span{transform:translate(-50%,-50%);background:none;border:0;padding:6px;color:#f3f3d8;font-size:12px;line-height:1;font-weight:700;text-shadow:0 1px 2px #102015,0 0 3px #102015}
.td-game .tower-labels span.selected{z-index:2;color:var(--player);font-weight:800}
.td-game .site-select .tower-select.selected{background:var(--player);color:#122018;border-color:#f5f8ec;font-weight:800;box-shadow:0 0 0 2px var(--player)}
.td-game .turret-catalog{margin-top:20px;padding-top:14px;border-top:1px solid var(--line)}
.td-game .catalog-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}
.td-game .catalog-heading .eyebrow{margin-bottom:4px}
.td-game .catalog-heading h2{font-size:18px;margin:0;color:var(--text)}
.td-game .catalog-count{font-size:14px;color:var(--muted)}
.td-game .catalog-intro{font-size:16px;line-height:1.6;margin:6px 0 4px}
.td-game .catalog-help{font-size:14px;line-height:1.6;color:var(--muted);margin:4px 0 8px}
.td-game .catalog-table-wrap{width:100%;border:1px solid #46523c;border-radius:6px;background:var(--panel);overflow:hidden}
.td-game .catalog-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;font-size:14px;line-height:1.5;text-align:left}
.td-game .catalog-turret-col{width:152px}
.td-game .catalog-table th,.td-game .catalog-table td{padding:10px 14px;border-bottom:1px solid var(--line);vertical-align:middle;overflow-wrap:anywhere}
.td-game .catalog-table thead th{background:#223020;color:#ccd9bf;font-weight:600;padding-top:7px;padding-bottom:7px}
.td-game .catalog-table tbody tr:last-child>*{border-bottom:0}
.td-game .catalog-table tbody tr:nth-child(even){background:#1d2b20}
.td-game .catalog-table tr>:first-child{border-right:1px solid var(--line)}
.td-game .catalog-table .catalog-turret{padding:10px 12px;text-align:center;font-weight:400}
.td-game .catalog-turret img{display:block;width:104px;height:104px;image-rendering:pixelated;margin:0 auto}
.td-game .catalog-identity{display:block}
.td-game .catalog-name{display:block;font-size:16px;line-height:1.35;font-weight:700;color:var(--turret-accent)}
.td-game .catalog-role{display:block;margin-top:4px;color:var(--muted);font-size:14px;line-height:1.45}
.td-game .catalog-params{display:grid;grid-template-columns:92px minmax(0,1fr);gap:4px 14px;max-width:840px;margin:0}
.td-game .catalog-params dt{color:var(--muted);align-self:start}
.td-game .catalog-params dd{min-width:0;margin:0;font-variant-numeric:tabular-nums}
.td-game .catalog-stat{display:grid;grid-template-columns:minmax(0,1fr) 136px;gap:14px;align-items:center;min-height:22px}
.td-game .catalog-track{display:block;height:5px;background:#344233;border-radius:3px;overflow:hidden}
.td-game .catalog-track i{display:block;height:100%;background:var(--turret-accent);border-radius:3px}
.td-game .catalog-number{text-align:right;white-space:nowrap}
.td-game .catalog-number strong{font-size:14px;font-weight:650}
.td-game .catalog-number small{display:block;font-size:13px;color:var(--muted);line-height:1.35}
.td-game .catalog-weakness{color:var(--muted)}
.td-game .catalog-footnote{margin-top:8px}
@media(max-width:600px){.td-game .catalog-table,.td-game .catalog-table tbody,.td-game .catalog-table tr,.td-game .catalog-table td{display:block;width:100%}
.td-game .catalog-table{font-size:14px}
.td-game .catalog-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.td-game .catalog-table tbody tr+tr{border-top:1px solid var(--line)}
.td-game .catalog-table th,.td-game .catalog-table td{padding:9px 12px}
.td-game .catalog-table tr>:first-child{border-right:0}
.td-game .catalog-table .catalog-turret{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;text-align:left;border-bottom:0}
.td-game .catalog-turret img{flex:none;width:76px;height:76px;margin:0}
.td-game .catalog-identity{min-width:0}
.td-game .catalog-name{font-size:15px}
.td-game .catalog-role{font-size:14px}
.td-game .catalog-params{grid-template-columns:78px minmax(0,1fr);gap:5px 8px}
.td-game .catalog-stat{grid-template-columns:minmax(0,1fr) 106px;gap:8px}
.td-game .catalog-number strong{font-size:14px}
.td-game .catalog-number small{font-size:13px}
.td-game .catalog-track{height:6px}}
@media(max-width:380px){.td-game .catalog-stat{grid-template-columns:minmax(0,1fr);gap:3px}
.td-game .catalog-number{text-align:left}
.td-game .catalog-number small{display:block;margin-left:0}
.td-game .catalog-params{column-gap:6px}
.td-game .catalog-table th,.td-game .catalog-table td{padding-left:8px;padding-right:8px}}
@media(max-width:520px){.td-game .catalog-heading{align-items:flex-start}
.td-game .catalog-heading h2{font-size:17px}
.td-game .catalog-count{font-size:14px;line-height:1.6;max-width:90px;text-align:right}}
.td-game .reticle:not(.hit){visibility:hidden}
.td-game .reticle:before,.td-game .reticle:after,.td-game .reticle i{display:none}
.td-game .reticle.hit{box-shadow:none}
.td-game .reticle.scope{visibility:visible;width:min(92cqw,92cqh);height:auto;aspect-ratio:1;z-index:1;border:0;background:url('./assets/turrets/runtime-v03/scope.webp') center/contain no-repeat;image-rendering:pixelated;box-shadow:0 0 0 100vmax #060b09ee;transform:translate(-50%,-50%)}
.td-game .reticle.scope::before,.td-game .reticle.scope::after{display:none}
.td-game .reticle.scope.hit{outline:1px solid #fff0ba}
.td-game .view-heading,.td-game .view-note{z-index:2}
.td-game .keyboard-guides{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#1a281e}
.td-game .keyboard-guides .keyboard-hint{display:block;min-width:0;margin:0;padding:7px 11px;font-size:11px;line-height:1.6;color:var(--muted);overflow-wrap:anywhere}
.td-game .keyboard-guides .keyboard-hint+ .keyboard-hint{border-left:1px solid var(--line)}
.td-game .keyboard-guides strong{color:var(--p1);margin-right:4px}
.td-game .keyboard-guides #keyboard-hint-1 strong{color:var(--p2)}
.td-game .keyboard-guides kbd{white-space:nowrap;padding:0 2px;margin:0}
.td-game .gamepad-guide{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 11px;border-bottom:1px solid var(--line);background:#17241b;color:var(--muted);font-size:10px;line-height:1.5}
.td-game .gamepad-guide span{min-width:0;overflow-wrap:anywhere}
.td-game .gamepad-guide strong{flex:none;color:#c8d99e;font-weight:500;white-space:nowrap}
.td-game .solo .keyboard-guides{grid-template-columns:minmax(0,1fr)}
.td-game .solo #keyboard-hint-1{display:none}
@media(max-width:520px){.td-game .keyboard-guides .keyboard-hint{font-size:10px;padding:6px 8px}}
@media(max-width:520px){.td-game .gamepad-guide{display:block;padding:5px 8px;font-size:9px}.td-game .gamepad-guide strong{display:block;margin-top:2px}}
.td-game .wave-composition{margin:0;padding:0 18px 9px;color:var(--muted);font-size:11px;line-height:1.5;overflow-wrap:anywhere}
.td-game .enemy-guide{display:flex;flex-wrap:wrap;gap:7px 10px;padding:10px 12px;border-bottom:1px solid var(--line);color:var(--muted);font-size:13px;line-height:1.6}
.td-game .enemy-guide span{display:inline-flex;flex:1 1 260px;min-width:0;align-items:flex-start;gap:7px;padding:6px 8px;border:1px solid var(--line);border-radius:5px;background:#142019;white-space:normal}
.td-game .enemy-guide b{flex:none;white-space:nowrap;font-weight:700;color:var(--text)}
.td-game .enemy-guide i{width:10px;height:10px;flex:none;margin-top:4px;border-radius:2px}
.td-game .maintenance{margin-top:10px}
.td-game .tower-health{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:11px}
.td-game .tower-health meter{height:12px;min-width:60px;flex:1}
.td-game .maintenance-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.td-game .maintenance-actions button{flex:1;font-size:11px;padding:8px 6px}
.td-game .maintenance-actions .sell{color:#ffb4a2;border-color:#926354}
.td-game .first-play-guidance{font-size:11px;line-height:1.5;color:#f0dda0;background:#384125;border-left:3px solid #d4c274;padding:5px 7px;margin:6px 0 0}
.td-game .maintenance-note{font-size:10px;line-height:1.5;color:#d6b7a4;margin:5px 0}
.td-game .death-overlay{position:absolute;inset:0;z-index:3;background:#221411d9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;padding:14px;pointer-events:none}
.td-game .death-overlay strong{font-size:24px;color:#ffb4a2}
.td-game .death-overlay span{font-size:12px;line-height:1.6}
.td-game .tower-labels span.damaged{color:#ffb4a2}
.td-game .tower-labels span.attacked{color:#fff3df}
.td-game .view[data-mode=dead] .tower-labels{visibility:hidden}
@media(max-width:520px){.td-game .wave-composition{padding:0 10px 8px;font-size:10px}
.td-game .enemy-guide{gap:6px;padding:10px;font-size:14px}
.td-game .enemy-guide span{flex-basis:100%;padding:8px 9px}}
.td-game .battlefield .control{position:absolute;left:8px;bottom:8px;z-index:3;width:calc(100% - 16px);max-width:360px;max-height:48%;padding:6px 8px;background:#17261aeb;border:1px solid #617254;border-radius:6px;cursor:default;display:flex;flex-direction:column;touch-action:pan-y}
.td-game .battlefield .control-title{margin:0 0 4px;gap:6px;flex:none}
.td-game .battlefield .status{margin:0;color:var(--player);font-size:11px;line-height:1.3}
.td-game .battlefield .control-toggle{margin-left:auto;flex:none;font-size:10px;padding:3px 6px}
.td-game .battlefield .control.collapsed{width:auto;max-width:calc(100% - 16px)}
.td-game .battlefield .control.collapsed .control-title{margin:0}
.td-game .battlefield .control-body{min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:2px}
.td-game .battlefield .control button{font-size:11px;padding:5px 6px;min-width:0;line-height:1.3}
.td-game .battlefield .site-select{grid-template-columns:repeat(6,minmax(0,1fr));gap:4px}
.td-game .battlefield .type-picker{margin-top:5px}
.td-game .battlefield .type-picker summary{cursor:pointer;font-size:11px;padding:5px 6px;background:#253329;border:1px solid #465442;border-radius:4px}
.td-game .battlefield .type-select{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;margin-top:4px}
.td-game .battlefield .type-select button{text-align:left}
.td-game .battlefield .type-select span{float:right;margin-left:2px}
.td-game .battlefield .tower-info{font-size:10px;line-height:1.4;margin:5px 0 3px}
.td-game .battlefield .seat-info{font-size:10px;line-height:1.3;margin:3px 0}
.td-game .battlefield .purchase-actions,.td-game .battlefield .maintenance-actions,.td-game .battlefield .action-row{flex-direction:row;gap:4px;margin-top:5px}
.td-game .battlefield .purchase-actions button{font-size:11px}
.td-game .battlefield .maintenance{margin-top:5px}
.td-game .battlefield .tower-health{font-size:10px;gap:5px}
.td-game .battlefield .tower-health meter{height:9px}
.td-game .battlefield .maintenance-note,.td-game .battlefield .purchase-note,.td-game .battlefield .first-play-guidance{font-size:10px;line-height:1.3;margin:4px 0}
.td-game .battlefield .ammo-row{font-size:10px;gap:4px;margin-top:5px;flex-wrap:wrap}
.td-game .battlefield .ammo-track{margin-top:3px}
.td-game .battlefield .aim-controls{margin-top:5px;gap:4px;max-width:none;flex-wrap:nowrap}
.td-game .battlefield .aim-controls small{font-size:10px}
.td-game .battlefield .view-note{display:none}
.td-game .battlefield .canvas-wave{top:8px;bottom:auto}
.td-game .battlefield #start-wave{font-size:11px;padding:6px 9px}
@media(max-width:520px){.td-game .battlefield .control{left:4px;bottom:4px;width:calc(100% - 8px);padding:4px;max-height:46%}
.td-game .battlefield .control button{font-size:10px;padding:5px 3px}
.td-game .battlefield .status{font-size:10px}
.td-game .battlefield .control-title{gap:3px}
.td-game .battlefield .type-select{grid-template-columns:minmax(0,1fr)}
.td-game .solo .battlefield .type-select{grid-template-columns:repeat(2,minmax(0,1fr))}
.td-game .battlefield .type-select span{display:inline}
.td-game .battlefield .maintenance-actions,.td-game .battlefield .purchase-actions{flex-wrap:wrap}
.td-game .battlefield .view-heading{top:80px}
.td-game .battlefield .view-mode{font-size:9px;padding:4px}
.td-game .battlefield .canvas-wave{top:43px}
.td-game .battlefield .control.collapsed{max-width:calc(100% - 8px)}}
.td-game .battlefield .view{touch-action:pan-y}
.td-game .battlefield .view[data-mode=mounted]{touch-action:none}
.td-game .battlefield.expanded,.td-game .battlefield:fullscreen{position:fixed;inset:0;z-index:1000;width:100vw;height:100dvh;min-height:0;max-height:none;border:0;border-radius:0}
body.battle-expanded .td-game{overflow:hidden}
.td-game .view-stats{position:absolute;top:83px;left:12px;z-index:2;pointer-events:none;font-size:10px;padding:4px 6px;background:#14221cde;border-radius:4px;color:var(--text)}
.td-game .battlefield.tabletop:not(.expanded){height:max(680px,85svh)}
.td-game .battlefield.tabletop .screens{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) 76px minmax(0,1fr);gap:0}
.td-game .tabletop #view-0{grid-row:3}
.td-game .tabletop #view-1{grid-row:1;transform:rotate(180deg)}
.td-game .battlefield.tabletop .view-heading{top:8px}
.td-game .battlefield.tabletop .view-stats{top:40px;left:10px}
.td-game .battlefield.tabletop .canvas-tools{top:calc(50% - 32px);justify-content:center;gap:5px}
.td-game .battlefield.tabletop .canvas-tools>span{margin-right:auto}
.td-game .battlefield.tabletop .canvas-wave{top:calc(50% + 3px)}
.td-game .battlefield.tabletop .control{max-height:48%}
.td-game .battlefield.tabletop .type-select{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:520px){.td-game .view-stats{top:110px;font-size:9px}
.td-game .canvas-tools{flex-wrap:wrap}
.td-game .canvas-tools>span{margin-right:auto}
.td-game .canvas-tools button{font-size:9px;padding:5px 4px}
.td-game .battlefield.tabletop .canvas-tools>span{font-size:9px;padding:5px 4px}
.td-game .session-card fieldset{margin-bottom:7px}
.td-game .session-card legend{margin-bottom:4px}}
.td-game .battlefield .view[data-mode=overview] .control{bottom:auto;width:190px;max-width:calc(100% - 12px);max-height:calc(100% - 12px);border-color:var(--player);box-shadow:0 3px 14px #0006}
.td-game .battlefield .view[data-mode=overview] .control.building{width:260px;max-height:70%}
.td-game .battlefield .view[data-mode=overview] .control.collapsed{width:auto}
.td-game .battlefield .view[data-mode=overview] .purchase-actions,.td-game .battlefield .view[data-mode=overview] .maintenance-actions{display:flex;flex-direction:column;gap:3px;margin-top:3px}
.td-game .battlefield .view[data-mode=overview] .control button:not(.control-toggle){text-align:left;padding:8px 9px;font-size:12px;flex:none;width:100%}
.td-game .battlefield .open-build{display:block;width:100%}
.td-game .battlefield .view[data-mode=overview] .control-title{border-bottom:1px solid #52674c;padding-bottom:4px}
.td-game .battlefield .view[data-mode=overview] .tower-health{margin:5px 0 3px}
.td-game .battlefield .view[data-mode=overview] .type-select button{font-size:11px;padding:6px}
.td-game .battlefield .view[data-mode=overview] .control-title,.td-game .battlefield .view[data-mode=overview] .tower-info,.td-game .battlefield .view[data-mode=overview] .seat-info,.td-game .battlefield .view[data-mode=overview] .tower-health,.td-game .battlefield .view[data-mode=overview] .maintenance-note,.td-game .battlefield .view[data-mode=overview] .purchase-note,.td-game .battlefield .view[data-mode=overview] .type-picker summary,.td-game .battlefield .view[data-mode=overview] [id^=build-]{display:none}
.td-game .battlefield .view[data-mode=overview] .control{width:160px;padding:3px}
.td-game .battlefield .view[data-mode=overview] .control.empty-site{width:88px}
.td-game .battlefield .view[data-mode=overview] .control.building{width:250px}
.td-game .battlefield .view[data-mode=overview] .type-picker,.td-game .battlefield .view[data-mode=overview] .type-select{margin:0}
.td-game .battlefield .view[data-mode=overview] .purchase-actions{margin:0}
.td-game .battlefield .view[data-mode=overview] .maintenance{margin-top:3px}
.td-game .combat-controls{position:absolute;inset:0;z-index:3;pointer-events:none}
.td-game .combat-controls .aim-controls{position:absolute;left:10px;bottom:12px;display:grid;grid-template-columns:repeat(3,40px);grid-template-rows:repeat(2,40px);gap:4px;margin:0;pointer-events:none}
.td-game .combat-controls .aim-controls small{display:none}
.td-game .combat-controls button{pointer-events:auto;touch-action:none;user-select:none;background:#17261ab8;border:1px solid var(--player);color:var(--player);font-size:20px;padding:0;box-shadow:0 1px 5px #0005}
.td-game .combat-controls [data-aim=left]{grid-column:1;grid-row:2}
.td-game .combat-controls [data-aim=up]{grid-column:2;grid-row:1}
.td-game .combat-controls [data-aim=down]{grid-column:2;grid-row:2}
.td-game .combat-controls [data-aim=right]{grid-column:3;grid-row:2}
.td-game .combat-controls .trigger{position:absolute;right:14px;bottom:16px;width:68px;height:68px;border-radius:50%;font-size:16px}
.td-game .combat-controls button:active,.td-game .combat-controls .trigger.firing{background:#596345e6}
.td-game .combat-controls .trigger{background:#8e302ed9;border-color:#f09386;color:#fff0e9}
.td-game .combat-controls .trigger:hover{background:#a53b35e6}
.td-game .combat-controls .trigger:active,.td-game .combat-controls .trigger.firing{background:#d14d40;border-color:#ffc1a9}
.td-game .combat-controls .trigger.reloading{opacity:1;font-size:12px;border-color:#c7897c;color:#fff0e9;background:linear-gradient(to top,#a94439 0 var(--reload-progress),#352a2a var(--reload-progress) 100%);cursor:default}
.td-game .combat-controls .leave-direct{position:absolute;left:14px;bottom:62px;min-height:34px;padding:7px 9px;font-size:12px;color:#edf1e4;border-color:#728166;background:#17261ad9}
.td-game .battlefield .view[data-mode=mounted] .control{bottom:108px;max-height:calc(100% - 170px)}
.td-game .battlefield .view[data-mode=mounted] .control.collapsed{left:14px;bottom:16px}
.td-game .battlefield .view[data-mode=mounted] .control.collapsed .status{display:none}
.td-game .battlefield .view{container-type:size}
.td-game .battlefield #start-wave{--wave-progress:0%;min-width:190px;font-variant-numeric:tabular-nums;color:#f2f5e5;border-color:#93ad79;background:linear-gradient(to right,#52783d 0 var(--wave-progress),#25352a var(--wave-progress) 100%)}
@container(max-width:260px){.td-game .combat-controls .aim-controls{left:6px;bottom:8px;grid-template-columns:repeat(2,36px);grid-template-rows:repeat(2,36px)}
.td-game .combat-controls [data-aim=left]{grid-column:1;grid-row:1}
.td-game .combat-controls [data-aim=up]{grid-column:2;grid-row:1}
.td-game .combat-controls [data-aim=down]{grid-column:1;grid-row:2}
.td-game .combat-controls [data-aim=right]{grid-column:2;grid-row:2}
.td-game .combat-controls .trigger{right:8px;bottom:12px;width:54px;height:54px;font-size:14px}
.td-game .battlefield .view[data-mode=mounted] .control.collapsed{left:8px;bottom:12px}
.td-game .combat-controls .leave-direct{left:8px;bottom:54px}}
.td-game .elevation-gauge{position:absolute;left:12px;top:108px;z-index:3;pointer-events:none;background:#18271ed9;color:#eef0d7;border-radius:3px;padding:4px 6px;font-size:10px;line-height:1.3;font-variant-numeric:tabular-nums}
.td-game .elevation-gauge[hidden]{display:none}
.td-game .elevation-gauge b{font-weight:600}
.td-game .elevation-scale{position:relative;width:68px;height:6px;margin-top:4px;border-bottom:1px solid #9cae8b;background:repeating-linear-gradient(to right,#9cae8b 0 1px,transparent 1px 17px)}
.td-game .elevation-scale i{position:absolute;bottom:-2px;width:2px;height:10px;background:#f1d37b;transform:translateX(-1px)}
.td-game .combat-controls .scope-toggle{position:absolute;right:14px;bottom:96px;min-height:34px;padding:7px 9px;font-size:12px;color:#edf1e4;border-color:#728166;background:#17261ad9}
@media(max-width:520px){.td-game .combat-controls .scope-toggle{right:8px;bottom:76px}}
.td-game .map-options{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.td-game .map-options span{font-size:11px;padding:6px 3px}
.td-game .map-options svg{display:block;width:100%;height:38px;margin-bottom:4px}
.td-game .map-description{font-size:11px;line-height:1.4;color:var(--muted);margin:0 0 10px}
@media(max-width:520px){.td-game .map-options{grid-template-columns:repeat(3,minmax(0,1fr))}
.td-game .map-options span{font-size:11px;padding:5px 3px}
.td-game .map-options svg{height:32px}}
