/* Taxi route editor: a dark chart surface inside the route dialog. Colors come from style.css tokens. */
.taxi-route-editor { min-width:0; color:var(--ink,#e7f1f5); }
.taxi-editor-section { background:transparent; border-top:1px solid var(--hairline,rgba(150,190,206,.1)); }
.taxi-editor-section > summary { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:11px 0; color:var(--accent-strong,#7fe6f4); font-size:13px; font-weight:700; list-style:none; }
.taxi-editor-section > summary::-webkit-details-marker { display:none; }
.taxi-editor-section > summary::before { content:""; width:6px; height:6px; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform:rotate(-45deg); margin:0 4px; transition:transform var(--t-2,180ms) var(--ease,ease-out); }
.taxi-editor-section[open] > summary::before { transform:rotate(45deg); }
.taxi-editor-section > summary > span { margin-left:auto; color:var(--ink-3,#71899a); font-size:11.5px; font-weight:500; }
.taxi-editor-body { display:grid; gap:10px; padding-bottom:10px; }
.taxi-editor-instruction,.taxi-route-status,.taxi-route-via { font-size:12px; line-height:1.5; margin:0; }
.taxi-editor-instruction { color:var(--ink-2,#a4bac6); }
.taxi-editor-endpoints { display:flex; flex-wrap:wrap; gap:6px 18px; font-size:12px; color:var(--ink-3,#71899a); }
.taxi-editor-endpoints strong { color:var(--ink,#e7f1f5); margin-left:5px; letter-spacing:.02em; }
.taxi-map-tools { display:flex; flex-wrap:wrap; gap:5px; align-items:center; }
.taxi-map-tools button { min-height:30px; padding:4px 10px; font-size:12px; }
.taxi-map-tools > span { color:var(--ink-3,#71899a); font-size:11px; margin-left:auto; font-variant-numeric:tabular-nums; }
.taxi-editor-map { width:100%; height:auto; aspect-ratio:900/560; overflow:hidden; background:var(--scope,#0d1d2a); border:1px solid var(--line,rgba(150,190,206,.18)); border-radius:var(--r-2,6px); touch-action:none; user-select:none; cursor:grab; }
.taxi-editor-map:active { cursor:grabbing; }
.taxi-editor-map:focus-visible { outline:2px solid var(--focus,#9eeefb); outline-offset:3px; }
.taxi-editor-map text { pointer-events:none; }
.taxi-map-edge { fill:none; stroke-width:3; stroke:#7fd6ea; stroke-linecap:round; }
.taxi-map-edge.is-game { stroke:#ffc46f; stroke-dasharray:8 6; }
.taxi-map-runway line { stroke:#3f5f74; }
.taxi-map-runway text { font-size:12px; text-anchor:middle; fill:#eaf5f9; paint-order:stroke; stroke:#0d1d2a; stroke-width:3px; }
.taxi-map-draft-outline,.taxi-map-draft { fill:none; stroke-linecap:round; stroke-linejoin:round; pointer-events:none; }
.taxi-map-draft-outline { stroke:#0d1d2a; stroke-width:10; }
.taxi-map-draft { stroke:#ffe45c; stroke-width:5; }
.taxi-map-node { outline:none; cursor:crosshair; }
.taxi-node-hit { fill:transparent; stroke:none; }
.taxi-node-dot { fill:#0d1d2a; stroke:#9fd3e2; stroke-width:2; }
.taxi-map-node.is-next .taxi-node-dot { fill:#7fe6f4; stroke:#fff; stroke-width:2.5; }
.taxi-map-node.is-selected .taxi-node-dot { fill:#ffe45c; stroke:#0d1d2a; }
.taxi-map-node.is-start .taxi-node-dot { stroke:#fff; stroke-width:3; }
.taxi-map-node.is-end .taxi-node-dot { fill:#fff; stroke:#ffe45c; stroke-width:3; }
.taxi-map-node.is-runway .taxi-node-dot { stroke:#6b8ea2; fill:#3f5f74; }
.taxi-node-focus { fill:none; stroke:#fff; stroke-width:2; opacity:0; }
.taxi-map-node:focus-visible .taxi-node-focus,.taxi-map-node:hover .taxi-node-focus { opacity:1; }
.taxi-map-labels { pointer-events:none; }
.taxi-map-label { font-size:12px; fill:#d7e8f0; paint-order:stroke; stroke:#0d1d2a; stroke-width:4px; stroke-linejoin:round; }
.taxi-map-label.is-endpoint { fill:#fff; font-weight:700; font-size:13px; }
.taxi-map-label.is-next { fill:var(--accent-strong,#7fe6f4); font-weight:700; }
.taxi-map-label.is-selected { fill:#ffe45c; }
.taxi-map-label.is-taxiway { fill:#d7e8f0; font-weight:700; }
.taxi-map-label.is-gate { fill:var(--ink-2,#a4bac6); font-size:11px; font-variant-numeric:tabular-nums; }
.taxi-label-leader { fill:none; stroke:var(--ink-2,#a4bac6); stroke-width:1; }
.taxi-map-plane { pointer-events:none; fill:#fff; stroke:#0d1d2a; stroke-width:2; }
.taxi-map-plane.is-active { fill:#ffe45c; }
.taxi-map-existing-segment { fill:none; stroke:#fff; stroke-width:2; stroke-dasharray:3 4; pointer-events:none; }
.taxi-map-north { pointer-events:none; fill:#d7e8f0; color:#d7e8f0; }
.taxi-map-north path { stroke:currentColor; fill:none; stroke-width:2; }
.taxi-map-north text { text-anchor:middle; font-size:14px; font-weight:700; }
.taxi-map-key { display:flex; flex-wrap:wrap; gap:7px 15px; font-size:11px; color:var(--ink-3,#71899a); }
.taxi-map-key > span { display:flex; align-items:center; gap:5px; }
.taxi-map-key > span::before { content:""; width:22px; border-top:3px solid #7fd6ea; }
.taxi-map-key > .taxi-key-game::before { border-color:#ffc46f; border-top-style:dashed; }
.taxi-map-key > .taxi-key-draft::before { border-color:#ffe45c; }
.taxi-route-status { color:var(--warning,#ffc46f); min-height:1.5em; }
.taxi-route-status.is-ready { color:var(--success,#63d49f); }
.taxi-route-via { max-height:4.5em; overflow:auto; overflow-wrap:anywhere; color:var(--ink-3,#71899a); font-variant-numeric:tabular-nums; }
.taxi-next-points { display:flex; flex-wrap:wrap; align-items:center; gap:5px; }
.taxi-next-points:empty { display:none; }
.taxi-next-points > span { font-size:12px; font-weight:650; margin-right:3px; color:var(--ink-2,#a4bac6); }
.taxi-next-points button { min-height:32px; padding:4px 10px; font-size:12px; }
.taxi-route-actions { display:flex; flex-wrap:wrap; gap:6px; }
.taxi-route-actions button { min-height:36px; padding:6px 10px; font-size:12px; }
.taxi-route-actions .primary { margin-left:auto; flex-grow:1; }
@media (max-width:540px) {
  .taxi-editor-map { min-height:220px; aspect-ratio:900/560; }
  .taxi-map-tools > span { flex-basis:100%; margin-left:0; }
  .taxi-route-actions .primary { flex-basis:100%; }
}
/* Via-point editing (2026-11-05): every taxi point is clickable; vias are large yellow rings, the route is the bold line. */
.taxi-map-node:not(.is-runway):not(.is-start):not(.is-end) { cursor:pointer; }
.taxi-map-node:not(.is-runway):hover .taxi-node-dot { r:5; fill:#7fe6f4; }
.taxi-map-node.is-via .taxi-node-dot { r:7; fill:#ffe45c; stroke:#0d1d2a; stroke-width:2.5; }
.taxi-map-label.is-next { fill:#ffe45c; }
.taxi-editor-map { cursor:grab; }
