.public-body {
  --red: #c60012;
  --red-dark: #a4000f;
  --contact-height: 0px;
  --consent-height: 0px;
}

.public-body :focus-visible { outline-color: var(--red-dark); }
.public-body .site-header { gap: 18px; }
.public-body .brand-lockup { min-width: 0; flex-shrink: 1; }
.public-body .brand-lockup img { object-fit: contain; flex-shrink: 0; }
.public-body .site-navigation { gap: 16px; }
.public-body .header-actions { gap: 10px; margin-left: 0; flex-shrink: 0; }
.public-body .locale-switcher summary { min-height: 44px; display: flex; align-items: center; font-size: 13px; }
.public-body .locale-switcher a { min-height: 44px; }
.public-body .locale-switcher a[aria-current] { background: var(--soft); color: var(--red-dark); }
.public-body .public-company-nav { position: relative; }
.public-body .public-company-nav summary { cursor: pointer; padding-block: 26px; }
.public-body .public-company-nav > div {
  position: absolute;
  right: 0;
  top: 100%;
  min-width: 230px;
  padding: 8px 16px;
  border: 1px solid var(--line);
  background: #fff;
  box-shadow: 0 12px 30px #0002;
}
.public-body .public-company-nav a { display: block; padding-block: 12px; white-space: normal; }
.public-body .site-navigation > a[aria-current] { border-color: var(--red); }
.public-body .catalogue-count-note {
  width: min(1190px, calc(100% - 40px));
  margin: 16px auto 0;
  color: #51565c;
  font-size: 14px;
  line-height: 1.5;
}
.public-body .proof-strip a { display: grid; gap: 4px; }
.public-body .proof-strip a:hover span { text-decoration: underline; }
.public-body .hero h1 { overflow-wrap: anywhere; hyphens: auto; }
.public-body .hero-search label > span,
.public-body .catalog-filters label > span { color: #42474c; }
.public-body .catalog-view-switch button { color: #222; }
.public-body .catalog-view-switch button[aria-pressed=true] { color: #fff; }
.public-body .catalog-map-toolbar { color: #30353b; }
.public-body .catalog-map-toolbar button { background: var(--red-dark); }
.public-body .marker-cluster div { background: var(--red-dark); color: #fff; }

/* Reserve the label row independently of wrapped translations and error hints. */
.public-body .phone-field,
.public-body .floorplan-phone { align-items: start; grid-template-columns: minmax(90px, .65fr) minmax(0, 1fr); }
.public-body :is(.phone-field, .floorplan-phone) > label {
  min-width: 0;
  grid-template-rows: minmax(2.8em, auto) 46px;
  align-items: end;
}
.public-body :is(.phone-field, .floorplan-phone) input {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  height: 46px;
  align-self: start;
}
.public-body :is(.phone-field, .floorplan-phone) :is(small, .field-error) { align-self: start; }
.public-body #property-contact { scroll-margin-top: calc(var(--header) + 16px); }
.public-body .contact-floats { bottom: calc(var(--consent-height) + 24px); }
.public-body .enquiry-float { display: none; }
.public-body .consent-banner {
  padding: 14px 18px;
  gap: 18px;
  max-height: calc(100dvh - var(--header) - 40px);
  overflow-y: auto;
}
.public-body .consent-banner > div:first-child { min-width: 0; }
.public-body .consent-banner strong { font-size: 16px; line-height: 1.4; }
.public-body .consent-banner p { margin: 6px 0 0; font-size: 14px; line-height: 1.4; }
.public-body .consent-actions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  flex: 0 1 530px;
}
.public-body .consent-actions button,
.public-body .consent-actions .primary {
  min-height: 44px;
  padding: 8px 10px;
  background: #fff;
  color: var(--ink);
  border: 1px solid var(--ink);
  font: 700 14px/1.3 'Source Sans 3', Arial, sans-serif;
  white-space: normal;
  overflow-wrap: anywhere;
  hyphens: auto;
}
.public-body .consent-actions button:hover { background: var(--soft); }
.public-body .footer-languages nav { flex-wrap: wrap; }
.public-body .footer-languages a { min-height: 44px; display: inline-flex; align-items: center; }

@media (max-width: 1380px) {
  .public-body .menu-toggle { display: block; margin-left: auto; flex-shrink: 0; }
  .public-body .site-navigation {
    display: none;
    position: absolute;
    inset: var(--header) 0 auto;
    padding: 14px 24px;
    border-block: 1px solid var(--line);
    background: #fff;
    max-height: calc(100dvh - var(--header) - var(--contact-height) - var(--consent-height) - 24px);
    overflow: auto;
    white-space: normal;
  }
  .public-body .site-navigation.open { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 20px; }
  .public-body .site-navigation a { padding-block: 12px; min-width: 0; overflow-wrap: anywhere; }
  .public-body .public-company-nav { grid-column: 1 / -1; border-top: 1px solid var(--line); }
  .public-body .public-company-nav summary { padding-block: 14px; }
  .public-body .public-company-nav > div { position: static; box-shadow: none; border: 0; min-width: 0; padding: 0; }
  .public-body.menu-open .contact-floats { visibility: hidden; }
}

@media (max-width: 900px) {
  .public-body .consent-banner { flex-direction: column; align-items: stretch; gap: 10px; }
  .public-body .consent-actions { flex: none; }
}

@media (max-width: 700px) {
  .public-body { --contact-height: calc(65px + env(safe-area-inset-bottom)); padding-bottom: calc(var(--contact-height) + var(--consent-height) + 24px); }
  .public-body .site-header { padding-inline: 12px; gap: 8px; }
  .public-body .brand-lockup { gap: 6px; }
  .public-body .brand-larhomes { width: 110px; max-width: 100%; height: auto; }
  .public-body .brand-pena { width: 66px; height: auto; }
  .public-body .header-actions { gap: 6px; }
  .public-body .header-actions .search-link { display: none; }
  .public-body .locale-switcher summary { font-size: 12px; padding-inline: 2px; }
  .public-body .menu-toggle { width: 40px; height: 44px; padding: 10px; }
  .public-body .contact-floats {
    left: 0;
    right: 0;
    bottom: 0;
    grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr) minmax(0, 1fr);
    gap: 8px;
    padding: 8px 12px calc(8px + env(safe-area-inset-bottom));
  }
  .public-body .contact-floats .enquiry-float {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    min-height: 48px;
    border-radius: 4px;
    background: var(--red-dark);
    color: #fff;
    font-size: 15px;
    font-weight: 700;
  }
  .public-body .contact-floats .call-float { border: 1px solid var(--red-dark); background: #fff; color: var(--red-dark); }
  .public-body .contact-floats .whatsapp-float { background: #fff; }
  .public-body .contact-floats :is(.call-float, .whatsapp-float) { gap: 6px; min-width: 0; font-size: 13px; }
  .public-body .contact-floats .call-float svg { width: 20px; height: 20px; flex-shrink: 0; }
  .public-body .contact-floats .whatsapp-float img { width: 24px; height: 24px; flex-shrink: 0; }
  .public-body:has(.lead-form:focus-within, .floorplan-form:focus-within, dialog[open]) .contact-floats { visibility: hidden; }
  .public-body .consent-banner {
    left: 8px;
    right: 8px;
    bottom: calc(var(--contact-height) + 8px);
    padding: 12px;
    max-height: calc(100dvh - var(--header) - var(--contact-height) - 24px);
  }
  .public-body .consent-actions { gap: 6px; }
  .public-body .consent-actions :is(button, .primary) { padding: 8px 4px; font-size: 13px; }
  .public-body :is(.phone-field, .floorplan-phone) input { font-size: 16px; }
  .public-body .catalog-view-switch { max-width: 100%; }
  .public-body .catalog-view-switch button { white-space: normal; min-width: 0; }
  .public-body .results-bar { flex-wrap: wrap; }
}

@media (max-width: 380px) {
  .public-body .brand-pena { display: none; }
  .public-body .contact-floats { grid-template-columns: minmax(0, 1fr) 48px minmax(0, 1fr); }
  .public-body .contact-floats .call-float .contact-action-label { display: none; }
  .public-body .consent-actions :is(button, .primary) { padding-inline: 2px; font-size: 12px; }
}
