@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-Dg_dQHbK.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #ffffff;--surface: #ffffff;--surface-2: #f5f5f7;--surface-3: #ececf0;--text: #1d1d1f;--text-2: #57575c;--text-3: #86868b;--hairline: rgba(0, 0, 0, .08);--hairline-strong: rgba(0, 0, 0, .14);--accent: #0071e3;--accent-hover: #0077ed;--accent-press: #006edb;--accent-soft: #eaf3fd;--accent-ink: #ffffff;--danger: #d70015;--danger-soft: #fdecee;--success: #1c8a4a;--success-soft: #e9f6ee;--warning: #b25000;--scrim: rgba(255, 255, 255, .72);--scrim-dark: rgba(0, 0, 0, .18);--focus: rgba(0, 113, 227, .35);--pastel-1: #fbeef0;--pastel-1-ink: #b0707a;--pastel-2: #edf2fb;--pastel-2-ink: #6a83ad;--pastel-3: #edf6f0;--pastel-3-ink: #6a957a;--pastel-4: #fbf4e8;--pastel-4-ink: #ad8a52;--pastel-5: #f2eefa;--pastel-5-ink: #8a76b8;--pastel-6: #ebf5f6;--pastel-6-ink: #5f979c;--pastel-7: #faeff5;--pastel-7-ink: #ad7096;--pastel-8: #f2f3f5;--pastel-8-ink: #7d838b;--tone-rose: linear-gradient(135deg, #fde2e4 0%, #fbcfe0 100%);--tone-sun: linear-gradient(135deg, #fff1d6 0%, #ffd9a8 100%);--tone-sea: linear-gradient(135deg, #dcecff 0%, #b9dafc 100%);--tone-pine: linear-gradient(135deg, #def3e6 0%, #b8e3c8 100%);--tone-lilac: linear-gradient(135deg, #ece6fb 0%, #d5c9f6 100%);--tone-sand: linear-gradient(135deg, #f6efe4 0%, #e9dcc5 100%);--tone-sunrise: linear-gradient(135deg, #ffe4d6 0%, #fbc7c0 100%);--font: "Geist Variable", "Geist", "SF Pro Text", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--fs-xs: 12px;--fs-sm: 13px;--fs-md: 15px;--fs-lg: 17px;--fs-xl: 22px;--fs-2xl: 28px;--fs-3xl: 40px;--fs-display: 56px;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-8: 32px;--s-10: 40px;--s-12: 48px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 22px;--r-full: 999px;--shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 1px rgba(0, 0, 0, .03);--shadow-2: 0 4px 16px rgba(0, 0, 0, .06), 0 1px 3px rgba(0, 0, 0, .05);--shadow-3: 0 12px 40px rgba(0, 0, 0, .1), 0 2px 8px rgba(0, 0, 0, .05);--shadow-photo: none;--ease-out: cubic-bezier(.23, 1, .32, 1);--ease-in-out: cubic-bezier(.77, 0, .175, 1);--ease-drawer: cubic-bezier(.32, .72, 0, 1);--t-press: .14s;--t-fast: .18s;--t-med: .26s;--t-slow: .42s;--topbar-h: 64px;--tabbar-h: 64px}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--fs-md);line-height:1.45;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"ss01","cv11"}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:none;border:0;padding:0}a{color:var(--accent);text-decoration:none}img{display:block}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:8px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}h1,h2,h3,h4{margin:0;letter-spacing:-.02em;font-weight:600}p{margin:0}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.tnum{font-variant-numeric:tabular-nums}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:36px;padding:0 16px;border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:550;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:transform var(--t-press) var(--ease-out),background-color var(--t-fast) ease,box-shadow var(--t-fast) ease,color var(--t-fast) ease,opacity var(--t-fast) ease}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-secondary{background:var(--surface-2);color:var(--text)}.btn-outline{background:var(--surface);color:var(--text);box-shadow:inset 0 0 0 1px var(--hairline-strong)}.btn-ghost{color:var(--text-2)}.btn-danger{background:var(--danger-soft);color:var(--danger)}.btn-link{color:var(--accent);padding:0;height:auto}.btn-lg{height:46px;padding:0 22px;font-size:var(--fs-md)}.btn-block{width:100%}@media (hover: hover) and (pointer: fine){.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary:hover:not(:disabled){background:var(--surface-3)}.btn-outline:hover:not(:disabled){box-shadow:inset 0 0 0 1px var(--text-3)}.btn-ghost:hover:not(:disabled){color:var(--text);background:var(--surface-2)}.btn-danger:hover:not(:disabled){background:#fbdde1}.btn-link:hover{text-decoration:underline}}.icon-btn{position:relative;display:inline-grid;place-items:center;width:36px;height:36px;border-radius:var(--r-full);color:var(--text-2);transition:transform var(--t-press) var(--ease-out),background-color var(--t-fast) ease,color var(--t-fast) ease}.icon-btn:active{transform:scale(.94)}.icon-btn[aria-expanded=true]{background:var(--surface-2);color:var(--text)}@media (hover: hover) and (pointer: fine){.icon-btn:hover{background:var(--surface-2);color:var(--text)}}.badge{position:absolute;top:3px;right:2px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--danger);color:#fff;font-size:10px;font-weight:650;display:grid;place-items:center;box-shadow:0 0 0 2px var(--bg);animation:pop .36s var(--ease-out)}@keyframes pop{0%{transform:scale(.6);opacity:0}}.field{display:grid;gap:6px}.field>span{font-size:var(--fs-xs);font-weight:550;color:var(--text-2);letter-spacing:.01em}.input{width:100%;height:44px;padding:0 14px;border-radius:var(--r-md);border:1px solid var(--hairline-strong);background:var(--surface);outline:none;transition:border-color var(--t-fast) ease,box-shadow var(--t-fast) ease}.input::placeholder{color:var(--text-3)}.input:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--focus)}textarea.input{height:auto;min-height:88px;padding:12px 14px;resize:vertical}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2386868b' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:36px}.row{display:flex;gap:var(--s-3);align-items:center}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3)}.error-text{color:var(--danger);font-size:var(--fs-sm)}.segmented{display:inline-flex;padding:3px;background:var(--surface-2);border-radius:var(--r-full);position:relative}.segmented button{position:relative;z-index:1;height:30px;padding:0 14px;border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:520;color:var(--text-2);transition:color var(--t-fast) ease}.segmented button[aria-pressed=true]{color:var(--text)}.segmented .thumb{position:absolute;top:3px;bottom:3px;border-radius:var(--r-full);background:var(--surface);box-shadow:var(--shadow-1),0 0 0 .5px var(--hairline);transition:transform var(--t-med) var(--ease-out),width var(--t-med) var(--ease-out)}.chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:var(--r-full);background:var(--surface-2);font-size:var(--fs-sm);color:var(--text-2);font-weight:500;transition:transform var(--t-press) var(--ease-out),background-color var(--t-fast) ease,color var(--t-fast) ease}.chip:active{transform:scale(.96)}.chip[aria-pressed=true]{background:var(--text);color:var(--bg)}@media (hover: hover) and (pointer: fine){.chip:hover:not([aria-pressed=true]){background:var(--surface-3);color:var(--text)}}.tag{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:var(--r-full);font-size:11px;font-weight:600;letter-spacing:.01em;background:var(--surface-2);color:var(--text-2)}.tag-blue{background:var(--accent-soft);color:var(--accent)}.tag-green{background:var(--success-soft);color:var(--success)}.topbar{position:fixed;inset:0 0 auto 0;z-index:40;height:var(--topbar-h);display:flex;align-items:center;gap:var(--s-4);padding:0 var(--s-5);background:#ffffffd1;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid transparent;transition:border-color var(--t-med) ease}.topbar.scrolled,.topbar.solid{border-bottom-color:var(--hairline)}.topbar .spacer{flex:1}.logo{display:inline-flex;align-items:center;gap:8px;color:var(--text);font-weight:650;font-size:19px;letter-spacing:-.03em}.logo svg{display:block}.nav-tabs{display:flex;align-items:center;gap:2px;position:relative;margin-left:var(--s-4)}.nav-tabs a,.nav-tabs>button{position:relative;z-index:1;height:34px;padding:0 14px;display:inline-flex;align-items:center;gap:6px;border-radius:var(--r-full);color:var(--text-2);font-size:var(--fs-sm);font-weight:520;transition:color var(--t-fast) ease}.nav-tabs a.active,.nav-tabs a:hover,.nav-tabs>button:hover,.nav-tabs>button[aria-expanded=true]{color:var(--text)}.nav-pill{position:absolute;top:0;height:34px;border-radius:var(--r-full);background:var(--surface-2);transition:transform var(--t-med) var(--ease-out),width var(--t-med) var(--ease-out),opacity var(--t-fast) ease}.top-actions{display:flex;align-items:center;gap:4px}.family-switch{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 10px 0 6px;border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:550;transition:background-color var(--t-fast) ease,transform var(--t-press) var(--ease-out)}.family-switch:active{transform:scale(.97)}.family-switch[aria-expanded=true]{background:var(--surface-2)}@media (hover: hover) and (pointer: fine){.family-switch:hover{background:var(--surface-2)}}.family-dot{width:24px;height:24px;border-radius:8px;display:grid;place-items:center;font-size:11px;font-weight:700}.menu{position:absolute;z-index:60;min-width:240px;padding:6px;border-radius:var(--r-lg);background:#fffffffb;backdrop-filter:blur(30px) saturate(180%);-webkit-backdrop-filter:blur(30px) saturate(180%);box-shadow:var(--shadow-3),0 0 0 .5px var(--hairline-strong);transform-origin:var(--origin, top right);animation:menu-in var(--t-fast) var(--ease-out)}.menu.closing{animation:menu-out .12s ease forwards}@keyframes menu-in{0%{opacity:0;transform:scale(.96) translateY(-4px)}}@keyframes menu-out{to{opacity:0;transform:scale(.98)}}.menu-label{padding:8px 10px 4px;font-size:11px;font-weight:600;color:var(--text-3);letter-spacing:.04em;text-transform:uppercase}.menu-item{width:100%;display:flex;align-items:center;gap:10px;min-height:36px;padding:6px 10px;border-radius:10px;text-align:left;font-size:var(--fs-sm);color:var(--text);transition:background-color 80ms ease}.menu-item .sub{display:block;font-size:var(--fs-xs);color:var(--text-3)}.menu-item svg{color:var(--text-2);flex:none}.menu-item:hover,.menu-item:focus-visible{background:var(--surface-2);outline:none}.menu-item.danger,.menu-item.danger svg{color:var(--danger)}.menu-item[aria-checked=true]{background:var(--accent-soft)}.menu-sep{height:1px;background:var(--hairline);margin:6px 4px}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:var(--scrim-dark);animation:fade-in var(--t-med) ease}.scrim.closing{animation:fade-out .2s ease forwards}@keyframes fade-in{0%{opacity:0}}@keyframes fade-out{to{opacity:0}}.sheet{position:fixed;z-index:71;top:0;right:0;bottom:0;width:min(440px,100vw);background:var(--surface);box-shadow:-1px 0 0 var(--hairline),var(--shadow-3);display:flex;flex-direction:column;transform:translate(0);animation:sheet-in .42s var(--ease-drawer)}.sheet.wide{width:min(720px,100vw)}.sheet.closing{animation:sheet-out .24s var(--ease-out) forwards}@keyframes sheet-in{0%{transform:translate(100%)}}@keyframes sheet-out{to{transform:translate(100%)}}.sheet-head{display:flex;align-items:center;gap:var(--s-2);height:60px;padding:0 var(--s-3) 0 var(--s-6);flex:none;border-bottom:1px solid transparent;transition:border-color .2s ease}.sheet-head.scrolled{border-bottom-color:var(--hairline)}.sheet-head h2{font-size:var(--fs-lg);flex:1}.sheet-body{flex:1;overflow-y:auto;padding:0 var(--s-6) var(--s-8);overscroll-behavior:contain}.sheet-foot{flex:none;padding:var(--s-4) var(--s-6);border-top:1px solid var(--hairline);display:flex;gap:var(--s-2)}.modal-wrap{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:grid;place-items:center;padding:var(--s-4)}.modal{position:relative;width:min(420px,100%);max-height:calc(100vh - 32px);overflow:auto;background:var(--surface);border-radius:var(--r-xl);padding:var(--s-8);box-shadow:var(--shadow-3),0 0 0 .5px var(--hairline);animation:modal-in .32s var(--ease-out)}.modal.closing{animation:modal-out .16s ease forwards}@keyframes modal-in{0%{opacity:0;transform:scale(.96) translateY(8px)}}@keyframes modal-out{to{opacity:0;transform:scale(.98)}}.toasts{position:fixed;z-index:100;left:50%;bottom:24px;transform:translate(-50%);display:grid;gap:8px;justify-items:center;pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:10px;padding:10px 14px 10px 12px;border-radius:var(--r-full);background:var(--text);color:var(--bg);font-size:var(--fs-sm);font-weight:500;box-shadow:var(--shadow-3);transition:opacity .3s ease,transform .4s var(--ease-out)}@starting-style{.toast{opacity:0;transform:translateY(16px) scale(.98)}}.toast.leaving{opacity:0;transform:translateY(8px) scale(.98);transition-duration:.2s}.toast .ic{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#ffffff29}.toast button{color:#7ab8ff;font-weight:600;margin-left:4px}.avatar{position:relative;flex:none;border-radius:50%;overflow:hidden;background:var(--surface-2);display:grid;place-items:center;font-weight:600;letter-spacing:-.01em;-webkit-user-select:none;user-select:none}.avatar img{width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .4s ease}.avatar img.loaded{opacity:1}.avatar-stack{display:flex}.avatar-stack>*{box-shadow:0 0 0 2px var(--bg);margin-left:-8px}.avatar-stack>*:first-child{margin-left:0}.app{min-height:100%}.page{padding:calc(var(--topbar-h) + var(--s-8)) var(--s-6) var(--s-12);max-width:1120px;margin:0 auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s-4);margin-bottom:var(--s-8);flex-wrap:wrap}.page-head h1{font-size:var(--fs-3xl);line-height:1.05;letter-spacing:-.035em}.page-head p{margin-top:6px;color:var(--text-2);font-size:var(--fs-lg)}.card{background:var(--surface);border-radius:var(--r-xl);box-shadow:0 0 0 1px var(--hairline)}.card-hover{transition:transform var(--t-med) var(--ease-out),box-shadow var(--t-med) ease}@media (hover: hover) and (pointer: fine){.card-hover:hover{transform:translateY(-2px);box-shadow:0 0 0 1px var(--hairline),var(--shadow-2)}}.empty{text-align:center;padding:var(--s-12) var(--s-6);color:var(--text-2)}.empty h3{color:var(--text);font-size:var(--fs-xl);margin-bottom:6px}.stagger>*{animation:rise .42s var(--ease-out) both}.stagger>*:nth-child(2){animation-delay:40ms}.stagger>*:nth-child(3){animation-delay:80ms}.stagger>*:nth-child(4){animation-delay:.12s}.stagger>*:nth-child(5){animation-delay:.16s}.stagger>*:nth-child(6){animation-delay:.2s}.stagger>*:nth-child(n+7){animation-delay:.24s}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}.wall{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;touch-action:none;cursor:grab;background:var(--bg);user-select:none;-webkit-user-select:none}.wall.dragging{cursor:grabbing}.wall-world{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;transition:opacity .36s ease,filter .36s ease}.wall.focused .wall-world{opacity:0;filter:blur(6px);pointer-events:none}.tile{position:absolute;border-radius:50%;padding:0}.tile .tile-in{width:100%;height:100%;border-radius:50%;overflow:hidden;box-shadow:var(--shadow-photo);transition:transform .26s var(--ease-out),box-shadow .26s ease,opacity .3s ease}.tile.hidden-for-focus .tile-in{opacity:0}.wall.entering .tile .tile-in{animation:tile-in .7s var(--ease-out) both;animation-delay:var(--d, 0ms)}@keyframes tile-in{0%{opacity:0;transform:scale(.85)}}.tile-label{position:absolute;left:50%;top:calc(100% + 6px);transform:translate(-50%,-4px);white-space:nowrap;pointer-events:none;font-size:12px;font-weight:550;padding:4px 9px;border-radius:var(--r-full);background:var(--text);color:var(--bg);opacity:0;transition:opacity .14s ease,transform .2s var(--ease-out);z-index:2}.tile-label small{color:#fff9;font-weight:450;margin-left:4px}@media (hover: hover) and (pointer: fine){.wall:not(.dragging) .tile:hover{z-index:3}.wall:not(.dragging) .tile:hover .tile-in{transform:scale(1.08)}.wall:not(.dragging) .tile:hover .tile-label{opacity:1;transform:translate(-50%)}}.tile:active .tile-in{transform:scale(.97)}.tile.match .tile-in{box-shadow:0 0 0 3px var(--bg),0 0 0 5px var(--accent)}.initials{width:100%;height:100%;display:grid;place-items:center;font-weight:600;letter-spacing:-.02em}.wall-search{position:fixed;z-index:30;top:calc(var(--topbar-h) + 8px);left:50%;transform:translate(-50%);width:min(680px,calc(100vw - 32px));display:flex;gap:8px}.searchbox{position:relative;flex:1;display:flex;align-items:center;gap:10px;height:48px;padding:0 8px 0 16px;border-radius:var(--r-full);background:#ffffffeb;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 0 0 1px var(--hairline),var(--shadow-2);transition:box-shadow var(--t-fast) ease}.searchbox:focus-within{box-shadow:0 0 0 1px var(--accent),0 0 0 5px var(--focus),var(--shadow-2)}.searchbox input{flex:1;min-width:0;border:0;outline:none;background:transparent;height:100%;font-size:var(--fs-md)}.searchbox input::placeholder{color:var(--text-3)}.searchbox>svg{color:var(--text-3);flex:none}.float-btn{flex:none;height:48px;padding:0 16px;display:inline-flex;align-items:center;gap:8px;border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:550;background:#ffffffeb;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 0 0 1px var(--hairline),var(--shadow-2);transition:transform var(--t-press) var(--ease-out),box-shadow var(--t-fast) ease}.float-btn:active{transform:scale(.97)}.float-btn .count{min-width:18px;height:18px;border-radius:9px;background:var(--accent);color:#fff;font-size:11px;display:grid;place-items:center;padding:0 5px}.results{position:absolute;left:0;right:0;top:calc(100% + 8px);padding:8px;border-radius:var(--r-xl);max-height:min(60vh,520px);overflow:auto;background:#fffffffa;box-shadow:var(--shadow-3),0 0 0 .5px var(--hairline-strong);animation:menu-in var(--t-fast) var(--ease-out);transform-origin:top center}.result-row{display:flex;align-items:center;gap:12px;width:100%;padding:8px 10px;border-radius:12px;text-align:left}.result-row:hover,.result-row[aria-selected=true]{background:var(--surface-2)}.result-row .meta{font-size:var(--fs-xs);color:var(--text-3)}.result-row mark{background:none;color:var(--accent);font-weight:600}.wall-hud{position:fixed;z-index:30;left:20px;bottom:20px;display:flex;gap:8px;align-items:center;font-size:var(--fs-xs);color:var(--text-2)}.hud-pill{height:32px;padding:0 12px;display:inline-flex;align-items:center;gap:6px;border-radius:var(--r-full);background:#ffffffe6;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 0 0 1px var(--hairline),var(--shadow-1)}.zoom-ctrl{position:fixed;z-index:30;right:20px;bottom:20px;display:grid;border-radius:var(--r-lg);overflow:hidden;background:#ffffffeb;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 0 0 1px var(--hairline),var(--shadow-2)}.zoom-ctrl button{width:40px;height:40px;display:grid;place-items:center;color:var(--text-2);transition:background-color 80ms ease,color 80ms ease}.zoom-ctrl button:hover{background:var(--surface-2);color:var(--text)}.zoom-ctrl button+button{border-top:1px solid var(--hairline)}.hint{animation:rise .5s var(--ease-out) 1.2s both}.focus-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;pointer-events:none}.focus-layer>*{pointer-events:auto}.focus-stage{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.ring{position:absolute;left:50%;top:50%;width:0;height:0;pointer-events:none}.ring.spin{animation:spin var(--dur, 120s) linear infinite;animation-direction:var(--dir, normal)}.ring.spin .counter{animation:spin var(--dur, 120s) linear infinite;animation-direction:var(--cdir, reverse)}@keyframes spin{to{transform:rotate(360deg)}}.ring.paused,.ring.paused .counter{animation-play-state:paused}.slot{position:absolute;left:0;top:0}.member{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;border-radius:50%}.member .photo{border-radius:50%;overflow:hidden;box-shadow:var(--shadow-photo);transition:transform .24s var(--ease-out),box-shadow .24s ease}.member .name{position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%);white-space:nowrap;font-size:12px;font-weight:550;color:var(--text);text-align:center;line-height:1.2;opacity:0;transition:opacity .2s ease;pointer-events:none}.member .name small{display:block;color:var(--text-3);font-weight:450;font-size:11px}.focus-layer.settled .member.inner .name{opacity:1}@media (hover: hover) and (pointer: fine){.member:hover{z-index:5}.member:hover .photo{transform:scale(1.1)}.member:hover .name{opacity:1}}.member:active .photo{transform:scale(.96)}.center-person{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:6;text-align:center}.center-person .photo{border-radius:50%;overflow:hidden;box-shadow:0 0 0 6px var(--bg);cursor:pointer;transition:transform .24s var(--ease-out)}.center-person .photo:active{transform:scale(.97)}.center-caption{position:absolute;top:calc(100% + 14px);left:50%;transform:translate(-50%);white-space:nowrap}.center-caption b{display:block;font-size:var(--fs-lg);font-weight:600;letter-spacing:-.02em}.center-caption span{font-size:var(--fs-sm);color:var(--text-2)}.fade-up{animation:rise .5s var(--ease-out) both}.focus-title{position:absolute;top:calc(var(--topbar-h) + 22px);left:0;right:0;text-align:center;pointer-events:none}.focus-title .eyebrow{font-size:var(--fs-sm);color:var(--text-3);font-weight:500;letter-spacing:.02em}.focus-title h1{font-size:clamp(40px,6vw,76px);letter-spacing:-.045em;line-height:1;margin-top:4px}.focus-sub{margin-top:8px;font-size:var(--fs-md);color:var(--text-2);animation:rise .42s var(--ease-out) both}.focus-sub b{color:var(--text);font-weight:600}.focus-close{position:absolute;top:calc(var(--topbar-h) + 18px);right:24px;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);color:var(--text);transition:transform var(--t-press) var(--ease-out),background-color var(--t-fast) ease}.focus-close:hover{background:var(--surface-3)}.focus-close:active{transform:scale(.94)}.focus-bar{position:absolute;bottom:28px;left:50%;transform:translate(-50%);display:flex;gap:8px;flex-wrap:wrap;justify-content:center;width:max-content;max-width:calc(100vw - 32px)}.ring-guide{position:absolute;left:50%;top:50%;border-radius:50%;border:1px solid rgba(0,0,0,.055);transform:translate(-50%,-50%);pointer-events:none;animation:fade-in .8s ease .3s both}.profile-hero{display:grid;justify-items:center;text-align:center;padding:var(--s-2) 0 var(--s-6);gap:4px}.profile-hero .eyebrow{font-size:var(--fs-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-top:var(--s-4)}.profile-hero h3{font-size:var(--fs-2xl);letter-spacing:-.03em}.facts{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--hairline);border-radius:var(--r-lg);overflow:hidden;box-shadow:0 0 0 1px var(--hairline)}.facts>div{background:var(--surface);padding:12px 14px}.facts dt{font-size:var(--fs-xs);color:var(--text-3)}.facts dd{margin:2px 0 0;font-weight:520;font-size:var(--fs-sm)}.section{margin-top:var(--s-6)}.section-title{font-size:var(--fs-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);margin-bottom:var(--s-3);display:flex;align-items:center;justify-content:space-between}.contact-card{border-radius:var(--r-lg);background:var(--surface-2);padding:4px}.contact-line{display:flex;align-items:center;gap:12px;padding:10px 12px;font-size:var(--fs-sm)}.contact-line svg{color:var(--text-3)}.contact-line .val{font-variant-numeric:tabular-nums;letter-spacing:.02em}.contact-line .val.masked{color:var(--text-2)}.reveal{animation:reveal .5s var(--ease-out)}@keyframes reveal{0%{filter:blur(6px);opacity:.3}}.path{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.path .step{display:inline-flex;align-items:center;gap:6px;padding:3px 10px 3px 3px;border-radius:var(--r-full);background:var(--surface-2);font-size:var(--fs-sm)}.path .arrow{color:var(--text-3);font-size:var(--fs-xs)}.rel-list{display:grid;gap:2px}.rel-row{display:flex;align-items:center;gap:12px;padding:8px;margin:0 -8px;border-radius:12px;text-align:left;width:calc(100% + 16px);transition:background-color 80ms ease}.rel-row:hover{background:var(--surface-2)}.rel-row .r{margin-left:auto;font-size:var(--fs-xs);color:var(--text-3)}.tree{display:grid;gap:var(--s-8);justify-items:center;padding:var(--s-4) 0}.gen{display:flex;flex-wrap:wrap;gap:var(--s-5);justify-content:center;position:relative}.gen-label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);text-align:center;margin-bottom:-16px}.couple{display:flex;align-items:flex-start;gap:4px;padding:10px;border-radius:var(--r-lg);background:var(--surface);box-shadow:0 0 0 1px var(--hairline);position:relative}.couple .joint{align-self:center;width:14px;height:1px;background:var(--hairline-strong);margin-top:-18px}.tnode{width:92px;display:grid;justify-items:center;gap:6px;text-align:center;padding:4px;border-radius:12px;transition:background-color 80ms ease,transform var(--t-press) var(--ease-out)}.tnode:hover{background:var(--surface-2)}.tnode:active{transform:scale(.97)}.tnode b{font-size:12px;font-weight:600;line-height:1.2}.tnode span{font-size:11px;color:var(--text-3);line-height:1.2}.tnode.me .avatar{box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--accent)}.tnode.inlaw b:after{content:" •";color:var(--accent)}.tree-svg{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:visible}.tabbar,.fab-anchor{display:none}.tab-more{position:relative;display:block}@media (max-width: 760px){:root{--topbar-h: 56px}.topbar{padding:0 var(--s-4);gap:var(--s-2)}.nav-tabs,.hide-mobile{display:none!important}.tabbar{position:fixed;z-index:40;left:0;right:0;bottom:0;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);display:grid;grid-template-columns:repeat(5,1fr);background:#ffffffe6;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-top:1px solid var(--hairline)}.tabbar>a,.tabbar>.tab-more>button{display:grid;justify-items:center;align-content:center;gap:3px;font-size:10.5px;font-weight:550;color:var(--text-3);transition:color var(--t-fast) ease,transform var(--t-press) var(--ease-out)}.tabbar>a:active,.tabbar>.tab-more>button:active{transform:scale(.94)}.tabbar a.active{color:var(--accent)}.fab-anchor{display:block;position:fixed;z-index:41;right:18px;bottom:calc(var(--tabbar-h) + 18px + env(safe-area-inset-bottom))}.fab{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:var(--accent);color:#fff;box-shadow:0 8px 24px #0071e359,0 2px 6px #0000001f;transition:transform .2s var(--ease-out)}.fab:active{transform:scale(.92)}.fab[aria-expanded=true] svg{transform:rotate(45deg)}.fab svg{transition:transform .26s var(--ease-out)}.wall-search{top:calc(var(--topbar-h) + 6px);width:calc(100vw - 24px)}.wall-search .float-btn .lbl{display:none}.wall-hud{bottom:calc(var(--tabbar-h) + 16px);left:12px}.zoom-ctrl{display:none}.page{padding:calc(var(--topbar-h) + var(--s-6)) var(--s-4) calc(var(--tabbar-h) + var(--s-12))}.page-head h1{font-size:var(--fs-2xl)}.sheet{width:100vw}.focus-title h1{font-size:40px}.focus-bar{bottom:calc(var(--tabbar-h) + 12px);flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;width:calc(100vw - 24px);padding:6px 4px;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 90%,transparent)}.focus-bar::-webkit-scrollbar{display:none}.focus-bar .float-btn{height:40px;padding:0 14px}.focus-close{right:12px}.grid-2{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}.ring.spin,.ring.spin .counter{animation:none!important}.btn,.icon-btn,.chip,.tile .tile-in,.member .photo{transition-property:background-color,color,opacity,box-shadow!important}.sheet,.scrim,.menu,.modal{animation:fade-in .15s ease!important}}.spinner{width:18px;height:18px;border-radius:50%;border:2px solid var(--surface-3);border-top-color:var(--accent);animation:spin .6s linear infinite}.focus-layer:has(.member:hover) .ring.spin,.focus-layer:has(.member:hover) .ring.spin .counter{animation-play-state:paused}.pulse-ring{width:76px;height:76px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:#fff;position:relative;animation:modal-in .5s var(--ease-out)}.pulse-ring:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;box-shadow:0 0 #0071e359;animation:pulse 2s ease-out infinite .6s}@keyframes pulse{to{box-shadow:0 0 0 26px #0071e300}}.bubble-in{animation:bubble .32s var(--ease-out) both;transform-origin:bottom center}@keyframes bubble{0%{opacity:0;transform:translateY(6px) scale(.97)}}.typing{display:inline-flex;gap:4px}.typing i{width:6px;height:6px;border-radius:50%;background:var(--text-3);animation:dot 1.1s ease-in-out infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}@keyframes dot{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-4px);opacity:1}}.choice:active{transform:scale(.985)}.photo-pick:active{transform:scale(.97)}.map-cluster,.map-person{position:absolute;transform:translate(-50%,-50%);border-radius:50%;transition:transform .2s var(--ease-out);animation:fade-in .3s ease}.map-cluster:hover{transform:translate(-50%,-50%) scale(1.06)}.map-cluster:active{transform:translate(-50%,-50%) scale(.96)}.map-face{display:block;border-radius:50%;box-shadow:0 0 0 3px var(--bg)}.map-count{position:absolute;right:-6px;bottom:-4px;min-width:24px;height:22px;padding:0 7px;border-radius:11px;background:var(--bg);color:var(--text);font-size:11.5px;font-weight:650;display:grid;place-items:center;box-shadow:var(--shadow-2),0 0 0 .5px var(--hairline-strong)}.map-person .avatar{box-shadow:0 0 0 2px var(--bg)}@media (hover: hover) and (pointer: fine){.map-person:hover{z-index:3}.map-person:hover .tile-label{opacity:1;transform:translate(-50%)}}.avatar.is-initials{font-weight:500;letter-spacing:.01em;box-shadow:inset 0 0 0 1px #0000000a}.wall-fade{position:fixed;left:0;right:0;z-index:2;pointer-events:none}.wall-fade.top{top:0;height:calc(var(--topbar-h) + 72px);background:linear-gradient(#fff,#fff 42%,#ffffffd9 62%,#fff0)}.wall-fade.bottom{bottom:0;height:90px;background:linear-gradient(#fff0,#ffffffe6)}.wall.focused~.wall-fade{opacity:0}.topbar{background:#ffffffb8}.masonry{columns:3 260px;column-gap:20px}.masonry>*{break-inside:avoid;margin-bottom:20px;display:block}.collage{position:relative}.collage .c{position:absolute;border-radius:50%;box-shadow:0 0 0 3px #ffffffbf;transform:translate(-50%,-50%);transition:transform .26s var(--ease-out)}@media (hover: hover) and (pointer: fine){.card-hover:hover .collage .c{transform:translate(-50%,-50%) scale(1.04)}}.msg-time{align-self:center;font-size:11px;font-weight:550;color:var(--text-3);margin:10px 0 4px}.focus-open .fab-anchor{display:none!important}.map-group{position:absolute;z-index:400;width:280px;max-height:320px;overflow:auto;transform:translate(-50%);padding:6px;border-radius:var(--r-lg);background:#fffffffb;box-shadow:var(--shadow-3),0 0 0 .5px var(--hairline-strong);animation:menu-in var(--t-fast) var(--ease-out);transform-origin:top center;cursor:default}.map-person{padding:0}.map-person:active .avatar{transform:scale(.95)}.map-person .avatar{transition:transform .14s var(--ease-out)}@media (hover: hover) and (pointer: fine){.map-person:hover .avatar{transform:scale(1.08)}}.near-chip{background:#ffffffeb;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 0 0 1px var(--hairline),var(--shadow-1);color:var(--text)}.near-chip.on svg:first-child{color:var(--accent)}.range{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:22px;background:transparent;cursor:pointer}.range:disabled{opacity:.4;cursor:default}.range::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:var(--surface-3)}.range::-moz-range-track{height:4px;border-radius:2px;background:var(--surface-3)}.range::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;margin-top:-9px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #0003,0 0 0 .5px #00000014;transition:transform .14s var(--ease-out)}.range::-moz-range-thumb{width:22px;height:22px;border:0;border-radius:50%;background:#fff;box-shadow:0 1px 4px #0003}.range:active::-webkit-slider-thumb{transform:scale(1.12)}.logo-link{border-radius:10px;transition:transform var(--t-press) var(--ease-out),opacity var(--t-fast) ease}.logo-link:active{transform:scale(.96)}@media (hover: hover) and (pointer: fine){.logo-link:hover{opacity:.75}}.map-count-pill{position:absolute;z-index:450;top:calc(var(--topbar-h) + 16px);left:50%;transform:translate(-50%);height:36px;padding:0 16px;display:inline-flex;align-items:center;gap:5px;border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:500;white-space:nowrap;pointer-events:none;background:#ffffffeb;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 0 0 1px var(--hairline),var(--shadow-2)}.map-count-pill .tnum{font-weight:650;display:inline-block;animation:count-tick .26s var(--ease-out)}@keyframes count-tick{0%{transform:translateY(3px);opacity:.4}}.star-wrap{position:relative;display:inline-block;flex:none}.star-badge{position:absolute;right:0;bottom:0;transform:translate(8%,8%);z-index:2;border-radius:50%;background:#fff;color:#f2a900;display:grid;place-items:center;box-shadow:0 0 0 1px #00000014;pointer-events:none}.tile .star-badge,.member .star-badge,.center-person .star-badge{transform:translate(0);right:4%;bottom:4%}.tile:hover .star-badge{transform:scale(1.08);transition:transform .26s var(--ease-out)}.story-ring{position:absolute;z-index:0;border-radius:50%;pointer-events:none;background:linear-gradient(45deg,#feda75,#fa7e1e,#d62976,#962fbf,#4f5bd5);-webkit-mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);transition:transform .26s var(--ease-out)}.has-story>.avatar,.tile.has-story .tile-in,.has-story .photo{position:relative;z-index:1}@media (hover: hover) and (pointer: fine){.wall:not(.dragging) .tile.has-story:hover .story-ring{transform:scale(1.08)}}.member:hover .has-story-ring .story-ring{transform:scale(1.1)}.search-divider{width:1px;height:22px;background:var(--hairline-strong);flex:none;margin:0 2px}.near-inline{flex:none;display:inline-flex;align-items:center;gap:6px;height:34px;max-width:220px;padding:0 10px;border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:520;color:var(--text-2);transition:background-color var(--t-fast) ease,color var(--t-fast) ease,transform var(--t-press) var(--ease-out)}.near-inline .near-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.near-inline svg{flex:none}.near-inline.on,.near-inline[aria-expanded=true]{color:var(--text)}.near-inline.on svg:first-child{color:var(--accent)}.near-inline[aria-expanded=true]{background:var(--surface-2)}.near-inline:active{transform:scale(.97)}@media (hover: hover) and (pointer: fine){.near-inline:hover{background:var(--surface-2);color:var(--text)}}@media (max-width: 760px){.near-inline{max-width:112px;padding:0 8px}.near-inline svg:last-child{display:none}}.wall-search .searchbox{min-width:0}@media (max-width: 760px){.wall-search .searchbox{padding-left:12px;gap:6px}.near-inline{max-width:104px}}@media (max-width: 760px){.near-inline .near-label{display:none}.near-inline{width:36px;padding:0;justify-content:center}}
