:root{color:#18211d;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#e7ece7;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input,textarea,select{font:inherit}button{color:#18211d;cursor:pointer;background:#fff;border:1px solid #78887f;border-radius:6px;min-height:36px;padding:7px 10px}button:hover:not(:disabled){background:#f5faf5;border-color:#3f5a4b}button:focus-visible,summary:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #ffbc59}button:disabled{cursor:not-allowed;opacity:.45}.app-shell{min-height:100vh;padding:18px}.dashboard{grid-template-columns:250px minmax(600px,1fr) 285px;gap:14px;width:min(100%,1780px);margin:0 auto;display:grid}.topbar{border-bottom:1px solid #bcc8bf;order:0;grid-column:1/-1;justify-content:space-between;align-items:center;gap:16px;min-height:58px;padding:5px 2px 10px;display:flex}.brand-lockup h1{color:#14221c;letter-spacing:0;margin:0;font-size:28px;line-height:1.05}.brand-lockup p{color:#536159;margin:5px 0 0;font-size:13px;line-height:1.3}.build-pill{color:#2f4037;white-space:nowrap;background:#f8faf3;border:1px solid #91a298;border-radius:6px;align-items:center;min-height:32px;padding:6px 10px;font-family:Cascadia Mono,SFMono-Regular,Consolas,monospace;font-size:12px;display:inline-flex}.panel{background:#fafaf5;border:1px solid #c9d1ca;border-radius:8px;min-width:0;padding:14px}.panel h2{color:#17231d;letter-spacing:0;margin:0 0 12px;font-size:17px;line-height:1.2}.turn-panel,.status-panel,.table-panel{order:1}.turn-panel,.status-panel{scrollbar-color:#9ba99f transparent;scrollbar-width:thin;min-height:640px;max-height:calc(100vh - 106px);overflow:auto}.stack{gap:8px;display:grid}.metric{color:#59635d;border-bottom:1px solid #e3e6dd;justify-content:space-between;gap:10px;min-width:0;padding:7px 0;font-size:12px;line-height:1.35;display:flex}.metric>span{flex:none}.metric strong{color:#18211d;text-align:right;overflow-wrap:anywhere;min-width:0}.pending-preview{background:#edf2eb;border:1px solid #aebbb2;border-radius:7px;gap:9px;padding:10px;display:grid}.pending-preview>.tile-renderer{width:min(100%,206px);margin:0 auto}.rotation-control{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.rotation-control button{background:#fff;border-color:#829087;border-radius:6px;min-width:0;min-height:38px;padding:6px 7px;font-size:12px;font-weight:750}.rotation-control output{color:#4c5a52;text-align:center;background:#f7faf4;border:1px solid #cbd5cd;border-radius:5px;grid-column:1/-1;min-height:24px;padding:4px 7px;font-size:12px;line-height:1.3}.pending-preview-meta{color:#57635c;justify-content:space-between;align-items:center;font-size:12px;display:flex}.pending-preview-meta strong{color:#22392e;text-align:center;background:#d7e5d4;border-radius:5px;min-width:26px;padding:3px 6px}.action-row{gap:7px;padding-top:3px;display:grid}.action-row button{width:100%;min-height:42px;font-weight:750}.action-row [data-testid=draw-tile-button]{color:#fff;background:#315c49;border-color:#2f5847}.action-row [data-testid=commit-turn-button]{color:#2c2415;background:#f0b54f;border-color:#8a5a1b}.action-row [data-testid=undo-placement-button]{color:#6b2d28;background:#fff3ef;border-color:#a66861}.debug-shortcuts{border-top:1px solid #dfe4dc;margin-top:3px}.debug-shortcuts>summary{color:#68746d;cursor:pointer;padding:9px 0 3px;font-size:12px;font-weight:700}.debug-shortcut-actions{gap:6px;margin:8px 0 12px;display:grid}.debug-shortcut-actions button{color:#4f5b54;min-height:32px;padding:5px 7px;font-size:11px}.mini-heading{letter-spacing:0;margin:10px 0 6px;font-size:13px;line-height:1.2}.placement-list{gap:5px;max-height:180px;margin:0;padding:0;list-style:none;display:grid;overflow:auto}.placement-list button{text-align:left;width:100%;min-height:30px;padding:4px 6px;font-family:Cascadia Mono,SFMono-Regular,Consolas,monospace;font-size:11px}.placement-count{color:#59635d;margin-top:6px;font-size:12px;display:inline-flex}.table-panel{background:#132321;border:1px solid #263f3c;border-radius:8px;min-width:0;overflow:hidden;box-shadow:0 12px 30px #18282229}.table-toolbar{color:#f4f6eb;background:#1a2d29;border-bottom:1px solid #3d5650;justify-content:space-between;align-items:center;gap:14px;min-height:65px;padding:10px 12px;display:flex}.table-toolbar h2{letter-spacing:0;margin:0;font-size:17px;line-height:1.2}.table-legend{color:#bdc9c1;align-items:center;gap:10px;margin-top:7px;font-size:10px;display:flex}.legend-item{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.legend-item:before{content:"";border:1px solid;border-radius:2px;width:9px;height:9px}.legend-item--active:before{color:#b7f36b;background:#b7f36b}.legend-item--round:before{color:#ffbf63;background:#ffbf63}.legend-item--neutral:before{color:#9badb4;background:#9badb4}.legend-item--fort:before{color:#ff9890;background:#a44747}.table-toolbar-actions,.zoom-control{align-items:center;display:flex}.table-toolbar-actions{gap:9px}.board-count{color:#eaf0e8;white-space:nowrap;background:#223a34;border:1px solid #4e675f;border-radius:5px;padding:5px 7px;font-size:11px;position:static}.zoom-control{border:1px solid #60766e;border-radius:6px;overflow:hidden}.zoom-control button{color:#1f332c;background:#f5f7ef;border:0;border-radius:0;width:34px;min-width:34px;min-height:32px;padding:0;font-size:18px;line-height:1}.zoom-control output{color:#e8eee7;text-align:center;min-width:52px;padding:0 5px;font-family:Cascadia Mono,SFMono-Regular,Consolas,monospace;font-size:11px}.table-viewport{cursor:grab;overscroll-behavior:contain;scrollbar-color:#5a726a #142522;scrollbar-width:thin;touch-action:pan-x pan-y;background:#0e1a19;min-height:clamp(620px,74vh,880px);max-height:calc(100vh - 171px);position:relative;overflow:auto}.table-viewport.is-panning{cursor:grabbing;-webkit-user-select:none;user-select:none}.table-plane{isolation:isolate;background-color:#142523;background-image:linear-gradient(#92b7a624 1px,#0000 1px),linear-gradient(90deg,#92b7a624 1px,#0000 1px);background-position:3px 3px;background-size:var(--table-cell-size) var(--table-cell-size);position:relative}.table-tile,.legal-ghost,.fort-zone-cell{aspect-ratio:1;position:absolute}.fort-zone-cell{z-index:1;pointer-events:none;background:#8e343233;border:1px solid #ff7e719e;box-shadow:inset 0 0 0 4px #ff7e710f}.legal-ghost{z-index:2;background:#b7f36b14;border:2px dashed #c9ef83;border-radius:5px;min-height:0;padding:0;overflow:visible;box-shadow:0 0 0 3px #b7f36b14}.legal-ghost:hover:not(:disabled){background:#b7f36b2e;border-color:#e4ffad;box-shadow:0 0 0 5px #b7f36b21}.legal-ghost .tile-renderer{opacity:.34;transition:opacity .13s}.legal-ghost:hover .tile-renderer,.legal-ghost:focus-visible .tile-renderer{opacity:.72}.ghost-coordinate{z-index:3;color:#e4ffad;white-space:nowrap;background:#101e1ce6;border-radius:4px;padding:3px 5px;font-family:Cascadia Mono,SFMono-Regular,Consolas,monospace;font-size:10px;font-weight:800;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.table-tile{z-index:3;border-radius:5px}.table-tile--round{box-shadow:0 0 0 2px #ffbf63,0 7px 16px #00000047}.table-tile--active{z-index:4;box-shadow:0 0 0 3px #b7f36b,0 0 18px #b7f36b80}.table-tile--neutral{filter:saturate(.62);box-shadow:0 0 0 2px #9badb4,0 7px 16px #00000047}.table-tile--fort-zone:after{z-index:5;pointer-events:none;content:"";background:#8e343221;border:2px solid #ff7e71b8;border-radius:5px;position:absolute;inset:0;box-shadow:inset 0 0 0 4px #ff7e7114}.tile-coordinate,.tile-owner{z-index:7;pointer-events:none;border-radius:3px;padding:2px 4px;font-family:Cascadia Mono,SFMono-Regular,Consolas,monospace;font-size:8px;font-weight:800;position:absolute}.tile-coordinate{color:#d8e4dd;background:#0a1212b8;top:4px;left:4px}.tile-owner{text-align:center;min-width:18px;bottom:4px;left:4px}.tile-owner--p1{color:#173021;background:#b7f36b}.tile-owner--p2{color:#351715;background:#ff7e71}.tile-owner--neutral{color:#1b292e;background:#9badb4}.missing-tile{color:#ffe4de;background:#2a1e1d;border:2px solid #d5766d;place-items:center;width:100%;height:100%;font-size:10px;display:grid}.tile-renderer{aspect-ratio:1;background:#14252b;border:2px solid #0a1417;border-radius:4px;width:100%;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #e7f4ed21}.tile-art{width:100%;height:100%;display:block}.tile-debug-badge{z-index:6;color:#dce9e2;text-overflow:ellipsis;white-space:nowrap;background:#0a1212bd;border-radius:3px;max-width:calc(100% - 29px);padding:2px 4px;font-family:Cascadia Mono,SFMono-Regular,Consolas,monospace;font-size:7px;font-weight:700;position:absolute;bottom:4px;right:4px;overflow:hidden}.fleet-target{z-index:8;aspect-ratio:1;background:#b7f36b52;border:2px solid #efffcf;border-radius:50%;width:clamp(25px,28%,34px);min-width:25px;min-height:25px;padding:0;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 3px #b7f36b21}.fleet-target>span{background:#efffcf;border-radius:50%;width:10px;height:10px;margin:auto;display:block}.fleet-target[data-target-kind=route]{background:#ffbf6357;border-color:#ffe0a0;box-shadow:0 0 0 3px #ffbf632e}.fleet-target[data-target-kind=route]>span{background:#ffe0a0;border-radius:2px;transform:rotate(45deg)}.fleet-target[data-target-kind=system]{background:#68d5d457;border-color:#bdf7f2;border-radius:9px;box-shadow:0 0 0 3px #68d5d42e}.fleet-target[data-target-kind=system]>span{background:#dffcf7;border-radius:50%;width:13px;height:8px}.fleet-target[data-target-kind=object]{background:#ffefbc57;border-color:#fff5d0;border-radius:7px;box-shadow:0 0 0 3px #ffcf7033}.fleet-target[data-target-kind=object]>span{background:#fff5d0;border-radius:3px;width:11px;height:11px}.fleet-target[data-target-kind=sector]{background:#f178a757;border-color:#ffb7d0;box-shadow:0 0 0 3px #f178a72b}.fleet-target[data-target-kind=sector]>span{background:#ffd1e0;border-radius:8px 8px 2px 2px;width:12px;height:8px}.fleet-target:hover:not(:disabled){background:#b7f36bb3;border-color:#fff;box-shadow:0 0 0 5px #b7f36b33}.fleet-target[data-target-kind=route]:hover:not(:disabled){background:#ffbf63a8;box-shadow:0 0 0 5px #ffbf6338}.fleet-target[data-target-kind=system]:hover:not(:disabled){background:#68d5d4a8;box-shadow:0 0 0 5px #68d5d438}.fleet-target[data-target-kind=object]:hover:not(:disabled){background:#ffefbca8;box-shadow:0 0 0 5px #ffcf703d}.fleet-target[data-target-kind=sector]:hover:not(:disabled){background:#f178a7a8;box-shadow:0 0 0 5px #f178a738}.system-open-port,.object-route-continuity{pointer-events:none}.status-panel .metric{grid-template-columns:1fr;gap:3px;display:grid}.status-panel .metric strong{text-align:left}.player-resource{gap:5px;display:grid}.player-score{font-weight:800}.fleet-icon-row{flex-wrap:wrap;align-items:center;gap:3px;min-height:16px;display:flex}.fleet-resource-icon{clip-path:polygon(50% 0,78% 58%,63% 55%,50% 100%,37% 55%,22% 58%);width:13px;height:13px;display:inline-block;position:relative}.fleet-resource-icon--available{background:#315c49;box-shadow:0 0 0 1px #315c4940}.fleet-resource-icon--empty{opacity:.34;background:#9ba7a0}.fleet-resource-summary{color:#5c6a62;font-family:Cascadia Mono,SFMono-Regular,Consolas,monospace;font-size:11px}.replay-list{gap:5px;max-height:175px;margin:0;padding:0;list-style:none;display:grid;overflow:auto}.replay-list:empty{display:none}.replay-list li{color:#3e4942;overflow-wrap:anywhere;background:#f0eee3;border-left:3px solid #d8a34b;padding:6px 7px;font-family:Cascadia Mono,SFMono-Regular,Consolas,monospace;font-size:10px;line-height:1.35}.persistence-panel{order:2;grid-column:1/-1;min-height:0}.persistence-toolbar,.persistence-actions,.replay-import-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.persistence-toolbar h2,.persistence-toolbar p,.replay-import-row p{margin:0}.persistence-actions{flex-wrap:wrap;justify-content:flex-end}.save-status{white-space:nowrap;background:#eef6ef;border:1px solid #93a19a;border-radius:6px;align-items:center;min-height:34px;padding:6px 9px;display:inline-flex}.status-message{color:#54615a;font-size:12px;line-height:1.4}.status-message--error{color:#842f28}.replay-io{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px;display:grid}.replay-io label{color:#536059;gap:6px;min-width:0;font-size:12px;font-weight:700;display:grid}.replay-io textarea{resize:vertical;color:#202723;background:#fff;border:1px solid #9bacaa;border-radius:6px;width:100%;min-height:128px;padding:8px;font-family:Cascadia Mono,SFMono-Regular,Consolas,monospace;font-size:11px;line-height:1.4}.replay-import-row{justify-content:flex-start;margin-top:10px}.catalog-drawer{border-top:1px solid #bdc8c0;order:3;grid-column:1/-1}.catalog-drawer>summary{color:#23332b;cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:14px 2px;display:flex}.catalog-drawer>summary>span{font-size:19px;font-weight:800}.catalog-drawer>summary>strong{color:#526159;font-family:Cascadia Mono,SFMono-Regular,Consolas,monospace;font-size:11px;font-weight:600}.catalog-section{gap:14px;padding:12px 0 28px;display:grid}.catalog-head{justify-content:space-between;align-items:flex-end;gap:16px;padding-top:6px;display:flex}.catalog-head h2{letter-spacing:0;margin:0;font-size:23px;line-height:1.2}.catalog-head p{color:#4f5c54;margin:6px 0 0;font-size:13px}.validation-badge{color:#1d3938;white-space:nowrap;background:#edf7f6;border:1px solid #627075;border-radius:6px;align-items:center;min-height:34px;padding:6px 10px;font-weight:700;display:inline-flex}.validation-badge--failed{color:#6d231d;background:#fff1ef;border-color:#9f5a53}.validation-errors{background:#fff8f6;border:1px solid #d89992;border-radius:8px;gap:8px;margin:0;padding:12px 16px;display:grid}.catalog-stats{grid-template-columns:repeat(auto-fit,minmax(116px,1fr));gap:8px;display:grid}.summary-metric{background:#fafaf5;border:1px solid #cbd4cc;border-radius:7px;min-height:58px;padding:10px}.summary-metric span,.catalog-controls span{color:#59645d;text-transform:uppercase;font-size:11px;line-height:1.2;display:block}.summary-metric strong{color:#1f2923;margin-top:4px;font-size:23px;line-height:1;display:block}.catalog-controls{background:#f2f6f2;border:1px solid #cbd4cc;border-radius:7px;flex-wrap:wrap;align-items:end;gap:12px;padding:12px;display:flex}.catalog-controls label{gap:6px;min-width:190px;display:grid}.catalog-controls select{color:#202723;background:#fff;border:1px solid #91a39a;border-radius:6px;min-height:38px;padding:6px 32px 6px 10px}.catalog-controls>strong{align-items:center;min-height:38px;margin-left:auto;display:inline-flex}.tile-catalog-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;display:grid}.tile-card{background:#fafaf6;border:1px solid #cbd3cc;border-radius:8px;align-content:start;gap:11px;min-width:0;padding:13px;display:grid}.tile-card-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.tile-card h3{letter-spacing:0;margin:0;font-size:16px;line-height:1.2}.tile-card p{color:#59635d;margin:4px 0 0;font-size:12px;line-height:1.35}.tile-flags{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.tile-flags span{color:#27352d;white-space:nowrap;background:#f1f5ef;border:1px solid #b6bdb3;border-radius:5px;padding:3px 6px;font-size:11px;line-height:1.1}.tile-renderer--catalog{width:min(100%,290px);margin:0 auto}.edge-table{gap:5px;display:grid}.edge-row{background:#f4f3eb;border:1px solid #e2e5dd;border-radius:5px;grid-template-columns:50px minmax(0,1fr);align-items:center;gap:8px;min-height:29px;padding:5px 7px;font-family:Cascadia Mono,SFMono-Regular,Consolas,monospace;font-size:11px;display:grid}.edge-row span{overflow-wrap:anywhere;min-width:0}.component-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;display:grid}.component-list>div{background:#fff;border:1px solid #dfe3dc;border-radius:5px;min-width:0;padding:7px}.component-list strong{margin-bottom:4px;display:block}.component-list ul{gap:4px;margin:0;padding-left:16px;display:grid}.component-list li,.component-list p{color:#4f5952;overflow-wrap:anywhere;margin:0;font-family:Cascadia Mono,SFMono-Regular,Consolas,monospace;font-size:11px;line-height:1.35}@media (width<=1320px){.dashboard{grid-template-columns:230px minmax(540px,1fr) 260px}.app-shell{padding:14px}}@media (width<=1100px){.dashboard{grid-template-columns:220px minmax(0,1fr)}.status-panel{grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px;min-height:0;max-height:none;display:grid}.status-panel h2{grid-column:1/-1}.turn-panel{min-height:620px}.table-viewport{min-height:620px;max-height:calc(100vh - 171px)}}@media (width<=720px){.app-shell{padding:10px}.dashboard{grid-template-columns:minmax(0,1fr);gap:10px}.topbar,.catalog-head,.persistence-toolbar,.replay-import-row{flex-direction:column;align-items:flex-start}.build-pill{white-space:normal}.turn-panel{min-height:0;max-height:none}.table-panel{order:2}.turn-panel{order:1}.status-panel{order:3;grid-column:auto;grid-template-columns:1fr}.persistence-panel{order:4}.catalog-drawer{order:5}.catalog-drawer>summary,.table-toolbar{flex-direction:column;align-items:flex-start}.table-toolbar-actions{justify-content:space-between;width:100%}.table-legend{flex-wrap:wrap;max-width:100%}.table-viewport{min-height:64vh}.persistence-actions,.replay-io{width:100%}.persistence-actions{justify-content:flex-start}.replay-io,.component-list{grid-template-columns:1fr}.catalog-controls{align-items:stretch}.catalog-controls label,.catalog-controls>strong{width:100%;margin-left:0}}
