/*
Theme Name: MyHome Child - Elite Real Estates
Theme URI: https://eliteestateagentsnottingham.co.uk
Description: Child theme for Elite Real Estates. Holds the listing-card action
             buttons (View property / WhatsApp) and nothing else, so MyHome can
             be updated without losing the customisation.
Author: Elite Real Estates
Template: myhome
Version: 1.0.0
Text Domain: myhome-child
*/

/* ---------------------------------------------------------------------------
   Listing card actions.
   MyHome renders the whole card as a single <a>, and an anchor cannot legally
   contain another anchor. So the actions are appended *after* the card and the
   two are wrapped together here. The card stays clickable, the buttons work,
   and the markup stays valid.

   Every colour resolves to an Elementor global, so this follows Site Settings
   like the rest of the site.
   --------------------------------------------------------------------------- */
.elite-card {
  display: flex;
  flex-direction: column;
  height: 100%;
}

.elite-card > .myhome-listing-card {
  flex: 1 1 auto;
}

.elite-card__actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border: 1px solid var(--e-global-color-lcolor3, #E6E3DD);
  border-top: 0;
}

.elite-card__actions a {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 46px;
  padding: 12px 10px;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.3;
  text-align: center;
  text-decoration: none;
  border-radius: 0;
  transition: background-color .2s ease, color .2s ease;
}

.elite-card__actions a:focus-visible {
  outline: 2px solid var(--e-global-color-egold01, #B4894E);
  outline-offset: -2px;
}

.elite-card__view {
  background: var(--e-global-color-lprimary1, #0C2340);
  color: var(--e-global-color-lcolor5, #FFFFFF);
}

.elite-card__view:hover,
.elite-card__view:focus {
  background: var(--e-global-color-lprimary2, #16345C);
  color: var(--e-global-color-lcolor5, #FFFFFF);
}

.elite-card__wa {
  background: transparent;
  color: var(--e-global-color-lprimary1, #0C2340);
  border-left: 1px solid var(--e-global-color-lcolor3, #E6E3DD);
}

.elite-card__wa:hover,
.elite-card__wa:focus {
  background: var(--e-global-color-lsectionbg, #F6F4F0);
  color: var(--e-global-color-lprimary1, #0C2340);
}

.elite-card__actions svg {
  width: 15px;
  height: 15px;
  flex: 0 0 15px;
  fill: currentColor;
}

/* Carousel slides size themselves, so the wrapper must not collapse. */
.myhome-swiper-slide .elite-card {
  height: 100%;
}

@media (max-width: 400px) {
  .elite-card__actions a {
    font-size: 12px;
    padding: 12px 6px;
  }
}

/* ---------------------------------------------------------------------------
   Contact Form 7.
   CF7 renders its own markup, so this cannot be done with Elementor controls.
   Unstyled, the inputs measure 25px tall with 1px padding, which fails the 44px
   touch target and, at 14px, triggers iOS auto-zoom on focus.

   CF7 wraps each control in its <label>, so the label text is a sibling of the
   input inside that label. Making the label a block and the control a block
   below it is what puts the caption above the field instead of beside it.
   --------------------------------------------------------------------------- */
.wpcf7-form {
  --elite-field-border: var(--e-global-color-lcolor3, #E6E3DD);
  --elite-field-bg: var(--e-global-color-lcolor5, #FFFFFF);
  --elite-ink: var(--e-global-color-lcolor1, #1A1A1A);
  --elite-navy: var(--e-global-color-lprimary1, #0C2340);
}

.wpcf7-form .myhome-contact-form-widget__row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px 24px;
}

/* The message row and anything else that should span the full width. */
.wpcf7-form .myhome-contact-form-widget__row > .myhome-contact-form-widget__col:only-child,
.wpcf7-form .myhome-contact-form-widget__col--full {
  grid-column: 1 / -1;
}

.wpcf7-form label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .01em;
  line-height: 1.4;
  color: var(--elite-ink);
  margin: 0;
}

.wpcf7-form .wpcf7-form-control-wrap {
  display: block;
  margin-top: 8px;
}

.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form input[type="tel"],
.wpcf7-form input[type="url"],
.wpcf7-form input[type="number"],
.wpcf7-form input[type="date"],
.wpcf7-form select,
.wpcf7-form textarea {
  display: block;
  box-sizing: border-box;
  width: 100%;
  /* !important on these two only: Elementor's kit rule
     `.elementor-kit-5417 input:not([type="button"]):not([type="submit"])`
     out-specifies this one. 48px is the touch-target minimum and 16px is what
     stops iOS zooming the page when the field takes focus, so neither is
     allowed to lose. Everything else below is left to normal cascade order. */
  min-height: 48px !important;
  padding: 12px 14px;
  font-size: 16px !important;
  font-family: inherit;
  line-height: 1.5;
  color: var(--elite-ink);
  background-color: var(--elite-field-bg);
  border: 1px solid var(--elite-field-border);
  border-radius: 0;
  transition: border-color .2s ease, box-shadow .2s ease;
  -webkit-appearance: none;
  appearance: none;
}

.wpcf7-form textarea {
  min-height: 140px;
  resize: vertical;
}

/* Native select loses its arrow once appearance is cleared, so draw one. */
.wpcf7-form select {
  padding-right: 40px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230C2340' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 16px 16px;
}

.wpcf7-form ::placeholder {
  color: var(--e-global-color-lcolor2, #6B6B6B);
  opacity: 1;
}

.wpcf7-form :is(input, select, textarea):focus-visible {
  outline: none;
  border-color: var(--elite-navy);
  box-shadow: inset 0 0 0 1px var(--elite-navy);
}

/* Validation. CF7 puts the field error immediately after the control, which is
   where it should stay; it just needs to look like an error. */
.wpcf7-not-valid-tip {
  display: block;
  margin-top: 6px;
  font-size: 13px;
  font-weight: 500;
  color: #B3261E;
}

.wpcf7-form :is(input, select, textarea).wpcf7-not-valid {
  border-color: #B3261E;
}

.wpcf7-response-output {
  margin: 20px 0 0;
  padding: 12px 16px;
  font-size: 14px;
  border: 1px solid var(--elite-field-border);
  border-radius: 0;
}

.wpcf7-form.invalid .wpcf7-response-output,
.wpcf7-form.failed .wpcf7-response-output {
  border-color: #B3261E;
  color: #B3261E;
}

.wpcf7-form.sent .wpcf7-response-output {
  border-color: var(--elite-navy);
  color: var(--elite-navy);
}

.wpcf7-spinner {
  margin: 0 0 0 12px;
  vertical-align: middle;
}

@media (max-width: 767px) {
  .wpcf7-form .myhome-contact-form-widget__row {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ---------------------------------------------------------------------------
   MyHome carousel "View all".
   Its wrapper is sized to the text box rather than the text, which wraps the
   label onto two lines and leaves it sitting off the heading baseline.
   --------------------------------------------------------------------------- */
.myhome-listing-carousel__button {
  width: auto;
  flex: 0 0 auto;
}

.myhome-listing-carousel__button .myhome-button,
.myhome-listing-carousel__button .myhome-button span {
  white-space: nowrap;
}


/* ---------------------------------------------------------------------------
   Touch targets for text links.
   Measured on a 375px Android viewport: the topbar phone/email render at 17-21px
   tall and the footer legal links at 21px, against a 44px minimum. Tapping the
   phone number is the single most important action on an estate agency site on
   a phone, so these cannot stay thumb-sized.

   Scoped to (pointer: coarse) so the desktop layout is untouched, and to the two
   inline icon-lists that actually carry these links (topbar contact and footer
   legal) rather than every icon-list on the site.
   --------------------------------------------------------------------------- */
@media (pointer: coarse) {
  .elementor-inline-items .elementor-icon-list-item > a,
  .myhome-small-data__value a,
  .myhome-menu-mobile__data-value a,
  a[href^="tel:"],
  a[href^="mailto:"] {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }

  /* The taller hit area would otherwise push these rows apart, so the extra
     height is absorbed rather than added to the layout. */
  .elementor-inline-items .elementor-icon-list-item,
  .myhome-small-data__value,
  .myhome-menu-mobile__data-value {
    display: flex;
    align-items: center;
  }
}

/* MyHome's own search and listing controls, measured at 21-36px on a phone.
   These are working controls, so they are sized up, not replaced: the filters
   drawer, its close and reset, the attachment links and the agent link. */
@media (pointer: coarse) {
  /* MyHome sets min-height:36px on the filters button from a two-class
     selector, so the override has to be forced rather than merely specific. */
  .myhome-search-map-v2-rail__filters-button,
  .myhome-search-map-v2-filters-drawer__close,
  .myhome-search-map-v2-filters-drawer__reset {
    min-height: 44px !important;
    min-width: 44px;
    height: auto;
  }

  /* The keyword field sits in its own autocomplete wrapper rather than the
     shared .myhome-input, so it misses the rule below. 23px tall at 14px. */
  .myhome-autocomplete-input__input-wrapper input {
    min-height: 44px !important;
    font-size: 16px !important;
  }

  .myhome-attachments .myhome-attachment,
  .myhome-contact-user-box__name {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }
}

/* MyHome's own inputs, used by the mortgage calculator and the search fields.
   They render at 31px, below the touch minimum, and below 16px they make iOS
   zoom the page on focus. Sized up only; the calculator logic is untouched. */
@media (pointer: coarse) {
  .myhome-input input,
  .myhome-input select {
    min-height: 44px;
    font-size: 16px;
  }
}

/* MyHome carousel header sits 30px off the cards, which reads tight against the
   60px band padding around it. The heading row owns the gap, not the band. */
.myhome-listing-carousel__top {
  margin-bottom: 14px;
}

/* ---------------------------------------------------------------------------
   One rail for the whole site.
   Measured at 1885px, where the content rail is 283..1603 (1320 wide), three
   things sat on their own widths: the header menu at 1230, the search form at
   1040, and the topbar at 1380. The kit's container width now handles the
   containers; these two are MyHome components that size themselves.
   --------------------------------------------------------------------------- */
/* Elementor derives every boxed container from --container-max-width, which the
   kit sets to 1380. Pinning it here rather than in the kit keeps the rail at
   1320 without writing to Site Settings, which is where the brand colours,
   typography and MyHome's listing-card configuration all live. */
/* Elementor writes --content-width straight onto the container (min(100%,1380px)),
   so overriding --container-max-width alone does nothing. */
.e-con {
  --content-width: min(100%, 1320px) !important;
}

/* ---------------------------------------------------------------------------
   MyHome components on the brand type scale.
   The theme sets the document font to "Play" and its section headings to the
   body face, so anything that inherits rather than carrying an Elementor token
   rendered in a typeface that is not part of this brand at all.
   --------------------------------------------------------------------------- */
body {
  font-family: var(--e-global-typography-ltext1-font-family, Inter), sans-serif;
}

/* Section headings on MyHome widgets (the listing carousel, term lists) were
   Inter 31px against a brand H2 of Source Serif 4 39px. */
.myhome-heading__text {
  font-family: var(--e-global-typography-lheading2-font-family), serif;
  font-size: var(--e-global-typography-lheading2-font-size);
  font-weight: var(--e-global-typography-lheading2-font-weight);
  line-height: var(--e-global-typography-lheading2-line-height);
  letter-spacing: var(--e-global-typography-lheading2-letter-spacing);
  color: var(--e-global-color-lprimary1, #0C2340);
}

/* Carousel arrows: square, hairline, navy on hover, matching the buttons. */
.myhome-box-arrow {
  width: 44px;
  height: 44px;
  border: 1px solid var(--e-global-color-lcolor3, #E6E3DD);
  border-radius: 0;
  background: transparent;
  color: var(--e-global-color-lprimary1, #0C2340);
  transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}

.myhome-box-arrow:hover:not(.myhome-box-arrow--disabled) {
  background: var(--e-global-color-lprimary1, #0C2340);
  border-color: var(--e-global-color-lprimary1, #0C2340);
  color: var(--e-global-color-lcolor5, #FFFFFF);
}

.myhome-box-arrow--disabled {
  opacity: .35;
  cursor: default;
}

.myhome-menu__container {
  max-width: 1320px;
}

/* The search form sized itself to its fields (1040px) and stopped 280px short
   of the rail. The form is `--inline-flex`, so it is content-sized, and each
   field is a fixed 281px. Both have to give: the chain stretches to the rail,
   and the fields then share it instead of bunching to the left. */
/* Elementor sizes this widget from --container-widget-width, which MyHome sets
   to the form's natural 1040px. Overriding the variable is what actually moves
   it; setting width alone loses to `width: var(--container-widget-width)`. */
.elementor-widget-mh_search_form {
  --container-widget-width: 100%;
}

.elementor-widget-mh_search_form,
.elementor-widget-mh_search_form > .elementor-widget-container,
.myhome-search-form--wrapper,
.myhome-search-form.myhome-search-form--inline-flex,
.myhome-search-form__inner {
  width: 100%;
}

.myhome-search-form__fields > .myhome-field-v2,
.myhome-search-form__fields > .myhome-range-field {
  flex: 1 1 0;
  min-width: 0;
  width: auto;
}

/* ---------------------------------------------------------------------------
   Search results on the rail.
   The H1 sat at x=101 on the 1320 rail while the filter bar and the results
   grid started at x=15, an 86px break between a page and its own title. The
   results shell is full width with 15px padding, so it gets the rail instead.
   --------------------------------------------------------------------------- */
.myhome-search-map-v2-results__shell {
  padding-left: max(24px, calc((100% - 1320px) / 2));
  padding-right: max(24px, calc((100% - 1320px) / 2));
}

/* Five and six across at wide viewports made the cards postage stamps. Three
   columns on the 1320 rail gives roughly 420px per card. */
@media (min-width: 1200px) {
  .myhome-listing-grid--small-cards {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* ---------------------------------------------------------------------------
   Card hierarchy.
   Title and price were both 16px, so GBP 1,800,000 carried no more weight than
   "Minimalist style flat". Price leads, address supports, title steps back.
   --------------------------------------------------------------------------- */
.myhome-listing-card__value {
  /* !important on size only: the colour from this rule lands but a more
     specific MyHome rule owns font-size, so the price stayed level with the
     title at 16px. */
  font-size: 22px !important;
  line-height: 1.2;
  color: var(--e-global-color-lprimary1, #0C2340);
}

.myhome-listing-card__name {
  font-size: 15px !important;
  font-weight: 500;
}

.myhome-listing-card-additional-attribute__value {
  font-size: 14px;
  color: var(--e-global-color-lcolor2, #5A5F65);
}

/* ===========================================================================
   Search results page: sidebar filters.

   MyHome's "Sidebar Search" template is now the Search Results Page, so the
   filters are a real column instead of a row of dropdowns. Everything below is
   skin only: no markup is replaced, so filtering, sorting, pagination and the
   saved-search nonce keep working exactly as the theme intends.
   Every colour resolves to an Elementor global, so Site Settings still rules.
   =========================================================================== */
.myhome-search-v2__container {
  max-width: 1320px;
  margin: 0 auto;
}

/* MyHome sizes the sidebar from its own custom property and caps it with
   max-width, so setting the property is what actually widens it. */
/* The template sets this property on a widget-scoped selector, which outranks
   anything written by class alone, so the override is marked important rather
   than specificity-chased. */
.myhome-search-v2,
.myhome-search-v2 .myhome-search-v2__sidebar {
  --mh-search-sidebar-width: 300px !important;
}

.myhome-search-v2__content {
  gap: 32px;
}

/* Each filter becomes its own card, the way the brief's reference groups them. */
.myhome-search-sidebar > .myhome-search-form-field,
.myhome-search-sidebar > .myhome-search-panel {
  background: #fff;
  border: 1px solid var(--e-global-color-lcolor3, #E6E3DD);
  border-radius: 0;
  padding: 18px;
  margin-bottom: 16px;
}

/* The panel inside each card carried its own 20px side padding and 20px of
   bottom padding, so the contents sat 38px in from the card edge and the gap
   under the last field was more than twice the gap above the heading. The
   card owns the spacing now, and it is even on all four sides. */
.myhome-search-sidebar .myhome-search-panel__top {
  border-bottom: 1px solid var(--e-global-color-lcolor3, #E6E3DD);
  padding: 0 0 12px !important;
  margin: 0 0 14px !important;
}

.myhome-search-sidebar .myhome-search-panel__content {
  padding: 0 !important;
  margin: 0 !important;
}

.myhome-search-sidebar .myhome-search-panel__label {
  font-family: var(--e-global-typography-llabel-font-family, "Inter"), sans-serif;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--e-global-color-lprimary1, #0C2340);
  display: flex;
  align-items: center;
  gap: 9px;
}

/* One outline glyph per group, matching the icon set used across the site. */
.myhome-search-sidebar .myhome-search-panel__label::before {
  font-family: "Font Awesome 5 Free";
  font-weight: 400;
  font-size: 13px;
  line-height: 1;
  color: var(--e-global-color-egold01, #B4894E);
  content: "\f0c8";
}
.myhome-search-form-field--myhome_9508 .myhome-search-panel__label::before { content: "\f279"; }
.myhome-search-form-field--myhome_15545 .myhome-search-panel__label::before { content: "\f14e"; }
/* An empty square read as an unticked checkbox beside the real ones. */
.myhome-search-form-field--myhome_340 .myhome-search-panel__label::before { content: "\f24d"; }
.myhome-search-form-field--myhome_9733 .myhome-search-panel__label::before { content: "\f133"; }
.myhome-search-form-field--myhome_4661 .myhome-search-panel__label::before { content: "\f022"; }

.myhome-search-sidebar .myhome-search-panel__circle {
  border-color: var(--e-global-color-lcolor3, #E6E3DD);
}

/* Nothing is hidden, so the rows carry their own weight: a tighter row keeps
   a 24 option list from running a long way past the results beside it. */
.myhome-search-sidebar .myhome-search-panel__item-wrapper {
  padding: 3px 0;
}

.myhome-search-sidebar .myhome-search-panel__item {
  min-height: 0;
}

.myhome-search-sidebar .myhome-search-panel__list {
  gap: 2px;
}

.myhome-search-sidebar .myhome-search-panel__item-label {
  font-size: 14px;
  line-height: 1.35;
  color: var(--e-global-color-lcolor2, #5A5F65);
}

.myhome-search-sidebar .myhome-search-panel__item-label span {
  color: var(--e-global-color-lcolor3, #E6E3DD);
  font-size: 12px;
}

.myhome-search-sidebar .myhome-search-panel__item:not(.myhome-search-panel__item--disabled):hover
  .myhome-search-panel__item-label {
  color: var(--e-global-color-lprimary1, #0C2340);
}

/* Checkboxes: square, navy when on, so they read as part of the same system
   as the buttons rather than as the theme's default blue. */
.myhome-search-sidebar .myhome-checkbox {
  border-radius: 0 !important;
  border: 1px solid var(--e-global-color-lcolor3, #E6E3DD) !important;
  width: 18px !important;
  height: 18px !important;
}

.myhome-search-sidebar .myhome-checkbox--checked,
.myhome-search-sidebar .myhome-checkbox.myhome-checkbox--active {
  background: var(--e-global-color-lprimary1, #0C2340) !important;
  border-color: var(--e-global-color-lprimary1, #0C2340) !important;
}

/* Min / max fields inside Property Size and Year Built. */
.myhome-search-sidebar input[type="text"],
.myhome-search-sidebar input[type="number"] {
  width: 100%;
  height: 42px;
  border: 1px solid var(--e-global-color-lcolor3, #E6E3DD) !important;
  border-radius: 0 !important;
  padding: 0 12px;
  font-size: 14px !important;
  color: var(--e-global-color-lprimary1, #0C2340);
  background: #fff;
}

.myhome-search-sidebar input[type="text"]:focus,
.myhome-search-sidebar input[type="number"]:focus {
  border-color: var(--e-global-color-egold01, #B4894E) !important;
  outline: none;
}

/* ---------------------------------------------------------------------------
   Results header and the row above the grid.
   --------------------------------------------------------------------------- */
.myhome-search-results__row {
  align-items: flex-end;
  padding-bottom: 18px;
  margin-bottom: 26px;
  border-bottom: 1px solid var(--e-global-color-lcolor3, #E6E3DD);
}

.myhome-search-results__results-number-count {
  font-family: var(--e-global-typography-lheading2-font-family, "Source Serif 4"), serif;
  font-size: 30px;
  color: var(--e-global-color-lprimary1, #0C2340);
}

.myhome-search-results__results-number-label {
  font-size: 14px;
  color: var(--e-global-color-lcolor2, #5A5F65);
}

/* The template prints the post type as the page H1. It stays in the document
   for search engines, set as a kicker rather than competing with the count. */
.myhome-search-results__title {
  font-family: var(--e-global-typography-llabel-font-family, "Inter"), sans-serif !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--e-global-color-lcolor2, #5A5F65) !important;
  margin: 6px 0 0 !important;
}

/* ---------------------------------------------------------------------------
   Cards: three across on the rail, with a lift on hover.
   --------------------------------------------------------------------------- */
@media (min-width: 1025px) {
  .myhome-search-v2 .myhome-listing-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 24px;
  }
}

@media (min-width: 641px) and (max-width: 1024px) {
  .myhome-search-v2 .myhome-listing-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

.myhome-listing-card,
.myhome-listing-card__wrapper {
  transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.myhome-listing-card__wrapper:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 28px rgba(12, 35, 64, 0.1);
}

/* Sidebar stacks above the results below desktop. */
@media (max-width: 1024px) {
  .myhome-search-v2__sidebar--desktop {
    width: 100%;
    flex: 1 1 100%;
  }
}

/* The search results cards are the same component as the homepage carousel
   cards and are left alone, so the two match exactly. */

/* Pagination: square, navy when current, to match the buttons. */
.myhome-search-results__pagination .myhome-pagination__item,
.myhome-pagination__item {
  border-radius: 0 !important;
}

/* ---------------------------------------------------------------------------
   Search results page, second pass. Four defects found by looking at the page
   at full size rather than at a thumbnail.
   --------------------------------------------------------------------------- */

/* The keyword field draws a border on the wrapper and again on the input
   inside it, so the field read as a box within a box. */
.myhome-autocomplete-input input,
.myhome-main-search-form input[type="text"] {
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  height: 100%;
  width: 100%;
}

/* The filter panels carry a fixed height, which left a dead white band under
   a four-row list. The card now fits its contents and the list scrolls in
   whole rows (36px each) so no label is ever cut in half. */
.myhome-search-sidebar .myhome-search-panel,
.myhome-search-sidebar .myhome-search-panel--limit-height {
  height: auto !important;
}

.myhome-search-sidebar .myhome-search-panel__content {
  height: auto !important;
}

.myhome-search-sidebar .myhome-search-panel__list,
.myhome-search-sidebar .myhome-search-panel--limit-height .myhome-search-panel__list {
  /* Every option stays on the page. The theme caps this list at 170px and
     scrolls it inside the card, which hid most of Region, Subregion and
     Features behind a 4px scrollbar. */
  max-height: none !important;
  height: auto !important;
  overflow: visible !important;
}

/* A grey dot floated at the end of every filter heading. It carries no
   meaning at this size and read as a rendering fault. */
.myhome-search-sidebar .myhome-search-panel__circle {
  display: none !important;
}

/* The grid / list switch is removed: the grid is the layout we have designed
   for, and the list view has its own card treatment we do not use. */
.myhome-search-results__views,
.myhome-view-selector-group {
  display: none !important;
}

/* The template prints the post type, "Real Estate", beside the result count.
   It stays in the markup as the page H1 for search engines and is taken off
   the screen, since the count and the breadcrumb already say where you are. */
.myhome-search-results__title {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  margin: -1px !important;
  padding: 0 !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

/* ===========================================================================
   Display scale.

   The pages read as ordinary because everything sat at one size: headings a
   little larger than the body, and nothing at display size. Site Settings is
   never rewritten, so the scale lives here and the builders hang a class on
   the elements that should carry it.
   =========================================================================== */
.e-display .elementor-heading-title {
  font-size: clamp(42px, 5.4vw, 84px) !important;
  line-height: 1.02 !important;
  letter-spacing: -0.02em;
}

.e-display-2 .elementor-heading-title {
  font-size: clamp(30px, 3.4vw, 52px) !important;
  line-height: 1.08 !important;
  letter-spacing: -0.015em;
}

.e-figure .elementor-heading-title {
  font-size: clamp(34px, 3.4vw, 56px) !important;
  line-height: 1 !important;
  font-weight: 300;
  letter-spacing: -0.01em;
}

/* A two line display heading breaks evenly rather than leaving one
   word on the second line. */
.e-display .elementor-heading-title,
.e-display-2 .elementor-heading-title {
  text-wrap: balance;
}

/* Figures set in the brand gold sit on paper and white, where #B4894E
   reaches only 2.9:1. Inside a figure the gold variable resolves to a
   shade that clears 3:1 for large text; on navy the figures use the
   light gold and are untouched. */
.e-figure {
  --e-global-color-egold01: #A57A42;
}

/* Photographs lift very slightly under the cursor. Nothing moves far: the
   point is that the page feels made, not that it animates. */
.myhome-listing-card__wrapper,
.e-con[class*="elementor-element"][style*="background-image"] {
  transition: transform 0.5s cubic-bezier(0.2, 0.6, 0.2, 1);
}

/* The arrow on a text link slides on hover. */
.elementor-button .elementor-button-icon {
  transition: transform 0.25s ease;
  display: inline-block;
}
.elementor-button:hover .elementor-button-icon {
  transform: translateX(4px);
}
