:root{--ink-900: #081813;--ink-800: #0f2a21;--ink-700: #17402f;--moss: #2f6b52;--moss-soft: #4c8b6d;--sage: #9dbfa8;--brass: #d8a441;--brass-deep: #a9761f;--paper: #f3f6ef;--paper-2: #e7eee1;--surface: #ffffff;--line: rgba(11, 31, 25, .12);--line-strong: rgba(11, 31, 25, .22);--text: #16241e;--muted: #5b6f65;--danger: #a33b2c;--font-display: "Fraunces", "Iowan Old Style", Georgia, serif;--font-body: "Karla", "Avenir Next", "Segoe UI", sans-serif;--r-sm: 8px;--r-md: 14px;--r-lg: 24px;--shadow-soft: 0 18px 40px -28px rgba(8, 24, 19, .55);--ease: cubic-bezier(.22, .61, .36, 1)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-body);color:var(--text);background:var(--paper);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{font-family:var(--font-display);font-weight:700;line-height:1.08;margin:0;letter-spacing:-.015em}p{margin:0;line-height:1.6}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit;color:inherit}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border:1px solid transparent;border-radius:var(--r-sm);padding:.7rem 1.15rem;font-weight:600;font-size:.95rem;cursor:pointer;transition:transform .18s var(--ease),background-color .18s var(--ease),border-color .18s var(--ease),color .18s var(--ease);background:transparent}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--ink-800);color:var(--paper)}.btn-primary:hover:not(:disabled){background:var(--ink-700)}.btn-brass{background:var(--brass);color:var(--ink-900)}.btn-brass:hover:not(:disabled){background:#e3b558}.btn-ghost{border-color:var(--line-strong);color:var(--text)}.btn-ghost:hover:not(:disabled){border-color:var(--ink-700);background:#0f2a210d}.btn-quiet{color:var(--muted);padding:.4rem .6rem}.btn-quiet:hover:not(:disabled){color:var(--text)}.btn-danger{color:var(--danger);border-color:#a33b2c59}.btn-danger:hover:not(:disabled){background:#a33b2c14}.btn-sm{padding:.42rem .75rem;font-size:.85rem}.field{display:flex;flex-direction:column;gap:.35rem}.field>span{font-size:.78rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}.field input,.field textarea,.field select{border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:.62rem .75rem;background:var(--surface);transition:border-color .18s var(--ease),box-shadow .18s var(--ease);width:100%}.field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--moss);box-shadow:0 0 0 3px #2f6b5229}.field textarea{resize:vertical;min-height:96px}.field-hint{font-size:.8rem;color:var(--muted);line-height:1.35}.field-error{font-size:.8rem;color:#9b2c2c;line-height:1.35}.partial-date-row{display:grid;grid-template-columns:5.2rem minmax(0,1.4fr) 3.6rem;gap:.45rem;align-items:center}@media (max-width: 640px){.field-row{grid-template-columns:1fr}}.partial-date-year,.partial-date-day{font-variant-numeric:tabular-nums}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:.85rem}.address-fields{display:flex;flex-direction:column;gap:.75rem}.checkbox{display:flex;align-items:center;gap:.55rem;font-size:.92rem}.checkbox input{width:18px;height:18px;accent-color:var(--moss)}.visibility-toggle{display:inline-flex;align-items:center;gap:.45rem;margin-top:.2rem;font-size:.82rem;font-weight:500;letter-spacing:0;text-transform:none;color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none}.visibility-toggle input{width:15px;height:15px;margin:0;accent-color:var(--moss);flex-shrink:0}.notice{border-radius:var(--r-sm);padding:.7rem .9rem;font-size:.9rem;line-height:1.45}.notice-error{background:#a33b2c1a;color:var(--danger)}.notice-info{background:#2f6b521a;color:var(--ink-700)}.avatar{display:grid;place-items:center;border-radius:50%;overflow:hidden;background:linear-gradient(150deg,var(--moss),var(--ink-800));color:var(--paper);font-family:var(--font-body);font-weight:700;letter-spacing:.02em;flex:none}.avatar img{width:100%;height:100%;object-fit:cover;display:block}.eyebrow{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;font-weight:700;color:var(--muted)}.muted{color:var(--muted)}.spinner{width:22px;height:22px;border-radius:50%;border:2px solid rgba(47,107,82,.25);border-top-color:var(--moss);animation:spin .7s linear infinite}.page-loading{height:100%;display:grid;place-items:center}@keyframes spin{to{transform:rotate(360deg)}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes drift{0%{transform:translate3d(-2%,-1%,0) scale(1.05)}50%{transform:translate3d(3%,2%,0) scale(1.12)}to{transform:translate3d(-2%,-1%,0) scale(1.05)}}.rise{animation:rise .6s var(--ease) both}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.landing{position:relative;min-height:100dvh;display:flex;flex-direction:column;color:#f0f5ec;background-color:#081813;background-image:radial-gradient(120% 90% at 12% 8%,rgba(47,107,82,.5) 0%,transparent 55%),radial-gradient(90% 80% at 88% 20%,rgba(216,164,65,.26) 0%,transparent 60%),linear-gradient(168deg,#0f2a21eb,#081813e6 62%,#0a1f19f2),url(/hero.jpg);background-size:cover;background-position:center;overflow:hidden}.landing:before{content:"";position:absolute;top:-25%;right:-25%;bottom:-25%;left:-25%;background-image:radial-gradient(circle at 30% 40%,rgba(157,191,168,.16) 0%,transparent 45%),radial-gradient(circle at 72% 66%,rgba(216,164,65,.14) 0%,transparent 42%);animation:drift 26s ease-in-out infinite;pointer-events:none}.landing:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:repeating-radial-gradient(circle at 78% 78%,rgba(240,245,236,.05) 0px,rgba(240,245,236,.05) 1px,transparent 1px,transparent 46px);opacity:.75;pointer-events:none}.landing-inner{position:relative;z-index:1;flex:1;display:flex;flex-direction:column;width:min(1180px,100%);margin:0 auto;padding:1.6rem clamp(1.25rem,5vw,3.5rem) clamp(2.5rem,7vh,5rem)}.landing-nav{display:flex;align-items:center;justify-content:space-between;gap:1rem}.landing-mark{display:flex;align-items:center;gap:.6rem;font-family:var(--font-display);font-weight:700;letter-spacing:.02em;opacity:.9}.landing-mark img{width:36px;height:36px;border-radius:50%}.landing-nav a{font-weight:600;font-size:.95rem;opacity:.85;transition:opacity .2s var(--ease)}.landing-nav a:hover{opacity:1}.landing-hero{flex:1;display:flex;flex-direction:column;justify-content:center;gap:1.4rem;max-width:44rem;padding:clamp(3rem,12vh,7rem) 0 0}.landing-logo{width:min(280px,62vw);height:auto;display:block;filter:drop-shadow(0 18px 40px rgba(0,0,0,.35));animation:rise .75s var(--ease) both}.landing-tagline{margin:0;font-family:var(--font-sans);font-size:.82rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--brass);animation:rise .75s var(--ease) .05s both}.landing-headline{font-family:var(--font-display);font-size:clamp(1.3rem,2.6vw,1.85rem);font-weight:600;line-height:1.28;max-width:30ch;animation:rise .75s var(--ease) .08s both}.landing-support{font-size:1.02rem;line-height:1.65;max-width:46ch;color:#f0f5ecc7;animation:rise .75s var(--ease) .16s both}.landing-cta{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.6rem;animation:rise .75s var(--ease) .24s both}.landing-cta .btn-ghost{border-color:#f0f5ec61;color:#f0f5ec}.landing-cta .btn-ghost:hover{background:#f0f5ec1a;border-color:#f0f5ecb3}.landing-foot{position:relative;z-index:1;padding:1.2rem clamp(1.25rem,5vw,3.5rem);font-size:.85rem;color:#f0f5ec8c;text-align:center}.auth-shell{min-height:100dvh;display:grid;place-items:center;padding:clamp(1.5rem,5vw,3rem);background:radial-gradient(90% 70% at 20% 0%,rgba(47,107,82,.16) 0%,transparent 60%),radial-gradient(80% 60% at 90% 10%,rgba(216,164,65,.14) 0%,transparent 55%),linear-gradient(180deg,var(--paper) 0%,var(--paper-2) 100%)}.auth-card{width:min(430px,100%);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(1.6rem,4vw,2.4rem);box-shadow:var(--shadow-soft);display:flex;flex-direction:column;gap:1.05rem;animation:rise .5s var(--ease) both}.auth-card h1{font-size:1.9rem}.auth-card form{display:flex;flex-direction:column;gap:.9rem}.auth-join-actions{display:flex;flex-direction:column;gap:.75rem}.auth-alt{font-size:.92rem;color:var(--muted);text-align:center}.auth-alt a{color:var(--ink-700);font-weight:600;border-bottom:1px solid rgba(23,64,47,.3)}.auth-brand{display:flex;align-items:center;justify-content:center;gap:.6rem;font-family:var(--font-display);font-weight:700;color:var(--ink-800)}.auth-brand img{width:min(168px,52vw);height:auto;display:block}.invite-summary{border-radius:var(--r-md);background:linear-gradient(140deg,#2f6b521f,#d8a4411f);padding:.9rem 1rem;font-size:.95rem;line-height:1.5}.invite-summary strong{font-family:var(--font-display);font-size:1.15rem;display:block}@media (max-width: 640px){.landing-hero{padding-top:clamp(2rem,8vh,4rem)}.landing-cta .btn{flex:1 1 100%}}.shell{display:grid;grid-template-columns:264px 1fr;grid-template-rows:1fr;grid-template-areas:"sidebar workspace";height:100dvh;background:radial-gradient(80% 60% at 85% 0%,rgba(216,164,65,.1) 0%,transparent 55%),linear-gradient(180deg,var(--paper) 0%,var(--paper-2) 100%)}.sidebar{grid-area:sidebar;display:flex;flex-direction:column;gap:1.1rem;padding:1.4rem 1.1rem;background:linear-gradient(180deg,var(--ink-800) 0%,var(--ink-900) 100%);color:#f0f5eceb;overflow-y:auto;min-height:0}.sidebar-brand{display:flex;align-items:center;gap:.65rem;padding:0 .35rem}.sidebar-brand img{width:40px;height:40px;border-radius:50%;flex-shrink:0;object-fit:cover;display:block;background:#f0f5ec14}.sidebar-brand span{font-family:var(--font-display);font-weight:700;font-size:1.05rem;line-height:1.15}.family-switcher{position:relative}.family-switcher-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.7rem .8rem;border-radius:var(--r-md);border:1px solid rgba(240,245,236,.16);background:#f0f5ec0f;color:inherit;cursor:pointer;text-align:left;transition:border-color .18s var(--ease),background .18s var(--ease)}.family-switcher-trigger-main{display:flex;align-items:center;gap:.65rem;min-width:0}.family-switcher-trigger-main .avatar{flex-shrink:0}.family-switcher-trigger:hover{border-color:#d8a44199;background:#f0f5ec1a}.family-switcher-trigger strong{display:block;font-family:var(--font-display);font-size:1rem}.family-switcher-trigger small{color:#f0f5ec99;font-size:.74rem;letter-spacing:.12em;text-transform:uppercase}.family-switcher-menu{position:absolute;z-index:20;top:calc(100% + .4rem);left:0;right:0;background:var(--surface);color:var(--text);border-radius:var(--r-md);border:1px solid var(--line);box-shadow:0 24px 48px -24px #08181399;padding:.35rem;display:flex;flex-direction:column;gap:.15rem;animation:rise .2s var(--ease) both}.family-switcher-menu button{border:none;background:transparent;text-align:left;padding:.55rem .65rem;border-radius:var(--r-sm);cursor:pointer;font-size:.94rem}.family-switcher-item{display:flex;align-items:center;gap:.55rem}.family-switcher-item .avatar{flex-shrink:0}.family-switcher-menu button:hover{background:var(--paper-2)}.family-switcher-menu button.is-active{color:var(--ink-700);font-weight:700}.family-switcher-menu .menu-divider{height:1px;background:var(--line);margin:.25rem 0}.sidebar-nav{display:flex;flex-direction:column;gap:.15rem;flex:1}.sidebar-nav a{display:flex;align-items:center;gap:.7rem;padding:.62rem .8rem;border-radius:var(--r-sm);font-weight:600;font-size:.95rem;color:#f0f5ecb8;transition:background .18s var(--ease),color .18s var(--ease)}.sidebar-nav a:hover{background:#f0f5ec14;color:#f0f5ec}.sidebar-nav a.active{background:#d8a44129;color:#f7e7c4}.sidebar-nav .nav-icon{width:20px;display:grid;place-items:center;opacity:.9}.sidebar-user{display:flex;align-items:center;gap:.7rem;padding:.6rem;border-radius:var(--r-md);background:#f0f5ec0f}.sidebar-user .avatar{width:38px;height:38px;font-size:.85rem;flex:none}.sidebar-user>div:not(.avatar){min-width:0;flex:1}.sidebar-user strong{display:block;font-size:.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user small{display:block;color:#f0f5ec8c;font-size:.78rem;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.sidebar-user button{border:none;background:transparent;color:#f0f5ec99;cursor:pointer;padding:.3rem;border-radius:var(--r-sm)}.sidebar-user button:hover{color:#f0f5ec;background:#f0f5ec1a}.workspace{grid-area:workspace;overflow:hidden;display:flex;flex-direction:column;min-width:0;min-height:0}.page{flex:1;overflow-y:auto;padding:clamp(1.25rem,3vw,2.4rem);display:flex;flex-direction:column;gap:1.4rem;min-height:0}.page-flush{padding:0;overflow:hidden;min-height:0}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap}.page-header h1{font-size:clamp(1.7rem,3vw,2.3rem)}.page-header p{color:var(--muted);margin-top:.35rem;max-width:52ch}.page-actions{display:flex;gap:.6rem;flex-wrap:wrap}.mobile-bar{display:none}.empty-state{border:1px dashed var(--line-strong);border-radius:var(--r-lg);padding:clamp(1.6rem,4vw,2.6rem);text-align:center;display:flex;flex-direction:column;align-items:center;gap:.7rem;background:#fff9}.empty-state h3{font-size:1.3rem}.empty-state p{color:var(--muted);max-width:44ch}.start-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.2rem}.start-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:1.5rem;display:flex;flex-direction:column;gap:.9rem;box-shadow:var(--shadow-soft)}.start-panel h2{font-size:1.35rem}.start-panel p{color:var(--muted);font-size:.95rem}@media (max-width: 900px){.shell{grid-template-columns:1fr;grid-template-rows:1fr;grid-template-areas:"workspace"}.sidebar{display:none}.sidebar.is-open{display:flex;position:fixed;top:0;right:22%;bottom:0;left:0;z-index:40;box-shadow:0 0 0 100vmax #08181373}.mobile-bar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.7rem 1rem;background:var(--ink-800);color:#f0f5ec}.mobile-bar button{border:1px solid rgba(240,245,236,.24);background:transparent;color:inherit;border-radius:var(--r-sm);padding:.4rem .6rem;cursor:pointer}.mobile-bar strong{font-family:var(--font-display)}.mobile-bar-crest{width:34px;height:34px;border-radius:50%;object-fit:cover;flex-shrink:0;display:block;background:#f0f5ec14}}.tree-stage{position:relative;flex:1;min-height:0;overflow:hidden;background:radial-gradient(70% 60% at 20% 10%,rgba(47,107,82,.1) 0%,transparent 60%),linear-gradient(180deg,#f5f8f1,#e7eee1);touch-action:none;cursor:grab}.tree-stage.is-panning{cursor:grabbing}.tree-stage:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(circle,rgba(23,64,47,.13) 1px,transparent 1px);background-size:28px 28px;opacity:.5;pointer-events:none}.tree-canvas{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform}.tree-edges{position:absolute;top:0;left:0;z-index:1;overflow:visible;pointer-events:none}.tree-edge{fill:none;stroke:#17402f59;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter}.tree-edge.partner{stroke:var(--brass-deep);stroke-width:3;stroke-linecap:round}.tree-edge.dimmed{stroke-dasharray:6 6;opacity:.55}.tree-edge.truncated-fade{stroke-width:2.5;stroke-linecap:round}.tree-edge.truncated-fade.is-up{stroke:url(#tree-fade-up)}.tree-edge.truncated-fade.is-down{stroke:url(#tree-fade-down)}.tree-edge.truncated-up{stroke:#17402f73;stroke-width:2;stroke-linecap:round}.tree-edge.truncated-up-arrow{fill:none;stroke:#17402f73;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.tree-collapse-tip{position:absolute;z-index:3;width:28px;height:44px;padding:0;border:0;background:transparent;cursor:pointer;pointer-events:auto}.tree-collapse-tip.is-up,.tree-collapse-tip.is-down{transform:translate(-50%)}.tree-collapse-tip:hover{background:linear-gradient(180deg,transparent 0%,rgba(47,107,82,.08) 40%,transparent 100%)}.tree-load-more-tip{position:absolute;z-index:3;transform:translate(-50%,calc(-100% - 4px));border:1px solid var(--line);border-radius:999px;background:#fffffff5;color:var(--ink-700);font-size:.68rem;font-weight:650;letter-spacing:.01em;padding:.22rem .55rem;cursor:pointer;box-shadow:0 8px 18px -14px #081813b3;white-space:nowrap;pointer-events:auto}.tree-load-more-tip:hover{border-color:var(--moss-soft);background:#fff}.tree-node{position:absolute;z-index:2;display:flex;gap:.7rem;align-items:center;padding:.7rem 1.9rem .7rem .8rem;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);box-shadow:0 12px 26px -20px #081813a6;text-align:left;cursor:pointer;transition:transform .2s var(--ease),box-shadow .2s var(--ease),border-color .2s var(--ease)}.tree-node:hover{transform:translateY(-3px);border-color:var(--moss-soft);box-shadow:0 20px 34px -22px #081813bf}.tree-node.is-me{border-color:var(--brass);box-shadow:0 0 0 3px #d8a44138,0 16px 30px -22px #081813b3}.tree-node.is-selected{border-color:var(--ink-700);box-shadow:0 0 0 3px #17402f2e,0 18px 32px -22px #081813b3}.tree-node.is-deceased{background:linear-gradient(180deg,#fff,#f0f3ec)}.tree-node .avatar{width:46px;height:46px;aspect-ratio:1;flex:none;flex-shrink:0;font-size:1rem}.tree-node-body{min-width:0;display:flex;flex-direction:column;gap:.12rem}.tree-node-name{font-family:var(--font-display);font-weight:700;font-size:1rem;line-height:1.15;white-space:nowrap}.tree-node-meta{font-size:.78rem;color:var(--muted);white-space:nowrap}.tree-node-tag{font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--brass-deep)}.tree-node-menu{position:absolute;top:.28rem;right:.28rem;z-index:4}.tree-node-menu-trigger{width:1.55rem;height:1.55rem;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:var(--r-sm);background:transparent;color:var(--muted);font-size:1.05rem;line-height:1;letter-spacing:.04em;cursor:pointer;opacity:.55;transition:opacity .15s var(--ease),background .15s var(--ease),color .15s var(--ease)}.tree-node:hover .tree-node-menu-trigger,.tree-node.is-selected .tree-node-menu-trigger,.tree-node-menu-trigger.is-open,.tree-node-menu-trigger.is-active{opacity:1}.tree-node-menu-trigger:hover,.tree-node-menu-trigger.is-open{background:var(--paper-2);color:var(--ink-700)}.tree-node-menu-trigger.is-active{color:var(--brass-deep)}.tree-node-menu-panel{position:absolute;z-index:6;top:calc(100% + .2rem);right:0;min-width:11.5rem;background:var(--surface);color:var(--text);border-radius:var(--r-md);border:1px solid var(--line);box-shadow:0 24px 48px -24px #08181399;padding:.3rem;display:flex;flex-direction:column;gap:.1rem;animation:rise .2s var(--ease) both}.tree-node-menu-panel button{border:none;background:transparent;text-align:left;padding:.5rem .65rem;border-radius:var(--r-sm);cursor:pointer;font-size:.88rem;font-weight:600;color:var(--text);white-space:nowrap}.tree-node-menu-panel button:hover{background:var(--paper-2);color:var(--ink-700)}.tree-controls{position:absolute;right:clamp(.8rem,2vw,1.4rem);bottom:clamp(.8rem,2vw,1.4rem);display:flex;flex-direction:column;gap:.4rem;z-index:5}.tree-controls button{width:40px;height:40px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--line-strong);background:#ffffffeb;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);cursor:pointer;font-size:1rem;transition:transform .16s var(--ease),border-color .16s var(--ease)}.tree-controls button:hover{transform:translateY(-2px);border-color:var(--moss)}.tree-toolbar{position:absolute;top:clamp(.8rem,2vw,1.2rem);left:clamp(.8rem,2vw,1.2rem);right:clamp(.8rem,2vw,1.2rem);display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;z-index:5}.tree-search{position:relative;flex:1 1 260px;max-width:340px}.tree-search input{width:100%;border-radius:999px;border:1px solid var(--line-strong);padding:.6rem 1rem;background:#fffffff0;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.tree-search input:focus{outline:none;border-color:var(--moss);box-shadow:0 0 0 3px #2f6b5226}.tree-search-results{position:absolute;top:calc(100% + .35rem);left:0;right:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:0 22px 44px -26px #08181399;overflow:hidden;max-height:300px;overflow-y:auto}.tree-search-results button{display:block;width:100%;text-align:left;border:none;background:transparent;padding:.55rem .85rem;cursor:pointer;font-size:.92rem}.tree-search-results button:hover{background:var(--paper-2)}.tree-legend{margin-left:auto;display:flex;gap:.9rem;align-items:center;padding:.45rem .85rem;border-radius:999px;background:#ffffffdb;border:1px solid var(--line);font-size:.78rem;color:var(--muted);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.tree-legend span{display:inline-flex;align-items:center;gap:.35rem}.tree-legend i{width:16px;height:3px;border-radius:2px;display:inline-block}.tree-legend i.parent{background:#17402f80}.tree-legend i.partner{background:var(--brass-deep)}.tree-legend i.step{background:#17402f59;background-image:repeating-linear-gradient(90deg,rgba(23,64,47,.55) 0 4px,transparent 4px 8px)}.tree-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:1.5rem}@media (max-width: 720px){.tree-legend{display:none}}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#08181366;z-index:50;animation:fade .2s var(--ease) both}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes slide-in{0%{transform:translate(28px);opacity:0}to{transform:none;opacity:1}}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(50vw,100%);min-width:380px;background:var(--surface);z-index:51;display:flex;flex-direction:column;box-shadow:-20px 0 60px -35px #081813cc;animation:slide-in .28s var(--ease) both}.drawer-over-tree{width:min(420px,100%);min-width:320px;pointer-events:auto}.drawer-head{padding:1.2rem 1.3rem 1rem;border-bottom:1px solid var(--line);display:flex;gap:.9rem;align-items:center}.drawer-head .avatar{width:62px;height:62px;font-size:1.3rem}.drawer-head h2{font-size:1.4rem}.drawer-head p{color:var(--muted);font-size:.88rem;margin-top:.15rem}.drawer-close{margin-left:auto;align-self:flex-start;border:none;background:transparent;font-size:1.35rem;line-height:1;cursor:pointer;color:var(--muted);padding:.2rem .35rem;border-radius:var(--r-sm)}.drawer-close:hover{color:var(--text);background:var(--paper-2)}.drawer-tabs{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line);background:#ffffff59}.drawer-tab{border:none;background:transparent;padding:.72rem .8rem;font:inherit;font-size:.92rem;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.drawer-tab:hover{color:var(--ink)}.drawer-tab.is-active{color:var(--ink);border-bottom-color:var(--moss)}.drawer-body{flex:1;overflow-y:auto;padding:1.1rem 1.3rem 1.6rem;display:flex;flex-direction:column;gap:1.1rem}.drawer-foot{border-top:1px solid var(--line);padding:.9rem 1.3rem;display:flex;gap:.6rem;flex-wrap:wrap}.stories-panel{display:flex;flex-direction:column;gap:1rem}.stories-toolbar{display:flex;align-items:center;gap:.75rem}.story-compose{display:flex;flex-direction:column;gap:.75rem;padding:.85rem;border:1px solid var(--line);border-radius:var(--r-md);background:#ffffff8c}.story-compose h4{margin:0;font-size:.95rem}.story-list{display:flex;flex-direction:column;gap:.85rem}.story-card{padding:.85rem .9rem;border-top:1px solid var(--line)}.story-card:first-child{border-top:none;padding-top:0}.story-card h4{margin:0 0 .35rem;font-size:1.02rem}.story-body{margin:0;white-space:pre-wrap;line-height:1.5}.story-meta{margin-top:.65rem;display:flex;flex-wrap:wrap;gap:.45rem .85rem;align-items:center;justify-content:space-between;color:var(--muted);font-size:.82rem}.story-actions{display:flex;gap:.75rem}.detail-list{display:flex;flex-direction:column;gap:.55rem}.detail-row{display:grid;grid-template-columns:108px 1fr;gap:.7rem;font-size:.93rem;align-items:baseline}.detail-row dt{color:var(--muted);font-size:.76rem;letter-spacing:.09em;text-transform:uppercase;font-weight:700}.detail-row dd{margin:0}.relation-group h4{font-size:.76rem;letter-spacing:.11em;text-transform:uppercase;color:var(--muted);margin-bottom:.4rem}.relation-chips{display:flex;flex-wrap:wrap;gap:.4rem}.relation-chip{border:1px solid var(--line-strong);background:var(--paper);border-radius:999px;padding:.32rem .75rem;font-size:.86rem;cursor:pointer;transition:border-color .16s var(--ease),background .16s var(--ease)}.relation-chip-detail{display:block;margin-top:.12rem;font-size:.72rem;color:var(--muted);font-weight:500}.relation-chip:has(.relation-chip-detail){border-radius:var(--r-md);text-align:left}.relation-chip:hover{border-color:var(--moss);background:#fff}.relation-chip.is-active{border-color:var(--moss);background:#2f6b521f;color:var(--ink);font-weight:600}.add-person-picker{display:flex;flex-direction:column;gap:.35rem;max-height:240px;overflow:auto;border:1px solid var(--line);border-radius:var(--r-md);padding:.35rem;background:#ffffff8c}.add-person-option{display:flex;align-items:center;gap:.65rem;width:100%;text-align:left;border:1px solid transparent;background:transparent;border-radius:var(--r-sm);padding:.45rem .55rem;cursor:pointer}.add-person-option:hover{background:#2f6b5214}.add-person-option.is-selected{border-color:var(--moss);background:#2f6b521f}.add-person-option strong{display:block;font-size:.95rem}.add-person-option small{display:block;color:var(--muted);font-size:.8rem}.text-link{border:none;background:none;color:var(--moss);font:inherit;font-weight:600;text-decoration:underline;cursor:pointer;padding:0}.choose-add-actions{display:flex;flex-direction:column;gap:.65rem}.choose-add-actions .btn{width:100%;justify-content:center}.child-link-row{display:flex;flex-direction:column;gap:.45rem;padding:.55rem;border:1px solid transparent;border-radius:var(--r-sm)}.child-link-row+.child-link-row{border-top:1px solid var(--line)}.child-link-person{display:flex;align-items:center;gap:.65rem}.child-link-person strong{display:block;font-size:.95rem}.child-link-person small{display:block;color:var(--muted);font-size:.8rem}.photo-editor{display:flex;align-items:center;gap:.8rem}.photo-editor .avatar{width:68px;height:68px;font-size:1.2rem}.auth-photo-picker{padding:.15rem 0 .25rem}.auth-photo-actions{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center}.settings-photo{margin-bottom:1rem}.photo-crop-loading{min-height:280px;display:grid;place-items:center}.photo-crop-stage{position:relative;margin:0 auto;overflow:hidden;border-radius:50%;background:#1a2a24;touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;box-shadow:inset 0 0 0 1px #ffffff1f}.photo-crop-stage:active{cursor:grabbing}.photo-crop-image{position:absolute;max-width:none;pointer-events:none;-webkit-user-drag:none}.photo-crop-mask{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;box-shadow:0 0 0 999px #08181373;pointer-events:none}.photo-crop-zoom input[type=range]{width:100%;accent-color:var(--moss)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#08181373;z-index:60;display:grid;place-items:center;padding:1.2rem;animation:fade .18s var(--ease) both;overflow-y:auto}.modal{width:min(520px,100%);background:var(--surface);border-radius:var(--r-lg);box-shadow:0 40px 80px -40px #081813cc;padding:1.4rem;display:flex;flex-direction:column;gap:1rem;animation:rise .24s var(--ease) both;margin:auto}.modal h2{font-size:1.4rem;margin:0;flex:1;min-width:0;padding-right:.5rem}.modal-header{display:flex;align-items:flex-start;gap:.75rem}.modal-close{flex:none;border:none;background:transparent;font-size:1.45rem;line-height:1;cursor:pointer;color:var(--muted);padding:.15rem .4rem;border-radius:var(--r-sm)}.modal-close:hover{color:var(--text);background:var(--paper-2)}.modal form{display:flex;flex-direction:column;gap:.85rem}.modal-actions{display:flex;justify-content:flex-end;gap:.6rem;flex-wrap:wrap}.deceased-panel{padding:.75rem .9rem;border:1px dashed var(--line);border-radius:var(--r-md, 10px);background:color-mix(in srgb,var(--surface) 88%,#a33b2c 4%)}.deceased-confirm{display:flex;flex-direction:column;gap:.55rem}.list-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}.list-row{display:flex;align-items:center;gap:.9rem;padding:.85rem 1.1rem;border-bottom:1px solid var(--line)}.list-row:last-child{border-bottom:none}.list-row .avatar{width:42px;height:42px;font-size:.9rem}.list-row-main{flex:1;min-width:0}.list-row-main strong{display:block;font-size:.98rem}.list-row-main small{color:var(--muted);font-size:.84rem}.list-row-actions{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}.pill{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;font-weight:700;padding:.24rem .6rem;border-radius:999px;background:var(--paper-2);color:var(--muted)}.pill.owner{background:#d8a44133;color:var(--brass-deep)}.pill.admin,.pill.online{background:#2f6b5229;color:var(--ink-700)}.directory-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.9rem}.people-table-head{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(120px,.7fr) minmax(160px,1fr);gap:.75rem;padding:.65rem 1rem;border-bottom:1px solid var(--line);color:var(--muted);font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.people-row{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(120px,.7fr) minmax(160px,1fr);gap:.75rem;align-items:center}.people-row-person{display:flex;gap:.8rem;align-items:center;min-width:0;text-align:left;background:transparent;border:0;padding:0;cursor:pointer;color:inherit}.people-row-person.is-static{cursor:default}.people-row-account{display:flex;flex-direction:column;gap:.2rem;align-items:flex-start}.people-row-role{color:var(--muted);font-size:.78rem;text-transform:capitalize}@media (max-width: 760px){.people-table-head{display:none}.people-row{grid-template-columns:1fr;align-items:stretch}.people-row-account,.people-row .list-row-actions{padding-left:3.2rem}}.directory-card{display:flex;gap:.8rem;align-items:center;padding:.85rem;border-radius:var(--r-md);border:1px solid var(--line);background:var(--surface);cursor:pointer;text-align:left;transition:transform .18s var(--ease),border-color .18s var(--ease)}.directory-card:hover{transform:translateY(-2px);border-color:var(--moss-soft)}.directory-card .avatar{width:48px;height:48px;font-size:1rem}.directory-card strong{display:block;font-family:var(--font-display);font-size:1rem}.directory-card small{color:var(--muted);font-size:.83rem}.search-bar{display:flex;gap:.6rem;align-items:center}.search-bar input{flex:1;border:1px solid var(--line-strong);border-radius:999px;padding:.6rem 1rem;background:var(--surface)}.search-bar input:focus{outline:none;border-color:var(--moss);box-shadow:0 0 0 3px #2f6b5226}.settings-stack{display:grid;gap:1.2rem;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-items:start}.settings-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:1.3rem;display:flex;flex-direction:column;gap:.9rem}.settings-panel h2{font-size:1.2rem}.invite-row{display:flex;align-items:center;gap:.6rem;padding:.6rem 0;border-bottom:1px solid var(--line);flex-wrap:wrap}.invite-row:last-child{border-bottom:none}.invite-link{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}@media (max-width: 560px){.detail-row{grid-template-columns:1fr;gap:.15rem}}.info-tip{display:inline-flex;align-items:center;justify-content:center;width:1rem;height:1rem;margin-left:.35rem;border-radius:999px;border:1px solid var(--line);font-size:.7rem;font-weight:700;font-style:normal;color:var(--muted);cursor:help;vertical-align:middle}.story-card-head{display:flex;align-items:baseline;gap:.55rem;flex-wrap:wrap}.story-card-head h4{margin:0}.nsfw-pill{display:inline-block;padding:.12rem .45rem;border-radius:999px;background:#a33b2c1f;color:#a33b2c;font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.story-card.is-nsfw-locked .story-body{font-style:italic;color:var(--muted)}.people-tabs{display:grid;grid-template-columns:1fr 1fr;margin:0 0 1rem;border-bottom:1px solid var(--line);background:#ffffff59;max-width:24rem}.people-tab{border:none;background:transparent;padding:.72rem .8rem;font:inherit;font-size:.92rem;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.people-tab:hover{color:var(--ink)}.people-tab.is-active{color:var(--ink);border-bottom-color:var(--moss)}.groups-panel{display:flex;flex-direction:column;gap:1rem}.groups-browse-tabs{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line);background:#ffffff59;max-width:28rem}.groups-browse-tab{border:none;background:transparent;padding:.72rem .8rem;font:inherit;font-size:.92rem;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;display:inline-flex;align-items:center;justify-content:center;gap:.4rem}.groups-browse-tab:hover{color:var(--ink)}.groups-browse-tab.is-active{color:var(--ink);border-bottom-color:var(--moss)}.groups-browse-count{font-size:.78rem;font-weight:700;color:var(--muted);min-width:1.1rem}.groups-browse-tab.is-active .groups-browse-count{color:var(--moss)}.groups-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap}.groups-toolbar .muted{margin:0;max-width:40rem}.groups-member-chip{display:block;color:var(--muted)}.groups-editor-modal{width:min(48rem,96vw);max-width:min(48rem,96vw);max-height:min(92vh,52rem);overflow:hidden}.groups-editor-modal form{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column;gap:0}.groups-editor-body{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:.85rem;padding-right:.15rem}.groups-editor-modal .modal-actions{flex-shrink:0;margin-top:.85rem;padding-top:.85rem;border-top:1px solid var(--line)}.groups-kind-fieldset{display:flex;flex-direction:column;gap:.45rem}.groups-people-picker{display:flex;flex-direction:column;gap:.35rem;max-height:14rem;overflow-y:auto;padding:.35rem 0}.groups-people-option{display:flex;align-items:center;gap:.55rem;padding:.35rem .25rem}.groups-people-option .avatar{width:42px;height:42px;font-size:.9rem}.groups-people-option .avatar img{width:100%;height:100%;object-fit:cover}.groups-static-fieldset{display:flex;flex-direction:column;gap:.65rem}.groups-person-search{display:flex;flex-direction:column;gap:.35rem}.groups-search-results{display:flex;flex-direction:column;gap:.2rem;max-height:12rem;overflow-y:auto;border:1px solid var(--line);border-radius:var(--r-md);background:#ffffffa6;padding:.25rem}.groups-search-hit{display:flex;align-items:center;gap:.55rem;width:100%;border:none;background:transparent;text-align:left;font:inherit;padding:.4rem .45rem;border-radius:var(--r-sm);cursor:pointer;color:var(--ink)}.groups-search-hit:hover{background:#2f6b521a}.groups-search-hit .avatar{width:36px;height:36px;font-size:.78rem}.groups-search-hit .avatar img{width:100%;height:100%;object-fit:cover}.groups-search-hit span:nth-of-type(1){flex:1;min-width:0}.groups-selected-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.groups-selected-list li{display:flex;align-items:center;gap:.55rem;padding:.35rem 0;border-bottom:1px solid var(--line)}.groups-selected-list li:last-child{border-bottom:none}.groups-selected-list .avatar{width:36px;height:36px;font-size:.78rem}.groups-selected-list .avatar img{width:100%;height:100%;object-fit:cover}.groups-selected-list span{flex:1;min-width:0}.groups-rules{display:flex;flex-direction:column;gap:.55rem}.groups-rule-match{display:flex;flex-wrap:wrap;gap:.85rem 1.25rem;margin-bottom:.75rem}.groups-rule-match label{display:inline-flex;align-items:center;gap:.4rem;font-weight:600}.groups-rule-operator{text-align:center;font-size:.72rem;font-weight:700;letter-spacing:.08em;color:var(--moss);padding:.15rem 0}.groups-rule-row{display:flex;flex-wrap:nowrap;align-items:center;gap:.45rem}.groups-rule-row>select:first-child{flex:0 1 10.5rem;min-width:7.5rem}.groups-rule-row select,.groups-rule-row input{min-width:0;flex:1 1 auto}.groups-rule-row>.btn{flex:none}.groups-rule-op,.groups-rule-attr-op,.groups-rule-op-label{flex:none;min-width:0}.groups-rule-op{width:auto;flex:0 0 3.6rem}.groups-rule-attr-op{width:auto;flex:0 1 9.5rem;min-width:7.5rem}.groups-scope-selected{display:flex;align-items:center;gap:.4rem;flex:1 1 auto;min-width:0;padding:.15rem .35rem;border:1px solid var(--line);border-radius:var(--r-sm);background:#ffffffa6}.groups-scope-selected .avatar{width:28px;height:28px;font-size:.68rem;flex:none}.groups-scope-selected .avatar img{width:100%;height:100%;object-fit:cover}.groups-scope-selected span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9rem}.groups-scope-selected .btn{flex:none}.groups-scope-results{margin-top:.35rem}.groups-preview{border-top:1px solid var(--line);padding-top:.85rem}.groups-preview h3{margin:0 0 .4rem;font-size:.95rem}.groups-preview ul{margin:0;padding-left:1.1rem;columns:2;gap:1rem}@media (max-width: 560px){.groups-preview ul{columns:1}.people-tabs,.groups-browse-tabs{max-width:none}}.chat{display:grid;grid-template-columns:210px minmax(0,1fr) 220px;height:100%;min-height:0}.chat-rail{border-right:1px solid var(--line);background:#fff9;padding:1.1rem .8rem;display:flex;flex-direction:column;gap:.8rem;overflow-y:auto}.chat-rail h2{font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);padding:0 .5rem}.chat-rail-list{display:flex;flex-direction:column;gap:.15rem}.chat-rail-list button{border:none;background:transparent;text-align:left;padding:.5rem .65rem;border-radius:var(--r-sm);cursor:pointer;font-size:.94rem;font-weight:600;color:var(--muted)}.chat-rail-list button:hover{background:var(--paper-2);color:var(--text)}.chat-rail-list button.is-active{background:var(--ink-800);color:#f0f5ec}.chat-presence{margin-top:auto;padding:.7rem .5rem 0;border-top:1px solid var(--line);font-size:.85rem;color:var(--muted)}.chat-presence ul{list-style:none;margin:.5rem 0 0;padding:0;display:flex;flex-direction:column;gap:.35rem}.chat-presence li{display:flex;align-items:center;gap:.45rem;color:var(--text)}.chat-members{border-left:1px solid var(--line);background:#ffffff8c;padding:1.1rem .9rem;display:flex;flex-direction:column;gap:.55rem;overflow-y:auto;min-height:0}.chat-members h2{font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0}.chat-members-meta{margin:0;font-size:.82rem;color:var(--muted)}.chat-members ul{list-style:none;margin:.2rem 0 0;padding:0;display:flex;flex-direction:column;gap:.55rem}.chat-members li{display:flex;align-items:center;gap:.55rem}.chat-members li strong{display:block;font-size:.9rem;line-height:1.2}.chat-members li span{font-size:.75rem;color:var(--muted)}.chat-members li span.is-online{color:var(--moss-soft);font-weight:600}.chat-access-note{margin:.25rem 0 0;font-size:.78rem;color:var(--muted)}.chat-create-modal fieldset{border:1px solid var(--line);border-radius:var(--r-sm);padding:.75rem .85rem;margin:0}.chat-create-modal legend{padding:0 .35rem;font-size:.82rem;font-weight:700}.chat-invite-help{margin:0 0 .55rem;font-size:.8rem}.chat-invite-list{display:flex;flex-direction:column;gap:.45rem;max-height:220px;overflow-y:auto}.chat-invite-option{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.chat-invite-person{display:flex;flex-direction:column;gap:.35rem}.chat-invite-scope{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem 1rem;margin-left:1.45rem;font-size:.82rem;color:var(--muted)}.chat-invite-scope label{display:inline-flex;align-items:center;gap:.35rem;color:var(--text)}.chat-invite-scope label.is-disabled{opacity:.55}.chat-invite-scope-note{font-size:.78rem}.presence-dot{width:8px;height:8px;border-radius:50%;background:var(--moss-soft);box-shadow:0 0 0 3px #4c8b6d33}.chat-main{display:flex;flex-direction:column;min-width:0;min-height:0}.chat-head{padding:1rem clamp(1rem,2.5vw,1.6rem);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:.8rem;background:#ffffffb8}.chat-head h1{font-size:1.25rem}.chat-head p{font-size:.85rem;color:var(--muted)}.chat-status{margin-left:auto;font-size:.76rem;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:var(--muted);display:inline-flex;align-items:center;gap:.4rem}.chat-status .dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.chat-status.is-offline .dot{background:#b45309;box-shadow:none;animation:none}.chat-status.is-live .dot{background:var(--moss-soft);box-shadow:0 0 0 3px #4c8b6d38}.chat-scroll{flex:1;overflow-y:auto;padding:1.1rem clamp(1rem,2.5vw,1.6rem);display:flex;flex-direction:column;gap:.9rem}.chat-day{align-self:center;font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--muted);background:var(--paper-2);padding:.25rem .8rem;border-radius:999px}@keyframes message-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.message{display:flex;gap:.75rem;animation:message-in .24s var(--ease) both}.message .avatar{width:38px;height:38px;font-size:.85rem}.message-body{min-width:0;flex:1}.message-meta{display:flex;align-items:baseline;gap:.5rem;margin-bottom:.12rem}.message-meta strong{font-family:var(--font-display);font-size:.98rem}.message-meta time{font-size:.76rem;color:var(--muted)}.message-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55}.message.is-deleted .message-text{color:var(--muted);font-style:italic}.message.is-pending{opacity:.6}.message-delete{border:none;background:transparent;color:var(--muted);cursor:pointer;font-size:.76rem;opacity:0;transition:opacity .16s var(--ease)}.message:hover .message-delete{opacity:1}.message-delete:hover{color:var(--danger)}.chat-typing{min-height:1.2rem;padding:0 clamp(1rem,2.5vw,1.6rem);font-size:.82rem;color:var(--muted);font-style:italic}.chat-composer{border-top:1px solid var(--line);padding:.85rem clamp(1rem,2.5vw,1.6rem) 1.1rem;display:flex;gap:.7rem;align-items:flex-end;background:#ffffffb8}.chat-composer textarea{flex:1;resize:none;border:1px solid var(--line-strong);border-radius:var(--r-md);padding:.7rem .9rem;max-height:160px;background:var(--surface);line-height:1.5}.chat-composer textarea:focus{outline:none;border-color:var(--moss);box-shadow:0 0 0 3px #2f6b5226}.chat-history-more{align-self:center}@media (max-width: 980px){.chat{grid-template-columns:190px minmax(0,1fr)}.chat-members{display:none}}@media (max-width: 820px){.chat{grid-template-columns:1fr}.chat-rail{flex-direction:row;align-items:center;overflow-x:auto;border-right:none;border-bottom:1px solid var(--line);padding:.6rem .8rem}.chat-rail h2,.chat-presence,.chat-members{display:none}.chat-rail-list{flex-direction:row;gap:.4rem}.chat-rail-list button{white-space:nowrap}}.reunion-banner{position:relative;overflow:hidden;border-radius:var(--r-lg);padding:clamp(1.4rem,4vw,2.2rem);color:#f0f5ec;background:radial-gradient(90% 120% at 12% 10%,rgba(47,107,82,.6) 0%,transparent 60%),radial-gradient(70% 100% at 90% 20%,rgba(216,164,65,.35) 0%,transparent 60%),linear-gradient(150deg,#12332a,#081813)}.reunion-banner:after{content:"";position:absolute;top:-30%;right:-30%;bottom:-30%;left:-30%;background-image:repeating-radial-gradient(circle at 82% 70%,rgba(240,245,236,.06) 0px,rgba(240,245,236,.06) 1px,transparent 1px,transparent 40px);pointer-events:none}.reunion-banner .eyebrow{color:var(--brass)}.reunion-banner h2{font-size:clamp(1.7rem,4vw,2.5rem);margin:.4rem 0 .5rem}.reunion-banner p{color:#f0f5eccc;max-width:50ch}.reunion-meta{display:flex;gap:1.4rem;flex-wrap:wrap;margin-top:1rem;position:relative;z-index:1}.reunion-meta div{display:flex;flex-direction:column;gap:.1rem}.reunion-meta small{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:#f0f5ec99}.reunion-meta strong{font-family:var(--font-display);font-size:1.05rem}.calendar-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,1fr);gap:1.3rem;align-items:start}.calendar-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:1.1rem}.calendar-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:.9rem;gap:.6rem}.calendar-nav h2{font-size:1.25rem}.calendar-nav-buttons{display:flex;gap:.35rem}.calendar-nav-buttons button{border:1px solid var(--line-strong);background:transparent;border-radius:var(--r-sm);width:34px;height:34px;cursor:pointer}.calendar-nav-buttons button:hover{border-color:var(--moss)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.calendar-weekday{text-align:center;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700;padding-bottom:.35rem}.calendar-day{position:relative;min-height:74px;border-radius:var(--r-sm);border:1px solid transparent;background:var(--paper);padding:.35rem;display:flex;flex-direction:column;gap:.2rem;cursor:pointer;text-align:left;transition:border-color .16s var(--ease),background .16s var(--ease)}.calendar-day:hover{border-color:var(--moss-soft);background:#fff}.calendar-day.is-outside{opacity:.4}.calendar-day.is-today{border-color:var(--brass)}.calendar-day.is-selected{background:#fff;border-color:var(--ink-700)}.calendar-day span{font-size:.78rem;font-weight:700;color:var(--muted)}.calendar-chip{font-size:.7rem;line-height:1.2;padding:.16rem .34rem;border-radius:4px;background:#2f6b5224;color:var(--ink-700);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-chip.reunion{background:#d8a4413d;color:var(--brass-deep);font-weight:700}.agenda{display:flex;flex-direction:column;gap:.7rem}.agenda-item{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);padding:.85rem 1rem;display:flex;gap:.85rem;align-items:flex-start}.agenda-date{text-align:center;min-width:46px;border-right:1px solid var(--line);padding-right:.7rem}.agenda-date small{display:block;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:700}.agenda-date strong{font-family:var(--font-display);font-size:1.3rem}.agenda-body{flex:1;min-width:0}.agenda-body h3{font-size:1.05rem}.agenda-body p{font-size:.88rem;color:var(--muted);margin-top:.15rem}.agenda-actions{display:flex;gap:.3rem}@media (max-width: 940px){.calendar-layout{grid-template-columns:1fr}}.cookbook-search-panel{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:.9rem}.cookbook-search{flex:1 1 16rem;min-width:0;border:1px solid color-mix(in srgb,var(--ink) 12%,transparent);background:var(--paper);border-radius:var(--r-md);padding:.85rem 1rem;font:inherit;font-size:1.05rem}.cookbook-chips{display:flex;gap:.35rem;flex-wrap:wrap;margin-bottom:1.25rem}.cookbook-chips button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid color-mix(in srgb,var(--ink) 12%,transparent);background:var(--paper);color:var(--text);font:inherit;font-size:.9rem;padding:.45rem .8rem;border-radius:999px;cursor:pointer}.cookbook-chips button.is-active{border-color:var(--moss);background:color-mix(in srgb,var(--moss) 12%,var(--paper));color:var(--moss)}.cookbook-section-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.9rem}.cookbook-section-heading h2{margin:.15rem 0 0;font-size:1.35rem}.cookbook-category-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(11.5rem,1fr));gap:.8rem}.cookbook-category-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);background:radial-gradient(120% 100% at 0% 0%,rgba(216,164,65,.12),transparent 55%),color-mix(in srgb,var(--paper) 92%,white);border-radius:var(--r-lg);padding:1.1rem 1rem;text-align:left;cursor:pointer;font:inherit;color:inherit;display:flex;flex-direction:column;gap:.35rem;min-height:6.2rem;transition:transform .16s ease,border-color .16s ease}.cookbook-category-card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--moss) 35%,transparent)}.cookbook-category-card strong{font-family:var(--font-display);font-size:1.2rem}.cookbook-category-card span{color:var(--muted);font-size:.9rem}.cookbook-recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:1rem}.cookbook-recipe-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);background:color-mix(in srgb,var(--paper) 88%,white);border-radius:var(--r-lg);padding:0;text-align:left;overflow:hidden;cursor:pointer;color:inherit;font:inherit;display:flex;flex-direction:column;min-height:14rem;transition:transform .16s ease,box-shadow .16s ease}.cookbook-recipe-card:hover{transform:translateY(-2px);box-shadow:0 10px 28px #12281c14}.cookbook-recipe-card-media{height:7.5rem;display:grid;place-items:center;background:radial-gradient(80% 120% at 20% 0%,rgba(216,164,65,.22),transparent 60%),linear-gradient(160deg,#1d4638,#0d241c);color:#f0f5ec;font-family:var(--font-display);font-size:2.4rem;overflow:hidden}.cookbook-recipe-card-media img{width:100%;height:100%;object-fit:cover}.cookbook-recipe-card-body{padding:.9rem 1rem 1.05rem;display:flex;flex-direction:column;gap:.35rem}.cookbook-recipe-card-meta{display:flex;gap:.55rem;flex-wrap:wrap;align-items:center;color:var(--muted);font-size:.82rem}.cookbook-recipe-card h3{margin:0;font-size:1.15rem}.cookbook-recipe-card p{margin:0;color:var(--muted);font-size:.92rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:.15rem .55rem;background:color-mix(in srgb,var(--ink) 8%,transparent);color:var(--text);font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;font-weight:700}.badge.family{background:color-mix(in srgb,var(--moss) 18%,transparent);color:var(--moss)}.cookbook-form .cookbook-editor-block{margin:1rem 0}.cookbook-editor-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.cookbook-editor-heading h3{margin:0;font-size:1rem}.cookbook-ingredient-list{display:flex;flex-direction:column;gap:.45rem}.cookbook-ingredient-row{display:grid;grid-template-columns:5rem 7.25rem minmax(0,1fr) 4.5rem 1.75rem;gap:.4rem;align-items:center}.cookbook-ingredient-head{margin-bottom:-.1rem}.cookbook-ingredient-head>span{font-size:.78rem;font-weight:600;color:var(--muted);line-height:1.2}.cookbook-step-row{display:grid;grid-template-columns:1.4rem minmax(0,1fr) auto;gap:.4rem;margin-bottom:.45rem;align-items:start}.cookbook-ingredient-optional-label{display:block;width:100%;text-align:center}.cookbook-ingredient-optional{display:inline-flex;align-items:center;justify-content:center;width:100%;margin:0;cursor:pointer;-webkit-user-select:none;user-select:none}.cookbook-ingredient-optional input{width:auto;margin:0;padding:0;border:none;background:transparent;accent-color:var(--moss)}.cookbook-ingredient-remove{justify-self:center;min-width:0;padding-left:.35rem;padding-right:.35rem}.cookbook-ingredient-row input,.cookbook-ingredient-row select,.cookbook-step-row textarea{width:100%;border:1px solid color-mix(in srgb,var(--ink) 12%,transparent);border-radius:var(--r-sm);padding:.55rem .65rem;font:inherit;background:var(--paper)}.cookbook-detail{display:flex;flex-direction:column;gap:.85rem}.cookbook-print-header{display:none}.cookbook-print-title{margin:0;font-family:var(--font-display);font-size:1.75rem;line-height:1.2}.cookbook-print-brand img{display:block;height:2.1rem;width:auto}.cookbook-detail-meta,.cookbook-detail-stats{display:flex;flex-wrap:wrap;gap:.65rem;color:var(--muted);font-size:.92rem}.cookbook-detail-photo{border-radius:var(--r-md);overflow:hidden;max-height:16rem}.cookbook-detail-photo img{width:100%;height:100%;object-fit:cover;display:block}.cookbook-detail h3{margin:.4rem 0 .2rem;font-size:1.05rem}.cookbook-ingredients-optional-heading{margin:.85rem 0 .35rem;font-size:.92rem;font-weight:600;color:var(--muted)}.cookbook-detail ul,.cookbook-detail ol{margin:0;padding-left:1.2rem}.cookbook-settings-tabs{display:grid;grid-template-columns:1fr 1fr;margin:0 0 1rem;border-bottom:1px solid var(--line);background:#ffffff59}.cookbook-settings-tab{border:none;background:transparent;padding:.72rem .8rem;font:inherit;font-size:.92rem;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.cookbook-settings-tab:hover{color:var(--ink)}.cookbook-settings-tab.is-active{color:var(--ink);border-bottom-color:var(--moss)}.cookbook-category-settings{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45rem;max-height:min(50vh,22rem);overflow-y:auto}.cookbook-category-settings li{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.55rem .7rem;border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);border-radius:var(--r-md);background:color-mix(in srgb,var(--paper) 94%,white)}.cookbook-category-add{display:flex;gap:.5rem;margin-top:.75rem}.cookbook-category-add input{flex:1 1 auto;min-width:0}.cookbook-photo-editor{display:flex;gap:.85rem;align-items:center;flex-wrap:wrap;margin-top:.35rem}.cookbook-photo-preview{width:7.5rem;height:5.5rem;border-radius:var(--r-md);border:1px solid color-mix(in srgb,var(--ink) 12%,transparent);background:color-mix(in srgb,var(--paper) 88%,white);overflow:hidden;display:grid;place-items:center;flex:0 0 auto}.cookbook-photo-preview img{width:100%;height:100%;object-fit:cover;display:block}.cookbook-photo-actions{display:flex;flex-wrap:wrap;gap:.35rem}.cookbook-tag-picker{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.35rem}.cookbook-tag{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid color-mix(in srgb,var(--ink) 12%,transparent);background:var(--paper);color:var(--text);font:inherit;font-size:.85rem;padding:.35rem .7rem;border-radius:999px;cursor:pointer}button.cookbook-tag:hover{border-color:color-mix(in srgb,var(--moss) 45%,transparent)}.cookbook-tag.is-active{border-color:var(--moss);background:color-mix(in srgb,var(--moss) 12%,var(--paper));color:var(--moss)}span.cookbook-tag{cursor:default}.cookbook-card-tags{margin:.15rem 0 0;font-size:.85rem;color:color-mix(in srgb,var(--text) 72%,transparent)}@media (max-width: 640px){.cookbook-ingredient-row{grid-template-columns:1fr 1fr 4.5rem 1.75rem}.cookbook-ingredient-row>input:nth-of-type(2),.cookbook-ingredient-head>span:nth-child(3){grid-column:1 / -3}}@media print{@page{margin:.6in}body *{visibility:hidden!important}.cookbook-recipe-print,.cookbook-recipe-print *{visibility:visible!important}.cookbook-recipe-print .no-print,.cookbook-recipe-print .no-print *{display:none!important;visibility:hidden!important}.modal-backdrop{position:static!important;inset:auto!important;background:transparent!important;padding:0!important;overflow:visible!important}.modal{box-shadow:none!important;border:none!important;max-width:none!important;width:100%!important;max-height:none!important;overflow:visible!important;padding:0!important;background:transparent!important}.modal>.modal-header,.modal>h2{display:none!important}.cookbook-recipe-print{position:absolute;left:0;top:0;width:100%;color:#111;background:#fff;gap:.7rem}.cookbook-print-header{display:flex;align-items:center;gap:.85rem;margin:0 0 .35rem}.cookbook-print-brand{flex:0 0 auto}.cookbook-print-brand img{height:1.85rem;width:auto;max-width:2.2in;object-fit:contain;object-position:left center;-webkit-print-color-adjust:exact;print-color-adjust:exact}.cookbook-print-title{flex:1 1 auto;min-width:0;font-size:1.55rem}.cookbook-detail-photo{max-height:3.5in;border-radius:0}.cookbook-detail-photo img{max-height:3.5in;object-fit:contain;object-position:left top}.cookbook-detail h3{break-after:avoid;margin-top:.9rem}.cookbook-detail li{break-inside:avoid}.cookbook-tag{border-color:#bbb!important;background:transparent!important;color:#333!important}}
