
:root {
  --ink: #11110f;
  --paper: #f4f2ed;
  --paper-deep: #e9e5dc;
  --surface: #fbfaf7;
  --muted: #706e67;
  --line: rgba(17, 17, 15, 0.16);
  --mat: rgba(255,255,255,.32);
  --photo-shadow-rgb: 20 18 14;
  --photo-shadow-primary-alpha: .34;
  --photo-shadow-secondary-alpha: .22;
  --photo-shadow-contact-alpha: .12;
  --photo-shadow-hover-primary-alpha: .40;
  --photo-shadow-hover-secondary-alpha: .24;
  --photo-shadow-hover-contact-alpha: .14;
  --photo-shadow: 0 7px 15px -5px rgb(var(--photo-shadow-rgb) / var(--photo-shadow-primary-alpha)), 0 2px 5px -1px rgb(var(--photo-shadow-rgb) / var(--photo-shadow-secondary-alpha)), 0 1px 2px rgb(var(--photo-shadow-rgb) / var(--photo-shadow-contact-alpha));
  --photo-shadow-hover: 0 9px 18px -5px rgb(var(--photo-shadow-rgb) / var(--photo-shadow-hover-primary-alpha)), 0 3px 6px -1px rgb(var(--photo-shadow-rgb) / var(--photo-shadow-hover-secondary-alpha)), 0 1px 2px rgb(var(--photo-shadow-rgb) / var(--photo-shadow-hover-contact-alpha));
  --banner-bg: #11110f;
  --banner-text: #f4f2ed;
  --max: 1540px;
  --pad: clamp(20px, 4vw, 72px);
  --serif: Georgia, 'Times New Roman', serif;
  --sans: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  color-scheme: light;
}

html[data-theme="dark"] {
  --ink: #f1f0eb;
  --paper: #111212;
  --paper-deep: #1b1c1c;
  --surface: #171818;
  --muted: #aaa9a3;
  --line: rgba(255,255,255,.16);
  --mat: rgba(255,255,255,.035);
  --photo-shadow-rgb: 0 0 0;
  --banner-bg: #070707;
  --banner-text: #f4f2ed;
  color-scheme: dark;
}

@media (prefers-color-scheme: dark) {
  html[data-theme="system"] {
    --ink: #f1f0eb;
    --paper: #111212;
    --paper-deep: #1b1c1c;
    --surface: #171818;
    --muted: #aaa9a3;
    --line: rgba(255,255,255,.16);
    --mat: rgba(255,255,255,.035);
  --photo-shadow-rgb: 0 0 0;
    --banner-bg: #070707;
    --banner-text: #f4f2ed;
    color-scheme: dark;
  }
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--paper); }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--body-font, var(--sans)); -webkit-font-smoothing: antialiased; }
body.is-lightbox-open { overflow: hidden; touch-action: none; }
button, input, textarea, select { font: inherit; }
a { color: inherit; }
img { max-width: 100%; }
.skip-link { position: fixed; left: 12px; top: -100px; z-index: 2000; background: var(--surface); padding: 12px 16px; }
.skip-link:focus { top: 12px; }

.site-header {
  width: 100%;
  min-height: 104px;
  max-width: var(--max);
  margin: 0 auto;
  padding: 20px var(--pad);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
  border-bottom: 1px solid var(--line);
}
.brand { display: inline-flex; align-items: center; gap: 13px; text-decoration: none; }
.brand__mark { width: var(--header-logo-size, 56px); height: var(--header-logo-size, 56px); flex: 0 0 auto; object-fit: contain; }
.brand__text { display: grid; gap: 2px; line-height: 1; }
.brand__text strong { font-family: var(--heading-font, var(--serif)); font-size: 18px; font-weight: 500; letter-spacing: .01em; }
.brand__text small { color: var(--muted); font-size: 10px; letter-spacing: .22em; text-transform: uppercase; }
.brand__mobile-text { display: none; }
.site-nav { min-width: 0; flex: 1 1 auto; display: flex; justify-content: center; gap: clamp(14px, 2vw, 36px); }
.site-nav a { white-space: nowrap; font-family: var(--nav-font, var(--sans)); color: var(--muted); font-size: 13px; letter-spacing: .12em; text-decoration: none; text-transform: uppercase; }
.site-header--nav-many .site-nav { gap: clamp(10px, 1.35vw, 24px); }
.site-header--nav-many .site-nav a { font-size: 12px; letter-spacing: .09em; }
@media (min-width: 901px) {
  .site-header:not(.site-header--sidebar) .brand__mark {
    transform: scale(var(--top-header-logo-scale, 1));
    transform-origin: left center;
  }
  .site-header:not(.site-header--sidebar) .brand {
    margin-right: var(--top-header-logo-extra, 0px);
  }
  .site-header:not(.site-header--sidebar) .site-nav a {
    font-size: calc(13px * var(--top-header-nav-text-scale, 1));
  }
  .site-header:not(.site-header--sidebar).site-header--nav-many .site-nav a {
    font-size: calc(12px * var(--top-header-nav-text-scale, 1));
  }
}
.site-nav a:hover, .site-nav a:focus-visible { color: var(--ink); }
.nav-toggle { display: none; width: 44px; height: 44px; border: 0; background: transparent; padding: 10px; }
.nav-toggle span { display: block; height: 1px; background: var(--ink); margin: 7px 0; transition: transform .2s ease; }

.mobile-rotate-prompt { display: none; }
.mobile-rotate-prompt__inner {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 11px 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: color-mix(in srgb, var(--surface) 92%, transparent);
  color: var(--muted);
  box-shadow: 0 10px 24px rgba(0,0,0,.04);
}
.mobile-rotate-prompt__icon {
  width: 28px;
  height: 28px;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--ink);
}
.mobile-rotate-prompt__icon svg { width: 100%; height: 100%; display: block; }
.mobile-rotate-prompt__text {
  font-size: 12px;
  line-height: 1.4;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.hero {
  max-width: var(--max);
  min-height: min(780px, calc(100vh - 104px));
  margin: 0 auto;
  padding: clamp(40px, 7vw, 110px) var(--pad);
  display: grid;
  grid-template-columns: minmax(280px, .78fr) minmax(420px, 1.42fr);
  gap: clamp(40px, 7vw, 120px);
  align-items: center;
}
.hero__copy { max-width: 570px; }
.eyebrow { margin: 0 0 22px; color: var(--muted); font-size: 11px; font-weight: 600; letter-spacing: .2em; line-height: 1.4; text-transform: uppercase; }
h1 { font-family: var(--title-font, var(--serif)); font-weight: 400; }
h2, h3 { font-family: var(--heading-font, var(--serif)); font-weight: 400; }
.hero h1 { max-width: 730px; margin: 0 0 30px; font-size: clamp(52px, 6vw, 102px); letter-spacing: -.045em; line-height: .94; }
.hero__copy > p:not(.eyebrow) { max-width: 540px; margin: 0 0 32px; color: var(--muted); font-size: clamp(16px, 1.4vw, 20px); line-height: 1.7; }
.text-link { display: inline-flex; gap: 20px; align-items: center; border-bottom: 1px solid currentColor; padding-bottom: 8px; font-size: 12px; letter-spacing: .16em; text-decoration: none; text-transform: uppercase; }
.hero__image { position: relative; display: flex; align-items: center; justify-content: center; min-height: 520px; height: min(74vh, 850px); background: var(--paper-deep); overflow: hidden; }
.hero__image img { width: 100%; height: 100%; object-fit: cover; }
.hero__credit { position: absolute; right: 14px; bottom: 12px; color: rgba(255,255,255,.82); font-size: 10px; letter-spacing: .12em; text-shadow: 0 1px 5px rgba(0,0,0,.45); text-transform: uppercase; }
.hero__image--empty { background: var(--paper-deep); }

.section { max-width: var(--max); margin: 0 auto; padding: clamp(85px, 11vw, 170px) var(--pad); }
.section--work { border-top: 1px solid var(--line); }
.section-heading { display: grid; grid-template-columns: minmax(270px, .8fr) minmax(260px, 1fr); gap: 36px 90px; align-items: end; margin-bottom: clamp(45px, 7vw, 95px); }
.section-heading .eyebrow { grid-column: 1 / -1; margin-bottom: -12px; }
.section-heading h2, .split-section h2, .print-banner h2, .contact-section h2 { margin: 0; font-size: clamp(42px, 5.5vw, 82px); letter-spacing: -.04em; line-height: .98; }
.section-heading > p:last-child { max-width: 650px; margin: 0; color: var(--muted); font-size: 17px; line-height: 1.75; }

.filter-bar { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 34px; }
.filter-bar button { border: 1px solid var(--line); border-radius: 999px; background: transparent; color: var(--muted); padding: 9px 15px; cursor: pointer; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; }
.filter-bar button:hover, .filter-bar button.is-active { border-color: var(--ink); background: var(--ink); color: var(--paper); }

.photo-grid { columns: 3 310px; column-gap: clamp(16px, 2vw, 32px); }
.photo-card-wrap { position: relative; width: 100%; display: block; break-inside: avoid; margin: 0 0 clamp(16px, 2vw, 32px); }
.photo-card { position: relative; width: 100%; height: auto; display: block; margin: 0; padding: 0; border: 0; background: transparent; color: inherit; cursor: zoom-in; text-align: left; }
.photo-card-wrap[hidden] { display: none; }
.photo-card__art { display: block; padding: clamp(4px, .45vw, 8px); background: var(--mat); }
.photo-card img { display: block; width: 100%; height: auto; background: var(--paper-deep); box-shadow: var(--photo-shadow); transition: opacity .25s ease, transform .5s cubic-bezier(.2,.7,.2,1), box-shadow .5s ease; }
.photo-card__caption { display: flex; justify-content: space-between; gap: 16px; padding-top: 12px; opacity: .8; }
.photo-card__caption strong { font-family: var(--heading-font, var(--serif)); font-size: 16px; font-weight: 400; }
.photo-card__caption small { color: var(--muted); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; text-align: right; }
.photo-card:hover img { opacity: .96; transform: none; box-shadow: var(--photo-shadow-hover); }
.photo-card:focus-visible { outline: 2px solid var(--ink); outline-offset: 5px; }

.gallery-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(28px, 4vw, 70px) clamp(20px, 3vw, 48px); }
.gallery-card { text-decoration: none; }
.gallery-card__image { aspect-ratio: 4 / 3; overflow: hidden; background: var(--paper-deep); }
.gallery-card__image img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .7s cubic-bezier(.2,.7,.2,1); }
.gallery-card__copy { display: flex; align-items: baseline; justify-content: space-between; gap: 20px; padding: 17px 0; border-bottom: 1px solid var(--line); }
.gallery-card h3 { margin: 0; font-family: var(--gallery-landing-name-font, var(--gallery-landing-font, var(--heading-font, var(--serif)))); font-size: clamp(27px, 3vw, 43px); letter-spacing: var(--gallery-landing-name-letter-spacing, -.025em); }
.gallery-card--landing-color h3 { color: var(--gallery-landing-name-color) !important; }
.gallery-card span { color: var(--muted); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; }
.gallery-card span b { margin-left: 12px; color: var(--ink); font-size: 18px; font-weight: 400; }
.gallery-card:hover img { transform: scale(1.025); }

.split-section { display: grid; grid-template-columns: minmax(280px, .8fr) minmax(320px, 1fr); gap: clamp(50px, 8vw, 150px); border-top: 1px solid var(--line); }
.prose { max-width: 680px; color: var(--muted); font-size: clamp(17px, 1.6vw, 21px); line-height: 1.85; }
.prose p { margin: 0 0 1.6em; }

.print-banner { max-width: var(--max); margin: 0 auto; padding: clamp(70px, 9vw, 130px) var(--pad); display: grid; grid-template-columns: 1.2fr .8fr; gap: 70px; align-items: end; color: var(--banner-text); background: var(--banner-bg); }
.print-banner h2 { max-width: 860px; }
.print-banner > div:last-child p { max-width: 600px; margin: 0 0 30px; color: rgba(244,242,237,.68); font-size: 17px; line-height: 1.7; }
.button { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; border: 1px solid var(--ink); background: var(--ink); color: var(--paper); padding: 12px 22px; cursor: pointer; font-size: 11px; font-weight: 600; letter-spacing: .13em; text-decoration: none; text-transform: uppercase; }
.button:hover { background: transparent; color: var(--ink); }
.button--light { border-color: var(--paper); background: var(--paper); color: var(--ink); }
.button--light:hover { background: transparent; color: var(--paper); }

.contact-section { display: grid; grid-template-columns: minmax(280px, .8fr) minmax(380px, 1fr); gap: clamp(50px, 8vw, 140px); }
.contact-section .section-heading { display: block; margin: 0; }
.contact-section .section-heading h2 { margin-bottom: 28px; }
.contact-section .section-heading > p:last-child { font-size: 16px; }
.contact-form { display: grid; gap: 22px; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.contact-form label { display: grid; gap: 9px; color: var(--muted); font-size: 10px; font-weight: 600; letter-spacing: .15em; text-transform: uppercase; }
.contact-form input, .contact-form textarea { width: 100%; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: transparent; color: var(--bp-contact-entry-color, var(--ink)); caret-color: var(--bp-contact-entry-color, var(--ink)); padding: 12px 0; outline: none; font-size: 16px; letter-spacing: 0; text-transform: none; }
.contact-form input:focus, .contact-form textarea:focus { border-color: var(--ink); }
.contact-form textarea { min-height: 140px; resize: vertical; }
.form-footer { display: flex; align-items: center; gap: 22px; }
.form-status { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.4; }
.honeypot { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }

.site-footer { max-width: var(--max); margin: 0 auto; padding: 38px var(--pad) 44px; display: grid; grid-template-columns: 1fr auto; gap: 22px 40px; align-items: start; border-top: 1px solid var(--line); color: var(--muted); font-size: 12px; }
.site-footer > div { display: flex; gap: 20px; }
.site-footer strong { color: var(--ink); font-family: var(--heading-font, var(--serif)); font-weight: 400; }
.site-footer a { text-decoration: none; }
.site-footer small { grid-column: 1 / -1; font-size: 10px; }

/* v1.0.205 — tighter gallery-page rhythm. The old hero used up to 150px above
   the return link plus a fixed 70px gap before the title, which created a large
   empty band on wide screens. Keep the editorial breathing room, but make the
   default substantially more compact. Themed galleries refine these values
   further through their existing Intimate / Balanced / Spacious setting. */
.gallery-hero { max-width: var(--max); margin: 0 auto; padding: clamp(42px, 6vw, 82px) var(--pad) clamp(28px, 4vw, 52px); }
.gallery-hero h1 { max-width: 1000px; margin: 0 0 20px; font-size: clamp(60px, 9vw, 140px); letter-spacing: -.055em; line-height: .88; text-transform: capitalize; }
/* v1.0.206 — per-gallery title scale. Values are emitted by render.php from the individual gallery setting. */
body.gallery-page .gallery-hero h1 { font-size: clamp(var(--gallery-page-title-min, 60px), var(--gallery-page-title-fluid, 9vw), var(--gallery-page-title-max, 140px)); }
.gallery-hero > p:last-child { color: var(--muted); font-size: 12px; letter-spacing: .12em; text-transform: uppercase; }
.back-link { display: inline-block; margin-bottom: clamp(28px, 3.5vw, 46px); color: var(--muted); font-size: 11px; letter-spacing: .12em; text-decoration: none; text-transform: uppercase; }
.section--gallery { padding-top: 0; }
.empty-state { min-height: 250px; display: grid; place-items: center; border: 1px solid var(--line); color: var(--muted); }
.not-found { min-height: calc(100vh - 105px); max-width: 920px; margin: 0 auto; padding: 15vh var(--pad); text-align: center; }
.not-found h1 { margin: 0 0 24px; font-size: clamp(50px, 8vw, 110px); line-height: .95; }
.not-found > p:not(.eyebrow) { margin-bottom: 36px; color: var(--muted); }

/* The viewer always reserves a bounded stage. The image can never exceed it, so portrait and landscape work fit without page scrolling. */
.lightbox[hidden] { display: none; }
.lightbox {
  --viewer-background: rgba(5, 5, 5, .975);
  --viewer-foreground: #fff;
  --viewer-muted: rgba(255,255,255,.56);
  --viewer-muted-soft: rgba(255,255,255,.55);
  --viewer-control: rgba(255,255,255,.84);
  --viewer-control-strong: #fff;
  --viewer-control-border: rgba(255,255,255,.42);
  --viewer-control-border-strong: rgba(255,255,255,.5);
  --viewer-nav-background: rgba(0,0,0,.16);
  --viewer-nav-mobile-background: rgba(0,0,0,.38);
  --viewer-nav-hover-background: rgba(255,255,255,.08);
  --viewer-progress-track: rgba(255,255,255,.18);
  --viewer-progress-fill: rgba(255,255,255,.82);
  --viewer-thumb-background: rgba(255,255,255,.04);
  --viewer-atmosphere-start: rgba(5,5,5,.86);
  --viewer-atmosphere-end: rgba(5,5,5,.94);
  position: fixed;
  inset: 0;
  z-index: 1000;
  width: 100vw;
  height: 100vh;
  height: 100dvh;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto auto;
  overflow: hidden;
  padding: max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left));
  background: var(--viewer-background);
  color: var(--viewer-foreground);
  transition: background-color .35s ease, color .35s ease;
}
.lightbox--background-light { --viewer-background: rgba(244,242,237,.985); }
.lightbox--background-light,
.lightbox--background-custom.lightbox--controls-dark,
html[data-theme="light"] .lightbox--background-theme {
  --viewer-foreground: #11110f;
  --viewer-muted: rgba(17,17,15,.58);
  --viewer-muted-soft: rgba(17,17,15,.55);
  --viewer-control: rgba(17,17,15,.82);
  --viewer-control-strong: #11110f;
  --viewer-control-border: rgba(17,17,15,.36);
  --viewer-control-border-strong: rgba(17,17,15,.46);
  --viewer-nav-background: rgba(255,255,255,.56);
  --viewer-nav-mobile-background: rgba(255,255,255,.74);
  --viewer-nav-hover-background: rgba(17,17,15,.08);
  --viewer-progress-track: rgba(17,17,15,.18);
  --viewer-progress-fill: rgba(17,17,15,.78);
  --viewer-thumb-background: rgba(17,17,15,.045);
  --viewer-atmosphere-start: rgba(244,242,237,.82);
  --viewer-atmosphere-end: rgba(244,242,237,.93);
}
html[data-theme="light"] .lightbox--background-theme { --viewer-background: rgba(244,242,237,.985); }
@media (prefers-color-scheme: light) {
  html[data-theme="system"] .lightbox--background-theme {
    --viewer-background: rgba(244,242,237,.985);
    --viewer-foreground: #11110f;
    --viewer-muted: rgba(17,17,15,.58);
    --viewer-muted-soft: rgba(17,17,15,.55);
    --viewer-control: rgba(17,17,15,.82);
    --viewer-control-strong: #11110f;
    --viewer-control-border: rgba(17,17,15,.36);
    --viewer-control-border-strong: rgba(17,17,15,.46);
    --viewer-nav-background: rgba(255,255,255,.56);
    --viewer-nav-mobile-background: rgba(255,255,255,.74);
    --viewer-nav-hover-background: rgba(17,17,15,.08);
    --viewer-progress-track: rgba(17,17,15,.18);
    --viewer-progress-fill: rgba(17,17,15,.78);
    --viewer-thumb-background: rgba(17,17,15,.045);
    --viewer-atmosphere-start: rgba(244,242,237,.82);
    --viewer-atmosphere-end: rgba(244,242,237,.93);
  }
}
.lightbox__topbar { min-height: 48px; display: flex; align-items: center; justify-content: space-between; padding: 0 10px; }
.lightbox__counter { color: var(--viewer-muted); font-size: 11px; letter-spacing: .12em; }
.lightbox__close { border: 0; background: transparent; color: var(--viewer-control); padding: 9px; cursor: pointer; font-size: 11px; letter-spacing: .1em; text-transform: uppercase; }
.lightbox__close span { margin-left: 8px; color: var(--viewer-control-strong); font-size: 24px; font-weight: 200; line-height: 0; vertical-align: -2px; }
.lightbox__stage { min-width: 0; min-height: 0; position: relative; display: flex; align-items: center; justify-content: center; padding: 4px 62px; overflow: hidden; }
.lightbox__stage img { display: block; width: auto; height: auto; max-width: 100%; max-height: 100%; object-fit: contain; user-select: none; -webkit-user-drag: none; }
.lightbox__nav { position: absolute; top: 50%; z-index: 2; width: 48px; height: 64px; transform: translateY(-50%); border: 0; background: var(--viewer-nav-background); color: var(--viewer-control); cursor: pointer; font-family: var(--heading-font, var(--serif)); font-size: 46px; font-weight: 200; }
.lightbox__nav:hover { color: var(--viewer-control-strong); background: var(--viewer-nav-hover-background); }
.lightbox__nav--prev { left: 4px; }
.lightbox__nav--next { right: 4px; }
.lightbox__caption { min-height: 58px; display: grid; grid-template-columns: auto auto 1fr; gap: 10px 18px; align-items: baseline; padding: 12px 10px 8px; }
.lightbox__caption strong { font-family: var(--heading-font, var(--serif)); font-size: 17px; font-weight: 400; }
.lightbox__caption span { color: var(--viewer-muted-soft); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; }
.lightbox__caption p { justify-self: end; max-width: 650px; margin: 0; overflow: hidden; color: var(--viewer-muted-soft); font-size: 12px; line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; }

@media (min-width: 901px) and (max-width: 1120px) {
  .nav-toggle { display: block; position: relative; z-index: 12; }
  .site-nav { position: fixed; inset: 0; z-index: 10; display: none; flex-direction: column; align-items: center; justify-content: center; gap: 34px; background: var(--paper); }
  .site-nav.is-open { display: flex; }
  .site-nav a, .site-header--nav-many .site-nav a { font-family: var(--heading-font, var(--serif)); color: var(--ink); font-size: 38px; letter-spacing: -.02em; text-transform: none; }
  .nav-toggle[aria-expanded="true"] span:first-child { transform: translateY(4px) rotate(45deg); }
  .nav-toggle[aria-expanded="true"] span:last-child { transform: translateY(-4px) rotate(-45deg); }
}

@media (max-width: 900px) {
  .site-header {
    position: relative;
    min-height: max(84px, calc(var(--mobile-header-logo-size, 48px) + var(--mobile-header-text-extra, 0px) + 28px));
    padding-top: 14px;
    padding-bottom: 14px;
  }
  .site-header .brand {
    position: absolute;
    left: 50%;
    top: 50%;
    z-index: 11;
    max-width: calc(100% - 126px);
    margin: 0;
    overflow: visible;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 5px;
    text-align: center;
    transform: translate(-50%, -50%);
  }
  .site-header .brand__mark {
    width: var(--mobile-header-logo-size, 48px);
    height: var(--mobile-header-logo-size, 48px);
  }
  .site-header .brand__text { display: none; }
  .site-header .brand__mobile-text {
    display: block !important;
    width: max-content;
    max-width: min(72vw, 320px);
    overflow: visible;
    color: var(--ink);
    font-family: var(--mobile-header-text-font, var(--heading-font, Georgia, serif));
    font-size: var(--mobile-header-text-size, 12px);
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: .04em;
    text-align: center;
    white-space: normal;
    opacity: 1;
    visibility: visible;
  }
  .nav-toggle { display: block; position: relative; z-index: 12; }
  .mobile-rotate-prompt {
    display: block;
    max-width: var(--max);
    margin: 10px auto 0;
    padding: 0 var(--pad);
  }
  .mobile-rotate-prompt__inner { border-radius: 12px; }
  .site-nav { position: fixed; inset: 0; z-index: 10; display: none; flex-direction: column; align-items: center; justify-content: center; gap: 34px; background: var(--paper); }
  .site-nav.is-open { display: flex; }
  .site-nav a { font-family: var(--heading-font, var(--serif)); color: var(--ink); font-size: 38px; letter-spacing: -.02em; text-transform: none; }
  .nav-toggle[aria-expanded="true"] span:first-child { transform: translateY(4px) rotate(45deg); }
  .nav-toggle[aria-expanded="true"] span:last-child { transform: translateY(-4px) rotate(-45deg); }
  .hero { min-height: auto; grid-template-columns: 1fr; padding-top: 70px; }
  .hero__image { min-height: 0; height: min(72vh, 760px); }
  .section-heading, .split-section, .print-banner, .contact-section { grid-template-columns: 1fr; }
  .section-heading { gap: 26px; }
  .gallery-grid { grid-template-columns: 1fr; }
  .print-banner { gap: 38px; }
  .site-footer { grid-template-columns: 1fr; }
  .site-footer > div { flex-wrap: wrap; }
  .site-footer small { grid-column: auto; }
}

@media (max-width: 620px) {
  :root { --pad: 18px; }
  .brand__text strong { font-size: 16px; }
  .hero { gap: 38px; padding-top: 52px; padding-bottom: 70px; }
  .hero h1 { font-size: clamp(48px, 15vw, 75px); }
  .hero__image { height: 64vh; height: 64svh; }
  .section { padding-top: 90px; padding-bottom: 90px; }
  .section-heading { margin-bottom: 48px; }
  .photo-grid { columns: 1; }
  .portfolio-layout--masonry .photo-card-wrap { margin-bottom: 30px; }
  .gallery-card__copy { display: block; }
  .gallery-card span { display: block; margin-top: 7px; }
  .form-row { grid-template-columns: 1fr; }
  .form-footer { align-items: flex-start; flex-direction: column; }
  .button { width: 100%; }
  .gallery-hero { padding-top: 70px; }
  .back-link { margin-bottom: 50px; }
  .lightbox { padding-top: max(4px, env(safe-area-inset-top)); padding-bottom: max(4px, env(safe-area-inset-bottom)); }
  .lightbox__topbar { min-height: 42px; }
  .lightbox__stage { padding: 2px 4px; }
  .lightbox__nav { top: auto; bottom: 10px; width: 45px; height: 45px; border-radius: 50%; background: var(--viewer-nav-mobile-background); font-size: 36px; }
  .lightbox__nav--prev { left: 8px; }
  .lightbox__nav--next { right: 8px; }
  .lightbox__caption { min-height: 62px; grid-template-columns: 1fr auto; gap: 4px 10px; padding: 9px 8px 5px; }
  .lightbox__caption strong { font-size: 15px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .lightbox__caption span { text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .lightbox__caption p { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}

/* Optional shop and payment-only checkout */
.lightbox__topbar { gap: 12px; }
.lightbox__purchase { margin-left: auto; border: 1px solid var(--viewer-control-border-strong); background: transparent; color: var(--viewer-control-strong); padding: 8px 13px; cursor: pointer; font-family: var(--nav-font, var(--sans)); font-size: 10px; letter-spacing: .12em; text-transform: uppercase; }
.lightbox__purchase:hover { background: var(--viewer-control-strong); color: var(--viewer-background); }
.purchase-sheet[hidden] { display: none; }
.purchase-sheet { position: fixed; inset: 0; z-index: 1100; display: grid; place-items: end center; padding: 18px; }
.purchase-sheet__backdrop { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: rgba(0,0,0,.68); cursor: default; }
.purchase-sheet__panel { position: relative; width: min(720px, 100%); max-height: min(88vh, 760px); max-height: min(88dvh, 760px); overflow: auto; padding: clamp(28px, 5vw, 56px); background: var(--paper); color: var(--ink); box-shadow: 0 30px 100px rgba(0,0,0,.35); }
.purchase-sheet__panel h2 { margin: 0 0 14px; font-size: clamp(38px, 7vw, 68px); line-height: .95; }
.purchase-sheet__note { margin: 0 0 28px; color: var(--muted); line-height: 1.65; }
.purchase-sheet__close { position: absolute; top: 12px; right: 14px; border: 0; background: transparent; cursor: pointer; font-size: 30px; }
.purchase-sheet__options { display: grid; gap: 10px; }
.purchase-option { display: grid; grid-template-columns: 1fr auto; gap: 18px; align-items: center; padding: 18px 0; border-top: 1px solid var(--line); }
.purchase-option strong, .purchase-option span { display: block; }
.purchase-option strong { font-family: var(--heading-font, var(--serif)); font-size: 21px; font-weight: 400; }
.purchase-option span { margin-top: 5px; color: var(--muted); font-size: 13px; }
.purchase-option b { display: block; margin-bottom: 8px; text-align: right; font-size: 13px; }

.shop-hero { max-width: var(--max); margin: 0 auto; padding: clamp(70px, 10vw, 150px) var(--pad) clamp(65px, 8vw, 110px); border-bottom: 1px solid var(--line); }
.shop-hero h1 { max-width: 1100px; margin: 0 0 28px; font-size: clamp(58px, 9vw, 140px); letter-spacing: -.055em; line-height: .88; }
.shop-hero > p:not(.eyebrow) { max-width: 700px; color: var(--muted); font-size: clamp(17px, 1.7vw, 22px); line-height: 1.7; }
.shop-hero small { display: block; max-width: 700px; margin-top: 20px; color: var(--muted); font-size: 12px; line-height: 1.6; }
.shop-list { max-width: var(--max); margin: 0 auto; padding: clamp(60px, 9vw, 140px) var(--pad); }
.shop-card { display: grid; grid-template-columns: minmax(300px, .9fr) minmax(340px, 1fr); gap: clamp(35px, 7vw, 110px); align-items: center; padding: clamp(48px, 7vw, 100px) 0; border-bottom: 1px solid var(--line); }
.shop-card:first-child { padding-top: 0; }
.shop-card__image { display: block; padding: clamp(6px, .6vw, 10px); border: 0; background: rgba(255,255,255,.25); cursor: zoom-in; }
.shop-card__image img { display: block; width: 100%; height: auto; box-shadow: 0 28px 68px rgba(20,18,14,.18), 0 5px 14px rgba(20,18,14,.09); }
.shop-card__copy h2 { margin: 0 0 20px; font-size: clamp(42px, 6vw, 78px); line-height: .95; }
.shop-card__copy > p:not(.eyebrow) { max-width: 650px; color: var(--muted); font-size: 16px; line-height: 1.7; }
.shop-card__options { margin-top: 36px; }
.shop-option { display: grid; grid-template-columns: 1fr auto; gap: 18px; align-items: center; padding: 18px 0; border-top: 1px solid var(--line); }
.shop-option strong, .shop-option span { display: block; }
.shop-option strong { font-family: var(--heading-font, var(--serif)); font-size: 20px; font-weight: 400; }
.shop-option span { margin-top: 5px; color: var(--muted); font-size: 12px; }
.shop-option > div:last-child { text-align: right; }
.shop-option b { display: block; margin-bottom: 8px; font-size: 13px; }

@media (max-width: 760px) {
  .shop-card { grid-template-columns: 1fr; }
  .purchase-option, .shop-option { grid-template-columns: 1fr; }
  .purchase-option b, .shop-option > div:last-child { text-align: left; }
  .purchase-option .button, .shop-option .button { width: 100%; }
}

@media (max-width: 620px) {
  .lightbox__topbar { padding-left: 6px; padding-right: 2px; }
  .lightbox__purchase { padding: 7px 9px; font-size: 9px; }
  .lightbox__close { padding-left: 4px; padding-right: 4px; }
  .purchase-sheet { padding: 0; place-items: end stretch; }
  .purchase-sheet__panel { width: 100%; max-height: 90dvh; padding: 34px 20px 24px; }
}

/* Configurable branding, theme, and portfolio containers */
.content-width--contained { --max: 1180px; }
.content-width--wide { --max: 1540px; }
.content-width--full { --max: 2200px; --pad: clamp(14px, 2.5vw, 46px); }

.header-actions { display: flex; align-items: center; gap: 6px; margin-left: auto; }
.theme-toggle { width: 42px; height: 42px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 50%; background: transparent; color: var(--ink); cursor: pointer; }
.theme-toggle span { grid-area: 1 / 1; transition: opacity .2s ease; }
.theme-toggle__dark { opacity: 0; }
.theme-toggle[data-current-theme="dark"] .theme-toggle__light { opacity: 0; }
.theme-toggle[data-current-theme="dark"] .theme-toggle__dark { opacity: 1; }
.brand__mark--small { --header-logo-size: 38px; }
.brand__mark--medium { --header-logo-size: 56px; }
.brand__mark--large { --header-logo-size: 76px; }

.section--work-bare { padding-top: clamp(24px, 4vw, 58px); }
.section--work-bare:first-child { border-top: 0; }

/* v1.0.120 — cold-load masonry gate.
   Ordered masonry is rebuilt by JavaScript from the temporary CSS-column
   structure. Keep that temporary arrangement invisible so visitors see only
   the final mat/frame positions, never the tiny upward settling pass. */
body.portfolio-layout--masonry.masonry-order--ordered:not(.bp-ordered-masonry-ready) .photo-grid {
  visibility: hidden;
}
body.portfolio-layout--masonry.masonry-order--ordered.bp-ordered-masonry-ready .photo-grid {
  visibility: visible;
}

/* Natural masonry: variable orientations and no cropping. */
.portfolio-layout--masonry.preview-size--small .photo-grid { columns: 4 230px; }
.portfolio-layout--masonry.preview-size--medium .photo-grid { columns: 3 310px; }
.portfolio-layout--masonry.preview-size--large .photo-grid { columns: 2 440px; }

/* Order-first masonry keeps the saved sequence moving left-to-right across
   the top of each group, instead of filling one CSS column from top to bottom. */
.portfolio-layout--masonry.masonry-order--ordered .photo-grid.photo-grid--ordered-masonry {
  --ordered-masonry-gap: clamp(16px, 2vw, 32px);
  columns: auto;
  display: grid;
  grid-template-columns: repeat(var(--ordered-masonry-columns, 3), minmax(0, 1fr));
  gap: var(--ordered-masonry-gap);
  align-items: start;
}
.portfolio-layout--masonry.masonry-order--ordered .photo-grid__ordered-column {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--ordered-masonry-gap);
}
.portfolio-layout--masonry.masonry-order--ordered .photo-grid.photo-grid--ordered-masonry .photo-card-wrap { margin: 0; }

/* Clean grid: consistent preview containers, full images contained inside. */
.portfolio-layout--grid .photo-grid,
.portfolio-layout--compact .photo-grid,
.portfolio-layout--stacked .photo-grid { columns: auto; display: grid; }
.portfolio-layout--grid.preview-size--small .photo-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.portfolio-layout--grid.preview-size--medium .photo-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.portfolio-layout--grid.preview-size--large .photo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.portfolio-layout--grid .photo-grid { gap: clamp(16px, 2vw, 32px); }
.portfolio-layout--grid .photo-card-wrap,
.portfolio-layout--grid .photo-card { margin: 0; }
.portfolio-layout--grid .photo-card__art { aspect-ratio: 4 / 3; display: grid; place-items: center; overflow: hidden; }
.portfolio-layout--grid .photo-card img { width: 100%; height: 100%; object-fit: contain; }

/* Compact wall: more small previews on screen. */
.portfolio-layout--compact .photo-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: clamp(8px, 1.2vw, 18px); }
.portfolio-layout--compact .photo-card-wrap,
.portfolio-layout--compact .photo-card { margin: 0; }
.portfolio-layout--compact .photo-card__art { aspect-ratio: 1 / 1; display: grid; place-items: center; overflow: hidden; }
.portfolio-layout--compact .photo-card img { width: 100%; height: 100%; object-fit: contain; }
.portfolio-layout--compact .photo-card__caption { font-size: 12px; }

/* Stacked presentation: one uncropped image per row. */
.portfolio-layout--stacked .photo-grid { grid-template-columns: minmax(0, 1fr); gap: clamp(42px, 8vw, 110px); max-width: 1180px; margin: 0 auto; }
.portfolio-layout--stacked .photo-card-wrap,
.portfolio-layout--stacked .photo-card { margin: 0; }
.portfolio-layout--stacked .photo-card__art { display: grid; place-items: center; }
.portfolio-layout--stacked .photo-card img { width: auto; max-width: 100%; max-height: 82vh; object-fit: contain; }


/* Viewport-fit grid: the selected density is arranged to fit one screen at a time. */
.portfolio-layout--viewport .photo-grid {
  --viewport-grid-gap: clamp(8px, 1.25vw, 22px);
  columns: auto;
  display: grid;
  grid-template-columns: repeat(var(--viewport-grid-columns, 3), minmax(0, 1fr));
  grid-auto-rows: var(--viewport-grid-row-height, min(28vh, 300px));
  gap: var(--viewport-grid-gap);
  align-items: stretch;
}
.portfolio-layout--viewport .photo-card-wrap { min-width: 0; height: 100%; margin: 0; overflow: hidden; }
.portfolio-layout--viewport .photo-card {
  min-width: 0;
  height: 100%;
  margin: 0;
  overflow: hidden;
}
.portfolio-layout--viewport .photo-card__art {
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
  overflow: hidden;
}
.portfolio-layout--viewport .photo-card img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.portfolio-layout--viewport .photo-card__caption {
  position: absolute;
  inset: auto 0 0;
  z-index: 2;
  margin: 0;
  padding: 34px 12px 10px;
  color: #fff;
  background: linear-gradient(180deg, transparent, rgba(0,0,0,.62));
  pointer-events: none;
}
.portfolio-layout--viewport.captions--hidden .photo-card__caption { display: none; }
.portfolio-layout--viewport .photo-card-wrap[hidden] { display: none; }

/* Container treatments create depth without moving photographs independently. */
.card-style--flat .photo-card__art { padding: 0; background: transparent; }
.card-style--flat .photo-card img { box-shadow: none; }
.card-style--flat .photo-card:hover img { box-shadow: none; }
.card-style--floating .photo-card__art { background: var(--mat); }
.card-style--framed .photo-card__art { padding: clamp(10px, 1.2vw, 22px); border: 1px solid var(--line); background: var(--surface); }
.card-style--framed .photo-card img { box-shadow: var(--photo-shadow); }

/* Fine-art mat presentation. The mat belongs to the preview, not the full-screen image. */
body.mat-tone--adaptive,
body.mat-tone--ivory {
  --photo-mat-color: #f1ede4;
  --photo-mat-edge: rgba(62, 55, 45, .12);
}
body.mat-tone--white {
  --photo-mat-color: #fbfaf7;
  --photo-mat-edge: rgba(42, 39, 34, .11);
}
body.mat-tone--soft-gray {
  --photo-mat-color: #d9d6cf;
  --photo-mat-edge: rgba(42, 42, 40, .13);
}
body.mat-tone--charcoal {
  --photo-mat-color: #222320;
  --photo-mat-edge: rgba(255,255,255,.12);
}
html[data-theme="dark"] body.mat-tone--adaptive {
  --photo-mat-color: #242522;
  --photo-mat-edge: rgba(255,255,255,.1);
}
@media (prefers-color-scheme: dark) {
  html[data-theme="system"] body.mat-tone--adaptive {
    --photo-mat-color: #242522;
    --photo-mat-edge: rgba(255,255,255,.1);
  }
}
.mat-presentation--enabled .photo-card__art {
  padding: clamp(0px, var(--photo-mat-size, 18px), 42px);
  border: 1px solid var(--photo-mat-edge, rgba(42,39,34,.1));
  background: var(--photo-mat-color, #f1ede4);
  box-shadow:
    0 var(--photo-mat-shadow-y, 6px) var(--photo-mat-shadow-blur, 14px) var(--photo-mat-shadow-spread, -4px) rgb(var(--photo-shadow-rgb) / var(--photo-mat-shadow-alpha, .18)),
    0 2px 5px -1px rgb(var(--photo-shadow-rgb) / var(--photo-mat-shadow-soft-alpha, .09)),
    0 1px 2px rgb(var(--photo-shadow-rgb) / var(--photo-mat-shadow-contact-alpha, .10));
  transition: box-shadow .45s ease, border-color .3s ease, background-color .3s ease;
}
.mat-presentation--enabled.mat-border--off .photo-card__art { border-color: transparent; }
.mat-presentation--enabled .photo-card img,
.mat-presentation--enabled.card-style--flat .photo-card img,
.mat-presentation--enabled.card-style--floating .photo-card img,
.mat-presentation--enabled.card-style--framed .photo-card img { box-shadow: none; }
.mat-presentation--enabled .photo-card:hover .photo-card__art,
.mat-presentation--enabled .photo-card:focus-visible .photo-card__art {
  box-shadow:
    0 calc(var(--photo-mat-shadow-y, 6px) + 2px) calc(var(--photo-mat-shadow-blur, 14px) + 4px) var(--photo-mat-shadow-spread, -4px) rgb(var(--photo-shadow-rgb) / var(--photo-mat-shadow-hover-alpha, .23)),
    0 3px 6px -1px rgb(var(--photo-shadow-rgb) / var(--photo-mat-shadow-soft-alpha, .10)),
    0 1px 2px rgb(var(--photo-shadow-rgb) / var(--photo-mat-shadow-hover-contact-alpha, .12));
}

/* Editorial wall: asymmetric print placement with deliberate negative space. */
.portfolio-layout--editorial .section--work {
  padding-top: clamp(34px, 5vw, 76px);
  padding-bottom: clamp(90px, 13vw, 190px);
}
.portfolio-layout--editorial .photo-grid {
  --editorial-columns: 12;
  columns: auto;
  display: grid;
  grid-template-columns: repeat(var(--editorial-columns), minmax(0, 1fr));
  grid-auto-rows: auto;
  column-gap: clamp(14px, 2.1vw, 38px);
  row-gap: clamp(54px, 8vw, 132px);
  align-items: start;
}
.portfolio-layout--editorial .photo-card-wrap {
  grid-column: var(--editorial-column, 1) / span var(--editorial-span, 4);
  grid-row: var(--editorial-row, auto);
  width: 100%;
  min-width: 0;
  margin: var(--editorial-offset, 0px) 0 0;
  break-inside: auto;
}
.portfolio-layout--editorial .photo-card { margin: 0; }
.portfolio-layout--editorial .photo-card__art {
  width: 100%;
  max-width: 100%;
  display: grid;
  place-items: center;
  margin-inline: auto;
}
.portfolio-layout--editorial .photo-card img {
  width: 100%;
  height: auto;
  max-height: min(76vh, 980px);
  object-fit: contain;
}
.portfolio-layout--editorial .photo-card-wrap[data-photo-orientation="portrait"] .photo-card__art { width: min(100%, 82%); }
.portfolio-layout--editorial .photo-card-wrap[data-photo-orientation="square"] .photo-card__art { width: min(100%, 92%); }
.portfolio-layout--editorial .photo-card__caption { max-width: 100%; margin-inline: auto; }

.captions--hidden .photo-card__caption { display: none; }
.captions--hover .photo-card__caption { opacity: 0; transition: opacity .2s ease; }
.captions--hover .photo-card:hover .photo-card__caption,
.captions--hover .photo-card:focus-visible .photo-card__caption { opacity: .82; }
.captions--always .photo-card__caption { opacity: .82; }

@media (max-width: 1100px) {
  .portfolio-layout--grid.preview-size--small .photo-grid,
  .portfolio-layout--grid.preview-size--medium .photo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .portfolio-layout--compact .photo-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 620px) {
  .portfolio-layout--masonry .photo-grid { columns: 1; }
  .portfolio-layout--grid .photo-grid { grid-template-columns: 1fr !important; }
  .portfolio-layout--compact .photo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .portfolio-layout--compact .photo-card__caption { display: none; }
  .captions--hover .photo-card__caption { opacity: .82; }
  .brand__mark { width: min(var(--header-logo-size, 56px), 92px); height: min(var(--header-logo-size, 56px), 92px); }
  .portfolio-layout--editorial .photo-grid { row-gap: clamp(42px, 12vw, 78px); column-gap: 0; }
  .portfolio-layout--editorial .photo-card-wrap { margin-top: 0; }
  .portfolio-layout--editorial .photo-card-wrap[data-photo-orientation="portrait"] .photo-card__art,
  .portfolio-layout--editorial .photo-card-wrap[data-photo-orientation="square"] .photo-card__art { width: 100%; }
  .mat-presentation--enabled .photo-card__art { padding: min(var(--photo-mat-size, 18px), 24px); }
}

/* Modular page containers and optional content types */
.container { width: 100%; margin-left: auto; margin-right: auto; }
.container--narrow { max-width: 860px; }
.container--contained { max-width: 1180px; }
.container--wide { max-width: 1540px; }
.container--full { max-width: 2200px; }
.site-header--sticky { position: sticky; top: 0; z-index: 50; background: color-mix(in srgb, var(--paper) 92%, transparent); backdrop-filter: blur(14px); }
.section--heading { padding-bottom: 0; border-top: 1px solid var(--line); }
.contact-preview { display: grid; justify-items: start; gap: 22px; border-top: 1px solid var(--line); }
.contact-preview h2 { max-width: 900px; margin: 0; font-size: clamp(46px, 7vw, 100px); line-height: .94; letter-spacing: -.045em; }
.contact-preview > p:not(.eyebrow) { max-width: 680px; margin: 0; color: var(--muted); font-size: 18px; line-height: 1.7; }

.text-page { padding: clamp(70px, 10vw, 150px) var(--pad); }
.text-page--center { text-align: center; }
.text-page h1, .page-hero h1, .contact-page h1 { max-width: 1100px; margin: 0 0 35px; font-size: clamp(58px, 9vw, 135px); line-height: .88; letter-spacing: -.055em; }
.text-page--center h1, .text-page--center .rich-text { margin-left: auto; margin-right: auto; }
.rich-text { max-width: 820px; color: var(--muted); font-size: clamp(17px, 1.6vw, 21px); line-height: 1.85; }
.rich-text h2 { margin: 2.1em 0 .6em; color: var(--ink); font-size: clamp(32px, 4vw, 55px); line-height: 1; }
.rich-text h3 { margin: 1.8em 0 .5em; color: var(--ink); font-size: clamp(24px, 3vw, 36px); }
.rich-text p { margin: 0 0 1.45em; }
.rich-text a { color: var(--ink); text-underline-offset: 4px; }
.rich-text .text-bullet { position: relative; padding-left: 1.3em; }
.rich-text .text-bullet::before { content: '—'; position: absolute; left: 0; color: var(--ink); }


/* v1.0.276 — configurable FAQ pages use native <details> so every question
   starts collapsed without JavaScript and remains keyboard/screen-reader friendly. */
.faq-page { --faq-question-color:var(--ink); --faq-answer-color:var(--muted); --faq-panel-bg:transparent; --faq-open-bg:transparent; --faq-border-color:var(--line); --faq-icon-color:var(--ink); --faq-question-size:22px; --faq-answer-size:18px; --faq-question-weight:500; --faq-radius:0px; --faq-gap:0px; --faq-pad-x:22px; --faq-pad-y:20px; --faq-border-width:1px; }
.faq-page .faq-page__intro { margin-bottom:clamp(38px,5vw,72px); }
.text-page--center.faq-page .faq-page__intro { margin-left:auto; margin-right:auto; }
.faq-list { width:100%; display:grid; gap:var(--faq-gap); }
.faq-item { color:var(--faq-question-color); background:var(--faq-panel-bg); transition:background-color .2s ease,border-color .2s ease; overflow:hidden; }
.faq-page--line .faq-item { border-bottom:var(--faq-border-width) solid var(--faq-border-color); border-radius:var(--faq-radius); }
.faq-page--line .faq-item:first-child { border-top:var(--faq-border-width) solid var(--faq-border-color); }
.faq-page--card .faq-item { border:var(--faq-border-width) solid var(--faq-border-color); border-radius:var(--faq-radius); }
.faq-item[open] { background:var(--faq-open-bg); }
.faq-item summary { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:var(--faq-pad-y) var(--faq-pad-x); cursor:pointer; list-style:none; user-select:none; }
.faq-item summary::-webkit-details-marker { display:none; }
.faq-item summary::marker { content:''; }
.faq-item__question { min-width:0; color:var(--faq-question-color); font-size:var(--faq-question-size); font-weight:var(--faq-question-weight); line-height:1.28; letter-spacing:-.015em; }
.faq-item__icon { position:relative; flex:0 0 22px; width:22px; height:22px; color:var(--faq-icon-color); }
.faq-page--icon-plus .faq-item__icon::before,
.faq-page--icon-plus .faq-item__icon::after { content:''; position:absolute; left:50%; top:50%; width:16px; height:1.5px; background:currentColor; transform:translate(-50%,-50%); transition:transform .2s ease,opacity .2s ease; }
.faq-page--icon-plus .faq-item__icon::after { transform:translate(-50%,-50%) rotate(90deg); }
.faq-page--icon-plus .faq-item[open] .faq-item__icon::after { transform:translate(-50%,-50%) rotate(0); opacity:0; }
.faq-page--icon-chevron .faq-item__icon::before { content:''; position:absolute; left:50%; top:42%; width:9px; height:9px; border-right:1.6px solid currentColor; border-bottom:1.6px solid currentColor; transform:translate(-50%,-50%) rotate(45deg); transition:transform .2s ease,top .2s ease; }
.faq-page--icon-chevron .faq-item[open] .faq-item__icon::before { top:58%; transform:translate(-50%,-50%) rotate(225deg); }
.faq-item__answer { padding:0 var(--faq-pad-x) var(--faq-pad-y); color:var(--faq-answer-color); font-size:var(--faq-answer-size); line-height:1.75; }
.faq-item__answer .rich-text { max-width:none; color:inherit; font-size:inherit; line-height:inherit; }
.faq-item__answer .rich-text > :last-child { margin-bottom:0; }
.faq-item__answer .rich-text h2,
.faq-item__answer .rich-text h3,
.faq-item__answer .rich-text a,
.faq-item__answer .rich-text .text-bullet::before { color:var(--faq-question-color); }
.faq-item__answer .rich-text h2 { font-size:1.35em; line-height:1.15; }
.faq-item__answer .rich-text h3 { font-size:1.15em; line-height:1.2; }
.text-page--center.faq-page .faq-item summary,
.text-page--center.faq-page .faq-item__answer { text-align:left; }
.faq-page__empty { margin:0; padding:24px 0; color:var(--muted); font-size:16px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
@media (hover:hover) {
  .faq-item summary:hover .faq-item__question { opacity:.72; }
}
@media (max-width:720px) {
  .faq-page { --faq-pad-x:min(5vw,22px); }
  .faq-item summary { gap:16px; }
  .faq-item__icon { flex-basis:20px; width:20px; height:20px; }
}

/* v1.0.272 — optional image layouts for About/text pages. The page title
   remains full-width; placement controls only the image/text content beneath it. */
.text-page__body { width: 100%; }
.text-page__body--left,
.text-page__body--right {
  display: grid;
  grid-template-columns: minmax(240px, .82fr) minmax(0, 1.18fr);
  align-items: start;
  gap: clamp(34px, 5vw, 84px);
}
.text-page__body--right { grid-template-columns: minmax(0, 1.18fr) minmax(240px, .82fr); }
.text-page__body--above,
.text-page__body--below { display: grid; gap: clamp(30px, 4vw, 60px); }
.text-page__image { margin: 0; width: 100%; }
.text-page__image img {
  display: block;
  width: 100%;
  height: auto;
  max-height: min(72vh, 920px);
  object-fit: cover;
  object-position: center;
}
.text-page--image-left .text-page__image,
.text-page--image-right .text-page__image { max-width: 620px; }
.text-page--image-above .text-page__image,
.text-page--image-below .text-page__image { max-width: 1050px; }
.text-page--center.text-page--with-image .text-page__body--above .text-page__image,
.text-page--center.text-page--with-image .text-page__body--below .text-page__image { margin-left: auto; margin-right: auto; }
.text-page--center.text-page--with-image .text-page__body .rich-text { margin-left: auto; margin-right: auto; }
@media (max-width: 820px) {
  .text-page__body--left,
  .text-page__body--right {
    display: flex;
    flex-direction: column;
    gap: 30px;
  }
  .text-page__body--right .rich-text { order: 2; }
  .text-page__body--right .text-page__image { order: 1; }
  .text-page--image-left .text-page__image,
  .text-page--image-right .text-page__image { max-width: min(100%, 620px); }
}

.contact-page { padding: clamp(70px, 10vw, 150px) var(--pad); }
.contact-page > header { max-width: 950px; margin-bottom: clamp(55px, 8vw, 105px); }
.contact-page > header > p:not(.eyebrow) { max-width: 700px; color: var(--muted); font-size: 18px; line-height: 1.7; }
.contact-page__body { display: grid; grid-template-columns: minmax(220px, .55fr) minmax(360px, 1fr); gap: clamp(45px, 8vw, 130px); align-items: start; }
.contact-details { display: grid; gap: 26px; }
.contact-details p { display: grid; gap: 7px; margin: 0; color: var(--muted); font-size: 15px; line-height: 1.5; }
.contact-details span { color: var(--muted); font-size: 10px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.contact-details a { color: var(--ink); text-decoration: none; }

.contact-page--triptych { max-width: min(1800px, calc(100% - (var(--pad) * 2))); margin: 0 auto; padding: clamp(56px, 7vw, 110px) 0 clamp(70px, 9vw, 130px); }
.contact-page__hero { max-width: 960px; margin: 0 auto clamp(36px, 5vw, 64px); padding: 0 var(--pad); }
.contact-page__hero > p:not(.eyebrow) { max-width: 720px; color: var(--muted); font-size: 18px; line-height: 1.7; }
.contact-triptych-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(8px, 0.9vw, 14px); padding: 0 var(--pad); align-items: stretch; }
.contact-triptych-panel { display: grid; grid-template-rows: minmax(240px, 34vh) auto; min-width: 0; background: color-mix(in srgb, var(--paper) 94%, #d8d0c4 6%); border: 1px solid color-mix(in srgb, var(--line) 68%, transparent); box-shadow: var(--photo-shadow); overflow: hidden; }
.contact-triptych-panel__media { position: relative; min-height: 240px; background: #ddd4c8; overflow: hidden; }
.contact-triptych-panel__media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.contact-triptych-panel__media--shared img {
  position: absolute;
  top: 0;
  left: 0;
  width: 300%;
  max-width: none;
  height: 100%;
  object-fit: cover;
  transform: none;
}
.contact-triptych-panel__media--shared-left img { left: 0; }
.contact-triptych-panel__media--shared-center img { left: -100%; }
.contact-triptych-panel__media--shared-right img { left: -200%; }
.contact-triptych-panel__media--row-top img { object-position: center top; }
.contact-triptych-panel__media--row-center img { object-position: center center; }
.contact-triptych-panel__media--row-bottom img { object-position: center bottom; }
.contact-triptych-panel__media::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(16, 14, 10, .08), rgba(16, 14, 10, .25)); pointer-events: none; }
.contact-triptych-panel__media--empty { display: grid; place-items: center; background: linear-gradient(135deg, #e7e0d5, #d8cfc1); }
.contact-triptych-panel__media--empty::after { display: none; }
.contact-triptych-panel__media--empty div { display: grid; gap: 10px; text-align: center; color: rgba(33, 29, 22, .65); }
.contact-triptych-panel__media--empty span { font-size: 11px; letter-spacing: .14em; text-transform: uppercase; }
.contact-triptych-panel__media--empty strong { font-family: var(--heading-font, var(--serif)); font-size: clamp(24px, 3vw, 36px); font-weight: 400; color: var(--ink); }
.contact-triptych-panel__body { display: grid; align-content: start; gap: 24px; padding: clamp(52px, 4vw, 62px) clamp(22px, 2.2vw, 30px) clamp(22px, 2.2vw, 30px); }
.contact-triptych-panel__copy h2 { margin: 0 0 10px; font-size: clamp(30px, 3.1vw, 54px); line-height: .95; letter-spacing: -.04em; }
.contact-triptych-panel__copy p:not(.eyebrow) { margin: 0; color: var(--muted); line-height: 1.65; }
.contact-form--triptych { display: block; }
.contact-triptych-panel__fields { display: grid; gap: 16px; }
.contact-form--triptych label { display: grid; gap: 8px; }
.contact-form--triptych label > span { color: var(--muted); font-size: 10px; font-weight: 600; letter-spacing: .15em; text-transform: uppercase; }
.contact-form--triptych input,
.contact-form--triptych textarea { width: 100%; border: 1px solid rgba(41, 35, 27, .14); border-radius: 14px; background: rgba(255, 252, 247, .88); color: var(--bp-contact-entry-color, var(--ink)); caret-color: var(--bp-contact-entry-color, var(--ink)); padding: 15px 16px; outline: none; font-size: 15px; line-height: 1.45; box-shadow: inset 0 1px 0 rgba(255, 255, 255, .6); }
.contact-form--triptych input::placeholder,
.contact-form--triptych textarea::placeholder { color: rgba(43, 37, 28, .46); }
.contact-form input:-webkit-autofill,
.contact-form textarea:-webkit-autofill { -webkit-text-fill-color: var(--bp-contact-entry-color, var(--ink)); caret-color: var(--bp-contact-entry-color, var(--ink)); }
.contact-form--triptych input:focus,
.contact-form--triptych textarea:focus { border-color: rgba(33, 29, 22, .48); box-shadow: 0 0 0 4px rgba(33, 29, 22, .08), inset 0 1px 0 rgba(255, 255, 255, .7); background: rgba(255, 252, 247, .96); }
.contact-form--triptych textarea { min-height: 220px; resize: vertical; }
.contact-form--triptych .form-footer { display: grid; gap: 14px; align-items: start; }
.contact-form--triptych .form-footer .button { width: 100%; }
.contact-triptych-details { margin-top: 4px; padding-top: 16px; border-top: 1px solid rgba(41, 35, 27, .10); }
.contact-triptych-details .contact-details { gap: 18px; }
.contact-triptych-details .social-links { margin-top: 4px; }
.contact-selection-note { margin: -2px 0 2px; color: var(--muted); font-size: 13px; line-height: 1.55; }

.video-page, .video-strip { padding: clamp(70px, 9vw, 140px) var(--pad); }
.page-hero { max-width: 980px; margin-bottom: clamp(50px, 7vw, 90px); }
.page-hero > p:not(.eyebrow) { max-width: 680px; color: var(--muted); font-size: 18px; line-height: 1.7; }
.video-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(28px, 4vw, 60px); }
.video-grid--page { gap: clamp(50px, 7vw, 100px) clamp(28px, 4vw, 60px); }
.video-card { min-width: 0; }
.video-frame { aspect-ratio: 16 / 9; overflow: hidden; background: #070707; }
.video-frame iframe, .video-frame video { display: block; width: 100%; height: 100%; border: 0; object-fit: contain; }
.video-frame--empty { display: grid; place-items: center; color: rgba(255,255,255,.7); }
.video-card__copy { padding-top: 18px; }
.video-card__copy h2 { margin: 0 0 9px; font-size: clamp(27px, 3vw, 43px); }
.video-card__copy p { max-width: 620px; margin: 0; color: var(--muted); line-height: 1.65; }
.video-strip { border-top: 1px solid var(--line); }
.video-strip .text-link { margin-top: 38px; }


/* Optional one-screen desktop presentation for the Triptych contact page. */
@media (min-width: 1061px) and (min-height: 650px) {
  body.contact-page-shell--triptych-fit { overflow: hidden; }
  body.contact-page-shell--triptych-fit .site-footer { display: none; }
  body.contact-page-shell--triptych-fit .contact-page--triptych {
    height: calc(100svh - 104px);
    max-height: calc(100svh - 104px);
    padding: clamp(12px, 1.8vh, 22px) 0;
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    gap: clamp(10px, 1.6vh, 18px);
    overflow: hidden;
  }
  body.header-layout--sidebar-left.contact-page-shell--triptych-fit .contact-page--triptych,
  body.header-layout--sidebar-right.contact-page-shell--triptych-fit .contact-page--triptych {
    height: 100svh;
    max-height: 100svh;
  }
  body.contact-page-shell--triptych-fit .contact-page__hero {
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0 var(--pad);
  }
  body.contact-page-shell--triptych-fit .contact-page__hero .eyebrow { margin-bottom: 6px; }
  body.contact-page-shell--triptych-fit .contact-page__hero h1 {
    max-width: none;
    margin: 0 0 7px;
    font-size: clamp(44px, 6vh, 68px);
    line-height: .92;
  }
  body.contact-page-shell--triptych-fit .contact-page__hero > p:not(.eyebrow) {
    max-width: 860px;
    margin: 0;
    font-size: clamp(13px, 1.55vh, 16px);
    line-height: 1.45;
  }
  body.contact-page-shell--triptych-fit .contact-form--triptych,
  body.contact-page-shell--triptych-fit .contact-triptych-grid {
    min-height: 0;
    height: 100%;
  }
  body.contact-page-shell--triptych-fit .contact-triptych-panel {
    min-height: 0;
    height: 100%;
    grid-template-rows: minmax(160px, 0.92fr) minmax(0, 1.08fr);
  }
  body.contact-page-shell--triptych-fit .contact-triptych-panel__media { min-height: 0; }
  body.contact-page-shell--triptych-fit .contact-triptych-panel__body {
    min-height: 0;
    gap: clamp(9px, 1.2vh, 14px);
    padding: clamp(38px, 4.2vh, 50px) clamp(12px, 1.5vh, 18px) clamp(12px, 1.5vh, 18px);
  }
  body.contact-page-shell--triptych-fit .contact-triptych-panel__copy .eyebrow { margin-bottom: 5px; }
  body.contact-page-shell--triptych-fit .contact-triptych-panel__copy h2 {
    margin: 0 0 5px;
    font-size: clamp(25px, 3.6vh, 38px);
  }
  body.contact-page-shell--triptych-fit .contact-triptych-panel__copy p:not(.eyebrow) {
    font-size: clamp(11px, 1.35vh, 14px);
    line-height: 1.45;
  }
  body.contact-page-shell--triptych-fit .contact-triptych-panel__fields {
    gap: clamp(7px, 1vh, 10px);
    margin-top: clamp(14px, 2vh, 22px);
  }
  body.contact-page-shell--triptych-fit .contact-form--triptych label { gap: 5px; }
  body.contact-page-shell--triptych-fit .contact-form--triptych label > span { font-size: 9px; }
  body.contact-page-shell--triptych-fit .contact-form--triptych input,
  body.contact-page-shell--triptych-fit .contact-form--triptych textarea {
    padding: clamp(8px, 1vh, 11px) 11px;
    font-size: clamp(12px, 1.4vh, 14px);
  }
  body.contact-page-shell--triptych-fit .contact-form--triptych textarea {
    min-height: clamp(76px, 10vh, 112px);
    height: clamp(76px, 10vh, 112px);
  }
  body.contact-page-shell--triptych-fit .contact-form--triptych .form-footer { gap: 7px; }
  body.contact-page-shell--triptych-fit .contact-form--triptych .button {
    min-height: 38px;
    padding: 8px 16px;
  }
  body.contact-page-shell--triptych-fit .contact-triptych-details {
    margin-top: 0;
    padding-top: 8px;
  }
  body.contact-page-shell--triptych-fit .contact-triptych-details .contact-details { gap: 7px; }
  body.contact-page-shell--triptych-fit .contact-details p { gap: 3px; font-size: 11px; line-height: 1.3; }
  body.contact-page-shell--triptych-fit .contact-details span { font-size: 8px; }
  body.contact-page-shell--triptych-fit .social-links { gap: 5px; }
  body.contact-page-shell--triptych-fit .form-status { font-size: 11px; }
}

@media (max-width: 1060px) {
  .contact-triptych-grid { grid-template-columns: 1fr; }
  .contact-triptych-panel { grid-template-rows: minmax(220px, 42vw) auto; }
}

@media (max-width: 760px) {
  .contact-page__body { grid-template-columns: 1fr; }
  .contact-triptych-panel__copy h2 { font-size: clamp(28px, 8vw, 44px); }
  .contact-page__hero { padding-left: var(--pad); padding-right: var(--pad); }
  .video-grid { grid-template-columns: 1fr; }

  body.contact-page-shell--simple-mobile .contact-page--triptych {
    max-width: 760px;
    margin: 0 auto;
    padding: clamp(38px, 8vw, 64px) var(--pad) clamp(60px, 12vw, 92px);
  }
  body.contact-page-shell--simple-mobile .contact-page--triptych .contact-page__hero {
    margin: 0 0 32px;
    padding: 0;
  }
  body.contact-page-shell--simple-mobile .contact-page--triptych .contact-page__hero h1 {
    font-size: clamp(48px, 14vw, 78px);
  }
  body.contact-page-shell--simple-mobile .contact-form--triptych,
  body.contact-page-shell--simple-mobile .contact-triptych-grid {
    display: block;
    height: auto;
    min-height: 0;
    padding: 0;
  }
  body.contact-page-shell--simple-mobile .contact-triptych-panel {
    display: contents;
  }
  body.contact-page-shell--simple-mobile .contact-triptych-panel__media,
  body.contact-page-shell--simple-mobile .contact-triptych-panel__copy {
    display: none !important;
  }
  body.contact-page-shell--simple-mobile .contact-triptych-panel__body {
    display: contents;
  }
  body.contact-page-shell--simple-mobile .contact-triptych-panel__fields {
    display: grid;
    gap: 18px;
    margin: 0 0 18px;
    padding: 0;
  }
  body.contact-page-shell--simple-mobile .contact-form--triptych label {
    gap: 7px;
  }
  body.contact-page-shell--simple-mobile .contact-form--triptych input,
  body.contact-page-shell--simple-mobile .contact-form--triptych textarea {
    border-radius: 10px;
    padding: 14px 15px;
    font-size: 16px;
  }
  body.contact-page-shell--simple-mobile .contact-form--triptych textarea {
    min-height: 170px;
    height: auto;
  }
  body.contact-page-shell--simple-mobile .contact-form--triptych .form-footer {
    gap: 12px;
  }
  body.contact-page-shell--simple-mobile .contact-triptych-details {
    margin-top: 24px;
    padding-top: 18px;
  }
}

/* Social links */
.social-links { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; }
.social-links a { display: inline-flex; align-items: center; gap: 7px; color: inherit; text-decoration: none; }
.social-links a > img, .social-links a > span:not(.social-icon) { width: 27px; height: 27px; display: grid; place-items: center; object-fit: contain; border: 1px solid var(--line); border-radius: 50%; padding: 5px; font-size: 10px; font-style: normal; }
.social-links .social-icon { width: 27px; height: 27px; display: block; flex: 0 0 auto; }
.social-links .social-icon svg { width: 100%; height: 100%; display: block; }
.social-links .social-icon--custom img { width: 100%; height: 100%; display: block; object-fit: contain; border: 0; border-radius: 0; padding: 0; filter: grayscale(1) contrast(1.04); opacity: .92; transition: filter .22s ease, opacity .22s ease; }
.social-links a:hover .social-icon--custom img, .social-links a:focus-visible .social-icon--custom img { filter: grayscale(0); opacity: 1; }
.social-links em { font-size: 11px; font-style: normal; }
.social-links--header em { display: none; }
.social-links--footer { justify-content: flex-end; }
.social-links--footer em { display: none; }
.social-links--contact { margin-top: 4px; }
.social-links--contact a { color: var(--ink); }
.social-cluster--sidebar { width: 100%; display: flex; flex-direction: column; gap: 10px; }
.social-cluster__label { font-size: 10px; letter-spacing: .32em; text-transform: uppercase; color: var(--sidebar-ink, var(--ink)); }
.social-cluster__rule { width: 58px; max-width: 100%; border-top: 1px solid var(--sidebar-line, var(--line)); }
.social-links--sidebar-curated,
.social-links--header-curated { --curated-social-size: 22px; }
.social-links--sidebar-curated { flex-direction: column; align-items: flex-start; gap: 12px; }
.social-links--header-curated { flex-direction: row; align-items: center; gap: 14px; flex-wrap: wrap; }
.social-links--sidebar-curated a,
.social-links--header-curated a { display: inline-flex; align-items: center; justify-content: center; color: var(--ink); transition: color .22s ease, transform .22s ease; }
.social-links--sidebar-curated a { color: var(--sidebar-ink, var(--ink)); }
.social-links--sidebar-curated a:hover,
.social-links--sidebar-curated a:focus-visible,
.social-links--header-curated a:hover,
.social-links--header-curated a:focus-visible { transform: translateY(-1px); }
.social-links--sidebar-curated em,
.social-links--header-curated em { display: none; }
.social-links--sidebar-curated .social-icon,
.social-links--header-curated .social-icon { width: var(--curated-social-size); height: var(--curated-social-size); display: block; }
.social-links--sidebar-curated .social-icon svg,
.social-links--header-curated .social-icon svg { width: 100%; height: 100%; display: block; overflow: visible; }
.social-links--sidebar-curated .social-link--instagram:hover,
.social-links--sidebar-curated .social-link--instagram:focus-visible,
.social-links--header-curated .social-link--instagram:hover,
.social-links--header-curated .social-link--instagram:focus-visible { color: #b58757; }
.social-links--sidebar-curated .social-link--facebook:hover,
.social-links--sidebar-curated .social-link--facebook:focus-visible,
.social-links--header-curated .social-link--facebook:hover,
.social-links--header-curated .social-link--facebook:focus-visible { color: #48567b; }
.social-links--sidebar-curated .social-link--x:hover,
.social-links--sidebar-curated .social-link--x:focus-visible,
.social-links--header-curated .social-link--x:hover,
.social-links--header-curated .social-link--x:focus-visible { color: #8e7750; }
.social-links--sidebar-curated .social-link--threads:hover,
.social-links--sidebar-curated .social-link--threads:focus-visible,
.social-links--header-curated .social-link--threads:hover,
.social-links--header-curated .social-link--threads:focus-visible { color: #796a8c; }
.social-links--sidebar-curated .social-link--youtube:hover,
.social-links--sidebar-curated .social-link--youtube:focus-visible,
.social-links--header-curated .social-link--youtube:hover,
.social-links--header-curated .social-link--youtube:focus-visible { color: #ad6a59; }
.social-links--sidebar-curated .social-link--vimeo:hover,
.social-links--sidebar-curated .social-link--vimeo:focus-visible,
.social-links--header-curated .social-link--vimeo:hover,
.social-links--header-curated .social-link--vimeo:focus-visible { color: #5a7a78; }
.social-links--sidebar-curated .social-link--pinterest:hover,
.social-links--sidebar-curated .social-link--pinterest:focus-visible,
.social-links--header-curated .social-link--pinterest:hover,
.social-links--header-curated .social-link--pinterest:focus-visible { color: #9b5a59; }
.social-links--sidebar-curated .social-link--linkedin:hover,
.social-links--sidebar-curated .social-link--linkedin:focus-visible,
.social-links--header-curated .social-link--linkedin:hover,
.social-links--header-curated .social-link--linkedin:focus-visible { color: #43506f; }
.social-links--sidebar-curated .social-link--tiktok:hover,
.social-links--sidebar-curated .social-link--tiktok:focus-visible,
.social-links--header-curated .social-link--tiktok:hover,
.social-links--header-curated .social-link--tiktok:focus-visible { color: #4e6476; }
.social-links--sidebar-curated .social-link--bluesky:hover,
.social-links--sidebar-curated .social-link--bluesky:focus-visible,
.social-links--header-curated .social-link--bluesky:hover,
.social-links--header-curated .social-link--bluesky:focus-visible { color: #52789a; }
.social-links--sidebar-curated .social-link--flickr:hover,
.social-links--sidebar-curated .social-link--flickr:focus-visible,
.social-links--header-curated .social-link--flickr:hover,
.social-links--header-curated .social-link--flickr:focus-visible { color: #9a5d83; }
.social-links--sidebar-curated .social-link--500px:hover,
.social-links--sidebar-curated .social-link--500px:focus-visible,
.social-links--header-curated .social-link--500px:hover,
.social-links--header-curated .social-link--500px:focus-visible { color: #4f7485; }
.social-links--sidebar-curated .social-link--behance:hover,
.social-links--sidebar-curated .social-link--behance:focus-visible,
.social-links--header-curated .social-link--behance:hover,
.social-links--header-curated .social-link--behance:focus-visible { color: #48668f; }
.social-links--sidebar-curated .social-link--tumblr:hover,
.social-links--sidebar-curated .social-link--tumblr:focus-visible,
.social-links--header-curated .social-link--tumblr:hover,
.social-links--header-curated .social-link--tumblr:focus-visible { color: #536377; }
.social-links--sidebar-curated .social-icon--custom img,
.social-links--header-curated .social-icon--custom img { filter: grayscale(1) contrast(1.04); opacity: .92; }
.social-links--sidebar-curated a:hover .social-icon--custom img,
.social-links--sidebar-curated a:focus-visible .social-icon--custom img,
.social-links--header-curated a:hover .social-icon--custom img,
.social-links--header-curated a:focus-visible .social-icon--custom img { filter: grayscale(0); opacity: 1; }
@media (max-width: 900px) { .social-links--header, .social-links--header-curated { display: none; } }
@media (max-width: 700px) { .site-footer { grid-template-columns: 1fr; } .social-links--footer { justify-content: flex-start; } }

/* Optional photograph-responsive atmosphere and logo-fragment cursor */
body.has-adaptive-atmosphere {
  position: relative;
  isolation: isolate;
}
.adaptive-atmosphere {
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background-color: rgb(var(--atmosphere-color, 128 128 128));
  opacity: var(--atmosphere-opacity, 0);
  transition:
    background-color var(--atmosphere-transition, 900ms) cubic-bezier(.2,.7,.2,1),
    opacity var(--atmosphere-transition, 900ms) ease;
}
.lightbox.lightbox--atmosphere {
  background-color: rgb(var(--lightbox-atmosphere-color, 5 5 5));
  background-image: linear-gradient(var(--viewer-atmosphere-start), var(--viewer-atmosphere-end));
  transition: background-color .65s ease, color .35s ease;
}

.cursor-logo-fragment {
  --cursor-size: 52px;
  --cursor-opacity: .34;
  position: fixed;
  left: 0;
  top: 0;
  z-index: 1200;
  width: var(--cursor-size);
  height: var(--cursor-size);
  pointer-events: none;
  opacity: 0;
  will-change: transform, opacity;
  transition: opacity .18s ease;
}
.cursor-logo-fragment.is-visible {
  opacity: var(--cursor-opacity);
}
.cursor-logo-fragment.is-suppressed {
  opacity: 0;
}
.cursor-logo-fragment > span {
  width: 100%;
  height: 100%;
  display: block;
  transform: rotate(0deg) scale(1);
  transform-origin: center;
  transition: transform .2s ease, filter .2s ease;
}
.cursor-logo-fragment.is-interactive > span {
  transform: rotate(0deg) scale(1);
}
.cursor-logo-fragment--tilt > span {
  transform: rotate(-7deg) scale(1);
}
.cursor-logo-fragment--tilt.is-interactive > span {
  transform: rotate(5deg) scale(1);
}
.cursor-logo-fragment img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
  filter:
    drop-shadow(0 1px 1px rgba(255,255,255,.75))
    drop-shadow(0 1px 2px rgba(0,0,0,.62));
  transition: filter .24s ease;
}
.cursor-logo-fragment[data-color-mode="monochrome"] img,
.cursor-logo-fragment[data-color-mode="mono-photo-color"] img {
  filter:
    grayscale(1) contrast(1.16)
    drop-shadow(0 1px 1px rgba(255,255,255,.75))
    drop-shadow(0 1px 2px rgba(0,0,0,.62));
}
.cursor-logo-fragment[data-color-mode="full-color"] img,
.cursor-logo-fragment[data-color-mode="mono-photo-color"].is-over-photo img {
  filter:
    grayscale(0) contrast(1) saturate(1.04)
    drop-shadow(0 1px 1px rgba(255,255,255,.75))
    drop-shadow(0 1px 2px rgba(0,0,0,.62));
}
.cursor-logo-fragment--right img {
  clip-path: polygon(38% 0, 100% 0, 100% 100%, 18% 100%);
}
.cursor-logo-fragment--left img {
  clip-path: polygon(0 0, 72% 0, 56% 100%, 0 100%);
}
.cursor-logo-fragment--diagonal img {
  clip-path: polygon(8% 0, 100% 0, 72% 100%, 0 72%);
}
.cursor-logo-fragment--full img {
  clip-path: none;
}

@media (prefers-reduced-motion: reduce) {
  .adaptive-atmosphere,
  .cursor-logo-fragment,
  .cursor-logo-fragment > span,
  .lightbox.lightbox--atmosphere {
    transition: none;
  }
  .cursor-logo-fragment { display: none !important; }
}



/* Per-photograph Field Notes */
.lightbox__notes {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 0;
  border-bottom: 1px solid var(--viewer-control-border);
  background: transparent;
  color: var(--viewer-control);
  padding: 8px 2px 6px;
  cursor: pointer;
  font-family: var(--nav-font, var(--sans));
  font-size: 10px;
  letter-spacing: .12em;
  text-transform: uppercase;
  transition: color .2s ease, border-bottom-color .2s ease, opacity .2s ease;
}
.lightbox__notes svg { width: 14px; height: 14px; flex: 0 0 auto; opacity: .9; }
.lightbox__notes span { display: inline-block; }
.lightbox__notes i { font-style: normal; font-size: 11px; line-height: 1; opacity: .9; transform: translateY(-.5px); }
.lightbox__notes:hover { color: var(--viewer-control-strong); border-bottom-color: var(--viewer-control-strong); }
.lightbox__notes:hover svg,
.lightbox__notes:hover i { opacity: 1; }
.lightbox__notes + .lightbox__purchase { margin-left: 0; }
.lightbox__notes[hidden] { display: none !important; }
.lightbox__caption > [hidden] { display: none; }
.photo-card__caption strong[hidden] { display: none; }
.photo-card__caption:has(strong[hidden]) { justify-content: flex-end; }

.field-notes-sheet[hidden] { display: none; }
.field-notes-sheet { position: fixed; inset: 0; z-index: 1120; display: grid; grid-template-columns: 1fr minmax(320px, min(520px, 92vw)); }
.field-notes-sheet__backdrop { width: 100%; height: 100%; border: 0; background: rgba(0,0,0,.46); cursor: default; backdrop-filter: blur(2px); }
.field-notes-sheet__panel { position: relative; min-width: 0; height: 100%; overflow: auto; padding: clamp(42px, 6vw, 76px) clamp(26px, 5vw, 58px); background: var(--paper); color: var(--ink); box-shadow: -30px 0 100px rgba(0,0,0,.3); }
.field-notes-sheet__panel h2 { margin: 0 0 18px; color: var(--field-notes-heading-color, var(--ink)); font-size: clamp(42px, 6vw, 72px); line-height: .94; }
.field-notes-sheet__close { position: absolute; top: 13px; right: 16px; border: 0; background: transparent; color: var(--ink); cursor: pointer; font-size: 32px; font-weight: 200; }
.field-notes-sheet__meta { margin-bottom: 30px; color: var(--muted); font-size: 10px; letter-spacing: .11em; line-height: 1.55; text-transform: uppercase; }
.field-notes-sheet__copy { color: var(--field-notes-body-color, var(--ink)); font-family: var(--body-font, var(--sans)); font-size: clamp(16px, 1.4vw, 19px); line-height: 1.85; white-space: pre-line; }
.field-notes-sheet__related { margin-top: 48px; padding-top: 28px; border-top: 1px solid var(--line); }
.field-notes-sheet__related h3 { margin: 0 0 18px; font-size: 24px; font-weight: 400; }
#field-notes-related-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.field-notes-related-card { min-width: 0; border: 0; background: transparent; color: var(--ink); padding: 0; cursor: pointer; text-align: left; }
.field-notes-related-card img { width: 100%; aspect-ratio: 4 / 3; display: block; object-fit: contain; background: var(--paper-deep); }
.field-notes-related-card span { display: block; margin-top: 8px; overflow: hidden; color: var(--muted); font-size: 11px; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }

@media (max-width: 700px) {
  .lightbox__notes { margin-left: auto; gap: 6px; padding-left: 6px; padding-right: 6px; font-size: 9px; }
  .lightbox__notes svg { width: 13px; height: 13px; }
  .lightbox__notes i { font-size: 10px; }
  .field-notes-sheet { grid-template-columns: 1fr; place-items: end stretch; }
  .field-notes-sheet__backdrop { position: absolute; inset: 0; }
  .field-notes-sheet__panel { width: 100%; height: auto; max-height: 82dvh; padding: 42px 20px max(26px, env(safe-area-inset-bottom)); box-shadow: 0 -25px 80px rgba(0,0,0,.35); }
  .field-notes-sheet__panel h2 { font-size: 45px; }
  #field-notes-related-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}


/* Public image-protection preferences. These deter casual saving but cannot prevent screenshots or source inspection. */
body[data-image-protection-enabled="true"] [data-protected-photo] img,
body[data-image-protection-enabled="true"] .field-notes-related-card img {
  -webkit-user-drag: none;
  user-select: none;
}
body.image-touch-callout-disabled [data-protected-photo],
body.image-touch-callout-disabled [data-protected-photo] img,
body.image-touch-callout-disabled .field-notes-related-card,
body.image-touch-callout-disabled .field-notes-related-card img {
  -webkit-touch-callout: none;
}

/* Clean, optional sharing controls */
.visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
.share-trigger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  min-height: 40px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: transparent;
  color: var(--muted);
  padding: 9px 14px;
  cursor: pointer;
  font-family: var(--nav-font, var(--sans));
  font-size: 10px;
  letter-spacing: .11em;
  text-transform: uppercase;
  transition: border-color .2s ease, color .2s ease, background .2s ease;
}
.share-trigger svg,
.lightbox__share svg { width: 17px; height: 17px; flex: 0 0 auto; }
.share-trigger:hover,
.share-trigger:focus-visible { border-color: var(--ink); color: var(--ink); }
.share-trigger--header { width: 42px; height: 42px; min-height: 42px; padding: 0; }
.share-trigger--footer { justify-self: end; }
.gallery-hero__heading { display: flex; align-items: end; justify-content: space-between; gap: 30px; }
.gallery-hero__heading > div { min-width: 0; }
.gallery-hero__heading .share-trigger { flex: 0 0 auto; margin-bottom: 18px; }

.lightbox__share {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 0;
  border-bottom: 1px solid var(--viewer-control-border);
  background: transparent;
  color: var(--viewer-control);
  padding: 8px 2px 6px;
  cursor: pointer;
  font-family: var(--nav-font, var(--sans));
  font-size: 10px;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.lightbox__share:hover { color: var(--viewer-control-strong); border-bottom-color: var(--viewer-control-strong); }
.lightbox__share + .lightbox__notes { margin-left: 0; }

.share-sheet[hidden] { display: none; }
.share-sheet {
  position: fixed;
  inset: 0;
  z-index: 1180;
  display: grid;
  place-items: end center;
}
.share-sheet__backdrop {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  background: rgba(0,0,0,.48);
  backdrop-filter: blur(3px);
}
.share-sheet__panel {
  position: relative;
  z-index: 1;
  width: min(680px, calc(100vw - 28px));
  margin: 14px;
  padding: clamp(28px, 5vw, 48px);
  background: var(--paper);
  color: var(--ink);
  box-shadow: 0 30px 100px rgba(0,0,0,.32);
}
.share-sheet__panel h2 { margin: 0 0 10px; font-size: clamp(38px, 6vw, 64px); line-height: .95; }
.share-sheet__context { margin: 0 0 28px; color: var(--muted); font-size: 14px; line-height: 1.5; }
.share-sheet__close { position: absolute; top: 14px; right: 16px; border: 0; background: transparent; color: var(--ink); cursor: pointer; font-size: 30px; font-weight: 200; }
.share-sheet__options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.share-sheet__options button {
  min-width: 0;
  display: grid;
  grid-template-columns: 38px 1fr;
  grid-template-rows: auto auto;
  gap: 2px 11px;
  align-items: center;
  border: 1px solid var(--line);
  background: var(--surface);
  color: var(--ink);
  padding: 15px;
  cursor: pointer;
  text-align: left;
}
.share-sheet__options button:hover,
.share-sheet__options button:focus-visible { border-color: var(--ink); }
.share-sheet__options button > span { grid-row: 1 / 3; width: 34px; height: 34px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 50%; font-family: var(--heading-font, var(--serif)); font-size: 18px; }
.share-sheet__options strong { font-size: 13px; font-weight: 500; }
.share-sheet__options small { color: var(--muted); font-size: 10px; line-height: 1.35; }
.share-sheet__status { min-height: 20px; margin: 18px 0 0; color: var(--muted); font-size: 12px; }
body.is-share-open { overflow: hidden; }

.photo-share-page { min-height: calc(100dvh - 104px); padding-top: clamp(35px, 6vw, 70px); padding-bottom: clamp(45px, 8vw, 100px); }
.photo-share-page .back-link { margin-bottom: 28px; }
.photo-share-page__art { min-height: min(70dvh, 900px); display: grid; place-items: center; }
.photo-share-page__art .photo-card { width: min(100%, 1280px); margin: 0; }
.photo-share-page__art .photo-card__art { min-height: min(66dvh, 820px); display: grid; place-items: center; }
.photo-share-page__art .photo-card img { width: auto; max-width: 100%; max-height: min(66dvh, 820px); object-fit: contain; box-shadow: var(--photo-shadow); }
.photo-share-page > h1 { max-width: 900px; margin: 36px 0 12px; font-size: clamp(38px, 6vw, 72px); line-height: .98; }
.photo-share-page > p { max-width: 760px; margin: 0; color: var(--muted); line-height: 1.75; }

@media (max-width: 700px) {
  .gallery-hero__heading { align-items: flex-start; flex-direction: column; }
  .gallery-hero__heading .share-trigger { margin-bottom: 0; }
  .share-sheet__options { grid-template-columns: 1fr; }
  .share-sheet__panel { width: 100%; margin: 0; padding: 38px 18px max(22px, env(safe-area-inset-bottom)); }
  .lightbox__share span { display: none; }
  .lightbox__share { padding-left: 7px; padding-right: 7px; }
  .share-trigger--footer { justify-self: start; }
}


/* Optional curated browsing features */
.shortlist-toggle {
  position: absolute;
  z-index: 5;
  top: 10px;
  right: 10px;
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255,255,255,.5);
  border-radius: 50%;
  background: rgba(5,5,5,.28);
  color: rgba(255,255,255,.9);
  opacity: 0;
  cursor: pointer;
  backdrop-filter: blur(8px);
  transition: opacity .2s ease, background .2s ease, color .2s ease, transform .2s ease;
}
.shortlist-toggle svg { width: 18px; height: 18px; }
.photo-card-wrap:hover .shortlist-toggle,
.shortlist-toggle:focus-visible,
.shortlist-toggle[aria-pressed="true"] { opacity: 1; }
.shortlist-toggle[aria-pressed="true"] { background: rgba(255,255,255,.9); color: #111; }
.shortlist-toggle:hover { transform: translateY(-1px); }

.shortlist-dock[hidden], .shortlist-sheet[hidden], .shortlist-catalog[hidden] { display: none; }
.shortlist-dock {
  position: fixed;
  z-index: 920;
  right: max(18px, env(safe-area-inset-right));
  bottom: max(18px, env(safe-area-inset-bottom));
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-height: 44px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: color-mix(in srgb, var(--paper) 88%, transparent);
  color: var(--ink);
  padding: 9px 12px;
  box-shadow: 0 12px 38px rgba(0,0,0,.15);
  cursor: pointer;
  font-family: var(--nav-font, var(--sans));
  font-size: 10px;
  letter-spacing: .1em;
  text-transform: uppercase;
  backdrop-filter: blur(12px);
}
.shortlist-dock svg { width: 17px; height: 17px; }
.shortlist-dock b { min-width: 23px; height: 23px; display: grid; place-items: center; border-radius: 50%; background: var(--ink); color: var(--paper); font-size: 10px; font-weight: 500; }
.shortlist-sheet { position: fixed; inset: 0; z-index: 1160; display: grid; grid-template-columns: 1fr minmax(340px, min(560px, 94vw)); }
.shortlist-sheet__backdrop { width: 100%; height: 100%; border: 0; background: rgba(0,0,0,.48); backdrop-filter: blur(3px); }
.shortlist-sheet__panel { position: relative; height: 100%; overflow: auto; padding: clamp(42px, 6vw, 72px) clamp(24px, 5vw, 54px); background: var(--paper); color: var(--ink); box-shadow: -28px 0 90px rgba(0,0,0,.3); }
.shortlist-sheet__panel h2 { margin: 0 0 10px; font-size: clamp(42px, 6vw, 70px); line-height: .94; }
.shortlist-sheet__intro { margin: 0 0 28px; color: var(--muted); line-height: 1.65; }
.shortlist-sheet__close { position: absolute; top: 14px; right: 16px; border: 0; background: transparent; color: var(--ink); cursor: pointer; font-size: 31px; font-weight: 200; }
.shortlist-sheet__items { display: grid; gap: 12px; }
.shortlist-item { display: grid; grid-template-columns: 96px 1fr auto; gap: 14px; align-items: center; border-top: 1px solid var(--line); padding: 12px 0; }
.shortlist-item img { width: 96px; height: 76px; display: block; object-fit: contain; background: var(--paper-deep); }
.shortlist-item strong { overflow: hidden; font-family: var(--heading-font, var(--serif)); font-size: 16px; font-weight: 400; text-overflow: ellipsis; white-space: nowrap; }
.shortlist-item button { width: 34px; height: 34px; border: 1px solid var(--line); border-radius: 50%; background: transparent; color: var(--muted); cursor: pointer; }
.shortlist-sheet__empty { padding: 28px 0; color: var(--muted); }
.shortlist-sheet__actions { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 28px; padding-top: 22px; border-top: 1px solid var(--line); }
.shortlist-sheet__actions .button { width: auto; }
.shortlist-sheet__status { min-height: 20px; margin: 15px 0 0; color: var(--muted); font-size: 12px; }
body.is-shortlist-open { overflow: hidden; }

/* Center-of-view emphasis changes depth, never geometry. */
body.has-center-emphasis .photo-card-wrap {
  opacity: var(--center-neighbor-opacity, .88);
  transition: opacity .38s ease;
}
body.has-center-emphasis .photo-card-wrap .photo-card img {
  transition: opacity .25s ease, box-shadow .42s ease, filter .42s ease;
  filter: saturate(.96) brightness(.985);
}
body.has-center-emphasis .photo-card-wrap.is-center-emphasis { opacity: 1; }
body.has-center-emphasis .photo-card-wrap.is-center-emphasis .photo-card img {
  filter: none;
  box-shadow: var(--center-photo-shadow, var(--photo-shadow-hover));
}
body.mat-presentation--enabled.has-center-emphasis .photo-card-wrap .photo-card img,
body.mat-presentation--enabled.has-center-emphasis .photo-card-wrap.is-center-emphasis .photo-card img { box-shadow: none; }
body.mat-presentation--enabled.has-center-emphasis .photo-card-wrap.is-center-emphasis .photo-card__art {
  box-shadow:
    0 calc(var(--photo-mat-shadow-y, 6px) + 2px) calc(var(--photo-mat-shadow-blur, 14px) + 5px) var(--photo-mat-shadow-spread, -4px) rgb(var(--photo-shadow-rgb) / var(--photo-mat-shadow-focus-alpha, .26)),
    0 3px 7px -1px rgb(var(--photo-shadow-rgb) / var(--photo-mat-shadow-soft-alpha, .11)),
    0 1px 2px rgb(var(--photo-shadow-rgb) / var(--photo-mat-shadow-hover-contact-alpha, .13));
}

/* Seamless preview-to-viewer transition clone. */
.viewer-transition-clone {
  position: fixed;
  z-index: 1300;
  margin: 0;
  object-fit: contain;
  pointer-events: none;
  transform-origin: top left;
  box-shadow: var(--photo-shadow-hover);
  will-change: left, top, width, height, opacity;
}
.lightbox.lightbox--transitioning > * { opacity: 0; }
.lightbox.lightbox--transitioning { background: var(--viewer-background); }

/* Optional refined viewer controls. */
.lightbox__topbar { position: relative; transition: opacity .25s ease; }
.lightbox__caption, .lightbox__nav, .lightbox__thumbstrip { transition: opacity .25s ease; }
.lightbox__fit, .lightbox__shortlist {
  border: 0;
  border-bottom: 1px solid var(--viewer-control-border);
  background: transparent;
  color: var(--viewer-control);
  padding: 8px 2px 6px;
  cursor: pointer;
  font-family: var(--nav-font, var(--sans));
  font-size: 10px;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.lightbox__shortlist { display: inline-flex; align-items: center; gap: 7px; }
.lightbox__shortlist svg { width: 16px; height: 16px; }
.lightbox__shortlist[aria-pressed="true"] { color: var(--viewer-control-strong); border-bottom-color: var(--viewer-control-strong); }
.lightbox__progress { position: absolute; inset: auto 10px 0; height: 1px; overflow: hidden; background: var(--viewer-progress-track); }
.lightbox__progress b { display: block; width: var(--viewer-progress, 0%); height: 100%; background: var(--viewer-progress-fill); transition: width .35s ease; }
.lightbox__thumbstrip { min-width: 0; display: flex; gap: 7px; overflow-x: auto; padding: 6px 10px 4px; scrollbar-width: thin; }
.lightbox__thumbstrip[hidden] { display: none; }
.lightbox__thumb { flex: 0 0 58px; width: 58px; height: 46px; display: grid; place-items: center; border: 1px solid transparent; background: var(--viewer-thumb-background); padding: 2px; cursor: pointer; opacity: .52; }
.lightbox__thumb img { max-width: 100%; max-height: 100%; object-fit: contain; }
.lightbox__thumb.is-active { border-color: var(--viewer-progress-fill); opacity: 1; }
.lightbox.lightbox--detail .lightbox__stage { overflow: auto; align-items: flex-start; justify-content: flex-start; padding: 40px; }
.lightbox.lightbox--detail .lightbox__stage > img { max-width: none; max-height: none; width: 135%; height: auto; margin: auto; cursor: zoom-out; }
.lightbox.lightbox--controls-hidden .lightbox__topbar,
.lightbox.lightbox--controls-hidden .lightbox__caption,
.lightbox.lightbox--controls-hidden .lightbox__nav,
.lightbox.lightbox--controls-hidden .lightbox__thumbstrip { opacity: 0; pointer-events: none; }

@media (max-width: 700px) {
  .shortlist-toggle { opacity: 1; top: 7px; right: 7px; width: 34px; height: 34px; }
  .shortlist-dock span { display: none; }
  .shortlist-sheet { grid-template-columns: 1fr; place-items: end stretch; }
  .shortlist-sheet__backdrop { position: absolute; inset: 0; }
  .shortlist-sheet__panel { width: 100%; height: auto; max-height: 86dvh; padding: 42px 18px max(24px, env(safe-area-inset-bottom)); box-shadow: 0 -26px 80px rgba(0,0,0,.35); }
  .shortlist-item { grid-template-columns: 78px 1fr auto; }
  .shortlist-item img { width: 78px; height: 62px; }
  .lightbox__fit, .lightbox__shortlist { padding-left: 6px; padding-right: 6px; font-size: 9px; }
  .lightbox__shortlist span { display: none; }
  .lightbox__thumbstrip { padding-left: 4px; padding-right: 4px; }
  .lightbox__thumb { flex-basis: 48px; width: 48px; height: 38px; }
  .lightbox.lightbox--detail .lightbox__stage { padding: 24px; }
  .lightbox.lightbox--detail .lightbox__stage > img { width: 160%; }
}

@media (prefers-reduced-motion: reduce) {
  body.has-center-emphasis .photo-card-wrap,
  body.has-center-emphasis .photo-card-wrap .photo-card img,
  .viewer-transition-clone,
  .lightbox__topbar,
  .lightbox__caption,
  .lightbox__nav,
  .lightbox__thumbstrip { transition: none !important; animation: none !important; }
}

.lightbox__fit { margin-left: auto; }
.lightbox__shortlist, .lightbox__share, .lightbox__notes, .lightbox__purchase { margin-left: 0; }
.lightbox__progress[hidden] { display: none; }

/* Optional desktop side-navigation layout. The public content remains in its
   normal document flow while the editable header occupies a fixed or scrolling
   rail. Mobile automatically returns to the compact top-header pattern. */
@media (min-width: 901px) {
  body.header-layout--sidebar-left { padding-left: var(--sidebar-width, 190px); }
  body.header-layout--sidebar-right { padding-right: var(--sidebar-width, 190px); }

  .site-header--sidebar {
    position: fixed;
    inset-block: 0;
    z-index: 50;
    width: var(--sidebar-width, 190px);
    min-height: 100vh;
    min-height: 100dvh;
    max-width: none;
    margin: 0;
    padding: var(--sidebar-top-spacing, 28px) clamp(16px, 2vw, 30px) 24px;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    gap: 0;
    overflow-x: hidden;
    overflow-y: auto;
    background: var(--sidebar-background, var(--paper));
    color: var(--sidebar-ink, var(--ink));
    border-bottom: 0;
  }
  .site-header--sidebar-left { left: 0; right: auto; border-right: 1px solid var(--sidebar-line, var(--line)); }
  .site-header--sidebar-right { right: 0; left: auto; border-left: 1px solid var(--sidebar-line, var(--line)); }
  .site-header--sidebar-scroll { position: absolute; bottom: auto; }

  .site-header--sidebar .brand {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }
  .site-header--sidebar .brand__mark {
    /* v1.0.160: size the real image box instead of scaling an already
       full-width box. Arbitrary uploaded logo proportions now respond to
       the base-size and sidebar-size controls without relying on clipping. */
    width: var(--sidebar-logo-width-pct, 100%);
    height: auto;
    max-width: calc(var(--sidebar-width, 190px) - 12px);
    max-height: 30vh;
    flex: 0 0 auto;
    object-fit: contain;
    transform: none;
    will-change: auto;
  }
  .site-header--sidebar .brand__text { width: 100%; }
  .site-header--sidebar .brand__text small,
  .site-header--sidebar .site-nav a { color: var(--sidebar-muted, var(--muted)); }
  .site-header--sidebar .site-nav a:hover,
  .site-header--sidebar .site-nav a:focus-visible { color: var(--sidebar-ink, var(--ink)); }

  .site-header--logo-left .brand__mark { align-self: flex-start; transform-origin: left center; }
  .site-header--logo-center .brand__mark { align-self: center; transform-origin: center center; }
  .site-header--logo-right .brand__mark { align-self: flex-end; transform-origin: right center; }
  .site-header--brand-left .brand__text { text-align: left; }
  .site-header--brand-center .brand__text { text-align: center; }
  .site-header--brand-right .brand__text { text-align: right; }

  .site-header--sidebar .site-nav {
    min-width: 0;
    width: 100%;
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    gap: var(--sidebar-link-spacing, 20px);
    margin-top: clamp(28px, 5vh, 64px);
  }
  .site-header--sidebar .site-nav a,
  .site-header--sidebar.site-header--nav-many .site-nav a {
    font-size: calc(12px * var(--sidebar-nav-text-scale, 1));
    letter-spacing: .12em;
    line-height: 1.35;
  }
  .site-header--nav-left .site-nav { align-items: flex-start; text-align: left; }
  .site-header--nav-center .site-nav { align-items: center; text-align: center; }
  .site-header--nav-right .site-nav { align-items: flex-end; text-align: right; }

  .site-header--sidebar .header-actions {
    width: 100%;
    flex: 0 0 auto;
    flex-wrap: wrap;
    /* v1.0.162: sidebar social/utility controls follow the navigation in
       normal document flow instead of being pushed to the bottom of the
       viewport. Adding navigation links therefore moves Connect downward
       naturally while preserving a compact gap after the final link. */
    margin: 22px 0 0;
    padding-top: 0;
  }
  .site-header--actions-left .header-actions,
  .site-header--actions-left .social-links--header { justify-content: flex-start; }
  .site-header--actions-center .header-actions,
  .site-header--actions-center .social-links--header { justify-content: center; }
  .site-header--actions-right .header-actions,
  .site-header--actions-right .social-links--header { justify-content: flex-end; }
  .site-header--actions-left .social-cluster--sidebar,
  .site-header--actions-left .social-links--sidebar-curated { align-items: flex-start; }
  .site-header--actions-center .social-cluster--sidebar,
  .site-header--actions-center .social-links--sidebar-curated { align-items: center; }
  .site-header--actions-right .social-cluster--sidebar,
  .site-header--actions-right .social-links--sidebar-curated { align-items: flex-end; }
  .site-header--sidebar .theme-toggle,
  .site-header--sidebar .social-links img,
  .site-header--sidebar .social-links a > span { border-color: var(--sidebar-line, var(--line)); color: var(--sidebar-ink, var(--ink)); }
  .site-header--sidebar .share-trigger--header { color: var(--sidebar-ink, var(--ink)); border-color: var(--sidebar-line, var(--line)); }
  .site-header--sidebar .nav-toggle { display: none !important; }

  body.header-layout--sidebar-left main > :first-child,
  body.header-layout--sidebar-right main > :first-child {
    padding-top: var(--sidebar-content-top-spacing, 18px);
  }
  body.header-layout--sidebar-left .skip-link { left: calc(var(--sidebar-width, 190px) + 12px); }
  body.header-layout--sidebar-right .shortlist-dock { right: calc(var(--sidebar-width, 190px) + max(18px, env(safe-area-inset-right))); }
}

@media (max-width: 900px) {
  body.header-layout--sidebar-left,
  body.header-layout--sidebar-right { padding-left: 0; padding-right: 0; }

  .site-header--sidebar {
    position: relative;
    inset: auto;
    /* v1.0.167: v1.0.158 made body a vertical flex container for the sticky
       footer. width:auto + auto side margins then let this mobile-converted
       sidebar header shrink-wrap around its controls, so the nav toggle's
       "right edge" was actually near screen center. Keep the mobile header
       stretched across the real viewport instead. */
    width: 100%;
    align-self: stretch;
    min-height: max(84px, calc(var(--mobile-header-logo-size, 48px) + var(--mobile-header-text-extra, 0px) + 28px));
    max-width: var(--max);
    margin: 0 auto;
    padding: 14px var(--pad);
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    overflow: visible;
    /* v1.0.163: once the desktop sidebar collapses into the mobile top
       header, use the page surface rather than the desktop sidebar surface.
       Transparent uploaded logos therefore reveal the same background as the
       rest of the mobile page instead of a mismatched sidebar tone. */
    background: var(--paper);
    color: var(--ink);
    border-right: 0;
    border-left: 0;
    border-bottom: 1px solid var(--line);
  }
  .site-header--sidebar .brand {
    width: auto;
    flex-direction: column;
    align-items: center;
    gap: 5px;
    text-align: center;
  }
  .site-header--sidebar .brand__mark {
    width: var(--mobile-header-logo-size, 48px);
    height: var(--mobile-header-logo-size, 48px);
    align-self: auto;
  }
  .site-header--sidebar .brand__text { display: none; }
  .site-header--sidebar .brand__mobile-text { color: var(--ink); }
  .site-header--sidebar .header-actions {
    width: auto;
    flex-wrap: nowrap;
    /* v1.0.167: keep optional theme/share controls independent from the menu
       trigger. They sit on the left; the dedicated nav toggle is anchored at
       the right, leaving the centered mobile brand between them. Stack multiple
       utility controls vertically so their combined width cannot enter the
       logo's center zone on very narrow phones. */
    position: absolute;
    left: max(var(--pad), env(safe-area-inset-left));
    top: 50%;
    z-index: 12;
    margin: 0;
    padding-top: 0;
    flex-direction: column;
    gap: 4px;
    justify-content: center;
    transform: translateY(-50%);
  }
  /* v1.0.163: the sidebar Connect cluster is a desktop rail element. On
     mobile it crowded the centered logo, so match the normal mobile header
     behavior and keep social links out of the compact top bar. */
  .site-header--sidebar .social-cluster--sidebar { display: none !important; }
  /* v1.0.164: keep the compact mobile menu trigger beside the centered
     logo regardless of logo proportions or optional mobile brand text.
     The trigger is anchored to the right edge instead of participating in
     the header flex flow, so it cannot jump above the logo. */
  .site-header--sidebar .nav-toggle {
    display: block !important;
    position: absolute;
    top: 50%;
    right: max(var(--pad), env(safe-area-inset-right));
    z-index: 12;
    margin: 0;
    transform: translateY(-50%);
  }
  .site-header--sidebar .nav-toggle span { background: var(--ink); }
  .site-header--sidebar .site-nav {
    position: fixed;
    inset: 0;
    z-index: 10;
    width: auto;
    display: none;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 34px;
    margin: 0;
    background: var(--paper);
    text-align: center;
  }
  .site-header--sidebar .site-nav.is-open { display: flex; }
  .site-header--sidebar .site-nav a,
  .site-header--sidebar.site-header--nav-many .site-nav a {
    color: var(--ink);
    font-family: var(--heading-font, var(--serif));
    font-size: 38px;
    letter-spacing: -.02em;
    text-transform: none;
  }
  .site-header--sidebar .theme-toggle { border-color: var(--line); color: var(--ink); }
}




/* v1.0.119 — preserve photograph geometry before image decode.
   Width/height attributes are emitted by PHP; this rule keeps those intrinsic
   proportions authoritative while the photograph itself is still masked. */
.photo-card__window > img[width][height] { height: auto; }

/* Framed artwork presentation */
.photo-card__window { display: block; }
.photo-card__art--framed {
  position: relative;
  display: block;
  padding: var(--photo-frame-size, 18px);
  background: var(--photo-frame-color, #5b4433);
  box-shadow:
    0 8px 18px -5px rgb(var(--photo-shadow-rgb) / var(--photo-shadow-primary-alpha)),
    0 2px 6px -1px rgb(var(--photo-shadow-rgb) / var(--photo-shadow-secondary-alpha)),
    0 1px 2px rgb(var(--photo-shadow-rgb) / var(--photo-shadow-contact-alpha)),
    inset 0 0 0 1px rgb(255 255 255 / .08),
    inset 0 0 0 calc(max(1px, var(--photo-frame-size, 18px) * .07)) rgb(0 0 0 / .12);
  transition: box-shadow .22s ease, transform .22s ease;
}
.photo-card__art--framed::before,
.photo-card__art--framed::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.photo-card__art--framed::before {
  box-shadow:
    inset 0 1px 0 rgb(255 255 255 / .2),
    inset 1px 0 0 rgb(255 255 255 / .12),
    inset 0 -1px 0 rgb(0 0 0 / .26),
    inset -1px 0 0 rgb(0 0 0 / .18);
}
.photo-card__art--framed .photo-card__window {
  display: block;
  background: var(--photo-frame-mat-color, #f5f1e8);
  padding: var(--photo-frame-mat-size, 14px);
  box-shadow:
    inset 0 0 0 1px rgb(35 30 24 / .08),
    0 1px 0 rgb(255 255 255 / .25);
}
.photo-card__art--framed img,
.mat-presentation--enabled .photo-card__art--framed img,
.mat-presentation--enabled.card-style--flat .photo-card__art--framed img,
.mat-presentation--enabled.card-style--floating .photo-card__art--framed img,
.mat-presentation--enabled.card-style--framed .photo-card__art--framed img {
  box-shadow: none;
}
.mat-presentation--enabled .photo-card__art--framed {
  padding: var(--photo-frame-size, 18px);
  background: var(--photo-frame-color, #5b4433);
  border-color: transparent;
}
.photo-card:hover .photo-card__art--framed,
.photo-card:focus-visible .photo-card__art--framed {
  box-shadow:
    0 10px 21px -5px rgb(var(--photo-shadow-rgb) / var(--photo-shadow-hover-primary-alpha)),
    0 3px 7px -1px rgb(var(--photo-shadow-rgb) / var(--photo-shadow-hover-secondary-alpha)),
    0 1px 2px rgb(var(--photo-shadow-rgb) / var(--photo-shadow-hover-contact-alpha)),
    inset 0 0 0 1px rgb(255 255 255 / .1),
    inset 0 0 0 calc(max(1px, var(--photo-frame-size, 18px) * .07)) rgb(0 0 0 / .14);
}
.frame-style--thin-black {
  background-image:
    linear-gradient(135deg, rgb(255 255 255 / .04), rgb(0 0 0 / .28)),
    linear-gradient(90deg, rgb(255 255 255 / .02), rgb(0 0 0 / .12));
}
.frame-style--white-gallery {
  background-image:
    linear-gradient(135deg, rgb(255 255 255 / .84), rgb(0 0 0 / .10)),
    linear-gradient(90deg, rgb(255 255 255 / .28), rgb(255 255 255 / 0) 35%, rgb(0 0 0 / .06));
}
.frame-style--natural-wood {
  background-image:
    linear-gradient(135deg, rgb(255 255 255 / .20), rgb(74 51 23 / .18)),
    repeating-linear-gradient(92deg, rgb(255 255 255 / .06) 0 2px, rgb(191 141 72 / .08) 2px 7px, rgb(110 77 37 / .10) 7px 13px, transparent 13px 18px);
}
.frame-style--walnut-wood {
  background-image:
    linear-gradient(135deg, rgb(255 255 255 / .16), rgb(35 23 14 / .22)),
    repeating-linear-gradient(92deg, rgb(255 255 255 / .04) 0 2px, rgb(110 81 56 / .10) 2px 6px, rgb(58 40 28 / .16) 6px 12px, transparent 12px 17px);
}
.frame-style--victorian {
  background-image:
    linear-gradient(135deg, rgb(255 255 255 / .12), rgb(0 0 0 / .18)),
    linear-gradient(90deg, rgb(193 154 88 / .14), transparent 18%, transparent 82%, rgb(193 154 88 / .12)),
    repeating-linear-gradient(90deg, rgb(255 255 255 / .05) 0 2px, rgb(0 0 0 / .05) 2px 4px, transparent 4px 8px);
}
.frame-style--gallery-black {
  background-image:
    linear-gradient(135deg, rgb(255 255 255 / .06), rgb(0 0 0 / .30)),
    linear-gradient(90deg, rgb(255 255 255 / .03), rgb(0 0 0 / .12));
  box-shadow:
    0 20px 44px rgb(20 17 13 / .20),
    0 4px 14px rgb(20 17 13 / .08),
    inset 0 0 0 2px rgb(255 255 255 / .08),
    inset 0 0 0 calc(max(3px, var(--photo-frame-size, 18px) * .16)) rgb(0 0 0 / .24);
}
.frame-style--ornate-black,
.frame-style--antique-gold,
.frame-style--baroque-rococo,
.frame-style--rococo-shell-gold,
.frame-style--pierced-baroque-gold,
.frame-style--tabernacle,
.frame-style--ebonized-ornate,
.frame-style--beaded-gold,
.frame-style--dark-gilded-gallery {
  background-image:
    linear-gradient(90deg, rgb(207 155 70 / .70), transparent 2.4%, transparent 97.6%, rgb(207 155 70 / .70)),
    linear-gradient(0deg, rgb(207 155 70 / .70), transparent 2.4%, transparent 97.6%, rgb(207 155 70 / .70)),
    linear-gradient(135deg, rgb(255 255 255 / .05), rgb(0 0 0 / .34)),
    repeating-linear-gradient(90deg, rgb(255 255 255 / .025) 0 2px, rgb(0 0 0 / .08) 2px 7px, transparent 7px 14px);
  box-shadow:
    0 26px 56px rgb(20 17 13 / .24),
    0 7px 18px rgb(20 17 13 / .11),
    inset 0 0 0 2px rgb(213 166 84 / .55),
    inset 0 0 0 calc(max(5px, var(--photo-frame-size, 18px) * .15)) rgb(37 27 21 / .82),
    inset 0 0 0 calc(max(8px, var(--photo-frame-size, 18px) * .25)) rgb(202 152 71 / .24),
    inset 0 0 0 calc(max(13px, var(--photo-frame-size, 18px) * .40)) rgb(28 20 16 / .62);
}
.frame-style--dark-gilded-gallery::before {
  box-shadow:
    inset 0 1px 0 rgb(255 255 255 / .08),
    inset 0 0 0 max(1px, calc(var(--photo-frame-size, 18px) * .04)) rgb(232 186 99 / .55),
    inset 0 0 0 max(6px, calc(var(--photo-frame-size, 18px) * .20)) rgb(25 18 14 / .42),
    inset 0 0 0 max(9px, calc(var(--photo-frame-size, 18px) * .31)) rgb(219 169 83 / .13),
    inset 0 -1px 0 rgb(0 0 0 / .36);
}
@media (max-width: 740px) {
  .photo-card__art--framed { padding: min(var(--photo-frame-size, 18px), 22px); }
  .photo-card__art--framed .photo-card__window { padding: min(var(--photo-frame-mat-size, 14px), 18px); }
}


/* Wider photograph-wall presentation: use more of the browser width without changing text or sidebar navigation. */
.section.section--work {
  padding-left: clamp(10px, 1.6vw, 28px);
  padding-right: clamp(10px, 1.6vw, 28px);
}
.section.section--work.container--narrow { max-width: 1120px; }
.section.section--work.container--contained { max-width: 1460px; }
.section.section--work.container--wide { max-width: 1900px; }
.section.section--work.container--full { max-width: 100%; }

@media (max-width: 700px) {
  .section.section--work {
    padding-left: 10px;
    padding-right: 10px;
  }
}


/* Optional desktop hover enlargement for portfolio artwork. */
@media (hover: hover) and (pointer: fine) {
  body.hover-grow--enabled .photo-card-wrap {
    z-index: 0;
  }
  body.hover-grow--enabled .photo-card-wrap:hover,
  body.hover-grow--enabled .photo-card-wrap:focus-within {
    z-index: 20;
  }
  body.hover-grow--enabled .photo-card__art {
    position: relative;
    transform: scale(1);
    transform-origin: center center;
    transition: transform .34s cubic-bezier(.2,.72,.2,1), box-shadow .34s ease, border-color .3s ease, background-color .3s ease;
    will-change: transform;
  }
  body.hover-grow--enabled .photo-card:hover .photo-card__art,
  body.hover-grow--enabled .photo-card:focus-visible .photo-card__art {
    transform: scale(var(--photo-hover-scale, 1.05));
  }
  body.hover-grow--enabled .photo-card__art--framed {
    transition: transform .34s cubic-bezier(.2,.72,.2,1), box-shadow .34s ease;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.hover-grow--enabled .photo-card__art,
  body.hover-grow--enabled .photo-card__art--framed {
    transform: none !important;
    transition-duration: .01ms !important;
  }
}


/* Editable footer controls */
.site-footer.site-footer--editable {
  padding-top: var(--footer-padding-y, 38px);
  padding-bottom: var(--footer-padding-y, 38px);
  font-family: var(--footer-font, var(--body-font, var(--sans)));
  font-size: var(--footer-text-size, 12px);
}
.site-footer--editable .site-footer__identity {
  display: grid;
  gap: 8px;
  min-width: 0;
}
.site-footer--editable .site-footer__title {
  color: var(--ink);
  font-family: inherit;
  font-size: var(--footer-title-size, 16px);
  line-height: 1.15;
}
.site-footer--editable .site-footer__text {
  max-width: 680px;
  margin: 0;
  color: inherit;
  font-size: var(--footer-text-size, 12px);
  line-height: 1.6;
}
.site-footer--editable .site-footer__nav,
.site-footer--editable .social-links--footer {
  font-size: var(--footer-text-size, 12px);
}
.site-footer--editable .site-footer__copyright {
  font-size: max(8px, calc(var(--footer-text-size, 12px) - 2px));
  line-height: 1.5;
}
.site-footer--editable.site-footer--no-border { border-top: 0; }
.site-footer--editable.site-footer--custom-colors {
  background: var(--footer-background-color, #f4f2ed);
  color: var(--footer-text-color, #6b6861);
}
.site-footer--editable.site-footer--custom-colors .site-footer__title { color: var(--footer-title-color, #171715); }
.site-footer--editable.site-footer--custom-colors a,
.site-footer--editable.site-footer--custom-colors small,
.site-footer--editable.site-footer--custom-colors .site-footer__text { color: var(--footer-text-color, #6b6861); }
.site-footer--editable.site-footer--custom-colors .social-links img,
.site-footer--editable.site-footer--custom-colors .social-links a > span { border-color: currentColor; }
.site-footer--editable.site-footer--align-center {
  grid-template-columns: 1fr;
  justify-items: center;
  text-align: center;
}
.site-footer--editable.site-footer--align-center .site-footer__identity,
.site-footer--editable.site-footer--align-center .site-footer__text { justify-items: center; text-align: center; }
.site-footer--editable.site-footer--align-center .site-footer__nav,
.site-footer--editable.site-footer--align-center .social-links--footer { justify-content: center; }
.site-footer--editable.site-footer--align-center .share-trigger--footer { justify-self: center; }
.site-footer--editable.site-footer--align-center .site-footer__copyright { grid-column: 1; }
.site-footer--editable.site-footer--align-right {
  grid-template-columns: 1fr;
  justify-items: end;
  text-align: right;
}
.site-footer--editable.site-footer--align-right .site-footer__identity,
.site-footer--editable.site-footer--align-right .site-footer__text { justify-items: end; text-align: right; }
.site-footer--editable.site-footer--align-right .site-footer__nav,
.site-footer--editable.site-footer--align-right .social-links--footer { justify-content: flex-end; }
.site-footer--editable.site-footer--align-right .share-trigger--footer { justify-self: end; }
.site-footer--editable.site-footer--align-right .site-footer__copyright { grid-column: 1; }
.site-footer--editable.site-footer--copyright-center:not(.site-footer--compact-row) .site-footer__copyright { grid-column: 1 / -1; justify-self: center; width: 100%; text-align: center; }
@media (max-width: 700px) {
  .site-footer.site-footer--editable { padding-left: var(--pad); padding-right: var(--pad); }
  .site-footer--editable.site-footer--align-right { justify-items: end; text-align: right; }
}

/* Compact two-column phone gallery. This keeps the desktop layout untouched,
   but lets phones show a denser wall of uncropped photographs. */
@media (max-width: 620px) {
  body.mobile-gallery-columns--2 .section.section--work {
    padding-left: 10px;
    padding-right: 10px;
  }

  body.mobile-gallery-columns--2.portfolio-layout--masonry.masonry-order--balanced .photo-grid {
    columns: 2;
    column-gap: 10px;
  }
  body.mobile-gallery-columns--2.portfolio-layout--masonry.masonry-order--balanced .photo-card-wrap {
    margin-bottom: 10px;
  }

  body.mobile-gallery-columns--2.portfolio-layout--masonry.masonry-order--ordered .photo-grid.photo-grid--ordered-masonry {
    --ordered-masonry-gap: 10px;
  }

  body.mobile-gallery-columns--2.portfolio-layout--grid .photo-grid,
  body.mobile-gallery-columns--2.portfolio-layout--compact .photo-grid,
  body.mobile-gallery-columns--2.portfolio-layout--stacked .photo-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px;
    max-width: none;
  }

  body.mobile-gallery-columns--2.portfolio-layout--editorial .photo-grid {
    display: block;
    columns: 2;
    column-gap: 10px;
  }
  body.mobile-gallery-columns--2.portfolio-layout--editorial .photo-card-wrap {
    display: inline-block;
    width: 100%;
    margin: 0 0 10px;
    break-inside: avoid;
  }
  body.mobile-gallery-columns--2.portfolio-layout--editorial .photo-card-wrap[data-photo-orientation="portrait"] .photo-card__art,
  body.mobile-gallery-columns--2.portfolio-layout--editorial .photo-card-wrap[data-photo-orientation="square"] .photo-card__art {
    width: 100%;
  }

  body.mobile-gallery-columns--2.portfolio-layout--viewport .photo-grid {
    gap: 10px;
  }

  body.mobile-gallery-columns--2 .photo-card__caption {
    display: none;
  }

  body.mobile-gallery-columns--2.mobile-gallery-mat--hidden.mat-presentation--enabled .photo-card__art:not(.photo-card__art--framed) {
    padding: 0 !important;
    border-color: transparent !important;
    background: transparent !important;
    box-shadow: none !important;
  }
  body.mobile-gallery-columns--2.mobile-gallery-mat--hidden.mat-presentation--enabled .photo-card__art:not(.photo-card__art--framed) img {
    box-shadow: var(--photo-shadow);
  }
}



/* Curated phone gallery experience: all controls are independent and phone-only. */
@media (max-width: 620px) {
  .photo-grid.photo-grid--mobile-experience {
    columns: auto !important;
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    grid-auto-rows: 4px;
    grid-auto-flow: row;
    column-gap: 10px !important;
    row-gap: 10px !important;
    align-items: start !important;
    max-width: none !important;
  }
  .photo-grid.photo-grid--mobile-experience > .photo-card-wrap {
    grid-column: span 1 !important;
    width: 100% !important;
    min-width: 0;
    height: auto !important;
    margin: 0 !important;
    align-self: start;
    break-inside: avoid;
  }
  .photo-grid.photo-grid--mobile-experience > .photo-card-wrap.is-mobile-editorial-feature,
  body[data-mobile-orientation-aware="true"] .photo-grid.photo-grid--mobile-experience > .photo-card-wrap[data-mobile-orientation="wide-landscape"] {
    grid-column: 1 / -1 !important;
  }
  .photo-grid.photo-grid--mobile-experience .photo-card,
  .photo-grid.photo-grid--mobile-experience .photo-card__art,
  .photo-grid.photo-grid--mobile-experience .photo-card__window {
    width: 100% !important;
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    aspect-ratio: auto !important;
    overflow: visible;
  }
  .photo-grid.photo-grid--mobile-experience .photo-card img {
    display: block;
    width: 100% !important;
    height: auto !important;
    max-height: none !important;
    object-fit: contain !important;
  }
  body[data-mobile-scroll-reveal="true"] .photo-card-wrap.mobile-reveal-ready {
    opacity: .9;
    transform: translateY(8px);
    transition: opacity .34s ease var(--mobile-reveal-delay, 0ms), transform .42s cubic-bezier(.2,.72,.2,1) var(--mobile-reveal-delay, 0ms);
    will-change: opacity, transform;
  }
  body[data-mobile-scroll-reveal="true"] .photo-card-wrap.mobile-reveal-ready.is-revealed {
    opacity: 1;
    transform: translateY(0);
  }
  body.mobile-isolate-active .photo-grid .photo-card-wrap {
    transition: opacity .18s ease, transform .2s cubic-bezier(.2,.72,.2,1), filter .18s ease;
  }
  body.mobile-isolate-active .photo-grid .photo-card-wrap:not(.is-mobile-isolated) {
    opacity: .14 !important;
    transform: scale(.985) !important;
    filter: saturate(.55) contrast(.94);
  }
  body.mobile-isolate-active .photo-grid .photo-card-wrap.is-mobile-isolated {
    position: relative;
    z-index: 25;
    opacity: 1 !important;
    transform: scale(1.025) !important;
    filter: none;
  }
}
@media (max-width: 620px) and (prefers-reduced-motion: reduce) {
  body[data-mobile-scroll-reveal="true"] .photo-card-wrap.mobile-reveal-ready,
  body[data-mobile-scroll-reveal="true"] .photo-card-wrap.mobile-reveal-ready.is-revealed {
    opacity: 1;
    transform: none;
    transition: none;
  }
}


@media (min-width: 901px), (max-width: 900px) and (orientation: landscape) {
  .mobile-rotate-prompt { display: none !important; }
}


/* 1.0.80 — dedicated mobile branding stack.
   Kept separate from the desktop .brand element so desktop/sidebar rules cannot
   accidentally hide the optional mobile text. */
.mobile-header-brand { display: none; }

@media (max-width: 900px) {
  .site-header > .brand { display: none !important; }
  .site-header > .mobile-header-brand {
    position: absolute;
    left: 50%;
    top: 50%;
    z-index: 11;
    display: flex !important;
    /* v1.0.166: keep the centered brand container at its proven width.
       Do not shrink this absolute-positioned parent to create menu clearance;
       doing so can collapse the mobile logo on narrow screens. */
    /* v1.0.167: size the clickable brand to its actual content instead of a
       72vw invisible box. This prevents the menu's higher-z-index click target
       from overlapping the logo link even when the visible image does not. */
    width: max-content;
    max-width: min(360px, calc(100vw - 132px));
    margin: 0;
    padding: 0;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 5px;
    color: var(--ink);
    text-align: center;
    text-decoration: none;
    transform: translate(-50%, -50%);
  }
  .site-header > .mobile-header-brand .mobile-header-brand__logo {
    display: block !important;
    /* v1.0.166: constrain the image itself, not its parent. The logo remains
       visible and centered while a fixed right-side control gutter is kept
       clear for the two-line menu button. */
    width: min(var(--mobile-header-logo-size, 48px), calc(100vw - 132px)) !important;
    height: min(var(--mobile-header-logo-size, 48px), calc(100vw - 132px)) !important;
    min-width: 1px;
    min-height: 1px;
    max-width: none !important;
    flex: 0 0 auto;
    object-fit: contain;
    background: transparent !important;
  }
  .site-header > .mobile-header-brand .mobile-header-brand__text {
    display: block !important;
    width: 100%;
    margin: 0;
    padding: 0;
    overflow: visible;
    color: var(--ink) !important;
    font-family: var(--mobile-header-text-font, var(--heading-font, Georgia, serif));
    font-size: var(--mobile-header-text-size, 12px);
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: .04em;
    text-align: center;
    white-space: normal;
    opacity: 1 !important;
    visibility: visible !important;
  }
  .site-header--sidebar > .mobile-header-brand,
  .site-header--sidebar > .mobile-header-brand .mobile-header-brand__text {
    color: var(--sidebar-ink, var(--ink)) !important;
  }
}

@media (min-width: 901px) {
  .mobile-header-brand { display: none !important; }
}

/* Version 1.0.81 — manual fine-art print order requests */
.purchase-request-form { display: grid; gap: 24px; }
.purchase-request-selection { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr) auto; gap: 14px; align-items: end; padding: 20px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.purchase-request-selection label, .purchase-request-grid label { display: grid; gap: 7px; }
.purchase-request-selection label > span, .purchase-request-grid label > span, .purchase-request-price > span { color: var(--muted); font-family: var(--nav-font, var(--sans)); font-size: 9px; font-weight: 650; letter-spacing: .13em; text-transform: uppercase; }
.purchase-request-selection select, .purchase-request-grid input, .purchase-request-grid textarea { width: 100%; min-height: 44px; border: 1px solid var(--line); border-radius: 0; background: var(--paper); color: var(--ink); padding: 10px 12px; font: inherit; outline: none; }
.purchase-request-selection select:focus, .purchase-request-grid input:focus, .purchase-request-grid textarea:focus { border-color: var(--ink); box-shadow: 0 0 0 2px color-mix(in srgb, var(--ink) 8%, transparent); }
.purchase-request-price { min-width: 150px; display: grid; gap: 7px; padding: 0 0 10px; text-align: right; }
.purchase-request-price strong { font-family: var(--heading-font, var(--serif)); font-size: 22px; font-weight: 400; white-space: nowrap; }
.purchase-request-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 16px; }
.purchase-request-grid textarea { min-height: 92px; resize: vertical; }
.purchase-request-full { grid-column: 1 / -1; }
.purchase-request-disclaimer { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.65; }
.purchase-request-actions { display: flex; align-items: center; justify-content: flex-start; gap: 12px; }
.purchase-request-status { min-height: 20px; margin: 0; color: var(--muted); font-size: 13px; line-height: 1.5; }
.purchase-request-honeypot { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }

@media (max-width: 620px) {
  .purchase-request-selection { grid-template-columns: 1fr; }
  .purchase-request-price { min-width: 0; padding: 2px 0 0; text-align: left; }
  .purchase-request-grid { grid-template-columns: 1fr; }
  .purchase-request-full { grid-column: auto; }
  .purchase-request-actions .button { width: 100%; }
}
.purchase-sheet__photo { margin: -4px 0 10px; font-family: var(--heading-font, var(--serif)); font-size: 18px; }


/* v1.0.93 — optional clean uniform two-column phone gallery.
   Every photograph remains uncropped and occupies exactly one equal-width column.
   Editorial/full-width feature spans are disabled only in this selected phone style. */
@media (max-width: 620px) {
  body.mobile-gallery-style--uniform .photo-grid.photo-grid--mobile-experience.photo-grid--mobile-uniform {
    columns: auto !important;
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    grid-auto-rows: 4px !important;
    grid-auto-flow: row !important;
    column-gap: 10px !important;
    row-gap: 10px !important;
    align-items: start !important;
    max-width: none !important;
  }

  body.mobile-gallery-style--uniform .photo-grid.photo-grid--mobile-experience.photo-grid--mobile-uniform > .photo-card-wrap,
  body.mobile-gallery-style--uniform[data-mobile-orientation-aware="true"] .photo-grid.photo-grid--mobile-experience.photo-grid--mobile-uniform > .photo-card-wrap[data-mobile-orientation="wide-landscape"],
  body.mobile-gallery-style--uniform .photo-grid.photo-grid--mobile-experience.photo-grid--mobile-uniform > .photo-card-wrap.is-mobile-editorial-feature {
    grid-column: span 1 !important;
    /* Leave grid-row-end free for the measured masonry span set by site.js.
       Using the grid-row shorthand here overrides that span and makes cards
       overflow tiny 4px rows on mobile. */
    grid-row-start: auto !important;
    width: 100% !important;
    margin: 0 !important;
  }

  body.mobile-gallery-style--uniform .photo-grid.photo-grid--mobile-experience.photo-grid--mobile-uniform .photo-card,
  body.mobile-gallery-style--uniform .photo-grid.photo-grid--mobile-experience.photo-grid--mobile-uniform .photo-card__art,
  body.mobile-gallery-style--uniform .photo-grid.photo-grid--mobile-experience.photo-grid--mobile-uniform .photo-card__window {
    width: 100% !important;
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    aspect-ratio: auto !important;
  }

  body.mobile-gallery-style--uniform .photo-grid.photo-grid--mobile-experience.photo-grid--mobile-uniform .photo-card img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-height: none !important;
    object-fit: contain !important;
  }

  body.mobile-gallery-style--uniform .photo-grid.photo-grid--mobile-experience.photo-grid--mobile-uniform > .photo-card-wrap {
    break-inside: avoid !important;
    page-break-inside: avoid !important;
    align-self: start !important;
  }
}


/* v1.0.95 — gapless clean two-column phone wall.
   The uniform phone option keeps natural image proportions, but uses measured
   micro-row spans so portrait and landscape photographs pack upward independently
   instead of sharing tall row heights. Both axes retain the same 10px spacing. */
@media (max-width: 620px) {
  body.mobile-gallery-style--uniform .photo-grid.photo-grid--mobile-experience.photo-grid--mobile-uniform {
    grid-auto-rows: 4px !important;
    column-gap: 10px !important;
    row-gap: 10px !important;
  }
}


/* v1.0.96 — mobile viewer navigation.
   Keep the visible arrows at the very bottom of the phone instead of over the
   photograph. JavaScript also makes the non-interactive left/right halves of
   the viewer large previous/next tap targets. */
@media (max-width: 900px) {
  .lightbox__nav {
    position: fixed !important;
    top: auto !important;
    bottom: max(12px, env(safe-area-inset-bottom)) !important;
    transform: none !important;
    z-index: 8;
  }
  .lightbox__nav--prev {
    left: max(10px, env(safe-area-inset-left)) !important;
  }
  .lightbox__nav--next {
    right: max(10px, env(safe-area-inset-right)) !important;
  }
}

/* v1.0.98 — public desktop scrollbar reveal.
   Keep the customer-facing scrollbar visually quiet until the pointer reaches
   the right-edge scrollbar area. Touch/mobile behavior is left to the browser. */
@media (hover: hover) and (pointer: fine) {
  html {
    scrollbar-width: thin;
    scrollbar-color: transparent transparent;
  }

  html::-webkit-scrollbar {
    width: 10px;
    height: 10px;
  }

  html::-webkit-scrollbar-track {
    background: transparent;
  }

  html::-webkit-scrollbar-thumb {
    min-height: 42px;
    border: 2px solid transparent;
    border-radius: 999px;
    background: transparent;
    background-clip: padding-box;
  }

  html.public-scrollbar-reveal {
    scrollbar-color: color-mix(in srgb, var(--ink) 42%, transparent) transparent;
  }

  html.public-scrollbar-reveal::-webkit-scrollbar-thumb {
    background: color-mix(in srgb, var(--ink) 42%, transparent);
    background-clip: padding-box;
  }

  html.public-scrollbar-reveal::-webkit-scrollbar-thumb:hover {
    background: color-mix(in srgb, var(--ink) 62%, transparent);
    background-clip: padding-box;
  }
}

/* v1.0.247 — the customer scrollbar belongs to the main content pane now
   that header/footer chrome is stationary. Keep the existing quiet-until-hover
   presentation, but apply it to #main instead of the document root. */
@media (hover: hover) and (pointer: fine) {
  body:not(.contact-page-shell--triptych-fit) > main#main {
    scrollbar-width: thin;
    scrollbar-color: transparent transparent;
  }

  body:not(.contact-page-shell--triptych-fit) > main#main::-webkit-scrollbar {
    width: 10px;
    height: 10px;
  }

  body:not(.contact-page-shell--triptych-fit) > main#main::-webkit-scrollbar-track {
    background: transparent;
  }

  body:not(.contact-page-shell--triptych-fit) > main#main::-webkit-scrollbar-thumb {
    min-height: 42px;
    border: 2px solid transparent;
    border-radius: 999px;
    background: transparent;
    background-clip: padding-box;
  }

  html.public-scrollbar-reveal body:not(.contact-page-shell--triptych-fit) > main#main {
    scrollbar-color: color-mix(in srgb, var(--ink) 42%, transparent) transparent;
  }

  html.public-scrollbar-reveal body:not(.contact-page-shell--triptych-fit) > main#main::-webkit-scrollbar-thumb {
    background: color-mix(in srgb, var(--ink) 42%, transparent);
    background-clip: padding-box;
  }

  html.public-scrollbar-reveal body:not(.contact-page-shell--triptych-fit) > main#main::-webkit-scrollbar-thumb:hover {
    background: color-mix(in srgb, var(--ink) 62%, transparent);
    background-clip: padding-box;
  }
}

/* v1.0.103 — hosted payment choices inside the print purchase sheet */
.purchase-request-selection {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.purchase-pay-now {
  display: grid;
  gap: 16px;
  margin-top: 18px;
}
.purchase-pay-now[hidden],
.purchase-request-details[hidden] { display: none !important; }
.purchase-pay-now__note {
  margin: 0;
  color: var(--muted, #73706a);
  line-height: 1.55;
}
.purchase-provider-buttons {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.purchase-provider-button {
  width: 100%;
  min-height: 48px;
  justify-content: center;
}
.purchase-provider-button:disabled { opacity: .55; cursor: wait; }
.payment-result-toast {
  position: fixed;
  left: 50%;
  bottom: max(22px, env(safe-area-inset-bottom));
  z-index: 10000;
  width: min(92vw, 640px);
  transform: translate(-50%, 18px);
  opacity: 0;
  pointer-events: none;
  padding: 14px 18px;
  border-radius: 999px;
  background: rgba(20,20,18,.94);
  color: #fff;
  box-shadow: 0 14px 40px rgba(0,0,0,.24);
  text-align: center;
  transition: opacity .2s ease, transform .2s ease;
}
.payment-result-toast.is-visible { opacity: 1; transform: translate(-50%, 0); }
@media (max-width: 720px) {
  .purchase-request-selection { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .purchase-provider-buttons { grid-template-columns: 1fr; }
  .payment-result-toast { border-radius: 16px; }
}


/* v1.0.106 — centered two-step print purchase flow with adjustable transparency.
   v1.0.105 layout and behavior are preserved; Admin → Buy option controls the glass opacity.
   Desktop stays compact and non-scrolling so the photograph remains visible.
   Small screens stack fields and may scroll only when the physical viewport is too short. */
.purchase-sheet {
  place-items: center !important;
  padding: clamp(18px, 3vw, 46px) !important;
}
.purchase-sheet__backdrop {
  background: rgba(3, 5, 5, var(--purchase-backdrop-alpha, .12)) !important;
}
.purchase-sheet__panel {
  width: min(1040px, calc(100vw - 48px)) !important;
  max-height: none !important;
  overflow: visible !important;
  padding: 0 !important;
  border: 1px solid rgba(255, 255, 255, .25);
  border-radius: 22px;
  background: rgba(15, 18, 18, var(--purchase-panel-alpha, .55)) !important;
  color: #fff !important;
  box-shadow: 0 28px 90px rgba(0, 0, 0, .34);
  -webkit-backdrop-filter: blur(18px) saturate(112%);
  backdrop-filter: blur(18px) saturate(112%);
}
.purchase-sheet__close {
  top: 13px !important;
  right: 17px !important;
  z-index: 4;
  color: rgba(255,255,255,.92) !important;
  font-size: 26px !important;
}
.purchase-step {
  display: grid;
  gap: 16px;
  padding: 24px 28px 26px;
}
.purchase-step[hidden] { display: none !important; }
.purchase-step__heading,
.purchase-step__topline {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 20px;
  align-items: end;
  padding-right: 38px;
}
.purchase-step__topline {
  grid-template-columns: auto minmax(0, 1fr) minmax(220px, auto);
  align-items: center;
}
.purchase-step .eyebrow {
  margin: 0 0 5px;
  color: rgba(255,255,255,.62);
}
.purchase-step h2,
.purchase-sheet__panel .purchase-step h2 {
  margin: 0 !important;
  color: #fff !important;
  font-size: clamp(23px, 2.3vw, 32px) !important;
  line-height: 1.05 !important;
}
.purchase-sheet__photo {
  margin: 0 !important;
  max-width: 320px;
  overflow: hidden;
  color: rgba(255,255,255,.78) !important;
  font-family: var(--nav-font, var(--sans)) !important;
  font-size: 12px !important;
  line-height: 1.35;
  text-align: right;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.purchase-sheet__note {
  margin: -2px 0 0 !important;
  color: rgba(255,255,255,.62) !important;
  font-size: 12px;
  line-height: 1.45 !important;
}
.purchase-request-form { gap: 0 !important; }
.purchase-request-selection {
  grid-template-columns: minmax(190px, 1.35fr) minmax(150px, 1fr) 100px minmax(110px, .7fr) !important;
  gap: 12px !important;
  padding: 0 !important;
  border: 0 !important;
  align-items: end;
}
.purchase-request-selection label,
.purchase-request-grid label { gap: 5px !important; }
.purchase-request-selection label > span,
.purchase-request-grid label > span,
.purchase-request-price > span {
  color: rgba(255,255,255,.62) !important;
}
.purchase-request-selection select,
.purchase-request-selection input,
.purchase-request-grid input,
.purchase-request-grid textarea {
  min-height: 40px !important;
  border: 1px solid rgba(255,255,255,.18) !important;
  border-radius: 7px !important;
  background: rgba(255,255,255,.07) !important;
  color: #fff !important;
  padding: 8px 10px !important;
  box-shadow: none !important;
}
.purchase-request-selection select option { color: #fff; background: #1b1e1e; }
.purchase-request-selection select:focus,
.purchase-request-selection input:focus,
.purchase-request-grid input:focus,
.purchase-request-grid textarea:focus {
  border-color: rgba(255,255,255,.65) !important;
  box-shadow: 0 0 0 2px rgba(255,255,255,.08) !important;
}
.purchase-request-price {
  min-width: 0 !important;
  padding: 0 0 8px !important;
  text-align: left !important;
}
.purchase-request-price strong {
  color: #fff !important;
  font-size: 21px !important;
}
.purchase-step__continue .button,
.purchase-request-actions .button {
  width: 100%;
  min-height: 44px;
}
.purchase-step__back {
  border: 0;
  background: transparent;
  color: rgba(255,255,255,.74);
  padding: 6px 4px 6px 0;
  cursor: pointer;
  font: inherit;
  font-size: 12px;
  white-space: nowrap;
}
.purchase-step__back:hover { color: #fff; }
.purchase-selection-summary {
  margin: 0;
  color: rgba(255,255,255,.72);
  font-size: 12px;
  line-height: 1.45;
  text-align: right;
}
.purchase-request-details { display: block !important; }
.purchase-request-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  gap: 10px 12px !important;
}
.purchase-request-address { grid-column: span 2; }
.purchase-request-notes { grid-column: span 3; }
.purchase-request-grid textarea {
  min-height: 40px !important;
  height: 40px;
  resize: none !important;
}
.purchase-pay-now {
  gap: 10px !important;
  margin-top: 2px !important;
}
.purchase-pay-now__intro {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 18px;
}
.purchase-pay-now__note,
.purchase-request-disclaimer {
  color: rgba(255,255,255,.58) !important;
  font-size: 11px !important;
  line-height: 1.45 !important;
}
.purchase-pay-now__note { white-space: nowrap; }
.purchase-provider-buttons {
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  gap: 8px !important;
}
.purchase-provider-button {
  min-height: 42px !important;
  border-color: rgba(255,255,255,.22) !important;
}
.purchase-request-submit {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(220px, 300px);
  gap: 14px;
  align-items: center;
}
.purchase-request-submit[hidden] { display: none !important; }
.purchase-request-submit .purchase-request-actions { grid-column: 2; grid-row: 1 / span 2; }
.purchase-request-submit .purchase-request-status { grid-column: 1; }
.purchase-request-status { color: rgba(255,255,255,.7) !important; }

@media (max-width: 900px) {
  .purchase-sheet__panel { width: min(760px, calc(100vw - 28px)) !important; }
  .purchase-request-selection { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .purchase-request-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .purchase-request-address,
  .purchase-request-notes { grid-column: span 2; }
  .purchase-provider-buttons { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .purchase-step__topline { grid-template-columns: auto minmax(0,1fr); }
  .purchase-selection-summary { grid-column: 1 / -1; text-align: left; }
}

@media (max-width: 620px) {
  .purchase-sheet {
    place-items: center stretch !important;
    padding: 10px !important;
  }
  .purchase-sheet__backdrop { background: rgba(3,5,5,var(--purchase-backdrop-alpha, .12)) !important; }
  .purchase-sheet__panel {
    width: 100% !important;
    max-height: calc(100dvh - 20px) !important;
    overflow: auto !important;
    border-radius: 16px !important;
  }
  .purchase-step { padding: 24px 16px 18px; gap: 14px; }
  .purchase-step__heading,
  .purchase-step__topline { grid-template-columns: 1fr; gap: 8px; padding-right: 28px; align-items: start; }
  .purchase-sheet__photo,
  .purchase-selection-summary { max-width: none; text-align: left; white-space: normal; }
  .purchase-request-selection,
  .purchase-request-grid,
  .purchase-provider-buttons { grid-template-columns: 1fr !important; }
  .purchase-request-address,
  .purchase-request-notes { grid-column: auto; }
  .purchase-request-notes textarea { height: 56px; }
  .purchase-pay-now__intro { display: grid; gap: 4px; }
  .purchase-pay-now__note { white-space: normal; }
  .purchase-request-submit { grid-template-columns: 1fr; }
  .purchase-request-submit .purchase-request-actions,
  .purchase-request-submit .purchase-request-status { grid-column: 1; grid-row: auto; }
}

/* v1.0.112 — Contact triptych entrance animations now use Admin-controlled speed
   and intensity variables. All three panels still begin together; reduced-motion
   visitors and phone layouts remain static. */
@media (min-width: 901px) and (prefers-reduced-motion: no-preference) {
  body.contact-animation--converge-focus .contact-triptych-panel {
    will-change: transform, opacity, filter;
    animation-duration: var(--bp-contact-duration, 760ms);
    animation-timing-function: cubic-bezier(.2, .72, .2, 1);
    animation-fill-mode: both;
  }
  body.contact-animation--converge-focus .contact-triptych-panel:nth-child(1) { animation-name: contactTriptychConvergeLeft; }
  body.contact-animation--converge-focus .contact-triptych-panel:nth-child(2) { animation-name: contactTriptychConvergeCenter; }
  body.contact-animation--converge-focus .contact-triptych-panel:nth-child(3) { animation-name: contactTriptychConvergeRight; }

  body.contact-animation--photo-reveal .contact-triptych-panel {
    will-change: transform, opacity;
    animation: contactTriptychPanelSettle var(--bp-contact-reveal-panel-duration, 680ms) cubic-bezier(.2, .72, .2, 1) both;
  }
  body.contact-animation--photo-reveal .contact-triptych-panel__media {
    will-change: clip-path, transform, opacity;
    animation-duration: var(--bp-contact-reveal-media-duration, 740ms);
    animation-timing-function: cubic-bezier(.2, .72, .2, 1);
    animation-fill-mode: both;
  }
  body.contact-animation--photo-reveal .contact-triptych-panel:nth-child(1) .contact-triptych-panel__media { animation-name: contactTriptychRevealLeft; }
  body.contact-animation--photo-reveal .contact-triptych-panel:nth-child(2) .contact-triptych-panel__media { animation-name: contactTriptychRevealCenter; }
  body.contact-animation--photo-reveal .contact-triptych-panel:nth-child(3) .contact-triptych-panel__media { animation-name: contactTriptychRevealRight; }

  @keyframes contactTriptychConvergeLeft {
    from { transform: translate3d(var(--bp-contact-left-x, -42px), var(--bp-contact-side-y, -18px), 0) scale(var(--bp-contact-converge-scale, .955)); filter: blur(var(--bp-contact-blur, 7px)); opacity: var(--bp-contact-converge-opacity, .38); }
    to { transform: translate3d(0, 0, 0) scale(1); filter: blur(0); opacity: 1; }
  }
  @keyframes contactTriptychConvergeCenter {
    from { transform: translate3d(0, var(--bp-contact-center-y, 34px), 0) scale(var(--bp-contact-converge-scale, .955)); filter: blur(var(--bp-contact-blur, 7px)); opacity: var(--bp-contact-converge-opacity, .38); }
    to { transform: translate3d(0, 0, 0) scale(1); filter: blur(0); opacity: 1; }
  }
  @keyframes contactTriptychConvergeRight {
    from { transform: translate3d(var(--bp-contact-right-x, 42px), var(--bp-contact-side-y, -18px), 0) scale(var(--bp-contact-converge-scale, .955)); filter: blur(var(--bp-contact-blur, 7px)); opacity: var(--bp-contact-converge-opacity, .38); }
    to { transform: translate3d(0, 0, 0) scale(1); filter: blur(0); opacity: 1; }
  }
  @keyframes contactTriptychPanelSettle {
    from { transform: translate3d(0, var(--bp-contact-settle-y, 12px), 0) scale(var(--bp-contact-settle-scale, .978)); opacity: var(--bp-contact-settle-opacity, .58); }
    to { transform: translate3d(0, 0, 0) scale(1); opacity: 1; }
  }
  @keyframes contactTriptychRevealLeft {
    from { clip-path: inset(0 var(--bp-contact-reveal-side, 68%) 0 0); transform: scale(var(--bp-contact-reveal-scale, 1.035)); opacity: var(--bp-contact-reveal-opacity, .58); }
    to { clip-path: inset(0); transform: scale(1); opacity: 1; }
  }
  @keyframes contactTriptychRevealCenter {
    from { clip-path: inset(0 var(--bp-contact-reveal-center, 34%)); transform: scale(var(--bp-contact-reveal-scale, 1.035)); opacity: var(--bp-contact-reveal-opacity, .58); }
    to { clip-path: inset(0); transform: scale(1); opacity: 1; }
  }
  @keyframes contactTriptychRevealRight {
    from { clip-path: inset(0 0 0 var(--bp-contact-reveal-side, 68%)); transform: scale(var(--bp-contact-reveal-scale, 1.035)); opacity: var(--bp-contact-reveal-opacity, .58); }
    to { clip-path: inset(0); transform: scale(1); opacity: 1; }
  }
}

@media (prefers-reduced-motion: reduce) {
  body.contact-animation--converge-focus .contact-triptych-panel,
  body.contact-animation--photo-reveal .contact-triptych-panel,
  body.contact-animation--photo-reveal .contact-triptych-panel__media {
    animation: none !important;
    transform: none !important;
    filter: none !important;
    clip-path: none !important;
    opacity: 1 !important;
  }
}



/* v1.0.108 — selectable homepage photograph entrance animations. The JS only
   adds these classes when an animation is selected, so Static preserves the
   original gallery exactly. Wrapper transforms do not change masonry/grid flow. */
body.home-page [data-home-gallery-animation].bp-home-animation-active .bp-home-gallery-item {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
  filter: blur(0);
  transition:
    opacity var(--bp-home-duration, 650ms) cubic-bezier(.2,.72,.2,1) var(--bp-home-delay, 0ms),
    transform var(--bp-home-duration, 650ms) cubic-bezier(.2,.72,.2,1) var(--bp-home-delay, 0ms),
    filter var(--bp-home-duration, 650ms) ease var(--bp-home-delay, 0ms);
  will-change: opacity, transform, filter;
}

body.home-page [data-home-gallery-animation].bp-home-animation-active .bp-home-gallery-item.is-pending {
  pointer-events: none;
}

body.home-page [data-home-gallery-animation="soft-cascade"].bp-home-animation-active .bp-home-gallery-item.is-pending,
body.home-page [data-home-gallery-animation="focus-reveal"].bp-home-animation-active .bp-home-gallery-item.is-pending,
body.home-page [data-home-gallery-animation="directional"].bp-home-animation-active .bp-home-gallery-item.is-pending,
body.home-page [data-home-gallery-animation="mosaic-wave"].bp-home-animation-active .bp-home-gallery-item.is-pending {
  opacity: 0;
  transform: translate3d(var(--bp-home-offset-x, 0), var(--bp-home-offset-y, 0), 0) scale(var(--bp-home-start-scale, .97));
  filter: blur(var(--bp-home-start-blur, 6px));
}

body.home-page [data-home-gallery-animation="focus-reveal"].bp-home-animation-active .bp-home-gallery-item.is-pending {
  opacity: .12;
}

/* v1.0.118 — Print Reveal staged handoff.
   The page-level first-paint mask is emitted server-side in render.php so it
   cannot be defeated by a CSP that blocks inline scripts. Once site.js starts,
   each unrevealed card keeps its own staging class until its animation object
   is ready. Frames and mats remain visible throughout. */
html.bp-print-reveal-boot body.home-page [data-home-gallery-animation="print-reveal"] .photo-card__window > img,
html.bp-print-reveal-boot body.home-page [data-home-gallery-animation="print-reveal"] .gallery-card__image > img,
body.home-page [data-home-gallery-animation="print-reveal"] .bp-home-gallery-item.bp-print-reveal-staged .photo-card__window > img,
body.home-page [data-home-gallery-animation="print-reveal"] .bp-home-gallery-item.bp-print-reveal-staged .gallery-card__image > img {
  clip-path: inset(0 100% 0 0) !important;
  will-change: clip-path;
}
body.home-page [data-home-gallery-animation="print-reveal"].bp-home-animation-active .bp-home-gallery-item {
  opacity: 1;
  transform: none;
  filter: none;
}
body.home-page [data-home-gallery-animation="print-reveal"].bp-home-animation-active .bp-home-gallery-item.is-visible .photo-card__window > img,
body.home-page [data-home-gallery-animation="print-reveal"].bp-home-animation-active .bp-home-gallery-item.is-visible .gallery-card__image > img {
  clip-path: inset(0 0 0 0);
}
body.home-page [data-home-gallery-animation="print-reveal"].bp-home-animation-active .bp-home-gallery-item.bp-print-reveal-fallback .photo-card__window > img,
body.home-page [data-home-gallery-animation="print-reveal"].bp-home-animation-active .bp-home-gallery-item.bp-print-reveal-fallback .gallery-card__image > img {
  transition: clip-path var(--bp-home-duration, 650ms) cubic-bezier(.22,.72,.18,1) var(--bp-home-delay, 0ms);
}
body.home-page [data-home-gallery-animation="print-reveal"].bp-home-animation-active .bp-home-gallery-item.bp-print-reveal-fallback.is-pending .photo-card__window > img,
body.home-page [data-home-gallery-animation="print-reveal"].bp-home-animation-active .bp-home-gallery-item.bp-print-reveal-fallback.is-pending .gallery-card__image > img {
  clip-path: inset(0 100% 0 0);
}



/* v1.0.122 — text-only page entrance animations. The initial hidden state is
   CSS-driven so saved animations never flash fully visible before site.js runs. */
.text-page[data-text-page-animation]:not([data-text-page-animation="static"]) > .eyebrow,
.text-page[data-text-page-animation]:not([data-text-page-animation="static"]) > h1,
.text-page[data-text-page-animation]:not([data-text-page-animation="static"]) > .rich-text > *,
.text-page[data-text-page-animation]:not([data-text-page-animation="static"]) > .text-page__body > .text-page__image,
.text-page[data-text-page-animation]:not([data-text-page-animation="static"]) > .text-page__body > .rich-text > * {
  opacity: 0;
  will-change: opacity, transform, filter, clip-path, letter-spacing;
}
.text-page[data-text-page-animation="line-reveal"] > .eyebrow,
.text-page[data-text-page-animation="line-reveal"] > h1,
.text-page[data-text-page-animation="line-reveal"] > .rich-text > *,
.text-page[data-text-page-animation="line-reveal"] > .text-page__body > .text-page__image,
.text-page[data-text-page-animation="line-reveal"] > .text-page__body > .rich-text > * {
  clip-path: inset(0 0 100% 0);
}
.text-page[data-text-page-animation="mask-wipe"] > .eyebrow,
.text-page[data-text-page-animation="mask-wipe"] > h1,
.text-page[data-text-page-animation="mask-wipe"] > .rich-text > *,
.text-page[data-text-page-animation="mask-wipe"] > .text-page__body > .text-page__image,
.text-page[data-text-page-animation="mask-wipe"] > .text-page__body > .rich-text > * {
  clip-path: inset(0 100% 0 0);
}
@media (prefers-reduced-motion: reduce) {
  html:not(.bp-admin-force-motion) .text-page[data-text-page-animation] > .eyebrow,
  html:not(.bp-admin-force-motion) .text-page[data-text-page-animation] > h1,
  html:not(.bp-admin-force-motion) .text-page[data-text-page-animation] > .rich-text > *,
  html:not(.bp-admin-force-motion) .text-page[data-text-page-animation] > .text-page__body > .text-page__image,
  html:not(.bp-admin-force-motion) .text-page[data-text-page-animation] > .text-page__body > .rich-text > * {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    clip-path: none !important;
    will-change: auto !important;
  }
}

/* v1.0.144 — Homepage gallery entrance effects are an explicit studio design
   choice. Keep reduced-motion behavior everywhere else, but do not let a
   browser-profile preference collapse the selected homepage photo entrance to
   0.01ms. This also makes regular-profile and Incognito behavior consistent. */
@media (prefers-reduced-motion: reduce) {
  body.home-page [data-home-gallery-animation].bp-home-animation-active .bp-home-gallery-item {
    transition:
      opacity var(--bp-home-duration, 650ms) cubic-bezier(.2,.72,.2,1) var(--bp-home-delay, 0ms) !important,
      transform var(--bp-home-duration, 650ms) cubic-bezier(.2,.72,.2,1) var(--bp-home-delay, 0ms) !important,
      filter var(--bp-home-duration, 650ms) ease var(--bp-home-delay, 0ms) !important;
  }
}

/* v1.0.158: keep compact footers attached to the bottom of short pages.
   The footer padding slider controls the footer itself; any unused viewport
   height belongs to main content above the footer, never below it.

   v1.0.247: the public chrome now remains stationary while the main content
   is the only vertical scroller. This avoids the mobile sticky-header visual-
   viewport snap-back path entirely: neither the top header nor footer needs
   to chase the document scroll position. */
html { min-height: 100%; }
body:not(.contact-page-shell--triptych-fit) {
  height: 100vh;
  height: 100dvh;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
body:not(.contact-page-shell--triptych-fit) > main#main {
  width: 100%;
  min-height: 0;
  flex: 1 1 auto;
  overflow-y: auto;
  overscroll-behavior-y: contain;
  -webkit-overflow-scrolling: touch;
  scroll-behavior: smooth;
}
body:not(.contact-page-shell--triptych-fit) > .site-header,
body:not(.contact-page-shell--triptych-fit) > .mobile-rotate-prompt,
body:not(.contact-page-shell--triptych-fit) > .site-footer {
  flex: 0 0 auto;
}
body:not(.contact-page-shell--triptych-fit) > .site-footer {
  width: 100%;
  height: auto;
  min-height: 0;
}
/* Lightboxes and the full-screen navigation must also freeze the new content
   scroller so wheel/touch input cannot move photographs behind an overlay. */
body.is-lightbox-open:not(.contact-page-shell--triptych-fit) > main#main,
body.is-nav-open:not(.contact-page-shell--triptych-fit) > main#main {
  overflow-y: hidden;
}


/* v1.0.159 — per-gallery visual environments. Normal galleries receive none
   of these overrides and therefore remain pixel-for-pixel on the site default. */
body.gallery-experience--themed {
  background: var(--paper);
  color: var(--ink);
}
body.gallery-experience--themed .site-header:not(.site-header--sidebar) {
  background: var(--paper);
}
body.gallery-experience--themed .site-header--sticky {
  background: color-mix(in srgb, var(--paper) 92%, transparent);
}
body.gallery-experience--themed .site-header--sidebar {
  --sidebar-background: var(--gallery-nav-bg) !important;
  --sidebar-ink: var(--gallery-theme-text) !important;
  --sidebar-muted: var(--gallery-theme-muted) !important;
  --sidebar-line: color-mix(in srgb, var(--gallery-theme-divider) 38%, transparent) !important;
  background: var(--gallery-nav-bg, var(--surface));
  color: var(--gallery-theme-text, var(--ink));
}
body.gallery-experience--themed .theme-toggle {
  display: none;
}
body.gallery-experience--themed .gallery-hero {
  position: relative;
  border-bottom: 1px solid var(--line);
  padding-top: var(--gallery-hero-top, clamp(34px, 4.5vw, 62px));
  padding-bottom: var(--gallery-hero-bottom, clamp(22px, 3vw, 38px));
}
body.gallery-experience--themed .gallery-hero .back-link {
  margin-bottom: var(--gallery-back-link-gap, clamp(24px, 3vw, 38px));
}
body.gallery-experience--themed .gallery-hero .eyebrow,
body.gallery-experience--themed .gallery-hero .back-link {
  color: var(--gallery-accent, var(--muted));
}
body.gallery-experience--themed .gallery-hero__heading > div > p:not(.eyebrow) {
  color: var(--muted);
}
.gallery-theme-public-label {
  display: inline-flex;
  width: max-content;
  margin-top: 12px;
  padding: 5px 9px;
  border: 1px solid color-mix(in srgb, var(--gallery-accent, var(--ink)) 42%, transparent);
  border-radius: 999px;
  color: var(--gallery-accent, var(--muted));
  font-size: 9px;
  font-weight: 650;
  letter-spacing: .12em;
  text-transform: uppercase;
}
/* Gallery palettes may style the generic card mat only when the dedicated
   Fine-art mat presentation is off. When mat presentation is on, its
   --photo-mat-color (including the exact custom override) must remain
   authoritative. */
body.gallery-experience--themed:not(.mat-presentation--enabled) .photo-card__art {
  background: var(--mat);
}
body.gallery-experience--themed .photo-card:focus-visible {
  outline-color: var(--gallery-accent, var(--ink));
}
body.gallery-experience--themed .site-footer--editable {
  background: var(--gallery-footer-bg, var(--paper)) !important;
  border-top-color: var(--line) !important;
}
body.gallery-experience--themed .site-footer--editable .site-footer__title,
body.gallery-experience--themed .site-footer--editable strong {
  color: var(--ink) !important;
}
body.gallery-experience--themed .site-footer--editable a,
body.gallery-experience--themed .site-footer--editable small,
body.gallery-experience--themed .site-footer--editable .site-footer__text {
  color: var(--muted) !important;
}
body.gallery-experience--themed .lightbox {
  --viewer-background: var(--gallery-viewer-bg) !important;
}
body.gallery-experience--viewer-light .lightbox {
  --viewer-foreground: #11110f;
  --viewer-muted: rgba(17,17,15,.58);
  --viewer-muted-soft: rgba(17,17,15,.55);
  --viewer-control: rgba(17,17,15,.82);
  --viewer-control-strong: #11110f;
  --viewer-control-border: rgba(17,17,15,.36);
  --viewer-control-border-strong: rgba(17,17,15,.46);
  --viewer-nav-background: rgba(255,255,255,.56);
  --viewer-nav-mobile-background: rgba(255,255,255,.74);
  --viewer-nav-hover-background: rgba(17,17,15,.08);
  --viewer-progress-track: rgba(17,17,15,.18);
  --viewer-progress-fill: rgba(17,17,15,.78);
  --viewer-thumb-background: rgba(17,17,15,.045);
}
body.gallery-experience--viewer-dark .lightbox {
  --viewer-foreground: #fff;
  --viewer-muted: rgba(255,255,255,.56);
  --viewer-muted-soft: rgba(255,255,255,.55);
  --viewer-control: rgba(255,255,255,.84);
  --viewer-control-strong: #fff;
  --viewer-control-border: rgba(255,255,255,.42);
  --viewer-control-border-strong: rgba(255,255,255,.5);
  --viewer-nav-background: rgba(0,0,0,.16);
  --viewer-nav-mobile-background: rgba(0,0,0,.38);
  --viewer-nav-hover-background: rgba(255,255,255,.08);
  --viewer-progress-track: rgba(255,255,255,.18);
  --viewer-progress-fill: rgba(255,255,255,.82);
  --viewer-thumb-background: rgba(255,255,255,.04);
}
/* v1.0.205 — the existing gallery spacing profile now controls the hero rhythm
   as well as the photograph section, so the admin choice has a visible effect
   on the whole gallery page rather than only the grid. */
body.gallery-theme-spacing--intimate {
  --gallery-hero-top: clamp(24px, 3vw, 42px);
  --gallery-back-link-gap: clamp(18px, 2.2vw, 28px);
  --gallery-hero-bottom: clamp(16px, 2vw, 26px);
}
body.gallery-theme-spacing--intimate .section--gallery {
  padding-top: clamp(22px, 3vw, 38px);
  padding-bottom: clamp(42px, 5vw, 70px);
}
body.gallery-theme-spacing--intimate .photo-grid {
  column-gap: clamp(10px, 1.25vw, 20px);
}
body.gallery-theme-spacing--intimate .photo-card-wrap {
  margin-bottom: clamp(10px, 1.25vw, 20px);
}
body.gallery-theme-spacing--balanced {
  --gallery-hero-top: clamp(32px, 4vw, 56px);
  --gallery-back-link-gap: clamp(24px, 2.8vw, 36px);
  --gallery-hero-bottom: clamp(20px, 2.5vw, 32px);
}
body.gallery-theme-spacing--balanced .section--gallery {
  padding-top: clamp(30px, 4vw, 52px);
  padding-bottom: clamp(52px, 6vw, 84px);
}
body.gallery-theme-spacing--spacious {
  --gallery-hero-top: clamp(46px, 6vw, 82px);
  --gallery-back-link-gap: clamp(32px, 4vw, 52px);
  --gallery-hero-bottom: clamp(28px, 3.5vw, 46px);
}
body.gallery-theme-spacing--spacious .section--gallery {
  padding-top: clamp(48px, 6vw, 78px);
  padding-bottom: clamp(72px, 9vw, 118px);
}
body.gallery-theme-spacing--spacious .photo-grid {
  column-gap: clamp(24px, 3vw, 48px);
}
body.gallery-theme-spacing--spacious .photo-card-wrap {
  margin-bottom: clamp(24px, 3vw, 48px);
}
@media (max-width: 700px) {
  .gallery-theme-public-label { margin-top: 9px; }
  body.gallery-experience--themed .gallery-hero { padding-top: 26px; padding-bottom: 22px; }
  body.gallery-experience--themed .gallery-hero .back-link { margin-bottom: 22px; }
  body.gallery-theme-spacing--spacious .section--gallery { padding-top: 42px; padding-bottom: 62px; }
  body.gallery-theme-spacing--balanced .section--gallery { padding-top: 30px; padding-bottom: 52px; }
  body.gallery-theme-spacing--intimate .section--gallery { padding-top: 22px; padding-bottom: 42px; }
}


/* v1.0.168 — mobile header follows the visible page background.
   Mobile background adaptation is painted by the fixed adaptive-atmosphere
   layer above the body's base --paper color. A solid --paper header therefore
   looked like a different strip even though the base color matched. Keep the
   proven v1.0.167 geometry intact and let the header reveal the exact same
   visible page/background atmosphere beneath it. */
@media (max-width: 900px) {
  body .site-header--sidebar {
    background: transparent !important;
    background-color: transparent !important;
    background-image: none !important;
  }
}

/* v1.0.170 — Curated Gallery Homepage layouts.
   Completely scoped to the new gallery-home renderer so the proven All Images,
   current Gallery Cards, mobile-header structure, and v1.0.147 site.js behavior stay untouched. */
.section--curated-home.container{width:100%;max-width:none;padding:0!important;margin:0!important}
.gallery-home-curated{--gh-bg:var(--paper);--gh-surface:var(--surface,var(--paper-deep));--gh-text:var(--ink);--gh-muted:var(--muted);--gh-accent:var(--ink);--gh-divider:var(--line);--gh-overlay:#111;--gh-pad-y:clamp(38px,5vw,72px);--gh-intro-gap:clamp(38px,5vw,74px);--gh-title-size:clamp(42px,5.2vw,80px);--gh-content-w:1320px;--gh-content-wide:1380px;--gh-editorial-h:clamp(340px,52vh,560px);--gh-index-h:clamp(340px,52vh,560px);--gh-magazine-h:clamp(320px,48vh,520px);--gh-hybrid-mosaic-h:clamp(320px,48vh,520px);--gh-hybrid-card-h:clamp(340px,52vh,560px);--gh-band-tight:clamp(380px,54vh,590px);--gh-band-standard:clamp(420px,64vh,680px);--gh-band-spacious:clamp(450px,69vh,730px);position:relative;width:100%;overflow:hidden;background:var(--gh-bg);color:var(--gh-text);font-family:var(--gh-body-font,var(--body-font));transition:background-color .55s ease,color .55s ease;padding:var(--gh-pad-y) clamp(20px,5vw,82px)}
.gallery-home-curated.gh-scale--compact{--gh-pad-y:clamp(30px,4vw,56px);--gh-intro-gap:clamp(28px,4vw,52px);--gh-title-size:clamp(38px,4.6vw,68px);--gh-content-w:1160px;--gh-content-wide:1220px;--gh-editorial-h:clamp(300px,44vh,480px);--gh-index-h:clamp(300px,44vh,480px);--gh-magazine-h:clamp(280px,41vh,450px);--gh-hybrid-mosaic-h:clamp(280px,42vh,460px);--gh-hybrid-card-h:clamp(300px,45vh,490px);--gh-band-tight:clamp(340px,47vh,510px);--gh-band-standard:clamp(370px,54vh,590px);--gh-band-spacious:clamp(400px,60vh,640px)}
.gallery-home-curated.gh-scale--large{--gh-pad-y:clamp(46px,6.5vw,94px);--gh-intro-gap:clamp(50px,7vw,100px);--gh-title-size:clamp(46px,6.2vw,100px);--gh-content-w:1460px;--gh-content-wide:1540px;--gh-editorial-h:clamp(390px,61vh,670px);--gh-index-h:clamp(390px,61vh,670px);--gh-magazine-h:clamp(360px,56vh,620px);--gh-hybrid-mosaic-h:clamp(360px,56vh,620px);--gh-hybrid-card-h:clamp(390px,60vh,660px);--gh-band-tight:clamp(430px,61vh,670px);--gh-band-standard:clamp(470px,70vh,750px);--gh-band-spacious:clamp(500px,74vh,790px)}
.gh-spacing--tight{--gh-item-space:clamp(34px,4vw,56px);--gh-item-pad:clamp(26px,3vw,42px);--gh-index-row-pad:16px;--gh-band-height:var(--gh-band-tight)}
.gh-spacing--standard{--gh-item-space:clamp(52px,6vw,86px);--gh-item-pad:clamp(38px,4vw,60px);--gh-index-row-pad:21px;--gh-band-height:var(--gh-band-standard)}
.gh-spacing--spacious{--gh-item-space:clamp(74px,8vw,118px);--gh-item-pad:clamp(52px,5.5vw,82px);--gh-index-row-pad:28px;--gh-band-height:var(--gh-band-spacious)}
.gallery-home-curated *{box-sizing:border-box}
.gallery-home-curated a{color:inherit;text-decoration:none}
.gallery-home-curated img{display:block;width:100%;height:100%;object-fit:cover}
.gallery-home-curated h1,.gallery-home-curated h2,.gallery-home-curated h3{margin:0;color:var(--gh-text);font-family:var(--gh-heading-font,var(--heading-font));font-weight:400;line-height:.98;letter-spacing:-.035em}
.gallery-home-curated .gh-intro h1{font-family:var(--gh-title-font,var(--title-font));font-size:var(--gh-title-size);max-width:12ch}
.gallery-home-curated .gh-intro h2{margin-top:20px;font-size:clamp(22px,2.6vw,40px);line-height:1.1;color:var(--gh-muted);max-width:20ch}
.gh-intro{width:min(var(--gh-content-w),100%);margin:0 auto var(--gh-intro-gap)}
.gh-eyebrow,.gh-number,.gh-cta{font-family:var(--gh-number-font,var(--nav-font));text-transform:uppercase;letter-spacing:.17em;font-size:11px;line-height:1.3}
.gh-eyebrow{margin:0 0 24px;color:var(--gh-accent)}
.gh-intro__text{max-width:620px;margin:32px 0 0;color:var(--gh-muted);font-size:clamp(16px,1.45vw,21px);line-height:1.65}
.gh-item__copy{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;min-width:0}
.gh-item__copy .gh-number{color:var(--gh-accent);margin-bottom:26px}
.gh-item__copy h2{font-family:var(--gh-item-heading-font,var(--gh-heading-font,var(--gallery-landing-font,var(--heading-font))));font-size:clamp(40px,5vw,78px);overflow-wrap:anywhere;letter-spacing:var(--gh-item-heading-letter-spacing,var(--gh-heading-letter-spacing,-.035em))}
.gh-item__copy p{max-width:34em;margin:22px 0 0;color:var(--gh-muted);font-size:clamp(15px,1.25vw,19px);line-height:1.62}
.gh-cta{display:inline-flex;align-items:center;gap:11px;margin-top:34px;color:var(--gh-accent);font-family:var(--gh-cta-font,var(--nav-font));font-size:var(--gh-cta-size,11px)}
.gh-cta b{font-size:18px;font-weight:400;transition:transform .25s ease}
a:hover .gh-cta b{transform:translateX(5px)}
.gh-bottom{width:min(1000px,90%);margin:clamp(90px,12vw,180px) auto 0;padding-top:34px;border-top:1px solid color-mix(in srgb,var(--gh-divider) 65%,transparent);text-align:center}
.gh-bottom p{margin:0;font-family:var(--gh-title-font,var(--title-font));font-size:clamp(26px,3.8vw,58px);line-height:1.15}
.gh-bottom cite{display:block;margin-top:22px;color:var(--gh-muted);font:normal 11px/1.3 var(--gh-cta-font,var(--nav-font));letter-spacing:.15em;text-transform:uppercase}

/* Editorial alternating — dark and light */
.gh-editorial{width:min(var(--gh-content-w),100%);margin:0 auto;display:flex;flex-direction:column;gap:0}
.gh-editorial__row{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);gap:clamp(42px,7vw,116px);align-items:center}
.gh-editorial__row.is-reversed{grid-template-columns:minmax(280px,.7fr) minmax(0,1.3fr)}
.gh-editorial__row.is-reversed .gh-editorial__image{order:2}
.gh-editorial__row.is-reversed .gh-item__copy{order:1}
.gh-editorial__image{height:var(--gh-editorial-h);overflow:hidden;background:var(--gh-surface)}
.gh-editorial__row.is-featured .gh-editorial__image{height:min(66vh,calc(var(--gh-editorial-h) + 70px))}
.gh-editorial__row .gh-editorial__image img{transition:transform .8s cubic-bezier(.2,.8,.2,1)}
.gh-editorial__row:hover .gh-editorial__image img{transform:scale(1.018)}
.gh-editorial__row{margin-bottom:var(--gh-item-space)}
.gh-editorial__row:last-child{margin-bottom:0}
.gh--editorial-light .gh-editorial__row{padding-bottom:var(--gh-item-pad);border-bottom:1px solid color-mix(in srgb,var(--gh-divider) 62%,transparent)}
.gh--editorial-light .gh-intro{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr);column-gap:8vw;align-items:end}
.gh--editorial-light .gh-intro .gh-eyebrow,.gh--editorial-light .gh-intro h1,.gh--editorial-light .gh-intro h2{grid-column:1}
.gh--editorial-light .gh-intro__text{grid-column:2;grid-row:1/5;margin:0 0 8px}

/* Hover collection index */
.gh--index-hover{min-height:0}
.gh--index-hover .gh-intro{margin-bottom:clamp(55px,7vw,90px)}
.gh--index-hover .gh-intro h1{font-size:clamp(42px,5.8vw,92px)}
.gh-index{width:min(var(--gh-content-w),100%);margin:0 auto;display:grid;grid-template-columns:minmax(320px,.86fr) minmax(0,1.14fr);gap:clamp(34px,5vw,76px);align-items:start}
.gh-index__list{border-top:1px solid color-mix(in srgb,var(--gh-divider) 75%,transparent)}
.gh-index__item{border-bottom:1px solid color-mix(in srgb,var(--gh-divider) 75%,transparent)}
.gh-index__item summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:52px 1fr auto;gap:18px;align-items:center;padding:var(--gh-index-row-pad) 0;color:var(--gh-muted);transition:color .25s ease,padding-left .25s ease}
.gh-index__item summary::-webkit-details-marker{display:none}
.gh-index__item summary strong{font-family:var(--gh-item-heading-font,var(--gh-heading-font,var(--gallery-landing-font,var(--heading-font))));font-size:clamp(25px,2.4vw,39px);font-weight:400;letter-spacing:var(--gh-item-heading-letter-spacing,var(--gh-heading-letter-spacing,-.035em));color:inherit}
.gh-index__title-link{display:block;min-width:0;color:inherit;text-decoration:none;outline-offset:5px}
.gh-index__title-link:hover,.gh-index__title-link:focus-visible{color:var(--gh-text);text-decoration:none}
.gh-index__item summary>span:last-child{font:300 22px/1 var(--gh-cta-font,var(--nav-font));color:var(--gh-accent)}
.gh-index__item:hover summary,.gh-index__item[open] summary{color:var(--gh-text);padding-left:8px}
.gh-index__stage{position:relative;height:var(--gh-index-h);background:var(--gh-surface);overflow:hidden}
.gh-index__preview{position:absolute;inset:0;opacity:0;transform:scale(.992);transition:opacity .42s ease,transform .55s ease}
.gh-index__preview.is-default{opacity:1;transform:none}
.gh-index__preview-image{position:absolute;inset:0;display:block;overflow:hidden}
.gh-index__preview>div{position:absolute;left:24px;right:24px;bottom:22px;padding:42px 24px 20px;background:linear-gradient(to top,color-mix(in srgb,var(--gh-overlay) 74%,transparent),transparent);color:#fff;display:flex;align-items:flex-end;justify-content:space-between;gap:20px}
.gh-index__preview>div strong{font:400 clamp(23px,2.3vw,38px)/1 var(--gh-item-heading-font,var(--gh-heading-font,var(--gallery-landing-font,var(--heading-font))));letter-spacing:var(--gh-item-heading-letter-spacing,var(--gh-heading-letter-spacing,-.035em))}
.gh-index__preview>div span{max-width:36ch;font-size:13px;line-height:1.45;text-align:right;color:rgba(255,255,255,.78)}
.gh-index__mobile-preview{display:none}

/* Magazine mosaic */
.gh--magazine .gh-intro{display:grid;grid-template-columns:1fr 1fr;column-gap:9vw;align-items:end}
.gh--magazine .gh-intro .gh-eyebrow,.gh--magazine .gh-intro h1,.gh--magazine .gh-intro h2{grid-column:1}
.gh--magazine .gh-intro__text{grid-column:2;grid-row:1/5;margin:0 0 8px}
.gh-magazine{width:min(var(--gh-content-wide),100%);margin:0 auto;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(18px,2vw,30px) clamp(18px,2.4vw,38px)}
.gh-magazine__card{grid-column:span 7;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(220px,.55fr);gap:clamp(22px,2.6vw,40px);align-items:end;padding:0 0 var(--gh-item-pad);margin-bottom:var(--gh-item-space);border-bottom:1px solid color-mix(in srgb,var(--gh-divider) 60%,transparent)}
.gh-magazine__card--2{grid-column:6/span 7;grid-template-columns:minmax(220px,.55fr) minmax(0,1.15fr)}
.gh-magazine__card--2 .gh-magazine__media{order:2}.gh-magazine__card--2 .gh-item__copy{order:1}
.gh-magazine__card--3{grid-column:1/span 12;grid-template-columns:minmax(0,1.5fr) minmax(300px,.5fr)}
.gh-magazine__card--4{grid-column:3/span 9}
.gh-magazine__card.is-featured{grid-column:1/span 12}
.gh-magazine__media{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:10px;height:var(--gh-magazine-h)}
.gh-magazine__image{overflow:hidden;background:var(--gh-surface)}
.gh-magazine__image--1{grid-column:1/3;grid-row:1/3}
.gh-magazine__image--2{grid-column:2;grid-row:2;z-index:2;margin:-18% -8% 7% 12%;border:8px solid var(--gh-bg);box-shadow:0 18px 45px rgba(0,0,0,.12)}
.gh-magazine__image--3{grid-column:1;grid-row:1;z-index:3;width:48%;height:54%;align-self:end;margin:0 0 -8% -5%;border:8px solid var(--gh-bg);box-shadow:0 18px 45px rgba(0,0,0,.12)}
.gh-magazine__card .gh-item__copy h2{font-size:clamp(34px,4vw,62px)}

/* Cinematic full-bleed bands */
.gallery-home-curated.gh--cinematic{padding-left:0;padding-right:0;padding-bottom:0}
.gh--cinematic .gh-intro{padding:0 clamp(20px,5vw,82px)}
.gh-cinematic{width:100%}
.gh-cinematic__band{position:relative;display:block;width:100%;height:var(--gh-band-height,var(--gh-band-standard));overflow:hidden;background:var(--gh-surface)}
.gh-cinematic__image{position:absolute;inset:0}
.gh-cinematic__image img{transition:transform 1.25s cubic-bezier(.2,.75,.2,1)}
.gh-cinematic__band:hover .gh-cinematic__image img{transform:scale(1.018)}
.gh-cinematic__overlay{position:absolute;inset:0;background:linear-gradient(90deg,color-mix(in srgb,var(--gh-overlay) 70%,transparent) 0%,color-mix(in srgb,var(--gh-overlay) 28%,transparent) 50%,color-mix(in srgb,var(--gh-overlay) 8%,transparent) 100%)}
.gh-cinematic__band:nth-child(even) .gh-cinematic__overlay{background:linear-gradient(270deg,color-mix(in srgb,var(--gh-overlay) 70%,transparent) 0%,color-mix(in srgb,var(--gh-overlay) 28%,transparent) 50%,color-mix(in srgb,var(--gh-overlay) 8%,transparent) 100%)}
.gh-cinematic__band .gh-item__copy{position:absolute;z-index:2;left:clamp(28px,7vw,120px);top:50%;transform:translateY(-50%);width:min(520px,42vw);color:#fff}
.gh-cinematic__band:nth-child(even) .gh-item__copy{left:auto;right:clamp(28px,7vw,120px);align-items:flex-end;text-align:right}
.gh-cinematic__band .gh-item__copy h2{color:#fff;font-size:clamp(48px,6vw,96px);text-shadow:0 2px 24px rgba(0,0,0,.22)}
.gh-cinematic__band .gh-item__copy p{color:rgba(255,255,255,.78)}
.gh-cinematic__band .gh-number,.gh-cinematic__band .gh-cta{color:#fff}

/* Curated intro + collection cards */
.gh-hybrid__hero{width:min(var(--gh-content-wide),100%);margin:0 auto clamp(54px,7vw,96px);display:grid;grid-template-columns:minmax(320px,.78fr) minmax(0,1.22fr);gap:clamp(34px,5vw,76px);align-items:center}
.gh-hybrid__hero .gh-intro{margin:0;width:100%}
.gh-hybrid__mosaic{display:grid;grid-template-columns:1.1fr 1.1fr .72fr .72fr;grid-template-rows:repeat(3,1fr);gap:10px;height:var(--gh-hybrid-mosaic-h)}
.gh-hybrid__mosaic-image{overflow:hidden;background:var(--gh-surface)}
.gh-hybrid__mosaic-image--1{grid-column:1/3;grid-row:1/4}
.gh-hybrid__mosaic-image--2{grid-column:3/5;grid-row:1}
.gh-hybrid__mosaic-image--3{grid-column:3;grid-row:2}
.gh-hybrid__mosaic-image--4{grid-column:4;grid-row:2}
.gh-hybrid__mosaic-image--5{grid-column:3;grid-row:3}
.gh-hybrid__mosaic-image--6{grid-column:4;grid-row:3}
.gh-hybrid__section-head{width:min(var(--gh-content-wide),100%);margin:0 auto 34px;padding-bottom:20px;border-bottom:1px solid color-mix(in srgb,var(--gh-divider) 60%,transparent);display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:end}
.gh-hybrid__section-head h2{font-size:clamp(48px,6vw,92px)}
.gh-hybrid__section-head .gh-eyebrow{grid-column:1;margin-bottom:8px}
.gh-hybrid__section-head p:not(.gh-eyebrow){grid-column:2;grid-row:1/3;color:var(--gh-muted);max-width:520px;justify-self:end;line-height:1.6}
.gh-hybrid__cards{width:min(var(--gh-content-wide),100%);margin:0 auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,2.4vw,36px)}
.gh-hybrid__card{min-width:0}
.gh-hybrid__card.is-featured{grid-column:span 2}
.gh-hybrid__card-image{height:var(--gh-hybrid-card-h);overflow:hidden;background:var(--gh-surface)}
.gh-hybrid__card.is-featured .gh-hybrid__card-image{height:min(58vh,calc(var(--gh-hybrid-card-h) - 80px))}
.gh-hybrid__card .gh-item__copy{padding:20px 0 var(--gh-item-pad)}
.gh-hybrid__card .gh-item__copy h2{font-size:clamp(30px,3.1vw,50px)}
.gh-hybrid__card .gh-item__copy p{font-size:14px;margin-top:14px}
.gh-hybrid__card .gh-cta{margin-top:20px}

/* CSS-only curated-home entrance options. Static is the default and safest choice. */
.gallery-home-curated:not(.gh-anim--static) .gh-motion{animation-duration:.82s;animation-timing-function:cubic-bezier(.2,.75,.2,1);animation-fill-mode:both;animation-delay:calc(var(--gh-order,0) * 75ms)}
.gh-anim--soft-cascade .gh-motion{animation-name:gh-soft-cascade}
.gh-anim--focus-reveal .gh-motion{animation-name:gh-focus-reveal}
.gh-anim--directional .gh-motion{animation-name:gh-directional}
.gh-anim--mosaic-wave .gh-motion{animation-name:gh-mosaic-wave}
.gh-anim--print-reveal .gh-motion{animation-name:gh-print-reveal}
.gh-anim--editorial-rise .gh-motion{animation-name:gh-editorial-rise}
@keyframes gh-soft-cascade{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes gh-focus-reveal{from{opacity:.05;filter:blur(8px);transform:scale(.988)}to{opacity:1;filter:none;transform:none}}
@keyframes gh-directional{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
@keyframes gh-mosaic-wave{from{opacity:0;transform:translate3d(-12px,18px,0) scale(.988)}to{opacity:1;transform:none}}
@keyframes gh-print-reveal{from{opacity:0;clip-path:inset(0 100% 0 0)}to{opacity:1;clip-path:inset(0)}}
@keyframes gh-editorial-rise{from{opacity:0;transform:translateY(34px) scale(.994)}to{opacity:1;transform:none}}
.gh-preview-badge{position:fixed;z-index:9999;right:18px;bottom:18px;padding:10px 14px;border-radius:999px;background:#111;color:#fff;font:600 11px/1.2 ui-sans-serif,system-ui,sans-serif;letter-spacing:.05em;box-shadow:0 8px 30px rgba(0,0,0,.22)}
.gh-mobile-card-fallback{display:none}

@media (max-width:900px){
  .gallery-home-curated{--gh-band-tight:clamp(330px,46vh,500px);--gh-band-standard:clamp(360px,52vh,560px);--gh-band-spacious:clamp(390px,58vh,620px);padding:46px 18px 64px}
  .gallery-home-curated.gh-mobile--cards{display:none!important}
  .gallery-home-curated.gh-mobile--cards + .gh-mobile-card-fallback{display:block;padding:30px var(--pad) 60px}
  .gh-intro{margin-bottom:48px}
  .gallery-home-curated .gh-intro h1{font-size:clamp(38px,11vw,62px)}
  .gh-intro__text{font-size:16px;margin-top:24px}
  .gh-item__copy h2{font-size:clamp(36px,11vw,56px)}
  .gh-editorial{gap:0}
  .gh-editorial__row,.gh-editorial__row.is-reversed{display:flex;flex-direction:column;gap:26px;align-items:stretch}
  .gh-editorial__row.is-reversed .gh-editorial__image,.gh-editorial__row.is-reversed .gh-item__copy{order:initial}
  .gh-editorial__image,.gh-editorial__row.is-featured .gh-editorial__image{height:auto;aspect-ratio:1.35/1}
  .gh--editorial-light .gh-intro,.gh--magazine .gh-intro{display:block}
  .gh--editorial-light .gh-intro__text,.gh--magazine .gh-intro__text{margin-top:24px}
  .gh-index{display:block}
  .gh-index__stage{display:none}
  .gh-index__item summary{grid-template-columns:42px 1fr auto;padding:20px 0}
  .gh-index__mobile-preview{display:none;padding:0 0 26px 42px}
  .gh-index__item[open] .gh-index__mobile-preview{display:block}
  .gh-index__mobile-image{display:block;margin-bottom:16px;overflow:hidden}
  .gh-index__mobile-preview img{height:auto;aspect-ratio:1.3/1;object-fit:cover}
  .gh-index__mobile-preview p{color:var(--gh-muted);font-size:14px;line-height:1.55;margin:0 0 14px}
  .gh-index__mobile-preview .gh-cta{margin:0}
  .gh-magazine{display:flex;flex-direction:column;gap:0}
  .gh-magazine__card,.gh-magazine__card--2,.gh-magazine__card--3,.gh-magazine__card--4,.gh-magazine__card.is-featured{display:flex;flex-direction:column;gap:20px;padding-bottom:var(--gh-item-pad);margin-bottom:var(--gh-item-space)}
  .gh-magazine__card--2 .gh-magazine__media,.gh-magazine__card--2 .gh-item__copy{order:initial}
  .gh-magazine__media{width:100%;height:auto;aspect-ratio:1.25/1}
  .gallery-home-curated.gh--cinematic{padding-top:54px}
  .gh--cinematic .gh-intro{padding:0 18px}
  .gh-cinematic__band{height:var(--gh-band-height,var(--gh-band-standard));min-height:0;max-height:none}
  .gh-cinematic__band .gh-item__copy,.gh-cinematic__band:nth-child(even) .gh-item__copy{left:24px;right:24px;top:auto;bottom:30px;width:auto;transform:none;align-items:flex-start;text-align:left}
  .gh-cinematic__band .gh-item__copy h2{font-size:clamp(42px,13vw,66px)}
  .gh-cinematic__band .gh-item__copy p{max-width:28em}
  .gh-cinematic__overlay,.gh-cinematic__band:nth-child(even) .gh-cinematic__overlay{background:linear-gradient(to top,color-mix(in srgb,var(--gh-overlay) 78%,transparent) 0%,color-mix(in srgb,var(--gh-overlay) 20%,transparent) 62%,transparent 100%)}
  .gh-hybrid__hero{display:flex;flex-direction:column;gap:34px;margin-bottom:58px}
  .gh-hybrid__mosaic{width:100%;height:auto;aspect-ratio:1.15/1}
  .gh-hybrid__section-head{display:block;margin-bottom:34px}
  .gh-hybrid__section-head p:not(.gh-eyebrow){margin-top:18px}
  .gh-hybrid__cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
  .gh-hybrid__card.is-featured{grid-column:span 2}
  .gh-hybrid__card-image{height:auto;aspect-ratio:.88/1}
  .gh-hybrid__card.is-featured .gh-hybrid__card-image{height:auto;aspect-ratio:1.5/1}
  .gh-hybrid__card .gh-item__copy{padding:14px 0 var(--gh-item-pad)}
  .gh-hybrid__card .gh-item__copy h2{font-size:clamp(26px,8vw,40px)}
  .gh-hybrid__card .gh-item__copy p{display:none}
  .gh-hybrid__card .gh-number{margin-bottom:12px}
  .gh-hybrid__card .gh-cta{font-size:calc(var(--gh-cta-size,11px) * .82);margin-top:14px}
}
@media (max-width:560px){
  .gh-hybrid__cards{grid-template-columns:1fr}
  .gh-hybrid__card.is-featured{grid-column:auto}
  .gh-hybrid__card-image,.gh-hybrid__card.is-featured .gh-hybrid__card-image{aspect-ratio:1.15/1}
}
@media (prefers-reduced-motion:reduce){
  .gallery-home-curated .gh-motion{animation:none!important;opacity:1!important;transform:none!important;filter:none!important;clip-path:none!important}
  .gallery-home-curated,.gallery-home-curated img{transition:none!important}
}


/* v1.0.176 — renderer-computed desktop scale baseline (superseded by v1.0.177 range expansion).
   The renderer injects fully computed clamp() values instead of relying on CSS
   multiplication. Mobile keeps its purpose-built safe proportions. */
@media (min-width:901px){
  .gallery-home-curated{
    --gh-pad-y:var(--gh-user-pad-y,clamp(38px,5vw,72px));
    --gh-intro-gap:var(--gh-user-intro-gap,clamp(38px,5vw,74px));
    --gh-title-size:var(--gh-user-title-size,clamp(42px,5.2vw,80px));
    --gh-editorial-h:var(--gh-user-editorial-h,clamp(340px,52vh,560px));
    --gh-index-h:var(--gh-user-index-h,clamp(340px,52vh,560px));
    --gh-magazine-h:var(--gh-user-magazine-h,clamp(320px,48vh,520px));
    --gh-hybrid-mosaic-h:var(--gh-user-hybrid-mosaic-h,clamp(320px,48vh,520px));
    --gh-hybrid-card-h:var(--gh-user-hybrid-card-h,clamp(340px,52vh,560px));
    --gh-band-tight:var(--gh-user-band-tight,clamp(380px,54vh,590px));
    --gh-band-standard:var(--gh-user-band-standard,clamp(420px,64vh,680px));
    --gh-band-spacious:var(--gh-user-band-spacious,clamp(450px,69vh,730px));
  }
}


/* v1.0.177 — true 25–130% curated gallery scale.
   Desktop geometry follows the user-selected percentage, while major type uses
   a readability-safe curve. Mobile keeps its separate purpose-built geometry. */
@media (min-width:901px){
  .gallery-home-curated .gh-spacing--tight{
    --gh-item-space:var(--gh-user-item-space-tight,clamp(34px,4vw,56px));
    --gh-item-pad:var(--gh-user-item-pad-tight,clamp(26px,3vw,42px));
    --gh-index-row-pad:var(--gh-user-index-row-tight,16px)
  }
  .gallery-home-curated .gh-spacing--standard{
    --gh-item-space:var(--gh-user-item-space-standard,clamp(52px,6vw,86px));
    --gh-item-pad:var(--gh-user-item-pad-standard,clamp(38px,4vw,60px));
    --gh-index-row-pad:var(--gh-user-index-row-standard,21px)
  }
  .gallery-home-curated .gh-spacing--spacious{
    --gh-item-space:var(--gh-user-item-space-spacious,clamp(74px,8vw,118px));
    --gh-item-pad:var(--gh-user-item-pad-spacious,clamp(52px,5.5vw,82px));
    --gh-index-row-pad:var(--gh-user-index-row-spacious,28px)
  }
  .gallery-home-curated .gh-intro h2{margin-top:var(--gh-user-intro-subtitle-gap,20px)}

  .gallery-home-curated .gh-intro h2{font-size:var(--gh-user-intro-subtitle-size,clamp(22px,2.6vw,40px))}
  .gallery-home-curated.gh--index-hover .gh-intro h1{font-size:var(--gh-user-index-intro-title-size,clamp(42px,5.8vw,92px))}
  .gallery-home-curated .gh-bottom p{font-size:var(--gh-user-bottom-title-size,clamp(26px,3.8vw,58px))}
  .gallery-home-curated .gh-index__preview>div{left:var(--gh-user-index-preview-inset,24px);right:var(--gh-user-index-preview-inset,24px);bottom:var(--gh-user-index-preview-bottom,22px);padding:var(--gh-user-index-preview-pad-top,42px) var(--gh-user-index-preview-pad-x,24px) var(--gh-user-index-preview-pad-bottom,20px)}
  .gallery-home-curated .gh-index__preview>div strong{font-size:var(--gh-user-index-preview-title-size,clamp(23px,2.3vw,38px))}
  .gallery-home-curated .gh-editorial__row.is-featured .gh-editorial__image{height:min(var(--gh-user-featured-editorial-max,66vh),calc(var(--gh-editorial-h) + var(--gh-user-featured-editorial-extra,70px)))}
  .gallery-home-curated .gh-hybrid__card.is-featured .gh-hybrid__card-image{height:min(var(--gh-user-featured-hybrid-max,58vh),calc(var(--gh-hybrid-card-h) - var(--gh-user-featured-hybrid-reduction,80px)))}
  .gallery-home-curated .gh-hybrid__card .gh-item__copy p{margin-top:var(--gh-user-hybrid-card-p-gap,14px)}
  .gallery-home-curated .gh-hybrid__card .gh-cta{margin-top:var(--gh-user-hybrid-cta-gap,20px)}
  .gallery-home-curated .gh-eyebrow{margin-bottom:var(--gh-user-eyebrow-gap,24px)}
  .gallery-home-curated .gh-intro__text{margin-top:var(--gh-user-intro-text-gap,32px)}
  .gallery-home-curated .gh-item__copy .gh-number{margin-bottom:var(--gh-user-copy-number-gap,26px)}
  .gallery-home-curated .gh-item__copy h2{font-size:var(--gh-user-item-title-size,clamp(40px,5vw,78px))}
  .gallery-home-curated .gh-item__copy p{margin-top:var(--gh-user-copy-paragraph-gap,22px);font-size:var(--gh-user-body-size,clamp(15px,1.25vw,19px))}
  .gallery-home-curated .gh-cta{margin-top:var(--gh-user-cta-gap,34px)}
  .gallery-home-curated .gh-bottom{margin-top:var(--gh-user-bottom-margin,clamp(90px,12vw,180px));padding-top:var(--gh-user-bottom-pad,34px)}
  .gallery-home-curated .gh-editorial__row{gap:var(--gh-user-row-gap,clamp(42px,7vw,116px))}
  .gallery-home-curated.gh--index-hover .gh-intro{margin-bottom:var(--gh-user-index-intro-gap,clamp(55px,7vw,90px))}
  .gallery-home-curated .gh-index{gap:var(--gh-user-index-gap,clamp(34px,5vw,76px))}
  .gallery-home-curated .gh-index__item summary strong{font-size:var(--gh-user-index-title-size,clamp(25px,2.4vw,39px))}
  .gallery-home-curated .gh-magazine{gap:var(--gh-user-card-gap,clamp(18px,2.4vw,36px))}
  .gallery-home-curated .gh-magazine__card{gap:var(--gh-user-card-gap,clamp(18px,2.4vw,36px))}
  .gallery-home-curated .gh-magazine__card .gh-item__copy h2{font-size:var(--gh-user-magazine-title-size,clamp(34px,4vw,62px))}
  .gallery-home-curated .gh-cinematic__band .gh-item__copy h2{font-size:var(--gh-user-cinematic-title-size,clamp(48px,6vw,96px))}
  .gallery-home-curated .gh-hybrid__hero{gap:var(--gh-user-index-gap,clamp(34px,5vw,76px));margin-bottom:var(--gh-user-hybrid-hero-bottom,clamp(54px,7vw,96px))}
  .gallery-home-curated .gh-hybrid__section-head{margin-bottom:var(--gh-user-hybrid-section-bottom,34px);padding-bottom:var(--gh-user-hybrid-section-pad,20px);gap:var(--gh-user-card-gap,clamp(18px,2.4vw,36px))}
  .gallery-home-curated .gh-hybrid__section-head h2{font-size:var(--gh-user-hybrid-section-title-size,clamp(48px,6vw,92px))}
  .gallery-home-curated .gh-hybrid__cards{gap:var(--gh-user-card-gap,clamp(18px,2.4vw,36px))}
  .gallery-home-curated .gh-hybrid__card .gh-item__copy{padding-top:var(--gh-user-hybrid-copy-pad,20px)}
  .gallery-home-curated .gh-hybrid__card .gh-item__copy h2{font-size:var(--gh-user-hybrid-card-title-size,clamp(30px,3.1vw,50px))}
}

/* v1.0.181 — robust curated-home focal positioning. The renderer places the
   saved point into CSS variables on every styled-home image. !important keeps
   generic/legacy image rules from silently re-centering the crop, and the hover
   zoom now grows from the same focal point. */
.gallery-home-curated img{
  object-position:var(--gh-focal-x,50%) var(--gh-focal-y,50%) !important;
  transform-origin:var(--gh-focal-x,50%) var(--gh-focal-y,50%);
}


/* v1.0.180 — per-gallery Gallery Experience themes now flow into each
   curated-home gallery presentation. Shared intro/section copy still uses the
   Gallery Homepage Design palette; Normal / Site Default galleries inherit it. */
.gallery-home-curated .gh-theme--gallery{color:var(--gh-text)}
.gh-editorial__row.gh-theme--gallery{background:var(--gh-bg);padding:clamp(12px,1.4vw,22px)}
.gh-index__item.gh-theme--gallery{background:var(--gh-bg);padding-inline:clamp(8px,1vw,14px)}
.gh-index__preview.gh-theme--gallery{background:var(--gh-bg)}
.gh-index__preview.gh-theme--gallery>div{color:var(--gh-text)}
.gh-index__preview.gh-theme--gallery>div span{color:color-mix(in srgb,var(--gh-text) 78%,transparent)}
.gh-magazine__card.gh-theme--gallery{background:var(--gh-bg);padding-top:clamp(10px,1vw,16px);padding-left:clamp(10px,1vw,16px);padding-right:clamp(10px,1vw,16px)}
.gh-cinematic__band.gh-theme--gallery{background:var(--gh-bg)}
.gh-cinematic__band.gh-theme--gallery .gh-item__copy,
.gh-cinematic__band.gh-theme--gallery .gh-item__copy h2,
.gh-cinematic__band.gh-theme--gallery .gh-number,
.gh-cinematic__band.gh-theme--gallery .gh-cta{color:var(--gh-text)}
.gh-cinematic__band.gh-theme--gallery .gh-item__copy p{color:color-mix(in srgb,var(--gh-text) 78%,transparent)}
.gh-cinematic__band.gh-theme--gallery .gh-item__copy h2{text-shadow:0 2px 24px color-mix(in srgb,var(--gh-overlay) 30%,transparent)}
.gh-hybrid__card.gh-theme--gallery{background:var(--gh-bg)}
.gh-hybrid__card.gh-theme--gallery .gh-item__copy{padding-left:clamp(12px,1.2vw,18px);padding-right:clamp(12px,1.2vw,18px)}

@media (max-width:900px){
  .gh-editorial__row.gh-theme--gallery{padding:14px}
  .gh-index__item.gh-theme--gallery{padding-inline:10px}
  .gh-magazine__card.gh-theme--gallery{padding:12px}
  .gh-hybrid__card.gh-theme--gallery .gh-item__copy{padding-left:12px;padding-right:12px}
}

/* v1.0.189 — make the saved customer-facing photograph-size control real.
   gridDensity was already stored and rendered as data-grid-density, but the
   normal desktop public photo-wall layouts did not use it. Keep phones on
   their separate mobile controls. */
@media (min-width: 680px) {
  body[data-grid-density="1"]  { --bp-customer-gallery-columns: 1; --bp-customer-compact-columns: 2; }
  body[data-grid-density="2"]  { --bp-customer-gallery-columns: 2; --bp-customer-compact-columns: 2; }
  body[data-grid-density="3"]  { --bp-customer-gallery-columns: 2; --bp-customer-compact-columns: 3; }
  body[data-grid-density="4"]  { --bp-customer-gallery-columns: 2; --bp-customer-compact-columns: 3; }
  body[data-grid-density="5"]  { --bp-customer-gallery-columns: 3; --bp-customer-compact-columns: 4; }
  body[data-grid-density="6"]  { --bp-customer-gallery-columns: 3; --bp-customer-compact-columns: 5; }
  body[data-grid-density="7"]  { --bp-customer-gallery-columns: 3; --bp-customer-compact-columns: 5; }
  body[data-grid-density="8"]  { --bp-customer-gallery-columns: 4; --bp-customer-compact-columns: 6; }
  body[data-grid-density="9"]  { --bp-customer-gallery-columns: 4; --bp-customer-compact-columns: 6; }
  body[data-grid-density="10"] { --bp-customer-gallery-columns: 5; --bp-customer-compact-columns: 7; }
  body[data-grid-density="11"] { --bp-customer-gallery-columns: 6; --bp-customer-compact-columns: 8; }
  body[data-grid-density="12"] { --bp-customer-gallery-columns: 7; --bp-customer-compact-columns: 9; }

  /* Natural/balanced masonry uses CSS columns. Ordered masonry uses site.js,
     which reads the same data-grid-density value before building its columns. */
  body.portfolio-layout--masonry.masonry-order--balanced .photo-grid {
    column-count: var(--bp-customer-gallery-columns, 3) !important;
    column-width: auto !important;
  }

  /* Contained Grid follows the same size scale as Masonry. */
  body.portfolio-layout--grid .photo-grid {
    grid-template-columns: repeat(var(--bp-customer-gallery-columns, 3), minmax(0, 1fr)) !important;
  }

  /* Compact Wall keeps its established five-column midpoint at density 6. */
  body.portfolio-layout--compact .photo-grid {
    grid-template-columns: repeat(var(--bp-customer-compact-columns, 5), minmax(0, 1fr)) !important;
  }
}

/* v1.0.191 — full-fidelity photographs on the Gallery Homepage.
   Gallery Experience themes may style the surrounding room, but they must not
   alter the photograph itself. Keep the source image at full opacity with no
   browser filter/blending. Remove the design gradients that sat over preview
   photographs so color, brightness, contrast and saturation remain untouched. */
.gallery-home-curated img{
  -webkit-filter:none !important;
  filter:none !important;
  opacity:1 !important;
  mix-blend-mode:normal !important;
}
.gallery-home-curated .gh-index__preview>div{
  background:transparent !important;
}
.gallery-home-curated .gh-cinematic__overlay{
  display:none !important;
  background:none !important;
}



/* v1.0.199 — fully editable site/header/footer colors with independent social icon colors. */
.site-header.site-header--custom-colors {
  background: var(--header-background-color, var(--paper)) !important;
  color: var(--header-primary-color, var(--ink));
  border-bottom-color: var(--header-divider-color, var(--line));
}
.site-header.site-header--custom-colors .brand__text strong,
.site-header.site-header--custom-colors > .mobile-header-brand,
.site-header.site-header--custom-colors > .mobile-header-brand .mobile-header-brand__text {
  color: var(--header-primary-color, var(--ink)) !important;
}
.site-header.site-header--custom-colors .brand__text small,
.site-header.site-header--custom-colors .site-nav a {
  color: var(--header-secondary-color, var(--muted));
}
.site-header.site-header--custom-colors .site-nav a:hover,
.site-header.site-header--custom-colors .site-nav a:focus-visible {
  color: var(--header-primary-color, var(--ink));
}
.site-header.site-header--custom-colors .theme-toggle,
.site-header.site-header--custom-colors .share-trigger--header {
  color: var(--header-action-color, var(--ink));
  border-color: var(--header-divider-color, var(--line));
}
.site-header.site-header--custom-colors .theme-toggle:hover,
.site-header.site-header--custom-colors .theme-toggle:focus-visible,
.site-header.site-header--custom-colors .share-trigger--header:hover,
.site-header.site-header--custom-colors .share-trigger--header:focus-visible {
  color: var(--header-action-hover-color, var(--header-primary-color, var(--ink)));
  border-color: var(--header-action-hover-color, var(--header-primary-color, var(--ink)));
}
.site-header.site-header--custom-colors .nav-toggle span {
  background: var(--header-action-color, var(--ink));
}
.site-header.site-header--custom-colors .social-links a,
.site-header.site-header--custom-colors .social-links--header-curated a,
.site-header.site-header--custom-colors .social-links--sidebar-curated a {
  color: var(--header-social-color, var(--header-primary-color, var(--ink))) !important;
}
.site-header.site-header--custom-colors .social-links a:hover,
.site-header.site-header--custom-colors .social-links a:focus-visible,
.site-header.site-header--custom-colors .social-links--header-curated a:hover,
.site-header.site-header--custom-colors .social-links--header-curated a:focus-visible,
.site-header.site-header--custom-colors .social-links--sidebar-curated a:hover,
.site-header.site-header--custom-colors .social-links--sidebar-curated a:focus-visible {
  color: var(--header-social-hover-color, var(--header-primary-color, var(--ink))) !important;
}
.site-header.site-header--custom-colors .social-cluster__label {
  color: var(--header-secondary-color, var(--muted));
}
.site-header.site-header--custom-colors .social-cluster__rule {
  border-top-color: var(--header-divider-color, var(--line));
}
.site-header.site-header--custom-colors.site-header--sidebar {
  --sidebar-background: var(--header-background-color, var(--paper)) !important;
  --sidebar-ink: var(--header-primary-color, var(--ink)) !important;
  --sidebar-muted: var(--header-secondary-color, var(--muted)) !important;
  --sidebar-line: var(--header-divider-color, var(--line)) !important;
  background: var(--header-background-color, var(--paper)) !important;
  border-color: var(--header-divider-color, var(--line)) !important;
}
@media (max-width: 900px) {
  .site-header.site-header--custom-colors .site-nav,
  .site-header.site-header--custom-colors.site-header--sidebar .site-nav {
    background: var(--header-background-color, var(--paper)) !important;
  }
  .site-header.site-header--custom-colors .site-nav a,
  .site-header.site-header--custom-colors.site-header--sidebar .site-nav a {
    color: var(--header-primary-color, var(--ink)) !important;
  }
}

body .site-footer--editable.site-footer--custom-colors {
  background: var(--footer-background-color, #f4f2ed) !important;
  color: var(--footer-text-color, #6b6861) !important;
  border-top-color: var(--footer-divider-color, var(--line)) !important;
}
body .site-footer--editable.site-footer--custom-colors .site-footer__title,
body .site-footer--editable.site-footer--custom-colors strong {
  color: var(--footer-title-color, #171715) !important;
}
body .site-footer--editable.site-footer--custom-colors a,
body .site-footer--editable.site-footer--custom-colors small,
body .site-footer--editable.site-footer--custom-colors .site-footer__text {
  color: var(--footer-text-color, #6b6861) !important;
}
body .site-footer--editable.site-footer--custom-colors .social-links--footer a {
  color: var(--footer-social-color, var(--footer-text-color, #6b6861)) !important;
}
body .site-footer--editable.site-footer--custom-colors .social-links--footer a:hover,
body .site-footer--editable.site-footer--custom-colors .social-links--footer a:focus-visible {
  color: var(--footer-social-hover-color, var(--footer-title-color, #171715)) !important;
}
body .site-footer--editable.site-footer--custom-colors .share-trigger--footer {
  color: var(--footer-action-color, var(--footer-text-color, #6b6861)) !important;
  border-color: var(--footer-divider-color, var(--line)) !important;
}
body .site-footer--editable.site-footer--custom-colors .share-trigger--footer:hover,
body .site-footer--editable.site-footer--custom-colors .share-trigger--footer:focus-visible {
  color: var(--footer-action-hover-color, var(--footer-title-color, #171715)) !important;
  border-color: var(--footer-action-hover-color, var(--footer-title-color, #171715)) !important;
}

.site-header.site-header--custom-colors .social-icon--custom,
body .site-footer--editable.site-footer--custom-colors .social-icon--custom {
  position: relative;
}
.site-header.site-header--custom-colors .social-icon--custom img,
body .site-footer--editable.site-footer--custom-colors .social-icon--custom img {
  opacity: 0 !important;
  filter: none !important;
}
.site-header.site-header--custom-colors .social-icon--custom::before,
body .site-footer--editable.site-footer--custom-colors .social-icon--custom::before {
  content: "";
  position: absolute;
  inset: 0;
  background: currentColor;
  -webkit-mask-image: var(--social-custom-icon);
  mask-image: var(--social-custom-icon);
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  mask-size: contain;
}


/* v1.0.207 — compact editorial gallery-page composition.
   The clicked-in gallery now uses a shallow header with the return link close
   to the outer edge, an offset COLLECTION label, a large title, and the first
   photographs immediately below. Per-gallery CSS variables control all visible
   header text sizes, caption scale, and how much viewport width the art may use. */
body.gallery-page .gallery-hero {
  width: 100%;
  max-width: none;
  margin: 0;
  padding: clamp(16px, 1.8vw, 28px) clamp(18px, 2.2vw, 42px) clamp(12px, 1.5vw, 22px);
  border-bottom: 1px solid var(--line);
}
body.gallery-page .gallery-hero .back-link {
  display: inline-block;
  margin: 0 0 clamp(8px, 1vw, 14px);
  font-size: calc(11px * var(--gallery-page-return-scale, 1));
  line-height: 1.2;
}
body.gallery-page .gallery-hero__heading {
  display: grid;
  grid-template-columns: clamp(110px, 16vw, 285px) minmax(0, 1fr) auto;
  gap: clamp(12px, 2vw, 34px);
  align-items: start;
}
body.gallery-page .gallery-hero__eyebrow {
  margin: clamp(8px, 1vw, 16px) 0 0;
  font-size: calc(10px * var(--gallery-page-eyebrow-scale, 1));
  line-height: 1.25;
}
body.gallery-page .gallery-hero__title-wrap { min-width: 0; }
body.gallery-page .gallery-hero h1 {
  max-width: none;
  margin: 0;
  line-height: .82;
  text-transform: uppercase;
}
body.gallery-page .gallery-hero__actions {
  display: flex;
  justify-content: flex-end;
  align-items: flex-start;
  padding-top: clamp(4px, .7vw, 10px);
}
body.gallery-page .gallery-hero__heading .share-trigger { margin: 0; }
body.gallery-page .section--gallery {
  width: min(var(--gallery-photo-area-width, 94%), 2000px);
  max-width: none !important;
  margin-left: auto;
  margin-right: auto;
  padding-left: 0;
  padding-right: 0;
  padding-top: clamp(12px, 1.7vw, 26px);
}
body.gallery-page .photo-card__caption {
  font-size: calc(12px * var(--gallery-page-caption-scale, 1));
}
/* v1.0.205 theme spacing still controls the relative tight/balanced/spacious
   rhythm, but it no longer recreates a tall empty hero above the photographs. */
body.gallery-experience--themed .gallery-hero {
  padding-top: clamp(16px, 1.8vw, 28px);
  padding-bottom: clamp(12px, 1.5vw, 22px);
}
body.gallery-experience--themed .gallery-hero .back-link {
  margin-bottom: clamp(8px, 1vw, 14px);
}
body.gallery-theme-spacing--intimate .section--gallery { padding-top: clamp(8px, 1.2vw, 18px); }
body.gallery-theme-spacing--balanced .section--gallery { padding-top: clamp(12px, 1.7vw, 26px); }
body.gallery-theme-spacing--spacious .section--gallery { padding-top: clamp(20px, 2.5vw, 38px); }
@media (max-width: 760px) {
  body.gallery-page .gallery-hero { padding: 16px 18px 14px; }
  body.gallery-page .gallery-hero .back-link { margin-bottom: 14px; }
  body.gallery-page .gallery-hero__heading {
    grid-template-columns: 1fr auto;
    gap: 7px 14px;
  }
  body.gallery-page .gallery-hero__eyebrow {
    grid-column: 1 / -1;
    margin: 0;
  }
  body.gallery-page .gallery-hero__title-wrap { grid-column: 1; }
  body.gallery-page .gallery-hero__actions { grid-column: 2; padding-top: 4px; }
  body.gallery-page .gallery-hero h1 { line-height: .88; }
  body.gallery-page .section--gallery {
    width: calc(100% - 28px);
    padding-top: 14px;
  }
}


/* v1.0.208 — match the supplied gallery-title composition exactly on desktop.
   COLLECTION belongs to the title, not to the page edge: it is now immediately
   beside the large gallery name while the return link remains independently
   anchored at the far-left edge. */
body.gallery-page .gallery-hero__heading {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: flex-start;
  gap: 0;
}
body.gallery-page .gallery-hero__title-cluster {
  display: inline-flex;
  align-items: flex-start;
  justify-content: center;
  gap: clamp(10px, 1vw, 18px);
  min-width: 0;
  max-width: calc(100% - 120px);
}
body.gallery-page .gallery-hero__title-cluster .gallery-hero__eyebrow {
  flex: 0 0 auto;
  margin: clamp(9px, 1.05vw, 17px) 0 0;
  white-space: nowrap;
}
body.gallery-page .gallery-hero__title-wrap {
  flex: 0 1 auto;
  min-width: 0;
}
body.gallery-page .gallery-hero__actions {
  position: absolute;
  right: 0;
  top: clamp(4px, .7vw, 10px);
  padding-top: 0;
}
@media (max-width: 760px) {
  body.gallery-page .gallery-hero__heading {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px 12px;
  }
  body.gallery-page .gallery-hero__title-cluster {
    display: block;
    grid-column: 1;
    max-width: none;
  }
  body.gallery-page .gallery-hero__title-cluster .gallery-hero__eyebrow {
    margin: 0 0 5px;
  }
  body.gallery-page .gallery-hero__actions {
    position: static;
    grid-column: 2;
    grid-row: 1;
    padding-top: 4px;
  }
}

/* v1.0.210 — stabilize the real top-bar header on mobile browsers.
   The desktop sticky bar keeps its translucent blur. On phones, remove the
   backdrop-filter compositing path that can briefly drop a sticky header while
   the browser chrome/visual viewport is settling after a very small touch
   scroll. Keep the header in normal sticky flow so the page never needs a
   compensating spacer and the full-screen mobile navigation remains viewport-
   fixed. */
@media (max-width: 900px) {
  .site-header.site-header--sticky:not(.site-header--sidebar) {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 100;
    flex: 0 0 auto;
    align-self: stretch;
    background: var(--paper);
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }

  body.gallery-experience--themed .site-header.site-header--sticky:not(.site-header--sidebar) {
    background: var(--paper);
  }

  .site-header.site-header--sticky.site-header--custom-colors:not(.site-header--sidebar) {
    background: var(--header-background-color, var(--paper)) !important;
  }
}

/* v1.0.211 — independent font assignment for the small COLLECTION label
   beside clicked-in gallery titles. Empty/default assignment intentionally
   falls back to Body Copy so existing sites retain their current appearance. */
body.gallery-page .gallery-hero__title-cluster .gallery-hero__eyebrow {
  font-family: var(--collection-label-font, var(--body-font, var(--sans)));
}


/* v1.0.212 — dedicated clicked-in gallery-title font role.
   Website default inherits the normal large page title font. */
body.gallery-page .gallery-hero h1 {
  font-family: var(--gallery-title-font, var(--title-font, var(--serif)));
}


/* v1.0.214 — full-fidelity standard Gallery Landing cards.
   v1.0.191 already protects curated gallery-home images. This closes the other
   landing-page path (the standard gallery-card layout): no filter, opacity,
   blend-mode, or color treatment may alter the photograph itself. */
.gallery-grid .gallery-card__image img,
.gallery-card .gallery-card__image img{
  -webkit-filter:none !important;
  filter:none !important;
  opacity:1 !important;
  mix-blend-mode:normal !important;
}
.gallery-grid .gallery-card__image,
.gallery-card .gallery-card__image{
  isolation:isolate;
}


/* v1.0.216 — clicked-in gallery divider cleanup.
   Keep the header content aligned to the site's max-width, but let the visual
   divider itself run edge-to-edge across the viewport. The gallery hero's old
   bottom rule is removed so there is no line immediately above the photographs. */
body.gallery-page { overflow-x: clip; }
body.gallery-page .site-header:not(.site-header--sidebar) {
  position: relative;
  border-bottom: 0;
}
body.gallery-page .site-header:not(.site-header--sidebar)::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 100vw;
  height: 0;
  transform: translateX(-50%);
  border-bottom: 1px solid var(--line);
  pointer-events: none;
}
body.gallery-experience--themed .gallery-hero {
  border-bottom: 0;
}

/* v1.0.219 — saved palette overrides for individual text pages and galleries. */
body.saved-palette-page {
  background: var(--paper);
  color: var(--ink);
}
body.saved-palette-page .theme-toggle { display: none; }
body.saved-palette-page .site-header {
  --header-background-color: var(--paper) !important;
  --header-primary-color: var(--ink) !important;
  --header-secondary-color: var(--muted) !important;
  --header-divider-color: var(--gallery-divider, var(--line)) !important;
  --header-action-color: var(--ink) !important;
  --header-action-hover-color: var(--gallery-accent, var(--ink)) !important;
  --header-social-color: var(--ink) !important;
  --header-social-hover-color: var(--gallery-accent, var(--ink)) !important;
}
body.saved-palette-page .site-header--sidebar {
  --sidebar-background: var(--surface, var(--paper-deep)) !important;
  --sidebar-ink: var(--ink) !important;
  --sidebar-muted: var(--muted) !important;
  --sidebar-line: var(--line) !important;
}
body.saved-palette-page .site-footer--editable {
  --footer-background-color: var(--gallery-footer-bg, var(--paper)) !important;
  --footer-title-color: var(--ink) !important;
  --footer-text-color: var(--muted) !important;
  --footer-divider-color: var(--gallery-divider, var(--line)) !important;
  --footer-social-color: var(--muted) !important;
  --footer-social-hover-color: var(--gallery-accent, var(--ink)) !important;
  --footer-action-color: var(--muted) !important;
  --footer-action-hover-color: var(--gallery-accent, var(--ink)) !important;
}

/* A gallery's own saved palette/theme must win over a globally assigned
   website palette, including header/footer icon colors. */
body.gallery-experience--themed .site-header {
  --header-background-color: var(--paper) !important;
  --header-primary-color: var(--ink) !important;
  --header-secondary-color: var(--muted) !important;
  --header-divider-color: var(--gallery-divider, var(--line)) !important;
  --header-action-color: var(--ink) !important;
  --header-action-hover-color: var(--gallery-accent, var(--ink)) !important;
  --header-social-color: var(--ink) !important;
  --header-social-hover-color: var(--gallery-accent, var(--ink)) !important;
}
body.gallery-experience--themed .site-footer--editable {
  --footer-background-color: var(--gallery-footer-bg, var(--paper)) !important;
  --footer-title-color: var(--ink) !important;
  --footer-text-color: var(--muted) !important;
  --footer-divider-color: var(--gallery-divider, var(--line)) !important;
  --footer-social-color: var(--muted) !important;
  --footer-social-hover-color: var(--gallery-accent, var(--ink)) !important;
  --footer-action-color: var(--muted) !important;
  --footer-action-hover-color: var(--gallery-accent, var(--ink)) !important;
}
body.saved-palette-page .lightbox { --viewer-background: var(--gallery-viewer-bg) !important; }

/* v1.0.225 — individual gallery landing-name color override. This is deliberately
   narrower than palette/theme text colors: only the gallery name on landing views
   changes, while clicked-in gallery titles and all supporting copy keep their own colors. */
.gh-title-color--override .gh-item__copy h2,
.gh-title-color--override .gh-index__title-link strong,
.gh-index__preview.gh-title-color--override > div strong { color: var(--gh-item-heading-color) !important; }

/* v1.0.226 — align large standalone-page titles with clicked-in gallery titles.
   Text/custom pages, classic Contact, non-fit Triptych Contact, and Video were
   still using the much older 70–150px page-top spacing. Match the visual top
   position of the current compact gallery title row without changing page
   alignment, typography assignments, content spacing, or gallery behavior. */
:root { --standalone-title-top: clamp(42px, 3.7vw, 56px); }
body.text-only-page .text-page,
body.video-page-shell .video-page,
body.contact-page-shell:not(.contact-page-shell--triptych) .contact-page {
  padding-top: var(--standalone-title-top);
}
body.contact-page-shell--triptych:not(.contact-page-shell--triptych-fit) .contact-page--triptych {
  padding-top: var(--standalone-title-top);
}
/* Keep the standalone large-title scale in lockstep with the gallery base scale.
   Per-gallery title scaling remains gallery-only and is intentionally untouched. */
body.text-only-page .text-page > h1,
body.video-page-shell .page-hero > h1,
body.contact-page-shell .contact-page h1 {
  font-size: clamp(60px, 9vw, 140px);
}
@media (max-width: 760px) {
  :root { --standalone-title-top: 42px; }
  body.contact-page-shell--simple-mobile .contact-page--triptych {
    padding-top: var(--standalone-title-top);
  }
}

/* v1.0.227 — adjustable drop shadow for the large clicked-in gallery title and
   the matching standalone page titles. The shadow is deliberately limited to
   these major headings; landing-page gallery names and all supporting text stay flat. */
body.gallery-page .gallery-hero h1 {
  text-shadow: var(--gallery-large-title-shadow, none);
}
body.text-only-page .text-page > h1,
body.video-page-shell .page-hero > h1,
body.contact-page-shell .contact-page h1 {
  text-shadow: var(--page-large-title-shadow, none);
}


/* v1.0.229 — per-profile social color precedence fix.
   A profile can opt into its own exact color independently in the header and/or
   footer. These rules intentionally sit after global Site Colors, saved palettes,
   gallery themes, and platform hover colors so the individual override is final. */
.site-header .social-link--item-color,
.site-header .social-link--item-color:hover,
.site-header .social-link--item-color:focus-visible,
body .site-footer .social-link--item-color,
body .site-footer .social-link--item-color:hover,
body .site-footer .social-link--item-color:focus-visible {
  color: var(--social-item-color) !important;
}

/* Uploaded custom icons normally use their image artwork. When an individual
   exact-color override is active, render the uploaded mark as a mask so it can
   follow the same precise color as the built-in SVG icons. */
.social-link--item-color .social-icon--custom {
  position: relative;
}
.social-link--item-color .social-icon--custom img {
  opacity: 0 !important;
  filter: none !important;
}
.social-link--item-color .social-icon--custom::before {
  content: "";
  position: absolute;
  inset: 0;
  background: currentColor;
  -webkit-mask-image: var(--social-custom-icon);
  mask-image: var(--social-custom-icon);
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  mask-size: contain;
}


/* v1.0.229 — final precedence safeguard for individual social colors.
   Inline !important styles are emitted by render.php; these selectors also ensure
   icon descendants cannot be repainted by sidebar/header/footer legacy rules. */
body .site-header .social-links a.social-link--item-color,
body .site-header.site-header--custom-colors .social-links a.social-link--item-color,
body .site-header.site-header--sidebar .social-links a.social-link--item-color,
body .site-footer.site-footer--editable .social-links--footer a.social-link--item-color,
body .site-footer.site-footer--editable.site-footer--custom-colors .social-links--footer a.social-link--item-color {
  color: var(--social-item-color) !important;
}
body .site-header .social-links a.social-link--item-color > .social-icon,
body .site-header.site-header--sidebar .social-links a.social-link--item-color > .social-icon,
body .site-footer.site-footer--editable .social-links--footer a.social-link--item-color > .social-icon {
  color: var(--social-item-color) !important;
}


/* v1.0.231 — eliminate mobile top-bar snap-back.
   Some mobile browsers can still move the visual viewport around a sticky
   header during a very short touch scroll, then restore the sticky element
   when the gesture ends. That makes the document appear to be forced back
   down. On phones, keep the top header in ordinary document flow so it
   scrolls away naturally. Desktop/tablet sticky behavior remains unchanged. */
@media (max-width: 760px) {
  .site-header.site-header--sticky:not(.site-header--sidebar) {
    position: relative !important;
    top: auto !important;
    z-index: 50;
    align-self: auto;
  }
}

/* v1.0.232 — gallery-specific curated photograph arrangements.
   These rules are intentionally gallery-page-only. Automatic galleries keep the
   existing masonry/grid/editorial renderer; curated galleries opt into a stable
   12-column composition whose desktop and phone instructions are independent. */
@media (min-width: 761px) {
  body.gallery-page .photo-grid.photo-grid--curated-desktop {
    columns: auto !important;
    display: grid !important;
    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
    grid-auto-flow: row dense !important;
    grid-auto-rows: auto !important;
    column-gap: clamp(14px, 1.8vw, 30px) !important;
    row-gap: clamp(22px, 3.2vw, 54px) !important;
    align-items: start !important;
    visibility: visible !important;
    max-width: none !important;
  }
  /* In mixed Desktop/Mobile modes the existing ordered-masonry controller may
     create column wrappers for the Automatic viewport. Flatten those wrappers
     only while desktop Curated mode is active so the saved tiles remain direct
     grid items without disabling Automatic behavior on phones. */
  body.gallery-page .photo-grid.photo-grid--curated-desktop > .photo-grid__ordered-column {
    display: contents !important;
  }
  body.gallery-page .photo-grid.photo-grid--curated-desktop > .photo-card-wrap--curated,
  body.gallery-page .photo-grid.photo-grid--curated-desktop > .photo-grid__ordered-column > .photo-card-wrap--curated {
    order: var(--curated-desktop-order, 0) !important;
    grid-column: var(--curated-desktop-column, auto / span 6) !important;
    grid-row: auto !important;
    width: 100% !important;
    min-width: 0 !important;
    margin: var(--curated-desktop-space, 0px) 0 0 !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: var(--curated-desktop-align, center) !important;
    break-inside: auto !important;
  }
  body.gallery-page .photo-grid.photo-grid--curated-desktop > .photo-card-wrap--curated > .photo-card,
  body.gallery-page .photo-grid.photo-grid--curated-desktop > .photo-grid__ordered-column > .photo-card-wrap--curated > .photo-card {
    width: var(--curated-desktop-card-width, 92%) !important;
    max-width: 100% !important;
    transform: scale(var(--curated-desktop-scale, 1));
    transform-origin: center center;
  }
}

@media (max-width: 760px) {
  body.gallery-page .photo-grid.photo-grid--curated-mobile {
    columns: auto !important;
    display: grid !important;
    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
    grid-auto-flow: row dense !important;
    grid-auto-rows: auto !important;
    column-gap: 8px !important;
    row-gap: 18px !important;
    align-items: start !important;
    visibility: visible !important;
    max-width: none !important;
  }
  /* Same protection for phone Curated mode when desktop remains Automatic. */
  body.gallery-page .photo-grid.photo-grid--curated-mobile > .photo-grid__ordered-column {
    display: contents !important;
  }
  body.gallery-page .photo-grid.photo-grid--curated-mobile > .photo-card-wrap--curated,
  body.gallery-page .photo-grid.photo-grid--curated-mobile > .photo-grid__ordered-column > .photo-card-wrap--curated,
  body.gallery-page.mobile-gallery-style--uniform .photo-grid.photo-grid--curated-mobile > .photo-card-wrap--curated,
  body.gallery-page.mobile-gallery-style--uniform .photo-grid.photo-grid--curated-mobile > .photo-grid__ordered-column > .photo-card-wrap--curated,
  body.gallery-page[data-mobile-orientation-aware="true"] .photo-grid.photo-grid--curated-mobile > .photo-card-wrap--curated,
  body.gallery-page[data-mobile-orientation-aware="true"] .photo-grid.photo-grid--curated-mobile > .photo-grid__ordered-column > .photo-card-wrap--curated {
    order: var(--curated-mobile-order, 0) !important;
    grid-column: var(--curated-mobile-column, 1 / span 12) !important;
    grid-row: auto !important;
    grid-row-start: auto !important;
    grid-row-end: auto !important;
    width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
    margin: var(--curated-mobile-space, 0px) 0 0 !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: var(--curated-mobile-align, center) !important;
    align-self: start !important;
    break-inside: auto !important;
  }
  body.gallery-page .photo-grid.photo-grid--curated-mobile > .photo-card-wrap--curated > .photo-card,
  body.gallery-page .photo-grid.photo-grid--curated-mobile > .photo-grid__ordered-column > .photo-card-wrap--curated > .photo-card,
  body.gallery-page.mobile-gallery-style--uniform .photo-grid.photo-grid--curated-mobile > .photo-card-wrap--curated > .photo-card,
  body.gallery-page.mobile-gallery-style--uniform .photo-grid.photo-grid--curated-mobile > .photo-grid__ordered-column > .photo-card-wrap--curated > .photo-card {
    width: var(--curated-mobile-card-width, 96%) !important;
    max-width: 100% !important;
    height: auto !important;
    transform: scale(var(--curated-mobile-scale, 1));
    transform-origin: center center;
  }
  body.gallery-page .photo-grid.photo-grid--curated-mobile .photo-card__art,
  body.gallery-page .photo-grid.photo-grid--curated-mobile .photo-card__window,
  body.gallery-page .photo-grid.photo-grid--curated-mobile .photo-card img {
    width: 100% !important;
    height: auto !important;
    max-height: none !important;
    aspect-ratio: auto !important;
    object-fit: contain !important;
  }
}

/* v1.0.233: visibility is now owned by the device-scoped Curated rules above.
   This preserves the existing cold-load masonry gate on whichever viewport is
   still Automatic while keeping a Curated viewport visible immediately. */


/* v1.0.234 — per-gallery Mosaic → Fine Adjustments → Full Curated system.
   The gallery's normal mosaic can now be set from 1–10 columns on desktop and
   1–3 on phones. Ordered mode is built by site.js so ten photographs really can
   occupy one first row in saved order. Balanced mode uses native masonry columns.
   Fine Adjustments keep the selected density as the base and permit individual
   spans; Full Curated retains the established 12-column editorial composition. */
@media (min-width: 761px) {
  body.gallery-page .photo-grid.photo-grid--gallery-managed[data-gallery-desktop-mode="automatic"] {
    max-width: none !important;
    visibility: visible;
  }
  body.gallery-page .photo-grid.photo-grid--gallery-managed[data-gallery-desktop-mode="automatic"][data-gallery-desktop-packing="balanced"] {
    display: block !important;
    columns: var(--gallery-desktop-columns, 3) !important;
    column-count: var(--gallery-desktop-columns, 3) !important;
    column-width: auto !important;
    column-gap: var(--gallery-desktop-gap, clamp(16px,2vw,32px)) !important;
  }
  body.gallery-page .photo-grid.photo-grid--gallery-managed[data-gallery-desktop-mode="automatic"][data-gallery-desktop-packing="balanced"] > .photo-card-wrap {
    display: inline-block !important;
    width: 100% !important;
    margin: 0 0 var(--gallery-desktop-gap, clamp(16px,2vw,32px)) !important;
    break-inside: avoid !important;
  }
  body.gallery-page .photo-grid.photo-grid--gallery-managed[data-gallery-desktop-mode="automatic"].photo-grid--ordered-masonry {
    columns: auto !important;
    display: grid !important;
    grid-template-columns: repeat(var(--gallery-desktop-columns, 3), minmax(0,1fr)) !important;
    gap: var(--gallery-desktop-gap, clamp(16px,2vw,32px)) !important;
    --ordered-masonry-gap: var(--gallery-desktop-gap, clamp(16px,2vw,32px));
  }
  body.gallery-page .photo-grid.photo-grid--gallery-managed[data-gallery-desktop-mode="automatic"].photo-grid--ordered-masonry > .photo-grid__ordered-column {
    gap: var(--gallery-desktop-gap, clamp(16px,2vw,32px)) !important;
  }

  body.gallery-page .photo-grid.photo-grid--fine-desktop {
    columns: auto !important;
    display: grid !important;
    grid-template-columns: repeat(var(--gallery-desktop-columns, 3), minmax(0,1fr)) !important;
    grid-auto-flow: row !important;
    gap: var(--gallery-desktop-gap, clamp(16px,2vw,32px)) !important;
    align-items: start !important;
    max-width: none !important;
    visibility: visible !important;
  }
  body.gallery-page .photo-grid.photo-grid--fine-desktop > .photo-grid__ordered-column { display: contents !important; }
  body.gallery-page .photo-grid.photo-grid--fine-desktop > .photo-card-wrap--arranged,
  body.gallery-page .photo-grid.photo-grid--fine-desktop > .photo-grid__ordered-column > .photo-card-wrap--arranged {
    order: var(--fine-desktop-order,0) !important;
    grid-column: span var(--fine-desktop-span,1) !important;
    width: 100% !important;
    min-width: 0 !important;
    margin: var(--fine-desktop-space,0px) 0 0 !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: var(--fine-desktop-align,center) !important;
    break-inside: auto !important;
  }
  body.gallery-page .photo-grid.photo-grid--fine-desktop > .photo-card-wrap--arranged > .photo-card,
  body.gallery-page .photo-grid.photo-grid--fine-desktop > .photo-grid__ordered-column > .photo-card-wrap--arranged > .photo-card {
    width: var(--fine-desktop-card-width,96%) !important;
    max-width: 100% !important;
    transform: scale(var(--fine-desktop-scale,1));
    transform-origin: center center;
  }
  body.gallery-page .photo-grid.photo-grid--curated-desktop {
    column-gap: var(--gallery-desktop-gap, clamp(14px,1.8vw,30px)) !important;
    row-gap: var(--gallery-desktop-gap, clamp(22px,3.2vw,54px)) !important;
  }
}

@media (max-width: 760px) {
  body.gallery-page .photo-grid.photo-grid--gallery-managed[data-gallery-mobile-mode="automatic"] {
    max-width: none !important;
    visibility: visible !important;
  }
  body.gallery-page .photo-grid.photo-grid--gallery-managed[data-gallery-mobile-mode="automatic"][data-gallery-mobile-packing="balanced"] {
    display: block !important;
    columns: var(--gallery-mobile-columns, 2) !important;
    column-count: var(--gallery-mobile-columns, 2) !important;
    column-width: auto !important;
    column-gap: var(--gallery-mobile-gap,10px) !important;
  }
  body.gallery-page .photo-grid.photo-grid--gallery-managed[data-gallery-mobile-mode="automatic"][data-gallery-mobile-packing="balanced"] > .photo-card-wrap {
    display: inline-block !important;
    width: 100% !important;
    margin: 0 0 var(--gallery-mobile-gap,10px) !important;
    break-inside: avoid !important;
  }
  body.gallery-page .photo-grid.photo-grid--gallery-managed[data-gallery-mobile-mode="automatic"].photo-grid--ordered-masonry {
    columns: auto !important;
    display: grid !important;
    grid-template-columns: repeat(var(--gallery-mobile-columns,2), minmax(0,1fr)) !important;
    gap: var(--gallery-mobile-gap,10px) !important;
    --ordered-masonry-gap: var(--gallery-mobile-gap,10px);
  }
  body.gallery-page .photo-grid.photo-grid--gallery-managed[data-gallery-mobile-mode="automatic"].photo-grid--ordered-masonry > .photo-grid__ordered-column {
    gap: var(--gallery-mobile-gap,10px) !important;
  }
  body.gallery-page .photo-grid.photo-grid--gallery-managed[data-gallery-mobile-mode="automatic"] .photo-card,
  body.gallery-page .photo-grid.photo-grid--gallery-managed[data-gallery-mobile-mode="automatic"] .photo-card__art,
  body.gallery-page .photo-grid.photo-grid--gallery-managed[data-gallery-mobile-mode="automatic"] .photo-card__window,
  body.gallery-page .photo-grid.photo-grid--gallery-managed[data-gallery-mobile-mode="automatic"] .photo-card img {
    max-width: 100% !important;
  }

  body.gallery-page .photo-grid.photo-grid--fine-mobile {
    columns: auto !important;
    display: grid !important;
    grid-template-columns: repeat(var(--gallery-mobile-columns,2), minmax(0,1fr)) !important;
    grid-auto-flow: row !important;
    gap: var(--gallery-mobile-gap,10px) !important;
    align-items: start !important;
    max-width: none !important;
    visibility: visible !important;
  }
  body.gallery-page .photo-grid.photo-grid--fine-mobile > .photo-grid__ordered-column { display: contents !important; }
  body.gallery-page .photo-grid.photo-grid--fine-mobile > .photo-card-wrap--arranged,
  body.gallery-page .photo-grid.photo-grid--fine-mobile > .photo-grid__ordered-column > .photo-card-wrap--arranged,
  body.gallery-page.mobile-gallery-style--uniform .photo-grid.photo-grid--fine-mobile > .photo-card-wrap--arranged {
    order: var(--fine-mobile-order,0) !important;
    grid-column: span var(--fine-mobile-span,1) !important;
    grid-row: auto !important;
    width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
    margin: var(--fine-mobile-space,0px) 0 0 !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: var(--fine-mobile-align,center) !important;
    align-self: start !important;
  }
  body.gallery-page .photo-grid.photo-grid--fine-mobile > .photo-card-wrap--arranged > .photo-card,
  body.gallery-page .photo-grid.photo-grid--fine-mobile > .photo-grid__ordered-column > .photo-card-wrap--arranged > .photo-card {
    width: var(--fine-mobile-card-width,98%) !important;
    max-width: 100% !important;
    height: auto !important;
    transform: scale(var(--fine-mobile-scale,1));
    transform-origin: center center;
  }
  body.gallery-page .photo-grid.photo-grid--fine-mobile .photo-card__art,
  body.gallery-page .photo-grid.photo-grid--fine-mobile .photo-card__window,
  body.gallery-page .photo-grid.photo-grid--fine-mobile .photo-card img {
    width: 100% !important;
    height: auto !important;
    max-height: none !important;
    aspect-ratio: auto !important;
    object-fit: contain !important;
  }
  body.gallery-page .photo-grid.photo-grid--curated-mobile {
    column-gap: var(--gallery-mobile-gap,8px) !important;
    row-gap: var(--gallery-mobile-gap,18px) !important;
  }
}

/* v1.0.236 — mobile managed-gallery containment and micro-row reset.
   The legacy phone gallery experience packs cards into 4px grid rows and relies
   on JS-measured row spans. Per-gallery Mosaic/Fine/Curated layouts own their
   own flow, so any stale micro-row class/span state would collapse the grid
   height, stack photographs visually, and let them paint across the footer.
   Reset only the legacy row/containment state; image, mat and frame sizing stay
   under the existing gallery presentation rules. */
@media (max-width: 760px) {
  body.gallery-page .photo-grid.photo-grid--gallery-managed,
  body.gallery-page .photo-grid.photo-grid--gallery-managed.photo-grid--mobile-experience,
  body.gallery-page.mobile-gallery-style--uniform .photo-grid.photo-grid--gallery-managed.photo-grid--mobile-experience.photo-grid--mobile-uniform {
    grid-auto-rows: auto !important;
    min-height: 0 !important;
    height: auto !important;
    overflow: visible !important;
    align-content: start !important;
  }

  body.gallery-page .photo-grid.photo-grid--gallery-managed > .photo-card-wrap,
  body.gallery-page .photo-grid.photo-grid--gallery-managed > .photo-grid__ordered-column > .photo-card-wrap,
  body.gallery-page.mobile-gallery-style--uniform .photo-grid.photo-grid--gallery-managed > .photo-card-wrap,
  body.gallery-page.mobile-gallery-style--uniform .photo-grid.photo-grid--gallery-managed > .photo-grid__ordered-column > .photo-card-wrap {
    position: relative !important;
    grid-row-start: auto !important;
    grid-row-end: auto !important;
    min-height: 0 !important;
    height: auto !important;
  }

  /* If an older cached script briefly reapplies the legacy phone-experience
     class, keep the managed gallery as a conventional responsive grid instead
     of allowing the 4px micro-row system to return. */
  body.gallery-page .photo-grid.photo-grid--gallery-managed[data-gallery-mobile-mode="automatic"].photo-grid--mobile-experience {
    grid-template-columns: repeat(var(--gallery-mobile-columns, 2), minmax(0, 1fr)) !important;
    column-gap: var(--gallery-mobile-gap, 10px) !important;
    row-gap: var(--gallery-mobile-gap, 10px) !important;
  }
}

/* v1.0.237 — curated gallery-home divider cleanup.
   The curated landing section previously kept its generic section top border
   directly against the header's own border, making the center portion look
   doubled/darker. Use one viewport-wide rule owned by the header instead.
   The footer keeps its centered content width, but its divider now spans the
   viewport so it finishes cleanly at both screen edges. */
body.curated-gallery-home-page .section--curated-home.section--work {
  border-top: 0 !important;
}
body.curated-gallery-home-page > .site-header:not(.site-header--sidebar) {
  position: relative;
  border-bottom: 0 !important;
}
body.curated-gallery-home-page > .site-header.site-header--sticky:not(.site-header--sidebar) {
  position: sticky;
}
body.curated-gallery-home-page > .site-header:not(.site-header--sidebar)::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 100vw;
  transform: translateX(-50%);
  border-bottom: 1px solid var(--header-divider-color, var(--line));
  pointer-events: none;
}
body.curated-gallery-home-page > .site-footer {
  position: relative;
  border-top: 0 !important;
}
body.curated-gallery-home-page > .site-footer::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 0;
  width: 100vw;
  transform: translateX(-50%);
  border-top: 1px solid var(--footer-divider-color, var(--line));
  pointer-events: none;
}
body.curated-gallery-home-page > .site-footer.site-footer--no-border::before {
  display: none;
}



/* v1.0.239 — Galleries visitor view switch.
   The switch lives directly beneath the top navigation and can use any uploaded
   gallery-home font, an independent text size, and either inherited header color
   or an exact custom HEX. */
.site-nav--with-view-switch {
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 7px;
}
.site-nav--with-view-switch .site-nav__links {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(14px, 2vw, 36px);
}
.site-header--nav-many .site-nav--with-view-switch .site-nav__links {
  gap: clamp(10px, 1.35vw, 24px);
}
.gallery-view-switch {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .72em;
  color: var(--gallery-view-switch-color, var(--header-secondary-color, var(--muted)));
  font-family: var(--gallery-view-switch-font, var(--nav-font, var(--sans)));
  font-size: var(--gallery-view-switch-size, 11px);
  font-weight: 400;
  line-height: 1;
  letter-spacing: .09em;
  text-transform: uppercase;
  white-space: nowrap;
}
.gallery-view-switch__button {
  appearance: none;
  border: 0;
  border-bottom: 1px solid transparent;
  background: transparent;
  color: inherit;
  padding: 2px 0 4px;
  font: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  cursor: pointer;
  opacity: .52;
  transition: opacity .16s ease, border-color .16s ease;
}
.gallery-view-switch__button:hover,
.gallery-view-switch__button:focus-visible {
  opacity: .82;
}
.gallery-view-switch__button.is-active,
.gallery-view-switch__button[aria-pressed="true"] {
  border-bottom-color: currentColor;
  opacity: 1;
}
.gallery-view-switch__separator {
  opacity: .42;
}
[data-gallery-view-panel][hidden] {
  display: none !important;
}
.gallery-all-images-view {
  min-height: 1px;
  /* Keep the alternate mosaic from touching the header/body divider. */
  padding-top: clamp(28px, 2.5vw, 44px);
}

@media (max-width: 1120px) {
  .site-nav--with-view-switch {
    gap: 28px;
  }
  .site-nav--with-view-switch .site-nav__links {
    flex-direction: column;
    align-items: center;
    gap: 34px;
  }
}


/* v1.0.241 — lower the Galleries view switch into the quiet lower band of the
   desktop header. The primary navigation stays in its established position; the
   switch is anchored just above the header/body divider instead of crowding the
   navigation labels. */
@media (min-width: 1121px) {
  .site-header--with-view-switch:not(.site-header--sidebar) {
    position: relative;
  }
  .site-header--with-view-switch:not(.site-header--sidebar) .gallery-view-switch {
    position: absolute;
    left: 50%;
    bottom: 8px;
    z-index: 2;
    transform: translateX(-50%);
  }
}

/* v1.0.245 — shared Contact Triptych rotation.
   One full photograph spans all three panels; the three slices fade and swap
   together after the next image has been preloaded. */
.contact-triptych-grid[data-contact-triptych-rotation] .contact-triptych-panel__media--shared img {
  transition: opacity 170ms ease;
}
.contact-triptych-grid.is-contact-triptych-swapping .contact-triptych-panel__media--shared img {
  opacity: 0;
}
@media (prefers-reduced-motion: reduce) {
  .contact-triptych-grid[data-contact-triptych-rotation] .contact-triptych-panel__media--shared img {
    transition: none;
  }
}


/* v1.0.248 — flush first gallery presentation to the stationary header divider.
   Curated gallery landing pages without intro copy should not retain generic
   top page padding; the first gallery box/band begins immediately below the
   header line. Pages that use an intro keep their existing breathing room. */
body.curated-gallery-home-page .gallery-home-curated.gh--no-intro {
  padding-top: 0 !important;
}
@media (max-width: 900px) {
  body.curated-gallery-home-page .gallery-home-curated.gh--no-intro.gh-mobile--cards + .gh-mobile-card-fallback {
    padding-top: 0;
  }
}


/* v1.0.249 — gallery landing navigation without native hover-URL chrome. */
[data-gallery-nav] { cursor: pointer; }
[data-gallery-nav]:focus-visible { outline: 2px solid currentColor; outline-offset: 4px; }


/* v1.0.251 — independently adjustable header/footer divider thickness.
   The existing divider colors remain independent; 0px intentionally hides
   the rule without changing any surrounding spacing. */
.site-header {
  border-bottom-width: var(--header-divider-width, 1px);
  border-bottom-color: var(--header-divider-color, var(--line));
}
.site-footer.site-footer--editable:not(.site-footer--no-border) {
  border-top-width: var(--footer-divider-width, 1px);
  border-top-style: solid;
  border-top-color: var(--footer-divider-color, var(--line));
}
@media (min-width: 901px) {
  .site-header--sidebar-left {
    border-right-width: var(--header-divider-width, 1px);
    border-right-style: solid;
    border-right-color: var(--header-divider-color, var(--sidebar-line, var(--line)));
  }
  .site-header--sidebar-right {
    border-left-width: var(--header-divider-width, 1px);
    border-left-style: solid;
    border-left-color: var(--header-divider-color, var(--sidebar-line, var(--line)));
  }
}
body.curated-gallery-home-page > .site-header:not(.site-header--sidebar)::after {
  border-bottom-width: var(--header-divider-width, 1px);
  border-bottom-style: solid;
}
body.curated-gallery-home-page > .site-footer:not(.site-footer--no-border)::before {
  border-top-width: var(--footer-divider-width, 1px);
  border-top-style: solid;
}


/* v1.0.253 — divider-color override precedence fix.
   Gallery/page palettes intentionally use !important for their chrome colors.
   When the user explicitly chooses a header/footer divider override, that one
   divider color must win without disabling the rest of the custom palette. */
.site-header.site-header--divider-override {
  --header-divider-color: var(--header-divider-override-color, var(--line)) !important;
}
.site-header.site-header--divider-override.site-header--sidebar {
  --sidebar-line: var(--header-divider-override-color, var(--line)) !important;
}
.site-footer.site-footer--editable.site-footer--divider-override {
  --footer-divider-color: var(--footer-divider-override-color, var(--line)) !important;
}


/* v1.0.255 — authoritative header/footer divider color override.
   Saved page/gallery/mobile palettes use !important chrome variables and can be
   more specific (or injected later) than the normal header/footer rules. When
   the dedicated divider override is enabled, bypass that palette fight and
   apply the chosen divider color directly to every visible chrome rule,
   including the viewport-wide pseudo-element used by gallery pages. */
html body .site-header.site-header--divider-override {
  --header-divider-color: var(--header-divider-override-color, var(--line)) !important;
  border-bottom-color: var(--header-divider-override-color, var(--line)) !important;
}
html body .site-header.site-header--divider-override.site-header--sidebar {
  --sidebar-line: var(--header-divider-override-color, var(--line)) !important;
  border-color: var(--header-divider-override-color, var(--line)) !important;
}
html body .site-header.site-header--divider-override.site-header--sidebar-left {
  border-right-color: var(--header-divider-override-color, var(--line)) !important;
}
html body .site-header.site-header--divider-override.site-header--sidebar-right {
  border-left-color: var(--header-divider-override-color, var(--line)) !important;
}
html body.gallery-page .site-header.site-header--divider-override:not(.site-header--sidebar)::after,
html body.curated-gallery-home-page > .site-header.site-header--divider-override:not(.site-header--sidebar)::after {
  border-bottom-width: var(--header-divider-width, 1px) !important;
  border-bottom-style: solid !important;
  border-bottom-color: var(--header-divider-override-color, var(--line)) !important;
}
html body .site-footer.site-footer--editable.site-footer--divider-override {
  --footer-divider-color: var(--footer-divider-override-color, var(--line)) !important;
  border-top-color: var(--footer-divider-override-color, var(--line)) !important;
}
html body.curated-gallery-home-page > .site-footer.site-footer--editable.site-footer--divider-override:not(.site-footer--no-border)::before {
  border-top-width: var(--footer-divider-width, 1px) !important;
  border-top-style: solid !important;
  border-top-color: var(--footer-divider-override-color, var(--line)) !important;
}

/* v1.0.269 — decorative divider edges rebuilt to match the approved visual concepts.
   The chrome background itself now extends into the content with the selected
   silhouette; the saved divider color is only the thin tracing edge. This keeps
   Cut, Fine Wave and Deckled from reading like a solid colored pattern strip. */
.site-header--divider-decoration-active:not(.site-header--sidebar) {
  position: relative;
  overflow: visible;
  border-bottom: 0 !important;
  isolation: isolate;
}
.site-header--divider-decoration-active:not(.site-header--sidebar)::after {
  content: "" !important;
  display: block !important;
  position: absolute !important;
  left: 50% !important;
  bottom: calc(-1 * var(--header-divider-decoration-size, 8px)) !important;
  width: 100vw !important;
  height: calc(var(--header-divider-decoration-size, 8px) + var(--header-divider-width, 1px)) !important;
  transform: translateX(-50%) !important;
  transform-origin: 50% 50% !important;
  border: 0 !important;
  background: var(--header-background-color, var(--paper)) !important;
  pointer-events: none !important;
  z-index: 12 !important;
  -webkit-mask-repeat: no-repeat !important;
  mask-repeat: no-repeat !important;
  -webkit-mask-position: center top !important;
  mask-position: center top !important;
  -webkit-mask-size: 100% 100% !important;
  mask-size: 100% 100% !important;
  filter: drop-shadow(0 var(--header-divider-width, 1px) 0 var(--header-divider-color, var(--line)));
}

/* Cut Edge — the approved matte-cut idea: the seam stays almost completely
   straight, with one broad cut/bevel at BOTH the left and right ends. There is
   no repeating chevron pattern across the photograph. */
.site-header--divider-style-cut:not(.site-header--sidebar)::after,
.site-footer--divider-style-cut::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 60' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M0 0H1000V58L970 31H30L0 58Z'/%3E%3C/svg%3E") !important;
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 60' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M0 0H1000V58L970 31H30L0 58Z'/%3E%3C/svg%3E") !important;
}

/* Fine Wave — a small number of broad, slow undulations spanning the entire
   page width, matching the organic contour shown in the concept board. */
.site-header--divider-style-wave:not(.site-header--sidebar)::after,
.site-footer--divider-style-wave::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 60' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M0 0H1000V39C930 32 875 27 810 37C735 49 675 51 610 37C540 24 475 27 410 40C340 53 275 48 210 36C140 25 75 29 0 40Z'/%3E%3C/svg%3E") !important;
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 60' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M0 0H1000V39C930 32 875 27 810 37C735 49 675 51 610 37C540 24 475 27 410 40C340 53 275 48 210 36C140 25 75 29 0 40Z'/%3E%3C/svg%3E") !important;
}

/* Deckled Edge — one non-repeating, restrained paper edge across the whole
   width. Irregular spacing and depth keep it organic instead of sawtoothed. */
.site-header--divider-style-deckled:not(.site-header--sidebar)::after,
.site-footer--divider-style-deckled::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 60' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M0 0H1000V42L980 40L963 41L948 38L932 42L915 40L897 46L879 43L860 45L842 40L821 43L804 39L783 41L765 47L748 45L726 43L710 44L689 39L667 42L650 41L627 47L609 43L588 45L569 40L548 44L527 39L503 42L485 46L463 43L442 45L420 40L401 43L379 38L360 41L339 46L317 42L298 44L276 40L257 45L234 42L216 47L193 43L174 44L154 39L132 42L113 46L91 41L73 43L52 39L31 44L15 41L0 43Z'/%3E%3C/svg%3E") !important;
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 60' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M0 0H1000V42L980 40L963 41L948 38L932 42L915 40L897 46L879 43L860 45L842 40L821 43L804 39L783 41L765 47L748 45L726 43L710 44L689 39L667 42L650 41L627 47L609 43L588 45L569 40L548 44L527 39L503 42L485 46L463 43L442 45L420 40L401 43L379 38L360 41L339 46L317 42L298 44L276 40L257 45L234 42L216 47L193 43L174 44L154 39L132 42L113 46L91 41L73 43L52 39L31 44L15 41L0 43Z'/%3E%3C/svg%3E") !important;
}

.site-footer--divider-decoration-active:not(.site-footer--no-border) {
  position: relative;
  overflow: visible;
  border-top: 0 !important;
  isolation: isolate;
}
.site-footer--divider-decoration-active:not(.site-footer--no-border)::before {
  content: "" !important;
  display: block !important;
  position: absolute !important;
  left: 50% !important;
  top: calc(-1 * var(--footer-divider-decoration-size, 8px)) !important;
  width: 100vw !important;
  height: calc(var(--footer-divider-decoration-size, 8px) + var(--footer-divider-width, 1px)) !important;
  transform: translateX(-50%) scaleY(-1) !important;
  transform-origin: 50% 50% !important;
  border: 0 !important;
  background: var(--footer-background-color, var(--gallery-footer-bg, var(--paper))) !important;
  pointer-events: none !important;
  z-index: 12 !important;
  -webkit-mask-repeat: no-repeat !important;
  mask-repeat: no-repeat !important;
  -webkit-mask-position: center top !important;
  mask-position: center top !important;
  -webkit-mask-size: 100% 100% !important;
  mask-size: 100% 100% !important;
  filter: drop-shadow(0 calc(-1 * var(--footer-divider-width, 1px)) 0 var(--footer-divider-color, var(--line)));
}

/* Dedicated divider color overrides remain authoritative for the tracing edge. */
html body .site-header.site-header--divider-decoration-active.site-header--divider-override:not(.site-header--sidebar)::after {
  filter: drop-shadow(0 var(--header-divider-width, 1px) 0 var(--header-divider-override-color, var(--line))) !important;
}
html body .site-footer.site-footer--divider-decoration-active.site-footer--divider-override:not(.site-footer--no-border)::before {
  filter: drop-shadow(0 calc(-1 * var(--footer-divider-width, 1px)) 0 var(--footer-divider-override-color, var(--line))) !important;
}

/* Gallery-page pseudo-elements have older high-specificity divider rules.
   Decorative silhouettes are authoritative when selected; the legacy straight
   border must not be painted over them. */
html body.gallery-page .site-header.site-header--divider-decoration-active:not(.site-header--sidebar)::after,
html body.curated-gallery-home-page > .site-header.site-header--divider-decoration-active:not(.site-header--sidebar)::after {
  border: 0 !important;
  background: var(--header-background-color, var(--paper)) !important;
}
html body.curated-gallery-home-page > .site-footer.site-footer--editable.site-footer--divider-decoration-active:not(.site-footer--no-border)::before {
  border: 0 !important;
  background: var(--footer-background-color, var(--gallery-footer-bg, var(--paper))) !important;
}

/* v1.0.270 — true floating scrollbar for curated gallery landing pages.
   Keep the native #main scrollbar at zero width at all times so full-bleed
   gallery imagery never reflows when the scrollbar is revealed. A separate
   fixed overlay track/thumb is synchronized by site.js and floats above the
   right edge instead of consuming layout width. */
@media (hover: hover) and (pointer: fine) {
  body.curated-gallery-home-page:not(.contact-page-shell--triptych-fit) > main#main {
    scrollbar-width: none !important;
  }

  body.curated-gallery-home-page:not(.contact-page-shell--triptych-fit) > main#main::-webkit-scrollbar {
    width: 0 !important;
    height: 0 !important;
  }

  .gallery-floating-scrollbar {
    position: fixed;
    right: 1px;
    width: 10px;
    z-index: 1200;
    opacity: 0;
    pointer-events: none;
    transition: opacity .14s ease;
    user-select: none;
    touch-action: none;
  }

  html.public-scrollbar-reveal .gallery-floating-scrollbar,
  html.gallery-floating-scrollbar-dragging .gallery-floating-scrollbar {
    opacity: 1;
    pointer-events: auto;
  }

  .gallery-floating-scrollbar__thumb {
    position: absolute;
    left: 2px;
    right: 2px;
    top: 0;
    min-height: 42px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--ink) 42%, transparent);
    cursor: grab;
    will-change: transform, height;
  }

  .gallery-floating-scrollbar__thumb:hover {
    background: color-mix(in srgb, var(--ink) 62%, transparent);
  }

  html.gallery-floating-scrollbar-dragging .gallery-floating-scrollbar__thumb {
    cursor: grabbing;
    background: color-mix(in srgb, var(--ink) 68%, transparent);
  }
}

/* v1.0.273 — edge-to-edge standalone-page chrome dividers.
   About/text pages and Contact still inherited the original max-width header/footer
   borders, so their rules stopped at --max even though the content chrome is now
   stationary. Match the gallery landing treatment: keep all header/footer content
   aligned to the existing max-width, but paint the straight divider itself across
   the full viewport. Decorative divider styles already own full-width pseudo-elements
   and are intentionally left untouched here. */
body.text-only-page > .site-header:not(.site-header--sidebar):not(.site-header--divider-decoration-active),
body.contact-page-shell > .site-header:not(.site-header--sidebar):not(.site-header--divider-decoration-active) {
  position: relative;
  border-bottom: 0 !important;
}
body.text-only-page > .site-header.site-header--sticky:not(.site-header--sidebar):not(.site-header--divider-decoration-active),
body.contact-page-shell > .site-header.site-header--sticky:not(.site-header--sidebar):not(.site-header--divider-decoration-active) {
  position: sticky;
}
body.text-only-page > .site-header:not(.site-header--sidebar):not(.site-header--divider-decoration-active)::after,
body.contact-page-shell > .site-header:not(.site-header--sidebar):not(.site-header--divider-decoration-active)::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 100vw;
  height: 0;
  transform: translateX(-50%);
  border-bottom-width: var(--header-divider-width, 1px);
  border-bottom-style: solid;
  border-bottom-color: var(--header-divider-color, var(--line));
  pointer-events: none;
}

body.text-only-page > .site-footer.site-footer--editable:not(.site-footer--no-border):not(.site-footer--divider-decoration-active) {
  position: relative;
  border-top: 0 !important;
}
body.text-only-page > .site-footer.site-footer--editable:not(.site-footer--no-border):not(.site-footer--divider-decoration-active)::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 0;
  width: 100vw;
  height: 0;
  transform: translateX(-50%);
  border-top-width: var(--footer-divider-width, 1px);
  border-top-style: solid;
  border-top-color: var(--footer-divider-color, var(--line));
  pointer-events: none;
}


/* v1.0.280 — Journal / Field Notes */
.journal-page{padding:clamp(72px,9vw,145px) var(--pad)}.journal-hero{max-width:1000px;margin:0 0 clamp(58px,8vw,120px)}.journal-hero h1{margin:0 0 30px;font-family:var(--title-font,Georgia,serif);font-size:clamp(58px,9vw,132px);font-weight:400;line-height:.88;letter-spacing:-.055em}.journal-hero>p:not(.eyebrow){max-width:720px;margin:0;color:var(--muted);font-size:clamp(17px,1.5vw,21px);line-height:1.7}.journal-filters{display:flex;flex-wrap:wrap;gap:8px;margin:-30px 0 clamp(46px,6vw,82px)}.journal-filters button{appearance:none;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);padding:9px 14px;font:600 11px/1 var(--nav-font,sans-serif);letter-spacing:.12em;text-transform:uppercase;cursor:pointer}.journal-filters button.is-active,.journal-filters button:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}.journal-stream{display:grid;gap:clamp(74px,10vw,170px)}.journal-card{position:relative;min-width:0}.journal-card>a{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.75fr);gap:clamp(28px,5vw,80px);align-items:center;color:inherit;text-decoration:none}.journal-card.is-reversed>a{grid-template-columns:minmax(280px,.75fr) minmax(0,1.45fr)}.journal-card.is-reversed .journal-card__media{order:2}.journal-card.is-reversed .journal-card__copy{order:1}.journal-card__media{min-width:0}.journal-media{position:relative;overflow:hidden;background:var(--paper-deep)}.journal-media img,.journal-media video{display:block;width:100%;height:auto;max-height:78vh;object-fit:cover}.journal-card .journal-media--image img{aspect-ratio:4/3}.journal-card--moving-stills .journal-media img,.journal-card--moving-stills .journal-media video{aspect-ratio:16/9}.journal-card--dispatch .journal-media img{aspect-ratio:3/2}.journal-play-mark{position:absolute;left:50%;top:50%;display:grid;place-items:center;width:54px;height:54px;border-radius:50%;transform:translate(-50%,-50%);background:color-mix(in srgb,var(--paper) 78%,transparent);color:var(--ink);font-size:15px;padding-left:3px;box-shadow:0 8px 30px rgba(0,0,0,.16);transition:transform .25s ease,opacity .25s ease}.journal-card:hover .journal-play-mark{transform:translate(-50%,-50%) scale(1.08)}.journal-media--placeholder{aspect-ratio:16/9;display:grid;place-items:center;border:1px solid var(--line)}.journal-media--placeholder small{position:absolute;bottom:18px;left:20px;color:var(--muted);font:600 10px/1 var(--nav-font,sans-serif);letter-spacing:.18em;text-transform:uppercase}.journal-meta{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin:0 0 20px;color:var(--muted);font:600 10px/1.35 var(--nav-font,sans-serif);letter-spacing:.14em;text-transform:uppercase}.journal-meta i{opacity:.55;font-style:normal}.journal-card__copy h2{margin:0 0 18px;font-family:var(--heading-font,Georgia,serif);font-size:clamp(34px,4.4vw,72px);font-weight:400;line-height:.98;letter-spacing:-.04em}.journal-card__subtitle{margin:-8px 0 18px;color:var(--ink);font-size:clamp(15px,1.2vw,18px);line-height:1.55}.journal-card__excerpt{margin:0;max-width:580px;color:var(--muted);font-size:clamp(15px,1.25vw,18px);line-height:1.7}.journal-card__cta{display:inline-block;margin-top:24px;font:600 11px/1.3 var(--nav-font,sans-serif);letter-spacing:.13em;text-transform:uppercase}.journal-card.is-featured{margin-bottom:clamp(20px,3vw,50px)}.journal-card.is-featured>a{grid-template-columns:1fr}.journal-card.is-featured .journal-card__copy{max-width:900px}.journal-card.is-featured .journal-card__copy h2{font-size:clamp(48px,7vw,105px)}.journal-card.is-featured .journal-media img{max-height:84vh}.journal-card--moving-stills>a{grid-template-columns:1fr}.journal-card--moving-stills .journal-card__copy{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.55fr);gap:20px 50px;align-items:start}.journal-card--moving-stills .journal-meta{grid-column:1/-1}.journal-card--moving-stills h2{grid-column:1}.journal-card--moving-stills .journal-card__subtitle,.journal-card--moving-stills .journal-card__excerpt{grid-column:2}.journal-card--moving-stills .journal-card__cta{grid-column:2}.journal-card--dispatch>a{grid-template-columns:minmax(250px,.6fr) minmax(0,1.4fr);align-items:start}.journal-card--dispatch .journal-card__media{order:2}.journal-card--dispatch .journal-card__copy{order:1;position:sticky;top:120px}.journal-card--chronicle{padding-left:clamp(38px,5vw,74px)}.journal-card--chronicle::before{content:"";position:absolute;left:10px;top:-40px;bottom:-40px;width:1px;background:var(--line)}.journal-card--timeline-off{padding-left:0}.journal-card--timeline-off::before{display:none}.journal-timeline-marker{position:absolute;left:4px;top:31px;width:13px;height:13px;border-radius:50%;background:var(--paper);border:2px solid var(--ink);z-index:1}.journal-card--chronicle>a{grid-template-columns:minmax(220px,.55fr) minmax(0,1.45fr);align-items:start}.journal-card--chronicle .journal-card__media{order:2}.journal-card--chronicle .journal-card__copy{order:1}.journal-load-more{display:flex;justify-content:center;margin-top:clamp(70px,9vw,130px)}.journal-card[hidden]{display:none!important}
.journal-entry{padding:clamp(56px,7vw,110px) var(--pad) clamp(90px,12vw,180px)}.journal-entry__back{display:inline-block;margin:0 0 clamp(45px,6vw,85px);color:var(--muted);font:600 10px/1.2 var(--nav-font,sans-serif);letter-spacing:.14em;text-decoration:none;text-transform:uppercase}.journal-entry__header{max-width:1050px;margin-bottom:clamp(48px,7vw,92px)}.journal-entry__header h1{margin:0 0 28px;font-family:var(--title-font,Georgia,serif);font-size:clamp(54px,8.5vw,126px);font-weight:400;line-height:.88;letter-spacing:-.055em}.journal-entry__subtitle{max-width:800px;margin:0 0 22px;font-size:clamp(18px,2vw,28px);line-height:1.5}.journal-entry__lede{max-width:760px;margin:0;color:var(--muted);font-size:clamp(17px,1.6vw,22px);line-height:1.72}.journal-entry__hero{margin-bottom:clamp(60px,8vw,120px)}.journal-entry__hero .journal-media img{width:100%;max-height:88vh;object-fit:contain;background:transparent}.journal-entry__hero .video-frame{max-width:1500px}.journal-entry__body{display:grid;grid-template-columns:minmax(0,760px) minmax(240px,360px);gap:clamp(38px,8vw,120px);align-items:start;margin-bottom:clamp(70px,9vw,130px)}.journal-entry__prose{font-size:clamp(16px,1.2vw,19px);line-height:1.82}.journal-entry__prose p:first-child{font-size:clamp(19px,1.55vw,24px);line-height:1.72}.journal-field-note{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px 0}.journal-field-note>span{display:block;margin-bottom:13px;color:var(--muted);font:600 10px/1.2 var(--nav-font,sans-serif);letter-spacing:.16em;text-transform:uppercase}.journal-field-note p{margin:0;color:var(--muted);font-size:14px;line-height:1.7}.journal-photo-sequence{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(12px,2vw,28px);margin-bottom:clamp(70px,9vw,130px)}.journal-photo-sequence figure{grid-column:span 6;margin:0}.journal-photo-sequence figure:nth-child(3n){grid-column:span 12}.journal-photo-sequence img{display:block;width:100%;height:auto;max-height:82vh;object-fit:contain;background:transparent}.journal-photo-sequence figcaption{margin-top:9px;color:var(--muted);font-size:11px;line-height:1.5}.journal-video-sequence{display:grid;gap:clamp(38px,6vw,80px);margin-bottom:clamp(60px,8vw,120px)}.journal-entry--moving-stills .journal-entry__header{max-width:1200px}.journal-entry--moving-stills .journal-entry__hero{margin-left:calc(var(--pad)*-0.25);margin-right:calc(var(--pad)*-0.25)}.journal-entry--dispatch .journal-entry__body{grid-template-columns:minmax(260px,.48fr) minmax(0,1fr)}.journal-entry--chronicle{position:relative;padding-left:calc(var(--pad) + clamp(24px,4vw,60px))}.journal-entry--chronicle::before{content:"";position:absolute;left:var(--pad);top:120px;bottom:130px;width:1px;background:var(--line)}.journal-entry--timeline-off{padding-left:var(--pad)}.journal-entry--timeline-off::before{display:none}
@media(max-width:900px){.journal-card>a,.journal-card.is-reversed>a,.journal-card--dispatch>a,.journal-card--chronicle>a{grid-template-columns:1fr}.journal-card.is-reversed .journal-card__media,.journal-card--dispatch .journal-card__media,.journal-card--chronicle .journal-card__media{order:1}.journal-card.is-reversed .journal-card__copy,.journal-card--dispatch .journal-card__copy,.journal-card--chronicle .journal-card__copy{order:2}.journal-card--dispatch .journal-card__copy{position:static}.journal-card--moving-stills .journal-card__copy{grid-template-columns:1fr}.journal-card--moving-stills .journal-meta,.journal-card--moving-stills h2,.journal-card--moving-stills .journal-card__subtitle,.journal-card--moving-stills .journal-card__excerpt,.journal-card--moving-stills .journal-card__cta{grid-column:1}.journal-entry__body,.journal-entry--dispatch .journal-entry__body{grid-template-columns:1fr}.journal-photo-sequence figure,.journal-photo-sequence figure:nth-child(3n){grid-column:span 12}}@media(max-width:620px){.journal-page{padding-top:58px}.journal-stream{gap:76px}.journal-card--chronicle{padding-left:30px}.journal-card--timeline-off{padding-left:0}.journal-card--chronicle::before{left:4px}.journal-timeline-marker{left:-2px}.journal-entry{padding-top:44px}.journal-entry--chronicle{padding-left:calc(var(--pad) + 18px)}.journal-entry--timeline-off{padding-left:var(--pad)}.journal-entry--chronicle::before{left:var(--pad)}.journal-card__copy h2{font-size:clamp(32px,11vw,54px)}}
