/* Veřejný web — cílený na čistý, klidný developerský real-estate vzhled.
   Žádné gradientové bloby, glow efekty, glassmorphism ani dekorativní podtržení. */

/* Montserrat self-hosted (dřív Google Fonts) — bez extra originu šetří ~750ms
   render-blocking na mobilu. Proměnný řez, jeden soubor pokrývá váhy 400–800. */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url('/assets/fonts/montserrat-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url('/assets/fonts/montserrat-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
  --ink: #16191f;
  --ink-soft: #383e48;
  --paper: #ffffff;
  --line: #e4e6ea;
  --muted: #6b7280;
  --accent: #00273f;
  --accent-ink: #ffffff;
  --radius: 4px;
  --font: 'Montserrat', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;

  /* Stavy bytů — jemné pastelové odstíny pro odznaky, ne syté "semaforové" barvy. */
  --status-volny-bg: #dcefe3;
  --status-volny-text: #3d7a5c;
  --status-predrezervace-bg: #dfeaf5;
  --status-predrezervace-text: #3f6a8a;
  --status-rezervovano-bg: #f6e9d6;
  --status-rezervovano-text: #93602c;
  --status-prodano-bg: #f5dfdf;
  --status-prodano-text: #954848;

  /* Stejné odstíny, sytější — pro vyplň polygonů na mapce podlaží, kde pastel splývá s podkladem. */
  --status-volny-map: #5fb98a;
  --status-predrezervace-map: #5a96c4;
  --status-rezervovano-map: #d99a3f;
  --status-prodano-map: #cf6161;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
#poptavka { scroll-margin-top: 1.5rem; background: rgba(190, 175, 146, 0.16); }

body {
  margin: 0;
  font-family: var(--font);
  color: var(--ink);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
}

a { color: inherit; }

.site-nav {
  position: absolute;
  top: 0; left: 0; right: 0;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1.4rem clamp(1.25rem, 4vw, 3rem);
}

.site-nav .logo {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  font-weight: 700;
  font-size: 15px;
  letter-spacing: 0.03em;
  color: #fff;
  text-decoration: none;
  text-transform: uppercase;
}
.site-nav .logo img { height: 44px; width: auto; display: block; }

.site-nav .nav-links {
  display: flex;
  gap: clamp(1rem, 2.5vw, 2rem);
  list-style: none;
  margin: 0;
  padding: 0;
}
.site-nav .nav-links a {
  color: rgba(255,255,255,0.88);
  text-decoration: none;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding-bottom: 4px;
  border-bottom: 1px solid transparent;
  transition: border-color 0.15s ease, color 0.15s ease;
}
.site-nav .nav-links a:hover { color: #fff; border-bottom-color: #fff; }

.site-nav .nav-phone {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  border: 1px solid rgba(255,255,255,0.35);
  color: #fff;
  text-decoration: none;
  font-size: 13px;
  font-weight: 600;
  padding: 0.55rem 1.1rem;
  border-radius: 999px;
  white-space: nowrap;
}
.site-nav .nav-phone:hover { border-color: #fff; }
.nav-phone-icon { width: 15px; height: 15px; flex-shrink: 0; }

.nav-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  width: 40px;
  height: 40px;
  padding: 0;
  border: none;
  background: transparent;
  cursor: pointer;
  z-index: 20;
}
.nav-toggle span {
  display: block;
  width: 22px;
  height: 2px;
  background: #fff;
  border-radius: 2px;
  transition: transform 0.25s ease, opacity 0.2s ease;
}
.site-nav-solid .nav-toggle span { background: var(--subpage-nav-ink, #2c2a24); }
.nav-open .nav-toggle span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-open .nav-toggle span:nth-child(2) { opacity: 0; }
.nav-open .nav-toggle span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

@media (max-width: 860px) {
  .site-nav { flex-wrap: wrap; }
  .nav-toggle { display: flex; order: 3; }
  .site-nav .nav-phone { order: 2; margin-left: auto; margin-right: 0.5rem; }

  .site-nav .nav-links {
    order: 4;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    flex-direction: column;
    gap: 0;
    background: rgba(15,16,20,0.97);
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    pointer-events: none;
    transition: max-height 0.3s ease, opacity 0.25s ease;
  }
  .site-nav-solid .nav-links { background: var(--subpage-nav-bg, #ddd4c1); }

  .site-nav.nav-open .nav-links {
    max-height: 480px;
    opacity: 1;
    pointer-events: auto;
    box-shadow: 0 12px 24px rgba(0,0,0,0.15);
  }

  .site-nav .nav-links a {
    display: block;
    padding: 1rem clamp(1.25rem, 4vw, 3rem);
    border-bottom: 1px solid rgba(255,255,255,0.1);
  }
  .site-nav-solid .nav-links a { border-bottom-color: rgba(44,42,36,0.12); }
}

.hero {
  position: relative;
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
  align-items: flex-end;
  background-size: cover;
  background-position: center;
  background-color: #21262f;
}
.hero-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(10,11,14,0.55) 0%, rgba(10,11,14,0.55) 40%, rgba(8,9,12,1) 100%);
}
.hero-content {
  position: relative;
  z-index: 2;
  width: 100%;
  padding: 0 clamp(1.25rem, 4vw, 3rem) clamp(3rem, 7vw, 5rem);
  max-width: 1400px;
  margin: 0 auto;
}
.hero-heading {
  color: #fff;
  font-size: clamp(2.4rem, 6.2vw, calc(var(--heading-size, 4.2rem) * 1.12));
  line-height: 1.05;
  font-weight: 600;
  margin: 0 0 1rem;
  letter-spacing: -0.01em;
}
.hero-badge {
  display: inline-block;
  margin: 0 0 1.25rem;
  padding: 0.5rem 1.1rem;
  border-radius: 999px;
  background: var(--accent);
  color: #fff;
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  box-shadow: 0 4px 16px rgba(0,39,63,0.4);
}
.hero-subheading {
  color: rgba(255,255,255,0.82);
  font-size: calc(var(--subheading-size, 1.25rem) * 1.1);
  font-weight: 400;
  margin: 0 0 2rem;
  max-width: 46ch;
}
.hero-ctas { display: flex; gap: 1.1rem; flex-wrap: wrap; }

@media (max-width: 480px) {
  .hero-content { padding-bottom: clamp(1.75rem, 6vw, 3rem); text-align: center; display: flex; flex-direction: column; align-items: center; }
  .hero-heading { font-size: clamp(1.9rem, 9vw, 2.6rem); margin-bottom: 0.6rem; }
  .hero-badge { font-size: 0.85rem; padding: 0.45rem 0.95rem; }
  .hero-subheading { font-size: clamp(0.95rem, 3.8vw, 1.1rem) !important; margin-bottom: 1.25rem; max-width: none; }
  .hero-ctas { flex-direction: column; align-items: stretch; width: 100%; }
  .hero-ctas .btn { padding: 0.85rem 1.3rem; font-size: 14px; text-align: center; }
}

.btn {
  display: inline-block;
  padding: 1.05rem 2.1rem;
  border-radius: var(--radius);
  font-size: 16px;
  font-weight: 600;
  text-decoration: none;
  letter-spacing: 0.01em;
  border: 1px solid transparent;
  transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.btn-accent {
  background: var(--btn-bg, var(--accent));
  color: var(--btn-text, var(--accent-ink));
}
.btn-accent:hover { background: var(--btn-hover, #001a2b); }

.btn-outline {
  border-color: var(--btn-border, rgba(255,255,255,0.55));
  color: var(--btn-text, #fff);
  background: transparent;
}
.btn-outline:hover {
  border-color: var(--btn-hover, #fff);
  background: var(--btn-hover, rgba(255,255,255,0.08));
  color: #16191f;
}

/* Nástupní animace prvků — typ/trvání/zpoždění se nastavuje v adminu a vkládá inline. */
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes fadeInUp { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: translateY(0); } }
@keyframes fadeInDown { from { opacity: 0; transform: translateY(-28px); } to { opacity: 1; transform: translateY(0); } }
@keyframes fadeInLeft { from { opacity: 0; transform: translateX(28px); } to { opacity: 1; transform: translateX(0); } }
@keyframes fadeInRight { from { opacity: 0; transform: translateX(-28px); } to { opacity: 1; transform: translateX(0); } }
@keyframes zoomIn { from { opacity: 0; transform: scale(0.92); } to { opacity: 1; transform: scale(1); } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* Navigace na podstránkách — plná světlá barva místo tmavého překryvu přes hero obrázek. */
.site-nav-solid {
  position: relative;
  background: var(--subpage-nav-bg, #ddd4c1);
}
.site-nav-solid .logo,
.site-nav-solid .nav-links a,
.site-nav-solid .nav-phone {
  color: var(--subpage-nav-ink, #2c2a24);
}
.site-nav-solid .logo img { filter: brightness(0); }
.site-nav-solid .nav-links a:hover {
  color: var(--subpage-nav-ink, #2c2a24);
  border-bottom-color: var(--subpage-nav-accent, #8a6f45);
}
.site-nav-solid .nav-phone { border-color: rgba(44,42,36,0.3); }
.site-nav-solid .nav-phone:hover { border-color: var(--subpage-nav-ink, #2c2a24); }

/* Drobečková navigace nad obsahem stránek s výběrem bytu (podlaží, detail bytu). */
.page-breadcrumb {
  padding: 0.85rem clamp(1.25rem, 4vw, 3rem);
  font-size: 13px;
  color: var(--muted);
  background: var(--paper);
  border-bottom: 1px solid var(--line);
}
.page-breadcrumb a { color: var(--muted); text-decoration: none; }
.page-breadcrumb a:hover { color: var(--ink); }
.page-breadcrumb .crumb-sep { margin: 0 0.4em; color: var(--line); }
.page-breadcrumb .crumb-current { color: var(--ink); font-weight: 500; }

/* Výběr bytu — celá budova vždy vidět bez scrollování (výška vázaná na viewport),
   obrázek se škáluje podle své přirozené proporce (žádné ořezávání ani zkreslení),
   takže procentuální souřadnice hotspotů vždy sedí přesně tam, kam byly nakreslené. */
.floor-picker-row {
  max-width: 1560px;
  margin: 0 auto;
  height: calc(100vh - var(--nav-height, 78px));
  min-height: 480px;
  box-sizing: border-box;
  padding: clamp(1.5rem, 3vw, 2.5rem) clamp(1.25rem, 4vw, 3rem);
  display: flex;
  align-items: center;
  gap: clamp(1.5rem, 4vw, 3.5rem);
}

.floor-picker-intro { flex: 0 0 33%; }
.floor-picker-intro h1,
.floor-picker-intro h2 {
  font-size: clamp(1.5rem, 3vw, 2.1rem);
  font-weight: 600;
  color: var(--ink);
  margin: 0 0 0.9rem;
}
.floor-picker-intro > p {
  font-size: clamp(0.95rem, 1.3vw, 1.1rem);
  line-height: 1.55;
  color: var(--ink-soft, #56534a);
  margin: 0;
  max-width: 34ch;
}

.floor-picker-col {
  flex: 1;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
}

/* Box je vždy zvenku přesně tak velký jako vykreslená fotka (žádné šedé pruhy) —
   JS spočítá rozměry z přirozeného poměru stran obrázku vůči dostupnému místu
   a nastaví je jako inline px na .floor-picker, protože procentuální výška by se
   v tomhle flex řetězci nedopočítala spolehlivě (auto výška rodiče). */
.floor-picker {
  position: relative;
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(16,18,22,0.05), 0 24px 60px -24px rgba(16,18,22,0.35);
}
.floor-picker img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.floor-picker--flat { border-radius: 0; }
.floor-picker svg.overlay {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.floor-picker polygon {
  fill: var(--status-volny-map);
  fill-opacity: 0;
  stroke: #fff;
  stroke-opacity: 0.16;
  stroke-width: 0.25;
  cursor: pointer;
  transition: fill-opacity 0.2s ease, stroke-opacity 0.2s ease;
}
.floor-picker polygon:hover { fill-opacity: 0.42; stroke-opacity: 0.9; }

/* Stav bytu na půdorysu — volný je skoro neviditelný, dokud na něj nenajedeš. */
.floor-picker polygon.unit-status-volny { fill: var(--status-volny-map); fill-opacity: 0; }
.floor-picker polygon.unit-status-volny:hover { fill-opacity: 0.62; }
.floor-picker polygon.unit-status-predrezervace { fill: var(--status-predrezervace-map); fill-opacity: 0.25; }
.floor-picker polygon.unit-status-predrezervace:hover { fill-opacity: 0.60; }
.floor-picker polygon.unit-status-rezervovano { fill: var(--status-rezervovano-map); fill-opacity: 0.46; }
.floor-picker polygon.unit-status-rezervovano:hover { fill-opacity: 0.70; }
.floor-picker polygon.unit-status-prodano { fill: var(--status-prodano-map); fill-opacity: 0.46; }
.floor-picker polygon.unit-status-prodano:hover { fill-opacity: 0.70; }

/* Levý panel s informacemi o bytu, na který se zrovna najelo myší. */
#unit-info h1 {
  font-size: clamp(1.4rem, 2.6vw, 1.9rem);
  font-weight: 600;
  color: var(--ink);
  margin: 0 0 0.6rem;
}
#unit-info[data-default="1"] p {
  font-size: clamp(0.95rem, 1.3vw, 1.1rem);
  line-height: 1.55;
  color: var(--ink-soft);
  margin: 0;
  max-width: 34ch;
}

.unit-info-badge {
  display: inline-block;
  padding: 0.3rem 0.85rem;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
  margin-bottom: 1.25rem;
}
.unit-title-row .unit-info-badge { margin-bottom: 0; }
.unit-info-badge.unit-status-volny { background: var(--status-volny-bg); color: var(--status-volny-text); }
.unit-info-badge.unit-status-predrezervace { background: var(--status-predrezervace-bg); color: var(--status-predrezervace-text); }
.unit-info-badge.unit-status-rezervovano { background: var(--status-rezervovano-bg); color: var(--status-rezervovano-text); }
.unit-info-badge.unit-status-prodano { background: var(--status-prodano-bg); color: var(--status-prodano-text); }

.unit-info-facts { margin: 0 0 1.25rem; }
.unit-info-facts div {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.55rem 0;
  border-bottom: 1px solid var(--line);
  font-size: 14px;
}
.unit-info-facts dt { color: var(--muted); margin: 0; font-weight: 400; }
.unit-info-facts dd { color: var(--ink); margin: 0; font-weight: 600; }

.unit-info-price {
  font-size: 2.5rem;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.1;
  margin: 0 0 1.25rem;
}

.unit-info-hint {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  margin-top: 1.25rem;
  padding: 0.75rem 1rem;
  border: 1px solid var(--ink);
  border-radius: var(--radius);
  font-size: 13px;
  font-weight: 600;
  color: var(--ink-soft);
  line-height: 1.4;
}
.unit-info-hint::before {
  content: "\2192";
  flex: none;
  width: 1.6rem;
  height: 1.6rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1px solid var(--ink);
  color: var(--ink);
  font-size: 14px;
}

.floor-pill {
  position: absolute;
  z-index: 4;
  display: flex;
  align-items: stretch;
  background: #fff;
  border-radius: 999px;
  overflow: hidden;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.02em;
  box-shadow: 0 8px 24px rgba(0,0,0,0.24);
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 0.12s ease, transform 0.12s ease;
  pointer-events: none;
  white-space: nowrap;
}
.floor-pill.visible { opacity: 1; transform: translateY(0); }
.floor-pill span { padding: 0.55rem 1rem; }
.floor-pill .pill-building { color: #16191f; }
.floor-pill .pill-floor { background: var(--status-volny-bg); color: var(--status-volny-text); }
.floor-pill .pill-count { background: #f4f1ea; color: #2c2a24; font-weight: 600; }

.floor-list, .unit-list { display: none; }

/* Čísla bytů natrvalo na plánku (patro.php) — orientace bez hoveru/tapu. */
.unit-plan-badges { position: absolute; inset: 0; pointer-events: none; }
.unit-plan-badge {
  position: absolute;
  transform: translate(-50%, -50%);
  background: #fff;
  color: var(--ink);
  font-size: 11px;
  font-weight: 700;
  padding: 2px 7px;
  border-radius: 999px;
  box-shadow: 0 2px 6px rgba(16,18,22,0.25);
  white-space: nowrap;
  transition: background 0.15s ease, color 0.15s ease, transform 0.15s ease;
}
.unit-plan-badge.active {
  background: var(--ink);
  color: #fff;
  transform: translate(-50%, -50%) scale(1.15);
}
.floor-picker polygon.active { fill-opacity: 0.62 !important; stroke-opacity: 0.9 !important; }

/* O projektu + Lokalita — minimalistický obsahový blok pod hero sekcí. */
.section-eyebrow {
  margin: 0 0 0.75rem;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent);
}
.section-heading {
  font-size: clamp(1.8rem, 3.2vw, 2.6rem);
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0 0 1.25rem;
}
.section-text {
  font-size: 1rem;
  line-height: 1.75;
  color: var(--ink-soft);
  max-width: 62ch;
  margin: 0 0 1.1rem;
}
.section-text:last-child { margin-bottom: 0; }

/* Obsah z WYSIWYG editoru (admin/project-content.php) — základní formátování bez vlastních tříd. */
.rich-text p { margin: 0 0 1.1rem; }
.rich-text p:last-child { margin-bottom: 0; }
.rich-text strong, .rich-text b { color: var(--ink); font-weight: 600; }
.rich-text ul, .rich-text ol { margin: 0 0 1.1rem; padding-left: 1.3em; }
.rich-text li { margin: 0 0 0.35rem; }
.rich-text a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }

.about {
  max-width: 1400px;
  margin: 0 auto;
  padding: clamp(4rem, 8vw, 7rem) clamp(1.25rem, 4vw, 3rem);
}
.about-grid {
  display: flex;
  flex-wrap: wrap;
  gap: clamp(2rem, 5vw, 4rem);
  align-items: center;
  margin-bottom: clamp(2.5rem, 5vw, 4rem);
}
.about-copy { flex: 1 1 460px; }
.about-media { flex: 1 1 380px; }
.about-media img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 8px;
}

.feature-icon {
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border: 1px solid var(--line);
  border-radius: 50%;
  color: var(--accent);
}
.feature-icon svg { width: 20px; height: 20px; }

.feature-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 1px;
  background: var(--line);
  border: 1px solid var(--line);
  border-radius: 8px;
  overflow: hidden;
}
.feature-card {
  background: var(--paper);
  padding: 1.5rem;
  display: flex;
  align-items: flex-start;
  gap: 1rem;
}
.feature-text {
  font-size: 14px;
  font-weight: 500;
  line-height: 1.55;
  color: var(--ink-soft);
  padding-top: 0.5rem;
}

.location {
  background: #f7f5f1;
  padding: clamp(4rem, 8vw, 7rem) 0;
}
/* Stejný box model jako .about (max-width 1400 + stejný horizontální padding),
   aby levý okraj seděl s blokem "Byty Velká Bíteš" nad ním i na širokých monitorech. */
.location-inner {
  max-width: 1400px;
  margin: 0 auto;
  padding: 0 clamp(1.25rem, 4vw, 3rem);
}
.location-copy { max-width: 75ch; }

.fact-row {
  list-style: none;
  margin: 1.75rem 0 2.5rem;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}
.fact-item {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.5rem 1rem 0.5rem 0.5rem;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink);
}
.fact-item .feature-icon { width: 32px; height: 32px; }
.fact-item .feature-icon svg { width: 16px; height: 16px; }

/* Dvousloupcový layout sekce Lokalita — text + badges vlevo, mapka vpravo (na úzkých
   obrazovkách se zalomí pod sebe, mapka až za text). */
.location-layout {
  display: flex;
  flex-wrap: wrap;
  gap: clamp(2rem, 5vw, 3.5rem);
  align-items: center;
  margin-top: 1rem;
}
.location-content { flex: 1 1 340px; min-width: 0; }

/* Mapka Jihlava–Velká Bíteš–Brno na reálném obrysu ČR (viz komentář v public/o-projektu.php
   u vykreslení SVG — souřadnice měst i tvar hranice odpovídají skutečné geografii/měřítku).
   Bez JS je rovnou celá vidět (žádné skryté prvky v základu) — animace přibývá jen
   s .location-map--ready přes assets/js/location-map.js. */
.location-map { flex: 2 1 380px; max-width: 560px; margin: 0 auto; }
.location-map svg { display: block; width: 100%; height: auto; }

.location-map-country { fill: var(--paper); stroke: var(--line); stroke-width: 2; stroke-linejoin: round; }

/* Celá D1 (Praha–Ostrava) jen jako tenký doplňkový kontext; zvýrazněný úsek
   Jihlava–Velká Bíteš–Brno (.location-map-route) se kreslí přes ni tlustší a barevně. */
.location-map-d1 { fill: none; stroke: var(--ink-soft); stroke-width: 1.25; stroke-linecap: round; stroke-linejoin: round; opacity: 0.35; stroke-dasharray: 1 5; }
.location-map--ready .location-map-d1 {
  opacity: 0;
  transition: opacity 0.6s ease;
  transition-delay: 2.3s;
}
.location-map--ready.is-visible .location-map-d1 { opacity: 0.35 !important; }

/* Trasa se kreslí postupně od Velké Bíteše: nejdřív úsek na Brno, pak na Jihlavu —
   viz odstupňované transition-delay níže i na příslušných .location-map-marker--*. */
.location-map-route { fill: none; stroke: var(--accent); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.location-map--ready .location-map-route {
  transition: stroke-dashoffset 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}
.location-map--ready .location-map-route--brno { transition-delay: 0.2s; }
.location-map--ready .location-map-route--jihlava { transition-delay: 1.2s; }
.location-map--ready.is-visible .location-map-route { stroke-dashoffset: 0 !important; }

.location-map-city-dot { fill: var(--paper); stroke: var(--ink-soft); stroke-width: 2; }
.location-map-home-dot { fill: var(--accent); stroke: #fff; stroke-width: 2.5; }

.location-map-ref-dot { fill: var(--line); stroke: var(--ink-soft); stroke-width: 1.5; }
.location-map-ref-label { font: 600 11px/1 var(--font); fill: var(--ink-soft); text-anchor: middle; }

.location-map-label { font: 700 13px/1 var(--font); fill: var(--ink); text-anchor: middle; }
.location-map-label--home { font-size: 15px; fill: var(--accent); }

/* Jihlava/Brno: jméno + čas spojené do jednoho "chipu" mimo bod, napojené tenkou spojnicí. */
.location-map-leader { stroke: var(--ink-soft); stroke-width: 1; opacity: 0.4; }
.location-map-chip rect { fill: var(--paper); stroke: var(--line); stroke-width: 1.5; }
.location-map-chip text { font: 700 11px/1 var(--font); fill: var(--ink); }

.location-map-pulse {
  fill: none;
  stroke: var(--accent);
  stroke-width: 2;
  transform-origin: center;
  animation: location-map-pulse 2.4s ease-out infinite;
}
@keyframes location-map-pulse {
  0% { r: 7; opacity: 0.55; }
  100% { r: 15; opacity: 0; }
}

/* Postupný nástup: Velká Bíteš (0s) -> Brno (na konci prvního úseku trasy) ->
   Jihlava (na konci druhého úseku) -> Praha/Ostrava/D1 jako poslední ("zbytek"). */
.location-map--ready .location-map-marker {
  opacity: 0;
  transform: scale(0.5);
  transform-box: fill-box;
  transform-origin: center;
  transition: opacity 0.5s ease, transform 0.5s ease;
}
.location-map--ready .location-map-marker--home { transition-delay: 0s; }
.location-map--ready .location-map-marker--brno { transition-delay: 1s; }
.location-map--ready .location-map-marker--jihlava { transition-delay: 2s; }
.location-map--ready .location-map-marker--rest { transition-delay: 2.3s; }
.location-map--ready.is-visible .location-map-marker { opacity: 1; transform: scale(1); }

@media (prefers-reduced-motion: reduce) {
  .location-map-pulse { animation: none; }
}

.financing {
  max-width: 1400px;
  margin: 0 auto;
  padding: clamp(2rem, 5vw, 3.5rem) clamp(1.25rem, 4vw, 3rem) clamp(4rem, 8vw, 7rem);
}
.financing-intro { max-width: 720px; }
.financing-outro { margin-top: clamp(3rem, 6vw, 5rem); padding-top: clamp(2.5rem, 5vw, 3.5rem); border-top: 1px solid var(--line); }

.financing-layout {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: clamp(2.5rem, 5vw, 5rem);
  margin-top: clamp(2.5rem, 5vw, 4rem);
}

.timeline {
  position: relative;
  list-style: none;
  margin: 0;
  padding: 0;
  flex: 1.3 1 460px;
}
.timeline-item {
  position: relative;
  display: flex;
  gap: 1.5rem;
  padding-bottom: clamp(2rem, 4vw, 2.75rem);
}
.timeline-item:last-child { padding-bottom: 0; }

/* Spojovací linka mezi kolečky — vždy vykreslená celá, JS ji jen animuje (viz .timeline--animated). */
.timeline-item:not(:last-child)::after {
  content: '';
  position: absolute;
  left: 23px;
  top: 48px;
  bottom: 0;
  width: 2px;
  background: var(--line);
  transform-origin: top;
}

/* Postupné vykreslení — aktivuje se JS (assets/js/timeline-reveal.js) přidáním třídy na .timeline;
   bez JS (nebo s prefers-reduced-motion) zůstává obsah rovnou plně viditelný. */
.timeline--animated .timeline-item {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.7s ease, transform 0.7s ease;
  transition-delay: calc(var(--i, 0) * 160ms);
}
.timeline--animated .timeline-item.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.timeline--animated .timeline-item:not(:last-child)::after {
  transform: scaleY(0);
  transition: transform 0.6s ease;
  transition-delay: calc(var(--i, 0) * 160ms + 280ms);
}
.timeline--animated .timeline-item.is-visible:not(:last-child)::after {
  transform: scaleY(1);
}

.timeline-marker {
  position: relative;
  z-index: 1;
  flex: none;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--paper);
  border: 2px solid var(--accent);
  color: var(--accent);
  font-weight: 700;
  font-size: 15px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.timeline-content { padding-top: 0.5rem; }
.timeline-title {
  font-size: clamp(1.05rem, 1.6vw, 1.25rem);
  font-weight: 600;
  letter-spacing: -0.005em;
  color: var(--ink);
  margin: 0 0 0.5rem;
}
.timeline-text { font-size: 1rem; line-height: 1.75; color: var(--ink-soft); max-width: 62ch; margin: 0; }
.timeline-text strong, .timeline-text b { font-weight: 600; color: var(--ink); }

.benefits-panel {
  flex: 1 1 380px;
  max-width: 460px;
  background: #f7f5f1;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: clamp(1.75rem, 3vw, 2.5rem);
}
.benefits-panel-heading {
  margin: 0 0 1.5rem;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent);
}
.benefit-list { list-style: none; margin: 0; padding: 0; }
.benefit-item {
  padding: 1.25rem 0;
  border-top: 1px solid var(--line);
}
.benefit-item:first-child { border-top: none; padding-top: 0; }
.benefit-item:last-child { padding-bottom: 0; }
.benefit-number {
  display: block;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--accent);
  margin-bottom: 0.4rem;
}
.benefit-title { font-size: 0.95rem; font-weight: 600; color: var(--ink); margin: 0 0 0.4rem; }
.benefit-text { font-size: 13.5px; line-height: 1.65; color: var(--ink-soft); margin: 0; }
.benefit-text strong, .benefit-text b { font-weight: 600; color: var(--ink); }

/* Detail bytu — plán vlevo, fakta a poptávka vpravo, mini-plánky dole. */
.unit-page {
  max-width: 1200px;
  margin: 0 auto;
  padding: clamp(1.5rem, 4vw, 3rem) clamp(1.25rem, 4vw, 3rem) 1rem;
}
.unit-detail-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(320px, 420px);
  gap: clamp(2rem, 4vw, 3.5rem);
  align-items: flex-start;
  margin: 0.5rem 0 4rem;
}

/* Galerie — dispozice / umístění na podlaží / umístění v budově jako přepínatelné panely,
   všechny obrázky bytu tak jsou dostupné na jednom místě jedním klikem. */
.unit-gallery { position: sticky; top: calc(var(--nav-height, 78px) + 1.5rem); }
.unit-gallery-main {
  position: relative;
  padding: 1.25rem;
  background: var(--paper);
  height: calc(min(60vh, 560px) + 2.5rem);
  display: flex;
  align-items: center;
  justify-content: center;
}
.unit-gallery-panel { display: none; position: relative; width: fit-content; max-width: 100%; margin: 0 auto; }
.unit-gallery-panel.active { display: block; }
.unit-gallery-panel img { display: block; width: auto; max-width: 100%; height: auto; max-height: min(60vh, 560px); }
.unit-gallery-panel svg.overlay { position: absolute; inset: 0; width: 100%; height: 100%; }
.unit-gallery-panel polygon[fill-opacity="0.45"] { stroke: #333; stroke-width: 0.3; }

.unit-gallery-tabs {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.5rem;
  margin-top: 0.85rem;
}
.unit-gallery-tab {
  font-family: inherit;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--ink-soft);
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 0.5rem 1rem;
  cursor: pointer;
  transition: border-color 0.15s ease, color 0.15s ease, background-color 0.15s ease;
}
.unit-gallery-tab:hover { border-color: var(--accent); color: var(--ink); }
.unit-gallery-tab.active {
  background: var(--ink);
  border-color: var(--ink);
  color: #fff;
}

.unit-info-panel { min-width: 0; }

.unit-title-row {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  flex-wrap: wrap;
  margin-bottom: 0.6rem;
}
.unit-title-row h1 {
  font-size: clamp(1.6rem, 3vw, 2.1rem);
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0;
}

.unit-card-link {
  display: inline-block;
  font-size: 13px;
  font-weight: 600;
  color: #beaf92;
  text-decoration: underline;
  text-underline-offset: 3px;
  margin-bottom: 1.75rem;
}

/* Rozpis místností — jeden jednolitý blok, řádky oddělené vlásečnicí.
   Souhrnné řádky (plochy, celkem) se od ostatních liší jen tučností, ne barvou pozadí. */
.rooms-list { margin: 0 0 1.5rem; }
.rooms-list-row {
  display: flex;
  align-items: baseline;
  gap: 0.6rem;
  padding: 0.75rem 0.9rem;
  border-bottom: 1px solid var(--line);
  font-size: 14px;
}
.rooms-list-row:last-child { border-bottom: none; }
.room-number { flex: none; width: 20px; color: #beaf92; font-size: 13px; font-weight: 600; }
.room-name { color: var(--ink-soft); white-space: nowrap; }
.room-leader {
  flex: 1 1 auto;
  min-width: 1.5rem;
}
.room-area { color: var(--ink); font-weight: 600; white-space: nowrap; }

.rooms-list-row.is-header,
.rooms-list-row.is-summary { background: rgba(22, 25, 31, 0.035); }
.rooms-list-row.is-header .room-name { color: var(--ink); font-weight: 700; }
.rooms-list-row.is-summary .room-name,
.rooms-list-row.is-summary .room-area { color: var(--ink); font-weight: 600; }

.unit-info-panel .unit-info-price { margin: 0 0 1.25rem; }

.unit-addons {
  margin: 0 0 1.5rem;
  padding: 1rem 1.15rem;
  border: 1px solid var(--line);
  border-radius: 8px;
}
.unit-addons p.unit-addons-label {
  margin: 0 0 1.25rem;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #beaf92;
}
.unit-addons p {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  margin: 0.35rem 0;
  font-size: 14px;
  color: var(--ink-soft);
}
.unit-addons p strong { color: var(--ink); font-weight: 600; }

.unit-cta { display: inline-block; margin-bottom: 1.25rem; background: #00273f; color: #fff; }
.unit-cta:hover { background: #00273f; opacity: 0.9; }

@media (max-width: 900px) {
  .unit-detail-grid { grid-template-columns: 1fr; }
  .unit-gallery { position: static; }
}

@media (max-width: 640px) {
  .timeline-item { gap: 1rem; }
  .timeline-marker { width: 38px; height: 38px; font-size: 13px; }
  .timeline-item:not(:last-child)::after { left: 18px; top: 38px; }
  .timeline-title { font-size: 1.05rem; }
}

@media (max-width: 780px) {
  /* Obrázek/plánek zůstává jako statický orientační vizuál — hover interakce
     (SVG hotspoty, pill, popisek "najeďte myší") na dotykovém displeji nedávaj smysl. */
  .floor-picker-row {
    display: flex;
    flex-direction: column;
    height: auto;
    min-height: 0;
    padding: 1.25rem clamp(1rem, 4vw, 2rem) 0;
    gap: 0.9rem;
  }
  .floor-picker-intro { flex: none; width: 100%; }
  .floor-picker-intro > p,
  .floor-picker-intro #unit-info[data-default="1"] > p { display: none; }
  .floor-picker-col { height: auto; display: block; width: 100%; }
  .floor-picker { width: 100% !important; height: auto !important; }
  /* Bez JS-dopočtu výšky: nechat img width/height atributy (natural ratio)
     rezervovat prostor hned při parsování, ne až po loadu obrázku — jinak
     box kolabuje na 0px a seznam bytů pod ním po loadu poskočí (CLS). */
  .floor-picker img { height: auto; }
  .floor-picker svg.overlay,
  .floor-picker .floor-pill { display: none; }
  /* Plánek bytů (patro.php) overlay nechat vykreslený kvůli zvýraznění vybraného
     bytu po tapu na dlaždici, ale bez pointer-events — malé polygony nejsou
     na dotyk spolehlivě trefitelné, výběr jde přes seznam pod plánkem. */
  .floor-picker--flat svg.overlay { display: block; pointer-events: none; }

  .floor-list, .unit-list {
    display: block;
    padding: 1.25rem clamp(1rem, 4vw, 2rem) 2.5rem;
    max-width: 1440px;
    margin: 0 auto;
  }
  .floor-list h2, .unit-list h2 {
    font-size: 1.05rem;
    margin: 0 0 0.75rem;
  }
  .floor-list ul, .unit-list ul {
    list-style: none;
    margin: 0 0 1.5rem;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
  }
  .floor-list li a, .unit-list li a {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.75rem;
    padding: 0.9rem 1.1rem;
    border: 1px solid var(--line);
    border-radius: 8px;
    text-decoration: none;
    color: var(--ink);
    font-weight: 600;
  }
  .floor-list li a .count {
    font-weight: 500;
    color: var(--muted);
    font-size: 13px;
  }

  .unit-list li a { align-items: stretch; position: relative; overflow: hidden; }
  .unit-list-confirm {
    display: none;
    position: absolute;
    inset: 0;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 0.9rem 1.1rem;
    background: var(--accent, var(--ink));
    color: #fff;
    font-weight: 600;
    font-size: 14px;
  }
  .unit-list li a.armed .unit-list-confirm { display: flex; }
  .unit-list-main { display: flex; flex-direction: column; gap: 0.2rem; min-width: 0; }
  .unit-list-meta { font-weight: 500; color: var(--muted); font-size: 13px; }
  .unit-list-side { display: flex; flex-direction: column; align-items: flex-end; gap: 0.35rem; flex: none; }
  .unit-list-price { font-weight: 700; font-size: 13px; white-space: nowrap; }
  .unit-list .unit-info-badge { margin-bottom: 0; }
}

/* Ceník — filtrovatelný přehled bytů (public/cenik.php). */
.cenik-page {
  max-width: 1400px;
  margin: 0 auto;
  padding: clamp(2rem, 5vw, 3.5rem) clamp(1.25rem, 4vw, 3rem) 5rem;
}
.cenik-head { margin-bottom: 2rem; }
.cenik-head .section-heading { margin-bottom: 0.75rem; }
.cenik-head .section-text { max-width: 70ch; margin: 0; }
.hint-empty { color: var(--muted); font-size: 14px; }

.cenik-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem 2rem;
  align-items: flex-start;
  padding: 1.5rem clamp(1.25rem, 3vw, 2rem);
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fbfaf8;
  margin-bottom: 1.5rem;
}

.filter-field { display: flex; flex-direction: column; gap: 0.5rem; }
.filter-field label, .filter-field-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--muted);
}
.filter-field select {
  font-family: inherit;
  font-size: 14px;
  padding: 0.6rem 0.8rem;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  color: var(--ink);
  min-width: 175px;
  cursor: pointer;
}
.filter-field select:focus { outline: none; border-color: var(--accent); }

.filter-field-pills { min-height: 2.65rem; justify-content: center; }
.filter-pills { display: flex; flex-wrap: wrap; gap: 0.5rem; max-width: 360px; }
.filter-pill {
  font-family: inherit;
  font-size: 12.5px;
  font-weight: 600;
  padding: 0.5rem 0.9rem;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: #fff;
  color: var(--muted);
  cursor: pointer;
  transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.filter-pill:hover { border-color: var(--accent); color: var(--ink); }
.filter-pill.active { border-color: transparent; background: var(--accent); color: #fff; }

.toggle-switch {
  display: inline-flex;
  align-items: center;
  height: 2.65rem;
  cursor: pointer;
  user-select: none;
}
.toggle-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.toggle-switch-track {
  position: relative;
  width: 40px;
  height: 24px;
  flex: 0 0 auto;
  border-radius: 999px;
  background: var(--line);
  transition: background-color 0.15s ease;
}
.toggle-switch-thumb {
  position: absolute;
  top: 3px;
  left: 3px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 2px rgba(0,0,0,0.25);
  transition: transform 0.15s ease;
}
.toggle-switch input:checked + .toggle-switch-track { background: var(--accent); }
.toggle-switch input:checked + .toggle-switch-track .toggle-switch-thumb { transform: translateX(16px); }
.toggle-switch input:focus-visible + .toggle-switch-track { outline: 2px solid var(--accent); outline-offset: 2px; }

.filter-field-price { min-width: 180px; max-width: 240px; flex: 1 1 200px; }
.price-range-values { display: block; font-weight: 700; color: var(--ink); text-transform: none; letter-spacing: 0; margin-top: 2px; font-size: 12px; }

.price-slider { position: relative; height: 22px; display: flex; align-items: center; }
.price-slider-track { position: absolute; left: 0; right: 0; height: 3px; border-radius: 2px; background: var(--line); }
.price-slider-range { position: absolute; height: 3px; border-radius: 2px; background: var(--accent); }
.price-slider-input {
  position: absolute;
  left: 0; right: 0;
  width: 100%;
  margin: 0;
  background: transparent;
  pointer-events: none;
  -webkit-appearance: none;
  appearance: none;
  height: 22px;
}
.price-slider-input:focus { outline: none; }
.price-slider-input::-webkit-slider-runnable-track { -webkit-appearance: none; background: transparent; }
.price-slider-input::-moz-range-track { background: transparent; border: none; }
.price-slider-input::-webkit-slider-thumb {
  -webkit-appearance: none;
  pointer-events: auto;
  width: 13px; height: 13px;
  border-radius: 50%;
  background: #fff;
  border: 2px solid var(--accent);
  cursor: pointer;
  box-shadow: 0 1px 3px rgba(16, 18, 22, 0.25);
}
.price-slider-input::-moz-range-thumb {
  pointer-events: auto;
  width: 13px; height: 13px;
  border-radius: 50%;
  background: #fff;
  border: 2px solid var(--accent);
  cursor: pointer;
  box-shadow: 0 1px 3px rgba(16, 18, 22, 0.25);
}

.filter-reset {
  font-family: inherit;
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
  background: none;
  border: none;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 3px;
  margin-left: auto;
  align-self: center;
  padding: 0.5rem 0;
}
.filter-reset:hover { color: var(--ink); }

.cenik-count { font-size: 13px; color: var(--muted); margin: 0 0 1rem; }

.price-table { border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: var(--paper); }
.price-table-row {
  display: grid;
  grid-template-columns: 1.5fr 0.9fr 1fr 0.9fr 1fr 1.2fr 1.1fr 28px;
  gap: 1rem;
  align-items: center;
  padding: 1rem 1.5rem;
}
.price-table-head {
  background: #fbfaf8;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--muted);
  border-bottom: 1px solid var(--line);
}
.sort-th {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font: inherit;
  text-transform: inherit;
  letter-spacing: inherit;
  color: inherit;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
}
.sort-th::after {
  content: '';
  width: 0;
  height: 0;
  border-left: 3px solid transparent;
  border-right: 3px solid transparent;
  border-bottom: 4px solid var(--line);
  opacity: 0.7;
}
.sort-th:hover { color: var(--ink); }
.sort-th.sort-active { color: var(--accent); }
.sort-th.sort-active::after { border-bottom-color: var(--accent); opacity: 1; }
.sort-th.sort-desc::after { border-bottom: none; border-top: 4px solid var(--accent); }
a.price-table-row {
  text-decoration: none;
  color: inherit;
  border-bottom: 1px solid var(--line);
  transition: background-color 0.12s ease;
}
.price-table-body a.price-table-row:last-child { border-bottom: none; }
a.price-table-row:hover { background: #faf9f7; }
a.price-table-row[hidden] { display: none; }

.unit-code { display: block; font-weight: 700; font-size: 15px; color: var(--ink); }
.unit-meta { display: block; font-size: 12.5px; color: var(--muted); margin-top: 2px; }

.price-table-row [role="cell"] .unit-info-badge { margin-bottom: 0; }

.price-table-arrow {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.35rem;
  color: var(--muted);
  font-size: 16px;
  text-align: right;
  transition: color 0.12s ease, transform 0.12s ease;
}
.price-table-arrow-text { font-size: 12.5px; font-weight: 600; letter-spacing: 0.02em; }
a.price-table-row:hover .price-table-arrow { color: var(--accent); transform: translateX(3px); }

.price-table-empty { padding: 3rem 1.5rem; text-align: center; color: var(--muted); font-size: 14px; }
.link-reset { font-family: inherit; background: none; border: none; padding: 0; color: var(--accent); text-decoration: underline; cursor: pointer; font-size: inherit; }

@media (max-width: 860px) {
  .price-table-head { display: none; }
  .price-table-row {
    grid-template-columns: 1fr;
    gap: 0.5rem;
    padding: 1rem 1.25rem;
  }
  .price-table-row [role="cell"] { display: flex; justify-content: space-between; align-items: center; font-size: 13.5px; }
  .price-table-row [role="cell"]::before { content: attr(data-label); font-weight: 600; color: var(--muted); }
  .price-table-row [role="cell"]:first-child { display: block; }
  .price-table-row [role="cell"]:first-child::before { display: none; }
  .price-table-row .price-table-arrow { display: none; }
  .cenik-filters { gap: 1.1rem 1.5rem; }
  .filter-reset { margin-left: 0; }
}

/* Standardy — sdílený wrapper drží stejnou šířku/zarovnání napříč celou stránkou. */
.standardy { padding: clamp(4rem, 8vw, 6rem) 0 clamp(4rem, 8vw, 6rem); }
.standardy-wrap {
  max-width: 1400px;
  margin: 0 auto;
  padding: 0 clamp(1.25rem, 4vw, 3rem);
}

/* Taby bez JS — skryté rádio inputy + štítky, panel se přepíná čistě přes :checked ~ CSS. */
.standard-tabs { margin-top: clamp(2.5rem, 5vw, 4rem); }
.standard-tab-radio { position: absolute; opacity: 0; pointer-events: none; }

.standard-tab-labels {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: clamp(2rem, 4vw, 3rem);
}
.standard-tab-label {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.65rem 1.1rem 0.65rem 0.65rem;
  background: #f7f5f1;
  border: 1px solid transparent;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink-soft);
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.standard-tab-label .feature-icon { width: 32px; height: 32px; border-color: transparent; color: inherit; }
.standard-tab-label .feature-icon svg { width: 16px; height: 16px; }
.standard-tab-label:hover { color: var(--ink); }

.standard-tab-panel { display: none; }

#tab-floors:checked ~ .standard-tab-panels #panel-floors,
#tab-tiles:checked ~ .standard-tab-panels #panel-tiles,
#tab-bathroom:checked ~ .standard-tab-panels #panel-bathroom,
#tab-doors-windows:checked ~ .standard-tab-panels #panel-doors-windows,
#tab-electro:checked ~ .standard-tab-panels #panel-electro,
#tab-other:checked ~ .standard-tab-panels #panel-other {
  display: block;
}

#tab-floors:checked ~ .standard-tab-labels label[for="tab-floors"],
#tab-tiles:checked ~ .standard-tab-labels label[for="tab-tiles"],
#tab-bathroom:checked ~ .standard-tab-labels label[for="tab-bathroom"],
#tab-doors-windows:checked ~ .standard-tab-labels label[for="tab-doors-windows"],
#tab-electro:checked ~ .standard-tab-labels label[for="tab-electro"],
#tab-other:checked ~ .standard-tab-labels label[for="tab-other"] {
  background: var(--accent);
  color: var(--accent-ink);
  border-color: var(--accent);
}
.standard-gallery {
  list-style: none;
  margin: clamp(1.75rem, 4vw, 2.5rem) 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 200px));
  gap: 0.75rem;
}
.standard-gallery-link {
  display: block;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--paper);
  overflow: hidden;
  cursor: zoom-in;
  transition: border-color 0.15s ease;
}
.standard-gallery-link:hover { border-color: var(--accent); }
.standard-gallery-link img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: contain;
  padding: 0.5rem;
}

.standard-notes {
  background: #f7f5f1;
  padding: clamp(2.5rem, 5vw, 3.5rem) 0 clamp(4rem, 8vw, 6rem);
}
.standard-notes h3 {
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--ink);
  margin: 0 0 1rem;
}
.standard-notes .rich-text {
  max-width: 75ch;
  font-size: 1rem;
  line-height: 1.75;
  color: var(--ink-soft);
}

/* Galerie (/galerie) — mřížka fotek s filtrem kategorií, bez rámečků (na rozdíl od
   .standard-gallery, která má rámeček/padding vhodné pro produktové fotky). */
.gallery-page { padding: clamp(3rem, 6vw, 5rem) 0 clamp(4rem, 8vw, 6rem); }

.gallery-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: clamp(1.5rem, 3vw, 2rem) 0 clamp(2rem, 4vw, 3rem);
}
.gallery-filter-btn {
  font-family: inherit;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink-soft);
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 0.55rem 1.15rem;
  cursor: pointer;
  transition: border-color 0.15s ease, color 0.15s ease, background-color 0.15s ease;
}
.gallery-filter-btn:hover { border-color: var(--accent); color: var(--ink); }
.gallery-filter-btn.active {
  background: var(--ink);
  border-color: var(--ink);
  color: #fff;
}

.gallery-photo-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1rem;
}
.gallery-photo-item.is-hidden { display: none; }
.gallery-photo-link {
  display: block;
  border-radius: 12px;
  overflow: hidden;
  cursor: zoom-in;
}
.gallery-photo-link img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  transition: transform 0.3s ease;
}
.gallery-photo-link:hover img { transform: scale(1.05); }

/* Lightbox — zvětšení obrázku z galerie standardů, ovládá assets/js/standardy-lightbox.js. */
.lightbox {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(1.5rem, 5vw, 4rem);
  background: rgba(22, 25, 31, 0.9);
}
.lightbox[hidden] { display: none; }
.lightbox-figure { position: relative; margin: 0; max-width: 100%; max-height: 100%; display: flex; }
.lightbox img {
  display: block;
  max-width: 100%;
  max-height: 85vh;
  border-radius: 6px;
}
.lightbox-caption {
  position: absolute;
  left: 50%;
  bottom: 1.1rem;
  transform: translateX(-50%);
  max-width: calc(100% - 2rem);
  padding: 0.45rem 1rem;
  border-radius: 999px;
  background: rgba(22, 25, 31, 0.82);
  backdrop-filter: blur(4px);
  color: #fff;
  font-size: 13.5px;
  font-weight: 600;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lightbox-count {
  position: absolute;
  top: clamp(1rem, 3vw, 2rem);
  left: 50%;
  transform: translateX(-50%);
  margin: 0;
  color: rgba(255, 255, 255, 0.75);
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.03em;
}
.lightbox-close {
  position: absolute;
  top: clamp(1rem, 3vw, 2rem);
  right: clamp(1rem, 3vw, 2rem);
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.3);
  background: transparent;
  color: #fff;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  z-index: 1;
}
.lightbox-close:hover { background: rgba(255, 255, 255, 0.12); }
.lightbox-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.3);
  background: rgba(22, 25, 31, 0.5);
  color: #fff;
  font-size: 30px;
  line-height: 1;
  cursor: pointer;
  z-index: 1;
}
.lightbox-nav:hover { background: rgba(255, 255, 255, 0.15); }
.lightbox-nav[hidden] { display: none; }
.lightbox-prev { left: clamp(0.5rem, 3vw, 2rem); }
.lightbox-next { right: clamp(0.5rem, 3vw, 2rem); }

/* Kontakt — stránka natažená na plnou výšku okna (nav + obsah + patička),
   ať krátký obsah nenechává pod patičkou prázdnou bílou plochu. Obsah se
   svisle vycentruje ve zbývajícím prostoru nad patičkou. */
.contact-page {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  min-height: 100svh;
}
.contact-page .site-footer { margin-top: 0; }

/* Kontakt — dvousloupcový layout: formulář vlevo, panel makléře vpravo.
   Svázané na stejnou max-width 1400px jako ostatní sekce webu (viz .financing, .about),
   ať navigace a obsah drží stejnou šířku napříč všemi stránkami. */
.contact {
  flex: 1 0 auto;
  display: flex;
  align-items: center;
  max-width: 1400px;
  margin: 0 auto;
  padding: clamp(1.5rem, 4vw, 3rem) clamp(1.25rem, 4vw, 3rem);
  width: 100%;
  box-sizing: border-box;
}
.contact-grid {
  width: 100%;
  display: grid;
  grid-template-columns: minmax(320px, 560px) 1fr;
  align-items: stretch;
}
.contact-form-col {
  display: flex;
  flex-direction: column;
  justify-content: center;
  background: var(--accent);
  border-radius: var(--radius) 0 0 var(--radius);
  padding: clamp(2.25rem, 5vw, 3.5rem);
  max-width: 560px;
}
.contact-form-col .section-heading { margin-bottom: 0.5rem; color: #fff; }
.contact-form-lead { font-size: 1rem; color: rgba(255,255,255,0.7); margin: 0 0 2.25rem; }

.contact-form { display: flex; flex-direction: column; gap: 1rem; }
.contact-form-row { display: flex; gap: 1rem; flex-wrap: wrap; }
.contact-form-row .contact-field { flex: 1 1 200px; }

.contact-field input,
.contact-field textarea {
  width: 100%;
  box-sizing: border-box;
  font-family: var(--font);
  font-size: 14px;
  color: var(--ink);
  padding: 0.85rem 1rem;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--paper);
}
.contact-field input:focus,
.contact-field textarea:focus {
  outline: none;
  border-color: var(--accent);
}
.contact-field textarea { resize: vertical; min-height: 120px; font-family: var(--font); }

.contact-field-checkbox {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  gap: 0.6rem;
  font-size: 13px;
  line-height: 1.4;
  color: rgba(255,255,255,0.85);
}
.contact-field-checkbox input[type="checkbox"] {
  width: auto;
  flex: 0 0 auto;
  margin-top: 0.15rem;
  padding: 0;
  accent-color: var(--cta1-bg, #c8863a);
}
.contact-field-checkbox a { color: #fff; text-decoration: underline; }

.contact-submit {
  align-self: flex-start;
  margin-top: 0.5rem;
  padding: 0.9rem 2.2rem;
  border: none;
  border-radius: var(--radius);
  background: #fff;
  color: var(--accent);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.01em;
  cursor: pointer;
  transition: opacity 0.15s ease;
}
.contact-submit:hover { opacity: 0.85; }

.contact-notice {
  padding: 0.9rem 1.1rem;
  border-radius: var(--radius);
  font-size: 14px;
  margin-bottom: 1.5rem;
}
.contact-notice--success { background: var(--status-volny-bg); color: var(--status-volny-text); }
.contact-notice--error { background: var(--status-prodano-bg); color: var(--status-prodano-text); }

.contact-agent-panel {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  background: #fff;
  border-radius: var(--radius);
  padding: clamp(2.75rem, 5vw, 4rem) clamp(2rem, 4vw, 3.5rem);
  min-height: 620px;
}
.contact-agent-text {
  position: relative;
  z-index: 2;
  max-width: 380px;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}
/* Postava zarovnaná dole s panelem, výraznější přesah vpravo. */
.contact-agent-photo {
  position: absolute;
  right: -3rem;
  bottom: 0;
  z-index: 1;
  height: 100%;
  max-height: 640px;
  width: auto;
  object-fit: contain;
  object-position: bottom right;
}
.contact-agent-intro {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--ink-soft);
  max-width: 32ch;
  margin: 0 0 0.6rem;
}
.contact-agent-name { font-size: 1.4rem; font-weight: 600; color: var(--ink); margin: 0; }
.contact-agent-role { font-size: 14px; color: var(--muted); margin: 0 0 0.6rem; }
.contact-agent-links { display: flex; flex-direction: column; gap: 0.35rem; }
.contact-agent-links a {
  color: var(--ink);
  text-decoration: none;
  font-weight: 600;
  font-size: 14.5px;
}
.contact-agent-links a:hover { color: var(--accent); }

@media (max-width: 900px) {
  .contact-grid { grid-template-columns: 1fr; }
  .contact-form-col { max-width: none; border-radius: var(--radius); }
  .contact-agent-panel { min-height: 0; padding-bottom: 0; }
  .contact-agent-text { max-width: none; }
  .contact-agent-photo {
    position: static;
    display: block;
    height: auto;
    max-height: none;
    width: 100%;
    max-width: 320px;
    margin: 1.5rem auto 0;
  }
}


/* Patička — jednoduchá dočasná verze, ať stránka nekončí bílou plochou; doladí se později. */
.site-footer {
  background: var(--ink);
  color: rgba(255,255,255,0.65);
}
.footer-inner {
  max-width: 1400px;
  margin: 0 auto;
  padding: clamp(2.5rem, 5vw, 3.5rem) clamp(1.25rem, 4vw, 3rem) clamp(1.5rem, 3vw, 2rem);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  border-bottom: 1px solid rgba(255,255,255,0.12);
}
.footer-brand {
  color: #fff;
  font-weight: 700;
  font-size: 14px;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}
.footer-links {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem;
  list-style: none;
  margin: 0;
  padding: 0;
}
.footer-links a {
  color: rgba(255,255,255,0.65);
  text-decoration: none;
  font-size: 13px;
  font-weight: 500;
}
.footer-links a:hover { color: #fff; }
.footer-phone {
  color: #fff;
  text-decoration: none;
  font-weight: 600;
  font-size: 14px;
  white-space: nowrap;
}
.footer-phone:hover { color: var(--accent); }
.footer-copy {
  max-width: 1400px;
  margin: 0 auto;
  padding: 1.25rem clamp(1.25rem, 4vw, 3rem);
  font-size: 12.5px;
  color: rgba(255,255,255,0.4);
}
.footer-copy a { color: rgba(255,255,255,0.4); }
.footer-copy a:hover { color: #fff; }

.footer-legal {
  max-width: 1400px;
  margin: 0 auto;
  padding: 1.5rem clamp(1.25rem, 4vw, 3rem) 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: flex-start;
  gap: 2rem;
  border-bottom: 1px solid rgba(255,255,255,0.12);
  padding-bottom: 1.5rem;
}
.footer-legal p { margin: 0; font-size: 12.5px; line-height: 1.6; color: rgba(255,255,255,0.55); }
.footer-legal-label {
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-size: 11px;
  color: rgba(255,255,255,0.4) !important;
  margin-bottom: 0.4rem !important;
}
.footer-dealer { text-align: center; }
.footer-dealer-logo { max-height: 40px; width: auto; display: block; margin: 0 auto; }

@media (max-width: 640px) {
  .footer-inner { justify-content: flex-start; }
  .footer-legal { flex-direction: column; }
  .footer-dealer { text-align: left; }
  .footer-dealer-logo { margin: 0; }
}
