/* ============================================================
   Place pages (/place/<term>/) — v2 layout ("Place pages" row on the places
   design canvas). Loaded only when cdpc_place_is_v2() (place-archive-v2.php),
   after the v1 per-template stylesheet, which still styles the photo grid,
   toolbar, map and lightbox. Same type and colours as the /places/ hub v2.
============================================================ */

/* ---------- Shell: undo the v1 page wrapper ---------- */
body.plpv2-active,
body.plpv2-active #page,
body.plpv2-active .site,
body.plpv2-active .site-content {
  background: #07090c !important;
}
.placeArchive.plpv2 {
  --plpv2-gutter: 40px;
  --plpv2-text: #f0eee9;
  --plpv2-body: #dcd9d2;
  --plpv2-soft: #c9ced6;
  --plpv2-copy: #aab1bb;
  --plpv2-dim: #8d96a2;
  --plpv2-line: #161b22;
  --plpv2-line2: #232a34;
  --plpv2-pink: #c64191;
  --plpv2-pink-hi: #e2589f;
  --plpv2-serif: 'Newsreader', Georgia, 'Times New Roman', serif;
  --plpv2-label: 'Jost', 'Source Sans 3', system-ui, sans-serif;

  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 0 112px !important;
  background: #07090c;
  color: var(--plpv2-text);
  font-family: 'Source Sans 3', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}
.plpv2 a { color: inherit; text-decoration: none; box-shadow: none; }
.plpv2 a:hover { color: var(--plpv2-pink-hi); }
.plpv2 :is(h1, h2, h3) { margin: 0; text-transform: none; color: var(--plpv2-text); letter-spacing: normal; }
.plpv2 p { margin: 0; }

/* ---------- Cover ---------- */
.plpv2Hero {
  position: relative;
  display: flex;
  align-items: flex-end;
  min-height: clamp(420px, 56vh, 560px);
  overflow: hidden;
  background: #11161d;
}
.plpv2 .plpv2Hero__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: 50% 45%;
}
.plpv2Hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(7,9,12,.65) 0%, rgba(7,9,12,0) 28%, rgba(7,9,12,.1) 50%, rgba(7,9,12,.94) 100%);
}
.plpv2Hero__inner {
  position: relative;
  z-index: 1;
  box-sizing: border-box;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 560px);
  gap: 48px;
  align-items: end;
  width: 100%;
  padding: 120px var(--plpv2-gutter) 40px;
}
.plpv2Hero__main { display: flex; flex-direction: column; gap: 16px; min-width: 0; }

.plpv2Crumbs {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  font-family: var(--plpv2-label);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--plpv2-soft);
}
.plpv2 .plpv2Crumbs a { border-bottom: 1px solid rgba(240,238,233,.3); }
.plpv2Crumbs__sep { color: #6b7480; }
.plpv2Crumbs [aria-current] { color: var(--plpv2-text); }

.plpv2 h1.plpv2Title {
  font-family: var(--plpv2-serif);
  font-size: clamp(60px, 8vw, 112px);
  font-weight: 600;
  line-height: .92;
  letter-spacing: -.03em;
  overflow-wrap: break-word;
}
.plpv2 h1.plpv2Title--mid { font-size: clamp(52px, 6.4vw, 92px); }
.plpv2 h1.plpv2Title--long { font-size: clamp(44px, 5vw, 72px); line-height: 1; }

.plpv2Intro { display: flex; flex-direction: column; gap: 14px; align-items: flex-start; }
.plpv2 .plpv2Intro__text {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  font-size: 17px;
  line-height: 1.6;
  color: var(--plpv2-body);
}
.plpv2Intro.is-open .plpv2Intro__text { display: block; -webkit-line-clamp: unset; overflow: visible; }
.plpv2 .plpv2Intro__more {
  padding: 0;
  border: 0;
  background: none;
  font-family: var(--plpv2-label);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--plpv2-pink-hi);
  cursor: pointer;
}
.plpv2 .plpv2Intro__more[hidden] { display: none; }
.plpv2 .plpv2Intro__more:hover { color: var(--plpv2-text); background: none; }

/* ---------- Map (v1 partials, restyled) ---------- */
.plpv2Map { padding: 28px var(--plpv2-gutter) 0; }
/* hub-bleed.css insets every .placeArchiveSection (body.tax-place.hub-bleed …, 0,3,1) */
body.plpv2-active .plpv2 .plpv2Map .placeArchiveSection { margin: 0; padding: 0; border: 0; background: none; box-shadow: none; }
.plpv2 .plpv2Map .placeArchiveMapToggle {
  display: inline-flex;
  gap: 10px;
  width: auto;
  height: 44px;
  padding: 0 18px;
  border: 1px solid var(--plpv2-line2);
  background: none;
  font-family: var(--plpv2-label);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .14em;
  color: var(--plpv2-text);
}
.plpv2 .plpv2Map .placeArchiveMapToggle:hover,
.plpv2 .plpv2Map .placeArchiveMapToggle:focus-visible { border-color: var(--plpv2-pink); background: none; }
.plpv2 .plpv2Map .placeArchiveMapCollapse.is-expanded .placeArchiveMapCollapse__body { margin-top: 16px; }
.plpv2 .placeArchiveMapBox__coords { display: none; }

/* ---------- Rows: heading on the left, content filling the rest ---------- */
.plpv2Section { padding: 88px var(--plpv2-gutter) 0; }
.plpv2Map + .plpv2Section { padding-top: 64px; }
/* place-toolbar.css pads #place-photos by id (0 8px), which outranks the class */
.plpv2 #place-photos { padding: 88px var(--plpv2-gutter) 0; }
.plpv2Map + #place-photos { padding-top: 64px; }
.plpv2Row {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  gap: 32px;
  align-items: start;
}
.plpv2Row__head {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding-top: 16px;
  border-top: 2px solid var(--plpv2-pink);
}
.plpv2 h2.plpv2Row__title {
  font-family: var(--plpv2-serif);
  font-size: 30px;
  font-weight: 600;
  line-height: 1.1;
}
.plpv2Row__in { display: block; margin-top: 4px; font-size: 20px; font-weight: 400; color: var(--plpv2-copy); }
.plpv2 .plpv2Row__note { font-size: 16px; line-height: 1.6; color: var(--plpv2-soft); }

/* ---------- Place tiles ---------- */
.plpv2Tiles { display: grid; gap: 16px; }
.plpv2Tiles--n1 { grid-template-columns: minmax(0, 1fr); }
.plpv2Tiles--n2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.plpv2Tiles--n3, .plpv2Tiles--grid3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.plpv2Tiles--grid4, .plpv2Tiles--more { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.plpv2 .plpv2Tile {
  position: relative;
  display: block;
  overflow: hidden;
  height: 380px;
  background: #11161d;
}
.plpv2Tiles--n1 .plpv2Tile { height: 420px; }
.plpv2Tiles--grid3 .plpv2Tile { height: 260px; }
.plpv2Tiles--grid4 .plpv2Tile { height: 220px; }
.plpv2Tiles--more .plpv2Tile { height: 240px; }
.plpv2 .plpv2Tile__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  transition: transform .5s ease, opacity .3s ease;
}
.plpv2Tile:hover .plpv2Tile__img { transform: scale(1.03); }
.plpv2Tile::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, rgba(7,9,12,.9) 0%, rgba(7,9,12,.35) 45%, rgba(7,9,12,0) 70%);
}
.plpv2Tile__name {
  position: absolute;
  z-index: 1;
  left: 18px;
  right: 18px;
  bottom: 16px;
  font-family: var(--plpv2-serif);
  font-size: 30px;
  font-weight: 600;
  line-height: 1.05;
  color: var(--plpv2-text);
}
.plpv2Tiles--n1 .plpv2Tile__name, .plpv2Tiles--n2 .plpv2Tile__name { font-size: 40px; }
.plpv2Tiles--more .plpv2Tile__name, .plpv2Tiles--grid4 .plpv2Tile__name { font-size: 24px; }
.plpv2 .plpv2Tile:hover .plpv2Tile__name { color: var(--plpv2-pink-hi); }

/* ---------- Photo-set cards ---------- */
.plpv2Sets { display: flex; flex-direction: column; gap: 24px; min-width: 0; }
.plpv2Cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 40px 24px; }
.plpv2Card { position: relative; min-width: 0; }
.plpv2Card__link { display: flex; flex-direction: column; gap: 16px; }
.plpv2Card__media { display: block; overflow: hidden; background: #11161d; }
.plpv2 .plpv2Card__img { display: block; width: 100%; max-width: none; height: auto; aspect-ratio: 3 / 2; object-fit: cover; transition: opacity .3s ease; }
.plpv2Card__link:hover .plpv2Card__img { opacity: .86; }
.plpv2Card__body { display: flex; flex-direction: column; gap: 10px; }
.plpv2Card__kicker, .plpv2Card__cta {
  font-family: var(--plpv2-label);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--plpv2-pink-hi);
}
.plpv2Card__cta { display: inline-flex; gap: 10px; align-items: center; }
.plpv2 h3.plpv2Card__title { font-family: var(--plpv2-serif); font-size: 30px; font-weight: 600; line-height: 1.08; }
.plpv2 .plpv2Card__link:hover .plpv2Card__title { color: var(--plpv2-pink-hi); }
.plpv2Card__text { font-size: 16px; line-height: 1.6; color: var(--plpv2-copy); }
.plpv2Cards--one { grid-template-columns: minmax(0, 1fr); }
.plpv2Cards--one .plpv2Card__link { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 32px; align-items: center; }
.plpv2Cards--one h3.plpv2Card__title { font-size: 40px; }
.plpv2 .plpv2Card__zoom {
  position: absolute;
  z-index: 2;
  top: 12px;
  right: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: rgba(7,9,12,.6);
  color: #fff;
  opacity: 0;
  transition: opacity .2s ease;
}
.plpv2 .plpv2Card__zoom svg { width: 16px; height: 16px; fill: currentColor; }
.plpv2Card:hover .plpv2Card__zoom, .plpv2Card__zoom:focus-visible { opacity: 1; }
.plpv2Cards--one .plpv2Card__zoom { right: auto; left: calc(54.5% - 48px); }

/* ---------- Photos (v1 toolbar and grid, restyled) ---------- */
.plpv2Photos { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
.plpv2 .place-photo-toolbar { margin: 0; padding: 0; border: 0; background: none; }
.plpv2 .pa-toolbar.psg-toolbar.place-photo-toolbar .pa-tb-search-input,
.plpv2 .pa-toolbar.psg-toolbar.place-photo-toolbar .pa-tb-search-btn,
.plpv2 .pa-toolbar.psg-toolbar.place-photo-toolbar .pa-density-btn { height: 44px; }
.plpv2 .pa-toolbar.psg-toolbar.place-photo-toolbar .pa-tb-search-input { border-color: var(--plpv2-line2); background: rgba(11,15,21,.85); font-size: 16px; }
.plpv2 .pa-toolbar.psg-toolbar.place-photo-toolbar .pa-tb-search-input:focus { border-color: var(--plpv2-pink); }
.plpv2 .pa-toolbar.psg-toolbar.place-photo-toolbar .pa-tb-search-btn { background: var(--plpv2-pink); }
.plpv2 .pa-toolbar.psg-toolbar.place-photo-toolbar .pa-density-toggle { border-color: var(--plpv2-line2); }
.plpv2 .pa-toolbar.psg-toolbar.place-photo-toolbar .pa-density-btn { width: 44px; background: none; color: var(--plpv2-dim); }
.plpv2 .pa-toolbar.psg-toolbar.place-photo-toolbar .pa-density-btn.is-active { background: var(--plpv2-pink); color: #fff; }
.plpv2 .place-photo-toolbar .psg-count { display: none; }
.plpv2 .place-photo-load-more-wrap { margin: 12px 0 0; }
.plpv2 .place-photo-load-more {
  height: 44px;
  padding: 0 18px;
  border: 1px solid var(--plpv2-line2);
  border-radius: 0;
  background: none;
  box-shadow: none;
  font-family: var(--plpv2-label);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--plpv2-text);
}
.plpv2 .place-photo-load-more:hover { border-color: var(--plpv2-pink); background: none; color: var(--plpv2-text); }
.plpv2 .navigation.pagination { margin-top: 8px; }

/* ---------- More in … ---------- */
.plpv2Row--more { padding-top: 104px; }
.plpv2More { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.plpv2 .plpv2More__link {
  align-self: flex-end;
  display: inline-flex;
  gap: 10px;
  align-items: center;
  font-family: var(--plpv2-label);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--plpv2-pink-hi);
}

/* ---------- Tablet ---------- */
@media (max-width: 1000px) {
  .placeArchive.plpv2 { --plpv2-gutter: 28px; }
  .plpv2Hero__inner { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .plpv2Row { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .plpv2Row__head { flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: 6px 12px; }
  .plpv2Row__in { display: inline; margin: 0; }
  .plpv2Row__note { flex-basis: 100%; }
  .plpv2Tiles--n3, .plpv2Tiles--grid3, .plpv2Tiles--grid4, .plpv2Tiles--more { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .plpv2 .plpv2Tile, .plpv2Tiles--n1 .plpv2Tile { height: 300px; }
  .plpv2Tiles--grid3 .plpv2Tile, .plpv2Tiles--grid4 .plpv2Tile, .plpv2Tiles--more .plpv2Tile { height: 240px; }
}

/* ---------- Phone ---------- */
@media (max-width: 640px) {
  .placeArchive.plpv2 { --plpv2-gutter: 20px; padding-bottom: 72px !important; }
  .plpv2Hero { min-height: 400px; }
  .plpv2Hero__inner { padding-top: 96px; padding-bottom: 24px; }
  .plpv2Hero::after { background: linear-gradient(180deg, rgba(7,9,12,.6) 0%, rgba(7,9,12,0) 25%, rgba(7,9,12,.2) 45%, rgba(7,9,12,.96) 100%); }
  .plpv2 h1.plpv2Title { font-size: 56px; }
  .plpv2 h1.plpv2Title--mid { font-size: 44px; }
  .plpv2 h1.plpv2Title--long { font-size: 36px; }
  .plpv2 .plpv2Intro__text { font-size: 16px; }
  .plpv2Section { padding-top: 56px; }
  .plpv2Map + .plpv2Section { padding-top: 48px; }
  .plpv2 #place-photos { padding-top: 56px; }
  .plpv2Map + #place-photos { padding-top: 48px; }
  .plpv2 h2.plpv2Row__title { font-size: 26px; }
  .plpv2Row__in { font-size: 17px; }

  .plpv2Tiles { gap: 10px; }
  .plpv2Tiles--n1 { grid-template-columns: minmax(0, 1fr); }
  .plpv2Tiles--n2, .plpv2Tiles--n3, .plpv2Tiles--grid3, .plpv2Tiles--grid4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .plpv2 .plpv2Tile, .plpv2Tiles--n1 .plpv2Tile, .plpv2Tiles--grid3 .plpv2Tile, .plpv2Tiles--grid4 .plpv2Tile { height: 180px; }
  .plpv2Tiles--n3 > .plpv2Tile:last-child:nth-child(odd),
  .plpv2Tiles--grid3 > .plpv2Tile:last-child:nth-child(odd),
  .plpv2Tiles--grid4 > .plpv2Tile:last-child:nth-child(odd) { grid-column: span 2; height: 140px; }
  .plpv2 .plpv2Tile__name, .plpv2Tiles--n1 .plpv2Tile__name, .plpv2Tiles--n2 .plpv2Tile__name { left: 12px; right: 12px; bottom: 10px; font-size: 22px; }

  .plpv2Cards { grid-template-columns: minmax(0, 1fr); gap: 32px; }
  .plpv2Cards--one .plpv2Card__link { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .plpv2Cards--one h3.plpv2Card__title, .plpv2 h3.plpv2Card__title { font-size: 26px; }
  .plpv2Cards--one .plpv2Card__zoom { left: auto; }
  .plpv2 .plpv2Card__zoom { opacity: 1; }

  /* "More in …" becomes a sideways swipe row */
  .plpv2Row--more { padding-top: 64px; }
  .plpv2Tiles--more {
    display: flex;
    gap: 10px;
    margin: 0 calc(-1 * var(--plpv2-gutter));
    padding: 0 var(--plpv2-gutter);
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
  }
  .plpv2Tiles--more::-webkit-scrollbar { display: none; }
  .plpv2Tiles--more .plpv2Tile { flex: 0 0 150px; height: 110px; scroll-snap-align: start; }
  .plpv2Tiles--more .plpv2Tile__name { font-size: 18px; }
  .plpv2 .plpv2More__link { align-self: flex-start; }
}

/* Legibility on busy cover photos (2026-11-07): a left-side scrim behind the text and a soft shadow on it. */
@media (min-width: 1001px) {
  .plpv2Hero::after {
    background:
      linear-gradient(90deg, rgba(7,9,12,.7) 0, rgba(7,9,12,.45) 40%, rgba(7,9,12,0) 78%),
      linear-gradient(180deg, rgba(7,9,12,.65) 0%, rgba(7,9,12,.1) 28%, rgba(7,9,12,.5) 55%, rgba(7,9,12,.94) 100%);
  }
}
.plpv2Crumbs, .plpv2 h1.plpv2Title, .plpv2Intro__text { text-shadow: 0 2px 18px rgba(0,0,0,.75), 0 1px 4px rgba(0,0,0,.55); }
