/* ==========================================================================
   White Glove — style.css
   Kolory i typografia są w zmiennych poniżej. Czerń i biel pochodzą z logo,
   mosiądz (--brass) z referencji wizualnej. Jedna rodzina krojów: Archivo,
   w nagłówkach rozszerzona (font-stretch 125%) i cienka.
   ========================================================================== */

:root {
  --black: #000;
  --white: #fff;
  --linen: #f2f1ed;
  --brass: #b08d57;
  --brass-ink: #7a5e34;
  --graphite: #5c5c5c;
  --ash: #a6a6a6;
  --line: rgba(0, 0, 0, .14);
  --line-inv: rgba(255, 255, 255, .2);
  --err: #b3261e;
  --ok: #1e6b3a;

  --f: "Archivo", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --wrap: 1440px;
  --gut: clamp(16px, 4vw, 56px);
  --sec: clamp(80px, 10vw, 160px);
  --hdr: 76px;
  --ease: cubic-bezier(.19, 1, .22, 1);
  --ease-io: cubic-bezier(.65, .05, .36, 1);
}

/* --------------------------------------------------------------- podstawy */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-padding-top: calc(var(--hdr) + 16px); }
body {
  margin: 0; background: var(--white); color: var(--black);
  font-family: var(--f); font-size: 17px; line-height: 1.6; font-weight: 400; font-stretch: 100%;
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
}
img, svg { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .25em; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
h1, h2, h3, h4, p, ul, ol, dl, dd, figure { margin: 0; }
ul, ol { padding: 0; }
[hidden] { display: none !important; }
.wrap { width: 100%; max-width: var(--wrap); margin-inline: auto; padding-inline: var(--gut); }
.visually-hidden {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.skip { position: fixed; left: 16px; top: -80px; z-index: 300; background: var(--white); color: var(--black); padding: 12px 18px; transition: top .2s; }
.skip:focus { top: 16px; }
:focus-visible { outline: 2px solid var(--brass); outline-offset: 3px; }
html.is-locked { overflow: hidden; }
.ico { width: 20px; height: 20px; flex: none; }

/* --------------------------------------------------------------- typografia */
.display {
  font-weight: 250; font-stretch: 125%; text-transform: uppercase;
  letter-spacing: .005em; line-height: .98; text-wrap: balance;
}
.title {
  display: flex; align-items: flex-start; gap: clamp(14px, 1.6vw, 24px);
  font-weight: 250; font-stretch: 125%; text-transform: uppercase;
  font-size: clamp(30px, 4.1vw, 60px); line-height: 1.02; letter-spacing: .005em;
}
.title__rule { flex: none; width: clamp(36px, 5vw, 76px); height: 1px; margin-top: .5em; background: var(--brass); }
.title__text { display: block; text-wrap: balance; }
.title--brass { color: var(--brass); }
.title--inv { color: var(--white); }
.sec-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px 48px; margin-bottom: clamp(36px, 4.5vw, 64px); }
.sec-head__lead { max-width: 36ch; color: var(--graphite); }
.sec-head--inv .sec-head__lead { color: var(--ash); }

/* --------------------------------------------------------------- przyciski i linki */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 52px; padding: 0 26px; border: 1px solid currentColor; border-radius: 0;
  background: transparent; color: inherit; font-size: 15px; font-weight: 500; letter-spacing: .01em;
  line-height: 1.1; text-align: center; text-decoration: none;
  transition: background-color .35s var(--ease), color .35s var(--ease), border-color .35s var(--ease);
}
.btn .ico { width: 18px; height: 18px; }
.btn--sm { min-height: 42px; padding: 0 18px; font-size: 14px; }
.btn--dark { background: var(--black); border-color: var(--black); color: var(--white); }
.btn--dark:hover { background: transparent; color: var(--black); }
.btn--light { background: var(--white); border-color: var(--white); color: var(--black); }
.btn--light:hover { background: transparent; color: var(--white); }
.btn--ghost { border-color: rgba(255, 255, 255, .5); }
.btn--ghost:hover { background: var(--white); border-color: var(--white); color: var(--black); }
.btn[disabled] { opacity: .5; cursor: default; }
.tlink {
  display: inline-flex; align-items: center; gap: 8px; padding: 0; border: 0; background: none;
  font-weight: 500; text-decoration: underline; text-decoration-color: var(--brass);
  text-decoration-thickness: 1px; text-underline-offset: .35em; transition: text-decoration-color .3s;
}
.tlink:hover { text-decoration-color: currentColor; }
.tlink--inv { color: var(--white); }

/* --------------------------------------------------------------- logo */
.logo { display: inline-flex; align-items: center; gap: 12px; color: inherit; text-decoration: none; flex: none; }
.logo__sygnet { height: 38px; width: auto; }
.logo__napis { height: 24px; width: auto; }
.logo--stack { flex-direction: column; align-items: flex-start; gap: 14px; }
.logo--stack .logo__sygnet { height: 64px; }
.logo--stack .logo__napis { height: 32px; }

/* --------------------------------------------------------------- nagłówek */
.hdr {
  position: fixed; top: 0; left: 0; right: 0; z-index: 60; color: var(--white);
  background: rgba(0, 0, 0, .32); border-bottom: 1px solid rgba(255, 255, 255, .08);
  -webkit-backdrop-filter: blur(10px) saturate(1.1); backdrop-filter: blur(10px) saturate(1.1);
  transition: background-color .45s var(--ease), border-color .45s var(--ease);
}
.hdr.is-solid { background: rgba(0, 0, 0, .96); border-bottom-color: var(--line-inv); }
@supports ((backdrop-filter: blur(8px)) or (-webkit-backdrop-filter: blur(8px))) {
  .hdr.is-solid { background: rgba(0, 0, 0, .88); -webkit-backdrop-filter: blur(16px) saturate(1.2); backdrop-filter: blur(16px) saturate(1.2); }
}
.hdr__in { height: var(--hdr); display: flex; align-items: center; gap: clamp(16px, 2.4vw, 40px); }
.hdr__nav { display: flex; gap: clamp(18px, 2vw, 32px); margin-left: auto; }
.hdr__nav a {
  font-size: 15px; text-decoration: none; opacity: .84; padding: 6px 0;
  background: linear-gradient(var(--brass), var(--brass)) 0 100% / 0 1px no-repeat;
  transition: opacity .3s, background-size .45s var(--ease);
}
.hdr__nav a:hover, .hdr__nav a[aria-current] { opacity: 1; background-size: 100% 1px; }
.hdr__end { display: flex; align-items: center; gap: 16px; margin-left: clamp(8px, 2vw, 28px); }
/* przełącznik języka: przycisk ze znacznikiem i rozwijana lista */
.lang { position: relative; }
.lang__btn { display: flex; align-items: center; gap: 5px; padding: 8px 4px; border: 0; background: none; color: inherit; font: inherit; font-size: 13px; font-weight: 600; letter-spacing: .06em; cursor: pointer; opacity: .84; }
.lang__btn:hover, .lang__btn[aria-expanded="true"] { opacity: 1; }
.lang__caret { width: 14px; height: 14px; transition: transform .25s var(--ease); }
.lang__btn[aria-expanded="true"] .lang__caret { transform: rotate(180deg); }
.lang__panel { position: absolute; top: calc(100% + 10px); right: 0; z-index: 30; min-width: 190px; padding: 6px; background: var(--black); border: 1px solid var(--line-inv); box-shadow: 0 18px 40px rgba(0,0,0,.45); }
.lang__panel[hidden] { display: none; }
.js .lang__panel:not([hidden]) { animation: langIn .18s var(--ease) both; }
@keyframes langIn { from { opacity: 0; transform: translateY(-6px); } }
.lang__list { list-style: none; }
.lang__link { display: flex; align-items: baseline; gap: 10px; padding: 9px 10px; color: var(--ash); text-decoration: none; font-size: 15px; }
.lang__link:hover, .lang__link:focus-visible { background: rgba(255,255,255,.08); color: var(--white); }
.lang__link.is-current { color: var(--white); }
.lang__link.is-current .lang__code { color: var(--brass); }
.lang__code { font-size: 12px; font-weight: 600; letter-spacing: .08em; min-width: 22px; }
.lang__list--menu { display: flex; flex-wrap: wrap; gap: 4px 8px; }
.lang__list--menu .lang__link { padding: 6px 10px; border: 1px solid var(--line-inv); }
.menu__langs { flex: none; display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; padding-block: 20px 0; }
.menu__langs-l { font-size: 13px; letter-spacing: .06em; text-transform: uppercase; color: var(--ash); }
.hdr__menu { display: inline-flex; align-items: center; gap: 12px; background: none; border: 0; padding: 8px 0; font-size: 15px; }
.burger { position: relative; display: block; width: 26px; height: 11px; }
.burger i { position: absolute; left: 0; right: 0; height: 1px; background: currentColor; transition: transform .45s var(--ease); }
.burger i:first-child { top: 0; }
.burger i:last-child { bottom: 0; }
.hdr__menu:hover .burger i:last-child { transform: scaleX(.6); transform-origin: right; }
@media (max-width: 1180px) { .hdr__nav { display: none; } .hdr__end { margin-left: auto; } }
@media (max-width: 560px) {
  .hdr__book, .hdr__menu-label { display: none; }
  .logo__sygnet { height: 32px; } .logo__napis { height: 20px; }
}

/* --------------------------------------------------------------- hero */
.hero {
  position: relative; min-height: 100vh; min-height: 100svh; display: flex; flex-direction: column; justify-content: flex-end;
  background: var(--black); color: var(--white); overflow: hidden; isolation: isolate;
}
.hero__slides { position: absolute; inset: 0; z-index: -2; }
.hero__slide { position: absolute; inset: 0; opacity: 0; transition: opacity 1.2s var(--ease-io); }
.hero__slide.is-active { opacity: 1; }
.hero__img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.07); transition: transform 9s linear; }
.hero__slide.is-active .hero__img { transform: scale(1); }
.hero__scrim {
  position: absolute; inset: 0; z-index: -1;
  background:
    linear-gradient(90deg, rgba(0,0,0,.5) 0%, rgba(0,0,0,.22) 50%, rgba(0,0,0,0) 78%),
    linear-gradient(180deg, rgba(0,0,0,.6) 0%, rgba(0,0,0,.14) 28%, rgba(0,0,0,.3) 55%, rgba(0,0,0,.88) 100%);
}
.hero__inner { padding-top: calc(var(--hdr) + 10vh); padding-bottom: clamp(28px, 4vw, 48px); }
.hero__kicker { display: flex; align-items: center; gap: 16px; margin-bottom: clamp(18px, 2.4vw, 30px); font-size: 15px; color: rgba(255,255,255,.9); }
.hero__kicker .rule { width: clamp(40px, 6vw, 88px); height: 1px; background: currentColor; }
.hero__title { font-size: clamp(38px, 7vw, 108px); max-width: 15ch; }
.hero__lead { margin-top: clamp(18px, 2vw, 28px); max-width: 46ch; font-size: clamp(17px, 1.35vw, 19px); color: rgba(255,255,255,.86); }
.hero__bottom { padding-bottom: clamp(18px, 2.6vw, 30px); }
.hero__meta { display: flex; align-items: center; gap: 18px; margin-top: 16px; padding-right: 84px; font-size: 13px; color: rgba(255,255,255,.72); }
.hero__pause { flex: none; width: 36px; height: 36px; display: grid; place-items: center; padding: 0; border: 1px solid rgba(255,255,255,.35); border-radius: 50%; background: none; color: var(--white); }
.hero__pause .ico { width: 14px; height: 14px; }
.hero__pause .ico--play { display: none; }
.hero__pause[aria-pressed="true"] .ico--pause { display: none; }
.hero__pause[aria-pressed="true"] .ico--play { display: block; }
.hero__caption { display: flex; flex-wrap: wrap; gap: 4px 12px; min-width: 0; }
.hero__caption a { color: var(--white); font-weight: 500; text-decoration: none; background: linear-gradient(var(--brass), var(--brass)) 0 100% / 0 1px no-repeat; transition: background-size .45s var(--ease); }
.hero__caption a:hover { background-size: 100% 1px; }
.hero__caption, .hero__count { transition: opacity .35s var(--ease), transform .35s var(--ease); }
.hero__caption.is-swap, .hero__count.is-swap { opacity: 0; transform: translateY(6px); }
.hero__count { margin-left: auto; font-variant-numeric: tabular-nums; }
.hero__caption span[data-hero-name] { color: var(--white); font-weight: 500; }
/* ten sam pokaz zdjęć w nagłówkach podstron */
.page-hero .hero__meta { margin-top: clamp(28px, 4vw, 52px); }
.page-hero--photo[data-hero]::before { background: linear-gradient(90deg, rgba(0,0,0,.55), rgba(0,0,0,.12) 70%), linear-gradient(180deg, rgba(0,0,0,.6), rgba(0,0,0,.25) 40%, rgba(0,0,0,.82)); }

/* --------------------------------------------------------------- wyszukiwarka */
.search {
  display: grid; grid-template-columns: minmax(0, 1.25fr) repeat(3, minmax(0, 1fr)) auto;
  border: 1px solid rgba(255,255,255,.3); background: rgba(12,12,12,.55); color: var(--white);
}
@supports ((backdrop-filter: blur(8px)) or (-webkit-backdrop-filter: blur(8px))) {
  .search { background: rgba(12,12,12,.32); -webkit-backdrop-filter: blur(18px) saturate(1.3); backdrop-filter: blur(18px) saturate(1.3); }
}
.search__field { position: relative; display: flex; flex-direction: column; justify-content: center; gap: 6px; min-width: 0; padding: 14px 22px; border-right: 1px solid rgba(255,255,255,.18); }
.search__field:focus-within { background: rgba(255,255,255,.07); }
.search__label { font-size: 12px; letter-spacing: .02em; color: rgba(255,255,255,.68); }
.search__date, .search select {
  width: 100%; padding: 0; border: 0; background: none; color: inherit; text-align: left;
  font-size: 16px; font-weight: 500; line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.search__date.is-empty { color: rgba(255,255,255,.72); font-weight: 400; }
.select { position: relative; display: block; }
.select select { appearance: none; -webkit-appearance: none; padding-right: 26px; cursor: pointer; }
.select option { color: var(--black); }
.select__ico { position: absolute; right: 0; top: 50%; width: 16px; height: 16px; transform: translateY(-50%); pointer-events: none; }
.stepper { display: flex; align-items: center; gap: 14px; }
.stepper button { width: 30px; height: 30px; display: grid; place-items: center; padding: 0; border: 1px solid rgba(255,255,255,.35); border-radius: 50%; background: none; color: inherit; }
.stepper button .ico { width: 14px; height: 14px; }
.stepper button:disabled { opacity: .3; cursor: default; }
.stepper output { min-width: 2ch; text-align: center; font-size: 16px; font-weight: 500; font-variant-numeric: tabular-nums; }
.search__submit { margin: 10px; min-height: auto; padding: 0 28px; }
@media (max-width: 1024px) {
  .search { grid-template-columns: 1fr 1fr; }
  .search__field { border-bottom: 1px solid rgba(255,255,255,.18); }
  .search__field--loc, .search__field--guests, .search__submit { grid-column: 1 / -1; }
  .search__field--loc, .search__field--guests { border-right: 0; }
  .search__field--guests { flex-direction: row; align-items: center; justify-content: space-between; }
  .search__field--date + .search__field--date { border-right: 0; }
  .search__submit { min-height: 52px; }
}

/* --------------------------------------------------------------- kalendarz (21st.dev Booking Calendar) */
.cal {
  position: absolute; z-index: 150; width: min(700px, calc(100vw - 24px)); padding: clamp(16px, 2vw, 24px);
  background: var(--white); color: var(--black); border: 1px solid var(--line); box-shadow: 0 24px 64px rgba(0,0,0,.28);
}
.cal__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.cal__title { font-size: 16px; font-weight: 600; }
.cal__hint { font-size: 14px; color: var(--graphite); }
.cal__nav { display: flex; gap: 6px; }
.cal__nav button { width: 38px; height: 38px; display: grid; place-items: center; padding: 0; border: 1px solid var(--line); border-radius: 50%; background: none; }
.cal__nav button:disabled { opacity: .3; cursor: default; }
.cal__months { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.cal__mname { margin-bottom: 8px; font-size: 15px; font-weight: 600; text-align: center; text-transform: capitalize; }
.cal__dow, .cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); }
.cal__dow span { padding: 4px 0; font-size: 12px; color: var(--graphite); text-align: center; }
.cal__day { position: relative; height: 42px; padding: 0; border: 0; background: none; color: var(--black); font-size: 15px; font-variant-numeric: tabular-nums; }
.cal__day:hover:not(:disabled) { box-shadow: inset 0 0 0 1px var(--black); }
.cal__day:disabled { color: #c2c2c2; cursor: default; }
.cal__day.is-range, .cal__day.is-preview { background: var(--linen); }
.cal__day.is-start, .cal__day.is-end { background: var(--black); color: var(--white); }
.cal__day.is-today::after { content: ""; position: absolute; left: 50%; bottom: 6px; width: 4px; height: 4px; border-radius: 50%; background: var(--brass); transform: translateX(-50%); }
.cal__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line); }
.cal__sum { display: flex; flex-wrap: wrap; gap: 8px 24px; font-size: 13px; color: var(--graphite); }
.cal__sum b { display: block; color: var(--black); font-size: 15px; font-weight: 600; }
.cal__actions { display: flex; align-items: center; gap: 18px; }
@media (max-width: 720px) {
  .cal { position: fixed; left: 0 !important; right: 0; bottom: 0; top: auto !important; width: 100%; max-height: 92vh; overflow: auto; border: 0; box-shadow: 0 -12px 40px rgba(0,0,0,.35); }
  .cal__months { grid-template-columns: 1fr; }
  .cal__month + .cal__month { display: none; }
}

/* --------------------------------------------------------------- standard (pasek korzyści) */
.std { padding: clamp(40px, 5vw, 64px) 0; border-bottom: 1px solid var(--line); }
.std__list { list-style: none; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 28px; }
.std__ico { width: 30px; height: 30px; }
.std__t { margin: 16px 0 6px; font-size: 16px; font-weight: 600; line-height: 1.3; }
.std__d { font-size: 14px; line-height: 1.5; color: var(--graphite); }
.std--page { padding: var(--sec) 0; border: 0; }
@media (max-width: 1100px) { .std__list { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px 28px; } }
@media (max-width: 600px) { .std__list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 20px; } }

/* --------------------------------------------------------------- o White Glove (ciemne zdjęcie) */
.intro { position: relative; padding: var(--sec) 0; background: var(--black); color: var(--white); overflow: hidden; isolation: isolate; }
.intro__bg { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; opacity: .5; }
.intro::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(0,0,0,.86) 0%, rgba(0,0,0,.55) 55%, rgba(0,0,0,.2) 100%); }
.intro__in { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; }
.intro .title { grid-column: 1 / -1; margin-bottom: clamp(28px, 4vw, 48px); }
.intro__text { grid-column: 1 / span 8; font-size: clamp(21px, 2.1vw, 30px); line-height: 1.42; font-weight: 300; }
.intro__text2 { grid-column: 1 / span 6; margin-top: 24px; color: rgba(255,255,255,.8); }
.intro__soon { grid-column: 1 / span 6; margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--line-inv); color: var(--brass); }
.intro__links { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 16px 32px; margin-top: 36px; }
@media (max-width: 900px) { .intro__text, .intro__text2, .intro__soon { grid-column: 1 / -1; } }

/* --------------------------------------------------------------- zakładki */
.tabs { display: flex; gap: clamp(20px, 3vw, 44px); border-bottom: 1px solid var(--line); overflow-x: auto; scrollbar-width: none; }
.tabs::-webkit-scrollbar { display: none; }
.tab {
  flex: none; display: inline-flex; align-items: baseline; gap: 8px; margin-bottom: -1px; padding: 14px 0;
  border: 0; border-bottom: 1px solid transparent; background: none; color: var(--graphite);
  font-size: 17px; font-weight: 500; transition: color .3s, border-color .3s;
}
.tab:hover { color: var(--black); }
.tab[aria-selected="true"] { color: var(--black); border-bottom-color: var(--black); }
.tab__n { font-size: 13px; color: var(--graphite); font-variant-numeric: tabular-nums; }
.tab__soon { font-size: 12px; color: var(--brass-ink); }
.tabs--pills { gap: 8px; flex-wrap: wrap; border-bottom: 0; overflow: visible; }
.tab--pill { margin: 0; padding: 11px 18px; border: 1px solid var(--line); color: var(--black); font-size: 15px; }
.tab--pill:hover { border-color: var(--black); }
.tab--pill[aria-selected="true"] { background: var(--black); border-color: var(--black); color: var(--white); }
@keyframes fadeUp { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
.is-in .panel__media, .is-in .idea__media { animation: fadeUp .8s var(--ease) both; }
.is-in .panel__text, .is-in .idea__text { animation: fadeUp .8s .08s var(--ease) both; }

/* --------------------------------------------------------------- lokalizacje */
.places { padding: var(--sec) 0; }
.panel { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(28px, 5vw, 88px); align-items: start; padding-top: clamp(32px, 4vw, 56px); }
.panel__h { margin-bottom: 16px; font-size: clamp(26px, 2.6vw, 36px); font-weight: 500; line-height: 1.15; }
.panel__lead { margin-bottom: 24px; font-size: 18px; }
.panel__text > p:not(.panel__lead) { margin-bottom: 28px; color: var(--graphite); }
.panel__list { list-style: none; margin-bottom: 32px; border-top: 1px solid var(--line); }
.panel__list li { padding: 14px 0; border-bottom: 1px solid var(--line); font-size: 15px; color: var(--graphite); }
.panel__list strong { display: block; margin-bottom: 2px; color: var(--black); font-weight: 600; }
.panel__media { display: grid; grid-template-columns: 3fr 2fr; grid-template-rows: 1fr 1fr; gap: 14px; aspect-ratio: 6 / 5; }
.panel__img { width: 100%; height: 100%; min-height: 0; object-fit: cover; }
.panel__img--a { grid-row: 1 / -1; }
.panel__media--soon { display: grid; grid-template-columns: 1fr; grid-template-rows: 1fr; place-items: center; aspect-ratio: 16 / 10; background: var(--black); color: var(--white); }
.panel__soon { font-size: clamp(44px, 7vw, 110px); }
@media (max-width: 900px) { .panel { grid-template-columns: 1fr; } .panel__media { order: -1; } }

/* --------------------------------------------------------------- kolekcja (21st.dev Slideshow) */
.coll { padding: var(--sec) 0; background: var(--black); color: var(--white); }
.coll__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(32px, 5vw, 96px); align-items: start; }
.coll__list { list-style: none; border-top: 1px solid var(--line-inv); }
.coll__item { border-bottom: 1px solid var(--line-inv); }
.coll__link { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; gap: 16px; padding: clamp(14px, 1.5vw, 22px) 0; text-decoration: none; }
.coll__thumb { display: none; }
.coll__name { min-width: 0; font-weight: 250; font-stretch: 125%; text-transform: uppercase; font-size: clamp(22px, 2.9vw, 44px); line-height: 1.05; letter-spacing: .005em; }
.coll__meta { font-size: 14px; color: var(--ash); white-space: nowrap; }
.st { position: relative; display: inline-block; max-width: 100%; overflow: hidden; vertical-align: top; white-space: nowrap; padding: .16em 0 .1em; margin: -.16em 0 -.1em; }
.st__a, .st__b { display: inline-block; }
.st__b { position: absolute; left: 0; top: .16em; }
.st .ch { display: inline-block; transition: transform .55s var(--ease), opacity .55s var(--ease); transition-delay: calc(var(--i) * 16ms); }
.st__a .ch { opacity: .5; }
.st__b .ch { transform: translateY(130%); }
.coll__item.is-active .st__a .ch { transform: translateY(-130%); }
.coll__item.is-active .st__b .ch { transform: translateY(0); }
.coll__item.is-active .coll__meta { color: var(--white); }
.coll__aside { position: sticky; top: calc(var(--hdr) + 32px); }
.coll__stage { position: relative; aspect-ratio: 3 / 2; overflow: hidden; background: #111; }
.coll__img { position: absolute; inset: 0; z-index: 1; clip-path: polygon(0 0, 100% 0, 100% 0, 0 0); transition: clip-path .9s cubic-bezier(.33, 1, .68, 1); }
.coll__img img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.08); transition: transform 1.4s var(--ease); }
.coll__img.is-active { z-index: 3; clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); }
.coll__img.is-active img { transform: scale(1); }
.coll__img.was-active { z-index: 2; clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); }
.coll__cap { display: grid; gap: 4px; padding-top: 18px; }
.coll__cap-name { font-size: 20px; font-weight: 500; }
.coll__cap-place { font-size: 15px; color: var(--ash); }
.coll__cap .facts { margin-top: 8px; }
.coll__all { margin-top: clamp(40px, 5vw, 64px); }
@media (max-width: 900px) {
  .coll__grid { grid-template-columns: 1fr; }
  .coll__aside { display: none; }
  .coll__link { padding: 18px 0 20px; }
  .coll__thumb { display: block; grid-column: 1 / -1; aspect-ratio: 3 / 2; overflow: hidden; margin-bottom: 14px; }
  .coll__thumb img { width: 100%; height: 100%; object-fit: cover; }
  .st { white-space: normal; }
  .st__a .ch { opacity: 1; }
  .st__b { display: none; }
  .coll__item.is-active .st__a .ch { transform: none; }
}

/* --------------------------------------------------------------- dla kogo */
.aud { padding: var(--sec) 0; }
.aud__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(28px, 3vw, 44px) clamp(16px, 2vw, 28px); }
.tile { display: block; text-decoration: none; }
.tile__img { display: block; aspect-ratio: 5 / 4; overflow: hidden; background: var(--linen); }
.tile__img img { width: 100%; height: 100%; object-fit: cover; }
.tile__t { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-top: 14px; padding-bottom: 12px; border-bottom: 1px solid var(--line); font-size: clamp(18px, 1.5vw, 21px); font-weight: 500; }
.tile__t > span:first-child { background: linear-gradient(var(--brass), var(--brass)) 0 100% / 0 1px no-repeat; transition: background-size .45s var(--ease); }
.tile:hover .tile__t > span:first-child, .tile:focus-visible .tile__t > span:first-child { background-size: 100% 1px; }
.tile__n { font-size: 14px; font-weight: 400; color: var(--graphite); white-space: nowrap; }
@media (max-width: 700px) { .aud__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .tile__t { flex-direction: column; gap: 2px; } }

/* --------------------------------------------------------------- willa (21st.dev Scroll Reveal Image) */
.villa { padding: 0 0 var(--sec); }
.villa__stage { position: relative; height: clamp(420px, 80vh, 880px); overflow: hidden; background: var(--linen); }
.villa__inner { position: absolute; inset: 0; transform-origin: 50% 50%; }
.villa__img { width: 100%; height: 100%; object-fit: cover; }
.villa__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(28px, 5vw, 88px); align-items: end; margin-top: clamp(40px, 5vw, 72px); }
.villa__lead { max-width: 52ch; margin: 24px 0 32px; font-size: clamp(18px, 1.5vw, 21px); }
.villa__facts { list-style: none; display: flex; gap: clamp(24px, 4vw, 56px); margin-bottom: 36px; padding-top: 20px; border-top: 1px solid var(--line); }
.villa__facts li { display: flex; flex-direction: column; color: var(--graphite); font-size: 15px; }
.villa__num { color: var(--black); font-weight: 250; font-stretch: 125%; font-size: clamp(34px, 3.6vw, 52px); line-height: 1.05; }
.villa__thumbs { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.villa__thumb { width: 100%; height: auto; aspect-ratio: 3 / 4; object-fit: cover; }
@media (max-width: 900px) { .villa__grid { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------- pomysły na pobyt */
.ideas { padding: var(--sec) 0; background: var(--linen); }
.idea { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(28px, 5vw, 88px); align-items: center; padding-top: clamp(28px, 3.5vw, 48px); }
.idea__media { aspect-ratio: 3 / 2; overflow: hidden; }
.idea__img { width: 100%; height: 100%; object-fit: cover; }
.idea__h { margin-bottom: 16px; font-size: clamp(26px, 2.6vw, 36px); font-weight: 500; line-height: 1.15; }
.idea__text p { max-width: 44ch; margin-bottom: 28px; font-size: 18px; }
@media (max-width: 900px) { .idea { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------- oceny */
.rating { padding: clamp(72px, 9vw, 128px) 0; }
.rating__in { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 24px clamp(28px, 5vw, 88px); align-items: end; }
.rating .title { grid-column: 1 / -1; margin-bottom: 16px; }
.rating__score { display: flex; align-items: baseline; gap: 14px; font-weight: 200; font-stretch: 125%; line-height: .8; }
.rating__num { font-size: clamp(110px, 15vw, 230px); }
.rating__scale { font-size: clamp(24px, 2.4vw, 36px); color: var(--graphite); }
.rating__text { max-width: 48ch; font-size: 18px; }
.rating__src { margin-bottom: 10px; font-weight: 600; }
@media (max-width: 800px) { .rating__in { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------- dla właścicieli (skrót na głównej) */
.own { display: grid; grid-template-columns: 1fr 1fr; background: var(--black); color: var(--white); }
.own__media { position: relative; min-height: 100%; }
.own__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.own__text { max-width: 720px; padding: var(--sec) var(--gut); }
.own .title { font-size: clamp(28px, 3.3vw, 52px); }
.own__lead { margin: 28px 0 32px; font-size: clamp(18px, 1.5vw, 21px); color: rgba(255,255,255,.86); }
.own__list { list-style: none; margin-bottom: 40px; border-top: 1px solid var(--line-inv); }
.own__list li { display: flex; align-items: flex-start; gap: 14px; padding: 15px 0; border-bottom: 1px solid var(--line-inv); }
.own__list .ico { margin-top: 3px; color: var(--brass); }
.own__cta { display: flex; flex-wrap: wrap; align-items: center; gap: 20px 32px; }
@media (max-width: 900px) { .own { grid-template-columns: 1fr; } .own__media { aspect-ratio: 3 / 2; } }

/* --------------------------------------------------------------- Provincja */
.prov { padding: var(--sec) 0; }
.prov__in { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(28px, 5vw, 88px); align-items: center; }
.prov__media { aspect-ratio: 4 / 3; overflow: hidden; }
.prov__img { width: 100%; height: 100%; object-fit: cover; }
.prov__h { margin-bottom: 18px; font-size: clamp(26px, 2.6vw, 36px); font-weight: 500; line-height: 1.15; }
.prov__text p { max-width: 52ch; margin-bottom: 24px; }
@media (max-width: 900px) { .prov__in { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------- strona hotelu Provincja */
.hotel-intro { padding: var(--sec) 0 0; }
.hotel-intro__in { display: grid; grid-template-columns: minmax(0, 7fr) minmax(240px, 4fr); gap: clamp(32px, 6vw, 112px); align-items: start; }
.hotel-facts { border-top: 1px solid var(--line); }
.hotel-facts__i { display: flex; flex-direction: column-reverse; padding: 16px 0 18px; border-bottom: 1px solid var(--line); }
.hotel-facts dt { margin-top: 4px; font-size: 14px; color: var(--graphite); }
.hotel-facts dd { margin: 0; font-size: clamp(30px, 3vw, 44px); font-weight: 250; font-stretch: 125%; line-height: 1.1; }
@media (max-width: 900px) {
  .hotel-intro__in { grid-template-columns: 1fr; }
  .hotel-facts { display: grid; grid-template-columns: 1fr 1fr; column-gap: 24px; }
}
.rooms { padding: var(--sec) 0; }
.rooms__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(48px, 4vw, 56px) clamp(16px, 2vw, 28px); }
.room { display: flex; flex-direction: column; min-width: 0; }
.room__img { aspect-ratio: 4 / 5; overflow: hidden; margin-bottom: 22px; background: var(--linen); }
.room__img img { width: 100%; height: 100%; object-fit: cover; }
.room__name { font-size: clamp(22px, 1.9vw, 26px); font-weight: 500; line-height: 1.2; }
.room .facts { margin-top: 10px; }
.room__beds { margin-top: 16px; font-weight: 500; }
.room__desc { margin: 8px 0 20px; color: var(--graphite); }
.amen.amen--room { grid-template-columns: 1fr; gap: 8px; margin-bottom: 24px; font-size: 15px; }
.amen.amen--room .ico { width: 16px; height: 16px; margin-top: 3px; }
.room__cta { align-self: flex-start; margin-top: auto; }
@media (max-width: 1200px) { .rooms__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .rooms__grid { grid-template-columns: 1fr; } .room__img { aspect-ratio: 4 / 3; } }
.wine { padding: var(--sec) 0; background: var(--black); color: var(--white); }
.wine__in { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(28px, 5vw, 88px); align-items: center; }
.wine__media { aspect-ratio: 4 / 5; overflow: hidden; }
.wine__img { width: 100%; height: 100%; object-fit: cover; }
.wine__text .title { margin-bottom: clamp(24px, 3vw, 36px); }
.wine__text p { max-width: 56ch; margin-bottom: 18px; color: rgba(255, 255, 255, .8); }
.wine__text .tlink { display: inline-block; margin-top: 12px; }
@media (max-width: 900px) { .wine__in { grid-template-columns: 1fr; } .wine__media { aspect-ratio: 3 / 2; } }
.book__f--room { border: 1px solid var(--line); }
.book__f--room .select select { width: 100%; padding: 2px 26px 2px 0; border: 0; background: transparent; color: var(--black); font: inherit; font-size: 16px; font-weight: 500; }
.book__f--room .select__ico { right: 0; }

/* --------------------------------------------------------------- tekst SEO */
.seo { padding: clamp(56px, 7vw, 96px) 0; background: var(--linen); }
.seo__h { margin-bottom: 16px; font-size: clamp(20px, 1.8vw, 24px); font-weight: 600; }
.seo p { max-width: 78ch; margin-bottom: 14px; color: var(--graphite); font-size: 16px; }
.seo__more summary { display: inline-flex; align-items: center; gap: 8px; margin: 6px 0 14px; font-weight: 600; cursor: pointer; list-style: none; }
.seo__more summary::-webkit-details-marker { display: none; }
.seo__more .less, .seo__more[open] .more { display: none; }
.seo__more[open] .less { display: inline; }
.seo__more .ico { width: 18px; height: 18px; transition: transform .3s; }
.seo__more[open] .ico { transform: rotate(180deg); }

/* --------------------------------------------------------------- stopka */
.ftr { padding: clamp(88px, 11vw, 160px) 0 28px; background: var(--black); color: var(--white); }
.ftr__haslo { max-width: 15ch; margin-bottom: clamp(56px, 7vw, 104px); font-size: clamp(36px, 6.2vw, 100px); }
.ftr__cols { display: grid; grid-template-columns: 1.2fr repeat(3, minmax(0, 1fr)); gap: 32px; padding-top: 40px; border-top: 1px solid var(--line-inv); }
.ftr__h { margin-bottom: 14px; font-size: 13px; font-weight: 600; letter-spacing: .02em; color: var(--ash); }
.ftr ul { list-style: none; display: grid; gap: 10px; font-size: 15px; }
.ftr a { text-decoration: none; }
.ftr a:hover { text-decoration: underline; text-decoration-color: var(--brass); }
.ftr li a { display: inline-flex; align-items: center; gap: 8px; }
.ftr li .ico { width: 18px; height: 18px; }
.ftr__soon { font-size: 12px; color: var(--brass); }
.ftr__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; margin-top: clamp(56px, 7vw, 96px); padding-top: 20px; padding-right: 84px; border-top: 1px solid var(--line-inv); font-size: 13px; color: var(--ash); }
@media (max-width: 900px) { .ftr__cols { grid-template-columns: 1fr 1fr; } .ftr__brand { grid-column: 1 / -1; } }
@media (max-width: 520px) { .ftr__cols { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------- pływający kontakt */
.fab { position: fixed; right: clamp(14px, 2vw, 24px); bottom: clamp(14px, 2vw, 24px); z-index: 55; }
.fab__btn {
  width: 58px; height: 58px; display: grid; place-items: center; padding: 0; border: 1px solid rgba(255,255,255,.3); border-radius: 50%;
  background: var(--black); color: var(--white); box-shadow: 0 8px 24px rgba(0,0,0,.22); transition: transform .3s var(--ease);
}
.fab__btn:hover { transform: translateY(-2px); }
.fab__icon { width: 22px; height: auto; }
.fab__list { position: absolute; right: 0; bottom: 70px; min-width: 264px; list-style: none; background: var(--white); color: var(--black); border: 1px solid var(--line); box-shadow: 0 18px 48px rgba(0,0,0,.2); }
.fab__list a { display: flex; align-items: center; gap: 14px; padding: 14px 18px; border-bottom: 1px solid var(--line); text-decoration: none; }
.fab__list li:last-child a { border-bottom: 0; }
.fab__list a:hover { background: var(--linen); }
.fab__list span { display: flex; flex-direction: column; font-size: 15px; font-weight: 600; }
.fab__list small { font-size: 13px; font-weight: 400; color: var(--graphite); }

/* --------------------------------------------------------------- menu (21st.dev Immersive Full Screen Navigation) */
.menu {
  position: fixed; inset: 0; z-index: 100; display: flex; flex-direction: column; overflow-y: auto;
  background: var(--black); color: var(--white); clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
}
.menu__top { flex: none; height: var(--hdr); display: flex; align-items: center; justify-content: space-between; }
.menu__close { display: inline-flex; align-items: center; gap: 12px; padding: 8px 0; border: 0; background: none; font-size: 15px; }
.menu__body { flex: 1; display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: clamp(28px, 5vw, 96px); align-items: center; padding-block: clamp(28px, 5vh, 64px); }
.menu__links { list-style: none; }
.menu__link { display: inline-block; max-width: 100%; padding: .04em 0; font-weight: 250; font-stretch: 125%; text-transform: uppercase; font-size: clamp(26px, 4.4vw, 72px); line-height: 1.08; text-decoration: none; }
.roll { display: inline-block; overflow: hidden; vertical-align: top; white-space: nowrap; padding-top: .14em; margin-top: -.14em; }
.roll .ch { display: inline-block; text-shadow: 0 1.3em currentColor; transition: transform .55s cubic-bezier(.625, .05, 0, 1); transition-delay: calc(var(--i) * 14ms); }
.menu__link:hover .roll .ch, .menu__link:focus-visible .roll .ch { transform: translateY(-1.3em); }
.menu__lead { max-width: 30ch; margin-bottom: 24px; color: var(--ash); }
.menu__cities { list-style: none; margin-bottom: 28px; border-top: 1px solid var(--line-inv); }
.menu__cities a { display: flex; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--line-inv); text-decoration: none; font-size: 17px; }
.menu__cities a:hover { color: var(--brass); }
.menu__n { font-size: 14px; color: var(--ash); }
.menu__imgs { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.menu__img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.menu__foot { flex: none; display: flex; flex-wrap: wrap; gap: 12px 32px; padding-block: 24px; border-top: 1px solid var(--line-inv); font-size: 15px; }
.menu__foot a { color: var(--ash); text-decoration: none; }
.menu__foot a:hover { color: var(--white); }
@media (max-width: 900px) { .menu__body { grid-template-columns: 1fr; align-items: start; } .menu__imgs { display: none; } }
@media (max-width: 600px) { .menu__link { font-size: 7.4vw; font-stretch: 112%; } }

/* --------------------------------------------------------------- nagłówki podstron */
.page-hero { position: relative; padding: calc(var(--hdr) + clamp(56px, 9vw, 140px)) 0 clamp(48px, 6vw, 88px); background: var(--black); color: var(--white); overflow: hidden; isolation: isolate; }
.page-hero__h { max-width: 16ch; font-size: clamp(40px, 6.4vw, 100px); }
.page-hero__lead { max-width: 54ch; margin-top: 24px; font-size: clamp(17px, 1.4vw, 20px); color: rgba(255,255,255,.84); }
.page-hero__lead + .page-hero__lead { margin-top: 12px; }
.page-hero__cta { display: flex; flex-wrap: wrap; align-items: center; gap: 20px 32px; margin-top: 36px; }
.page-hero--photo { min-height: min(86vh, 860px); display: flex; align-items: flex-end; }
.page-hero--photo::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(0,0,0,.6), rgba(0,0,0,.25) 40%, rgba(0,0,0,.82)); }
.page-hero__bg { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; }
.page-hero__in { width: 100%; }
.page-hero--list .search { margin-top: clamp(32px, 4vw, 52px); }
.page-hero--soon { min-height: 86vh; display: flex; align-items: flex-end; }
.page-hero--404 { min-height: 86vh; display: flex; align-items: center; }
.soon-badge { display: inline-block; margin-bottom: 24px; padding: 6px 12px; border: 1px solid var(--brass); color: var(--brass); font-size: 13px; }

/* --------------------------------------------------------------- lista apartamentów */
.listing { padding: clamp(40px, 5vw, 64px) 0 var(--sec); }
.avail { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 8px 32px; margin-bottom: 32px; padding: 18px 22px; border: 1px solid var(--black); }
.avail__label { margin-right: 6px; color: var(--graphite); }
.avail__info { font-size: 14px; color: var(--graphite); }
@media (max-width: 900px) { .avail { grid-template-columns: 1fr; } }
.filters { display: grid; gap: 20px; margin-bottom: 36px; padding-bottom: 28px; border-bottom: 1px solid var(--line); }
.filters__group { min-width: 0; margin: 0; padding: 0; border: 0; }
.filters__group legend { margin-bottom: 10px; padding: 0; font-size: 13px; color: var(--graphite); }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { position: relative; flex: none; cursor: pointer; }
.chip input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.chip > span { display: inline-flex; align-items: center; gap: 8px; padding: 9px 14px; border: 1px solid var(--line); font-size: 14px; line-height: 1.2; transition: background-color .25s, color .25s, border-color .25s; }
.chip:hover > span { border-color: var(--black); }
.chip input:checked + span { background: var(--black); border-color: var(--black); color: var(--white); }
.chip input:focus-visible + span { outline: 2px solid var(--brass); outline-offset: 2px; }
.chip__n { font-size: 12px; color: var(--graphite); font-variant-numeric: tabular-nums; }
.chip input:checked + span .chip__n { color: var(--ash); }
.filters__row { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 28px; }
.mini-select { display: inline-flex; align-items: center; gap: 10px; font-size: 14px; color: var(--graphite); }
.select--light select { padding: 9px 34px 9px 12px; border: 1px solid var(--line); background: var(--white); color: var(--black); font-size: 14px; }
.select--light .select__ico { right: 10px; color: var(--black); }
.filters__count { margin-left: auto; font-size: 14px; color: var(--graphite); }
.filters__clear { font-size: 14px; }
@media (max-width: 700px) {
  .chips { flex-wrap: nowrap; overflow-x: auto; margin-inline: calc(var(--gut) * -1); padding: 2px var(--gut) 6px; scrollbar-width: none; }
  .chips::-webkit-scrollbar { display: none; }
  .filters__count { width: 100%; margin-left: 0; }
}
.cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(40px, 4vw, 56px) clamp(16px, 2vw, 28px); }
@media (max-width: 1100px) { .cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .cards { grid-template-columns: 1fr; } }
.card { display: flex; flex-direction: column; min-width: 0; }
.card__media { display: block; aspect-ratio: 3 / 2; overflow: hidden; background: var(--linen); }
.card__media img { width: 100%; height: 100%; object-fit: cover; }
.card__name { margin-top: 16px; font-size: 21px; font-weight: 500; line-height: 1.25; }
.card__name a { text-decoration: none; background: linear-gradient(var(--brass), var(--brass)) 0 100% / 0 1px no-repeat; transition: background-size .45s var(--ease); }
.card:hover .card__name a, .card__name a:focus-visible { background-size: 100% 1px; }
.card__place { margin-top: 4px; font-size: 15px; color: var(--graphite); }
.facts { list-style: none; display: flex; flex-wrap: wrap; gap: 6px 0; margin-top: 12px; font-size: 14px; }
.facts li { margin-right: 12px; padding-right: 12px; border-right: 1px solid var(--line); }
.facts li:last-child { margin-right: 0; padding-right: 0; border-right: 0; }
.facts--inv li { border-color: var(--line-inv); }
.card__book { align-self: flex-start; margin-top: 16px; font-size: 15px; font-weight: 600; text-decoration: underline; text-decoration-color: var(--brass); text-underline-offset: .35em; }
.card__book:hover { text-decoration-color: currentColor; }
.empty { padding: 48px 0; border-top: 1px solid var(--line); }
.empty p { max-width: 60ch; margin-bottom: 20px; font-size: 18px; }

/* --------------------------------------------------------------- apartament */
.apt-top { padding-top: calc(var(--hdr) + 16px); background: var(--black); color: var(--white); }
.gal { position: relative; display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); grid-template-rows: 1fr 1fr; gap: 6px; height: clamp(320px, 68vh, 720px); }
.gal--1 { grid-template-columns: 1fr; grid-template-rows: 1fr; }
.gal--2 { grid-template-rows: 1fr; }
.gal__item { position: relative; display: block; width: 100%; height: 100%; padding: 0; border: 0; background: #111; overflow: hidden; cursor: zoom-in; }
.gal__item img { width: 100%; height: 100%; object-fit: cover; transition: opacity .3s; }
.gal__item:hover img { opacity: .86; }
.gal__item--main { grid-row: 1 / -1; }
.gal__all { position: absolute; right: 16px; bottom: 16px; }
@media (max-width: 700px) {
  .gal { grid-template-columns: 1fr; grid-template-rows: auto; height: auto; }
  .gal__item--main { aspect-ratio: 4 / 3; }
  .gal__item:not(.gal__item--main) { display: none; }
}
.apt-head { padding-block: clamp(36px, 4.5vw, 64px); }
.crumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 22px; font-size: 14px; color: var(--ash); }
.crumbs li + li::before { content: "/"; margin-right: 8px; opacity: .6; }
.crumbs a { text-decoration: none; }
.crumbs a:hover { color: var(--white); }
.apt-head__h { max-width: 18ch; font-size: clamp(34px, 5.4vw, 86px); }
.apt-head__place { display: flex; align-items: center; gap: 10px; margin-top: 20px; color: rgba(255,255,255,.84); }
.apt-head__place .ico { color: var(--brass); }
.apt-facts { display: grid; grid-template-columns: repeat(4, auto); justify-content: start; gap: 16px clamp(28px, 4vw, 64px); margin-top: 36px; padding-top: 24px; border-top: 1px solid var(--line-inv); }
.apt-facts__i { display: flex; flex-direction: column-reverse; }
.apt-facts dt { margin-top: 4px; font-size: 13px; color: var(--ash); }
.apt-facts dd { margin: 0; font-size: clamp(20px, 1.7vw, 24px); font-weight: 400; }
.apt-head__lead { max-width: 44ch; margin-top: 16px; font-size: clamp(18px, 1.5vw, 21px); line-height: 1.5; color: rgba(255,255,255,.92); }
@media (max-width: 700px) { .apt-facts { grid-template-columns: 1fr 1fr; } }
.apt-body { display: grid; grid-template-columns: minmax(0, 7fr) minmax(300px, 4fr); gap: clamp(32px, 6vw, 112px); align-items: start; padding-block: clamp(56px, 7vw, 112px); }
.apt-h { margin: clamp(40px, 4.5vw, 64px) 0 18px; padding-top: 24px; border-top: 1px solid var(--line); font-size: clamp(22px, 2vw, 28px); font-weight: 500; }
.apt-main > .apt-h:first-child { margin-top: 0; }
.apt-desc p { max-width: 62ch; margin-bottom: 16px; font-size: 18px; }
.apt-intro p { max-width: 58ch; margin-bottom: 18px; font-size: clamp(19px, 1.5vw, 21px); line-height: 1.55; }
.apt-intro p:last-child { margin-bottom: 0; }
.apt-info { border-top: 1px solid var(--line); }
.apt-info__r { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); gap: 6px 24px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.apt-info dt { color: var(--graphite); }
.apt-info dd { margin: 0; font-weight: 500; }
@media (max-width: 480px) { .apt-info__r { grid-template-columns: 1fr; } }
.apt-close { margin-top: clamp(40px, 4.5vw, 64px); padding: clamp(24px, 3vw, 40px); background: var(--linen); }
.apt-close__cta { max-width: 34ch; font-size: clamp(20px, 1.8vw, 24px); line-height: 1.4; }
.apt-close__brand { margin: 10px 0 24px; font-weight: 600; color: var(--brass); }
.apt-prov { margin-top: 8px; }
.amen { list-style: none; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 28px; }
.amen li { display: flex; align-items: flex-start; gap: 12px; }
.amen .ico { width: 18px; height: 18px; margin-top: 4px; color: var(--brass); }
@media (max-width: 560px) { .amen { grid-template-columns: 1fr; } }
.apt-addr { margin-bottom: 14px; color: var(--graphite); }
.map { aspect-ratio: 16 / 9; margin-bottom: 14px; background: var(--linen); }
.map iframe { display: block; width: 100%; height: 100%; border: 0; }
.map--wide { aspect-ratio: auto; height: clamp(320px, 45vh, 520px); margin: 0; }
.apt-aside { position: sticky; top: calc(var(--hdr) + 24px); }
@media (max-width: 980px) { .apt-body { grid-template-columns: 1fr; } .apt-aside { position: static; order: -1; } }
.book { display: grid; gap: 18px; padding: clamp(22px, 2.4vw, 32px); border: 1px solid var(--black); background: var(--white); }
.book__h { font-size: 22px; font-weight: 500; }
.book__dates { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--line); transition: border-color .3s; }
.book__f { display: flex; flex-direction: column; gap: 4px; padding: 12px 14px; }
.book__dates .book__f + .book__f { border-left: 1px solid var(--line); }
.book__l { font-size: 12px; color: var(--graphite); }
.book__date { padding: 0; border: 0; background: none; color: var(--black); text-align: left; font-size: 16px; font-weight: 500; }
.book__date.is-empty { font-weight: 400; color: var(--graphite); }
.book__f--guests { flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 12px; border: 1px solid var(--line); }
.book__f--guests .book__l { width: 100%; }
.stepper--light button { border-color: rgba(0,0,0,.24); color: var(--black); }
.book__max { font-size: 13px; color: var(--graphite); }
.book__nights { font-size: 15px; font-weight: 600; }
.book__btn { width: 100%; }
.book__info, .book__tel { font-size: 14px; color: var(--graphite); }
.book__tel a { color: var(--black); font-weight: 600; text-decoration: none; }
.book.is-invalid .book__dates { border-color: var(--err); }
.similar { padding: 0 0 var(--sec); }
.similar--city { padding-top: var(--sec); }

/* --------------------------------------------------------------- oceny, zapytanie, drobne */
.card__rate { margin-top: 10px; font-size: 14px; font-weight: 600; }
.apt-head__rate { margin-top: 10px; font-size: 15px; font-weight: 600; color: var(--brass); }
.book--ask p { color: var(--graphite); font-size: 15px; }
.book--ask .book__big { font-weight: 250; font-stretch: 125%; font-size: clamp(24px, 2.2vw, 32px); color: var(--black); }
.book--ask .book__big a, .book--ask .book__mail a { color: var(--black); text-decoration: none; }
.book--ask .book__mail { font-weight: 600; overflow-wrap: anywhere; }
.panel__media--2 { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr; aspect-ratio: 4 / 3; }
.panel__media--2 .panel__img--a { grid-row: auto; }
.panel__cta { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 28px; }
.rating__in { align-items: start; }
.rating__main > p + p { margin-top: 10px; }
.rating__main .rating__score { margin-bottom: 24px; }
.rating__list { list-style: none; border-top: 1px solid var(--line); counter-reset: none; }
.rating__list a { display: flex; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--line); text-decoration: none; }
.rating__list a:hover span:first-child { text-decoration: underline; text-decoration-color: var(--brass); }
.rating__n { font-weight: 600; font-variant-numeric: tabular-nums; }
.rating__note { margin-top: 12px; font-size: 13px; color: var(--graphite); }

/* --------------------------------------------------------------- galeria (lightbox) */
.lb { position: fixed; inset: 0; z-index: 160; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; background: rgba(0,0,0,.96); color: var(--white); }
.lb__top { display: flex; align-items: center; justify-content: space-between; padding: 14px var(--gut); }
.lb__count { font-size: 14px; color: var(--ash); font-variant-numeric: tabular-nums; }
.lb__btn { width: 48px; height: 48px; display: grid; place-items: center; padding: 0; border: 1px solid rgba(255,255,255,.3); border-radius: 50%; background: rgba(0,0,0,.4); color: var(--white); }
.lb__stage { position: relative; display: grid; place-items: center; min-height: 0; padding: 0 clamp(12px, 7vw, 110px); }
.lb__img { max-width: 100%; max-height: calc(100vh - 170px); max-height: calc(100svh - 170px); object-fit: contain; user-select: none; -webkit-user-select: none; }
.lb__prev, .lb__next { position: absolute; top: 50%; transform: translateY(-50%); }
.lb__prev { left: clamp(8px, 2vw, 32px); }
.lb__next { right: clamp(8px, 2vw, 32px); }
.lb__cap { padding: 14px var(--gut) 22px; font-size: 14px; color: var(--ash); text-align: center; }
@media (max-width: 700px) { .lb__prev, .lb__next { top: auto; bottom: 8px; transform: none; } .lb__stage { padding-bottom: 64px; } }

/* --------------------------------------------------------------- lokalizacje: okolice i lista miast */
.areas { padding: var(--sec) 0 0; }
.areas__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 32px; padding-top: 32px; border-top: 1px solid var(--line); }
.area__h { margin-bottom: 8px; font-size: 19px; font-weight: 600; }
.area p { color: var(--graphite); font-size: 16px; }
.cities { padding: var(--sec) 0; }
.city-row { display: grid; grid-template-columns: minmax(0, 1fr) clamp(120px, 22vw, 320px); align-items: center; gap: 24px; padding: clamp(20px, 2.4vw, 32px) 0; border-bottom: 1px solid var(--line); text-decoration: none; }
.cities .wrap > .city-row:first-child { border-top: 1px solid var(--line); }
.city-row__text { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.city-row__name { font-size: clamp(34px, 6.4vw, 104px); transition: color .3s; }
.city-row:hover .city-row__name { color: var(--brass-ink); }
.city-row__meta { font-size: 15px; color: var(--graphite); }
.city-row__media { aspect-ratio: 3 / 2; overflow: hidden; background: var(--black); }
.city-row__img { width: 100%; height: 100%; object-fit: cover; }
.city-row--soon .city-row__name { color: #9a9a9a; }
.city-row--soon .city-row__media { background: transparent; }
@media (max-width: 700px) { .city-row { grid-template-columns: minmax(0, 1fr); } .city-row__media { display: none; } }

/* --------------------------------------------------------------- dla właścicieli */
.svcs { padding: var(--sec) 0; }
.svcs__grid { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--line); }
.svcs--partners { background: var(--linen); }
.svc { padding: 28px 32px 32px 0; border-bottom: 1px solid var(--line); }
.svc__h { margin-bottom: 10px; font-size: 20px; font-weight: 600; }
.svc p { color: var(--graphite); }
@media (max-width: 900px) { .svcs__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .svcs__grid { grid-template-columns: 1fr; } }
.steps { padding: var(--sec) 0; background: var(--black); color: var(--white); }
.steps__list { list-style: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 28px; }
.step { padding-top: 22px; border-top: 1px solid var(--line-inv); }
.step__n { display: block; margin-bottom: 22px; font-weight: 250; font-stretch: 125%; font-size: clamp(40px, 4vw, 60px); line-height: 1; color: var(--brass); }
.step__h { margin-bottom: 10px; font-size: 20px; font-weight: 600; }
.step p { color: rgba(255,255,255,.76); }
@media (max-width: 1000px) { .steps__list { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .steps__list { grid-template-columns: 1fr; } }
.team { padding: var(--sec) 0; }
.team--dark { background: var(--black); color: var(--white); }
.team__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(28px, 4vw, 64px); max-width: 1100px; }
.person__img { max-width: 420px; aspect-ratio: 4 / 5; margin-bottom: 20px; overflow: hidden; background: var(--linen); }
.person__img img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1); }
.person__name { font-size: 24px; font-weight: 500; }
.person__role { margin: 2px 0 12px; color: var(--brass-ink); font-weight: 500; }
.team--dark .person__role { color: var(--brass); }
.person p:last-child { max-width: 52ch; color: var(--graphite); }
.team--dark .person p:last-child { color: rgba(255,255,255,.76); }
@media (max-width: 700px) { .team__grid { grid-template-columns: 1fr; } }
.where { padding: 0 0 var(--sec); }
.where__text { max-width: 44ch; margin-top: 24px; font-size: clamp(20px, 1.9vw, 26px); font-weight: 300; line-height: 1.45; }
.faq { padding: var(--sec) 0; background: var(--linen); }
.faq__in { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: clamp(28px, 5vw, 88px); }
.faq__in .sec-head { display: block; }
.faq__list { border-top: 1px solid var(--line); }
.faq__i { border-bottom: 1px solid var(--line); }
.faq__i summary { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 20px 0; font-size: 18px; font-weight: 500; cursor: pointer; list-style: none; }
.faq__i summary::-webkit-details-marker { display: none; }
.faq__i .ico { transition: transform .35s var(--ease); }
.faq__i[open] .ico { transform: rotate(45deg); }
.faq__i p { max-width: 62ch; padding: 0 0 22px; color: var(--graphite); }
.faq__i p.faq__link { margin-top: -10px; color: var(--black); }
@media (max-width: 900px) { .faq__in { grid-template-columns: 1fr; } }
.form-sec { padding: var(--sec) 0; }
.form-sec__in { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: clamp(28px, 5vw, 88px); }
.form-sec__head > p { max-width: 40ch; margin-top: 20px; color: var(--graphite); }
.form-sec__tel { font-size: 18px; font-weight: 600; }
.form-sec__tel a { color: var(--black); text-decoration: none; }
@media (max-width: 900px) { .form-sec__in { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------- formularze */
.form { position: relative; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 24px; }
.field { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.field--full { grid-column: 1 / -1; }
.field > label { font-size: 14px; font-weight: 500; }
.field input:not([type="checkbox"]), .field textarea, .field .select select {
  width: 100%; padding: 13px 14px; border: 1px solid rgba(0,0,0,.28); border-radius: 0; background: var(--white);
  color: var(--black); font-size: 16px; appearance: none; -webkit-appearance: none;
}
.field .select select { padding-right: 40px; }
.field .select__ico { right: 12px; }
.field input:focus, .field textarea:focus, .field select:focus { outline: 2px solid var(--black); outline-offset: -1px; }
.field textarea { min-height: 120px; resize: vertical; }
.field.is-invalid input:not([type="checkbox"]), .field.is-invalid textarea { border-color: var(--err); }
.field__err { font-size: 13px; color: var(--err); }
.check { display: flex; align-items: flex-start; gap: 12px; font-size: 14px; line-height: 1.5; cursor: pointer; }
.check input { flex: none; width: 20px; height: 20px; margin: 1px 0 0; accent-color: var(--black); }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.form__req { grid-column: 1 / -1; font-size: 13px; color: var(--graphite); }
.form__foot { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 16px 24px; }
.form__status { font-size: 15px; }
.form__status:focus { outline: none; }
.form__status.is-ok { color: var(--ok); }
.form__status.is-err { color: var(--err); }
@media (max-width: 600px) { .form { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------- kontakt, o nas, polityka */
.contact { padding: var(--sec) 0; }
.contact__in { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(28px, 5vw, 96px); }
.contact__i { padding: 20px 0; border-bottom: 1px solid var(--line); }
.contact__i:first-child { border-top: 1px solid var(--line); }
.contact__l { margin-bottom: 6px; font-size: 13px; font-weight: 500; color: var(--graphite); }
.contact__big { font-weight: 250; font-stretch: 125%; font-size: clamp(28px, 3.2vw, 46px); line-height: 1.1; text-decoration: none; }
.contact__mid { font-size: clamp(18px, 1.6vw, 22px); text-decoration: none; overflow-wrap: anywhere; }
.contact__info > p:last-child { margin-top: 20px; }
.contact__formh { margin-bottom: 24px; font-size: clamp(24px, 2.2vw, 30px); font-weight: 500; }
@media (max-width: 900px) { .contact__in { grid-template-columns: 1fr; } }
.two { padding: var(--sec) 0; }
.two__grid { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--line); }
.two__i { padding: 32px 40px 8px 0; }
.two__i + .two__i { padding-left: 40px; border-left: 1px solid var(--line); }
.two__h { margin-bottom: 14px; font-size: clamp(22px, 2vw, 28px); font-weight: 500; }
.two__i p { max-width: 48ch; margin-bottom: 20px; color: var(--graphite); }
@media (max-width: 760px) { .two__grid { grid-template-columns: 1fr; } .two__i + .two__i { padding-left: 0; border-left: 0; border-top: 1px solid var(--line); } }
.prose { padding: var(--sec) 0; }
.prose__in { max-width: 780px; }
.prose h2 { margin: 36px 0 10px; font-size: 22px; font-weight: 600; }
.prose h2:first-child { margin-top: 0; }
.prose p { color: #333; }

/* --------------------------------------------------------------- małe ekrany: węższy krój nagłówków */
@media (max-width: 600px) {
  .display, .title, .coll__name, .villa__num, .step__n, .contact__big, .rating__score { font-stretch: 110%; }
  .hero__title { font-size: 9.6vw; }
  .page-hero__h, .ftr__haslo { font-size: 9.6vw; }
  .apt-head__h { font-size: 8.6vw; }
  .display, .title__text { overflow-wrap: break-word; -webkit-hyphens: auto; hyphens: auto; }
  .hero__count { display: none; }
  .hero__meta { padding-right: 70px; }
  .rating__num { font-size: 30vw; }
}

/* --------------------------------------------------------------- odsłanianie tekstu (21st.dev Text Reveal Mask) */
.js [data-reveal="load"] { visibility: hidden; animation: rv-safe 0s 2.5s forwards; }
@keyframes rv-safe { to { visibility: visible; } }
[data-reveal].rv-ready { visibility: visible; animation: none; }
.rv-line { display: block; overflow: hidden; padding: .14em 0 .08em; margin: -.14em 0 -.08em; }
.rv-in { display: block; will-change: transform; }

/* --------------------------------------------------------------- ograniczony ruch */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; transition-delay: 0s !important; scroll-behavior: auto !important; }
  .hero__img, .coll__img img { transform: none !important; }
  .js [data-reveal="load"] { visibility: visible; }
}
