*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--toolbar-h: 48px;--sidebar-w: 280px;--bg: #0f1117;--surface: #1a1d27;--surface2: #22263a;--border: #2e3348;--text: #e2e8f0;--text-muted: #8892a4;--accent: #5b8af0;--danger: #e05252;--color-red: #c0392b;--color-gold: #c9a227;--color-teal: #1e8b8b;--color-purple: #7b52ab;--color-dark: #3a4060}html,body,#root{height:100%;overflow:hidden;font-family:Segoe UI,system-ui,sans-serif;font-size:13px;background:var(--bg);color:var(--text)}.app-layout{display:grid;grid-template-rows:var(--toolbar-h) 1fr;height:100vh;overflow:hidden}.app-body{display:grid;grid-template-columns:var(--sidebar-w) 1fr;overflow:hidden;min-height:0}.toolbar{display:flex;align-items:center;gap:12px;padding:0 16px;background:var(--surface);border-bottom:1px solid var(--border);z-index:10}.toolbar-brand{font-weight:700;font-size:15px;color:var(--accent);white-space:nowrap}.toolbar-name{flex:1;min-width:0}.toolbar-name-btn{background:none;border:1px solid transparent;color:var(--text);cursor:pointer;padding:3px 8px;border-radius:4px;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:300px;transition:border-color .15s}.toolbar-name-btn:hover{border-color:var(--border)}.toolbar-name-input{background:var(--surface2);border:1px solid var(--accent);color:var(--text);padding:3px 8px;border-radius:4px;font-size:13px;width:240px;outline:none}.toolbar-scale{display:flex;align-items:center;gap:4px;background:var(--surface2);border:1px solid var(--border);border-radius:5px;padding:2px 4px}.toolbar-scale-btn{background:none;border:none;color:var(--text);cursor:pointer;font-size:16px;font-weight:700;line-height:1;padding:0 5px;border-radius:3px;transition:background .1s}.toolbar-scale-btn:hover:not(:disabled){background:var(--border)}.toolbar-scale-btn:disabled{opacity:.35;cursor:default}.toolbar-scale-label{font-size:12px;font-weight:600;color:var(--text);min-width:38px;text-align:center;-webkit-user-select:none;user-select:none}.toolbar-actions{display:flex;gap:8px}.toolbar-kofi{margin-left:auto;flex-shrink:0;display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:4px;border:1px solid #ff5e5b55;background:transparent;color:#ff5e5b;font-size:12px;font-weight:600;text-decoration:none;transition:background .15s,border-color .15s;white-space:nowrap}.toolbar-kofi:hover{background:#ff5e5b22;border-color:#ff5e5b}.btn{padding:5px 12px;border-radius:5px;border:none;cursor:pointer;font-size:12px;font-weight:600;transition:opacity .15s,background .15s;white-space:nowrap}.btn:disabled{opacity:.4;cursor:default}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){opacity:.85}.btn-secondary{background:var(--surface2);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background:var(--border)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){opacity:.85}.btn-sm{padding:3px 8px;font-size:11px}.roster-panel{display:flex;flex-direction:column;background:var(--surface);border-right:1px solid var(--border);overflow:hidden;min-height:0}.roster-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px 6px;border-bottom:1px solid var(--border);flex-shrink:0}.roster-title{font-size:14px;font-weight:700}.roster-count{font-size:11px;color:var(--text-muted)}.add-member-form{display:flex;gap:6px;padding:8px 10px;border-bottom:1px solid var(--border);flex-shrink:0}.add-member-input{flex:1;background:var(--surface2);border:1px solid var(--border);color:var(--text);padding:5px 8px;border-radius:4px;font-size:12px;outline:none;min-width:0}.add-member-input:focus{border-color:var(--accent)}.roster-section{display:flex;flex-direction:column;min-height:0;overflow:hidden;flex:1}.roster-section+.roster-section{border-top:1px solid var(--border);flex:1}.roster-section-label{padding:6px 10px;font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;flex-shrink:0}.roster-list{flex:1;overflow-y:auto;padding:4px 8px;display:flex;flex-direction:column;gap:4px}.roster-empty{font-size:11px;color:var(--text-muted);padding:8px 4px;text-align:center}.member-card{display:flex;align-items:center;gap:6px;background:var(--surface2);border:1px solid var(--border);border-radius:5px;padding:5px 8px;cursor:grab;-webkit-user-select:none;user-select:none;transition:background .1s,opacity .1s;min-width:0}.member-card:hover{background:#2a2f45}.member-card:active{cursor:grabbing}.member-card--assigned{opacity:.65;border-style:dashed}.member-card--dragging{opacity:.3}.member-card--overlay{background:var(--accent);border-color:transparent;opacity:.95;cursor:grabbing;box-shadow:0 4px 16px #00000080;min-width:100px}.member-card-name{flex:1;font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-card-assignment{font-size:10px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:90px}.member-card-remove{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:15px;line-height:1;padding:0 2px;border-radius:3px;flex-shrink:0;transition:color .15s}.member-card-remove:hover{color:var(--danger)}.map-area{overflow:auto;display:flex;align-items:flex-start;justify-content:flex-start;padding:12px;background:#080b12;min-height:0}.map-container{position:relative;width:1280px;height:720px;flex-shrink:0}.map-image{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:auto;display:block;-webkit-user-select:none;user-select:none}.map-node{position:absolute;transform:translate(-50%,-50%);min-width:80px;max-width:130px;padding:4px 6px;border-radius:6px;border:2px solid transparent;cursor:pointer;-webkit-user-select:none;user-select:none;background:#0a0c14d9;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);transition:box-shadow .15s,transform .15s;z-index:2}.map-node:hover{transform:translate(-50%,-50%);box-shadow:0 0 0 1px #ffffff40,0 4px 14px #00000080;z-index:3}.map-node[data-is-over=true]{box-shadow:0 0 0 3px #fff,0 0 16px 4px #fff6;z-index:4}.map-node[data-color=red]{border-color:var(--color-red);background:#c0392b40}.map-node[data-color=gold]{border-color:var(--color-gold);background:#c9a22740}.map-node[data-color=teal]{border-color:var(--color-teal);background:#1e8b8b40}.map-node[data-color=purple]{border-color:var(--color-purple);background:#7b52ab40}.map-node[data-color=dark]{border-color:var(--color-dark);background:#3a406059}.map-node-header{display:flex;align-items:center;justify-content:space-between;gap:4px}.map-node-label{font-size:12px;font-weight:700;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.8)}.map-node-badge{font-size:12px;font-weight:800;background:#00000080;border-radius:8px;padding:1px 5px;color:#fff;flex-shrink:0}.map-node[data-color=red] .map-node-badge{background:var(--color-red)}.map-node[data-color=gold] .map-node-badge{background:var(--color-gold);color:#111}.map-node[data-color=teal] .map-node-badge{background:var(--color-teal)}.map-node[data-color=purple] .map-node-badge{background:var(--color-purple)}.map-node[data-color=dark] .map-node-badge{background:#4a5280}.map-node-badge--full{background:var(--color-red)!important;color:#fff!important}.map-node-members{display:flex;flex-direction:column;gap:2px;margin-top:3px;min-height:22px}.map-node-chip{font-size:16px;font-weight:400;background:#0006;border-radius:3px;padding:1px 4px;color:#dde;white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis;cursor:grab;-webkit-user-select:none;user-select:none}.map-node-chip:hover{background:#0009}.map-node-chip--dragging{opacity:.3;cursor:grabbing}.map-node-chip--more{color:#aab;font-style:italic}.modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{background:var(--surface);border:1px solid var(--border);border-radius:10px;width:420px;max-width:95vw;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 8px 40px #0009}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;border-bottom:1px solid var(--border)}.modal-title{font-size:15px;font-weight:700}.modal-close{background:none;border:none;color:var(--text-muted);font-size:20px;cursor:pointer;line-height:1;padding:0 4px;border-radius:4px;transition:color .15s}.modal-close:hover{color:var(--text)}.modal-body{padding:14px 16px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.modal-field{display:flex;flex-direction:column;gap:6px}.modal-label{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.modal-label-row{display:flex;gap:8px}.modal-input{flex:1;background:var(--surface2);border:1px solid var(--border);color:var(--text);padding:6px 10px;border-radius:5px;font-size:13px;outline:none}.modal-input:focus{border-color:var(--accent)}.modal-hint{font-size:10px;color:var(--text-muted)}.modal-members-header{display:flex;align-items:center;justify-content:space-between}.modal-member-list{list-style:none;display:flex;flex-direction:column;gap:4px}.modal-member-item{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--surface2);border-radius:5px;padding:6px 10px}.modal-member-item--sorting{opacity:.4;background:var(--surface)}.modal-member-drag-handle{cursor:grab;color:var(--text-muted);font-size:14px;line-height:1;flex-shrink:0;-webkit-user-select:none;user-select:none;touch-action:none}.modal-member-drag-handle:active{cursor:grabbing}.modal-member-name{font-size:13px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-empty{font-size:12px;color:var(--text-muted)}.modal-search-wrapper{position:relative}.modal-suggestions{position:absolute;top:calc(100% + 2px);left:0;right:0;z-index:10;list-style:none;margin:0;padding:4px 0;background:var(--surface2);border:1px solid var(--border);border-radius:6px;box-shadow:0 4px 16px #00000080;max-height:180px;overflow-y:auto}.modal-suggestion-item{display:flex;align-items:center;padding:7px 12px;font-size:13px;cursor:pointer;color:var(--text)}.modal-suggestion-item:hover,.modal-suggestion-item--active{background:var(--accent);color:#fff}.modal-suggestion-node{margin-left:auto;padding-left:8px;font-size:10px;color:var(--text-muted);white-space:nowrap}.modal-suggestion-create{font-style:italic;color:var(--accent)}.modal-suggestion-create.modal-suggestion-item--active{color:#fff}.toolbar-views{display:flex;gap:4px;flex-shrink:0}.counter-view{display:grid;grid-template-columns:340px 1fr;overflow:hidden;height:100%;min-height:0}.counter-panel{display:flex;flex-direction:column;overflow:hidden;min-height:0}.counter-panel--left{background:var(--surface);border-right:1px solid var(--border)}.counter-panel--right{background:var(--bg)}.counter-panel-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--surface)}.counter-panel-title{font-size:13px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.counter-panel-actions{display:flex;gap:6px;flex-shrink:0}.counter-panel-body{flex:1;overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:8px}.counter-empty{font-size:12px;color:var(--text-muted);text-align:center;padding:24px 12px}.defense-card{background:var(--surface2);border:2px solid var(--border);border-radius:8px;padding:10px 12px;cursor:pointer;transition:border-color .15s,background .1s;display:flex;flex-direction:column;gap:6px}.defense-card:hover{background:#2a2f45}.defense-card--selected{border-color:var(--accent);background:#5b8af014}.defense-card-header{display:flex;align-items:center;justify-content:space-between;gap:6px}.defense-card-name{font-size:13px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.defense-card-indicator{color:var(--accent);font-size:10px;flex-shrink:0}.defense-card-notes{font-size:11px;color:var(--text-muted);font-style:italic}.counter-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:6px}.counter-card-header{display:flex;align-items:center}.counter-card-name{font-size:13px;font-weight:700}.counter-card-notes{font-size:11px;color:var(--text-muted);font-style:italic}.team-units-row{display:flex;gap:8px}.team-unit-summary{flex:1;min-width:0;background:#0003;border-radius:5px;padding:5px 7px;display:flex;flex-direction:column;gap:2px}.team-unit-label{font-size:10px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.team-unit-shell{font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.team-unit-modules{font-size:10px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.team-unit-speed{font-size:10px;color:var(--accent)}.card-actions{display:flex;gap:6px;padding-top:2px}.team-modal{width:min(96vw,900px);max-height:90vh}.team-modal-body{display:flex;flex-direction:column;gap:16px}.team-modal-meta{display:grid;grid-template-columns:1fr 1fr;gap:12px}.team-units-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}@media(max-width:640px){.team-units-grid,.team-modal-meta{grid-template-columns:1fr}}.unit-col{background:var(--surface2);border:1px solid var(--border);border-radius:7px;padding:8px;display:flex;flex-direction:column;gap:6px;min-width:0;overflow:hidden}.unit-col .modal-field{gap:3px}.unit-col .modal-input{padding:4px 6px;font-size:12px}.unit-col .modal-label{font-size:10px}.unit-col-title{font-size:11px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.05em}.unit-modules-grid{display:grid;grid-template-columns:1fr;gap:4px}.unit-module-input{font-size:11px;padding:3px 5px;min-width:0}.unit-speed-row{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.unit-speed-input{width:54px;flex:1;min-width:0;text-align:right}.unit-speed-sep{font-size:11px;color:var(--text-muted);white-space:nowrap}.unit-speed-calc{font-size:12px;font-weight:700;color:var(--accent);padding-top:2px}.modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--border);flex-shrink:0}.link-offense-list{list-style:none;display:flex;flex-direction:column;gap:4px}.link-offense-item{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:6px;cursor:pointer;transition:background .1s,border-color .1s;-webkit-user-select:none;user-select:none}.link-offense-item:hover{background:#2a2f45}.link-offense-item--selected{border-color:var(--accent);background:#5b8af01a}.link-offense-name{font-size:13px}.unit-portrait{width:80px;height:auto;border-radius:5px;display:block;margin:0 auto 6px}.shell-icon{width:24px;height:24px;object-fit:contain;flex-shrink:0;border-radius:3px}.module-slot-row{display:flex;align-items:center;gap:4px}.module-icon{width:20px;height:20px;object-fit:contain;border-radius:2px;flex-shrink:0}.module-slot-row .modal-input{flex:1}.field-with-icon{display:flex;align-items:center;gap:6px}.unit-card-art{width:44px;height:54px;object-fit:cover;object-position:top;border-radius:4px;flex-shrink:0}.unit-shell-row{display:flex;align-items:center;gap:4px;font-size:11px}.unit-shell-icon{width:18px;height:18px;object-fit:contain;border-radius:2px;flex-shrink:0}.unit-matrix-row{display:flex;gap:2px;flex-wrap:wrap}.unit-matrix-icon{width:16px;height:16px;object-fit:contain;border-radius:2px}.team-unit-summary{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;align-items:center}.defense-record{display:flex;align-items:center;gap:4px;padding:4px 8px;background:var(--surface2);border-radius:4px;margin:4px 0 2px}.defense-record-group{display:flex;gap:2px}.defense-record-score{flex:1;text-align:center;font-size:12px;font-weight:600;color:var(--text)}.defense-record-rate{color:var(--accent)}.btn-record{border:none;border-radius:3px;font-size:11px;font-weight:700;padding:2px 7px;cursor:pointer;line-height:1.4}.btn-record--win{background:#2d6a3f;color:#a8f0b8}.btn-record--win:hover{background:#38854f}.btn-record--loss{background:#6a2d2d;color:#f0a8a8}.btn-record--loss:hover{background:#853838}.btn-record--dim{background:var(--surface2);color:var(--text-muted);border:1px solid var(--border)}.btn-record--dim:hover:not(:disabled){background:#2a2f45;color:var(--text)}.btn-record--dim:disabled,.btn-record-reset:disabled{opacity:.3;cursor:not-allowed}.btn-record-reset{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:14px;padding:1px 3px;border-radius:3px;line-height:1;margin-left:2px}.btn-record-reset:hover:not(:disabled){color:var(--text);background:var(--surface2)}.defense-controls{padding:6px 8px 4px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:5px}.defense-sort-row,.defense-filter-row{display:flex;align-items:center;gap:6px}.defense-controls-label{font-size:11px;color:var(--text-muted);white-space:nowrap;min-width:52px}.defense-sort-select{flex:1;font-size:12px;padding:3px 5px}.defense-filter-chips{display:flex;flex-wrap:wrap;gap:4px;padding-top:2px}.filter-chip{display:inline-flex;align-items:center;gap:3px;background:#5b8af026;border:1px solid var(--accent);border-radius:12px;padding:1px 6px 1px 8px;font-size:11px;color:var(--text)}.filter-chip-remove{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:13px;line-height:1;padding:0}.filter-chip-remove:hover{color:var(--text)}.filter-chip-clear{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px;padding:1px 4px;text-decoration:underline}.filter-chip-clear:hover{color:var(--text)}.modal-input--error{border-color:#e05c5c!important}.modal-field-error{font-size:11px;color:#e05c5c;margin-top:2px;display:block}.combobox-wrapper{position:relative;width:100%}.combobox-trigger{display:flex;align-items:center;gap:4px;background:var(--surface2);border:1px solid var(--border);border-radius:4px;padding:0 4px 0 6px;min-height:28px}.combobox-trigger--open{border-color:var(--accent)}.combobox-trigger-icon{width:20px;height:20px;object-fit:contain;border-radius:2px;flex-shrink:0}.combobox-input{flex:1;min-width:0;background:transparent;border:none;outline:none;color:var(--text);font-size:12px;padding:4px 0;cursor:pointer}.combobox-input:focus{cursor:text}.combobox-clear{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:14px;line-height:1;padding:0 2px;flex-shrink:0;border-radius:2px}.combobox-clear:hover{color:var(--text)}.combobox-list{position:absolute;top:calc(100% + 2px);left:0;right:0;z-index:200;background:var(--surface2);border:1px solid var(--accent);border-radius:4px;list-style:none;margin:0;padding:2px 0;max-height:180px;overflow-y:auto;box-shadow:0 4px 12px #0006}.combobox-option{display:flex;align-items:center;gap:6px;padding:5px 8px;font-size:12px;cursor:pointer;color:var(--text)}.combobox-option--active{background:#5b8af033}.combobox-option[aria-selected=true]{color:var(--accent)}.combobox-option-icon{width:18px;height:18px;object-fit:contain;border-radius:2px;flex-shrink:0}.combobox-empty{padding:6px 10px;font-size:12px;color:var(--text-muted)}.rta-view{display:flex;flex-direction:row;flex:1;min-height:0;overflow:hidden}.rta-panel{display:flex;flex-direction:column;overflow:hidden;border-right:1px solid var(--border)}.rta-panel--left{width:280px;flex-shrink:0}.rta-panel--right{flex:1;border-right:none}.rta-panel-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.rta-panel-title{font-size:13px;font-weight:600;color:var(--text)}.rta-add-player-row{display:flex;gap:6px;padding:6px 10px;border-bottom:1px solid var(--border);flex-shrink:0}.rta-search-row{padding:6px 10px;border-bottom:1px solid var(--border);flex-shrink:0}.rta-search-input{width:100%;box-sizing:border-box;background:var(--surface2);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:12px;padding:5px 8px}.rta-search-input:focus{outline:none;border-color:var(--accent)}.rta-player-list{flex:1;overflow-y:auto;padding:6px 8px;display:flex;flex-direction:column;gap:5px}.rta-battle-list{flex:1;overflow-y:auto;padding:8px 12px;display:flex;flex-direction:column;gap:12px}.rta-empty-hint{font-size:12px;color:var(--text-muted);text-align:center;padding:20px 0}.player-card{background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:8px 10px;cursor:pointer;transition:background .1s,border-color .1s;-webkit-user-select:none;user-select:none}.player-card:hover{background:#2a2f45}.player-card--selected{border-color:var(--accent);background:#5b8af01a}.player-card-header{display:flex;align-items:center;justify-content:space-between;gap:6px}.player-card-name{font-size:13px;font-weight:600;color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-card-actions{display:flex;gap:2px;flex-shrink:0}.player-alias-list{display:flex;flex-wrap:wrap;gap:3px;margin-top:4px}.player-alias-tag{display:inline-flex;align-items:center;gap:3px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1px 7px;font-size:10px;color:var(--text-muted)}.player-alias-remove{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:13px;line-height:1;padding:0}.player-alias-remove:hover{color:var(--text)}.player-stats{display:flex;align-items:center;gap:5px;margin-top:5px;font-size:11px}.player-stat--win{color:#6fcf97;font-weight:600}.player-stat--loss{color:#eb5757;font-weight:600}.player-stat--pct{color:var(--accent)}.player-stat-sep{color:var(--text-muted)}.battle-card{background:var(--surface2);border:1px solid var(--border);border-left-width:4px;border-radius:6px;box-shadow:0 1px 4px #0003}.battle-card+.battle-card{margin-top:2px}.battle-card--win{border-left-color:#27ae60}.battle-card--loss{border-left-color:#eb5757}.battle-card-header{display:flex;align-items:center;gap:8px;padding:7px 10px;border-bottom:1px solid var(--border)}.battle-result-badge{font-size:10px;font-weight:700;border-radius:3px;padding:2px 6px;flex-shrink:0}.battle-result-badge--win{background:#1e5e3c;color:#6fcf97}.battle-result-badge--loss{background:#5c1e1e;color:#f0a8a8}.battle-date{font-size:11px;color:var(--text-muted);flex-shrink:0}.battle-opponent{font-size:12px;color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.battle-card-actions{display:flex;gap:3px;flex-shrink:0}.battle-card-body{display:flex;flex-direction:row;align-items:flex-start;gap:0;padding:8px 10px}.battle-side-section{display:flex;flex-direction:column;gap:4px;padding:6px 8px;min-width:0;flex:1;border-radius:4px}.battle-side-section+.battle-side-section{border-top:none}.battle-side-section--winner{outline:1.5px solid #27ae60;border-radius:4px;background:#27ae600d}.battle-side-label{font-size:11px;color:var(--text);font-weight:600;letter-spacing:.3px;flex-shrink:0;margin-bottom:2px}.battle-side-content{display:flex;flex-direction:column;gap:6px}.battle-unit-row{display:flex;flex-wrap:wrap;gap:3px;min-width:0}.battle-vs-divider{display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:var(--text-muted);padding:0 6px;flex-shrink:0;align-self:center}.battle-unit-icon{object-fit:cover;object-position:top;border-radius:3px;display:block}.battle-unit-icon--placeholder{background:var(--surface);border:1px solid var(--border);border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:9px;color:var(--text-muted)}.battle-unit-tooltip{position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%);background:#1a1e2e;border:1px solid var(--border);border-radius:4px;padding:2px 6px;font-size:11px;color:var(--text);white-space:nowrap;pointer-events:none;z-index:300}.battle-ban-row{display:flex;flex-wrap:nowrap;gap:6px;flex-shrink:0}.battle-ban-wrap{display:flex;align-items:center;gap:3px}.battle-ban-label{font-size:9px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px}.battle-ban-icon{width:20px;height:25px;object-fit:cover;object-position:top;border-radius:2px;display:block}.battle-ban-icon--placeholder{background:var(--surface);border:1px solid var(--border);border-radius:2px;display:flex;align-items:center;justify-content:center;font-size:8px;color:var(--text-muted)}.battle-ban-icon-frame{position:relative;display:inline-flex}.battle-ban-icon-frame--postban:after{content:"";position:absolute;inset:0;background-image:linear-gradient(to top-right,transparent 42%,#eb5757 42%,#eb5757 58%,transparent 58%),linear-gradient(to top-left,transparent 42%,#eb5757 42%,#eb5757 58%,transparent 58%);pointer-events:none;border-radius:2px}.battle-modal{width:min(860px,95vw);max-height:90vh;display:flex;flex-direction:column}.battle-modal .modal-body{overflow-y:auto;flex:1}.battle-modal-top{display:flex;align-items:flex-end;gap:16px;margin-bottom:16px}.battle-modal-opponent{flex:1;min-width:0}.result-toggle{display:flex;gap:0;border-radius:4px;overflow:hidden;flex-shrink:0}.result-toggle-btn{padding:6px 16px;font-size:12px;font-weight:700;border:1px solid var(--border);cursor:pointer;background:var(--surface2);color:var(--text-muted);transition:background .1s,color .1s}.result-toggle-btn:first-child{border-right:none;border-radius:4px 0 0 4px}.result-toggle-btn:last-child{border-radius:0 4px 4px 0}.result-toggle--win.result-toggle--active{background:#1e5e3c;color:#6fcf97;border-color:#27ae60}.result-toggle--loss.result-toggle--active{background:#5c1e1e;color:#f0a8a8;border-color:#eb5757}.battle-modal-sides{display:grid;grid-template-columns:1fr 1fr;gap:16px}.battle-side{display:flex;flex-direction:column;gap:8px}.battle-side-title{font-size:13px;font-weight:600;color:var(--text);margin:0 0 4px;padding-bottom:6px;border-bottom:1px solid var(--border)}.battle-modal-field{display:flex;flex-direction:column;gap:3px}.modal-select{background:var(--surface2);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:12px;padding:5px 6px}.modal-select:focus{outline:none;border-color:var(--accent)}.player-alias-editor{display:flex;flex-direction:column;gap:6px}.player-alias-add-row{display:flex;gap:6px;align-items:center}.btn-sm{font-size:11px;padding:4px 10px}.btn-icon{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:14px;padding:2px 4px;border-radius:3px;line-height:1}.btn-icon:hover{color:var(--text);background:var(--surface2)}.btn-icon--danger:hover{color:#e05c5c}.player-card-presets-btn{width:100%;margin-top:4px;text-align:center}.player-presets-modal{width:min(680px,95vw);max-height:90vh;display:flex;flex-direction:column}.preset-modal-body{overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:8px}.preset-modal-count{font-size:12px;font-weight:400;color:var(--text-muted)}.preset-add-row{display:flex;justify-content:flex-end}.preset-card{background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:10px 12px;display:flex;flex-direction:column;gap:6px}.preset-card-header{display:flex;align-items:center;gap:8px}.preset-unit-portrait{width:28px;height:35px;object-fit:cover;border-radius:2px;flex-shrink:0}.preset-unit-portrait--placeholder{width:28px;height:35px;background:var(--surface);border:1px solid var(--border);border-radius:2px;display:flex;align-items:center;justify-content:center;font-size:9px;color:var(--text-muted);flex-shrink:0}.preset-unit-name{font-size:13px;font-weight:600;flex:1;min-width:0}.preset-card-actions{display:flex;gap:2px;flex-shrink:0}.preset-card-info{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.preset-shell-row{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text)}.preset-shell-icon{width:16px;height:20px;object-fit:cover;border-radius:1px;flex-shrink:0}.preset-modules-row{display:flex;gap:3px;align-items:center}.preset-matrix-icon{width:16px;height:16px;object-fit:cover;border-radius:1px}.preset-matrix-empty{width:16px;height:16px;background:var(--surface);border:1px solid var(--border);border-radius:1px}.preset-speed{font-size:12px;color:var(--accent);font-weight:600;margin-left:auto}.preset-form{background:var(--surface);border:1px solid var(--accent);border-radius:6px;padding:12px;display:flex;flex-direction:column;gap:8px}.preset-form-field{display:flex;flex-direction:column;gap:3px}.preset-form-row{display:flex;gap:4px;align-items:stretch}.preset-form-shell-wrap{flex:1;min-width:0}.preset-form-module-wrap{flex:0 0 88px;min-width:0}.preset-form-speed-row{display:flex;align-items:center;gap:6px}.preset-form-speed-input{width:80px;background:var(--surface2);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:12px;padding:5px 6px}.preset-form-speed-input--mod{width:56px}.preset-form-speed-input:focus{outline:none;border-color:var(--accent)}.preset-form-speed-sep{font-size:12px;color:var(--text-muted)}.preset-form-speed-calc{font-size:14px;font-weight:700;color:var(--accent)}.preset-form-actions{display:flex;justify-content:flex-end;gap:6px;padding-top:2px}.preset-changelog{border-top:1px solid var(--border);padding-top:6px}.preset-changelog-toggle{background:none;border:none;color:var(--text-muted);font-size:11px;cursor:pointer;padding:0;line-height:1.4}.preset-changelog-toggle:hover{color:var(--text)}.preset-changelog-list{list-style:none;padding:4px 0 0;display:flex;flex-direction:column;gap:4px}.preset-changelog-entry{display:flex;gap:10px;font-size:11px;align-items:baseline}.preset-changelog-date{color:var(--text-muted);flex-shrink:0;font-size:10px}.preset-changelog-desc{color:var(--text)}.combobox-option--create{color:var(--accent);font-style:italic}.battle-unit-slot{display:flex;flex-direction:column;align-items:center;gap:2px;flex-shrink:0}.battle-pick-shell-icon{width:20px;height:26px;object-fit:cover;border-radius:2px}.battle-pick-shell-text{font-size:8px;color:var(--text-muted);text-align:center;line-height:1.2;max-width:40px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.battle-pick-modules-row{display:flex;gap:2px}.battle-pick-matrix-icon{width:14px;height:14px;object-fit:cover;border-radius:2px}.battle-pick-matrix-text{font-size:7px;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:2px;padding:1px 2px;line-height:1;white-space:nowrap}.battle-unit-speed{font-size:10px;font-weight:700;color:var(--accent);line-height:1;text-align:center;white-space:nowrap}.battle-pick-slot{display:flex;flex-direction:column;gap:3px}.battle-pick-sub-row{display:flex;gap:3px;align-items:stretch}.battle-pick-shell-wrap{flex:1;min-width:0}.battle-pick-module-wrap{flex:0 0 70px;min-width:0}.battle-pick-speed-wrap{flex:0 0 52px}.battle-pick-speed-input{width:100%;box-sizing:border-box;background:var(--surface2);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:12px;padding:4px 6px;text-align:center}.battle-pick-speed-input:focus{outline:none;border-color:var(--accent)}.battle-pick-speed-input::-webkit-inner-spin-button,.battle-pick-speed-input::-webkit-outer-spin-button{-webkit-appearance:none}.battle-modal-player{flex:1;min-width:0}.battle-unit-icon-wrap--protected{position:relative}.battle-unit-icon-wrap--protected:after{content:"🛡";position:absolute;bottom:0;right:-1px;font-size:9px;line-height:1;pointer-events:none;filter:drop-shadow(0 0 2px rgba(0,0,0,.8))}.battle-unit-icon-wrap--postbanned{outline:1.5px solid #eb5757;border-radius:2px}.battle-unit-icon-wrap--postbanned:after{content:"";position:absolute;inset:0;background-image:linear-gradient(to top-right,transparent 42%,#eb5757 42%,#eb5757 58%,transparent 58%),linear-gradient(to top-left,transparent 42%,#eb5757 42%,#eb5757 58%,transparent 58%);pointer-events:none;border-radius:2px}.battle-postban-picker{display:flex;flex-wrap:wrap;gap:4px;min-height:38px;align-items:center}.battle-postban-icon{width:32px;height:40px;cursor:pointer;border-radius:3px;overflow:hidden;border:2px solid transparent;flex-shrink:0;transition:border-color .1s}.battle-postban-icon img,.battle-postban-icon .battle-unit-icon--placeholder{width:100%;height:100%;object-fit:cover;display:block}.battle-postban-icon:hover{border-color:var(--border)}.battle-postban-icon--selected{border-color:#eb5757!important;box-shadow:0 0 0 1px #eb5757}.battle-postban-empty{font-size:11px;color:var(--text-muted);font-style:italic}.battle-pick-preset-strip{display:flex;align-items:center;flex-wrap:wrap;gap:3px;margin-bottom:2px}.battle-pick-preset-label{font-size:10px;color:var(--text-muted);margin-right:2px;flex-shrink:0}.battle-pick-preset-chip{width:30px;height:38px;padding:0;border:1.5px solid var(--border);border-radius:3px;background:var(--surface2);cursor:pointer;overflow:hidden;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:border-color .1s,box-shadow .1s}.battle-pick-preset-chip img{width:100%;height:100%;object-fit:cover;display:block}.battle-pick-preset-chip--placeholder{font-size:9px;color:var(--text-muted)}.battle-pick-preset-chip:hover{border-color:var(--accent)}.battle-pick-preset-chip--active{border-color:var(--accent)!important;box-shadow:0 0 0 1px var(--accent)}.preset-form-build-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.preset-form-build-select{flex:1;min-width:0}.preset-form-linked-badge{font-size:11px;color:var(--accent);border:1px solid var(--accent);border-radius:3px;padding:2px 7px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preset-form-build-hint{font-size:10px;color:var(--text-muted);margin:2px 0 0;font-style:italic}.preset-form-locked-row{display:flex;align-items:center;gap:6px;background:var(--surface2);border:1px solid var(--border);border-radius:4px;padding:4px 8px;min-height:30px}.preset-form-locked-icon{width:20px;height:26px;object-fit:cover;border-radius:2px;flex-shrink:0}.preset-form-locked-value{font-size:12px;color:var(--text);flex:1;min-width:0}.preset-form-locked-modules{display:flex;gap:2px;align-items:center}.preset-linked-badge{font-size:9px;color:var(--accent);border:1px solid var(--accent);border-radius:3px;padding:1px 4px;margin-left:auto;margin-right:2px;flex-shrink:0;opacity:.8}.preset-unit-name-group{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.preset-unit-label{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preset-unit-sub{font-size:10px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preset-form-name-input{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:12px;padding:5px 6px;outline:none}.preset-form-name-input:focus{border-color:var(--accent)}.unit-preset-select{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:11px;padding:4px 5px;outline:none;cursor:pointer}.unit-preset-select:focus{border-color:var(--accent)}.battle-pick-preset-select{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:12px;padding:5px 6px;outline:none;cursor:pointer;margin-bottom:2px}.battle-pick-preset-select:focus{border-color:var(--accent)}.battle-pick-unit-locked{display:flex;align-items:center;gap:6px;background:var(--surface2);border:1px solid var(--border);border-radius:4px;padding:4px 8px;min-height:28px;font-size:12px;color:var(--text)}.confirm-dialog{max-width:360px;padding:24px}.confirm-dialog-message{font-size:14px;color:var(--text);line-height:1.5;margin-bottom:20px}.rta-panel-tabs{display:flex;align-items:center;gap:2px}.rta-tab{background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);cursor:pointer;font-size:13px;font-weight:500;padding:4px 10px;transition:color .15s,border-color .15s}.rta-tab:hover{color:var(--text)}.rta-tab--active{color:var(--accent);border-bottom-color:var(--accent)}.rta-tab-count{display:inline-flex;align-items:center;justify-content:center;background:var(--surface2);border:1px solid var(--border);border-radius:10px;color:var(--text-muted);font-size:10px;font-weight:600;line-height:1;margin-left:5px;min-width:18px;padding:2px 5px}.rta-tab--active .rta-tab-count{background:#5b8af026;border-color:var(--accent);color:var(--accent)}.rta-panel-filter-label{font-size:12px;color:var(--text-muted);margin-left:4px}.stats-pick-filter{display:flex;align-items:center;gap:6px;flex-shrink:0}.stats-pick-filter-label{font-size:12px;color:var(--text-muted);margin-right:2px}.stats-pick-filter-btn{font-size:12px;padding:3px 10px;border-radius:4px;border:1px solid var(--border);background:var(--surface2);color:var(--text-muted);cursor:pointer;transition:background .1s,color .1s,border-color .1s}.stats-pick-filter-btn:hover{background:var(--surface3);color:var(--text)}.stats-pick-filter-btn--active{background:var(--accent);border-color:var(--accent);color:#fff}.stats-filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;flex-shrink:0}.stats-unit-filter{display:flex;align-items:center;flex-wrap:wrap;gap:5px;flex:1;min-width:0}.stats-unit-filter-input-wrap{position:relative}.stats-unit-filter-input{background:var(--surface2);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:12px;padding:3px 8px;width:150px;outline:none}.stats-unit-filter-input:focus{border-color:var(--accent)}.stats-unit-filter-dropdown{position:absolute;top:calc(100% + 3px);left:0;z-index:400;background:var(--surface);border:1px solid var(--border);border-radius:4px;min-width:180px;max-height:220px;overflow-y:auto;box-shadow:0 4px 12px #0006}.stats-unit-filter-option{display:flex;align-items:center;gap:6px;padding:5px 10px;font-size:12px;cursor:pointer;color:var(--text)}.stats-unit-filter-option:hover{background:var(--surface2);color:var(--text)}.stats-unit-filter-chip{display:inline-flex;align-items:center;gap:4px;background:color-mix(in srgb,var(--accent) 20%,var(--surface2));border:1px solid color-mix(in srgb,var(--accent) 40%,var(--border));border-radius:4px;padding:2px 6px 2px 4px;font-size:12px;color:var(--text);white-space:nowrap}.stats-unit-filter-chip-remove{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:14px;line-height:1;padding:0;margin-left:1px}.stats-unit-filter-chip-remove:hover{color:var(--text)}.rta-stats-view{flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:16px}.stats-section{background:var(--surface2);border:1px solid var(--border);border-radius:6px}.stats-section-title{font-size:13px;font-weight:600;color:var(--text);padding:8px 12px;border-bottom:1px solid var(--border);background:var(--surface)}.stats-table-scroll{overflow-x:auto}.stats-table{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed}.stats-table th{text-align:left;padding:6px 10px;font-size:11px;font-weight:500;color:var(--text-muted);border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none;white-space:nowrap}.stats-table th:hover{color:var(--text)}.stats-table td{padding:5px 10px;color:var(--text);border-bottom:1px solid var(--border);vertical-align:middle}.stats-table tbody tr:last-child td{border-bottom:none}.stats-table-placeholder td{height:34px;border-bottom-color:transparent;pointer-events:none;-webkit-user-select:none;user-select:none}.stats-table tbody tr:hover{background:var(--surface)}.stats-unit-cell{display:flex;align-items:center;gap:6px}.stats-unit-icon{width:24px;height:24px;object-fit:cover;border-radius:3px;flex-shrink:0}.stats-unit-icon--team{width:28px;height:28px}.stats-shell-icon{width:20px;height:20px;object-fit:contain;flex-shrink:0}.stats-matrix-icon{width:18px;height:18px;object-fit:contain;display:block}.stats-team-icons{display:flex;align-items:center;gap:3px}.stats-unit-name-fallback{font-size:11px;color:var(--text-muted)}.stats-winpct{font-weight:500;color:var(--text-muted)}.stats-winpct--high{color:#4caf72}.stats-winpct--low{color:#e05555}.stats-empty{font-size:12px;color:var(--text-muted);text-align:center;padding:20px 0}.stats-row{display:flex;gap:12px;align-items:flex-start}.stats-row--3>.stats-section{flex:1;min-width:160px}.stats-row--2>.stats-section{flex:1;min-width:180px}.stats-pagination{display:flex;align-items:center;justify-content:center;gap:8px;padding:6px 0;border-top:1px solid var(--border)}.stats-pagination span{font-size:11px;color:var(--text-muted);min-width:48px;text-align:center}.stats-pagination button{background:none;border:1px solid var(--border);border-radius:4px;color:var(--text-muted);cursor:pointer;font-size:14px;line-height:1;padding:2px 7px}.stats-pagination button:hover:not(:disabled){color:var(--text);border-color:var(--text-muted)}.stats-pagination button:disabled{opacity:.3;cursor:default}.quick-logger{background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:10px 12px;flex-shrink:0;transition:box-shadow .25s}.quick-logger--saved{box-shadow:0 0 0 2px #27ae60}.quick-logger-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:8px}.quick-logger-result-group{display:flex;align-items:center;gap:6px}.quick-logger-label{font-size:11px;color:var(--text-muted);font-weight:500}.quick-result-btn{background:var(--surface);border:1px solid var(--border);border-radius:4px;color:var(--text-muted);cursor:pointer;font-size:11px;font-weight:700;padding:3px 10px;letter-spacing:.04em;transition:background .1s,border-color .1s,color .1s}.quick-result-btn:hover{color:var(--text)}.quick-result-btn--win.quick-result-btn--active{background:#1e5e3c;border-color:#27ae60;color:#6fcf97}.quick-result-btn--loss.quick-result-btn--active{background:#5c1e1e;border-color:#eb5757;color:#f0a8a8}.quick-logger-sides{display:flex;gap:0}.quick-logger-side{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.quick-logger-divider{width:1px;background:var(--border);margin:0 10px;flex-shrink:0}.quick-logger-side-header{font-size:10px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:5px}.quick-logger-field{display:flex;align-items:center;gap:6px}.quick-logger-field-label{font-size:10px;color:var(--text-muted);width:38px;flex-shrink:0;text-align:right}.qi-wrapper{position:relative;flex:1;min-width:0}.qi-inner{display:flex;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:4px;transition:border-color .1s}.qi-inner:focus-within{border-color:var(--accent)}.qi-value-icon{width:18px;height:18px;object-fit:cover;border-radius:2px;flex-shrink:0;margin-left:4px}.qi-input{flex:1;min-width:0;background:transparent;border:none;color:var(--text);font-size:12px;padding:4px 6px;outline:none}.qi-input::placeholder{color:var(--text-muted);opacity:.55}.qi-clear{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:14px;line-height:1;padding:0 5px}.qi-clear:hover{color:var(--text)}.qi-list{position:absolute;top:calc(100% + 2px);left:0;right:0;z-index:200;background:var(--surface2);border:1px solid var(--border);border-radius:4px;list-style:none;margin:0;padding:2px 0;max-height:180px;overflow-y:auto;box-shadow:0 4px 12px #00000059}.qi-option{display:flex;align-items:center;gap:6px;padding:4px 8px;font-size:12px;color:var(--text);cursor:pointer}.qi-option:hover,.qi-option--active{background:var(--surface)}.qi-option-icon{width:18px;height:18px;object-fit:cover;border-radius:2px;flex-shrink:0}.qi-option--create{border-top:1px solid var(--border);color:var(--accent);font-style:italic}
