:root{font-family:IBM Plex Sans,Segoe UI,sans-serif;color:#1f2937;background:#f3f6f8;--text-main: #1f2937;--text-muted: #334155;--text-strong: #111827;--border-soft: #c9d6df;--border-mid: #9fb7c8;--surface-main: #ffffff;--surface-muted: #eef4f8;--surface-panel: #f8fbfd;--surface-elevated: #f8fcffeb;--surface-app-gradient: radial-gradient(circle at top left, #ffffff 0%, #eaf1f5 55%, #d9e5ed 100%);--map-grid-a: rgba(156, 172, 185, .22);--map-grid-b: rgba(156, 172, 185, .12);--overlay: rgba(15, 23, 42, .45);--overlay-soft: rgba(15, 23, 42, .35);--button-accent: #1f5f85;--button-accent-text: #ffffff;--button-danger: #dc2626;--button-danger-border: #b91c1c;--button-neutral-border: #8da4b4;--button-neutral-bg: #eef4f8;--button-neutral-text: #1f2937;--button-ok: #0f766e;--node-fill: #ffffff;--node-stroke: #1f2937;--node-label-fill: #0f172a;--node-label-stroke: #f8fafc;--edge: #2563eb;--edge-selected: #ea580c;--edge-control-guide: rgba(15, 23, 42, .55);--edge-control-fill: #f8fafc;--edge-control-stroke: #c2410c;--badge-border: #b9c6d1;--badge-bg: rgba(248, 252, 255, .92);--dialog-bg: #ffffff;--dialog-border: #d1d5db;--dialog-shadow: 0 18px 45px rgba(2, 6, 23, .25);--close-hover-bg: #f3f4f6}@media(prefers-color-scheme:dark){:root{color:#e2e8f0;background:#0f172a;--text-main: #e2e8f0;--text-muted: #cbd5e1;--text-strong: #f8fafc;--border-soft: #334155;--border-mid: #475569;--surface-main: #1e293b;--surface-muted: #334155;--surface-panel: #1b2436;--surface-elevated: rgba(15, 23, 42, .82);--surface-app-gradient: radial-gradient(circle at top left, #1f2937 0%, #111827 55%, #0b1220 100%);--map-grid-a: rgba(148, 163, 184, .18);--map-grid-b: rgba(148, 163, 184, .08);--overlay: rgba(2, 6, 23, .64);--overlay-soft: rgba(2, 6, 23, .6);--button-accent: #38bdf8;--button-accent-text: #0f172a;--button-danger: #ef4444;--button-danger-border: #b91c1c;--button-neutral-border: #64748b;--button-neutral-bg: #334155;--button-neutral-text: #e2e8f0;--button-ok: #14b8a6;--node-fill: #e2e8f0;--node-stroke: #0f172a;--node-label-fill: #f8fafc;--node-label-stroke: #0f172a;--edge: #60a5fa;--edge-selected: #fb923c;--edge-control-guide: rgba(148, 163, 184, .75);--edge-control-fill: #cbd5e1;--edge-control-stroke: #f97316;--badge-border: #475569;--badge-bg: rgba(15, 23, 42, .9);--dialog-bg: #111827;--dialog-border: #334155;--dialog-shadow: 0 20px 50px rgba(2, 6, 23, .6);--close-hover-bg: #374151}}*{box-sizing:border-box}html,body,#root{margin:0;width:100%;height:100%}body{color:var(--text-main);background:var(--surface-main)}.appShell{position:relative;height:100%;display:grid;grid-template-rows:auto 1fr auto;background:var(--surface-app-gradient)}.projectBadge{padding:6px 10px;border-radius:8px;border:1px solid var(--badge-border);background:var(--badge-bg);color:var(--text-muted);font-size:12px;font-weight:600;letter-spacing:.02em;white-space:nowrap}.toolbar{display:grid;grid-template-columns:auto auto 1fr auto auto auto;gap:12px;align-items:center;padding:12px;border-bottom:1px solid var(--border-soft);background:var(--surface-elevated);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.fileInput{display:inline-flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border-mid);border-radius:8px;background:var(--surface-main)}.fileTypeLabel{font-weight:600}.hiddenFileInput{display:none}.fileButtonLabel{border:1px solid var(--button-neutral-border);border-radius:6px;padding:5px 10px;background:var(--button-neutral-bg);color:var(--button-neutral-text);cursor:pointer}.fileValue{min-width:72px;color:var(--text-muted)}.modeGroup{display:flex;flex-wrap:wrap;gap:8px}.modeButtonWithIndicator{display:inline-flex;align-items:center;gap:6px}.modeButton{border:1px solid var(--button-neutral-border);border-radius:999px;background:var(--button-neutral-bg);color:var(--button-neutral-text);padding:6px 12px;cursor:pointer}.modeButton.active{background:var(--button-accent);color:var(--button-accent-text);border-color:var(--button-accent)}.validationIndicator{width:12px;height:12px;border-radius:999px;background:var(--button-danger);box-shadow:0 0 0 1px #00000026;flex:0 0 auto}.validationTooltip{position:fixed;background:#0f172a;color:#fff;padding:6px 8px;border-radius:6px;font-size:12px;line-height:1.35;max-width:min(420px,calc(100vw - 16px));white-space:normal;word-break:break-word;pointer-events:none;z-index:2147483647}.validationTooltipList{margin:0;padding-left:16px}.validationTooltipList li+li{margin-top:4px}.clearButton{border:1px solid var(--button-danger-border);border-radius:8px;background:var(--button-danger);color:#fff;padding:8px 12px;cursor:pointer;font-weight:600}.mapEditor{position:relative;overflow:hidden;background:repeating-linear-gradient(45deg,var(--map-grid-a),var(--map-grid-a) 12px,var(--map-grid-b) 12px,var(--map-grid-b) 24px)}.mapImage,.mapOverlay{position:absolute}.mapImage{object-fit:cover;pointer-events:none}.mapOverlay{cursor:crosshair}.edge{stroke:var(--edge);stroke-linecap:round;opacity:.85;pointer-events:none}.edge.selected{stroke:var(--edge-selected);opacity:1}.edgeHitArea{stroke:#0000;stroke-linecap:round;stroke-linejoin:round;cursor:pointer;pointer-events:stroke}.edgeControlGuide{fill:none;stroke:var(--edge-control-guide);stroke-width:1.5;stroke-dasharray:4 4;pointer-events:none}.edgeControlPoint{fill:var(--edge-control-fill);stroke:var(--edge-control-stroke);stroke-width:3;cursor:grab}.edgeControlPoint:active{cursor:grabbing}.blockzoneArea{fill:#96484857}.node{fill:var(--node-fill);stroke:var(--node-stroke);stroke-width:3;cursor:pointer}.node.selected{stroke:var(--edge-selected)}.node.spawn{fill:#10b981}.node.exit{fill:#ef4444}.node.pending{stroke:#7c3aed;stroke-width:12}.nodeLabel{fill:var(--node-label-fill);font-size:36px;font-weight:600;paint-order:stroke;stroke:var(--node-label-stroke);stroke-width:4}.mapPlaceholder{height:100%;display:grid;place-items:center;font-size:20px;color:var(--text-muted)}.codePanel{border-top:1px solid var(--border-soft);padding:12px;display:flex;background:var(--surface-panel);width:100%;box-sizing:border-box}.codePanelBar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 16px;width:100%;min-width:0}.codePanelPrimary{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.codePanelUtility{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;margin-left:auto;position:relative}.displaySettingsAnchor{position:relative}.pathWidthField,.themeField{display:inline-flex;align-items:center;gap:8px}.pathWidthField input{width:110px;padding:6px 8px}.themeField input{width:180px;padding:6px 8px}.toggleField{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--text-main)}.copyButton{border:none;border-radius:6px;padding:8px 12px;background:var(--button-ok);color:#fff;cursor:pointer}.copyButton:disabled{opacity:.55;cursor:not-allowed}.copyState{min-width:72px;font-size:12px;color:var(--button-ok)}.scaleField,.colorField{display:flex;align-items:center;justify-content:space-between;gap:12px}.scaleField input{width:80px;padding:6px 8px}.colorField input{width:44px;height:32px;padding:2px;border:1px solid var(--border-mid);border-radius:6px;background:var(--surface-main);cursor:pointer}.pathWidthField input,.themeField input,.scaleField input{border:1px solid var(--border-mid);border-radius:6px;background:var(--surface-main);color:var(--text-main)}.displaySettingsToggle{display:inline-flex;align-items:center;gap:6px;border:none;padding:0;background:none;color:var(--text-muted);font:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:.12em}.displaySettingsToggle:hover,.displaySettingsToggle:focus-visible{color:var(--text-main)}.displaySettingsToggle:focus-visible{outline:2px solid var(--button-accent);outline-offset:4px;border-radius:4px}.displaySettingsToggleIndicator{font-size:11px}.displaySettingsMenu{position:absolute;right:0;bottom:calc(100% + 12px);width:min(280px,calc(100vw - 24px));display:flex;flex-direction:column;gap:10px;padding:12px;border:1px solid var(--border-soft);border-radius:10px;background:var(--surface-elevated);box-shadow:0 14px 35px #0206172e;z-index:30}.displaySettingsMenu .toggleField,.displaySettingsMenu .scaleField,.displaySettingsMenu .colorField{width:100%}.exportHintOverlay{position:fixed;inset:0;background:var(--overlay-soft);display:grid;place-items:center;z-index:60}.exportHintDialog{position:relative;width:min(360px,calc(100vw - 24px));background:var(--dialog-bg);border:1px solid var(--dialog-border);border-radius:10px;box-shadow:0 14px 35px #02061738;padding:16px}.exportHintDialog h3{margin:0 28px 8px 0;font-size:16px;color:var(--text-strong)}.exportHintDialog p{margin:0;color:var(--text-muted);font-size:14px;line-height:1.4}.exportErrorList{margin:0;padding-left:20px;color:var(--text-muted);font-size:14px;line-height:1.4}.exportErrorList li+li{margin-top:4px}.exportHintCloseButton{position:absolute;top:8px;right:8px;border:none;background:transparent;color:var(--text-muted);font-size:20px;line-height:1;padding:2px 6px;border-radius:6px;cursor:pointer}.exportHintCloseButton:hover{background:var(--close-hover-bg)}.exportHintActions{margin-top:12px;display:flex;justify-content:flex-end}.exportHintOkButton{border:1px solid var(--button-ok);background:var(--button-ok);color:#fff;border-radius:6px;padding:6px 12px;cursor:pointer}.confirmOverlay{position:fixed;inset:0;background:var(--overlay);display:grid;place-items:center;z-index:50}.confirmDialog{background:var(--dialog-bg);border-radius:12px;padding:18px;width:min(460px,calc(100vw - 24px));border:1px solid var(--dialog-border);box-shadow:var(--dialog-shadow)}.confirmDialog h2{margin:0;font-size:20px;font-weight:600;color:var(--text-strong)}.confirmActions{margin-top:16px;display:flex;justify-content:flex-end;gap:10px}.backButton{border:1px solid var(--button-neutral-border);border-radius:8px;background:var(--surface-main);color:var(--text-main);padding:8px 12px;cursor:pointer}.yesButton{border:1px solid #991b1b;border-radius:8px;background:var(--button-danger);color:#fff;padding:8px 12px;cursor:pointer;font-weight:600}@media(max-width:1100px){.toolbar{grid-template-columns:1fr}}
