:root {
    color-scheme: light;
    --ink: #191b1a;
    --muted: #626864;
    --paper: #f7f6f2;
    --surface: #ffffff;
    --line: #d9d8d2;
    --line-strong: #b8bbb5;
    --table-border: #89938b;
    --accent: #315b47;
    --accent-strong: #183f2d;
    --focus: #a64b16;
    --measure: 68ch;
    --wide: 82rem;
    --gutter: clamp(1rem, 3vw, 2.5rem);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    color: var(--ink);
    background: var(--paper);
    line-height: 1.65;
    font-synthesis: none;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; min-width: 18rem; background: var(--paper); }
a { color: var(--accent-strong); text-decoration-thickness: .08em; text-underline-offset: .2em; }
a:hover { text-decoration-thickness: .14em; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 4px; }
::selection { background: #d9e7df; }

.skip-link {
    position: fixed;
    left: var(--gutter);
    top: -6rem;
    z-index: 20;
    padding: .7rem 1rem;
    background: var(--ink);
    color: white;
    border-radius: .25rem;
}
.skip-link:focus { top: 1rem; }

.site-header, main, .site-footer {
    width: min(calc(100% - (2 * var(--gutter))), var(--wide));
    margin-inline: auto;
}
.site-header {
    display: grid;
    grid-template-columns: minmax(12rem, 1fr) auto;
    gap: .5rem 2rem;
    align-items: end;
    padding-block: clamp(1.4rem, 4vw, 3rem) 1.35rem;
    border-bottom: 1px solid var(--line-strong);
}
.site-title {
    color: var(--ink);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(1.65rem, 3vw, 2.35rem);
    font-weight: 600;
    letter-spacing: -.025em;
    line-height: 1;
    text-decoration: none;
}
.site-header > p { grid-column: 1; margin: .35rem 0 0; max-width: 58ch; color: var(--muted); font-size: .94rem; }
.site-header > nav, .site-header > .configured-navigation { grid-column: 2; grid-row: 1 / span 2; align-self: end; }
.site-header > p:last-child { grid-column: 2; grid-row: 3; justify-self: end; }
.site-header nav a[aria-current="page"], .site-header > p a[aria-current="page"] { color: var(--ink); font-weight: 700; text-decoration-thickness: .14em; }
.site-header nav:not(.configured-navigation) { display: flex; gap: 1.25rem; }

main { padding-block: clamp(2rem, 5vw, 4.5rem) clamp(3rem, 7vw, 6rem); min-height: 62vh; }
h1, h2, h3 { text-wrap: balance; }
h1 {
    max-width: 24ch;
    margin: 0 0 .8rem;
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(2rem, 5vw, 4.25rem);
    font-weight: 500;
    letter-spacing: -.035em;
    line-height: 1.04;
    overflow-wrap: anywhere;
}
h1 a { color: inherit; text-decoration: none; }
h2 { line-height: 1.2; }
p { text-wrap: pretty; }
.publication { color: var(--muted); margin: 0 0 1.6rem; font-size: .92rem; }
.excerpt { max-width: var(--measure); overflow-wrap: anywhere; white-space: pre-wrap; font-size: 1.05rem; }
.message { max-width: var(--measure); overflow-wrap: anywhere; }
.content-notice { max-width: var(--measure); padding: .75rem 1rem; border-left: 3px solid var(--line-strong); color: var(--muted); background: rgba(255,255,255,.45); }

figure { margin: 0; }
figure a, picture { display: block; }
img { display: block; width: auto; max-width: 100%; height: auto; }
figcaption { max-width: var(--measure); margin-block: .8rem; color: var(--muted); font-size: .9rem; }
.route-home figure, .route-photo-detail > main > article > figure { margin-inline: auto; }
.route-home figure img, .route-photo-detail > main > article > figure img { max-height: min(76vh, 62rem); margin-inline: auto; object-fit: contain; }
.route-home .photograph-heading { margin-bottom: clamp(1.5rem, 4vw, 3rem); }
.route-home .photograph-heading h1 { font-size: clamp(2.25rem, 6vw, 5rem); }
.route-photo-detail > main > article > .excerpt,
.route-photo-detail > main > article > .page-body,
.route-photo-detail > main > article > .content-notice { margin-inline: auto; }

.photograph-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(1.25rem, 3vw, 2.75rem);
    padding: 0;
    margin: 2.25rem 0 0;
    list-style: none;
}
.photograph-grid li { min-width: 0; }
.photograph-grid a { display: block; color: var(--ink); overflow-wrap: anywhere; text-decoration: none; border-radius: .125rem; }
.photograph-grid a:hover img { opacity: .88; }
.photograph-grid a:focus-visible { outline: 3px solid currentColor; outline-offset: 5px; }
@supports (content-visibility: auto) {
    .photograph-grid li { content-visibility: auto; contain-intrinsic-size: auto 340px; }
}

.blog-list { list-style: none; padding: 0; margin: 2rem 0 0; max-width: var(--measure); overflow-wrap: anywhere; }
.blog-list li { margin: 0; padding: 1.6rem 0; border-top: 1px solid var(--line); }
.blog-list li:last-child { border-bottom: 1px solid var(--line); }
.blog-list h2 { margin: 0 0 .45rem; font-family: Georgia, "Times New Roman", serif; font-size: clamp(1.4rem, 3vw, 2rem); font-weight: 500; letter-spacing: -.015em; }
.blog-list h2 a { color: var(--ink); }
.blog-list .publication { margin-bottom: .6rem; }
.blog-list .excerpt { margin-bottom: 0; }

.page-content { max-width: 76rem; overflow-wrap: anywhere; }
.page-content > h1, .page-content > .publication, .page-content > .excerpt, .page-content > .content-notice, .page-content > .page-body { margin-left: clamp(0rem, 6vw, 5rem); }
.page-body { max-width: var(--measure); font-family: Georgia, "Times New Roman", serif; font-size: clamp(1.05rem, 1.3vw, 1.16rem); }
.page-body > :first-child { margin-top: 0; }
.page-body h2, .page-body h3, .page-body h4, .page-body h5, .page-body h6 { margin-top: 1.8em; line-height: 1.2; }
.page-body a { overflow-wrap: anywhere; }
.page-body img { margin-block: 1.5rem; }
.page-body pre { max-width: 100%; overflow-x: auto; padding: 1rem; background: #ecebe6; font-size: .9rem; }
/* B474: readable editorial tables on Pages, Blog posts and Rambles.
   Stronger grid lines, accessible header contrast and responsive overflow. */
:is(.page-body, .body) table {
    border-collapse: collapse;
    width: 100%;
    max-width: 100%;
    margin-block: 1.5rem;
    border: 1px solid var(--table-border);
    background: var(--surface);
    color: var(--ink);
    font-family: inherit;
    font-size: .94em;
}
:is(.page-body, .body) table caption {
    caption-side: top;
    padding-block-end: .5rem;
    text-align: left;
    font-weight: 700;
}
:is(.page-body, .body) table th,
:is(.page-body, .body) table td {
    border: 1px solid var(--table-border);
    padding: .65rem .8rem;
    text-align: left;
    vertical-align: top;
    overflow-wrap: anywhere;
}
:is(.page-body, .body) table th {
    background: var(--line);
    color: var(--ink);
    font-weight: 700;
}
/* On narrow screens, allow horizontal scrolling rather than clipping cells. */
@media (max-width: 40rem) {
    :is(.page-body, .body) table {
        display: block;
        overflow-x: auto;
        overscroll-behavior-inline: contain;
    }
    :is(.page-body, .body) table th,
    :is(.page-body, .body) table td { min-width: 6rem; }
}
@media (forced-colors: active) {
    :is(.page-body, .body) table,
    :is(.page-body, .body) table th,
    :is(.page-body, .body) table td { border-color: CanvasText; }
}
.page-body blockquote { margin: 1.6rem 0; padding: .1rem 0 .1rem 1.2rem; border-left: 3px solid var(--accent); color: #454a47; font-size: 1.08em; }
.page-hero { margin: 2rem 0 2.5rem; }
.page-hero img { width: 100%; max-height: 65vh; object-fit: cover; }

.pagination { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; margin-top: 2.5rem; padding-top: 1.25rem; border-top: 1px solid var(--line); }
.pagination a { display: inline-block; padding-block: .2rem; font-weight: 600; }
.pagination span { color: var(--muted); }

.configured-navigation ul { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .5rem 1.25rem; }
.configured-navigation li { position: relative; min-width: 0; max-width: 100%; overflow-wrap: anywhere; }
.configured-navigation li ul { display: block; margin-top: .4rem; padding-left: .9rem; border-left: 1px solid var(--line); }
.configured-navigation li li { margin-block: .3rem; }

.search-form, .contact-form { max-width: var(--measure); }
.search-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .55rem .75rem; align-items: end; }
.search-form label { grid-column: 1 / -1; font-weight: 600; }
.search-form input, .search-form button,
.contact-form input, .contact-form textarea, .contact-form button {
    min-width: 0;
    max-width: 100%;
    border: 1px solid var(--line-strong);
    border-radius: .2rem;
    background: var(--surface);
    color: var(--ink);
    font: inherit;
    padding: .68rem .8rem;
}
.search-form input:focus, .contact-form input:focus, .contact-form textarea:focus { border-color: var(--accent); }
.search-form button, .contact-form button { border-color: var(--accent-strong); background: var(--accent-strong); color: white; font-weight: 700; cursor: pointer; }
.search-form button:hover, .contact-form button:hover { background: var(--ink); }
.contact-form { display: grid; gap: .55rem; }
.contact-form label:not(.contact-consent) { margin-top: .45rem; font-weight: 600; }
.contact-form textarea { width: 100%; resize: vertical; }
.contact-consent { display: flex; align-items: flex-start; gap: .6rem; margin-block: .65rem; overflow-wrap: anywhere; }
.contact-consent input { width: auto; margin-top: .35rem; }
.contact-form button { justify-self: start; }

.site-footer { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; border-top: 1px solid var(--line-strong); padding-block: 1.5rem 3rem; color: var(--muted); font-size: .9rem; }
.site-footer .configured-navigation ul { justify-content: flex-start; }

@media (max-width: 64rem) {
    .photograph-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .page-content > h1, .page-content > .publication, .page-content > .excerpt, .page-content > .content-notice, .page-content > .page-body { margin-left: 0; }
}

@media (max-width: 46rem) {
    html { scroll-behavior: auto; }
    .site-header { display: block; padding-block: 1.35rem 1rem; }
    .site-header > p { margin-top: .45rem; }
    .site-header > nav, .site-header > .configured-navigation { margin-top: 1rem; }
    .site-header > p:last-child { margin-top: .8rem; }
    .site-header nav:not(.configured-navigation) { gap: 1rem; }
    .configured-navigation ul { display: block; }
    .configured-navigation > ul > li { margin-block: .55rem; }
    main { padding-block: 2rem 3.5rem; }
    h1 { font-size: clamp(2rem, 10vw, 3.25rem); }
    .photograph-grid { grid-template-columns: 1fr; gap: 2rem; }
    .search-form { grid-template-columns: 1fr; }
    .search-form label { grid-column: auto; }
    .search-form button { justify-self: start; }
    .pagination { align-items: flex-start; flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .001ms !important; }
}

@media (forced-colors: active) {
    .photograph-grid img, .search-form input, .contact-form input, .contact-form textarea { border: 1px solid CanvasText; }
}

.photo-metadata { max-width: var(--measure); margin: 1.5rem auto 2rem; padding-block: 1rem; border-block: 1px solid var(--line); }
.photo-metadata h2 { margin: 0 0 .8rem; font-size: 1rem; font-family: inherit; }
.photo-metadata dl { display: grid; gap: .45rem 1.5rem; margin: 0; }
.photo-metadata dl > div { display: grid; grid-template-columns: minmax(8rem, 12rem) 1fr; gap: 1rem; }
.photo-metadata dt { color: var(--muted); }
.photo-metadata dd { margin: 0; overflow-wrap: anywhere; }
@media (max-width: 42rem) { .photo-metadata dl > div { grid-template-columns: 1fr; gap: .1rem; } }


/* B215 3C: persistent, accessible Contact success feedback. */
.contact-success {
  display: flex; align-items: flex-start; gap: .75rem;
  max-width: 68ch; margin-block: 1.25rem; padding: 1rem 1.125rem;
  border: 1px solid #24754b; border-inline-start: .3rem solid #24754b;
  border-radius: .5rem; background: #e8f6ed; color: #123d28;
  font: inherit; font-weight: 650; line-height: 1.5; overflow-wrap: anywhere;
}
.contact-success-icon {
  display: inline-grid; flex: 0 0 1.5rem; place-items: center;
  width: 1.5rem; height: 1.5rem; border-radius: 50%;
  background: #20633f; color: #fff; font-size: 1rem; font-weight: 700;
}
@media (prefers-color-scheme: dark) {
  .contact-success { background: #123524; color: #e2f8e9; border-color: #6ecb95; }
  .contact-success-icon { background: #6ecb95; color: #092b1a; }
}
@media (forced-colors: active) {
  .contact-success { border-color: CanvasText; color: CanvasText; background: Canvas; }
  .contact-success-icon { background: Highlight; color: HighlightText; }
}

/* B216: curated collection presentation (independent public client). */
.rmpxl-collection { margin-block: 1.5rem 2rem; }
.rmpxl-collection__items { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr)); gap: 1rem; }
.rmpxl-collection__item { margin: 0; min-width: 0; }
.rmpxl-collection__item img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: .25rem; }
.rmpxl-collection--masonry .rmpxl-collection__items { columns: 3 13rem; display: block; }
.rmpxl-collection--masonry .rmpxl-collection__item { break-inside: avoid; margin-bottom: 1rem; }
.rmpxl-collection--masonry img { aspect-ratio: auto; height: auto; }
.rmpxl-collection--carousel .rmpxl-collection__items { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: .75rem; }
.rmpxl-collection--carousel .rmpxl-collection__item { flex: 0 0 min(80%, 20rem); scroll-snap-align: start; }
.rmpxl-collection a:focus-visible { outline: 3px solid currentColor; outline-offset: 3px; }
@media (forced-colors: active) { .rmpxl-collection img { border: 1px solid CanvasText; } }


/* B216 cinematic collection viewer; isolated from theme typography. */
.rmpxl-lb { z-index:2147483000; position:fixed; inset:0; width:100vw; max-width:none; height:100dvh; max-height:none; padding:0; margin:0; border:0; background:#0c0e11; color:#f5f5f5; }
.rmpxl-lb[role="dialog"] { box-shadow:0 0 0 100vmax rgba(0,0,0,.94); }
.rmpxl-lb-shell { display:flex; flex-direction:column; height:100%; min-height:0; padding:env(safe-area-inset-top) max(12px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(12px,env(safe-area-inset-left)); box-sizing:border-box; font:inherit; }
.rmpxl-lb-top { display:flex; justify-content:space-between; align-items:center; min-height:48px; color:#ddd; font-size:.9rem; }
.rmpxl-lb-button { background:rgba(40,43,48,.8); color:#fff; border:1px solid #666; border-radius:999px; min-width:44px; min-height:44px; cursor:pointer; font-size:1.6rem; }
.rmpxl-lb-button:focus-visible,.rmpxl-lb-thumb:focus-visible { outline:3px solid #fff; outline-offset:3px; }
.rmpxl-lb-stage { flex:1; min-height:0; display:flex; align-items:center; justify-content:center; gap:clamp(4px,1.5vw,18px); }
.rmpxl-lb-stage .rmpxl-lb-image { width:auto; max-width:calc(100% - 104px); height:auto; max-height:100%; object-fit:contain; aspect-ratio:auto; border-radius:0; }
.rmpxl-lb-caption { margin:8px 0 4px; min-height:1.4em; text-align:center; color:#e0e0e0; font-size:.9rem; }
.rmpxl-lb-toggle { align-self:center; font-size:.8rem; min-height:36px; padding:0 16px; }
.rmpxl-lb-filmstrip { display:flex; align-items:center; gap:8px; overflow-x:auto; overscroll-behavior-x:contain; padding:10px 6px; min-height:78px; scrollbar-width:thin; }
.rmpxl-lb-filmstrip[hidden] { display:none; }
.rmpxl-lb-thumb { flex:0 0 64px; height:64px; border:2px solid transparent; border-radius:5px; background:transparent; padding:2px; opacity:.6; cursor:pointer; }
.rmpxl-lb-thumb[aria-current="true"] { border-color:#fff; opacity:1; }
.rmpxl-lb-thumb img { width:100%; height:100%; aspect-ratio:1; object-fit:cover; border-radius:2px; }
@media (max-width:540px) { .rmpxl-lb-stage .rmpxl-lb-image { max-width:calc(100% - 88px); } .rmpxl-lb-thumb { flex-basis:52px; height:52px; } }
@media (prefers-reduced-motion:reduce) { .rmpxl-lb * { scroll-behavior:auto!important; transition:none!important; animation:none!important; } }


/* B219: accessible responsive navigation shared by both public clients. */
.shell-header,.b219-header { position:relative; display:flex; align-items:center; gap:1.25rem; flex-wrap:nowrap; }
.shell-header .site-name,.b219-brand { flex-shrink:0; }
.shell-desktop-nav,.b219-desktop-nav { margin-inline-start:auto; min-width:0; }
.shell-actions,.b219-actions { display:flex; gap:.35rem; align-items:center; margin-inline-start:auto; }
.shell-actions button,.b219-actions button,.shell-menu-top button,.b219-menu-top button { display:inline-flex; align-items:center; justify-content:center; gap:.4rem; min-width:44px; min-height:44px; font:inherit; cursor:pointer; border:1px solid currentColor; border-radius:.35rem; background:transparent; color:inherit; }
.shell-menu-toggle,.b219-menu-toggle { display:none!important; }
.shell-search-popover,.b219-search-popover { position:absolute; z-index:20; right:0; top:100%; width:min(26rem,100%); padding:1rem; background:var(--gallery-bg,Canvas); color:var(--gallery-fg,CanvasText); border:1px solid currentColor; box-sizing:border-box; box-shadow:0 8px 24px #0003; }
.b219-search-popover[hidden] { display:none; }
.shell-search-form,.b219-search-form { display:grid; gap:.4rem; min-width:0; }
.shell-search-form > div,.b219-search-form > div { display:flex; gap:.4rem; min-width:0; }
.shell-search-form input,.b219-search-form input { flex:1; width:0; min-width:0; padding:.65rem; font:inherit; border:1px solid currentColor; border-radius:.25rem; background:var(--gallery-bg,Canvas); color:inherit; }
.shell-search-form button,.b219-search-form button { padding:.65rem; font:inherit; cursor:pointer; }
.shell-menu-dialog,.b219-menu-dialog { position:fixed; inset:0; left:auto; right:0; top:0; bottom:0; width:min(24rem,90vw); max-width:none; height:100dvh; max-height:none; padding:0; margin:0; border:0; background:var(--gallery-bg,Canvas); color:var(--gallery-fg,CanvasText); box-shadow:-8px 0 28px #0005; }
.shell-menu-dialog::backdrop,.b219-menu-dialog::backdrop { background:rgba(0,0,0,.65); }
.shell-menu-dialog[open],.b219-menu-dialog[open] { animation:b219-slide .2s ease-out; }
@keyframes b219-slide { from { transform:translateX(100%); } to { transform:translateX(0); } }
.shell-menu-panel,.b219-menu-panel { padding:clamp(1rem,4vw,2rem); overflow-y:auto; height:100%; box-sizing:border-box; overscroll-behavior:contain; }
.shell-menu-top,.b219-menu-top { display:flex; align-items:center; justify-content:space-between; margin-bottom:1.5rem; }
.shell-menu-top button,.b219-menu-top button { font-size:1.75rem; }
.shell-menu-panel nav,.b219-menu-panel nav { margin-top:1.5rem; }
.shell-menu-panel nav ul,.b219-menu-panel nav ul { display:grid; gap:.2rem; list-style:none; padding:0; margin:0; }
.shell-menu-panel nav ul ul,.b219-menu-panel nav ul ul { padding-inline-start:1rem; margin-top:.2rem; }
.shell-menu-panel nav a,.b219-menu-panel nav a { display:block; padding:.75rem .25rem; text-decoration:none; border-bottom:1px solid currentColor; }
.shell-header button:focus-visible,.b219-header button:focus-visible,.shell-menu-dialog :focus-visible,.b219-menu-dialog :focus-visible { outline:3px solid currentColor; outline-offset:3px; }
@media(max-width:768px) {
  .shell-desktop-nav,.b219-desktop-nav { display:none!important; }
  .shell-menu-toggle,.b219-menu-toggle { display:inline-flex!important; }
  .shell-search-toggle,.b219-search-toggle { display:none!important; }
  .shell-search-popover,.b219-search-popover { display:none!important; }
  .shell-header,.b219-header { justify-content:space-between; }
  .shell-actions,.b219-actions { margin-inline-start:auto; }
}
@media(prefers-reduced-motion:reduce) { .shell-menu-dialog[open],.b219-menu-dialog[open] { animation:none; } }

/* B219.2: desktop navigation is one right-aligned group; search is its final icon. */
@media (min-width: 769px) {
  .shell-header, .b219-header { justify-content: flex-end; gap: clamp(.4rem, 1.2vw, 1.15rem); }
  .shell-header .site-name, .b219-brand { margin-inline-end: auto; }
  .shell-desktop-nav, .b219-desktop-nav { margin-inline-start: 0; flex: 0 1 auto; }
  .shell-desktop-nav nav > ul, .b219-desktop-nav .configured-navigation > ul { justify-content: flex-end; align-items: center; }
  .shell-actions, .b219-actions { margin-inline-start: 0; flex: 0 0 auto; }
  .shell-search-toggle, .b219-search-toggle {
    border: 0 !important; border-radius: 50% !important; box-shadow: none !important;
    background: transparent !important; color: inherit; padding: .55rem;
    min-width: 44px; min-height: 44px;
  }
  .shell-search-toggle:hover, .b219-search-toggle:hover { background: color-mix(in srgb, currentColor 9%, transparent) !important; }
  .shell-search-toggle:focus-visible, .b219-search-toggle:focus-visible { outline: 3px solid currentColor; outline-offset: 2px; }
}


/* B219.3 — editorial article hierarchy and responsive contextual panels. */
.editorial-layout { display: grid; grid-template-columns: minmax(0, 3fr) minmax(13rem, 1fr); gap: clamp(1.5rem, 3.5vw, 4rem); align-items: start; margin-block: clamp(2rem, 4vw, 3.5rem); }
.editorial-main, .editorial-sidebar { min-width: 0; }
.editorial-main > .excerpt { font-family: Georgia, 'Times New Roman', serif; font-size: clamp(1.2rem, 1.65vw, 1.5rem); line-height: 1.55; font-weight: 500; border-inline-start: 3px solid var(--accent, var(--gallery-accent, currentColor)); padding-inline-start: clamp(1rem, 2vw, 1.5rem); margin: 0 0 2rem; max-width: 65ch; }
.editorial-main > .body, .editorial-main > .page-body { max-width: 68ch; margin-inline: 0; }
.editorial-sidebar { border-top: 1px solid var(--line, var(--gallery-rule, currentColor)); padding-block-start: 1.1rem; }
.editorial-sidebar .photo-metadata { max-width: none; margin: 0 0 2rem; padding: 0; border: 0; }
.editorial-sidebar .photo-metadata dl { display: block; }
.editorial-sidebar .photo-metadata dl > div { display: block; padding-block: .55rem; border-top: 1px solid var(--line, var(--gallery-rule, currentColor)); }
.editorial-sidebar .photo-metadata dt { font-size: .8rem; }
.editorial-sidebar .photo-metadata dd { margin: .2rem 0 0; }
.taxonomy { display: flex; flex-wrap: wrap; gap: .55rem; margin-block: 1rem 1.5rem; }
.taxonomy a { display: inline-flex; align-items: center; padding: .4rem .7rem; border-radius: .35rem; font-size: .86rem; line-height: 1.35; text-decoration: none; overflow-wrap: anywhere; }
.taxonomy a:hover { text-decoration: underline; }
.taxonomy-category { background: var(--line, #e8e8e4); color: var(--ink, var(--gallery-ink, inherit)); font-weight: 650; }
.taxonomy-tag { border: 1px solid var(--line-strong, var(--gallery-rule, currentColor)); color: inherit; }
.photograph-detail > .photograph, .route-photo-detail main figure { text-align: center; }
.photograph-detail > .photograph img, .route-photo-detail main figure img { display: block; width: auto; max-width: 100%; height: auto; max-height: 78dvh; object-fit: contain; margin-inline: auto; }
.photograph-detail > .photograph figcaption, .route-photo-detail main figure figcaption, .blog-hero figcaption { text-align: center; margin-inline: auto; }
@media (max-width: 52rem) { .editorial-layout { grid-template-columns: minmax(0, 1fr); } .editorial-sidebar { margin-block-start: 1rem; } }
@media print { .editorial-layout { display: block; } .editorial-sidebar { margin-top: 2rem; } }


/* B219: Separate semantic taxonomy groups; palette remains theme-configurable. */
.taxonomy { display: grid; gap: 1.15rem; margin-block: 1.25rem 1.75rem; }
.taxonomy-group h3 { margin: 0 0 .6rem; font-size: .78rem; letter-spacing: .09em; text-transform: uppercase; }
.taxonomy-links { display: flex; flex-wrap: wrap; gap: .55rem; }
.taxonomy-links a { display: inline-flex; align-items: center; gap: .4rem; padding: .42rem .72rem; border-radius: .4rem; font-size: .86rem; line-height: 1.4; text-decoration: none; overflow-wrap: anywhere; }
.taxonomy-links .taxonomy-category { background: var(--taxonomy-category-bg, #dbe8e9); color: var(--taxonomy-category-ink, #244b50); border: 1px solid transparent; font-weight: 650; }
.taxonomy-links .taxonomy-tag { background: transparent; color: inherit; border: 1px solid var(--line-strong, #808080); }
.taxonomy-links a:hover { text-decoration: underline; }
.taxonomy-links a:focus-visible { outline: 3px solid currentColor; outline-offset: 3px; }

/* B219 Increment 6: client-owned presentation of Core-managed regions. */
.gizmo-region{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:1.5rem;margin-block:2rem}
.gizmo{min-width:0;overflow-wrap:anywhere}
.gizmo img{max-width:100%;height:auto}


/* B219 I7: client-owned homepage presentation. The Core supplies only the selected identifier. */
.home-layout--editorial-split .photograph-detail,
.home-layout--editorial-split.route-home > main > article {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr);
  align-items: center; column-gap: clamp(2rem, 5vw, 6rem);
}
.home-layout--editorial-split .photograph-detail > figure,
.home-layout--editorial-split.route-home > main > article > figure { grid-column: 2; grid-row: 1 / span 4; }
.home-layout--editorial-split .photograph-detail > .editorial-layout,
.home-layout--editorial-split.route-home > main > article > .editorial-layout { grid-column: 1; }
.home-layout--featured-grid .photograph-detail > figure,
.home-layout--featured-grid.route-home > main > article > figure { max-width: 78rem; margin-inline: auto; }
.home-layout--featured-grid .gizmo-region--homepage { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; }
.home-layout--cinematic .photograph-detail > figure,
.home-layout--cinematic.route-home > main > article > figure { width: 100%; max-width: none; background: #101316; }
.home-layout--cinematic .photograph-detail > figure img,
.home-layout--cinematic.route-home > main > article > figure img { width: 100%; max-height: 85svh; object-fit: contain; }
.home-layout--magazine .photograph-detail > h1,
.home-layout--magazine.route-home .photograph-heading h1 { font-size: clamp(3rem, 8vw, 7rem); line-height: 1.05; }
.home-layout--magazine .gizmo-region--homepage { columns: 2 19rem; column-gap: 2rem; }
.home-layout--magazine .gizmo-region--homepage > * { break-inside: avoid; }
.home-layout--horizontal-gallery .gizmo-region--homepage { display: flex; overflow-x: auto; gap: 1.5rem; scroll-snap-type: x proximity; padding-block: 1rem; }
.home-layout--horizontal-gallery .gizmo-region--homepage > * { flex: 0 0 min(75vw, 28rem); scroll-snap-align: start; }
.home-layout--exhibition .photograph-detail > figure,
.home-layout--exhibition.route-home > main > article > figure { max-width: 68rem; margin-inline: auto; }
.home-layout--exhibition .photograph-detail > h1,
.home-layout--exhibition.route-home .photograph-heading { text-align: center; }
.home-layout--full-viewport-cover .photograph-detail > figure,
.home-layout--full-viewport-cover.route-home > main > article > figure { width: 100%; max-width: none; }
.home-layout--full-viewport-cover .photograph-detail > figure img,
.home-layout--full-viewport-cover.route-home > main > article > figure img { width: 100%; height: min(90svh, 70rem); max-height: none; object-fit: cover; }
@media (max-width: 48rem) {
  .home-layout--editorial-split .photograph-detail,
  .home-layout--editorial-split.route-home > main > article { display: block; }
  .home-layout--featured-grid .gizmo-region--homepage { grid-template-columns: 1fr; }
  .home-layout--magazine .gizmo-region--homepage { columns: 1; }
  .home-layout--full-viewport-cover .photograph-detail > figure img,
  .home-layout--full-viewport-cover.route-home > main > article > figure img { height: auto; max-height: 80svh; object-fit: contain; }
}
@media (prefers-reduced-motion: reduce) {
  .home-layout--horizontal-gallery .gizmo-region--homepage { scroll-behavior: auto; }
}


/* B219 Increment 8: distinct feature compositions, scoped to the homepage only.
   Preserve document order, native image aspect ratios, and keyboard navigation. */
.homepage-feature { min-width: 0; }
.homepage-feature > figure { min-width: 0; overflow: hidden; }
.homepage-feature > figure img { display: block; max-width: 100%; }
.homepage-feature--editorial-split { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); column-gap: clamp(1.5rem, 4vw, 5rem); align-items: center; }
.homepage-feature--editorial-split > figure { grid-column: 2; grid-row: 1 / span 3; margin: 0; }
.homepage-feature--editorial-split > .photograph-heading,
.homepage-feature--editorial-split > h1,
.homepage-feature--editorial-split > .editorial-layout { grid-column: 1; }
.homepage-feature--editorial-split > .editorial-layout { display: block; }
.homepage-feature--editorial-split > .editorial-layout > .editorial-sidebar { display: none; }
.homepage-feature--featured-grid > figure { margin-inline: auto; max-width: 78rem; }
.home-layout--featured-grid .gizmo-region--homepage { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(.75rem, 2vw, 1.5rem); }
.home-layout--featured-grid .gizmo-region--homepage img { display: block; width: 100%; height: auto; }
.homepage-feature--cinematic > figure { background: #101316; margin-inline: calc(50% - 50vw); width: 100vw; max-width: none; }
.homepage-feature--cinematic > figure img { width: 100%; max-height: 85svh; object-fit: contain; }
.homepage-feature--cinematic > .photograph-heading { max-width: 68rem; margin-inline: auto; }
.homepage-feature--magazine > .photograph-heading h1,
.homepage-feature--magazine > h1 { font-size: clamp(2.5rem, 7vw, 6.5rem); line-height: 1.04; }
.homepage-feature--magazine > figure { max-width: 78rem; margin-inline: auto; }
.home-layout--magazine .gizmo-region--homepage { columns: 2 20rem; column-gap: 2rem; display: block; }
.home-layout--magazine .gizmo-region--homepage > * { break-inside: avoid; margin-bottom: 2rem; }
.homepage-feature--horizontal-gallery > figure { max-width: 72rem; margin-inline: auto; }
.home-layout--horizontal-gallery .gizmo-region--homepage { display: flex; overflow-x: auto; overscroll-behavior-inline: contain; gap: 1.25rem; scroll-snap-type: x proximity; padding-block: 1rem; }
.home-layout--horizontal-gallery .gizmo-region--homepage > * { flex: 0 0 min(80vw, 28rem); scroll-snap-align: start; }
.homepage-feature--exhibition > .photograph-heading,
.homepage-feature--exhibition > h1 { text-align: center; }
.homepage-feature--exhibition > figure { max-width: 68rem; margin-inline: auto; }
.homepage-feature--exhibition > figure img { width: auto; max-height: 76svh; object-fit: contain; margin-inline: auto; }
.homepage-feature--full-viewport-cover > figure { width: 100vw; max-width: none; margin-inline: calc(50% - 50vw); }
.homepage-feature--full-viewport-cover > figure img { width: 100%; height: min(88svh, 65rem); object-fit: cover; }
@media (max-width: 48rem) {
  .homepage-feature--editorial-split { display: block; }
  .homepage-feature--editorial-split > figure { margin-block: 1.5rem; }
  .home-layout--featured-grid .gizmo-region--homepage { grid-template-columns: minmax(0, 1fr); }
  .home-layout--magazine .gizmo-region--homepage { columns: 1; }
  .homepage-feature--full-viewport-cover > figure img { height: auto; max-height: 80svh; object-fit: contain; }
}
@media (prefers-reduced-motion: reduce) { .home-layout--horizontal-gallery .gizmo-region--homepage { scroll-behavior: auto; } }


/* B219 Increment 10: resilient, keyboard-accessible homepage compositions.
   These rules are client-owned and do not affect article/detail routes. */
.home-layout--editorial-split .homepage-feature,
.homepage-feature--editorial-split,
.homepage-feature--editorial-split .photograph-detail {
  min-width: 0;
}
.home-layout--editorial-split .homepage-feature > *,
.homepage-feature--editorial-split > *,
.homepage-feature--editorial-split .photograph-detail > * { min-width: 0; }
.home-layout--horizontal-gallery .gizmo-region--homepage {
  min-width: 0;
  max-width: 100%;
  -webkit-overflow-scrolling: touch;
  scrollbar-gutter: stable;
}
.home-layout--horizontal-gallery .gizmo-region--homepage > * { min-width: 0; }
.home-layout--horizontal-gallery .gizmo-region--homepage :focus-visible {
  outline: 3px solid currentColor;
  outline-offset: 3px;
}
.home-layout--featured-grid .gizmo-region--homepage > *,
.home-layout--magazine .gizmo-region--homepage > * { min-width: 0; overflow-wrap: anywhere; }
.home-layout--featured-grid .gizmo-region--homepage img,
.home-layout--magazine .gizmo-region--homepage img { max-width: 100%; height: auto; }
@media (min-width: 48.001rem) and (max-width: 70rem) {
  .home-layout--featured-grid .gizmo-region--homepage { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 48rem) {
  .home-layout--editorial-split .homepage-feature,
  .homepage-feature--editorial-split,
  .homepage-feature--editorial-split .photograph-detail { display: block; }
  .home-layout--horizontal-gallery .gizmo-region--homepage > * { flex-basis: min(85vw, 22rem); }
}
@media (prefers-reduced-motion: reduce) {
  .home-layout--horizontal-gallery .gizmo-region--homepage { scroll-behavior: auto; }
}

/* B219 I11: shared homepage overflow and focus containment. */
.home-layout--cinematic,
.home-layout--full-viewport-cover { overflow-x: clip; }
.home-layout--cinematic .homepage-feature > figure,
.home-layout--full-viewport-cover .homepage-feature > figure,
.homepage-feature--cinematic > figure,
.homepage-feature--full-viewport-cover > figure { max-width: 100vw; }
.home-layout--horizontal-gallery .gizmo-region--homepage:focus-within { scrollbar-color: currentColor transparent; }
.home-layout--horizontal-gallery .gizmo-region--homepage > * { scroll-snap-stop: normal; }
@media (forced-colors: active) {
  .home-layout--horizontal-gallery .gizmo-region--homepage :focus-visible { outline: 3px solid Highlight; }
}

/* B219 I12: make the horizontal gallery scrollport discoverable to keyboard users. */
.home-layout--horizontal-gallery .gizmo-region--homepage:focus-visible { outline: 3px solid currentColor; outline-offset: -3px; }
@media (forced-colors: active) { .home-layout--horizontal-gallery .gizmo-region--homepage:focus-visible { outline-color: Highlight; } }


/* B222: semantic image presentation is owned by the public theme. */
:is(.page-body, .body) img.rmpxl-image { display: block; max-width: 100%; height: auto; clear: none; }
:is(.page-body, .body) .rmpxl-image--small { width: 25%; }
:is(.page-body, .body) .rmpxl-image--medium { width: 50%; }
:is(.page-body, .body) .rmpxl-image--large { width: 75%; }
:is(.page-body, .body) .rmpxl-image--full { width: 100%; }
:is(.page-body, .body) .rmpxl-image--left { float: left; margin: 0 1.5rem 1rem 0; }
:is(.page-body, .body) .rmpxl-image--right { float: right; margin: 0 0 1rem 1.5rem; }
:is(.page-body, .body) .rmpxl-image--centre { float: none; margin: 1.5rem auto; }
:is(.page-body, .body)::after { content: ''; display: block; clear: both; }
@media (max-width: 42rem) {
  :is(.page-body, .body) img.rmpxl-image { float: none; width: 100%; margin: 1.5rem auto; }
}


/* B255: PHP client nested navigation. Desktop flyout; mobile keeps the tree visible. */
@media (min-width: 769px) {
  .b219-desktop-nav .configured-navigation > ul { flex-wrap: nowrap; align-items: center; }
  .b219-desktop-nav .configured-navigation li { overflow-wrap: normal; }
  .b219-desktop-nav .configured-navigation li.has-children > ul {
    position: absolute; z-index: 50; inset-block-start: 100%; inset-inline-start: 0;
    display: block; visibility: hidden; opacity: 0; pointer-events: none;
    min-width: max(13rem, 100%); max-width: min(22rem, 80vw);
    margin: 0; padding: .45rem; border: 1px solid var(--line);
    border-radius: .4rem; background: var(--gallery-bg, #fff); color: var(--ink);
    box-shadow: 0 12px 30px rgba(0,0,0,.15);
    transform: translateY(.3rem); transition: opacity .15s ease, transform .15s ease, visibility .15s;
  }
  .b219-desktop-nav .configured-navigation li.has-children:hover > ul,
  .b219-desktop-nav .configured-navigation li.has-children:focus-within > ul {
    visibility: visible; opacity: 1; pointer-events: auto; transform: translateY(0);
  }
  .b219-desktop-nav .configured-navigation li li { margin: 0; }
  .b219-desktop-nav .configured-navigation li li a { display: block; padding: .55rem .75rem; white-space: normal; }
  .b219-desktop-nav .configured-navigation li li a:hover,
  .b219-desktop-nav .configured-navigation li li a:focus-visible { background: rgba(127,127,127,.13); }
  .b219-desktop-nav .configured-navigation li li.has-children > ul { inset-block-start: 0; inset-inline-start: 100%; }
}
.configured-navigation li.is-active-trail > a { font-weight: 700; text-decoration-thickness: .14em; }
.configured-navigation a[aria-current="page"] { text-decoration-thickness: .18em; text-underline-offset: .2em; }
@media (prefers-reduced-motion: reduce) {
  .b219-desktop-nav .configured-navigation li.has-children > ul { transition: none; transform: none; }
}

/* B271: dedicated PHP homepage viewport cover; client owns placement and responsive crop. */
.home-layout--full-viewport-cover main { padding-top: 0; }
.home-layout--full-viewport-cover .homepage-viewport-cover { width: 100vw; max-width: none; margin-inline: calc(50% - 50vw); }
.home-layout--full-viewport-cover .viewport-cover { position: relative; width: 100%; height: min(90svh, 64rem); min-height: 22rem; overflow: hidden; isolation: isolate; background: #19251e; }
.home-layout--full-viewport-cover .viewport-cover picture,
.home-layout--full-viewport-cover .viewport-cover img { display: block; width: 100%; height: 100%; }
.home-layout--full-viewport-cover .viewport-cover img { object-fit: cover; object-position: var(--cover-x, 50%) var(--cover-y, 50%); }
.home-layout--full-viewport-cover .viewport-cover::after { content: ''; position: absolute; inset: 0; background: #000; opacity: var(--cover-shade, .3); pointer-events: none; }
.home-layout--full-viewport-cover .viewport-cover__copy { position: absolute; z-index: 1; inset-inline: max(1.25rem, calc((100vw - 72rem)/2)); bottom: clamp(2rem, 7vh, 6rem); max-width: 45rem; color: #fff; text-shadow: 0 2px 12px #000a; }
.home-layout--full-viewport-cover .viewport-cover__copy h1 { margin: 0; color: inherit; font-size: clamp(2rem, 5vw, 4.5rem); }
.home-layout--full-viewport-cover .viewport-cover__copy p { margin: .5rem 0 0; font-size: clamp(1rem, 2vw, 1.35rem); }
.home-layout--full-viewport-cover .gizmo-region--homepage:empty { display: none; }
@media (max-width: 42rem) { .home-layout--full-viewport-cover .viewport-cover { height: 75svh; min-height: 20rem; } }
@media print { .home-layout--full-viewport-cover .viewport-cover { height: auto; min-height: 0; } .home-layout--full-viewport-cover .viewport-cover img { height: auto; } }


/* B271: PHP public client full viewport cover. Scoped to the homepage only.
   The viewport cover spans the screen, while editorial copy stays readable. */
.route-home.home-layout--full-viewport-cover > main {
  min-width: 0;
  padding-top: 0;
}
.route-home.home-layout--full-viewport-cover .homepage-feature--full-viewport-cover {
  min-width: 0;
}
.route-home.home-layout--full-viewport-cover .homepage-feature--full-viewport-cover > figure {
  box-sizing: border-box;
  position: relative;
  width: 100vw;
  max-width: none;
  margin-inline: calc(50% - 50vw);
  overflow: hidden;
  background: #191b1a;
}
.route-home.home-layout--full-viewport-cover .homepage-feature--full-viewport-cover > figure > a,
.route-home.home-layout--full-viewport-cover .homepage-feature--full-viewport-cover > figure picture {
  display: block;
  width: 100%;
  height: 100%;
}
.route-home.home-layout--full-viewport-cover .homepage-feature--full-viewport-cover > figure img {
  display: block;
  width: 100%;
  max-width: none;
  height: clamp(24rem, 82svh, 70rem);
  max-height: none;
  object-fit: cover;
  object-position: center;
}
.route-home.home-layout--full-viewport-cover .homepage-feature--full-viewport-cover > figure figcaption {
  box-sizing: border-box;
  max-width: 100%;
  margin: 0;
  padding: .65rem var(--gutter);
  background: var(--paper);
  color: var(--muted);
}
.route-home.home-layout--full-viewport-cover .homepage-feature--full-viewport-cover > .photograph-heading {
  max-width: 68rem;
  margin: clamp(1.5rem, 4vw, 3rem) auto;
}
.route-home.home-layout--full-viewport-cover .homepage-feature--full-viewport-cover > .editorial-layout {
  max-width: 68rem;
  margin-inline: auto;
}
@media (max-width: 48rem) {
  .route-home.home-layout--full-viewport-cover .homepage-feature--full-viewport-cover > figure img {
    height: clamp(20rem, 65svh, 42rem);
    max-height: none;
    object-fit: cover;
  }
}
@media print {
  .route-home.home-layout--full-viewport-cover .homepage-feature--full-viewport-cover > figure {
    width: 100%;
    margin-inline: 0;
  }
  .route-home.home-layout--full-viewport-cover .homepage-feature--full-viewport-cover > figure img {
    height: auto;
    max-height: 65vh;
    object-fit: contain;
  }
}

/* B271: CSP-compatible viewport-cover focal point and overlay controls. */
.viewport-cover.cover-x-0 img { object-position: 0% var(--cover-y, 50%); }
.viewport-cover.cover-y-0 { --cover-y: 0%; }
.viewport-cover.cover-x-5 img { object-position: 5% var(--cover-y, 50%); }
.viewport-cover.cover-y-5 { --cover-y: 5%; }
.viewport-cover.cover-x-10 img { object-position: 10% var(--cover-y, 50%); }
.viewport-cover.cover-y-10 { --cover-y: 10%; }
.viewport-cover.cover-x-15 img { object-position: 15% var(--cover-y, 50%); }
.viewport-cover.cover-y-15 { --cover-y: 15%; }
.viewport-cover.cover-x-20 img { object-position: 20% var(--cover-y, 50%); }
.viewport-cover.cover-y-20 { --cover-y: 20%; }
.viewport-cover.cover-x-25 img { object-position: 25% var(--cover-y, 50%); }
.viewport-cover.cover-y-25 { --cover-y: 25%; }
.viewport-cover.cover-x-30 img { object-position: 30% var(--cover-y, 50%); }
.viewport-cover.cover-y-30 { --cover-y: 30%; }
.viewport-cover.cover-x-35 img { object-position: 35% var(--cover-y, 50%); }
.viewport-cover.cover-y-35 { --cover-y: 35%; }
.viewport-cover.cover-x-40 img { object-position: 40% var(--cover-y, 50%); }
.viewport-cover.cover-y-40 { --cover-y: 40%; }
.viewport-cover.cover-x-45 img { object-position: 45% var(--cover-y, 50%); }
.viewport-cover.cover-y-45 { --cover-y: 45%; }
.viewport-cover.cover-x-50 img { object-position: 50% var(--cover-y, 50%); }
.viewport-cover.cover-y-50 { --cover-y: 50%; }
.viewport-cover.cover-x-55 img { object-position: 55% var(--cover-y, 50%); }
.viewport-cover.cover-y-55 { --cover-y: 55%; }
.viewport-cover.cover-x-60 img { object-position: 60% var(--cover-y, 50%); }
.viewport-cover.cover-y-60 { --cover-y: 60%; }
.viewport-cover.cover-x-65 img { object-position: 65% var(--cover-y, 50%); }
.viewport-cover.cover-y-65 { --cover-y: 65%; }
.viewport-cover.cover-x-70 img { object-position: 70% var(--cover-y, 50%); }
.viewport-cover.cover-y-70 { --cover-y: 70%; }
.viewport-cover.cover-x-75 img { object-position: 75% var(--cover-y, 50%); }
.viewport-cover.cover-y-75 { --cover-y: 75%; }
.viewport-cover.cover-x-80 img { object-position: 80% var(--cover-y, 50%); }
.viewport-cover.cover-y-80 { --cover-y: 80%; }
.viewport-cover.cover-x-85 img { object-position: 85% var(--cover-y, 50%); }
.viewport-cover.cover-y-85 { --cover-y: 85%; }
.viewport-cover.cover-x-90 img { object-position: 90% var(--cover-y, 50%); }
.viewport-cover.cover-y-90 { --cover-y: 90%; }
.viewport-cover.cover-x-95 img { object-position: 95% var(--cover-y, 50%); }
.viewport-cover.cover-y-95 { --cover-y: 95%; }
.viewport-cover.cover-x-100 img { object-position: 100% var(--cover-y, 50%); }
.viewport-cover.cover-y-100 { --cover-y: 100%; }
.viewport-cover.cover-shade-0::after { opacity: 0.0; }
.viewport-cover.cover-shade-10::after { opacity: 0.1; }
.viewport-cover.cover-shade-20::after { opacity: 0.2; }
.viewport-cover.cover-shade-30::after { opacity: 0.3; }
.viewport-cover.cover-shade-40::after { opacity: 0.4; }
.viewport-cover.cover-shade-50::after { opacity: 0.5; }
.viewport-cover.cover-shade-60::after { opacity: 0.6; }
.viewport-cover.cover-shade-70::after { opacity: 0.7; }
.viewport-cover.cover-shade-80::after { opacity: 0.8; }

/* B271: the dedicated homepage cover fills the viewport below the real header height.
   No inline styles, script-measured heights or unsafe CSP exceptions required. */
.route-home.home-layout--full-viewport-cover {
  min-height: 100svh;
  display: flex;
  flex-direction: column;
}
.route-home.home-layout--full-viewport-cover .homepage-viewport-cover .viewport-cover {
  height: 100%;
  min-height: min(26rem, 100svh);
  max-height: none;
}
 .route-home.home-layout--full-viewport-cover > main {
  flex: 1 0 auto;
  display: flex;
  flex-direction: column;
}
.route-home.home-layout--full-viewport-cover > main > .homepage-viewport-cover {
  flex: 1 0 auto;
  display: flex;
  flex-direction: column;
}
.route-home.home-layout--full-viewport-cover .homepage-viewport-cover .viewport-cover {
  flex: 1 0 auto;
}
@media (max-width: 48rem) {
  .route-home.home-layout--full-viewport-cover .homepage-viewport-cover .viewport-cover {
    min-height: min(22rem, 100svh);
  }
}
@media print {
  .route-home.home-layout--full-viewport-cover .homepage-viewport-cover .viewport-cover {
    height: auto;
    min-height: 0;
  }
}

.route-home.home-layout--full-viewport-cover > main { padding-bottom: 0; min-height: 0; }

/* B271: no phantom spacing for a cover-only homepage. Rendered Gizmo regions
   retain their normal grid spacing; empty regions are omitted by PHP. */
.route-home.home-layout--full-viewport-cover.home-cover--only > main {
  flex: 0 0 auto;
  min-height: 0;
  padding: 0;
}
.route-home.home-layout--full-viewport-cover.home-cover--only > main > .homepage-viewport-cover,
.route-home.home-layout--full-viewport-cover.home-cover--only .homepage-viewport-cover .viewport-cover {
  flex: 0 0 auto;
}
.route-home.home-layout--full-viewport-cover.home-cover--only .homepage-viewport-cover .viewport-cover {
  height: clamp(26rem, 82svh, 70rem);
}
.route-home.home-layout--full-viewport-cover.home-cover--only > .site-footer {
  margin-top: 2rem;
}
@media (max-width: 48rem) {
  .route-home.home-layout--full-viewport-cover.home-cover--only .homepage-viewport-cover .viewport-cover {
    height: clamp(22rem, 72svh, 48rem);
  }
  .route-home.home-layout--full-viewport-cover.home-cover--only > .site-footer {
    margin-top: 1.5rem;
  }
}
@media print {
  .route-home.home-layout--full-viewport-cover.home-cover--only .homepage-viewport-cover .viewport-cover {
    height: auto;
  }
}

/* B271: a cover-only homepage has no content region requiring a footer spacer.
   Keep the footer divider close to the photograph without affecting populated pages. */
.route-home.home-layout--full-viewport-cover.home-cover--only > .site-footer {
  margin-top: 0;
  padding-top: 1rem;
  padding-bottom: 1.5rem;
}
@media (max-width: 48rem) {
  .route-home.home-layout--full-viewport-cover.home-cover--only > .site-footer {
    margin-top: 0;
    padding-top: .75rem;
    padding-bottom: 1.25rem;
  }
}

/* B271 final: the cover is the sole main child; avoid the general main
   padding/flex spacer while retaining the main landmark and full bleed. */
main#main-content:has(> section.homepage-viewport-cover:only-child) {
    padding-block: 0 !important;
    margin-block: 0 !important;
    min-height: 0 !important;
    flex: 0 0 auto !important;
    width: 100%;
    max-width: none;
}
main#main-content > section.homepage-viewport-cover {
    width: 100%;
    max-width: none;
    margin: 0;
}
/* Footer Gizmos and footer navigation are sibling elements. */
.site-footer {
    align-items: center;
    flex-wrap: wrap;
    gap: 1rem 2rem;
}
.site-footer > .gizmo-region--footer,
.site-footer > .configured-navigation {
    margin: 0;
    padding: 0;
}
.site-footer .gizmo--content { margin: 0; }
.site-footer .configured-navigation ul {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 1rem;
    margin: 0;
    padding: 0;
    list-style: none;
}
@media (max-width: 42rem) {
    .site-footer { align-items: flex-start; }
}

/* B272: compact, keyboard-accessible calendar navigation. */
.archive-calendar { margin-block: 1.25rem 2rem; }
.archive-calendar__heading { font-size: 1rem; font-weight: 600; margin: 0 0 .75rem; }
.archive-calendar__years, .archive-calendar__months { list-style: none; padding: 0; margin: 0; }
.archive-calendar__years { display: flex; flex-wrap: wrap; align-items: flex-start; gap: .5rem .75rem; }
.archive-calendar__year { display: flex; align-items: flex-start; flex-wrap: wrap; gap: .25rem; border: 1px solid currentColor; border-radius: .4rem; padding: .35rem .55rem; }
.archive-calendar__year-link { font-weight: 600; padding: .12rem .2rem; }
.archive-calendar__year-link[aria-current="page"] { text-decoration-thickness: .16em; text-underline-offset: .2em; }
.archive-calendar__disclosure { position: relative; }
.archive-calendar__disclosure summary { cursor: pointer; padding: .12rem .3rem; border-radius: .2rem; }
.archive-calendar__disclosure summary:focus-visible, .archive-calendar a:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.archive-calendar__toggle-label { font-size: .85rem; }
.archive-calendar__months { display: grid; gap: .25rem; margin-top: .45rem; min-width: 6.5rem; }
.archive-calendar__months a { display: block; padding: .15rem .25rem; }
@media (max-width: 42rem) { .archive-calendar__years { gap: .5rem; } .archive-calendar__year { max-width: 100%; } }

/* Adjacent content navigation, scoped so archive pagination is unaffected. */
.adjacent-navigation {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    align-items: center;
    gap: 1rem;
    margin-top: clamp(1.5rem, 3vw, 2.5rem);
    padding-top: 0;
    border-top: 0;
}
.adjacent-navigation .adjacent-navigation__link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .65rem;
    width: fit-content;
    max-width: 100%;
    min-height: 2.75rem;
    padding: .65rem 1rem;
    border: 1px solid var(--line-strong);
    border-radius: .45rem;
    background: var(--surface);
    color: var(--accent-strong);
    text-decoration: none;
    font-weight: 650;
    line-height: 1.3;
    transition: background-color .15s ease, border-color .15s ease;
}
.adjacent-navigation .adjacent-navigation__link:hover {
    background: var(--paper);
    border-color: var(--accent-strong);
}
.adjacent-navigation .adjacent-navigation__link:focus-visible {
    outline: 3px solid var(--focus);
    outline-offset: 3px;
}
.adjacent-navigation__link--previous { grid-column: 1; justify-self: start; }
.adjacent-navigation__link--next { grid-column: 2; justify-self: end; }
.adjacent-navigation__link span:empty { display: none; }
@media (max-width: 32rem) {
    .adjacent-navigation { grid-template-columns: minmax(0, 1fr); gap: .75rem; }
    .adjacent-navigation__link--previous, .adjacent-navigation__link--next { grid-column: 1; }
    .adjacent-navigation__link--next { justify-self: end; }
}
@media (prefers-reduced-motion: reduce) {
    .adjacent-navigation .adjacent-navigation__link { transition: none; }
}

/* B274: Compact taxonomy chips and self-contained, decorative SVG tag icons. */
.taxonomy-links .taxonomy-tag { border-radius: 999px; padding: .35rem .7rem; font-size: .8rem; }
.taxonomy-tag__icon { width: .9rem; height: .9rem; flex: 0 0 auto; }

/* B275: accessible visitor commenting on the independent PHP client. */
.visitor-comments { max-width: var(--measure); margin-block: 2.5rem; }
.comment-form { display: grid; gap: .6rem; min-width: 0; }
.comment-form > label:not(.comment-consent) { font-weight: 650; margin-top: .5rem; }
.comment-form input:not([type="checkbox"]), .comment-form textarea { width: 100%; min-width: 0; padding: .7rem .8rem; border: 1px solid var(--line-strong); border-radius: .3rem; background: var(--surface); color: var(--ink); font: inherit; }
.comment-form textarea { resize: vertical; }
.comment-form :is(input, textarea):focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.comment-consent { display: flex; align-items: flex-start; gap: .65rem; margin-block: .75rem; }
.comment-consent input { flex: 0 0 auto; margin-top: .45rem; }
.comment-form button { justify-self: start; min-height: 44px; padding: .65rem 1.15rem; border: 1px solid var(--accent-strong); border-radius: .35rem; background: var(--accent-strong); color: #fff; font: inherit; font-weight: 650; cursor: pointer; }
.comment-form button:hover { background: var(--ink); }
.comment-feedback { padding: .85rem 1rem; border-inline-start: 4px solid var(--accent); background: var(--surface); overflow-wrap: anywhere; }
.comment-honeypot { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
@media (forced-colors: active) { .comment-form input, .comment-form textarea, .comment-form button, .comment-feedback { border-color: CanvasText; } }

/* B275 refinement: discussion-first presentation with progressively nested replies. */
.visitor-comments { max-width: 72ch; margin-block: clamp(2rem, 5vw, 4rem); }
.comment-section-heading { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: .5rem 1rem; border-bottom: 1px solid var(--line); padding-bottom: .8rem; }
.comment-section-heading h2 { margin: 0; }
.comment-jump, .comment-reply { display: inline-block; font-weight: 650; }
.comment-thread { list-style: none; margin: 0; padding: 0; }
.comment-thread .comment-thread { margin-inline-start: clamp(.65rem, 2.5vw, 1.75rem); padding-inline-start: clamp(.7rem, 2vw, 1.25rem); border-inline-start: 2px solid var(--line-strong); }
.comment-entry { padding-block: 1.1rem; border-bottom: 1px solid var(--line); overflow-wrap: anywhere; }
.comment-entry__header { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: .25rem 1rem; }
.comment-entry__header h3 { font: 700 1rem/1.4 inherit; margin: 0; }
.comment-entry__header time { color: var(--muted); font-size: .85rem; }
.comment-entry__body { white-space: pre-wrap; margin-block: .65rem; }
.comment-reply { padding: .35rem 0; font-size: .9rem; }
.comment-empty { color: var(--muted); }
.comment-compose { max-width: var(--measure); margin-block: 2rem; padding-block: 1.25rem; }
.comment-compose h3 { margin: 0 0 .4rem; }
.comment-optional { margin-block: .75rem; }
.comment-optional summary { cursor: pointer; font-weight: 650; padding-block: .4rem; }
.comment-optional label { display: block; margin-block: .7rem .25rem; font-weight: 650; }
.comment-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; }
.comment-actions a { padding-block: .5rem; }
.comment-thread :focus-visible, .comment-optional summary:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; }
@media (max-width: 42rem) { .comment-entry__header { display: block; } .comment-entry__header time { display: block; margin-top: .2rem; } .comment-thread .comment-thread { margin-inline-start: .35rem; padding-inline-start: .65rem; } }
@media (forced-colors: active) { .comment-entry, .comment-section-heading, .comment-compose, .comment-thread .comment-thread { border-color: CanvasText; } }

/* B276: independent PHP client's editorial blog archive. */
.route-blog-archive .archive-calendar { margin-block: 1.5rem 2.5rem; }
.route-blog-archive .blog-list {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(1.5rem, 3vw, 3rem);
    max-width: none;
    margin: 0;
}
.route-blog-archive .blog-list > li {
    min-width: 0;
    margin: 0;
    padding: clamp(1.25rem, 2vw, 1.75rem) 0 0;
    border-top: 1px solid var(--line-strong);
    border-bottom: 0;
}
.route-blog-archive .blog-list > li:last-child { border-bottom: 0; }
.route-blog-archive .blog-list article { display: flex; flex-direction: column; align-items: flex-start; gap: .8rem; }
.route-blog-archive .blog-list h2 {
    margin: 0;
    font-size: clamp(1.4rem, 2.2vw, 1.85rem);
    line-height: 1.2;
    letter-spacing: -.025em;
}
.route-blog-archive .blog-list h2 a { text-decoration: none; }
.route-blog-archive .blog-list h2 a:hover { text-decoration: underline; text-underline-offset: .16em; }
.route-blog-archive .blog-list .publication {
    margin: 0;
    color: var(--muted);
    font-size: .83rem;
    line-height: 1.5;
}
.route-blog-archive .blog-list .excerpt {
    margin: 0;
    max-width: 58ch;
    font-size: 1rem;
    line-height: 1.65;
}
.route-blog-archive .pagination { margin-top: clamp(2rem, 4vw, 3.5rem); }
@media (max-width: 46rem) {
    .route-blog-archive .blog-list { grid-template-columns: minmax(0, 1fr); gap: 1.6rem; }
    .route-blog-archive .blog-list > li { padding-top: 1.2rem; }
}

/* B276: consistent page origin across public routes.
   Reading width is independent of the header/main container alignment. */
.page-content > h1,
.page-content > .publication,
.page-content > .excerpt,
.page-content > .content-notice,
.page-content > .page-body {
    margin-inline-start: 0;
}
/* Preserve the readable measure without shifting content to the right. */
.route-page .page-content > .page-body,
.route-contact .page-content > .page-body { max-width: var(--measure); }

/* B276: generic, page-targeted Gizmo sidebar; only present when Core returns content. */
.standard-page-layout { width: 100%; min-width: 0; }
.standard-page-layout--with-sidebar { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 1fr); gap: clamp(1.5rem, 3vw, 3rem); align-items: start; }
.standard-page-layout > .page-content { min-width: 0; max-width: none; }
.standard-page-layout--with-sidebar .page-body { max-width: 100%; }
.standard-page-sidebar { min-width: 0; overflow-wrap: anywhere; }
.standard-page-sidebar .gizmo { margin-block: 0 1.75rem; }
.standard-page-sidebar img { max-width: 100%; height: auto; }
@media (max-width: 52rem) {
  .standard-page-layout--with-sidebar { grid-template-columns: minmax(0, 1fr); }
  .standard-page-sidebar { border-top: 1px solid var(--line); padding-top: 1.5rem; }
}

/* B276: Gizmo presentation contract — optional titles and unbulleted sidebar thumbnails. */
.gizmo__title { margin: 0 0 .85rem; font-size: clamp(1.1rem, 1.5vw, 1.4rem); line-height: 1.3; }
.standard-page-sidebar.gizmo-region { display: block; margin-block: 0; }
.standard-page-sidebar .gizmo :is(ul, ol) { list-style: none; padding-inline-start: 0; margin-inline: 0; }
.standard-page-sidebar .gizmo li { list-style: none; margin-inline: 0; padding-inline: 0; }
.standard-page-sidebar .gizmo li::marker { content: ''; }

/* B445: Social Gizmo links are an icon-button group, not a vertical list.
   Apply to Core-rendered HTML in any PHP-client Gizmo region, including sidebars. */
.gizmo-social-links > ul {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  gap: .65rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.gizmo-social-links > ul > li {
  flex: 0 0 auto;
  margin: 0;
  padding: 0;
  list-style: none;
}
.gizmo-social-links > ul > li::marker { content: none; }
.gizmo-social-links > ul > li > a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3.25rem;
  height: 3.25rem;
  min-width: 44px;
  min-height: 44px;
  padding: .6rem;
  border: 1px solid var(--line-strong);
  border-radius: .75rem;
  background: var(--surface);
  color: var(--accent-strong);
  text-decoration: none;
  box-shadow: 0 1px 2px rgb(0 0 0 / .04);
  transition: background-color .16s ease, border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}
.gizmo-social-links .gizmo-social-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 0;
}
.gizmo-social-links .gizmo-social-icon svg {
  display: block;
  width: 1.65rem;
  height: 1.65rem;
  max-width: 100%;
  max-height: 100%;
}
@media (hover: hover) {
  .gizmo-social-links > ul > li > a:hover {
    border-color: var(--accent);
    background: color-mix(in srgb, var(--accent) 9%, var(--surface));
    box-shadow: 0 3px 9px rgb(0 0 0 / .08);
    transform: translateY(-2px);
  }
}
.gizmo-social-links > ul > li > a:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 3px;
  border-color: var(--accent-strong);
}
@media (prefers-reduced-motion: reduce) {
  .gizmo-social-links > ul > li > a { transition: none; }
  .gizmo-social-links > ul > li > a:hover { transform: none; }
}
@media (forced-colors: active) {
  .gizmo-social-links > ul > li > a { border-color: ButtonText; color: LinkText; background: ButtonFace; box-shadow: none; }
  .gizmo-social-links > ul > li > a:focus-visible { outline-color: Highlight; }
}

/* B276: responsive curated collection presentation and accessible title overlays. */
.route-page .page-content > .page-body:has(.rmpxl-collection),
.route-page .standard-page-layout:not(.standard-page-layout--with-sidebar) .page-body:has(.rmpxl-collection) { max-width: 100%; }
.route-page .page-body:has(.rmpxl-collection) > :not(.rmpxl-collection) { max-width: var(--measure); }
.rmpxl-collection { width: 100%; max-width: 100%; margin-block: 1.75rem 2.5rem; }
.rmpxl-collection__items { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(.75rem, 1.6vw, 1.25rem); }
.rmpxl-collection__item { position: relative; overflow: hidden; border-radius: .25rem; }
.rmpxl-collection__item img { margin: 0; border-radius: 0; width: 100%; }
.rmpxl-collection__link { position: relative; display: block; overflow: hidden; color: #fff; text-decoration: none; }
.rmpxl-collection__title { position: absolute; inset: auto 0 0; padding: 2.2rem .8rem .7rem; color: #fff; background: linear-gradient(transparent, rgba(0,0,0,.82)); font: 600 .9rem/1.35 system-ui, sans-serif; overflow-wrap: anywhere; pointer-events: none; opacity: 0; transition: opacity .18s ease; }
.rmpxl-collection__item:has(> img) > .rmpxl-collection__title { position: absolute; }
.rmpxl-collection--titles-always .rmpxl-collection__title,
.rmpxl-collection--titles-hover .rmpxl-collection__item:hover .rmpxl-collection__title,
.rmpxl-collection--titles-hover .rmpxl-collection__item:focus-within .rmpxl-collection__title { opacity: 1; }
.rmpxl-collection--masonry .rmpxl-collection__items { columns: 3 14rem; }
.rmpxl-collection--masonry .rmpxl-collection__item { display: block; }
.rmpxl-collection--carousel .rmpxl-collection__items { display: flex; }
.rmpxl-collection--carousel .rmpxl-collection__item { flex: 0 0 min(80%, 22rem); }
@media (hover: none) { .rmpxl-collection--titles-hover .rmpxl-collection__title { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .rmpxl-collection__title { transition: none; } }
@media (max-width: 55rem) { .rmpxl-collection:not(.rmpxl-collection--carousel):not(.rmpxl-collection--masonry) .rmpxl-collection__items { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 34rem) { .rmpxl-collection:not(.rmpxl-collection--carousel):not(.rmpxl-collection--masonry) .rmpxl-collection__items { grid-template-columns: minmax(0, 1fr); } }
@media (forced-colors: active) { .rmpxl-collection__title { background: Canvas; color: CanvasText; } }

/* B276: column selection is a desktop maximum; narrower viewports step down. */
.rmpxl-collection--grid.rmpxl-collection--columns-2 .rmpxl-collection__items { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.rmpxl-collection--grid.rmpxl-collection--columns-3 .rmpxl-collection__items { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.rmpxl-collection--grid.rmpxl-collection--columns-4 .rmpxl-collection__items { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.rmpxl-collection--grid.rmpxl-collection--columns-5 .rmpxl-collection__items { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.rmpxl-collection--masonry.rmpxl-collection--columns-2 .rmpxl-collection__items { columns: 2; }
.rmpxl-collection--masonry.rmpxl-collection--columns-3 .rmpxl-collection__items { columns: 3; }
.rmpxl-collection--masonry.rmpxl-collection--columns-4 .rmpxl-collection__items { columns: 4; }
.rmpxl-collection--masonry.rmpxl-collection--columns-5 .rmpxl-collection__items { columns: 5; }
@media (max-width: 70rem) {
  .rmpxl-collection--grid:is(.rmpxl-collection--columns-4,.rmpxl-collection--columns-5) .rmpxl-collection__items { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .rmpxl-collection--masonry:is(.rmpxl-collection--columns-4,.rmpxl-collection--columns-5) .rmpxl-collection__items { columns: 3; }
}
@media (max-width: 55rem) {
  .rmpxl-collection--grid:not(.rmpxl-collection--carousel) .rmpxl-collection__items { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rmpxl-collection--masonry .rmpxl-collection__items { columns: 2; }
}
@media (max-width: 34rem) {
  .rmpxl-collection--grid .rmpxl-collection__items { grid-template-columns: minmax(0, 1fr); }
  .rmpxl-collection--masonry .rmpxl-collection__items { columns: 1; }
}

/* B277: Editorial Split must accommodate both portrait and landscape photographs.
   Only the homepage gizmo composition is affected; no image is cropped. */
@media (min-width: 48.001rem) {
  .home-layout--editorial-split .gizmo-region--homepage {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    align-items: start;
    gap: clamp(1.25rem, 3vw, 3rem);
  }
  .home-layout--editorial-split .gizmo-region--homepage > .gizmo { min-width: 0; }
  .home-layout--editorial-split .gizmo-region--homepage .gizmo--photograph-spotlight img,
  .home-layout--editorial-split .gizmo-region--homepage .gizmo--featured-media img,
  .home-layout--editorial-split .gizmo-region--homepage .gizmo--post-type img {
    display: block;
    width: auto;
    max-width: 100%;
    max-height: min(56svh, 34rem);
    height: auto;
    object-fit: contain;
    object-position: center top;
    margin-inline: auto;
  }
}
.home-layout--editorial-split .gizmo-region--homepage .gizmo--content { align-self: start; }
@media (max-width: 48rem) {
  .home-layout--editorial-split .gizmo-region--homepage { grid-template-columns: minmax(0, 1fr); }
  .home-layout--editorial-split .gizmo-region--homepage .gizmo--photograph-spotlight img,
  .home-layout--editorial-split .gizmo-region--homepage .gizmo--featured-media img {
    max-width: 100%; width: auto; height: auto; max-height: 60svh; object-fit: contain;
  }
}

/* B279: optional authored homepage heading spans the editorial composition.
   Keep portrait images uncropped and give the image a more deliberate presence. */
.homepage-title { max-width: 72rem; margin-inline: auto; }
.homepage-title--left { text-align: left; }
.homepage-title--center { text-align: center; }
.homepage-title--right { text-align: right; }
.homepage-title__heading { margin: 0; font-size: clamp(2rem, 4.2vw, 4rem); line-height: 1.12; text-wrap: balance; }
.homepage-title__subtitle { margin: .7rem 0 0; font-size: clamp(1rem, 1.5vw, 1.3rem); line-height: 1.55; }
.homepage-title--compact .homepage-title__heading { font-size: clamp(1.5rem, 2.6vw, 2.6rem); }
.homepage-title--statement .homepage-title__heading { font-size: clamp(2.6rem, 6vw, 5.6rem); }
/* B280: a leading title introduces the entire composition; later titles
   remain in the editorial flow, including below a portrait photograph. */
.home-layout--editorial-split .gizmo-region--homepage > .gizmo--homepage-title { grid-column: auto; min-width: 0; }
.home-layout--editorial-split .gizmo-region--homepage > .gizmo--homepage-title:first-child { grid-column: 1 / -1; width: 100%; }
@media (min-width: 48.001rem) {
  .home-layout--editorial-split .gizmo-region--homepage { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); column-gap: clamp(1.25rem, 2.5vw, 2.75rem); row-gap: clamp(1.5rem, 3vw, 3rem); }
  .home-layout--editorial-split .gizmo-region--homepage .gizmo--featured-media img,
  .home-layout--editorial-split .gizmo-region--homepage .gizmo--photograph-spotlight img { max-height: min(72svh, 43rem); }
  .home-layout--editorial-split .gizmo-region--homepage .gizmo--featured-media figure { margin: 0; }
}
@media (max-width: 48rem) {
  .home-layout--editorial-split .gizmo-region--homepage > .gizmo--homepage-title { grid-column: auto; }
  .home-layout--editorial-split .gizmo-region--homepage .gizmo--featured-media img { max-height: 68svh; }
}


/* G2.0-B281: Cinematic is a scrolling photographic story, not an editorial
   two-column split or a viewport-filling cover. Never crop the source image. */
.home-layout--cinematic .gizmo-region--homepage {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: clamp(1.75rem, 4vw, 4rem);
  width: 100%;
  max-width: min(100%, 92rem);
  margin-inline: auto;
}
.home-layout--cinematic .gizmo-region--homepage > .gizmo {
  min-width: 0;
  width: 100%;
}
.home-layout--cinematic .gizmo-region--homepage > :is(.gizmo--featured-media, .gizmo--photograph-spotlight) {
}
.home-layout--cinematic .gizmo-region--homepage > .gizmo--homepage-title {
}
.home-layout--cinematic .gizmo-region--homepage > .gizmo--content {
  max-width: 74ch;
  margin-inline: auto;
  line-height: 1.75;
}
.home-layout--cinematic .gizmo-region--homepage :is(.gizmo--featured-media, .gizmo--photograph-spotlight) figure {
  margin: 0;
  width: 100%;
  text-align: center;
}
.home-layout--cinematic .gizmo-region--homepage :is(.gizmo--featured-media, .gizmo--photograph-spotlight) img {
  display: block;
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: min(78svh, 58rem);
  object-fit: contain;
  margin-inline: auto;
}
.home-layout--cinematic .gizmo-region--homepage .homepage-title {
  max-width: 74ch;
}
@media (max-width: 48rem) {
  .home-layout--cinematic .gizmo-region--homepage {
    gap: clamp(1.25rem, 5vw, 2.25rem);
  }
  .home-layout--cinematic .gizmo-region--homepage :is(.gizmo--featured-media, .gizmo--photograph-spotlight) img {
    max-height: 70svh;
  }
}


/* G2.0-B282: the Post Type gizmo owns a list; the featured layout must grid
   its list items, not merely the single enclosing gizmo section. */
.home-layout--featured-grid .gizmo-region--homepage {
  display: block;
  width: 100%;
}
.home-layout--featured-grid .gizmo-region--homepage > .gizmo--post-type {
  width: 100%;
  min-width: 0;
}
.home-layout--featured-grid .gizmo-region--homepage .gizmo--post-type .gizmo-post-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(1rem, 2.5vw, 2rem);
  list-style: none;
  margin: 0;
  padding: 0;
  width: 100%;
}
.home-layout--featured-grid .gizmo-region--homepage .gizmo--post-type .gizmo-post-item {
  min-width: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}
.home-layout--featured-grid .gizmo-region--homepage .gizmo--post-type .gizmo-post-item::marker {
  content: "";
}
.home-layout--featured-grid .gizmo-region--homepage .gizmo--post-type .gizmo-post-link {
  display: flex;
  flex-direction: column;
  gap: .55rem;
  min-width: 0;
  overflow-wrap: anywhere;
}
.home-layout--featured-grid .gizmo-region--homepage .gizmo--post-type .gizmo-post-link img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1 / 1;
  object-fit: cover;
}
.home-layout--featured-grid .gizmo-region--homepage .gizmo--post-type .gizmo-post-title {
  display: block;
  line-height: 1.4;
}
@media (max-width: 56rem) {
  .home-layout--featured-grid .gizmo-region--homepage .gizmo--post-type .gizmo-post-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 36rem) {
  .home-layout--featured-grid .gizmo-region--homepage .gizmo--post-type .gizmo-post-list {
    grid-template-columns: minmax(0, 1fr);
  }
}


/* G2.0-B282 follow-up: title spans the complete Featured Grid width.
   The inner alignment setting remains authoritative for left/centre/right. */
.home-layout--featured-grid .gizmo-region--homepage > .gizmo--homepage-title {
  grid-column: 1 / -1;
  display: block;
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  max-width: none;
  margin-inline: 0;
}
.home-layout--featured-grid .gizmo-region--homepage > .gizmo--homepage-title > .homepage-title {
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  margin-inline: auto;
}
@media (max-width: 36rem) {
  .home-layout--featured-grid .gizmo-region--homepage > .gizmo--homepage-title {
  }
}

/* B282 final correction: align heading and subtitle to the same full-width
   grid centre, and place the inter-gizmo gap on the following post grid. */
.home-layout--featured-grid .gizmo-region--homepage > .gizmo--homepage-title {
  display: block;
  width: 100%;
  max-width: none;
  min-width: 0;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
.home-layout--featured-grid .gizmo-region--homepage > .gizmo--homepage-title > .homepage-title {
  display: block;
  width: 100%;
  max-width: none;
  margin: 0;
  box-sizing: border-box;
}
.home-layout--featured-grid .gizmo-region--homepage .homepage-title--center :is(.homepage-title__heading, .homepage-title__subtitle) {
  display: block;
  width: 100%;
  max-width: none;
  margin-inline: 0;
  text-align: center;
}
.home-layout--featured-grid .gizmo-region--homepage .homepage-title--left :is(.homepage-title__heading, .homepage-title__subtitle) { text-align: left; }
.home-layout--featured-grid .gizmo-region--homepage .homepage-title--right :is(.homepage-title__heading, .homepage-title__subtitle) { text-align: right; }
.home-layout--featured-grid .gizmo-region--homepage > .gizmo--homepage-title + .gizmo--post-type {
  margin-top: 24px;
}
@media (max-width: 36rem) {
  .home-layout--featured-grid .gizmo-region--homepage > .gizmo--homepage-title + .gizmo--post-type {
    margin-top: 16px;
  }
}


/* G2.0-B282 card refinement: a restrained hierarchy for photographic cards.
   Scope to Featured Grid so other Post Type gizmo layouts are unaffected. */
.home-layout--featured-grid .gizmo-region--homepage .gizmo--post-type .gizmo-post-item {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-height: 0;
}
.home-layout--featured-grid .gizmo-region--homepage .gizmo--post-type .gizmo-post-link {
  gap: .5rem;
  font-weight: 500;
}
.home-layout--featured-grid .gizmo-region--homepage .gizmo--post-type .gizmo-post-title {
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.4;
}
.home-layout--featured-grid .gizmo-region--homepage .gizmo--post-type .gizmo-post-item > p:not(.gizmo-taxonomy) {
  font-size: .9rem;
  line-height: 1.55;
  margin: .65rem 0 0;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  overflow: hidden;
}
.home-layout--featured-grid .gizmo-region--homepage .gizmo--post-type .gizmo-post-item > time {
  display: block;
  margin-top: auto;
  padding-top: .8rem;
  font-size: .75rem;
  line-height: 1.4;
  color: #626761;
  font-weight: 400;
}
.home-layout--featured-grid .gizmo-region--homepage .gizmo--post-type .gizmo-post-item > .gizmo-taxonomy {
  margin: .5rem 0 0;
}


/* G2.0-B283: Magazine has a lead photographic story and a separate journal rail.
   Its homepage gizmos retain their semantic order and original content. */
.home-layout--magazine .gizmo-region--homepage {
  columns: auto;
  display: grid;
  grid-template-columns: minmax(0, 7fr) minmax(17rem, 5fr);
  column-gap: clamp(1.5rem, 4vw, 3.5rem);
  row-gap: clamp(1.5rem, 3vw, 2.5rem);
  align-items: start;
}
.home-layout--magazine .gizmo-region--homepage > .gizmo {
  min-width: 0;
  width: 100%;
  margin: 0;
  break-inside: auto;
}
.home-layout--magazine .gizmo-region--homepage > .gizmo--homepage-title {
  grid-column: 1 / -1;
  grid-row: 1;
  margin-bottom: clamp(1rem, 2vw, 1.5rem);
}
.home-layout--magazine .gizmo-region--homepage > .gizmo--homepage-title .homepage-title {
  max-width: none;
  width: 100%;
}
.home-layout--magazine .gizmo-region--homepage > .gizmo--post-type:has(.gizmo-post-photograph) {
  grid-column: 1;
  grid-row: 2 / span 3;
}
.home-layout--magazine .gizmo-region--homepage > .gizmo--post-type:has(.gizmo-post-blogpost) {
  grid-column: 2;
  grid-row: 2;
}
.home-layout--magazine .gizmo-region--homepage > .gizmo--content {
  grid-column: 2;
  grid-row: 3;
  max-width: 100%;
}
.home-layout--magazine .gizmo-region--homepage .gizmo__title {
  margin: 0 0 1.1rem;
  font-size: clamp(1.1rem, 1.6vw, 1.4rem);
  line-height: 1.3;
}
.home-layout--magazine .gizmo-region--homepage .gizmo-post-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.home-layout--magazine .gizmo-region--homepage .gizmo-post-item {
  list-style: none;
  min-width: 0;
  margin: 0;
  padding: 0;
}
.home-layout--magazine .gizmo-region--homepage .gizmo-post-item::marker { content: ""; }
.home-layout--magazine .gizmo-region--homepage .gizmo--post-type:has(.gizmo-post-photograph) .gizmo-post-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(1.25rem, 2.5vw, 2rem);
}
.home-layout--magazine .gizmo-region--homepage .gizmo--post-type:has(.gizmo-post-photograph) .gizmo-post-item:first-child {
  grid-column: 1 / -1;
}
.home-layout--magazine .gizmo-region--homepage .gizmo-post-link {
  display: flex;
  flex-direction: column;
  gap: .55rem;
  min-width: 0;
  font-weight: 600;
  line-height: 1.4;
}
.home-layout--magazine .gizmo-region--homepage .gizmo--post-type:has(.gizmo-post-photograph) .gizmo-post-link img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.home-layout--magazine .gizmo-region--homepage .gizmo--post-type:has(.gizmo-post-photograph) .gizmo-post-item:first-child img {
  aspect-ratio: 3 / 2;
}
.home-layout--magazine .gizmo-region--homepage .gizmo-post-item > p {
  margin: .65rem 0 .45rem;
  font-size: .9rem;
  line-height: 1.55;
}
.home-layout--magazine .gizmo-region--homepage .gizmo-post-item > time {
  display: block;
  margin-top: .6rem;
  color: #626765;
  font-size: .75rem;
  line-height: 1.4;
}
.home-layout--magazine .gizmo-region--homepage .gizmo--post-type:has(.gizmo-post-blogpost) .gizmo-post-item {
  padding-bottom: 1.1rem;
  margin-bottom: 1.1rem;
  border-bottom: 1px solid #c8cac6;
}
.home-layout--magazine .gizmo-region--homepage .gizmo--post-type:has(.gizmo-post-blogpost) .gizmo-post-item:last-child {
  border-bottom: 0;
}
.home-layout--magazine .gizmo-region--homepage > .gizmo--content {
  border-top: 1px solid #c8cac6;
  padding-top: 1.25rem;
  line-height: 1.65;
}
@media (max-width: 52rem) {
  .home-layout--magazine .gizmo-region--homepage {
    grid-template-columns: minmax(0, 1fr);
    row-gap: 2rem;
  }
  .home-layout--magazine .gizmo-region--homepage > :is(.gizmo--homepage-title, .gizmo--post-type, .gizmo--content) {
    grid-column: 1;
    grid-row: auto;
  }
}
@media (max-width: 35rem) {
  .home-layout--magazine .gizmo-region--homepage .gizmo--post-type:has(.gizmo-post-photograph) .gizmo-post-list {
    grid-template-columns: minmax(0, 1fr);
  }
  .home-layout--magazine .gizmo-region--homepage .gizmo--post-type:has(.gizmo-post-photograph) .gizmo-post-item:first-child {
    grid-column: 1;
  }
}


/* G2.0-B284: shared full-width homepage title contract.
   The alignment belongs to the content-area width, never an individual
   magazine/editorial column. Keep this after layout-specific rules. */
.route-home .gizmo-region--homepage > .gizmo--homepage-title {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  max-width: none;
  margin-inline: 0;
  padding-inline: 0;
  justify-self: stretch;
  align-self: start;
}
.route-home .gizmo-region--homepage > .gizmo--homepage-title > .homepage-title {
  box-sizing: border-box;
  display: block;
  width: 100%;
  max-width: none;
  margin-inline: 0;
  padding-inline: 0;
}
.route-home .gizmo-region--homepage > .gizmo--homepage-title .homepage-title--left {
  text-align: left;
}
.route-home .gizmo-region--homepage > .gizmo--homepage-title .homepage-title--center {
  text-align: center;
}
.route-home .gizmo-region--homepage > .gizmo--homepage-title .homepage-title--right {
  text-align: right;
}
.route-home .gizmo-region--homepage > .gizmo--homepage-title .homepage-title__heading,
.route-home .gizmo-region--homepage > .gizmo--homepage-title .homepage-title__subtitle {
  width: 100%;
  max-width: none;
  box-sizing: border-box;
  text-align: inherit;
}
.route-home:is(.home-layout--magazine, .home-layout--editorial-split)
  .gizmo-region--homepage > .gizmo--homepage-title:first-child {
  grid-column: 1 / -1;
}
.route-home.home-layout--magazine .gizmo-region--homepage > .gizmo--homepage-title {
  grid-column: 1 / -1;
}
/* In Magazine, preserve the established title-to-story rhythm without
   adding margin inside the heading or changing its configured alignment. */
.route-home.home-layout--magazine .gizmo-region--homepage > .gizmo--homepage-title {
  margin-bottom: 0;
}
@media (max-width: 52rem) {
  .route-home.home-layout--magazine .gizmo-region--homepage > .gizmo--homepage-title {
    grid-column: 1;
    grid-row: auto;
  }
}

/* G2.0-B285: full-width title, collection gallery and independent photo index. */
.home-layout--horizontal-gallery .gizmo-region--homepage {
  display: flex;
  flex-direction: column;
  overflow: visible;
  gap: clamp(1.5rem, 3vw, 2.5rem);
  padding-block: 0;
  scroll-snap-type: none;
}
.home-layout--horizontal-gallery .gizmo-region--homepage > * {
  flex: none;
  width: 100%;
  max-width: none;
  min-width: 0;
  scroll-snap-align: none;
}
.home-layout--horizontal-gallery .gizmo-region--homepage > .gizmo--homepage-title {
  width: 100%;
  margin-inline: 0;
  padding-bottom: 0;
}
.home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--content .collection-carousel,
.home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--content [data-collection-carousel] {
  max-width: 100%;
}
.home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--post-type .gizmo-post-list {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  max-width: 54rem; /* B286: compact latest-photograph thumbnails */
  gap: 1.5rem;
  margin: 0;
  padding: 0;
}
.home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--post-type .gizmo-post-item {
  list-style: none;
  min-width: 0;
}
.home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--post-type .gizmo-post-link img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1;
  object-fit: cover;
}
.home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--post-type .gizmo-post-item > p {
  font-size: .9rem;
  line-height: 1.5;
}
.home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--post-type time {
  display: block;
  color: #626765;
  font-size: .75rem;
  margin-top: .6rem;
}
@media (max-width: 48rem) {
  .home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--post-type .gizmo-post-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 35rem) {
  .home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--post-type .gizmo-post-list {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* B285 authoritative editorial collection carousel sizing.
   All prior B285 carousel sizing rules have been consolidated here. */
.rmpxl-collection--carousel {
  position: relative;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  margin-block: 0;
}
.rmpxl-collection--carousel .rmpxl-collection-items {
  display: flex;
  flex-wrap: nowrap;
  align-items: flex-start;
  gap: clamp(.875rem, 1.8vw, 1.5rem);
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  overscroll-behavior-inline: contain;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  padding: .125rem 0 .35rem;
  margin: 0;
}
.rmpxl-collection--carousel .rmpxl-collection-items::-webkit-scrollbar { display: none; }
.rmpxl-collection--carousel .rmpxl-collection-item {
  display: flex;
  flex-direction: column;
  flex: 0 0 auto;
  width: max-content;
  max-width: 90%;
  min-width: 0;
  margin: 0;
  scroll-snap-align: start;
}
.rmpxl-collection--carousel .rmpxl-collection-item > a {
  display: block;
  width: fit-content;
  max-width: 100%;
}
.rmpxl-collection--carousel .rmpxl-collection-item img {
  display: block;
  width: auto;
  height: clamp(22rem, 39vw, 32.5rem);
  max-height: none;
  max-width: min(90vw, 70rem);
  aspect-ratio: auto;
  object-fit: contain;
  margin: 0;
  border-radius: 0;
}
.rmpxl-collection--carousel .rmpxl-collection-item figcaption {
  position: static;
  display: block;
  width: 100%;
  margin: .55rem 0 0;
  padding: 0;
  font-size: .82rem;
  line-height: 1.45;
  text-align: left;
  opacity: .78;
  overflow-wrap: anywhere;
}
.rmpxl-editorial-controls {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: .65rem;
  margin-top: .65rem;
}
.rmpxl-editorial-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  border: 1px solid currentColor;
  border-radius: 50%;
  background: transparent;
  color: inherit;
  font: inherit;
  font-size: 1.8rem;
  line-height: 1;
  cursor: pointer;
}
.rmpxl-editorial-arrow:disabled { opacity: .3; cursor: default; }
.rmpxl-editorial-arrow:focus-visible,
.rmpxl-collection--carousel .rmpxl-collection-items:focus-visible {
  outline: 3px solid currentColor;
  outline-offset: 3px;
}
.rmpxl-editorial-status { font-size: .8rem; opacity: .7; min-width: 3.5rem; text-align: center; }
@media (max-width: 42rem) {
  .rmpxl-collection--carousel .rmpxl-collection-item { max-width: 88%; }
  .rmpxl-collection--carousel .rmpxl-collection-item img {
    height: clamp(15rem, 62vw, 23rem);
    max-width: 88vw;
  }
}
@media (prefers-reduced-motion: reduce) {
  .rmpxl-collection--carousel .rmpxl-collection-items { scroll-behavior: auto; }
}

/* B286 definitive grid: explicit server-rendered column classes avoid CSS
   repeat(var(...)) parsing and invalid calc() width constraints. */
.home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--post-type .gizmo-post-list {
  display: grid;
  width: 100%;
  max-width: 100%;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.5rem;
}
.home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--post-type .gizmo-post-list.gizmo-post-list--columns-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--post-type .gizmo-post-list.gizmo-post-list--columns-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--post-type .gizmo-post-list.gizmo-post-list--columns-4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--post-type .gizmo-post-list.gizmo-post-list--columns-5 {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}
.home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--post-type .gizmo-post-list.gizmo-post-list--columns-6 {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}
@media (max-width: 48rem) {
  .home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--post-type .gizmo-post-list[class*="gizmo-post-list--columns-"] {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 35rem) {
  .home-layout--horizontal-gallery .gizmo-region--homepage .gizmo--post-type .gizmo-post-list[class*="gizmo-post-list--columns-"] {
    grid-template-columns: minmax(0, 1fr);
  }
}


/* G2.0-B288: Exhibition is a photograph-led, three-part homepage.
   The title, image and prose remain independent, ordered gizmos. */
@media (min-width: 64.001rem) {
  .route-home.home-layout--exhibition .gizmo-region--homepage {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr) minmax(0, 1fr);
    column-gap: clamp(1.25rem, 2.5vw, 2.75rem);
    row-gap: clamp(1.5rem, 3vw, 3rem);
    align-items: start;
    width: 100%;
  }
  .route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo {
    min-width: 0;
    width: 100%;
    margin: 0;
  }
  .route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo--homepage-title {
    grid-column: 1;
  }
  .route-home.home-layout--exhibition .gizmo-region--homepage > :is(.gizmo--photograph-spotlight, .gizmo--featured-media) {
    grid-column: 2;
  }
  .route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo--content {
    grid-column: 3;
  }
  .route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo--homepage-title .homepage-title__heading {
    font-size: clamp(1.8rem, 2.55vw, 3rem);
    line-height: 1.14;
    overflow-wrap: normal;
    hyphens: none;
  }
  .route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo--homepage-title .homepage-title__subtitle {
    font-size: clamp(.85rem, 1vw, 1.05rem);
    line-height: 1.5;
  }
}
.route-home.home-layout--exhibition .gizmo-region--homepage > :is(.gizmo--photograph-spotlight, .gizmo--featured-media) figure {
  width: 100%;
  max-width: none;
  margin: 0;
}
.route-home.home-layout--exhibition .gizmo-region--homepage > :is(.gizmo--photograph-spotlight, .gizmo--featured-media) img {
  display: block;
  width: 100%;
  height: auto;
  max-height: min(74svh, 48rem);
  object-fit: contain;
  object-position: center top;
}
.route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo--content {
  min-width: 0;
  overflow-wrap: break-word;
  line-height: 1.65;
}
.route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo--content > :first-child {
  margin-top: 0;
}
@media (min-width: 48.001rem) and (max-width: 64rem) {
  .route-home.home-layout--exhibition .gizmo-region--homepage {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    gap: clamp(1.25rem, 3vw, 2.25rem);
    align-items: start;
  }
  .route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo--homepage-title {
    grid-column: 1 / -1;
  }
  .route-home.home-layout--exhibition .gizmo-region--homepage > :is(.gizmo--photograph-spotlight, .gizmo--featured-media) {
    grid-column: 1;
  }
  .route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo--content {
    grid-column: 2;
  }
}
@media (max-width: 48rem) {
  .route-home.home-layout--exhibition .gizmo-region--homepage {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
  }
  .route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo {
    width: 100%;
    min-width: 0;
    margin: 0;
  }
  .route-home.home-layout--exhibition .gizmo-region--homepage > :is(.gizmo--photograph-spotlight, .gizmo--featured-media) img {
    max-height: 65svh;
  }
}


/* G2.0-B288 Gallery Wall: replace the exhibition three-column composition.
   Keep gizmos semantic and ordered; do not crop portrait or landscape images. */
.route-home.home-layout--exhibition .gizmo-region--homepage {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  width: 100%;
  max-width: 100%;
  margin-inline: auto;
}
.route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo {
  display: block;
  flex: 0 1 auto;
  grid-column: auto;
  grid-row: auto;
  min-width: 0;
  width: 100%;
  margin: 0;
}
.route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo--homepage-title {
  max-width: 64rem;
  margin: 0 auto clamp(2rem, 4.5vw, 4rem);
  text-align: center;
}
.route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo--homepage-title .homepage-title {
  width: 100%;
  text-align: center;
}
.route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo--homepage-title .homepage-title__heading {
  width: 100%;
  font-size: clamp(2rem, 4.3vw, 4.25rem);
  line-height: 1.12;
  overflow-wrap: normal;
  hyphens: none;
  text-align: center;
}
.route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo--homepage-title .homepage-title__subtitle {
  font-size: clamp(1rem, 1.4vw, 1.2rem);
  line-height: 1.55;
  text-align: center;
}
.route-home.home-layout--exhibition .gizmo-region--homepage > :is(.gizmo--photograph-spotlight, .gizmo--featured-media) {
  width: 100%;
  max-width: min(100%, 84rem);
  margin-inline: auto;
}
.route-home.home-layout--exhibition .gizmo-region--homepage > :is(.gizmo--photograph-spotlight, .gizmo--featured-media) figure {
  display: block;
  width: 100%;
  max-width: none;
  margin: 0;
  text-align: center;
}
.route-home.home-layout--exhibition .gizmo-region--homepage > :is(.gizmo--photograph-spotlight, .gizmo--featured-media) :is(a.gizmo-photograph-link, figure > a) {
  display: block;
  width: 100%;
  text-align: center;
}
.route-home.home-layout--exhibition .gizmo-region--homepage > :is(.gizmo--photograph-spotlight, .gizmo--featured-media) img {
  display: block;
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: min(78svh, 62rem);
  margin-inline: auto;
  object-fit: contain;
  object-position: center;
}
.route-home.home-layout--exhibition .gizmo-region--homepage > :is(.gizmo--photograph-spotlight, .gizmo--featured-media) :is(.gizmo-photograph-title, figcaption) {
  display: block;
  margin-top: .7rem;
  font-size: .9rem;
  line-height: 1.5;
  text-align: center;
}
.route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo--content {
  width: min(100%, 70ch);
  max-width: 70ch;
  margin: clamp(2.75rem, 6vw, 5.5rem) auto 0;
  font-size: clamp(1rem, 1.15vw, 1.125rem);
  line-height: 1.8;
  text-align: left;
  overflow-wrap: break-word;
}
.route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo--content > :first-child {
  margin-top: 0;
}
/* Any other exhibition gizmos remain in the normal document flow. */
.route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo:not(.gizmo--homepage-title):not(.gizmo--photograph-spotlight):not(.gizmo--featured-media):not(.gizmo--content) {
  margin-top: clamp(2rem, 5vw, 4rem);
}
@media (max-width: 48rem) {
  .route-home.home-layout--exhibition .gizmo-region--homepage {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
  }
  .route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo--homepage-title {
    margin-bottom: 1.75rem;
  }
  .route-home.home-layout--exhibition .gizmo-region--homepage > :is(.gizmo--photograph-spotlight, .gizmo--featured-media) img {
    max-height: 70svh;
  }
  .route-home.home-layout--exhibition .gizmo-region--homepage > .gizmo--content {
    width: 100%;
    max-width: 70ch;
    margin-top: 2.5rem;
  }
}


/* G2.0-B288 Gallery Wall frame: exhibition mount, black moulding and wall shadow.
   Applied to the photograph only, never to the linked caption or surrounding gizmo. */
.route-home.home-layout--exhibition .gizmo-region--homepage > :is(.gizmo--photograph-spotlight, .gizmo--featured-media) img {
  box-sizing: border-box;
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: min(78svh, 62rem);
  padding: clamp(0.85rem, 2.8vw, 2.75rem);
  background-color: #f7f5f0;
  border: clamp(5px, 0.65vw, 9px) solid #20201e;
  border-radius: 1px;
  box-shadow:
    inset 0 0 0 1px rgba(0, 0, 0, .12),
    0 2px 3px rgba(0, 0, 0, .23),
    0 12px 24px rgba(0, 0, 0, .17),
    0 24px 45px rgba(0, 0, 0, .10);
}
@media (max-width: 48rem) {
  .route-home.home-layout--exhibition .gizmo-region--homepage > :is(.gizmo--photograph-spotlight, .gizmo--featured-media) img {
    max-height: 70svh;
    padding: clamp(0.55rem, 3vw, 1.1rem);
    border-width: 5px;
    box-shadow: 0 2px 3px rgba(0, 0, 0, .2), 0 9px 18px rgba(0, 0, 0, .14);
  }
}
@media (prefers-contrast: more) {
  .route-home.home-layout--exhibition .gizmo-region--homepage > :is(.gizmo--photograph-spotlight, .gizmo--featured-media) img {
    border-color: #000;
  }
}

/* G2.0-B288: Photograph Spotlight frame-style options.
   Legacy exhibition spotlights retain their existing black frame until edited. */
.gizmo-photograph-spotlight--frame-black img,
.gizmo-photograph-spotlight--frame-wooden img,
.gizmo-photograph-spotlight--frame-white img,
.gizmo-photograph-spotlight--frame-silver img {
  box-sizing: border-box;
  padding: clamp(.85rem, 2.8vw, 2.75rem);
  border: clamp(5px, .65vw, 9px) solid #20201e;
  border-radius: 1px;
  background: #f7f5f0;
  box-shadow: 0 2px 3px rgba(0,0,0,.23), 0 12px 24px rgba(0,0,0,.17), 0 24px 45px rgba(0,0,0,.1);
}
.gizmo-photograph-spotlight--frame-wooden img {
  border-color: #9b754b;
  background: #f6f0e4;
  box-shadow: inset 0 0 0 1px #c8a77e, 0 3px 5px rgba(0,0,0,.2), 0 15px 30px rgba(0,0,0,.15);
}
.gizmo-photograph-spotlight--frame-white img {
  border-color: #f5f4f0;
  background: #fff;
  box-shadow: 0 0 0 1px rgba(0,0,0,.15), 0 4px 10px rgba(0,0,0,.14), 0 16px 28px rgba(0,0,0,.1);
}
.gizmo-photograph-spotlight--frame-silver img {
  border-color: #a4a8aa;
  background: #f7f7f5;
  box-shadow: inset 0 0 0 1px #d8dadb, 0 3px 7px rgba(0,0,0,.19), 0 14px 25px rgba(0,0,0,.12);
}
/* Override the earlier unconditional exhibition framing for an explicit None choice. */
.route-home.home-layout--exhibition .gizmo-region--homepage .gizmo-photograph-spotlight--frame-none img {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.route-home.home-layout--exhibition .gizmo-region--homepage .gizmo-photograph-spotlight--frame-wooden img { border-color: #9b754b; background: #f6f0e4; box-shadow: inset 0 0 0 1px #c8a77e, 0 3px 5px rgba(0,0,0,.2), 0 15px 30px rgba(0,0,0,.15); }
.route-home.home-layout--exhibition .gizmo-region--homepage .gizmo-photograph-spotlight--frame-white img { border-color: #f5f4f0; background: #fff; box-shadow: 0 0 0 1px rgba(0,0,0,.15), 0 4px 10px rgba(0,0,0,.14), 0 16px 28px rgba(0,0,0,.1); }
.route-home.home-layout--exhibition .gizmo-region--homepage .gizmo-photograph-spotlight--frame-silver img { border-color: #a4a8aa; background: #f7f7f5; box-shadow: inset 0 0 0 1px #d8dadb, 0 3px 7px rgba(0,0,0,.19), 0 14px 25px rgba(0,0,0,.12); }
@media (max-width: 48rem) {
  .gizmo-photograph-spotlight--frame-black img,
  .gizmo-photograph-spotlight--frame-wooden img,
  .gizmo-photograph-spotlight--frame-white img,
  .gizmo-photograph-spotlight--frame-silver img { padding: clamp(.55rem, 3vw, 1.1rem); border-width: 5px; }
}
@media (prefers-contrast: more) {
  .gizmo-photograph-spotlight--frame-black img { border-color: #000; }
}

/* B292: calm but visible focus treatment for the header search input only.
   Keep autofocus and keyboard focus intact; avoid the global 3px orange ring. */
.shell-search-popover .shell-search-form input:focus,
.b219-search-popover .b219-search-form input:focus {
  outline: 2px solid var(--accent, #315b47);
  outline-offset: 1px;
  border-color: transparent;
  box-shadow: none;
}
@media (forced-colors: active) {
  .shell-search-popover .shell-search-form input:focus,
  .b219-search-popover .b219-search-form input:focus {
    outline-color: Highlight;
  }
}


/* B292 mobile navigation: compact, left-aligned, responsive and keyboard-accessible. */
@media (max-width:768px) {
  .shell-menu-dialog,.b219-menu-dialog {
    width:min(22rem,100vw); max-width:100vw;
    height:100dvh; max-height:100dvh; overflow:hidden;
  }
  .shell-menu-panel,.b219-menu-panel {
    display:flex; flex-direction:column; align-items:stretch;
    gap:0; padding:clamp(1rem,4vw,1.5rem);
    text-align:start; overflow-y:auto; overflow-x:hidden;
  }
  .shell-menu-panel *, .b219-menu-panel * { box-sizing:border-box; }
  .shell-menu-top,.b219-menu-top {
    flex:0 0 auto; margin:0 0 .65rem; padding-bottom:.8rem;
    border-bottom:1px solid color-mix(in srgb,currentColor 18%,transparent);
  }
  .shell-menu-top strong,.b219-menu-top strong { font-size:1.1rem; }
  .shell-menu-top button,.b219-menu-top button { width:44px;height:44px;font-size:1.6rem; }
  .shell-menu-panel nav,.b219-menu-panel nav {
    order:1; margin:0; width:100%; text-align:start;
  }
  .shell-menu-panel nav ul,.b219-menu-panel nav ul {
    display:flex; flex-direction:column; align-items:stretch;
    gap:0; margin:0; padding:0; list-style:none;
  }
  .shell-menu-panel nav li,.b219-menu-panel nav li {
    display:block; width:100%; margin:0; padding:0; text-align:start;
  }
  .shell-menu-panel nav a,.b219-menu-panel nav a {
    display:block; width:100%; min-height:44px;
    padding:.7rem .35rem; margin:0; text-align:start;
    font-size:1rem; line-height:1.4; overflow-wrap:anywhere;
    border:0; border-bottom:1px solid color-mix(in srgb,currentColor 14%,transparent);
  }
  .shell-menu-panel nav ul ul,.b219-menu-panel nav ul ul {
    margin:0 0 .35rem .75rem; padding:0 0 0 .85rem;
    border-inline-start:2px solid color-mix(in srgb,currentColor 20%,transparent);
    width:calc(100% - .75rem);
  }
  .shell-menu-panel nav ul ul a,.b219-menu-panel nav ul ul a {
    font-size:.94rem; padding:.55rem .35rem; min-height:40px;
  }
  .shell-menu-panel .shell-search-form,.b219-menu-panel .b219-search-form {
    order:2; width:100%; min-width:0; margin:1.25rem 0 0;
    padding:1rem 0 0; border-top:1px solid color-mix(in srgb,currentColor 18%,transparent);
  }
  .shell-menu-panel form[role=search],.b219-menu-panel form[role=search] {
    order:2; width:100%; min-width:0; margin:1.25rem 0 0;
    padding:1rem 0 0; border-top:1px solid color-mix(in srgb,currentColor 18%,transparent);
  }
  .shell-menu-panel form[role=search] > div,.b219-menu-panel form[role=search] > div {
    display:flex; flex-wrap:wrap; gap:.5rem; width:100%; min-width:0;
  }
  .shell-menu-panel form[role=search] input,.b219-menu-panel form[role=search] input {
    flex:1 1 10rem; min-width:0; max-width:100%; width:100%;
  }
  .shell-menu-panel form[role=search] button,.b219-menu-panel form[role=search] button {
    flex:0 0 auto; min-height:44px;
  }
}
@media (max-width:360px) {
  .shell-menu-panel form[role=search] button,.b219-menu-panel form[role=search] button { flex:1 1 100%; }
}

/* B297: keyboard-accessible, responsive breadcrumb trail. */
.site-breadcrumbs { max-width: 100%; margin: 1rem auto; padding: 0 1.25rem; font-size: .875rem; }
.site-breadcrumbs ol { display: flex; flex-wrap: wrap; align-items: baseline; gap: .35rem; margin: 0; padding: 0; list-style: none; }
.site-breadcrumbs li { display: inline-flex; align-items: baseline; min-width: 0; overflow-wrap: anywhere; }
.site-breadcrumbs li + li::before { content: "/"; margin-right: .35rem; opacity: .65; }
.site-breadcrumbs a { text-underline-offset: .2em; }
.site-breadcrumbs a:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.site-breadcrumbs [aria-current="page"] { font-weight: 600; }

/* B297 refinement: breadcrumb is part of the page heading, not a separate bar.
   The main container owns horizontal alignment; avoid a second inset. */
main:has(> .site-breadcrumbs) {
  padding-block-start: clamp(1rem, 2.5vw, 2rem);
}
main > .site-breadcrumbs {
  width: 100%;
  max-width: none;
  margin: 0 0 .55rem;
  padding: 0;
  color: var(--muted, #596574);
  font-size: .8rem;
  line-height: 1.5;
}
main > .site-breadcrumbs [aria-current="page"] {
  color: inherit;
  font-weight: 500;
}
main > .site-breadcrumbs + article > h1:first-child,
main > .site-breadcrumbs + section > h1:first-child {
  margin-block-start: 0;
}

/* B298: user-controlled colour scheme with system fallback. */
:root { --selection-bg: #d9e7df; }
@media (prefers-color-scheme: dark) {
  :root:not([data-appearance="light"]) { color-scheme: dark; --ink:#edf0eb; --muted:#b4c0b8; --paper:#151a18; --surface:#202823; --line:#405047; --line-strong:#65746a; --table-border:#8d9e91; --accent:#a8d9ba; --accent-strong:#b6e5c6; --focus:#ffbd75; --selection-bg:#315b47; }
}
:root[data-appearance="dark"] { color-scheme: dark; --ink:#edf0eb; --muted:#b4c0b8; --paper:#151a18; --surface:#202823; --line:#405047; --line-strong:#65746a; --table-border:#8d9e91; --accent:#a8d9ba; --accent-strong:#b6e5c6; --focus:#ffbd75; --selection-bg:#315b47; }
:root[data-appearance="light"] { color-scheme: light; }
::selection { background: var(--selection-bg); }
.appearance-control select { max-width:100%; padding:.35rem .45rem; background:var(--surface); color:var(--ink); border:1px solid var(--line-strong); border-radius:.3rem; font:inherit; cursor:pointer; }
.visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.theme-brand-logos { display:inline-flex; align-items:center; }
.site-title:has(.theme-brand-logos) { display:inline-flex; align-items:center; gap:.75rem; }
.theme-brand-logos img { max-width:min(12rem, 42vw); max-height:3rem; width:auto; height:auto; object-fit:contain; }
.theme-logo-dark { display:none; }
:root[data-appearance="dark"] .theme-logo-light { display:none; }
:root[data-appearance="dark"] .theme-logo-dark { display:block; }
@media (prefers-color-scheme: dark) { :root:not([data-appearance="light"]) .theme-logo-light { display:none; } :root:not([data-appearance="light"]) .theme-logo-dark { display:block; } }
@media (max-width:46rem) { .appearance-control select { min-height:2.75rem; } }
@media (forced-colors:active) { .appearance-control select { border-color:CanvasText; } }

/* B298: accessible, restrained appearance tokens for interactive surfaces. */
:root {
  --action-bg: #183f2d;
  --action-fg: #ffffff;
  --action-hover-bg: #315b47;
  --action-hover-fg: #ffffff;
  --menu-bg: var(--surface);
  --menu-fg: var(--ink);
  --menu-link: var(--accent-strong);
  --menu-hover-bg: #e9efe9;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-appearance="light"]) {
    --action-bg: #b6e5c6;
    --action-fg: #15241b;
    --action-hover-bg: #a8d9ba;
    --action-hover-fg: #15241b;
    --menu-bg: #202823;
    --menu-fg: #edf0eb;
    --menu-link: #b6e5c6;
    --menu-hover-bg: #304037;
  }
}
:root[data-appearance="dark"] {
  --action-bg: #b6e5c6;
  --action-fg: #15241b;
  --action-hover-bg: #a8d9ba;
  --action-hover-fg: #15241b;
  --menu-bg: #202823;
  --menu-fg: #edf0eb;
  --menu-link: #b6e5c6;
  --menu-hover-bg: #304037;
}
:root[data-appearance="light"] {
  --action-bg: #183f2d;
  --action-fg: #ffffff;
  --action-hover-bg: #315b47;
  --action-hover-fg: #ffffff;
  --menu-bg: #ffffff;
  --menu-fg: #191b1a;
  --menu-link: #183f2d;
  --menu-hover-bg: #e9efe9;
}
.comment-form button, .contact-form button, .search-form button {
  background: var(--action-bg);
  border-color: var(--action-bg);
  color: var(--action-fg);
}
.comment-form button:hover, .contact-form button:hover, .search-form button:hover {
  background: var(--action-hover-bg);
  border-color: var(--action-hover-bg);
  color: var(--action-hover-fg);
}
.comment-form button:disabled, .contact-form button:disabled, .search-form button:disabled {
  opacity: .72;
  cursor: not-allowed;
}
.b219-desktop-nav .configured-navigation li.has-children > ul,
.shell-search-popover, .b219-search-popover,
.shell-menu-dialog, .b219-menu-dialog {
  background: var(--menu-bg);
  color: var(--menu-fg);
  border-color: var(--line-strong);
}
.b219-desktop-nav .configured-navigation li.has-children > ul a,
.shell-menu-dialog a, .b219-menu-dialog a {
  color: var(--menu-link);
}
.b219-desktop-nav .configured-navigation li li a:hover,
.b219-desktop-nav .configured-navigation li li a:focus-visible {
  background: var(--menu-hover-bg);
}
@media (forced-colors: active) {
  .comment-form button, .contact-form button, .search-form button { forced-color-adjust:auto; border-color:ButtonText; color:ButtonText; background:ButtonFace; }
  .b219-desktop-nav .configured-navigation li.has-children > ul { border-color:CanvasText; background:Canvas; color:CanvasText; }
  .b219-desktop-nav .configured-navigation li.has-children > ul a { color:LinkText; }
}

/* B298: footer-centred appearance switch; no header width consumed on mobile. */
.site-footer { position:relative; min-height:4.5rem; }
.footer-appearance { display:flex; align-items:center; justify-content:center; gap:.5rem; margin-inline:auto; }
.footer-appearance .appearance-option { font:inherit; font-weight:600; font-size:.875rem; line-height:1.4; padding:.5rem .85rem; min-height:2.75rem; border:1px solid var(--line-strong); border-radius:.4rem; background:var(--surface); color:var(--ink); cursor:pointer; }
.footer-appearance .appearance-option[data-effective="true"] { border-color:var(--accent); box-shadow:inset 0 -2px var(--accent); }
.footer-appearance .appearance-option:hover { border-color:var(--accent); }
.footer-appearance .appearance-option:focus-visible { outline:3px solid var(--focus); outline-offset:3px; }
@media (min-width:60rem) { .site-footer > .footer-appearance { position:absolute; left:50%; top:1.35rem; transform:translateX(-50%); } }
@media (max-width:59.999rem) { .site-footer > .footer-appearance { order:10; flex-basis:100%; } }
@media (forced-colors:active) { .footer-appearance .appearance-option[data-effective="true"] { outline:2px solid Highlight; outline-offset:-3px; } }

/* B298: unobtrusive accessible icon-only footer appearance switch. */
.footer-appearance { gap:.25rem; padding:.15rem; border:1px solid var(--line); border-radius:.7rem; background:var(--surface); }
.footer-appearance .appearance-option { display:inline-flex; align-items:center; justify-content:center; width:2.75rem; height:2.75rem; min-width:2.75rem; min-height:2.75rem; padding:0; border:1px solid transparent; border-radius:.5rem; background:transparent; color:var(--muted); box-shadow:none; transition:background-color .15s ease,color .15s ease; }
.footer-appearance .appearance-option svg { width:1.3rem; height:1.3rem; display:block; flex:none; }
.footer-appearance .appearance-option[data-effective="true"] { background:var(--menu-hover-bg); color:var(--ink); border-color:var(--line-strong); box-shadow:none; }
.footer-appearance .appearance-option:hover { background:var(--menu-hover-bg); color:var(--ink); border-color:var(--line-strong); }
.footer-appearance .appearance-option:focus-visible { outline:3px solid var(--focus); outline-offset:3px; }
@media (prefers-reduced-motion:reduce) { .footer-appearance .appearance-option { transition:none; } }
@media (forced-colors:active) { .footer-appearance { border-color:CanvasText; } .footer-appearance .appearance-option[data-effective="true"] { background:Highlight; color:HighlightText; border-color:Highlight; outline:2px solid Highlight; outline-offset:1px; } }

/* B298 footer alignment: three independent regions, scoped to the footer only.
   A footer gizmo is never positioned by the appearance switch. */
.site-footer {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 1rem 1.5rem;
}
.site-footer > .gizmo-region--footer { grid-column: 1; grid-row: 1; justify-self: start; min-width: 0; }
.site-footer > .footer-appearance {
  grid-column: 2; grid-row: 1; justify-self: center;
  position: static; left: auto; top: auto; transform: none;
  order: initial; flex-basis: auto; margin: 0;
}
.site-footer > .configured-navigation,
.site-footer > a[href="/"] { grid-column: 3; grid-row: 1; justify-self: end; min-width: 0; }
.site-footer > .configured-navigation ul { justify-content: flex-end; }
.site-footer .appearance-option[aria-disabled="true"] { cursor: default; }
.site-footer .appearance-option[aria-disabled="true"]:hover { background: var(--menu-hover-bg); color: var(--ink); }
@media (max-width: 42rem) {
  .site-footer { grid-template-columns: minmax(0, 1fr) auto; align-items: center; }
  .site-footer > .gizmo-region--footer { grid-column: 1; grid-row: 1; }
  .site-footer > .footer-appearance { grid-column: 2; grid-row: 1; }
  .site-footer > .configured-navigation,
  .site-footer > a[href="/"] { grid-column: 1 / -1; grid-row: 2; justify-self: start; }
  .site-footer > .configured-navigation ul { justify-content: flex-start; }
}
@media (max-width: 23rem) {
  .site-footer { grid-template-columns: minmax(0, 1fr); }
  .site-footer > .gizmo-region--footer { grid-column: 1; grid-row: 1; }
  .site-footer > .footer-appearance { grid-column: 1; grid-row: 2; justify-self: center; }
  .site-footer > .configured-navigation,
  .site-footer > a[href="/"] { grid-column: 1; grid-row: 3; }
}

/* B298: visually compact footer control; preserve 44px accessible hit areas. */
.site-footer > .footer-appearance { gap: 0; padding: 1px; border-radius: .55rem; }
.site-footer .footer-appearance .appearance-option { width: 2.75rem; height: 2.75rem; min-width: 2.75rem; min-height: 2.75rem; border-radius: .45rem; }
.site-footer .footer-appearance .appearance-option svg { width: 1.25rem; height: 1.25rem; }


/* B301: larger, proportionate branding with vertically centred header navigation. */
.shell-header,
.b219-header {
  align-items: center;
}
.shell-desktop-nav,
.b219-desktop-nav {
  align-self: center;
}

.theme-brand-logos img {
  max-width: min(250px, 60vw);
  max-height: 60px;
  width: auto;
  height: auto;
  object-fit: contain;
}
@media (max-width: 48rem) {
  .theme-brand-logos img { max-width: min(250px, 55vw); }
}


/* B302: conspicuous but restrained draft-preview status, including dark mode. */
.preview-notice {
  display: grid;
  gap: .25rem;
  max-width: 72rem;
  margin: 1.25rem auto 1.5rem;
  padding: .9rem 1.15rem;
  border: 1px solid #b58139;
  border-inline-start: 4px solid #a66a1b;
  border-radius: .4rem;
  background: #fff2d9;
  color: #49300d;
  line-height: 1.5;
}
.preview-notice strong { font-weight: 700; }
.preview-notice span { display: block; }
@media (prefers-color-scheme: dark) {
  .preview-notice { background: #34291c; color: #ffe3ad; border-color: #b58139; }
}
:root[data-appearance="dark"] .preview-notice { background: #34291c; color: #ffe3ad; border-color: #b58139; }
:root[data-appearance="light"] .preview-notice { background: #fff2d9; color: #49300d; }
@media (max-width: 40rem) { .preview-notice { margin-block: .75rem 1rem; padding: .75rem .9rem; } }

/* B304: allow standard page paragraphs to fill the content column and wrap
   naturally around floated images rather than enforcing a fixed measure. */
.route-page .page-content > .page-body,
.standard-page-layout .page-content > .page-body {
    max-width: 100%;
    min-width: 0;
}

/* B304: give the breadcrumb trail breathing room before the page heading. */
main > .site-breadcrumbs { margin-block-end: 1.125rem; }


/* B311: responsive Places directory and photograph links. */
.places-grid { display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,16rem),1fr));gap:1.25rem;margin-block:1.25rem; }
.places-grid article { min-width:0;overflow-wrap:anywhere; }
.places-pagination { display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-block:1.5rem; }
.places-directory > nav[aria-label="Breadcrumb"] { margin-block-end:1.125rem; }

/* B312: plugin-configured Places photograph presentation. */
.places-gallery { --places-columns:3;--places-gap:16px;gap:var(--places-gap);margin-block:1.25rem; }
.places-gallery--grid { display:grid;grid-template-columns:repeat(var(--places-columns),minmax(0,1fr));align-items:start; }
.places-gallery--grid img { display:block;width:100%;height:auto; }
.places-gallery--masonry,.places-gallery--columns { display:block;columns:var(--places-columns);column-gap:var(--places-gap); }
.places-gallery--masonry article,.places-gallery--columns article { display:inline-block;width:100%;break-inside:avoid;margin-block:0 var(--places-gap);vertical-align:top; }
.places-gallery img { display:block;width:100%;height:auto; }
@media (max-width:64rem) { .places-gallery--grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .places-gallery--masonry,.places-gallery--columns { columns:2; } }
@media (max-width:42rem) { .places-gallery--grid { grid-template-columns:minmax(0,1fr); } .places-gallery--masonry,.places-gallery--columns { columns:1; } }

/* B323: responsive Photo Map and accessible fallback results */
.photo-map-canvas { width:100%; min-height:26rem; height:min(68vh,42rem); border-radius:.5rem; overflow:hidden; }
.photo-map-controls { display:flex; flex-wrap:wrap; gap:1rem; align-items:center; margin-block:1rem; }
[data-map-results] ol { display:grid; gap:.5rem; padding-inline-start:1.5rem; }
@media(max-width:640px) { .photo-map-canvas { min-height:20rem; height:55vh; } }

/* B395: browser-resolved member links must remain hidden until state is verified. */
.configured-navigation [data-member-visibility][hidden] { display: none !important; }

/* B433: shared tag archive */
.shared-tag-filters{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0 1.5rem}
.shared-tag-filters a{display:inline-block;padding:.45rem .75rem;border:1px solid currentColor;border-radius:.5rem;text-decoration:none}
.shared-tag-filters a[aria-current="page"]{font-weight:700;text-decoration:underline}
.shared-tag-results{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.2rem}
.shared-tag-card{border:1px solid var(--border-color,#ccc);border-radius:.6rem;overflow:hidden;height:100%}
.shared-tag-card__image{display:block;aspect-ratio:3/2;overflow:hidden}
.shared-tag-card__image img{display:block;width:100%;height:100%;object-fit:cover}
.shared-tag-card--photograph .shared-tag-card__image{aspect-ratio:1/1}
.shared-tag-card__body{padding:1rem}
.shared-tag-card__type{font-size:.8rem;opacity:.75}
.shared-tag-card h2{font-size:1.2rem;margin:.35rem 0}
@media(min-width:641px) and (max-width:900px){.shared-tag-results{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.shared-tag-results{grid-template-columns:1fr}}

/* B445: three-across archive directories on desktop, two on medium screens
   and one on small screens. Scope Places to directory entries so the
   separately configurable Places photograph gallery is unaffected. */
.places-directory .places-directory__entries {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}
@media (max-width: 70rem) {
    .route-blog-archive .blog-list,
    .places-directory .places-directory__entries {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (max-width: 46rem) {
    .route-blog-archive .blog-list,
    .places-directory .places-directory__entries {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* B445: Bring the Blog cards into the same restrained card system. */
.route-blog-archive .blog-list > li { padding: 0; border: 1px solid var(--line-strong); border-radius: .45rem; overflow: hidden; }
.route-blog-archive .blog-list article { height: 100%; padding: clamp(1rem, 2vw, 1.3rem); }
.route-blog-archive .blog-list .publication { margin-top: auto; padding-top: .55rem; }

/* B459: the PHP client owns the newsletter gizmo presentation. Core supplies
   semantic form HTML, but never user-specific CSS or inline styling. */
.newsletter-gizmo {
  width: 100%;
  min-width: 0;
  max-width: 32rem;
  padding: clamp(1rem, 2.5vw, 1.3rem);
  border: 1px solid var(--line);
  border-radius: .7rem;
  background: var(--surface);
  color: var(--ink);
}
.newsletter-gizmo .newsletter-intro {
  margin: 0 0 1.15rem;
  color: var(--muted);
  font-size: .91rem;
  line-height: 1.6;
}
.newsletter-gizmo .newsletter-form {
  display: grid;
  min-width: 0;
  gap: .95rem;
}
.newsletter-gizmo .newsletter-field {
  display: grid;
  min-width: 0;
  gap: .35rem;
}
.newsletter-gizmo .newsletter-field > label {
  margin: 0;
  color: var(--ink);
  font-size: .86rem;
  font-weight: 650;
  line-height: 1.45;
}
.newsletter-gizmo :is(input[type="text"],input[type="email"],select) {
  display: block;
  width: 100%;
  min-width: 0;
  min-height: 2.75rem;
  margin: 0;
  padding: .6rem .75rem;
  border: 1px solid var(--line-strong);
  border-radius: .4rem;
  background: var(--surface);
  color: var(--ink);
  font: inherit;
  font-size: .91rem;
  line-height: 1.4;
}
.newsletter-gizmo :is(input[type="text"],input[type="email"],select):focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 2px;
}
.newsletter-gizmo :is(input[type="text"],input[type="email"])[readonly] {
  background: var(--paper);
  color: var(--muted);
  cursor: default;
  opacity: 1;
}
.newsletter-gizmo .newsletter-profile-note {
  margin: -.35rem 0 0;
  color: var(--muted);
  font-size: .81rem;
  line-height: 1.5;
}
.newsletter-gizmo .newsletter-consent {
  display: flex;
  min-width: 0;
  gap: .65rem;
  align-items: flex-start;
  margin: .1rem 0 0;
  color: var(--ink);
  font-size: .85rem;
  font-weight: 400;
  line-height: 1.55;
  cursor: pointer;
}
.newsletter-gizmo .newsletter-consent input[type="checkbox"] {
  flex: 0 0 1.15rem;
  width: 1.15rem;
  height: 1.15rem;
  min-width: 0;
  margin: .15rem 0 0;
  accent-color: var(--accent);
  cursor: pointer;
}
.newsletter-gizmo .newsletter-consent span { min-width: 0; flex: 1; }
.newsletter-gizmo .newsletter-consent a { color: var(--accent-strong); }
.newsletter-gizmo .newsletter-submit {
  display: block;
  width: 100%;
  min-height: 2.9rem;
  margin: .1rem 0 0;
  padding: .65rem 1rem;
  border: 1px solid var(--accent);
  border-radius: .4rem;
  background: var(--accent);
  color: var(--paper);
  font: inherit;
  font-size: .93rem;
  font-weight: 700;
  line-height: 1.4;
  text-align: center;
  cursor: pointer;
}
.newsletter-gizmo .newsletter-submit:hover {
  background: var(--accent-strong);
  border-color: var(--accent-strong);
}
.newsletter-gizmo .newsletter-submit:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 3px;
}
.newsletter-gizmo .newsletter-help {
  margin: .1rem 0 0;
  padding-top: .85rem;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: .78rem;
  line-height: 1.55;
}
.newsletter-gizmo .newsletter-honeypot {
  position: absolute;
  left: -99999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
.newsletter-page-form .newsletter-honeypot {position:absolute;left:-99999px;width:1px;height:1px;overflow:hidden;}
.newsletter-page-form .newsletter-page-consent {display:flex;align-items:flex-start;gap:.6rem;}
.newsletter-page-form .newsletter-page-consent input[type="checkbox"] {flex:0 0 auto;width:1.15rem;height:1.15rem;min-width:0;margin:.16rem 0 0;}

/* B459: profile-aware newsletter forms without leaking subscriber credentials. */
.newsletter-page-form .newsletter-profile-note{font-size:.86em;line-height:1.45;margin:.15rem 0;color:var(--muted,#617183)}
.newsletter-page-form input[readonly]{background:var(--paper);color:var(--muted);opacity:1;cursor:default}

/* B459 newsletter edition browser archive, public and subscriber-free. */
.newsletter-public-edition{max-width:940px;margin-inline:auto;line-height:1.65}
.newsletter-public-edition h2{margin-block:2rem .85rem}
.newsletter-public-edition .newsletter-welcome{white-space:normal;max-width:72ch}
.newsletter-photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.2rem;margin-block:1.5rem}
.newsletter-photo{display:flex;flex-direction:column;gap:.5rem;text-decoration:none;color:inherit;min-width:0}
.newsletter-photo img{display:block;width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:.4rem}
.newsletter-photo span{font-weight:600}
.newsletter-archive-list,.newsletter-story-list{padding-left:1.5rem}
@media (max-width:540px){.newsletter-photo-grid{grid-template-columns:1fr}}
/* B459: Post excerpts in the public newsletter archive share site text colours. */
.newsletter-story-excerpt{margin:.35rem 0 1.15rem;max-width:65ch;line-height:1.6;color:inherit}

/* B459: Newsletter routes share the site's canonical header/footer and palette. */
.route-newsletter .newsletter-page-container { width:min(100%, 940px); margin-inline:auto; }
.route-newsletter .newsletter-page-container > h1,
.route-newsletter .newsletter-public-edition > h1 { margin-block:0 1.1rem; }
.route-newsletter .newsletter-page-form { width:min(100%, 34rem); display:grid; gap:1rem; margin-block:1.4rem 2rem; }
.route-newsletter .newsletter-page-form > p { margin:0; }
.route-newsletter .newsletter-page-form > p > label:not(.newsletter-page-consent) { display:block; font-weight:600; margin-block-end:.4rem; }
.route-newsletter .newsletter-page-form input[type="text"],
.route-newsletter .newsletter-page-form input[type="email"] { display:block; box-sizing:border-box; width:100%; min-height:2.8rem; padding:.65rem .8rem; border:1px solid var(--line-strong); border-radius:.45rem; background:var(--surface); color:var(--ink); font:inherit; }
.route-newsletter .newsletter-page-form > button,
.route-newsletter main form > button[type="submit"] { justify-self:start; min-height:2.75rem; padding:.7rem 1.4rem; border:1px solid var(--accent-strong); border-radius:.45rem; background:var(--accent); color:var(--paper); font:inherit; font-weight:650; cursor:pointer; }
.route-newsletter main :is(a, input, button):focus-visible { outline:3px solid var(--focus); outline-offset:3px; }

/* B477: progressively enhanced, keyboard-accessible archive taxonomy filters. */
.archive-filters { margin: 1.25rem 0 2rem; padding: 1rem; border: 1px solid var(--line); border-radius: .5rem; }
.archive-filters__fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); gap: .85rem; }
.archive-filters__field { display: grid; gap: .3rem; min-width: 0; }
.archive-filters__field label { font-weight: 600; }
.archive-filters__field input { box-sizing: border-box; min-width: 0; width: 100%; padding: .5rem; border: 1px solid var(--line); border-radius: .3rem; color: var(--ink); background: var(--surface); }
.archive-filters__field input:focus-visible, .archive-filters__actions a:focus-visible, .archive-filters__actions button:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.archive-filters__actions { display: flex; align-items: center; flex-wrap: wrap; gap: 1rem; margin-top: 1rem; }
.archive-filters__actions button { cursor: pointer; padding: .5rem .85rem; }
.archive-filters__hint { margin: .8rem 0 0; color: var(--muted); font-size: .9rem; }

/* B477 refinement: dynamic taxonomy names, responsive and theme-safe. */
.archive-filters__field input[type="text"] { min-height: 2.6rem; font: inherit; }
.archive-filters__status { display: block; min-height: 1.2em; color: var(--muted); font-size: .8rem; }
