/*
  Lipowe Ogrody: look of the estate plugin markup (docs/markup.md of the plugin).
  Finder, flat list, elevation, floor plan sheet, site plan, availability and the enquiry form.
*/

.estate-status { display: inline-flex; align-items: center; gap: 0.45rem; font-weight: var(--weight-bold); font-size: var(--text-ui); }
.estate-status::before { content: ""; width: 14px; height: 14px; flex: none; border: 2px solid currentColor; border-radius: 3px; }
.estate-status--available { color: var(--color-status-free); }
.estate-status--available::before { background: currentColor; }
.estate-status--reserved { color: var(--color-status-reserved); }
.estate-status--reserved::before { background: linear-gradient(90deg, currentColor 50%, transparent 50%); }
.estate-status--sold { color: var(--color-status-sold); }
.estate-status--sold::before { background: repeating-linear-gradient(45deg, currentColor 0 2px, transparent 2px 5px); }

/* ---------- Finder ---------- */
.estate-finder {
  display: grid;
  grid-template-columns: minmax(280px, 3fr) minmax(0, 9fr);
  gap: var(--gap-grid);
  align-items: start;
}

.estate-finder__form {
  padding: 1.4rem 1.3rem;
  border-radius: var(--radius-sheet);
  background: var(--color-surface);
  box-shadow: var(--shadow-sheet);
}

.estate-filter { margin: 0 0 1.25rem; padding: 0; border: 0; }
.estate-filter:not(.estate-filter--area, .estate-filter--price) { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.estate-filter__legend { width: 100%; margin-bottom: 0.5rem; padding: 0; font-weight: var(--weight-bold); font-size: var(--text-ui); }

.estate-filter__option,
.estate-enquiry__topic {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.3rem;
  min-width: 44px;
  min-height: var(--height-choice);
  padding: 0.35rem 0.7rem;
  border-radius: var(--radius-choice);
  background: var(--color-surface);
  box-shadow: inset 0 0 0 var(--border-hairline) var(--color-border-control);
  font-weight: var(--weight-semibold);
  font-size: var(--text-ui);
  cursor: pointer;
  transition: transform var(--duration-fast) var(--ease-out-quart);
}

.estate-filter__option:hover,
.estate-enquiry__topic:hover { transform: translateY(-2px); }

.estate-filter__input,
.estate-enquiry__topic-input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  opacity: 0;
  cursor: pointer;
}

.estate-filter__option:has(:checked),
.estate-enquiry__topic:has(:checked) { background: var(--color-highlight); box-shadow: inset 0 0 0 var(--border-control) var(--color-border-strong); }
.estate-filter__option:has(:focus-visible),
.estate-enquiry__topic:has(:focus-visible) { outline: var(--focus-width) solid var(--focus-outer); outline-offset: var(--focus-offset); box-shadow: inset 0 0 0 var(--border-control) var(--color-border-strong), 0 0 0 var(--focus-halo) var(--focus-inner); }
.estate-filter__option.is-empty { opacity: var(--opacity-disabled); }
.estate-filter__count { color: var(--color-text-muted); font-weight: var(--weight-medium); font-size: var(--text-small); }

.estate-filter--area,
.estate-filter--price { display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem; }
.estate-filter--area .estate-filter__legend,
.estate-filter--price .estate-filter__legend { grid-column: 1 / -1; }
.estate-filter__range { display: grid; gap: 0.2rem; color: var(--color-text-muted); font-size: var(--text-small); }

.estate-filter__number,
.estate-enquiry__input,
.estate-finder__sort select {
  width: 100%;
  min-height: var(--height-control);
  padding: 0.4rem 0.6rem;
  border: var(--border-hairline) solid var(--color-border-control);
  border-radius: var(--radius-choice);
  background: var(--p-white);
  color: var(--p-navy);
  font: var(--weight-semibold) var(--text-ui) var(--font-text);
}

.estate-filter__number:hover,
.estate-enquiry__input:hover,
.estate-finder__sort select:hover { border-color: var(--color-border-strong); }
.estate-finder__actions { display: grid; gap: 0.8rem; }
.estate-finder__sort { display: grid; gap: 0.2rem; font-weight: var(--weight-bold); font-size: var(--text-ui); }
.estate-finder__submit { width: 100%; }

.estate-finder__summary { margin: 0 0 1rem; font: var(--weight-display) var(--text-stat) / 1.1 var(--font-display); }
.estate-finder__chips { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0 0 1rem; padding: 0; list-style: none; }
.estate-finder__chip-link {
  display: inline-flex;
  align-items: center;
  min-height: 36px;
  padding: 0.25rem 0.9rem;
  border-radius: var(--radius-pill);
  background: var(--p-navy);
  color: var(--p-white);
  font-weight: var(--weight-semibold);
  font-size: var(--text-small);
  text-decoration: none;
}
.estate-finder__empty { padding: 1.4rem; border-radius: var(--radius-sheet); background: var(--color-highlight); }
.estate-finder__disclaimer { margin: 1rem 0 0; color: var(--color-text-muted); font-size: var(--text-caption); }

/* Row actions, view switch and filter toggle stay hidden until the finder script marks .estate-finder.is-enhanced. */
.estate-finder__filters-toggle,
.estate-flat-row > .estate-flat-row__actions { display: none; }
.estate-finder.is-enhanced .estate-finder__filters-toggle {
  display: none;
  min-height: var(--height-control);
  padding: 0 1rem;
  border: 0;
  border-radius: var(--radius-button);
  background: var(--p-navy);
  color: var(--p-white);
  font: var(--weight-bold) var(--text-ui) var(--font-text);
  cursor: pointer;
  transition: transform var(--duration-fast) var(--ease-out-quart);
}
.estate-finder.is-enhanced .estate-finder__filters-toggle:hover { transform: translateY(-2px); }
@media (max-width: 1100px) {
  .estate-finder.is-enhanced .estate-finder__filters-toggle { display: inline-flex; align-items: center; justify-self: start; }
  .estate-finder.is-enhanced:not(.is-filters-open) .estate-finder__form { display: none; }
}
.estate-finder.is-enhanced .estate-flat-row > .estate-flat-row__actions { position: relative; z-index: 1; display: flex; gap: 0.4rem; flex-wrap: wrap; }
.estate-row__summary { display: block; margin-top: 0.35rem; color: var(--color-text-muted); font: var(--weight-regular) var(--text-small) / 1.3 var(--font-text); letter-spacing: 0; }
.estate-row__plan-panel { grid-column: 1 / -1; }

/* ---------- Flat list: every row is a sheet ---------- */
.estate-flat-list,
.estate-flat-list tbody { display: grid; gap: 0.85rem; width: 100%; }
.estate-flat-list thead { position: absolute; display: block; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.estate-flat-list thead tr { display: block; width: 1px; overflow: hidden; }
.estate-flat-list caption { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

.estate-flat-row {
  position: relative;
  display: grid;
  grid-template-columns: 112px repeat(auto-fit, minmax(100px, 1fr));
  align-items: center;
  gap: 0.6rem 1rem;
  padding: 0.8rem 1rem 0.8rem 0.8rem;
  border-radius: var(--radius-sheet);
  background: var(--color-surface);
  box-shadow: var(--shadow-sheet);
  transition: transform var(--duration-normal) var(--ease-out-expo);
}

.estate-flat-row::after {
  content: "";
  position: absolute;
  z-index: var(--z-under);
  left: 6%;
  right: -1%;
  bottom: -6px;
  height: 30px;
  border-radius: 50%;
  background: var(--cast-row);
  filter: blur(10px);
  opacity: 0;
  transform: skewX(var(--cast-skew)) scaleX(0.9);
  transform-origin: 0 50%;
  transition: opacity var(--duration-normal) var(--ease-out-quart), transform var(--duration-normal) var(--ease-out-expo);
}

.estate-flat-row:hover,
.estate-flat-row:focus-within { transform: translateY(-4px); }
.estate-flat-row:hover::after,
.estate-flat-row:focus-within::after { opacity: 1; transform: skewX(var(--cast-skew-hover)) scaleX(1.05); }

.estate-flat-row > td,
.estate-flat-row > th { display: block; padding: 0; font-size: var(--text-body); font-weight: var(--weight-bold); line-height: 1.25; text-align: left; }
.estate-flat-row > td[data-label]::before,
.estate-flat-row > th[data-label]::before { content: attr(data-label); display: block; color: var(--color-text-muted); font-weight: var(--weight-regular); font-size: var(--text-small); }
.estate-flat-row__plan { display: grid; place-items: center; width: 112px; height: 88px; border-radius: var(--radius-choice); background: var(--color-surface-2); }
.estate-flat-row__plan::before { display: none !important; }
.estate-flat-row__plan svg { width: 100px; height: 76px; min-width: 0; }
.estate-flat-row > th.estate-flat-row__code { font-size: var(--text-flat-number); font-family: var(--font-display); font-weight: var(--weight-display); letter-spacing: var(--tracking-display); line-height: 1; }
.estate-flat-row > th.estate-flat-row__code::before { font: var(--weight-regular) var(--text-small) / 1.3 var(--font-text); letter-spacing: 0; }
.estate-flat-row__link { text-decoration: none; }
.estate-flat-row__link::before { content: ""; position: absolute; inset: 0; border-radius: var(--radius-sheet); }
.estate-flat-row > .estate-flat-row__price { font: var(--weight-display) var(--text-price) / 1.1 var(--font-display); letter-spacing: var(--tracking-price); }
.estate-flat-row__status { z-index: 1; }
.estate-flat-row--sold {
  background:
    linear-gradient(90deg, var(--color-status-sold-row), var(--color-status-sold-row)),
    repeating-linear-gradient(135deg, var(--color-status-sold-row) 0 2px, transparent 2px 10px),
    var(--color-surface);
}
.estate-flat-row--sold > td,
.estate-flat-row--sold > th { color: var(--color-text-muted); }

@media (min-width: 1340px) {
  .estate-flat-row { grid-template-columns: 96px 84px 60px 84px 76px minmax(110px, 1.2fr) 96px minmax(100px, 1fr) 138px; gap: 0.6rem 0.8rem; }
  .estate-flat-row__plan { width: 96px; height: 76px; }
  .estate-flat-row__plan svg { width: 86px; height: 66px; }
}

/* ---------- Elevation ---------- */
.estate-elevation { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--gap-grid-wide); align-items: end; }
.estate-elevation__building { margin: 0; }
.estate-elevation__caption { margin-top: 0.6rem; color: var(--color-text-muted); font-size: var(--text-ui); font-weight: var(--weight-semibold); }
.estate-elevation__svg { padding: 8px; border-radius: var(--radius-sheet); background: linear-gradient(var(--p-mist-2), var(--p-mist-3)); box-shadow: inset 0 0 0 1px var(--color-border), var(--shadow-sheet-near); }
.estate-elevation__roof { fill: var(--p-navy); stroke: var(--p-navy); }
.estate-elevation__ground { stroke: var(--p-navy); }
.estate-elevation__floor-label { fill: var(--color-text-muted); font-size: 17px; font-weight: var(--weight-bold); }
.estate-elevation__cell { transform-box: fill-box; transform-origin: 50% 50%; transition: transform var(--duration-fast) var(--ease-out-quart); }
.estate-elevation__cell:hover,
.estate-elevation__cell:focus-visible { transform: scale(1.06); }
.estate-elevation__cell-bg { rx: 4px; fill: var(--p-white); stroke: var(--p-navy); stroke-width: 1.5px; }
.estate-elevation__code { fill: var(--p-navy); font-weight: var(--weight-bold); }
.estate-elevation__mark { stroke: var(--p-navy); }
.estate-elevation__cell--available .estate-elevation__cell-bg { fill: var(--p-navy); }
.estate-elevation__cell--available .estate-elevation__code { fill: var(--p-white); }
.estate-elevation__cell--available .estate-elevation__mark { stroke: var(--p-white); fill: var(--p-white); }
.estate-elevation__cell--reserved .estate-elevation__cell-bg { fill: var(--p-mist); stroke-width: 3px; }
.estate-elevation__cell--reserved .estate-elevation__mark { fill: var(--p-navy); }
.estate-elevation__cell--sold .estate-elevation__cell-bg { fill: var(--p-sold-stripe); stroke: var(--p-ink-2); }
.estate-elevation__cell--sold .estate-elevation__code { fill: var(--p-ink-2); }
.estate-elevation__cell--sold .estate-elevation__mark { stroke: var(--p-ink-2); fill: var(--p-ink-2); }
.estate-elevation__pattern-fill { fill: var(--p-navy); }
.estate-elevation__pattern-dot { fill: var(--p-navy); }
.estate-elevation__pattern-line { stroke: var(--p-ink-2); stroke-opacity: 0.3; }
.estate-elevation__mark-cross { stroke: var(--p-white); fill: none; }
.estate-elevation__cell.is-dimmed { opacity: var(--opacity-dimmed); }
.estate-elevation__legend { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 1.2rem; margin: 0; padding: 0; list-style: none; font-size: var(--text-ui); }
.estate-elevation__legend-item { display: inline-flex; align-items: center; gap: 0.5rem; }
.estate-elevation__legend-item::before { content: ""; width: 16px; height: 16px; border-radius: 3px; box-shadow: inset 0 0 0 1.5px var(--p-navy); }
.estate-elevation__legend-item--available::before { background: var(--p-navy); }
.estate-elevation__legend-item--reserved::before { background: linear-gradient(90deg, var(--p-navy) 50%, var(--p-white) 50%); }
.estate-elevation__legend-item--sold::before { background: repeating-linear-gradient(45deg, var(--p-sold-stripe) 0 2px, var(--p-white) 2px 6px); }

@media (min-width: 2000px) {
  .estate-elevation { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* ---------- Floor plan sheet and room table ---------- */
.band:has(> .estate-plan-figure) { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); column-gap: clamp(1.2rem, 2.5vw, 3.5rem); align-content: start; }
.band:has(> .estate-plan-figure) > * { grid-column: 1 / -1; }
.band:has(> .estate-plan-figure) > h2:has(+ p) { grid-column: 1; grid-row: 1; float: none; width: auto; }
.band:has(> .estate-plan-figure) > h2:has(+ p) + p { grid-column: 2; grid-row: 1; align-self: end; margin: 0 0 var(--space-8); padding: 0; }
.band:has(> .estate-plan-figure) > .estate-plan-figure { grid-column: 1; grid-row: span 3; margin: 0 0 var(--space-7); }
.band:has(> .estate-plan-figure) > .estate-room-table,
.band:has(> .estate-plan-figure) > .estate-room-table__note { grid-column: 2; margin: 0; align-self: start; }

.estate-plan-figure { margin: 0; }
.estate-plan-switch,
.estate-view-switch { display: inline-flex; gap: 3px; padding: 3px; margin-bottom: 0.8rem; border-radius: var(--radius-button); background: var(--p-mist); }
.estate-plan-switch__link,
.estate-view-switch__link {
  display: inline-flex;
  align-items: center;
  min-height: var(--height-control);
  padding: 0 1rem;
  border-radius: var(--radius-segment);
  color: var(--p-navy);
  font-weight: var(--weight-bold);
  font-size: var(--text-ui);
  text-decoration: none;
  transition: transform var(--duration-fast) var(--ease-out-quart);
}
.estate-plan-switch__link:hover,
.estate-view-switch__link:hover { transform: translateY(-2px); }
.estate-plan-switch__link.is-active,
.estate-view-switch__link.is-active { background: var(--p-navy); color: var(--p-white); }
.estate-plan-figure__viewport {
  padding: clamp(1rem, 1.6vw, 2rem);
  border-radius: var(--radius-sheet);
  background: var(--p-white);
  color: var(--p-navy);
  box-shadow: var(--shadow-plan-sheet);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.estate-plan-figure__arrangement { margin-top: 0.8rem; color: var(--color-text-muted); font-size: var(--text-ui); }

.estate-room-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  border-radius: var(--radius-sheet);
  background: var(--color-surface-2);
  box-shadow: var(--shadow-panel-on-navy);
  font-variant-numeric: tabular-nums;
}
.estate-room-table__caption { padding: 1.4rem 1.5rem 0.6rem; text-align: left; font: var(--weight-display) var(--text-h3) / 1.1 var(--font-display); }
.estate-room-table th,
.estate-room-table td { padding: 0.48rem 1.5rem; border-bottom: 1px solid var(--color-border); text-align: left; font-weight: var(--weight-regular); }
.estate-room-table td { text-align: right; font-weight: var(--weight-bold); }
.estate-room-table thead th { font-weight: var(--weight-bold); color: var(--color-text-muted); font-size: var(--text-small); }
.estate-room-table thead th:last-child { text-align: right; }
.estate-room-table tfoot th,
.estate-room-table tfoot td { padding-top: 0.7rem; padding-bottom: 1.2rem; border-top: var(--border-accent) double var(--color-accent-text); border-bottom: 0; color: var(--color-accent-text); font: var(--weight-display) 1.25rem var(--font-display); }
.estate-room-table__note { margin-top: 0.8rem; color: var(--color-text-muted); font-size: var(--text-ui); }

/* ---------- Site plan ---------- */
.estate-site-plan { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); grid-template-rows: auto 1fr; gap: var(--gap-grid-wide); align-items: start; }
.estate-site-plan__drawing { grid-row: span 2; padding: 12px; border-radius: var(--radius-sheet); background: var(--p-white); box-shadow: var(--shadow-sheet); }
.estate-site-plan__svg {
  --site-lawn: var(--model-lawn);
  --site-blade: color-mix(in srgb, var(--plan-plant) 55%, var(--model-lawn));
  --site-paving: var(--p-mist-2);
  --site-paving-edge: var(--p-line);
  --site-asphalt: var(--model-road);
  --site-sidewalk: var(--p-mist-3);
  --site-line: var(--p-white);
  --site-ink: var(--plan-label);
  --site-label-size: 38px;
}
.estate-site-plan__plot { fill: var(--site-lawn); }
.estate-site-plan__lawn-texture { fill: url(#estate-site-plan-lawn); }
.estate-site-plan__lawn-blade { fill: none; stroke: var(--site-blade); stroke-width: 2px; stroke-linecap: round; }
.estate-site-plan__boundary { fill: none; stroke: var(--p-navy); stroke-width: 1.5px; stroke-dasharray: 10 6; opacity: .55; vector-effect: non-scaling-stroke; }
.estate-site-plan__street { fill: var(--site-asphalt); }
.estate-site-plan__sidewalk { fill: var(--site-sidewalk); }
.estate-site-plan__curb { stroke: var(--p-steel); stroke-width: 2px; }
.estate-site-plan__lane-line { stroke: var(--site-line); stroke-width: 3px; stroke-dasharray: 26 18; }
.estate-site-plan__crossing-bar { fill: var(--site-line); }
.estate-site-plan__street-name { fill: var(--p-navy-deep); font: var(--weight-bold) var(--site-label-size) / 1 var(--font-text); letter-spacing: .04em; }
.estate-site-plan__walk-edge { fill: var(--site-paving-edge); stroke: var(--site-paving-edge); stroke-width: 3px; }
.estate-site-plan__walk { fill: var(--site-paving); }
.estate-site-plan__garage-outline { fill: none; stroke: var(--p-navy); stroke-width: 2px; stroke-dasharray: 16 9; opacity: .6; vector-effect: non-scaling-stroke; }
.estate-site-plan__garage-label { fill: var(--p-navy); font: var(--weight-semibold) var(--site-label-size) / 1 var(--font-text); paint-order: stroke; stroke: var(--site-paving); stroke-width: 8px; stroke-linejoin: round; }
.estate-site-plan__tree-shadow { fill: var(--model-shadow); opacity: .26; }
.estate-site-plan__tree { fill: var(--model-crown); }
.estate-site-plan__tree--lime { fill: color-mix(in srgb, var(--model-crown) 80%, var(--model-crown-lit)); }
.estate-site-plan__tree-light { fill: var(--model-crown-lit); opacity: .55; }
.estate-site-plan__label { fill: var(--site-ink); font: var(--weight-bold) var(--site-label-size) / 1 var(--font-text); paint-order: stroke; stroke: var(--p-white); stroke-width: 8px; stroke-linejoin: round; }
.estate-site-plan__place { cursor: default; }
.estate-site-plan__court-run-off { fill: color-mix(in srgb, var(--model-court) 55%, var(--model-lawn)); }
.estate-site-plan__court-surface { fill: var(--model-court); stroke: var(--site-line); stroke-width: 1.8px; }
.estate-site-plan__court-line { stroke: var(--site-line); stroke-width: 1.8px; }
.estate-site-plan__court-net { stroke: var(--p-navy); stroke-width: 2.4px; stroke-dasharray: 3 2; }
.estate-site-plan__fence { fill: none; stroke: var(--p-navy); stroke-width: 1.5px; opacity: .65; vector-effect: non-scaling-stroke; }
.estate-site-plan__playground-surface { fill: color-mix(in srgb, var(--p-linden) 55%, var(--p-white)); stroke: var(--p-amber-deep); stroke-width: 1.5px; vector-effect: non-scaling-stroke; }
.estate-site-plan__sandbox { fill: var(--p-white); stroke: var(--p-navy); stroke-width: 1.5px; vector-effect: non-scaling-stroke; }
.estate-site-plan__sand { fill: var(--p-amber); opacity: .55; }
.estate-site-plan__swing-frame,
.estate-site-plan__swing-beam { stroke: var(--p-navy); stroke-width: 3px; stroke-linecap: round; }
.estate-site-plan__swing-chain { stroke: var(--p-navy); stroke-width: 1px; }
.estate-site-plan__swing-seat,
.estate-site-plan__slide-chute,
.estate-site-plan__slide-deck,
.estate-site-plan__play-spring { fill: var(--p-white); stroke: var(--p-navy); stroke-width: 1.5px; vector-effect: non-scaling-stroke; }
.estate-site-plan__bench { fill: var(--p-navy); }
.estate-site-plan__ramp { fill: var(--model-ramp); }
.estate-site-plan__ramp-hatch { fill: url(#estate-site-plan-ramp); stroke: var(--p-navy); stroke-width: 2px; vector-effect: non-scaling-stroke; }
.estate-site-plan__ramp-line { stroke: var(--p-white); stroke-width: 2px; opacity: .3; }
.estate-site-plan__ramp-chevron { fill: none; stroke: var(--p-white); stroke-width: 3px; stroke-linecap: round; stroke-linejoin: round; }
.estate-site-plan__ramp-portal { fill: var(--model-ramp-inner); }
.estate-site-plan__shelter { fill: var(--site-paving); stroke: var(--p-navy); stroke-width: 1.5px; vector-effect: non-scaling-stroke; }
.estate-site-plan__bin { fill: var(--model-ramp); }
.estate-site-plan__parking { fill: var(--site-asphalt); }
.estate-site-plan__parking-line { stroke: var(--site-line); stroke-width: 2px; }
.estate-site-plan__gate-opening { fill: var(--site-paving); }
.estate-site-plan__gate-post { fill: var(--p-navy); }
.estate-site-plan__gate-leaf { stroke: var(--p-navy); stroke-width: 2px; }
.estate-site-plan__rack-pad { fill: var(--site-paving); stroke: var(--site-paving-edge); stroke-width: 1.5px; vector-effect: non-scaling-stroke; }
.estate-site-plan__rack-bar { stroke: var(--p-navy); stroke-width: 2.4px; stroke-linecap: round; }
.estate-site-plan__building { cursor: pointer; outline: none; }
.estate-site-plan__building-shadow { fill: var(--model-shadow); opacity: .3; }
.estate-site-plan__building-shape { fill: var(--plan-wall); }
.estate-site-plan__building-hatch { fill: url(#estate-site-plan-roof); }
.estate-site-plan__roof-hatch { stroke: var(--p-white); stroke-width: 2px; opacity: .14; }
.estate-site-plan__building-parapet { fill: none; stroke: var(--p-white); stroke-width: 1.5px; opacity: .4; vector-effect: non-scaling-stroke; }
.estate-site-plan__building-focus { fill: none; stroke: var(--plan-entrance-mark); stroke-width: 4px; opacity: 0; vector-effect: non-scaling-stroke; transition: opacity var(--duration-normal) var(--ease-out-quart); }
.estate-site-plan__building:hover .estate-site-plan__building-focus,
.estate-site-plan__building:focus-visible .estate-site-plan__building-focus { opacity: 1; }
.estate-site-plan__entrance { fill: var(--plan-entrance-mark); }
.estate-site-plan__building-letter { fill: var(--p-white); font: var(--weight-display) 74px / 1 var(--font-display); }
.estate-site-plan__building-free { fill: var(--p-white); font: var(--weight-semibold) var(--site-label-size) / 1 var(--font-text); }
.estate-site-plan__building-free-count { font: var(--weight-display) 46px / 1 var(--font-display); fill: var(--plan-entrance-mark); }
.estate-site-plan__dimension-line { stroke: var(--plan-dimension-line); stroke-width: 1.5px; }
.estate-site-plan__dimension-text { fill: var(--site-ink); font: var(--weight-semibold) var(--site-label-size) / 1 var(--font-text); paint-order: stroke; stroke: var(--site-lawn); stroke-width: 10px; stroke-linejoin: round; }
.estate-site-plan__north-ring { fill: var(--plan-north-ring); stroke: var(--plan-north-fill); stroke-width: 1.5px; opacity: .92; vector-effect: non-scaling-stroke; }
.estate-site-plan__north-arrow { fill: var(--plan-north-fill); }
.estate-site-plan__north-arrow--half { fill: var(--plan-north-ring); stroke: var(--plan-north-fill); stroke-width: 1.5px; vector-effect: non-scaling-stroke; }
.estate-site-plan__scale-segment { fill: var(--plan-north-fill); stroke: var(--plan-north-fill); stroke-width: 1.5px; vector-effect: non-scaling-stroke; }
.estate-site-plan__scale-segment--light { fill: var(--p-white); }
.estate-site-plan__detail { min-height: 3rem; padding: 1rem 1.2rem; border-radius: var(--radius-key); background: var(--color-highlight); font-size: var(--text-ui); }
.estate-site-plan__legend { display: grid; gap: 0.6rem; margin: 0; padding: 0; list-style: none; }
.estate-site-plan__legend-item { display: grid; gap: 0.2rem; font-size: var(--text-ui); }
.estate-site-plan__legend-link { display: inline-flex; align-items: center; min-height: var(--tap-comfort); padding: 0.4rem 0.9rem; border-radius: var(--radius-button); box-shadow: inset 0 0 0 var(--border-control) var(--p-navy); font-weight: var(--weight-bold); text-decoration: none; }
.estate-site-plan__legend-button { min-height: var(--tap-comfort); padding: 0.4rem 0.9rem; justify-content: flex-start; font-size: var(--text-ui); }
.estate-site-plan__legend-description { color: var(--color-text-muted); font-size: var(--text-small); }

/* ---------- Availability ---------- */
.estate-availability { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--gap-grid); }
.estate-availability__summary { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.6rem 1rem; margin: 0; }
.estate-availability__available { font: var(--weight-display) var(--text-h2) / 1 var(--font-display); letter-spacing: var(--tracking-display); }
.estate-availability__summary-text { color: var(--color-text-muted); font-size: var(--text-lead); }
.estate-availability__statuses { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 0.5rem 1.4rem; margin: 0; padding: 0; list-style: none; font-weight: var(--weight-bold); }
.estate-availability__status::before { content: ""; display: inline-block; width: 14px; height: 14px; margin-right: 0.45rem; vertical-align: -2px; border: 2px solid currentColor; border-radius: 3px; }
.estate-availability__status--available { color: var(--color-status-free); }
.estate-availability__status--available::before { background: currentColor; }
.estate-availability__status--reserved { color: var(--color-status-reserved); }
.estate-availability__status--reserved::before { background: linear-gradient(90deg, currentColor 50%, transparent 50%); }
.estate-availability__status--sold { color: var(--color-status-sold); }
.estate-availability__status--sold::before { background: repeating-linear-gradient(45deg, currentColor 0 2px, transparent 2px 5px); }
.estate-availability__rooms { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--gap-grid); margin: 0; padding: 0; list-style: none; }
.estate-availability__rooms-link {
  position: relative;
  isolation: isolate;
  display: grid;
  gap: 0.2rem;
  min-height: var(--tap-comfort);
  padding: 1.1rem 1.2rem;
  border-radius: var(--radius-sheet);
  background: var(--p-navy);
  box-shadow: var(--shadow-key-on-navy);
  color: var(--p-white);
  text-decoration: none;
  transition: transform var(--duration-normal) var(--ease-out-expo);
}
.estate-availability__rooms-link:hover,
.estate-availability__rooms-link:focus-visible { transform: translateY(calc(-1 * var(--key-lift))); }
.estate-availability__rooms-label { font: var(--weight-display) var(--text-stat) / 1.1 var(--font-display); }
.estate-availability__rooms-count { color: var(--p-sky); font-size: var(--text-ui); }
.estate-availability__buildings { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--gap-grid); margin: 0; padding: 0; list-style: none; }
.estate-availability__building { display: grid; gap: 0.3rem; padding: 1rem 1.2rem; border-radius: var(--radius-sheet); background: var(--color-surface); box-shadow: var(--shadow-sheet); font-size: var(--text-ui); }
.estate-availability__building-link { display: inline-flex; align-items: center; justify-self: start; min-height: var(--tap-comfort); padding: 0.4rem 0.9rem; border-radius: var(--radius-button); box-shadow: inset 0 0 0 var(--border-control) var(--p-navy); font: var(--weight-display) 1.125rem var(--font-display); text-decoration: none; }
.estate-availability__building-handover { color: var(--color-text-muted); }
.estate-availability__building-free { font-weight: var(--weight-bold); color: var(--color-status-free); }

/* ---------- Flat card ---------- */
.estate-flat-card { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 1.4rem; align-items: center; max-width: 720px; padding: 1rem; border-radius: var(--radius-sheet); background: var(--color-surface); box-shadow: var(--shadow-sheet); }
.estate-flat-card__plan { display: grid; place-items: center; min-height: 140px; border-radius: var(--radius-choice); background: var(--color-surface-2); }
.estate-flat-card__plan { min-width: 0; overflow: hidden; }
.estate-flat-card__plan svg { display: block; width: 100%; max-width: 200px; height: auto; min-width: 0; }
.estate-flat-card__body { min-width: 0; }
.estate-flat-card__title { margin: 0; font-size: var(--text-h3); }
.estate-flat-card__link { text-decoration: none; }
.estate-flat-card__facts,
.estate-flat-card__outdoor,
.estate-flat-card__status,
.estate-flat-card__price { margin: 0.3rem 0 0; }
.estate-flat-card__price { font: var(--weight-display) var(--text-price) / 1.1 var(--font-display); }

/* ---------- Enquiry form ---------- */
.estate-enquiry__layout { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: var(--gap-grid-wide); align-items: start; }
.estate-enquiry__form { display: grid; gap: 1rem; padding: clamp(1.2rem, 2vw, 2rem); border-radius: var(--radius-sheet); background: var(--color-surface); box-shadow: var(--shadow-sheet); }
.estate-enquiry__field { display: grid; gap: 0.3rem; margin: 0; }
.estate-enquiry__label,
.estate-enquiry__legend { font-weight: var(--weight-bold); font-size: var(--text-ui); }
.estate-enquiry__hint { color: var(--color-text-muted); font-size: var(--text-small); }
.estate-enquiry__group { display: flex; flex-wrap: wrap; gap: 0.5rem 1rem; margin: 0; padding: 0; border: 0; }
.estate-enquiry__group > .estate-enquiry__legend { width: 100%; margin-bottom: 0.2rem; }
.estate-enquiry__group .estate-enquiry__field { flex: 1 1 220px; }
.estate-enquiry__textarea { min-height: 8rem; resize: vertical; }
.estate-enquiry__consent { display: flex; gap: 0.7rem; align-items: flex-start; font-size: var(--text-ui); }
.estate-enquiry__consent-input { width: 24px; height: 24px; flex: none; margin: 0; }
.estate-enquiry__privacy-link { font-weight: var(--weight-bold); }
.estate-enquiry__submit-row { display: flex; flex-wrap: wrap; align-items: center; gap: 0.8rem 1.2rem; margin: 0.4rem 0 0; }
.estate-enquiry__promise { color: var(--color-text-muted); font-size: var(--text-ui); }
.estate-enquiry__office { padding: 1.4rem 1.5rem; border-radius: var(--radius-sheet); background: var(--p-navy); color: var(--p-white); box-shadow: var(--shadow-panel-on-navy); }
.estate-enquiry__office p { margin: 0 0 0.6rem; }
.estate-enquiry__office-name { font: var(--weight-display) var(--text-h3) / 1.1 var(--font-display); }
.estate-enquiry__office-phone { font: var(--weight-display) 1.75rem / 1.1 var(--font-display); }
.estate-enquiry__office-link { display: inline-flex; align-items: center; min-height: var(--tap-comfort); color: var(--p-amber); text-decoration: none; }
.estate-enquiry__office-hours { margin: 0 0 0.6rem; padding: 0; list-style: none; }
.estate-enquiry__errors,
.estate-enquiry__thanks { margin: 0 0 1rem; padding: 1rem 1.2rem; border-radius: var(--radius-key); }
.estate-enquiry__errors { background: var(--color-error-surface); color: var(--color-error); border: var(--border-control) solid var(--color-error); }
.estate-enquiry__thanks { background: var(--color-success-surface); color: var(--color-success); }
.estate-enquiry__error { color: var(--color-error); font-weight: var(--weight-semibold); font-size: var(--text-small); }
.estate-enquiry__input[aria-invalid="true"] { border: var(--border-control) solid var(--color-error); }

/* ---------- Responsive ---------- */
@media (max-width: 1100px) {
  .estate-finder,
  .estate-site-plan,
  .estate-enquiry__layout { grid-template-columns: minmax(0, 1fr); }
  .estate-availability__rooms,
  .estate-availability__buildings { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .band:has(> .estate-plan-figure) { display: block; }
  .band:has(> .estate-plan-figure) > .estate-plan-figure { margin-bottom: var(--space-7); }
  .band:has(> .estate-plan-figure) > .estate-room-table { margin-bottom: var(--space-7); }
}

@media (max-width: 720px) {
  .estate-flat-list thead { display: none; }
  .estate-elevation { grid-template-columns: minmax(0, 1fr); }
  .estate-elevation,
  .estate-availability__rooms,
  .estate-availability__buildings { grid-template-columns: minmax(0, 1fr); }
  .estate-flat-row {
    grid-template-columns: 96px repeat(2, minmax(0, 1fr));
    gap: 0.6rem 0.9rem;
    padding: 0.8rem;
  }
  .estate-flat-row > td[data-label]::before,
  .estate-flat-row > th[data-label]::before { font-size: var(--text-caption); }
  .estate-flat-row__plan { grid-row: span 4; align-self: start; width: 96px; height: 80px; }
  .estate-flat-row__plan svg { width: 86px; height: 68px; }
  .estate-flat-row > th.estate-flat-row__code { grid-column: span 2; font-size: var(--text-flat-number-sm); }
  .estate-flat-card { grid-template-columns: minmax(0, 1fr); }
  .estate-plan-figure__viewport .estate-plan { min-width: 640px; }
  .estate-plan-figure__viewport::before { content: "Przesuń rysunek palcem, żeby zobaczyć całość."; display: block; margin-bottom: 0.4rem; color: var(--color-text-muted); font-size: var(--text-caption); }
}

.estate-enquiry__trap input { width: 24px; height: 24px; }

/* ---------- Scripted parts: favourites, row plan panel, sun controls ---------- */
.estate-row__favourite,
.estate-row__plan-toggle,
.estate-favourite__remove {
  min-width: 44px;
  min-height: 44px;
  padding: 0 1.1rem;
  box-sizing: border-box;
  white-space: nowrap;
  flex: none;
  border: 0;
  border-radius: var(--radius-button);
  background: var(--color-surface);
  box-shadow: inset 0 0 0 var(--border-control) var(--p-navy);
  color: var(--p-navy);
  font: var(--weight-bold) var(--text-ui) var(--font-text);
  cursor: pointer;
  transition: transform var(--duration-fast) var(--ease-out-quart), background-color var(--duration-fast) var(--ease-out-quart);
}
.estate-row__favourite:hover,
.estate-row__plan-toggle:hover,
.estate-favourite__remove:hover { transform: translateY(-2px); background: var(--p-mist); }
.estate-row__favourite[aria-pressed="true"],
.estate-row__plan-toggle[aria-expanded="true"] { background: var(--p-navy); color: var(--p-white); }
.estate-row__favourite-icon { font-size: 1.2rem; line-height: 1; }
.estate-row__plan-panel { padding: 0.8rem; border-radius: var(--radius-choice); background: var(--p-white); overflow-x: auto; }
.estate-row__plan-panel[hidden] { display: none; }
.estate-row__plan-panel svg { display: block; max-width: 100%; height: auto; margin: 0 auto; }

.estate-favourites__status { margin: 0 0 1rem; font-weight: var(--weight-semibold); }
.estate-favourites__list { display: grid; gap: 0.85rem; margin: 0 0 2rem; padding: 0; list-style: none; }
.estate-favourite { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 1rem; align-items: center; padding: 0.8rem; border-radius: var(--radius-sheet); background: var(--color-surface); box-shadow: var(--shadow-sheet); }
.estate-favourite__plan { padding: 0.5rem; border-radius: var(--radius-choice); background: var(--color-surface-2); }
.estate-favourite__plan svg { display: block; width: 100%; height: auto; min-width: 0; max-height: 110px; }
.estate-favourite__body { display: grid; gap: 0.4rem; justify-items: start; }
.estate-favourite__title { margin: 0; font: var(--weight-display) var(--text-flat-number-sm) / 1 var(--font-display); }
.estate-favourite__facts,
.estate-favourite__price { margin: 0; }
.estate-favourite__price { font-weight: var(--weight-bold); }
@media (max-width: 720px) {
  .estate-favourite { grid-template-columns: minmax(0, 1fr); }
}

.estate-sun { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 0.6rem 1.2rem; align-items: end; margin-top: 1rem; }
.estate-sun[hidden] { display: none; }
.estate-sun__field { display: grid; gap: 0.3rem; font-weight: var(--weight-bold); font-size: var(--text-ui); }
.estate-sun__hour { width: 100%; min-height: 32px; accent-color: var(--p-navy); }
.estate-sun__month { min-height: var(--height-control); padding: 0.4rem 0.6rem; border: var(--border-hairline) solid var(--color-border-control); border-radius: var(--radius-choice); background: var(--p-white); color: var(--p-navy); font: var(--weight-semibold) var(--text-ui) var(--font-text); }
.estate-sun__readout { grid-column: 1 / -1; color: var(--color-text-muted); font-size: var(--text-ui); }
.estate-plan__sun { transition: opacity var(--duration-normal) var(--ease-out-quart); }
@media (prefers-reduced-motion: reduce) {
  .estate-plan__sun,
  .estate-flat-row,
  .estate-row__favourite,
  .estate-row__plan-toggle { transition: none; }
}
@media (max-width: 720px) {
  .estate-sun { grid-template-columns: minmax(0, 1fr); }
}

.estate-comparison { width: 100%; margin: 0 0 1.5rem; border-collapse: collapse; background: var(--color-surface); border-radius: var(--radius-sheet); overflow: hidden; box-shadow: var(--shadow-sheet); }
.estate-comparison__caption { padding: 0.8rem 1rem; text-align: left; font-weight: var(--weight-bold); }
.estate-comparison th,
.estate-comparison td { padding: 0.7rem 1rem; text-align: left; border-top: 1px solid var(--p-mist); }
.estate-comparison thead th { font: var(--weight-display) var(--text-flat-number-sm) / 1 var(--font-display); }
.estate-comparison tbody th { font-weight: var(--weight-semibold); color: var(--color-text-muted, var(--color-text)); }
@media (max-width: 720px) {
  .estate-comparison { display: block; overflow-x: auto; }
}
.estate-comparison__plan { margin-bottom: 0.5rem; padding: 0.5rem; border-radius: var(--radius-choice); background: var(--color-surface-2); }
.estate-comparison__plan svg { display: block; width: 100%; height: auto; min-width: 0; max-height: 280px; }
.estate-comparison td.is-highest { background: var(--p-linden); font-weight: var(--weight-bold); box-shadow: inset 4px 0 0 var(--p-amber); }
