:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color:#1f2937;background-color:#f5f7fb;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#3da9fc;text-decoration:inherit}a:hover{color:#2f90e6}html,body,#root{height:100%;width:100%}body{margin:0;min-width:320px;min-height:100vh}button:focus,button:focus-visible{outline:3px solid rgba(61,169,252,.35);outline-offset:2px}:root{--topbar-h: 56px;--leftbar-w: 56px;--rightbar-w: 360px;--color-primary: #3da9fc;--color-primary-hover: #2f90e6;--border: #e6e8eb;--bg: #ffffff;--bg-soft: #f5f7fb;--text: #1f2937;--text-heading: #223;--text-muted: #445;--text-soft: #667085;--surface: #ffffff;--surface-elevated: #ffffff;--surface-soft: #f8fafc;--surface-tint: #eaf5ff;--surface-tint-soft: #eef7ff;--field-bg: #ffffff;--field-readonly-bg: #f8fafc;--disabled-bg: #f5f7fb;--disabled-text: #7b8694;--danger: #b42318;--danger-bg: #fff1f2;--danger-soft-bg: #fff6f7;--danger-border: #f2c7cd;--danger-border-strong: #e8929d;--warning: #9a6700;--warning-bg: #fff6df;--warning-border: #f3d8a7;--success: #17603a;--success-bg: #eaf8ef;--success-border: #b8e3c5;--overlay: rgba(15, 23, 42, .24);--shadow-soft: 0 1px 2px rgba(0,0,0,.06);--shadow-dialog: 0 22px 60px rgba(15, 23, 42, .22);--focus-ring: rgba(61, 169, 252, .25);--dfa-node-bg: #ffffff;--dfa-node-text: #111827;--dfa-node-stroke: #111827;--dfa-accept: #2f9e44;--graph-edge: #111827;--edge-label-bg: rgba(255, 255, 255, .9);--edge-label-text: #111827;--edge-label-shadow: 0 0 2px rgba(0,0,0,.1);--badge-bg: #eef7ff;--badge-text: #155e95;--badge-border: #cfe9ff;--badge-success-bg: #eaf8ef;--badge-success-text: #17603a;--badge-success-border: #b8e3c5;--badge-minimal-bg: #ecfbf7;--badge-minimal-text: #0f766e;--badge-minimal-border: #9fded4;--canvas-control-bg: #ffffff;--canvas-control-hover-bg: #f8fafc;--canvas-control-text: #334155}:root[data-theme=dark]{color-scheme:dark;--color-primary: #60a5fa;--color-primary-hover: #93c5fd;--border: #334155;--bg: #0f172a;--bg-soft: #111827;--text: #e5e7eb;--text-heading: #f8fafc;--text-muted: #cbd5e1;--text-soft: #94a3b8;--surface: #1e293b;--surface-elevated: #263449;--surface-soft: #111827;--surface-tint: #172033;--surface-tint-soft: #172a3f;--field-bg: #0f172a;--field-readonly-bg: #172033;--disabled-bg: #1e293b;--disabled-text: #94a3b8;--danger: #fca5a5;--danger-bg: #451a1a;--danger-soft-bg: #3f1d22;--danger-border: #7f1d1d;--danger-border-strong: #ef4444;--warning: #fbbf24;--warning-bg: #2f220b;--warning-border: #7c5b18;--success: #86efac;--success-bg: #123524;--success-border: #166534;--overlay: rgba(2, 6, 23, .68);--shadow-soft: 0 1px 2px rgba(0,0,0,.35);--shadow-dialog: 0 22px 60px rgba(0, 0, 0, .48);--focus-ring: rgba(96, 165, 250, .3);--dfa-node-bg: #172033;--dfa-node-text: #e5e7eb;--dfa-node-stroke: #94a3b8;--dfa-accept: #f59e0b;--graph-edge: #cbd5e1;--edge-label-bg: rgba(15, 23, 42, .92);--edge-label-text: #e5e7eb;--edge-label-shadow: 0 0 2px rgba(255,255,255,.14);--badge-bg: #111827;--badge-text: #dbeafe;--badge-border: #475569;--badge-success-bg: #12261f;--badge-success-text: #86efac;--badge-success-border: #2f6f53;--badge-minimal-bg: #102a33;--badge-minimal-text: #67e8f9;--badge-minimal-border: #155e75;--canvas-control-bg: #111827;--canvas-control-hover-bg: #1f2937;--canvas-control-text: #cbd5e1}:root[data-theme=colourBlind]{color-scheme:light;--color-primary: #0072b2;--color-primary-hover: #005a8c;--border: #b7c7d8;--bg: #ffffff;--bg-soft: #f2f6f8;--text: #111827;--text-heading: #111827;--text-muted: #25364a;--text-soft: #475569;--surface: #ffffff;--surface-elevated: #ffffff;--surface-soft: #f7fafc;--surface-tint: #e8f3f8;--surface-tint-soft: #edf7fb;--field-bg: #ffffff;--field-readonly-bg: #f2f6f8;--disabled-bg: #eef2f6;--disabled-text: #5f6f82;--danger: #d55e00;--danger-bg: #fff3e6;--danger-soft-bg: #fff8ef;--danger-border: #f0b47a;--danger-border-strong: #d55e00;--warning: #a66b00;--warning-bg: #fff4d8;--warning-border: #e6b24a;--success: #0072b2;--success-bg: #e8f3f8;--success-border: #8ac1dd;--focus-ring: rgba(0, 114, 178, .28);--dfa-node-bg: #ffffff;--dfa-node-text: #111827;--dfa-node-stroke: #111827;--dfa-accept: #e69f00;--graph-edge: #111827;--edge-label-bg: rgba(255, 255, 255, .94);--edge-label-text: #111827;--badge-bg: #e8f3f8;--badge-text: #004b72;--badge-border: #8ac1dd;--badge-success-bg: #fff4d8;--badge-success-text: #7a4d00;--badge-success-border: #e6b24a;--badge-minimal-bg: #e8f3f8;--badge-minimal-text: #004b72;--badge-minimal-border: #8ac1dd;--canvas-control-bg: #ffffff;--canvas-control-hover-bg: #f2f6f8;--canvas-control-text: #25364a}*{box-sizing:border-box}html,body,#root{height:100%;width:100%;margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,"Apple Color Emoji","Segoe UI Emoji"}.app{height:100%;width:100%;display:grid;grid-template-rows:var(--topbar-h) 1fr}.topbar{height:var(--topbar-h);display:flex;align-items:center;gap:10px;padding:0 14px;border-bottom:1px solid var(--border);background:var(--bg)}.brand{font-weight:800;letter-spacing:.2px}.topbar .spacer{flex:1}.topbar .btn{border:1px solid var(--border);background:#fff;color:var(--text);border-radius:10px;padding:8px 10px;cursor:pointer}.topbar .btn:hover{border-color:var(--color-primary)}.topbar .btn:disabled{opacity:.55;cursor:not-allowed;background:#f5f7fb;color:#7b8694}.topbar .btn:disabled:hover{border-color:var(--border)}.topbar .btn.primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff;font-weight:700}.topbar .btn.primary:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.topbar .seg{display:flex;border:1px solid var(--border);border-radius:10px;overflow:hidden}.topbar .seg button{border:none;background:#fff;color:var(--text);padding:8px 10px;cursor:pointer}.topbar .seg button:hover{background:#eaf5ff}.topbar .seg button.active{background:var(--color-primary);color:#fff}.body{height:calc(100vh - var(--topbar-h));width:100%;display:grid;grid-template-columns:var(--leftbar-w) 1fr;min-width:0}.body.textMode{grid-template-columns:var(--leftbar-w) 1fr var(--rightbar-w)}.leftbar{border-right:1px solid var(--border);background:#eaf5ff;padding:10px 8px;display:flex;flex-direction:column;gap:8px}.toolbtn{width:40px;height:40px;border-radius:12px;border:1px solid var(--border);background:#fff;cursor:pointer;display:grid;place-items:center;font-weight:800;color:var(--text);box-shadow:0 1px 2px #0000000f}.toolbtn:hover{border-color:var(--color-primary)}.toolbtn:disabled{opacity:.55;cursor:not-allowed;background:#f5f7fb;color:#7b8694}.toolbtn:disabled:hover{border-color:var(--border)}.toolbtn.active{border-color:var(--color-primary);background:#eaf5ff}.leftbar .divider{height:1px;background:var(--border);margin:6px 0}.workspace{min-width:0;width:100%;background:var(--bg-soft);padding:14px;overflow:auto}.workspaceHeader{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}.workspaceMeta{font-size:12px;color:#445}.workspaceActions{display:flex;align-items:center;gap:8px;margin-left:auto}.panelsGrid{display:grid;gap:14px}.panelsGrid.grid2x2{grid-template-columns:repeat(2,minmax(0,1fr))}.panelsGrid.column{grid-template-columns:minmax(0,1fr)}.panel{min-width:0;background:#fff;border:1px solid var(--border);border-radius:14px;overflow:hidden;display:grid;grid-template-rows:auto 420px}.panelHeader{padding:10px 12px;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;gap:10px}.panelTitle{font-weight:800;position:relative;min-width:0}.panelMetaPills{margin-top:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.panelHeaderActions{display:flex;align-items:center;gap:8px;flex-shrink:0}.panelActionBtn{border:1px solid var(--border);background:#fff;color:var(--text);border-radius:10px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:700;flex-shrink:0}.panelActionBtnSmall{padding:5px 8px;font-size:11px;border-radius:8px}.panelActionBtn:hover{border-color:var(--color-primary)}.panelActionBtn:disabled{opacity:.55;cursor:not-allowed;background:#f5f7fb;color:#7b8694}.panelActionBtn:disabled:hover{border-color:var(--border)}.panelActionBtnDanger{border-color:#f2c7cd;background:#fff6f7;color:#b42318}.panelActionBtnDanger:hover{border-color:#e8929d}.panelActionBtnDanger:disabled:hover{border-color:#f2c7cd}.panelIconBtn{width:36px;height:36px;border:1px solid var(--border);border-radius:10px;background:#fff;color:var(--text);cursor:pointer;display:grid;place-items:center;padding:0}.panelIconBtn:hover{border-color:var(--color-primary)}.panelIconBtn:disabled{opacity:.55;cursor:not-allowed;background:#f5f7fb;color:#7b8694;border-color:var(--border)}.panelIconBtn:disabled:hover{border-color:var(--border)}.panelIconBtnAccent{border-color:#cfe9ff;background:#eef7ff;color:#155e95}.panelIconBtnAccent:hover{border-color:#78bdf5;background:#e1f0ff}.panelIconBtnAccent:disabled:hover{border-color:var(--border);background:#f5f7fb}.panelIconBtnDanger{border-color:#f2c7cd;background:#fff6f7;color:#b42318}.panelIconBtnDanger:hover{border-color:#e8929d;background:#fff1f3}.panelIconBtnDanger:disabled:hover{border-color:var(--border);background:#f5f7fb}.floatingMenuIconBtn{width:30px;height:30px;border-radius:8px}.floatingEditorMenu{min-width:200px;display:grid;gap:10px;padding:12px;border-radius:14px;background:#fffffffa;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 14px 32px #0f172a33;border:1px solid rgba(148,163,184,.28)}.floatingEditorMenuNode{background:#eaf5ff;border-color:#78bdf5b3;box-shadow:0 14px 32px #155e952e}.floatingEditorMenuEdge{min-width:250px;background:#eaf5ff;border-color:#78bdf5b3;box-shadow:0 14px 32px #155e952e}.floatingEditorHeader{display:flex;align-items:center;justify-content:space-between;gap:10px}.floatingEditorHeaderActions{display:flex;align-items:center;gap:6px}.floatingEditorTitle{font-size:12px;font-weight:800;color:#172554}.floatingEditorMenuEdge .floatingEditorTitle{color:#172554}.floatingEditorTags{display:flex;gap:6px;flex-wrap:wrap}.floatingEditorInputRow{display:flex;gap:8px;align-items:stretch}.floatingEditorInput{flex:1;min-width:0;border:1px solid rgba(148,163,184,.5);border-radius:10px;padding:9px 11px;font-size:13px;background:#ffffffeb;color:#1e293b}.floatingEditorInput:focus{outline:none;border-color:#78bdf5;box-shadow:0 0 0 3px #78bdf52e}.floatingEditorMenuEdge .floatingEditorInput:focus{border-color:#78bdf5;box-shadow:0 0 0 3px #78bdf52e}.floatingEditorHelp{font-size:12px;color:#475569}.floatingEditorActionBtn{background:#fff;border-color:#94a3b873;color:#1e293b}.floatingEditorActionBtn:hover{background:#fff;border-color:#78bdf5}.pill{border:1px solid #cfe9ff;background:#eef7ff;border-radius:999px;padding:4px 8px;font-size:12px}.pill.isSuccess{border-color:#b8e3c5;background:#eaf8ef;color:#17603a}.pill.isMinimal{border-color:#9fded4;background:#ecfbf7;color:#0f766e}.issuePillBtn{border:1px solid #cfe9ff;background:#eef7ff;color:#155e95;border-radius:999px;padding:4px 8px;font-size:12px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.issuePillBtn:hover{border-color:#78bdf5;background:#e1f0ff}.issuePillBtn.isValidation{border-color:#f2c7cd;background:#fff4f4;color:#b42318}.issuePillBtn.isValidation:hover{border-color:#e8929d;background:#fff0f2}.issuePillBtn.isCompleteness{border-color:#f3d8a7;background:#fff6df;color:#9a6700}.issuePillBtn.isCompleteness:hover{border-color:#e7bd68;background:#fff1cc}.issuePillBtn.hasWarnings{border-color:#f3d8a7;background:#fff6df;color:#9a6700}.issuePillBtn.hasWarnings:hover{border-color:#e7bd68;background:#fff1cc}.issuePillBtn.hasErrors{border-color:#f2c7cd;background:#fff4f4;color:#b42318}.issuePillBtn.hasErrors:hover{border-color:#e8929d;background:#fff0f2}.issuePillBtn.hasIncomplete{border-color:#e7bd68;background:#fff1cc;color:#9a6700}.issuePillBtn.hasIncomplete:hover{border-color:#d89a28;background:#ffe7b0}.issuePillLabel{font-weight:700}.issuePillCount{min-width:18px;height:18px;border-radius:999px;padding:0 5px;background:#ffffffd1;display:grid;place-items:center;font-size:11px;font-weight:800;line-height:1}.panelBody{min-width:0;min-height:0;position:relative}.panelFlowControls{position:absolute;left:10px;bottom:10px;z-index:20;display:grid;gap:0;background:#fff;border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:0 1px 2px #0f172a14}.panelFlowControlBtn{width:32px;height:32px;border:0;border-top:1px solid var(--border);background:#fff;color:#334155;cursor:pointer;display:grid;place-items:center;padding:0;font-size:18px;font-weight:600;line-height:1}.panelFlowControlBtn:first-child{border-top:0}.panelFlowControlBtn:hover{background:#f8fafc}.panelFlowControlBtn.isLocked{color:#b42318}.panelFlowControlBtn.isUnlocked{color:#17603a}.react-flow__node.target-glow .custom-dfa-node{box-shadow:0 0 0 4px #ffa50099!important;border-color:orange!important;transition:all .2s ease}.issuePanel{position:absolute;left:0;top:calc(100% + 10px);width:min(360px,calc(100vw - 72px));max-height:260px;overflow:auto;background:#fff;border:1px solid var(--border);border-radius:12px;padding:12px;box-shadow:0 8px 24px #0f172a24;display:grid;gap:12px;z-index:40}.issuePanel.completeness{border-color:#f3d8a7}.issuePanelHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.issuePanelTitle{font-size:13px;font-weight:800;color:#223}.issuePanelTitle.validation{color:#b42318}.issuePanelSummary{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px}.issueCountBadge{border-radius:999px;padding:3px 8px;font-size:11px;font-weight:700}.issueCountBadge.error,.issueCountBadge.warning{background:#fff1f2;color:#b42318;border:1px solid #f2c7cd}.issueCountBadge.completeness{background:#fff6df;color:#9a6700;border:1px solid #f3d8a7}.issueList{display:grid;gap:8px}.issueItem{display:grid;gap:6px;padding:10px;border:1px solid var(--border);border-radius:10px;background:#fbfcfe}.issueSeverity{justify-self:start;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700;text-transform:capitalize}.issueSeverity.error,.issueSeverity.warning{background:#fff1f2;color:#b42318}.issueSeverity.completeness{background:#fff6df;color:#9a6700}.issueMessage{font-size:12px;line-height:1.5;color:#334155}.rightbar{border-left:1px solid var(--border);background:#fff;padding:0;overflow:auto;min-width:0}.rightbar h3{margin:0;font-size:14px}.rightbarStickyHeader{position:sticky;top:0;z-index:5;background:#fff;padding:12px;border-bottom:1px solid var(--border);display:grid;gap:10px}.rightbarContent{padding:12px;display:grid;gap:10px}.textForm{display:grid;gap:10px}.emptyTextModeState{border:1px dashed var(--border);border-radius:14px;padding:14px;background:#f8fafc;display:grid;gap:6px}.emptyTextModeTitle{font-size:13px;font-weight:800;color:#334155}.textField{display:grid;gap:6px}.textFieldGroup{display:grid;gap:10px;padding:12px;border:1px solid #cfe0f3;border-radius:14px;background:#f6fbff}.textFieldGroupHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;flex-wrap:wrap}.textFieldGroupTitle{font-size:12px;font-weight:800;color:#1d4f91;letter-spacing:.02em;text-transform:uppercase}.textFieldGroupNote{font-size:12px;line-height:1.4;color:#56708f}.textFieldGroupRow{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.textFieldHeader{display:flex;align-items:center;justify-content:space-between;gap:8px}.textFieldHeaderLead{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}.textFieldHeaderActions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.textFieldLabel{font-size:12px;font-weight:700;color:#334155}.textFieldActions{display:flex;align-items:center;gap:8px}.symbolicModeNote{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.transitionFieldHeader{display:flex;align-items:center;justify-content:space-between;gap:8px}.transitionFieldActions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.transitionColumns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) minmax(0,1fr) 104px;gap:8px;font-size:11px;font-weight:700;color:#667085;padding:0 2px}.transitionRows{display:grid;gap:8px}.transitionRow{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) minmax(0,1fr) 104px;gap:8px}.transitionCell{display:grid;align-content:start;gap:6px}.transitionActionCell{justify-items:center}.transitionDraftSection{display:grid;gap:8px}.transitionDraftRow{align-items:start}.transitionCreateBtn{width:100%;min-width:0}.transitionRowActions{display:grid;gap:6px;width:100%}.transitionRowActionBtn{width:100%}.transitionDeleteBtn{width:36px;height:36px;border:1px solid #f2c7cd;border-radius:10px;background:#fff6f7;color:#b42318;cursor:pointer;display:grid;place-items:center;padding:0}.transitionDeleteBtn:hover{border-color:#e8929d;background:#fff1f3}.transitionDeleteBtn:disabled{opacity:.55;cursor:not-allowed;background:#f5f7fb;border-color:var(--border);color:#7b8694}.transitionDeleteBtn:disabled:hover{border-color:var(--border);background:#f5f7fb}.transitionEmptyState{border:1px dashed var(--border);border-radius:12px;padding:12px;background:#f8fafc;color:#667085;font-size:12px}.textInput{width:100%;border:1px solid var(--border);border-radius:12px;padding:10px 12px;background:#fff;color:var(--text);font-size:13px}.app input::placeholder,.app textarea::placeholder{color:#a6b0bf;opacity:1}.textInput:focus{outline:3px solid rgba(61,169,252,.25);border-color:var(--color-primary)}.textInput:read-only{background:#f8fafc;color:#667085}.textInputArea{min-height:140px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.textFieldErrors{display:grid;gap:4px}.textFieldError{font-size:12px;line-height:1.45;color:#b42318}.smallNote{font-size:12px;color:#445;margin-top:10px}.appDialogOverlay{position:fixed;inset:0;z-index:60;background:#0f172a3d;display:grid;place-items:center;padding:20px;animation:appDialogOverlayFade .14s ease-out}.appDialog{width:min(460px,calc(100vw - 40px));max-width:100%;min-width:0;background:#fff;border:1px solid var(--border);border-radius:16px;box-shadow:0 22px 60px #0f172a38;padding:14px;display:grid;gap:14px;animation:appDialogPanelIn .16s ease-out}.appDialog>*{min-width:0}@keyframes appDialogOverlayFade{0%{opacity:0}to{opacity:1}}@keyframes appDialogPanelIn{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.helpDialog{width:min(760px,calc(100vw - 40px));max-height:min(82vh,760px);overflow:auto}.helpDialogHeader{position:sticky;top:-14px;z-index:2;margin:-14px -14px 0;padding:14px;background:var(--surface);border-bottom:1px solid var(--border)}.appDialog.danger{border-color:#f2c7cd}.appDialogHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.appDialogTitle{font-size:15px;font-weight:800;color:#223}.appDialogMessage{font-size:13px;line-height:1.6;color:#334155;white-space:pre-wrap}.appDialog.danger .appDialogMessage{color:#6b1f16}.helpDialogSubtitle{margin-top:4px;font-size:12px;line-height:1.5;color:#64748b}.helpSection{display:grid;gap:10px}.helpSectionTitle{font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#1d4f91}.helpItemGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}.helpItemCard{display:grid;grid-template-columns:46px minmax(0,1fr);gap:12px;align-items:start;border:1px solid var(--border);border-radius:14px;background:#fbfcff;padding:12px}.helpItemCard.textOnly{grid-template-columns:minmax(0,1fr)}.helpItemIcon{width:46px;height:46px;border:1px solid #cfe9ff;border-radius:14px;background:#eaf5ff;color:#1d4f91;display:grid;place-items:center;font-size:20px;font-weight:900;box-shadow:var(--shadow-soft)}.helpItemText{display:grid;gap:4px}.helpItemTitle{font-size:13px;font-weight:800;color:#223}.helpItemDescription,.helpItemDetail{font-size:12px;line-height:1.5;color:#475569}.helpItemDetail{color:#64748b}.appDialogInput{font-size:13px}.appDialog .textInput{min-width:0}.appDialogActions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.operationDialogOptions{display:grid;gap:10px}.operationDialogSelection{display:grid;gap:12px;min-width:0}.operationDialogField{display:grid;gap:6px;min-width:0}.operationDialogOption{width:100%;border:1px solid var(--border);border-radius:12px;background:#fbfcff;color:var(--text);padding:12px;cursor:pointer;display:grid;gap:4px;text-align:left}.operationDialogOption:hover{border-color:var(--color-primary);background:#f3f8ff}.operationDialogOption:disabled{opacity:.55;cursor:not-allowed;background:#f5f7fb;color:#7b8694}.operationDialogOption:disabled:hover{border-color:var(--border);background:#f5f7fb}.operationDialogOptionTitle{font-size:13px;font-weight:800;color:inherit}.operationDialogOptionHint{font-size:12px;line-height:1.5;color:#475569}.operationDialogOption:disabled .operationDialogOptionHint{color:inherit}.operationDialogNote{font-size:12px;line-height:1.5;color:#6b7280}.stringCheckDialog{width:min(520px,calc(100vw - 40px));max-height:min(82vh,760px);overflow:auto}.stringCheckAlphabet{font-size:12px;line-height:1.5;color:var(--text-soft);overflow-wrap:anywhere}.stringCheckResult{border:1px solid var(--border);border-radius:12px;padding:12px;display:grid;gap:10px;min-width:0;background:var(--surface-soft)}.stringCheckResult.accepted{border-color:var(--success-border);background:var(--success-bg)}.stringCheckResult.rejected{border-color:var(--warning-border);background:var(--warning-bg)}.stringCheckResult.invalid{border-color:var(--danger-border);background:var(--danger-bg)}.stringCheckResultHeader{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;min-width:0}.stringCheckResultLabel{font-size:13px;font-weight:800;color:var(--text-heading)}.stringCheckResult.accepted .stringCheckResultLabel{color:var(--success)}.stringCheckResult.rejected .stringCheckResultLabel{color:var(--warning)}.stringCheckResult.invalid .stringCheckResultLabel{color:var(--danger)}.stringCheckResultMeta,.stringCheckResultMessage{min-width:0;font-size:12px;line-height:1.5;color:var(--text-muted);overflow-wrap:anywhere}.stringCheckTrace{max-height:150px;overflow:auto;display:grid;gap:6px;min-width:0;border:1px solid var(--border);border-radius:10px;background:var(--field-bg);padding:8px}.stringCheckTraceStep{display:grid;grid-template-columns:52px minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px;min-width:0;color:var(--text);font-size:12px}.stringCheckTraceStep:first-child{grid-template-columns:52px minmax(0,1fr)}.stringCheckTraceStep.stopped{color:var(--danger)}.stringCheckTraceIndex{color:var(--text-soft);font-weight:800}.stringCheckTraceState{min-width:0;overflow-wrap:anywhere}.stringCheckTraceSymbol{border:1px solid var(--border);border-radius:8px;background:var(--surface-tint-soft);color:var(--text-heading);padding:2px 7px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.randomDfaToggleGrid{display:grid;gap:8px}.randomDfaToggle{width:100%;border:1px solid var(--border);border-radius:12px;background:#fbfcff;color:#334155;padding:10px 12px;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left}.randomDfaToggle:hover{border-color:var(--color-primary);background:#f3f8ff}.randomDfaToggle.isOn{border-color:#7bb7f0;background:#eaf5ff;color:#1d4f91}.randomDfaToggleTitle{font-size:13px;font-weight:700}.randomDfaToggleState{border-radius:999px;padding:3px 8px;background:#eef2f7;color:#64748b;font-size:11px;font-weight:800;text-transform:uppercase}.randomDfaToggle.isOn .randomDfaToggleState{background:#fff;color:#1d4f91}.symbolicHelpOverlay{position:fixed;inset:0;z-index:40;background:#0f172a2e;display:grid;place-items:center;padding:20px}.symbolicHelpDialog{width:min(560px,calc(100vw - 40px));max-height:min(78vh,720px);overflow:auto;background:#fff;border:1px solid var(--border);border-radius:16px;box-shadow:0 20px 50px #0f172a2e;padding:14px;display:grid;gap:14px}.symbolicHelpHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.symbolicHelpTitle{font-size:15px;font-weight:800;color:#223}.symbolicHelpSection{display:grid;gap:8px}.symbolicHelpSectionTitle{font-size:12px;font-weight:800;color:#334155}.symbolicHelpItem{font-size:13px;line-height:1.5;color:#334155}.symbolicHelpItem code{background:#f5f7fb;border:1px solid var(--border);border-radius:6px;padding:1px 5px}.appearanceThemeGrid{display:grid;gap:10px}.appearanceThemeOption{width:100%;border:1px solid var(--border);border-radius:14px;background:var(--surface);color:var(--text);padding:12px;cursor:pointer;display:grid;grid-template-columns:auto 1fr;gap:12px;text-align:left}.appearanceThemeOption:hover,.appearanceThemeOption.isSelected{border-color:var(--color-primary);background:var(--surface-tint-soft)}.appearanceThemeSwatches{width:58px;height:38px;border:1px solid var(--border);border-radius:12px;overflow:hidden;display:grid;grid-template-columns:1.1fr 1fr 1fr;box-shadow:var(--shadow-soft)}.appearanceThemeSwatches span:nth-child(1){background:#fff}.appearanceThemeSwatches span:nth-child(2){background:#f5f7fb}.appearanceThemeSwatches span:nth-child(3){background:#3da9fc}.appearanceThemeOption[data-theme-option=dark] .appearanceThemeSwatches span:nth-child(1){background:#0f172a}.appearanceThemeOption[data-theme-option=dark] .appearanceThemeSwatches span:nth-child(2){background:#1e293b}.appearanceThemeOption[data-theme-option=dark] .appearanceThemeSwatches span:nth-child(3){background:#60a5fa}.appearanceThemeOption[data-theme-option=colourBlind] .appearanceThemeSwatches span:nth-child(1){background:#fff}.appearanceThemeOption[data-theme-option=colourBlind] .appearanceThemeSwatches span:nth-child(2){background:#0072b2}.appearanceThemeOption[data-theme-option=colourBlind] .appearanceThemeSwatches span:nth-child(3){background:#e69f00}.appearanceThemeText{display:grid;gap:3px}.appearanceThemeTitle{font-size:13px;font-weight:800}.appearanceThemeDescription{font-size:12px;line-height:1.5;color:var(--text-soft)}@media(prefers-reduced-motion:reduce){.appDialogOverlay,.appDialog{animation:none}}.topbar,.rightbar,.rightbarStickyHeader,.panel,.appDialog,.symbolicHelpDialog,.floatingEditorMenu{background:var(--surface);color:var(--text)}.workspace{background:var(--bg-soft)}.leftbar,.toolbtn.active,.topbar .seg button:hover,.randomDfaToggle.isOn{background:var(--surface-tint)}.topbar .btn,.topbar .seg button,.toolbtn,.panelActionBtn,.panelIconBtn,.textInput,.helpItemCard,.operationDialogOption,.randomDfaToggle,.symbolicHelpItem code,.react-flow__controls button{background:var(--field-bg);color:var(--text)}.panelActionBtn:disabled,.toolbtn:disabled,.topbar .btn:disabled,.operationDialogOption:disabled,.randomDfaToggle:disabled,.textInput:read-only{background:var(--disabled-bg);color:var(--disabled-text)}.textInput:focus{outline-color:var(--focus-ring)}.workspaceMeta,.smallNote,.helpDialogSubtitle,.helpItemDescription,.helpItemDetail,.operationDialogNote,.operationDialogOptionHint,.appDialogMessage,.symbolicHelpItem,.symbolicHelpSectionTitle,.issueMessage,.textFieldGroupNote{color:var(--text-muted)}.appDialogTitle,.symbolicHelpTitle,.panelTitle,.helpItemTitle,.helpSectionTitle,.textFieldLabel,.textFieldGroupTitle,.emptyTextModeTitle{color:var(--text-heading)}.pill,.issuePillBtn{background:var(--badge-bg);border-color:var(--badge-border);color:var(--badge-text)}.pill.isSuccess{background:var(--badge-success-bg);border-color:var(--badge-success-border);color:var(--badge-success-text)}.pill.isMinimal{background:var(--badge-minimal-bg);border-color:var(--badge-minimal-border);color:var(--badge-minimal-text)}.issuePillBtn:hover{background:var(--surface-tint-soft);border-color:var(--color-primary)}.issuePillBtn.isValidation,.issuePillBtn.hasErrors{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger)}.issuePillBtn.isValidation:hover,.issuePillBtn.hasErrors:hover{background:var(--danger-soft-bg);border-color:var(--danger-border-strong)}.issuePillBtn.isCompleteness,.issuePillBtn.hasIncomplete,.issuePillBtn.hasWarnings{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning)}.issuePillBtn.isCompleteness:hover,.issuePillBtn.hasIncomplete:hover,.issuePillBtn.hasWarnings:hover{background:var(--surface-tint-soft);border-color:var(--warning-border)}.issuePillCount{background:var(--surface-elevated);border:1px solid var(--border);color:currentColor}.issuePanel.completeness{border-color:var(--warning-border)}.issuePanelTitle.validation{color:var(--danger)}.issueItem{background:var(--surface-elevated);border-color:var(--border)}.issueCountBadge.warning{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}.issueCountBadge.completeness{background:var(--warning-bg);color:var(--warning);border-color:var(--warning-border)}.panelFlowControls{background:var(--canvas-control-bg);border-color:var(--border);box-shadow:var(--shadow-soft)}.panelFlowControlBtn{background:var(--canvas-control-bg);color:var(--canvas-control-text);border-color:var(--border)}.panelFlowControlBtn:hover{background:var(--canvas-control-hover-bg)}.panelFlowControlBtn.isLocked{color:var(--danger)}.panelFlowControlBtn.isUnlocked{color:var(--success)}.floatingEditorActionBtn{background:var(--field-bg);border-color:var(--border);color:var(--text)}.floatingEditorActionBtn:hover{background:var(--surface-tint-soft);border-color:var(--color-primary)}.floatingEditorHelp{color:var(--text-muted)}.emptyTextModeState,.transitionEmptyState,.issuePanel,.helpItemCard,.textFieldGroup{background:var(--surface-soft);border-color:var(--border)}.helpItemIcon{background:var(--surface-tint);border-color:var(--badge-border);color:var(--badge-text)}.panelBody,.react-flow{background:var(--surface)}.react-flow__controls{box-shadow:var(--shadow-soft)}.react-flow__edge-path{stroke:var(--graph-edge)}.panelIconBtnDanger,.transitionDeleteBtn{color:var(--danger);border-color:var(--danger-border);background:var(--danger-soft-bg)}.panelIconBtnDanger:hover,.transitionDeleteBtn:hover{border-color:var(--danger-border-strong);background:var(--danger-bg)}.textFieldError,.issueSeverity.error,.issueSeverity.warning{color:var(--danger)}.issueSeverity.error,.issueSeverity.warning{background:var(--danger-bg);border-color:var(--danger-border)}.issueSeverity.completeness{background:var(--warning-bg);color:var(--warning);border-color:var(--warning-border)}.appDialogOverlay,.symbolicHelpOverlay{background:var(--overlay)}.appDialog{box-shadow:var(--shadow-dialog)}:root[data-theme=dark] .react-flow__background pattern line,:root[data-theme=dark] .react-flow__background pattern path{stroke:#475569}:root[data-theme=dark] .floatingEditorMenu,:root[data-theme=dark] .issuePanel,:root[data-theme=dark] .appDialog,:root[data-theme=dark] .symbolicHelpDialog{box-shadow:var(--shadow-dialog)}:root[data-theme=dark] .custom-dfa-node{box-shadow:0 10px 24px #00000038}:root[data-theme=dark] .pill,:root[data-theme=dark] .issuePillBtn,:root[data-theme=dark] .panelFlowControls,:root[data-theme=dark] .panelFlowControlBtn,:root[data-theme=dark] .floatingEditorActionBtn{box-shadow:none}.react-flow__controls button{border-radius:10px!important;border:1px solid var(--border)!important}.react-flow__controls button:hover{border-color:var(--color-primary)!important}@media(max-width:1100px){.panelsGrid{grid-template-columns:1fr}}@media(max-width:420px){.transitionColumns,.transitionRow{grid-template-columns:1fr}}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:-webkit-grab;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}
