:root{color-scheme:dark;--bg-app: #1c1c1c;--bg-panel: #2a2a2a;--bg-panel-elev: #343434;--bg-canvas: #1a1a1a;--fg-primary: #f5f5f7;--fg-secondary: #a1a1a1;--fg-muted: #6c6c6c;--border: #3a3a3a;--border-strong: #545454;--accent: #34c759;--accent-pressed: #28a447;--danger: #ff453a;--info: #00d4ff;--line-default: #ffd60a;--snap-highlight: #00d4ff;--active-path-glow: rgba(255, 214, 10, .4);--header-h: 48px;--footer-h: 36px;--left-sidebar-w: 280px;--right-sidebar-w: 240px;--radius-sm: 4px;--radius-md: 6px;--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);font-size:14px;line-height:1.4;background:var(--bg-app);color:var(--fg-primary)}body{overflow:hidden;-webkit-font-smoothing:antialiased}button,select{font:inherit;color:inherit}.app-root{display:flex;flex-direction:column;height:100%}.app-header{height:var(--header-h);display:flex;align-items:center;gap:16px;padding:0 16px;background:var(--bg-panel);border-bottom:1px solid var(--border)}.app-title{margin:0;font-size:16px;font-weight:600}.header-select-control{background:var(--bg-panel-elev);color:var(--fg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 8px;font:inherit}.header-select-control:focus{outline:2px solid var(--accent);outline-offset:1px}.header-spacer{flex:1 1 auto}.header-export-group{display:flex;align-items:center;gap:8px}.header-png-group{display:flex;align-items:center;gap:6px;margin-right:16px}.header-png-toggle{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--fg-secondary);cursor:pointer;user-select:none}.header-png-toggle input{margin:0;accent-color:var(--accent);cursor:pointer}.header-action-button{background:var(--bg-panel-elev);color:var(--fg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 10px;font:inherit;font-size:12px;cursor:pointer;white-space:nowrap}.header-action-button:hover{border-color:var(--border-strong)}.header-action-button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.app-main{flex:1;display:flex;min-height:0}.app-sidebar{width:var(--left-sidebar-w);flex-shrink:0;background:var(--bg-panel);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto}.app-sidebar-right{width:var(--right-sidebar-w);border-right:none;border-left:1px solid var(--border)}.sidebar-heading{margin:0 0 8px;font-size:12px;font-weight:600;letter-spacing:.04em;color:var(--fg-secondary);text-transform:uppercase}.settings-radio-group{display:flex;flex-direction:column;gap:6px}.settings-radio{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--fg-primary);cursor:pointer}.settings-radio input{accent-color:var(--accent);cursor:pointer}.settings-checkbox{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--fg-primary);cursor:pointer;margin-bottom:8px}.settings-checkbox input{accent-color:var(--accent);cursor:pointer}.settings-secondary-button{margin-top:10px;width:100%;padding:6px 10px;background:var(--bg-panel-elev);color:var(--fg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:12px;cursor:pointer}.settings-secondary-button:hover:not(:disabled){border-color:var(--border-strong)}.settings-secondary-button:disabled{color:var(--fg-muted);cursor:not-allowed;opacity:.6}.settings-notice{margin:8px 0 0;padding:6px 8px;font-size:11px;line-height:1.4;color:var(--fg-secondary);background:#ffd60a14;border-left:2px solid #ffd60a;border-radius:var(--radius-sm)}.layer-list{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}.layer-list-item{margin:0}.layer-checkbox{margin-bottom:0}.layer-color-swatch{display:inline-block;width:10px;height:10px;border-radius:2px;border:1px solid rgba(255,255,255,.2);flex-shrink:0}.layer-options{margin-top:10px;padding-top:8px;border-top:1px solid var(--border)}.layer-options .settings-checkbox{margin-bottom:0;font-size:12px}.bagman-spawner-section{display:flex;flex-direction:column;gap:4px;margin-top:10px;padding-top:8px;border-top:1px solid var(--border)}.bagman-spawner-label{font-size:11px;font-weight:500;color:var(--fg-secondary)}.bagman-spawner-select{background:var(--bg-panel-elev);color:var(--fg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 6px;font-size:12px}.bagman-spawner-select:disabled{color:var(--fg-muted);cursor:not-allowed}.bagman-marker-count{font-size:11px;color:var(--fg-muted)}.bagman-marker-count-row{display:flex;align-items:center;justify-content:space-between;margin-top:6px}.path-item-details{display:flex;flex-direction:column;gap:8px;padding:8px 12px 12px;border-top:1px solid var(--border);font-size:12px}.path-item-details-heading{margin:0;font-size:11px;font-weight:600;letter-spacing:.04em;color:var(--fg-secondary);text-transform:uppercase}.buffer-input-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.buffer-input{width:5em;padding:4px 6px;background:var(--bg-panel-elev);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--fg-primary);font:inherit}.buffer-unit{font-size:11px;color:var(--fg-muted)}.buffer-action-button{margin-top:0;width:auto;padding:4px 10px;font-size:11px}.buffer-presets{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.buffer-preset-button{background:transparent;border:1px dashed var(--border-strong);color:var(--accent);font-size:11px;padding:3px 8px;border-radius:var(--radius-sm);cursor:pointer;text-align:left}.buffer-preset-button:hover{background:#34c75914}.buffer-preset-button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.buffer-status{margin:0;font-size:11px;color:var(--fg-muted)}.sidebar-section{padding:12px;border-bottom:1px solid var(--border)}.sidebar-empty{color:var(--fg-muted);font-size:13px}.sidebar-primary-button{width:100%;padding:8px 12px;background:var(--accent);color:#0a3d18;border:none;border-radius:var(--radius-md);font-weight:600;cursor:pointer}.sidebar-primary-button:hover:not(:disabled){background:var(--accent-pressed)}.sidebar-primary-button:disabled{background:var(--bg-panel-elev);color:var(--fg-muted);cursor:not-allowed}.sidebar-section-list{flex:1;min-height:0;padding:8px 0;overflow-y:auto}.path-list-section{display:flex;flex-direction:column;min-height:0}.path-list-header{display:flex;align-items:center;justify-content:space-between;padding:0 12px 4px}.path-list-heading{margin:0;font-size:12px;font-weight:600;letter-spacing:.04em;color:var(--fg-secondary);text-transform:uppercase}.path-list-clear-link{background:transparent;border:none;color:var(--fg-muted);font-size:11px;cursor:pointer;padding:2px 4px;border-radius:var(--radius-sm)}.path-list-clear-link:hover{color:var(--danger)}.path-list-clear-link:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.path-list{list-style:none;margin:0;padding:0}.path-list-empty{padding:12px;color:var(--fg-muted);font-size:13px}.path-list-item{display:flex;flex-direction:column;border-bottom:1px solid var(--border)}.path-list-item.is-active{background:var(--bg-panel-elev);outline:2px solid var(--info);outline-offset:-2px}.path-list-item-row{display:grid;grid-template-columns:16px 1fr auto auto;align-items:center;gap:8px;padding:8px 12px;cursor:pointer}.path-list-item-row:hover{background:var(--bg-panel-elev)}.path-color-swatch{width:14px;height:14px;padding:0;border-radius:3px;border:1px solid rgba(255,255,255,.2);cursor:pointer}.path-color-swatch:hover{border-color:var(--fg-primary)}.path-color-swatch:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.color-popover{position:fixed;z-index:100;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:8px;display:grid;grid-template-columns:repeat(5,24px);gap:6px;box-shadow:0 4px 12px #00000080}.color-popover-swatch{width:24px;height:24px;padding:0;border-radius:4px;border:1px solid rgba(255,255,255,.15);cursor:pointer}.color-popover-swatch:hover{border-color:var(--fg-primary)}.color-popover-swatch[aria-current=true]{outline:2px solid var(--accent);outline-offset:1px}.context-menu{position:fixed;z-index:200;min-width:140px;padding:4px 0;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius-md);box-shadow:0 4px 12px #00000080;display:flex;flex-direction:column}.context-menu-color-row{display:grid;grid-template-columns:repeat(5,22px);gap:5px;padding:6px 8px 8px;margin-bottom:4px;border-bottom:1px solid var(--border)}.context-menu-color-swatch{width:22px;height:22px;padding:0;border-radius:4px;border:1px solid rgba(255,255,255,.15);cursor:pointer}.context-menu-color-swatch:hover{border-color:var(--fg-primary)}.context-menu-color-swatch[aria-current=true]{outline:2px solid var(--accent);outline-offset:1px}.context-menu-item{appearance:none;background:transparent;border:none;color:var(--fg-primary);text-align:left;padding:6px 12px;font-size:13px;cursor:pointer}.context-menu-item:hover{background:var(--bg-panel-elev)}.context-menu-item.is-destructive{color:var(--danger)}.context-menu-item.is-destructive:hover{background:#ff453a26}.path-name{font-size:13px;color:var(--fg-primary);display:inline-flex;align-items:center;gap:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.path-drawing-badge{font-size:11px;color:var(--accent)}.path-distance{font-size:12px;color:var(--fg-secondary);font-variant-numeric:tabular-nums}.path-delete-button{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--fg-muted);cursor:pointer;font-size:12px;line-height:1}.path-delete-button:hover{background:#ff453a26;border-color:#ff453a66;color:var(--danger)}.map-stage-container{flex:1;min-width:0;background:var(--bg-canvas);position:relative;overflow:hidden}.map-stage-container :global(.konvajs-content){user-select:none}.scale-overlay{position:absolute;inset:0;pointer-events:none}.scale-overlay text{font-family:var(--font-ui);font-variant-numeric:tabular-nums;font-weight:500}.scale-center-handle{pointer-events:auto;cursor:move;touch-action:none}.scale-center-handle.is-dragging{cursor:grabbing}.hover-badge{position:fixed;z-index:400;pointer-events:none;width:14px;height:14px;user-select:none}.hover-badge-halo{stroke:#000;stroke-width:4}.hover-badge-core{stroke-width:2}.hover-badge.is-insert .hover-badge-core{stroke:#34c759}.hover-badge.is-remove .hover-badge-core{stroke:#ff453a}.shortcut-modal-backdrop{position:fixed;inset:0;z-index:300;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:24px}.shortcut-modal{width:min(520px,100%);max-height:calc(100vh - 48px);overflow-y:auto;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius-md);box-shadow:0 12px 40px #0009;padding:16px 20px 20px}.shortcut-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.shortcut-modal-title{margin:0;font-size:15px;font-weight:600;color:var(--fg-primary)}.shortcut-modal-close{width:28px;height:28px;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--fg-secondary);font-size:18px;line-height:1;cursor:pointer}.shortcut-modal-close:hover{background:var(--bg-panel-elev);border-color:var(--border);color:var(--fg-primary)}.shortcut-modal-close:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.shortcut-modal-table{width:100%;border-collapse:collapse}.shortcut-modal-table tr+tr{border-top:1px solid var(--border)}.shortcut-modal-keys{width:45%;padding:8px 0;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;color:var(--fg-primary);white-space:nowrap}.shortcut-modal-label{padding:8px 0;font-size:13px;color:var(--fg-secondary)}.confirm-modal-backdrop{position:fixed;inset:0;z-index:310;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:24px}.confirm-modal{width:min(380px,100%);background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius-md);box-shadow:0 12px 40px #0009;padding:20px}.confirm-modal-title{margin:0 0 12px;font-size:14px;font-weight:600;color:var(--fg-primary)}.confirm-modal-message{margin-bottom:16px;font-size:13px;color:var(--fg-primary);line-height:1.6}.confirm-modal-actions{display:flex;justify-content:flex-end;gap:8px}.confirm-modal-button{background:var(--bg-panel-elev);color:var(--fg-primary);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:6px 14px;font-size:13px;cursor:pointer}.confirm-modal-button:hover{border-color:var(--fg-secondary)}.confirm-modal-button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.confirm-modal-button.is-destructive{background:var(--danger);border-color:var(--danger);color:#fff}.confirm-modal-button.is-destructive:hover{filter:brightness(1.1);border-color:var(--danger)}.confirm-modal-button.is-primary{background:var(--accent);border-color:var(--accent);color:#0a3d18}.confirm-modal-button.is-primary:hover{filter:brightness(1.1);border-color:var(--accent)}.app-footer{height:var(--footer-h);display:flex;align-items:center;gap:12px;padding:0 12px;background:var(--bg-panel);border-top:1px solid var(--border);font-size:12px}.footer-button{background:var(--bg-panel-elev);color:var(--fg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 10px;cursor:pointer}.footer-button:hover:not(:disabled){border-color:var(--border-strong)}.footer-button:disabled{color:var(--fg-muted);cursor:not-allowed;opacity:.6}.footer-action-confirm{border-color:var(--accent);color:var(--accent)}.footer-action-confirm:hover:not(:disabled){background:var(--accent);border-color:var(--accent);color:#0a3d18}.footer-action-discard{border-color:var(--danger);color:var(--danger)}.footer-action-discard:hover:not(:disabled){background:var(--danger);border-color:var(--danger);color:#fff}.footer-status{color:var(--fg-secondary)}.footer-spacer{flex:1}.footer-zoom{color:var(--fg-secondary);font-variant-numeric:tabular-nums;min-width:48px;text-align:right}
