*{box-sizing:border-box}body{min-height:100vh}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}a{ text-underline-offset:4px }img,svg{max-width:100%}.container{max-width:var(--container);margin-inline:auto;padding-inline:var(--gutter);width:100%}.site-header{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-block:24px;flex-wrap:wrap}.brand{display:flex;gap:12px;align-items:center;color:var(--forest);text-decoration:none;font:600 26px/1.1 var(--font-display);letter-spacing:-.01em}.mark{width:40px;height:40px;flex-shrink:0}.accent{fill:var(--copper)}.nav{display:flex;align-items:center;gap:28px}.nav a{color:var(--forest);text-decoration:none;display:inline-flex;align-items:center;min-height:44px}.nav a:hover{text-decoration:underline}.button,.outline,.text-button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 26px;border-radius:var(--radius-pill);font:700 16px/1.4 var(--font-body);text-decoration:none;border:1px solid transparent}.button{color:var(--paper);background:var(--copper)}.button:hover{color:var(--paper);background:var(--copper-deep)}.outline{color:var(--forest);border-color:var(--forest);background:transparent;padding-inline:18px}.text-button{background:transparent;color:var(--forest);padding-inline:8px}.outline:hover,.text-button:hover{color:var(--forest);text-decoration:underline}.hero,.two-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr));gap:48px;align-items:center}.hero{padding-block:56px 72px}.stack{display:flex;flex-direction:column;gap:16px}.hero-copy{display:flex;flex-direction:column;gap:24px}.lead{font:var(--text-lead);max-width:46ch}.actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.caption{font:var(--text-caption);color:var(--forest-muted)}.hero-prints{display:flex;gap:16px;padding-inline:8px;align-items:end}.print{flex:1;min-width:0;margin:0;background:var(--paper);padding:8px 8px 12px;border-radius:var(--radius-print);box-shadow:var(--shadow-print);font:500 16px/1.2 var(--font-display)}.print:first-child{transform:rotate(-3deg)}.print:nth-child(2){transform:translateY(-20px)}.print:last-child{transform:rotate(2deg)}.photo-placeholder{aspect-ratio:4/3;background:var(--moss);border-radius:2px}.print figcaption{padding-top:8px}.timeline{display:flex;justify-content:space-around;border-top:var(--border-strong);margin-top:28px}.timeline span{display:flex;align-items:center;flex-direction:column;font:var(--text-ui);letter-spacing:.06em;gap:8px}.timeline span:before{content:'';width:12px;height:12px;border-radius:50%;background:var(--copper);margin-top:-7px}.benefits{background:var(--paper);border-block:var(--border)}.benefits-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:40px;padding-block:64px}.benefit{display:flex;flex-direction:column;gap:14px}.benefit p{font:var(--text-body-sm)}.benefit svg{width:32px;height:32px}.connection{padding-block:72px}.connection-copy{display:flex;flex-direction:column;gap:24px}.photo-card{display:flex;align-items:center;gap:16px;padding:12px;background:var(--paper);border:var(--border);border-radius:10px;max-width:460px}.photo-card .photo-placeholder{width:104px;height:78px;flex-shrink:0}.photo-title{font:var(--text-title)}.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.chip{font:400 12px/1.4 var(--font-body);padding:4px 10px;border-radius:var(--radius-pill);background:var(--moss);color:var(--forest)}.chip.linked{background:var(--copper);color:var(--paper)}.tree{max-width:360px;width:100%;margin:auto}.tree-row{display:grid;grid-template-columns:1fr 40px 1fr;align-items:center}.tree-node{background:var(--paper);border:var(--border);border-radius:12px;padding:14px 8px;text-align:center;display:flex;flex-direction:column;gap:8px;align-items:center}.tree-node.selected{border:2px solid var(--copper)}.portrait{height:56px;width:56px;border-radius:50%;background:var(--moss)}.person-name{font:var(--text-name)}.partner-line{height:2px;background:var(--forest);position:relative}.partner-line:after{content:'';position:absolute;left:calc(50% - 1px);width:2px;height:134px;background:var(--forest)}.children{margin-top:56px;position:relative}.children:before{content:'';position:absolute;left:22%;right:22%;top:-24px;border-top:var(--border-strong)}.children .tree-node{position:relative}.children .tree-node:before{content:'';position:absolute;top:-25px;height:24px;left:calc(50% - 1px);border-left:var(--border-strong)}.children .tree-node:last-child{grid-column:3}.tree-key{display:flex;justify-content:center;align-items:center;gap:8px;margin-top:20px}.tree-key:before{content:'';width:14px;height:14px;border:2px solid var(--copper);border-radius:4px}.closing{background:var(--forest);color:var(--sage)}.closing-inner{padding-block:64px;display:flex;align-items:center;justify-content:space-between;gap:24px 48px;flex-wrap:wrap}.closing-copy{max-width:56ch;display:flex;flex-direction:column;gap:12px}.closing h2{font-size:40px}.closing p{color:var(--forest-on-dark);font-size:16px}.closing .button{background:var(--sage);color:var(--forest)}.closing :focus-visible{outline-color:var(--sage)}.footer{display:flex;gap:12px 24px;justify-content:space-between;align-items:center;flex-wrap:wrap;padding-block:32px;font:var(--text-caption);color:var(--forest-muted)}.footer-brand{font:600 20px/1.2 var(--font-display);color:var(--forest)}.skip{position:absolute;left:16px;top:-100px;padding:12px;background:var(--paper);z-index:10}.skip:focus{top:8px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.auth-panel{max-width:560px;padding-block:64px;display:flex;flex-direction:column;gap:24px;min-height:65vh}.auth-panel h1{font:var(--text-h2)}.eyebrow{font:var(--text-eyebrow);text-transform:uppercase;letter-spacing:.14em;color:var(--forest-muted)}input,select{width:100%;min-height:48px;padding:12px 14px;background:var(--paper);border:1px solid var(--forest-muted);border-radius:var(--radius-sm);color:var(--forest);font-size:16px}label{font:var(--text-ui)}.notice{padding:16px;background:var(--paper);border-left:3px solid var(--copper);border-radius:6px}.page{padding-block:48px 64px;min-height:70vh}.page>h1{margin:12px 0 32px}.panel{padding:24px;border:var(--border);border-radius:12px;background:var(--paper);text-decoration:none;color:var(--forest);overflow-wrap:anywhere}.panel h2{font:var(--text-h3)}.panel p{margin-block:12px}.panel form{margin-top:24px}.cards{display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr))}.family-nav{display:flex;gap:16px;align-items:center;flex-wrap:wrap;width:100%;border-top:var(--border);padding-top:16px}.family-nav a{min-height:44px;display:flex;align-items:center;color:var(--forest);font-size:15px}.family-nav form{margin-left:auto}.empty-state{max-width:600px;margin:64px auto;display:flex;align-items:center;flex-direction:column;gap:24px;text-align:center}.empty-state .mark{width:80px;height:80px}.member-list{display:flex;flex-direction:column;gap:16px}.page .two-columns{align-items:start}.member-actions{display:flex;gap:12px;flex-wrap:wrap}.member-actions select{flex:1;min-width:150px}.activity{padding-top:48px}.activity p{padding-block:12px;border-bottom:var(--border)}.activity span{display:block}.cf-turnstile{min-height:65px;max-width:100%}@media(max-width:640px){.site-header{gap:12px}.site-header .brand{font-size:22px;gap:8px}.site-header .mark{width:32px;height:32px}.nav{width:100%;justify-content:space-between;gap:16px;order:3}.site-header>.outline{padding-inline:14px;font-size:14px}.hero{padding-block:40px 56px;gap:56px}.hero-prints{gap:8px}.closing h2{font-size:32px}.photo-card{flex-direction:column;align-items:stretch}.photo-card .photo-placeholder{width:100%;height:auto}.auth-panel{padding-block:40px}.tree{max-width:328px}.tree-row{grid-template-columns:1fr 32px 1fr}.two-columns{gap:32px}.family-nav{gap:12px}.family-nav form{margin-left:0}.footer{justify-content:flex-start}.panel{padding:16px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.tree{--tree-gap:40px}.tree-row{grid-template-columns:1fr var(--tree-gap) 1fr}.tree>.tree-row:first-child{position:relative}.tree>.tree-row:first-child:after{content:'';position:absolute;left:calc(50% - 1px);top:50%;height:calc(50% + 32px);width:2px;background:var(--forest);z-index:-1}.tree{isolation:isolate}.partner-line:after{display:none}.children:before{left:calc((100% - var(--tree-gap))/4);right:calc((100% - var(--tree-gap))/4)}@media(max-width:640px){.tree{--tree-gap:32px}}
.tree-heading{justify-content:space-between;margin-bottom:32px}.tree-heading h1{margin-right:auto}.tree-form{max-width:620px;margin-block:24px}.tree-search{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin-block:24px}.tree-search label{width:100%}.tree-search input{flex:1;min-width:180px}.tree-person{display:flex;flex-direction:column;gap:12px;align-items:flex-start;transition:box-shadow var(--ease),transform var(--ease)}.tree-person:hover{box-shadow:var(--shadow-card);transform:translateY(-2px)}.tree-person h2{font:var(--text-h3)}.tree-person p{margin:0}.tree-pending{margin-top:48px;display:flex;flex-direction:column;gap:16px}.pending-change{background:color-mix(in srgb,var(--paper) 65%,var(--moss));border-style:dashed}.pending-change h3{margin-block:12px}.person-profile{padding-block:24px 40px;display:flex;flex-direction:column;gap:16px}.person-profile .outline{align-self:start}.biography{white-space:pre-wrap;max-width:65ch}.relative-group{padding-block:24px}.relative-group h3{margin-bottom:16px}.relative-group .cards{margin-block:16px}textarea{width:100%;padding:12px 14px;background:var(--paper);color:var(--forest);border:1px solid var(--forest-muted);border-radius:6px;font:var(--text-body);resize:vertical}summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font:var(--text-title)}
.activity-log{display:grid;gap:1rem;margin:2rem 0}.activity-log pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.875rem}.activity-log h2{font-size:1.6rem}.activity-log p{overflow-wrap:anywhere}
.photo-library{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(240px,100%),1fr));gap:28px;margin:32px 0}.library-print{display:block;min-width:0;padding:12px 12px 20px;background:var(--paper);border:var(--border);border-radius:6px;text-decoration:none;color:var(--forest);box-shadow:var(--shadow-card);overflow:hidden}.library-print img{display:block;width:100%;height:230px;object-fit:contain;background:var(--sage)}.library-print>div{padding:16px 8px 0}.library-print h2{font:var(--text-title);overflow-wrap:anywhere}.library-print p{margin-top:8px}.photo-zoom{display:flex;align-items:center;justify-content:center;min-height:260px;overflow:hidden;margin:32px 0;background:var(--sage)}.photo-zoom img{max-width:100%;max-height:75vh;width:auto;height:auto;object-fit:contain}.photo-turn-90{transform:rotate(90deg);scale:.75}.photo-turn-180{transform:rotate(180deg)}.photo-turn-270{transform:rotate(270deg);scale:.75}.photo-details{display:grid;gap:12px;margin-block:24px}.photo-date{font:var(--text-title)}.photo-form{max-width:680px;margin-block:32px}.photo-drop{margin-block:28px;border-style:dashed}.photo-drop label{display:block;font:var(--text-h3);margin-bottom:24px}.photo-drop.dragging{border-color:var(--copper);background:var(--moss)}.photo-drop input{padding:12px;max-width:100%}#photo-progress{display:grid;gap:16px;margin-top:24px}.adding-photo h3{overflow-wrap:anywhere}.adding-photo progress{width:100%;accent-color:var(--forest);height:20px;margin-bottom:16px}.adding-photo a{margin-left:8px}.removed-print{height:120px;background:var(--moss)}.revision-text{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px}button[hidden]{display:none}@media(max-width:540px){.photo-library{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.library-print{padding:8px}.library-print img{height:150px}.library-print>div{padding:12px 0}.library-print h2{font-size:18px}.library-print p{font-size:13px}.photo-zoom{min-height:180px}.photo-drop{padding:16px}}
.collection-tabs{display:flex;gap:24px;margin-block:16px 28px;border-bottom:var(--border);flex-wrap:wrap}.collection-tabs a{display:inline-flex;align-items:center;min-height:48px;color:var(--forest)}.collection-tabs [aria-current=page]{border-bottom:3px solid var(--copper);font-weight:700}.archive-filters{margin-block:24px}.filter-grid{display:grid;grid-template-columns:1fr;gap:12px;max-width:750px}.filter-grid>div{display:grid;gap:8px}.archive-timeline{border-left:2px solid var(--rule);padding-left:28px;margin-top:40px}.timeline-year{position:relative;margin-bottom:48px}.timeline-year>h2:before{content:'';position:absolute;width:12px;height:12px;border-radius:50%;left:-35px;top:18px;background:var(--forest)}.timeline-year>h2{font:var(--text-h2)}.archive-map{height:540px;max-height:70vh;width:100%;margin:24px 0;border:var(--border);border-radius:12px;z-index:0;background:var(--moss)}.archive-map .leaflet-tile-pane{filter:saturate(.45)}.archive-map .leaflet-bar a{width:44px;height:44px;line-height:44px;background:var(--paper);color:var(--forest)}.archive-map .leaflet-control-attribution{background:var(--paper);color:var(--forest-muted)}.archive-map .leaflet-popup-content-wrapper,.archive-map .leaflet-popup-tip{background:var(--paper);color:var(--forest)}.archive-map .leaflet-popup-content img{display:block;max-width:160px;margin-bottom:8px}.archive-map .leaflet-popup-content a{color:var(--forest);font-family:var(--font-body)}.archive-pin span{display:block;border-radius:50%;width:20px;height:20px;background:var(--forest);border:3px solid var(--paper);box-shadow:var(--shadow-card)}.archive-pin.selected span{background:var(--copper)}.archive-cluster{border-radius:50%;background:var(--forest);border:3px solid var(--paper);color:var(--paper);display:flex;justify-content:center;align-items:center;font:var(--text-ui)}.map-photo-list{display:grid;gap:12px;margin-block:16px}.map-photo-list a{min-height:44px}.checkbox-label{display:flex;align-items:center;gap:12px}.checkbox-label input{width:24px;min-height:24px}.photo-stage{position:relative;display:inline-block;line-height:0;max-width:100%;max-height:75vh}.photo-stage img{display:block;max-width:100%;max-height:75vh;width:auto;height:auto}.photo-stage:focus-visible{outline:3px solid var(--copper)}.face-box{position:absolute;border:2px solid var(--forest);border-radius:8px;min-width:20px;min-height:20px;line-height:1.2;box-sizing:border-box;background:transparent;z-index:2}.face-box span{position:absolute;top:100%;left:0;background:var(--paper);color:var(--forest);padding:4px 8px;font:var(--text-caption);white-space:nowrap;opacity:0;pointer-events:none}.face-box:hover span,.face-box:focus span{opacity:1}.face-selection{border:3px dashed var(--copper);pointer-events:none}.selecting-face{cursor:crosshair}.photo-connections{margin-block:48px}.named-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:16px;margin:24px 0}.tag-chip h3{font:var(--text-h3)}.tag-chip .actions{gap:16px}.tag-chip .actions a{min-height:44px;display:inline-flex;align-items:center}.conversation{display:flex;flex-direction:column;gap:20px;margin-top:48px}.comment-actions{display:flex;flex-wrap:wrap;gap:16px}.comment-actions details{flex:1;min-width:200px}.comment p{white-space:pre-wrap}.conversation textarea{min-height:100px}.photo-connections input[type=range]{padding:0;accent-color:var(--forest)}@media(max-width:540px){.archive-timeline{padding-left:18px}.timeline-year>h2:before{left:-25px}.archive-timeline .photo-library{grid-template-columns:1fr}.archive-timeline .library-print img{height:220px}.archive-map{height:420px}.collection-tabs{gap:18px}.comment-actions details{min-width:100%}.face-box span{font-size:11px}}
.place-results{display:grid;gap:8px;max-height:300px;overflow:auto}.place-results button{text-align:left;justify-content:flex-start}
.archive-map .leaflet-popup-content img{max-height:100px;object-fit:contain}.active-filter{font:var(--text-title);margin-block:16px}
.tree-diagram{margin:2rem 0}.tree-diagram svg{display:block;width:100%;height:520px;touch-action:none;background:var(--paper);border-radius:8px}.tree-edge,.tree-partner{fill:none;stroke:var(--forest-muted);stroke-width:2}.tree-partner{stroke:var(--copper);stroke-dasharray:7 5}.tree-node{fill:var(--paper);stroke:var(--forest-muted);stroke-width:2}.tree-focus{fill:var(--moss);stroke:var(--forest);stroke-width:3}.tree-diagram text{fill:var(--forest);font-family:Lato,sans-serif;font-size:15px}.tree-diagram a:focus .tree-node{stroke:var(--copper);stroke-width:5}.profile-portrait{width:160px;height:160px;object-fit:cover;border-radius:50%}.bulk-selection{display:flex;gap:.5rem;align-items:center;padding:.7rem}.bulk-selection input{width:20px;height:20px}.bulk-panel{margin:1rem 0}.life-events{padding-left:1.3rem}.life-events li{margin-bottom:1rem}@media(max-width:600px){.tree-diagram svg{height:360px}.tree-diagram{padding:1rem}}

.connection-path{padding:2rem;line-height:2.5}.tree-person img.portrait{object-fit:cover}.import-report{overflow-wrap:anywhere}

/* Photograph review and individual life-event fields */
.event-row{border:var(--border);padding:1rem;margin:1rem 0}.event-row legend{padding:0 .4rem}.crop-preview{background:var(--moss);max-width:50rem;margin:1.5rem auto}.crop-preview img{display:block;width:100%;height:auto}.compare-photos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem}.compare-photos img{width:100%;height:auto;max-height:65vh;object-fit:contain}.cropped-stage img{display:block;max-width:100%;max-height:75vh;width:auto;height:auto;margin:auto}.panel dd{margin:0 0 .8rem}.panel dt{font-weight:bold}@media(max-width:700px){.compare-photos{grid-template-columns:1fr}}

.event-photo img{display:block;width:100%;height:16rem;object-fit:contain;margin-bottom:var(--space-4)}

.events-page>h1{margin-top:var(--space-5);margin-bottom:var(--space-5)}.events-page>h2{margin-top:var(--space-6);margin-bottom:var(--space-5)}.events-page>p{margin-bottom:var(--space-3)}.events-page>.photo-library{margin-bottom:var(--space-5)}

/* Fixed card sizes keep collection rows aligned despite differing metadata. */
.library-print{height:470px;display:flex;flex-direction:column}
.library-print img,.library-print .removed-print{flex-shrink:0}
.library-print>div:not(.removed-print){min-height:0;overflow:hidden}
.library-print h2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:1.2;min-height:2.4em;max-height:2.4em;overflow:hidden}
.library-print>div>p:first-of-type{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.library-print .caption{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;overflow-wrap:anywhere}
@media(max-width:540px){.library-print{height:380px}.archive-timeline .library-print{height:450px}}
