:root{--color-page:#f3edf1;--color-board:#fff9fc;--color-board-deep:#f6eaf2;--color-panel:#fffdfd;--color-portrait-background:#fff;--color-ink:#2e1d2a;--color-ink-muted:#756673;--color-line:#e6cfdd;--color-line-strong:#cfaabd;--color-accent:#e95588;--color-accent-dark:#b82f61;--color-on-accent:#fff;--color-action-foreground:var(--color-on-accent);--color-affinity:#e95588;--color-affinity-soft:#fdeaf1;--color-stability:#4f82c4;--color-stability-soft:#ebf2fb;--color-energy:#ee7754;--color-energy-soft:#fff0ea;--color-healing:#6da960;--color-healing-soft:#eef7eb;--color-support:#8a68c7;--color-support-soft:#f1ecfa;--color-mystery:#7e7a86;--color-mystery-soft:#f0eef2;--color-mentor:#955773;--color-mentor-soft:#f7eaf0;--color-focus:#4f82c4;--shadow-board:0 1.5rem 4rem #5e334f24;--shadow-card:0 .5rem 1.25rem #683a5429;--shadow-action-hover:0 .625rem 1.25rem #b82f6138;--font-display:var(--font-product), "Apple SD Gothic Neo", system-ui, sans-serif;--font-body:var(--font-product), "Apple SD Gothic Neo", system-ui, sans-serif;--font-webtoon-accent:var(--font-webtoon-note), var(--font-product), "Apple SD Gothic Neo", sans-serif;--font-production-label:"SFMono-Regular", "Roboto Mono", Consolas, monospace;--font-mono:var(--font-production-label);--font-weight-regular:400;--font-weight-bold:700;--font-weight-black:900;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4.5rem;--radius-small:.5rem;--radius-medium:.875rem;--radius-large:1.375rem;--radius-round:999px;--border-thin:1px solid var(--color-line);--border-strong:1px solid var(--color-line-strong);--duration-quick:.14s;--duration-standard:.24s;--duration-reveal:.52s;--ease-out:cubic-bezier(.22, 1, .36, 1);--focus-ring-width:.1875rem;--focus-ring-offset:.125rem;--action-hover-translate:-.125rem;--action-active-scale:.98;--action-disabled-opacity:.62;--checkbox-control-size:1rem;--relationship-page-width:28rem;--relationship-entry-width:44rem;--relationship-board-desktop-width:70rem;--relationship-workspace-gap:1.5rem;--relationship-dialog-width:30rem;--relationship-dialog-portrait-width:5.5rem;--relationship-dialog-portrait-height:6.75rem;--relationship-card-hover-scale:1.025;--relationship-card-active-ring-width:2px;--relationship-card-unrelated-opacity:.58;--relationship-card-unrelated-saturation:.55;--relationship-card-unrelated-scale:.985;--relationship-edge-active-width-addition:1.75;--relationship-edge-inactive-opacity:.2;--relationship-label-inactive-opacity:.42;--relationship-edge-motion-active:.55s;--relationship-owner-presence-duration:4.8s;--relationship-edge-width-subtle:1.25;--relationship-edge-width-standard:2.25;--relationship-edge-width-strong:4;--relationship-edge-opacity-subtle:.56;--relationship-edge-opacity-standard:.8;--relationship-edge-opacity-strong:1;--relationship-edge-motion-slow:4.8s;--relationship-edge-motion-standard:2.1s;--relationship-edge-motion-fast:.8s;--relationship-edge-dash-pattern-subtle:5 10;--relationship-edge-dash-pattern-standard:7 7;--relationship-edge-dash-pattern-strong:10 5;--relationship-edge-dash-cycle-subtle:15px;--relationship-edge-dash-cycle-standard:14px;--relationship-edge-dash-cycle-strong:15px;--z-relationship-edges:1;--z-relationship-cards:3;--z-relationship-owner:4;--z-relationship-active-card:6;--z-relationship-labels:7;--touch-target:3rem;--scene-height:86rem;--font-size-caption:.6875rem;--font-size-small:.8125rem;--font-size-body:.9375rem;--font-size-form-control:16px;--font-size-title:1.65rem;--relationship-board-hook-font-size:clamp(2.4rem, 10.5vw, 3rem);--font-size-display:2rem;--line-height-tight:1.2;--line-height-body:1.6}@media (min-width:48rem){:root{--relationship-page-width:44rem}}@media (min-width:64rem){:root{--relationship-page-width:72rem}}@media (prefers-reduced-motion:reduce){:root{--duration-quick:1ms;--duration-standard:1ms;--duration-reveal:1ms}}
*{box-sizing:border-box}html{-moz-text-size-adjust:100%;text-size-adjust:100%;background:var(--color-page);color:var(--color-ink);font-family:var(--font-body)}body{flex-direction:column;min-height:100svh;margin:0;display:flex}body>main{flex:1 0 auto}.site-footer{width:min(100%, var(--relationship-page-width));padding:0 var(--space-3) var(--space-6);color:var(--color-ink-muted);font-size:var(--font-size-caption);justify-content:center;margin:0 auto;display:flex}.site-footer a{min-height:var(--touch-target);align-items:center;gap:var(--space-1);color:inherit;text-underline-offset:.2em;transition:color var(--duration-quick) var(--ease-out), opacity var(--duration-quick) var(--ease-out);font-weight:700;text-decoration:none;display:inline-flex}.site-footer a:hover{color:var(--color-accent-dark);text-decoration:underline}.site-footer a:focus-visible{border-radius:var(--radius-small);outline:var(--focus-ring-width) solid color-mix(in srgb, var(--color-focus) 48%, transparent);outline-offset:var(--focus-ring-offset)}button,input,a{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button:not(:disabled),[role=button]:not([aria-disabled=true]),a[href],.profile-gender-option,.consent-row{cursor:pointer}:where(.brand-mark,.owner-create-button,.profile-gender-option>span,.join-action-row button,.relationship-image-button,.relationship-share-button){transition:color var(--duration-quick) var(--ease-out), background-color var(--duration-quick) var(--ease-out), border-color var(--duration-quick) var(--ease-out), box-shadow var(--duration-quick) var(--ease-out), opacity var(--duration-quick) var(--ease-out), transform var(--duration-quick) var(--ease-out)}:where(.brand-mark,.owner-create-button,.join-action-row button,.relationship-image-button,.relationship-share-button):focus-visible{outline:var(--focus-ring-width) solid color-mix(in srgb, var(--color-focus) 48%, transparent);outline-offset:var(--focus-ring-offset)}:where(.owner-create-button,.join-action-row button,.relationship-image-button,.relationship-share-button):not(:disabled):active{box-shadow:none;transform:scale(var(--action-active-scale))}button:disabled,[role=button][aria-disabled=true]{cursor:not-allowed}h1,h2,p{margin-top:0}[data-tone=affinity]{--relationship-color:var(--color-affinity);--relationship-soft:var(--color-affinity-soft)}[data-tone=stability]{--relationship-color:var(--color-stability);--relationship-soft:var(--color-stability-soft)}[data-tone=energy]{--relationship-color:var(--color-energy);--relationship-soft:var(--color-energy-soft)}[data-tone=healing]{--relationship-color:var(--color-healing);--relationship-soft:var(--color-healing-soft)}[data-tone=support]{--relationship-color:var(--color-support);--relationship-soft:var(--color-support-soft)}[data-tone=mystery]{--relationship-color:var(--color-mystery);--relationship-soft:var(--color-mystery-soft)}[data-tone=mentor]{--relationship-color:var(--color-mentor);--relationship-soft:var(--color-mentor-soft)}.relationship-page{width:min(100%, var(--relationship-page-width));padding:0 var(--space-3) var(--space-8);margin:0 auto}.relationship-load-panel{border:var(--border-strong);border-radius:var(--radius-large);min-height:18rem;padding:var(--space-7) var(--space-5);background:var(--color-panel);box-shadow:var(--shadow-card)}.relationship-load-panel>span{margin-bottom:var(--space-3);color:var(--color-accent-dark);font-family:var(--font-mono);font-size:var(--font-size-caption);font-weight:var(--font-weight-bold);letter-spacing:.08em;display:block}.relationship-load-panel h1{margin-bottom:var(--space-3);font-size:clamp(1.75rem,8vw,2.5rem);line-height:var(--line-height-tight)}.relationship-load-panel p{color:var(--color-ink-muted);line-height:var(--line-height-body);margin-bottom:0}.owner-page{width:min(100%, var(--relationship-entry-width));padding:0 var(--space-3) var(--space-8);margin:0 auto}.owner-site-header{padding-inline:var(--space-1)}.owner-setup-panel,.owner-trust-note{border:var(--border-strong);background:var(--color-panel);box-shadow:var(--shadow-card)}.owner-setup-panel{border-radius:var(--radius-large);padding:var(--space-6) var(--space-5);gap:var(--space-5);background:radial-gradient(circle at 88% 10%, #c6b0ed33, transparent 28%), radial-gradient(circle at 10% 95%, #f1acca29, transparent 32%), var(--color-panel);display:grid;overflow:hidden}.owner-setup-heading>span{color:var(--color-accent-dark);font-family:var(--font-mono);font-size:var(--font-size-caption);letter-spacing:.06em;font-weight:850}.owner-setup-heading h1{margin:var(--space-2) 0;font-family:var(--font-display);font-size:var(--font-size-display);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);letter-spacing:-.045em}.owner-setup-heading>p{max-width:31rem;color:var(--color-ink-muted);font-size:var(--font-size-body);line-height:var(--line-height-body);margin-bottom:0}.owner-setup-fields{gap:var(--space-3);display:grid}.owner-setup-fields label{gap:var(--space-2);font-size:var(--font-size-small);font-weight:850;display:grid}.owner-setup-fields input{width:100%;min-height:var(--touch-target);border:var(--border-thin);border-radius:var(--radius-small);padding:0 var(--space-3);background:var(--color-board);color:var(--color-ink);outline:0}:is(.owner-setup-fields input,.join-fields input){font-size:var(--font-size-form-control)}.owner-consent-row{padding:var(--space-3);border-radius:var(--radius-small);background:var(--color-board-deep)}.owner-create-button{min-height:var(--touch-target);justify-content:center;align-items:center;gap:var(--space-2);border-radius:var(--radius-small);border:1px solid var(--color-accent-dark);background:var(--color-accent);color:var(--color-action-foreground);font-weight:900;display:flex}.owner-create-button:disabled{cursor:progress;opacity:var(--action-disabled-opacity)}.profile-gender-field{gap:var(--space-2);border:0;min-width:0;margin:0;padding:0;display:grid}.profile-gender-field>legend{font-size:var(--font-size-small);padding:0;font-weight:850}.profile-gender-options{gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.profile-gender-option{position:relative}.profile-gender-option>input{cursor:pointer;opacity:0;margin:0;position:absolute;inset:0}.profile-gender-option>span{min-height:var(--touch-target);border:var(--border-thin);border-radius:var(--radius-small);background:var(--color-board);color:var(--color-ink-muted);place-items:center;font-weight:850;display:grid}.profile-gender-option>input:checked+span{border-color:var(--color-accent-dark);background:var(--color-affinity-soft);color:var(--color-accent-dark)}.profile-gender-option>input:focus-visible+span{outline:var(--focus-ring-width) solid color-mix(in srgb, var(--color-focus) 48%, transparent);outline-offset:var(--focus-ring-offset)}.profile-gender-option:active>span{transform:scale(var(--action-active-scale))}.owner-creation-error{margin:var(--space-4) 0 0;border:1px solid var(--color-energy);border-radius:var(--radius-small);padding:var(--space-3);background:var(--color-energy-soft);color:var(--color-energy);font-size:var(--font-size-small);font-weight:750}.owner-trust-note{margin-top:var(--space-4);padding:var(--space-4);align-items:flex-start;gap:var(--space-3);border-radius:var(--radius-medium);color:var(--color-healing);display:flex}.owner-trust-note svg{flex:none}.owner-trust-note strong{font-size:var(--font-size-small)}.owner-trust-note p{margin:var(--space-1) 0 0;color:var(--color-ink-muted);font-size:var(--font-size-caption);line-height:1.5}.join-panel,.cast-update-banner{width:min(100%, var(--relationship-entry-width));margin-inline:auto}.site-header{min-height:3.75rem;color:var(--color-ink-muted);font-size:var(--font-size-caption);justify-content:space-between;align-items:center;display:flex}.site-header>span{align-items:center;gap:var(--space-1);display:inline-flex}.brand-mark{min-width:var(--touch-target);min-height:var(--touch-target);color:var(--color-accent-dark);font-family:var(--font-display);font-size:1.2rem;font-weight:var(--font-weight-bold);letter-spacing:-.075em;line-height:var(--line-height-tight);white-space:nowrap;align-items:center;text-decoration:none;display:inline-flex}.join-panel{margin-bottom:var(--space-4);padding:var(--space-5);gap:var(--space-4);border:var(--border-strong);border-radius:var(--radius-large);background:var(--color-panel);box-shadow:var(--shadow-card);display:grid}.join-panel-heading>span{color:var(--color-accent-dark);font-family:var(--font-mono);font-size:var(--font-size-caption);letter-spacing:.06em;font-weight:850}.join-panel-heading h1{margin:var(--space-2) 0;font-family:var(--font-display);font-size:var(--font-size-display);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);letter-spacing:-.045em}.join-panel-heading p{color:var(--color-ink-muted);font-size:var(--font-size-small);line-height:var(--line-height-body);margin-bottom:0}.join-fields{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}.join-fields label{gap:var(--space-2);font-size:var(--font-size-small);font-weight:800;display:grid}.join-fields input{width:100%;min-width:0;min-height:var(--touch-target);border:var(--border-thin);border-radius:var(--radius-small);padding:0 var(--space-3);background:var(--color-board);color:var(--color-ink);outline:0}:where(.owner-setup-fields input,.join-fields input):focus{border-color:var(--color-accent-dark);border-width:var(--focus-ring-width);background:var(--color-panel);box-shadow:none;outline:none}.consent-row{align-items:center;gap:var(--space-2);color:var(--color-ink-muted);font-size:var(--font-size-caption);grid-template-columns:auto 1fr;line-height:1.5;display:grid}.consent-row input{width:var(--checkbox-control-size);height:var(--checkbox-control-size);accent-color:var(--color-accent);margin:0;display:block}.join-action-row{gap:var(--space-3);display:grid}.join-action-row>span{align-items:center;gap:var(--space-1);color:var(--color-healing);font-size:var(--font-size-caption);font-weight:750;display:inline-flex}.join-action-row button,.relationship-share-button{min-height:var(--touch-target);justify-content:center;align-items:center;gap:var(--space-2);border-radius:var(--radius-small);font-weight:900;display:flex}.join-action-row button{border:1px solid var(--color-accent-dark);background:var(--color-accent);color:var(--color-action-foreground)}.cast-update-banner{margin-bottom:var(--space-4);padding:var(--space-4);align-items:center;gap:var(--space-3);border:1px solid var(--color-support);border-radius:var(--radius-medium);background:var(--color-support-soft);box-shadow:var(--shadow-card);display:flex}.relationship-workspace{align-items:start;gap:var(--relationship-workspace-gap);width:100%;display:grid}.cast-update-banner>span{border-radius:var(--radius-round);background:var(--color-support);width:2.25rem;height:2.25rem;color:var(--color-on-accent);flex:none;place-items:center;display:inline-grid}.cast-update-banner strong{font-size:var(--font-size-body)}.cast-update-banner p{margin:var(--space-1) 0 0;color:var(--color-ink-muted);font-size:var(--font-size-small)}.relationship-error{width:min(100%, var(--relationship-entry-width));margin:0 auto var(--space-4);border:1px solid var(--color-energy);border-radius:var(--radius-small);padding:var(--space-3);background:var(--color-energy-soft);color:var(--color-energy);font-size:var(--font-size-small);font-weight:750}.relationship-board-shell{border:var(--border-strong);border-radius:var(--radius-large);background:var(--color-board);box-shadow:var(--shadow-board);overflow:hidden}.relationship-board-header{padding:var(--space-5);border-bottom:var(--border-thin);background:radial-gradient(circle at 90% 8%, #f1acca26, transparent 30%), radial-gradient(circle at 4% 100%, #c6b0ed1f, transparent 32%), var(--color-panel);display:grid;position:relative}.relationship-board-title-row{align-content:start;gap:var(--space-2);display:grid}.relationship-board-hook{width:fit-content;max-width:100%;color:var(--color-ink);font-family:var(--font-webtoon-accent);font-size:var(--relationship-board-hook-font-size);font-weight:var(--font-weight-regular);letter-spacing:-.035em;word-break:keep-all;white-space:pre-line;margin:0;line-height:.93;position:relative}.relationship-board-hook:after{background:linear-gradient(178deg, transparent 18%, color-mix(in srgb, var(--color-accent) 48%, transparent) 24% 59%, transparent 68%), linear-gradient(182deg, transparent 36%, color-mix(in srgb, var(--color-accent) 25%, transparent) 42% 72%, transparent 80%);clip-path:polygon(0 32%,8% 22%,17% 31%,28% 18%,39% 29%,51% 20%,63% 32%,75% 19%,87% 29%,100% 23%,99% 70%,90% 79%,78% 69%,66% 82%,54% 71%,42% 80%,30% 68%,18% 78%,7% 69%,1% 77%);content:"";filter:saturate(.9);height:.58rem;position:absolute;bottom:-.34rem;left:-.04em;right:-.08em;rotate:-.8deg}.relationship-board-kicker{align-items:center;gap:var(--space-1);color:var(--color-accent-deep);font-family:var(--font-production-label);letter-spacing:.08em;margin:0;font-size:.62rem;font-weight:800;display:flex}.relationship-board-kicker small{color:var(--color-ink-muted);font:inherit;opacity:.64}.relationship-board-lead{max-width:38rem;margin:var(--space-2) 0 0;color:var(--color-ink-muted);font-size:var(--font-size-small);line-height:var(--line-height-body);word-break:keep-all}.relationship-board-stats{margin:var(--space-1) 0 0;color:var(--color-ink-muted);font-size:var(--font-size-small);font-weight:650}.relationship-image-button{width:100%;min-height:var(--touch-target);border:1px solid var(--color-line-strong);border-radius:var(--radius-medium);justify-content:center;align-items:center;gap:var(--space-2);background:var(--color-affinity-soft);color:var(--color-accent-dark);font-size:var(--font-size-small);box-shadow:none;margin:0;font-weight:900;display:inline-flex}.relationship-image-button:disabled{opacity:var(--action-disabled-opacity)}.relationship-board-instruction{margin:var(--space-4) 0 0;align-items:center;gap:var(--space-1);color:var(--color-ink-muted);font-size:var(--font-size-caption);opacity:.78;font-weight:650;display:inline-flex}.relationship-scene{height:var(--relationship-scene-height,var(--scene-height));background:radial-gradient(circle at 20% 15%, #f1b7d233, transparent 22%), radial-gradient(circle at 82% 32%, #c0b0ea2e, transparent 24%), radial-gradient(circle at 50% 77%, #fcd6e557, transparent 31%), linear-gradient(180deg, var(--color-board), var(--color-board-deep) 60%, var(--color-board));position:relative;overflow:hidden}.relationship-scene:before,.relationship-scene:after{z-index:0;content:"";opacity:.55;border:1px solid #e1aec929;width:7rem;height:12rem;position:absolute;rotate:18deg}.relationship-scene:before{top:4rem;left:-3rem}.relationship-scene:after{bottom:8rem;right:-3rem;rotate:-16deg}.relationship-edges{z-index:var(--z-relationship-edges);width:100%;height:100%;position:absolute;inset:0}.relationship-edges>path{--relationship-edge-dash-cycle:var(--relationship-edge-dash-cycle-subtle);--relationship-edge-dash-pattern:var(--relationship-edge-dash-pattern-subtle);--relationship-edge-motion-duration:var(--relationship-edge-motion-slow);--relationship-edge-opacity:var(--relationship-edge-opacity-subtle);--relationship-edge-stroke-width:var(--relationship-edge-width-subtle);animation:relationship-flow var(--relationship-edge-motion-duration) linear infinite;fill:none;stroke:var(--relationship-color);stroke-width:var(--relationship-edge-stroke-width);stroke-dasharray:var(--relationship-edge-dash-pattern);stroke-linecap:round;opacity:var(--relationship-edge-opacity);vector-effect:non-scaling-stroke;transition:filter var(--duration-standard) var(--ease-out), opacity var(--duration-standard) var(--ease-out), stroke-width var(--duration-standard) var(--ease-out)}.relationship-edges>path[data-active=true]{animation-duration:var(--relationship-edge-motion-active);filter:drop-shadow(0 0 .2rem color-mix(in srgb, var(--relationship-color) 48%, transparent));opacity:1;stroke-width:calc(var(--relationship-edge-stroke-width) + var(--relationship-edge-active-width-addition))}.relationship-scene[data-active-person=true] .relationship-edges>path:not([data-active=true]){filter:saturate(.55);opacity:var(--relationship-edge-inactive-opacity)}.relationship-edges>path[data-strength=standard]{--relationship-edge-dash-cycle:var(--relationship-edge-dash-cycle-standard);--relationship-edge-dash-pattern:var(--relationship-edge-dash-pattern-standard);--relationship-edge-motion-duration:var(--relationship-edge-motion-standard);--relationship-edge-opacity:var(--relationship-edge-opacity-standard);--relationship-edge-stroke-width:var(--relationship-edge-width-standard)}.relationship-edges>path[data-strength=strong]{--relationship-edge-dash-cycle:var(--relationship-edge-dash-cycle-strong);--relationship-edge-dash-pattern:var(--relationship-edge-dash-pattern-strong);--relationship-edge-motion-duration:var(--relationship-edge-motion-fast);--relationship-edge-opacity:var(--relationship-edge-opacity-strong);--relationship-edge-stroke-width:var(--relationship-edge-width-strong)}.relationship-edges marker path{fill:var(--relationship-color)}.relationship-edges .is-new-edge{animation:relationship-flow var(--relationship-edge-motion-duration) linear infinite, reveal-relationship-edge var(--duration-reveal) var(--ease-out) both}.edge-annotation{z-index:var(--z-relationship-labels);border:1px solid color-mix(in srgb, var(--relationship-color) 38%, var(--color-panel));border-radius:var(--radius-medium);background:color-mix(in srgb, var(--relationship-soft) 82%, var(--color-panel));color:var(--relationship-color);pointer-events:none;transition:border-color var(--duration-standard) var(--ease-out), box-shadow var(--duration-standard) var(--ease-out), opacity var(--duration-standard) var(--ease-out), transform var(--duration-standard) var(--ease-out);text-align:center;text-wrap:balance;white-space:normal;padding:.2rem .4rem;font-size:.58rem;font-weight:850;line-height:1;position:absolute;transform:translate(-50%);box-shadow:0 .125rem .375rem #5e334f1a}.relationship-scene[data-active-person=true] .edge-annotation:not([data-active=true]){opacity:var(--relationship-label-inactive-opacity);transform:translate(-50%)scale(.96)}.edge-annotation[data-active=true]{border-color:var(--relationship-color);box-shadow:0 .3rem .8rem color-mix(in srgb, var(--relationship-color) 24%, transparent);transform:translate(-50%)translateY(-.125rem)scale(1.04)}.edge-annotation.is-inline{white-space:nowrap}.edge-annotation.is-balanced{max-width:5rem;line-height:1.15}.edge-annotation.is-compact{max-width:3rem;padding:.24rem .28rem;line-height:1.18}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.person-dossier{z-index:var(--z-relationship-cards);text-align:center;transform-origin:top;width:5.45rem;transition:filter var(--duration-standard) var(--ease-out), opacity var(--duration-standard) var(--ease-out), scale var(--duration-standard) var(--ease-out);position:absolute;transform:translate(-50%)}.relationship-scene[data-active-person=true] .person-dossier[data-relationship-focus=unrelated]{filter:saturate(var(--relationship-card-unrelated-saturation));opacity:var(--relationship-card-unrelated-opacity);scale:var(--relationship-card-unrelated-scale)}button.person-dossier{color:inherit;cursor:grab;touch-action:pan-y;transition:filter var(--duration-quick) var(--ease-out), opacity var(--duration-standard) var(--ease-out), scale var(--duration-quick) var(--ease-out);background:0 0;border:0;margin:0;padding:0}button.person-dossier:focus-visible{z-index:var(--z-relationship-active-card);box-shadow:none;outline:none}button.person-dossier[data-dragging=true]{z-index:var(--z-relationship-active-card);cursor:grabbing;scale:var(--relationship-card-hover-scale)}.person-profile-frame{transition:box-shadow var(--duration-quick) var(--ease-out);border-radius:.75rem}.owner-dossier .person-profile-frame{border-radius:1rem}button.person-dossier:is(:focus-visible,[data-dragging=true]) .person-profile-frame{box-shadow:0 0 0 var(--relationship-card-active-ring-width) var(--relationship-color,var(--color-accent))}.person-dossier-lead{width:6.1rem}.person-dossier-mystery{filter:saturate(.65)}.person-index,.subject-tab{z-index:2;background:var(--relationship-color,var(--color-accent));color:var(--color-on-accent);font-family:var(--font-mono);cursor:grab;touch-action:none;border-radius:.25rem .25rem 0 0;padding:.22rem .42rem;font-size:.58rem;font-weight:900;position:absolute;top:-.55rem;left:.35rem;box-shadow:0 .2rem .5rem #54304626}button.person-dossier[data-dragging=true] :is(.person-index,.subject-tab){cursor:grabbing}.portrait-slot{border:1px solid color-mix(in srgb, var(--relationship-color,var(--color-line-strong)) 40%, var(--color-line));background:linear-gradient(135deg, transparent 0 48%, #9d778f0f 48% 50%, transparent 50% 100%), var(--color-panel);width:100%;height:5.5rem;color:var(--color-ink-muted);box-shadow:var(--shadow-card);background-size:1rem 1rem,auto;border-radius:.75rem .75rem 0 0;place-content:center;display:grid;position:relative;overflow:hidden}.portrait-slot:after{border:1px solid color-mix(in srgb, var(--relationship-color,var(--color-line-strong)) 18%, transparent);content:"";pointer-events:none;border-radius:.4rem;position:absolute;inset:.55rem}.portrait-slot[data-filled=true]:after{display:none}.portrait-slot[data-filled=true]{background:var(--color-portrait-background);background-size:auto}.portrait-image{-webkit-touch-callout:none;-webkit-user-drag:none;object-fit:cover;object-position:50% 18%;pointer-events:none;-webkit-user-select:none;user-select:none}.person-dossier-lead .portrait-slot{height:6.65rem}.portrait-slot span{font-size:1.2rem;font-weight:300}.portrait-slot small{margin-top:var(--space-1);font-family:var(--font-mono);letter-spacing:.04em;opacity:.58;font-size:.47rem}.person-relation-footer{border:1px solid color-mix(in srgb, var(--relationship-color,var(--color-line-strong)) 38%, var(--color-line));background:var(--relationship-soft,var(--color-panel));min-height:2rem;color:var(--relationship-color,var(--color-ink-muted));box-shadow:var(--shadow-card);border-top:0;border-radius:0 0 .65rem .65rem;padding:.38rem .25rem;font-size:.58rem;font-weight:850;line-height:1.2;display:block}.person-relation-footer b{font-family:var(--font-mono)}.person-dossier>strong{z-index:1;width:fit-content;max-width:100%;margin-top:var(--space-2);border:var(--border-thin);border-radius:var(--radius-round);padding:var(--space-1) var(--space-2);background:color-mix(in srgb, var(--color-panel) 94%, transparent);color:var(--color-ink);font-family:var(--font-display);font-size:.77rem;font-weight:var(--font-weight-bold);letter-spacing:-.045em;line-height:var(--line-height-tight);justify-content:center;align-items:center;margin-inline:auto;display:flex;position:relative;box-shadow:0 .2rem .55rem #502f4529}.person-dossier[data-new=true]{animation:reveal-person var(--duration-reveal) var(--ease-out) both}.person-dossier[data-new=true] .portrait-slot,.person-dossier[data-new=true] .person-relation-footer{box-shadow:0 0 0 2px var(--relationship-color), var(--shadow-card)}.owner-dossier{z-index:var(--z-relationship-owner);width:7.75rem;top:24.25rem;left:50%}.owner-dossier .subject-tab{background:var(--color-accent);left:.45rem}.owner-dossier .portrait-slot{border:2px solid var(--color-accent);background:linear-gradient(135deg, transparent 0 48%, #e955880d 48% 50%, transparent 50% 100%), linear-gradient(145deg, var(--color-panel), var(--color-affinity-soft));background-size:1.25rem 1.25rem,auto;border-radius:1rem;height:9.25rem}.owner-dossier .portrait-slot[data-filled=true]{background:var(--color-portrait-background);background-size:auto}.owner-dossier:not([data-dragging=true]) .portrait-slot{animation:protagonist-presence var(--relationship-owner-presence-duration) ease-in-out infinite}.owner-dossier>strong{margin-top:var(--space-3);font-family:var(--font-display);font-size:1.05rem;font-weight:var(--font-weight-bold)}.person-detail-dialog{width:min(calc(100% - var(--space-6)), var(--relationship-dialog-width));max-height:calc(100dvh - var(--space-6));border:var(--border-strong);border-radius:var(--radius-large);background:var(--color-panel);color:var(--color-ink);box-shadow:var(--shadow-board);padding:0;overflow:auto}.person-detail-dialog::backdrop{-webkit-backdrop-filter:blur(.15rem);backdrop-filter:blur(.15rem);background:#2e1d2a7a}.person-detail-sheet{padding:var(--space-5);gap:var(--space-4);background:radial-gradient(circle at 92% 5%, var(--relationship-soft) 0, transparent 34%), var(--color-panel);display:grid}.person-detail-sheet>header{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.person-detail-sheet>header>span{color:var(--relationship-color);font-family:var(--font-mono);font-size:var(--font-size-caption);letter-spacing:.06em;font-weight:900}.person-detail-sheet>header>button{width:var(--touch-target);height:var(--touch-target);border:var(--border-thin);border-radius:var(--radius-round);background:var(--color-panel);color:var(--color-ink-muted);transition:background-color var(--duration-quick) var(--ease-out), color var(--duration-quick) var(--ease-out), transform var(--duration-quick) var(--ease-out);flex:none;place-items:center;display:grid}.person-detail-sheet>header>button:focus-visible{border-color:var(--relationship-color);border-width:var(--focus-ring-width);box-shadow:none;outline:none}.person-detail-hero{grid-template-columns:var(--relationship-dialog-portrait-width) minmax(0, 1fr);align-items:center;gap:var(--space-4);display:grid}.person-detail-portrait{width:var(--relationship-dialog-portrait-width);height:var(--relationship-dialog-portrait-height);border:var(--border-thin);border-color:color-mix(in srgb, var(--relationship-color) 52%, var(--color-line));border-radius:var(--radius-medium);background:var(--color-portrait-background);box-shadow:var(--shadow-card);position:relative;overflow:hidden}.person-detail-portrait[data-empty=true]{box-shadow:none}.person-detail-portrait>img{object-fit:cover;object-position:center top;-webkit-user-select:none;user-select:none}.person-detail-heading{justify-content:space-between;align-items:center;gap:var(--space-4);min-width:0;display:flex}.person-detail-heading>div{min-width:0}.person-detail-heading p{margin-bottom:var(--space-1);color:var(--relationship-color);font-size:var(--font-size-small);font-weight:850}.person-detail-heading h2{font-family:var(--font-display);font-size:var(--font-size-display);font-weight:var(--font-weight-bold);margin-bottom:0}.person-detail-heading>strong{color:var(--relationship-color);font-family:var(--font-mono);font-size:var(--font-size-display);flex:none}.person-detail-heading>strong>small{margin-left:var(--space-1);font-size:var(--font-size-caption)}.person-detail-sheet>section,.person-detail-sheet dl>div{border:var(--border-thin);border-radius:var(--radius-medium);padding:var(--space-4);background:color-mix(in srgb, var(--relationship-soft) 52%, var(--color-panel))}.person-detail-sheet h3,.person-detail-sheet dt{margin:0 0 var(--space-2);color:var(--relationship-color);font-size:var(--font-size-small);font-weight:900}.person-detail-sheet section>p,.person-detail-sheet dd{color:var(--color-ink-muted);font-size:var(--font-size-small);line-height:var(--line-height-body);margin:0}.person-detail-sheet dl{gap:var(--space-2);margin:0;display:grid}.person-detail-disclaimer{color:var(--color-ink-muted);font-size:var(--font-size-caption);line-height:var(--line-height-body);margin-bottom:0}.owner-role-label{width:fit-content;max-width:100%;margin-top:var(--space-1);border:var(--border-thin);border-radius:var(--radius-round);padding:var(--space-1) var(--space-2);background:var(--color-panel);color:var(--color-ink);font-size:var(--font-size-caption);font-weight:750;line-height:var(--line-height-tight);box-shadow:var(--shadow-card);white-space:nowrap;margin-inline:auto;display:block}.relationship-board-actions{gap:var(--space-2);padding:var(--space-4) var(--space-5) var(--space-5);border-top:var(--border-thin);background:var(--color-panel);display:grid}.relationship-board-actions>button{width:100%}.relationship-share-button{border:1px solid var(--color-accent-dark);background:var(--color-accent);color:var(--color-action-foreground)}@media (hover:hover) and (pointer:fine){button.person-dossier:hover{z-index:var(--z-relationship-active-card);filter:saturate(1.05);scale:var(--relationship-card-hover-scale)}button.person-dossier:hover .person-profile-frame{box-shadow:0 0 0 var(--relationship-card-active-ring-width) var(--relationship-color,var(--color-accent))}.person-detail-sheet>header>button:hover{background:var(--relationship-soft);color:var(--relationship-color);transform:translateY(var(--action-hover-translate))}:where(.owner-create-button,.join-action-row button,.relationship-image-button,.relationship-share-button):not(:disabled):hover{border-color:var(--color-accent-dark);background:color-mix(in srgb, var(--color-accent) 84%, var(--color-accent-dark));color:var(--color-action-foreground);box-shadow:var(--shadow-action-hover);transform:translateY(var(--action-hover-translate))}.relationship-image-button:not(:disabled):hover{border-color:var(--color-accent);background:color-mix(in srgb, var(--color-affinity-soft) 82%, var(--color-accent));color:var(--color-accent-dark);box-shadow:var(--shadow-card)}.brand-mark:hover{color:var(--color-accent)}:where(.owner-setup-fields input,.join-fields input):not(:focus-visible):hover{border-color:var(--color-line-strong);background:var(--color-panel)}.profile-gender-option:hover>span{border-color:var(--color-accent);background:var(--color-affinity-soft);color:var(--color-accent-dark);transform:translateY(var(--action-hover-translate))}.consent-row:hover{color:var(--color-ink)}}@keyframes relationship-flow{to{stroke-dashoffset:calc(-1 * var(--relationship-edge-dash-cycle))}}@keyframes reveal-relationship-edge{0%{opacity:0}to{opacity:var(--relationship-edge-opacity)}}@keyframes reveal-person{0%{opacity:0;translate:0 .8rem;scale:.92}to{opacity:1;translate:0;scale:1}}@keyframes protagonist-presence{0%,to{box-shadow:var(--shadow-card)}50%{box-shadow:0 .7rem 1.75rem #e955883d}}@media (max-width:23rem){.relationship-page{padding-inline:var(--space-2)}.join-fields{grid-template-columns:1fr}.person-dossier-lead{width:5.65rem}}@media (min-width:48rem){.owner-page{padding-inline:var(--space-4)}.owner-setup-panel{padding:var(--space-7)}.owner-setup-fields{grid-template-columns:1fr 1fr}.relationship-page{padding-inline:var(--space-4)}.relationship-board-header{padding-inline:var(--space-6)}.relationship-board-actions{padding-inline:var(--space-6);grid-template-columns:repeat(2,minmax(13rem,18rem));justify-content:center}}@media (min-width:64rem){.relationship-page{padding-inline:var(--space-3)}.relationship-workspace{grid-template-columns:minmax(0, var(--relationship-board-desktop-width));justify-content:center}.relationship-board-shell{border-radius:var(--radius-large)}.relationship-board-header{display:block}.relationship-board-instruction{margin-top:var(--space-4)}}@media (prefers-reduced-motion:reduce){.relationship-edges>path,.person-dossier[data-new=true],.owner-dossier .portrait-slot{animation:none}.relationship-edges>path,.edge-annotation,:where(.brand-mark,.site-footer a,.owner-create-button,.profile-gender-option>span,.join-action-row button,.relationship-image-button,.relationship-share-button){transition:none}:where(.owner-create-button,.join-action-row button,.relationship-image-button,.relationship-share-button):is(:hover,:active),.profile-gender-option:is(:hover,:active)>span{transform:none}button.person-dossier,.person-profile-frame,.person-detail-sheet>header>button{transition:none}button.person-dossier:is(:hover,[data-dragging=true]){scale:1}}@media (hover:none) and (pointer:coarse){.owner-dossier:not([data-dragging=true]) .portrait-slot{animation:none}}
