:root{--paper: #f2f4f3;--paper-raised: #fbfcfb;--grid-fine: #e4e8e6;--grid-major: #d8dedb;--rule: #d3d8d6;--rule-strong: #7f8a87;--ink: #16181a;--ink-secondary: #5b6167;--ink-tertiary: #666e73;--ink-inverse: #fbfcfb;--signal: #0f7b8a;--signal-quiet: #d9ebee;--signal-strong: #0a5c68;--danger: #a32d1f;--danger-quiet: #f7e4e1;--warn: #8a5a00;--font-sans: "IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", monospace;--text-xs: .8125rem;--text-sm: .875rem;--text-base: .875rem;--text-md: .9375rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--s1: .25rem;--s2: .5rem;--s3: .75rem;--s4: 1rem;--s5: 1.5rem;--s6: 2rem;--s7: 3rem;--r-drawn: 0;--r-control: 2px;--r-panel: 3px;--r-pill: 999px;--t-fast: 90ms;--t-base: .14s;--ease-out: cubic-bezier(.2, 0, 0, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--hairline: 1px;--shadow-menu: 0 8px 24px rgb(0 0 0 / 18%);color-scheme:light}@media(prefers-color-scheme:dark){:root{--paper: #14171a;--paper-raised: #1b1f22;--grid-fine: #1f2428;--grid-major: #262c30;--rule: #2b3136;--rule-strong: #68737a;--ink: #e8eceb;--ink-secondary: #a4adb2;--ink-tertiary: #98a1a6;--ink-inverse: #14171a;--signal: #3fa8b8;--signal-quiet: #17383d;--signal-strong: #6cc4d2;--danger: #e0776a;--danger-quiet: #3a2320;--warn: #d9a441;color-scheme:dark}}[data-theme=graph-light]{--paper: #f2f4f3;--paper-raised: #fbfcfb;--grid-fine: #e4e8e6;--grid-major: #d8dedb;--rule: #d3d8d6;--rule-strong: #7f8a87;--ink: #16181a;--ink-secondary: #5b6167;--ink-tertiary: #666e73;--ink-inverse: #fbfcfb;--signal: #0f7b8a;--signal-quiet: #d9ebee;--signal-strong: #0a5c68;--danger: #a32d1f;--danger-quiet: #f7e4e1;--warn: #8a5a00;color-scheme:light}[data-theme=graph-dark]{--paper: #14171a;--paper-raised: #1b1f22;--grid-fine: #1f2428;--grid-major: #262c30;--rule: #2b3136;--rule-strong: #68737a;--ink: #e8eceb;--ink-secondary: #a4adb2;--ink-tertiary: #98a1a6;--ink-inverse: #14171a;--signal: #3fa8b8;--signal-quiet: #17383d;--signal-strong: #6cc4d2;--danger: #e0776a;--danger-quiet: #3a2320;--warn: #d9a441;color-scheme:dark}[data-theme=solarized-light]{--paper: #eee8d5;--paper-raised: #fdf6e3;--grid-fine: #e6ddc7;--grid-major: #ddd3ba;--rule: #d3c8b0;--rule-strong: #7f8f86;--ink: #002b36;--ink-secondary: #3f565c;--ink-tertiary: #4b6167;--ink-inverse: #fdf6e3;--signal: #268bd2;--signal-quiet: #d8e8f2;--signal-strong: #0d6fa8;--danger: #a3321f;--danger-quiet: #f6e3dc;--warn: #8a5a00;color-scheme:light}[data-theme=solarized-dark]{--paper: #002b36;--paper-raised: #073642;--grid-fine: #0a3d49;--grid-major: #10485a;--rule: #0f4451;--rule-strong: #5c7d85;--ink: #eee8d5;--ink-secondary: #a3b4b5;--ink-tertiary: #93a1a1;--ink-inverse: #002b36;--signal: #268bd2;--signal-quiet: #0d4a5c;--signal-strong: #6cb6d9;--danger: #dc322f;--danger-quiet: #4a1f1e;--warn: #b58900;color-scheme:dark}[data-theme=dracula]{--paper: #282a36;--paper-raised: #343746;--grid-fine: #2f3242;--grid-major: #3b3f52;--rule: #44475a;--rule-strong: #6f7391;--ink: #f8f8f2;--ink-secondary: #c3c9e0;--ink-tertiary: #9aa5ce;--ink-inverse: #282a36;--signal: #bd93f9;--signal-quiet: #3a3157;--signal-strong: #d6b0ff;--danger: #ff5555;--danger-quiet: #4a2530;--warn: #ffb86c;color-scheme:dark}[data-theme=nord]{--paper: #2e3440;--paper-raised: #3b4252;--grid-fine: #343b49;--grid-major: #3f485a;--rule: #434c5e;--rule-strong: #7f8da3;--ink: #eceff4;--ink-secondary: #d5dbe6;--ink-tertiary: #b9c2d3;--ink-inverse: #2e3440;--signal: #88c0d0;--signal-quiet: #3f4c5c;--signal-strong: #a3c9dd;--danger: #bf616a;--danger-quiet: #46262c;--warn: #ebcb8b;color-scheme:dark}[data-theme=github-dark]{--paper: #0d1117;--paper-raised: #161b22;--grid-fine: #141a21;--grid-major: #1c232c;--rule: #21262d;--rule-strong: #586069;--ink: #e6edf3;--ink-secondary: #bdc6d1;--ink-tertiary: #9da7b3;--ink-inverse: #0d1117;--signal: #2f81f7;--signal-quiet: #10243f;--signal-strong: #6cb0ff;--danger: #f85149;--danger-quiet: #45191b;--warn: #d29922;color-scheme:dark}[data-theme=monokai]{--paper: #272822;--paper-raised: #1e1f1c;--grid-fine: #2e2f29;--grid-major: #3a3b33;--rule: #3e3f37;--rule-strong: #75715e;--ink: #f8f8f2;--ink-secondary: #d2d2c6;--ink-tertiary: #b0aea0;--ink-inverse: #272822;--signal: #66d9ef;--signal-quiet: #1d3a40;--signal-strong: #a5f3fc;--danger: #f92672;--danger-quiet: #451f30;--warn: #fd971f;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:1.5;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased}:focus-visible{outline:2px solid var(--signal);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.app{position:relative;height:var(--viewport-height, 100dvh);overflow:clip}.topbar{position:absolute;z-index:10;top:12px;left:12px;right:12px;display:flex;align-items:center;gap:var(--s1);padding:var(--s1);border:var(--hairline) solid var(--rule);border-radius:var(--r-panel);background:var(--paper-raised)}.wordmark{display:flex;align-items:baseline;gap:var(--s2);font-family:var(--font-mono);font-size:var(--text-sm);font-weight:600;letter-spacing:-.01em;color:var(--ink);white-space:nowrap;margin:0}.wordmark__mark{font-weight:500;color:var(--signal)}.docname{min-height:44px;font:inherit;font-size:var(--text-md);font-weight:500;color:var(--ink);background:transparent;border:var(--hairline) solid transparent;border-radius:var(--r-control);padding:var(--s1) var(--s2);min-width:8ch;max-width:40ch;width:28ch}.docname:hover{border-color:var(--rule)}.docname:focus{border-color:var(--signal);background:var(--paper)}.topbar__spacer{flex:1}.btn{min-height:44px;min-width:44px;font-family:inherit;font-size:var(--text-sm);font-weight:500;color:var(--ink);background:var(--paper-raised);border:var(--hairline) solid var(--rule-strong);border-radius:var(--r-control);padding:var(--s2) var(--s3);cursor:pointer;transition:background var(--t-fast) var(--ease-out),border-color var(--t-fast) var(--ease-out);white-space:nowrap;display:inline-flex;align-items:center;gap:var(--s2)}.btn:hover:not(:disabled){background:var(--paper);border-color:var(--ink-tertiary)}.btn:active:not(:disabled){background:var(--grid-major)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{color:var(--ink-inverse);background:var(--ink);border-color:var(--ink)}.btn--primary:hover:not(:disabled){background:#2b3033;border-color:#2b3033}.btn--ghost{border-color:transparent;background:transparent}.btn--ghost:hover:not(:disabled){background:var(--grid-fine);border-color:transparent}.btn--danger{color:var(--danger);border-color:var(--rule)}.btn--danger:hover:not(:disabled){background:var(--danger-quiet);border-color:var(--danger)}.btn--icon{padding:var(--s2)}.workspace{position:absolute;inset:0;min-height:0;overflow:hidden}.rail,.inspector{overflow-y:auto;background:var(--paper-raised);min-height:0}.rail{padding:var(--s4) var(--s3)}.inspector{padding:var(--s4)}.panel__title{font-size:var(--text-base);font-weight:600;letter-spacing:0;color:var(--ink-tertiary);margin:0 0 var(--s2)}.rail__group{margin-bottom:var(--s4)}.rail__hint{font-size:var(--text-xs);color:var(--ink-tertiary);line-height:1.45;margin:var(--s1) 0 0}.shape-btn{min-height:48px;display:flex;align-items:center;gap:var(--s2);width:100%;padding:var(--s2);margin-bottom:2px;font-family:inherit;font-size:var(--text-sm);color:var(--ink);background:transparent;border:var(--hairline) solid transparent;border-radius:var(--r-control);cursor:pointer;text-align:left;transition:background var(--t-fast) var(--ease-out)}.shape-btn:hover{background:var(--grid-fine)}.shape-btn[aria-pressed=true]{background:var(--signal-quiet);border-color:var(--signal)}.shape-btn__glyph{flex:none;display:grid;place-items:center;width:24px;height:20px}.shape-btn__label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shape-btn__key{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-tertiary);border:var(--hairline) solid var(--rule);border-radius:var(--r-control);padding:0 4px;line-height:1.4}.canvas-wrap{position:relative;overflow:hidden;background-color:var(--paper);background-image:linear-gradient(color-mix(in srgb,var(--grid-fine) 45%,transparent) var(--hairline),transparent var(--hairline)),linear-gradient(90deg,color-mix(in srgb,var(--grid-fine) 45%,transparent) var(--hairline),transparent var(--hairline)),linear-gradient(color-mix(in srgb,var(--grid-major) 60%,transparent) var(--hairline),transparent var(--hairline)),linear-gradient(90deg,color-mix(in srgb,var(--grid-major) 60%,transparent) var(--hairline),transparent var(--hairline));background-size:20px 20px,20px 20px,100px 100px,100px 100px;cursor:default;min-width:0}.canvas-wrap[data-tool=pan]{cursor:grab}.canvas-wrap[data-tool=pan]:active{cursor:grabbing}.canvas-wrap[data-tool=connect] .node{cursor:crosshair}.canvas{display:block;width:100%;height:100%;touch-action:none}.canvas text{user-select:none;-webkit-user-select:none}.node__body{fill:var(--paper-raised);stroke:var(--ink);stroke-width:1.5}.node--weak .node__body{fill:none}.node--connecting .node__body{stroke:var(--signal);stroke-width:2.5px}.node--connectable .node__body{stroke:var(--signal);stroke-width:2.5px;fill:var(--signal-quiet)}.connect-preview{stroke:var(--signal);stroke-width:1.5px;stroke-dasharray:6 4;fill:none;pointer-events:none}.node__label{fill:var(--ink);font-family:var(--font-sans);font-size:13px;text-anchor:middle;dominant-baseline:middle;pointer-events:none}.node__key-line{stroke:var(--ink);stroke-width:1.2}.leg{stroke:var(--ink);stroke-width:1.5;fill:none}.leg--selected{stroke:var(--signal);stroke-width:2}.leg--attribute{stroke-width:1.2}.crow-link{cursor:pointer;outline:none}.crow-link__hit{stroke:transparent;stroke-width:24;vector-effect:non-scaling-stroke;fill:none;pointer-events:stroke}.crow-link:hover .crow-link__path,.crow-link--hovered .crow-link__path{stroke:var(--signal)}.crow-link__path,.crow-link__ratio{pointer-events:none}.crow-link__hit--horizontal{cursor:ns-resize}.crow-link__hit--vertical{cursor:ew-resize}.crow-link--dragging[data-drag-axis=horizontal],.crow-link--dragging[data-drag-axis=horizontal] *{cursor:ns-resize}.crow-link--dragging[data-drag-axis=vertical],.crow-link--dragging[data-drag-axis=vertical] *{cursor:ew-resize}.crow-link--blocked,.crow-link--blocked *{cursor:not-allowed!important}.crow-link__split,.crow-link__reset,.crow-link__segment-handle{outline:none}.crow-link__reset{cursor:pointer}.crow-link__split-hit{fill:transparent}.crow-link__split-body,.crow-link__handle-body{fill:var(--paper);stroke:var(--signal);stroke-width:1.5;vector-effect:non-scaling-stroke}.crow-link__reset path{fill:none;stroke:var(--signal);stroke-width:1.5;pointer-events:none;vector-effect:non-scaling-stroke}.crow-link__split:hover .crow-link__split-body,.crow-link__split:focus-visible .crow-link__split-body,.crow-link__reset:hover .crow-link__split-body,.crow-link__reset:focus-visible .crow-link__split-body,.crow-link__segment-handle:hover .crow-link__handle-body,.crow-link__segment-handle:focus-visible .crow-link__handle-body{stroke-width:3}.canvas-wrap[data-tool=pan] .crow-link__hit{cursor:grab}.crow-link__ratio{fill:var(--ink);font-family:var(--font-mono);font-size:16px;font-weight:600;stroke:none}.crow-link__ratio-background{pointer-events:all;fill:var(--paper);stroke:var(--rule-strong);stroke-width:1}.crow-link--selected .leg{stroke:var(--signal);stroke-width:2}.crow-link--selected .crow-link__ratio{fill:var(--signal-strong)}.crow-link--selected .crow-link__ratio-background{stroke:var(--signal)}.leg-hit{stroke:transparent;stroke-width:14;fill:none;pointer-events:stroke;cursor:pointer}.leg-endpoint{cursor:pointer}.leg-endpoint__hit{fill:transparent;stroke:none;pointer-events:all}.endpoint-examples>div{display:flex;align-items:center;gap:8px;min-height:32px}.endpoint-examples svg{flex:none}.leg__cardinality{fill:var(--ink);font-family:var(--font-mono);font-size:12px;font-weight:600;text-anchor:middle;dominant-baseline:middle;paint-order:stroke;stroke:var(--paper);stroke-width:3px;stroke-linejoin:round;cursor:pointer}.leg__participation{fill:var(--ink-secondary);font-family:var(--font-mono);font-size:13px;text-anchor:middle;dominant-baseline:middle;paint-order:stroke;stroke:var(--paper);stroke-width:3px;stroke-linejoin:round;cursor:pointer}.selection-ring{fill:none;stroke:var(--signal);stroke-width:1.5;stroke-dasharray:4 3;pointer-events:none}.isa-triangle{fill:none;stroke:var(--ink);stroke-width:1.5}.isa-label{fill:var(--ink);font-family:var(--font-mono);font-size:11px;text-anchor:middle;dominant-baseline:middle;paint-order:stroke;stroke:var(--paper);stroke-width:3px}.crow-table__name{fill:var(--ink);font-family:var(--font-sans);font-size:13px;font-weight:600;dominant-baseline:middle}.type-fields{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap}.type-fields .field__select{flex:1 1 auto;min-width:0}.field__input--number{flex:0 0 auto;width:92px;font-family:var(--font-mono)}.field__input--number:disabled{opacity:.5}.enum-values{flex:1 1 100%;min-width:0;font-family:var(--font-mono)}.theme-picker{border:0;padding:0;margin:var(--s5) 0 0}.theme-picker__options{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--s2);margin-top:var(--s2)}.theme-swatch{display:flex;align-items:center;gap:var(--s2);padding:var(--s2);min-height:44px;text-align:left;background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--r-control);cursor:pointer;color:var(--ink)}.theme-swatch[aria-checked=true]{border-color:var(--signal);box-shadow:inset 0 0 0 1px var(--signal)}.theme-swatch__chip{flex:0 0 auto;width:28px;height:28px;border-radius:4px;border:1px solid var(--rule);background:linear-gradient(135deg,var(--paper) 0 50%,var(--ink) 50% 68%,var(--signal) 68% 100%)}.theme-swatch__text{display:flex;flex-direction:column;gap:2px;min-width:0}.theme-swatch__text strong{font-size:var(--text-sm);font-weight:600}.theme-swatch__text span{font-size:var(--text-xs);color:var(--ink-tertiary)}.crow-row__key{fill:var(--ink-tertiary);font-family:var(--font-mono);font-size:13px;font-weight:600;dominant-baseline:middle}.crow-row__name{fill:var(--ink);font-family:var(--font-sans);font-size:13px;dominant-baseline:middle}.crow-row__name--pk{text-decoration:underline}.crow-row__type{fill:var(--ink-tertiary);font-family:var(--font-mono);font-size:13px;text-anchor:end;dominant-baseline:middle}.crow-row__rule{stroke:var(--grid-fine);stroke-width:1}.context-menu{position:fixed;z-index:60;width:max-content;min-width:min(240px,calc(100vw - 16px));max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px);overflow-y:auto;overscroll-behavior:contain;padding:var(--s1);display:grid;gap:1px;background:var(--paper-raised);border:1px solid var(--rule-strong);border-radius:var(--r-control);box-shadow:var(--shadow-menu)}.context-menu__heading{padding:8px 12px 6px;font-size:var(--text-xs);font-weight:600;color:var(--ink-secondary)}.context-menu__separator{height:1px;margin:var(--s1) var(--s2);background:var(--rule)}.context-menu__item{display:flex;align-items:center;justify-content:space-between;gap:var(--s4);width:100%;text-align:left;padding:8px 12px;min-height:44px;border:0;border-radius:var(--r-control);background:transparent;font:inherit;color:var(--ink);cursor:pointer}.context-menu__label{min-width:0;overflow-wrap:anywhere}.context-menu__shortcut{flex:none;color:var(--ink-secondary);font-size:var(--text-xs)}.context-menu__item:hover:not([disabled]),.context-menu__item:focus-visible{background:var(--signal-quiet);color:var(--signal-strong)}.context-menu__item:focus-visible{outline:2px solid var(--signal);outline-offset:-2px}.context-menu__item[disabled]{color:var(--ink-tertiary);cursor:not-allowed}.context-menu__item--danger{color:var(--danger)}.context-menu__item--danger .context-menu__shortcut{color:inherit}.context-menu__item--danger:hover:not([disabled]),.context-menu__item--danger:focus-visible{background:var(--danger-quiet);color:var(--danger)}.layer-groups{pointer-events:none}.group-frame rect{fill:none;stroke:var(--signal);stroke-width:1.5;stroke-dasharray:6 5;opacity:.55}.group-frame__name{font-family:var(--font-sans);font-size:11px;font-weight:600;fill:var(--signal);opacity:.85}.marquee{fill:var(--signal);fill-opacity:.1;stroke:var(--signal);stroke-width:1;stroke-dasharray:4 3;pointer-events:none}.inspector__list{list-style:none;margin:0 0 var(--s3);padding:0;display:grid;gap:2px;max-height:180px;overflow-y:auto}.inspector__list button{width:100%;justify-content:flex-start;text-align:left}.inspector__actions{display:grid;gap:var(--s1)}.layer-peers{pointer-events:none}.peer-cursor__name{font-family:var(--font-sans);font-size:11px;font-weight:600;fill:var(--ink-inverse)}.peer-cursor__chip{rx:var(--r-control)}.peer-ring{fill:none;stroke-width:2;stroke-dasharray:5 3;pointer-events:none}.canvas-status{position:absolute;z-index:11;top:80px;left:var(--s3);display:flex;align-items:center;gap:var(--s2);font-size:var(--text-xs);font-family:var(--font-mono);color:var(--ink-secondary);background:var(--paper-raised);border:var(--hairline) solid var(--rule);border-radius:var(--r-control);padding:var(--s1) var(--s2);pointer-events:none}.canvas-status__dot{width:7px;height:7px;border-radius:var(--r-pill);background:var(--ink-tertiary)}.canvas-status{max-width:calc(100% - 24px);flex-wrap:wrap}.canvas-status button{pointer-events:auto}.canvas-status__dot--live{background:var(--signal)}.canvas-empty{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;pointer-events:none;padding:var(--s5)}.canvas-empty__card{display:grid;justify-items:center;gap:var(--s3);text-align:center;max-width:52ch;padding:var(--s5) var(--s6);background:var(--paper);border:var(--hairline) solid var(--rule);border-radius:var(--r-panel);pointer-events:auto}.canvas-empty__title{font-size:var(--text-lg);font-weight:500;margin:0;color:var(--ink)}.canvas-empty__body{font-size:var(--text-sm);color:var(--ink-secondary);margin:0;max-width:46ch;line-height:1.55}.starter-name{display:flex;flex-direction:column;gap:var(--s1);width:100%;max-width:320px}.starter-name .field__input{width:100%;min-height:44px}.canvas-empty__hint{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-tertiary);margin:0}.field{margin-bottom:var(--s3)}.field__label{display:block;font-size:var(--text-base);font-weight:600;color:var(--ink-secondary);margin-bottom:var(--s1)}.field__input,.field__select{min-height:44px;font:inherit;font-size:var(--text-sm);width:100%;color:var(--ink);background:var(--paper);border:var(--hairline) solid var(--rule-strong);border-radius:var(--r-control);padding:var(--s2)}.field__input:focus,.field__select:focus{border-color:var(--signal)}.field__row{display:grid;grid-template-columns:1fr 1fr;gap:var(--s2)}.field__help{font-size:var(--text-xs);color:var(--ink-tertiary);margin:var(--s1) 0 0;line-height:1.4}.seg{display:flex;border:var(--hairline) solid var(--rule-strong);border-radius:var(--r-control);overflow:hidden}.seg__btn{min-height:44px;min-width:44px;flex:1;font-family:inherit;font-size:var(--text-base);padding:var(--s2) var(--s1);background:var(--paper-raised);border:0;border-right:var(--hairline) solid var(--rule);color:var(--ink-secondary);cursor:pointer;transition:background var(--t-fast) var(--ease-out)}.seg__btn:last-child{border-right:0}.seg__btn:hover{background:var(--grid-fine)}.seg__btn[aria-pressed=true]{background:var(--ink);color:var(--ink-inverse);font-weight:600}.inspector__empty{font-size:var(--text-sm);color:var(--ink-tertiary);line-height:1.5;margin:0}.attr-list{list-style:none;margin:0;padding:0}.attr-list__item{display:flex;align-items:center;gap:var(--s2);padding:var(--s1) 0;font-size:var(--text-sm);border-bottom:var(--hairline) solid var(--grid-fine)}.attr-list__name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attr-list__tag{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-tertiary)}.statusbar{display:none;align-items:center;gap:var(--s3);padding:var(--s1) var(--s3);border-top:var(--hairline) solid var(--rule);background:var(--paper-raised);font-size:var(--text-xs);color:var(--ink-secondary);min-height:34px}.statusbar__group{display:flex;align-items:center;gap:var(--s2)}.statusbar__spacer{flex:1}.statusbar__count{font-family:var(--font-mono);color:var(--ink)}.statusbar__sep{width:var(--hairline);height:16px;background:var(--rule)}.presence{display:flex;align-items:center}.presence__avatar{width:24px;height:24px;border-radius:var(--r-pill);display:grid;place-items:center;font-family:var(--font-mono);font-size:10px;font-weight:700;color:var(--ink-inverse);border:2px solid var(--paper-raised);margin-left:-6px}.presence__avatar:first-child{margin-left:0}.presence__label{font-size:var(--text-xs);color:var(--ink-secondary);margin-left:var(--s2)}.modal-backdrop{position:fixed;inset:0;background:#0c0e0f6b;display:grid;place-items:center;padding:var(--s4);z-index:50}.modal{background:var(--paper-raised);border:var(--hairline) solid var(--rule-strong);border-radius:var(--r-panel);width:min(560px,100%);max-height:calc(var(--viewport-height, 100dvh) - 32px);display:flex;flex-direction:column;overflow:hidden}.modal__header{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);padding:var(--s3) var(--s4);border-bottom:var(--hairline) solid var(--rule)}.modal__title{font-size:var(--text-md);font-weight:600;margin:0}.modal__body{padding:var(--s4);overflow-y:auto}.modal__footer{flex-wrap:wrap;display:flex;align-items:center;gap:var(--s2);padding:var(--s3) var(--s4);border-top:var(--hairline) solid var(--rule)}.modal__footer .spacer{flex:1}.code{font-family:var(--font-mono);font-size:var(--text-xs);line-height:1.6;white-space:pre;overflow:auto;background:var(--paper);border:var(--hairline) solid var(--rule);border-radius:var(--r-control);padding:var(--s3);margin:0;max-height:46vh;color:var(--ink)}.field__input--mono{font-family:var(--font-mono);font-size:var(--text-xs)}.note{font-size:var(--text-xs);color:var(--ink-secondary);line-height:1.5;margin:var(--s3) 0 0}.note--warn{color:var(--warn)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;left:var(--s3);top:-100px;z-index:100;background:var(--ink);color:var(--ink-inverse);padding:var(--s2) var(--s3);border-radius:var(--r-control);font-size:var(--text-sm);text-decoration:none}.skip-link:focus{top:var(--s3)}.document-title{min-width:0}.document-title .docname{display:block;width:24ch;max-width:100%}.storage-label{display:block;padding-left:var(--s2);font-size:var(--text-xs);color:var(--ink-secondary)}.file-actions,.editor-toolbar,.history-tools,.drawing-tools{display:flex;align-items:center;gap:var(--s1)}.editor-toolbar{position:absolute;z-index:10;left:50%;bottom:max(12px,env(safe-area-inset-bottom));transform:translate(-50%);padding:var(--s1);gap:var(--s2);border:var(--hairline) solid var(--rule);border-radius:var(--r-panel);background:var(--paper-raised);max-width:calc(100% - 16px)}.icon-control{padding:0;justify-content:center;flex:none;width:44px}.workspace-icon{flex:none}.drawing-tools .btn{flex-shrink:0}.notation{position:absolute;top:4px;left:50%;transform:translate(-50%);width:190px}.history-tools{order:1;border-left:1px solid var(--rule);padding-left:var(--s2)}.tool-btn[aria-pressed=true],.key-toggle[aria-pressed=true]{background:var(--signal-quiet);color:var(--signal-strong);border-color:var(--signal)}.arrange-btn{order:2}.canvas-stage{position:relative;height:100%;min-width:0;min-height:0;overflow:clip}.canvas-wrap{height:100%}.viewport-tools{position:absolute;right:var(--s3);bottom:var(--s3);display:flex;z-index:10;border:1px solid var(--rule);background:var(--paper-raised);border-radius:var(--r-control)}.viewport-tools .btn{border-radius:0;justify-content:center;padding:6px 10px}.viewport-tools .zoom-value{min-width:64px;font-family:var(--font-mono)}.starter-actions{display:flex;flex-wrap:wrap;gap:var(--s2);justify-content:center}.workspace-panel{display:none;position:absolute;z-index:20;top:80px;bottom:80px;width:min(320px,calc(100% - 96px));flex-direction:column;min-height:0;min-width:0;border:1px solid var(--rule-strong);border-radius:var(--r-panel);background:var(--paper-raised);overflow:hidden}.workspace-panel[data-open=true]{display:flex}.workspace-panel--left{left:72px}.workspace-panel--right{right:12px}.workspace-panel>:last-child{overflow-y:auto;overscroll-behavior:contain;min-height:0}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);padding:var(--s2) var(--s3);border-bottom:1px solid var(--rule);flex:none;min-height:61px}.panel-header .seg{flex:1}.panel-header--right{font-weight:600}.panel-close{display:inline-flex;align-items:center;justify-content:center;flex:none;font-size:22px;padding:0}.panel-close--phone,.panel-navigation__label{display:none}.panel-navigation{position:absolute;z-index:25;top:50%;left:12px;transform:translateY(-50%);display:flex;flex-direction:column;padding:var(--s1);gap:var(--s1);border:1px solid var(--rule);border-radius:var(--r-panel);background:var(--paper-raised)}.panel-navigation .btn{width:44px;padding:0;justify-content:center}.panel-navigation [aria-expanded=true]{color:var(--signal-strong);background:var(--signal-quiet);border-color:var(--signal)}.focus-exit{position:absolute;z-index:30;top:12px;right:12px;background:var(--paper-raised);border-color:var(--rule)}.app[data-focus=true] .topbar,.app[data-focus=true] .editor-toolbar,.app[data-focus=true] .panel-navigation,.app[data-focus=true] .viewport-tools,.app[data-focus=true] .connection-guidance,.app[data-focus=true] .canvas-status{display:none}.outline,.help-panel{padding:var(--s4)}.outline__list{list-style:none;padding:0;margin:var(--s3) 0}.outline__item,.issue-link{display:flex;flex-direction:column;align-items:flex-start;width:100%;padding:8px;min-height:52px;background:transparent;color:var(--ink);border:1px solid transparent;border-bottom-color:var(--rule);font:inherit;text-align:left;cursor:pointer;overflow-wrap:anywhere}.outline__item:hover,.issue-link:hover{background:var(--paper)}.outline__item[aria-pressed=true]{border-color:var(--signal);background:var(--signal-quiet)}.outline__kind{font-size:var(--text-xs);color:var(--ink-secondary)}.diagram-checks{margin-top:var(--s5);padding-top:var(--s3);border-top:1px solid var(--rule)}.diagram-checks>.btn{width:100%;justify-content:space-between}.count{font-family:var(--font-mono)}.issue-link{font-size:var(--text-xs);color:var(--warn);line-height:1.5}.help-panel p,.help-panel dd,.help-panel li{font-size:var(--text-sm);color:var(--ink-secondary)}.help-intro{margin-bottom:var(--s4)}.help-section{border-top:var(--hairline) solid var(--rule)}.help-section__summary{display:flex;align-items:center;gap:var(--s2);cursor:pointer;padding:var(--s3) 0;list-style:none}.help-section__summary::-webkit-details-marker{display:none}.help-section__summary:before{content:"";flex:none;width:7px;height:7px;border-right:2px solid var(--ink-tertiary);border-bottom:2px solid var(--ink-tertiary);transform:rotate(-45deg);transition:transform var(--t-fast) var(--ease-out)}.help-section[open]>.help-section__summary:before{transform:rotate(45deg)}.help-section__summary:hover:before{border-color:var(--signal)}.help-section__summary:focus-visible{outline:2px solid var(--signal);outline-offset:2px;border-radius:var(--r-control)}.help-section__summary h3{margin:0;font-size:var(--text-base)}.help-section__body{padding:0 0 var(--s4) calc(7px + var(--s2))}.help-section__body>:first-child{margin-top:0}.help-list{margin:var(--s2) 0;padding-left:1.1em;display:grid;gap:var(--s2)}.help-list li{line-height:1.5}.help-panel .help-label{font-weight:600;color:var(--ink);margin-bottom:var(--s1)}.help-panel code{font-family:var(--font-mono);font-size:var(--text-xs)}.help-legend,.shortcut-list{margin:var(--s4) 0}.help-legend>div{margin-bottom:var(--s3)}.help-legend dt{display:flex;align-items:center;gap:var(--s2);font-weight:600;font-size:var(--text-sm);color:var(--ink)}.help-legend dd,.shortcut-list dd{margin:var(--s1) 0 0}.relationship-example{border-block:1px solid var(--rule);padding:var(--s3) 0;line-height:1.8}.relationship-example strong{color:var(--signal-strong);font-family:var(--font-mono)}.shortcut-list>div{margin-bottom:var(--s3)}kbd{font:13px var(--font-mono)}.examples{margin-top:var(--s4)}.example-row{display:grid;grid-template-columns:100px 1fr auto;gap:var(--s3);text-align:left;align-items:center;width:100%;min-height:110px;padding:var(--s3) 0;border:0;border-top:1px solid var(--rule);background:transparent;color:var(--ink);font:inherit;cursor:pointer}.example-row:hover{background:var(--paper)}.example-row__ratio{font:14px var(--font-mono);color:var(--signal-strong)}.example-row__description{display:block;color:var(--ink-secondary);font-size:var(--text-xs);margin-top:var(--s1)}.attribute-kinds{flex-wrap:wrap}.attribute-kinds .seg__btn{flex:1 0 33%;border-bottom:1px solid var(--rule)}.attr-list__item>.btn:first-child{min-width:0;flex:1;white-space:normal;text-align:left;overflow-wrap:anywhere}.attr-list__item input[type=checkbox]{width:24px;height:24px;margin:10px;accent-color:var(--signal)}.attribute-add,.participant-add{width:100%;justify-content:center;margin-top:var(--s3)}.field__heading,.participant-row__header{display:flex;align-items:center;justify-content:space-between;gap:var(--s2)}.field__heading h3{margin:0;font-size:var(--text-base)}.field__heading span{color:var(--ink-tertiary);font-family:var(--font-mono)}.field__help--error{color:var(--danger)}.field__input[aria-invalid=true]{border-color:var(--danger)}.participant-editor{margin:var(--s5) 0}.ratio-preview{margin:var(--s3) 0;padding:var(--s3);background:var(--paper);border-left:2px solid var(--signal);font-family:var(--font-mono);font-size:var(--text-xs);overflow-wrap:anywhere}.participant-row{margin:var(--s3) 0;padding:var(--s2) 0 var(--s3);border-block:1px solid var(--rule)}.participant-row>.field__label{margin-top:var(--s3)}.participation-choice{margin-top:var(--s3)}.advanced-participation summary{cursor:pointer;min-height:44px;display:list-item;padding:12px 0;color:var(--ink-secondary);font-size:var(--text-xs)}.crow-row__hit{fill:transparent}.crow-row--editable{cursor:pointer}.crow-row--editable:hover .crow-row__hit{fill:var(--signal-quiet)}.crow-row:focus-visible{outline:none}.crow-row:focus-visible .crow-row__hit{fill:var(--signal-quiet);stroke:var(--signal);stroke-width:2}.crow-row--connectable{cursor:crosshair}.crow-row--connectable:hover .crow-row__hit,.crow-row--connecting .crow-row__hit{fill:var(--signal-quiet)}.crow-row--connecting .crow-row__hit{stroke:var(--signal);stroke-width:2}.connection-ports circle{fill:var(--paper-raised);stroke:var(--signal);stroke-width:1.5}.crow-link__path{fill:none}.crow-link:focus-visible{outline:none}.crow-link:focus-visible .leg{stroke:var(--signal);stroke-width:2}.crow-row text{pointer-events:none}.feedback{position:fixed;bottom:80px;left:50%;transform:translate(-50%);z-index:40;display:flex;align-items:center;gap:var(--s3);max-width:calc(100% - 24px);border:1px solid var(--rule-strong);background:var(--paper-raised);padding:var(--s2) var(--s3);pointer-events:none}.feedback button{pointer-events:auto}.feedback span{overflow-wrap:anywhere}.feedback--error{border-color:var(--danger)}.connection-guidance{position:absolute;z-index:10;top:76px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:var(--s2);background:var(--paper-raised);border:1px solid var(--rule);padding-left:var(--s3);white-space:nowrap}.connection-guidance .btn{min-height:44px}.loading-editor{display:grid;place-content:center;height:100dvh}.snapshot-option{display:flex;align-items:center;gap:8px;min-height:44px;cursor:pointer}.snapshot-option input{width:18px;height:18px;accent-color:var(--signal)}@media(max-width:1099px){.document-title .docname{width:19ch}.presence{display:none}}@media(max-width:767px){.topbar{top:8px;left:8px;right:8px}.type-fields{flex-wrap:wrap}.type-fields .field__select{flex:1 1 100%}.field__input--number{flex:1 1 0;width:auto;min-height:44px}.enum-values{min-height:44px}.theme-picker__options{grid-template-columns:1fr}.document-title{flex:1}.document-title .docname{width:100%;min-width:0;padding:6px;font-size:16px}.topbar__spacer,.header-export,.header-share{display:none}.editor-toolbar{bottom:calc(8px + env(safe-area-inset-bottom));gap:4px}.notation{top:64px;left:auto;right:0;transform:none}.history-tools{padding-left:4px}.drawing-tools{gap:0}.workspace-panel{inset:auto 8px calc(120px + env(safe-area-inset-bottom));width:auto;max-height:45%}.panel-header{padding:6px 12px;min-height:56px}.panel-header .seg{max-width:240px}.panel-header--right{padding-left:16px}.panel-close--desktop{display:none}.panel-close--phone{display:inline;font-size:14px}.panel-close{padding-inline:12px}.rail,.outline,.inspector,.help-panel{padding:12px 16px 20px}.field__input,.field__select,.field__input--mono{font-size:16px}.canvas-status{top:124px;left:8px;right:8px;width:fit-content;max-width:calc(100% - 16px);flex-wrap:wrap;font:13px var(--font-sans);gap:4px}.table-legend{flex-basis:100%}.canvas-empty{padding:12px}.canvas-empty__card{padding:20px 16px;gap:12px}.canvas-empty__hint{display:none}.starter-actions{flex-direction:column;width:100%}.starter-actions .btn{justify-content:center;white-space:normal}.viewport-tools{right:8px;top:76px;bottom:auto}.viewport-tools .zoom-value{display:none}.app:has(.workspace-panel[data-open=true]) .viewport-tools{display:none}.connection-guidance{top:124px;max-width:calc(100% - 16px);font-size:13px}.panel-navigation{top:auto;bottom:calc(64px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);flex-direction:row;width:min(304px,calc(100% - 16px))}.panel-navigation .btn{flex:1;width:auto;gap:4px}.panel-navigation__label{display:inline;font-size:12px}.panel-navigation .workspace-icon{width:18px;height:18px}.editor-toolbar .arrange-btn{display:none}.feedback{width:calc(100% - 16px);gap:8px;padding:8px;bottom:136px;font-size:13px}.modal-backdrop{padding:8px}.modal{max-height:calc(var(--viewport-height, 100dvh) - 16px)}.modal__header,.modal__body,.modal__footer{padding:12px}.example-row{grid-template-columns:72px 1fr;gap:8px}.example-row>span:last-child{display:none}}@media(max-width:767px){.app[data-keyboard=true] .topbar,.app[data-keyboard=true] .panel-navigation,.app[data-keyboard=true] .viewport-tools,.app[data-keyboard=true] .editor-toolbar{display:none}.app[data-keyboard=true] .workspace-panel{bottom:8px;max-height:70%}}
