/* Reservation / Visit only: consume approved shared typography, never redefine it. */
.miri-utility {
  padding-block: 136px 64px;
  color: var(--miri-color-body-primary);
  font-family: var(--miri-type-copy-family);
  font-weight: var(--miri-type-copy-weight);
  font-size: var(--miri-type-body-regular-size);
  line-height: var(--miri-type-body-regular-line-height);
}
.miri-utility h1, .miri-utility h2, .miri-utility h3 {
  color: var(--miri-color-heading-light);
  font-family: var(--miri-type-heading-family);
  font-weight: var(--miri-type-heading-weight);
  margin: 0 0 20px;
}
.miri-utility h1 {
  font-size: var(--miri-type-utility-h1-size);
  line-height: var(--miri-type-page-h1-line-height);
  letter-spacing: var(--miri-type-page-h1-letter-spacing);
  margin-bottom: 0;
}
.miri-utility h1 span { display: block; }
.miri-utility h2 { font-size: var(--miri-type-section-h2-size); line-height: var(--miri-type-section-h2-line-height); letter-spacing: var(--miri-type-section-h2-letter-spacing); }
.miri-utility h3, .miri-reservation-path h2, .miri-reservation-notes h2 { font-size: var(--miri-type-subsection-h3-size); line-height: var(--miri-type-subsection-h3-line-height); letter-spacing: var(--miri-type-subsection-h3-letter-spacing); }
.miri-utility p { margin: 0 0 20px; }
.miri-utility .miri-gate4-eyebrow { color: var(--miri-rust); margin-bottom: 20px; }
.miri-utility-masthead { display: grid; grid-template-columns: 1.4fr 1fr; gap: 48px; align-items: end; margin-bottom: 36px; }
.miri-utility .miri-utility-intro { margin: 0; max-width: 54ch; }
.miri-utility .miri-utility-link { display: inline-flex; align-items: baseline; gap: 12px; min-height: 44px; padding-block: 10px; color: var(--miri-navy); font-size: var(--miri-type-button-size); font-weight: var(--miri-type-button-weight); line-height: var(--miri-type-body-regular-line-height); text-decoration: underline; text-decoration-color: var(--miri-line); text-underline-offset: 7px; }
.miri-utility .miri-utility-link:hover { color: var(--miri-rust); text-decoration-color: currentColor; }
.miri-utility a:focus-visible { outline: 2px solid var(--miri-rust); outline-offset: 5px; }
.miri-reservation-paths { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 48px; padding: 32px; border-block: 1px solid var(--miri-line); background: var(--miri-ivory); }
.miri-reservation-path { display: flex; flex-direction: column; align-items: flex-start; }
.miri-reservation-path p:not(.miri-gate4-eyebrow) { max-width: 54ch; }
.miri-reservation-path-action { margin-top: auto; padding-top: 6px; }
.miri-reservation-group { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 48px; padding: 40px 32px; scroll-margin-top: 112px; }
.miri-reservation-group h2 { max-width: 23ch; }
.miri-reservation-group p { max-width: 60ch; }
.miri-utility .miri-utility-request-note { color: var(--miri-rust); font-size: var(--miri-type-caption-size); line-height: var(--miri-type-caption-line-height); margin-bottom: 0; }
.miri-reservation-contact { align-self: start; }
.miri-utility-contact-actions { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.miri-reservation-notes { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 16px 48px; border-top: 1px solid var(--miri-line); padding: 32px; background: var(--miri-ivory); }
.miri-reservation-notes dl, .miri-reservation-notes dd { margin: 0; }
.miri-reservation-notes dl > div { display: grid; grid-template-columns: 1fr 1.8fr; gap: 24px; padding-bottom: 20px; }
.miri-reservation-notes dt { font-weight: var(--miri-type-button-weight); color: var(--miri-navy); }
.miri-reservation-notes dd { text-transform: none; font-family: var(--miri-type-copy-family); font-weight: var(--miri-type-copy-weight); font-size: var(--miri-type-body-regular-size); line-height: var(--miri-type-body-regular-line-height); letter-spacing: normal; color: var(--miri-color-body-primary); }
.miri-reservation-notes .miri-utility-footnote { grid-column: 2; }
.miri-utility .miri-utility-footnote { color: var(--miri-color-body-secondary); font-size: var(--miri-type-caption-size); line-height: var(--miri-type-caption-line-height); margin: 12px 0 0; }

/* Visit: one principal locator and a practical ledger, not feature cards. */
.miri-utility--visit .miri-utility-masthead { grid-template-columns: 1fr 1fr; gap: 48px; }
.miri-visit-primary-actions, .miri-visit-ending-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 16px 28px; }
.miri-visit-primary-actions { margin-top: 24px; }
.miri-visit-grid { display: grid; grid-template-columns: 1.6fr 1fr; align-items: start; gap: 48px; }
.miri-utility .miri-visit-map { display: block; color: var(--miri-navy); background: var(--miri-ivory); border: 1px solid var(--miri-line); }
.miri-visit-map svg { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; stroke: none; }
.miri-visit-map-label { display: flex; justify-content: space-between; gap: 20px; padding: 18px 24px 4px; border-top: 1px solid var(--miri-line); font-size: var(--miri-type-button-size); font-weight: var(--miri-type-button-weight); }
.miri-visit-map-caption { display: block; padding: 0 24px 18px; font-size: var(--miri-type-caption-size); color: var(--miri-color-body-secondary); }
.miri-visit-map:hover .miri-visit-map-label { color: var(--miri-rust); text-decoration: underline; text-underline-offset: 5px; }
.miri-locator-mobile-label { display: none; }
.miri-visit-facts { margin: 0; border-top: 1px solid var(--miri-rust); }
.miri-visit-facts > div { display: grid; grid-template-columns: 100px minmax(0, 1fr); gap: 24px; padding-block: 24px; border-bottom: 1px solid var(--miri-line); }
.miri-visit-facts dt { font-weight: var(--miri-type-copy-weight); font-size: var(--miri-type-caption-size); color: var(--miri-rust); }
.miri-visit-facts dd, .miri-visit-facts address { margin: 0; font-style: normal; }
.miri-visit-facts dd { font-size: var(--miri-type-body-regular-size); line-height: var(--miri-type-body-regular-line-height); text-transform: none; }
.miri-visit-facts dd > span, .miri-visit-facts address span { display: block; }
.miri-visit-facts .miri-utility-link { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; padding: 0; text-decoration: none; }
.miri-visit-facts .miri-utility-link > span:last-child { text-decoration: underline; text-decoration-color: var(--miri-line); text-underline-offset: 5px; }
.miri-utility-contact-value { font-size: var(--miri-type-body-regular-size); font-weight: var(--miri-type-copy-weight); overflow-wrap: anywhere; }
.miri-visit-ending { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 24px; margin-top: 40px; padding-top: 28px; border-top: 1px solid var(--miri-rust); }
.miri-visit-ending h2 { margin: 0; font-size: var(--miri-type-subsection-h3-size); line-height: var(--miri-type-subsection-h3-line-height); letter-spacing: var(--miri-type-subsection-h3-letter-spacing); }
@media (max-width: 1023px) {
  .miri-reservation-paths, .miri-reservation-group { gap: 32px; padding: 28px 24px; }
  .miri-reservation-notes { display: block; padding: 28px 24px; }
  .miri-reservation-notes dl > div { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); }
}
@media (max-width: 767px) {
  .miri-utility { padding-block: 106px 48px; }
  .miri-utility-masthead { display: block; margin-bottom: 28px; }
  .miri-utility h1 { margin-bottom: 24px; }
  .miri-reservation-paths { display: grid; grid-template-columns: minmax(0, 1fr); gap: 32px; padding: 28px 20px; }
  .miri-reservation-path + .miri-reservation-path { padding-top: 28px; border-top: 1px solid var(--miri-line); }
  .miri-reservation-group { display: block; padding: 32px 20px; scroll-margin-top: 98px; }
  .miri-reservation-contact { margin-top: 28px; }
  .miri-reservation-notes { padding: 28px 20px; }
  .miri-reservation-notes dl > div { display: block; }
  .miri-reservation-notes dt { margin-bottom: 8px; }
  .miri-utility .miri-gate4-button { white-space: normal; }
  .miri-visit-primary-actions { gap: 12px 20px; margin-top: 20px; }
  .miri-visit-grid { display: flex; flex-direction: column; gap: 28px; }
  .miri-visit-map, .miri-visit-facts { width: 100%; }
  .miri-visit-map-label { padding-inline: 16px; }
  .miri-visit-map-caption { padding-inline: 16px; }
  .miri-locator-desktop-label { display: none; }
  .miri-locator-mobile-label { display: inline; font-size: calc(var(--miri-type-body-regular-size) * 2); }
  .miri-locator-water, .miri-locator-coast-road, .miri-locator-north-label { font-size: calc(var(--miri-type-body-regular-size) * 2); }
  .miri-locator-bridge, .miri-locator-address { font-size: calc(var(--miri-type-body-regular-size) * 1.75); }
  .miri-visit-facts > div { grid-template-columns: 86px minmax(0, 1fr); gap: 16px; padding-block: 20px; }
  .miri-visit-ending { display: block; margin-top: 28px; }
  .miri-visit-ending-actions { flex-direction: column; align-items: flex-start; margin-top: 20px; gap: 14px; }
}
