/*
 * Główny arkusz — ładowany asynchronicznie (preload + onload swap).
 * Zawiera wszystko poniżej pierwszego ekranu. Style krytyczne (reset, zmienne,
 * nawigacja, hero) siedzą inline w <head> — patrz assets/css/critical.css.
 *
 * Przypomnienie o Imagify: <img> bywa opakowany w <picture>, więc nigdzie
 * nie używamy selektora dziecka bezpośredniego dla obrazów, a proporcje
 * trzymamy na .ei-ratio.
 */

/* =========================================================================
   Sekcje i nagłówki
   ====================================================================== */

.ei-section {
  position: relative;
  padding-block: var(--ei-section-y);
}
.ei-section--tint { background: var(--ei-tint); }
.ei-section--flush { padding-block: clamp(1.75rem, 3.5vw, 2.75rem); }
.ei-section--deep {
  background: var(--ei-deep);
  color: #fff;
}
.ei-section--deep .ei-head__lead { color: rgba(255, 255, 255, .78); }

.ei-eyebrow {
  margin-bottom: .85rem;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--ei-accent-ink);
}
/* Na ciemnym tle role się odwracają: tam czytelny jest mosiądz marki. */
.ei-section--deep .ei-eyebrow,
.ei-head--invert .ei-eyebrow,
.ei-hero .ei-eyebrow { color: var(--ei-accent); }

.ei-head { margin-bottom: clamp(2rem, 4vw, 3.25rem); max-width: 62ch; }
.ei-head--center { margin-inline: auto; text-align: center; }
.ei-head--invert { color: #fff; }

.ei-head__title {
  font-family: var(--ei-serif);
  font-size: clamp(1.95rem, 4vw, 3rem);
  line-height: 1.1;
  letter-spacing: -.018em;
  text-wrap: balance;
}
.ei-head__title .accent { color: var(--ei-accent-ink); }
.ei-head__lead {
  margin-top: 1rem;
  font-size: clamp(1rem, 1.4vw, 1.1rem);
  color: var(--ei-muted);
  text-wrap: pretty;
}

.ei-note-text {
  margin-top: 2rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--ei-line-soft);
  font-size: .8125rem;
  line-height: 1.6;
  color: var(--ei-muted);
}

.ei-empty { color: var(--ei-muted); }

.ei-link {
  display: inline-flex;
  align-items: center;
  gap: .4em;
  font-weight: 600;
  font-size: .9375rem;
  color: var(--ei-accent-ink);
}
.ei-link::after {
  content: '→';
  transition: transform .25s var(--ei-ease);
}

/* Treść redakcyjna */
.ei-prose { max-width: 68ch; }
.ei-prose p { margin-bottom: 1.1em; color: var(--ei-muted); text-wrap: pretty; }
.ei-prose p:last-child { margin-bottom: 0; }
.ei-prose h2 { font-family: var(--ei-serif); font-size: 1.8rem; margin: 2em 0 .6em; }
.ei-prose h3 { font-size: 1.2rem; font-weight: 700; margin: 1.8em 0 .5em; }
.ei-prose ul { margin: 0 0 1.1em; padding-left: 1.3em; list-style: disc; }
.ei-prose li { margin-bottom: .4em; color: var(--ei-muted); }
.ei-prose a { color: var(--ei-accent-ink); text-decoration: underline; text-underline-offset: 3px; }
.ei-prose strong { color: var(--ei-ink); }

/* =========================================================================
   Metryczka inwestycji
   ====================================================================== */

.ei-facts { border-bottom: 1px solid var(--ei-line-soft); }
.ei-facts__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr));
  gap: 1.5rem 2rem;
}
.ei-facts__item { display: flex; gap: .85rem; align-items: flex-start; }
.ei-facts__icon {
  flex-shrink: 0;
  display: grid;
  place-items: center;
  width: 38px; height: 38px;
  border-radius: 50%;
  color: var(--ei-accent);
  background: color-mix(in srgb, var(--ei-accent) 10%, transparent);
}
.ei-facts__label {
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ei-muted);
}
.ei-facts__value { margin-top: .15rem; font-size: .975rem; font-weight: 600; line-height: 1.4; }

/* =========================================================================
   O inwestycji
   ====================================================================== */

.ei-about__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: center;
}
.ei-about__grid--solo { grid-template-columns: 1fr; max-width: 68ch; }
.ei-about__lead {
  margin-top: 1.25rem;
  font-size: clamp(1.06rem, 1.6vw, 1.2rem);
  line-height: 1.6;
  color: var(--ei-ink);
  text-wrap: pretty;
}
.ei-about__lead + .ei-prose { margin-top: 1.25rem; }
.ei-about__media { position: relative; }
.ei-about__media .ei-ratio { border-radius: var(--ei-radius-lg); box-shadow: var(--ei-shadow); }
/* Cienka linia akcentu wzdłuż zdjęcia — sygnał premium bez ozdobników. */
.ei-about__media::after {
  content: '';
  position: absolute;
  left: -14px; top: 24px; bottom: 24px;
  width: 2px;
  background: var(--ei-accent);
}
.ei-about__caption { margin-top: .75rem; font-size: .8125rem; color: var(--ei-muted); }

/* =========================================================================
   Atuty
   ====================================================================== */

.ei-highlights__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 255px), 1fr));
  gap: 1px;
  background: var(--ei-line-soft);
  border: 1px solid var(--ei-line-soft);
  border-radius: var(--ei-radius-lg);
  overflow: hidden;
}
.ei-highlight {
  padding: clamp(1.5rem, 3vw, 2.25rem);
  background: var(--ei-surface);
  transition: background .3s var(--ei-ease);
}
.ei-highlight:hover { background: color-mix(in srgb, var(--ei-accent) 4%, var(--ei-surface)); }
.ei-highlight__icon {
  display: grid;
  place-items: center;
  width: 48px; height: 48px;
  margin-bottom: 1.15rem;
  border-radius: 50%;
  color: var(--ei-accent);
  background: color-mix(in srgb, var(--ei-accent) 10%, transparent);
}
.ei-highlight__title { font-size: 1.0625rem; font-weight: 700; line-height: 1.35; letter-spacing: 0; }
.ei-highlight__text { margin-top: .5rem; font-size: .9375rem; color: var(--ei-muted); text-wrap: pretty; }

/* =========================================================================
   Sygnały zaufania
   ====================================================================== */

.ei-trust__stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 170px), 1fr));
  gap: 1px;
  margin-bottom: clamp(2rem, 4vw, 3rem);
  background: var(--ei-line-soft);
  border: 1px solid var(--ei-line-soft);
  border-radius: var(--ei-radius-lg);
  overflow: hidden;
}
.ei-trust__stat { padding: clamp(1.25rem, 3vw, 1.9rem) 1.25rem; background: var(--ei-surface); text-align: center; }
.ei-trust__value {
  font-family: var(--ei-serif);
  font-size: clamp(1.9rem, 3.4vw, 2.6rem);
  line-height: 1;
  color: var(--ei-ink);
}
.ei-trust__label {
  margin-bottom: .5rem;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ei-muted);
}

.ei-trust__quotes {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
  gap: clamp(1rem, 2vw, 1.5rem);
}
.ei-quote {
  display: flex;
  flex-direction: column;
  padding: clamp(1.35rem, 2.5vw, 1.85rem);
  border: 1px solid var(--ei-line);
  border-radius: var(--ei-radius-lg);
  background: var(--ei-surface);
}
/* Cudzysłów jako znak graficzny — tania oprawa, bez dokładania grafiki. */
.ei-quote::before {
  content: '”';
  font-family: var(--ei-serif);
  font-size: 3.5rem;
  line-height: .6;
  color: var(--ei-accent);
  margin-bottom: .5rem;
}
.ei-quote__text {
  flex: 1;
  margin: 0;
  font-size: .9375rem;
  line-height: 1.65;
  color: var(--ei-muted);
  text-wrap: pretty;
}
.ei-quote__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .5rem;
  margin-top: 1.1rem;
  padding-top: 1rem;
  border-top: 1px solid var(--ei-line-soft);
}
.ei-quote__author { font-size: .9375rem; font-weight: 700; }
.ei-quote__date { font-size: .8125rem; color: var(--ei-muted); }
.ei-trust__more { margin-top: 1.75rem; text-align: center; }

/* =========================================================================
   Etapy
   ====================================================================== */

.ei-stages__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
  gap: clamp(1.5rem, 3vw, 2.5rem);
}
.ei-stage {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--ei-line);
  border-radius: var(--ei-radius-lg);
  overflow: hidden;
  background: var(--ei-surface);
  transition: box-shadow .3s var(--ei-ease), transform .3s var(--ei-ease);
}
.ei-stage:hover { box-shadow: var(--ei-shadow-lg); transform: translateY(-3px); }
.ei-stage__media img { transition: transform .6s var(--ei-ease); }
.ei-stage:hover .ei-stage__media img { transform: scale(1.03); }
.ei-stage__body { display: flex; flex-direction: column; flex: 1; padding: clamp(1.35rem, 2.5vw, 2rem); }
.ei-stage__head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.ei-stage__title { font-family: var(--ei-serif); font-size: 1.65rem; }
.ei-stage__lead { margin-top: .75rem; font-size: .9375rem; color: var(--ei-muted); text-wrap: pretty; }

.ei-stage__params {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: .9rem 1.25rem;
  margin: 1.5rem 0;
  padding-top: 1.35rem;
  border-top: 1px solid var(--ei-line-soft);
}
.ei-stage__params dt {
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: var(--ei-muted);
}
.ei-stage__params dd { margin-top: .2rem; font-size: .9375rem; font-weight: 600; }
.ei-stage__actions { margin-top: auto; }

/* =========================================================================
   Oferty i filtry
   ====================================================================== */

.ei-filters {
  display: grid;
  gap: 1.35rem;
  padding: clamp(1.25rem, 2.5vw, 1.75rem);
  margin-bottom: 2rem;
  border: 1px solid var(--ei-line);
  border-radius: var(--ei-radius-lg);
  background: var(--ei-surface);
}
.ei-filters__legend {
  margin-bottom: .6rem;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .11em;
  text-transform: uppercase;
  color: var(--ei-muted);
}
.ei-chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.ei-chip { position: relative; }
.ei-chip input {
  position: absolute;
  opacity: 0;
  width: 100%; height: 100%;
  margin: 0;
  cursor: pointer;
}
.ei-chip span {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: .45rem 1rem;
  font-size: .875rem;
  font-weight: 600;
  border: 1px solid var(--ei-line);
  border-radius: 100px;
  transition: background .2s var(--ei-ease), border-color .2s var(--ei-ease), color .2s var(--ei-ease);
}
.ei-chip:hover span { border-color: var(--ei-ink); }
.ei-chip input:checked + span { background: var(--ei-ink); border-color: var(--ei-ink); color: #fff; }
.ei-chip input:focus-visible + span { outline: 2px solid var(--ei-accent); outline-offset: 2px; }

.ei-filters__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1.25rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--ei-line-soft);
}
.ei-filters__count { font-size: .875rem; color: var(--ei-muted); }
.ei-filters__reset {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding-inline: .25rem;
  font-size: .875rem;
  font-weight: 600;
  color: var(--ei-muted);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.ei-filters__reset:hover { color: var(--ei-ink); }

.ei-switch { display: inline-flex; align-items: center; gap: .6rem; cursor: pointer; min-height: 44px; }
.ei-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.ei-switch__track {
  position: relative;
  width: 42px; height: 24px;
  border-radius: 100px;
  background: var(--ei-line);
  transition: background .25s var(--ei-ease);
}
.ei-switch__track::after {
  content: '';
  position: absolute;
  top: 3px; left: 3px;
  width: 18px; height: 18px;
  border-radius: 50%;
  background: #fff;
  transition: transform .25s var(--ei-ease);
}
.ei-switch input:checked + .ei-switch__track { background: var(--ei-accent); }
.ei-switch input:checked + .ei-switch__track::after { transform: translateX(18px); }
.ei-switch input:focus-visible + .ei-switch__track { outline: 2px solid var(--ei-accent); outline-offset: 2px; }
.ei-switch__label { font-size: .9375rem; font-weight: 600; }

.ei-select { display: inline-flex; align-items: center; gap: .55rem; }
.ei-select__label { font-size: .875rem; color: var(--ei-muted); }
.ei-select select {
  min-height: 44px;
  padding: .4rem 2rem .4rem .8rem;
  font-size: .875rem;
  font-weight: 600;
  border: 1px solid var(--ei-line);
  border-radius: var(--ei-radius);
  background: var(--ei-surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5l5-5' fill='none' stroke='%23888' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right .7rem center;
  appearance: none;
}

.ei-offers__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
  gap: clamp(1rem, 2vw, 1.5rem);
}
.ei-offer {
  display: flex;
  flex-direction: column;
  padding: clamp(1.25rem, 2.2vw, 1.6rem);
  border: 1px solid var(--ei-line);
  border-radius: var(--ei-radius-lg);
  background: var(--ei-surface);
  transition: border-color .25s var(--ei-ease), box-shadow .25s var(--ei-ease), opacity .25s var(--ei-ease);
}
.ei-offer:hover { border-color: color-mix(in srgb, var(--ei-accent) 50%, transparent); box-shadow: var(--ei-shadow); }
.ei-offer[hidden] { display: none; }
/* Przezroczystość całej karty ściągała tekst do 2,3:1. Wygaszamy więc obraz,
   a treść tylko przygaszamy kolorem, który nadal przechodzi próg. */
.ei-offer--sold .ei-offer__plan img { opacity: .5; filter: grayscale(1); }
.ei-offer--sold .ei-offer__title,
.ei-offer--sold .ei-offer__specs dd { color: var(--ei-muted); }

.ei-offer__head { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; }
.ei-offer__stage {
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ei-accent-ink);
}
.ei-offer__title { font-family: var(--ei-serif); font-size: 1.5rem; margin-top: .15rem; }

.ei-offer__plan {
  display: block;
  margin: 1.15rem 0;
  border: 1px solid var(--ei-line-soft);
  border-radius: var(--ei-radius);
  background: #fff;
}
.ei-offer__zoom, .ei-grid__zoom {
  position: absolute;
  right: .6rem; bottom: .6rem;
  display: grid;
  place-items: center;
  width: 34px; height: 34px;
  border-radius: 50%;
  color: var(--ei-ink);
  background: rgba(255, 255, 255, .92);
  box-shadow: var(--ei-shadow);
  opacity: 0;
  transform: translateY(4px);
  transition: opacity .25s var(--ei-ease), transform .25s var(--ei-ease);
}
.ei-offer__plan:hover .ei-offer__zoom,
.ei-grid__link:hover .ei-grid__zoom,
.ei-offer__plan:focus-visible .ei-offer__zoom,
.ei-grid__link:focus-visible .ei-grid__zoom { opacity: 1; transform: translateY(0); }

.ei-offer__specs {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: .8rem 1rem;
  margin: 1.15rem 0 0;
  padding-top: 1.1rem;
  border-top: 1px solid var(--ei-line-soft);
}
.ei-offer__specs dt {
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ei-muted);
}
.ei-offer__specs dd { margin-top: .15rem; font-size: .9375rem; font-weight: 600; }

.ei-offer__note {
  display: flex;
  align-items: center;
  gap: .4rem;
  margin-top: 1rem;
  font-size: .8125rem;
  font-weight: 600;
  color: var(--ei-accent-ink);
}

.ei-offer__foot { margin-top: auto; padding-top: 1.35rem; }
.ei-offer__price { display: flex; align-items: baseline; flex-wrap: wrap; gap: .6rem; }
.ei-offer__amount { font-family: var(--ei-serif); font-size: 1.6rem; line-height: 1.1; }
.ei-offer__unit { font-size: .8125rem; color: var(--ei-muted); }
.ei-offer__sold { font-size: 1.05rem; font-weight: 700; color: var(--ei-muted); }
.ei-offer__actions { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1.1rem; }

.ei-offers__empty {
  padding: clamp(2rem, 5vw, 3rem) 1.5rem;
  text-align: center;
  color: var(--ei-muted);
  border: 1px dashed var(--ei-line);
  border-radius: var(--ei-radius-lg);
}
.ei-offers__empty p { margin: 0 auto; max-width: 46ch; }
.ei-offers__empty p.ei-offers__empty-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .6rem;
  margin: 1.5rem auto 0;
  max-width: none;
}

/*
 * Statusy mają własne, ciemne tła, więc wracają do białego tekstu.
 * Bursztyn podciągnięty z #b4740c (3,86:1) do #9c6408 (4,95:1) — kolor
 * pozostaje bursztynowy, ale przechodzi próg dla drobnych wersalików.
 */
.ei-badge--available { background: #14713a; color: #fff; }
.ei-badge--reserved  { background: #9c6408; color: #fff; }
.ei-badge--sold      { background: #5f6062; color: #fff; }
.ei-badge--muted     { background: var(--ei-line); color: var(--ei-ink); }

/* =========================================================================
   Galeria i siatki zdjęć
   ====================================================================== */

.ei-tabs__bar {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
  margin-bottom: 1.75rem;
  border-bottom: 1px solid var(--ei-line);
}
.ei-tabs__btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  min-height: 46px;
  padding: .6rem 1.1rem;
  font-size: .9375rem;
  font-weight: 600;
  color: var(--ei-muted);
  transition: color .2s var(--ei-ease);
}
.ei-tabs__btn::after {
  content: '';
  position: absolute;
  left: 0; bottom: -1px;
  width: 100%; height: 2px;
  background: var(--ei-accent);
  transform: scaleX(0);
  transition: transform .3s var(--ei-ease);
}
.ei-tabs__btn:hover { color: var(--ei-ink); }
.ei-tabs__btn[aria-selected="true"] { color: var(--ei-ink); }
.ei-tabs__btn[aria-selected="true"]::after { transform: scaleX(1); }
.ei-tabs__count {
  font-size: .7rem;
  font-weight: 700;
  padding: .1rem .4rem;
  border-radius: 100px;
  background: var(--ei-line-soft);
  color: var(--ei-muted);
}

.ei-grid { display: grid; gap: clamp(.6rem, 1.4vw, 1rem); }
.ei-grid--photos { grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); }
.ei-grid--plans  { grid-template-columns: repeat(auto-fill, minmax(min(100%, 230px), 1fr)); }

.ei-grid__link {
  display: block;
  border-radius: var(--ei-radius);
  background: var(--ei-line-soft);
}
.ei-grid__link img { transition: transform .6s var(--ei-ease); }
.ei-grid__link:hover img { transform: scale(1.04); }
.ei-grid--plans .ei-grid__link { border: 1px solid var(--ei-line-soft); background: #fff; }
.ei-grid--plans .ei-grid__link:hover img { transform: none; }
.ei-grid__caption { margin-top: .5rem; font-size: .8125rem; color: var(--ei-muted); }

/* Pierwszy kafelek galerii zdjęć zajmuje dwa pola — łamie monotonię siatki. */
@media (min-width: 900px) {
  .ei-grid--photos .ei-grid__item:first-child { grid-column: span 2; }
  .ei-grid--photos .ei-grid__item:first-child .ei-ratio::before { padding-top: 56.25%; }
}

/* =========================================================================
   Wideo
   ====================================================================== */

.ei-video__grid {
  display: grid;
  gap: clamp(1.25rem, 3vw, 2rem);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr));
}
.ei-video__grid[data-count="1"] { max-width: 960px; margin-inline: auto; }
.ei-video__frame {
  border-radius: var(--ei-radius-lg);
  background: #0d0f12;
  cursor: pointer;
}
.ei-video__frame.is-empty { cursor: default; border: 1px dashed rgba(255, 255, 255, .28); }
.ei-video__frame img { transition: transform .7s var(--ei-ease), filter .4s var(--ei-ease); filter: brightness(.82); }
.ei-video__frame:hover img { transform: scale(1.03); filter: brightness(.95); }
.ei-video__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

.ei-video__play {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
}
.ei-video__play-icon {
  display: grid;
  place-items: center;
  width: 74px; height: 74px;
  padding-left: 5px;
  border-radius: 50%;
  color: var(--ei-ink);
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 10px 40px -8px rgba(0, 0, 0, .5);
  transition: transform .3s var(--ei-ease), background .3s var(--ei-ease);
}
.ei-video__play:hover .ei-video__play-icon { transform: scale(1.08); background: #fff; }
.ei-video__play-icon svg { fill: currentColor; stroke: none; }

.ei-video__placeholder {
  position: absolute;
  inset: 0;
  display: grid;
  place-content: center;
  gap: .5rem;
  padding: 2rem;
  text-align: center;
  font-weight: 700;
  color: rgba(255, 255, 255, .9);
}
.ei-video__placeholder span {
  max-width: 34ch;
  font-size: .8125rem;
  font-weight: 400;
  color: rgba(255, 255, 255, .6);
}
.ei-video__caption { margin-top: .85rem; display: grid; gap: .2rem; }
.ei-video__caption strong { font-size: 1rem; }
.ei-video__caption span { font-size: .875rem; color: rgba(255, 255, 255, .65); }

/* =========================================================================
   Standard wykończenia
   ====================================================================== */

.ei-standard__grid {
  border: 1px solid var(--ei-line);
  border-radius: var(--ei-radius-lg);
  overflow: hidden;
}
.ei-standard__group + .ei-standard__group { border-top: 1px solid var(--ei-line-soft); }
.ei-standard__summary {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1.15rem clamp(1rem, 2.2vw, 1.6rem);
  cursor: pointer;
  list-style: none;
  transition: background .2s var(--ei-ease);
}
.ei-standard__summary:hover { background: var(--ei-tint); }
.ei-standard__icon { display: grid; place-items: center; color: var(--ei-accent); flex-shrink: 0; }
.ei-standard__title { flex: 1; font-size: 1.05rem; font-weight: 700; letter-spacing: 0; }
.ei-standard__count {
  font-size: .75rem;
  font-weight: 700;
  padding: .12rem .5rem;
  border-radius: 100px;
  background: var(--ei-line-soft);
  color: var(--ei-muted);
}
.ei-standard__chevron { color: var(--ei-muted); transition: transform .3s var(--ei-ease); }
.ei-standard__group[open] .ei-standard__chevron { transform: rotate(90deg); }

.ei-standard__list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
  gap: .55rem 2rem;
  padding: 0 clamp(1rem, 2.2vw, 1.6rem) 1.6rem clamp(3.4rem, 5vw, 4rem);
}
.ei-standard__list li {
  position: relative;
  padding-left: 1.1rem;
  font-size: .9375rem;
  color: var(--ei-muted);
  text-wrap: pretty;
}
.ei-standard__list li::before {
  content: '';
  position: absolute;
  left: 0; top: .68em;
  width: 5px; height: 5px;
  border-radius: 50%;
  background: var(--ei-accent);
}

/* =========================================================================
   Lokalizacja
   ====================================================================== */

.ei-location__grid {
  display: grid;
  grid-template-columns: 1fr 1.05fr;
  gap: clamp(2rem, 4vw, 3.5rem);
  align-items: start;
}
.ei-location__address {
  display: flex;
  align-items: center;
  gap: .6rem;
  margin-bottom: 1.35rem;
  font-size: 1.05rem;
  font-weight: 700;
}
.ei-location__address svg { color: var(--ei-accent); flex-shrink: 0; }

.ei-poi { margin: 1.75rem 0; border-top: 1px solid var(--ei-line-soft); }
.ei-poi__item {
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: .8rem 0;
  border-bottom: 1px solid var(--ei-line-soft);
}
.ei-poi__icon { color: var(--ei-accent); flex-shrink: 0; display: grid; place-items: center; }
.ei-poi__name { flex: 1; font-size: .9375rem; }
.ei-poi__distance {
  font-size: .8125rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--ei-muted);
  white-space: nowrap;
}

.ei-location__map .ei-ratio {
  border-radius: var(--ei-radius-lg);
  box-shadow: var(--ei-shadow);
}
.ei-location__map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.ei-location__placeholder {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: var(--ei-line);
  background: var(--ei-tint);
}
.ei-location__load {
  position: absolute;
  inset: 0;
  display: grid;
  place-content: center;
  gap: .5rem;
  text-align: center;
  /* 35% krycia nie wystarczało nad jasnym podkładem mapy — napis schodził
     do 2,04:1. */
  background: rgba(16, 18, 22, .64);
  transition: background .3s var(--ei-ease);
}
.ei-location__load:hover { background: rgba(16, 18, 22, .74); }
.ei-location__load-inner {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .8rem 1.5rem;
  font-weight: 600;
  color: var(--ei-ink);
  background: #fff;
  border-radius: var(--ei-radius);
  box-shadow: var(--ei-shadow);
}
.ei-location__consent { font-size: .75rem; color: #fff; }

/* =========================================================================
   Postęp budowy
   ====================================================================== */

.ei-progress__headline {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
}
.ei-progress__date {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  font-size: .8125rem;
  font-weight: 600;
  color: var(--ei-muted);
}

.ei-timeline {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr));
  gap: 1.5rem;
  margin-top: clamp(2rem, 4vw, 3rem);
  padding-top: 2rem;
  border-top: 1px solid var(--ei-line-soft);
}
.ei-timeline__item { position: relative; padding-top: 1.5rem; }
.ei-timeline__item::before {
  content: '';
  position: absolute;
  top: 6px; left: 0; right: 0;
  height: 1px;
  background: var(--ei-line);
}
.ei-timeline__item.is-done::before { background: var(--ei-accent); }
.ei-timeline__dot {
  position: absolute;
  top: 0; left: 0;
  width: 13px; height: 13px;
  border-radius: 50%;
  border: 2px solid var(--ei-line);
  background: var(--ei-surface);
}
.ei-timeline__item.is-done .ei-timeline__dot { border-color: var(--ei-accent); background: var(--ei-accent); }
.ei-timeline__label { font-size: .9375rem; font-weight: 600; text-wrap: pretty; }
.ei-timeline__date { margin-top: .2rem; font-size: .8125rem; color: var(--ei-muted); }

/* =========================================================================
   Dokumenty
   ====================================================================== */

.ei-docs__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 330px), 1fr));
  gap: 1rem;
}
.ei-doc__link {
  display: flex;
  align-items: center;
  gap: 1rem;
  height: 100%;
  padding: 1.25rem 1.35rem;
  border: 1px solid var(--ei-line);
  border-radius: var(--ei-radius-lg);
  background: var(--ei-surface);
  transition: border-color .25s var(--ei-ease), box-shadow .25s var(--ei-ease), transform .25s var(--ei-ease);
}
.ei-doc__link:hover {
  border-color: color-mix(in srgb, var(--ei-accent) 55%, transparent);
  box-shadow: var(--ei-shadow);
  transform: translateY(-2px);
}
.ei-doc__icon {
  display: grid;
  place-items: center;
  width: 46px; height: 46px;
  flex-shrink: 0;
  border-radius: var(--ei-radius);
  color: var(--ei-accent);
  background: color-mix(in srgb, var(--ei-accent) 10%, transparent);
}
.ei-doc__body { flex: 1; display: grid; gap: .15rem; }
.ei-doc__title { font-size: .975rem; font-weight: 700; }
.ei-doc__desc { font-size: .8125rem; color: var(--ei-muted); }
.ei-doc__meta {
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ei-muted);
}
.ei-doc__arrow { color: var(--ei-muted); flex-shrink: 0; transition: transform .25s var(--ei-ease), color .25s var(--ei-ease); }
.ei-doc__link:hover .ei-doc__arrow { color: var(--ei-accent-ink); transform: translateY(2px); }

/* =========================================================================
   FAQ
   ====================================================================== */

.ei-faq__list { border-top: 1px solid var(--ei-line); }
.ei-faq__item { border-bottom: 1px solid var(--ei-line); }
.ei-faq__question {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding: 1.35rem 0;
  cursor: pointer;
  list-style: none;
}
.ei-faq__question h3 {
  font-size: clamp(1rem, 1.6vw, 1.125rem);
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0;
  text-wrap: pretty;
}
.ei-faq__question:hover h3 { color: var(--ei-accent-ink); }
.ei-faq__marker {
  flex-shrink: 0;
  display: grid;
  place-items: center;
  width: 32px; height: 32px;
  border: 1px solid var(--ei-line);
  border-radius: 50%;
  color: var(--ei-muted);
  transition: transform .3s var(--ei-ease), background .3s var(--ei-ease), color .3s var(--ei-ease), border-color .3s var(--ei-ease);
}
.ei-faq__item[open] .ei-faq__marker {
  transform: rotate(45deg);
  background: var(--ei-accent);
  border-color: var(--ei-accent);
  color: #fff;
}
.ei-faq__answer { padding-bottom: 1.6rem; max-width: 70ch; }

/* =========================================================================
   Kontakt
   ====================================================================== */

.ei-contact__grid {
  display: grid;
  grid-template-columns: 1fr 1.1fr;
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: start;
}
.ei-agent {
  display: flex;
  align-items: center;
  gap: 1.15rem;
  padding: 1.35rem;
  margin-bottom: 1.5rem;
  border: 1px solid rgba(255, 255, 255, .16);
  border-radius: var(--ei-radius-lg);
  background: rgba(255, 255, 255, .05);
}
.ei-agent__photo {
  width: 84px; height: 84px;
  flex-shrink: 0;
  border-radius: 50%;
  overflow: hidden;
  position: relative;
}
.ei-agent__photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ei-agent__name { font-size: 1.0625rem; font-weight: 700; }
.ei-agent__role { font-size: .8125rem; color: rgba(255, 255, 255, .62); }
.ei-agent__contacts { display: grid; gap: .35rem; margin-top: .7rem; }
.ei-agent__contacts a {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  font-size: .9375rem;
  font-weight: 600;
}
.ei-agent__contacts a:hover { color: var(--ei-accent-soft); }
.ei-agent__contacts svg { color: var(--ei-accent); flex-shrink: 0; }

.ei-contact__meta { display: grid; gap: .6rem; }
.ei-contact__meta li {
  display: flex;
  align-items: center;
  gap: .6rem;
  font-size: .9375rem;
  color: rgba(255, 255, 255, .72);
}
.ei-contact__meta svg { color: var(--ei-accent); flex-shrink: 0; }

.ei-contact__form {
  padding: clamp(1.5rem, 3vw, 2.5rem);
  border-radius: var(--ei-radius-lg);
  background: var(--ei-surface);
  color: var(--ei-ink);
  box-shadow: var(--ei-shadow-lg);
}

.ei-form { display: grid; gap: 1.1rem; }
.ei-form__row { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.1rem; }
.ei-form__trap { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.ei-field { display: grid; gap: .4rem; }
.ei-field__label { font-size: .8125rem; font-weight: 700; letter-spacing: .02em; }
.ei-field__label span { color: var(--ei-accent-ink); }
.ei-field__input {
  width: 100%;
  min-height: 48px;
  padding: .7rem .9rem;
  font-size: 1rem;
  border: 1px solid var(--ei-line-control);
  border-radius: var(--ei-radius);
  background: var(--ei-surface);
  transition: border-color .2s var(--ei-ease), box-shadow .2s var(--ei-ease);
}
/* outline: none kasowało jedyny wskaźnik fokusu klawiaturowego na polach
   formularza — reguła globalna ma niższą specyficzność i przegrywała. */
.ei-field__input:focus-visible {
  outline: 2px solid var(--ei-focus);
  outline-offset: 2px;
}
.ei-field__input:focus {
  border-color: var(--ei-accent-ink);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--ei-accent-ink) 18%, transparent);
}
textarea.ei-field__input { min-height: 110px; resize: vertical; }
.ei-field.has-error .ei-field__input { border-color: #b3261e; }
.ei-field__error:empty { display: none; }
.ei-field__error { font-size: .8125rem; color: #b3261e; }
.ei-field--offer .ei-field__input { background: var(--ei-tint); font-weight: 600; }

.ei-check { display: flex; align-items: flex-start; gap: .7rem; cursor: pointer; }
.ei-check input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.ei-check__box {
  flex-shrink: 0;
  display: grid;
  place-items: center;
  width: 22px; height: 22px;
  margin-top: 1px;
  border: 1px solid var(--ei-line);
  border-radius: 3px;
  color: transparent;
  transition: background .2s var(--ei-ease), border-color .2s var(--ei-ease), color .2s var(--ei-ease);
}
.ei-check input:checked + .ei-check__box {
  background: var(--ei-accent);
  border-color: var(--ei-accent);
  color: #fff;
}
.ei-check input:focus-visible + .ei-check__box { outline: 2px solid var(--ei-accent); outline-offset: 2px; }
.ei-check__text { font-size: .8125rem; line-height: 1.55; color: var(--ei-muted); }
.ei-check__text a { color: var(--ei-accent-ink); text-decoration: underline; text-underline-offset: 2px; }

.ei-field__optional { font-weight: 500; color: var(--ei-muted); }

.ei-form__submit { width: 100%; }
.ei-form__promise {
  display: grid;
  gap: .3rem;
  margin-top: -.35rem;
  font-size: .8125rem;
  line-height: 1.5;
  text-align: center;
  color: var(--ei-muted);
}
.ei-form__required-note { font-size: .75rem; }
.ei-form__submit[disabled] { opacity: .6; cursor: progress; }
.ei-form__status:empty { display: none; }
.ei-form__status {
  padding: .8rem 1rem;
  font-size: .875rem;
  border-radius: var(--ei-radius);
  background: var(--ei-tint);
}
.ei-form__status.is-success { background: color-mix(in srgb, #14713a 12%, transparent); color: #0f5c2e; }
.ei-form__status.is-error { background: color-mix(in srgb, #b3261e 10%, transparent); color: #8c1d18; }

/* =========================================================================
   Stopka
   ====================================================================== */

.ei-footer {
  padding-block: clamp(3rem, 6vw, 4.5rem) 2rem;
  background: var(--ei-deep);
  color: rgba(255, 255, 255, .72);
  font-size: .9375rem;
}
.ei-footer__top {
  display: grid;
  /* auto-repeat dopuszcza obok siebie wyłącznie ścieżki o rozmiarze ustalonym.
     Samo `1.4fr` unieważniało całą deklarację, przez co stopka na desktopie
     spadała do jednej kolumny. minmax(<długość>, 1.4fr) jest już poprawne. */
  grid-template-columns: minmax(min(100%, 260px), 1.4fr) repeat(auto-fit, minmax(min(100%, 160px), 1fr));
  gap: clamp(1.75rem, 4vw, 3rem);
  padding-bottom: 2.5rem;
  border-bottom: 1px solid rgba(255, 255, 255, .12);
}
.ei-footer__name { font-family: var(--ei-serif); font-size: 1.5rem; color: #fff; }
.ei-footer__tagline { margin-top: .5rem; max-width: 34ch; font-size: .875rem; }
.ei-footer__social { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 1.25rem; }
.ei-footer__social a { font-size: .875rem; font-weight: 600; color: rgba(255, 255, 255, .8); }
.ei-footer__social a:hover { color: var(--ei-accent-soft); }

.ei-footer__heading {
  margin-bottom: .9rem;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: #fff;
}
.ei-footer__list { display: grid; gap: .5rem; }
.ei-footer__list a:hover { color: var(--ei-accent-soft); }

.ei-footer__bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding-top: 1.75rem;
  font-size: .8125rem;
  color: rgba(255, 255, 255, .5);
}
.ei-footer__links a { text-decoration: underline; text-underline-offset: 3px; }
.ei-footer__links a:hover { color: var(--ei-accent-soft); }
/* 38% krycia dawało 3,55:1 — dla zastrzeżeń prawnych, które muszą być
   czytelne, podniesione do 60% (5,9:1). */
.ei-footer__disclaimer { flex-basis: 100%; font-size: .75rem; line-height: 1.55; color: rgba(255, 255, 255, .6); }

/* =========================================================================
   Strona główna — przegląd inwestycji
   ====================================================================== */

.ei-hub { padding-top: calc(var(--ei-nav-h) + var(--ei-section-y)); }
.ei-hub__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr));
  gap: clamp(1.25rem, 2.5vw, 2rem);
}
.ei-hub__card {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--ei-line);
  border-radius: var(--ei-radius-lg);
  overflow: hidden;
  background: var(--ei-surface);
  transition: box-shadow .3s var(--ei-ease), transform .3s var(--ei-ease);
}
.ei-hub__card:hover { box-shadow: var(--ei-shadow-lg); transform: translateY(-3px); }
.ei-hub__media img { transition: transform .6s var(--ei-ease); }
.ei-hub__card:hover .ei-hub__media img { transform: scale(1.04); }
.ei-hub__body { padding: 1.5rem; display: grid; gap: .4rem; justify-items: start; }
.ei-hub__title { font-family: var(--ei-serif); font-size: 1.5rem; }
.ei-hub__place { font-size: .875rem; color: var(--ei-muted); }
.ei-hub__card .ei-link { margin-top: .6rem; }
.ei-hub__card:hover .ei-link::after { transform: translateX(4px); }

.ei-linklist { display: grid; gap: .5rem; margin: 1.5rem 0; }
.ei-linklist a { font-weight: 600; }
.ei-linklist a:hover { color: var(--ei-accent-ink); }
.ei-linklist__meta { font-weight: 400; color: var(--ei-muted); }

.ei-posts { display: grid; gap: 2rem; }
.ei-posts__title { font-family: var(--ei-serif); font-size: 1.5rem; }
.ei-posts__meta { font-size: .8125rem; color: var(--ei-muted); margin: .25rem 0 .5rem; }

/* =========================================================================
   Podgląd zdjęć (lightbox)
   ====================================================================== */

.ei-lightbox {
  position: fixed;
  inset: 0;
  z-index: 300;
  display: grid;
  grid-template-rows: auto 1fr auto;
  background: rgba(10, 11, 13, .96);
  opacity: 0;
  visibility: hidden;
  transition: opacity .25s var(--ei-ease), visibility .25s;
}
.ei-lightbox.is-open { opacity: 1; visibility: visible; }
.ei-lightbox__bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem var(--ei-gutter);
  color: rgba(255, 255, 255, .7);
  font-size: .875rem;
}
/* Grid z wierszem 1fr nie stanowi dla obrazu określonego bloku zawierającego,
   więc max-height: 100% było ignorowane i rzuty wychodziły poza ekran —
   bez możliwości przewinięcia, bo tło ma zablokowane przewijanie. */
.ei-lightbox__stage {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 clamp(.5rem, 4vw, 4rem);
  min-height: 0;
  overflow: hidden;
}
.ei-lightbox__stage img {
  max-width: 100%;
  max-height: 100%;
  width: auto; height: auto;
  object-fit: contain;
}
.ei-lightbox__caption {
  padding: 1rem var(--ei-gutter) 1.5rem;
  text-align: center;
  font-size: .875rem;
  color: rgba(255, 255, 255, .72);
}
.ei-lightbox__btn {
  display: grid;
  place-items: center;
  width: 46px; height: 46px;
  border-radius: 50%;
  color: #fff;
  background: rgba(255, 255, 255, .1);
  transition: background .2s var(--ei-ease);
}
.ei-lightbox__btn:hover { background: rgba(255, 255, 255, .22); }
.ei-lightbox__nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}
.ei-lightbox__nav--prev { left: clamp(.25rem, 2vw, 1.5rem); }
.ei-lightbox__nav--next { right: clamp(.25rem, 2vw, 1.5rem); }
body.ei-locked { overflow: hidden; }

/* =========================================================================
   Pasek akcji na mobile
   =========================================================================

   Przywraca klikalny telefon i przycisk kontaktu, które w pasku nawigacji
   chowają się poniżej 980 px. Checklista Landing Page Experience wymaga
   telefonu widocznego bez dodatkowych kliknięć — schowany w hamburgerze
   ten warunek nie jest spełniony.

   Pasek pojawia się dopiero po minięciu hero (klasa nadawana z JS), więc
   nie zasłania pierwszego ekranu ani nie działa jak wyskakujące okno.
   ====================================================================== */

.ei-actionbar { display: none; }

/* Próg zgodny z hamburgerem w critical.css — patrz komentarz tam. */
@media (max-width: 1100px) {
  .ei-actionbar {
    position: fixed;
    inset: auto 0 0;
    z-index: 95;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .5rem;
    padding: .5rem var(--ei-gutter) calc(.5rem + env(safe-area-inset-bottom, 0px));
    background: rgba(255, 255, 255, .94);
    backdrop-filter: saturate(160%) blur(14px);
    box-shadow: 0 -1px 0 var(--ei-line-soft), 0 -8px 24px -16px rgba(16, 18, 22, .35);
    transform: translateY(110%);
    transition: transform .3s var(--ei-ease);
  }
  .ei-actionbar.is-visible { transform: translateY(0); }

  .ei-actionbar__call,
  .ei-actionbar__cta {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    min-height: 48px;
    padding: .5rem .75rem;
    font-size: .9375rem;
    font-weight: 600;
    border-radius: var(--ei-radius);
  }
  .ei-actionbar__call { color: var(--ei-ink); border: 1px solid var(--ei-line); }
  .ei-actionbar__call svg { color: var(--ei-accent-ink); flex-shrink: 0; }
  .ei-actionbar__call span { display: grid; line-height: 1.15; text-align: left; }
  .ei-actionbar__call small { font-size: .75rem; color: var(--ei-muted); font-weight: 500; }
  .ei-actionbar__cta { color: #fff; background: var(--ei-ink); border: 1px solid var(--ei-ink); }

  /* Miejsce na pasek, żeby nie przykrywał końca stopki. */
  .ei-footer { padding-bottom: calc(5.5rem + env(safe-area-inset-bottom, 0px)); }

  /* Przy otwartym menu pasek tylko przeszkadza. */
  body.ei-locked .ei-actionbar { transform: translateY(110%); }
}

/* =========================================================================
   Warianty inwestycji
   =========================================================================

   Jeden szablon obsługuje wszystkie inwestycje, ale każda ma dostać własny
   charakter — inaczej trzy landingi tej samej firmy wyglądają jak kopie
   i Google traktuje je jak duplikaty.

   Co się zmienia: paleta (kolor „deep" i tło przeplatanych sekcji), rytm
   siatek, kierunek układu w sekcji „o inwestycji", akcenty typograficzne.
   Co zostaje wspólne: mosiądz 3City jako kolor akcentu, ta sama typografia,
   te same komponenty. Dzięki temu landingi są rozpoznawalnie z jednej stajni,
   ale nie są swoimi klonami.

   Kolejność sekcji jest sterowana z configu (klucz "sections"), nie stąd.
   ====================================================================== */

/* --- Wariant „urban": apartamentowiec, Pruszcz Gdański -------------------
   Miejski, grafitowy, uporządkowany. Równa siatka bez wyróżnionego kafelka —
   mieszkania porównuje się parametrami, więc rytm ma być przewidywalny. */

.ei-variant--urban .ei-grid--photos .ei-grid__item:first-child { grid-column: auto; }
.ei-variant--urban .ei-grid--photos .ei-grid__item:first-child .ei-ratio::before { padding-top: 75%; }

/* Zdjęcie po lewej — odwrotnie niż w pozostałych. */
.ei-variant--urban .ei-about__grid { direction: rtl; }
.ei-variant--urban .ei-about__grid > * { direction: ltr; }
.ei-variant--urban .ei-about__media::after { left: auto; right: -14px; }

.ei-variant--urban .ei-hero__facts {
  border-radius: 0;
  border-inline: 0;
  border-bottom: 0;
}
.ei-variant--urban .ei-highlight__icon { border-radius: var(--ei-radius); }
.ei-variant--urban .ei-facts { background: var(--ei-tint); }

/* --- Wariant „estate": osiedle domów, dwa etapy --------------------------
   Cieplejszy i bardziej „ogrodowy". Etapy są sercem tego landinga, więc
   dostają mocniejszą oprawę: numerowane karty i wyraźniejszy podział. */

.ei-variant--estate .ei-stages__grid { gap: clamp(1.5rem, 3vw, 3rem); }
.ei-variant--estate .ei-stage { border-width: 1px; }
.ei-variant--estate .ei-stage__body { position: relative; }
.ei-variant--estate .ei-stage__title { font-size: 1.85rem; }

/* Delikatny numer etapu w tle karty — porządkuje czytanie bez dodatkowego
   tekstu do przetłumaczenia czy utrzymania. */
.ei-variant--estate .ei-stages__grid .ei-stage:nth-child(1) .ei-stage__body::before { content: 'I'; }
.ei-variant--estate .ei-stages__grid .ei-stage:nth-child(2) .ei-stage__body::before { content: 'II'; }
.ei-variant--estate .ei-stage__body::before {
  position: absolute;
  top: .35rem; right: 1.2rem;
  font-family: var(--ei-serif);
  font-size: 4.5rem;
  line-height: 1;
  color: color-mix(in srgb, var(--ei-accent) 16%, transparent);
  pointer-events: none;
}

.ei-variant--estate .ei-highlights__grid {
  background: transparent;
  border: 0;
  gap: clamp(1rem, 2vw, 1.75rem);
}
.ei-variant--estate .ei-highlight {
  border: 1px solid var(--ei-line);
  border-radius: var(--ei-radius-lg);
}

/* --- Wariant „villa": jeden dom wolnostojący ----------------------------
   Butikowy. Jedna oferta nie potrzebuje tabeli ani filtrów, więc karta
   rozkłada się na całą szerokość i czyta się jak podsumowanie domu. */

.ei-variant--villa .ei-hero__copy { max-width: 40rem; }
.ei-variant--villa .ei-hero__title { font-size: clamp(2.6rem, 6.8vw, 5rem); }

.ei-variant--villa .ei-offers__grid { grid-template-columns: 1fr; max-width: 780px; }
.ei-variant--villa .ei-offer { padding: clamp(1.5rem, 3vw, 2.5rem); }
.ei-variant--villa .ei-offer__title { font-size: 2rem; }
.ei-variant--villa .ei-offer__specs { grid-template-columns: repeat(auto-fit, minmax(min(100%, 130px), 1fr)); }
.ei-variant--villa .ei-offer__amount { font-size: 2rem; }
.ei-variant--villa .ei-offer__plan { max-width: 420px; }

.ei-variant--villa .ei-about__grid { direction: rtl; }
.ei-variant--villa .ei-about__grid > * { direction: ltr; }
.ei-variant--villa .ei-about__media::after { left: auto; right: -14px; }

/* Atuty w jednym pasie — sześć krótkich haseł czyta się lepiej w rzędzie
   niż w kafelkach z opisami. */
.ei-variant--villa .ei-highlights__grid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 165px), 1fr));
  background: transparent;
  border: 0;
  gap: 1px;
  box-shadow: 0 0 0 1px var(--ei-line-soft);
  border-radius: var(--ei-radius-lg);
  overflow: hidden;
}
.ei-variant--villa .ei-highlight { padding: 1.6rem 1.25rem; text-align: center; }
.ei-variant--villa .ei-highlight__icon { margin-inline: auto; }

/* 899.98 zamiast 900 — przy równych 900 px nakładała się z regułą
   @media (min-width: 900px) dla wyróżnionego kafelka galerii. */
@media (max-width: 899.98px) {
  /* Odwrócony układ „o inwestycji" na mobile ma dawać ten sam porządek
     co warianty domyślne: najpierw tekst, potem zdjęcie. */
  .ei-variant--urban .ei-about__grid,
  .ei-variant--villa .ei-about__grid { direction: ltr; }
}

/* =========================================================================
   Kontrast elementów sterujących
   =========================================================================

   Mosiądz marki (#cfa355) ma na bieli 2,33:1. Jako tło odznaki czy ikona
   w kółku jest w porządku — ale tam, gdzie kolor niesie informację o stanie
   kontrolki albo rysuje obrys fokusu, WCAG 1.4.11 i 2.4.11 wymagają 3:1.
   W tych miejscach wchodzi przyciemniony wariant o tym samym odcieniu.
   ====================================================================== */

.ei-chip span,
.ei-check__box,
.ei-switch__track,
.ei-timeline__dot,
.ei-actionbar__call { border-color: var(--ei-line-control); }
.ei-switch__track { background: var(--ei-line-control); }

.ei-switch input:checked + .ei-switch__track,
.ei-check input:checked + .ei-check__box,
.ei-faq__item[open] .ei-faq__marker,
.ei-timeline__item.is-done .ei-timeline__dot {
  background: var(--ei-accent-ink);
  border-color: var(--ei-accent-ink);
}
.ei-timeline__item.is-done::before { background: var(--ei-accent-ink); }
.ei-tabs__btn::after { background: var(--ei-accent-ink); }

/* Obrys fokusu zawsze przez zmienną — inaczej ciemne sekcje dostają
   wariant nieczytelny na swoim tle. */
.ei-chip input:focus-visible + span,
.ei-switch input:focus-visible + .ei-switch__track,
.ei-check input:focus-visible + .ei-check__box { outline: 2px solid var(--ei-focus); }

/* Pole wyboru zgody było 22 px — poniżej progu 24 px z WCAG 2.5.8. */
.ei-check__box { width: 24px; height: 24px; }

/* Obramowania na ciemnym tle: przy 16–45% bieli granica była niewidoczna. */
.ei-btn--glass { border-color: rgba(255, 255, 255, .72); }
.ei-agent { border-color: rgba(255, 255, 255, .34); }

/* Odnośnik tekstowy na sekcjach ciemnych — wariant przyciemniony ma tam
   3,28:1. Dziś .ei-link występuje tylko na jasnych kartach, ale reguła
   chroni przed regresem przy przenoszeniu sekcji. */
.ei-section--deep .ei-link,
.ei-footer .ei-link { color: var(--ei-accent); }

/* Cele dotykowe w stopce miały 18–21 px wysokości. */
.ei-footer__list { gap: .75rem; }
.ei-footer__list a,
.ei-footer__social a,
.ei-footer__links a { display: inline-block; padding-block: .25rem; }

/* =========================================================================
   Punkty łamania
   ====================================================================== */

@media (max-width: 1024px) {
  .ei-location__grid { grid-template-columns: 1fr; }
  .ei-contact__grid { grid-template-columns: 1fr; }
}

/* 899.98 zamiast 900 — przy równych 900 px nakładała się z regułą
   @media (min-width: 900px) dla wyróżnionego kafelka galerii. */
@media (max-width: 899.98px) {
  .ei-about__grid { grid-template-columns: 1fr; }
  /* Akcent przy zdjęciu wystaje o 14px poza kontener — na wąskim ekranie
     wypycha stronę w bok i tworzy poziomy pasek (fix z 06-TROUBLESHOOTING.md).
     Chowamy go zamiast walczyć z overflow na body. */
  .ei-about__media::after { display: none; }
  .ei-about__grid { display: flex; flex-direction: column-reverse; }
  .ei-footer__top { grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); }
}

@media (max-width: 640px) {
  .ei-form__row { grid-template-columns: 1fr; }
  .ei-filters__row { flex-direction: column; align-items: stretch; }
  .ei-filters__reset { margin-left: 0; text-align: left; }
  .ei-progress__headline { flex-direction: column; gap: .35rem; }
  .ei-agent { flex-direction: column; align-items: flex-start; text-align: left; }
  .ei-standard__list { padding-left: clamp(1rem, 4vw, 1.6rem); }
}

@media print {
  .ei-nav, .ei-hero__actions, .ei-filters, .ei-video, .ei-contact__form, .ei-lightbox { display: none !important; }
  .ei-section { padding-block: 1rem; }
  body { color: #000; background: #fff; }
}
