:root{color:#173f35;background:#f6f3ec;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--green-950: #102f28;--green-800: #173f35;--green-700: #245848;--green-100: #dfe9e3;--cream: #f6f3ec;--paper: #fffdf8;--gold: #c7a45a;--ink: #1b2e29;--muted: #697a74;--line: #dfe4df;--danger: #a5443b;--shadow: 0 18px 50px rgba(20, 55, 46, .1)}*{box-sizing:border-box}html{min-width:320px;background:var(--cream)}body{margin:0;min-width:320px;min-height:100vh}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid rgba(199,164,90,.55);outline-offset:2px}a{color:inherit}h1,h2,h3,p{margin-top:0}h1,h2,h3{color:var(--ink);font-family:Georgia,Times New Roman,serif;font-weight:500;letter-spacing:-.025em}h1{font-size:clamp(2.15rem,4vw,3.8rem);line-height:1;margin-bottom:.75rem}h2{font-size:2rem;line-height:1.1}h3{font-size:1.18rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.muted{color:var(--muted)}.eyebrow{color:var(--gold);font-size:.74rem;font-weight:800;letter-spacing:.16em;margin-bottom:.65rem;text-transform:uppercase}.brand{align-items:center;display:inline-flex;font-family:Georgia,Times New Roman,serif;font-size:1.2rem;font-weight:600;gap:.65rem;text-decoration:none}.brand__mark{align-items:center;background:var(--green-800);border-radius:50%;color:#fff;display:inline-flex;font-family:sans-serif;font-size:1.5rem;height:2.25rem;justify-content:center;width:2.25rem}.brand--light{color:#fff}.brand--light .brand__mark{background:#ffffff1f;color:#e5c77d}.button{align-items:center;border:1px solid transparent;border-radius:.65rem;cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:700;justify-content:center;min-height:2.7rem;overflow:hidden;padding:.65rem 1.1rem;position:relative;text-decoration:none;transition:background .18s,border-color .18s,box-shadow .18s,transform .18s}.button:hover{box-shadow:0 7px 18px #14372e1f;transform:translateY(-2px)}.button:disabled{cursor:wait;opacity:.62;transform:none}.button--small{min-height:2.25rem;padding:.42rem .85rem}.button--primary{background:var(--green-800);color:#fff}.button--primary:hover{background:var(--green-950)}.button--outline{background:transparent;border-color:#b9c7c1;color:var(--green-800)}.button--outline:hover{border-color:var(--green-700)}.button--ghost{background:#edf1ee;color:var(--green-800)}.button--danger{background:#fff1ef;border-color:#eed2ce;color:var(--danger)}.button--full{width:100%}.icon-button{align-items:center;background:#f0f3f0;border:0;border-radius:50%;color:var(--ink);cursor:pointer;display:inline-flex;font-size:1.55rem;height:2.55rem;justify-content:center;line-height:1;transition:background .18s,transform .22s;width:2.55rem}.icon-button:hover{background:#e2e9e4;transform:rotate(7deg) scale(1.06)}.tree-only-page{height:100vh;height:100dvh;overflow:hidden;position:relative;width:100%}.tree-shell{animation:canvasIn .55s ease-out both,gridDrift 28s linear infinite;background:linear-gradient(#fffdf8c7,#fffdf8c7),radial-gradient(circle at 1px 1px,rgba(23,63,53,.15) 1px,transparent 0);background-size:auto,24px 24px;height:100%;overflow:hidden;width:100%}.tree-viewport{cursor:grab;height:100%;min-height:100%;overflow:hidden;overscroll-behavior:none;position:relative;touch-action:none;user-select:none;-webkit-user-select:none}.tree-viewport.is-dragging{cursor:grabbing}.tree-stage{left:0;position:absolute;top:0;transform-origin:0 0}.tree-viewport.is-interacting .tree-stage{will-change:transform}.tree-connectors{inset:0;overflow:visible;position:absolute}.tree-line{animation:lineIn .7s .2s ease-out both;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.4}.tree-line--parent,.tree-line--christophe{stroke:#2f725f}.tree-line--legendre{stroke:#557da0}.tree-line--colnot{stroke:#8b627d}.tree-line--michon{stroke:#a87935}.family-node{animation:nodeIn .48s cubic-bezier(.16,.84,.28,1.08) both;background:radial-gradient(circle at 92% 12%,rgba(199,164,90,.1),transparent 34%),linear-gradient(145deg,#fffefb,#fbfcf9);border:1px solid rgba(76,111,98,.22);border-radius:.85rem;box-shadow:0 8px 20px #12372d1a,inset 0 1px #ffffffe6;display:flex;height:122px;overflow:hidden;position:absolute;transition:border-color .18s,box-shadow .22s,opacity .2s,transform .22s;width:190px}.family-node:hover{border-color:#2f725f7a;box-shadow:0 16px 34px #12372d29,inset 0 1px #fff;transform:translateY(-3px)}.family-node--lineage-couple:not(.family-node--selected):not(.family-node--match){border:0}.family-node--selected{animation:nodeIn .5s cubic-bezier(.2,.8,.2,1.12) both,selectedGlow 2.2s ease-in-out infinite;border:2px solid var(--gold)}.family-node--match{border:2px solid #d29c21;box-shadow:0 0 0 5px #d29c2133,0 14px 32px #12372d2e;z-index:2}.family-node--active-match{box-shadow:0 0 0 7px #d29c2157,0 18px 40px #12372d3d;z-index:3}.family-node--search-dimmed{opacity:.24}.family-node__person{align-items:center;background:transparent;border:0;color:var(--ink);cursor:pointer;display:flex;flex:1 1 50%;flex-direction:column;gap:.3rem;justify-content:center;min-width:0;padding:.55rem .35rem .42rem;position:relative;text-align:center;touch-action:none}.family-node__person+.family-node__person{border-left:1px solid rgba(76,111,98,.13)}.family-node__person--christophe,.family-node--branch-christophe{--lineage-color: #2f725f}.family-node__person--legendre,.family-node--branch-legendre{--lineage-color: #557da0}.family-node__person--colnot,.family-node--branch-colnot{--lineage-color: #8b627d}.family-node__person--michon,.family-node--branch-michon{--lineage-color: #a87935}.family-node--single:not(.family-node--selected):not(.family-node--match){border:0;border-top:2.4px solid var(--lineage-color, var(--gold))}.family-node--single .family-node__person{padding-left:.25rem;padding-right:.25rem}.family-node:not(.family-node--single) .family-node__person--lineage{border:2.4px solid var(--lineage-color, var(--gold))}.family-node:not(.family-node--single) .family-node__person--lineage:first-child{border-radius:.85rem 0 0 .85rem;border-right:0;margin:-1px 0 -1px -1px}.family-node:not(.family-node--single) .family-node__person--lineage:last-child{border-left:0;border-radius:0 .85rem .85rem 0;margin:-1px -1px -1px 0}.family-node--lineage-couple:not(.family-node--selected):not(.family-node--match) .family-node__person--lineage{margin:0}.family-node--lineage-couple:not(.family-node--selected):not(.family-node--match) .family-node__person--lineage:before,.family-node--lineage-couple:not(.family-node--selected):not(.family-node--match) .family-node__person--lineage:after{background:var(--lineage-color);content:"";height:2.4px;pointer-events:none;position:absolute;width:2.4px;z-index:1}.family-node--lineage-couple:not(.family-node--selected):not(.family-node--match) .family-node__person--lineage:before{top:-2.4px}.family-node--lineage-couple:not(.family-node--selected):not(.family-node--match) .family-node__person--lineage:after{bottom:-2.4px}.family-node--lineage-couple:not(.family-node--selected):not(.family-node--match) .family-node__person--lineage:first-child:before,.family-node--lineage-couple:not(.family-node--selected):not(.family-node--match) .family-node__person--lineage:first-child:after{right:-1.2px}.family-node--lineage-couple:not(.family-node--selected):not(.family-node--match) .family-node__person--lineage:last-child:before,.family-node--lineage-couple:not(.family-node--selected):not(.family-node--match) .family-node__person--lineage:last-child:after{left:-1.2px}.family-node--root-lineage-couple:not(.family-node--selected):not(.family-node--match){border:2.4px solid var(--gold)}.family-node--root-lineage-couple:not(.family-node--selected):not(.family-node--match):after{background:var(--gold);bottom:0;content:"";left:50%;pointer-events:none;position:absolute;top:0;transform:translate(-50%);width:2.4px;z-index:1}.family-node--root-lineage-couple:not(.family-node--selected):not(.family-node--match) .family-node__person--lineage{border:0;border-radius:0;margin:0}.family-node--root-lineage-couple:not(.family-node--selected):not(.family-node--match) .family-node__person--lineage:before,.family-node--root-lineage-couple:not(.family-node--selected):not(.family-node--match) .family-node__person--lineage:after{content:none}.family-node__person:hover{background:#2458480e}.family-node__person--active-match{background:#d29c2121;box-shadow:inset 0 0 0 2px #d29c21b8}.family-node__marriage-date{align-items:center;background:#fffdf8f0;border:1px solid rgba(139,98,125,.18);border-radius:999px;color:#76566c;display:inline-flex;font-size:.28rem;font-weight:700;justify-content:center;left:50%;letter-spacing:0;line-height:1;padding:.08rem .14rem;pointer-events:none;position:absolute;text-align:center;top:68%;transform:translate(-50%,-50%);white-space:nowrap;z-index:2}.family-node__copy{align-items:center;display:flex;flex-direction:column;gap:.17rem;min-width:0;width:100%}.family-node__copy strong{color:#173c32;font-family:Georgia,Times New Roman,serif;font-size:.68rem;font-weight:650;letter-spacing:-.012em;line-height:1.02;overflow-wrap:normal;word-break:normal;width:100%}.family-node__copy em{color:var(--muted);font-size:.52rem;font-style:normal;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.family-node__meta{align-items:center;display:flex;gap:.25rem;max-width:100%}.family-node:not(.family-node--single) .family-node__meta{flex-direction:column;gap:.12rem}.family-node__copy small,.family-node__age{border-radius:999px;font-size:.46rem;font-weight:700;line-height:1;overflow:hidden;padding:.18rem .24rem;text-overflow:ellipsis;white-space:nowrap}.family-node__copy small{background:#24584811;border:1px solid rgba(36,88,72,.09);color:#667a72}.family-node__age{background:#c7a45a21;border:1px solid rgba(199,164,90,.22);color:#806526}.avatar{border:3px solid #edf1ee;border-radius:50%;flex:0 0 auto;height:58px;object-fit:cover;transition:transform .3s cubic-bezier(.2,.8,.2,1);width:58px}.family-node__person:hover .avatar{transform:rotate(-3deg) scale(1.05)}.avatar--fallback{align-items:center;background:var(--green-100);color:var(--green-800);display:inline-flex;font-size:.88rem;font-weight:800;justify-content:center}.avatar--large{border-width:5px;height:132px;width:132px}.profile-photo-button{background:transparent;border:0;border-radius:50%;cursor:zoom-in;display:flex;flex:0 0 auto;padding:0}.profile-photo-button:hover .avatar{transform:scale(1.04)}.family-node .avatar{border:2px solid rgba(255,255,255,.95);box-shadow:0 0 0 2px #2f725f17,0 4px 10px #12372d1f;height:29px;width:29px}.family-node .avatar--fallback{background:linear-gradient(145deg,#e8f0eb,#dce9e2);color:#245848;font-size:.52rem}.tree-toolbar{align-items:flex-end;animation:floatingPanelIn .55s .2s ease-out both;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffffe6;border:1px solid rgba(23,63,53,.12);border-radius:.85rem;box-shadow:0 8px 28px #12372d1a;display:flex;gap:.55rem;max-width:calc(100% - 2rem);padding:.6rem;position:absolute;right:1rem;top:1rem;z-index:5}.tree-toolbar label{gap:.25rem}.tree-toolbar label>span:not(.sr-only){color:var(--muted);font-size:.55rem;padding-left:.2rem;text-transform:uppercase}.tree-toolbar input,.tree-toolbar select{font-size:.72rem;min-height:2.25rem;padding:.42rem .55rem}.tree-search{min-width:250px;position:relative}.tree-search input{padding-right:6.8rem}.tree-search__navigation{align-items:center;background:var(--green-800);border-radius:.45rem;color:#fff;display:flex;height:1.7rem;overflow:hidden;position:absolute;right:.28rem;top:.28rem}.tree-search__navigation button{align-items:center;background:transparent;border:0;color:#fff;cursor:pointer;display:flex;font-size:1rem;height:100%;justify-content:center;padding:0;width:1.55rem}.tree-search__navigation button:hover:not(:disabled){background:#ffffff29}.tree-search__navigation button:disabled{cursor:default;opacity:.38}.tree-search__navigation span{font-size:.58rem;font-weight:750;min-width:2.75rem;text-align:center;white-space:nowrap}.birthday-button{align-items:center;background:#fff8e9;border:1px solid #e5d2a5;border-radius:.6rem;cursor:pointer;display:flex;font-size:1.15rem;height:2.25rem;justify-content:center;width:2.4rem}.birthday-button:hover{background:#fff1ce;transform:translateY(-1px)}.map-button{align-items:center;background:var(--green-800);border:1px solid var(--green-800);border-radius:.6rem;color:#fff;cursor:pointer;display:flex;font-size:.7rem;font-weight:800;height:2.25rem;justify-content:center;padding:0 .8rem}.map-button:hover{background:var(--green-950);transform:translateY(-1px)}.tree-legend{animation:floatingPanelIn .55s .35s ease-out both;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffffd6;border:1px solid rgba(23,63,53,.12);border-radius:.8rem;box-shadow:0 8px 28px #12372d1a;display:flex;flex-direction:column;gap:.55rem;left:1rem;padding:.75rem .9rem;position:absolute;top:1rem}.tree-legend span{align-items:center;color:#52665f;display:flex;font-size:.7rem;font-weight:700;gap:.65rem;white-space:nowrap}.legend-line{border-top:3px solid;display:inline-block;width:28px}.legend-line--christophe{border-color:#2f725f}.legend-line--legendre{border-color:#557da0}.legend-line--colnot{border-color:#8b627d}.legend-line--michon{border-color:#a87935}.tree-controls{animation:floatingPanelIn .55s .45s ease-out both;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffffe0;border:1px solid var(--line);border-radius:.75rem;bottom:1rem;box-shadow:0 5px 20px #12372d1f;display:flex;overflow:hidden;position:absolute;right:1rem}.tree-controls button{background:transparent;border:0;border-right:1px solid var(--line);color:var(--green-800);cursor:pointer;font-size:1.25rem;font-weight:700;height:2.65rem;min-width:2.75rem;transition:background .16s,transform .16s}.tree-controls button:hover{background:#edf3ef;transform:scale(1.08)}.tree-controls button:last-child{border:0}.tree-controls .tree-controls__center{font-size:.78rem;padding:0 .9rem}.tree-state{left:50%;margin:0;max-width:min(520px,calc(100% - 2rem));min-height:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:100%;z-index:3}.loading-state,.empty-state{align-items:center;background:var(--paper);border:1px solid var(--line);border-radius:1rem;color:var(--muted);display:flex;gap:.75rem;justify-content:center;margin:2rem auto;min-height:250px;max-width:1500px;padding:2rem;text-align:center}.empty-state{flex-direction:column}.empty-state h2{margin-bottom:0}.spinner{animation:spin .8s linear infinite;border:3px solid var(--green-100);border-radius:50%;border-top-color:var(--green-700);height:1.5rem;width:1.5rem}@keyframes spin{to{transform:rotate(360deg)}}.notice{border-radius:.75rem;margin:1rem auto;max-width:1500px;padding:.9rem 1rem}.notice--error{background:#fff0ee;border:1px solid #edcdc8;color:#87372f}.notice--success{background:#edf7f0;border:1px solid #c9e0d0;color:#245848}.notice button{background:transparent;border:0;color:inherit;cursor:pointer;font-weight:800;text-decoration:underline}.modal-open{overflow:hidden}.modal-overlay,.editor-overlay{align-items:center;animation:overlayIn .22s ease-out both;background:#09201a94;display:flex;inset:0;justify-content:center;padding:1.5rem;position:fixed;z-index:50}.tutorial-overlay{z-index:80}.tutorial-modal{animation:modalIn .35s cubic-bezier(.2,.85,.25,1.08) both;background:var(--paper);border-radius:1.2rem;box-shadow:0 30px 90px #06191461;line-height:1.65;max-height:calc(100vh - 3rem);max-width:560px;overflow-y:auto;padding:2.3rem;position:relative;width:100%}.tutorial-modal__close{position:absolute;right:1rem;top:1rem}.tutorial-modal h2{font-size:clamp(1.8rem,5vw,2.35rem);margin-bottom:1.2rem;padding-right:2rem}.tutorial-modal p:not(.eyebrow){color:#40564f}.tutorial-modal__actions{display:grid;gap:.7rem;grid-template-columns:1fr 1fr;margin-top:1.4rem}.tutorial-modal__actions .button{width:100%}.tutorial-guide{animation:tutorialGuideIn .3s ease-out both;background:#fffdf8fa;border:1px solid rgba(153,117,42,.32);border-radius:1rem;bottom:1rem;box-shadow:0 20px 55px #06191440;color:var(--ink);max-width:350px;padding:1rem 1.1rem 1.1rem;position:fixed;right:1rem;width:calc(100% - 2rem);z-index:100}.tutorial-guide__header{align-items:center;display:grid;gap:.55rem;grid-template-columns:auto 1fr auto}.tutorial-guide__header>span:not(.tutorial-guide__icon){color:var(--muted);font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.tutorial-guide__header button{background:transparent;border:0;color:var(--green-700);cursor:pointer;font:inherit;font-size:.72rem;font-weight:800;padding:.25rem;text-decoration:underline;text-underline-offset:.15rem}.tutorial-guide__icon{align-items:center;background:#f8efd7;border-radius:999px;display:flex;font-size:1.15rem;height:2rem;justify-content:center;width:2rem}.tutorial-guide__progress{display:grid;gap:.3rem;grid-template-columns:repeat(6,1fr);margin:.75rem 0 .85rem}.tutorial-guide__progress i{background:#dce5e0;border-radius:999px;display:block;height:4px}.tutorial-guide__progress i.is-complete{background:var(--gold)}.tutorial-guide h2{font-size:1.3rem;margin:0 0 .4rem}.tutorial-guide p{color:#40564f;font-size:.86rem;line-height:1.5;margin:0}.tutorial-guide__finish{margin-top:.9rem;width:100%}.tutorial-target{animation:tutorialTargetPulse 1.5s ease-in-out infinite!important;outline:4px solid rgba(201,163,80,.9)!important;outline-offset:4px;position:relative;z-index:9!important}.person-modal{animation:modalIn .42s cubic-bezier(.2,.85,.25,1.08) both;background:var(--paper);border-radius:1.4rem;box-shadow:0 30px 90px #06191454;max-height:calc(100vh - 3rem);max-width:820px;overflow:auto;position:relative;width:100%}.person-modal__close{position:absolute;right:1.1rem;top:1.1rem;z-index:2}.person-modal__hero{align-items:center;background:linear-gradient(130deg,#e8eee9,#f8f3e6);border-radius:1.4rem 1.4rem 0 0;display:flex;gap:1.8rem;padding:2.6rem}.person-modal__hero h2{font-size:clamp(2rem,5vw,3rem);margin-bottom:.5rem}.person-modal__nickname{color:#806526;font-family:Georgia,Times New Roman,serif;font-size:1.05rem;font-style:italic;margin:-.2rem 0 .45rem}.person-modal__dates{color:var(--muted);margin:0}.person-modal__body{display:grid;gap:3rem;grid-template-columns:1.1fr 1fr;line-height:1.7;padding:2.4rem 2.6rem 2.7rem}.person-modal__body h3{border-bottom:1px solid var(--line);margin-bottom:1rem;padding-bottom:.7rem}.person-modal__address{font-style:normal;white-space:pre-line}.person-modal__contact{display:grid;gap:.7rem;margin:0}.person-modal__contact>div{display:grid;gap:.1rem}.person-modal__contact dt{color:var(--muted);font-size:.7rem}.person-modal__contact dd{margin:0;overflow-wrap:anywhere}.person-modal__contact a{color:var(--green-700);font-weight:700;text-underline-offset:.15rem}.relations-list{display:grid;gap:.15rem;margin:0}.relation-group{border-bottom:1px solid rgba(76,111,98,.1);display:grid;font-size:.88rem;gap:.8rem;grid-template-columns:78px 1fr;padding:.7rem 0}.relation-group:last-child{border-bottom:0}.relation-group dt{color:var(--muted);font-size:.78rem;padding-top:.12rem}.relation-group dd{color:var(--ink);font-weight:650;margin:0}.relation-items{display:grid;gap:.38rem;margin:0;padding-left:1.05rem}.relation-items li{padding-left:.12rem}.relation-items li::marker{color:var(--gold);font-size:.8em}.relation-link{background:transparent;border:0;color:var(--ink);cursor:pointer;font:inherit;font-weight:inherit;padding:0;text-align:left;text-decoration:underline;text-decoration-color:#24584840;text-decoration-thickness:1px;text-underline-offset:.18rem}.relation-link:hover{color:var(--green-700);text-decoration-color:currentColor}.relation-link:focus-visible{border-radius:.2rem;outline:2px solid var(--gold);outline-offset:3px}.relation-items--partnerships li{display:grid;gap:.08rem}.relation-items--partnerships small{color:var(--muted);font-size:.72rem;font-weight:500}.person-modal__contribution{border-top:1px solid var(--line);padding:1.5rem 2.6rem 2.4rem}.person-modal__contribution>.button{width:100%}.person-modal__contribution-cta{font-size:1rem;min-height:3.2rem}.contribution-modal-overlay{z-index:60}.modal-overlay.photo-lightbox-overlay{align-items:center;background:#05120fe6;justify-content:center;padding:4.5rem 1.5rem 1.5rem;z-index:70}.photo-lightbox{display:block;line-height:0;max-height:100%;max-width:100%;position:relative}.photo-lightbox img{border-radius:.8rem;box-shadow:0 24px 80px #0000006b;display:block;max-height:calc(100dvh - 6rem);max-width:calc(100vw - 3rem);object-fit:contain}.photo-lightbox__close{background:#ffffffeb;position:fixed;right:1.25rem;top:1.25rem;z-index:1}.contribution-modal{animation:modalIn .35s cubic-bezier(.2,.85,.25,1.08) both;background:var(--paper);border-radius:1.2rem;box-shadow:0 30px 90px #06191461;max-height:calc(100vh - 3rem);max-width:620px;overflow-y:auto;padding:2.2rem;position:relative;width:100%}.contribution-modal__close{position:absolute;right:1rem;top:1rem}.contribution-form__header{padding-right:3rem}.contribution-form__header h2{font-size:1.8rem;margin-bottom:.7rem}.contribution-form__header p:last-child{margin-bottom:0}.contribution-form__grid{display:grid;gap:1rem;margin:1.2rem 0}.contribution-form__grid small{color:var(--muted);font-size:.7rem;font-weight:450}.contribution-form__actions{display:flex;gap:.7rem;justify-content:flex-end}.contribution-modal__success .notice{margin:1.4rem 0 1rem}.contribution-modal__success>.button{width:100%}.birthday-modal{animation:modalIn .35s cubic-bezier(.2,.85,.25,1.08) both;background:var(--paper);border-radius:1.2rem;box-shadow:0 30px 90px #06191461;display:flex;flex-direction:column;height:min(620px,calc(100vh - 3rem));max-width:520px;overflow:hidden;padding:2rem;position:relative;width:100%}.birthday-modal__close{position:absolute;right:1rem;top:1rem}.birthday-modal__navigation{align-items:center;display:grid;gap:.8rem;grid-template-columns:auto 1fr auto;margin-top:.25rem}.birthday-modal__navigation h2{margin:0;text-align:center}.birthday-modal h2{text-transform:capitalize}.birthday-list{align-content:start;display:grid;flex:1;gap:.55rem;margin-top:1.2rem;min-height:0;overflow-y:auto;padding-right:.35rem;scrollbar-color:rgba(23,63,53,.28) transparent;scrollbar-width:thin}.birthday-list::-webkit-scrollbar{width:6px}.birthday-list::-webkit-scrollbar-track{background:transparent}.birthday-list::-webkit-scrollbar-thumb{background:#173f3547;border-radius:999px}.birthday-list::-webkit-scrollbar-thumb:hover{background:#173f356b}.birthday-list__item{display:grid}.birthday-list__person{align-items:center;background:#f8faf8;border:1px solid var(--line);border-radius:.75rem;color:var(--ink);cursor:pointer;display:grid;gap:.75rem;grid-template-columns:auto 1fr auto;padding:.7rem;text-align:left;width:100%}.birthday-list__person:hover,.birthday-list__person[aria-expanded=true]{background:#edf3ef;border-color:#9eb2a9}.birthday-list .avatar{height:42px;width:42px}.birthday-list span{display:flex;flex-direction:column}.birthday-list small{color:var(--muted)}.birthday-list time{color:#806526;font-size:.75rem;font-weight:800;text-transform:capitalize}.birthday-calendar-actions{display:grid;gap:.5rem;grid-template-columns:1fr 1fr;padding:.5rem .35rem .15rem}.birthday-calendar-actions a,.birthday-calendar-actions button{align-items:center;background:#fff;border:1px solid var(--line);border-radius:.55rem;color:var(--ink);cursor:pointer;display:flex;font:inherit;font-size:.78rem;font-weight:750;justify-content:center;min-height:2.35rem;padding:.45rem .6rem;text-align:center;text-decoration:none}.birthday-calendar-actions a:hover,.birthday-calendar-actions button:hover{background:#edf3ef;border-color:#9eb2a9}label{color:var(--ink);display:flex;flex-direction:column;font-size:.8rem;font-weight:750;gap:.45rem}input,textarea,select{background:#fff;border:1px solid #cfd9d4;border-radius:.6rem;color:var(--ink);min-height:2.8rem;padding:.68rem .75rem;transition:border-color .18s,box-shadow .18s,transform .18s;width:100%}textarea{line-height:1.5;resize:vertical}input:hover,textarea:hover,select:hover{border-color:#95aaa1}input:focus,textarea:focus,select:focus{border-color:var(--green-700);box-shadow:0 0 0 4px #24584817}input[aria-invalid=true],textarea[aria-invalid=true]{background:snow;border-color:#b94a40}input[aria-invalid=true]:focus,textarea[aria-invalid=true]:focus{box-shadow:0 0 0 4px #b94a401a}.form-grid small,.address-autocomplete>small{color:var(--muted);font-size:.67rem;font-weight:450}.contribution-form__grid .field-error{color:#8d3931;font-size:.72rem;font-weight:700}.address-autocomplete{display:flex;flex-direction:column;gap:.45rem;position:relative}.address-autocomplete>label{display:block}.address-suggestions{background:#fff;border:1px solid #b9c7c1;border-radius:.65rem;box-shadow:0 14px 35px #12372d29;display:grid;left:0;max-height:260px;overflow-y:auto;position:absolute;right:0;top:calc(100% - 1rem);z-index:8}.address-suggestions>button{background:#fff;border:0;border-bottom:1px solid #edf0ee;color:var(--ink);cursor:pointer;display:grid;gap:.15rem;padding:.7rem .8rem;text-align:left}.address-suggestions>button:last-child{border-bottom:0}.address-suggestions>button:hover,.address-suggestions>button.is-active{background:#edf3ef}.address-suggestions>button small{color:var(--muted)}.address-suggestions__status{align-items:center;color:var(--muted);display:flex;font-size:.75rem;gap:.55rem;min-height:3.3rem;padding:.7rem .8rem}.address-suggestions__status .spinner{height:1rem;width:1rem}.form-error{background:#fff0ee;border-radius:.5rem;color:#8d3931;font-size:.82rem;margin:1rem 0;padding:.7rem .85rem}.validation-summary{background:#fff5f3;border:1px solid #e3aaa4;border-radius:.65rem;color:#7d302a;font-size:.8rem;margin:1rem 0;padding:.8rem 1rem}.validation-summary ul{margin:.45rem 0 0;padding-left:1.2rem}.validation-summary li+li{margin-top:.25rem}.login-page{align-items:center;background:radial-gradient(circle at 80% 10%,rgba(199,164,90,.17),transparent 35%),var(--cream);display:flex;justify-content:center;min-height:100vh;padding:5rem 1.5rem 2rem;position:relative}.login-page__brand{left:2rem;position:absolute;top:1.5rem}.login-card{animation:modalIn .55s cubic-bezier(.2,.85,.25,1.08) both;background:var(--paper);border:1px solid rgba(23,63,53,.1);border-radius:1.2rem;box-shadow:var(--shadow);max-width:430px;padding:2.6rem;width:100%}.login-card h1{font-size:2.65rem}.login-card form{margin-top:1.8rem}.login-card .button{margin-top:1rem}.back-link{color:var(--muted);display:block;font-size:.8rem;margin-top:1.6rem;text-align:center;text-decoration:none}.back-link:hover{color:var(--green-800)}.admin-page{background:#f3f5f2;display:grid;grid-template-columns:235px 1fr;min-height:100vh}.admin-sidebar{animation:sidebarIn .42s ease-out both;background:var(--green-950);display:flex;flex-direction:column;padding:1.6rem}.admin-sidebar nav{display:flex;flex-direction:column;gap:.35rem;margin-top:3rem}.admin-sidebar nav a,.admin-logout{border-radius:.55rem;color:#b8cbc4;font-size:.85rem;font-weight:650;padding:.75rem .85rem;text-align:left;text-decoration:none}.admin-sidebar nav a:hover,.admin-sidebar nav .admin-nav__active{background:#ffffff1a;color:#fff}.admin-logout{background:transparent;border:0;cursor:pointer;margin-top:auto}.admin-logout:hover{color:#fff}.admin-main{animation:contentIn .42s .08s ease-out both;min-width:0;padding:clamp(1.5rem,4vw,3.5rem)}.admin-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:2rem}.admin-header h1{font-size:2.8rem;margin-bottom:.5rem}.admin-header p:last-child{margin:0}.members-card{animation:contentIn .45s .16s ease-out both;background:#fff;border:1px solid #e0e6e2;border-radius:1rem;box-shadow:0 8px 28px #12372d0e;overflow:hidden}.submissions-card{background:#fff;border:1px solid #e0e6e2;border-radius:1rem;box-shadow:0 8px 28px #12372d0e;margin-bottom:1.5rem;overflow:hidden}.submissions-card__header{align-items:center;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;padding:1.25rem}.submissions-card__header h2{font-size:1.5rem;margin:0}.submission-count{align-items:center;background:var(--green-100);border-radius:999px;color:var(--green-800);display:inline-flex;font-size:.8rem;font-weight:800;height:2rem;justify-content:center;min-width:2rem;padding:0 .55rem}.submission-list{display:grid}.submission-item{align-items:start;display:grid;gap:1rem;grid-template-columns:auto minmax(0,1fr) auto;padding:1.25rem}.submission-item+.submission-item{border-top:1px solid var(--line)}.submission-item>.avatar{height:48px;width:48px}.submission-item__content h3{margin-bottom:.25rem}.submission-item__title{align-items:center;display:flex;flex-wrap:wrap;gap:.55rem}.submission-item__title>span{background:var(--green-100);border-radius:999px;color:var(--green-800);font-size:.62rem;font-weight:800;padding:.22rem .48rem}.submission-item__meta{color:var(--muted);font-size:.75rem;margin-bottom:1rem}.submission-changes{display:grid;gap:.65rem}.submission-change{background:#f8faf8;border:1px solid var(--line);border-radius:.7rem;padding:.7rem .8rem}.submission-change>strong{display:block;font-size:.68rem;margin-bottom:.5rem;text-transform:uppercase}.submission-change__values{align-items:center;display:grid;gap:.7rem;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.submission-change__values>span:not(.submission-change__arrow),.submission-photo-change>span:not(.submission-change__arrow){display:grid;gap:.18rem;min-width:0}.submission-change small{color:var(--muted);font-size:.58rem;font-weight:800;text-transform:uppercase}.submission-change del,.submission-change ins{overflow-wrap:anywhere;text-decoration:none;white-space:pre-wrap}.submission-change del{color:#7e625f}.submission-change ins{color:var(--green-800);font-weight:750}.submission-change__arrow{color:var(--muted);font-weight:800}.submission-photo-change{align-items:center;display:grid;gap:.7rem;grid-template-columns:auto auto auto;justify-content:start}.submission-photo-change .avatar,.submission-photo-change img{border-radius:50%;height:64px;object-fit:cover;width:64px}.submission-no-change{background:#fff6e6;border-radius:.6rem;color:#765b26;font-size:.75rem;margin:0;padding:.65rem .75rem}.submission-item__actions{display:flex;gap:.6rem}.submissions-empty{color:var(--muted);margin:0;padding:1.5rem 1.25rem}.members-toolbar{align-items:center;border-bottom:1px solid var(--line);color:var(--muted);display:flex;font-size:.78rem;justify-content:space-between;padding:1rem 1.25rem}.search-field{width:min(360px,70%)}.search-field input{background:#f7f9f7;min-height:2.55rem}.members-table-wrap{overflow-x:auto}.members-table{border-collapse:collapse;min-width:680px;width:100%}.members-table th{background:#fafbfa;color:var(--muted);font-size:.7rem;letter-spacing:.07em;padding:.8rem 1.25rem;text-align:left;text-transform:uppercase}.members-table td{border-top:1px solid #edf0ee;color:var(--muted);font-size:.82rem;padding:.8rem 1.25rem}.members-table tbody tr{animation:rowIn .35s ease-out both}.members-table tbody tr:nth-child(2){animation-delay:.04s}.members-table tbody tr:nth-child(3){animation-delay:.08s}.members-table tbody tr:nth-child(4){animation-delay:.12s}.members-table tbody tr:nth-child(n+5){animation-delay:.16s}.members-table tbody tr:hover{background:#f7faf8}.members-table th:last-child,.members-table td:last-child{text-align:right}.member-cell{align-items:center;color:var(--ink);display:flex;gap:.85rem;min-width:210px}.member-cell .avatar{height:42px;width:42px}.member-bio{max-width:370px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-empty{padding:3rem!important;text-align:center!important}.editor-overlay{align-items:stretch;justify-content:flex-end;padding:0}.editor-panel{animation:editorIn .4s cubic-bezier(.2,.8,.2,1) both;background:var(--paper);box-shadow:-20px 0 60px #06191440;max-width:680px;overflow-y:auto;padding:2rem;width:min(680px,100%)}.editor-panel__header{align-items:flex-start;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;margin-bottom:1.6rem;padding-bottom:1.3rem}.editor-panel__header h2{margin:0}.form-grid{display:grid;gap:1rem;grid-template-columns:1fr 1fr}.form-grid__wide{grid-column:1 / -1}.editor-panel fieldset{border:0;border-top:1px solid var(--line);margin:1.8rem 0 0;padding:1.5rem 0 0}.editor-panel legend{color:var(--ink);font-family:Georgia,Times New Roman,serif;font-size:1.2rem;padding-right:.8rem}.relations-grid{display:grid;gap:1rem;grid-template-columns:1fr 1fr}.person-search-field{align-content:start;background:#f8faf8;border:1px solid var(--line);border-radius:.75rem;display:grid;gap:.65rem;padding:.8rem}.person-search-field>label{font-family:Georgia,Times New Roman,serif;font-size:1rem}.person-search-field__input{position:relative}.person-search-results{background:#fff;border:1px solid #b9c7c1;border-radius:.6rem;box-shadow:0 12px 30px #12372d24;display:grid;left:0;max-height:240px;overflow-y:auto;position:absolute;right:0;top:calc(100% + .3rem);z-index:7}.person-search-results button{background:#fff;border:0;border-bottom:1px solid #edf0ee;cursor:pointer;display:grid;gap:.12rem;padding:.65rem .7rem;text-align:left}.person-search-results button:hover{background:#edf3ef}.person-search-results small{color:var(--muted);font-size:.67rem}.person-search-results p{color:var(--muted);font-size:.74rem;margin:0;padding:.8rem}.relation-selection{display:grid;gap:.35rem}.relation-selection>small{color:var(--muted);font-size:.64rem;font-weight:750;text-transform:uppercase}.relation-chip{align-items:center;background:#fff;border:1px solid #d6ded9;border-radius:.55rem;display:grid;gap:.4rem;grid-template-columns:minmax(0,1fr) auto auto;padding:.4rem .45rem .4rem .55rem}.relation-chip>span{display:grid;min-width:0}.relation-chip>span strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.relation-chip>span small{color:var(--muted);font-size:.62rem}.relation-chip em{background:var(--green-100);border-radius:999px;color:var(--green-800);font-size:.57rem;font-style:normal;font-weight:800;padding:.18rem .35rem}.relation-chip>button{align-items:center;background:transparent;border:0;border-radius:50%;color:var(--muted);cursor:pointer;display:flex;font-size:1rem;height:1.6rem;justify-content:center;width:1.6rem}.relation-chip>button:hover{background:#fff0ee;color:var(--danger)}.relation-selection--removed>button{background:#fff6f4;border:1px dashed #dbb9b4;border-radius:.45rem;color:var(--danger);cursor:pointer;font-size:.7rem;padding:.4rem;text-align:left}.relation-selection--removed>button:disabled{cursor:not-allowed;opacity:.55}.form-actions{align-items:center;border-top:1px solid var(--line);display:grid;gap:.7rem;grid-template-columns:auto 1fr auto auto;margin-top:1.6rem;padding-top:1.3rem}.family-map{background:#eef2ed;display:flex;flex-direction:column;height:100%;min-height:0}.family-map__header{align-items:center;background:#fffdf8f5;border-bottom:1px solid var(--line);display:grid;gap:1rem;grid-template-columns:auto 1fr auto;padding:.75rem 1rem;z-index:5}.family-map__header>div{text-align:center}.family-map__header .eyebrow{font-size:.58rem;margin-bottom:.12rem}.family-map__header h1{font-size:1.55rem;margin:0}.family-map__header>span{color:var(--muted);font-size:.72rem}.family-map__viewport{cursor:grab;flex:1;min-height:0;overflow:hidden;overscroll-behavior:none;position:relative;touch-action:none;-webkit-user-select:none;user-select:none}.family-map__viewport:active{cursor:grabbing}.family-map__tiles,.family-map__tiles img{position:absolute}.family-map__tiles{inset:0;pointer-events:none}.family-map__tiles img{max-width:none;-webkit-user-select:none;user-select:none}.family-map__controls{background:#fff;border:1px solid var(--line);border-radius:.65rem;box-shadow:0 5px 20px #12372d26;display:grid;overflow:hidden;position:absolute;right:1rem;top:1rem;z-index:4}.family-map__controls button{background:#fff;border:0;color:var(--green-800);cursor:pointer;font-size:1.35rem;font-weight:800;height:2.6rem;width:2.7rem}.family-map__controls button+button{border-top:1px solid var(--line)}.family-map__controls button:hover{background:#edf3ef}.family-map__partial,.family-map__tile-error{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffdf8e6;border:1px solid var(--line);border-radius:.55rem;color:var(--muted);font-size:.68rem;left:1rem;margin:0;padding:.5rem .65rem;position:absolute;top:1rem;z-index:3}.family-map__tile-error{background:#fff0eef0;border-color:#edcdc8;color:#87372f;max-width:300px;top:3.7rem}.family-map__attribution{background:#fffc;bottom:0;font-size:.6rem;margin:0;padding:.15rem .3rem;position:absolute;right:0;z-index:3}.family-map__empty{flex:1;margin:1rem;max-width:none}.map-marker{align-items:center;background:var(--green-800);border:3px solid #fff;border-radius:999px 999px 999px .25rem;box-shadow:0 5px 16px #06191452;cursor:pointer;display:flex;height:48px;justify-content:center;padding:2px;position:absolute;transform:translate(-50%,-100%) rotate(-45deg);width:48px;z-index:2}.map-marker:hover{transform:translate(-50%,-100%) rotate(-45deg) scale(1.08);z-index:3}.map-marker__avatars{display:flex;transform:rotate(45deg)}.map-marker .avatar{border:2px solid #fff;height:31px;width:31px}.map-marker--group{height:54px;width:54px}.map-marker--group .avatar{height:27px;width:27px}.map-marker--group .avatar+.avatar{margin-left:-10px}.map-marker>strong{align-items:center;background:var(--gold);border:2px solid #fff;border-radius:999px;color:var(--ink);display:flex;font-size:.62rem;height:22px;justify-content:center;min-width:22px;padding:0 .2rem;position:absolute;right:-9px;top:-8px;transform:rotate(45deg)}.household-panel{background:var(--paper);border:1px solid var(--line);border-radius:1rem;bottom:1rem;box-shadow:0 18px 55px #06191447;left:1rem;max-height:min(520px,calc(100% - 2rem));max-width:430px;overflow-y:auto;padding:1.2rem;position:absolute;width:calc(100% - 2rem);z-index:6}.household-panel__close{position:absolute;right:.7rem;top:.7rem}.household-panel h2{margin-bottom:.35rem}.household-panel>address{color:var(--muted);font-size:.75rem;font-style:normal;margin-bottom:1rem;white-space:pre-line}.household-panel__list{display:grid;gap:.5rem}.household-panel__list>button{align-items:center;background:#f8faf8;border:1px solid var(--line);border-radius:.7rem;color:var(--ink);cursor:pointer;display:grid;gap:.65rem;grid-template-columns:auto minmax(0,1fr) auto;padding:.6rem;text-align:left}.household-panel__list>button:hover{background:#edf3ef;border-color:#9eb2a9}.household-panel__list .avatar{height:42px;width:42px}.household-panel__list span{display:grid;min-width:0}.household-panel__list span strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.household-panel__list small{color:var(--muted);font-size:.66rem}.household-panel__list em{color:var(--green-700);font-size:.67rem;font-style:normal;font-weight:800}@keyframes canvasIn{0%{opacity:0}to{opacity:1}}@keyframes gridDrift{to{background-position:0 0,24px 24px}}@keyframes lineIn{0%{opacity:0}to{opacity:1}}@keyframes nodeIn{0%{opacity:0;transform:translate(var(--node-enter-x, 0),var(--node-enter-y, 16px)) rotate(var(--node-enter-rotation, 0)) scale(.9)}to{opacity:1;transform:translate(0) rotate(0) scale(1)}}@keyframes selectedGlow{0%,to{box-shadow:0 12px 34px #99752a33}50%{box-shadow:0 15px 42px #99752a66}}@keyframes floatingPanelIn{0%{opacity:0;transform:translateY(9px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes overlayIn{0%{background-color:#09201a00}to{background-color:#09201a94}}@keyframes modalIn{0%{opacity:0;transform:translateY(18px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes sidebarIn{0%{opacity:0;transform:translate(-18px)}to{opacity:1;transform:translate(0)}}@keyframes contentIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes rowIn{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}@keyframes editorIn{0%{opacity:0;transform:translate(45px)}to{opacity:1;transform:translate(0)}}@keyframes tutorialGuideIn{0%{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes tutorialTargetPulse{0%,to{outline-color:#c9a350b8;outline-offset:3px}50%{outline-color:#c9a350;outline-offset:7px}}@media(max-width:800px){.tree-toolbar{align-items:flex-end;flex-wrap:wrap;left:.7rem;max-width:none;right:.7rem;top:.7rem}.tree-search{flex:1 0 100%;min-width:0}.tree-toolbar>label{flex:1;min-width:100px}.modal-overlay{align-items:flex-end;padding:0}.tutorial-modal{border-radius:1.2rem 1.2rem 0 0;max-height:92vh;padding:2rem 1.4rem 1.5rem}.tutorial-guide{border-radius:1rem 1rem 0 0;bottom:0;max-width:none;right:0;width:100%}.person-modal{border-radius:1.4rem 1.4rem 0 0;max-height:89vh}.person-modal--tutorial,.contribution-modal.tutorial-target{padding-bottom:13rem}.person-modal__hero{align-items:flex-start;border-radius:1.4rem 1.4rem 0 0;flex-direction:column;gap:1rem;padding:2rem 1.4rem 1.5rem}.person-modal__hero .avatar--large{height:95px;width:95px}.person-modal__hero h2{padding-right:2.2rem}.person-modal__body{gap:1.5rem;grid-template-columns:1fr;padding:1.5rem 1.4rem 2rem}.person-modal__contribution{padding:1.3rem 1.4rem 2rem}.contribution-modal{border-radius:1.2rem 1.2rem 0 0;max-height:92vh;padding:1.8rem 1.4rem}.admin-page{display:block}.admin-sidebar{align-items:center;flex-direction:row;gap:1rem;padding:.8rem 1rem}.admin-sidebar nav{flex:1;flex-direction:row;margin:0}.admin-sidebar nav a{display:none}.admin-sidebar nav .admin-nav__active{display:block}.admin-logout{margin:0}.admin-main{padding:1.3rem 1rem}.admin-header{align-items:flex-start;gap:1rem}.admin-header h1{font-size:2rem}.admin-header .muted{display:none}.brand--light span:last-child{display:none}.family-map__header{grid-template-columns:auto 1fr}.family-map__header>span{display:none}}@media(max-width:560px){.tree-legend{display:none}.tree-controls{bottom:.7rem;right:.7rem}.login-card{padding:2rem 1.4rem}.login-page__brand{left:1rem;top:1rem}.form-grid,.relations-grid{grid-template-columns:1fr}.form-grid__wide{grid-column:auto}.editor-panel{padding:1.3rem 1rem}.form-actions{grid-template-columns:1fr 1fr}.form-actions span{display:none}.form-actions .button{width:100%}.admin-header{flex-direction:column}.admin-header .button{width:100%}.members-toolbar{align-items:flex-start;flex-direction:column;gap:.7rem}.search-field{width:100%}.contribution-form__actions{flex-direction:column-reverse}.contribution-form__actions .button{width:100%}.submission-item{grid-template-columns:40px minmax(0,1fr)}.submission-item>.avatar{height:40px;width:40px}.submission-item__actions{grid-column:1 / -1}.submission-item__actions .button{flex:1}.submission-change__values--multiline{align-items:start;grid-template-columns:1fr}.submission-change__values--multiline .submission-change__arrow{transform:rotate(90deg);width:min-content}.tree-toolbar .map-button{flex:1}.family-map__header{padding:.6rem .7rem}.family-map__header .button{min-height:2.35rem;padding:.5rem .7rem}.family-map__controls{right:.7rem;top:.7rem}.family-map__partial{left:.7rem;max-width:calc(100% - 4.5rem);top:.7rem}.family-map__tile-error{left:.7rem;top:3.5rem}.household-panel{border-radius:1rem 1rem 0 0;bottom:0;left:0;max-height:60%;max-width:none;width:100%}.household-panel__list>button{grid-template-columns:auto minmax(0,1fr)}.household-panel__list em{display:none}.tutorial-modal__actions{grid-template-columns:1fr}.tutorial-modal__actions .button--ghost{order:2}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.family-map__header.family-map__header--map{display:grid;grid-template-columns:52px minmax(0,1fr) minmax(220px,340px);align-items:center;gap:14px;padding:12px 18px;background:#fffdf8f7;border-bottom:1px solid var(--line);position:relative;z-index:8}.family-map__header.family-map__header--map>div{text-align:left}.family-map__title{grid-column:2;margin:0;text-align:center;justify-self:center;font-size:clamp(1.6rem,2.2vw,2.3rem);line-height:1}.family-map__header-tools{grid-column:3;width:100%;justify-self:end;min-width:0}.family-map__count{display:none}.family-map__back{grid-column:1;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;min-height:44px;padding:0;border:1px solid rgba(23,63,53,.14);border-radius:14px;background:linear-gradient(180deg,#fffdf8,#eef3ef);color:var(--green-800);box-shadow:0 8px 18px #12372d1a,inset 0 1px #ffffffe6;cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,background .16s ease}.family-map__back:hover{transform:translate(-2px);border-color:#173f3542;background:linear-gradient(180deg,#fff,#e9f1ec);box-shadow:0 12px 22px #12372d24,inset 0 1px #fffffff2}.family-map__back:active{transform:translate(-2px) scale(.97)}.family-map__back svg{width:20px;height:20px;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;fill:none}.family-map__search{width:100%;min-width:0}.family-map__search label{display:none}.family-map__search-row{display:flex;align-items:center;gap:6px;min-height:40px;padding:4px;border:1px solid rgba(36,88,72,.22);border-radius:999px;background:#fff;box-shadow:0 7px 18px #12372d14;transition:border-color .18s ease,box-shadow .18s ease}.family-map__search-row:focus-within{border-color:#24584885;box-shadow:0 8px 22px #12372d1f,0 0 0 4px #24584814}.family-map__search-row input{width:100%;min-width:0;height:30px;min-height:0;padding:0 12px;border:0;background:transparent;box-shadow:none;color:var(--ink);font:inherit;font-size:.95rem;outline:none}.family-map__search-row input:hover,.family-map__search-row input:focus{border:0;box-shadow:none}.family-map__search-row input::-webkit-search-decoration,.family-map__search-row input::-webkit-search-cancel-button,.family-map__search-row input::-webkit-search-results-button,.family-map__search-row input::-webkit-search-results-decoration{display:none;-webkit-appearance:none}.family-map__search-row button{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;min-height:28px;padding:0;border:0;border-radius:999px;background:var(--green-800);color:#fff;font-size:1rem;font-weight:800;line-height:1;cursor:pointer}.family-map__search-row button:hover{background:var(--green-950)}.family-map__viewport{position:relative;overflow:hidden}.family-map__tiles{position:absolute;inset:0;z-index:0;pointer-events:none}.family-map__tiles img{position:absolute;z-index:0;max-width:none;-webkit-user-select:none;user-select:none}.map-marker{z-index:10}.map-marker:hover{z-index:11}.family-map__controls{z-index:12}.household-panel{z-index:20}.family-map__partial,.family-map__tile-error,.family-map__attribution{z-index:13}.family-map__no-result{position:absolute;z-index:14;left:50%;top:50%;transform:translate(-50%,-50%);margin:0;padding:.7rem .95rem;border:1px solid rgba(23,63,53,.12);border-radius:999px;background:#fffdf8f0;color:var(--muted);font-size:.78rem;font-weight:750;box-shadow:0 16px 40px #12372d29;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}@media(max-width:760px){.family-map__header.family-map__header--map{grid-template-columns:52px 1fr 52px;row-gap:10px;padding:10px 12px}.family-map__title{grid-column:2;grid-row:1;justify-self:center;text-align:center}.family-map__header-tools{grid-column:1 / -1;grid-row:2;justify-self:stretch;width:100%}}@media(max-width:560px){.family-map__back{width:42px;height:42px;min-height:42px;border-radius:13px}.family-map__title{font-size:2rem}.family-map__search-row{min-height:38px}.family-map__search-row input{font-size:.92rem}}.image-crop-modal{width:min(94vw,520px);max-height:92vh;background:var(--surface,#fff);border-radius:24px;padding:20px;box-shadow:0 24px 80px #0f172a47;display:flex;flex-direction:column;gap:16px}.image-crop-modal__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.image-crop-modal__header h2{margin:0}.image-crop-modal__cropper{position:relative;width:100%;height:min(70vw,360px);min-height:280px;border-radius:20px;overflow:hidden;background:#111827}.image-crop-modal__zoom{display:grid;gap:8px;font-weight:700}.image-crop-modal__zoom input{width:100%}.contribution-form__photo-preview{display:flex;align-items:center;gap:14px;padding:12px;border:1px solid var(--border,#e5e7eb);border-radius:18px;background:var(--surface-muted,#f8fafc)}.contribution-form__photo-preview img{width:72px;height:72px;border-radius:999px;object-fit:cover;flex:none}.contribution-form__photo-preview div{display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-width:0}.contribution-form__photo-preview strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:640px){.image-crop-modal{width:100vw;height:100dvh;max-height:none;border-radius:0;padding:16px}.image-crop-modal__cropper{height:60dvh;min-height:320px;border-radius:18px}.contribution-form__photo-preview{align-items:flex-start}.contribution-form__photo-preview img{width:64px;height:64px}}
