*{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)}}@keyframes invitation-door-wiggle{0%,64%,to{transform:rotate(0)translateY(0)}68%{transform:rotate(-5deg)translateY(-1px)}72%{transform:rotate(5deg)translateY(-2px)}76%{transform:rotate(-4deg)translateY(-1px)}80%{transform:rotate(4deg)translateY(-2px)}84%{transform:rotate(-2deg)translateY(-1px)}88%{transform:rotate(2deg)translateY(0)}}.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{pointer-events:none;perspective:900px;justify-items:center;width:auto;display:grid;position:relative}.wedding-door-button{pointer-events:auto;cursor:pointer;touch-action:manipulation;transform-origin:50% 92%;background:0 0;border:0;place-items:center;width:74px;height:92px;padding:0;animation:3.4s ease-in-out infinite invitation-door-wiggle;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-stage.is-open .wedding-door-button{animation:none}.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-popup-close{z-index:2;top:8px;right:8px;box-shadow:0 8px 18px #00000047;color:var(--text)!important;border:1px solid var(--border)!important;background:color-mix(in srgb, var(--bg-soft) 88%, transparent)!important;position:absolute!important}.wedding-flyer-image{object-fit:contain;background:var(--surface);border-radius:8px;width:100%;max-height:min(76dvh,760px);display:block;box-shadow:0 12px 30px #0000003d,inset 0 0 0 1px #ffffff14}.wedding-flyer-missing{min-height:180px;color:var(--meta);border:1px dashed var(--border);background:var(--surface);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:24px 16px;font-size:14px;font-weight:800;display:flex}.wedding-fallback-link{max-width:100%}.wedding-photoshoot-card{z-index:9;pointer-events:auto;width:calc(100vw - 24px);max-width:560px;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);text-align:center;transform-origin:50%;-webkit-overflow-scrolling:touch;border-radius:8px;padding:18px;animation:.82s cubic-bezier(.16,1,.3,1) 80ms both invitation-card-out;position:fixed;top:50%;left:50%;overflow-y:auto}.wedding-photoshoot-title{color:var(--accent);letter-spacing:0;margin:0 0 14px;font-size:18px;font-weight:900}.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-title{justify-content:space-between;align-items:center;gap:12px;display:flex;padding-right:12px!important}.mpin-dialog-title .MuiIconButton-root{color:#162033;background:#f8fbff;border:1px solid #0077ff2e}.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}.hidden-mpin-recovery{z-index:20;color:#0000;opacity:0;width:54px;height:54px;box-shadow:none;-webkit-tap-highlight-color:transparent;background:0 0;border:0;outline:0;padding:0;position:fixed;bottom:0;left:0}.registration-dialog .MuiPaper-root{width:min(92vw,400px)}.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{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{background:var(--button-bg-hover);transform:translateY(-1px)}.tree-page-tabs{top:max(84px, calc(env(safe-area-inset-top) + 84px));z-index:11;border:1px solid var(--border);background:var(--toolbar-bg);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:999px;gap:8px;padding:8px;transition:left .22s,transform .22s;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 14px 34px #00000047}.tree-page-tabs.is-shifted-left{left:max(14px, env(safe-area-inset-left));transform:none}.tree-page-tab{min-width:92px!important;color:var(--text)!important;border-color:var(--border)!important;background:var(--button-bg)!important;text-transform:none!important;border-radius:999px!important}.tree-page-tab.is-active{color:var(--bg)!important;background:linear-gradient(135deg, var(--accent), var(--accent-3))!important;box-shadow:0 0 18px color-mix(in srgb, var(--accent) 28%, transparent)!important}.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;transform:translate(-50%);left:50%!important;bottom:max(20px, calc(env(safe-area-inset-bottom) + 20px))!important;position:fixed!important}.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-loading-shell{min-height:100dvh;color:var(--text);background:var(--bg);letter-spacing:.08em;text-transform:uppercase;place-items:center;font-size:14px;font-weight:800;display:grid}.bottom-action-dock{z-index:1401;left:50%;bottom:max(54px, calc(env(safe-area-inset-bottom) + 54px));pointer-events:none;flex-direction:column;align-items:center;gap:10px;width:min(220px,100vw - 32px);transition:left .22s,right .22s,bottom .22s,transform .22s;display:flex;transform:translate(-50%);position:fixed!important}.bottom-action-dock.is-shifted-left{left:max(14px, env(safe-area-inset-left));align-items:flex-start;width:min(180px,100vw - 28px);transform:none}.bottom-action-dock>*{pointer-events:auto}.tree-tour-control{border:1px solid var(--border)!important;min-width:132px!important;color:var(--text)!important;background:var(--button-bg)!important;box-shadow:0 10px 28px #00000061, 0 0 22px color-mix(in srgb, var(--accent) 24%, transparent)!important;text-transform:none!important;position:static!important}.tree-tour-node-active .turbo-node-body{box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 88%, transparent), 0 0 0 5px color-mix(in srgb, var(--accent) 22%, transparent), 0 22px 54px color-mix(in srgb, var(--accent) 24%, transparent), inset 0 0 0 2px color-mix(in srgb, #fff 72%, var(--accent)), inset 0 0 30px color-mix(in srgb, var(--accent) 14%, transparent);animation:1.25s ease-in-out infinite alternate tree-tour-node-context;border-color:color-mix(in srgb, var(--accent) 78%, #fff)!important}@keyframes tree-tour-node-context{0%{box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 72%, transparent), 0 0 0 3px color-mix(in srgb, var(--accent) 16%, transparent), 0 22px 54px color-mix(in srgb, var(--accent) 20%, transparent), inset 0 0 0 2px color-mix(in srgb, #fff 60%, var(--accent)), inset 0 0 24px color-mix(in srgb, var(--accent) 10%, transparent)}to{box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 92%, transparent), 0 0 0 5px color-mix(in srgb, var(--accent) 24%, transparent), 0 22px 54px color-mix(in srgb, var(--accent) 28%, transparent), inset 0 0 0 2px color-mix(in srgb, #fff 78%, var(--accent)), inset 0 0 34px color-mix(in srgb, var(--accent) 16%, transparent)}}.tree-tour-item-active{z-index:8;outline-offset:5px;animation:.72s ease-in-out infinite alternate tree-tour-item-pulse;position:relative;box-shadow:0 0 0 8px color-mix(in srgb, var(--accent) 55%, transparent), 0 0 34px var(--accent)!important;outline:4px solid #fff!important}@keyframes tree-tour-item-pulse{0%{box-shadow:0 0 0 5px color-mix(in srgb, var(--accent) 35%, transparent), 0 0 18px var(--accent);outline-color:#fff}to{outline-color:var(--accent);box-shadow:0 0 0 8px color-mix(in srgb, var(--accent) 55%, transparent), 0 0 34px var(--accent)}}@media (prefers-reduced-motion:reduce){.wedding-door-button,.wedding-door-frame,.tree-tour-node-active .turbo-node-body,.tree-tour-item-active{animation:none}}.app-rights-note{left:50%;bottom:max(4px, env(safe-area-inset-bottom));z-index:8;pointer-events:none;width:min(96vw,860px);color:var(--meta);letter-spacing:0;text-align:center;text-shadow:0 0 10px color-mix(in srgb, var(--bg) 70%, transparent);-webkit-user-select:none;user-select:none;white-space:normal;-webkit-touch-callout:none;font-size:10px;font-weight:800;line-height:1.2;position:fixed;transform:translate(-50%)}.family-sidecar{top:50%;right:max(10px, env(safe-area-inset-right));z-index:1402;border:1px solid var(--border);background:color-mix(in srgb, var(--surface-strong) 90%, transparent);max-height:calc(100dvh - 132px);box-shadow:0 16px 42px #00000057, 0 0 24px color-mix(in srgb, var(--accent) 18%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);scrollbar-width:none;border-radius:16px;padding:8px 6px;position:fixed;overflow-y:auto;transform:translateY(-50%)}.family-sidecar::-webkit-scrollbar{display:none}.family-sidecar-collapsed{background:var(--button-bg);border-right:0;border-radius:16px 0 0 16px;place-items:center;width:42px;height:86px;padding:0;display:grid;right:0}.family-sidecar-toggle,.family-sidecar-action{transition:transform .16s,background .16s,box-shadow .16s;border:1px solid color-mix(in srgb, var(--accent) 28%, var(--border))!important;background:radial-gradient(circle at 32% 22%, color-mix(in srgb, currentColor 12%, transparent), transparent 45%), color-mix(in srgb, var(--surface) 78%, transparent)!important;width:42px!important;height:42px!important;box-shadow:0 8px 22px #00000047, 0 0 14px color-mix(in srgb, currentColor 18%, transparent)!important}.family-sidecar-toggle{color:var(--accent)!important}.family-sidecar-action .MuiSvgIcon-root,.family-sidecar-toggle .MuiSvgIcon-root{color:currentColor;filter:drop-shadow(0 0 7px color-mix(in srgb, currentColor 42%, transparent));font-size:24px;display:block}.family-sidecar-action:hover,.family-sidecar-toggle:hover{transform:scale(1.08);background:radial-gradient(circle at 32% 22%, color-mix(in srgb, currentColor 20%, transparent), transparent 45%), var(--button-bg-hover)!important}.family-sidecar-collapse{color:var(--accent)!important;margin-top:2px!important}.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 112px;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 84px}.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);text-align:center;border:1px solid #f6fbff14;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;padding:28px 30px;display:flex;position:relative}.couple-body{width:340px;min-height:350px;padding:42px 34px}.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:8px;width:100%;min-width:0;display:grid}.person-details.compact{text-align:center;justify-items:center}.picture-container{z-index:12;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:148px;height:148px;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(-75%,-50%)}.picture-container:disabled{opacity:1;cursor:default}.picture-container.compact{border-color:color-mix(in srgb, var(--surface-strong) 78%, #fff);width:148px;height:148px;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:24%;left:0}.couple-grid>.person-details:last-child .picture-container{top:76%;left:0}.couple-grid>.person-details:first-child .picture-container:after{content:"";background:var(--accent-3);width:2px;height:24px;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:10px 0 0 112px}.node-layout-horizontal .turbo-node-gradient{inset:22px -28px -26px 84px}.node-layout-horizontal .turbo-node-body{padding:28px 30px}.node-layout-horizontal .couple-body{padding:42px 34px}.node-layout-horizontal .picture-container{top:50%;left:0;transform:translate(-75%,-50%)}.node-layout-horizontal .picture-container.compact{top:50%}.node-layout-horizontal .couple-grid>.person-details:first-child .picture-container{top:24%;left:0}.node-layout-horizontal .couple-grid>.person-details:last-child .picture-container{top:76%;left:0}.node-layout-horizontal .couple-grid>.person-details:first-child .picture-container:after{display:block}.picture-container img{object-fit:cover;width:100%;height:100%}.picture-container span{color:var(--text);text-transform:uppercase;text-shadow:none;font-size:42px;font-weight:900;line-height:1}.picture-container.compact span{font-size:42px}.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:20px;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-node-body .turbo-handle{z-index:12;-webkit-tap-highlight-color:transparent;box-shadow:none!important;background:0 0!important;border:0!important;border-radius:0!important;outline:0!important}.turbo-node-body .turbo-handle:after{content:"";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);pointer-events:none;border-radius:999px;transition:box-shadow .16s;position:absolute}.turbo-node-body .turbo-handle:hover:after,.turbo-node-body .turbo-handle.connectingfrom:after,.turbo-node-body .turbo-handle.connectingto:after,.turbo-node-body .turbo-handle.valid:after{box-shadow:0 0 0 2px #ffffff57, 0 0 20px color-mix(in srgb, var(--accent) 88%, transparent)}.turbo-handle.is-layout-hidden{opacity:0;pointer-events:none}.turbo-node-body .react-flow__handle-top{top:0;left:50%;transform:translate(-50%);width:100%!important;min-width:100%!important;height:56px!important;min-height:56px!important}.turbo-node-body .react-flow__handle-right{top:50%;right:0;transform:translateY(-50%);width:56px!important;min-width:56px!important;height:100%!important;min-height:100%!important}.turbo-node-body .react-flow__handle-bottom{bottom:0;left:50%;transform:translate(-50%);width:100%!important;min-width:100%!important;height:56px!important;min-height:56px!important}.turbo-node-body .react-flow__handle-left{top:50%;left:0;transform:translateY(-50%);width:56px!important;min-width:56px!important;height:100%!important;min-height:100%!important}.turbo-node-body .handle-top:after{top:0;left:50%;transform:translate(-50%,-50%)}.turbo-node-body .handle-right:after{top:50%;right:0;transform:translate(50%,-50%)}.turbo-node-body .handle-bottom:after{bottom:0;left:50%;transform:translate(-50%,50%)}.turbo-node-body .handle-left:after{top:50%;left:0;transform:translate(-50%,-50%)}.turbo-node-body .handle-bottom:after{background:var(--accent-2);box-shadow:0 0 0 1px #fff3, 0 0 16px color-mix(in srgb, var(--accent-2) 90%, transparent)}.turbo-node-body .handle-left:after,.turbo-node-body .handle-right:after{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}.person-editor-toggle{color:var(--text);justify-self:start;margin:-4px 0 -2px!important}.couple-editor-grid{grid-template-columns:1fr;gap:22px;display:grid}.edit-dialog .MuiInputBase-root,.wedding-dialog .MuiInputBase-root,.edit-dialog .MuiPickersTextField-root,.wedding-dialog .MuiPickersTextField-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 .MuiPickersInputBase-sectionsContainer,.wedding-dialog .MuiPickersInputBase-sectionsContainer,.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{-webkit-text-fill-color:var(--text,#f6fbff);color:var(--text,#f6fbff)!important}.edit-dialog .MuiPickersSectionList-sectionContent.Mui-selected,.edit-dialog .MuiPickersSectionList-sectionContent:focus,.wedding-dialog .MuiPickersSectionList-sectionContent.Mui-selected,.wedding-dialog .MuiPickersSectionList-sectionContent:focus{-webkit-text-fill-color:var(--accent-3,#ffdf6e);background:color-mix(in srgb, var(--accent,#00f2fe) 18%, transparent);color:var(--accent-3,#ffdf6e)!important}.edit-dialog .MuiInputBase-root,.wedding-dialog .MuiInputBase-root,.edit-dialog .MuiPickersInputBase-root,.wedding-dialog .MuiPickersInputBase-root{background:color-mix(in srgb, var(--surface-strong,#070a13) 82%, #fff 4%)}.edit-dialog .MuiInputLabel-root.Mui-focused,.edit-dialog .MuiFormLabel-root.Mui-focused,.wedding-dialog .MuiInputLabel-root.Mui-focused,.wedding-dialog .MuiFormLabel-root.Mui-focused{color:var(--accent,#00f2fe)!important}.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,.MuiPickersPopper-paper,.MuiPickersLayout-root{color:var(--text,#f6fbff);border:1px solid var(--border,#00f2fe47);background:var(--surface-strong,#070a13);box-shadow:0 18px 48px var(--shadow,#0000006b);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,.MuiPickersPopper-paper .MuiTypography-root,.MuiPickersPopper-paper .MuiPickersDay-root,.MuiPickersPopper-paper .MuiClockNumber-root,.MuiPickersPopper-paper .MuiPickersCalendarHeader-label,.MuiPickersPopper-paper .MuiDayCalendar-weekDayLabel,.MuiPickersLayout-root .MuiTypography-root,.MuiPickersLayout-root .MuiPickersDay-root,.MuiPickersLayout-root .MuiClockNumber-root,.MuiPickersLayout-root .MuiPickersCalendarHeader-label,.MuiPickersLayout-root .MuiDayCalendar-weekDayLabel{color:var(--text,#f6fbff)!important}.edit-dialog .MuiPickersPopper-paper .MuiPickersDay-root.Mui-selected,.edit-dialog .MuiPickersPopper-paper .MuiClockNumber-root.Mui-selected,.MuiPickersPopper-paper .MuiPickersDay-root.Mui-selected,.MuiPickersPopper-paper .MuiClockNumber-root.Mui-selected,.MuiPickersLayout-root .MuiPickersDay-root.Mui-selected,.MuiPickersLayout-root .MuiClockNumber-root.Mui-selected{color:var(--bg,#05060d)!important;background:var(--accent,#00f2fe)!important}.edit-dialog .MuiPickersPopper-paper .MuiPickersDay-root:hover,.edit-dialog .MuiPickersPopper-paper .MuiClockNumber-root:hover,.MuiPickersPopper-paper .MuiPickersDay-root:hover,.MuiPickersPopper-paper .MuiClockNumber-root:hover,.MuiPickersLayout-root .MuiPickersDay-root:hover,.MuiPickersLayout-root .MuiClockNumber-root:hover{background:color-mix(in srgb, var(--accent,#00f2fe) 18%, transparent)!important}.MuiPickersPopper-paper .MuiIconButton-root,.MuiPickersLayout-root .MuiIconButton-root{color:var(--accent,#00f2fe)!important}.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 .MuiDialogContent-root{padding-top:32px!important}.photo-viewer-dialog .MuiDialogContent-root{padding-top:12px!important;padding-bottom:20px!important}.photo-dialog-designation,.photo-dialog-dob{color:var(--meta);font-size:12px;font-weight:700;line-height:1.25}.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:132px 1fr;align-items:center;gap:18px;padding:12px;display:grid}.read-person-photo{border:3px solid var(--accent);background:var(--surface-strong);border-radius:50%;width:132px;height:132px;padding:0;overflow:hidden}.read-person-photo img{object-fit:contain;background:var(--surface-strong);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:38px;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}.photo-viewer-fallback{justify-items:center;gap:16px;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-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-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-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}.tree-page-tabs{top:max(68px, calc(env(safe-area-inset-top) + 68px));gap:6px;padding:6px}.tree-page-tabs.is-shifted-left{left:max(8px, env(safe-area-inset-left))}.tree-page-tab{min-width:78px!important;padding-inline:10px!important;font-size:12px!important}.family-sidecar{right:max(6px, env(safe-area-inset-right));border-radius:14px;max-height:calc(100svh - 156px);padding:7px 5px}.family-sidecar-collapsed{border-radius:14px 0 0 14px;width:38px;height:78px;padding:0;right:0}.family-sidecar-toggle,.family-sidecar-action{width:38px!important;height:38px!important}.family-sidecar-action .MuiSvgIcon-root,.family-sidecar-toggle .MuiSvgIcon-root{font-size:22px}.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:50%;right:auto;bottom:max(8px, env(safe-area-inset-bottom));white-space:normal;font-size:9px;transform:translate(-50%)}.node-limit-counter{bottom:max(18px, calc(env(safe-area-inset-bottom) + 18px))!important}.bottom-action-dock{bottom:max(44px, calc(env(safe-area-inset-bottom) + 44px));gap:8px}.bottom-action-dock.is-shifted-left{left:max(8px, env(safe-area-inset-left));width:min(168px,100vw - 18px)}@media (orientation:landscape) and (height<=520px){.bottom-action-dock{bottom:max(28px, calc(env(safe-area-inset-bottom) + 28px));flex-direction:row;justify-content:center;gap:10px;width:min(320px,100vw - 96px)}.bottom-action-dock.is-shifted-left{left:max(8px, env(safe-area-inset-left));justify-content:flex-start;width:min(300px,100vw - 16px);transform:none}.bottom-action-dock .wedding-door-button{width:48px;height:60px}.bottom-action-dock .wedding-door-frame{border-radius:24px 24px 7px 7px;width:42px;height:56px}.bottom-action-dock .wedding-door-knob{top:34px}.bottom-action-dock .wedding-door-knob-left{left:17px}.bottom-action-dock .wedding-door-knob-right{right:17px}}.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:108px 1fr;gap:12px;padding:10px}.read-person-photo{width:108px;height:108px}.read-person-copy strong{font-size:20px}}
