.world-map-editor { border-top:1px solid var(--border); margin-top:32px; padding-top:28px; }
.world-map-editor-head { display:flex; align-items:center; flex-wrap:wrap; gap:12px; margin-bottom:10px; }
.world-map-editor-head h2 { margin:0; font-size:21px; }
.world-map-editor-head > button:first-of-type { margin-left:auto; }
.world-map-count,.world-map-help,.world-map-legend,.world-map-empty { color:var(--muted); font-size:13px; line-height:1.65; }
.world-map-help { margin:8px 0 12px; }
.world-map-empty-canvas { display:grid; place-items:center; min-height:200px; border:1px dashed var(--border); border-radius:12px; color:var(--muted); text-align:center; padding:24px; font-size:14px; }
.world-map-placement { margin:0 0 16px; color:var(--muted); font-size:13px; }
.world-map-placement summary { cursor:pointer; padding:8px 0; }
.world-map-placement .world-map-coordinates { margin-top:10px; }
.world-map-button { border:1px solid var(--border); background:var(--panel2,var(--panel)); border-radius:9px; color:var(--text); padding:9px 12px; font:inherit; font-size:13px; cursor:pointer; }
.world-map-button:disabled { opacity:.45; cursor:default; }
.world-map-danger { color:var(--danger,#dc7373); }
.world-map-error { color:var(--danger,#dc7373); font-size:13px; line-height:1.6; }
.world-map-error[hidden] { display:none; }
.world-map { min-width:0; }
.world-map-svg { display:block; width:100%; height:auto; max-height:390px; min-height:180px; border:1px solid var(--border); border-radius:12px; background:var(--panel2,var(--panel)); }
.world-map-edge { fill:none; stroke:var(--muted); stroke-width:2; opacity:.6; vector-effect:non-scaling-stroke; }
.world-map-edge.is-adjacent { stroke:var(--accent); opacity:1; }
.world-map-edge-label { fill:var(--muted); font-size:20px; paint-order:stroke; stroke:var(--panel2,var(--panel)); stroke-width:5px; }
.world-map-node circle { fill:var(--panel); stroke:var(--muted); stroke-width:2; vector-effect:non-scaling-stroke; }
.world-map-node.is-adjacent circle { stroke:var(--accent); stroke-dasharray:5 4; }
.world-map-node.is-current circle,.world-map-node.is-selected circle { stroke:var(--accent); stroke-width:3; }
.world-map-node .world-map-current-dot { fill:var(--accent); stroke:none; }
.world-map-node[role="button"] { cursor:pointer; }
.world-map-node.is-draggable { cursor:grab; touch-action:none; }
.world-map-node.is-draggable:active { cursor:grabbing; }
.world-map-node:focus { outline:none; }
.world-map-node:focus circle { stroke:var(--accent); stroke-width:4; }
.world-map-node circle.world-map-hit-zone { fill:transparent; stroke:none; pointer-events:all; }
.world-map-node-label { fill:var(--text); font-size:24px; paint-order:stroke; stroke:var(--panel2,var(--panel)); stroke-width:5px; }
.world-map-legend { margin:8px 0 12px; }
.world-map-places { list-style:none; padding:0; margin:0; display:grid; gap:8px; }
.world-map-places li { border-bottom:1px solid var(--border); padding:4px 0 9px; }
.world-map-places strong,.world-map-place-button { font-size:14px; font-weight:600; }
.world-map-place-button { background:none; border:0; color:var(--text); padding:3px 0; text-align:left; cursor:pointer; }
.world-map-place-button[aria-current] { color:var(--accent); }
.world-map-places p { margin:4px 0 0; color:var(--muted); font-size:13px; line-height:1.6; white-space:pre-wrap; overflow-wrap:anywhere; }
.world-map-editor .world-map-places { display:none; }
.world-map-edit-area { display:grid; grid-template-columns:1fr 1fr; gap:24px; margin:18px 0; }
.world-map-node-form,.world-map-route-form { min-width:0; }
.world-map-route-form h3 { margin:0 0 16px; font-size:16px; }
.world-map-field { display:flex; flex-direction:column; gap:7px; margin-bottom:14px; font-size:13px; }
.world-map-field input,.world-map-field textarea,.world-map-field select { box-sizing:border-box; width:100%; min-width:0; border:1px solid var(--border); border-radius:9px; padding:10px 11px; background:var(--panel2,var(--panel)); color:var(--text); font:inherit; }
.world-map-field textarea { resize:vertical; min-height:78px; }
.world-map-coordinates { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.world-map-routes { list-style:none; padding:0; margin:16px 0 0; }
.world-map-routes li { display:flex; align-items:center; gap:8px; padding:8px 0; border-bottom:1px solid var(--border); }
.world-map-routes li > span { flex:1; font-size:13px; overflow-wrap:anywhere; }
.world-map-button:focus-visible,.world-map-place-button:focus-visible { outline:2px solid var(--accent); outline-offset:3px; }
@media(max-width:700px) { .world-map-edit-area { grid-template-columns:1fr; gap:20px; } .world-map-editor-head h2 { font-size:19px; } .world-map-editor-head > button { margin-left:0; } .world-map-svg { max-height:330px; } }
