/* V2 design review: consistent spacing and resilient intermediate layouts. */
:root { --section-gutter: clamp(14px, 2vw, 30px); }
.actions-band, .page-section, .photo-ribbon { padding-inline: var(--section-gutter); }
.actions-grid, .page-section .info-grid, .photo-ribbon-inner { max-width: 1520px; gap: 16px; }
.actions-band { padding-block: 22px; }
.page-section { padding-block: 22px 26px; }
.photo-ribbon { padding-block: 26px; }
.nav-row, .hero-copy, .page-hero-title, .footer-inner > div,
.visit-block, .room-list details { min-width: 0; }
.site-footer a, .article-panel a { overflow-wrap: anywhere; }
.site-footer h2 { margin-top: 0; }
.site-footer h3 { margin-bottom: 12px; }
.footer-inner { grid-template-columns: minmax(0,1.25fr) minmax(0,.8fr) minmax(0,1fr); }
.footer-bottom { line-height: 1.6; }
.page-section .info-grid { grid-template-columns: minmax(0,1.65fr) minmax(230px,.75fr) minmax(0,1.2fr); }
.page-section .welcome-panel { gap: 22px; }
.page-section .welcome-content h2 { margin-bottom: 12px; }
.section-flourish { margin-bottom: 14px; }
.heritage-button { min-width: 0; max-width: 100%; min-height: 44px; align-self: flex-start; }
.heritage-button:focus-visible { outline-offset: -8px; outline-color: #fff7dc; }
.page-section .hours-panel { padding: 22px 20px; }
.hours-rule { margin-top: 5px; margin-bottom: 16px; }
.page-section .hours-panel dl > div { margin-bottom: 12px; }
.hours-link { padding-block: 10px 4px; }
.page-section .architecture-panel a { padding-block: 8px 4px; }
.action-card { padding-right: 36px; }
.arrow-glyph { right: 17px; pointer-events: none; }
.action-copy strong { overflow-wrap: normal; }
.photo-ribbon figure { display: flex; flex-direction: column; }
.photo-ribbon figure > a { display: block; }
.photo-ribbon figcaption { flex: 1; display: grid; place-items: center; min-height: 48px; }
.photo-ribbon a:focus-visible { outline-offset: -4px; }
.photo-gallery { grid-template-columns: repeat(auto-fit,minmax(min(190px,100%),1fr)); }
.photo-tile { min-width: 0; }
.photo-tile:focus-visible { outline-offset: -4px; }
.room-list img { max-width: min(230px,100%); }
.visit-layout { grid-template-columns: repeat(2,minmax(0,1fr)); }
.article-panel h2:first-child { margin-top: 0; }
.article-panel p:first-of-type::first-letter { font: inherit; color: inherit; }
.story-aside a[aria-current="page"] { font-weight: 700; text-decoration: underline; text-decoration-color: #9e753f; }
.mobile-nav summary { min-width: 44px; min-height: 44px; }
.mobile-nav ul { margin-top: 6px; top: 100%; max-height: min(70vh,520px); overflow-y: auto; }
.mobile-nav a[aria-current="page"] { color: #ffe3a6; font-weight: 700; background: #ffffff0d; }
.dialog-close { min-width: 44px; min-height: 44px; display: grid; place-items: center; }
.image-dialog { padding-top: 58px; }
.image-dialog img { max-height: calc(90dvh - 130px); }
/* Use the compact header before navigation crowds the central nameplate. */
@media (min-width: 651px) and (max-width: 1180px) {
  .nav-row { display: flex; justify-content: center; padding: 0 140px 0 55px; }
  .nav-set { display: none; }
  .brand { flex: 0 1 490px; width: min(490px,100%); min-height: 108px; top: -13px; padding: 21px 27px 20px; }
  .brand-name { font-size: clamp(1.45rem,2.7vw,1.95rem); white-space: normal; }
  .mobile-nav { display: block; position: absolute; right: 52px; top: 24px; z-index: 5; }
  .mobile-nav summary { list-style: none; cursor: pointer; border: 1px solid #ceb990; background: #1a4138; color: #fff1db; padding: 10px 12px; font-size: .82rem; }
  .mobile-nav summary::-webkit-details-marker { display: none; }
  .mobile-nav ul { position: absolute; right: 0; min-width: 235px; padding: 10px 14px; background: #16362f; border: 2px solid #c4ab83; box-shadow: 0 8px 22px #0006; list-style: none; }
  .mobile-nav li a { display: block; color: #fff0d2; text-decoration: none; padding: 10px 5px; border-bottom: 1px solid #ffffff2b; }
}
/* Reserve enough width for each engraved placard and its full title. */
@media (min-width: 651px) and (max-width: 1180px) {
  .actions-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .action-card { grid-template-columns: minmax(80px,32%) minmax(0,1fr); min-height: 155px; padding: 22px 38px 22px 26px; gap: 14px; }
  .action-copy strong { font-size: 1.75rem; }
  .action-copy small { font-size: .95rem; }
}
@media (min-width: 1181px) {
  .action-card { grid-template-columns: minmax(64px,30%) minmax(0,1fr); gap: 10px; padding-left: 22px; }
  .action-copy strong { font-size: clamp(1.4rem,1.85vw,1.85rem); }
}
@media (min-width: 651px) and (max-width: 1319px) {
  .page-section .info-grid { grid-template-columns: minmax(0,.85fr) minmax(0,1.15fr); }
  .page-section .welcome-panel { grid-column: 1/-1; grid-template-columns: minmax(180px,32%) minmax(0,1fr); padding: 26px; }
  .page-section .welcome-content h2 { font-size: clamp(1.7rem,2.4vw,2.1rem); }
  .page-section .welcome-content p { font-size: 1.05rem; max-width: 62ch; }
  .page-section .hours-panel, .page-section .architecture-panel { grid-column: auto; min-height: 300px; }
  .page-section .architecture-panel { grid-template-columns: 40% minmax(0,1fr); }
  .page-section .architecture-panel .architecture-body { padding: 30px 20px 24px 0; }
  .page-section .architecture-panel h2 { font-size: clamp(1.7rem,2.6vw,2.1rem); }
  .page-section .architecture-panel p:not(.architecture-eyebrow) { font-size: .98rem; }
}
@media (max-width: 800px) and (min-width: 651px) {
  .visit-layout { grid-template-columns: minmax(0,1fr); }
  .footer-inner { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 26px; }
  .footer-inner > div:first-child { grid-column: 1/-1; }
}
@media (max-width: 650px) {
  .nav-row { padding-inline: 32px 80px; }
  .brand { width: 100%; flex: 1; padding-inline: 18px; }
  .mobile-nav { right: 28px; top: 18px; }
  .mobile-nav summary { width: 44px; height: 44px; }
  .mobile-nav ul { min-width: 0; width: min(280px,calc(100vw - 56px)); }
  .actions-grid, .page-section .info-grid { grid-template-columns: minmax(0,1fr); gap: 14px; }
  .actions-band, .page-section { padding-block: 18px; }
  .page-section .welcome-panel { grid-template-columns: minmax(0,1fr); padding: 25px; }
  .page-section .hours-panel { padding: 25px; }
  .action-card { padding-right: 38px; }
  .arrow-glyph { right: 20px; }
  .footer-inner, .visit-layout { grid-template-columns: minmax(0,1fr); }
  .page-hero-title { border-right: 0; border-bottom: 6px double #9f8560; }
  .article-panel { padding: 24px 18px; }
}
@media (prefers-reduced-motion: reduce) {
  .button:hover, .action-card:hover, .photo-tile:hover img { transform: none; }
}

/* Architecture feature: a deliberate wide detail crop above the text.
   The original engraving stays intact. The frame crops its decorative margins
   in CSS, consistently on desktop and mobile, without stretching the building. */
.page-section .architecture-panel {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  gap: 0;
  padding: 20px;
}
.page-section .architecture-engraving {
  position: relative;
  flex: none;
  align-self: auto;
  width: 100%;
  aspect-ratio: 1.85;
  overflow: hidden;
  background: #e8d8b9;
  border: 1px solid #b79a65;
  box-shadow: 0 0 0 4px #143b30, 0 0 0 5px #796b46;
}
.page-section .architecture-engraving img {
  display: block;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: 100%;
  object-fit: cover;
  object-position: 50% 72%;
  opacity: 1;
  filter: none;
}
.page-section .architecture-panel .architecture-body {
  flex: 1;
  padding: 20px 0 0;
  justify-content: flex-start;
}
.page-section .architecture-panel .architecture-eyebrow { margin-bottom: 8px; }
.page-section .architecture-panel h2 {
  font-size: clamp(1.6rem,2.15vw,2.1rem);
  line-height: 1.15;
  margin-bottom: 12px;
}
.page-section .architecture-panel p:not(.architecture-eyebrow) {
  font-size: .98rem;
  line-height: 1.55;
  margin-bottom: 16px;
}
.page-section .architecture-panel a { margin-top: auto; }
