:root {
    --ink: #252724;
    --muted: #6e716b;
    --line: #e4e4df;
    --paper: #fff;
    --soft-paper: #f7f6f2;
    --accent: #42594d;
    --accent-dark: #2f4138;
    --danger: #7d332d;
    --success: #304a37;
    --serif: Georgia, "Times New Roman", serif;
    --sans: Inter, "Segoe UI", Arial, sans-serif;
    --control-height: 2.75rem;
    --control-radius: .4rem;
    --shell: min(88rem, calc(100% - 4rem));
    --reading: min(52rem, calc(100% - 3rem));
    --life-story-width: min(88rem, 86%);
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { scroll-behavior: smooth; }
body { margin: 0; overflow-x: hidden; background: var(--paper); color: var(--ink); font: 1rem/1.6 var(--sans); }
body.is-dialog-open, body.lightbox-open, body.share-dialog-open { overflow: hidden; }
button, input, select, textarea { font: inherit; }
button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: not-allowed; opacity: .62; }
:where(a, button, input, select, textarea, summary):focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
a { color: inherit; }
img { display: block; max-width: 100%; }
h1, h2, h3, p { text-wrap: pretty; }
.page-shell { width: var(--shell); margin-inline: auto; }
.reading-column { width: var(--reading); margin-inline: auto; }
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.skip-link { position: fixed; top: 1rem; left: 1rem; z-index: 100; padding: .7rem 1rem; background: var(--ink); color: white; transform: translateY(-150%); }
.skip-link:focus { transform: translateY(0); }
.eyebrow, .section-kicker { margin: 0 0 1rem; color: var(--accent); font-size: .75rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; }
.section { padding-block: clamp(4.5rem, 7vw, 7rem); }
.global-status { position: fixed; z-index: 90; bottom: max(1rem, env(safe-area-inset-bottom)); left: max(1rem, env(safe-area-inset-left)); width: min(24rem, calc(100% - 2rem)); margin: 0; padding: .85rem 1rem; border: 1px solid #d8c9bc; border-left: 3px solid var(--accent); border-radius: var(--control-radius); background: #fffdf9; box-shadow: 0 .75rem 2rem rgb(36 25 20 / 14%); color: var(--ink); font-size: .78rem; line-height: 1.45; }

.wordmark { font: 1.35rem var(--serif); letter-spacing: .015em; text-decoration: none; }

/* Homepage retained from Task 06; only the shared header changes. */
.homepage-hero { padding: clamp(6rem, 12vw, 11rem) 0 clamp(5rem, 9vw, 8rem); background: var(--soft-paper); }
.homepage-hero__inner { max-width: 72rem; text-align: center; }
.homepage-hero h1 { max-width: 10ch; margin: 0 auto; font: 400 clamp(4rem, 9vw, 8rem)/.92 var(--serif); letter-spacing: -.05em; }
.homepage-hero__inner > p:last-child { max-width: 44rem; margin: 2rem auto 0; color: var(--muted); font: clamp(1.15rem, 2vw, 1.45rem)/1.55 var(--serif); }
.public-interest { padding-block: clamp(5rem, 9vw, 9rem); }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 2rem; padding-bottom: 2rem; border-bottom: 1px solid var(--line); }
.section-heading .eyebrow { margin: 0; }
.section-heading h2 { max-width: 15ch; margin: 0; font: 400 clamp(2.5rem, 5vw, 4.5rem)/1 var(--serif); letter-spacing: -.035em; text-align: right; }
.memorial-card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1rem, 2vw, 2rem); margin-top: 3rem; }
.memorial-card { min-width: 0; }
.memorial-card > a { display: block; text-decoration: none; }
.memorial-card__media { position: relative; display: grid; aspect-ratio: 4 / 5; place-items: center; overflow: hidden; background: #dde1dc; }
.memorial-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 350ms ease; }
.memorial-card a:hover img { transform: scale(1.025); }
.memorial-card__media--fallback > span:not(.visually-hidden) { color: var(--accent-dark); font: 400 clamp(2rem, 4vw, 3.5rem)/1 var(--serif); letter-spacing: .08em; }
.memorial-card__collective-mark { width: 4rem; height: 4rem; border: 1px solid #aeb6af; border-radius: 50%; }
.memorial-card__collective-mark::before, .memorial-card__collective-mark::after { position: absolute; top: 50%; left: 50%; width: 1px; height: 6rem; background: #c8cdc8; content: ""; transform: translate(-50%, -50%) rotate(45deg); }
.memorial-card__collective-mark::after { transform: translate(-50%, -50%) rotate(-45deg); }
.memorial-card__content { padding-top: 1.25rem; }
.memorial-card__content p { margin: 0 0 .45rem; color: var(--muted); font-size: .7rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.memorial-card__content h3 { margin: 0; font: 400 clamp(1.55rem, 2.5vw, 2.25rem)/1.15 var(--serif); }
.memorial-card__content > span { display: inline-block; margin-top: 1rem; color: var(--accent-dark); font-size: .78rem; font-weight: 700; }
.memorial-card a:focus-visible { outline: 3px solid var(--accent); outline-offset: 5px; }

/* Memorial hero and Gallery geometry mirror the approved prototype. */
.hero, .memorial-hero { padding-top: clamp(1.5rem, 3vw, 2.75rem); }
.page-context { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 2.55rem; }
.page-context__actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: .65rem; }
.editorial-preview-label, .editorial-edit-link { font: 650 .72rem/1.4 var(--sans); letter-spacing: .06em; }
.editorial-preview-label { padding: .42rem .65rem; border: 1px solid #c9cec8; background: #f4f5f2; color: var(--muted); text-transform: uppercase; }
.editorial-edit-link { color: var(--accent-dark); text-underline-offset: .22rem; }
.editorial-edit-link:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.breadcrumb ol { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0; padding: 0; color: var(--muted); font: .95rem var(--serif); list-style: none; }
.breadcrumb li:not(:last-child)::after { margin-left: .4rem; color: #aaa9a2; content: "/"; }
.breadcrumb a { text-decoration: none; }
.breadcrumb a:hover { color: var(--accent-dark); }
.hero__heading, .memorial-hero__heading { display: flex; flex-direction: column; align-items: center; padding-top: clamp(2.75rem, 5vw, 4.75rem); padding-bottom: 0; text-align: center; }
.hero--has-gallery .hero__heading, .memorial-hero--with-gallery .memorial-hero__heading { padding-bottom: clamp(1.75rem, 3vw, 2.75rem); }
.hero h1, .memorial-hero h1 { max-width: 13ch; margin: 0; font: 400 clamp(3.5rem, 7.4vw, 7.3rem)/.95 var(--serif); letter-spacing: -.045em; }
.life-dates { display: flex; flex-wrap: wrap; justify-content: center; gap: 0 .35rem; margin: 1.25rem 0 0; color: var(--muted); font: clamp(1.1rem, 2vw, 1.4rem) var(--serif); }
.memorial-gallery { width: 100%; padding: .25rem 0 1rem; overflow: hidden; }
.gallery-track { display: flex; box-sizing: border-box; align-items: stretch; gap: clamp(.6rem, 1vw, .95rem); width: max-content; min-width: 100%; padding-inline: max(1rem, calc((100vw - 88rem) / 2)); }
.gallery-track--small { width: 100%; justify-content: center; }
.gallery-track--count-1 { --gallery-small-count: 1; }
.gallery-track--count-2 { --gallery-small-count: 2; }
.gallery-track--count-3 { --gallery-small-count: 3; }
.gallery-track--small .gallery-card { flex-basis: min(21rem, calc((100vw - 2rem - ((var(--gallery-small-count) - 1) * .95rem)) / var(--gallery-small-count))); }
.gallery-track--small :is(.gallery-card--wide, .gallery-card--slim) { flex-basis: min(21rem, calc((100vw - 2rem - ((var(--gallery-small-count) - 1) * .95rem)) / var(--gallery-small-count))); }
.media-card, .gallery-card { --motion-x: 0px; position: relative; flex: 0 0 clamp(15rem, 21vw, 21rem); height: clamp(17rem, 24vw, 23rem); padding: 0; overflow: hidden; border: 0; border-radius: .45rem; background: #929b90; color: white; cursor: pointer; transform: translate3d(var(--motion-x), 0, 0); transition: transform .12s linear, box-shadow .25s ease; }
.media-card--wide, .gallery-card--wide { flex-basis: clamp(21rem, 30vw, 29rem); }
.media-card--slim, .gallery-card--slim { flex-basis: clamp(13rem, 17vw, 17rem); }
.media-card:is(:hover, :focus-visible), .gallery-card:is(:hover, :focus-visible) { box-shadow: 0 1rem 2.5rem rgb(31 36 31 / 18%); }
.media-card:focus-visible, .gallery-card:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; }
.media-art { position: absolute; inset: 0; display: block; transition: transform .5s ease; }
.media-art img { width: 100%; height: 100%; object-fit: cover; }
.media-card:hover .media-art { transform: scale(1.025); }

/* Canonical Public Memorial modes and Personal/Collective media treatments. */
[data-memorial-layout] .memorial-body { padding-top: clamp(3.75rem, 6vw, 6rem); padding-bottom: 0; }
[data-memorial-layout] .memorial-body .reading-column { width: var(--life-story-width); }
[data-memorial-layout="media-rich"] .memorial-introduction { display: grid; grid-template-columns: minmax(0, 3.2fr) minmax(230px, 1fr); column-gap: clamp(4rem, 4.5vw, 4.5rem); align-items: center; }
[data-memorial-layout="media-rich"] .memorial-introduction--image-free { grid-template-columns: minmax(0, 1fr); }
[data-memorial-layout="media-rich"] .memorial-introduction--image-free .biography__intro-content { max-width: min(60rem, 100%); }
.biography h2, .memorial-introduction h2 { max-width: 18ch; margin: 0; font: 400 clamp(2.4rem, 5vw, 4.5rem)/1.08 var(--serif); letter-spacing: -.035em; }
.biography__lead, .memorial-introduction__lead { max-width: 60rem; margin: 1.5rem 0 0; white-space: pre-line; font: clamp(1.3rem, 2.25vw, 1.8rem)/1.4 var(--serif); }
.memorial-button { display: inline-flex; align-items: center; gap: .6rem; min-height: var(--control-height); max-width: 100%; padding: .6rem 1rem; border: 1px solid var(--line); border-radius: var(--control-radius); background: rgb(255 255 255 / 48%); color: var(--accent-dark); font: 600 .8rem/1.4 var(--sans); text-align: left; text-decoration: none; white-space: nowrap; cursor: pointer; transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease; }
.memorial-primary-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .7rem; margin-bottom: .8rem; }
.memorial-share-button { margin: 0; }
.memorial-share-button__icon { flex: 0 0 auto; width: 1.05rem; height: 1.05rem; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.memorial-button:is(:hover, :focus-visible) { border-color: var(--ink); background: white; color: var(--ink); }
.memorial-button--accent { border-color: var(--accent); background: var(--accent); color: white; }
.memorial-button--accent:is(:hover, :focus-visible) { border-color: var(--accent-dark); background: var(--accent-dark); color: white; }
.memorial-button:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.memorial-primary-portrait, .primary-media { position: relative; display: grid; width: 200px; aspect-ratio: 1; margin: 0; place-items: center; justify-self: center; overflow: hidden; border: 1px solid var(--line); border-radius: 50%; background: #f1f0ec; }
.memorial-primary-portrait__image, .primary-media img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.memorial-primary-portrait__fallback, .primary-media--initials span { color: var(--muted); font: 400 2.15rem/1 var(--serif); letter-spacing: .08em; }
.memorial-primary-image--collective { width: min(250px, 100%); aspect-ratio: 4 / 5; border-radius: .45rem; background: #e7e9e5; }
.primary-media[data-effect="black_and_white"] img { filter: grayscale(1); }
.primary-media[data-effect="sepia"] img { filter: sepia(.78) saturate(.82); }
.primary-media[data-effect="halftone"] img { filter: grayscale(1) contrast(1.15); }
.primary-media[data-effect="halftone"]::after { position: absolute; inset: 0; background-image: radial-gradient(circle, rgb(35 38 35 / 46%) 0 1px, transparent 1.35px); background-size: 5px 5px; mix-blend-mode: multiply; pointer-events: none; content: ""; }
.memorial-body--centered { padding-top: clamp(2.5rem, 5vw, 4.5rem); }
:is([data-memorial-layout="primary-led"], [data-memorial-layout="text-led"]) .memorial-centered-lead { display: grid; justify-items: center; width: min(60rem, 100%); margin-inline: auto; text-align: center; }
[data-memorial-layout="primary-led"] .memorial-centered-lead :is(.memorial-primary-portrait--hero, .memorial-primary-image--hero) { width: clamp(15rem, 21vw, 17.5rem); aspect-ratio: 1; overflow: hidden; border: 1px solid var(--line); border-radius: 50%; background: #f1f0ec; }
[data-memorial-layout="primary-led"] .memorial-centered-lead .memorial-primary-image--medallion { width: clamp(16rem, 23vw, 19rem); margin-top: clamp(-1rem, -1.25vw, -.5rem); }
[data-memorial-layout="primary-led"] .memorial-centered-lead .memorial-primary-image--hero img { width: 100%; height: 100%; object-fit: cover; }
:is([data-memorial-layout="primary-led"], [data-memorial-layout="text-led"]) .memorial-centered-lead__media + .memorial-primary-actions { margin-top: clamp(1.75rem, 3vw, 2.5rem); }
[data-memorial-layout="primary-led"] .memorial-centered-lead .memorial-primary-image--medallion + .memorial-primary-actions { margin-top: clamp(2rem, 3vw, 2.75rem); }
:is([data-memorial-layout="primary-led"], [data-memorial-layout="text-led"]) .memorial-centered-lead > .memorial-primary-actions { justify-content: center; margin-bottom: 0; }
.memorial-centered-lead__lead { display: grid; justify-items: center; width: 100%; margin-top: clamp(2.5rem, 5vw, 4.25rem); }
.memorial-centered-lead__lead h2 { max-width: 18ch; text-align: center; }
.memorial-centered-lead__lead .memorial-introduction__lead { max-width: 52rem; margin-inline: auto; text-align: center; }
[data-memorial-layout] .memorial-lower { display: grid; grid-template-areas: "main secondary" "main secondary"; grid-template-columns: minmax(0, 3.2fr) minmax(230px, 1fr); grid-template-rows: auto auto; column-gap: clamp(4rem, 4.5vw, 4.5rem); align-items: start; margin-top: clamp(2.5rem, 4vw, 3.5rem); }
[data-memorial-layout] .memorial-lower > [data-memorial-main-region] { grid-area: main; min-width: 0; }
[data-memorial-layout] .memorial-lower > [data-memorial-secondary-region] { grid-area: secondary; }
[data-memorial-layout] .memorial-lower :is(.life-story, .memorial-actions) { display: grid; grid-template-rows: subgrid; align-self: stretch; }
[data-memorial-layout] .memorial-lower--without-story { grid-template-areas: ". secondary" ". secondary"; }
[data-memorial-layout] .memorial-lower--without-actions { grid-template-areas: "main" "main"; grid-template-columns: minmax(0, 1fr); }
.collective-narrative { min-width: 0; }
.memorial-rich-text { min-width: 0; color: #4d504b; white-space: pre-line; overflow-wrap: anywhere; font: clamp(1.02rem, 1.35vw, 1.14rem)/1.75 var(--serif); }
.collective-narrative > .memorial-rich-text { padding-top: 2.5rem; }
.memorial-rich-text :is(p,h2,h3,h4) { margin: 0 0 1rem; padding: 0; }
.memorial-rich-text h2 { font: 400 1.7rem/1.3 var(--serif); }.memorial-rich-text h3 { font: 400 1.45rem/1.35 var(--serif); }.memorial-rich-text h4 { font: 600 1.2rem/1.4 var(--serif); }
.memorial-rich-text a { color: var(--accent-dark); text-decoration: underline; text-underline-offset: .15em; }
.section-label, .biography h2.section-label, .memorial-body h2.section-label { max-width: none; margin: 0; padding: .85rem 0 .8rem; border-bottom: 1px solid var(--line); color: var(--muted); font: 700 .68rem/1.4 var(--sans); letter-spacing: .16em; text-transform: uppercase; }
.collective-narrative > p { margin: 0; padding: 2.5rem 0 0; color: #4d504b; white-space: pre-line; font: clamp(1.02rem, 1.35vw, 1.14rem)/1.75 var(--serif); }
:is([data-memorial-layout="primary-led"], [data-memorial-layout="text-led"]) .collective-editorial-lower { display: grid; grid-template-areas: "main secondary"; grid-template-columns: minmax(0, 1fr) minmax(14.5rem, 19rem); gap: clamp(3rem, 5vw, 5rem); align-items: start; margin-top: clamp(2.5rem, 4vw, 3.5rem); }
:is([data-memorial-layout="primary-led"], [data-memorial-layout="text-led"]) .collective-editorial-lower--without-secondary { grid-template-areas: "main"; grid-template-columns: minmax(0, 1fr); }
:is([data-memorial-layout="primary-led"], [data-memorial-layout="text-led"]) .collective-editorial-lower--without-narrative { grid-template-areas: "secondary"; grid-template-columns: minmax(0, 22rem); justify-content: end; }
.collective-editorial-lower__narrative { grid-area: main; }
.collective-editorial-lower__narrative > p { max-width: 68ch; }
.collective-editorial-lower__secondary { display: grid; grid-area: secondary; min-width: 0; align-content: start; }
.collective-editorial-lower__secondary > * + * { margin-top: 2.5rem; padding-top: 2.5rem; border-top: 1px solid var(--line); }
.collective-location__content { display: grid; grid-template-columns: 2rem minmax(0, 1fr); gap: 1rem; align-items: start; max-width: 36rem; padding-top: 2rem; }
.collective-location__content .memorial-actions__icon { margin: .1rem 0 0; }
.collective-location__place { margin: 0; color: var(--ink); font: 400 1.25rem/1.35 var(--serif); }
.collective-location__subtitle { margin: .35rem 0 0; color: var(--muted); font: 400 .82rem/1.5 var(--sans); }
.collective-location__content .memorial-action--text { justify-content: flex-start; width: auto; margin-top: 1rem; text-align: left; }

/* Life Story tabs reproduce the prototype while retaining accessible tab semantics. */
.life-story__navigation { width: 100%; border-bottom: 1px solid var(--line); }
.life-story__tabs { display: grid; grid-template-columns: repeat(var(--life-story-tab-count, 4), minmax(0, 1fr)); width: 100%; }
.life-story__tab { position: relative; display: flex; align-items: center; justify-content: center; min-width: 0; padding: .85rem .5rem .8rem; border: 0; background: transparent; color: var(--muted); font: 600 .76rem/1.35 var(--sans); letter-spacing: .07em; text-align: center; white-space: normal; text-transform: uppercase; cursor: pointer; }
.life-story__tab:first-child { justify-content: flex-start; padding-left: 0; text-align: left; }
.life-story__tab::after { position: absolute; bottom: .15rem; left: 50%; width: 55%; height: 2px; background: var(--accent-dark); content: ""; transform: translateX(-50%) scaleX(0); transform-origin: center; transition: transform .22s ease; }
.life-story__tab:first-child::after { left: 0; transform: scaleX(0); transform-origin: left; }
.life-story__tab:is(:hover, :focus-visible), .life-story__tab[aria-selected="true"] { color: var(--ink); }
.life-story__tab[aria-selected="true"] { font-weight: 700; }
.life-story__tab[aria-selected="true"]::after { transform: translateX(-50%) scaleX(1); }
.life-story__tab:first-child[aria-selected="true"]::after { transform: scaleX(1); }
.life-story__tab:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.life-story__panel { animation: life-story-fade .22s ease both; }
.life-story__panel-inner { width: min(60rem, 100%); padding-top: 2.5rem; }
.life-story__panel p { margin: 0 0 1rem; color: #4d504b; white-space: pre-line; font: clamp(1.02rem, 1.35vw, 1.14rem)/1.75 var(--serif); }
@keyframes life-story-fade { from { opacity: 0; transform: translateY(.2rem); } to { opacity: 1; transform: translateY(0); } }

/* The right action rail retains the prototype alignment and only real actions. */
.memorial-actions { padding-top: 0; }
.memorial-actions h3 { margin: 0; padding: .85rem 0 .8rem; border-bottom: 1px solid var(--line); color: var(--muted); font: 700 .68rem/1.4 var(--sans); letter-spacing: .16em; text-transform: uppercase; }
.memorial-actions h3::after { display: none; }
.memorial-actions__content { padding-top: 2.25rem; }
.memorial-actions__content:empty { min-height: 1px; }
.memorial-actions__icon { display: block; width: 1.8rem; height: 1.8rem; margin: 0 0 .65rem; color: #858880; fill: none; stroke: currentColor; stroke-width: 1.2; stroke-linecap: round; stroke-linejoin: round; }
.burial-action { display: flex; flex-direction: column; align-items: center; text-align: center; }
.burial-action__heading { margin: 0; color: var(--ink); font: 400 1.16rem/1.3 var(--serif); letter-spacing: -.01em; }
.burial-action__subtitle { max-width: 18rem; margin: .35rem 0 0; color: var(--muted); font: 400 .78rem/1.45 var(--sans); }
.memorial-action { display: inline-flex; align-items: center; min-height: 2.65rem; color: var(--accent-dark); font: 600 .8rem/1.4 var(--sans); text-align: left; text-decoration: none; cursor: pointer; }
.memorial-action--text { justify-content: center; width: 100%; min-height: 2.25rem; margin-top: 1.35rem; padding: 0; border: 0; background: transparent; color: #777973; font-weight: 400; text-align: center; }
.memorial-action--text span { display: inline-block; margin-left: .35rem; transition: transform 180ms ease; }
.memorial-action--text:is(:hover, :focus-visible) { color: var(--ink); }
.memorial-action--text:is(:hover, :focus-visible) span { transform: translateX(.15rem); }
.memorial-action:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.memorial-public-qr { text-align: center; }
.burial-action + .memorial-public-qr { margin-top: 2rem; padding-top: 2rem; border-top: 1px solid var(--line); }
.memorial-public-qr__heading-row { display: flex; align-items: center; justify-content: center; gap: .45rem; }
.memorial-public-qr h4 { margin: 0; color: var(--ink); font: 400 1.16rem/1.3 var(--serif); letter-spacing: -.01em; }
.memorial-public-qr__help { display: grid; flex: 0 0 auto; width: 1.4rem; height: 1.4rem; padding: 0; place-items: center; border: 1px solid #cfd1cb; border-radius: 50%; background: transparent; color: var(--muted); font: 600 .7rem/1 var(--sans); cursor: pointer; }
.memorial-public-qr__help:is(:hover, :focus-visible) { border-color: var(--accent); background: rgb(66 89 77 / 7%); color: var(--accent-dark); }
.memorial-public-qr__help:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.memorial-public-qr > p:not(.memorial-public-qr__status) { max-width: 18rem; margin: .35rem auto 0; color: var(--muted); font: 400 .78rem/1.45 var(--sans); }
.memorial-public-qr__preview { width: min(9rem, 70%); margin: 1.25rem auto; }
.memorial-public-qr__preview img { width: 100%; padding: .3rem; border: 1px solid var(--line); background: white; }
.memorial-public-qr__actions { display: grid; }
.memorial-public-qr__actions .memorial-action { justify-content: center; width: 100%; min-height: 2.5rem; padding: .45rem .25rem; border: 0; border-top: 1px solid #e2e2dd; background: transparent; color: var(--accent-dark); text-align: center; }
.memorial-public-qr__actions .memorial-action:is(:hover, :focus-visible) { color: var(--ink); }
.memorial-public-qr__status { margin: .65rem 0 0; color: var(--accent-dark); font-size: .72rem; }
.memorial-public-qr__status:empty { display: none; }
.memorial-qr-info { width: min(27rem, calc(100% - 2rem)); max-height: calc(100dvh - 2rem); padding: 0; overflow: auto; border: 1px solid var(--line); border-radius: .65rem; background: var(--paper); color: var(--ink); box-shadow: 0 1.25rem 4rem rgb(24 28 25 / 22%); text-align: left; }
.memorial-qr-info::backdrop { background: rgb(13 15 13 / 48%); }
.memorial-qr-info__content { position: relative; padding: 2.25rem 2rem 1.75rem; }
.memorial-qr-info__close { position: absolute; top: .65rem; right: .65rem; display: grid; width: 2.25rem; height: 2.25rem; padding: 0; place-items: center; border: 0; background: transparent; color: var(--muted); font-size: 1.5rem; line-height: 1; cursor: pointer; }
.memorial-qr-info__close:is(:hover, :focus-visible) { color: var(--ink); }
.memorial-qr-info__close:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.memorial-qr-info h2 { max-width: none; margin: 0; padding-right: 1.75rem; font: 400 1.4rem/1.25 var(--serif); letter-spacing: -.015em; text-align: left; }
.memorial-qr-info p { margin: .85rem 0 0; color: var(--muted); font: 400 .9rem/1.6 var(--sans); text-align: left; }
.memorial-owner-qr { margin-top: clamp(2.5rem, 4vw, 4rem); padding: clamp(1.1rem, 2vw, 1.5rem) clamp(1.1rem, 3vw, 2rem); border: 1px solid var(--line); background: var(--soft-paper); }
.memorial-owner-qr__header { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 1.5rem; align-items: center; }
.memorial-owner-qr__copy { min-width: 0; }
.memorial-owner-qr__copy .section-kicker { margin-bottom: .35rem; font-size: .66rem; }
.memorial-owner-qr h2 { margin: 0; font: 400 clamp(1.35rem, 2.3vw, 1.75rem)/1.1 var(--serif); letter-spacing: -.015em; }
.memorial-owner-qr__copy > p:last-child { max-width: 32rem; margin: .45rem 0 0; color: var(--muted); font-size: .82rem; line-height: 1.5; }
.memorial-owner-qr__toggle { justify-self: end; background: transparent; }
.memorial-owner-qr__indicator { display: inline-grid; width: 1rem; height: 1rem; place-items: center; color: var(--muted); font-size: 1rem; font-weight: 400; line-height: 1; }
.memorial-owner-qr__panel { display: grid; grid-template: "link preview" auto "actions preview" 1fr / minmax(0, 1fr) minmax(9rem, 12rem); gap: 1rem clamp(1.5rem, 4vw, 3rem); align-items: start; margin-top: 1.25rem; padding-top: 1.25rem; border-top: 1px solid var(--line); }
.memorial-owner-qr__link { grid-area: link; min-width: 0; }
.memorial-owner-qr__link > label { display: block; margin-bottom: .5rem; color: var(--muted); font-size: .65rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.memorial-owner-qr__link-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .6rem; align-items: stretch; }
.memorial-owner-qr__link-row input { min-width: 0; min-height: var(--control-height); padding: .6rem .75rem; overflow: hidden; border: 1px solid var(--line); border-radius: var(--control-radius); background: white; color: var(--muted); font-size: .75rem; text-overflow: ellipsis; }
.memorial-owner-qr__link-row input:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.memorial-owner-qr__status { margin: .5rem 0 0; color: var(--accent-dark); font-size: .72rem; }
.memorial-owner-qr__status:empty { display: none; }
.memorial-owner-qr__preview { grid-area: preview; width: min(11rem, 100%); margin: 0; justify-self: end; }
.memorial-owner-qr__image { width: 100%; padding: .4rem; border: 1px solid var(--line); background: white; }
.memorial-owner-qr__actions { display: flex; grid-area: actions; flex-wrap: wrap; gap: .6rem; align-items: center; }
.memorial-owner-qr__unavailable { display: inline-flex; min-height: var(--control-height); align-items: center; padding: .6rem 1rem; border: 1px solid var(--line); border-radius: var(--control-radius); color: var(--muted); font-size: .75rem; }
/* Credits stay secondary to both the Memorial narrative and Tributes. */
.image-credits.section { padding-block: clamp(1.5rem, 2.5vw, 2rem); border-top: 1px solid var(--line); }
.image-credits .reading-column { width: min(72rem, calc(100% - 3rem)); }
.image-credits h2 { margin: 0; color: var(--muted); font: 700 .7rem/1.4 var(--sans); letter-spacing: .16em; text-transform: uppercase; }
.image-credits ul { display: grid; gap: .45rem; margin: .75rem 0 0; padding: 0; list-style: none; }
.image-credits li { display: grid; grid-template-columns: max-content auto minmax(0, 1fr); gap: .45rem; align-items: baseline; color: var(--muted); font: .82rem/1.55 var(--sans); }
.image-credit__label { color: var(--ink); font-weight: 600; }
.image-credit__separator { color: #aaa9a2; }
.image-credit__content { min-width: 0; overflow-wrap: anywhere; }
.image-credit__content a { color: var(--accent-dark); text-underline-offset: .16rem; }
.image-credit__content a:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.image-credits + .tributes { padding-top: 0; }
.image-credits + .tributes .tribute-section-heading { padding-top: clamp(1.5rem, 2.5vw, 2rem); }

/* Tributes retain the approved condolence rhythm and add restrained production controls. */
.condolences, .tributes { padding-top: max(0px, calc(2.75rem - clamp(2.25rem, 4vw, 3.25rem))); border-top: 0; background: var(--paper); }
.tribute-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 2rem; width: min(72rem, calc(100% - 3rem)); margin: 0 auto; padding: clamp(2.25rem, 4vw, 3.25rem) 0 1.75rem; border-bottom: 1px solid var(--line); }
.tribute-section-heading .eyebrow { margin-bottom: .5rem; }
.tribute-section-heading h2 { margin: 0; font: 400 clamp(2.5rem, 5vw, 4rem)/1 var(--serif); letter-spacing: -.035em; }
.tribute-section-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: .6rem; }
.report-content-button { width: auto; margin: 0; padding-inline: .35rem; }
.condolence-list, .tribute-list { width: min(72rem, calc(100% - 3rem)); margin: 0 auto; }
.condolence-entry, .tribute { display: grid; grid-template-columns: 3.5rem minmax(0, 1fr); gap: 1.4rem; padding: clamp(2.25rem, 4vw, 3.25rem) 0; }
.condolence-entry + .condolence-entry, .tribute + .tribute { border-top: 1px solid #efefef; }
.initials-avatar, .tribute__avatar { display: grid; place-items: center; width: 3.5rem; height: 3.5rem; border-radius: 50%; background: #dfe3de; color: var(--accent-dark); font: 700 .78rem var(--sans); letter-spacing: .08em; }
.initials-avatar--small, .tribute__avatar--small { width: 2.5rem; height: 2.5rem; font-size: .67rem; }
.condolence-entry__content, .tribute__content { min-width: 0; max-width: 58rem; }
.condolence-entry__header, .tribute header, .nested-reply header, .tribute-reply header { display: flex; flex-wrap: wrap; align-items: baseline; gap: .35rem 1rem; }
.condolence-entry__header h3, .tribute h3, .nested-reply h4, .tribute h4 { margin: 0; font: 700 .92rem var(--sans); }
.condolence-entry time, .tribute time, .nested-reply time { color: var(--muted); font: .78rem var(--sans); }
.condolence-entry__title, .tribute__title { margin: 1.15rem 0 .4rem; color: var(--ink); font: 600 1.08rem var(--serif); }
.condolence-entry__message, .tribute__body { max-width: 48rem; margin: 1rem 0 0; color: #626262; white-space: pre-line; font: 400 1.06rem/1.8 var(--serif); }
.condolence-entry__title + .condolence-entry__message, .tribute__title + .tribute__body { margin-top: 0; }
.tribute__controls { display: flex; flex-wrap: wrap; gap: .75rem 1.25rem; margin-top: 1.35rem; }
.tribute__controls a, .tribute__controls button { padding: 0; border: 0; background: transparent; color: var(--accent-dark); font: 600 .76rem/1.4 var(--sans); text-decoration: underline; text-underline-offset: .22rem; cursor: pointer; }
.tribute__controls :is(a, button):focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.tribute__attachments { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1.25rem; }
.tribute__attachments figure { width: min(18rem, 100%); margin: 0; }
.tribute__attachments img { width: min(18rem, 100%); max-height: 20rem; border-radius: .25rem; object-fit: cover; }
.tribute__attachments button { margin-top: .45rem; padding: 0; border: 0; background: transparent; color: var(--muted); font: 600 .7rem var(--sans); text-decoration: underline; text-underline-offset: .2rem; cursor: pointer; }
.tribute__attachments--reply img { width: min(14rem, 100%); max-height: 15rem; }
.tribute-empty { width: min(72rem, calc(100% - 3rem)); margin: 0 auto; padding: 3rem 0; color: var(--muted); font: 1.08rem var(--serif); }
.nested-replies, .tribute__replies { display: grid; gap: 1.35rem; max-width: 45rem; margin-top: 1.75rem; padding-left: 1.25rem; border-left: 1px solid #c8ccc7; }
.nested-reply, .tribute-reply { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr); gap: 1rem; }
.nested-reply p, .tribute-reply p { margin: .6rem 0 0; color: var(--muted); white-space: pre-line; font: .98rem/1.6 var(--serif); }
.condolence-pagination, .pagination { display: flex; justify-content: center; align-items: center; gap: .55rem; padding-top: clamp(2rem, 4vw, 3rem); border-top: 0; }
.pagination-button { display: grid; place-items: center; min-width: 2.5rem; height: 2.5rem; padding: 0 .65rem; border: 1px solid transparent; border-radius: 50%; background: transparent; color: var(--muted); font: 600 .82rem var(--sans); text-decoration: none; }
.pagination-button:is(:hover, :focus-visible) { border-color: var(--line); color: var(--ink); outline: none; }
.pagination-button[aria-current="page"] { border-color: var(--accent); color: var(--accent-dark); }
.pagination-button[aria-disabled="true"] { opacity: .35; }

/* The principal Tribute CTA follows the approved open editorial form geometry. */
.tribute-form-section { scroll-margin-top: 1rem; border-top: 1px solid var(--line); background: var(--soft-paper); }
.tribute-form-section:focus { outline: 0; }
.tribute-form-section:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.tribute-form-column { width: min(52rem, calc(100% - 3rem)); margin-inline: auto; text-align: center; }
.tribute-form-column h2 { margin: 0; font: 400 clamp(2.5rem, 5vw, 4rem)/1.04 var(--serif); letter-spacing: -.035em; }
.tribute-form-introduction { max-width: 40rem; margin: 1.4rem auto 2.75rem; color: var(--muted); font: 1.2rem/1.55 var(--serif); }
.tribute-form { display: grid; gap: 1.35rem; text-align: left; }
.tribute-form__identity { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; align-items: start; }
.tribute-form__identity--single { grid-template-columns: minmax(0, 1fr); }
.tribute-form__field { display: grid; gap: .45rem; min-width: 0; }
.tribute-form__field label { color: var(--ink); font-size: .86rem; font-weight: 700; }
.tribute-form__field label span { color: var(--muted); font-weight: 400; }
.tribute-form__field :is(input:not([type="file"]), textarea) { width: 100%; padding: .72rem .85rem; border: 1px solid #d6d7d2; border-radius: 0; background: white; color: var(--ink); }
.tribute-form__field input:not([type="file"]) { min-height: 2.8rem; }
.tribute-form__field textarea { min-height: 10rem; resize: vertical; }
.tribute-form__field :is(input, textarea):focus-visible { border-color: var(--accent); outline: 3px solid rgb(66 89 77 / 14%); outline-offset: 0; }
.tribute-form__field [aria-invalid="true"] { border-color: #9d3e35; }
.tribute-form__field .field-help { margin: 0; font-size: .78rem; }
.tribute-form__error { margin: 0; color: #8a2d2d; font-size: .78rem; line-height: 1.45; }
.tribute-upload { display: grid; justify-items: center; gap: .65rem; }
.tribute-upload__control { position: relative; width: 100%; min-height: 140px; overflow: hidden; border: 1px dashed #b9bcb5; background: rgb(255 255 255 / 50%); transition: border-color 180ms ease, background-color 180ms ease; }
.tribute-upload__input { position: absolute; z-index: 1; inset: 0; width: 100%; height: 100%; cursor: pointer; opacity: 0; }
.tribute-upload__label { display: flex; min-height: 140px; padding: 1.25rem; flex-direction: column; align-items: center; justify-content: center; color: var(--muted); text-align: center; pointer-events: none; }
.tribute-upload__icon { width: 2rem; height: 2rem; margin-bottom: .7rem; fill: none; stroke: currentColor; stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }
.tribute-upload__title { color: var(--ink); font-size: .86rem; font-weight: 700; }
.tribute-upload__selection { margin-top: .3rem; font-size: .76rem; line-height: 1.45; overflow-wrap: anywhere; }
.tribute-upload__control:is(:hover, :focus-within), .tribute-upload.is-selected .tribute-upload__control { border-color: var(--accent); background: white; }
.tribute-upload__control:focus-within { outline: 3px solid rgb(66 89 77 / 14%); outline-offset: 0; }
.tribute-upload__remove { padding: 0; border: 0; background: transparent; color: var(--accent-dark); font: 600 .76rem/1.4 var(--sans); text-decoration: underline; text-underline-offset: .2rem; cursor: pointer; }
.tribute-upload__remove:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.tribute-form__submit { justify-self: center; min-width: 13rem; min-height: var(--control-height); margin-top: .25rem; padding: .85rem 1.4rem; border: 1px solid var(--accent); border-radius: var(--control-radius); background: var(--accent); color: white; font: 700 .82rem/1.4 var(--sans); cursor: pointer; transition: border-color 180ms ease, background-color 180ms ease; }
.tribute-form__submit:is(:hover, :focus-visible) { border-color: var(--accent-dark); background: var(--accent-dark); }
.tribute-form__submit:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.tribute-form-feedback { margin: 0 0 1.5rem; padding: .85rem 1rem; border: 1px solid; font-size: .8rem; text-align: left; }
.tribute-form-feedback p { margin: 0; font-weight: 700; }
.tribute-form-feedback ul { margin: .5rem 0 0; padding-left: 1.2rem; }
.tribute-form-feedback--success { border-color: #b9cbbd; background: #f0f6f1; color: #304a37; }
.tribute-form-feedback--error { border-color: #d9b8b8; background: #fff7f7; color: #6b2f2f; }
.tribute-form__account-options { margin-top: 2rem; color: var(--muted); font-size: .78rem; }
.tribute-form__account-options p { margin: 0; }
.tribute-form__account-options div { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem 1rem; margin-top: .65rem; }
.tribute-form__account-options a { color: var(--accent-dark); font-weight: 600; text-underline-offset: .2rem; }
.tribute-form__account-options a:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

/* Viewport-bound lightbox, share dialog, and location detail dialog. */
.lightbox { position: fixed; inset: 0; box-sizing: border-box; width: 100vw; max-width: 100vw; height: 100vh; height: 100dvh; max-height: 100vh; max-height: 100dvh; margin: 0; padding: 0; overflow: hidden; border: 0; background: transparent; color: white; }
.lightbox::backdrop { background: rgb(13 15 13 / 94%); }
.lightbox__frame { position: relative; display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) auto; width: 100%; height: 100%; min-width: 0; min-height: 0; margin: 0; overflow: hidden; background: rgb(13 15 13 / 94%); }
.lightbox__stage { display: flex; box-sizing: border-box; grid-row: 1; grid-column: 1; align-items: center; justify-content: center; min-width: 0; min-height: 0; padding: clamp(4.75rem, 8vh, 6rem) clamp(5rem, 7vw, 7rem) clamp(.75rem, 2vh, 1.5rem); }
.lightbox__stage img { display: block; flex: 0 1 auto; width: auto; height: auto; min-width: 0; min-height: 0; max-width: 100%; max-height: 100%; margin: auto; object-fit: contain; object-position: center; }
.lightbox__tray { box-sizing: border-box; grid-row: 2; grid-column: 1; min-width: 0; max-height: min(34dvh, 15rem); padding: .8rem clamp(1rem, 5vw, 5rem) max(.8rem, env(safe-area-inset-bottom)); overflow-y: auto; border-top: 1px solid rgb(255 255 255 / 14%); background: #111311; }
.lightbox__details { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 2rem; width: min(72rem, 100%); margin: 0 auto; }
.lightbox__details h2 { margin: 0; font: 400 clamp(1.05rem, 1.5vw, 1.35rem)/1.3 var(--serif); }
.lightbox__report { margin-top: .35rem; padding: 0; border: 0; background: transparent; color: #d0d2cf; font: 600 .72rem var(--sans); text-decoration: underline; text-underline-offset: .2rem; cursor: pointer; }
.lightbox__details h2[hidden] + .lightbox__report { margin-top: 0; }
.lightbox__counter { margin: 0; color: #d0d2cf; font-size: .9rem; white-space: nowrap; }
.lightbox__close, .lightbox__arrow { z-index: 2; display: grid; place-items: center; border: 1px solid rgb(255 255 255 / 32%); border-radius: 50%; background: rgb(20 22 20 / 55%); color: white; cursor: pointer; }
.lightbox__close { position: absolute; top: 1.25rem; right: 1.25rem; width: 3.5rem; height: 3.5rem; font-size: 2.25rem; line-height: 1; }
.lightbox__arrow { grid-row: 1; grid-column: 1; align-self: center; width: 3.5rem; height: 3.5rem; margin-inline: clamp(.75rem, 2vw, 1.5rem); font-size: 1.6rem; }
.lightbox__arrow--previous { justify-self: start; }
.lightbox__arrow--next { justify-self: end; }
.lightbox__close:is(:hover, :focus-visible), .lightbox__arrow:is(:hover, :focus-visible) { border-color: white; background: rgb(255 255 255 / 14%); outline: none; }
.lightbox__thumbnails { display: flex; justify-content: flex-start; gap: .5rem; width: fit-content; max-width: min(72rem, 100%); margin: .75rem auto 0; padding-bottom: .15rem; overflow-x: auto; }
.lightbox__thumbnail { flex: 0 0 auto; width: 3.2rem; height: 2.3rem; padding: 0; overflow: hidden; border: 2px solid transparent; border-radius: .2rem; background: #839083; cursor: pointer; opacity: .55; }
.lightbox__thumbnail img { width: 100%; height: 100%; object-fit: cover; }
.lightbox__thumbnail[aria-current="true"] { border-color: white; opacity: 1; }
.detail-dialog { width: min(38rem, calc(100% - 2rem)); max-height: calc(100dvh - 2rem); padding: 0; overflow: auto; border: 0; background: var(--paper); color: var(--ink); }
.detail-dialog::backdrop, .share-dialog::backdrop { background: rgb(13 15 13 / 72%); }
.detail-dialog__content { position: relative; padding: clamp(2rem, 5vw, 3.5rem); }
.detail-dialog__close, .share-dialog__close { position: absolute; top: 1rem; right: 1rem; display: grid; width: 2.75rem; height: 2.75rem; padding: 0; place-items: center; border: 0; background: transparent; color: var(--muted); font-size: 1.75rem; line-height: 1; cursor: pointer; }
.detail-dialog__close:is(:hover, :focus-visible), .share-dialog__close:is(:hover, :focus-visible) { color: var(--ink); outline: 2px solid var(--accent); outline-offset: 2px; }
.detail-dialog h2 { margin: 0; padding-right: 2rem; font: 400 clamp(2rem, 5vw, 3rem)/1.08 var(--serif); letter-spacing: -.035em; }
.detail-dialog__content > p:not(.section-kicker) { margin: 1rem 0 1.75rem; color: var(--muted); font: 1.05rem/1.6 var(--serif); }
.burial-details { display: grid; gap: 0; margin: 1.75rem 0 0; }
.burial-details div { padding: 1rem 0; border-top: 1px solid var(--line); }
.burial-details dt { color: var(--muted); font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.burial-details dd { margin: .3rem 0 0; white-space: pre-line; font: 1.05rem/1.55 var(--serif); }
.share-dialog { width: min(42rem, calc(100% - 2rem)); max-height: calc(100dvh - 2rem); padding: 0; overflow: auto; border: 0; border-radius: .55rem; background: var(--paper); color: var(--ink); }
.share-dialog__content { position: relative; padding: clamp(2rem, 5vw, 3.5rem); }
.share-dialog__header { padding-right: 2rem; }
.share-dialog__header h2 { margin: 0; font: 400 clamp(2.25rem, 6vw, 3.75rem)/1.08 var(--serif); letter-spacing: -.035em; }
.share-dialog__header > p:last-child { max-width: 34rem; margin: 1rem 0 0; color: var(--muted); font: 1.05rem/1.6 var(--serif); }
.share-dialog__actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; margin-top: 2rem; }
.share-option { display: grid; align-content: center; gap: .25rem; min-width: 0; min-height: 5.5rem; padding: 1rem; border: 1px solid var(--line); border-radius: 0; background: transparent; color: var(--ink); font: inherit; text-align: left; text-decoration: none; cursor: pointer; transition: border-color 180ms ease, background-color 180ms ease; }
.share-option:is(:hover, :focus-visible) { border-color: var(--accent); background: rgb(66 89 77 / 5%); outline: none; }
.share-option:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.share-option__label { color: var(--accent-dark); font-size: .86rem; font-weight: 700; }
.share-option__description { color: var(--muted); font-size: .74rem; line-height: 1.4; }
.share-dialog__status { min-height: 1.25rem; margin: 1rem 0 0; color: var(--accent-dark); font-size: .8rem; font-weight: 600; }
.submission-dialog { width: min(44rem, calc(100% - 2rem)); max-height: calc(100dvh - 2rem); padding: 0; overflow: auto; border: 0; border-radius: .55rem; background: var(--paper); color: var(--ink); }
.submission-dialog::backdrop { background: rgb(13 15 13 / 72%); }
.submission-dialog__content { position: relative; padding: clamp(2rem, 5vw, 3.5rem); }
.submission-dialog h2 { max-width: 14ch; margin: 0; padding-right: 2rem; font: 400 clamp(2.2rem, 5vw, 3.6rem)/1.06 var(--serif); letter-spacing: -.035em; }
.submission-dialog__content > p:not(.section-kicker) { margin: 1rem 0 0; color: var(--muted); font: 1rem/1.6 var(--serif); }
.submission-form { display: grid; gap: .65rem; margin-top: 1.75rem; }
.submission-form label { margin-top: .55rem; color: var(--ink); font-size: .78rem; font-weight: 700; }
.submission-form label span { color: var(--muted); font-weight: 400; }
.submission-form :is(input:not([type="file"]), textarea, select) { width: 100%; min-height: var(--control-height); padding: .72rem .85rem; border: 1px solid #cfd1cc; border-radius: var(--control-radius); background: white; color: var(--ink); }
.submission-form input[type="file"] { width: 100%; padding: .6rem 0; }
.submission-form textarea { resize: vertical; }
.submission-form :is(input, textarea, select):focus-visible { border-color: var(--accent); outline: 2px solid rgb(66 89 77 / 25%); outline-offset: 1px; }
.field-help { margin: -.2rem 0 .15rem; color: var(--muted); font-size: .72rem; line-height: 1.45; }
.submission-dialog__actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; margin-top: 1.25rem; }
.submission-dialog__actions .memorial-action--text { width: auto; margin: 0; }
.submission-feedback { margin-top: 1.25rem; padding: .85rem 1rem; border: 1px solid #d9b8b8; background: #fff7f7; color: #6b2f2f; font-size: .78rem; }
.submission-feedback p { margin: 0; font-weight: 700; }
.submission-feedback ul { margin: .5rem 0 0; padding-left: 1.2rem; }
.submission-honeypot { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
.report-dialog { width: min(36rem, calc(100% - 2rem)); }
.report-dialog .submission-dialog__content { padding: clamp(1.5rem, 4vw, 2.5rem); }
.report-dialog h2 { max-width: 18ch; font-size: clamp(1.9rem, 5vw, 2.8rem); }
.report-form { margin-top: 1.25rem; }
.report-form .report-choice { display: flex; align-items: flex-start; gap: .65rem; margin-top: .75rem; font-size: .82rem; line-height: 1.45; }
.report-form .report-choice input { flex: 0 0 auto; width: 1.1rem; min-height: 1.1rem; margin: .08rem 0 0; padding: 0; }
.report-form .report-choice span { color: var(--ink); font-weight: 600; }
.report-email-panel { margin: .65rem 0 0 1.75rem; padding-left: .75rem; border-left: 2px solid var(--line); }
.report-email-panel[hidden] { display: none; }
.report-email-destination { margin: 0; color: var(--muted); font-size: .78rem; line-height: 1.5; }
.report-email-destination strong { color: var(--ink); }
.report-field-error { margin: -.25rem 0 0; color: #8a2d2d; font-size: .76rem; line-height: 1.4; }
.report-turnstile { width: 100%; max-width: 100%; overflow: hidden; }
.report-turnstile .cf-turnstile { max-width: 100%; }
.report-success > p:not(.section-kicker) { margin: 1rem 0 0; color: var(--muted); font: 1rem/1.55 var(--serif); }
.report-success > p + p { margin-top: .35rem; }

.error-page { min-height: 65vh; padding-block: clamp(6rem, 12vw, 11rem); text-align: center; }
.error-page h1 { margin: 0; font: 400 clamp(3.5rem, 8vw, 6rem)/1 var(--serif); }
.error-page p:not(.eyebrow) { margin: 1.5rem 0 2rem; color: var(--muted); font: 1.15rem var(--serif); }

@media (max-width: 56rem) {
    :root { --shell: min(100% - 2rem, 88rem); }
    .memorial-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .memorial-gallery { overflow-x: auto; overscroll-behavior-inline: contain; scrollbar-width: thin; }
    .gallery-track { padding-inline: 1rem; }
    .gallery-track--small .gallery-card { flex-basis: min(17rem, calc((100vw - 2rem - ((var(--gallery-small-count) - 1) * .6rem)) / var(--gallery-small-count))); height: auto; aspect-ratio: 4 / 5; }
    .gallery-track--small :is(.gallery-card--wide, .gallery-card--slim) { flex-basis: min(17rem, calc((100vw - 2rem - ((var(--gallery-small-count) - 1) * .6rem)) / var(--gallery-small-count))); }
    .media-card, .gallery-card { --motion-x: 0px !important; flex-basis: 17rem; height: 19rem; }
    .media-card--wide, .gallery-card--wide { flex-basis: 23rem; }
    .media-card--slim, .gallery-card--slim { flex-basis: 14rem; }
    [data-memorial-layout="media-rich"] .memorial-introduction, [data-memorial-layout] .memorial-lower { grid-template-columns: minmax(0, 1fr) minmax(210px, 230px); column-gap: clamp(2.5rem, 5vw, 3rem); }
    [data-memorial-layout="media-rich"] .memorial-introduction--image-free { grid-template-columns: 1fr; }
    .condolence-list, .tribute-list { width: min(72rem, calc(100% - 2rem)); }
    .lightbox__stage { padding-inline: 4.5rem; }
}

@media (max-width: 48rem) {
    .section-heading { display: block; }
    .section-heading h2 { margin-top: 1rem; text-align: left; }
    .memorial-card-grid { grid-template-columns: 1fr; }
    .memorial-card { max-width: 34rem; }
    [data-memorial-layout="media-rich"] .memorial-introduction { grid-template-columns: 1fr; row-gap: 2.75rem; }
    [data-memorial-layout="primary-led"] .memorial-centered-lead .memorial-primary-portrait--hero { width: min(15rem, 70vw); }
    [data-memorial-layout="primary-led"] .memorial-centered-lead .memorial-primary-image--hero img { max-height: min(28rem, 62vh); }
    [data-memorial-layout] :is(.memorial-lower, .memorial-lower--without-story, .memorial-lower--without-actions) { grid-template-areas: "main" "secondary"; grid-template-columns: 1fr; grid-template-rows: auto; row-gap: 2.75rem; }
    [data-memorial-layout] .memorial-lower--without-story { grid-template-areas: "secondary"; }
    [data-memorial-layout] .memorial-lower--without-actions { grid-template-areas: "main"; }
    :is([data-memorial-layout="primary-led"], [data-memorial-layout="text-led"]) :is(.collective-editorial-lower, .collective-editorial-lower--without-secondary, .collective-editorial-lower--without-narrative) { grid-template-areas: "main" "secondary"; grid-template-columns: 1fr; row-gap: 2.75rem; justify-content: stretch; }
    :is([data-memorial-layout="primary-led"], [data-memorial-layout="text-led"]) .collective-editorial-lower--without-narrative { grid-template-areas: "secondary"; }
    :is([data-memorial-layout="primary-led"], [data-memorial-layout="text-led"]) .collective-editorial-lower--without-secondary { grid-template-areas: "main"; }
    [data-memorial-layout] .memorial-lower :is(.life-story, .memorial-actions) { grid-template-rows: auto; align-self: start; }
    .memorial-primary-portrait, .primary-media { width: 160px; }
    .memorial-primary-image--collective { width: min(230px, 72vw); }
    .memorial-actions { width: min(100%, 22rem); margin-inline: auto; }
    .memorial-actions h3 { margin-bottom: 2.25rem; padding: .85rem 0 0; border-bottom: 0; }
    .memorial-actions h3::after { display: block; width: 100%; height: 1px; margin-top: 1.125rem; background: var(--line); content: ""; }
    .memorial-actions__content { padding-top: 0; }
    .tribute-form__identity { grid-template-columns: minmax(0, 1fr); }
    .memorial-owner-qr { padding: 1.15rem; }
    .memorial-owner-qr__header { grid-template-columns: 1fr; gap: 1rem; }
    .memorial-owner-qr__toggle { justify-self: start; }
    .memorial-owner-qr__panel { grid-template: "link" auto "preview" auto "actions" auto / minmax(0, 1fr); }
    .memorial-owner-qr__link-row { grid-template-columns: minmax(0, 1fr); }
    .memorial-owner-qr__link-row .memorial-button { justify-self: start; }
    .memorial-owner-qr__preview { width: min(11rem, 58vw); justify-self: center; }
    .memorial-owner-qr__actions { flex-direction: column; align-items: stretch; }
    .memorial-owner-qr__actions .memorial-button, .memorial-owner-qr__unavailable { width: 100%; justify-content: center; white-space: normal; text-align: center; }
    .tribute-section-heading { display: block; }
    .tribute-section-actions { justify-content: flex-start; margin-top: 1.5rem; }
}

@media (max-width: 38rem) {
    :root { --reading: calc(100% - 2rem); --life-story-width: calc(100% - 2rem); }
    .homepage-hero { padding-block: 5rem; }
    .homepage-hero h1 { font-size: clamp(3.2rem, 16vw, 5rem); }
    .hero, .memorial-hero { padding-top: 1.5rem; }
    .breadcrumb { font-size: .85rem; }
    .hero__heading, .memorial-hero__heading { padding-top: 2.75rem; padding-bottom: 0; }
    .hero--has-gallery .hero__heading, .memorial-hero--with-gallery .memorial-hero__heading { padding-bottom: 1.75rem; }
    .hero h1, .memorial-hero h1 { font-size: clamp(3rem, 15vw, 4.6rem); }
    .life-dates { font-size: 1rem; }
    .media-card, .gallery-card { flex-basis: 15rem; height: 17rem; }
    .media-card--wide, .gallery-card--wide { flex-basis: 19rem; }
    .media-card--slim, .gallery-card--slim { flex-basis: 13rem; }
    .section { padding-block: 4rem; }
    .biography, .memorial-body { padding: 3.25rem 0 0; }
    .memorial-body--centered { padding-top: 2.5rem; }
    [data-memorial-layout="primary-led"] .memorial-centered-lead :is(.memorial-primary-portrait--hero, .memorial-primary-image--hero) { width: min(14rem, 68vw); }
    :is([data-memorial-layout="primary-led"], [data-memorial-layout="text-led"]) .memorial-centered-lead > .memorial-primary-actions { justify-content: center; }
    :is([data-memorial-layout="primary-led"], [data-memorial-layout="text-led"]) .memorial-centered-lead > .memorial-primary-actions .memorial-button { white-space: normal; text-align: center; }
    .memorial-centered-lead__lead { margin-top: 2.5rem; }
    .biography__lead, .memorial-introduction__lead { margin-top: 1.35rem; line-height: 1.38; }
    [data-memorial-layout] .memorial-lower { row-gap: 2.75rem; }
    .memorial-actions h3 { padding-top: 1.5rem; }
    .life-story__tab { padding: .8rem .25rem .75rem; font-size: .68rem; letter-spacing: .045em; }
    .condolence-entry, .tribute { grid-template-columns: 2.75rem minmax(0, 1fr); gap: 1rem; }
    .initials-avatar, .tribute__avatar { width: 2.75rem; height: 2.75rem; font-size: .7rem; }
    .initials-avatar--small, .tribute__avatar--small { width: 2.25rem; height: 2.25rem; font-size: .62rem; }
    .nested-replies, .tribute__replies { padding-left: .85rem; }
    .nested-reply, .tribute-reply { grid-template-columns: 2.25rem minmax(0, 1fr); gap: .75rem; }
    .lightbox__stage { padding: 4.25rem 4rem .75rem; }
    .lightbox__tray { max-height: min(40dvh, 15rem); padding: .7rem 1rem max(.7rem, env(safe-area-inset-bottom)); }
    .lightbox__details { gap: .75rem; }
    .lightbox__arrow { width: 3.1rem; height: 3.1rem; margin-inline: .45rem; }
    .lightbox__close { top: .65rem; right: .65rem; width: 3.1rem; height: 3.1rem; }
    .image-credits li { grid-template-columns: 1fr; gap: .15rem; }
    .image-credit__separator { display: none; }
    .share-dialog { width: calc(100% - 1rem); }
    .share-dialog__content { padding: 2rem 1.25rem 1.5rem; }
    .share-dialog__actions { grid-template-columns: 1fr; }
    .share-option { min-height: 4.75rem; }
    .submission-dialog { width: calc(100% - 1rem); }
    .submission-dialog__content { padding: 2rem 1.25rem 1.5rem; }
    .tribute-form-column { width: calc(100% - 2rem); }
    .tribute-form__submit { width: 100%; }
}

/* Public Free QR generator. */
.free-qr-shell { width: min(68rem, calc(100% - 3rem)); margin-inline: auto; }
.free-qr-hero { padding: clamp(5rem, 10vw, 8rem) 0 clamp(3rem, 6vw, 5rem); background: var(--soft-paper); text-align: center; }
.free-qr-hero h1 { max-width: 12ch; margin: 0 auto; font: 400 clamp(3rem, 7vw, 6rem)/.98 var(--serif); letter-spacing: -.045em; }
.free-qr-hero > div > p:last-child { max-width: 42rem; margin: 1.5rem auto 0; color: var(--muted); font: clamp(1.05rem, 2vw, 1.3rem)/1.55 var(--serif); }
.free-qr-workspace { padding-block: clamp(4rem, 7vw, 6rem); }
.free-qr-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(18rem, .85fr); gap: clamp(2rem, 6vw, 6rem); align-items: start; }
.free-qr-grid h2 { margin: 0; font: 400 clamp(2rem, 4vw, 3.25rem)/1.08 var(--serif); }
.free-qr-form { display: grid; gap: .65rem; margin-top: 2rem; }
.free-qr-form label { font-size: .78rem; font-weight: 700; letter-spacing: .04em; }
.free-qr-form input { width: 100%; min-height: var(--control-height); padding: .7rem .8rem; border: 1px solid #cfd0ca; border-radius: var(--control-radius); background: white; color: var(--ink); }
.free-qr-form input:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.free-qr-form .field-help { margin: 0; color: var(--muted); font-size: .76rem; }
.free-qr-button { display: inline-flex; width: fit-content; min-height: var(--control-height); align-items: center; justify-content: center; margin-top: .6rem; padding: .6rem 1rem; border: 1px solid var(--accent); border-radius: var(--control-radius); background: var(--accent); color: white; font-size: .8rem; font-weight: 700; text-decoration: none; cursor: pointer; }
.free-qr-button--secondary { background: white; color: var(--accent-dark); }
.free-qr-button:is(:hover, :focus-visible) { border-color: var(--accent-dark); background: var(--accent-dark); color: white; outline: 0; }
.free-qr-result { min-height: 26rem; padding: clamp(1.5rem, 4vw, 2.5rem); border: 1px solid var(--line); background: var(--soft-paper); }
.free-qr-preview { width: min(18rem, 100%); margin: 1.5rem auto; border: 1px solid var(--line); background: white; }
.free-qr-destination { overflow-wrap: anywhere; color: var(--muted); font-size: .76rem; text-align: center; }
.free-qr-download-form { margin-top: 2rem; padding-top: 2rem; border-top: 1px solid var(--line); }
.free-qr-download-form h3 { margin: 0 0 .5rem; font: 400 1.4rem var(--serif); }
.free-qr-downloads { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1.25rem; }
.free-qr-privacy, .free-qr-unavailable { display: block; margin-top: 1.25rem; color: var(--muted); font-size: .76rem; }
.free-qr-notice { margin-bottom: 1.5rem; padding: .8rem 1rem; border: 1px solid; font-size: .82rem; }
.free-qr-notice--success { border-color: #b9cbbd; background: #f0f6f1; color: #304a37; }
.free-qr-notice--error, .free-qr-field-error { color: #8a2d2d; }
.free-qr-notice--error { border-color: #dfb6b6; background: #fff5f5; }
.free-qr-field-error { margin: 0; font-size: .76rem; }
.free-qr-resend { margin-top: 2rem; padding-top: 1.25rem; border-top: 1px solid var(--line); }
.free-qr-resend p { margin: 0 0 .4rem; color: var(--muted); font-size: .8rem; }
.free-qr-resend button { padding: 0; border: 0; background: transparent; color: var(--accent-dark); font: 600 .8rem var(--sans); text-decoration: underline; text-underline-offset: .2rem; cursor: pointer; }
.free-qr-placeholder { display: grid; grid-template-columns: repeat(3, 3.5rem); grid-template-rows: repeat(3, 3.5rem); width: 10.5rem; margin: 4rem auto 2rem; opacity: .15; }
.free-qr-placeholder span { border: .7rem solid var(--ink); }
.free-qr-placeholder span:nth-child(1) { grid-area: 1 / 1; }
.free-qr-placeholder span:nth-child(2) { grid-area: 1 / 3; }
.free-qr-placeholder span:nth-child(3) { grid-area: 3 / 1; }
.free-qr-placeholder + p { color: var(--muted); text-align: center; }

/* Task 12 public information pages and shared calls to action. */
.public-button { display: inline-flex; min-height: var(--control-height); align-items: center; justify-content: center; padding: .6rem 1.1rem; border: 1px solid var(--accent); border-radius: var(--control-radius); font-size: .78rem; font-weight: 700; text-decoration: none; }
.public-button--primary { background: var(--accent); color: white; }
.public-button--secondary { background: transparent; color: var(--accent-dark); }
.public-button:is(:hover, :focus-visible) { border-color: var(--accent-dark); background: var(--accent-dark); color: white; outline: none; }
.public-button:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.homepage-hero__actions, .public-page-actions { display: flex; flex-wrap: wrap; gap: .75rem; }
.homepage-hero__actions { justify-content: center; margin-top: 2rem; }
.public-page-shell { width: min(72rem, calc(100% - 3rem)); margin-inline: auto; }
.public-page-hero { padding: clamp(5.5rem, 11vw, 9rem) 0 clamp(4.5rem, 8vw, 7rem); background: var(--soft-paper); text-align: center; }
.public-page-hero h1 { max-width: 13ch; margin: 0 auto; font: 400 clamp(3.2rem, 7vw, 6.5rem)/.98 var(--serif); letter-spacing: -.045em; }
.public-page-hero > div > p:last-child { max-width: 43rem; margin: 1.5rem auto 0; color: var(--muted); font: clamp(1.05rem, 2vw, 1.35rem)/1.55 var(--serif); }
.public-page-content { padding-block: clamp(4rem, 8vw, 7rem); }
.public-page-content > * + * { margin-top: clamp(4rem, 8vw, 7rem); }
.public-page-introduction { display: grid; grid-template-columns: minmax(10rem, .65fr) minmax(0, 1.35fr); gap: clamp(2rem, 7vw, 7rem); align-items: start; }
.public-page-introduction .section-kicker { padding-top: .45rem; }
.public-page-introduction h2, .public-page-note h2, .public-page-cta h2 { margin: 0; font: 400 clamp(2rem, 4vw, 3.6rem)/1.08 var(--serif); letter-spacing: -.03em; }
.public-page-introduction div > p, .public-page-note > p:last-child { max-width: 47rem; margin: 1.25rem 0 0; color: #4d504b; font: clamp(1.02rem, 1.4vw, 1.16rem)/1.75 var(--serif); }
.section-heading--left { align-items: end; }
.section-heading--left h2 { text-align: left; }
.public-page-card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin-top: 2rem; }
.public-page-card-grid--two { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 0; }
.public-page-card-grid article { padding: clamp(1.5rem, 3vw, 2.25rem); border: 1px solid var(--line); background: white; }
.public-page-card-grid h3, .resource-feature h3 { margin: 0; font: 400 clamp(1.45rem, 2.4vw, 2rem)/1.2 var(--serif); }
.public-page-card-grid p, .resource-feature p { margin: .9rem 0 0; color: var(--muted); }
.public-page-card-grid article > a { display: inline-block; margin-top: 1.25rem; color: var(--accent-dark); font-size: .78rem; font-weight: 700; text-underline-offset: .25rem; }
.public-process { margin: 0; padding: 0; list-style: none; }
.public-process li { display: grid; grid-template-columns: 4rem minmax(0, 1fr); gap: clamp(1rem, 4vw, 3rem); padding: 2rem 0; border-top: 1px solid var(--line); }
.public-process li:last-child { border-bottom: 1px solid var(--line); }
.public-process li > span { padding-top: .25rem; color: var(--accent); font-size: .72rem; font-weight: 700; letter-spacing: .14em; }
.public-process h2 { margin: 0; font: 400 clamp(1.6rem, 3vw, 2.5rem)/1.15 var(--serif); }
.public-process p { max-width: 48rem; margin: .75rem 0 0; color: var(--muted); }
.resource-feature { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2rem; align-items: center; margin-top: 2rem; padding: clamp(1.75rem, 4vw, 3rem); border: 1px solid var(--line); background: var(--soft-paper); }
.resource-feature .section-kicker { margin-bottom: .65rem; }
.resource-feature .public-button { white-space: nowrap; }
.public-page-note { max-width: 49rem; padding-left: clamp(1.5rem, 4vw, 3rem); border-left: 2px solid var(--accent); }
.public-page-cta { display: flex; align-items: center; justify-content: space-between; gap: 2rem; padding: clamp(2rem, 5vw, 4rem); background: var(--soft-paper); }
.public-page-cta h2 { max-width: 14ch; }

/* Database-backed public-page content; the renderer strips raw HTML and unsafe links. */
.cms-prose { max-width: 52rem; color: #4d504b; font: clamp(1.02rem, 1.4vw, 1.16rem)/1.75 var(--serif); }
.cms-prose > :first-child { margin-top: 0; }
.cms-prose > :last-child { margin-bottom: 0; }
.cms-prose h2 { margin: 3.5rem 0 1rem; color: var(--ink); font: 400 clamp(2rem, 4vw, 3.6rem)/1.08 var(--serif); letter-spacing: -.03em; }
.cms-prose h3 { margin: 2.25rem 0 .65rem; color: var(--ink); font: 400 clamp(1.4rem, 2.4vw, 2rem)/1.2 var(--serif); }
.cms-prose p, .cms-prose ul, .cms-prose ol, .cms-prose blockquote { margin: 1rem 0; }
.cms-prose :is(ul, ol) { padding-left: 1.5rem; }
.cms-prose li + li { margin-top: .55rem; }
.cms-prose a { color: var(--accent-dark); font-weight: 700; text-underline-offset: .25rem; }
.cms-prose blockquote { padding: .5rem 0 .5rem 1.5rem; border-left: 2px solid var(--accent); }
.cms-prose--about, .cms-prose--cards { max-width: none; }
.cms-prose--about h3, .cms-prose--cards h3 { padding: 1.25rem 0 0 1.5rem; border-top: 1px solid var(--line); border-left: 2px solid var(--accent); }
.cms-prose--about h3 + p, .cms-prose--cards h3 + p { margin-top: 0; padding: .65rem 0 1.25rem 1.5rem; border-left: 2px solid var(--accent); }
.cms-prose--process { max-width: none; counter-reset: public-process; }
.cms-prose--process h2 { position: relative; margin: 0; padding: 2rem 0 0 6rem; border-top: 1px solid var(--line); counter-increment: public-process; }
.cms-prose--process h2::before { position: absolute; top: 2.4rem; left: 0; color: var(--accent); font: 700 .72rem var(--sans); letter-spacing: .14em; content: counter(public-process, decimal-leading-zero); }
.cms-prose--process h2 + p { margin: .75rem 0 2rem; padding-left: 6rem; }
.cms-prose--process > :last-child { padding-bottom: 2rem; border-bottom: 1px solid var(--line); }
.cms-prose--note { padding-left: clamp(1.5rem, 4vw, 3rem); border-left: 2px solid var(--accent); }

@media (max-width: 48rem) {
    .free-qr-grid { grid-template-columns: 1fr; }
    .free-qr-result { min-height: 0; }
    .public-page-shell, .free-qr-shell { width: calc(100% - 2rem); }
    .public-page-introduction, .resource-feature { grid-template-columns: 1fr; }
    .public-page-card-grid, .public-page-card-grid--two { grid-template-columns: 1fr; }
    .public-page-cta { display: block; }
    .public-page-actions { margin-top: 1.5rem; }
    .cms-prose--process h2, .cms-prose--process h2 + p { padding-left: 3.75rem; }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    .media-card, .media-art, .life-story__tab::after, .memorial-button, .memorial-action--text span, .share-option { transition-duration: .01ms !important; animation: none !important; }
}
