.acm-search-box,.acm-memorial{max-width:850px;margin:30px auto;padding:25px;background:#fff;border:1px solid #ddd;border-radius:10px;box-sizing:border-box}.acm-search-row{display:flex;gap:10px;margin-top:10px}.acm-search-row input{flex:1;padding:12px;border:1px solid #bbb;border-radius:5px}.acm-search-row button{padding:12px 20px;border:0;border-radius:5px;cursor:pointer}.acm-result{padding:15px 0;border-bottom:1px solid #eee}.acm-result h3{margin:0 0 5px}.acm-memorial header{text-align:center;border-bottom:1px solid #eee;padding-bottom:20px}.acm-memorial h1{margin-bottom:8px}.acm-dates{font-size:18px}.acm-location{color:#666}.acm-memorial section{margin:25px 0}.acm-memorial footer{border-top:1px solid #eee;padding-top:15px;color:#777}.acm-message{padding:20px;border:1px solid #ddd;border-radius:8px}
.acm-public-main-photo{text-align:center;margin-bottom:20px}.acm-public-main-photo img{max-width:100%;height:auto;border-radius:8px}.acm-public-gallery{margin-top:30px}.acm-public-photo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:15px}.acm-public-photo-grid figure{margin:0}.acm-public-photo-grid img{width:100%;height:auto;border-radius:6px}.acm-public-photo-grid figcaption{font-size:14px;margin-top:5px;color:#666}

.acm-location-detail{font-weight:600;color:#555}

.acm-locate-button{display:inline-block;padding:9px 14px;border-radius:6px;text-decoration:none;font-weight:600}

.acm-map-wrapper{max-width:1100px;margin:30px auto}.acm-map-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.acm-map-toolbar input{flex:1;min-width:220px;padding:10px;border:1px solid #bbb;border-radius:5px}.acm-map-toolbar button{padding:10px 14px;border:0;border-radius:5px;cursor:pointer}.acm-map-status{font-size:14px;color:#666;margin:8px 0}.acm-map-canvas{width:100%;height:550px;border:1px solid #ddd;border-radius:10px;overflow:hidden}.acm-map-note{font-size:13px;color:#777}@media(max-width:600px){.acm-map-canvas{height:420px}}

.acm-map-controls{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) minmax(220px,2fr) auto;gap:10px;align-items:end;margin-bottom:10px}.acm-map-control{display:flex;flex-direction:column;gap:5px}.acm-map-control select,.acm-map-control input{padding:10px;border:1px solid #bbb;border-radius:5px}.acm-map-buttons{display:flex;gap:6px}.acm-map-buttons button{padding:10px 14px;border:0;border-radius:5px;cursor:pointer}.acm-popup-locate{margin-top:6px;padding:5px 8px;cursor:pointer}@media(max-width:800px){.acm-map-controls{grid-template-columns:1fr 1fr}.acm-map-search-control{grid-column:1/-1}.acm-map-buttons{grid-column:1/-1}}@media(max-width:500px){.acm-map-controls{grid-template-columns:1fr}.acm-map-search-control,.acm-map-buttons{grid-column:auto}.acm-map-buttons button{flex:1}}

.acm-person-finder{max-width:900px;margin:30px auto}.acm-finder-header{text-align:center;margin-bottom:20px}.acm-finder-header h2{margin-bottom:5px}.acm-finder-header p{color:#666}.acm-person-search{display:flex;gap:8px;margin-bottom:18px}.acm-person-search input{flex:1;padding:13px;border:1px solid #bbb;border-radius:6px;font-size:16px}.acm-person-search button{padding:13px 18px;border:0;border-radius:6px;cursor:pointer;font-weight:600}.acm-finder-summary{padding:12px 0;color:#666}.acm-person-result{display:flex;justify-content:space-between;gap:20px;border:1px solid #ddd;border-radius:9px;padding:18px;margin:12px 0;background:#fff}.acm-person-result h3{margin:0 0 5px}.acm-person-dates{margin:0 0 8px}.acm-person-location{margin:0;color:#555;line-height:1.5}.acm-person-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.acm-action-button{display:inline-block;padding:9px 13px;border-radius:6px;text-decoration:none;font-weight:600}.acm-action-secondary{border:1px solid #bbb}@media(max-width:650px){.acm-person-result{display:block}.acm-person-actions{justify-content:flex-start;margin-top:15px}.acm-person-search{display:grid;grid-template-columns:1fr}.acm-person-search button{width:100%}}

.acm-standalone-memorial{max-width:900px;margin:40px auto;padding:0 20px}.acm-polished-memorial{background:#fff;border:1px solid #ddd;border-radius:12px;padding:30px}.acm-memorial-header{text-align:center;border-bottom:1px solid #eee;padding-bottom:25px;margin-bottom:25px}.acm-memorial-kicker{text-transform:uppercase;letter-spacing:2px;font-size:12px;color:#777}.acm-memorial-header h1{font-size:38px;margin:8px 0}.acm-dates{font-size:18px;color:#666}.acm-memorial-location{background:#f7f7f7;border-radius:8px;padding:18px}.acm-polished-memorial section{margin:28px 0}.acm-share{border-top:1px solid #eee;padding-top:20px}.acm-share input{width:100%;box-sizing:border-box;padding:10px;margin-bottom:10px}.acm-share-buttons{display:flex;gap:8px;flex-wrap:wrap}.acm-share-buttons a,.acm-share-buttons button{padding:9px 13px;border-radius:6px;text-decoration:none;border:1px solid #bbb;background:#fff;cursor:pointer}

.acm-qr-section{text-align:center;background:#fafafa;border-radius:10px;padding:20px}.acm-qr{display:inline-block;text-align:center}.acm-qr img{max-width:100%;height:auto}.acm-qr-url{font-size:12px;color:#777;word-break:break-all;max-width:420px}

.acm-qr-message{padding:12px 15px;background:#f7f7f7;border:1px solid #ddd;border-radius:6px;margin:10px 0}

.acm-family-list{display:grid;gap:8px}.acm-family-item{display:flex;gap:10px;align-items:center;padding:10px 12px;background:#f7f7f7;border-radius:6px}.acm-family-relation{min-width:110px;font-weight:600;color:#666}.acm-family-item a{font-weight:600;text-decoration:none}

.acm-family-tree{margin:20px 0}.acm-family-tree-title{text-align:center;font-size:24px;font-weight:700;margin-bottom:8px}.acm-family-tree-note{text-align:center;color:#666;font-size:13px;margin:0 auto 18px;max-width:720px}.acm-family-generation{margin:16px 0}.acm-family-generation h3{text-align:center;font-size:16px;margin:0 0 8px}.acm-family-tree-root{display:flex;justify-content:center;margin:16px 0}.acm-family-tree-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;border-top:1px solid #ddd;padding-top:14px}.acm-family-card{min-width:150px;max-width:230px;padding:13px 15px;text-align:center;background:#f7f7f7;border:1px solid #ddd;border-radius:9px;box-sizing:border-box;box-shadow:0 1px 2px rgba(0,0,0,.04)}.acm-family-card-root{background:#fff;border:2px solid #777;min-width:190px}.acm-family-card a{font-weight:700;text-decoration:none}.acm-family-relation{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:#777;margin-bottom:5px}.acm-family-grave{font-size:11px;color:#777;margin-top:7px;line-height:1.45}.acm-family-tree-empty{text-align:center;color:#777;padding:15px;background:#f7f7f7;border-radius:8px}.acm-family-ancestors .acm-family-tree-grid{border-top:0;border-bottom:1px solid #ddd;padding-top:0;padding-bottom:14px}.acm-family-spouse .acm-family-tree-grid,.acm-family-children .acm-family-tree-grid,.acm-family-descendants .acm-family-tree-grid{border-top:0}@media(max-width:600px){.acm-family-tree-grid{display:grid;grid-template-columns:1fr 1fr}.acm-family-card{min-width:0;max-width:none}.acm-family-card-root{min-width:0}}

.acm-family-cemetery{font-size:12px;color:#666;margin-top:7px}.acm-family-grave{font-size:11px;color:#888;margin-top:3px}

.acm-cemetery-directory{margin:20px 0}.acm-cemetery-directory-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.acm-cemetery-card{display:block;padding:18px;background:#f7f7f7;border:1px solid #ddd;border-radius:10px;text-decoration:none;color:inherit}.acm-cemetery-card h3{margin-top:0}.acm-cemetery-stats{display:grid;gap:5px;color:#666}.acm-cemetery-detail-stats{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin:20px 0}.acm-cemetery-detail-stats>div{padding:15px;text-align:center;background:#f7f7f7;border-radius:8px}.acm-cemetery-detail-stats strong{display:block;font-size:24px}.acm-cemetery-detail-stats span{font-size:12px;color:#666}.acm-directory-section{margin-top:25px}.acm-section-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.acm-section-card{display:flex;flex-direction:column;padding:14px;border:1px solid #ddd;border-radius:8px}.acm-section-card span{font-size:12px;color:#666;margin-top:4px}.acm-directory-people{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.acm-directory-person{display:flex;flex-direction:column;padding:13px;border:1px solid #ddd;border-radius:8px;text-decoration:none}.acm-directory-person span,.acm-directory-person small{color:#666;margin-top:3px}@media(max-width:900px){.acm-cemetery-detail-stats{grid-template-columns:repeat(3,1fr)}.acm-section-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.acm-cemetery-directory-grid,.acm-directory-people{grid-template-columns:1fr}.acm-cemetery-detail-stats{grid-template-columns:repeat(2,1fr)}.acm-section-grid{grid-template-columns:1fr}}

.acm-search-form{display:flex;flex-wrap:wrap;gap:8px;margin:15px 0}.acm-search-form input[type=search]{flex:1;min-width:220px;padding:9px}.acm-search-form select{padding:8px}.acm-search-button{padding:8px 16px!important}.acm-search-reset{align-self:center}.acm-search-count{color:#666}.acm-search-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.acm-search-result-card{display:flex;flex-direction:column;gap:4px;padding:14px;border:1px solid #ddd;border-radius:8px;text-decoration:none}.acm-search-result-card span,.acm-search-result-card small{color:#666}.acm-no-results{padding:20px;background:#f7f7f7;border-radius:8px}@media(max-width:650px){.acm-search-results{grid-template-columns:1fr}}

.acm-result-actions{display:flex;gap:10px;margin-top:8px;flex-wrap:wrap}.acm-result-link,.acm-result-map-link{font-size:13px;font-weight:600}.acm-focused-grave-map{margin:20px 0}.acm-focused-grave-info{padding:15px;background:#f7f7f7;border:1px solid #ddd;border-radius:8px;margin-bottom:12px}.acm-focused-grave-info h2{margin-top:0}.acm-focused-map{height:480px;border-radius:8px;overflow:hidden;border:1px solid #ddd}

.acm-grave-actions{display:flex;gap:8px;flex-wrap:wrap}.acm-result-actions{align-items:center}.acm-result-directions-link{font-size:13px;font-weight:600}

.acm-share-box{margin:20px 0;padding:15px;background:#f7f7f7;border:1px solid #ddd;border-radius:8px}.acm-share-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.acm-share-actions a,.acm-share-actions button{display:inline-block;padding:8px 12px;border:1px solid #ccc;border-radius:6px;background:#fff;text-decoration:none;cursor:pointer;font-size:13px}.acm-copy-status{display:block;margin-top:8px;color:#666;font-size:12px}@media print{.acm-share-box{display:none}}

.acm-life-timeline{margin:25px 0}.acm-timeline-list{border-left:3px solid #ddd;margin-left:12px;padding-left:20px}.acm-timeline-event{position:relative;margin:0 0 18px}.acm-timeline-event:before{content:'';position:absolute;left:-28px;top:4px;width:11px;height:11px;border-radius:50%;background:#fff;border:2px solid #777}.acm-timeline-date{font-size:12px;color:#777;margin-bottom:3px}.acm-timeline-content{padding:12px 15px;background:#f7f7f7;border-radius:8px}.acm-timeline-content p{margin-bottom:0;margin-top:6px}

.acm-memorial-media{margin:25px 0}.acm-media-item{padding:15px;margin:12px 0;background:#f7f7f7;border:1px solid #ddd;border-radius:8px}.acm-media-item h3{margin-top:0}.acm-media-item audio{width:100%;max-width:600px}.acm-media-button,.acm-media-link{display:inline-block;padding:8px 12px;border:1px solid #ccc;border-radius:6px;text-decoration:none;background:#fff;font-weight:600}

.acm-memorial-biography{margin:25px 0}.acm-biography-content{padding:18px;background:#f7f7f7;border:1px solid #ddd;border-radius:8px;line-height:1.7}.acm-biography-content p:first-child{margin-top:0}.acm-biography-content p:last-child{margin-bottom:0}

.acm-guestbook{margin:25px 0}.acm-guestbook-entry{padding:15px;margin:10px 0;background:#f7f7f7;border:1px solid #ddd;border-radius:8px}.acm-guestbook-form{padding:18px;border:1px solid #ddd;border-radius:8px}.acm-guestbook-form input,.acm-guestbook-form textarea{width:100%;max-width:650px;padding:8px;box-sizing:border-box}.acm-guestbook-form button{padding:9px 15px;cursor:pointer}.acm-guestbook-success{padding:10px;margin-bottom:10px;background:#f0f7f0}.acm-guestbook-error{padding:10px;margin-bottom:10px;background:#fff4f4}

.acm-support-box{margin:25px 0;padding:20px;text-align:center;background:#f7f7f7;border:1px solid #ddd;border-radius:10px}.acm-support-box h2{margin-top:0}.acm-support-button{display:inline-block;padding:10px 18px;border-radius:6px;text-decoration:none;font-weight:600;border:1px solid #ccc;background:#fff}

.acm-support-missing{font-size:13px;color:#777}

.acm-favorite-control{margin:15px 0}.acm-favorite-button{padding:9px 14px;border:1px solid #ccc;border-radius:7px;background:#fff;cursor:pointer;font-weight:600}.acm-favorite-status{margin-left:8px;font-size:12px;color:#666}.acm-saved-memorials{margin:20px 0}.acm-saved-items{display:grid;gap:8px}.acm-saved-item{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px;border:1px solid #ddd;border-radius:8px}.acm-saved-item a{font-weight:600}.acm-saved-item button{border:0;background:none;text-decoration:underline;cursor:pointer}

.acm-qr-landing{max-width:760px;margin:25px auto;text-align:center}.acm-qr-hero{padding:30px 20px;border-radius:14px;background:#f7f7f7;border:1px solid #ddd}.acm-qr-symbol{font-size:38px}.acm-qr-kicker{font-size:13px;letter-spacing:2px;text-transform:uppercase;color:#777;margin-top:5px}.acm-qr-hero h1{margin:8px 0;font-size:clamp(28px,6vw,44px)}.acm-qr-years{font-size:18px;color:#666}.acm-qr-tagline{font-style:italic;margin-bottom:0}.acm-qr-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:18px 0}.acm-qr-actions a{padding:14px 10px;border:1px solid #ddd;border-radius:9px;text-decoration:none;background:#fff;font-weight:600}.acm-qr-note{padding:15px;border-radius:9px;background:#fafafa;border:1px solid #eee}.acm-qr-note p{margin:0}@media(max-width:520px){.acm-qr-actions{grid-template-columns:1fr}}

.acm-qr-actions a{min-height:46px;display:flex;align-items:center;justify-content:center;box-sizing:border-box}.acm-qr-actions a:active{transform:scale(.99)}

.acm-cemetery-page{max-width:900px;margin:25px auto}.acm-cemetery-photo img{display:block;width:100%;max-height:380px;object-fit:cover;border-radius:12px}.acm-cemetery-header{padding:20px 0}.acm-cemetery-kicker{text-transform:uppercase;letter-spacing:2px;font-size:12px;color:#777}.acm-cemetery-header h1{margin:5px 0 8px}.acm-cemetery-location{color:#666}.acm-cemetery-description{line-height:1.75;margin:15px 0 25px}.acm-cemetery-actions{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0}.acm-cemetery-actions a{padding:11px 15px;border:1px solid #ddd;border-radius:8px;text-decoration:none;background:#fff;font-weight:600}

.acm-headstone-scanner{max-width:760px;margin:25px auto}.acm-scanner-card{padding:24px;border:1px solid #ddd;border-radius:12px;background:#fff;text-align:center}.acm-scanner-icon{font-size:42px}.acm-scanner-upload{display:inline-block;padding:13px 18px;border:1px solid #ccc;border-radius:8px;cursor:pointer;font-weight:600;margin:10px 0}.acm-scanner-upload input{display:none}.acm-scanner-preview{margin:15px auto;max-width:600px}.acm-scanner-preview img{max-width:100%;max-height:450px;border-radius:8px}.acm-scanner-progress{margin:15px 0}.acm-scanner-bar{height:8px;background:#eee;border-radius:8px;overflow:hidden}.acm-scanner-bar span{display:block;height:100%;width:0;background:#666}.acm-scanner-text{text-align:left;margin-top:18px}.acm-scanner-text textarea{width:100%;box-sizing:border-box}.acm-scanner-search{margin-top:8px;padding:10px 15px;border:1px solid #bbb;border-radius:7px;cursor:pointer;font-weight:600}.acm-scanner-results{text-align:left;margin-top:20px}.acm-headstone-result{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:13px;border:1px solid #ddd;border-radius:8px;margin:8px 0}.acm-result-years{color:#777;margin-top:3px}.acm-result-confidence{font-size:12px;margin-top:5px;font-weight:600}.acm-result-button{padding:8px 12px;border:1px solid #ccc;border-radius:6px;text-decoration:none;white-space:nowrap}.acm-scanner-error{color:#a00}.acm-scanner-note{font-size:12px;color:#777;margin-top:18px}

.acm-detected-info{margin:15px 0;padding:14px;text-align:left;border:1px solid #ddd;border-radius:8px;background:#f7f7f7}.acm-detected-info h3{margin-top:0}.acm-detected-info p{margin:6px 0}

.acm-scanner-cemetery select{min-width:260px;padding:8px}.acm-person-candidate{display:flex;gap:12px;align-items:flex-start;padding:12px;margin:10px 0;border:1px solid #ddd;border-radius:8px;text-align:left}.acm-candidate-check{min-width:55px}.acm-candidate-fields{display:grid;grid-template-columns:repeat(5,minmax(90px,1fr));gap:8px;flex:1}.acm-candidate-fields label{font-size:12px}.acm-candidate-fields input{width:100%;box-sizing:border-box;padding:6px}.acm-scanner-add-button{margin-top:10px;padding:11px 15px;border:1px solid #aaa;border-radius:7px;cursor:pointer;font-weight:600}.acm-add-success{margin-top:15px;padding:14px;border:1px solid #ccc;border-radius:8px;background:#f7f7f7;text-align:left}@media(max-width:700px){.acm-person-candidate{display:block}.acm-candidate-fields{grid-template-columns:1fr 1fr}.acm-candidate-check{display:block;margin-bottom:8px}}

/* Step 40: clearer best-match presentation */
.acm-best-match{border-width:2px}
.acm-result-best{font-weight:700;margin:.25rem 0}
.acm-result-section{font-size:.92em;margin-top:.2rem}

/* Step 43: memorial-to-family-tree integration */
.acm-memorial-family-action{margin:12px 0 0}.acm-family-tree-button{display:inline-block;padding:10px 15px;border:1px solid #ccc;border-radius:8px;text-decoration:none;background:#fff;font-weight:700}.acm-family-tree-button:hover{text-decoration:none}.acm-family-tree-section{scroll-margin-top:20px}


/* Step 44: memorial genealogy summary */
.acm-genealogy-summary{margin:28px 0;padding:20px;border:1px solid #ddd;border-radius:10px;background:#fafafa}
.acm-genealogy-summary-header{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:15px}
.acm-genealogy-kicker{text-transform:uppercase;letter-spacing:1.5px;font-size:11px;color:#777;margin:0 0 3px}
.acm-genealogy-summary h2{margin:0 0 4px}
.acm-genealogy-note{margin:0;color:#666;font-size:13px}
.acm-genealogy-tree-link{display:inline-block;padding:9px 13px;border:1px solid #ccc;border-radius:7px;background:#fff;text-decoration:none;font-weight:700;white-space:nowrap}
.acm-genealogy-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.acm-genealogy-link-card{padding:11px 13px;border:1px solid #ddd;border-radius:7px;background:#fff;display:flex;flex-direction:column;gap:3px}
.acm-genealogy-relation{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:#777}
.acm-genealogy-link-card a{font-weight:700;text-decoration:none}
@media(max-width:650px){.acm-genealogy-summary-header{display:block}.acm-genealogy-tree-link{margin-top:12px}.acm-genealogy-links{grid-template-columns:1fr}}

/* Step 46: clean public memorial layout */
.acm-polished-memorial{max-width:900px;margin:35px auto;padding:0 0 38px;overflow:hidden;background:#fff;border:1px solid #e3e3e3;border-radius:18px;box-shadow:0 8px 30px rgba(0,0,0,.05)}
.acm-polished-memorial .acm-memorial-header{padding:38px 34px 30px;margin:0;background:linear-gradient(to bottom,#fff,#fafafa);border-bottom:1px solid #e9e9e9}
.acm-polished-memorial .acm-memorial-kicker{margin:0 0 10px;font-size:12px;letter-spacing:2.2px;color:#777;text-transform:uppercase}
.acm-polished-memorial .acm-memorial-header h1{margin:0;font-size:clamp(30px,5vw,44px);line-height:1.15;font-weight:700}
.acm-polished-memorial .acm-dates{margin:10px 0 0;font-size:18px;color:#666}
.acm-polished-memorial .acm-memorial-family-action{margin:22px 0 0}
.acm-polished-memorial .acm-family-tree-button{display:inline-flex;align-items:center;justify-content:center;padding:11px 18px;border:0;border-radius:999px;background:#333;color:#fff;font-size:15px;font-weight:700;text-decoration:none;box-shadow:0 2px 8px rgba(0,0,0,.12)}
.acm-polished-memorial .acm-family-tree-button:hover{opacity:.9;color:#fff}
.acm-polished-memorial>section:not(.acm-memorial-header){margin:0;padding:30px 34px;border-top:1px solid #ededed}
.acm-polished-memorial .acm-memorial-location{margin:24px 34px 0!important;padding:22px 24px!important;border:1px solid #e4e4e4;border-radius:14px;background:#fafafa}
.acm-section-kicker{margin:0 0 7px;font-size:11px;font-weight:700;letter-spacing:1.6px;text-transform:uppercase;color:#777}
.acm-location-name{margin:0!important;font-size:21px!important;line-height:1.3}
.acm-location-details{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 16px}
.acm-location-details span{padding:7px 10px;border-radius:8px;background:#fff;border:1px solid #e4e4e4;font-size:13px;color:#555}
.acm-location-details strong{color:#333}
.acm-memorial-copy p:last-child{margin-bottom:0}
.acm-genealogy-summary{margin:0!important;padding:30px 34px!important;border:0;border-top:1px solid #ededed!important;border-radius:0;background:#fff}
.acm-genealogy-summary-header{margin-bottom:16px!important}
.acm-genealogy-summary-header h2{margin:0!important;font-size:24px!important}
.acm-genealogy-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.acm-genealogy-link-card{padding:13px 15px;border-radius:10px;background:#fafafa}
.acm-genealogy-relation{font-size:10px;font-weight:700;letter-spacing:1px}
.acm-family-tree-section{scroll-margin-top:20px}
.acm-family-tree-section .acm-family-tree{margin:0}
.acm-polished-memorial .acm-public-gallery h2{margin-top:0}
.acm-polished-memorial .acm-share-box{margin:0;padding:22px 24px;border:1px solid #e2e2e2;border-radius:12px;background:#fafafa}
.acm-polished-memorial .acm-share-box strong{display:block;margin-bottom:12px;font-size:18px}
.acm-polished-memorial .acm-qr-section{text-align:center}
.acm-polished-memorial .acm-qr-section img{max-width:220px;height:auto}
@media(max-width:650px){
 .acm-polished-memorial{margin:15px auto;border-radius:12px}
 .acm-polished-memorial .acm-memorial-header{padding:30px 20px 24px}
 .acm-polished-memorial>section:not(.acm-memorial-header){padding:24px 20px}
 .acm-polished-memorial .acm-memorial-location{margin:18px 20px 0!important;padding:18px!important}
 .acm-genealogy-summary{padding:24px 20px!important}
 .acm-genealogy-links{grid-template-columns:1fr}
}

.acm-photo-contribute{margin-top:32px;padding:28px;border:1px solid #e5e7eb;border-radius:16px;background:#fafafa}.acm-photo-contribute h2{margin:.15rem 0 .5rem}.acm-photo-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.acm-photo-submit-form label{font-weight:600;display:block}.acm-photo-submit-form input[type=text],.acm-photo-submit-form input[type=email],.acm-photo-submit-form input[type=url],.acm-photo-submit-form input[type=file],.acm-photo-submit-form textarea{width:100%;box-sizing:border-box;margin-top:6px;padding:10px;border:1px solid #d1d5db;border-radius:8px;background:#fff}.acm-photo-submit-note{font-size:.9rem;opacity:.75}.acm-photo-submit-success{padding:12px 14px;margin:15px 0;border-radius:10px;background:#ecfdf5;border:1px solid #a7f3d0}.acm-photo-honeypot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}@media(max-width:700px){.acm-photo-form-grid{grid-template-columns:1fr}}


/* Step 65: keep memorial pages condensed; open the detailed family tree on demand. */
.acm-family-tree-modal[hidden]{display:none!important}
.acm-family-tree-modal{position:fixed;inset:0;z-index:99999;padding:20px;overflow:auto}
.acm-family-tree-modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.65)}
.acm-family-tree-modal-dialog{position:relative;z-index:2;max-width:1100px;margin:20px auto;background:#fff;border-radius:12px;padding:24px;max-height:calc(100vh - 40px);overflow:auto;box-shadow:0 12px 40px rgba(0,0,0,.25)}
.acm-family-tree-close{position:absolute;right:12px;top:8px;border:0;background:transparent;font-size:32px;line-height:1;cursor:pointer}
.acm-family-tree-modal-dialog .acm-family-tree{margin-top:20px}
body.acm-family-tree-modal-open{overflow:hidden}
.acm-family-tree-button{cursor:pointer}
@media (max-width:600px){
  .acm-family-tree-modal{padding:8px}
  .acm-family-tree-modal-dialog{margin:8px auto;padding:16px;max-height:calc(100vh - 16px)}
}


/* Step 66: compact cemetery statistics shortcode. */
.acm-cemetery-stats-widget{margin:20px 0;padding:24px;border-radius:12px}
.acm-cemetery-stats-widget h2{margin:0 0 20px;text-align:center}
.acm-cemetery-stats-widget-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.acm-cemetery-stat{text-align:center;padding:18px 12px;border-radius:10px}
.acm-cemetery-stat strong{display:block;font-size:2rem;line-height:1.1}
.acm-cemetery-stat span{display:block;margin-top:6px}
@media (max-width:700px){
  .acm-cemetery-stats-widget-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:420px){
  .acm-cemetery-stats-widget{padding:16px}
  .acm-cemetery-stat{padding:14px 8px}
  .acm-cemetery-stat strong{font-size:1.6rem}
}


/* Step 69: center the remaining photo when only one is present */
.acm-memorial-photo-pair.acm-single-photo{
    display:flex;
    justify-content:center;
    align-items:center;
}
.acm-memorial-photo-pair.acm-single-photo .acm-public-main-photo{
    width:min(100%,560px);
}
.acm-memorial-photo-pair.acm-single-photo .acm-public-headstone-photo{
    width:min(100%,420px);
    margin:0 auto;
}

/* Step 68: memorial portrait + smaller headstone photo */
.acm-memorial-photo-pair{
    display:grid;
    grid-template-columns:minmax(0,2.2fr) minmax(180px,1fr);
    gap:18px;
    align-items:stretch;
    margin:0 auto 30px;
    max-width:820px;
}
.acm-public-main-photo,
.acm-public-headstone-photo{
    position:relative;
    overflow:hidden;
    border-radius:14px;
    background:#f4f4f4;
    border:1px solid #e5e5e5;
}
.acm-public-main-photo img{
    display:block;
    width:100%;
    height:360px;
    object-fit:cover;
}
.acm-public-headstone-photo{
    align-self:center;
}
.acm-public-headstone-photo img{
    display:block;
    width:100%;
    max-height:270px;
    object-fit:contain;
}
.acm-public-headstone-photo span{
    display:block;
    padding:8px 10px;
    text-align:center;
    font-size:12px;
    text-transform:uppercase;
    letter-spacing:1px;
    color:#777;
    background:#fff;
}
@media(max-width:650px){
    .acm-memorial-photo-pair{
        grid-template-columns:1fr;
        gap:12px;
    }
    .acm-public-main-photo img{
        height:auto;
        max-height:420px;
        object-fit:contain;
    }
    .acm-public-headstone-photo{
        max-width:72%;
        margin:0 auto;
    }
    .acm-public-headstone-photo img{
        max-height:240px;
    }
}

/* Step 70: polished memorial information sections */
.acm-polished-memorial .acm-dates{
    display:inline-block;
    margin:14px 0 0;
    padding:8px 16px;
    border-top:1px solid #e2e2e2;
    border-bottom:1px solid #e2e2e2;
    color:#555;
    font-size:17px;
    letter-spacing:.2px;
}
.acm-polished-memorial .acm-memorial-family-action{
    padding-top:4px;
}
.acm-polished-memorial .acm-memorial-location{
    box-shadow:0 3px 14px rgba(0,0,0,.035);
}
.acm-polished-memorial .acm-memorial-copy{
    margin-left:34px!important;
    margin-right:34px!important;
    padding:26px 24px!important;
    border:1px solid #e8e8e8;
    border-radius:14px;
    background:#fff;
}
.acm-polished-memorial .acm-memorial-copy + .acm-memorial-copy{
    margin-top:16px!important;
    border-top:1px solid #e8e8e8!important;
}
.acm-polished-memorial .acm-memorial-copy .acm-section-kicker{
    color:#666;
}
@media(max-width:650px){
    .acm-polished-memorial .acm-dates{
        font-size:16px;
        padding:7px 12px;
    }
    .acm-polished-memorial .acm-memorial-copy{
        margin-left:20px!important;
        margin-right:20px!important;
        padding:22px 18px!important;
    }
}


/* Visual Family Tree */
.acm-family-tree-visual{max-width:1000px;margin:20px auto}
.acm-tree-row,.acm-tree-core{display:flex;align-items:center;justify-content:center;gap:14px}
.acm-tree-parents{margin-bottom:0;flex-wrap:wrap}
.acm-tree-core{margin:10px 0 0;flex-wrap:wrap}
.acm-tree-spouses{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.acm-tree-spouse-link{width:34px;height:2px;background:#bbb;flex:0 0 34px}
.acm-tree-connector{width:2px;height:28px;background:#bbb;margin:0 auto}
.acm-tree-children{margin-top:0}
.acm-tree-children .acm-family-tree-grid{border-top:2px solid #bbb;padding-top:18px;position:relative}
.acm-tree-parents .acm-family-card{position:relative}
.acm-family-tree-visual .acm-family-card{background:#fff;transition:transform .15s ease,box-shadow .15s ease}
.acm-family-tree-visual .acm-family-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.10)}
.acm-family-tree-visual .acm-family-card-root{border-width:2px}
@media(max-width:600px){
 .acm-tree-row,.acm-tree-core{flex-direction:column}
 .acm-tree-spouse-link{width:2px;height:22px;flex:0 0 22px}
 .acm-tree-spouses{width:100%}
 .acm-family-tree-visual .acm-family-tree-grid{grid-template-columns:1fr}
 .acm-tree-children .acm-family-tree-grid{border-top:0}
}


/* =========================================================
   ACM FAMILY TREE – STEP 4 PARENTS
   ========================================================= */
.acm-family-tree-visual .acm-tree-parent-section{
    display:flex;
    flex-direction:column;
    align-items:center;
    width:100%;
    margin:0 0 18px;
}

.acm-family-tree-visual .acm-tree-parents{
    display:flex;
    justify-content:center;
    align-items:stretch;
    gap:28px;
    width:100%;
}

.acm-family-tree-visual .acm-tree-parents .acm-family-card{
    width:min(320px, calc(50% - 14px));
    flex:0 1 320px;
}

.acm-family-tree-visual .acm-tree-parent-connector{
    position:relative;
    width:100%;
    max-width:700px;
    height:48px;
    margin-top:8px;
}

.acm-family-tree-visual .acm-tree-parent-connector:before{
    content:"";
    position:absolute;
    left:25%;
    right:25%;
    top:10px;
    border-top:2px solid #aeb7bd;
}

.acm-family-tree-visual .acm-tree-parent-connector:after{
    content:"";
    position:absolute;
    left:50%;
    top:10px;
    height:38px;
    border-left:2px solid #aeb7bd;
    transform:translateX(-1px);
}

.acm-family-tree-visual .acm-tree-parent-connector span{
    position:absolute;
    left:25%;
    top:10px;
    height:18px;
    border-left:2px solid #aeb7bd;
}

.acm-family-tree-visual .acm-tree-parent-connector span:after{
    content:"";
    position:absolute;
    left:calc(100% + 50%);
    top:0;
    height:18px;
    border-left:2px solid #aeb7bd;
}

@media (max-width:700px){
    .acm-family-tree-visual .acm-tree-parents{
        flex-direction:column;
        align-items:center;
        gap:14px;
    }
    .acm-family-tree-visual .acm-tree-parents .acm-family-card{
        width:min(100%, 360px);
    }
    .acm-family-tree-visual .acm-tree-parent-connector{
        display:none;
    }
}


/* =========================================================
   ACM FAMILY TREE – STEP 6 SIBLINGS
   ========================================================= */
.acm-family-tree-visual .acm-tree-siblings{
    width:100%;
    margin:18px auto;
    padding-top:16px;
    border-top:2px solid #aeb7bd;
}

.acm-family-tree-visual .acm-tree-siblings h3{
    text-align:center;
    margin:0 0 14px;
}

.acm-family-tree-visual .acm-family-siblings-grid{
    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    align-items:stretch;
    gap:20px;
    width:100%;
    max-width:1000px;
    margin:0 auto;
}

.acm-family-tree-visual .acm-family-siblings-grid .acm-family-card{
    flex:1 1 220px;
    max-width:300px;
    min-width:200px;
}

@media (max-width:700px){
    .acm-family-tree-visual .acm-family-siblings-grid{
        flex-direction:column;
        align-items:center;
    }
    .acm-family-tree-visual .acm-family-siblings-grid .acm-family-card{
        width:min(100%, 360px);
        max-width:360px;
    }
}


/* ACM FAMILY TREE – STEP 7 GRANDPARENTS & GRANDCHILDREN */
.acm-family-tree-visual .acm-tree-grandparents,
.acm-family-tree-visual .acm-tree-grandchildren{width:100%;margin:18px auto;}
.acm-family-tree-visual .acm-tree-grandparents h3,
.acm-family-tree-visual .acm-tree-grandchildren h3{text-align:center;margin:0 0 14px;}
.acm-family-tree-visual .acm-family-grandparents-grid,
.acm-family-tree-visual .acm-family-grandchildren-grid{display:flex;flex-wrap:wrap;justify-content:center;align-items:stretch;gap:20px;width:100%;max-width:1000px;margin:0 auto;}
.acm-family-tree-visual .acm-family-grandparents-grid .acm-family-card,
.acm-family-tree-visual .acm-family-grandchildren-grid .acm-family-card{flex:1 1 220px;max-width:300px;min-width:200px;}
.acm-family-tree-visual .acm-tree-generation-connector{position:relative;width:100%;max-width:760px;height:32px;margin:0 auto;}
.acm-family-tree-visual .acm-tree-generation-connector:before{content:"";position:absolute;left:50%;top:0;height:32px;border-left:2px solid #aeb7bd;transform:translateX(-1px);}
@media (max-width:700px){
.acm-family-tree-visual .acm-family-grandparents-grid,
.acm-family-tree-visual .acm-family-grandchildren-grid{flex-direction:column;align-items:center;}
.acm-family-tree-visual .acm-family-grandparents-grid .acm-family-card,
.acm-family-tree-visual .acm-family-grandchildren-grid .acm-family-card{width:min(100%,360px);max-width:360px;}
}


/* =========================================================
   ACM FAMILY TREE – STEP 8A CARD NAVIGATION
   ========================================================= */
.acm-family-tree-visual .acm-family-card-actions{
    display:flex;
    flex-direction:column;
    gap:8px;
    margin-top:14px;
}

.acm-family-tree-visual .acm-family-view-memorial,
.acm-family-tree-visual .acm-family-explore-tree{
    display:block;
    padding:8px 10px;
    border:1px solid #cfd6db;
    border-radius:6px;
    text-decoration:none;
    line-height:1.3;
}

.acm-family-tree-visual .acm-family-view-memorial:hover,
.acm-family-tree-visual .acm-family-explore-tree:hover{
    text-decoration:underline;
}

.acm-family-tree-visual .acm-family-person-name{
    display:block;
    font-weight:700;
    margin:4px 0 8px;
}

@media (max-width:700px){
    .acm-family-tree-visual .acm-family-card-actions{
        gap:7px;
    }
}
