.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}.vue-flow__minimap{background-color:#fff}.vue-flow__minimap.pannable{cursor:grab}.vue-flow__minimap.dragging{cursor:grabbing}.vue-flow__minimap-mask.pannable{cursor:grab}: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.pinching .person-stack{cursor:grab}.flow-wrap.pinching .person-stack.selected .front-card{box-shadow:0 0 0 .2778vw #ffd25a6b,0 0 1.5vw .42vw #ffca409e,0 1.25vw 2.6389vw #1a251f2e,0 0 0 .0694vw #b98c3c2e inset}.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}.canvas-rail{position:absolute;left:clamp(.6944vw,1.8vw,1.25vw);top:clamp(1.1111vw,3vw,1.6667vw);z-index:8;display:grid;gap:.4167vw;padding:.4167vw;border:.0694vw solid rgba(187,145,70,.42);border-radius:.9722vw;background:linear-gradient(180deg,#fffcf3eb,#eee5d2eb),url(/assets/xuan-paper.svg);box-shadow:0 .8333vw 1.8056vw #2a20122e,0 0 0 .0694vw #fffbef85 inset;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.canvas-tab{min-width:clamp(5.4167vw,12vw,6.9444vw);min-height:2.3611vw;padding:.3472vw .7639vw;border-radius:.6944vw;border:.0694vw solid rgba(29,59,50,.18);background:#fffdf7ad;color:var(--green);font-size:clamp(.78rem,1.7vw,.9rem);font-weight:900;line-height:1;box-shadow:0 .0694vw #ffffffad inset}.canvas-tab.active{border-color:#1d3b32b8;background:linear-gradient(180deg,#1c4338fa,#0f3029fa);color:#fffaf0;box-shadow:0 .3472vw .8333vw #0c2e2747,0 0 0 .0694vw #dcb5676b inset}.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:pan-y pan-x}.person-stack{position:relative;--node-w: clamp(156px, 18vw, 196px);--node-h: calc(var(--node-w) * 1.5);--node-pad-x: clamp(22px, 2.5vw, 29px);width:var(--node-w);min-height:calc(var(--node-h) + 1.25vw);-webkit-user-select:none;user-select:none;touch-action:pan-y pan-x}.person-stack.compact{--node-w: clamp(132px, 36vw, 156px);--node-h: calc(var(--node-w) * 1.34);--node-pad-x: clamp(14px, 2.8vw, 20px)}.person-stack.compact .person-body{grid-template-rows:minmax(20px,auto) 1fr auto;gap:6px}.person-stack.compact .person-heading{min-height:88px}.person-stack.compact .person-name{max-height:88px;font-size:clamp(18px,4.4vw,24px)}.person-stack.compact .person-more{min-height:24px;margin-bottom:6px;padding:2px 8px;font-size:.7rem}.person-stack.compact .person-card.details-open{height:auto;min-height:var(--node-h)}.person-stack.compact .person-card.details-open .person-body{grid-template-rows:minmax(20px,auto) 1fr auto}.person-stack.compact .person-card.details-open .person-heading{min-height:64px}.person-stack.compact .person-card.details-open .person-name{max-height:64px}.person-stack.compact .person-card.details-open .person-dates{position:static;margin-top:6px;margin-bottom:4px;padding:4px 6px}.person-stack.compact .lineage-chip,.person-stack.compact .person-sigil{font-size:.62rem}.person-stack *{touch-action:inherit}.person-stack.selected .front-card{outline:4px solid rgba(255,194,70,.62);border-color:#f1b93d;border-top-color:#f1b93d;box-shadow:0 0 0 6px #ffd25a47,0 0 22px 6px #ffca406b,0 18px 34px #1a251f2e,0 0 0 1px #b98c3c2e inset;filter:saturate(1.1) brightness(1.08)}.person-card{position:relative;width:var(--node-w);height:var(--node-h);min-height:var(--node-h);padding:clamp(24px,2.4vw,31px) var(--node-pad-x) clamp(22px,2vw,28px);border:0;border-radius:0;background:linear-gradient(180deg,#fffdf7f5,#f7efdff0);box-shadow:none;display:grid;grid-template-rows:minmax(0,1fr);justify-items:stretch;align-content:stretch;text-align:center;color:var(--ink);overflow:visible;touch-action:pan-y pan-x}.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;touch-action:manipulation}.person-card.male{background:url(/assets/generated/card-male-v2.png) center / 100% 100% no-repeat}.person-card.male:before{content:none}.person-card.male .person-body .person-name,.person-card.male .person-body .person-dates strong{color:#fff6df;text-shadow:0 .0694vw .2083vw rgba(5,19,15,.72)}.person-card.male>.person-sigil{color:#f3e6c9;text-shadow:0 .0694vw .2083vw rgba(5,19,15,.8)}.person-card.female>.person-sigil{color:#7f332c;background:#fff7ebc2;border:.0694vw solid rgba(168,74,63,.22);text-shadow:none}.person-card.female{background:url(/assets/generated/card-female-v2.png) center / 100% 100% no-repeat}.person-card.female .person-body .person-name,.person-card.female .person-body .person-dates strong{color:#7a332b}.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:none}.person-card.spouse:after{content:none}.person-body{width:100%;height:100%;display:grid;grid-template-rows:minmax(24px,auto) 1fr auto;gap:clamp(8px,1vw,12px);align-items:center;padding:0;position:relative;z-index:1}.person-meta{display:flex;align-items:center;gap:5px;justify-content:flex-start;min-width:0;min-height:1.8056vw;padding:0}.person-heading{min-width:0;display:grid;place-items:center;width:100%;padding:0 .3472vw;align-self:start;min-height:132px}.person-name{min-width:0;display:inline-block;max-height:132px;writing-mode:vertical-rl;text-orientation:upright;letter-spacing:var(--name-letter-spacing, 8px);font-size:var(--name-font-size, 28px);font-weight:900;line-height:1.08;overflow:hidden;white-space:nowrap;overflow-wrap:anywhere;text-align:center;color:#10231d}.lineage-chip,.sort-order-chip,.person-sigil{display:inline-flex;align-items:center;justify-content:center;min-height:22px;padding:3px 8px;border-radius:69.375vw;font-size:.7rem;font-weight:900;line-height:1;white-space:nowrap}.lineage-chip{max-width:min(7.7778vw,112px);color:#7c642d;background:#fffaf0b8;border:.0694vw solid rgba(184,135,54,.34);overflow:hidden;text-overflow:ellipsis}.sort-order-chip{color:#2f6656;background:#f1faf4c7;border:.0694vw solid rgba(47,102,86,.24)}.person-sigil{position:absolute;left:73.6%;top:16.2%;z-index:3;transform:translate(-50%,-50%);min-width:24px;min-height:22px;padding:2px 6px;color:var(--card-accent, var(--green));background:transparent;font-size:20px}.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{position:absolute;left:var(--node-pad-x);right:var(--node-pad-x);bottom:clamp(38px,3.4vw,48px);width:auto;display:grid;align-content:start;gap:5px;align-self:end;font-size:.72rem;line-height:1.16;overflow-wrap:anywhere;margin-top:0;padding:5px 7px;border:.0694vw solid rgba(243,230,201,.18);border-radius:.6944vw;background:#081d1647;-webkit-backdrop-filter:blur(.0694vw);backdrop-filter:blur(.0694vw)}.person-more{align-self:end;justify-self:center;min-height:28px;margin-bottom:clamp(10px,1.2vw,14px);padding:4px 10px;border-radius:69.375vw;border:.0694vw solid rgba(243,230,201,.28);background:#fffaf02e;color:#fff6df;font-size:.76rem;font-weight:900;text-shadow:0 .0694vw .1389vw rgba(5,19,15,.72)}.person-card.female .person-more{color:#7a332b;background:#fff7eb9e;border-color:#a84a3f33;text-shadow:none}.person-card.details-open .person-more{position:absolute;right:var(--node-pad-x);bottom:.4861vw;margin-bottom:0;z-index:4}.person-card.details-open .person-body{grid-template-rows:minmax(24px,auto) 1fr auto;gap:8px}.person-card.details-open .person-heading{opacity:0;pointer-events:none}.person-card.details-open .person-name{max-height:5.8rem}.person-card.male .person-dates{border-top-color:#f3e6c947}.person-dates span{display:grid;grid-template-columns:1.6em minmax(0,1fr);gap:7px;align-items:center}.person-dates em{display:grid;place-items:center;width:1.55em;height:1.55em;border-radius:69.375vw;background:#fffaf0a8;font-style:normal;color:var(--card-accent, var(--green));font-weight:900}.person-card.male .person-dates em{color:#17392f;background:#fffaf0bd;text-shadow:none}.person-card.female .person-dates em{color:#a84a3f}.person-dates strong{color:#22312d;font-weight:800}.role-badge{color:#6f5424;background:#b88a3d1f}.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))}.vue-flow__edge-path,.family-edge-path{transition:stroke .2s ease,opacity .2s ease,stroke-width .2s ease}.vue-flow__edge-path.edge-glow,.family-edge-path.edge-glow{stroke:#f1c14d;filter:drop-shadow(0 0 6px rgba(241,193,77,.65));stroke-dasharray:10 8;animation:edge-flow 1.3s linear infinite}@keyframes edge-flow{0%{stroke-dashoffset:0}to{stroke-dashoffset:-36}}.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)}.vue-flow__controls-button.overview-control{min-width:2.7778vw;color:var(--green);font-family:inherit;font-size:.78rem;font-weight:900;line-height:1}.clan-minimap{left:10px!important;bottom:calc(12px + var(--safe-bottom))!important;border-radius:12px;border:1px solid rgba(178,141,75,.52);background:linear-gradient(180deg,#fffcf3e0,#f4ecd9e0),url(/assets/xuan-paper.svg);box-shadow:0 10px 20px #2b211329,0 0 0 1px #fffbef75 inset;overflow:hidden;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);cursor:pointer}.clan-minimap .vue-flow__minimap-mask{fill:#0c272142;stroke:#cca860f2;stroke-width:2px;filter:drop-shadow(0 0 4px rgba(238,197,108,.55))}.clan-minimap .vue-flow__minimap-svg{border-radius:10px}.clan-minimap:hover{box-shadow:0 12px 24px #2b211333,0 0 0 1px #fffbef94 inset}.sheet{position:fixed;inset:0;z-index:20;display:grid;place-items:end center;padding:clamp(.8333vw,2.4vw,1.25vw);background:#17211d70;-webkit-backdrop-filter:blur(.1389vw);backdrop-filter:blur(.1389vw)}.dialog{width:min(92vw,30.5556vw);max-height:calc(100dvh - 2.5vw);overflow:auto;border-radius:1.1111vw;background:linear-gradient(180deg,#fffcf4fa,#f9f0e1fa),url(/assets/xuan-paper.svg);border:.0694vw solid rgba(185,140,60,.46);box-shadow:0 1.3889vw 3.0556vw #161d183d,0 0 0 .2778vw #fffaf080 inset;padding:clamp(1.1111vw,3vw,1.5278vw);display:grid;gap:1.0417vw}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:.6944vw;border-bottom:.0694vw solid rgba(185,140,60,.2)}.dialog h2{margin:0;color:var(--green);font-size:clamp(1.24rem,2.6vw,1.48rem);line-height:1.15;font-weight:900}.dialog-copy{margin:0;color:var(--muted);line-height:1.55}.form-grid{display:grid;gap:.8333vw}.form-field,label{display:grid;gap:.4167vw;color:var(--ink);font-size:.94rem;font-weight:800}.field-label{display:inline-flex;align-items:center;gap:.2778vw;color:#20362d;line-height:1.2}.segmented-field{min-width:0;margin:0;padding:0;border:0;display:grid;grid-template-columns:1fr 1fr;gap:.4861vw}.segmented-field legend{grid-column:1 / -1;margin-bottom:.3472vw;color:#20362d;font-size:.94rem;font-weight:800;line-height:1.2}.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:2.7778vw;display:grid;place-items:center;border:.0694vw solid rgba(212,194,157,.9);border-radius:.625vw;background:#fffdf7bd;color:#244238;font-weight:900;font-size:.98rem}.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}.supplemental-section{display:grid;gap:.625vw}.supplemental-toggle{width:100%;min-height:2.9167vw;padding:0 .7639vw;display:flex;align-items:center;justify-content:space-between;gap:.8333vw;border:.0694vw solid rgba(212,194,157,.9);border-radius:.625vw;background:#fffdf7ad;color:var(--green);font-size:.94rem;font-weight:900;box-shadow:inset 0 .0694vw #ffffffb8}.supplemental-toggle:focus-visible{outline:.2083vw solid rgba(181,142,53,.35);outline-offset:.1389vw}.supplemental-chevron{color:var(--muted);font-size:.82rem;font-weight:800}.supplemental-fields{display:grid;gap:.7639vw;padding:.9028vw;border:.0694vw dashed rgba(185,140,60,.48);border-radius:var(--radius);background:#fffdf794}.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-large{min-height:48px;padding:.7rem .9rem;font-size:1.02rem;cursor:pointer}.switch-label{font-size:1.02rem}.switch-control{position:relative;display:inline-flex;align-items:center;justify-content:flex-end;min-width:64px;min-height:40px}.switch-control input[type=checkbox]{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.switch-track{position:relative;width:56px;height:32px;border-radius:999px;background:#d9cfb5;border:1px solid #c8b78d;transition:background-color .18s ease,border-color .18s ease;box-shadow:inset 0 1px 2px #00000014}.switch-thumb{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fffdf7;box-shadow:0 2px 6px #1b332a2e;transition:transform .18s ease}.switch-control input[type=checkbox]:checked+.switch-track{background:#2d6655;border-color:#2d6655}.switch-control input[type=checkbox]:checked+.switch-track .switch-thumb{transform:translate(24px)}.switch-control input[type=checkbox]:focus-visible+.switch-track{outline:3px solid rgba(181,142,53,.35);outline-offset:2px}.field-hint{grid-column:1 / -1;margin:0;color:var(--muted);font-size:.82rem;line-height:1.45}.field-error{color:var(--red)}.required-mark{color:var(--red);font-weight:900}.field{width:100%;min-height:3.0556vw;border:.0694vw solid rgba(212,194,157,.92);border-radius:.625vw;background:#fffdf7c2;padding:.5556vw .7639vw;color:var(--ink);outline:none;font-weight:500;font-size:.96rem}.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;padding-top:.2083vw}.btn{border-radius:.625vw;min-height:3.0556vw;padding:0 .9722vw;background:var(--green);color:#fffaf0;font-weight:900;font-size:.98rem;box-shadow:0 .4167vw .8333vw #183b3229}.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:-92px;border-radius:16px;font-size:1.9rem}.icon-btn strong{font-size:.76rem}.flow-wrap{margin:0 6px 6px;border-radius:18px}.canvas-rail{left:10px;top:10px;gap:6px;padding:6px;border-radius:14px}.canvas-tab{min-width:76px;min-height:34px;padding:0 10px;border-radius:10px;font-size:.78rem}.clan-minimap{left:8px!important;bottom:calc(8px + var(--safe-bottom))!important;border-radius:10px}.person-stack{--node-w: 196px;--node-h: 294px;--node-pad-x: 29px;min-height:312px}.person-card{padding:31px 29px 28px;border-radius:0}.person-body{grid-template-rows:26px 1fr auto;gap:10px}.person-name{max-height:138px}.person-meta{padding-left:0;min-height:26px}.person-sigil{min-width:26px;min-height:22px}.person-more{min-height:28px;padding:.25rem .72rem;font-size:.78rem;margin-bottom:14px}.person-dates{font-size:.74rem;padding:6px 8px;gap:5px;bottom:48px}.person-card.details-open .person-name{max-height:92px}.person-card.details-open .person-more{right:29px;bottom: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}.floating-actions{left:0!important;right:0!important;top:auto!important;bottom:calc(10px + var(--safe-bottom));width:100%;display:flex;justify-content:center;padding:0 12px}.action-popover{width:min(100%,340px);max-width:calc(100vw - 24px);padding:8px 10px;border-radius:16px;gap:0;box-shadow:0 14px 28px #2b21132e;grid-template-columns:1fr}.action-popover:before{display:none}.action-btn{min-height:54px;border-radius:12px;border-bottom:0;font-size:.96rem;background:#fffdf7eb;white-space:normal;line-height:1.15;padding:.6rem .8rem}.action-btn+.action-btn{margin-top:6px}.action-btn.secondary,.action-btn.danger{font-size:1rem}.summary-body{grid-template-columns:1fr}.summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.summary-note{text-align:center}.dialog{width:min(calc(100vw - 28px),352px);max-height:calc(100dvh - 28px);padding:18px 16px 16px;border-radius:18px;gap:14px}.dialog-header{padding-bottom:12px}.dialog h2{font-size:1.34rem}.form-grid{gap:12px}.form-field,label,.segmented-field legend{font-size:.95rem}.segmented-field{gap:8px}.segmented-option span,.supplemental-toggle,.field,.btn{min-height:44px;border-radius:10px}.field{padding:.6rem .72rem;font-size:.98rem}.supplemental-toggle{padding:0 .75rem;background:#fffdf7b8}.supplemental-fields{gap:12px;padding:12px;border-radius:12px}.date-row{gap:8px}.dialog-actions{grid-template-columns:1fr 1fr;gap:8px}.btn{font-size:1rem;box-shadow:none}}.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%}
