:root{--paper:#e6ebe4;--plate:#f5f7f3;--ink:#17241c;--mute:#4a5b51;--rule:#c3d0c6;--pine:#215c42;--leaf:#3a7d5a;--mist:#d4e3d6;--display:"Besley", "Palatino Linotype", Palatino, serif;--body:"Atkinson Hyperlegible", "Segoe UI", sans-serif;--ease:cubic-bezier(.16, 1, .3, 1);--shadow:0 10px 28px -14px #17241c6b}*,:before,:after{box-sizing:border-box}html,body{background:var(--paper);min-height:100%;color:var(--ink);font-family:var(--body);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;margin:0}body{background-image:radial-gradient(circle at 12% -8%, color-mix(in srgb, var(--mist) 70%, transparent), transparent 42%), radial-gradient(circle at 100% 100%, color-mix(in srgb, var(--leaf) 9%, transparent), transparent 34%);min-height:100dvh}::selection{background:var(--mist);color:var(--ink)}:focus-visible{outline:2px solid var(--pine);outline-offset:3px}button{font:inherit;color:inherit;cursor:pointer}#app{min-height:100dvh}.shell{grid-template-columns:minmax(240px,300px) 1fr;min-height:100dvh;display:grid}.rail{border-right:1px solid var(--rule);background:color-mix(in srgb, var(--plate) 55%, transparent);flex-direction:column;padding:36px 28px 28px;display:flex}.mark-leaf{width:28px;height:28px;color:var(--pine);margin-bottom:22px}.rail h1{font-family:var(--display);letter-spacing:-.03em;margin:0 0 14px;font-size:clamp(2.2rem,4vw,3.15rem);font-weight:700;line-height:.95}.rail .lede{color:var(--mute);max-width:28ch;margin:0 0 28px;font-size:1.05rem;line-height:1.45}.lineage{margin-top:auto;padding-top:28px}.lineage strong{font-family:var(--display);font-size:1.25rem;font-style:normal;font-weight:700;display:block}.lineage p{color:var(--mute);margin:6px 0 0;font-size:.92rem}.note{color:var(--mute);margin:22px 0 0;font-size:.82rem}.stage{min-height:100dvh;padding:28px 28px 36px;position:relative;overflow:auto}.canvas{isolation:isolate;background:var(--plate);border:1px solid var(--rule);min-height:calc(100dvh - 64px);box-shadow:var(--shadow);scrollbar-color:var(--leaf) transparent;transition:transform .48s var(--ease), opacity .48s var(--ease);border-radius:28px;position:relative;overflow:auto}.canvas.is-recessed{opacity:.42;transform:scale(.985)}.canvas:before{content:"";z-index:0;pointer-events:none;opacity:.18;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");position:absolute;inset:0}.links{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.links path{fill:none;stroke:color-mix(in srgb, var(--pine) 55%, var(--rule));stroke-width:2.25px;stroke-linecap:round;stroke-linejoin:round;transition:stroke .42s var(--ease), stroke-width .42s var(--ease), opacity .42s var(--ease)}.links path.dim{opacity:.14}.links path.lit{stroke:var(--pine);stroke-width:3.25px}.links path.pulse{animation:ink-pulse .64s var(--ease)}.person{z-index:1;border:1px solid var(--rule);background:var(--plate);color:var(--ink);transition:transform .28s var(--ease), opacity .38s var(--ease), background .38s var(--ease), border-color .38s var(--ease), box-shadow .38s var(--ease);position:relative}.person.enter{animation:bloom .72s var(--ease) both}.person.dim{opacity:.34}.person.on{border-color:var(--pine);background:var(--plate);box-shadow:0 10px 24px -16px #17241c66}.person .glyph{background:color-mix(in srgb, var(--ink) 6%, var(--plate));color:var(--ink);font-family:var(--display);transition:background .38s var(--ease), color .38s var(--ease), transform .38s var(--ease);place-items:center;font-weight:700;display:grid}.person.on .glyph{background:color-mix(in srgb, var(--ink) 8%, var(--plate));color:var(--ink)}.person .who{text-align:left;justify-items:start;gap:1px;display:grid}.person .nm{font-family:var(--display);letter-spacing:-.02em;font-weight:700}.person .yr{color:var(--mute);font-size:.82rem}.person.on .yr{color:var(--mute)}.plate{border-radius:10px;align-items:center;gap:12px;min-width:188px;min-height:64px;padding:10px 16px 10px 10px;display:flex}.plate .nm{white-space:nowrap}.plate .glyph{border-radius:50%;flex:none;width:44px;height:44px;font-size:1.15rem}.plate:hover{transform:translateY(-3px)}.plate:active{transform:scale(.97)}.layout-gen{z-index:1;min-height:inherit;flex-direction:column;justify-content:center;align-items:center;gap:86px;width:max-content;min-width:100%;margin:0 auto;padding:56px 48px 64px;display:flex;position:relative}.gen-row{z-index:1;flex-wrap:nowrap;justify-content:center;gap:56px;display:flex}.couple{flex-wrap:nowrap;align-items:center;gap:0;display:flex}.union-bar{border:0;border-top:2.5px dotted var(--pine);width:34px;height:0;transition:opacity .42s var(--ease);flex:none;margin:0 4px}.union-bar.dim{opacity:.2}.live{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.veil{z-index:40;background:color-mix(in srgb, var(--ink) 32%, transparent);opacity:0;pointer-events:none;transition:opacity .38s var(--ease);position:fixed;inset:0}.veil.on{opacity:1}.ficha{z-index:41;background:var(--plate);border:1px solid var(--rule);scrollbar-color:var(--rule) transparent;border-radius:12px;max-height:min(78dvh,640px);padding:20px 20px 22px;position:fixed;overflow:auto;box-shadow:0 28px 64px -22px #17241c80}.ficha-body{gap:8px;display:grid}.ficha-body.swap{opacity:0;filter:blur(4px);transition:opacity .16s var(--ease), filter .16s var(--ease)}.ficha-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.ficha .glyph{background:color-mix(in srgb, var(--ink) 6%, var(--plate));width:44px;height:44px;color:var(--ink);font-family:var(--display);border-radius:50%;place-items:center;font-size:1.15rem;font-weight:700;display:grid}.ficha-close{border:1px solid var(--rule);color:var(--ink);background:0 0;border-radius:8px;min-height:44px;padding:0 14px}.ficha-close:hover{background:color-mix(in srgb, var(--ink) 5%, var(--plate))}.ficha h2{font-family:var(--display);letter-spacing:-.03em;margin:6px 0 0;font-size:clamp(1.7rem,5vw,2.15rem);font-weight:700;line-height:1.05}.alias{font-family:var(--display);color:var(--mute);clip-path:inset(0 100% 0 0);margin:4px 0 0;font-size:1.05rem;font-style:italic;font-weight:500}.ficha.ready .alias{animation:write-alias .62s var(--ease) .12s both}.ficha-meta,.ficha-note{color:var(--mute);margin:0}.ficha-note{max-width:38ch;color:var(--ink);margin-top:8px;line-height:1.45}.ficha-facts{border-top:1px solid var(--rule);grid-template-columns:7.5rem 1fr;gap:8px 12px;margin:14px 0 0;padding-top:14px;display:grid}.ficha-facts dt{color:var(--mute)}.ficha-facts dd{margin:0;font-weight:700}.ficha.ready .ficha-note,.ficha.ready .ficha-facts,.ficha.ready h2,.ficha.ready .ficha-meta{animation:rise-copy .48s var(--ease) both}.ficha.ready h2{animation-delay:60ms}.ficha.ready .ficha-meta{animation-delay:.18s}.ficha.ready .ficha-note{animation-delay:.24s}.ficha.ready .ficha-facts{animation-delay:.3s}@keyframes bloom{0%{opacity:0;filter:blur(6px);transform:translateY(10px)scale(.96)}to{opacity:1;filter:blur();transform:translateY(0)scale(1)}}@keyframes ink-pulse{0%{stroke-width:2.25px}40%{stroke-width:4.2px}to{stroke-width:3.25px}}@keyframes write-alias{0%{clip-path:inset(0 100% 0 0);opacity:.4}to{clip-path:inset(0);opacity:1}}@keyframes rise-copy{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (width<=860px){.shell{grid-template-columns:1fr}.rail{border-right:0;border-bottom:1px solid var(--rule);padding:16px 16px 12px}.mark-leaf{width:22px;height:22px;margin-bottom:10px}.rail h1{margin-bottom:6px;font-size:1.85rem}.rail .lede,.lineage,.note{display:none}.stage{min-height:unset;padding:10px 10px 18px}.canvas{border-radius:16px;min-height:72dvh}.layout-gen{gap:72px;padding:36px 24px 48px}.layout-gen .plate{min-width:168px}.layout-gen .plate .nm{font-size:.92rem}.gen-row{gap:40px}.union-bar{width:28px}.ficha{border-radius:12px 12px 10px 10px}}@media (prefers-reduced-motion:reduce){.person,.links path,.canvas,.veil,.ficha,.alias,.ficha-note,.ficha-facts,.ficha h2,.ficha-meta{transition:none!important;animation:none!important}.person.enter,.canvas.is-recessed{filter:none;transform:none}.alias{clip-path:none;opacity:1}.canvas.is-recessed{opacity:.5}}.gate{min-height:100dvh;padding:36px 28px calc(36px + env(safe-area-inset-bottom));flex-direction:column;justify-content:center;max-width:480px;margin:0 auto;display:flex}.gate .mark-leaf{margin-bottom:18px}.gate-kicker{color:var(--mute);letter-spacing:.18em;text-transform:uppercase;margin:0 0 10px;font-size:.82rem}.gate h1{font-family:var(--display);letter-spacing:-.04em;margin:0;font-size:clamp(3.4rem,16vw,5.2rem);font-weight:700;line-height:.9}.gate .lede{color:var(--mute);max-width:28ch;margin:16px 0 0;font-size:1.05rem;line-height:1.45}.gate-stack{gap:12px;margin-top:36px;display:grid}.gate-btn{border:1px solid var(--rule);background:var(--plate);min-height:52px;color:var(--ink);text-align:left;transition:border-color .28s var(--ease), transform .28s var(--ease), background .28s var(--ease);border-radius:12px;gap:4px;padding:16px 18px;display:grid}.gate-btn:hover{border-color:var(--pine);transform:translateY(-2px)}.gate-btn strong{font-family:var(--display);font-size:1.25rem;font-weight:700}.gate-btn span{color:var(--mute);font-size:.92rem}.gate-btn.primary{background:var(--pine);border-color:var(--pine);color:var(--plate);text-align:center;font-family:var(--display);font-size:1.1rem;font-weight:700}.gate-btn.primary:hover{background:var(--leaf);border-color:var(--leaf)}.gate-empty,.gate-error{color:var(--mute);margin:0;font-size:.95rem}.gate-error{color:var(--danger)}.rail-top{align-items:center;gap:10px;margin-bottom:8px;display:flex}.back-btn{border:1px solid var(--rule);color:var(--ink);background:0 0;border-radius:8px;min-height:40px;padding:0 12px}.back-btn:hover{background:color-mix(in srgb, var(--ink) 5%, var(--plate))}.fab{z-index:5;background:var(--pine);width:52px;height:52px;color:var(--plate);font-family:var(--display);border:0;border-radius:50%;font-size:1.6rem;font-weight:700;line-height:1;position:absolute;bottom:22px;right:22px;box-shadow:0 14px 28px -12px #17241c73}.fab:hover{background:var(--leaf)}.ficha-actions{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.ficha-btn{border:1px solid var(--rule);color:var(--ink);background:0 0;border-radius:8px;min-height:44px;padding:0 14px}.ficha-btn:hover{background:color-mix(in srgb, var(--ink) 5%, var(--plate))}.ficha-btn.primary{background:var(--pine);border-color:var(--pine);color:var(--plate)}.ficha-btn.danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 35%, var(--rule))}.panel-backdrop{z-index:50;background:color-mix(in srgb, var(--ink) 36%, transparent);place-items:end center;padding:16px;display:grid;position:fixed;inset:0}.panel{background:var(--plate);border:1px solid var(--rule);width:min(420px,100%);max-height:min(86dvh,720px);padding:18px 18px calc(18px + env(safe-area-inset-bottom));border-radius:14px;overflow:auto;box-shadow:0 28px 64px -22px #17241c80}.panel h2{font-family:var(--display);letter-spacing:-.02em;margin:0 0 12px;font-size:1.45rem;font-weight:700}.panel-kicker{color:var(--mute);letter-spacing:.12em;text-transform:uppercase;margin:0 0 6px;font-size:.82rem}.form-grid{gap:12px;margin:12px 0;display:grid}.field{border:1px solid var(--rule);background:color-mix(in srgb, var(--paper) 70%, var(--plate));width:100%;color:var(--ink);font:inherit;border-radius:10px;margin:0;padding:12px 14px}.form-grid .ficha-btn{width:100%;margin-top:4px}textarea.field{resize:vertical;min-height:88px}.chips{flex-wrap:wrap;gap:8px;margin:8px 0 4px;display:flex}.chip{border:1px solid var(--rule);min-height:44px;color:var(--ink);background:0 0;border-radius:999px;padding:10px 14px}.chip.on{background:var(--pine);border-color:var(--pine);color:var(--plate);font-weight:700}.rel-row{border-top:1px solid var(--rule);justify-content:space-between;align-items:center;gap:8px;padding:10px 0;display:flex}.empty{color:var(--mute);font-size:.92rem}.error{color:var(--danger);font-size:.92rem}@media (width<=860px){.gate{padding:24px 18px calc(24px + env(safe-area-inset-bottom))}.fab{bottom:14px;right:14px}}:root{--paper:#e6ebe4;--plate:#f5f7f3;--ink:#17241c;--mute:#4a5b51;--rule:#c3d0c6;--pine:#215c42;--leaf:#3a7d5a;--mist:#d4e3d6;--danger:#a33b3b;--display:"Besley", "Palatino Linotype", Palatino, serif;--body:"Atkinson Hyperlegible", "Segoe UI", sans-serif;--ease:cubic-bezier(.16, 1, .3, 1);--shadow:0 10px 28px -14px #17241c6b}
