:root{--bg: #F5EFE0;--bg-2: #EFE7D4;--surface: #FDFAF2;--surface-2: #F2EADA;--surface-3: #E8DDC6;--ink: #1D2A44;--ink-soft: #4A5876;--ink-faint: #8A8AA0;--rule: #DDD0B4;--rule-strong: #C4B48E;--gold: #A8801F;--gold-bright: #C9A227;--gold-leaf: #E0C36A;--gold-wash: rgba(168, 128, 31, .11);--lapis: #1E4B8F;--garnet: #8E2B36;--emerald: #1B6B4F;--aubergine: #6B3560;--focus: #C9A227;--shadow-sm: 0 1px 2px rgba(29, 42, 68, .07);--shadow-md: 0 1px 2px rgba(29, 42, 68, .07), 0 8px 24px -12px rgba(29, 42, 68, .22);--shadow-lg: 0 2px 6px rgba(29, 42, 68, .1), 0 24px 48px -20px rgba(29, 42, 68, .32);--font-display: "Cormorant Garamond", Georgia, "Times New Roman", serif;--font-body: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--font-urdu: "Noto Nastaliq Urdu", "Jameel Noori Nastaleeq", serif;--font-wordmark: "Shajra Wordmark", serif;--radius: 9px;--radius-sm: 6px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0E1729;--bg-2: #121D33;--surface: #172441;--surface-2: #1E2E52;--surface-3: #27395F;--ink: #F2E9D6;--ink-soft: #B9C2DA;--ink-faint: #7C88A8;--rule: #2B3C63;--rule-strong: #3E5382;--gold: #D9B44A;--gold-bright: #E9CE7C;--gold-leaf: #F0DEA4;--gold-wash: rgba(217, 180, 74, .16);--lapis: #6E9BE0;--garnet: #D98089;--emerald: #63BC96;--aubergine: #B688AC;--focus: #E9CE7C;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .45);--shadow-md: 0 1px 2px rgba(0, 0, 0, .45), 0 10px 30px -14px rgba(0, 0, 0, .7);--shadow-lg: 0 2px 8px rgba(0, 0, 0, .5), 0 28px 56px -24px rgba(0, 0, 0, .8)}}:root[data-theme=dark]{--bg: #0E1729;--bg-2: #121D33;--surface: #172441;--surface-2: #1E2E52;--surface-3: #27395F;--ink: #F2E9D6;--ink-soft: #B9C2DA;--ink-faint: #7C88A8;--rule: #2B3C63;--rule-strong: #3E5382;--gold: #D9B44A;--gold-bright: #E9CE7C;--gold-leaf: #F0DEA4;--gold-wash: rgba(217, 180, 74, .16);--lapis: #6E9BE0;--garnet: #D98089;--emerald: #63BC96;--aubergine: #B688AC;--focus: #E9CE7C;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .45);--shadow-md: 0 1px 2px rgba(0, 0, 0, .45), 0 10px 30px -14px rgba(0, 0, 0, .7);--shadow-lg: 0 2px 8px rgba(0, 0, 0, .5), 0 28px 56px -24px rgba(0, 0, 0, .8)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;overscroll-behavior:none}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:3px}button{font:inherit;color:inherit}.app{display:grid;grid-template-rows:auto 1fr;height:100%;overflow:hidden}.topbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:7px 16px;min-height:56px;border-bottom:1px solid var(--rule);background:var(--surface);z-index:20}.topbar .search{flex:1 1 170px;min-width:0}.topbar .search input{width:100%;min-width:0}.brand{font-family:var(--font-display);font-size:21px;font-weight:600;letter-spacing:-.01em;display:flex;align-items:baseline;gap:8px}.brand .urdu{font-family:var(--font-wordmark);font-size:17px;color:var(--gold);line-height:2}.brand .tree-name{font-family:var(--font-body);font-size:14px;font-weight:400;color:var(--ink-soft);padding-left:12px;border-left:1px solid var(--rule);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:22ch}.topbar .spacer{flex:1}.seg{display:inline-flex;border:1px solid var(--rule);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface-2)}.seg button{border:0;background:transparent;padding:6px 12px;font-size:13px;cursor:pointer;color:var(--ink-soft);white-space:nowrap}.seg button+button{border-left:1px solid var(--rule)}.seg button[aria-pressed=true]{background:var(--surface);color:var(--ink);font-weight:500;box-shadow:inset 0 -2px 0 var(--gold)}.btn{border:1px solid var(--rule-strong);background:var(--surface);color:var(--ink);border-radius:var(--radius-sm);padding:7px 13px;font-size:13.5px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--gold)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--gold);border-color:var(--gold);color:#1a1408;font-weight:500}.btn.primary:hover:not(:disabled){background:var(--gold-bright);border-color:var(--gold-bright)}.btn.quiet{border-color:transparent;background:transparent;color:var(--ink-soft)}.btn.quiet:hover:not(:disabled){background:var(--surface-2)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;padding:6px;width:32px;height:32px;border-color:var(--rule-strong);flex-shrink:0}@media(pointer:coarse){.theme-toggle{width:38px;height:38px}}.btn.danger{color:var(--garnet);border-color:var(--rule)}.btn.danger:hover:not(:disabled){background:var(--garnet);color:#fff;border-color:var(--garnet)}.badge{font-family:var(--font-mono);font-size:11px;padding:2px 7px;border-radius:999px;background:var(--gold-wash);color:var(--gold);border:1px solid var(--gold-wash)}.stage{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background:radial-gradient(130% 110% at 50% 0%,var(--bg-2),transparent 72%),var(--bg);touch-action:none;cursor:grab}.stage.dragging{cursor:grabbing}.stage svg{display:block;width:100%;height:100%}.edge-near{fill:none;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}.edge-marriage{stroke:var(--gold);fill:none;stroke-width:2.2;stroke-linecap:round}.edge-long,.edge-distant{stroke:var(--gold);fill:none;stroke-width:1.6;opacity:.22;stroke-dasharray:6 6}.edge-exchange{stroke:var(--emerald);fill:none;stroke-width:1.9;opacity:.45;stroke-dasharray:2 7;stroke-linecap:round}.edge-highlight{stroke:var(--gold-bright)!important;opacity:1;stroke-width:3;stroke-dasharray:none}.edge-dim{opacity:.07}.union-mark{fill:var(--gold);stroke:none}.union-mark.ended{fill:var(--bg);stroke:var(--gold);stroke-width:1.6}.card-rect{fill:var(--surface);stroke-width:1.2}.card-rect.selected{stroke:var(--gold)!important;stroke-width:3}.card-rect.focus-person{stroke:var(--gold-bright)!important;stroke-width:3.4}.card-rect.dimmed{opacity:.3}.card-name{font-family:var(--font-body);font-weight:550;fill:var(--ink)}.card-name.urdu{font-family:var(--font-urdu)}.card-dates{font-family:var(--font-mono);fill:var(--ink-faint)}.card-kin{font-family:var(--font-body);fill:var(--gold);font-weight:600}.card-dot{fill:var(--rule-strong)}.card-dot.selected{fill:var(--gold)}.legend{position:absolute;left:14px;top:14px;background:color-mix(in srgb,var(--surface) 92%,transparent);border:1px solid var(--rule);border-radius:var(--radius-sm);padding:10px 12px;box-shadow:var(--shadow-sm);max-width:210px;z-index:5}.legend.shut{max-width:none;width:auto;padding:6px 10px}.legend-toggle{display:flex;align-items:center;gap:8px;width:100%;min-height:24px;padding:0;margin:0;background:none;border:0;cursor:pointer;text-align:left;color:inherit;font:inherit}.legend:not(.shut) .legend-toggle{margin-bottom:7px}.legend-toggle:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:3px}.legend.shut .legend-title{flex:0 0 auto}.legend-title{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);font-weight:500;flex:1}.legend-swatches{display:flex;gap:3px;flex-shrink:0}.legend-swatches span{width:10px;height:3px;border-radius:2px}.legend-chev{font-family:var(--font-mono);font-size:13px;line-height:1;color:var(--ink-faint);flex-shrink:0}@media(pointer:coarse){.legend-toggle{min-height:34px}.legend.shut{padding:4px 12px}}.legend ul{list-style:none;margin:0;padding:0;display:grid;gap:4px}.legend li{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-soft)}.legend .swatch{width:16px;height:3px;border-radius:2px;flex-shrink:0}.legend .note{margin:7px 0 0;padding-top:7px;border-top:1px solid var(--rule);font-size:11.5px;color:var(--ink-faint);background:none;border-left:0;border-radius:0}.gen-band{fill:var(--ink);opacity:.022}.gen-label{font-family:var(--font-mono);font-size:11px;fill:var(--ink-faint);letter-spacing:.08em}.canvas-controls{position:absolute;right:14px;bottom:14px;display:flex;flex-direction:column;gap:6px;z-index:5}.canvas-controls button{width:34px;height:34px;border:1px solid var(--rule-strong);background:var(--surface);border-radius:var(--radius-sm);cursor:pointer;font-size:15px;display:grid;place-items:center;box-shadow:var(--shadow-sm)}.canvas-controls button:hover{border-color:var(--gold);background:var(--surface-2)}.canvas-hint{position:absolute;left:14px;bottom:14px;font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);background:color-mix(in srgb,var(--surface) 88%,transparent);border:1px solid var(--rule);padding:6px 10px;border-radius:var(--radius-sm);pointer-events:none;display:flex;gap:12px}.panel{position:absolute;top:0;right:0;bottom:0;width:min(400px,100%);background:var(--surface);border-left:1px solid var(--rule);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;z-index:10;animation:slide-in .18s ease-out}@keyframes slide-in{0%{transform:translate(14px);opacity:0}}@media(prefers-reduced-motion:reduce){.panel{animation:none}}.panel-head{padding:16px 18px 12px;border-bottom:1px solid var(--rule);display:flex;align-items:flex-start;gap:10px}.panel-head h2{font-family:var(--font-display);font-size:23px;font-weight:600;margin:0;line-height:1.2;letter-spacing:-.01em}.panel-head .sub{font-family:var(--font-mono);font-size:12px;color:var(--ink-faint);margin-top:3px}.panel-body{flex:1;overflow-y:auto;padding:4px 18px 24px}.panel-section{padding:14px 0;border-top:1px solid var(--rule)}.panel-section:first-child{border-top:0}.panel-section h3{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 10px;font-weight:500}.rel-list{display:flex;flex-direction:column;gap:2px}.rel-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--radius-sm);cursor:pointer;border:0;background:transparent;text-align:left;width:100%}.rel-row:hover{background:var(--surface-2)}.rel-row .nm{flex:1;font-size:14px}.rel-row .yr{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint)}.rel-row .kin{font-size:11.5px;color:var(--gold);font-weight:500}.add-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.field{display:block;margin-bottom:10px}.field span{display:block;font-size:12px;color:var(--ink-soft);margin-bottom:4px}.field input,.field select,.field textarea{width:100%;padding:7px 9px;border:1px solid var(--rule-strong);border-radius:var(--radius-sm);background:var(--bg);color:var(--ink);font:inherit;font-size:14px}.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{border-color:var(--gold);outline:2px solid var(--focus);outline-offset:1px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--gold)}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.note{font-size:12.5px;color:var(--ink-soft);background:var(--surface-2);border-left:2px solid var(--gold);padding:8px 10px;border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin:10px 0}.note.warn{border-left-color:var(--garnet)}.centre{min-height:100%;display:grid;place-items:center;padding:24px}.card{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);box-shadow:var(--shadow-md);padding:30px 32px;width:min(420px,100%)}.card h1{font-family:var(--font-display);font-size:30px;font-weight:500;margin:0 0 6px;letter-spacing:-.015em}.card p.lede{color:var(--ink-soft);margin:0 0 20px;font-size:14.5px}.err{color:var(--garnet);font-size:13.5px;margin:10px 0 0}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:999px;font-size:13.5px;box-shadow:var(--shadow-lg);z-index:100;max-width:90vw}.spinner{width:22px;height:22px;border:2px solid var(--rule);border-top-color:var(--gold);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2s}}.search-wrap{position:relative}.search-wrap input{width:220px;padding:6px 10px;border:1px solid var(--rule-strong);border-radius:var(--radius-sm);background:var(--bg);color:var(--ink);font:inherit;font-size:13.5px}.search-results{position:absolute;top:calc(100% + 5px);left:0;width:300px;background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);box-shadow:var(--shadow-lg);max-height:340px;overflow-y:auto;z-index:30;padding:4px}.search-results button{display:block;width:100%;text-align:left;padding:7px 10px;border:0;background:transparent;border-radius:var(--radius-sm);cursor:pointer;font-size:14px}.search-results button:hover{background:var(--surface-2)}@media(max-width:640px){.topbar{gap:8px;padding:0 10px}.brand .tree-name{display:none}.search-wrap input{width:130px}.panel{width:100%}}.portrait{width:54px;height:54px;border-radius:50%;object-fit:cover;flex-shrink:0;border:2px solid var(--gold);box-shadow:0 0 0 1px var(--rule),var(--shadow-sm)}.photo-strip{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.photo-thumb{position:relative;width:72px;height:72px}.photo-thumb img{width:100%;height:100%;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--rule-strong);display:block}.photo-thumb button{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;border:1px solid var(--rule-strong);background:var(--surface);color:var(--ink-soft);font-size:11px;line-height:1;cursor:pointer;display:grid;place-items:center;padding:0;box-shadow:var(--shadow-sm)}.photo-thumb button:hover{background:var(--garnet);color:#fff;border-color:var(--garnet)}.edge-online{stroke:var(--gold-bright)!important;stroke-width:3.4;opacity:1;stroke-dasharray:none;filter:drop-shadow(0 0 3px var(--gold-wash))}.edge-offline{opacity:.2}.card-rect.on-line{stroke:var(--gold-bright);stroke-width:2.6}.edge-online.side-paternal{stroke:var(--lapis)!important}.edge-online.side-maternal{stroke:var(--garnet)!important}.edge-online.side-both{stroke:var(--gold-bright)!important;stroke-width:4}.edge-online.side-descendant{stroke:var(--emerald)!important}.card-rect.on-line.side-paternal{stroke:var(--lapis)}.card-rect.on-line.side-maternal{stroke:var(--garnet)}.card-rect.on-line.side-both{stroke:var(--gold-bright);stroke-width:3.4}.card-rect.on-line.side-descendant{stroke:var(--emerald)}.card-rect.on-line.side-self{stroke:var(--gold-bright);stroke-width:3.6}.side-key{position:absolute;left:14px;bottom:52px;background:color-mix(in srgb,var(--surface) 93%,transparent);border:1px solid var(--rule);border-radius:var(--radius-sm);padding:9px 12px;box-shadow:var(--shadow-sm);z-index:5;display:grid;gap:4px;font-size:12.5px;color:var(--ink-soft)}.side-key .row{display:flex;align-items:center;gap:7px}.side-key .swatch{width:16px;height:3px;border-radius:2px;flex-shrink:0}.voice-row{display:flex;align-items:center;gap:6px}.voice-row audio{height:34px}.recording{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--garnet);border-radius:var(--radius-sm);background:var(--surface)}.recording .pulse{width:14px;height:14px;border-radius:50%;background:var(--garnet);flex-shrink:0;transition:transform 80ms linear}.recording .meter{height:5px;background:var(--surface-2);border-radius:3px;overflow:hidden}.recording .meter-fill{height:100%;background:var(--garnet);border-radius:3px;transition:width 80ms linear}.recording .clock{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-faint);margin-top:5px}@media(prefers-reduced-motion:reduce){.recording .pulse,.recording .meter-fill{transition:none}}.fan-wrap{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.fan-svg{width:100%;height:100%;display:block}.fan-slot path{stroke:var(--bg);stroke-width:1.5;transition:fill .12s ease}.fan-slot text{fill:var(--ink);font-family:var(--font-body);font-weight:500;pointer-events:none}.fan-slot.side-paternal path{fill:color-mix(in srgb,var(--lapis) 22%,var(--surface))}.fan-slot.side-maternal path{fill:color-mix(in srgb,var(--garnet) 20%,var(--surface))}.fan-slot.empty path{fill:var(--surface-2)}.fan-slot.empty text{display:none}.fan-slot:first-child path{fill:var(--gold);stroke:var(--gold-bright);stroke-width:2}.fan-centre{fill:#fff;font-family:var(--font-display);font-size:17px;font-weight:600;pointer-events:none}.fan-centre-sub{fill:#ffffffd1;font-family:var(--font-mono);font-size:10.5px;pointer-events:none}:root[data-theme=dark] .fan-centre,:root:not([data-theme=light]) .fan-centre{fill:#1a1408}:root[data-theme=dark] .fan-centre-sub,:root:not([data-theme=light]) .fan-centre-sub{fill:#1a1408bf}@media(prefers-color-scheme:light){:root:not([data-theme=dark]) .fan-centre{fill:#fff}:root:not([data-theme=dark]) .fan-centre-sub{fill:#ffffffd1}}.fan-slot.twin path{stroke:var(--gold-bright);stroke-width:2}.fan-slot.lit path,.fan-slot.twin-lit path{fill:var(--gold-bright);stroke:var(--gold);stroke-width:2.5}.fan-slot.selected path{stroke:var(--gold);stroke-width:3}.fan-slot:hover path{filter:brightness(1.06)}.fan-controls{position:absolute;bottom:14px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;background:color-mix(in srgb,var(--surface) 93%,transparent);border:1px solid var(--rule);border-radius:999px;padding:6px 10px;box-shadow:var(--shadow-sm)}.fan-controls .count{font-family:var(--font-mono);font-size:12px;color:var(--ink-soft);min-width:62px;text-align:center}.fan-key{position:absolute;left:14px;top:14px;max-width:250px;background:color-mix(in srgb,var(--surface) 93%,transparent);border:1px solid var(--rule);border-radius:var(--radius-sm);padding:10px 12px;box-shadow:var(--shadow-sm);font-size:12.5px;color:var(--ink-soft)}.fan-key .row{display:flex;align-items:center;gap:7px;margin-bottom:4px}.fan-key .swatch{width:14px;height:10px;border-radius:2px;flex-shrink:0}.fan-key .swatch.pat{background:color-mix(in srgb,var(--lapis) 40%,var(--surface))}.fan-key .swatch.mat{background:color-mix(in srgb,var(--garnet) 40%,var(--surface))}.fan-key .swatch.twin{background:var(--gold-bright)}.fan-key .note{margin:7px 0 0;padding-top:7px;border-top:1px solid var(--rule);font-size:11.5px;color:var(--ink-faint);line-height:1.45}@media(max-width:640px){.fan-key{max-width:190px;font-size:11.5px}}.fan-empty{position:absolute;left:50%;top:58%;transform:translate(-50%);max-width:340px;text-align:center;background:color-mix(in srgb,var(--surface) 95%,transparent);border:1px solid var(--rule);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow-md)}.fan-empty p{margin:6px 0 0;font-size:13.5px;color:var(--ink-soft)}.tracing{position:absolute;top:14px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;background:color-mix(in srgb,var(--surface) 94%,transparent);border:1px solid var(--gold);border-radius:999px;padding:6px 8px 6px 16px;box-shadow:var(--shadow-md);font-size:13px;color:var(--ink-soft);z-index:6;max-width:calc(100vw - 32px)}.tracing strong{color:var(--ink);font-weight:600}.tracing .btn{padding:4px 10px;font-size:12.5px}@media(max-width:640px){.tracing{font-size:12px;padding-left:12px}}*{-webkit-tap-highlight-color:rgba(168,128,31,.18)}button,.btn,.rel-row,.seg button{touch-action:manipulation}.topbar{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}.canvas-controls{bottom:max(14px,env(safe-area-inset-bottom));right:max(14px,env(safe-area-inset-right))}.fan-controls{bottom:max(14px,env(safe-area-inset-bottom))}.panel{padding-bottom:env(safe-area-inset-bottom)}.panel,.sheet,.card{overscroll-behavior:contain}@media(max-width:720px){.app{min-width:0}.topbar{height:auto;min-height:52px;flex-wrap:wrap;gap:8px;padding:8px 12px;padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right));overflow-x:auto;overscroll-behavior-x:contain}.brand .tree-name{display:none}.brand{font-size:18px;flex-shrink:0}.topbar .search{order:10;flex:1 0 100%;min-width:0}.topbar .search input{width:100%}.topbar .spacer{display:none}.seg button,.topbar .btn{padding:6px 10px;font-size:12.5px}.panel{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;max-width:none;z-index:30;border-left:0}}@media(max-width:380px){.brand .urdu{display:none}}.btn:active:not(:disabled),.seg button:active,.rel-row:active{transform:translateY(1px) scale(.994)}.btn,.seg button,.rel-row{transition:background-color .14s ease,border-color .14s ease,transform 90ms ease}@media(prefers-reduced-motion:reduce){.btn,.seg button,.rel-row{transition:none}.btn:active:not(:disabled),.seg button:active,.rel-row:active{transform:none}}.skeleton{background:linear-gradient(90deg,var(--surface-2) 0%,color-mix(in srgb,var(--surface-2) 60%,var(--surface)) 50%,var(--surface-2) 100%);background-size:200% 100%;border-radius:var(--radius-sm);animation:shimmer 1.4s ease-in-out infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.skeleton{animation:none}}.tree-skeleton{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;gap:18px;align-content:center}.tree-skeleton .ring{border-radius:50%;border:2px solid var(--rule);opacity:.5}.tree-skeleton .label{font-family:var(--font-mono);font-size:12px;color:var(--ink-faint);letter-spacing:.08em}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#14151d6b;display:grid;place-items:start center;padding-top:7vh;z-index:50;overflow-y:auto}.missing-years{width:min(680px,94vw);max-height:82vh;overflow-y:auto}.year-list{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:2px}.year-row{display:grid;grid-template-columns:1fr auto auto 78px auto;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--radius-sm)}.year-row:nth-child(odd){background:var(--surface-2)}.year-row .nm{font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.year-row .nm.as-link{border:0;background:none;padding:0;text-align:left;color:var(--ink);cursor:pointer;font:inherit;font-weight:500}.year-row .nm.as-link:hover{color:var(--gold);text-decoration:underline}.year-row .why{font-size:11.5px;color:var(--ink-faint);white-space:nowrap}.year-row .about{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--ink-soft);white-space:nowrap;cursor:pointer}.year-row .yr-input{width:100%;padding:6px 8px;border:1px solid var(--rule-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font-family:var(--font-mono);font-size:13px;text-align:center}.year-row.done{opacity:.6;grid-template-columns:1fr auto}.year-row .ok{font-family:var(--font-mono);font-size:12.5px;color:var(--emerald)}@media(max-width:640px){.year-row{grid-template-columns:1fr 70px auto;row-gap:6px}.year-row .why,.year-row .about{display:none}}.duplicates{width:min(780px,95vw);max-height:85vh;overflow-y:auto}.dup-title{display:flex;align-items:flex-start;gap:12px}.dup-title h1{font-size:24px;margin:0;flex:1}.duplicates>.lede{margin-top:4px}.dup{border:1px solid var(--rule);border-radius:var(--radius);padding:14px 16px;margin:16px 0;background:var(--surface-2)}.dup.weak{background:transparent;border-style:dashed}.dup-head{display:flex;gap:12px;align-items:flex-start;margin-bottom:12px}.dup-case{flex:1;display:flex;flex-direction:column;gap:4px}.confidence{font-family:var(--font-mono);font-size:12px;font-variant-numeric:tabular-nums;color:var(--gold);background:var(--gold-wash);border-radius:999px;padding:3px 9px;flex-shrink:0}.dup.weak .confidence{color:var(--ink-faint);background:var(--rule-wash, rgba(0,0,0,.05))}.why{margin:0;padding-left:17px;font-size:13px;color:var(--ink-soft)}.why li{margin:1px 0}.why.against{list-style:none;padding-left:2px}.why.against li:before{content:"but ";color:var(--ink-faint);font-style:italic}.dup-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:stretch}.dup-side{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius-sm);padding:11px 12px;display:flex;flex-direction:column;gap:9px}.dup-side .nm{border:0;background:none;padding:0;text-align:left;cursor:pointer;font-family:var(--font-display);font-size:17px;font-weight:600;color:var(--ink)}.dup-side .nm:hover{color:var(--gold);text-decoration:underline}.dup-side dl{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;margin:0;font-size:12.5px;flex:1}.dup-side dt{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);padding-top:2px}.dup-side dd{margin:0;color:var(--ink-soft)}.dup-side dd em{color:var(--ink-faint)}.dup-act{margin-top:auto;display:flex;flex-direction:column;gap:7px}.dup-act .would{margin:0;font-size:12px;line-height:1.45;color:var(--ink-soft);border-top:1px solid var(--rule);padding-top:8px}.dup-act .would b{color:var(--ink);font-weight:600}.dup-act .btn{justify-content:center}.dup-different{margin-top:11px;font-size:12.5px}.dup-weak-block{margin-top:20px;padding-top:14px;border-top:1px solid var(--rule)}.dup-weak-toggle{font-size:13px;padding-left:6px;padding-right:10px}.dup-weak-note{margin:7px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink-faint);max-width:62ch}.dup-foot{display:flex;align-items:center;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid var(--rule)}.dup-foot span{flex:1;font-size:13px;color:var(--ink-faint)}@media(max-width:640px){.dup-pair{grid-template-columns:1fr}.dup-act{margin-top:4px}}.claim{width:min(460px,94vw);max-height:88vh;overflow-y:auto}.claim-title{display:flex;align-items:flex-start;gap:12px}.claim-title h1{font-size:22px;margin:0;flex:1}.claim .lede{margin-top:2px}.claim .field{display:flex;flex-direction:column;gap:4px;margin:14px 0}.claim .field>span{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}.claim .field small{font-size:11.5px;color:var(--ink-faint)}.claim .field input[disabled]{color:var(--ink-soft);opacity:1}.claim-rels{border:1px solid var(--rule);border-radius:var(--radius-sm);padding:4px 13px 13px;margin:18px 0 0}.claim-rels legend{font-family:var(--font-display);font-size:15px;font-weight:600;color:var(--ink);padding:0 6px}.claim .field.inline{flex-direction:row;align-items:center;gap:10px;margin:9px 0}.claim .field.inline>span{width:52px;flex-shrink:0;padding-top:0}.claim .field.inline input{flex:1;min-width:0}.claim-why{font-size:12.5px;color:var(--ink-soft);margin:6px 0 10px}.claim-foot{display:flex;align-items:center;gap:12px;margin-top:18px;padding-top:14px;border-top:1px solid var(--rule)}.claim-foot span{flex:1;font-size:12px;color:var(--ink-faint);line-height:1.45}.btn.is-me{margin-top:7px;font-size:12.5px;padding:3px 10px}.claim-evidence{margin-top:9px;padding:10px 12px;border-left:2px solid var(--gold);background:var(--surface-2);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.claim-evidence dl{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;margin:0 0 8px;font-size:12.5px}.claim-evidence dt{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);padding-top:2px}.claim-evidence dd{margin:0;color:var(--ink)}.claim-evidence dd em{color:var(--ink-faint)}.claim-evidence ul{list-style:none;margin:0;padding:0;font-size:12.5px}.claim-evidence li{display:flex;align-items:baseline;gap:8px;padding:2px 0}.claim-evidence .mark{width:12px;flex-shrink:0;font-weight:700}.claim-evidence li.hit .mark{color:var(--emerald, #1B6B4F)}.claim-evidence li.miss .mark{color:var(--garnet, #8E2B36)}.claim-evidence .rel{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);width:48px;flex-shrink:0}.claim-evidence .given{color:var(--ink)}.claim-evidence .note{color:var(--ink-faint);font-style:italic;font-size:11.5px}.claim-evidence .none{margin:0;font-size:12.5px;color:var(--ink-soft)}.claim-evidence .tally{margin:8px 0 0;font-size:12px;color:var(--ink-soft);border-top:1px solid var(--rule);padding-top:7px}.manage{position:relative}.manage-menu{position:fixed;z-index:60;min-width:232px;padding:5px;background:var(--surface);border:1px solid var(--rule-strong);border-radius:var(--radius);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:1px}.manage-menu button{display:flex;flex-direction:column;gap:1px;width:100%;padding:8px 10px;border:0;border-radius:var(--radius-sm);background:none;text-align:left;cursor:pointer;font:inherit;color:var(--ink)}.manage-menu button:hover,.manage-menu button:focus-visible{background:var(--surface-2)}.manage-menu .label{display:flex;align-items:center;gap:7px;font-size:14px;font-weight:500}.manage-menu .hint{font-size:12px;color:var(--ink-faint)}@media(pointer:coarse){.btn,.seg button,.manage-menu button,.topbar .btn,input[type=password],input[type=email],input[type=text],select{min-height:44px}.btn.quiet,.zoom button{min-width:44px;justify-content:center}.btn.primary{min-height:52px}}.landing{--lp-max: 1180px;background:var(--bg);color:var(--ink);overflow-x:clip}.lp-nav{max-width:var(--lp-max);margin:0 auto;padding:22px 24px;display:flex;align-items:center;gap:16px}.lp-brand{display:flex;align-items:baseline;gap:10px;text-decoration:none;color:var(--ink);margin-right:auto}.lp-wordmark{font-family:var(--font-display);font-size:25px;font-weight:600;letter-spacing:-.01em}.lp-urdu{font-family:var(--font-wordmark);font-size:19px;color:var(--gold);line-height:2}.lp-hero{max-width:var(--lp-max);margin:0 auto;padding:40px 24px 92px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:56px;align-items:center}.lp-hero h1,.zh-copy h1{font-family:var(--font-display);font-size:clamp(40px,6vw,68px);line-height:1.04;font-weight:600;letter-spacing:-.022em;margin:0 0 22px;text-wrap:balance}.lp-hero h1 em,.zh-copy h1 em{display:block;font-style:italic;color:var(--gold);line-height:1.1;padding-bottom:2px}.lp-lede{font-size:17.5px;line-height:1.62;color:var(--ink-soft);max-width:46ch;margin:0 0 14px}.lp-cta{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:26px}.lp-cta .btn.primary{font-size:15.5px;padding:12px 22px}.lp-cta-note{font-size:13px;color:var(--ink-faint)}.hero-tree{width:100%;height:auto;overflow:visible}.hero-line{fill:none;stroke:var(--lapis);stroke-width:1.75;stroke-linejoin:round;opacity:.5;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .62s cubic-bezier(.16,.84,.28,1)}.hero-line.in{stroke-dashoffset:0}.hero-line.marriage{stroke:var(--gold);opacity:.85;stroke-width:2}.hero-node rect{fill:var(--surface);stroke:var(--rule-strong);stroke-width:1}.hero-node text{font-family:var(--font-body);font-size:12.5px;fill:var(--ink-soft)}.hero-node{opacity:0;transform:translateY(8px);transition:opacity .46s ease,transform .46s cubic-bezier(.16,.84,.28,1)}.hero-node.in{opacity:1;transform:none}.hero-node.focus rect{stroke:var(--gold);stroke-width:2;fill:var(--gold-wash)}.hero-node.focus text{fill:var(--ink);font-weight:500}.hero-lozenge rect{fill:var(--gold)}.hero-lozenge{opacity:0;transform:scale(.4);transform-origin:center;transition:opacity .3s ease,transform .3s cubic-bezier(.2,1.5,.4,1)}.hero-lozenge.in{opacity:1;transform:none}.lp-section{max-width:var(--lp-max);margin:0 auto;padding:76px 24px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;align-items:center;border-top:1px solid var(--rule)}.lp-section.flip .lp-copy{order:2}@media(min-width:901px){.lp-section.art-led{grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr)}.lp-section.copy-led{grid-template-columns:minmax(0,1.16fr) minmax(0,.84fr)}}.lp-copy{opacity:0;transform:translateY(14px);transition:opacity .62s ease,transform .62s cubic-bezier(.16,.84,.28,1)}.lp-section.seen .lp-copy{opacity:1;transform:none}.lp-eyebrow{display:inline-block;font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-bottom:12px}.lp-section h2{font-family:var(--font-display);font-size:clamp(27px,3.4vw,38px);line-height:1.12;font-weight:600;letter-spacing:-.016em;margin:0 0 16px;text-wrap:balance}.lp-section p{font-size:16.5px;line-height:1.66;color:var(--ink-soft);max-width:48ch;margin:0 0 13px}.demo-onenode svg{width:100%;height:auto;overflow:visible}.on-edge{fill:none;stroke:var(--rule-strong);stroke-width:1.6;opacity:0;transition:opacity .42s ease}.on-edge.in{opacity:.75}.on-edge.gold{stroke:var(--gold);stroke-width:2}.on-node rect{fill:var(--surface);stroke:var(--rule-strong)}.on-node text{font-family:var(--font-body);font-size:13.5px;fill:var(--ink-soft)}.on-node.ghost{opacity:0;transform:translateY(10px);transition:opacity .42s ease,transform .62s cubic-bezier(.16,.84,.28,1)}.on-node.ghost.in{opacity:1;transform:none}.on-node.ghost.gone{opacity:0}.on-node.real{opacity:0;transform:scale(.94);transition:opacity .42s ease .12s,transform .52s cubic-bezier(.16,.84,.28,1) .12s}.on-node.real.in{opacity:1;transform:none}.on-node.real rect{stroke:var(--gold);stroke-width:2;fill:var(--gold-wash)}.on-node.spouse{opacity:0;transform:translateY(6px);transition:opacity .42s ease .26s,transform .42s cubic-bezier(.16,.84,.28,1) .26s}.on-node.spouse.in{opacity:1;transform:none}.on-node.spouse text{font-size:12px;fill:var(--ink-faint)}.on-node.real text{fill:var(--ink);font-weight:500}.on-caption{font-family:var(--font-mono);font-size:11.5px;fill:var(--ink-faint);letter-spacing:.06em;opacity:0;transition:opacity .42s ease .32s}.on-caption.in{opacity:1}.demo-whole svg{width:100%;height:auto}.wt-dot{opacity:0;transform:scale(.2);transform-box:fill-box;transform-origin:center;transition:opacity .52s ease,transform .52s cubic-bezier(.16,.84,.28,1)}.wt-dot.in{opacity:1;transform:none}.wt-dot.br-0,.wt-lane.br-0{fill:var(--lapis);stroke:var(--lapis)}.wt-dot.br-1,.wt-lane.br-1{fill:var(--garnet);stroke:var(--garnet)}.wt-dot.br-2,.wt-lane.br-2{fill:var(--emerald);stroke:var(--emerald)}.wt-dot.br-3,.wt-lane.br-3{fill:var(--aubergine);stroke:var(--aubergine)}.wt-dot.br-4,.wt-lane.br-4{fill:var(--gold);stroke:var(--gold)}.wt-lane{fill:none;stroke-width:1.4;stroke-linecap:round;opacity:0;transition:opacity .7s ease}.wt-lane.in{opacity:.24}.wt-core{fill:var(--gold);opacity:0;transition:opacity .42s ease .2s}.wt-core.in{opacity:1}.demo-note{font-size:13.5px;color:var(--ink-faint);text-align:center;margin:10px 0 0}.demo-note strong{color:var(--ink);font-variant-numeric:tabular-nums}.demo-kinship{display:flex;flex-direction:column;gap:18px}.kin-them{display:flex;align-items:baseline;gap:12px;padding:16px 18px;border:1px dashed var(--rule-strong);border-radius:var(--radius)}.kin-label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint)}.kin-word{font-family:var(--font-display);font-size:26px;color:var(--ink-faint)}.kin-us{display:grid;grid-template-columns:1fr 1fr;gap:9px}.kin-chip{padding:11px 13px;border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--surface);display:flex;flex-direction:column;gap:2px;opacity:0;transform:translateY(10px);transition:opacity .46s ease,transform .46s cubic-bezier(.16,.84,.28,1)}.kin-chip.in{opacity:1;transform:none}.kin-chip b{font-family:var(--font-display);font-size:17px;color:var(--ink);font-weight:600}.kin-chip span{font-size:12px;color:var(--ink-faint)}.demo-voice{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:20px}.voice-row{display:flex;align-items:center;gap:14px}.voice-play{width:38px;height:38px;flex-shrink:0;border-radius:50%;background:var(--gold);color:var(--surface);display:grid;place-items:center;font-size:13px}.voice-wave{display:flex;align-items:center;gap:3px;flex:1;height:44px}.voice-wave i{flex:1;background:var(--lapis);opacity:.35;border-radius:2px}.voice-caption{font-family:var(--font-display);font-size:19px;line-height:1.45;color:var(--ink);margin:16px 0 6px}.voice-src{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);margin:0}.demo-share{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:20px}.share-link{font-family:var(--font-mono);font-size:14px;color:var(--lapis);background:var(--surface-2);border:1px solid var(--rule);border-radius:var(--radius-sm);padding:11px 13px;margin-bottom:16px;overflow-x:auto;white-space:nowrap}.share-points{margin:0;padding-left:18px}.share-points li{font-size:14.5px;line-height:1.6;color:var(--ink-soft);margin:7px 0}.lp-close{max-width:640px;margin:0 auto;padding:92px 24px 100px;text-align:center;border-top:1px solid var(--rule)}.lp-close h2{font-family:var(--font-display);font-size:clamp(30px,4.4vw,46px);font-weight:600;letter-spacing:-.018em;margin:0 0 14px}.lp-close p{font-size:16.5px;line-height:1.62;color:var(--ink-soft);margin:0 auto 26px;max-width:46ch}.lp-close .btn.primary{font-size:15.5px;padding:12px 24px}.lp-foot{border-top:1px solid var(--rule);padding:26px 24px 40px;display:flex;align-items:center;justify-content:center;gap:12px;font-size:13px;color:var(--ink-faint);text-align:center;flex-wrap:wrap}@media(max-width:900px){.lp-hero,.lp-section{grid-template-columns:1fr;gap:34px;padding-top:44px;padding-bottom:54px}.lp-section.flip .lp-copy{order:0}.lp-hero{padding-bottom:56px}.kin-us{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.landing *,.landing *:before,.landing *:after{transition-duration:1ms!important;transition-delay:0ms!important;animation-duration:1ms!important}.landing .hero-node,.landing .lp-copy,.landing .kin-chip,.landing .wt-lane,.landing .wt-dot,.landing .on-node.ghost,.landing .on-node.spouse,.landing .on-node.real{opacity:1;transform:none}.landing .hero-line{stroke-dashoffset:0}.landing .on-edge{opacity:.75}.landing .wt-core,.landing .on-caption{opacity:1}.landing .wt-lane{opacity:.24}.landing .hero-lozenge{opacity:1;transform:none}}.import-collisions{margin:14px 0;max-height:320px;overflow-y:auto;border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--surface)}.import-note{font-size:13px;line-height:1.55;color:var(--ink-soft);margin:0;padding:12px 14px;border-bottom:1px solid var(--rule)}.import-collisions .import-note:last-child{border-bottom:0;border-top:1px solid var(--rule)}.import-collide{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;padding:9px 14px;border-bottom:1px solid var(--rule);align-items:baseline}.import-collide:last-child{border-bottom:0}.import-collide.weak{opacity:.72}.import-collide .pc{grid-row:span 2;font-family:var(--font-mono);font-size:11.5px;font-variant-numeric:tabular-nums;color:var(--gold);background:var(--gold-wash);border-radius:999px;padding:2px 8px;align-self:start}.import-collide.weak .pc{color:var(--ink-faint);background:var(--surface-2)}.import-collide .names{font-size:13.5px;color:var(--ink)}.import-collide .names b{font-weight:600}.import-collide .why{font-size:12px;color:var(--ink-faint)}.import-actions{display:flex;gap:10px;align-items:center;margin-top:16px;padding-top:14px;border-top:1px solid var(--rule)}.notes .note-list{list-style:none;margin:0 0 12px;padding:0}.notes .note-list li{border-left:2px solid var(--rule-strong);padding:2px 0 2px 11px;margin:0 0 11px}.notes .note-body{margin:0 0 3px;font-size:14px;line-height:1.55;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere}.notes .note-by{margin:0;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.04em;color:var(--ink-faint)}.notes .note-empty{font-size:13px;color:var(--ink-faint);margin:0 0 12px;line-height:1.5}.notes .note-form textarea{width:100%;resize:vertical;min-height:66px;font:inherit;font-size:13.5px;line-height:1.5;padding:9px 11px;border:1px solid var(--rule-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink)}.notes .note-foot{display:flex;align-items:center;gap:10px;margin-top:8px}.notes .note-foot span{flex:1;font-size:11.5px;color:var(--ink-faint)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.confirm{border:1px solid var(--rule-strong);border-radius:var(--radius-md, 10px);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-lg, 0 18px 50px rgba(0, 0, 0, .28));padding:20px 22px;max-width:25rem;width:calc(100vw - 32px)}.confirm::backdrop{background:#060a1480}.confirm h2{font-family:var(--font-display, inherit);font-size:19px;font-weight:600;line-height:1.3;text-wrap:balance;margin:0 0 10px;color:var(--ink)}.confirm-body p{margin:0 0 8px;font-size:13.5px;line-height:1.6;color:var(--ink-soft)}.confirm-body p:last-child{margin-bottom:0}.confirm-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}@media(pointer:coarse){.confirm-actions{gap:10px}.confirm-actions .btn{min-height:44px;padding-inline:14px}}.src-list{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:2px}.src-list li{display:flex;align-items:flex-start;gap:8px;padding:8px 0;border-bottom:1px solid var(--rule)}.src-list li:last-child{border-bottom:0}.src-main{flex:1;min-width:0}.src-line{font-family:var(--font-mono);font-size:12.5px;line-height:1.5;color:var(--ink);margin:0;overflow-wrap:anywhere}.src-meta{font-size:11.5px;line-height:1.5;color:var(--ink-faint);margin:2px 0 0}.src-empty{font-size:12.5px;line-height:1.6;color:var(--ink-faint);margin:0 0 12px}.src-form{display:grid;gap:10px;margin-top:12px;padding:12px;border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--surface-2)}.src-actions{display:flex;gap:8px}.src-confidence{margin:0 0 12px}.src-hint{font-size:11.5px;color:var(--ink-faint)}@media(pointer:coarse){.src-list li .btn{min-height:40px;min-width:40px;justify-content:center}}.ghar{border:1px solid var(--rule);border-radius:var(--radius-sm);padding:11px 12px;margin-bottom:10px;background:var(--surface-2)}.ghar-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.ghar-name{font-family:var(--font-display);font-size:16.5px;font-weight:600;color:var(--ink)}.ghar-tag{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--gold)}.ghar-members{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:3px}.ghar-members li{display:flex;align-items:baseline;gap:7px;font-size:13.5px}.linky{background:none;border:0;padding:0;font:inherit;color:var(--ink);cursor:pointer;text-align:left;border-bottom:1px solid transparent}.linky:hover{border-bottom-color:var(--gold)}.linky:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.ghar-alone,.ghar-empty{font-size:12.5px;line-height:1.6;color:var(--ink-faint);margin:8px 0 0}.ghar-empty{margin:0 0 12px}.ghar-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.ghar-add{display:grid;gap:10px}.ghar-form{display:grid;gap:10px;margin-top:4px;padding:12px;border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--surface-2)}@media(pointer:coarse){.ghar-actions .btn{min-height:40px}.ghar-members li{min-height:32px;align-items:center}}.zh-track{height:340vh;position:relative}.zh-stage{position:sticky;top:0;height:100svh;min-height:520px;overflow:hidden;display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:center;gap:40px;max-width:var(--lp-max);margin:0 auto;padding:0 24px;--k: 3.2;--o1: 0;--o2: 0;--o3: 0;--od: 0;--om: 0;--b1: 1;--b2: 0;--b3: 0;--b4: 0}.zh-copy{position:relative;z-index:2}.zh-art{position:relative;height:100%;min-height:0;z-index:1;pointer-events:none}.zh-art svg{width:100%;height:100%;display:block}.zh-scene{transform-box:view-box;transform-origin:500px 500px;transform:scale(var(--k))}.zh-link{stroke:var(--rule-strong);stroke-width:1.6;vector-effect:non-scaling-stroke;opacity:var(--o2)}.zh-dot{opacity:var(--od)}.zh-dot.br-0{fill:var(--lapis)}.zh-dot.br-1{fill:var(--garnet)}.zh-dot.br-2{fill:var(--emerald)}.zh-dot.br-3{fill:var(--aubergine)}.zh-dot.br-4{fill:var(--gold)}.zh-card rect{fill:var(--surface);stroke:var(--rule-strong);stroke-width:1.4;vector-effect:non-scaling-stroke}.zh-card text{fill:var(--ink);font-family:var(--font-body);font-size:19px;transform-box:fill-box}.zh-card.r0 rect{stroke:var(--gold);stroke-width:2.6}.zh-card.r1{opacity:var(--o1)}.zh-card.r2{opacity:var(--o2)}.zh-card.r3{opacity:var(--o3)}.zh-card.merged{opacity:var(--om)}.zh-card.merged rect{stroke:var(--gold-bright);stroke-width:2.6}.zh-card.merged text{fill:var(--ink);font-weight:600}.zh-captions{position:relative;margin-top:18px;min-height:3.4em}.zh-caption{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;font-size:16.5px;line-height:1.55;color:var(--ink-soft);max-width:30ch}.zh-caption.b1{opacity:var(--b1)}.zh-caption.b2{opacity:var(--b2)}.zh-caption.b3{opacity:var(--b3);color:var(--ink)}.zh-caption.b4{opacity:var(--b4)}@media(min-width:901px){.zh-art{margin-right:-40px}}@media(max-width:900px){.zh-stage{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);align-content:center;padding:0 20px 12px}.zh-track{height:300vh}.zh-art{margin-right:0;min-height:40svh}}.zh-track.still{height:auto}.zh-track.still .zh-stage{position:static;height:auto;min-height:0;padding:28px 24px 44px;--k: 1.32;--o1: 1;--o2: 1;--o3: 1;--od: 1;--om: 1}.zh-track.still .zh-art{position:relative;inset:auto;height:58vh;min-height:320px;order:2}.zh-track.still .zh-captions{min-height:0}.zh-track.still .zh-caption{position:static;opacity:1;margin:0 0 6px;max-width:46ch}.zh-arc{fill:none;stroke:var(--gold);stroke-width:1.8;stroke-linecap:round;vector-effect:non-scaling-stroke;opacity:calc(var(--om) * .8)}.filter-sheet{width:min(560px,94vw);max-height:84vh;overflow-y:auto}.filter-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:6px}.filter-head h1{font-size:24px;margin:0;flex:1}.filter-count{font-family:var(--font-mono);font-size:13px;color:var(--ink-soft);margin:0 0 6px}.filter-count strong{color:var(--ink);font-variant-numeric:tabular-nums}.filter-note{font-size:12.5px;line-height:1.6;color:var(--ink-faint);margin:6px 0 0;max-width:62ch}.filter-group{margin-top:20px;padding-top:16px;border-top:1px solid var(--rule)}.filter-group h3{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 10px;font-weight:500}.filter-choices{display:flex;flex-wrap:wrap;gap:7px}.chip{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border:1px solid var(--rule-strong);border-radius:999px;background:var(--surface);color:var(--ink);font:inherit;font-size:13px;cursor:pointer}.chip:hover{border-color:var(--gold)}.chip:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.chip.on{background:var(--gold);border-color:var(--gold);color:#1a1408;font-weight:500}.chip-swatch{width:14px;height:3px;border-radius:2px;flex-shrink:0}.chip-count{font-family:var(--font-mono);font-size:11px;opacity:.7;font-variant-numeric:tabular-nums}.filter-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:22px;padding-top:16px;border-top:1px solid var(--rule)}@media(pointer:coarse){.chip{min-height:40px;padding-inline:14px}.filter-foot .btn{min-height:44px}}
