:root {
  --bg: #f6f0e6;
  --bg-soft: #fbf7ef;
  --surface: #fffdf8;
  --surface-alt: #f8f1e6;
  --border: #e2d7c7;
  --border-strong: #cfc1af;
  --text: #172133;
  --heading: #101827;
  --muted: #70685f;
  --ink: #0d1729;
  --accent: #1d2b4f;
  --accent-soft: #edf2f7;
  --accent-glow: rgba(44, 66, 111, .16);
  --danger: #9f1d2d;
  --danger-dark: #7f1725;
  --danger-bg: #fff1f2;
  --success: #23633e;
  --success-bg: #eef8f1;
  --warning: #765314;
  --warning-bg: #fff8e6;
  --shadow: 0 18px 45px rgba(24, 31, 45, .09);
  --shadow-soft: 0 10px 28px rgba(24, 31, 45, .07);
  --radius: 18px;
  --page-gutter: clamp(1rem, 4vw, 2rem);
}

* { box-sizing: border-box; }

html { height: 100%; min-height: 100%; scroll-behavior: smooth; }

body {
  min-height: 100vh;
  margin: 0;
  display: flex;
  flex-direction: column;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  background:
    radial-gradient(circle at top left, rgba(123, 137, 178, .14), transparent 34rem),
    radial-gradient(circle at 85% 10%, rgba(154, 118, 78, .08), transparent 30rem),
    linear-gradient(180deg, var(--bg-soft) 0%, var(--bg) 100%);
  color: #263040;
  line-height: 1.68;
  font-weight: 400;
}

main.wrap {
  width: 100%;
  flex: 1 0 auto;
  padding-top: clamp(1.4rem, 3vw, 2.75rem);
  padding-bottom: clamp(2.25rem, 4vw, 3.5rem);
}

.wrap {
  width: min(100%, 1180px);
  margin: 0 auto;
  padding: 0 var(--page-gutter);
}

.site-header {
  background:
    radial-gradient(circle at 18% 0%, rgba(255, 255, 255, .78), transparent 24rem),
    linear-gradient(135deg, rgba(255, 253, 248, .96) 0%, rgba(248, 241, 230, .94) 100%);
  color: var(--accent);
  border-bottom: 1px solid rgba(207, 193, 175, .82);
  box-shadow: 0 10px 28px rgba(24, 31, 45, .08);
}

.site-footer {
  margin-top: auto;
  background:
    radial-gradient(circle at 18% 0%, rgba(111, 124, 170, .22), transparent 24rem),
    linear-gradient(135deg, #0d1729 0%, #162139 55%, #1b1b2b 100%);
  color: #fff9ed;
  border-top: 1px solid rgba(255, 255, 255, .08);
  box-shadow: 0 16px 40px rgba(16, 26, 48, .14);
}

.header-row,
.footer-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1.25rem;
}

.header-row { min-height: 96px; padding: 1.05rem var(--page-gutter); }
.footer-row { min-height: 76px; padding: 1rem var(--page-gutter); }

.brand {
  display: inline-flex;
  align-items: center;
  gap: .75rem;
  color: var(--accent);
  font-size: 1.35rem;
  font-weight: 700;
  letter-spacing: .02em;
  text-decoration: none;
}

.brand img {
  height: 58px;
  width: auto;
  display: block;
  filter: drop-shadow(0 8px 18px rgba(29, 43, 79, .12));
}

.brand-fallback { display: none; }

.primary-nav,
.site-footer nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
  gap: .5rem .9rem;
}

nav a {
  color: var(--accent);
  text-decoration: none;
  font-size: .96rem;
  font-weight: 700;
  letter-spacing: .01em;
}

nav a:hover { color: #102044; text-decoration: underline; text-underline-offset: .25rem; }

.site-footer nav a { color: rgba(255, 249, 237, .86); }
.site-footer nav a:hover { color: #fff; }

h1,
h2,
h3 {
  margin: 0 0 .65rem;
  color: var(--heading);
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 700;
  line-height: 1.08;
  letter-spacing: -.035em;
}

h1 { font-size: clamp(2rem, 4vw, 3.5rem); }
h2 { font-size: clamp(1.45rem, 2.4vw, 2rem); }
h3 { font-size: 1.25rem; }
h1::after { content: ""; display: block; width: 3.4rem; height: 2px; margin-top: .65rem; background: linear-gradient(90deg, #22345f, rgba(34, 52, 95, 0)); }
.page-heading h1::after { margin-top: .55rem; }
p { margin: 0 0 1rem; }
a { color: var(--accent); text-decoration-thickness: .08em; text-underline-offset: .18em; }
a:hover { color: #102044; }
code { color: #39445c; background: #f2eadf; border-radius: 6px; padding: .1rem .35rem; }

.panel,
.card,
.content-card {
  background: rgba(255, 253, 248, .92);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: clamp(1.1rem, 2.5vw, 2rem);
  margin: 0 0 1.5rem;
}

.card,
.content-card { box-shadow: var(--shadow-soft); }

.hero.panel {
  min-height: 48vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.page-heading {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 1rem;
  margin-bottom: 1.25rem;
}

.muted,
.help-text { color: var(--muted); font-size: .96rem; }
.lead { color: var(--muted); font-size: 1.13rem; max-width: 68ch; }

label {
  display: block;
  margin: .8rem 0;
  color: #29344a;
  font-weight: 700;
}

input,
textarea,
select {
  width: 100%;
  margin-top: .3rem;
  padding: .68rem .75rem;
  border: 1px solid var(--border-strong);
  border-radius: 12px;
  background: #fff;
  color: var(--text);
  font: inherit;
  font-weight: 400;
  box-shadow: inset 0 1px 2px rgba(24, 31, 45, .04);
}

input:focus,
textarea:focus,
select:focus {
  outline: 3px solid var(--accent-glow);
  border-color: #73809f;
}

textarea { resize: vertical; }

.stacked-form { max-width: 780px; }
.compact-form { max-width: none; }
.form-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.form-actions,
.actions,
.button-row { display: flex; align-items: center; flex-wrap: wrap; gap: .65rem; }

.btn,
.button,
button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .35rem;
  min-height: 2.45rem;
  border: 1px solid transparent;
  border-radius: 999px;
  padding: .62rem 1rem;
  background: var(--accent);
  color: #fffdf8;
  box-shadow: 0 8px 18px rgba(29, 43, 79, .14);
  cursor: pointer;
  font: inherit;
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
  transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
}

.btn:hover,
.button:hover,
button:hover { transform: translateY(-1px); box-shadow: 0 12px 22px rgba(29, 43, 79, .18); text-decoration: none; }
.btn,
.btn:visited,
.btn:hover,
.btn:focus,
.btn:focus-visible,
.btn:active,
.button,
.button:visited,
.button:hover,
.button:focus,
.button:focus-visible,
.button:active,
button,
button:hover,
button:focus,
button:focus-visible,
button:active { color: #fffdf8; }
button:disabled { cursor: not-allowed; opacity: .58; transform: none; box-shadow: none; }
.btn-sm { min-height: 2.15rem; padding: .46rem .78rem; font-size: .9rem; }
.btn-primary,
.button-primary { background: #22345f; }
.btn-secondary,
.btn-neutral,
.button-secondary { background: #fff; color: var(--accent); border-color: var(--border-strong); box-shadow: none; }
.btn-danger,
.button-danger,
.link-btn.btn-danger { background: var(--danger); color: #fff; border-color: var(--danger); box-shadow: 0 8px 18px rgba(127, 23, 37, .14); }
.btn-danger:hover,
.button-danger:hover { background: var(--danger-dark); }
.btn-secondary,
.btn-secondary:visited,
.btn-secondary:hover,
.btn-secondary:focus,
.btn-secondary:focus-visible,
.btn-secondary:active,
.btn-neutral,
.btn-neutral:visited,
.btn-neutral:hover,
.btn-neutral:focus,
.btn-neutral:focus-visible,
.btn-neutral:active,
.button-secondary,
.button-secondary:visited,
.button-secondary:hover,
.button-secondary:focus,
.button-secondary:focus-visible,
.button-secondary:active { color: var(--accent); }
.btn-danger,
.btn-danger:visited,
.btn-danger:hover,
.btn-danger:focus,
.btn-danger:focus-visible,
.btn-danger:active,
.button-danger,
.button-danger:visited,
.button-danger:hover,
.button-danger:focus,
.button-danger:focus-visible,
.button-danger:active { color: #fff; }
.btn-ghost,
.button-ghost { background: rgba(255,255,255,.58); color: var(--accent); border-color: rgba(207, 193, 175, .75); box-shadow: none; }
.text-link { color: var(--accent); text-decoration: none; }
.text-link:hover { text-decoration: underline; text-underline-offset: .2rem; }
.link-btn { background: transparent; color: var(--danger); padding: 0; min-height: auto; border-radius: 0; box-shadow: none; }
.inline-form { display: inline-flex; margin: 0; }
.delete-form { margin: 0; }

.message {
  display: block;
  border: 1px solid var(--border);
  border-left: 6px solid currentColor;
  border-radius: 14px;
  margin: 1rem 0;
  padding: .95rem 1rem;
  font-weight: 700;
  box-shadow: var(--shadow-soft);
}
.message.success,
.success { color: var(--success); background: var(--success-bg); border-color: #a7d3b5; }
.message.error,
.error { color: var(--danger); background: var(--danger-bg); border-color: #eca6ad; }
.message.warning,
.warning { color: var(--warning); background: var(--warning-bg); border-color: #e3c46f; }
.message.info,
.info { color: #30417a; background: #f1f3ff; border-color: #adb8e7; }

.table-wrap,
.admin-table { overflow-x: auto; border: 1px solid var(--border); border-radius: 16px; background: #fffdf8; }
table { width: 100%; border-collapse: collapse; min-width: 760px; }
th,
td { border-bottom: 1px solid var(--border); padding: .85rem .8rem; text-align: left; vertical-align: top; }
th { background: #efe7dc; color: #24304a; font-size: .82rem; letter-spacing: .06em; text-transform: uppercase; }
tbody tr:nth-child(even) { background: rgba(246, 240, 230, .55); }
tbody tr:hover { background: rgba(221, 228, 241, .55); }
tbody tr:last-child td { border-bottom: 0; }
.table-actions,
.admin-actions { display: flex; align-items: center; flex-wrap: wrap; gap: .55rem; min-width: 16rem; }
.table-actions .inline-form,
.admin-actions .inline-form { flex: 0 0 auto; }
.status-pill { display: inline-flex; border-radius: 999px; padding: .18rem .55rem; background: var(--accent-soft); color: var(--accent); font-size: .86rem; font-weight: 700; }

.utility-box {
  margin-top: clamp(1.4rem, 3vw, 2rem);
  padding-top: clamp(1.1rem, 2.4vw, 1.5rem);
  border-top: 1px solid var(--border);
}
.utility-heading,
.utility-box h2 {
  font-size: clamp(1.18rem, 1.7vw, 1.45rem);
  font-weight: 600;
  letter-spacing: -.018em;
}
.utility-heading::after,
.utility-box h2::after { width: 2.4rem; opacity: .48; }
.admin-bulk-sort-form,
.admin-bulk-section-form {
  display: flex;
  align-items: flex-end;
  flex-wrap: wrap;
  gap: .65rem;
}
.admin-bulk-sort-form label,
.admin-bulk-section-form label {
  flex: 1 1 18rem;
  max-width: 28rem;
  margin: 0;
}
.admin-bulk-sort-form .btn,
.admin-bulk-section-form .btn {
  flex: 0 0 auto;
  width: auto;
  white-space: nowrap;
}
.admin-bulk-sort-form input,
.admin-bulk-section-form select {
  min-height: 2.45rem;
}

.upload-form { border-top: 1px solid var(--border); padding-top: 1rem; }
.upload-limit-message[hidden],
.upload-selected-count[hidden],
.upload-progress-message[hidden] { display: none; }
.upload-selected-count,
.upload-progress-message { margin: .3rem 0 0; color: var(--muted); font-weight: 700; }
.upload-progress-message { display: inline-flex; align-items: center; gap: .55rem; }
.spinner { width: 1rem; height: 1rem; border: 2px solid rgba(29, 43, 79, .18); border-top-color: var(--accent); border-radius: 999px; animation: vitrum-spin .75s linear infinite; }
.bulk-metadata-actions { display: flex; align-items: center; flex-wrap: wrap; gap: .75rem 1rem; margin: .75rem 0 1rem; padding-bottom: 1rem; border-bottom: 1px solid var(--border); }
.bulk-metadata-actions .help-text { margin: 0; }
@keyframes vitrum-spin { to { transform: rotate(360deg); } }
.image-admin-grid { display: grid; gap: 1rem; }
.image-admin-card {
  display: grid;
  grid-template-columns: 230px minmax(0, 1fr);
  gap: 1.1rem;
  align-items: start;
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 1rem;
  background: rgba(255, 255, 255, .72);
  box-shadow: var(--shadow-soft);
}
.image-admin-card.is-hero { border-color: #586895; box-shadow: 0 0 0 3px rgba(63, 74, 134, .12), var(--shadow-soft); }
.image-preview { position: relative; align-self: start; min-height: 170px; display: flex; align-items: flex-start; justify-content: center; border: 1px solid var(--border); border-radius: 14px; background: #faf7f0; overflow: hidden; }
.image-preview img { width: 100%; height: auto; max-height: 230px; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.hero-badge { position: absolute; left: .65rem; top: .65rem; background: var(--accent); color: #fff; border-radius: 999px; padding: .25rem .65rem; font-size: .8rem; box-shadow: 0 8px 18px rgba(0,0,0,.18); }
.image-meta-title { margin-bottom: .2rem; }
.image-meta-grid { display: grid; grid-template-columns: minmax(12rem, 1fr) minmax(12rem, 1fr) minmax(7rem, .55fr); gap: .75rem; }
.image-meta-grid label { margin: .45rem 0; }
.image-caption-field { margin-top: .35rem; }
.image-actions { margin-top: .85rem; padding-top: .85rem; border-top: 1px solid var(--border); align-items: center; gap: .55rem; }
.image-actions .inline-form { display: inline-flex; align-items: center; }

.section-admin-list { display: grid; gap: 1rem; margin: 1rem 0 1.5rem; }
.section-admin-row,
.section-admin-card { display: grid; gap: .85rem; background: rgba(255, 255, 255, .68); border: 1px solid var(--border); border-radius: 18px; padding: 1rem; box-shadow: var(--shadow-soft); }
.section-form { display: grid; grid-template-columns: minmax(12rem, 1.1fr) minmax(16rem, 1.7fr) minmax(5rem, .45fr); gap: .8rem; align-items: start; width: 100%; }
.section-form label { margin: 0; }
.section-card-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: .55rem; border-top: 1px solid var(--border); padding-top: .8rem; }
.section-delete-form { margin: 0; }

.public-overview-page,
.public-gallery-page {
  border-color: rgba(226, 215, 199, .76);
  box-shadow: 0 12px 36px rgba(24, 31, 45, .055);
}

.gallery-overview-intro {
  max-width: 760px;
  margin: 0 auto clamp(1.5rem, 3vw, 2.4rem);
  text-align: center;
}

.gallery-overview-intro h1,
.gallery-intro h1,
.gallery-hero-copy h1 {
  font-weight: 500;
  letter-spacing: .035em;
}

.gallery-overview-intro h1::after,
.gallery-intro h1::after,
.gallery-hero-copy h1::after { margin-left: auto; margin-right: auto; opacity: .45; }

.gallery-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 300px));
  justify-content: center;
  gap: clamp(1.25rem, 2.4vw, 2.1rem);
  margin-top: 1.25rem;
}
.gallery-card {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 0;
  color: var(--text);
  text-align: center;
  text-decoration: none;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.gallery-card:hover { box-shadow: none; text-decoration: none; }
.gallery-card:focus-visible { outline: 3px solid var(--accent-glow); outline-offset: 6px; }
.gallery-card-visual {
  position: relative;
  aspect-ratio: 4 / 3;
  border: 1px solid rgba(226, 215, 199, .72);
  border-radius: 0;
  background: linear-gradient(135deg, rgba(232, 224, 211, .78), rgba(255, 253, 248, .94));
  box-shadow: 0 10px 26px rgba(24,31,45,.065);
  overflow: hidden;
}
.gallery-card-visual img { width: 100%; height: 100%; object-fit: cover; display: block; transition: opacity .18s ease, filter .18s ease; }
.gallery-card:hover img { opacity: .92; filter: brightness(1.025); }
.gallery-placeholder { height: 100%; display: block; background: radial-gradient(circle at 50% 42%, rgba(29, 43, 79, .13) 0 .16rem, transparent .18rem), linear-gradient(135deg, rgba(255,255,255,.38), rgba(223,214,201,.4)); }
.gallery-card-body { padding: .82rem .45rem 0; }
.gallery-card h2 { margin: 0; font-family: Inter, ui-sans-serif, system-ui, sans-serif; font-size: .98rem; font-weight: 500; line-height: 1.4; letter-spacing: .035em; color: #263040; }
.gallery-card h2::after { display: none; }
.gallery-date { color: var(--muted); margin: 0; font-size: .92rem; font-weight: 500; letter-spacing: .05em; }

.gallery-intro { max-width: 760px; margin-bottom: clamp(1.8rem, 4vw, 3.2rem); }
.gallery-intro--centered { margin-left: auto; margin-right: auto; text-align: center; }
.gallery-eyebrow { margin: 0 0 .55rem; color: #7b7168; font-size: .76rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; }
.gallery-description { white-space: pre-line; color: #485063; font-size: 1.02rem; line-height: 1.75; }
.gallery-hero-intro { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(18rem, .65fr); gap: clamp(1.4rem, 4vw, 4rem); align-items: center; margin-bottom: clamp(2rem, 5vw, 4rem); }
.gallery-hero-image { display: flex; align-items: center; justify-content: center; border-radius: 0; overflow: hidden; border: 1px solid rgba(226, 215, 199, .74); box-shadow: 0 18px 50px rgba(24,31,45,.09); background: #efe7dc; }
.gallery-hero-image img { display: block; width: 100%; height: auto; max-height: min(68vh, 720px); object-fit: contain; }
.gallery-hero-copy { max-width: 34rem; }
.gallery-hero-copy h1 { font-size: clamp(2rem, 4vw, 3.35rem); }
.gallery-hero-copy h1::after { margin-left: 0; }
.gallery-hero-navigation {
  display: grid;
  justify-items: center;
  gap: .95rem;
  margin: clamp(-1.1rem, -1.4vw, -.35rem) auto clamp(1.7rem, 3.3vw, 2.8rem);
}
.gallery-scroll-cue {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.45rem;
  height: 2.45rem;
  color: rgba(29, 43, 79, .72);
  border: 1px solid rgba(207, 193, 175, .78);
  border-radius: 999px;
  background: rgba(255, 253, 248, .62);
  box-shadow: 0 10px 24px rgba(24, 31, 45, .055);
  text-decoration: none;
  transition: color .16s ease, border-color .16s ease, background .16s ease, transform .16s ease, box-shadow .16s ease;
}
.gallery-scroll-cue:hover,
.gallery-scroll-cue:focus-visible {
  color: var(--accent);
  border-color: rgba(29, 43, 79, .2);
  background: rgba(255, 253, 248, .9);
  box-shadow: 0 12px 28px rgba(24, 31, 45, .075);
  text-decoration: none;
  transform: translateY(2px);
}
.gallery-scroll-cue:focus-visible { outline: 3px solid var(--accent-glow); outline-offset: 4px; }
.gallery-scroll-cue svg {
  display: block;
  width: 1.18rem;
  height: 1.18rem;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.gallery-section-nav {
  display: flex;
  max-width: 100%;
  gap: .2rem clamp(.8rem, 2.2vw, 1.5rem);
  justify-content: center;
  overflow-x: auto;
  padding: .18rem .35rem .48rem;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}
.gallery-section-nav a {
  flex: 0 0 auto;
  color: rgba(38, 48, 64, .76);
  font-size: .78rem;
  font-weight: 650;
  letter-spacing: .16em;
  line-height: 1.4;
  text-decoration: none;
  text-transform: uppercase;
  white-space: nowrap;
  border-bottom: 1px solid transparent;
  padding: .32rem .08rem .38rem;
  transition: color .16s ease, border-color .16s ease;
}
.gallery-section-nav a:hover,
.gallery-section-nav a:focus-visible {
  color: var(--accent);
  border-bottom-color: rgba(29, 43, 79, .34);
  text-decoration: none;
}
.gallery-section-nav a:focus-visible { outline: 3px solid var(--accent-glow); outline-offset: 4px; }
.gallery-content,
.gallery-section { scroll-margin-top: clamp(1.5rem, 4vw, 3.25rem); }
.gallery-section {
  display: flow-root;
  background: transparent;
}
.public-section { margin-top: clamp(1.8rem, 4vw, 3rem); padding-top: clamp(1.5rem, 3vw, 2.2rem); border-top: 1px solid rgba(226, 215, 199, .72); }
.gallery-section--unsectioned {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}
.public-section h2 { font-size: clamp(1.25rem, 1.8vw, 1.65rem); font-weight: 500; letter-spacing: .025em; }
.public-section h2::after { opacity: .35; }
.public-section-text { color: #596171; white-space: pre-line; max-width: 72ch; line-height: 1.75; }
.public-gallery-page {
  --gallery-column-count: 3;
  --gallery-grid-gap: clamp(.65rem, .9vw, .92rem);
}
.public-image-grid {
  display: grid;
  grid-template-columns: repeat(var(--gallery-column-count), minmax(0, 1fr));
  gap: var(--gallery-grid-gap);
  margin-top: 1rem;
}
.public-image-grid figure { margin: 0; }
.public-image-grid figcaption { display: none; }
.public-image-grid img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 0;
  border: 1px solid var(--border);
  display: block;
  box-shadow: var(--shadow-soft);
  background: #efe7dc;
}
.public-image-grid.is-masonry {
  display: block;
  column-count: var(--gallery-column-count);
  column-gap: var(--gallery-grid-gap);
  line-height: 0;
}
.public-image-grid.is-masonry .public-image-item {
  display: inline-block;
  width: 100%;
  margin: 0 0 var(--gallery-grid-gap);
  break-inside: avoid;
  page-break-inside: avoid;
  line-height: 0;
}
.public-image-grid.is-masonry img {
  height: auto;
  aspect-ratio: auto;
  object-fit: contain;
}
.public-image-grid.is-masonry.is-js-masonry {
  position: relative;
  column-count: auto;
  column-gap: normal;
  overflow: hidden;
}
.public-image-grid.is-masonry.is-js-masonry .public-image-item {
  display: block;
  margin: 0;
  will-change: transform;
}
.public-image-grid.is-masonry.gallery-section--few-images {
  display: grid;
  grid-template-columns: repeat(var(--gallery-column-count), minmax(0, 1fr));
  column-count: auto;
  column-gap: normal;
  gap: var(--gallery-grid-gap);
  line-height: normal;
}
.public-image-grid.is-masonry.gallery-section--few-images .public-image-item {
  display: block;
  width: auto;
  margin: 0;
  line-height: normal;
}
.public-image-grid.is-masonry.gallery-section--few-images img {
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.public-image-grid.is-featured-masonry {
  --gallery-gap: var(--gallery-grid-gap);
  display: flex;
  flex-direction: column;
  gap: var(--gallery-gap);
  background: transparent;
}
.featured-mosaic-block {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  grid-template-rows: repeat(2, minmax(0, 1fr));
  gap: var(--gallery-gap);
  background: transparent;
}
.featured-mosaic-block.mosaic-pattern-mixed {
  grid-template-rows: repeat(3, minmax(0, 1fr));
  aspect-ratio: 4 / 3;
}
.featured-mosaic-block.mosaic-pattern-large,
.featured-mosaic-block.mosaic-pattern-wide,
.featured-mosaic-block.mosaic-pattern-tall { aspect-ratio: 2 / 1; }
.featured-mosaic-block.mosaic-pattern-normal {
  grid-template-columns: repeat(var(--gallery-column-count), minmax(0, 1fr));
  grid-template-rows: none;
  aspect-ratio: auto;
}
.featured-mosaic-block.mosaic-pattern-natural {
  display: block;
  aspect-ratio: auto;
}
.public-image-grid.is-featured-masonry .public-image-item {
  min-width: 0;
  min-height: 0;
}
.public-image-grid.is-featured-masonry .public-image-trigger,
.public-image-grid.is-featured-masonry img { height: 100%; }
.public-image-grid.is-featured-masonry img {
  aspect-ratio: auto;
  object-fit: cover;
  background: transparent;
}
.public-image-grid.is-featured-masonry .mosaic-pattern-normal img { aspect-ratio: 1 / 1; }
.public-image-grid.is-featured-masonry .mosaic-pattern-natural img {
  height: auto;
  aspect-ratio: auto;
  object-fit: contain;
}
.featured-mosaic-block.mosaic-pattern-large .public-image-item:nth-child(1),
.featured-mosaic-block.mosaic-pattern-mixed .public-image-item:nth-child(1) { grid-column: span 2; grid-row: span 2; }
.featured-mosaic-block.mosaic-pattern-wide .public-image-item:nth-child(1),
.featured-mosaic-block.mosaic-pattern-mixed .public-image-item:nth-child(5) { grid-column: span 2; }
.featured-mosaic-block.mosaic-pattern-tall .public-image-item:nth-child(1),
.featured-mosaic-block.mosaic-pattern-mixed .public-image-item:nth-child(2) { grid-row: span 2; }
.public-image-grid.is-featured-masonry .public-image-item.is-featured img {
  border-radius: 0;
  box-shadow: 0 18px 42px rgba(24, 31, 45, .12);
}

.public-image-trigger {
  display: block;
  width: 100%;
  min-height: 0;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  cursor: zoom-in;
  line-height: 0;
}
.public-image-trigger:hover,
.public-image-trigger:focus-visible { transform: none; box-shadow: none; }
.public-image-trigger:focus-visible { outline: 3px solid var(--accent-glow); outline-offset: 3px; }
.public-image-trigger img { transition: filter .18s ease, opacity .18s ease, box-shadow .18s ease; }
.public-image-trigger:hover img { filter: brightness(1.025); opacity: .96; box-shadow: 0 16px 34px rgba(24, 31, 45, .13); }
.public-image-grid.is-masonry .public-image-trigger:hover img { box-shadow: var(--shadow-soft); }


/* Admin visual harmonization: neutral, practical and aligned with the public direction. */
.admin-site {
  --bg: #f5f5f3;
  --bg-soft: #fbfbfa;
  --surface: #ffffff;
  --surface-alt: #f0f1ef;
  --border: rgba(31, 35, 40, .10);
  --border-strong: rgba(31, 35, 40, .18);
  --text: #242832;
  --heading: #202124;
  --muted: #686c73;
  --ink: #111827;
  --accent: #17233f;
  --accent-soft: #eef1f5;
  --accent-glow: rgba(23, 35, 63, .14);
  --shadow: 0 18px 46px rgba(17, 24, 39, .055);
  --shadow-soft: 0 10px 28px rgba(17, 24, 39, .045);
  background: linear-gradient(180deg, #fbfbfa 0%, var(--bg) 48%, #f1f1ef 100%);
  color: var(--text);
}

.admin-site main.wrap { padding-top: clamp(1.25rem, 2.8vw, 2.5rem); }
.admin-site .site-header {
  background: rgba(255, 255, 255, .92);
  border-bottom: 1px solid rgba(31, 35, 40, .08);
  box-shadow: 0 8px 28px rgba(17, 24, 39, .035);
  backdrop-filter: blur(18px);
}
.admin-site .header-row { min-height: 84px; padding: .82rem var(--page-gutter); }
.admin-site .brand { color: var(--accent); font-weight: 600; letter-spacing: .01em; }
.admin-site .brand img { height: 52px; filter: drop-shadow(0 8px 16px rgba(23, 35, 63, .08)); }
.admin-site .primary-nav { gap: .45rem clamp(.75rem, 1.8vw, 1.2rem); }
.admin-site .primary-nav a {
  color: rgba(31, 35, 40, .74);
  font-size: .9rem;
  font-weight: 600;
  letter-spacing: .035em;
  text-transform: uppercase;
  text-decoration: none;
}
.admin-site .primary-nav a:hover,
.admin-site .primary-nav a:focus-visible { color: var(--accent); text-decoration: none; }
.admin-site .site-footer {
  background: #172033;
  color: rgba(255, 255, 255, .78);
  border-top: 1px solid rgba(255, 255, 255, .08);
  box-shadow: none;
}
.admin-site .footer-row { min-height: 78px; color: rgba(255, 255, 255, .7); font-size: .92rem; }
.admin-site .site-footer nav a { color: rgba(255, 255, 255, .78); font-weight: 500; }
.admin-site .site-footer nav a:hover { color: #fff; text-decoration: none; }
.admin-site h1,
.admin-site h2,
.admin-site h3 { color: var(--heading); font-weight: 550; letter-spacing: -.018em; }
.admin-site h1 { font-size: clamp(2rem, 3.2vw, 2.85rem); }
.admin-site h1::after { background: rgba(31, 35, 40, .2); height: 1px; width: 2.8rem; }
.admin-site a:not(.btn):not(.button):not(.brand) { color: var(--accent); }
.admin-site a:not(.btn):not(.button):not(.brand):hover,
.admin-site a:not(.btn):not(.button):not(.brand):focus-visible { color: #0f172a; }
.admin-site .panel,
.admin-site .card,
.admin-site .content-card {
  background: rgba(255, 255, 255, .84);
  border-color: rgba(31, 35, 40, .08);
  border-radius: 20px;
  box-shadow: 0 14px 38px rgba(17, 24, 39, .045);
}
.admin-site .page-heading { margin-bottom: 1.45rem; }
.admin-site .muted,
.admin-site .help-text { color: var(--muted); }
.admin-site label { color: #30343b; font-size: .95rem; font-weight: 650; }
.admin-site input,
.admin-site textarea,
.admin-site select {
  border-color: rgba(31, 35, 40, .16);
  border-radius: 10px;
  background: rgba(255, 255, 255, .94);
  box-shadow: inset 0 1px 2px rgba(17, 24, 39, .035);
}
.admin-site input:focus,
.admin-site textarea:focus,
.admin-site select:focus { border-color: rgba(23, 35, 63, .45); outline-color: var(--accent-glow); }
.admin-site .admin-form-control {
  min-height: 2.6rem;
  padding: .62rem .8rem;
  border-radius: 10px;
  font-size: .95rem;
  line-height: 1.2;
}
.admin-site select.admin-form-control { height: 2.6rem; }
.admin-site .admin-action-button {
  min-height: 2.6rem;
  padding: .62rem 1rem;
  border-radius: 999px;
  font-size: .95rem;
  line-height: 1.2;
  white-space: nowrap;
}

.admin-site .table-wrap,
.admin-site .admin-table {
  border-color: rgba(31, 35, 40, .08);
  border-radius: 18px;
  background: rgba(255, 255, 255, .82);
  box-shadow: 0 10px 28px rgba(17, 24, 39, .04);
}
.admin-site th,
.admin-site td { border-bottom-color: rgba(31, 35, 40, .08); padding: .9rem .85rem; }
.admin-site th { background: #f1f2f1; color: rgba(31, 35, 40, .72); font-weight: 700; }
.admin-site tbody tr:nth-child(even) { background: rgba(245, 245, 243, .72); }
.admin-site tbody tr:hover { background: rgba(238, 241, 245, .86); }
.admin-site .section-admin-row,
.admin-site .section-admin-card,
.admin-site .image-admin-card {
  background: rgba(255, 255, 255, .76);
  border-color: rgba(31, 35, 40, .08);
  box-shadow: 0 10px 28px rgba(17, 24, 39, .04);
}
.admin-site .image-preview { border-color: rgba(31, 35, 40, .08); background: #f1f2f1; }
.admin-site .message { box-shadow: none; }

/* Public design refinement: neutral, editorial, photo-first presentation. */
.public-site {
  --bg: #f7f7f5;
  --bg-soft: #f8f8f7;
  --surface: #ffffff;
  --surface-alt: #f1f2f1;
  --border: rgba(31, 35, 40, .10);
  --border-strong: rgba(31, 35, 40, .18);
  --text: #1f2328;
  --heading: #202124;
  --muted: #6d7075;
  --ink: #111827;
  --accent: #17233f;
  --accent-soft: #eef1f5;
  --accent-glow: rgba(23, 35, 63, .14);
  --shadow: 0 18px 46px rgba(17, 24, 39, .055);
  --shadow-soft: 0 10px 28px rgba(17, 24, 39, .045);
  background: linear-gradient(180deg, #fbfbfa 0%, var(--bg) 44%, #f4f4f2 100%);
  color: var(--text);
}

.public-site main.wrap {
  padding-top: clamp(1.15rem, 2.6vw, 2.4rem);
  padding-bottom: clamp(2.8rem, 5vw, 4.8rem);
}

.public-site .site-header {
  background: rgba(255, 255, 255, .9);
  border-bottom: 1px solid rgba(31, 35, 40, .08);
  box-shadow: 0 8px 28px rgba(17, 24, 39, .035);
  backdrop-filter: blur(18px);
}

.public-site .header-row { min-height: 84px; padding: .82rem var(--page-gutter); }
.public-site .brand { font-weight: 600; letter-spacing: .01em; }
.public-site .brand img { height: 52px; filter: drop-shadow(0 8px 16px rgba(23, 35, 63, .08)); }
.public-site .primary-nav { gap: .45rem clamp(.85rem, 2vw, 1.35rem); }
.public-site .primary-nav a {
  color: rgba(31, 35, 40, .74);
  font-size: .9rem;
  font-weight: 500;
  letter-spacing: .035em;
  text-transform: uppercase;
  text-decoration: none;
}
.public-site .primary-nav a:hover,
.public-site .primary-nav a:focus-visible {
  color: var(--accent);
  text-decoration: none;
}

.public-site .site-footer {
  background:
    radial-gradient(circle at 18% 0%, rgba(80, 95, 136, .24), transparent 24rem),
    linear-gradient(135deg, #101827 0%, #17233f 58%, #202433 100%);
  color: rgba(255, 255, 255, .84);
  border-top: 1px solid rgba(255, 255, 255, .08);
  box-shadow: none;
}
.public-site .footer-row { min-height: 82px; color: rgba(255, 255, 255, .72); font-size: .92rem; }
.public-site .site-footer nav a { color: rgba(255, 255, 255, .78); font-weight: 500; }
.public-site .site-footer nav a:hover { color: #fff; text-decoration: none; }

.public-site h1,
.public-site h2,
.public-site h3 {
  color: var(--heading);
  font-weight: 500;
  letter-spacing: -.018em;
}
.public-site h1 { font-size: clamp(2rem, 3.5vw, 3rem); }
.public-site h2 { font-size: clamp(1.35rem, 2vw, 1.85rem); }
.public-site h1::after { background: rgba(31, 35, 40, .2); height: 1px; width: 2.8rem; }
.public-site a { color: var(--accent); }
.public-site a:hover { color: #0f172a; }

.public-site .panel,
.public-site .content-card {
  background: rgba(255, 255, 255, .78);
  border: 1px solid rgba(31, 35, 40, .08);
  border-radius: 0;
  box-shadow: none;
}


.public-site .home-hero {
  display: grid;
  align-content: center;
  min-height: clamp(32rem, 68vh, 48rem);
  max-width: 900px;
  margin: 0 auto;
  padding: clamp(2.25rem, 6vw, 5.2rem) clamp(1.35rem, 5vw, 4.4rem) clamp(2.75rem, 7vw, 5.8rem);
  background: rgba(255, 255, 255, .66);
}
.public-site .home-hero h1 {
  margin-bottom: .85rem;
  font-size: clamp(2.6rem, 7vw, 5.6rem);
  font-weight: 420;
  line-height: .95;
  letter-spacing: -.045em;
}
.public-site .home-hero h1::after { display: none; }
.public-site .home-hero-kicker {
  margin-bottom: 1rem;
  color: rgba(31, 35, 40, .48);
  font-size: .76rem;
  font-weight: 650;
  letter-spacing: .18em;
  text-transform: uppercase;
}
.public-site .home-hero-lead {
  max-width: 48rem;
  margin-bottom: 1.05rem;
  color: rgba(31, 35, 40, .76);
  font-size: clamp(1.12rem, 1.8vw, 1.42rem);
  line-height: 1.55;
}
.public-site .home-hero-copy {
  max-width: 46rem;
  margin-bottom: 1.65rem;
  color: rgba(31, 35, 40, .62);
  font-size: 1rem;
  line-height: 1.78;
}
.public-site .home-hero-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .8rem 1.05rem;
}
.public-site .vitrum-hero__brand-mark {
  width: min(100%, clamp(16rem, 58vw, 36rem));
  margin: clamp(2.4rem, 5vw, 4.4rem) auto 0;
  opacity: 1;
  pointer-events: none;
  user-select: none;
}
.public-site .vitrum-hero__brand-mark img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
}
.public-site .home-hero-link {
  color: rgba(31, 35, 40, .68);
  font-size: .94rem;
  font-weight: 600;
  text-decoration: none;
  border-bottom: 1px solid rgba(31, 35, 40, .18);
}
.public-site .home-hero-link:hover,
.public-site .home-hero-link:focus-visible {
  color: var(--accent);
  border-bottom-color: rgba(23, 35, 63, .42);
  text-decoration: none;
}
.public-site a.btn,
.public-site a.btn:visited,
.public-site a.btn:hover,
.public-site a.btn:focus,
.public-site a.btn:focus-visible,
.public-site a.btn:active,
.admin-site a.btn,
.admin-site a.btn:visited,
.admin-site a.btn:hover,
.admin-site a.btn:focus,
.admin-site a.btn:focus-visible,
.admin-site a.btn:active { color: #fffdf8; }
.public-site a.btn-secondary,
.public-site a.btn-secondary:visited,
.public-site a.btn-secondary:hover,
.public-site a.btn-secondary:focus,
.public-site a.btn-secondary:focus-visible,
.public-site a.btn-secondary:active,
.public-site a.btn-neutral,
.public-site a.btn-neutral:visited,
.public-site a.btn-neutral:hover,
.public-site a.btn-neutral:focus,
.public-site a.btn-neutral:focus-visible,
.public-site a.btn-neutral:active,
.admin-site a.btn-secondary,
.admin-site a.btn-secondary:visited,
.admin-site a.btn-secondary:hover,
.admin-site a.btn-secondary:focus,
.admin-site a.btn-secondary:focus-visible,
.admin-site a.btn-secondary:active,
.admin-site a.btn-neutral,
.admin-site a.btn-neutral:visited,
.admin-site a.btn-neutral:hover,
.admin-site a.btn-neutral:focus,
.admin-site a.btn-neutral:focus-visible,
.admin-site a.btn-neutral:active { color: var(--accent); }

.public-site .public-overview-page,
.public-site .public-gallery-page {
  padding: clamp(1.2rem, 3vw, 2.6rem) 0 0;
  background: transparent;
  border: 0;
  box-shadow: none;
}
.public-site .public-gallery-page {
  --gallery-hero-nav-breathing-room: clamp(1rem, 2.4vw, 1.9rem);
  overflow: visible;
}
.public-site .gallery-hero-region {
  position: relative;
  z-index: 1;
  padding-bottom: var(--gallery-hero-nav-breathing-room);
  background: transparent;
}
.public-site .gallery-hero-region::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 100vw;
  transform: translateX(-50%);
  border-bottom: 1px solid rgba(31, 35, 40, .08);
  pointer-events: none;
}

.public-site .gallery-overview-intro {
  margin-bottom: clamp(1.7rem, 3vw, 2.7rem);
}
.public-site .gallery-overview-intro h1,
.public-site .gallery-intro h1,
.public-site .gallery-hero-copy h1 {
  font-weight: 450;
  letter-spacing: -.02em;
}
.public-site .gallery-overview-intro h1::after,
.public-site .gallery-intro h1::after,
.public-site .gallery-hero-copy h1::after { display: none; }

.public-site .gallery-grid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 320px));
  gap: clamp(1.35rem, 2.5vw, 2.4rem);
  margin-top: 0;
}
.public-site .gallery-card {
  color: var(--text);
  text-decoration: none;
}
.public-site .gallery-card:hover,
.public-site .gallery-card:focus-visible { text-decoration: none; }
.public-site .gallery-card-visual {
  border: 1px solid rgba(31, 35, 40, .08);
  background: #f1f2f1;
  box-shadow: 0 8px 24px rgba(17, 24, 39, .04);
  transition: border-color .18s ease, box-shadow .18s ease, filter .18s ease;
}
.public-site .gallery-card:hover .gallery-card-visual,
.public-site .gallery-card:focus-visible .gallery-card-visual {
  border-color: rgba(31, 35, 40, .14);
  box-shadow: 0 14px 34px rgba(17, 24, 39, .07);
}
.public-site .gallery-card-visual img { transition: opacity .18s ease, filter .18s ease; }
.public-site .gallery-card:hover img { opacity: .94; filter: brightness(1.02) saturate(.98); }
.public-site .gallery-placeholder {
  background:
    radial-gradient(circle at 50% 44%, rgba(31, 35, 40, .15) 0 .14rem, transparent .16rem),
    linear-gradient(135deg, #f4f4f2, #e9eae8);
}
.public-site .gallery-card-body { padding: .72rem .2rem 0; }
.public-site .gallery-card h2 {
  color: rgba(31, 35, 40, .86);
  font-size: .94rem;
  font-weight: 450;
  letter-spacing: .02em;
  line-height: 1.45;
}

.public-site .gallery-intro { max-width: 720px; margin-bottom: clamp(2rem, 5vw, 4rem); }
.public-site .gallery-eyebrow {
  color: rgba(31, 35, 40, .48);
  font-size: .7rem;
  font-weight: 550;
  letter-spacing: .18em;
}
.public-site .gallery-description {
  margin-top: 1.05rem;
  color: rgba(31, 35, 40, .68);
  font-size: clamp(.98rem, 1.2vw, 1.06rem);
  line-height: 1.82;
}
.public-site .gallery-date {
  color: rgba(31, 35, 40, .48);
  font-size: .78rem;
  font-weight: 500;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.public-site .gallery-hero-intro {
  grid-template-columns: minmax(0, 1.45fr) minmax(17rem, .55fr);
  gap: clamp(1.7rem, 5vw, 5.2rem);
  align-items: center;
  margin-bottom: clamp(2.25rem, 5.8vw, 5rem);
}
.public-site .gallery-hero-image {
  border: 1px solid rgba(31, 35, 40, .08);
  background: #f1f2f1;
  box-shadow: 0 18px 48px rgba(17, 24, 39, .055);
}
.public-site .gallery-hero-image img { max-height: min(70vh, 760px); }
.public-site .gallery-hero-copy { max-width: 31rem; }
.public-site .gallery-hero-copy h1 {
  font-size: clamp(2rem, 3.8vw, 3.15rem);
  line-height: 1.05;
}

.public-site .gallery-hero-navigation {
  gap: .8rem;
  margin: clamp(-1.15rem, -1.3vw, -.25rem) auto 0;
}
.public-site .gallery-scroll-cue {
  width: 2.18rem;
  height: 2.18rem;
  color: rgba(31, 35, 40, .56);
  border-color: rgba(31, 35, 40, .14);
  background: rgba(255, 255, 255, .56);
  box-shadow: none;
}
.public-site .gallery-scroll-cue:hover,
.public-site .gallery-scroll-cue:focus-visible {
  color: var(--accent);
  border-color: rgba(31, 35, 40, .22);
  background: #fff;
  box-shadow: 0 8px 20px rgba(17, 24, 39, .055);
  transform: none;
}
.public-site .gallery-scroll-cue svg { width: 1rem; height: 1rem; stroke-width: 1.65; }
.public-site .gallery-section-nav {
  gap: .25rem clamp(1rem, 2.5vw, 1.9rem);
  max-width: min(100%, 980px);
  margin: 0 auto;
  padding: .58rem .25rem .68rem;
  background: #fff;
  border-bottom: 1px solid rgba(31, 35, 40, .08);
}
.public-site .gallery-section-nav a {
  color: rgba(31, 35, 40, .58);
  font-size: .72rem;
  font-weight: 500;
  letter-spacing: .14em;
  padding: .3rem 0;
}
.public-site .gallery-section-nav a:hover,
.public-site .gallery-section-nav a:focus-visible {
  color: var(--accent);
  border-bottom-color: rgba(31, 35, 40, .24);
}

.public-site .gallery-content-region {
  position: relative;
  z-index: 0;
  margin: 0 calc(-1 * var(--page-gutter));
  padding: 0 var(--page-gutter) clamp(2.8rem, 6vw, 5.8rem);
  background: #fff;
  box-shadow: 0 0 0 100vmax #fff;
  clip-path: inset(0 -100vmax 0 -100vmax);
  scroll-margin-top: clamp(1.5rem, 4vw, 3.25rem);
}
.public-site .gallery-content-inner {
  position: relative;
  z-index: 1;
  padding-top: clamp(1.35rem, 3vw, 2.5rem);
}

.public-site .public-section {
  margin-top: clamp(2.4rem, 5vw, 4.5rem);
  padding-top: clamp(1.8rem, 3.8vw, 3.2rem);
  border-top: 1px solid rgba(31, 35, 40, .08);
}
.public-site .gallery-content-inner > .public-section:first-child {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}
.public-site .gallery-section,
.public-site .gallery-section--unsectioned {
  background: transparent;
}
.public-site .public-section h2 {
  margin-bottom: .85rem;
  font-size: clamp(1.25rem, 1.65vw, 1.58rem);
  font-weight: 450;
  letter-spacing: -.01em;
}
.public-site .public-section h2::after { display: none; }
.public-site .public-section-text {
  color: rgba(31, 35, 40, .66);
  max-width: 68ch;
  line-height: 1.82;
}

.public-site .public-gallery-page {
  --gallery-grid-gap: clamp(.55rem, .9vw, .9rem);
}
.public-site .public-image-grid {
  margin-top: clamp(1.05rem, 2vw, 1.5rem);
  background: transparent;
}
.public-site .public-image-grid,
.public-site .public-image-grid figure,
.public-site .public-image-item,
.public-site .featured-mosaic-block {
  background: transparent;
}
.public-site .public-image-grid img {
  border: 0;
  box-shadow: none;
  background: transparent;
}
.public-site .public-image-grid.is-featured-masonry img { background: transparent; }
.public-site .public-image-grid.is-featured-masonry .public-image-item.is-featured img { box-shadow: none; }
.public-site .public-image-trigger img { transition: filter .18s ease, opacity .18s ease; }
.public-site .public-image-trigger:hover img {
  filter: brightness(1.025) saturate(.98);
  opacity: .96;
  box-shadow: none;
}
.public-site .public-image-trigger:focus-visible { outline-color: rgba(23, 35, 63, .18); }

.public-site .legal-page {
  max-width: 820px;
  padding: clamp(1.7rem, 4vw, 3rem);
  background: rgba(255, 255, 255, .82);
  color: rgba(31, 35, 40, .78);
  line-height: 1.78;
}
.public-site .legal-page h1 { font-size: clamp(2rem, 3vw, 2.7rem); }
.public-site .legal-page h1::after { display: none; }
.public-site .legal-page h1,
.public-site .legal-page h2 { color: var(--heading); font-weight: 450; letter-spacing: -.015em; }
.public-site .legal-page h2 { margin-top: 2.1rem; font-size: clamp(1.18rem, 1.7vw, 1.42rem); }
.public-site .legal-page .lead { color: rgba(31, 35, 40, .62); font-size: 1.02rem; }
.public-site .legal-list dt { color: rgba(31, 35, 40, .84); font-weight: 600; }

.viewer-is-open { overflow: hidden; }
.gallery-viewer {
  --viewer-image-max-width: min(94vw, 1800px);
  --viewer-image-max-height: 88vh;
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: grid;
  place-items: center;
  width: 100vw;
  height: 100vh;
  height: 100dvh;
  padding: clamp(.75rem, 2vw, 1.5rem) clamp(.75rem, 3vw, 3rem);
  overflow: hidden;
  background: rgba(8, 8, 10, .95);
  opacity: 0;
  pointer-events: none;
  transition: opacity .22s ease;
}
.gallery-viewer.is-open {
  opacity: 1;
  pointer-events: auto;
}
.gallery-viewer.viewer--animating { pointer-events: auto; }
.gallery-viewer[hidden] { display: none; }
.gallery-viewer__frame {
  position: static;
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  max-width: 100%;
  max-height: 100%;
  padding: 0;
  border: 0;
  background: transparent;
}
.gallery-viewer__image {
  display: block;
  max-width: var(--viewer-image-max-width);
  max-height: var(--viewer-image-max-height);
  width: auto;
  height: auto;
  padding: 0;
  border: 0;
  object-fit: contain;
  border-radius: 0;
  box-shadow: 0 24px 80px rgba(0, 0, 0, .44);
  background: transparent;
  opacity: 1;
  transition: opacity .16s ease;
}
.gallery-viewer.viewer--animating .gallery-viewer__image,
.gallery-viewer__image.gallery-viewer__image--hidden { opacity: 0; }
.viewer-transition-clone {
  position: fixed;
  z-index: 1001;
  display: block;
  max-width: none;
  max-height: none;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  outline: 0;
  background: transparent;
  box-shadow: none;
  object-fit: contain;
  pointer-events: none;
  transform-origin: top left;
  will-change: transform, opacity, clip-path;
}
.gallery-viewer__caption {
  position: fixed;
  left: 50%;
  bottom: 1.2rem;
  max-width: min(70ch, 86vw);
  margin: 0;
  padding: .42rem .8rem;
  transform: translateX(-50%);
  border: 1px solid rgba(255, 255, 255, .1);
  border-radius: 999px;
  background: rgba(7, 10, 18, .44);
  color: rgba(255, 249, 237, .78);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: .25rem .5rem;
  font-size: .9rem;
  line-height: 1.45;
  text-align: center;
}
.gallery-viewer__caption--stacked {
  flex-direction: column;
  flex-wrap: nowrap;
  gap: .08rem;
  border-radius: 16px;
}
.gallery-viewer__caption-text,
.gallery-viewer__exif { display: block; }
.gallery-viewer__exif {
  color: rgba(255, 249, 237, .6);
  font-size: .82em;
}
.gallery-viewer__caption-separator {
  color: rgba(255, 255, 255, .32);
}
.gallery-viewer__caption[hidden] { display: none; }
.gallery-viewer__slideshow {
  position: fixed;
  top: 24px;
  left: 50%;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .28rem;
  transform: translateX(-50%);
  border: 1px solid rgba(255, 255, 255, .16);
  border-radius: 999px;
  background: rgba(16, 24, 39, .58);
  box-shadow: 0 12px 30px rgba(0, 0, 0, .24);
  backdrop-filter: blur(14px);
}
.gallery-viewer__slideshow-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.6rem;
  min-height: 2.3rem;
  padding: .28rem .72rem;
  border: 1px solid transparent;
  border-radius: 999px;
  background: transparent;
  color: rgba(255, 253, 248, .78);
  font: inherit;
  font-size: .9rem;
  font-weight: 600;
  line-height: 1;
  letter-spacing: .02em;
  box-shadow: none;
  transition: background .16s ease, border-color .16s ease, box-shadow .16s ease, color .16s ease;
}
.gallery-viewer__slideshow-button:hover,
.gallery-viewer__slideshow-button:focus-visible {
  background: rgba(255, 255, 255, .1);
  border-color: rgba(255, 255, 255, .22);
  color: #fffdf8;
}
.gallery-viewer__slideshow-button:focus-visible { outline: 3px solid rgba(255,255,255,.32); outline-offset: 3px; }
.gallery-viewer__slideshow-button.is-active,
.gallery-viewer__slideshow-button[aria-pressed="true"] {
  border-color: rgba(255, 255, 255, .36);
  background: rgba(255, 253, 248, .18);
  color: #fffdf8;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08), 0 8px 20px rgba(0, 0, 0, .22);
  text-decoration: underline;
  text-underline-offset: .22em;
}
.gallery-viewer__control {
  position: fixed;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3.35rem;
  height: 3.35rem;
  min-height: 0;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, .22);
  background: rgba(16, 24, 39, .72);
  color: #fffdf8;
  line-height: 0;
  box-shadow: 0 12px 30px rgba(0, 0, 0, .28);
  transition: background .16s ease, border-color .16s ease, box-shadow .16s ease, opacity .16s ease;
}
.gallery-viewer__icon {
  display: block;
  width: 1.24rem;
  height: 1.24rem;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.25;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.gallery-viewer__prev .gallery-viewer__icon,
.gallery-viewer__next .gallery-viewer__icon { width: 1.36rem; height: 1.36rem; }
.gallery-viewer__control:hover,
.gallery-viewer__control:focus-visible { background: rgba(29, 43, 79, .9); border-color: rgba(255,255,255,.34); box-shadow: 0 14px 34px rgba(0,0,0,.34); }
.gallery-viewer__control:focus-visible { outline: 3px solid rgba(255,255,255,.32); outline-offset: 3px; }
.gallery-viewer__close,
.gallery-viewer__close:hover,
.gallery-viewer__close:focus-visible { top: 24px; right: 24px; transform: none; }
.gallery-viewer__prev,
.gallery-viewer__prev:hover,
.gallery-viewer__prev:focus-visible,
.gallery-viewer__next,
.gallery-viewer__next:hover,
.gallery-viewer__next:focus-visible { top: 50%; transform: translateY(-50%); }
.gallery-viewer__prev { left: 24px; }
.gallery-viewer__next { right: 24px; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .gallery-viewer,
  .gallery-viewer__image { transition-duration: .01ms; }
}

@media (max-width: 760px) {
  .gallery-hero-navigation { margin-top: -.6rem; }
  .public-site .public-gallery-page {
    --gallery-hero-nav-breathing-room: clamp(.8rem, 4vw, 1.4rem);
  }
  .gallery-section-nav { justify-content: flex-start; width: 100%; padding-left: .15rem; padding-right: .15rem; }
  .gallery-viewer {
    --viewer-image-max-width: 94vw;
    --viewer-image-max-height: 84vh;
    padding: .75rem;
  }
  .gallery-viewer__slideshow { top: .85rem; max-width: calc(100vw - 6.8rem); }
  .gallery-viewer__slideshow-button { min-width: 2.35rem; min-height: 2.25rem; padding-left: .58rem; padding-right: .58rem; font-size: .84rem; }
  .gallery-viewer__close,
  .gallery-viewer__close:hover,
  .gallery-viewer__close:focus-visible { right: .85rem; top: .85rem; }
  .gallery-viewer__prev { left: .85rem; }
  .gallery-viewer__next { right: .85rem; }
  .gallery-viewer__caption { bottom: .85rem; border-radius: 16px; }
}

@media (orientation: landscape) and (max-height: 600px) {
  .gallery-viewer {
    --viewer-image-max-width: 90vw;
    --viewer-image-max-height: 90vh;
    padding: .45rem .7rem;
  }
  .gallery-viewer__slideshow { top: .55rem; }
  .gallery-viewer__close,
  .gallery-viewer__close:hover,
  .gallery-viewer__close:focus-visible { top: .55rem; right: .65rem; }
  .gallery-viewer__caption {
    bottom: .55rem;
    max-width: min(62ch, 76vw);
    max-height: 3.2rem;
    overflow: hidden;
    padding: .32rem .68rem;
    font-size: .82rem;
    line-height: 1.3;
  }
}

.legal-page { max-width: 900px; margin-left: auto; margin-right: auto; }
.legal-page h1,
.legal-page h2 { font-weight: 500; line-height: 1.16; letter-spacing: -.015em; }
.legal-page h2 { margin-top: 1.8rem; }
.legal-list { display: grid; grid-template-columns: minmax(8rem, auto) 1fr; gap: .45rem 1rem; }
.legal-list dt { font-weight: 700; color: #263149; }
.legal-list dd { margin: 0; }

@media (min-width: 1200px) {
  .public-gallery-page { --gallery-column-count: 4; }
}

@media (min-width: 1700px) {
  .public-gallery-page { --gallery-column-count: 5; }
}

@media (min-width: 1200px) {
  .public-image-grid.is-featured-masonry .public-image-item.is-featured .public-image-trigger { border-radius: 0; }
}

@media (max-width: 960px) {
  .gallery-hero-intro,
  .public-site .gallery-hero-intro { grid-template-columns: minmax(0, 1fr); }
  .gallery-hero-copy,
  .public-site .gallery-hero-copy { max-width: 44rem; }
  .gallery-hero-image,
  .public-site .gallery-hero-image { width: 100%; }
  .gallery-hero-image img,
  .public-site .gallery-hero-image img { width: 100%; max-height: none; }
  .image-admin-card { grid-template-columns: 1fr; }
  .image-preview img { max-height: none; }
  .section-form,
  .image-meta-grid { grid-template-columns: 1fr; }
  .section-card-actions { justify-content: flex-start; flex-wrap: wrap; }
  .public-gallery-page { --gallery-column-count: 2; }
  .featured-mosaic-block,
  .featured-mosaic-block.mosaic-pattern-mixed,
  .featured-mosaic-block.mosaic-pattern-large,
  .featured-mosaic-block.mosaic-pattern-wide,
  .featured-mosaic-block.mosaic-pattern-tall {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: none;
    aspect-ratio: auto;
  }
  .featured-mosaic-block.mosaic-pattern-large .public-image-item:nth-child(1),
  .featured-mosaic-block.mosaic-pattern-mixed .public-image-item:nth-child(1),
  .featured-mosaic-block.mosaic-pattern-wide .public-image-item:nth-child(1),
  .featured-mosaic-block.mosaic-pattern-mixed .public-image-item:nth-child(5),
  .featured-mosaic-block.mosaic-pattern-tall .public-image-item:nth-child(1),
  .featured-mosaic-block.mosaic-pattern-mixed .public-image-item:nth-child(2) { grid-column: auto; grid-row: auto; }
  .public-image-grid.is-featured-masonry img { aspect-ratio: 1 / 1; height: auto; }
}

@media (max-width: 760px) {
  main.wrap { padding-top: 1.25rem; }
  .public-site main.wrap { padding-top: 1rem; }
  .public-site .header-row { min-height: 70px; }
  .header-row,
  .footer-row,
  .page-heading { align-items: flex-start; flex-direction: column; }
  .header-row,
  .footer-row { padding-left: var(--page-gutter); padding-right: var(--page-gutter); }
  .primary-nav,
  .site-footer nav { justify-content: flex-start; }
  .form-grid { grid-template-columns: 1fr; }
  .gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .actions { align-items: flex-start; }
  .brand img { height: 48px; }
  .header-row { min-height: 74px; }
  .public-gallery-page { --gallery-column-count: 2; }
  .public-image-grid.is-featured-masonry {
    display: block;
    column-count: var(--gallery-column-count);
    column-gap: var(--gallery-grid-gap);
    line-height: 0;
  }
  .public-image-grid.is-featured-masonry .featured-mosaic-block { display: contents; }
  .public-image-grid.is-featured-masonry .public-image-item {
    display: inline-block;
    width: 100%;
    margin: 0 0 var(--gallery-grid-gap);
    break-inside: avoid;
    page-break-inside: avoid;
    line-height: 0;
  }
  .public-image-grid.is-featured-masonry .public-image-trigger,
  .public-image-grid.is-featured-masonry img { height: auto; }
  .public-image-grid.is-featured-masonry img,
  .public-image-grid.is-featured-masonry .mosaic-pattern-normal img {
    aspect-ratio: auto;
    object-fit: contain;
  }
  .gallery-hero-intro,
  .public-site .gallery-hero-intro { gap: 1.25rem; }
  .gallery-hero-image,
  .public-site .gallery-hero-image { width: 100%; }
  .gallery-hero-image img,
  .public-site .gallery-hero-image img { max-height: none; }
  .legal-list { grid-template-columns: 1fr; }
}

@media (max-width: 359px) {
  .gallery-grid { grid-template-columns: 1fr; }
  .public-gallery-page { --gallery-column-count: 1; }
}


.checkbox-label {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  width: auto;
  margin: .8rem 0;
  line-height: 1.35;
}
.checkbox-label input[type="checkbox"] {
  flex: 0 0 auto;
  width: auto;
  margin: 0;
}
.label-admin-list {
  display: grid;
  gap: .85rem;
  margin-top: 1rem;
}
.label-admin-heading,
.label-admin-card {
  display: grid;
  grid-template-columns: minmax(11rem, 1fr) minmax(15rem, 1.35fr) minmax(8rem, .7fr) minmax(8rem, auto);
  gap: .85rem;
  align-items: start;
}
.label-admin-fields {
  display: grid;
  grid-template-columns: minmax(11rem, 1fr) minmax(15rem, 1.35fr) minmax(8rem, .7fr);
  gap: .85rem;
  align-items: start;
}
.label-admin-heading {
  padding: 0 .95rem;
  color: var(--muted);
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.label-admin-card {
  padding: 1rem;
}
.label-admin-form,
.label-admin-fields { min-width: 0; }
.label-admin-form {
  display: contents;
}
.label-admin-fields {
  grid-column: 1 / 4;
}
.label-admin-fields label,
.label-admin-fields .label-status-cell {
  margin: 0;
}
.label-status-cell {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .5rem;
  padding-top: 1.7rem;
}
.label-protected-toggle { margin: 0; }
.label-admin-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: .55rem;
  min-width: 8rem;
  padding-top: 1.7rem;
}
.gallery-password-panel {
  max-width: 620px;
  margin: clamp(1.6rem, 4vw, 3rem) auto 0;
}
.gallery-password-form { margin-top: 1rem; }

@media (max-width: 760px) {
  .label-admin-heading { display: none; }
  .label-admin-card,
  .label-admin-fields { grid-template-columns: 1fr; }
  .label-admin-fields,
  .label-admin-actions { grid-column: auto; }
  .label-status-cell,
  .label-admin-actions { padding-top: 0; }
  .label-admin-actions { justify-content: flex-start; border-top: 1px solid var(--border); padding-top: .85rem; }
}

.gallery-overview-section-nav {
  margin-bottom: clamp(1.4rem, 3vw, 2.2rem);
}

.gallery-overview-group {
  scroll-margin-top: clamp(1.5rem, 4vw, 3.25rem);
}

.gallery-overview-group .gallery-grid {
  margin-top: clamp(1rem, 2.4vw, 1.6rem);
}

.admin-gallery-section-form {
  margin-top: clamp(1rem, 2.5vw, 1.6rem);
}
