/* Full-width city mastheads reuse the approved homepage artwork. */
body.city-page .city-hero { padding: 0; background: #000; }
body.city-page #city-art.diamond-city {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  width: 100%;
  max-width: none;
  height: clamp(220px, 21vw, 340px);
  margin: 0;
  padding: 28px 6% 24px;
  overflow: hidden;
  background: #000;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
.city-banner-illustration {
  position: absolute;
  inset: 0 auto 0 1%;
  width: 64%;
  overflow: hidden;
}
body.city-page #city-art .city-banner-illustration :is(img, .city-banner-art) {
  display: block;
  position: absolute;
  top: -3%;
  left: 0;
  width: 100%;
  height: 140%;
  object-fit: contain;
  object-position: center top;
  /* Drop the artwork's near-black floor to match the full-width black banner. */
  filter: contrast(1.2);
}
.city-banner-wordmark {
  position: relative;
  z-index: 1;
  width: 35%;
  color: #fafafa;
  font: 900 clamp(44px, 5.5vw, 100px)/.94 Arial, Helvetica, sans-serif;
  letter-spacing: -.065em;
  text-align: left;
}
.city-banner-wordmark > span { display: block; }
.city-banner-wordmark > .city-banner-edm {
  margin-top: .06em;
  color: var(--page-city-color);
}
body.city-san-antonio .city-banner-name,
body.city-san-antonio .city-banner-edm { font-size: .68em; line-height: 1.04; }
body.city-page .city-heading a { top: 12px; left: 2%; }
/* Increase the three city switches from 568px to 760px across desktop. */
body.city-page .city-grid.city-grid-graphic {
  width: 100%;
  max-width: 760px;
  gap: 12px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
body.city-page .city-grid.city-grid-graphic > a,
body.city-page .city-grid.city-grid-graphic > a:last-child {
  aspect-ratio: 16 / 9;
  min-height: 0;
  background-size: 100% 100%;
  background-position: center;
}
body.city-page .city-grid.city-grid-graphic > a > strong { font-size: var(--city-label-size, 11.5cqw); }
body.city-page .cities { padding-top: 12px; padding-bottom: 24px; }
@media (max-width: 700px) {
  body.city-page #city-art.diamond-city {
    height: clamp(190px, 38vw, 260px);
    padding: 28px 4% 12px;
  }
  .city-banner-illustration { left: -2%; width: 68%; }
  body.city-page #city-art .city-banner-illustration :is(img, .city-banner-art) {
    top: 12%;
    width: 100%;
    height: 128%;
  }
  .city-banner-wordmark { width: 36%; font-size: clamp(28px, 6.5vw, 46px); }
  body.city-page .city-heading a { top: 8px; left: 12px; min-height: 32px; }
  body.city-page .city-grid.city-grid-graphic { gap: 8px; }
}
@media (max-width: 480px) {
  body.city-page #city-art.diamond-city { height: 250px; align-items: flex-end; justify-content: center; padding: 0 4% 15px; }
  .city-banner-illustration { inset: 0 0 auto; width: 100%; height: 210px; }
  body.city-page #city-art .city-banner-illustration :is(img, .city-banner-art) { top: 0; height: 128%; }
  .city-banner-wordmark { width: 100%; text-align: center; font-size: 10vw; letter-spacing: -.045em; line-height: 1; }
  .city-banner-wordmark > span { display: inline; }
  .city-banner-wordmark > .city-banner-edm { margin-top: 0; }
  body.city-san-antonio .city-banner-wordmark { font-size: 9.2vw; letter-spacing: -.06em; }
  body.city-san-antonio .city-banner-name,
  body.city-san-antonio .city-banner-edm { font-size: 1em; line-height: 1; }
  body.city-page .city-grid.city-grid-graphic { gap: 8px; }
  /* Two rows retain readable labels on phones; the final card stays equal-size. */
  body.city-page .city-grid.city-grid-graphic { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.city-page .city-grid.city-grid-graphic > a:last-child { grid-column: 1 / -1; width: calc((100% - 8px) / 2); justify-self: center; }
}

/* A slimmer map bar on city pages; the homepage keeps its existing size. */
body.city-page .map-toggle {
  min-height: 96px;
  gap: 20px;
  padding: 0 22px 0 0;
}
body.city-page .map-mini { width: 120px; height: 96px; }
body.city-page .map-mini svg,
body.city-page .map-toggle:hover .map-mini svg { width: 88px; height: 86px; }
body.city-page .map-toggle-copy { gap: 5px; }
@media (max-width: 600px) {
  body.city-page .map-toggle { min-height: 76px; gap: 8px; padding: 6px 8px; }
  body.city-page .map-mini { width: 48px; height: 60px; }
  body.city-page .map-mini svg,
  body.city-page .map-toggle:hover .map-mini svg { width: 48px; height: 54px; }
  body.city-page .map-toggle-copy { gap: 3px; }
  body.city-page .map-kicker { font-size: 8px; line-height: 1.2; }
  body.city-page .map-city-key { line-height: 1.2; }
}

/* Crisp, thin plus strokes match the map button's fine circle border. */
body.city-page .map-toggle-action b { position: relative; font-size: 0; }
body.city-page .map-toggle-action b::before,
body.city-page .map-toggle-action b::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  width: 42%;
  height: 1px;
  background: currentColor;
  transform: translate(-50%, -50%);
}
body.city-page .map-toggle-action b::after { transform: translate(-50%, -50%) rotate(90deg); }

/* Keep the compact city map framed and centered on smaller screens. */
@media (max-width: 700px) {
  body.city-page .scene-map { width: calc(100% - 24px); margin-inline: auto; }
  body.city-page .scene-map-shell {
    border: 1px solid color-mix(in srgb, var(--page-city-color) 52%, #ffffff42);
    border-radius: 5px;
  }
}
