.vue-flow__controls{box-shadow:0 0 2px 1px #00000014}.vue-flow__controls-button{background:#fefefe;border:none;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;user-select:none;padding:5px}.vue-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.vue-flow__controls-button:hover{background:#f4f4f4}.vue-flow__controls-button:disabled{pointer-events:none}.vue-flow__controls-button:disabled svg{fill-opacity:.4}:root{--ink: #1a211c;--muted: #6b736a;--paper: #efe4cb;--panel: #fff8ec;--line: #d4c29d;--green: #183b32;--green-2: #365c70;--gold: #b98c3c;--red: #a84a3f;--blue: #4f6b85;--cinnabar-soft: rgba(168, 74, 63, .15);--shadow: 0 1.6667vw 3.8889vw rgba(37, 31, 18, .18);--radius: .5556vw;--safe-top: env(safe-area-inset-top, 0vw);--safe-bottom: env(safe-area-inset-bottom, 0vw)}*{box-sizing:border-box}html,body,#app{height:100%}body{margin:0;color:var(--ink);background:radial-gradient(circle at 50% 0%,rgba(185,140,60,.14),transparent 22rem),var(--paper);font-family:Songti SC,STSong,"Noto Serif CJK SC","Source Han Serif SC",Microsoft YaHei,serif;overflow:hidden}button,input{font:inherit}button{border:0;cursor:pointer;min-height:3.1944vw;touch-action:manipulation}.app-shell{width:100%;height:100dvh;max-width:100vw;margin:0 auto;background:#f1eadb;position:relative;box-shadow:0 0 0 .0694vw #b8873647,0 1.25vw 4.8611vw #221b1229;overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr) auto}.app-shell:before,.app-shell:after{content:"";position:absolute;pointer-events:none;z-index:1}.app-shell:before{width:clamp(12.5vw,22vw,18.0556vw);height:clamp(12.5vw,22vw,18.0556vw);right:clamp(-5.4167vw,-4vw,-2.5vw);top:clamp(8.1944vw,18vw,12.5vw);background:url(/assets/clan-seal.svg) center / contain no-repeat;opacity:.42;filter:saturate(.88)}.app-shell:after{inset:auto 0 0;height:clamp(6.1111vw,12vw,8.6111vw);background:linear-gradient(180deg,transparent,rgba(255,248,236,.5));mix-blend-mode:multiply}.topbar{min-height:calc(clamp(7.2222vw,16vw,9.4444vw) + var(--safe-top));padding:calc(.9722vw + var(--safe-top)) clamp(.8333vw,2vw,1.3889vw) .8333vw;display:grid;grid-template-columns:1fr;align-items:center;justify-items:center;gap:.5556vw;background:url(/assets/generated/topbar-plaque-v2.png) center .5556vw / min(86vw,22.9167vw) auto no-repeat,url(/assets/header-pine.svg) right 1.9444vw bottom .6944vw / clamp(6.1111vw,18vw,8.6111vw) auto no-repeat,url(/assets/header-pine.svg) left -2.6389vw bottom .4167vw / clamp(6.1111vw,18vw,8.6111vw) auto no-repeat,radial-gradient(circle at 50% 0,rgba(255,248,234,.12),transparent 16rem),repeating-radial-gradient(circle at 50% 45%,rgba(255,248,234,.05) 0 .1389vw,transparent .2083vw .625vw),linear-gradient(180deg,#093028fc,#0c3a31fa),var(--green);color:#fffaf0;box-shadow:0 .8333vw 1.9444vw #163c3238,inset 0 -.0694vw #b887368c;position:relative;z-index:5}.topbar:before{content:"";position:absolute;inset:0;background:none;pointer-events:none}.title-block{min-width:0;display:grid;justify-items:center;gap:.2083vw}h1,p{margin:0}h1{position:relative;font-size:clamp(1.34rem,4.5vw,1.72rem);line-height:1.1;letter-spacing:0;font-weight:900;text-shadow:0 .0694vw 0 rgba(184,135,54,.22)}h1:before,h1:after{content:"";position:absolute;top:50%;width:clamp(5vw,12vw,6.3889vw);height:clamp(1.1111vw,2.5vw,1.3889vw);background:url(/assets/title-scroll.svg) center / contain no-repeat}h1:before{right:calc(100% + 1.25vw)}h1:after{left:calc(100% + 1.25vw);transform:scaleX(-1)}.subtitle{margin-top:0;max-width:min(72vw,29.1667vw);font-size:clamp(.76rem,1.9vw,.88rem);line-height:1.25;color:#fffaf0d6;white-space:normal;text-align:center}.topbar-seal{position:absolute;right:clamp(.6944vw,1.8vw,1.25vw);top:clamp(.6944vw,1.8vw,.9722vw);width:clamp(3.0556vw,7vw,3.6111vw);height:clamp(3.0556vw,7vw,3.6111vw);border-radius:.9722vw;border:.0694vw solid rgba(185,140,60,.34);background:radial-gradient(circle at 50% 50%,rgba(255,245,221,.12),transparent 1.3889vw),linear-gradient(135deg,#b98c3c2e,#b98c3c0a),url(/assets/clan-seal.svg) center / 2.9167vw 2.9167vw no-repeat;opacity:.7;pointer-events:none}.icon-btn{position:absolute;right:clamp(.6944vw,2vw,1.5278vw);bottom:clamp(-5.8333vw,-8vw,-5vw);z-index:6;width:clamp(4.4444vw,10vw,5vw);height:clamp(4.4444vw,10vw,5vw);min-height:clamp(4.4444vw,10vw,5vw);display:grid;place-items:center;gap:.1389vw;border-radius:1.1111vw;background:linear-gradient(180deg,#fffdf5,#f4ead7);color:var(--green);border:.1389vw solid var(--green);box-shadow:0 .6944vw 1.5278vw #1d23172e,.2778vw .2778vw #0d3a311f;font-size:clamp(1.8rem,4vw,2.1rem);font-weight:800;line-height:1}.icon-btn strong{display:block;font-size:clamp(.75rem,1.8vw,.86rem);line-height:1;font-weight:900}.flow-wrap{position:relative;background:url(/assets/xuan-paper.svg),linear-gradient(180deg,#fffcf3eb,#faf4e8eb);background-blend-mode:normal,multiply;margin:0 clamp(.4167vw,1vw,.6944vw) clamp(.4167vw,1vw,.6944vw);border-radius:1.25vw;border:.0694vw solid rgba(216,195,158,.55);overflow:hidden;touch-action:none}.flow-wrap:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(184,135,54,.14) .0694vw,transparent .0694vw),linear-gradient(90deg,rgba(184,135,54,.14) .0694vw,transparent .0694vw),linear-gradient(90deg,rgba(184,135,54,.05),transparent 18%,transparent 82%,rgba(184,135,54,.05));background-size:3.3333vw 3.3333vw,3.3333vw 3.3333vw,100% 100%;opacity:.36;pointer-events:none}.vue-flow{width:100%;height:100%;background:transparent;touch-action:none}.vue-flow__pane,.vue-flow__viewport,.vue-flow__container{touch-action:none}.vue-flow__viewport{transform-origin:0 0}.vue-flow__node{border:0;background:transparent;box-shadow:none;touch-action:none}.person-stack{position:relative;--node-w: clamp(12.2222vw, 18vw, 14.4444vw);--node-h: calc(var(--node-w) * 1.42);--node-pad-x: clamp(.8333vw, 1.4vw, 1.1111vw);--avatar-size: clamp(4.3056vw, 6vw, 5.2778vw);width:var(--node-w);min-height:calc(var(--node-h) + 1.25vw);-webkit-user-select:none;user-select:none}.person-stack.selected .front-card{outline:.2778vw solid rgba(185,140,60,.2);border-color:var(--gold);border-top-color:var(--gold);box-shadow:0 1.25vw 2.6389vw #1a251f2e,0 0 0 .0694vw #b98c3c2e inset}.person-card{position:relative;width:var(--node-w);height:var(--node-h);min-height:var(--node-h);padding:clamp(2.9167vw,4.5vw,3.4722vw) var(--node-pad-x) .8333vw;border:.1389vw solid var(--green);border-top:.2778vw solid var(--green);border-radius:.9722vw;background:url(/assets/card-border.svg) center / calc(100% - 1.25vw) calc(100% - 1.25vw) no-repeat,linear-gradient(180deg,#fffdf7f5,#fbf2e4f5);box-shadow:0 .6944vw #0d3a3114,0 1.3889vw 2.3611vw #2b211329;display:grid;grid-template-rows:minmax(0,1fr);justify-items:stretch;align-content:stretch;text-align:center;color:var(--ink);overflow:hidden}.front-card{z-index:2}.back-card{position:absolute;inset:.6944vw -.8333vw -.9722vw .8333vw;z-index:1;min-height:var(--node-h);padding:0;background:url(/assets/card-border.svg) center / calc(100% - .9722vw) calc(100% - .9722vw) no-repeat,linear-gradient(180deg,#fff8ea,#f4ead8);border-top-color:#526f88b8;box-shadow:0 .9722vw 1.6667vw #1a251f1a}.back-card:after{content:"";position:absolute;inset:.4861vw;border:.0694vw dashed rgba(159,75,63,.18);border-radius:calc(var(--radius) - .1389vw)}.person-stack.flipped .back-card{border-top-color:#9f4b3fb8}.spouse-toggle{position:absolute;top:-.7639vw;right:-1.1806vw;z-index:4;width:2.5vw;min-height:2.5vw;height:2.5vw;border-radius:69.375vw;background:radial-gradient(circle at 32% 24%,rgba(255,248,234,.22),transparent 1.5278vw),var(--green);color:#fffaf0;box-shadow:0 .5556vw 1.25vw #1a251f38;font-size:.86rem;font-weight:900;display:grid;place-items:center}.person-card.male{border-top-color:var(--green);background:radial-gradient(circle at 22% 14%,rgba(54,92,112,.08),transparent 24%),url(/assets/generated/card-male-v2.png) center / calc(100% - .8333vw) calc(100% - .8333vw) no-repeat,url(/assets/card-border.svg) center / calc(100% - 1.25vw) calc(100% - 1.25vw) no-repeat,linear-gradient(180deg,#f7f4ec,#eef0ea 28%,#e7f0ec)}.person-card.male:before{content:"";position:absolute;inset:.625vw;border-radius:.6944vw;border:.0694vw solid rgba(54,92,112,.14);background:linear-gradient(135deg,transparent 0 18%,rgba(54,92,112,.04) 18% 19%,transparent 19% 42%,rgba(54,92,112,.035) 42% 43%,transparent 43% 100%),radial-gradient(circle at 100% 0,rgba(54,92,112,.05),transparent 32%);pointer-events:none}.person-card.male .person-body .person-name,.person-card.male .person-body .person-dates strong{color:#f7f0e3;text-shadow:0 .0694vw .1389vw rgba(6,21,16,.82)}.person-card.male .person-body .person-sigil{color:#f7f0e3;background:#fff8ea24}.person-card.male .person-body .gender-badge{color:#f7f0e3;background:#fff8ea1f}.person-card.male .person-body .spouse-badge,.person-card.male .person-body .role-badge{color:#f7f0e3;background:#fff8ea1a}.person-card.female{border-top-color:var(--red);background:radial-gradient(circle at 78% 16%,rgba(168,74,63,.12),transparent 24%),url(/assets/generated/card-female-v2.png) center / calc(100% - .8333vw) calc(100% - .8333vw) no-repeat,url(/assets/card-border.svg) center / calc(100% - 1.25vw) calc(100% - 1.25vw) no-repeat,linear-gradient(180deg,#fff7f1,#f7efe7 30%,#f2e4de)}.person-card.female .person-body .person-name,.person-card.female .person-body .person-dates strong{color:#7a332b}.person-card.female .person-body .person-sigil{color:#9a4b3f;background:#a84a3f1f}.person-card.female .person-body .gender-badge{color:#a84a3f;background:#a84a3f1f}.person-card.female .person-body .spouse-badge,.person-card.female .person-body .role-badge{color:#8a5724;background:#b88a3d1f}.person-card.female:before{content:"";position:absolute;inset:.625vw;border-radius:.8333vw;border:.0694vw solid rgba(168,74,63,.12);background:radial-gradient(circle at 0 0,rgba(168,74,63,.1),transparent 30%),linear-gradient(135deg,transparent 0 16%,rgba(168,74,63,.04) 16% 17%,transparent 17% 100%);pointer-events:none}.person-card.spouse{background:linear-gradient(180deg,#fffdf8,#f8efe6)}.person-card.spouse:after{content:"";position:absolute;inset:.4861vw;border:.0694vw dashed rgba(159,75,63,.24);border-radius:calc(var(--radius) - .1389vw);pointer-events:none}.avatar{width:var(--avatar-size);height:var(--avatar-size);border-radius:clamp(1.0417vw,4vw,1.25vw);display:grid;place-items:center;background:radial-gradient(circle at 30% 24%,rgba(255,250,240,.72),transparent 1.9444vw),var(--avatar, #526f88);color:#fffaf0;font-size:clamp(1.68rem,7vw,2.05rem);font-weight:800;border:.2083vw solid rgba(255,250,240,.96);box-shadow:0 0 0 .0694vw #b887366b,0 .6944vw 1.3889vw #1a251f1f;grid-area:avatar}.person-body{width:100%;height:100%;display:grid;grid-template-columns:var(--avatar-size) minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"avatar copy" "dates dates";column-gap:.6944vw;row-gap:.6944vw;align-items:start;padding-top:0;position:relative;z-index:1}.person-copy{min-width:0;display:grid;gap:.3472vw;justify-items:start;grid-area:copy;padding-top:0}.person-heading{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.3472vw;width:100%}.person-name{min-width:0;font-size:clamp(1rem,1.4vw,1.12rem);font-weight:900;line-height:1.14;overflow:visible;white-space:normal;overflow-wrap:anywhere;text-align:left;color:#10231d}.person-sigil{display:inline-flex;align-items:center;justify-content:center;min-width:1.8056vw;min-height:1.5278vw;padding:.2083vw .4167vw;border-radius:69.375vw;background:#526f881f;color:var(--card-accent, var(--green));font-size:.7rem;font-weight:900}.person-tags{max-width:100%;min-height:1.5278vw;display:flex;justify-content:flex-start;flex-wrap:wrap;gap:.2778vw}.spouse-badge,.role-badge{min-height:1.5278vw;max-width:100%;padding:.2083vw .4861vw;display:inline-flex;align-items:center;border-radius:69.375vw;font-size:.72rem;font-weight:900;line-height:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spouse-badge{color:#8a4a39;background:#a84a3f1a}.person-dates{width:100%;grid-area:dates;display:grid;align-content:start;gap:.5556vw;font-size:.82rem;line-height:1.16;overflow-wrap:anywhere;margin-top:0;padding:.625vw clamp(.5556vw,3.4vw,1.25vw) 0;border-top:.0694vw solid rgba(185,140,54,.18)}.person-dates span{display:grid;grid-template-columns:1.4em minmax(0,1fr);gap:.4861vw;align-items:center}.person-dates em{display:inline-block;width:1.1em;font-style:normal;color:var(--card-accent, var(--green));font-weight:900}.person-card.male .person-dates em{color:#f3e6c9;text-shadow:0 .0694vw .1389vw rgba(6,21,16,.75)}.person-card.female .person-dates em{color:#a84a3f}.person-dates strong{color:#22312d;font-weight:800}.role-badge{color:#6f5424;background:#b88a3d1f}.ancestor-plaque{position:absolute;left:50%;top:.6944vw;z-index:4;transform:translate(-50%);max-width:calc(100% - 7.2222vw);min-width:0;min-height:1.8056vw;display:inline-flex;align-items:center;justify-content:center;gap:.3472vw;padding:.1389vw .4861vw;border:.0694vw solid rgba(184,135,54,.88);border-radius:69.375vw;color:#8a672a;background:linear-gradient(180deg,#fffbf0eb,#f5e8cadb);font-size:.78rem;font-weight:900;overflow:visible;white-space:nowrap}.card-ribbon{position:absolute;top:.625vw;left:.7639vw;z-index:4;width:2.3611vw;height:2.3611vw;border-radius:.6944vw .6944vw .6944vw .1389vw;display:grid;place-items:center;background:linear-gradient(180deg,#fffaf0f2,#ebdfc9eb);color:var(--card-accent, var(--green));border:.0694vw solid rgba(185,140,60,.42);box-shadow:0 .5556vw .9722vw #1a251f1a;font-size:1rem;font-weight:900}.card-rank{position:absolute;top:.9028vw;right:.8333vw;z-index:4;max-width:calc(100% - 4.3056vw);min-height:1.6667vw;padding:.2083vw .5556vw;border-radius:69.375vw;background:#fffaf0d1;color:var(--muted);border:.0694vw solid rgba(214,197,164,.72);font-size:.72rem;font-weight:800;overflow:visible;white-space:nowrap}.card-seal{position:absolute;right:.5556vw;bottom:.5556vw;z-index:1;width:2.6389vw;height:2.6389vw;border-radius:69.375vw;display:grid;place-items:center;border:.0694vw solid rgba(168,74,63,.22);background:radial-gradient(circle at 50% 50%,#fff9f0e6,#ebdccbb3),#fff9f0d1;color:var(--card-accent, var(--red));font-size:.95rem;font-weight:900}.node-plus{position:absolute;z-index:5;width:1.9444vw;height:1.9444vw;border-radius:69.375vw;display:grid;place-items:center;border:.1389vw solid var(--green);background:#fbf5e8;color:var(--green);font-size:1.25rem;font-weight:900;line-height:1;box-shadow:0 .2778vw .6944vw #1d23171f;pointer-events:none}.plus-top{top:-.9722vw;left:50%;transform:translate(-50%)}.plus-left{top:45%;left:-.9722vw}.plus-right{top:45%;right:-.9722vw}.plus-bottom{bottom:.2083vw;left:50%;transform:translate(-50%)}.floating-actions{position:absolute;z-index:10}.action-popover{width:clamp(10.5556vw,38vw,12.7778vw);max-width:98.3333vw;padding:.6944vw .9722vw;display:grid;gap:0;border-radius:.9722vw;border:.0694vw solid rgba(216,195,158,.82);background:linear-gradient(180deg,#fffdf7fa,#fbf2e4fa);box-shadow:0 1.1111vw 2.0833vw #2b211326}.action-popover:before{content:"";position:absolute;top:-.625vw;left:50%;width:.9722vw;height:.9722vw;background:#fffdf7;border-left:.0694vw solid rgba(218,203,180,.95);border-top:.0694vw solid rgba(218,203,180,.95);transform:translate(-50%) rotate(45deg)}.action-btn{min-height:3.3333vw;border-radius:0;background:transparent;color:var(--green);font-weight:900;text-align:center;padding:0 .5556vw;font-size:1.08rem;border-bottom:.0694vw solid rgba(216,195,158,.75)}.action-btn.secondary{background:transparent;color:var(--green);font-size:.92rem}.action-btn.danger{background:transparent;color:var(--red);font-size:.92rem}.action-btn:last-child{border-bottom:0}.empty-state{position:absolute;left:1.25vw;top:1.6667vw;width:min(23.6111vw,97.5vw);padding:1.25vw;border:.0694vw dashed rgba(184,138,61,.7);border-radius:var(--radius);background:#fffaf0e6;box-shadow:var(--shadow);z-index:2}.empty-state strong{display:block;color:var(--green);font-size:1.08rem;margin-bottom:.4167vw}.empty-state span{display:block;color:var(--muted);font-size:.96rem}.bottom-summary{display:grid;z-index:5;min-height:calc(3.8889vw + var(--safe-bottom));padding:.5556vw .8333vw calc(.6944vw + var(--safe-bottom));gap:.5556vw;background:linear-gradient(180deg,#fff8eafa,#f5ebd6fa);border-top:.0694vw solid rgba(185,140,60,.34);-webkit-backdrop-filter:blur(1.1111vw);backdrop-filter:blur(1.1111vw)}.bottom-summary.collapsed{min-height:calc(3.8889vw + var(--safe-bottom))}.summary-toggle{width:100%;min-height:2.6389vw;padding:0 .8333vw;display:flex;align-items:center;justify-content:space-between;border-radius:.8333vw;border:.0694vw solid rgba(214,197,164,.72);background:linear-gradient(180deg,#fffdf7e6,#eee5d2f0);color:var(--green);font-weight:900}.summary-toggle-title{font-size:.95rem}.summary-toggle-action{font-size:.82rem;color:var(--gold)}.summary-body{display:grid;grid-template-columns:minmax(6.8056vw,1.2fr) minmax(0,1.6fr) minmax(5.6944vw,.9fr);gap:.5556vw}.summary-main,.summary-note{position:relative;min-width:0;padding:.6944vw .8333vw;border-radius:.9722vw;border:.0694vw solid rgba(214,197,164,.72);background:linear-gradient(180deg,#fffdf7d1,#eee5d2e6);overflow:hidden}.summary-main:after,.summary-note:after{content:"";position:absolute;inset:auto .6944vw .6944vw;height:.0694vw;background:linear-gradient(90deg,transparent,rgba(185,140,60,.22),transparent)}.summary-main{display:grid;align-content:start;gap:.2778vw}.summary-main strong{color:var(--green);font-size:1.72rem;line-height:1;font-weight:900}.summary-main p,.summary-note p{margin:0;color:var(--muted);font-size:.8rem;line-height:1.3}.summary-kicker{color:#8a672a;font-size:.72rem;font-weight:900;text-transform:uppercase}.summary-meter{height:.4167vw;border-radius:69.375vw;background:#365c701f;overflow:hidden}.summary-meter-fill{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--green-2),var(--gold))}.summary-grid{min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4167vw}.summary-grid .metric{padding:.5556vw .4167vw .4861vw;border-radius:.8333vw;background:linear-gradient(180deg,#fffdf7b8,#ece4d4d6)}.summary-grid .metric strong{font-size:1.08rem}.summary-note{display:grid;align-content:start;gap:.2778vw;text-align:left}.summary-note strong{color:var(--red);font-size:1.28rem;line-height:1;font-weight:900}.summary-note p{color:var(--muted)}.metric{min-width:0;padding:.4861vw .4167vw;border-radius:.8333vw;background:linear-gradient(180deg,#fffdf78a,#eae3d3c7);border:.0694vw solid rgba(216,195,158,.5);text-align:center}.metric.male{background:#526f881f}.metric.female{background:#9f4b3f1a}.metric strong{display:block;color:var(--green);font-size:1.08rem;line-height:1.1;font-weight:900}.metric span{display:block;margin-top:.2083vw;color:var(--muted);font-size:.74rem;white-space:nowrap}.vue-flow__controls{box-shadow:0 .5556vw 1.3889vw #2b211324;border:.0694vw solid rgba(216,195,158,.72)}.vue-flow__controls-button{width:2.3611vw;height:3.0556vw;background:#fffdf7f5;border-bottom:.0694vw solid rgba(216,195,158,.55)}.sheet{position:fixed;inset:0;z-index:20;display:grid;place-items:end center;padding:1.1111vw;background:#17211d61}.dialog{width:min(92vw,33.8889vw);max-height:calc(100dvh - 2.2222vw);overflow:auto;border-radius:var(--radius);background:#fffaf0;border:.0694vw solid var(--line);box-shadow:var(--shadow);padding:1.1111vw;display:grid;gap:.9028vw}.dialog h2{margin:0;color:var(--green);font-size:1.22rem}.dialog-copy{margin:0;color:var(--muted);line-height:1.55}.form-grid{display:grid;gap:.7639vw}label{display:grid;gap:.4167vw;color:var(--ink);font-size:.94rem;font-weight:800}.segmented-field{min-width:0;margin:0;padding:0;border:0;display:grid;grid-template-columns:1fr 1fr;gap:.5556vw}.segmented-field legend{grid-column:1 / -1;margin-bottom:.4167vw;color:var(--ink);font-size:.94rem;font-weight:800}.segmented-option{position:relative;min-width:0;display:block;color:var(--green)}.segmented-option input{position:absolute;opacity:0;pointer-events:none}.segmented-option span{min-height:3.3333vw;display:grid;place-items:center;border:.0694vw solid var(--line);border-radius:var(--radius);background:#fffdf7;font-weight:900}.segmented-option input:checked+span{border-color:var(--green-2);background:#2f66561f;box-shadow:0 0 0 .2778vw #2f665614}.segmented-option input:disabled+span{cursor:not-allowed;opacity:.58}.segmented-option input:disabled:checked+span{opacity:1;border-color:var(--gold);background:#b88a3d26}.date-group{display:grid;gap:.4861vw}.group-title{color:var(--green);font-size:.84rem;font-weight:900}.date-row{display:grid;grid-template-columns:1.1fr .9fr .9fr;gap:.5556vw}.date-field{text-align:center}.date-field.year{letter-spacing:.04em}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:.8333vw;min-height:3.3333vw;padding:0 .8333vw;border:.0694vw solid var(--line);border-radius:var(--radius);background:#fffdf7;color:var(--green);font-size:.94rem;font-weight:800}.switch-row input[type=checkbox]{width:1.25vw;height:1.25vw;margin:0}.field-hint{grid-column:1 / -1;margin:0;color:var(--muted);font-size:.82rem;line-height:1.45}.field-error{color:var(--red)}.field{width:100%;min-height:3.3333vw;border:.0694vw solid var(--line);border-radius:var(--radius);background:#fffdf7;padding:.6944vw .8333vw;color:var(--ink);outline:none;font-weight:500}.field:focus{border-color:var(--green-2);box-shadow:0 0 0 .2778vw #2f665621}.dialog-actions{display:grid;grid-template-columns:1fr 1fr;gap:.625vw}.btn{border-radius:var(--radius);min-height:3.3333vw;padding:0 .9722vw;background:var(--green);color:#fffaf0;font-weight:900}.btn.cancel{background:#fffdf7;color:var(--green);border:.0694vw solid var(--green)}.btn.danger-confirm{background:var(--red)}.toast{position:fixed;left:1.1111vw;right:1.1111vw;bottom:calc(6.3889vw + var(--safe-bottom));z-index:30;border-radius:var(--radius);background:var(--green);color:#fffaf0;padding:.9028vw .9722vw;box-shadow:var(--shadow);transform:translateY(5.5556vw);opacity:0;transition:.18s ease;pointer-events:none}.toast.show{transform:translateY(0);opacity:1}@media(min-width:720px){body{padding:1.5278vw 0;overflow:auto}.app-shell{height:min(62.5vw,calc(100dvh - 3.0556vw));border-radius:1.5278vw}.sheet{place-items:center}}@media(max-width:720px){.app-shell{height:100dvh;width:min(100vw,375px);max-width:375px;border-radius:0}.topbar{min-height:calc(126px + var(--safe-top));padding:calc(14px + var(--safe-top)) 16px 12px;background:url(/assets/generated/topbar-plaque-v2.png) center 8px / 330px auto no-repeat,url(/assets/header-pine.svg) right 18px bottom 10px / 104px auto no-repeat,url(/assets/header-pine.svg) left -26px bottom 6px / 104px auto no-repeat,radial-gradient(circle at 50% 0,rgba(255,248,234,.12),transparent 16rem),repeating-radial-gradient(circle at 50% 45%,rgba(255,248,234,.05) 0 2px,transparent 3px 9px),linear-gradient(180deg,#093028fc,#0c3a31fa),var(--green)}.title-block{gap:2px}h1{font-size:1.62rem}h1:before,h1:after{width:78px;height:18px}.subtitle{max-width:270px;font-size:.82rem}.topbar-seal{width:44px;height:44px}.icon-btn{width:64px;height:64px;min-height:64px;right:12px;bottom:-76px;border-radius:16px;font-size:1.9rem}.icon-btn strong{font-size:.76rem}.flow-wrap{margin:0 6px 6px;border-radius:18px}.person-stack{--node-w: 196px;--node-h: 278px;--node-pad-x: 14px;--avatar-size: 72px;min-height:296px}.person-card{padding:46px 14px 12px;border-radius:14px}.avatar{border-width:3px;font-size:1.86rem}.person-body{column-gap:10px;row-gap:10px}.person-copy{gap:5px}.person-name{font-size:1.08rem}.person-sigil{min-width:26px;min-height:22px}.person-dates{font-size:.82rem;padding:9px 12px 0;gap:8px}.card-ribbon{width:34px;height:34px;top:9px;left:11px}.card-rank{top:13px;right:12px;max-width:calc(100% - 62px)}.ancestor-plaque{top:10px;max-width:calc(100% - 104px)}.card-seal{width:38px;height:38px;right:8px;bottom:8px}.spouse-toggle{width:36px;height:36px;min-height:36px;top:-11px;right:-17px}.action-popover{width:172px;max-width:calc(100vw - 24px)}.summary-body{grid-template-columns:1fr}.summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.summary-note{text-align:center}.dialog{width:min(100%,340px);padding:14px}.dialog-actions{grid-template-columns:1fr}}.vue-flow{position:relative;width:100%;height:100%;overflow:hidden;z-index:0;direction:ltr}.vue-flow__container{position:absolute;height:100%;width:100%;left:0;top:0}.vue-flow__pane{z-index:1}.vue-flow__pane.draggable{cursor:grab}.vue-flow__pane.selection{cursor:pointer}.vue-flow__pane.dragging{cursor:grabbing}.vue-flow__transformationpane{transform-origin:0 0;z-index:2;pointer-events:none}.vue-flow__viewport{z-index:4;overflow:clip}.vue-flow__selection{z-index:6}.vue-flow__edge-labels{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vue-flow__nodesselection-rect:focus,.vue-flow__nodesselection-rect:focus-visible{outline:none}.vue-flow .vue-flow__edges{pointer-events:none;overflow:visible}.vue-flow__edge-path,.vue-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.vue-flow__edge{pointer-events:visibleStroke;cursor:pointer}.vue-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.vue-flow__edge.animated path.vue-flow__edge-interaction{stroke-dasharray:none;animation:none}.vue-flow__edge.inactive{pointer-events:none}.vue-flow__edge.selected,.vue-flow__edge:focus,.vue-flow__edge:focus-visible{outline:none}.vue-flow__edge.selected .vue-flow__edge-path,.vue-flow__edge:focus .vue-flow__edge-path,.vue-flow__edge:focus-visible .vue-flow__edge-path{stroke:#555}.vue-flow__edge-textwrapper{pointer-events:all}.vue-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vue-flow__connection{pointer-events:none}.vue-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.vue-flow__connectionline{z-index:1001}.vue-flow__nodes{pointer-events:none;transform-origin:0 0}.vue-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.vue-flow__node.draggable{cursor:grab;pointer-events:all}.vue-flow__node.draggable.dragging{cursor:grabbing}.vue-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.vue-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.vue-flow__nodesselection-rect.dragging{cursor:grabbing}.vue-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px}.vue-flow__handle.connectable{pointer-events:all;cursor:crosshair}.vue-flow__handle-bottom{left:50%;bottom:0;transform:translate(-50%,50%)}.vue-flow__handle-top{left:50%;top:0;transform:translate(-50%,-50%)}.vue-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.vue-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.vue-flow__edgeupdater{cursor:move;pointer-events:all}.vue-flow__panel{position:absolute;z-index:5;margin:15px}.vue-flow__panel.top{top:0}.vue-flow__panel.bottom{bottom:0}.vue-flow__panel.left{left:0}.vue-flow__panel.right{right:0}.vue-flow__panel.center{left:50%;transform:translate(-50%)}@keyframes dashdraw{0%{stroke-dashoffset:10}}:root{--vf-node-bg: #fff;--vf-node-text: #222;--vf-connection-path: #b1b1b7;--vf-handle: #555}.vue-flow__edge.updating .vue-flow__edge-path{stroke:#777}.vue-flow__edge-text{font-size:10px}.vue-flow__edge-textbg{fill:#fff}.vue-flow__connection-path{stroke:var(--vf-connection-path)}.vue-flow__node{cursor:grab}.vue-flow__node.selectable:focus,.vue-flow__node.selectable:focus-visible{outline:none}.vue-flow__node-default,.vue-flow__node-input,.vue-flow__node-output{padding:10px;border-radius:3px;width:150px;font-size:12px;text-align:center;border-width:1px;border-style:solid;color:var(--vf-node-text);background-color:var(--vf-node-bg);border-color:var(--vf-node-color)}.vue-flow__node-default.selected,.vue-flow__node-default.selected:hover,.vue-flow__node-input.selected,.vue-flow__node-input.selected:hover,.vue-flow__node-output.selected,.vue-flow__node-output.selected:hover{box-shadow:0 0 0 .5px var(--vf-box-shadow)}.vue-flow__node-default.selected,.vue-flow__node-default:focus,.vue-flow__node-default:focus-visible,.vue-flow__node-input.selected,.vue-flow__node-input:focus,.vue-flow__node-input:focus-visible,.vue-flow__node-output.selected,.vue-flow__node-output:focus,.vue-flow__node-output:focus-visible{outline:none;border:1px solid #555}.vue-flow__node-default .vue-flow__handle,.vue-flow__node-input .vue-flow__handle,.vue-flow__node-output .vue-flow__handle{background:var(--vf-handle)}.vue-flow__node-default.selectable:hover,.vue-flow__node-input.selectable:hover,.vue-flow__node-output.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.vue-flow__node-input{--vf-node-color: var(--vf-node-color, #0041d0);--vf-handle: var(--vf-node-color, #0041d0);--vf-box-shadow: var(--vf-node-color, #0041d0);background:var(--vf-node-bg);border-color:var(--vf-node-color, #0041d0)}.vue-flow__node-input.selected,.vue-flow__node-input:focus,.vue-flow__node-input:focus-visible{outline:none;border:1px solid var(--vf-node-color, #0041d0)}.vue-flow__node-default{--vf-handle: var(--vf-node-color, #1a192b);--vf-box-shadow: var(--vf-node-color, #1a192b);background:var(--vf-node-bg);border-color:var(--vf-node-color, #1a192b)}.vue-flow__node-default.selected,.vue-flow__node-default:focus,.vue-flow__node-default:focus-visible{outline:none;border:1px solid var(--vf-node-color, #1a192b)}.vue-flow__node-output{--vf-handle: var(--vf-node-color, #ff0072);--vf-box-shadow: var(--vf-node-color, #ff0072);background:var(--vf-node-bg);border-color:var(--vf-node-color, #ff0072)}.vue-flow__node-output.selected,.vue-flow__node-output:focus,.vue-flow__node-output:focus-visible{outline:none;border:1px solid var(--vf-node-color, #ff0072)}.vue-flow__nodesselection-rect,.vue-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.vue-flow__nodesselection-rect:focus,.vue-flow__nodesselection-rect:focus-visible,.vue-flow__selection:focus,.vue-flow__selection:focus-visible{outline:none}.vue-flow__handle{width:6px;height:6px;background:var(--vf-handle);border:1px solid #fff;border-radius:100%}
