@font-face{font-family:"MV Vintage";src:url('/map-fonts/vintage_serif.ttf') format('truetype');font-display:swap}
@font-face{font-family:"MV Cinematic";src:url('/map-fonts/dark_cinematic.ttf') format('truetype');font-display:swap}
@font-face{font-family:"MV Atlas";src:url('/map-fonts/atlas_serif.ttf') format('truetype');font-display:swap}
@font-face{font-family:"MV Papyrus";src:url('/map-fonts/papyrus_handwritten.ttf') format('truetype');font-display:swap}
:root{color-scheme:dark;--bg:#111214;--panel:#18191c;--panel-2:#1d1f22;--panel-3:#24262a;--border:#303238;--border-strong:#484b53;--text:#f2f3f5;--muted:#a3a7ae;--subtle:#727780;--accent:#6d86ff;--success:#4fb985;--danger:#e06d6d;--route-color:#fff;--route-outline:#0b0c0e;--label-text:#fff;--label-card:rgba(18,19,21,.9);--label-border:rgba(255,255,255,.28);--label-accent:#fff;--map-font:Inter,ui-sans-serif,system-ui,sans-serif;--label-radius:7px;--topbar-h:54px;--inspector-w:340px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}html,body{width:100%;min-height:100%;margin:0}body{background:var(--bg);color:var(--text);overflow:hidden}button,input,select{font:inherit}button{color:inherit}svg{display:block}.is-hidden{display:none!important}.application{height:100dvh;display:grid;grid-template-rows:var(--topbar-h) minmax(0,1fr)}
.topbar{display:grid;grid-template-columns:var(--inspector-w) minmax(0,1fr) auto;align-items:center;border-bottom:1px solid var(--border);background:#151618;z-index:30}.brand{height:100%;display:flex;align-items:center;gap:9px;padding:0 18px;color:var(--text);text-decoration:none;border-right:1px solid var(--border)}.brand svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.7}.brand span{font-size:15px;font-weight:700;letter-spacing:-.02em}.brand small{color:var(--subtle);font-size:10px;font-weight:700;letter-spacing:.11em;text-transform:uppercase}.project-meta{min-width:0;display:flex;align-items:baseline;gap:12px;padding:0 18px}.project-meta strong{max-width:48vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600}.project-meta span{color:var(--subtle);font-size:11px}.topbar-actions{display:flex;align-items:center;gap:8px;padding-right:12px}.service-status{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:11px;margin-right:4px}.service-status i{width:7px;height:7px;border-radius:50%;background:var(--success);box-shadow:0 0 0 3px rgba(79,185,133,.1)}.service-status[data-state=working] i{background:#e7b958}.service-status[data-state=error] i{background:var(--danger)}
.button{min-height:36px;border-radius:7px;border:1px solid transparent;padding:0 13px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:12px;font-weight:650;cursor:pointer;text-decoration:none}.button:active{transform:translateY(1px)}.button:disabled{opacity:.55;cursor:wait}.button-primary{background:#f0f1f3;color:#111214;border-color:#f0f1f3}.button-primary:hover:not(:disabled){background:#fff}.button-secondary{background:#25272b;color:var(--text);border-color:var(--border)}.button-secondary:hover{border-color:var(--border-strong);background:#2c2f34}
.editor-shell{min-height:0;display:grid;grid-template-columns:minmax(0,1fr) var(--inspector-w)}.atlas-workspace{min-width:0;min-height:0;display:grid;grid-template-rows:44px minmax(0,1fr) 36px;background:#0e0f11}.atlas-toolbar{display:flex;align-items:center;gap:10px;padding:0 12px;border-bottom:1px solid var(--border);background:#17181a}.mode-switch{display:inline-flex;border:1px solid var(--border);border-radius:7px;padding:2px;background:#111214}.mode-switch button{height:28px;border:0;border-radius:5px;padding:0 10px;background:transparent;color:var(--muted);font-size:11px;cursor:pointer}.mode-switch button:hover{color:var(--text)}.mode-switch button.is-selected{background:#2a2c30;color:var(--text)}.atlas-instruction{min-width:0;flex:1;color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toolbar-button{height:28px;border:1px solid var(--border);border-radius:6px;background:#202226;color:var(--muted);padding:0 10px;font-size:10.5px;cursor:pointer}.toolbar-button:hover{color:var(--text);border-color:var(--border-strong)}
.atlas-stage{position:relative;min-height:0;overflow:hidden;background:#101113;display:grid;place-items:center}.atlas-svg{width:100%;height:100%;user-select:none;touch-action:none;background:#111214;cursor:grab}.atlas-svg.is-panning{cursor:grabbing}#atlas-background{pointer-events:none}.geometry-shape{fill:transparent;stroke:transparent;stroke-width:1.25;vector-effect:non-scaling-stroke;cursor:pointer;transition:fill .1s,stroke .1s,filter .1s}.geometry-shape:hover,.geometry-shape.is-hovered{fill:rgba(255,255,255,.13);stroke:rgba(255,255,255,.95);filter:drop-shadow(0 0 4px rgba(255,255,255,.22))}.geometry-shape.is-selected{fill:rgba(255,255,255,.04);stroke:rgba(255,255,255,.36)}.selected-base{stroke:none}.selected-flag{pointer-events:none}.selected-outline{fill:none;stroke:rgba(255,255,255,.97);stroke-width:2.4;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 2px rgba(0,0,0,.55));pointer-events:none}.selected-hit{fill:transparent;stroke:transparent;cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Ccircle cx='12' cy='12' r='10' fill='%23222529' stroke='white'/%3E%3Cpath d='M8 8l8 8M16 8l-8 8' stroke='white' stroke-width='2'/%3E%3C/svg%3E") 12 12,pointer}.selected-hit:hover{fill:rgba(224,109,109,.12);stroke:rgba(255,255,255,.92);stroke-width:1.8;vector-effect:non-scaling-stroke}.city-point{cursor:pointer}.city-point .city-halo{fill:rgba(255,255,255,.14);stroke:rgba(0,0,0,.6);stroke-width:1;vector-effect:non-scaling-stroke}.city-point .city-core{fill:#f4f5f7;stroke:#161719;stroke-width:1.4;vector-effect:non-scaling-stroke}.city-point:hover .city-halo{fill:rgba(255,255,255,.38)}
.route-outline{fill:none;stroke:var(--route-outline);stroke-width:9;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;opacity:.88;pointer-events:none}.route-line{fill:none;stroke:var(--route-color);stroke-width:5;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:none}.route-line.is-dotted{stroke-dasharray:4 15}.route-marker .badge{fill:var(--label-card);stroke:var(--label-accent);stroke-width:2;vector-effect:non-scaling-stroke}.route-marker text{fill:var(--label-text);font-family:var(--map-font);font-size:18px;font-weight:750;text-anchor:middle;dominant-baseline:central;pointer-events:none}.route-label .label-shadow{fill:rgba(0,0,0,.27)}.route-label .label-card{fill:var(--label-card);stroke:var(--label-border);stroke-width:1.4;vector-effect:non-scaling-stroke}.route-label text{fill:var(--label-text);font-family:var(--map-font);font-size:18px;font-weight:650;text-anchor:middle;dominant-baseline:central;pointer-events:none}.travel-icon{pointer-events:none;filter:drop-shadow(0 3px 4px rgba(0,0,0,.7))}.travel-icon path{fill:var(--label-accent);stroke:var(--route-outline);stroke-width:2.5;vector-effect:non-scaling-stroke}.remove-hint{pointer-events:none}.remove-hint circle{fill:#25272b;stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke}.remove-hint text{fill:#fff;font:700 20px Inter,sans-serif;text-anchor:middle;dominant-baseline:central}
.atlas-loading{position:absolute;inset:0;z-index:8;display:grid;place-content:center;justify-items:center;text-align:center;gap:7px;background:#111214}.atlas-loading strong{font-size:13px}.atlas-loading small{color:var(--muted);font-size:11px}.spinner{width:26px;height:26px;border:2px solid #3a3c42;border-top-color:#eef0f3;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.location-tooltip{position:absolute;z-index:15;min-width:150px;max-width:240px;transform:translate(14px,14px);pointer-events:none;padding:9px 10px;border:1px solid rgba(255,255,255,.16);border-radius:7px;background:rgba(18,19,21,.94);box-shadow:0 10px 30px rgba(0,0,0,.32)}.location-tooltip strong,.location-tooltip span{display:block}.location-tooltip strong{font-size:12px}.location-tooltip span{margin-top:2px;color:var(--muted);font-size:10.5px}.map-search{position:absolute;z-index:12;top:14px;left:14px;width:min(300px,calc(100% - 82px));min-height:38px;display:grid;grid-template-columns:32px 1fr;align-items:center;border:1px solid rgba(255,255,255,.18);border-radius:8px;background:rgba(22,23,25,.94);box-shadow:0 9px 26px rgba(0,0,0,.24)}.map-search>svg{width:16px;height:16px;margin-left:11px;fill:none;stroke:var(--muted);stroke-width:1.6}.map-search input{width:100%;height:36px;padding:0 10px 0 0;border:0;outline:0;background:transparent;color:var(--text);font-size:12px}.search-results{position:absolute;top:43px;left:0;right:0;max-height:290px;overflow:auto;border:1px solid var(--border);border-radius:7px;background:#202226;box-shadow:0 12px 35px rgba(0,0,0,.36)}.search-result{width:100%;min-height:43px;border:0;border-bottom:1px solid #2e3035;background:transparent;color:var(--text);text-align:left;padding:6px 11px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;cursor:pointer}.search-result:hover{background:#2a2d31}.search-result span{display:grid;gap:2px;font-size:11.5px}.search-result span small{color:var(--subtle);font-size:9.5px}.search-result>small{color:var(--subtle);font-size:9px;text-transform:uppercase;letter-spacing:.07em}.zoom-controls{position:absolute;z-index:11;right:14px;top:14px;display:grid;border:1px solid rgba(255,255,255,.18);border-radius:8px;overflow:hidden;background:rgba(22,23,25,.94)}.zoom-controls button{width:36px;height:34px;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text);font-size:18px;cursor:pointer}.zoom-controls button:last-child{border-bottom:0;font-size:14px}.zoom-controls button:hover{background:#2a2d31}
.job-panel{position:absolute;z-index:20;left:14px;right:14px;bottom:14px;min-height:58px;display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,34%) 38px;align-items:center;gap:14px;padding:10px 12px;border:1px solid rgba(255,255,255,.14);border-radius:8px;background:rgba(25,26,29,.97);box-shadow:0 14px 36px rgba(0,0,0,.35)}.job-panel>div:first-child{display:grid;gap:2px}.job-panel strong{font-size:12px}.job-panel span{color:var(--muted);font-size:10.5px}.progress{height:4px;overflow:hidden;border-radius:99px;background:#3c3f45}.progress i{display:block;width:0;height:100%;background:#f0f1f3;transition:width .35s}
.result-stage{position:absolute;inset:0;z-index:100;background:#08090a;display:grid;place-items:center;pointer-events:auto}.result-stage video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#08090a;pointer-events:auto;z-index:1}.result-play{position:relative;z-index:3;min-width:130px;min-height:62px;display:grid;grid-template-columns:28px auto;align-items:center;gap:8px;padding:0 18px;border:1px solid rgba(255,255,255,.28);border-radius:10px;background:rgba(20,21,23,.9);color:#fff;cursor:pointer;box-shadow:0 16px 44px rgba(0,0,0,.45)}.result-play span{font-size:22px}.result-play strong{font-size:13px}.result-status{position:absolute;z-index:3;left:14px;top:14px;padding:7px 9px;border-radius:6px;background:rgba(20,21,23,.86);color:var(--muted);font-size:10.5px;pointer-events:none}.result-actions{position:absolute;z-index:4;right:14px;top:14px;display:flex;gap:7px}.result-stage.is-playing .result-play{display:none}.atlas-stage.is-showing-result>.atlas-svg,.atlas-stage.is-showing-result>.map-search,.atlas-stage.is-showing-result>.zoom-controls,.atlas-stage.is-showing-result>.location-tooltip,.atlas-stage.is-showing-result>.atlas-loading{display:none!important}
.atlas-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 14px;border-top:1px solid var(--border);background:#17181a;color:var(--muted);font-size:10.5px}.route-readout{min-width:0;display:flex;align-items:center;gap:8px}.route-status{width:7px;height:7px;border-radius:50%;background:var(--success)}.route-readout strong{max-width:58vw;color:var(--text);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.inspector{min-height:0;overflow-y:auto;border-left:1px solid var(--border);background:var(--panel);scrollbar-width:thin}.panel-section{padding:16px;border-bottom:1px solid var(--border)}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:11px}.eyebrow{display:block;margin-bottom:3px;color:var(--subtle);font-size:9px;font-weight:750;letter-spacing:.11em;text-transform:uppercase}.panel-heading h1,.panel-heading h2{margin:0;font-size:14px;line-height:1.2;font-weight:680}.count-badge,.format-note{color:var(--subtle);font-size:10px}.panel-copy{margin:0 0 11px;color:var(--muted);font-size:10.5px;line-height:1.45}.selected-route{display:grid;gap:6px}.selected-stop{min-height:44px;display:grid;grid-template-columns:27px minmax(0,1fr) 28px;align-items:center;gap:8px;padding:0 7px;border:1px solid var(--border);border-radius:7px;background:#1d1f22}.selected-stop .number{width:22px;height:22px;display:grid;place-items:center;border-radius:50%;background:#30333a;color:#fff;font-size:10px;font-weight:750}.selected-stop .copy{min-width:0;display:grid;gap:1px}.selected-stop .copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;font-weight:620}.selected-stop .copy small{color:var(--subtle);font-size:9.5px}.remove-selected{width:27px;height:27px;border:0;border-radius:5px;background:transparent;color:var(--subtle);cursor:pointer;font-size:17px}.remove-selected:hover{background:#3a2528;color:#fff}.empty-stop{min-height:38px;display:flex;align-items:center;gap:8px;padding:0 9px;border:1px dashed #35383e;border-radius:7px;color:var(--subtle);font-size:10.5px}.empty-stop i{width:20px;height:20px;border-radius:50%;border:1px dashed #555963}.inline-error{min-height:14px;margin:7px 0 0;color:var(--danger);font-size:10.5px}
.style-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}.style-card{min-width:0;border:1px solid var(--border);border-radius:6px;background:#17181a;padding:4px;color:var(--muted);display:grid;gap:5px;cursor:pointer;font-size:9.5px;text-align:left}.style-card:hover{color:var(--text);border-color:var(--border-strong)}.style-card.is-selected{color:var(--text);border-color:#7e838d}.style-card i{display:block;height:27px;border-radius:3px;border:1px solid rgba(255,255,255,.08)}.style-earth{background:linear-gradient(145deg,#365b76 0 47%,#83987d 48% 72%,#d0c49e 73%)}.style-vintage{background:linear-gradient(145deg,#d7c393 0 50%,#978464 51% 65%,#6f765f 66%)}.style-dark{background:linear-gradient(145deg,#101216 0 52%,#29323a 53% 72%,#536f80 73%)}.style-atlas{background:linear-gradient(145deg,#d5cdb9 0 48%,#8b9c8a 49% 68%,#65798d 69%)}.style-print{background:linear-gradient(145deg,#c8b98c 0 45%,#907b58 46% 63%,#68604d 64%)}.theme-sample{margin-top:9px;padding:9px 10px;border:1px solid var(--border);border-radius:7px;background:#151618;display:grid;gap:2px}.theme-sample span{color:var(--subtle);font-size:9px}.theme-sample strong{font-family:var(--map-font);color:var(--label-text);font-size:15px;font-weight:650}
.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.select-field{display:grid;gap:5px}.select-field>span{color:var(--muted);font-size:10px}.select-field select{width:100%;height:35px;border:1px solid var(--border);border-radius:6px;outline:0;background:#141517;color:var(--text);padding:0 9px;font-size:11.5px}.fixed-option{min-height:43px;margin-top:11px;display:grid;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:9px;padding:0 9px;border:1px solid var(--border);border-radius:7px;background:#1d1f22}.fixed-option>div{display:grid;gap:1px}.fixed-option strong{font-size:10.5px}.fixed-option small{color:var(--subtle);font-size:9.5px}.flag-chip{width:30px;height:20px;display:grid;place-items:center;border-radius:4px;background:linear-gradient(135deg,#31834b 0 33%,#f0d54c 34% 66%,#3159a2 67%);color:#fff;font-size:0}.toggle-list{display:grid;gap:6px;margin-top:7px}.toggle-control{min-height:43px;display:grid;grid-template-columns:minmax(0,1fr) 31px;align-items:center;gap:10px;padding:0 9px;border:1px solid var(--border);border-radius:7px;background:#1d1f22;cursor:pointer}.toggle-control>span{display:grid;gap:1px}.toggle-control strong{font-size:10.5px}.toggle-control small{color:var(--subtle);font-size:9.5px}.toggle-control input{position:absolute;opacity:0}.toggle-control>i{width:29px;height:16px;border-radius:99px;background:#3d4046;position:relative}.toggle-control>i:after{content:"";position:absolute;width:12px;height:12px;left:2px;top:2px;border-radius:50%;background:#d9dbdf;transition:transform .15s}.toggle-control input:checked+i{background:#777e8c}.toggle-control input:checked+i:after{transform:translateX(13px);background:#fff}.duration-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.duration-grid button{min-height:43px;border:1px solid var(--border);border-radius:6px;background:#17181a;color:var(--muted);display:grid;place-content:center;gap:1px;cursor:pointer}.duration-grid button strong{color:var(--text);font-size:11px}.duration-grid button small{font-size:9px}.duration-grid button.is-selected{border-color:#7e838d;background:#25272b}.toast{position:fixed;z-index:200;right:15px;bottom:15px;max-width:min(360px,calc(100vw - 30px));padding:10px 12px;border:1px solid var(--border-strong);border-radius:7px;background:#282a2f;color:var(--text);box-shadow:0 14px 38px rgba(0,0,0,.38);font-size:11.5px}.toast[data-type=error]{border-color:rgba(224,109,109,.58)}
@media(max-height:760px) and (min-width:861px){.panel-section{padding-top:12px;padding-bottom:12px}.panel-heading{margin-bottom:8px}.panel-copy{display:none}.selected-stop{min-height:39px}.style-card i{height:22px}.toggle-control,.fixed-option,.duration-grid button{min-height:38px}}
@media(max-width:1040px){:root{--inspector-w:310px}.project-meta span{display:none}}
@media(max-width:860px){body{overflow:auto}.application{height:auto;min-height:100dvh}.topbar{position:sticky;top:0;grid-template-columns:1fr auto}.brand{border-right:0}.project-meta,.service-status{display:none}.editor-shell{display:flex;flex-direction:column}.atlas-workspace{height:min(72dvh,680px);min-height:480px}.inspector{overflow:visible;border-left:0;border-top:1px solid var(--border)}}
@media(max-width:560px){.brand small{display:none}.atlas-instruction,.toolbar-button{display:none}.atlas-toolbar{justify-content:center}.map-search{top:9px;left:9px;width:calc(100% - 62px)}.zoom-controls{top:9px;right:9px}.style-grid{overflow-x:auto;grid-template-columns:repeat(5,minmax(54px,1fr))}.job-panel{grid-template-columns:1fr 34px}.job-panel .progress{grid-column:1/-1;grid-row:2}.result-actions{top:8px;right:8px}}

/* V5.1 stability and cartographic interaction fixes */
.application,.topbar,.inspector,.button,.panel-section,input,select,button{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.atlas-svg .route-label text,.atlas-svg .route-marker text,.theme-sample strong{font-family:var(--map-font)}
.geometry-shape,.selected-hit{outline:none}
.geometry-shape:focus,.selected-hit:focus{outline:none}
.selected-base,.selected-flag-image,.selected-outline{pointer-events:none}
.selected-flag-image{isolation:isolate}
.selected-outline{stroke-width:1.8;filter:none}
.atlas-svg.is-state-mode .geometry-shape{fill:rgba(255,255,255,.012);stroke:rgba(255,255,255,.52);stroke-width:1.15}
.atlas-svg.is-state-mode .geometry-shape:hover,.atlas-svg.is-state-mode .geometry-shape.is-hovered{fill:rgba(255,255,255,.12);stroke:rgba(255,255,255,.98);stroke-width:1.7}
.atlas-svg.is-state-mode .geometry-shape.is-selected{fill:rgba(255,255,255,.025);stroke:rgba(255,255,255,.70)}
.route-label.is-region-label .label-card,.route-label.is-region-label .label-shadow{display:none}
.route-label.is-region-label text{paint-order:stroke fill;stroke:rgba(0,0,0,.72);stroke-width:4px;stroke-linejoin:round;font-size:20px;font-weight:700}
.toggle-control.is-disabled{opacity:.48;cursor:not-allowed}
.toggle-control.is-disabled input{pointer-events:none}

/* V5.3 city interaction fixes */
.city-layer,.city-point{pointer-events:all}
.city-point{outline:none}
.city-point:focus{outline:none}
.route-marker,.route-label{pointer-events:none}
