.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 .5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#777;--xy-background-pattern-lines-color-default:#777;--xy-background-pattern-cross-color-default:#777;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 .5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.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__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray: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.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.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-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;color:var(--xy-node-color,var(--xy-node-color-default));text-align:center;border:var(--xy-node-border,var(--xy-node-border-default));background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));padding:10px;font-size:12px}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.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:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.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-button:hover{background:var(--xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default)));color:var(--xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default)))}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)))}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.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{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.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:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}body{color:#f6fbff;background:radial-gradient(circle at 20% 18%,#00f2fe1f,#0000 28%),radial-gradient(circle at 86% 12%,#ff3b6b24,#0000 30%),#05060d;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,select,textarea{font:inherit}@keyframes border-dance{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes neon-glow{0%{box-shadow:0 0 10px #00f2fe3d,0 0 22px #ff3b6b1f,inset 0 0 14px #7a5cff14}50%{box-shadow:0 0 22px #00f2fe7a,0 0 34px #ff3b6b3d,inset 0 0 22px #7a5cff29}to{box-shadow:0 0 10px #00f2fe3d,0 0 22px #ff3b6b1f,inset 0 0 14px #7a5cff14}}@keyframes dash{0%{stroke-dashoffset:28px}to{stroke-dashoffset:0}}@keyframes wedding-title-rise{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes wedding-title-shimmer{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes wedding-title-glow{0%,to{text-shadow:0 0 10px color-mix(in srgb, var(--accent) 20%, transparent), 0 0 18px color-mix(in srgb, var(--accent-2) 12%, transparent)}50%{text-shadow:0 0 16px color-mix(in srgb, var(--accent) 34%, transparent), 0 0 28px color-mix(in srgb, var(--accent-2) 20%, transparent)}}@keyframes watermark-shimmer{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes watermark-breathe{0%,to{opacity:.58;text-shadow:0 0 18px color-mix(in srgb, var(--accent) 14%, transparent)}50%{opacity:.78;text-shadow:0 0 24px color-mix(in srgb, var(--accent) 22%, transparent), 0 0 40px color-mix(in srgb, var(--accent-2) 14%, transparent)}}@keyframes invitation-card-out{0%{opacity:0;transform:translate(-50%,calc(-50% - 150px))scale(.52)}45%{opacity:.86;transform:translate(-50%,calc(-50% - 52px))scale(.84)}78%{opacity:1;transform:translate(-50%,-49%)scale(1.015)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes invitation-door-pulse{0%,to{box-shadow:0 0 0 1px color-mix(in srgb, var(--accent-3) 42%, transparent), 0 0 20px color-mix(in srgb, var(--accent) 18%, transparent)}50%{box-shadow:0 0 0 1px color-mix(in srgb, var(--accent-3) 62%, transparent), 0 0 34px color-mix(in srgb, var(--accent-2) 24%, transparent)}}.family-tree-shell{--bg:#05060d;--bg-soft:#080b14;--surface:#080a12e6;--surface-strong:#070a13f0;--text:#f6fbff;--menu-text:#eefcff;--muted:#98a8bc;--meta:#b6c2d0;--accent:#00f2fe;--accent-2:#ff3b6b;--accent-3:#ffdf6e;--node-bg-1:#121826e0;--node-bg-2:#080a12eb;--shadow:#00000057;--glow:#00f2fe3d;--border:#00f2fe38;--toolbar-bg:#070a13bd;--button-bg:linear-gradient(135deg, #00f2fe38, #ff3b6b2e);--button-bg-hover:linear-gradient(135deg, #00f2fe57, #ff3b6b42);--node-gradient:linear-gradient(90deg, #00f2fe, #7a5cff, #080b14, #ff3b6b, #ffdf6e);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:radial-gradient(circle at 20% 18%, color-mix(in srgb, var(--accent) 14%, transparent), transparent 28%), radial-gradient(circle at 86% 12%, color-mix(in srgb, var(--accent-2) 14%, transparent), transparent 30%), linear-gradient(135deg, color-mix(in srgb, var(--bg) 92%, transparent), color-mix(in srgb, var(--bg-soft) 88%, transparent)), var(--bg);width:100vw;height:100dvh;min-height:100vh;color:var(--text);position:relative;overflow:hidden}.canvas-watermark{z-index:1;pointer-events:none;width:100vw;color:color-mix(in srgb, var(--text) 11%, transparent);background:linear-gradient(90deg, color-mix(in srgb, var(--text) 10%, transparent), color-mix(in srgb, var(--accent) 24%, transparent), color-mix(in srgb, var(--accent-3) 18%, transparent), color-mix(in srgb, var(--text) 10%, transparent));-webkit-text-fill-color:transparent;letter-spacing:.16em;text-align:center;text-transform:uppercase;text-shadow:0 0 24px color-mix(in srgb, var(--accent) 18%, transparent);opacity:.76;-webkit-user-select:none;user-select:none;white-space:nowrap;background-size:240% 100%;-webkit-background-clip:text;background-clip:text;font-size:clamp(28px,11vw,92px);font-weight:900;line-height:1;animation:8s ease-in-out infinite watermark-shimmer,5.6s ease-in-out infinite watermark-breathe;position:fixed;top:18px;left:0}.canvas-watermark:before{content:"";background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--accent) 18%, transparent), transparent);opacity:.44;width:min(92vw,760px);height:1px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.canvas-watermark-wedding{color:color-mix(in srgb, var(--accent-3) 18%, transparent);-webkit-text-fill-color:currentColor;letter-spacing:.16em;opacity:.7;background:0 0;font-size:clamp(16px,5vw,38px);top:clamp(62px,14vw,118px)}.canvas-watermark-wedding:before{display:none}.wedding-invitation-stage{z-index:5;pointer-events:none;perspective:900px;justify-items:center;width:100vw;display:grid;position:fixed;top:clamp(150px,18vh,220px);left:0}.wedding-door-button{pointer-events:auto;cursor:pointer;touch-action:manipulation;background:0 0;border:0;place-items:center;width:74px;height:92px;padding:0;display:grid;position:relative}.wedding-door-frame{border:2px solid color-mix(in srgb, var(--accent-3) 58%, #fff);background:radial-gradient(circle at 50% 8%, color-mix(in srgb, var(--accent) 22%, transparent), transparent 36%), var(--surface-strong);border-radius:32px 32px 8px 8px;width:62px;height:82px;animation:3s ease-in-out infinite invitation-door-pulse;display:block;position:relative;overflow:hidden}.wedding-door-frame:before{content:"";background:linear-gradient(90deg, transparent, var(--accent-3), transparent);opacity:.75;height:1px;position:absolute;inset:8px 10px auto}.wedding-door-panel{background:linear-gradient(135deg, color-mix(in srgb, var(--accent-2) 22%, transparent), transparent 54%), linear-gradient(180deg, color-mix(in srgb, var(--accent-3) 20%, var(--surface)), var(--surface-strong));border-top:1px solid color-mix(in srgb, var(--accent-3) 42%, transparent);width:50%;transition:transform .56s cubic-bezier(.2,.72,.2,1);position:absolute;top:12px;bottom:0}.wedding-door-left{border-right:1px solid color-mix(in srgb, var(--accent-3) 42%, transparent);transform-origin:0;left:0}.wedding-door-right{border-left:1px solid color-mix(in srgb, var(--accent-3) 42%, transparent);transform-origin:100%;right:0}.wedding-door-knob{z-index:2;background:var(--accent-3);width:6px;height:6px;box-shadow:0 0 10px color-mix(in srgb, var(--accent-3) 70%, transparent);border-radius:50%;transition:opacity .24s;position:absolute;top:48px}.wedding-door-knob-left{left:26px}.wedding-door-knob-right{right:26px}.wedding-invitation-stage.is-open .wedding-door-left{transform:rotateY(-68deg)}.wedding-invitation-stage.is-open .wedding-door-right{transform:rotateY(68deg)}.wedding-invitation-stage.is-open .wedding-door-knob{opacity:.4}.wedding-invitation-backdrop{z-index:8;background:radial-gradient(circle at 50% 44%, color-mix(in srgb, var(--accent) 10%, transparent), transparent 38%), #00000057;cursor:pointer;border:0;padding:0;position:fixed;inset:0}.wedding-invitation-card{z-index:9;pointer-events:auto;width:calc(100vw - 24px);max-width:520px;height:auto;color:var(--text);border:1px solid var(--border);background:var(--bg-soft);box-shadow:0 20px 70px var(--shadow), 0 0 34px color-mix(in srgb, var(--accent) 14%, transparent);text-align:center;will-change:transform, opacity;transform-origin:50%;border-radius:8px;padding:18px;animation:.82s cubic-bezier(.16,1,.3,1) .14s both invitation-card-out;position:fixed;top:50%;left:50%;overflow:visible}.wedding-invitation-kicker{color:var(--accent-3);letter-spacing:.16em;text-transform:uppercase;margin:4px 0 7px;font-size:11px;font-weight:900}.wedding-invitation-lines{text-align:left;gap:7px;margin-top:12px;display:grid}.wedding-gallery-link{justify-content:center;width:100%;margin-top:16px!important;display:flex!important}.wedding-invitation-video,.wedding-invitation-video-link{margin-top:10px}.wedding-invitation-video.wedding-video-direct{max-height:min(24dvh,180px)}.wedding-invitation-video.wedding-video-frame{aspect-ratio:16/8.6}.theme-aurora{--bg:#100b1f;--bg-soft:#19112b;--surface:#18112be6;--surface-strong:#161026f2;--text:#fff8ff;--menu-text:#fff8ff;--muted:#c9b8db;--meta:#dccde8;--accent:#8af7ff;--accent-2:#ff6fb7;--accent-3:#b7ff7a;--node-bg-1:#2c1f44e6;--node-bg-2:#140e24f0;--shadow:#00000061;--glow:#ff6fb73d;--border:#ff6fb747;--toolbar-bg:#18112bc7;--button-bg:linear-gradient(135deg, #8af7ff38, #ff6fb738);--button-bg-hover:linear-gradient(135deg, #8af7ff57, #ff6fb74d);--node-gradient:linear-gradient(90deg, #8af7ff, #9e74ff, #19112b, #ff6fb7, #b7ff7a)}.theme-lumen{--bg:#f8fbff;--bg-soft:#eef4fb;--surface:#ffffffe6;--surface-strong:#fffffffa;--text:#172033;--menu-text:#172033;--muted:#5f6f86;--meta:#526277;--accent:#07f;--accent-2:#d8204a;--accent-3:#8b5e00;--node-bg-1:#ffffffeb;--node-bg-2:#edf4fcf0;--shadow:#25365233;--glow:#07f3;--border:#0077ff3d;--toolbar-bg:#ffffffd1;--button-bg:linear-gradient(135deg, #0077ff24, #d8204a1f);--button-bg-hover:linear-gradient(135deg, #0077ff38, #d8204a2e);--node-gradient:linear-gradient(90deg, #07f, #49b6ff, #fff, #d8204a, #ffca5c)}.theme-rustforge{--bg:#130c09;--bg-soft:#20130d;--surface:#24140de6;--surface-strong:#1f120cf5;--text:#fff3e4;--menu-text:#fff3e4;--muted:#d5a783;--meta:#e0b894;--accent:#ff6a2a;--accent-2:#ff2e63;--accent-3:#ffd166;--node-bg-1:#3a1e10eb;--node-bg-2:#1b100bf0;--shadow:#00000073;--glow:#ff6a2a47;--border:#ff6a2a52;--toolbar-bg:#24140dc7;--button-bg:linear-gradient(135deg, #ff6a2a42, #ff2e632e);--button-bg-hover:linear-gradient(135deg, #ff6a2a61, #ff2e6347);--node-gradient:linear-gradient(90deg, #ff6a2a, #ffd166, #20130d, #ff2e63, #ff9f1c)}.theme-embersteel{--bg:#101112;--bg-soft:#1a1716;--surface:#1d1918e6;--surface-strong:#181616f5;--text:#fff0e8;--menu-text:#fff0e8;--muted:#bda69d;--meta:#d6c0b6;--accent:#ff4d2e;--accent-2:#ffb000;--accent-3:#47ffe0;--node-bg-1:#2a2321eb;--node-bg-2:#121111f0;--shadow:#0000007a;--glow:#ff4d2e47;--border:#ff4d2e4d;--toolbar-bg:#1d1918c7;--button-bg:linear-gradient(135deg, #ff4d2e3d, #47ffe029);--button-bg-hover:linear-gradient(135deg, #ff4d2e5c, #47ffe042);--node-gradient:linear-gradient(90deg, #ff4d2e, #ffb000, #101112, #47ffe0, #ff2e63)}.theme-coppernight{--bg:#160e0a;--bg-soft:#24150e;--surface:#27160ee6;--surface-strong:#22130df5;--text:#fff7ed;--menu-text:#fff7ed;--muted:#d6aa85;--meta:#e4c0a0;--accent:#f97316;--accent-2:#c2410c;--accent-3:#39ff88;--node-bg-1:#371f12eb;--node-bg-2:#180e09f2;--shadow:#00000073;--glow:#f9731647;--border:#f9731652;--toolbar-bg:#27160ec7;--button-bg:linear-gradient(135deg, #f9731640, #39ff8824);--button-bg-hover:linear-gradient(135deg, #f9731661, #39ff883d);--node-gradient:linear-gradient(90deg, #f97316, #ffba08, #24150e, #c2410c, #39ff88)}.theme-tricolor{--bg:#f8fbff;--bg-soft:#eef5f1;--surface:#ffffffeb;--surface-strong:#fffffffa;--text:#16233a;--menu-text:#16233a;--muted:#5d6d7f;--meta:#4f5f70;--accent:#f93;--accent-2:#138808;--accent-3:navy;--node-bg-1:#fffffff5;--node-bg-2:#f0f8f3f5;--shadow:#2536522e;--glow:#ff993338;--border:#00008038;--toolbar-bg:#ffffffd6;--button-bg:linear-gradient(135deg, #ff99332e, #13880824);--button-bg-hover:linear-gradient(135deg, #ff993347, #13880838);--node-gradient:linear-gradient(90deg, #f93, #fff, navy, #fff, #138808)}.absolute-defs{width:0;height:0;position:absolute}.react-flow{background:0 0}.react-flow__pane{cursor:grab}.react-flow__pane:active{cursor:grabbing}.react-flow__edge-path{stroke-dasharray:9 7;transition:stroke .18s,filter .18s,stroke-width .18s;animation:24s linear infinite dash}.turbo-edge-hit{fill:none;stroke:#0000;stroke-width:28px;stroke-linecap:round;stroke-linejoin:round;pointer-events:stroke}.react-flow__edge-textbg{fill:var(--surface);stroke:color-mix(in srgb, var(--accent-3) 35%, transparent);stroke-width:1px;vector-effect:non-scaling-stroke}.react-flow__edge-text{fill:var(--accent-3);dominant-baseline:central;letter-spacing:0;pointer-events:none;font-size:13px;font-weight:700}.turbo-edge-label{border:1px solid var(--accent-3);background:var(--surface-strong);max-width:180px;color:var(--accent-3);text-align:center;white-space:normal;overflow-wrap:anywhere;box-shadow:0 0 10px color-mix(in srgb, var(--accent-3) 24%, transparent), 0 6px 18px #00000042;pointer-events:all;-webkit-user-select:none;user-select:none;border-radius:7px;justify-content:center;align-items:center;padding:3px 10px;font-size:13px;font-weight:800;line-height:1.15;display:inline-flex;position:absolute}.flow-controls{border:1px solid var(--border);background:var(--surface);box-shadow:0 0 24px color-mix(in srgb, var(--accent) 12%, transparent);border-radius:8px;overflow:hidden}.app-spinner-backdrop{z-index:2000;color:#f6fbff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:radial-gradient(circle at 50% 46%,#00f2fe38,#0000 34%),#05060db8}.app-spinner-panel{background:#070a13e6;border:1px solid #00f2fe38;border-radius:8px;min-width:210px;padding:22px 24px;box-shadow:0 18px 44px #00000059,0 0 24px #00f2fe29}.nfc-link-dialog .MuiPaper-root{color:#162033;background:#fff;border:1px solid #0077ff3d;border-radius:8px;width:calc(100vw - 24px);max-width:520px;box-shadow:0 18px 48px #00000052}.nfc-link-dialog .MuiInputBase-root,.nfc-link-dialog .MuiInputBase-input{color:#162033;background:#f8fbff}.nfc-link-dialog .MuiOutlinedInput-notchedOutline{border-color:#0077ff52}.mpin-dialog .MuiPaper-root{color:#162033;background:#fff;border:1px solid #0077ff3d;border-radius:8px;width:calc(100vw - 24px);max-width:420px;box-shadow:0 18px 48px #00000052}.mpin-dialog .MuiInputBase-root,.mpin-dialog .MuiInputBase-input,.mpin-dialog .MuiFormControlLabel-label,.mpin-dialog .MuiSvgIcon-root{color:#162033}.mpin-dialog .MuiOutlinedInput-notchedOutline{border-color:#0077ff52}.mpin-field-label{color:#526277;text-transform:uppercase;margin-bottom:8px;font-size:12px;font-weight:800}.mpin-box-row{width:100%}.mpin-box-row .MuiTextField-root{flex:1 1 0;min-width:0}.mpin-box-row .MuiInputBase-root{background:#f8fbff;border-radius:8px;height:56px}.mpin-box-row .MuiInputBase-input{text-align:center;height:56px;padding:0;font-size:24px;font-weight:900}.mpin-error-text{color:#d8204a;margin-top:-8px;font-size:12px;font-weight:700}.order-print-dialog .MuiPaper-root{width:calc(100vw - 32px);max-width:340px;color:var(--text);border:1px solid var(--border);background:var(--surface-strong);border-radius:8px;box-shadow:0 18px 48px #00000052}.order-print-actions{justify-content:center;padding-block:8px 12px}.order-print-button{min-width:74px;min-height:64px;color:var(--accent);border-color:var(--border);background:var(--button-bg)}.order-print-button .MuiSvgIcon-root{font-size:32px}.flow-controls button{color:var(--text);background:var(--surface);border-bottom:1px solid #ffffff14}.flow-controls button:hover{background:color-mix(in srgb, var(--accent) 14%, transparent)}.flow-minimap{border:1px solid var(--border);background:var(--surface);box-shadow:0 0 24px color-mix(in srgb, var(--accent) 12%, transparent);border-radius:8px}.layout-toolbar{border:1px solid var(--border);background:var(--toolbar-bg);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:8px;gap:10px;padding:10px;display:flex;box-shadow:0 14px 34px #00000057}.layout-toolbar .MuiButton-root,.theme-menu-button .MuiFab-root,.floating-action-menu .MuiFab-root{color:var(--text);border:1px solid var(--border);background:var(--button-bg);box-shadow:0 0 18px color-mix(in srgb, var(--accent) 14%, transparent);text-transform:none}.layout-toolbar .MuiButton-root:hover,.theme-menu-button .MuiFab-root:hover,.floating-action-menu .MuiFab-root:hover{background:var(--button-bg-hover);transform:translateY(-1px)}.node-limit-counter{pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;color:var(--meta);box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:0;padding:0;font-size:12px;font-weight:800}.theme-menu-button{top:max(12px, env(safe-area-inset-top));right:max(14px, env(safe-area-inset-right));z-index:10;position:absolute}.app-rights-note{right:max(12px, env(safe-area-inset-right));bottom:max(8px, env(safe-area-inset-bottom));z-index:8;pointer-events:none;color:var(--meta);letter-spacing:0;text-align:right;text-shadow:0 0 10px color-mix(in srgb, var(--bg) 70%, transparent);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;font-size:10px;font-weight:800;line-height:1.2;position:fixed}.floating-action-menu{right:16px;bottom:max(16px, env(safe-area-inset-bottom));z-index:10;pointer-events:none;align-items:center;width:56px;display:flex;position:absolute}.floating-action-menu .MuiFab-root{pointer-events:auto;flex:none;justify-content:center;align-items:center;display:inline-flex}.floating-action-menu .MuiSvgIcon-root{margin:0;display:block}.neon-menu .MuiPaper-root{max-width:calc(100vw - 24px);color:var(--menu-text);border:1px solid var(--border);background:var(--surface-strong);box-shadow:0 16px 44px var(--shadow), 0 0 22px color-mix(in srgb, var(--accent) 10%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:8px}.neon-menu .MuiMenuItem-root{gap:10px;min-width:180px;min-height:48px;display:flex}.neon-menu .MuiMenuItem-root.Mui-selected,.neon-menu .MuiMenuItem-root.Mui-selected:hover{color:var(--text);background:color-mix(in srgb, var(--accent) 18%, transparent)}.turbo-node-wrapper{filter:drop-shadow(0 18px 34px #00000059);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:0 0;border-radius:8px;padding:10px 0 0 50px;transition:transform .16s,box-shadow .16s;position:relative;overflow:visible}.turbo-node-wrapper:hover,.turbo-node-wrapper.is-selected{filter:drop-shadow(0 18px 34px #00000059) drop-shadow(0 0 22px color-mix(in srgb, var(--accent) 44%, transparent));transform:translateY(-2px)}.turbo-node-gradient{z-index:1;background:radial-gradient(circle at 16% 64%, color-mix(in srgb, var(--accent) 88%, transparent), transparent 38%), radial-gradient(circle at 88% 54%, color-mix(in srgb, var(--accent-2) 72%, transparent), transparent 38%);filter:blur(24px);opacity:.9;pointer-events:none;border-radius:8px;position:absolute;inset:22px -28px -26px 22px}.turbo-node-body{z-index:2;background:linear-gradient(180deg, var(--node-bg-1), var(--node-bg-2)), var(--surface);width:280px;min-height:150px;color:var(--text);box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 10%, transparent), 0 22px 54px color-mix(in srgb, var(--accent) 18%, transparent), inset 0 0 26px color-mix(in srgb, var(--accent) 8%, transparent);border:1px solid #f6fbff14;border-radius:8px;flex-direction:column;justify-content:center;padding:28px 28px 28px 42px;display:flex;position:relative}.couple-body{width:340px;min-height:214px;padding:36px 34px 36px 72px}.node-type-label{color:var(--muted);letter-spacing:0;text-transform:uppercase;margin-bottom:8px;font-size:9px;font-weight:700}.person-details{text-align:center;align-content:center;justify-items:center;gap:7px;width:100%;min-width:0;display:grid}.person-details.compact{text-align:center;justify-items:center}.picture-container{z-index:4;border:5px solid color-mix(in srgb, var(--surface-strong) 78%, #fff);background:radial-gradient(circle at 35% 28%, color-mix(in srgb, var(--accent) 24%, transparent), transparent 34%), var(--surface-strong);width:92px;height:92px;box-shadow:0 0 0 4px var(--accent), 0 12px 28px #0003, 0 0 18px color-mix(in srgb, var(--accent) 56%, transparent);cursor:pointer;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:50%;left:0;overflow:hidden;transform:translate(-50%,-50%)}.picture-container:disabled{opacity:1;cursor:default}.picture-container.compact{border-color:color-mix(in srgb, var(--surface-strong) 78%, #fff);width:88px;height:88px;box-shadow:0 0 0 4px var(--accent-3), 0 12px 26px #00000038, 0 0 18px color-mix(in srgb, var(--accent-3) 46%, transparent)}.couple-grid>.person-details:first-child .picture-container{top:25%;left:0}.couple-grid>.person-details:last-child .picture-container{top:75%;left:0}.couple-grid>.person-details:first-child .picture-container:after{content:"";background:var(--accent-3);width:2px;height:36px;box-shadow:0 0 10px color-mix(in srgb, var(--accent-3) 62%, transparent);position:absolute;top:calc(100% + 5px);left:50%;transform:translate(-50%)}.node-layout-horizontal{padding:58px 0 0}.node-layout-horizontal .turbo-node-gradient{inset:70px -28px -26px}.node-layout-horizontal .turbo-node-body{padding:54px 28px 28px}.node-layout-horizontal .couple-body{padding:62px 34px 32px}.node-layout-horizontal .picture-container{top:-48px;left:50%;transform:translate(-50%)}.node-layout-horizontal .picture-container.compact{top:-46px}.node-layout-horizontal .couple-grid>.person-details:first-child .picture-container{top:-46px;left:32%}.node-layout-horizontal .couple-grid>.person-details:last-child .picture-container{top:-46px;left:68%}.node-layout-horizontal .couple-grid>.person-details:first-child .picture-container:after{display:none}.picture-container img{object-fit:cover;width:100%;height:100%}.picture-container span{color:var(--text);text-transform:uppercase;text-shadow:none;font-size:26px;font-weight:900;line-height:1}.picture-container.compact span{font-size:24px}.person-kicker{color:var(--accent-3);text-transform:uppercase;font-size:10px;font-weight:800}.person-name{overflow-wrap:anywhere;max-width:100%;color:var(--accent);text-align:center;text-shadow:0 0 12px color-mix(in srgb, var(--accent) 42%, transparent);font-size:20px;font-weight:900;line-height:1.12}.person-designation{max-width:100%;color:var(--meta);text-align:center;overflow-wrap:anywhere;font-size:11px;font-weight:800;line-height:1.15}.person-details.compact .person-designation{font-size:10px}.person-meta,.person-times,.life-grid{color:var(--meta);font-size:10px;line-height:1.35}.life-grid{text-align:left;grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:3px 8px;width:fit-content;max-width:100%;margin-inline:auto;display:grid}.person-details.compact .life-grid{text-align:left;max-width:180px;margin-inline:auto}.life-grid span{color:var(--muted);text-transform:uppercase;font-size:9px;font-weight:800}.life-grid strong{min-width:0;color:var(--meta);overflow-wrap:anywhere;font-size:10px;font-weight:700}.couple-grid{grid-template-columns:minmax(0,1fr);place-items:center;gap:12px;width:100%;display:grid}.spouse-link{width:100%;min-height:34px;color:var(--accent-3);text-transform:uppercase;place-items:center;font-size:9px;font-weight:900;display:grid;position:relative}.spouse-link:before{content:"";background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--accent-3) 18%, transparent), var(--accent-3), color-mix(in srgb, var(--accent-3) 18%, transparent), transparent);height:2px;box-shadow:0 0 14px color-mix(in srgb, var(--accent-3) 24%, transparent);position:absolute;top:50%;left:0;right:0}.spouse-link span{border:1px solid color-mix(in srgb, var(--accent-3) 28%, transparent);background:var(--surface);box-shadow:0 4px 14px color-mix(in srgb, var(--accent-3) 12%, transparent);border-radius:999px;padding:5px 12px;position:relative}.turbo-handle{z-index:8;border:3px solid var(--bg);background:var(--accent);width:14px;height:14px;box-shadow:0 0 0 1px #ffffff38, 0 0 14px color-mix(in srgb, var(--accent) 82%, transparent)}.turbo-handle.is-layout-hidden{opacity:0;pointer-events:none}.turbo-node-body .react-flow__handle-top{top:-8px;left:50%;transform:translate(-50%)}.turbo-node-body .react-flow__handle-right{top:50%;right:-8px;transform:translateY(-50%)}.turbo-node-body .react-flow__handle-bottom{bottom:-8px;left:50%;transform:translate(-50%)}.turbo-node-body .react-flow__handle-left{top:50%;left:-8px;transform:translateY(-50%)}.handle-bottom{background:var(--accent-2);box-shadow:0 0 0 1px #fff3, 0 0 16px color-mix(in srgb, var(--accent-2) 90%, transparent)}.handle-left,.handle-right{background:var(--accent-3);box-shadow:0 0 0 1px #fff3, 0 0 14px color-mix(in srgb, var(--accent-3) 72%, transparent)}.edit-dialog .MuiPaper-root,.wedding-dialog .MuiPaper-root{width:calc(100vw - 24px);max-height:calc(100dvh - 24px);color:var(--text,#f6fbff);border:1px solid var(--border,#00f2fe38);background:var(--bg-soft,#080b14);box-shadow:0 20px 70px var(--shadow,#00000057), 0 0 30px color-mix(in srgb, var(--accent,#00f2fe) 12%, transparent);border-radius:8px;margin:12px;display:flex;overflow:hidden}.edit-dialog .MuiDialogContent-root,.wedding-dialog .MuiDialogContent-root{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;min-height:0;overflow-y:auto}.edit-dialog .MuiDialogTitle-root,.wedding-dialog .MuiDialogTitle-root{border-bottom:1px solid #ffffff14;flex:none;align-items:center;gap:10px;font-size:17px;display:flex}.edit-dialog .MuiDialogActions-root,.wedding-dialog .MuiDialogActions-root{border-top:1px solid #ffffff14;flex:none}.person-editor{gap:16px;padding-top:16px;display:grid}.person-editor h3{color:var(--accent);letter-spacing:0;margin:0;font-size:14px}.couple-editor-grid{grid-template-columns:1fr;gap:22px;display:grid}.edit-dialog .MuiInputBase-root,.wedding-dialog .MuiInputBase-root,.edit-dialog .MuiInputLabel-root,.wedding-dialog .MuiInputLabel-root,.edit-dialog .MuiFormLabel-root,.wedding-dialog .MuiFormLabel-root,.edit-dialog .MuiSelect-icon,.wedding-dialog .MuiSelect-icon,.edit-dialog .MuiSvgIcon-root,.wedding-dialog .MuiSvgIcon-root,.edit-dialog .MuiInputBase-input,.wedding-dialog .MuiInputBase-input,.edit-dialog .MuiPickersInputBase-root,.wedding-dialog .MuiPickersInputBase-root,.edit-dialog .MuiPickersInputBase-input,.wedding-dialog .MuiPickersInputBase-input,.edit-dialog .MuiPickersSectionList-root,.wedding-dialog .MuiPickersSectionList-root,.edit-dialog .MuiPickersSectionList-section,.wedding-dialog .MuiPickersSectionList-section,.edit-dialog .MuiPickersSectionList-sectionContent,.wedding-dialog .MuiPickersSectionList-sectionContent,.edit-dialog .MuiPickersSectionList-sectionSeparator{color:var(--text,#f6fbff)}.wedding-dialog,.wedding-dialog *{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.wedding-dialog input,.wedding-dialog textarea{touch-action:auto;-webkit-user-select:text;user-select:text}.wedding-paste-button{color:var(--accent,#00f2fe)}.wedding-paste-button:hover,.wedding-paste-button:focus-visible{color:color-mix(in srgb, var(--accent,#00f2fe) 78%, #fff);background:color-mix(in srgb, var(--accent,#00f2fe) 12%, transparent)}.wedding-dialog .MuiInputAdornment-positionEnd{margin-left:6px}.wedding-dialog .MuiInputBase-multiline .MuiInputAdornment-positionEnd{align-self:flex-start;margin-top:2px}.edit-dialog .MuiPickersPopper-paper{color:var(--text);border:1px solid var(--border);background:var(--surface-strong);box-shadow:0 18px 48px var(--shadow);border-radius:8px}.edit-dialog .MuiPickersPopper-paper .MuiTypography-root,.edit-dialog .MuiPickersPopper-paper .MuiPickersDay-root,.edit-dialog .MuiPickersPopper-paper .MuiClockNumber-root,.edit-dialog .MuiPickersPopper-paper .MuiPickersCalendarHeader-label,.edit-dialog .MuiPickersPopper-paper .MuiDayCalendar-weekDayLabel{color:var(--text)}.edit-dialog .MuiPickersPopper-paper .MuiPickersDay-root.Mui-selected,.edit-dialog .MuiPickersPopper-paper .MuiClockNumber-root.Mui-selected{color:var(--bg);background:var(--accent)}.edit-dialog .MuiPickersPopper-paper .MuiPickersDay-root:hover,.edit-dialog .MuiPickersPopper-paper .MuiClockNumber-root:hover{background:color-mix(in srgb, var(--accent) 18%, transparent)}.edit-dialog .MuiOutlinedInput-notchedOutline,.wedding-dialog .MuiOutlinedInput-notchedOutline,.edit-dialog .MuiPickersOutlinedInput-notchedOutline,.wedding-dialog .MuiPickersOutlinedInput-notchedOutline{border-color:var(--border,#00f2fe38)}.edit-dialog .MuiInputBase-root:hover .MuiOutlinedInput-notchedOutline,.wedding-dialog .MuiInputBase-root:hover .MuiOutlinedInput-notchedOutline,.edit-dialog .MuiPickersOutlinedInput-root:hover .MuiPickersOutlinedInput-notchedOutline,.edit-dialog .MuiPickersOutlinedInput-root.Mui-focused .MuiPickersOutlinedInput-notchedOutline,.wedding-dialog .MuiPickersOutlinedInput-root:hover .MuiPickersOutlinedInput-notchedOutline,.wedding-dialog .MuiPickersOutlinedInput-root.Mui-focused .MuiPickersOutlinedInput-notchedOutline{border-color:color-mix(in srgb, var(--accent,#00f2fe) 50%, transparent)}.edit-dialog .MuiButton-root,.wedding-dialog .MuiButton-root{text-transform:none}.read-node-dialog .MuiPaper-root,.photo-viewer-dialog .MuiPaper-root,.wedding-view-dialog .MuiPaper-root{width:calc(100vw - 24px);max-width:520px;max-height:calc(100dvh - 24px);color:var(--text);border:1px solid var(--border);background:var(--bg-soft);box-shadow:0 20px 70px var(--shadow), 0 0 34px color-mix(in srgb, var(--accent) 14%, transparent);border-radius:8px;overflow:hidden}.read-node-dialog .MuiDialogTitle-root,.photo-viewer-dialog .MuiDialogTitle-root,.wedding-view-dialog .MuiDialogTitle-root{border-bottom:1px solid #ffffff14;font-size:17px}.read-node-dialog .MuiDialogContent-root,.photo-viewer-dialog .MuiDialogContent-root,.wedding-view-dialog .MuiDialogContent-root{-webkit-overflow-scrolling:touch;overflow-y:auto}.read-node-dialog .MuiDialogActions-root,.photo-viewer-dialog .MuiDialogActions-root{border-top:1px solid #ffffff14}.read-person-card{border:1px solid var(--border);background:var(--surface);border-radius:8px;grid-template-columns:88px 1fr;align-items:center;gap:14px;padding:12px;display:grid}.read-person-photo{border:3px solid var(--accent);background:var(--surface-strong);border-radius:50%;width:88px;height:88px;padding:0;overflow:hidden}.read-person-photo img{object-fit:cover;width:100%;height:100%}.read-person-photo span{width:100%;height:100%;color:var(--text);text-transform:uppercase;background:radial-gradient(circle at 35% 28%, color-mix(in srgb, var(--accent) 24%, transparent), transparent 34%), var(--surface-strong);place-items:center;font-size:26px;font-weight:900;line-height:1;display:grid}.read-person-copy{min-width:0}.read-person-copy span{color:var(--accent-3);text-transform:uppercase;font-size:11px;font-weight:900;display:block}.read-person-copy strong{color:var(--accent);overflow-wrap:anywhere;font-size:22px;line-height:1.15;display:block}.read-person-copy p{color:var(--meta);margin:5px 0 0;font-size:13px;font-weight:700}.photo-viewer-dialog img{object-fit:contain;background:var(--surface);border-radius:8px;width:100%;max-height:min(70dvh,620px);display:block}.photo-viewer-placeholder{aspect-ratio:1;width:min(72vw,360px);color:var(--text);border:5px solid color-mix(in srgb, var(--surface-strong) 78%, #fff);background:radial-gradient(circle at 35% 28%, color-mix(in srgb, var(--accent) 24%, transparent), transparent 34%), var(--surface-strong);box-shadow:0 0 0 5px var(--accent), 0 16px 38px #0000003d, 0 0 28px color-mix(in srgb, var(--accent) 52%, transparent);text-transform:uppercase;border-radius:50%;place-items:center;margin:0 auto;font-size:clamp(52px,18vw,108px);font-weight:900;line-height:1;display:grid}.wedding-view-hero{border:1px solid var(--border);text-align:center;background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 12%, transparent), color-mix(in srgb, var(--accent-2) 10%, transparent)), var(--surface);border-radius:8px;padding:16px 14px}.wedding-view-hero h2{color:var(--accent);background:linear-gradient(90deg, var(--accent), var(--accent-3), var(--accent-2), var(--accent));-webkit-text-fill-color:transparent;overflow-wrap:anywhere;background-size:220% 100%;-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(20px,6vw,30px);font-weight:900;line-height:1.15;animation:.52s ease-out both wedding-title-rise,4.5s ease-in-out infinite wedding-title-shimmer,3.2s ease-in-out infinite wedding-title-glow}.wedding-view-hero p{max-width:34ch;color:var(--text);overflow-wrap:anywhere;margin:8px auto 0;font-size:14px;font-weight:800;line-height:1.35}.wedding-invitation-hero .wedding-invitation-kicker{max-width:none;color:var(--accent-3);letter-spacing:.16em;text-align:center;text-transform:uppercase;margin:0 auto 8px;font-size:11px;font-weight:900;line-height:1;display:block}.wedding-view-row{border:1px solid var(--border);background:var(--surface);border-radius:8px;gap:4px;padding:12px;display:grid}.wedding-view-row span{color:var(--accent-3);text-transform:uppercase;font-size:11px;font-weight:900}.wedding-view-row strong{color:var(--text);overflow-wrap:anywhere;font-size:15px;line-height:1.35}.wedding-media-block{gap:10px;display:grid}.wedding-media-block img{object-fit:contain;border:1px solid var(--border);background:var(--surface);border-radius:8px;width:100%;max-height:min(52dvh,430px)}.wedding-carousel-controls{grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;display:grid}.wedding-carousel-controls span{color:var(--meta);font-size:12px;font-weight:900}.wedding-video-frame{border:1px solid var(--border);aspect-ratio:16/9;touch-action:auto;-webkit-user-select:auto;user-select:auto;background:#000;border-radius:8px;width:100%;position:relative;overflow:hidden}.wedding-video-frame iframe,.wedding-video-direct{pointer-events:auto;touch-action:auto;background:#000;border:0;border-radius:8px;width:100%}.wedding-video-frame iframe{height:100%;position:absolute;inset:0}.wedding-video-direct{max-height:min(52dvh,430px)}@media (width<=760px){.family-tree-shell{height:100svh;min-height:100svh}.flow-minimap{display:none}.canvas-watermark{top:calc(max(8px, env(safe-area-inset-top)) + 62px);letter-spacing:.12em;font-size:clamp(26px,10vw,54px)}.canvas-watermark-wedding{top:calc(max(8px, env(safe-area-inset-top)) + 118px);letter-spacing:.1em;font-size:clamp(14px,4.4vw,26px)}.wedding-invitation-stage{top:calc(max(8px, env(safe-area-inset-top)) + 154px)}.wedding-door-button{width:62px;height:78px}.wedding-door-frame{width:52px;height:70px}.wedding-door-knob{top:42px}.wedding-door-knob-left{left:21px}.wedding-door-knob-right{right:21px}.wedding-invitation-card{width:calc(100vw - 16px);max-width:calc(100vw - 16px);padding:16px 14px 14px}.wedding-invitation-card h2{font-size:clamp(18px,5.8vw,26px)}.wedding-invitation-lines strong{font-size:12px}.wedding-invitation-lines{gap:6px;margin-top:10px}.wedding-invitation-lines div{padding:7px 9px}.wedding-invitation-video.wedding-video-direct{max-height:min(18svh,132px)}.layout-toolbar{justify-content:center;padding:8px;right:8px;top:max(8px, env(safe-area-inset-top))!important;left:8px!important}.layout-toolbar .MuiButton-root{flex:1;min-width:0;padding-inline:10px;font-size:12px}.floating-action-menu{top:50%;right:max(14px, env(safe-area-inset-right));width:48px;max-height:calc(100svh - max(120px, env(safe-area-inset-top)) - max(24px, env(safe-area-inset-bottom)));position:fixed;bottom:auto;overflow:visible;transform:translateY(-50%)}.floating-action-menu .MuiFab-root{width:44px;height:44px;min-height:44px}.floating-action-menu .MuiFab-root:first-child{width:48px;height:48px;min-height:48px}.flow-controls{transform-origin:0 100%;transform:scale(.84);left:max(8px, env(safe-area-inset-left))!important;bottom:max(10px, env(safe-area-inset-bottom))!important;position:fixed!important}.flow-controls button{width:30px;height:30px}.app-rights-note{left:76px;right:max(10px, env(safe-area-inset-right));bottom:max(8px, env(safe-area-inset-bottom));font-size:9px}.person-editor{gap:14px}.edit-dialog .MuiPaper-root,.wedding-dialog .MuiPaper-root{width:calc(100vw - 16px);max-width:calc(100vw - 16px);max-height:calc(100dvh - max(16px, env(safe-area-inset-top)) - max(16px, env(safe-area-inset-bottom)));margin:8px}.edit-dialog .MuiDialogTitle-root,.wedding-dialog .MuiDialogTitle-root{padding:12px 14px;font-size:15px}.edit-dialog .MuiDialogContent-root,.wedding-dialog .MuiDialogContent-root{padding:0 14px 14px}.edit-dialog .MuiDialogActions-root,.wedding-dialog .MuiDialogActions-root{padding:10px 14px max(10px, env(safe-area-inset-bottom));justify-content:stretch;gap:10px}.edit-dialog .MuiDialogActions-root .MuiButton-root,.wedding-dialog .MuiDialogActions-root .MuiButton-root{flex:1}.read-node-dialog .MuiPaper-root,.photo-viewer-dialog .MuiPaper-root,.wedding-view-dialog .MuiPaper-root{width:calc(100vw - 16px);max-height:calc(100svh - 16px);margin:8px}.read-person-card{grid-template-columns:76px 1fr;gap:12px;padding:10px}.read-person-photo{width:76px;height:76px}.read-person-copy strong{font-size:20px}}
