:root,[data-theme=dark]{--canvas:#111;--canvas-bg:#111;--header:#1a1a1a;--panel:#3b3a38;--menu:#141414;--control:#f3f1ec;--on-control:#1a1a1a;--field:#ece9e3;--on-field:#1a1a1a;--text:#f3f1ec;--text-muted:#c8c4bc;--panel-text:#f3f1ec;--panel-muted:#d4d0c8;--danger:#f0b4ac;--canvas-dot:#3a3a3a;--node-fill:#111;--node-stroke:#f0f0f0;--label:#fff;--label-muted:#d4d0c8;--family-line:#f0f0f0;--home-stroke:#d4d0c8;--home-fill:#ffffff14;--scroll-thumb:#2a2a2a;--sans:"Tienne", Georgia, serif;--serif:"Tienne", Georgia, serif;--active:#e8d5a8;--on-active:#1a1a1a;--select-fill:#e8d5a866;--accent:#e8d5a8}[data-theme=light]{--canvas:#f4f1ea;--canvas-bg:#f4f1ea;--header:#1f1e1c;--panel:#e8e2d6;--menu:#1a1a18;--control:#f4f1ea;--on-control:#1f1e1c;--field:#fbf9f4;--on-field:#1f1e1c;--text:#f4f1ea;--text-muted:#cfc9bd;--panel-text:#1f1e1c;--panel-muted:#5a574f;--danger:#ffb4ab;--canvas-dot:#d2cdc2;--node-fill:#f4f1ea;--node-stroke:#1f1e1c;--label:#1f1e1c;--label-muted:#5a574f;--family-line:#1f1e1c;--home-stroke:#5a574f;--home-fill:#1f1e1c14;--scroll-thumb:#b8b2a6;--active:#b8892d;--on-active:#1f1e1c;--select-fill:#b8892d47;--accent:#b8892d}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--sans);color:var(--text);background:var(--canvas);font-size:15px;font-weight:400}button,input,select{font-family:inherit}:focus{outline:none}:focus-visible{background:var(--control);color:var(--on-control)}.skip-link{z-index:30;background:var(--control);color:var(--on-control);border:none;border-radius:0;padding:10px 14px;font-weight:700;position:absolute;top:-48px;left:12px}.skip-link:focus{top:8px}.app{flex-direction:column;height:100%;display:flex}.app-header{background:var(--header);min-height:48px;color:var(--text);justify-content:space-between;align-items:center;gap:20px;padding:8px 18px;display:flex}.app-brand-block{flex-direction:row;align-items:center;gap:10px;min-width:0;height:32px;display:flex}.app-logo{flex-shrink:0;width:32px;height:32px;display:block}.app-brand{height:32px;font-family:var(--serif);letter-spacing:.01em;color:var(--text);flex-shrink:0;align-items:center;margin:0;font-size:26px;font-weight:700;line-height:1;display:flex}.header-menus{align-items:center;gap:0;margin-left:4px;display:flex}.app-header .tool-button{height:32px;padding:0 10px}.toolbar-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px;display:flex}.tool-button{font:inherit;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:0;align-items:center;gap:6px;padding:8px 12px;font-size:14px;font-weight:400;line-height:1;transition:background-color .16s,color .16s,transform .12s;display:inline-flex}.tool-button:hover:not(:disabled),.tool-button:focus-visible{background:var(--control);color:var(--on-control)}.tool-button:active:not(:disabled){background:var(--active);color:var(--on-active);transform:scale(.97)}.tool-button:disabled{opacity:.55;cursor:default}.tool-button-on,.tool-button[aria-expanded=true],.tool-button[aria-pressed=true]{background:var(--active);color:var(--on-active)}.tool-button-on:hover:not(:disabled),.tool-button[aria-expanded=true]:hover:not(:disabled),.tool-button[aria-pressed=true]:hover:not(:disabled){background:var(--control);color:var(--on-control)}.tool-button-danger{color:var(--danger)}.tool-button-danger:hover:not(:disabled),.tool-button-danger:focus-visible{background:var(--control);color:var(--danger)}.material-symbols-outlined{letter-spacing:normal;text-transform:none;white-space:nowrap;font-variation-settings:"FILL" 0, "wght" 500, "GRAD" 0, "opsz" 20;-webkit-font-smoothing:antialiased;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-flex;overflow:hidden}.file-menu{position:relative}.file-menu-input{opacity:0;width:1px;height:1px;position:absolute;overflow:hidden}.file-menu-panel{background:var(--menu);z-index:20;border:none;border-radius:0;min-width:248px;padding:8px;position:absolute;top:calc(100% + 8px);left:0;box-shadow:0 16px 40px #00000073}.help-menu-panel{min-width:320px;max-width:400px}.help-tabs{gap:0;margin-bottom:8px;display:flex}.help-tab{font:inherit;color:#c8c8c8;cursor:pointer;background:0 0;border:none;border-radius:0;flex:1;padding:9px 12px;font-size:13px;font-weight:400;line-height:1}.help-tab:hover,.help-tab:focus-visible{color:#fff;background:#2e2e2e}.help-tab.is-on{background:var(--active);color:var(--on-active)}.help-copy{flex-direction:column;gap:14px;max-height:min(70vh,520px);padding:4px 8px 6px;display:flex;overflow:auto}.help-block h3{letter-spacing:.06em;text-transform:uppercase;color:#c8c8c8;margin:0 0 6px;font-size:11px;font-weight:400;line-height:1.2}.help-block ul{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.help-block li{color:#fff;margin:0;font-size:13px;line-height:1.45}.help-shortcut-list li{align-items:center;gap:8px;display:flex}.help-shortcut{flex-shrink:0;align-items:center;display:inline-flex}.help-shortcut-join{color:#8a8a8a;margin:0 3px;font-size:12px}.help-copy kbd{font:inherit;color:#fff;white-space:nowrap;background:#2e2e2e;border:1px solid #4a4a4a;border-radius:0;padding:2px 6px;font-size:12px;line-height:1.2;display:inline-block}.help-form{flex-direction:column;gap:10px;padding:4px 8px 6px;display:flex}.help-field{letter-spacing:.04em;text-transform:uppercase;color:#c8c8c8;flex-direction:column;gap:6px;font-size:11px;font-weight:700;display:flex}.help-field select,.help-field textarea{font:inherit;letter-spacing:0;text-transform:none;color:#fff;resize:vertical;background:#2e2e2e;border:none;border-radius:0;outline:none;padding:9px 11px;font-size:14px;font-weight:400}.help-field select:focus,.help-field textarea:focus{background:#3a3a3a}.help-form-hint{color:#c8c8c8;margin:0;font-size:12px;line-height:1.4}.help-send{color:#fff;align-self:flex-start}.file-menu-item{width:100%;font:inherit;color:#fff;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:0;justify-content:space-between;align-items:center;gap:24px;padding:9px 12px;font-size:13px;font-weight:400;line-height:1;transition:background-color .16s,color .16s;display:flex}.file-menu-item:hover:not(:disabled),.file-menu-item:focus-visible{color:#fff;background:#2e2e2e}.file-menu-item:disabled{color:#c8c8c8;cursor:default}.file-menu-item-danger{color:#ffb4ab}.file-menu-shortcut{color:#c8c8c8;font-size:11px;font-weight:400;line-height:1}.tool-caret{width:16px;height:16px;margin-left:2px;font-size:16px}.menu-section{letter-spacing:.08em;text-transform:uppercase;color:#c8c8c8;margin:8px 12px 4px;font-size:11px;font-weight:700}.menu-section:first-child{margin-top:2px}.lang-row{gap:6px;padding:4px 8px 8px;display:flex}.lang-button{font:inherit;color:#fff;cursor:pointer;background:0 0;border:none;border-radius:0;flex:1;align-items:center;gap:6px;padding:8px 10px;font-size:13px;line-height:1;display:inline-flex}.lang-button:hover,.lang-button:focus-visible{background:#2e2e2e}.lang-button[aria-pressed=true]{background:var(--active);color:var(--on-active)}.lang-flag{flex-shrink:0;width:20px;height:14px;display:block;box-shadow:0 0 0 1px #ffffff40}.menu-item-lead{align-items:center;gap:8px;display:inline-flex}.app-body{flex:1;min-height:0;display:flex}.app-workspace{background:var(--canvas);flex:1;min-width:0;min-height:0;position:relative}.diagram-wrap{width:100%;height:100%;min-height:0;position:relative}.canvas-hud{z-index:2;pointer-events:none;max-width:min(280px,100% - 24px);position:absolute;bottom:12px;left:12px}.canvas-hud-tip,.canvas-hud-warn{font-size:11px;line-height:1.35;font-family:var(--serif);opacity:.5;text-shadow:0 0 6px var(--canvas-bg);margin:0 0 4px}.canvas-hud-tip{color:var(--label)}.canvas-hud-warn{color:var(--accent)}.diagram-svg{-webkit-user-select:none;user-select:none;cursor:default;width:100%;height:100%;display:block}.diagram-svg.is-panning{cursor:grabbing}.diagram-svg.is-adding{cursor:crosshair}.diagram-svg.is-dragging-label{cursor:grabbing}.diagram-svg.is-dragging-bar,.diagram-svg.is-dragging-bar .union-shape,.diagram-svg.is-dragging-bar .family-tree,.diagram-svg.is-dragging-bar .family-bar-hit{cursor:ns-resize}.family-bar-hit{cursor:ns-resize;pointer-events:all}.person-node,.union-shape,.emotional-shape,.home-shape,.sticky-note{cursor:pointer}.sticky-note-resize{cursor:nwse-resize}.diagram-label{cursor:grab}.diagram-label-hit{fill:#0000}.diagram-svg.is-dragging-label .person-node,.diagram-svg.is-dragging-label .union-shape,.diagram-svg.is-dragging-label .emotional-shape,.diagram-svg.is-dragging-label .diagram-label{cursor:grabbing}.diagram-svg.is-adding .person-node,.diagram-svg.is-adding .union-shape,.diagram-svg.is-adding .emotional-shape,.diagram-svg.is-adding .home-shape,.diagram-svg.is-adding .diagram-label{cursor:crosshair}.mode-banner{pointer-events:none}.inspector{background:var(--panel);width:300px;color:var(--panel-text);-webkit-user-select:none;user-select:none;flex-direction:column;flex-shrink:0;padding:0;display:flex;overflow:hidden}.inspector-body{flex-direction:column;flex:1;min-height:0;padding:18px 18px 16px;display:flex;overflow-y:auto}.donate-footer{flex-direction:column;flex-shrink:0;gap:8px;padding:12px 18px 16px;display:flex}.donate-footer.is-hidden{display:none}.donate-label{letter-spacing:.08em;text-transform:uppercase;color:var(--panel-muted);margin:0;font-size:12px;font-weight:700}#donate-button-container,#donate-button{line-height:0}#donate-button iframe,#donate-button img{width:auto;max-height:32px;display:block}.inspector-stack{flex-direction:column;flex:1;gap:12px;min-height:0;display:flex}.inspector .tool-button{width:100%;color:var(--panel-text);justify-content:flex-start}.inspector .tool-button:hover:not(:disabled),.inspector .tool-button:focus-visible{background:var(--control);color:var(--on-control)}.inspector .tool-button:active:not(:disabled),.inspector .tool-button[aria-pressed=true]{background:var(--active);color:var(--on-active)}.inspector-title{font-family:var(--serif);letter-spacing:.04em;text-transform:uppercase;color:var(--panel-muted);margin:0;font-size:18px;font-weight:700}.inspector-hint{color:var(--panel-muted);margin:0;font-size:14px;line-height:1.45}.selected-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.selected-list li{color:var(--panel-text);background:var(--select-fill);padding:6px 8px;font-size:14px}.field{letter-spacing:.04em;text-transform:uppercase;color:var(--panel-muted);flex-direction:column;gap:6px;font-size:12px;font-weight:700;display:flex}.field input,.field select,.field textarea{font:inherit;letter-spacing:0;text-transform:none;color:var(--on-field);background:var(--field);-webkit-user-select:text;user-select:text;border:none;border-radius:0;outline:none;padding:9px 11px;font-size:14px;font-weight:400}.field textarea{resize:vertical;min-height:140px;line-height:1.4}.field input:focus,.field select:focus,.field textarea:focus{color:#141414;background:#fff}.inspector-legend{flex-direction:column;gap:8px;margin-top:auto;padding-top:20px;display:flex}.inspector-subtitle{letter-spacing:.08em;text-transform:uppercase;color:var(--panel-muted);margin:8px 0 0;font-size:12px;font-weight:700}.check{letter-spacing:0;text-transform:none;color:var(--panel-text);cursor:pointer;align-items:center;gap:8px;font-size:13px;font-weight:400;line-height:1;display:flex}.check input{accent-color:var(--control);flex-shrink:0;width:16px;height:16px;margin:0}.swatch{border-radius:2px;flex-shrink:0;width:10px;height:10px}.swatch.triangle{clip-path:polygon(50% 0,100% 100%,0 100%)}.legend-row{color:var(--panel-muted);align-items:center;gap:8px;margin:0;font-size:13px;line-height:1;display:flex}.export-ask{z-index:40;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.export-ask-card{background:var(--menu);color:#fff;width:min(360px,100vw - 32px);padding:20px}.export-ask-title{color:#fff;margin:0 0 8px;font-size:18px;font-weight:400;line-height:1.2}.export-ask-body{color:#c8c8c8;margin:0 0 16px;font-size:14px;line-height:1.4}.export-ask-actions{flex-direction:column;gap:8px;display:flex}.export-ask-actions .tool-button{justify-content:center;width:100%}.inspector-body::-webkit-scrollbar{width:10px}.inspector-body::-webkit-scrollbar-thumb{background:var(--scroll-thumb)}@media (prefers-reduced-motion:reduce){.tool-button,.file-menu-item{transition:none}.tool-button:active:not(:disabled){transform:none}}@media (forced-colors:active){.tool-button,.file-menu-item,.field input,.field select,.field textarea,.file-menu-panel{border:1px solid buttontext}.person-node.is-selected,.union-shape.is-selected,.home-shape.is-selected,.sticky-note.is-selected{outline-offset:4px;outline:3px solid highlight}}
