/* Story of Lights v45 -- park detail page.
 * Geometry from Praha.dc.html; the same sheet serves all thirteen parks, so
 * anything Praha-specific (boat table, reviews) is driven by data, not CSS.
 */

/* ------------------------------------------------------------------ hero */

.sol-phero { background: var(--sol-black); }

.sol-phero__inner {
  position: relative;
  max-width: 1280px;
  margin: 0 auto;
  min-height: 456px;
  display: flex;
  align-items: flex-start;
  overflow: hidden;
}
/* Prague's v7 hero is a painted 1280x500 backdrop with the route loop baked
 * in, and the KV poster runs taller than it (528). The 528 inner height is the
 * poster's, not the backdrop's. */
/* KV comment 29. 8.: shorter hero so the media-partner strip stays in the
 * first fold on big monitors (zoom-up architecture, ~650 artboard px fold) */
.sol-phero--bg .sol-phero__inner { min-height: 460px; }
/* CD keeps no top wash: the painted backdrop starts pure black, so the header
 * melts into it by itself. What DOES cut hard is the photo's bottom edge --
 * it stops mid-content 96px above the box floor (CTO 27. 8.: "useklé pozadí a
 * šedý pruh"). The image now covers the whole box and a bottom wash melts the
 * last of it into the black that carries on into the media strip. */
@media (min-width: 768px) {
  .sol-phero--bg .sol-phero__inner::after {
    content: "";
    position: absolute;
    left: 0; right: 0; bottom: 0;
    height: 150px;
    background: linear-gradient(180deg, rgba(10, 9, 8, 0) 0%, var(--sol-black) 92%);
    pointer-events: none;
  }
}
.sol-phero__bg {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;          /* fill the whole hero box -- no naked strip below the photo */
  object-fit: cover;
  object-position: 50% 0;
}
/* Header melts into the hero photo exactly like the homepage does (CTO
 * 29. 8.): the same 118px gradient over the top edge of the backdrop.
 * Hidden on phones together with the backdrop itself. */
.sol-phero__fade-t {
  display: none;
  position: absolute;
  left: 0; right: 0; top: 0;
  height: 118px;
  background: linear-gradient(to bottom, #0a0908 0%, rgba(10, 9, 8, .72) 34%, rgba(10, 9, 8, 0) 100%);
  pointer-events: none;
}
@media (min-width: 768px) {
  .sol-phero__fade-t { display: block; }
}

/* The route loop bleeds to the right edge, the KV poster sits on top of its
 * left side -- that overlap is the design, not a mistake. */
.sol-phero__map {
  position: absolute;
  right: 0;
  top: 0;
  width: 26.5%;
  height: 456px;
  object-fit: cover;
  object-position: 62% 40%;
}
.sol-phero__kv {
  position: absolute;
  left: 50.4%;
  top: 0;
  height: 456px;
  width: auto;
}
.sol-phero--bg .sol-phero__kv { height: 528px; }

/* KV comment 30. 8.: rotating compass rose over the disc baked into the KV
 * (same layered asset as the homepage hero, 96 s/turn). The wrapper takes
 * over the KV's absolute slot so the rose can ride the img box with %
 * coordinates -- values come inline from the generator, per crop. */
.sol-phero__kvwrap { position: absolute; left: 50.4%; top: 0; display: block; line-height: 0; }
/* SYNC 31. 8.: mobile-only readability scrim; desktop has its own washes */
.sol-phero__scrim { display: none; }
.sol-phero__kvwrap .sol-phero__kv,
.sol-phero--bg .sol-phero__kvwrap .sol-phero__kv { position: static; }
.sol-phero__rose {
  position: absolute;
  left: var(--rose-x);
  top: var(--rose-y);
  width: var(--rose-w);
  height: auto;
  pointer-events: none;
  animation: solKompasRose 96s linear infinite;
}
@keyframes solKompasRose { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .sol-phero__rose { animation: none; } }

.sol-phero__text {
  position: relative;
  z-index: 1;
  width: 372px;
  max-width: 100%;
  margin: 62px 0 48px 17.2%;
}

.sol-phero__h1 {
  margin: 0;
  font-size: 34px;
  line-height: 38px;
  font-weight: 500;
  color: var(--sol-white);
  letter-spacing: .02em;
  text-transform: uppercase;
}
.sol-phero__addr {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 11px 0 0;
  font-size: 14px;
  font-weight: 400;
  color: var(--sol-gold-light);
}
.sol-phero__addr img { width: 19px; height: 17px; }
.sol-phero__perex {
  margin: 20px 0 0;
  font-size: 12px;
  line-height: 1.85;
  font-weight: 300;
  color: #d6d1c6;
}
.sol-phero__open {
  margin: 18px 0 0;
  font-size: 12px;
  font-weight: 600;
  color: var(--sol-white);
}
.sol-phero__hours {
  margin: 6px 0 0;
  font-size: 12px;
  font-weight: 400;
  color: var(--sol-gold-light);
}
.sol-phero__price {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin: 15px 0 0;
  flex-wrap: wrap;
}
.sol-phero__from { font-size: 11px; font-weight: 300; color: #d6d1c6; }
.sol-phero__value { font-size: 27px; line-height: 27px; font-weight: 600; color: var(--sol-gold); }
/* The badge is the podklady artwork (assets/ikony/predprodej.svg) inlined by
 * the generator so its text uses the site font and the localized word. */
/* KV comment 30. 8.: the frame hugs the type (~5 px air) and the badge's
 * bottom edge sits on the price baseline -- the row participates in the
 * flex baseline alignment, so no align-self override. The -3px pulls the
 * svg down past its own transparent margin below the stroke. */
/* KV comment 31. 8.: half-size badge, type clear of the frame */
.sol-phero__badge { margin: 0 0 -3px; width: 52px; height: 38px; }
.sol-phero__price--tba { font-size: 15px; color: var(--sol-hero-text); font-weight: 300; }
.sol-phero__note {
  margin: 16px 0 0;
  font-size: 10px;
  line-height: 1.75;
  font-weight: 300;
  color: #c8c3b8;
}
.sol-phero__note b { color: var(--sol-gold); font-weight: 600; }
.sol-phero__cta { display: flex; gap: 12px; margin: 22px 0 0; flex-wrap: wrap; }
.sol-phero__cta .sol-btn {
  height: 28px;
  padding: 0 18px;
  border-radius: 2px;
  font-size: 11.5px;
  font-weight: 400;
  letter-spacing: .04em;
}

/* v7 gives the strip under the park hero more air than the homepage one. */
@media (min-width: 1280px) {
  .sol-phero + .sol-media { min-height: 68px; }
}

/* ----------------------------------------------------------------- story */

.sol-story { background: var(--sol-white); padding: 58px 24px 0; text-align: center; }
.sol-story__p {
  margin: 20px auto 0;
  max-width: 700px;
  font-size: 12.5px;
  line-height: 1.75;
  font-weight: 300;
}
.sol-story__p b { font-weight: 600; }

/* ---------------------------------------------------------------- prices */

.sol-prices { background: var(--sol-white); padding: 0 24px; text-align: center; }
.sol-prices__hours {
  margin: 12px 0 0;
  font-size: 12px;
  font-weight: 300;
  color: var(--sol-grey-2);
}
.sol-prices__hours b { font-weight: 600; color: var(--sol-grey-4); }
.sol-prices__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: stretch;
  gap: 26px;
  width: 1100px;
  max-width: 100%;
  margin: 30px auto 0;
}
.sol-prices__pass { width: 1100px; max-width: 100%; margin: 34px auto 0; }

.sol-tab {
  height: 100%;
  border: .5px solid var(--sol-gold-rule);
  border-radius: 2px;
  padding: 14px 20px 16px;
  text-align: left;
  background: var(--sol-white);
  border-collapse: collapse;
  width: 100%;
  display: block;
}
.sol-tab caption {
  font-size: 14px;
  font-weight: 600;
  color: var(--sol-gold);
  letter-spacing: .04em;
  text-align: left;
  padding-bottom: 4px;
}
/* CTO 27. 8.: number columns align right, labels keep left */
.sol-tab thead th {
  font-size: 7.5px;
  font-weight: 400;
  color: #9b9c9c;
  letter-spacing: .06em;
  text-align: right;
  padding: 8px 0 4px;
}
.sol-tab thead th:first-child { text-align: left; }
.sol-tab thead th:last-child { color: var(--sol-gold); font-weight: 600; text-align: right; }
.sol-tab tbody th,
.sol-tab tbody td {
  font-size: 10.5px;
  border-top: .25px solid var(--sol-rule);
  padding: 9px 0;
  text-align: right;
}
/* The card is the <table> itself with display:block (padding + caption inside
 * the border). That leaves the anonymous inner table shrink-to-fit, which is
 * why the rows hugged the left edge of a wide card (CTO 26. 8.). Making thead
 * and tbody their own full-width fixed tables stretches the columns across
 * the whole card, matching the CD flex proportions 1.5/1/1/1. */
.sol-tab thead,
.sol-tab tbody { display: table; width: 100%; table-layout: fixed; }
/* the caption must follow suit: as display:table-caption it forms its own
 * shrink-to-fit anonymous table and wraps word-by-word */
.sol-tab caption { display: block; width: 100%; }
.sol-tab thead th:nth-child(2),
.sol-tab thead th:nth-child(3) { width: 22%; }
.sol-tab tbody th {
  font-weight: 500;
  color: var(--sol-grey-5);
  text-align: left;
  width: 34%;
}
.sol-tab thead th:first-child { width: 34%; }
.sol-tab tbody td { font-weight: 300; color: var(--sol-grey-2); }
.sol-tab__presale {
  font-weight: 600;
  color: var(--sol-gold);
  text-align: right;
}
.sol-tab__save {
  display: block;
  font-size: 7px;
  font-weight: 300;
  color: var(--sol-gold-save);
}
.sol-tab--pass tbody th,
.sol-tab--pass thead th:first-child { width: 75%; }
.sol-tab--pass tbody td,
.sol-tab--pass thead th:last-child { text-align: right; }

.sol-prices__note {
  margin: 10px auto 0;
  max-width: 620px;
  font-size: 9px;
  line-height: 1.6;
  font-weight: 300;
  color: #9b9c9c;
}
.sol-prices__note--wide { font-size: 12.5px; margin-top: 30px; color: var(--sol-grey-2); }
.sol-gold { color: var(--sol-gold); font-weight: 600; }
.sol-prices__fine {
  margin: 14px auto 0;
  max-width: 620px;
  font-size: 11px;
  line-height: 1.6;
  font-weight: 300;
  color: #9b9c9c;
}
.sol-prices__fine + .sol-prices__fine { margin-top: 6px; }
/* The VAT/consent line was styled only in home.css, so park pages rendered it
 * at the section's 16px -- the "third font size" from the beta review. One
 * 11px block per the CD file, same as the fine print above it. */
.sol-vat {
  margin: 6px auto 16px;
  max-width: 620px;
  font-size: 11px;
  line-height: 1.6;
  font-weight: 300;
  color: #9b9c9c;
}
.sol-prices__more { margin: 8px 0 0; font-size: 10px; font-weight: 300; }
.sol-prices__tba {
  margin: 30px auto 0;
  max-width: 620px;
  font-size: 12.5px;
  line-height: 1.7;
  font-weight: 300;
}
.sol-prices__closing {
  margin: 30px auto 0;
  max-width: 620px;
  font-size: 12.5px;
  line-height: 1.75;
  font-weight: 300;
}
.sol-prices__closing b { font-weight: 600; }

/* ------------------------------------------------------------------ info */

.sol-info { background: var(--sol-beige-info); text-align: center; padding: 52px 24px 56px; }
.sol-info__sub { margin: 10px 0 0; font-size: 12px; font-weight: 300; color: #9b968a; }
/* v7 rows: the opening-hours card runs full width, the two ticket cards share
 * a row, everything else flows in thirds. Built on a 6-track grid so the three
 * row shapes coexist. */
.sol-info__grid {
  width: 1100px;
  max-width: 100%;
  margin: 28px auto 0;
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 20px;
  /* stretch: cards in a row share one height, so the section reads as neat
   * table rows (Martina, 28. 8. -- "drzet se tabulek dle navrhu") */
}
/* a lone trailing card (flow position 3n+1) gets the full row instead of
 * leaving a ragged orphan */
.sol-info__card:nth-child(3n+1):last-child { grid-column: 1 / -1; }
.sol-info__card { grid-column: span 2; }
.sol-info__card:nth-child(1) { grid-column: 1 / -1; }
.sol-info__card:nth-child(2),
.sol-info__card:nth-child(3) { grid-column: span 3; }
.sol-info__card {
  border: .5px solid var(--sol-gold-card);
  border-radius: 2px;
  padding: 14px 18px;
  text-align: left;
}
.sol-info__card h3 {
  margin: 0 0 8px;
  font-size: 13px;
  font-weight: 600;
  color: var(--sol-gold);
}
.sol-info__card p {
  margin: 0;
  font-size: 9.5px;
  line-height: 1.7;
  font-weight: 300;
  color: #8d8783;
}
.sol-info__card b { font-weight: 600; color: var(--sol-grey-4); }
.sol-info__card a b { color: inherit; }
.sol-info__strong { font-weight: 600; color: var(--sol-grey-4); }

/* ------------------------------------------------------------- questions */

/* Heading sits right under the hairline, same gap as [Řekli o nás]. */
.sol-questions { background: var(--sol-white); text-align: center; padding: 0 24px; }
.sol-questions__p {
  margin: 16px 0 20px;
  font-size: 12px;
  line-height: 1.9;
  font-weight: 300;
}
.sol-questions__p a { font-weight: 600; }

/* --------------------------------------------------------------- reviews */

.sol-reviews { background: var(--sol-white); text-align: center; padding: 0 24px 64px; }
.sol-reviews__rating { margin: 18px auto 0; }
.sol-reviews__note { margin: 14px 0 0; font-size: 11px; font-weight: 300; }
.sol-reviews__gmaps { font-weight: 600; }
.sol-reviews__list {
  display: flex;
  justify-content: center;
  gap: 26px;
  margin-top: 26px;
  flex-wrap: wrap;
}
.sol-review {
  width: 380px;
  max-width: 100%;
  border: .5px solid var(--sol-gold-rule);
  border-radius: 2px;
  padding: 16px 20px;
  text-align: left;
  margin: 0;
}
.sol-review__stars { margin: 0; color: var(--sol-gold); font-size: 15px; letter-spacing: 2px; }
.sol-review blockquote {
  margin: 10px 0 0;
  font-size: 12px;
  line-height: 1.6;
  font-weight: 300;
  color: var(--sol-grey-5);
  quotes: "„" "“";
}
.sol-review blockquote::before { content: open-quote; }
.sol-review blockquote::after { content: close-quote; }
.sol-review figcaption { margin-top: 10px; font-size: 9px; font-weight: 300; color: #9b9c9c; }

/* ------------------------------------------------------------ responsive */

@media (max-width: 767px) {
  .sol-info__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sol-info__card { grid-column: auto; }
  .sol-info__card:nth-child(1) { grid-column: 1 / -1; }
  .sol-info__card:nth-child(2),
  .sol-info__card:nth-child(3) { grid-column: auto; }
}

@media (max-width: 767px) {
  .sol-phero__inner { min-height: 0; flex-direction: column; }
  .sol-phero--bg .sol-phero__inner { min-height: 0; }
  /* SYNC 31. 8.: text-first hero. The backdrop stays as atmosphere at the
   * right edge (the reference's `background: right -60px top 40px / auto
   * 300px`) under a scrim that keeps the copy readable -- the glowing map
   * must never sit under text. */
  .sol-phero__bg,
  .sol-phero--bg .sol-phero__bg {
    display: block;
    left: auto;
    right: -60px;
    top: 40px;
    width: auto;
    height: 300px;
    object-fit: contain;
  }
  .sol-phero__scrim {
    display: block;
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, #0a0908 0%, #0a0908 52%, rgba(10, 9, 8, .72) 76%, rgba(10, 9, 8, .15) 100%);
    pointer-events: none;
  }
  /* the portrait poster sits below the CTAs: 200 px, centered, above scrim */
  .sol-phero__kv,
  .sol-phero--bg .sol-phero__kv {
    position: relative;
    width: 200px;
    height: auto;
    margin: 24px auto 26px;
  }
  .sol-phero__map { display: none; }
  .sol-phero__kvwrap { position: relative; left: 0; width: 200px; margin: 24px auto 26px; }
  .sol-phero__kvwrap .sol-phero__kv { margin: 0; }
  .sol-phero__text { width: 100%; margin: 26px 0 0; padding: 0 24px; }

  .sol-prices__grid { grid-template-columns: 1fr; gap: 16px; }
  .sol-prices__note--wide { font-size: 11px; }
  .sol-tab { padding: 12px 14px 14px; }
  .sol-tab caption { font-size: 13px; }
  .sol-tab tbody th { width: 30%; font-size: 10px; }
  .sol-tab tbody td { font-size: 10px; }

  .sol-info { padding: 40px 16px 44px; }
  .sol-info__grid { grid-template-columns: 1fr; gap: 14px; }
  .sol-info__card,
  .sol-info__card:nth-child(1),
  .sol-info__card:nth-child(2),
  .sol-info__card:nth-child(3) { grid-column: auto; }
  .sol-info__card p { font-size: 10.5px; }

  .sol-story { padding: 40px 24px 0; }
  .sol-story__p { font-size: 11px; }
  .sol-questions { padding: 0 24px; }
  .sol-reviews { padding-bottom: 44px; }
  .sol-review { width: 100%; }
}

/* ================================================================== v9 == */

/* Desktop park hero: full-width stage, backdrop pinned right, KV from the
 * centre, text column anchored to the content axis. */
@media (min-width: 768px) {
  .sol-phero__inner { max-width: none; }
  /* KV comment 29. 8.: shorter hero so the partner strip makes the first
   * fold on big monitors -- 596 -> 520, KV cover and text rhythm follow */
  .sol-phero--bg .sol-phero__inner { min-height: 490px; }
  /* height stays 100%: the photo covers the whole stage, the bottom wash
   * melts its cut edge into black (CTO 27. 8.: no naked strip) */
  .sol-phero__bg { left: auto; right: 0; width: 1280px; }
  .sol-phero--bg .sol-phero__kv { left: calc(50% + 5px); height: 440px; }
  .sol-phero--bg .sol-phero__kvwrap { left: calc(50% + 5px); }
  .sol-phero__text { width: 372px; margin: 32px 0 28px calc(50% - 420px); }
  .sol-phero__addr img { width: 26px; height: 24px; }
}

/* Mobile park hero (SYNC 31. 8.): copy-first, poster below the CTAs.
 * H1 40, gold-framed address icon, opening date under the perex, white
 * price, stacked 200px buttons. Hours stay out of the hero (they live in
 * the price section and the info cards). */
@media (max-width: 767px) {
  .sol-phero__h1 { margin-top: 0; font-size: 40px; line-height: 42px; letter-spacing: .01em; }
  .sol-phero__addr { margin-top: 14px; gap: 10px; font-size: 15px; }
  .sol-phero__addr img {
    width: 13px;
    height: 13px;
    padding: 6px;
    border: 1px solid var(--sol-gold);
    border-radius: 6px;
    box-sizing: content-box;
  }
  .sol-phero__perex { margin-top: 22px; font-size: 10px; line-height: 1.85; text-wrap: pretty; }
  .sol-phero__open { margin: 9px 0 0; font-size: 10px; font-weight: 600; color: var(--sol-white); }
  .sol-phero__hours { display: none; }
  .sol-phero__price { gap: 12px; margin-top: 22px; }
  .sol-phero__from { font-size: 10px; }
  .sol-phero__value { font-size: 28px; line-height: 28px; color: var(--sol-white); }
  .sol-phero__badge { align-self: center; margin: 0; width: 48px; height: 35px; }
  .sol-phero__badge rect { stroke-width: 5px; }
  .sol-phero__note { margin-top: 18px; font-size: 9.5px; line-height: 1.8; }
  .sol-phero__note b { color: var(--sol-white); }
  .sol-phero__cta { flex-direction: column; align-items: center; gap: 11px; margin-top: 24px; }
  .sol-phero__cta .sol-btn {
    flex: none;
    width: 200px;
    height: 32px;
    border-radius: 5px;
    font-size: 12px;
  }
  .sol-phero__cta .sol-btn--tickets,
  .sol-phero__cta .sol-btn--soon {
    height: 40px;
    font-size: 15px;
    font-weight: 500;
  }
}

/* v9 price cards: corner badge on ticket/boat tables, radius 4 on mobile */
.sol-tab { position: relative; }
/* KV comment 29. 8. večer: the sticker's right edge lines up with the number
 * column (the card's inner padding), not a loose 14px offset */
.sol-tab__flag {
  position: absolute;
  right: 20px;
  top: 12px;
  background: var(--sol-gold);
  color: var(--sol-white);
  font-size: 8px;
  font-weight: 500;
  border-radius: 1px;
  padding: 3px 7px;
  letter-spacing: 0;
}
.sol-tab--pass .sol-tab__flag { display: none; }
/* who-qualifies claim under the reduced tariff, lighter face (CTO 29. 8.) */
.sol-tab__hint {
  display: block;
  font-size: 8px;
  font-weight: 300;
  color: var(--sol-grey-2);
  white-space: nowrap;
}
.sol-prices__boat { width: 1100px; max-width: 100%; margin: 34px auto 0; }

/* Boat + pass notes are part of the white card in the CD file, not a loose
 * paragraph under it: the wrapper carries the border and the table goes bare. */
.sol-prices__boat,
.sol-prices__pass {
  border: .5px solid var(--sol-gold-rule);
  border-radius: 2px;
  background: var(--sol-white);
  padding: 14px 20px 16px;
}
.sol-prices__boat .sol-tab,
.sol-prices__pass .sol-tab { border: 0; border-radius: 0; padding: 0; background: transparent; }
.sol-prices__boat .sol-prices__note,
.sol-prices__pass .sol-prices__note { max-width: none; margin: 10px 0 0; }
.sol-prices__boat .sol-tab__flag { right: 0; top: -2px; }
.sol-red { color: #c0392b; }
@media (max-width: 767px) {
  .sol-tab { border-radius: 4px; padding: 12px 13px 13px; }
  .sol-tab__flag { right: 12px; top: 11px; font-size: 7px; padding: 3px 6px; }
  .sol-tab caption { font-size: 12px; letter-spacing: .03em; padding-right: 78px; }
  .sol-tab thead th { font-size: 6.5px; letter-spacing: .05em; }
  .sol-tab tbody th, .sol-tab tbody td { font-size: 9px; padding: 7px 0; }
  .sol-tab__save { font-size: 6.5px; }
  .sol-info__card { border-radius: 4px; }
  .sol-prices__hours { font-size: 10.5px; }
  .sol-reviews__rating { height: 38px; }
}

/* v9 kompas band numbers */
@media (max-width: 767px) {
  .sol-compass__inner {
    flex-direction: row;
    align-items: flex-start;
    text-align: left;
    padding: 26px 24px 30px;
    position: relative;
    overflow: hidden;
    min-height: 0;
  }
  .sol-compass__img {
    position: absolute;
    left: -96px;
    top: 24px;
    width: 230px;
    height: 230px;
    margin: 0;
  }
  .sol-compass__inner > div { padding-left: 118px; width: 100%; }
  .sol-compass__h { font-size: 19px; line-height: 1.3; }
  .sol-compass__sub { margin-top: 6px; font-size: 10px; }
  .sol-compass__cities {
    flex-direction: row;
    gap: 22px;
    margin-top: 22px;
    margin-left: -118px;
    font-size: 11px;
    line-height: 2;
    text-align: left;
  }
  .sol-compass__cities ul { flex: 1; }
  .sol-compass--wide .sol-compass__inner { justify-content: flex-start; }
  .sol-compass--wide .sol-compass__img { position: absolute; width: 230px; height: 230px; margin: 0; }
}

/* per-park partners section (#partneri-parku), target of the strip link */
/* breathing room between the white surface and the heading matches the other
 * park sections (Martina, 28. 8. -- "dodrzet mezery mezi plochou a textem") */
.sol-park-partners { background: var(--sol-white); padding: 52px 24px 48px; text-align: center; }
.sol-park-partners ul {
  list-style: none;
  margin: 26px 0 0;
  padding: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 44px;
  flex-wrap: wrap;
}
.sol-park-partners li { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.sol-park-partners img { height: calc(var(--h, 16px) * 2.2); width: auto; max-width: 220px; }
.sol-park-partners li span { font-size: 11px; font-weight: 300; color: var(--sol-grey-2); }

/* Mayoral patronage (Praha 4, carried over from last season's site): the
 * official wording beside the borough coat of arms, as the old web had it. */
.sol-zastita {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 34px;
  margin-top: 36px;
  flex-wrap: wrap;
}
.sol-zastita__text {
  margin: 0;
  font-size: 12px;
  line-height: 1.9;
  font-weight: 300;
  color: var(--sol-grey-2);
  text-align: left;
}
/* .sol-park-partners img (the roster row) must not size the coat of arms */
.sol-park-partners .sol-zastita__logo { height: 92px; width: auto; max-width: none; }

/* Street address of the venue, linked to Google Maps (CTO 27. 8.) */
.sol-story__addr {
  margin: 22px auto 0;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 400;
}
.sol-story__addr a { color: var(--sol-grey-2); text-decoration: underline; text-underline-offset: 3px; }
.sol-story__addr a:hover { color: var(--sol-gold); }

/* KV comments 29. 8.: address deep-links to Google Maps in the address tint */
.sol-phero__addr-link { color: inherit; }
.sol-phero__addr-link:hover { color: var(--sol-gold); }

/* KV comment 29. 8. večer: italic second fine-print line breaks the block up */
.sol-prices__fine + .sol-prices__fine { font-style: italic; }

/* past-seasons photo strip under the reviews (KV comment 29. 8. večer) */
.sol-park-history { background: var(--sol-white); padding: 44px 24px 56px; text-align: center; }
.sol-park-history__strip {
  display: flex;
  justify-content: center;
  gap: 10px;
  margin: 26px auto 0;
  padding: 0;
  list-style: none;
  max-width: 1100px;
  overflow-x: auto;
}
.sol-park-history__strip li { flex: none; }
.sol-park-history__strip img {
  width: 196px;
  height: 147px;
  object-fit: cover;
  border-radius: 8px;
  display: block;
}
@media (max-width: 767px) {
  .sol-park-history { padding: 34px 16px 40px; }
  .sol-park-history__strip { justify-content: flex-start; }
  .sol-park-history__strip img { width: 150px; height: 112px; }
}

/* 15s boat spot above the boat price table (KV comment 29. 8. večer) */
.sol-boat__video {
  display: block;
  width: 100%;
  max-height: 380px;
  object-fit: cover;
  border-radius: 2px;
  margin-bottom: 14px;
}
