:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-canvas:#1a1a1a;--bg-input:#17181b;--bg-panel:#212226;--bg-raised:#2a2c31;--bg-raised-hover:#33363c;--bg-hover:#ffffff0f;--bg-selected:#34c7591a;--fg-primary:#e6e7e9;--fg-secondary:#a8abb1;--fg-muted:#91949b;--disabled-opacity:.6;--fg-disabled:#6b6e74;--border:#33363c;--border-strong:#464a52;--accent:#34c759;--accent-hover:#2fb350;--on-accent:#0b2e14;--danger:#ff6b63;--danger-bg:#d13b40;--danger-bg-hover:#bf3439;--focus-ring:#34c759;--shadow-popover:0 8px 24px #00000073;--shadow-dialog:0 16px 48px #0000008c;--header-h:48px;--footer-h:32px;--left-sidebar-w:280px;--right-sidebar-w:240px;--rail-w:40px;--right-rail-w:36px;--control-h:28px;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--font-ui:-apple-system, BlinkMacSystemFont, "Segoe UI", "Hiragino Sans", "Yu Gothic UI", Meiryo, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}html{font-family:var(--font-ui);background:var(--bg-panel);color:var(--fg-primary);font-size:13px;line-height:1.5}body{-webkit-font-smoothing:antialiased;word-break:auto-phrase;overflow-wrap:break-word;overflow:hidden}p{text-wrap:pretty}button,input,select{font:inherit;color:inherit}.icon{flex-shrink:0}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}.btn{height:var(--control-h);border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--bg-raised);color:var(--fg-primary);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:12px;line-height:1;display:inline-flex}.btn:hover:not(:disabled){background:var(--bg-raised-hover)}.btn:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}.btn.is-primary{border-color:var(--accent);background:var(--accent);color:var(--on-accent);font-weight:600}.btn.is-primary:hover:not(:disabled){border-color:var(--accent-hover);background:var(--accent-hover)}.btn.is-accent{border-color:var(--accent);color:var(--accent)}.btn.is-accent:hover:not(:disabled){background:var(--accent);color:var(--on-accent)}.btn.is-danger{border-color:var(--danger-bg);background:var(--danger-bg);color:#fff;font-weight:600}.btn.is-danger:hover:not(:disabled){border-color:var(--danger-bg-hover);background:var(--danger-bg-hover)}.btn:not(.is-ghost):disabled{border-color:var(--border);background:var(--bg-raised);color:var(--fg-disabled)}.btn.is-ghost{color:var(--fg-secondary);background:0 0;border-color:#0000}.btn.is-ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--fg-primary)}.btn.is-ghost.is-danger-text:hover:not(:disabled){color:var(--danger)}.btn.is-ghost:disabled{color:var(--fg-disabled)}.btn[aria-pressed=true],.btn.is-ghost[aria-expanded=true]{border-color:var(--accent);background:var(--bg-selected);color:var(--fg-primary)}.btn.is-icon{width:var(--control-h);padding:0}.btn.is-small{height:24px;padding:0 8px;font-size:12px}.btn.is-small.is-icon{width:24px;padding:0}.btn.is-block{width:100%}.field{height:var(--control-h);border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--bg-input);color:var(--fg-primary);padding:0 8px;font-size:13px}.field:focus{border-color:var(--accent);outline:none}.field:focus-visible{outline:none}.field:disabled{opacity:var(--disabled-opacity);cursor:default}select.field{cursor:pointer;padding-right:4px}.segmented{height:var(--control-h);border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--bg-input);padding:2px;display:inline-flex}.segmented label{display:flex;position:relative}.segmented input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.segmented span{border-radius:var(--radius-sm);color:var(--fg-secondary);white-space:nowrap;pointer-events:none;align-items:center;padding:0 10px;font-size:12px;display:flex}.segmented label:hover span{color:var(--fg-primary)}.segmented input:checked+span{background:var(--bg-raised-hover);color:var(--fg-primary);box-shadow:0 1px 2px #0000004d}.segmented input:focus-visible+span{outline:2px solid var(--focus-ring);outline-offset:-2px}.segmented input:disabled,.segmented input:disabled+span{cursor:default}.segmented.is-disabled{opacity:var(--disabled-opacity)}.segmented.is-block{display:flex}.segmented.is-block label{flex:1}.segmented.is-block span{flex:1;justify-content:center}.segmented span.has-note{padding:0 4px}.segmented-note{color:var(--fg-secondary);font-size:11px}.check{min-height:24px;color:var(--fg-primary);cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.check input{width:14px;height:14px;accent-color:var(--accent);cursor:pointer;margin:0}.check input:disabled,.check input:disabled~span{opacity:var(--disabled-opacity);cursor:default}kbd,.kbd{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-raised);min-width:18px;height:18px;color:var(--fg-secondary);font-family:var(--font-ui);white-space:nowrap;border-bottom-width:2px;align-items:center;padding:0 5px;font-size:11px;line-height:1;display:inline-flex}.btn.is-primary .kbd{color:var(--on-accent);background:#0b2e141f;border-color:#0b2e1459}.app-root{flex-direction:column;height:100%;display:flex}.app-main{flex:1;min-height:0;display:flex}.map-stage-container{background:var(--bg-canvas);-webkit-user-select:none;user-select:none;flex:1;min-width:0;position:relative;overflow:hidden}.app-header{height:var(--header-h);border-bottom:1px solid var(--border);background:var(--bg-panel);flex-shrink:0;align-items:center;gap:16px;padding:0 12px 0 14px;display:flex}.app-brand{flex-shrink:0;align-items:center;gap:8px;display:flex}.app-title{letter-spacing:.01em;white-space:nowrap;margin:0;font-size:14px;font-weight:600}.header-map-controls{align-items:center;gap:8px;min-width:0;display:flex}.header-stage-select{min-width:0;max-width:220px}.header-spacer{flex:1 1 0}.header-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.header-group{align-items:center;gap:2px;display:flex}.header-divider,.footer-divider{background:var(--border);flex-shrink:0;width:1px;height:20px}.app-sidebar{background:var(--bg-panel);flex-direction:column;flex-shrink:0;display:flex;overflow-y:auto}.app-sidebar.is-left{width:var(--left-sidebar-w);border-right:1px solid var(--border)}.app-sidebar.is-right{width:var(--right-sidebar-w);border-left:1px solid var(--border);position:relative}.app-sidebar.is-collapsed{width:var(--rail-w);align-items:center;gap:6px;padding-top:8px;overflow:hidden}.app-sidebar.is-right.is-collapsed{width:var(--right-rail-w)}.sidebar-fold-button{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-raised);width:26px;height:26px;color:var(--fg-secondary);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.sidebar-fold-button:hover{border-color:var(--border-strong);color:var(--fg-primary)}.sidebar-fold-button.is-corner{position:absolute;top:8px;right:8px}.sidebar-toolbar{align-items:center;gap:6px;padding:10px 10px 10px 12px;display:flex}.sidebar-new-path{flex:1;height:32px;font-size:13px}.sidebar-new-path .kbd{margin-left:2px}.app-footer{height:var(--footer-h);border-top:1px solid var(--border);background:var(--bg-panel);flex-shrink:0;align-items:center;gap:10px;padding:0 8px;font-size:12px;display:flex}.footer-group{flex-shrink:0;align-items:center;gap:2px;display:flex}.footer-group.is-actions{gap:6px}.footer-status{white-space:nowrap;align-items:baseline;gap:8px;min-width:0;display:flex;overflow:hidden}.footer-mode{color:var(--accent);flex-shrink:0;font-weight:600}.footer-name{min-width:0;color:var(--fg-primary);text-overflow:ellipsis;overflow:hidden}.footer-detail{color:var(--fg-secondary);font-variant-numeric:tabular-nums;flex-shrink:0}.footer-hint{min-width:0;max-width:max-content;color:var(--fg-muted);text-overflow:ellipsis;white-space:nowrap;flex:1000 0 0;overflow:hidden}.footer-spacer{flex:1}.footer-zoom{min-width:40px;color:var(--fg-secondary);font-variant-numeric:tabular-nums;text-align:right}.section-header{justify-content:space-between;align-items:center;gap:8px;min-height:24px;margin-bottom:6px;display:flex}.section-title{color:var(--fg-secondary);align-items:center;gap:6px;margin:0;font-size:12px;font-weight:600;display:flex}.section-count{background:var(--bg-raised);min-width:18px;color:var(--fg-secondary);text-align:center;font-variant-numeric:tabular-nums;border-radius:9px;padding:0 5px;font-size:11px;font-weight:500;line-height:18px}.badge{background:var(--bg-selected);color:var(--accent);white-space:nowrap;border-radius:9px;flex-shrink:0;padding:0 6px;font-size:11px;font-weight:600;line-height:18px}.path-list-section{border-top:1px solid var(--border);flex-direction:column;flex:1;min-height:0;display:flex}.path-list-section>.section-header{margin:0;padding:8px 8px 6px 12px}.path-list{flex:1;margin:0;padding:0 0 8px;list-style:none;overflow-y:auto}.path-item{border-radius:var(--radius-md);margin:0 6px 2px}.path-item.is-active{background:var(--bg-raised);box-shadow:inset 0 0 0 1px var(--border-strong)}.path-item-row{border-radius:var(--radius-md);cursor:pointer;align-items:center;gap:8px;min-height:34px;padding:0 4px 0 8px;display:flex}.path-item:not(.is-active) .path-item-row:hover{background:var(--bg-hover)}.path-swatch{cursor:pointer;border:1px solid #ffffff40;border-radius:4px;flex-shrink:0;width:14px;height:14px;padding:0}.path-swatch:hover,.path-swatch[aria-expanded=true]{border-color:var(--fg-primary)}.path-name{min-width:0;color:var(--fg-primary);text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:none;flex:1;padding:0;overflow:hidden}.path-name-input{flex:1;min-width:0;height:24px;padding:0 6px}.path-distance{color:var(--fg-secondary);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:12px}.path-delete{border-radius:var(--radius-sm);width:22px;height:22px;color:var(--fg-muted);cursor:pointer;background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:12px;line-height:1;display:inline-flex}.path-delete:hover{color:var(--danger);background:#ff6b6326;border-color:#ff6b6366}.empty-state{color:var(--fg-secondary);padding:4px 12px 12px;font-size:12px}.empty-state-title{color:var(--fg-primary);margin:0 0 6px;font-size:13px}.empty-state-steps{margin:0 0 10px;padding-left:1.5em;line-height:1.8}.empty-state-note{color:var(--fg-muted);margin:0;font-size:11px;line-height:1.6}.path-details{border-top:1px solid var(--border);flex-direction:column;gap:8px;padding:8px 10px 10px;display:flex}.path-details-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.number-field{align-items:center;gap:6px;margin:0;display:flex}.number-field .field{font-variant-numeric:tabular-nums;width:64px;height:24px;padding:0 4px 0 6px;font-size:12px}.number-field-unit{color:var(--fg-secondary);font-size:12px}.chip-group{flex-direction:column;gap:4px;display:flex}.chip-row{flex-wrap:wrap;gap:4px;display:flex}.chip{border:1px solid var(--border-strong);height:22px;color:var(--fg-secondary);cursor:pointer;background:0 0;border-radius:11px;align-items:center;gap:5px;padding:0 8px;font-size:11px;display:inline-flex}.chip:hover{background:var(--bg-hover);color:var(--fg-primary)}.chip[aria-pressed=true]{border-color:var(--accent);background:var(--bg-selected);color:var(--fg-primary)}.chip-value{color:var(--fg-muted);font-variant-numeric:tabular-nums}.chip[aria-pressed=true] .chip-value{color:var(--accent)}.panel-section{border-bottom:1px solid var(--border);padding:8px 12px 10px}.panel-section:first-child{padding-top:8px}.panel-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.panel-note{color:var(--fg-muted);margin:6px 0 0;font-size:11px;line-height:1.5}.panel-divider{background:var(--border);height:1px;margin:6px 0}.check.is-compact{min-height:0;font-size:12px}.layer-list{margin:0;padding:0;list-style:none}.layer-list .check,.panel-section>.check{min-height:22px}.layer-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px;box-shadow:0 0 0 1px #0006}.panel-field{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;margin-top:8px;display:grid}.panel-field-label{color:var(--fg-secondary);font-size:12px}.panel-field .field{width:100%;height:26px;font-size:12px}.popover{z-index:200;border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--bg-raised);box-shadow:var(--shadow-popover);padding:12px;position:fixed}.popover-title{margin:0;font-size:13px;font-weight:600}.popover-lead{color:var(--fg-secondary);margin:2px 0 10px;font-size:12px}.popover-note{color:var(--fg-muted);margin:8px 0 0;font-size:11px;line-height:1.6}.popover-note+.popover-note{margin-top:4px}.export-settings{width:300px}.export-settings .segmented{background:var(--bg-panel)}.export-settings-row{margin-bottom:10px}.export-settings-label{color:var(--fg-secondary);margin-bottom:4px;font-size:12px;display:block}.export-settings-transparent{margin-top:2px}.color-popover{z-index:200;border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--bg-raised);box-shadow:var(--shadow-popover);grid-template-columns:repeat(5,22px);gap:6px;padding:8px;display:grid;position:fixed}.color-popover-swatch,.context-menu-color-swatch{cursor:pointer;border:1px solid #ffffff26;border-radius:5px;width:22px;height:22px;padding:0}.color-popover-swatch:hover,.context-menu-color-swatch:hover{border-color:var(--fg-primary)}.color-popover-swatch[aria-current=true],.context-menu-color-swatch[aria-current=true]{outline:2px solid var(--fg-primary);outline-offset:1px}.context-menu{z-index:200;border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--bg-raised);min-width:168px;box-shadow:var(--shadow-popover);flex-direction:column;padding:4px;display:flex;position:fixed}.context-menu-color-row{border-bottom:1px solid var(--border);grid-template-columns:repeat(5,22px);gap:6px;margin-bottom:4px;padding:6px 6px 8px;display:grid}.context-menu-separator{background:var(--border);height:1px;margin:4px 0}.context-menu-check{width:16px;color:var(--accent);flex-shrink:0;justify-content:center;align-items:center;margin-left:-2px;margin-right:8px;display:inline-flex}.context-menu-item{border-radius:var(--radius-sm);height:28px;color:var(--fg-primary);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;padding:0 10px;font-size:13px;display:flex}.context-menu-item:hover,.context-menu-item:focus-visible{background:var(--bg-raised-hover);outline:none}.context-menu-item.is-destructive{color:var(--danger)}.context-menu-item.is-destructive:hover,.context-menu-item.is-destructive:focus-visible{background:#d13b401f}.dialog-backdrop{z-index:300;background:#0000008c;justify-content:center;align-items:center;padding:24px;animation:.12s ease-out fade-in;display:flex;position:fixed;inset:0}.dialog-backdrop.is-confirm{z-index:310}.dialog{border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--bg-raised);max-height:calc(100vh - 48px);box-shadow:var(--shadow-dialog);flex-direction:column;animation:.14s ease-out dialog-in;display:flex}.dialog-header{justify-content:space-between;align-items:center;padding:12px 12px 8px 20px;display:flex}.dialog-title{margin:0;font-size:15px;font-weight:600}.dialog-body{padding:0 20px 20px;overflow-y:auto}.dialog-actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.dialog-actions .btn{height:30px;padding:0 14px;font-size:13px}.confirm-dialog{width:min(420px,100%);padding:20px}.confirm-dialog .dialog-title{margin-bottom:8px}.confirm-dialog-message{color:var(--fg-primary);line-height:1.6}.confirm-dialog-message p{margin:0}.confirm-dialog-message p+p,.confirm-dialog-message p+.field,.confirm-dialog-message .field+p{margin-top:8px}.confirm-dialog-note{color:var(--fg-secondary);font-size:12px}.confirm-dialog-error{color:var(--danger);font-size:12px}.share-link-field{width:100%;font-family:var(--font-mono);font-size:12px}.help-dialog{width:min(600px,100%)}.help-heading{color:var(--fg-secondary);margin:18px 0 6px;font-size:12px;font-weight:600}.help-heading:first-child{margin-top:4px}.help-basics{margin:0;padding-left:1.5em;line-height:1.7}.help-table{border-collapse:collapse;width:100%}.help-table tr+tr{border-top:1px solid var(--border)}.help-table th,.help-table td{vertical-align:top;text-align:left;padding:6px 0}.help-table th{width:40%;color:var(--fg-primary);padding-right:16px;font-weight:400}.help-table.is-keys th{white-space:nowrap;width:1%}.help-table td{color:var(--fg-secondary)}.keys,.keys>span{align-items:center;gap:4px;display:inline-flex}.keys-plus{color:var(--fg-muted);font-size:11px}.help-note{color:var(--fg-muted);margin:10px 0 0;font-size:12px}.toast-region{bottom:calc(var(--footer-h) + 16px);z-index:500;pointer-events:none;justify-content:center;display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast{border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--bg-raised);max-width:min(560px,100vw - 32px);box-shadow:var(--shadow-popover);color:var(--fg-primary);cursor:pointer;pointer-events:auto;align-items:flex-start;gap:8px;padding:9px 14px;line-height:1.5;animation:.16s ease-out toast-in;display:flex}.toast .icon{margin-top:2px}.toast.is-success .icon{color:var(--accent)}.toast.is-error{border-color:#ff6b6380}.toast.is-error .icon{color:var(--danger)}.toast.is-passive{cursor:default;pointer-events:none}.hover-badge{z-index:400;pointer-events:none;-webkit-user-select:none;user-select:none;width:14px;height:14px;position:fixed}.hover-badge-halo{stroke:#000;stroke-width:4px}.hover-badge-core{stroke-width:2px}.hover-badge.is-insert .hover-badge-core{stroke:var(--accent)}.hover-badge.is-remove .hover-badge-core{stroke:#ff453a}.mobile-notice{z-index:600;background:var(--bg-canvas);justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.mobile-notice-card{border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--bg-raised);width:min(360px,100%);padding:20px}.mobile-notice-title{margin:0 0 8px;font-size:16px}.mobile-notice-text{color:var(--fg-secondary);margin:0 0 12px;font-size:14px;line-height:1.6}.mobile-notice-url{width:100%;margin-bottom:12px;font-size:12px}.mobile-notice-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}@keyframes fade-in{0%{opacity:0}}@keyframes dialog-in{0%{opacity:0;transform:translateY(4px)scale(.98)}}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}}@media (prefers-reduced-motion:reduce){.dialog-backdrop,.dialog,.toast{animation:none}}
