/* =========================================================
   KRAKÓW APARTAMENTY — arkusz stylów
   Paleta i typografia inspirowane kamienicami Starego Miasta:
   ciepły wapienny beż, głęboka zieleń i patynowany mosiądz.
   ========================================================= */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600;9..144,700&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap');

:root{
  /* -- kolory -- */
  --bg:            #F5EFE1;
  --bg-alt:        #ECE0C4;
  --surface:       #FFFDF8;
  --ink:           #241C12;
  --ink-soft:      #574C39;
  --ink-faint:     #8B8069;
  --line:          #DECBA0;
  --brass:         #C79A16;
  --brass-deep:    #96760F;
  --brass-tint:    #F3E3B0;
  --brick:         #7A3B2A;
  --brick-deep:    #602D1F;
  --ok:            #3B6A44;
  --green-bright:      #17A452;
  --green-bright-deep: #0E7C3E;

  /* -- typografia -- */
  --font-display: 'Fraunces', Georgia, 'Times New Roman', serif;
  --font-body: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

  /* -- layout -- */
  --content-w: 1160px;
  --radius: 4px;
  --radius-lg: 6px;
  --banner-h: 40px;
  --header-h: 82px;
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; scroll-padding-top: env(safe-area-inset-top,0px); }

body{
  margin:0;
  font-family: var(--font-body);
  background: var(--bg);
  color: var(--ink);
  line-height:1.6;
  -webkit-font-smoothing: antialiased;
  padding-top: calc(var(--banner-h) + env(safe-area-inset-top,0px));
  padding-bottom: env(safe-area-inset-bottom,0px);
}

img{ max-width:100%; display:block; }

a{ color: inherit; text-decoration:none; }

h1,h2,h3,h4{
  font-family: var(--font-display);
  font-weight:600;
  line-height:1.12;
  margin: 0 0 .5em;
  color: var(--ink);
  letter-spacing: -0.01em;
}
h1{ font-size: clamp(2.1rem, 4.4vw, 3.4rem); font-weight:600; }
h2{ font-size: clamp(1.6rem, 2.8vw, 2.15rem); }
h3{ font-size: 1.28rem; font-weight:600; }

p{ margin: 0 0 1em; max-width: 62ch; }
.lead{ font-size:1.14rem; color: var(--ink-soft); }

.container{
  width:100%;
  max-width: var(--content-w);
  margin-inline:auto;
  padding-inline: 24px;
}

.visually-hidden{
  position:absolute; width:1px; height:1px; overflow:hidden;
  clip:rect(0,0,0,0); white-space:nowrap; border:0; padding:0; margin:-1px;
}

:focus-visible{ outline: 2px solid var(--brick); outline-offset: 2px; }

@media (prefers-reduced-motion: reduce){
  *{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
}

/* ---------- Przyciski ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.5em;
  font-family: var(--font-body);
  font-weight:600;
  font-size: .96rem;
  padding: .8em 1.5em;
  border-radius: var(--radius);
  border: 1px solid transparent;
  cursor:pointer;
  transition: background-color .15s ease, border-color .15s ease, color .15s ease, transform .1s ease;
  line-height:1.1;
}
.btn:active{ transform: translateY(1px); }

.btn-primary{
  background: var(--ink);
  color: var(--brass-tint);
  border-color: var(--ink);
}
.btn-primary:hover{ background: #362A1B; border-color: #362A1B; }

.btn-outline{
  background: transparent;
  color: var(--ink);
  border-color: var(--line);
}
.btn-outline:hover{ border-color: var(--ink); }

.btn-brass{
  background: var(--brass);
  color: var(--ink);
  border-color: var(--brass);
}
.btn-brass:hover{ background: var(--brass-deep); border-color: var(--brass-deep); color: var(--brass-tint); }

.btn-block{ width:100%; }
.btn-sm{ padding: .55em 1.1em; font-size: .88rem; }

/* ---------- Pasek: najniższa cena gwarantowana ---------- */
.price-banner{
  position: fixed; top:0; left:0; right:0; z-index:70;
  height: var(--banner-h);
  display:flex; align-items:center; justify-content:center; gap:8px;
  background: linear-gradient(90deg, var(--green-bright-deep), var(--green-bright));
  color:#fff;
  font-size:.86rem; font-weight:600;
  padding: 0 16px;
  text-align:center;
  box-shadow: 0 2px 12px rgba(14,124,62,.3);
}
.price-banner-icon{ width:15px; height:15px; flex:none; color:#D9FFE7; }
.price-banner strong{ font-weight:700; }
@media (max-width: 640px){
  .price-banner{ font-size:.76rem; padding:0 10px; gap:6px; }
  .price-banner-full{ display:none; }
}

/* ---------- Nagłówek / nawigacja ---------- */
.site-header{
  position: sticky; top: var(--banner-h); z-index:50;
  background: rgba(245,239,225,.92);
  backdrop-filter: saturate(140%) blur(6px);
  border-bottom: 1px solid var(--line);
  padding-top: env(safe-area-inset-top,0px);
  transition: background-color .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.site-header.scrolled{ box-shadow: 0 10px 30px -22px rgba(36,28,18,.45); }

/* Nagłówek przezroczysty, nałożony na pełnoekranowe zdjęcie hero (tylko strona główna) */
body.page-home .site-header{
  background: transparent;
  border-bottom-color: transparent;
  backdrop-filter: none;
}
body.page-home .site-header .main-nav a{ color: rgba(255,255,255,.92); transition: color .25s ease; }
body.page-home .site-header .main-nav a:hover{ color:#fff; }
body.page-home .site-header .main-nav a.active{ color:#fff; border-bottom-color: var(--brass); }
body.page-home .site-header .nav-toggle{ border-color: rgba(255,255,255,.55); background: rgba(255,255,255,.12); }
body.page-home .site-header .nav-toggle span{ background:#fff; }
body.page-home .site-header .main-nav.open a{ color: var(--ink-soft); }
body.page-home .site-header .main-nav.open a:hover{ color: var(--ink); }
body.page-home .site-header .main-nav.open a.active{ color: var(--ink); border-bottom-color: var(--line); }

body.page-home .site-header.scrolled{
  background: rgba(245,239,225,.95);
  border-bottom-color: var(--line);
  backdrop-filter: saturate(140%) blur(6px);
}
body.page-home .site-header.scrolled .main-nav a{ color: var(--ink-soft); }
body.page-home .site-header.scrolled .main-nav a:hover{ color: var(--ink); }
body.page-home .site-header.scrolled .main-nav a.active{ color: var(--ink); border-bottom-color: var(--brass); }
body.page-home .site-header.scrolled .nav-toggle{ border-color: var(--line); background: var(--surface); }
body.page-home .site-header.scrolled .nav-toggle span{ background: var(--ink); }
.header-inner{
  max-width: var(--content-w);
  margin-inline:auto;
  padding: 14px 24px;
  display:flex; align-items:center; gap: 16px;
}
.brand{
  display:flex; align-items:center; gap:.6em;
  margin-right:auto;
  flex:none;
}
.brand-logo{
  height: 50px; width:auto; display:block;
}

.main-nav{ display:flex; align-items:center; gap: 14px; }
.main-nav a{
  position:relative;
  font-size:.94rem; font-weight:500; color: var(--ink-soft);
  padding: 8px 2px;
  white-space:nowrap;
  cursor:pointer;
  transition: color .25s ease;
}
/* pasek pod napisem — wsuwa się od lewej strony */
.main-nav a::after{
  content:""; position:absolute; left:0; right:0; bottom:0;
  height:2px; background: var(--brass);
  transform: scaleX(0); transform-origin: left center;
  transition: transform .35s cubic-bezier(.4,0,.2,1);
}
.main-nav a:hover{ color: var(--ink); }
.main-nav a:hover::after,
.main-nav a.active::after{ transform: scaleX(1); }
.main-nav a.active{ color: var(--ink); }
/* po zjechaniu myszy pasek chowa się w prawą stronę */
.main-nav a:not(:hover):not(.active)::after{ transform-origin: right center; }

.btn-book-nav{ flex: none; white-space:nowrap; }

.nav-toggle{
  display:none; flex:none;
  width:40px; height:36px;
  border:1px solid var(--line); border-radius: var(--radius);
  background: var(--surface);
  align-items:center; justify-content:center;
  flex-direction:column; gap:4px;
  cursor:pointer;
}
.nav-toggle span{ width:18px; height:2px; background: var(--ink); display:block; }

@media (max-width: 1180px){
  .main-nav{
    position:absolute; top:100%; left:0; right:0;
    background: var(--surface);
    border-bottom: 1px solid var(--line);
    flex-direction:column; align-items:flex-start; gap:0;
    padding: 8px 24px 16px;
    display:none;
  }
  .main-nav.open{ display:flex; }
  .main-nav a{ width:100%; padding: 12px 0; border-bottom:1px solid var(--line); }
  .main-nav a.active{ border-bottom-color: var(--line); }
  .main-nav a::after{ display:none; }
  .nav-toggle{ display:flex; }
  .btn-book-nav{ display:none; }
}

/* ---------- Hero pełnoekranowy (strona główna) ---------- */
.hero{
  position:relative;
  min-height: 100svh;
  display:flex; flex-direction:column; justify-content:flex-end;
  overflow:hidden;
  margin-top: calc(-1 * var(--header-h));
  padding-bottom: 64px;
}
.hero-media{ position:absolute; inset:0; z-index:0; }
.hero-media img{ width:100%; height:100%; object-fit:cover; display:block; }
.hero-scrim{
  position:absolute; inset:0;
  background: linear-gradient(180deg, rgba(20,15,8,.62) 0%, rgba(20,15,8,.10) 30%, rgba(20,15,8,.16) 60%, rgba(20,15,8,.80) 100%);
}
.hero-content{
  position:relative; z-index:1;
  max-width: 760px; margin-inline:auto; width:100%;
  padding: 0 24px;
  padding-top: calc(var(--banner-h) + var(--header-h) + 48px);
  text-align:center;
}
.hero-content .hero-kicker{
  font-size:.86rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
  color: var(--brass-tint); margin-bottom:1em;
}
.hero-content h1{ color:#fff; margin-inline:auto; }
.hero-content .hero-lead{ color: rgba(255,255,255,.92); margin-inline:auto; }

.hero-search{ position:relative; z-index:1; margin-top: 44px; }

.hero-scrolldown{
  position:relative; z-index:1; margin: 32px auto 0;
  display:flex; flex-direction:column; align-items:center; gap:6px;
  color: rgba(255,255,255,.85); font-size:.76rem; font-weight:700;
  letter-spacing:.08em; text-transform:uppercase;
  animation: heroBounce 2.2s ease-in-out infinite;
}
.hero-scrolldown svg{ width:16px; height:16px; }
@keyframes heroBounce{
  0%,100%{ transform: translateY(0); }
  50%{ transform: translateY(6px); }
}

@media (max-width: 640px){
  .hero{ min-height: 94svh; padding-bottom: 40px; }
  .hero-content{ padding-top: calc(var(--banner-h) + var(--header-h) + 26px); }
  .hero-scrolldown{ display:none; }
}

/* ---------- Moduł wyszukiwania ---------- */
.search-module{
  margin-top: 40px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: 0 24px 50px -24px rgba(10,8,4,.55);
  padding: 22px 26px;
}

.hero-search .search-module{
  margin-top:0;
  max-width: 980px;
  margin-inline:auto;
  box-shadow: 0 30px 60px -18px rgba(10,8,4,.5);
}
#searchForm{
  display:grid;
  grid-template-columns: repeat(3, 1fr) auto;
  gap: 16px;
  align-items:end;
}
.field{ display:flex; flex-direction:column; gap:6px; min-width:0; }
.field label{ font-size:.82rem; font-weight:600; color: var(--ink-soft); }
.field input, .field select{
  font: inherit; font-size:.96rem;
  padding: .68em .8em;
  border:1px solid var(--line);
  border-radius: var(--radius);
  background: var(--bg);
  color: var(--ink);
  width:100%; min-width:0; max-width:100%; box-sizing:border-box;
  -webkit-appearance:none; appearance:none;
}
.field input[type="date"]{ display:block; min-height:2.9em; text-align:left; }
.field input[type="date"]::-webkit-date-and-time-value{ text-align:left; }
.field input:focus, .field select:focus{ border-color: var(--brick); }

@media (max-width: 900px){
  #searchForm{ grid-template-columns: minmax(0,1fr) minmax(0,1fr); }
  #searchForm .field:nth-child(3){ grid-column: 1 / -1; }
  #searchForm .btn{ grid-column: 1 / -1; }
}

/* ---------- Sekcje ---------- */
section.block{ padding: 72px 0; scroll-margin-top: calc(var(--banner-h) + var(--header-h) + 12px); }
section.block.alt{ background: var(--bg-alt); }
.block-head{ max-width: 640px; margin-bottom: 40px; }
.block-head .lead{ margin-bottom:0; }

/* ---------- Kategorie (moduł wyboru kategorii) ---------- */
.category-grid{
  display:grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 18px;
  scroll-margin-top: calc(var(--banner-h) + var(--header-h) + 12px);
}
.category-card{
  background: var(--surface);
  border:1px solid var(--line);
  border-radius: var(--radius-lg);
  transition: border-color .15s ease, transform .15s ease;
}
.category-card:hover{ border-color: var(--brass); transform: translateY(-2px); }
.category-card .cat-icon{ width:34px; height:34px; color: var(--brick); }
.category-card h3{ margin-bottom:0; }
.category-card .cat-count{ font-size:.88rem; color: var(--ink-faint); }
.category-card .cat-link{ margin-top:auto; font-weight:600; font-size:.92rem; color: var(--brick); }

@media (max-width: 900px){ .category-grid{ grid-template-columns: 1fr 1fr; } }
@media (max-width: 540px){ .category-grid{ grid-template-columns: 1fr; } }

/* ---------- Mapa ---------- */
.map-wrap{
  display:grid; grid-template-columns: 1fr 1fr; gap: 32px; align-items:center;
}
.map-frame{
  border:1px solid var(--line); border-radius: var(--radius-lg);
  overflow:hidden; aspect-ratio: 4 / 3; background: var(--bg-alt);
}
.map-frame iframe{ width:100%; height:100%; border:0; }
.map-info dl{ margin:0; }
.map-info dt{ font-weight:600; color: var(--ink-soft); font-size:.86rem; margin-top:16px; }
.map-info dt:first-child{ margin-top:0; }
.map-info dd{ margin: 2px 0 0; }

@media (max-width: 860px){ .map-wrap{ grid-template-columns:1fr; } }

/* ---------- Kontakt (mini, strona główna) ---------- */
.contact-mini{
  display:flex; flex-wrap:wrap; gap: 28px; align-items:center; justify-content:space-between;
  background: var(--ink); color: #F1ECDF;
  border-radius: var(--radius-lg);
  padding: 34px 36px;
}
.contact-mini h2{ color:#FBF7EC; margin-bottom:.3em; }
.contact-mini p{ color: #CBD2C2; margin-bottom:0; }
.contact-mini .contact-links{ display:flex; gap:14px; flex-wrap:wrap; }
.contact-mini a.btn-outline{ border-color: rgba(241,236,223,.4); color:#FBF7EC; }
.contact-mini a.btn-outline:hover{ border-color:#FBF7EC; }

/* ---------- Siatka apartamentów ---------- */
.filter-bar{
  display:flex; flex-wrap:wrap; gap: 10px; margin-bottom: 32px;
}
.filter-pill{
  font-size:.9rem; font-weight:600;
  padding:.55em 1.1em;
  border-radius: 999px;
  border:1px solid var(--line);
  background: var(--surface);
  color: var(--ink-soft);
  cursor:pointer;
}
.filter-pill:hover{ border-color: var(--brass); }
.filter-pill.active{ background: var(--ink); border-color: var(--ink); color:#F4EFE2; }

.apartments-grid{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 26px;
}
@media (max-width: 920px){ .apartments-grid{ grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px){ .apartments-grid{ grid-template-columns: 1fr; } }

.apt-card{
  display:flex; flex-direction:column;
  background: var(--surface);
  border:1px solid var(--line);
  border-radius: var(--radius-lg);
  overflow:hidden;
  transition: box-shadow .15s ease, transform .15s ease, border-color .15s ease;
}
.apt-card:hover{ box-shadow: 0 20px 36px -26px rgba(30,42,32,.4); transform: translateY(-3px); border-color: var(--line); }
.apt-card .apt-photo{ aspect-ratio: 4/3; overflow:hidden; }
.apt-card .apt-photo img{ width:100%; height:100%; object-fit:cover; }
.apt-card .apt-body{ padding: 16px 18px 20px; display:flex; flex-direction:column; gap:8px; flex:1; }
.apt-card .apt-cat{ font-size:.78rem; font-weight:600; color: var(--brass-deep); }
.apt-card h3{ margin-bottom:0; font-size:1.12rem; }
.apt-card .apt-addr{ font-size:.86rem; color: var(--ink-faint); margin-top:-4px; }
.apt-facts{ display:flex; gap:14px; margin-top:auto; padding-top:10px; border-top:1px solid var(--line); }
.apt-facts span{ white-space:nowrap; display:flex; align-items:center; gap:5px; font-size:.82rem; color: var(--ink-soft); }
.apt-facts svg{ width:15px; height:15px; flex:none; color: var(--ink-faint); }

.empty-state{ padding: 60px 0; text-align:center; color: var(--ink-faint); }

/* ---------- Paginacja ---------- */
.pagination{
  display:flex; justify-content:center; align-items:center; gap:8px; margin-top: 44px; flex-wrap:wrap;
}
.page-btn{
  min-width:38px; height:38px; padding:0 10px;
  border:1px solid var(--line); border-radius: var(--radius);
  background: var(--surface); color: var(--ink-soft); font-weight:600; font-size:.9rem;
  cursor:pointer; display:flex; align-items:center; justify-content:center;
}
.page-btn.active{ background: var(--ink); border-color:var(--ink); color:#F4EFE2; cursor:default; }
.page-btn:disabled{ opacity:.4; cursor:not-allowed; }
.page-btn:not(:disabled):not(.active):hover{ border-color: var(--brass); }

/* ---------- Strona apartamentu ---------- */
.breadcrumb{ font-size:.86rem; color: var(--ink-faint); margin-bottom: 22px; }
.breadcrumb a{ color: var(--ink-soft); }
.breadcrumb a:hover{ color: var(--brick); }

.apt-gallery{
  display:grid;
  grid-template-columns: 1.6fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 10px;
  border-radius: var(--radius-lg);
  overflow:hidden;
  margin-bottom: 40px;
}
.apt-gallery > div{ overflow:hidden; }
.apt-gallery > div img{ width:100%; height:100%; object-fit:cover; display:block; }
.apt-gallery > div:first-child{ grid-row: 1 / 3; }
@media (max-width: 720px){
  .apt-gallery{ grid-template-columns: 1fr; grid-template-rows:auto; }
  .apt-gallery > div{ aspect-ratio: 4/3; }
  .apt-gallery > div:nth-child(n+3){ display:none; }
}

.apt-detail-grid{
  margin-bottom: 56px;
  display:grid; grid-template-columns: minmax(0, 1.8fr) minmax(300px, 1fr); gap: 56px; align-items:start;
}
.apt-main{ min-width:0; }
.apt-h{ font-size:1.4rem; margin: 38px 0 14px; }
@media (max-width: 960px){ .apt-detail-grid{ gap: 36px; } }
@media (max-width: 860px){
  .apt-detail-grid{ grid-template-columns:1fr; }
  .booking-card{ position:static; }
}

/* Zdjęcia w lewej kolumnie — klik powiększa (lightbox) */
.apt-carousel{ margin-bottom:0; }
.apt-carousel .carousel-slide img{ cursor: zoom-in; }
.zoom-hint{
  position:absolute; top:14px; right:14px; z-index:2; pointer-events:none;
  display:inline-flex; align-items:center; gap:6px; font-size:.78rem; font-weight:600;
  background: rgba(36,28,18,.72); color:#fff; padding:6px 11px; border-radius:999px;
}
.zoom-hint svg{ width:15px; height:15px; }
@media (max-width: 520px){ .zoom-hint{ display:none; } }

/* Ważne informacje — ten sam układ co udogodnienia, tylko z ikonami zamiast ptaszków */
.amenities-list.apt-info{ align-items:start; }
.amenities-list.apt-info li{ align-items:flex-start; line-height:1.5; }
.amenities-list.apt-info svg{ width:19px; height:19px; color: var(--brass-deep); margin-top:2px; }
@media (max-width: 560px){ .apt-info{ grid-template-columns: 1fr; } }

/* Podobne apartamenty — karuzela pod kolumnami */
.apt-similar[hidden]{ display:none; }
.similar-wrap{ position:relative; margin: 22px 0 28px; }
.similar-track{
  display:flex; gap:20px; overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth;
  padding: 4px 2px 14px; scrollbar-width:thin;
}
.similar-track .apt-card{ flex:0 0 clamp(250px, 29%, 320px); scroll-snap-align:start; }
.similar-arrow{
  position:absolute; top:42%; transform:translateY(-50%); z-index:3;
  width:44px; height:44px; border-radius:50%; padding:0; cursor:pointer;
  background: rgba(255,253,248,.96); border:1px solid var(--line); color: var(--ink);
  display:flex; align-items:center; justify-content:center; box-shadow: 0 6px 18px -8px rgba(30,20,10,.45);
}
.similar-arrow svg{ width:18px; height:18px; }
.similar-arrow:hover:not(:disabled){ border-color: var(--brass); background:#fff; }
.similar-arrow:disabled{ opacity:.35; cursor:default; }
.similar-prev{ left:-14px; }
.similar-next{ right:-14px; }
@media (hover: none), (max-width: 640px){ .similar-arrow{ display:none; } }
.similar-cta{ display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }

/* Pasek „Zarezerwuj” na telefonie */
.apt-mobile-cta{ display:none; }
@media (max-width: 860px){
  .apt-mobile-cta:not([hidden]){
    display:block; position:fixed; left:0; right:0; bottom:0; z-index:60;
    padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
    background: var(--surface); border-top:1px solid var(--line); box-shadow: 0 -10px 24px -16px rgba(30,20,10,.5);
  }
  body.has-mobile-cta{ padding-bottom: 76px; }
}

/* Lightbox */
body.lb-open{ overflow:hidden; }
.lb{
  position:fixed; inset:0; z-index:300; background: rgba(15,11,6,.93);
  display:flex; align-items:center; justify-content:center; padding: 56px 64px;
}
.lb-fig{ margin:0; max-width:100%; max-height:100%; display:flex; flex-direction:column; align-items:center; gap:10px; }
.lb-img{ max-width:100%; max-height: calc(100vh - 140px); object-fit:contain; border-radius:6px; background:#222; }
.lb-count{ color: #e9e2d2; font-size:.88rem; min-height:1.2em; }
.lb-close, .lb-nav{
  position:absolute; background: rgba(255,253,248,.14); color:#fff; border:1px solid rgba(255,255,255,.25);
  cursor:pointer; padding:0; display:flex; align-items:center; justify-content:center;
}
.lb-close{ top:14px; right:14px; width:44px; height:44px; border-radius:50%; font-size:28px; line-height:1; }
.lb-nav{ top:50%; transform:translateY(-50%); width:48px; height:48px; border-radius:50%; }
.lb-nav svg{ width:20px; height:20px; }
.lb-prev{ left:14px; } .lb-next{ right:14px; }
.lb-close:hover, .lb-nav:hover{ background: rgba(255,253,248,.28); }
@media (max-width: 640px){
  .lb{ padding: 56px 8px 24px; }
  .lb-nav{ top:auto; bottom:14px; transform:none; }
}

.apt-quickfacts{
  display:flex; gap: 22px; flex-wrap:wrap;
  padding: 18px 0; margin: 4px 0 22px;
  border-top:1px solid var(--line); border-bottom:1px solid var(--line);
}
.apt-quickfacts span{ display:flex; align-items:center; gap:8px; font-size:.96rem; color: var(--ink-soft); font-weight:500; }
.apt-quickfacts svg{ width:19px; height:19px; color: var(--brick); }

.amenities-list{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns: 1fr 1fr; gap: 10px 18px; }
.amenities-list li{ display:flex; align-items:center; gap:9px; font-size:.94rem; color: var(--ink-soft); }
.amenities-list svg{ width:16px; height:16px; color: var(--ok); flex:none; }

.booking-card{
  background: var(--surface); border:1px solid var(--line); border-radius: var(--radius-lg);
  padding: 26px; position:sticky; top: calc(var(--banner-h) + var(--header-h) + 14px);
}
.booking-card .price-hint{ font-size:.88rem; color: var(--ink-faint); margin-bottom:18px; }
.booking-card dl{ margin: 0 0 20px; font-size:.92rem; }
.booking-card dt{ color: var(--ink-faint); display:inline; }
.booking-card dd{ display:inline; margin:0 0 0 6px; font-weight:600; }
.booking-card dl div{ display:flex; justify-content:space-between; padding:6px 0; border-bottom:1px dashed var(--line); }

/* ---------- Tabele cennika (transfery) ---------- */
.table-wrap{ overflow-x:auto; margin: 8px 0 30px; }
.table-wrap .price-table{ margin:0; }
.price-table td.num{ white-space:nowrap; }
@media (max-width: 640px){
  .table-wrap .price-table th, .table-wrap .price-table td{ padding:10px 6px; font-size:.84rem; }
  .table-wrap .price-table thead th{ font-size:.72rem; }
  .table-wrap .price-table small{ display:block; }
}
.price-table{ width:100%; border-collapse:collapse; margin: 8px 0 30px; }
.price-table caption{ text-align:left; font-weight:600; margin-bottom:10px; font-family:var(--font-display); font-size:1.1rem; }
.price-table th, .price-table td{ text-align:left; padding: 12px 14px; border-bottom:1px solid var(--line); font-size:.95rem; }
.price-table thead th{ color: var(--ink-faint); font-weight:600; font-size:.82rem; border-bottom:2px solid var(--ink); }
.price-table tbody tr:hover{ background: var(--bg-alt); }
.price-note{ font-size:.86rem; color: var(--ink-faint); }

.transfer-cta{
  display:flex; gap:14px; flex-wrap:wrap; margin-top: 30px;
}

/* ---------- Karty ogólne (wycieczki, itp.) ---------- */
.card-grid{ display:grid; grid-template-columns: repeat(3,1fr); gap:22px; }
@media (max-width: 900px){ .card-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width: 600px){ .card-grid{ grid-template-columns:1fr; } }
.info-card{
  background: var(--surface); border:1px solid var(--line); border-radius: var(--radius-lg);
  padding: 22px;
}
.info-card h3{ margin-bottom:.3em; }
.info-card p{ font-size:.94rem; color: var(--ink-soft); margin-bottom:0; }

.attraction-card{
  display:block; padding:0; overflow:hidden;
  transition: box-shadow .15s ease, transform .15s ease, border-color .15s ease;
}
.attraction-card:hover{ box-shadow: 0 20px 36px -26px rgba(36,28,18,.35); transform: translateY(-3px); }
.attraction-photo{ aspect-ratio: 4/3; overflow:hidden; }
.attraction-photo img{ width:100%; height:100%; object-fit:cover; }
.attraction-card h3, .attraction-card p, .attraction-card .cat-link{ padding-inline: 20px; }
.attraction-card h3{ margin-top:16px; }
.attraction-card .cat-link{
  display:block; margin: 12px 0 20px; font-weight:600; font-size:.9rem; color: var(--brass-deep);
}

.partner-banner{
  margin-top: 46px;
  background: var(--ink); color:#F1ECDF;
  border-radius: var(--radius-lg);
  padding: 36px 38px;
  display:flex; justify-content:space-between; align-items:center; gap:24px; flex-wrap:wrap;
}
.partner-banner h3{ color:#FBF7EC; margin-bottom:.25em; }
.partner-banner p{ color:#CBD2C2; margin-bottom:0; max-width:52ch; }

/* ---------- Formularz kontaktowy ---------- */
.contact-form{ display:grid; gap:16px; max-width: 560px; }
.contact-form .field-row{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media (max-width:560px){ .contact-form .field-row{ grid-template-columns:1fr; } }
.contact-form label{ font-weight:600; font-size:.88rem; color: var(--ink-soft); display:block; margin-bottom:6px; }
.contact-form input, .contact-form textarea{
  width:100%; font:inherit; font-size:.96rem;
  padding:.72em .85em; border:1px solid var(--line); border-radius: var(--radius);
  background: var(--surface); color: var(--ink);
}
.contact-form input:focus, .contact-form textarea:focus{ border-color: var(--brick); }
.contact-form textarea{ resize:vertical; min-height:120px; }
.form-note{ font-size:.86rem; color: var(--ink-faint); }
.form-success{
  display:none; background:#EAF1E7; border:1px solid #C3D9BC; color:#2F4B32;
  padding:14px 16px; border-radius: var(--radius); font-size:.92rem; margin-bottom:16px;
}
.form-success.show{ display:block; }
.form-error{
  display:none; background:#FBEAE6; border:1px solid #E5B9AE; color:#7A2A1B;
  padding:14px 16px; border-radius: var(--radius); font-size:.92rem; margin-bottom:16px;
}
.form-error.show{ display:block; }
.hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

/* ---------- Stopka ---------- */
.site-footer{ background: var(--ink); color:#D9DECD; margin-top: 80px; }
.footer-inner{
  max-width: var(--content-w); margin-inline:auto; padding: 56px 24px 28px;
  display:grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 40px;
}
.footer-inner h4{ color:#F4EFE2; font-family:var(--font-body); font-size:.86rem; font-weight:600; margin-bottom:14px; }
.footer-inner p{ color:#AEB6A0; font-size:.92rem; }
.footer-inner a{ color:#C7CEB8; display:block; padding:4px 0; font-size:.94rem; }
.footer-inner a:hover{ color:#F4EFE2; }
.footer-bottom{
  border-top:1px solid rgba(217,222,205,.16);
  padding: 18px 24px; text-align:center; font-size:.82rem; color:#8B937D;
}
@media (max-width: 780px){ .footer-inner{ grid-template-columns:1fr 1fr; } }
@media (max-width: 520px){ .footer-inner{ grid-template-columns:1fr; } }

/* ---------- Karuzela zdjęć (Parking, Śniadania) ---------- */
.carousel{
  position:relative; border-radius: var(--radius-lg); overflow:hidden;
  aspect-ratio: 16/10; background: var(--bg-alt); margin-bottom: 28px;
}
.carousel-track{ display:flex; height:100%; transition: transform .4s ease; }
.carousel-slide{ flex:0 0 100%; height:100%; }
.carousel-slide img{ width:100%; height:100%; object-fit:cover; display:block; }
.carousel-arrow{
  position:absolute; top:50%; transform:translateY(-50%);
  width:42px; height:42px; border-radius:50%;
  background: rgba(255,253,248,.92); border:1px solid var(--line);
  display:flex; align-items:center; justify-content:center;
  cursor:pointer; color: var(--ink); padding:0;
}
.carousel-arrow svg{ width:18px; height:18px; }
.carousel-arrow:hover{ background:#fff; border-color: var(--brass); }
.carousel-prev{ left:14px; }
.carousel-next{ right:14px; }
.carousel-dots{
  position:absolute; bottom:14px; left:50%; transform:translateX(-50%);
  display:flex; gap:8px;
}
.carousel-dots button{
  width:8px; height:8px; border-radius:50%; padding:0;
  background: rgba(255,253,248,.65); border:1px solid rgba(36,28,18,.35); cursor:pointer;
}
.carousel-dots button.active{ background: var(--brass); border-color: var(--brass); }

/* ---------- Kafelki kategorii ze zdjęciem (strona główna) ---------- */
.category-card{ padding:0; overflow:hidden; }
.category-card .cat-photo{ aspect-ratio: 4/3; overflow:hidden; }
.category-card .cat-photo img{ width:100%; height:100%; object-fit:cover; display:block; }
.category-card .cat-body{ padding: 20px 22px 24px; display:flex; flex-direction:column; gap:10px; }

/* ---------- Pojedyncze, statyczne zdjęcie (Parking, Śniadania) ---------- */
.static-photo{
  border-radius: var(--radius-lg); overflow:hidden;
  aspect-ratio: 16/9; background: var(--bg-alt);
}
.static-photo img{ width:100%; height:100%; object-fit:cover; display:block; }

/* ---------- Social media + przełącznik języka (nagłówek / stopka) ---------- */
.header-tools{ display:flex; align-items:center; gap:10px; flex:none; }
.social-link{
  width:32px; height:32px; display:inline-flex; align-items:center; justify-content:center;
  border-radius:50%; color: var(--ink-soft); transition: color .2s ease, background-color .2s ease;
}
.social-link svg{ width:19px; height:19px; }
.social-link:hover{ color: var(--brass-deep); background: rgba(199,154,22,.12); }
.lang-switch{
  display:inline-flex; align-items:center; font-size:.8rem; font-weight:700; letter-spacing:.04em;
  border:1px solid var(--line); border-radius:999px; overflow:hidden;
}
.lang-switch > *{ padding: 5px 10px; line-height:1; }
.lang-current{ background: var(--ink); color: var(--brass-tint); }
.lang-other{ color: var(--ink-soft); }
.lang-other:hover{ color: var(--ink); }
.lang-other.is-disabled{ opacity:.5; cursor:not-allowed; }

body.page-home .site-header:not(.scrolled) .social-link{ color: rgba(255,255,255,.92); }
body.page-home .site-header:not(.scrolled) .social-link:hover{ color:#fff; background: rgba(255,255,255,.16); }
body.page-home .site-header:not(.scrolled) .lang-switch{ border-color: rgba(255,255,255,.5); }
body.page-home .site-header:not(.scrolled) .lang-current{ background: rgba(255,255,255,.92); color: var(--ink); }
body.page-home .site-header:not(.scrolled) .lang-other{ color: rgba(255,255,255,.92); }

.footer-social{ display:flex; gap:8px; margin-top:10px; }
.footer-inner .footer-social a.social-link{ display:inline-flex; padding:0; color:#C7CEB8; border:1px solid rgba(217,222,205,.25); }
.footer-inner .footer-social a.social-link:hover{ color:#F4EFE2; background: rgba(255,255,255,.08); }

@media (max-width: 1180px){
  .header-tools{ gap:6px; }
  .header-inner{ gap:12px; }
}
@media (max-width: 520px){
  .header-tools .social-link{ display:none; }
}

/* ---------- Strona rezerwacji ---------- */
.booking-summary{
  background: var(--surface); border:1px solid var(--line); border-left:4px solid var(--green-bright);
  border-radius: var(--radius-lg); padding: 16px 20px; margin-bottom: 24px;
}
.booking-summary[hidden]{ display:none; }
.booking-summary-title{ font-weight:700; margin:0 0 6px; }
.booking-summary div{ display:flex; flex-wrap:wrap; gap:6px 24px; font-size:.95rem; color: var(--ink-soft); }
.booking-summary b{ color: var(--ink); }
.booking-summary-hint{ margin:8px 0 0; font-size:.86rem; color: var(--ink-faint); max-width:none; }
.booking-engine-wrap{
  background: var(--surface); border:1px solid var(--line); border-radius: var(--radius-lg);
  padding: 20px; min-height: 420px;
}

/* ---------- Apartament: spanie / szczegóły ---------- */
.apt-beds{ margin: -8px 0 22px; font-size:.95rem; color: var(--ink-soft); max-width:none; }
.apt-beds strong{ color: var(--ink); }


/* ---------- Opinie Google ---------- */
.reviews{ position:relative; padding:84px 0 96px; color:#fff; background:#1d2a22; overflow:hidden; }
.reviews-bg{ position:absolute; inset:0; }
.reviews-bg img{ width:100%; height:100%; object-fit:cover; display:block; }
.reviews-bg::after{ content:""; position:absolute; inset:0; background:rgba(14,18,14,.72); }
.reviews .container{ position:relative; z-index:1; }
.reviews h2{ text-align:center; max-width:none; margin:0 auto 44px; color:#fff; font-weight:500; font-size:clamp(1.9rem,3.6vw,2.7rem); letter-spacing:0; }
.reviews-sub{ text-align:center; max-width:none; margin:0 auto 44px; color:rgba(255,255,255,.85); font-size:.98rem; }
.reviews-sub a{ color:#fff; text-decoration:underline; text-underline-offset:3px; }
.reviews-viewport{ overflow:hidden; padding:30px 4px 6px; }
.reviews-track{ display:flex; gap:22px; transition:transform .5s ease; }
.review-card{
  flex:0 0 calc((100% - 44px) / 3);
  background:#f6f6f4; color:#1b1b1b; border-radius:14px;
  padding:48px 22px 24px; position:relative; text-align:center;
  box-shadow:0 14px 30px -14px rgba(0,0,0,.5);
  font-family: system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
.review-avatar{
  position:absolute; top:-26px; left:50%; transform:translateX(-50%);
  width:52px; height:52px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:1.5rem; font-weight:500; color:#fff;
  border:3px solid #f6f6f4;
}
.review-name{ font-weight:600; font-size:1rem; margin:0 0 6px; }
.review-stars{ color:#f2b82e; letter-spacing:2px; font-size:1.1rem; margin-bottom:10px; }
.review-text{ margin:0; font-size:.95rem; line-height:1.55; color:#2b2b2b; }
.review-source{ display:block; margin-top:12px; font-size:.78rem; color:#777; }
.reviews-nav{
  position:absolute; top:50%; right:-6px; transform:translateY(-30%);
  width:42px; height:42px; border-radius:50%; border:0; cursor:pointer;
  background:#fff; color:#222; box-shadow:0 4px 14px rgba(0,0,0,.35);
  display:flex; align-items:center; justify-content:center;
}
.reviews-nav.prev{ right:auto; left:-6px; }
.reviews-nav:disabled{ opacity:.35; cursor:default; }
.reviews-nav svg{ width:20px; height:20px; }
.reviews-wrap{ position:relative; }
@media (max-width:900px){ .review-card{ flex-basis:calc((100% - 22px) / 2); } }
@media (max-width:600px){
  .review-card{ flex-basis:100%; }
  .reviews-nav{ right:2px; } .reviews-nav.prev{ left:2px; }
  .reviews{ padding:64px 0 72px; }
}


/* ---------- Udogodnienia ---------- */
.amenities{ padding:84px 0 92px; background: var(--bg-alt); color: var(--ink); }
.amenities h2{ text-align:center; max-width:none; margin:0 auto 52px; font-weight:500; font-size:clamp(1.9rem,3.6vw,2.7rem); }
.amenity-grid{ display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:28px 18px; }
.amenity{ display:flex; flex-direction:column; align-items:center; gap:16px; text-align:center; color: var(--ink); }
.amenity-circle{
  width:112px; height:112px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  border:2px solid var(--brass); background: var(--surface);
  color: var(--brass);
  transition: transform .3s ease, background .3s ease, color .3s ease;
}
.amenity-circle svg{ width:50px; height:50px; }
a.amenity{ cursor:pointer; }
a.amenity:hover .amenity-circle{ transform:translateY(-6px); background:var(--brass); color:#1d1a12; }
.amenity-label{ font-weight:600; font-size:1rem; line-height:1.3; max-width:150px; }
@media (max-width:1000px){ .amenity-grid{ grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:520px){
  .amenities{ padding:64px 0 72px; }
  .amenity-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:30px 12px; }
  .amenity-circle{ width:96px; height:96px; } .amenity-circle svg{ width:42px; height:42px; }
}

/* ---------- Dokumenty prawne ---------- */
.footer-legal{ display:flex; flex-wrap:wrap; justify-content:center; gap:6px 22px; margin-bottom:8px; }
.footer-legal a{ color:#C7CEB8; text-decoration:underline; text-underline-offset:3px; }
.footer-legal a:hover{ color:#F4EFE2; }
.doc-links{ margin-top:16px; font-size:.92rem; }
.doc-links a{ text-decoration:underline; text-underline-offset:3px; }
.legal{ max-width:820px; }
.legal h1{ margin-bottom:8px; }
.legal .legal-meta{ color:var(--ink-soft); margin-bottom:32px; }
.legal h2{ font-size:1.35rem; margin:36px 0 10px; }
.legal p, .legal li{ line-height:1.7; }
.legal ol, .legal ul{ padding-left:22px; margin:8px 0 14px; }
.legal li{ margin-bottom:6px; }
.legal a{ text-decoration:underline; text-underline-offset:3px; }
.legal .doc-actions{ margin:0 0 28px; display:flex; gap:12px; flex-wrap:wrap; }
.legal table{ display:block; overflow-x:auto; width:100%; border-collapse:collapse; margin:10px 0 18px; font-size:.95rem; }
.legal th, .legal td{ border:1px solid var(--line); padding:10px 12px; text-align:left; vertical-align:top; }
.legal th{ background:var(--surface); }


/* ---------- Zgody na cookies ---------- */
.linklike{ background:none; border:0; padding:0; font:inherit; color:#C7CEB8; text-decoration:underline; text-underline-offset:3px; cursor:pointer; }
.linklike:hover{ color:#F4EFE2; }
.cc-banner{
  position:fixed; left:16px; right:16px; bottom:16px; z-index:200;
  max-width:980px; margin-inline:auto;
  background:var(--surface); color:var(--ink); border:1px solid var(--line);
  border-radius:var(--radius-lg); box-shadow:0 20px 50px -12px rgba(10,8,4,.5);
  padding:20px 22px; display:flex; gap:20px; align-items:center; flex-wrap:wrap;
}
.cc-text{ flex:1 1 380px; }
.cc-text strong{ display:block; margin-bottom:4px; font-size:1.02rem; }
.cc-text p{ margin:0; font-size:.9rem; line-height:1.55; color:var(--ink-soft); }
.cc-text a{ text-decoration:underline; text-underline-offset:3px; color:var(--ink); }
.cc-actions{ display:flex; gap:10px; flex-wrap:wrap; }
.cc-btn{
  font:inherit; font-weight:600; font-size:.92rem; cursor:pointer;
  padding:.7em 1.2em; border-radius:var(--radius);
  border:1px solid var(--ink); background:transparent; color:var(--ink);
}
.cc-btn:hover{ background:rgba(36,28,18,.07); }
.cc-btn.cc-primary{ background:var(--ink); color:var(--surface); }
.cc-btn.cc-primary:hover{ background:#3a2d1c; }
.cc-overlay{ position:fixed; inset:0; z-index:210; background:rgba(10,8,4,.6); display:flex; align-items:center; justify-content:center; padding:16px; }
.cc-modal{ background:var(--surface); color:var(--ink); border-radius:var(--radius-lg); max-width:600px; width:100%; max-height:90vh; overflow:auto; padding:26px; box-shadow:0 30px 70px -20px rgba(0,0,0,.6); }
.cc-modal h2{ margin:0 0 8px; font-size:1.4rem; }
.cc-intro{ margin:0 0 18px; color:var(--ink-soft); font-size:.92rem; }
.cc-row{ display:flex; justify-content:space-between; align-items:flex-start; gap:18px; padding:14px 0; border-top:1px solid var(--line); }
.cc-row p{ margin:4px 0 0; font-size:.86rem; color:var(--ink-soft); line-height:1.5; }
.cc-always{ font-size:.82rem; font-weight:600; color:var(--green-bright-deep); white-space:nowrap; padding-top:2px; }
.cc-switch{ position:relative; flex:none; width:46px; height:26px; cursor:pointer; }
.cc-switch input{ position:absolute; opacity:0; inset:0; width:100%; height:100%; margin:0; cursor:pointer; }
.cc-switch span{ position:absolute; inset:0; border-radius:26px; background:#c9bfa8; transition:background .2s; }
.cc-switch span::after{ content:""; position:absolute; top:3px; left:3px; width:20px; height:20px; border-radius:50%; background:#fff; transition:transform .2s; }
.cc-switch input:checked + span{ background:var(--green-bright-deep); }
.cc-switch input:checked + span::after{ transform:translateX(20px); }
.cc-switch input:focus-visible + span{ outline:2px solid var(--brass); outline-offset:2px; }
.sr{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); }
.cc-modal-actions{ margin-top:18px; justify-content:flex-end; }
@media (max-width:600px){ .cc-actions .cc-btn{ flex:1 1 auto; } .cc-modal-actions{ justify-content:stretch; } }
.map-consent{ height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px; text-align:center; padding:24px; background:var(--bg-alt); }
.map-consent p{ margin:0; max-width:380px; font-size:.9rem; color:var(--ink-soft); }
.map-consent a{ text-decoration:underline; }

.map-frame iframe{ display:block; }
