/* single property page */

.single-property #content-container {
  max-width: 1240px;
  padding: 2em 2em 6em;
}

.property-page {
  position: relative;
}

.property-page img {
  max-width: 100%;
  height: auto;
}

/* layout */

.property-layout {
  display: block;
}

.property-main {
  min-width: 0;
}

.property-aside {
  margin-top: 3em;
}

/* gallery */

.property-gallery {
  margin: 0 0 2.4em;
}

/*
 * The grid owns the geometry: a fixed container aspect-ratio makes the row
 * tracks definite, so uploads of any dimension can never resize the block.
 * 5 / 2 keeps the featured cell at ~1.47 (it was 1.5) with the 3fr 1fr 1fr
 * columns and the 8px gaps.
 */

.property-gallery-grid {
  display: grid;
  grid-template-columns: 3fr 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  grid-gap: 8px;
  gap: 8px;
  aspect-ratio: 5 / 2;
}

.property-gallery-item {
  display: block;
  position: relative;
  overflow: hidden;
  min-width: 0;
  min-height: 0;
  background: #e8e7dd;
}

/* out of flow so the image cannot contribute to track sizing */

.property-gallery-item img {
  display: block;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center;
}

.property-gallery-item:hover img {
  opacity: .82;
}

/*
 * Photos are guarded: taking no pointer events keeps them from being the target
 * of a right click or a drag, so the browser never offers to save them. The link
 * and the buttons around them still receive every click.
 */

.property-gallery-item img,
.property-viewer-image,
.property-viewer-thumb img {
  pointer-events: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -webkit-user-drag: none;
  -webkit-touch-callout: none;
}

.property-gallery-featured {
  grid-column: 1;
  grid-row: 1 / span 2;
}

.property-gallery-more:after {
  content: attr(data-more);
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: rgba(13, 13, 12, .62);
  color: #fff;
  font-family: Miso-Bold, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 2.6em;
  line-height: 1;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
}

.property-gallery-grid--1 {
  grid-template-columns: 1fr;
  grid-template-rows: 1fr;
  aspect-ratio: 3 / 2;
}

.property-gallery-grid--1 .property-gallery-featured {
  grid-row: 1;
}

.property-gallery-grid--2 {
  grid-template-columns: 3fr 1fr;
  grid-template-rows: 1fr;
  aspect-ratio: 2 / 1;
}

.property-gallery-grid--2 .property-gallery-featured {
  grid-row: 1;
}

.property-gallery-grid--3,
.property-gallery-grid--4 {
  grid-template-columns: 3fr 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  aspect-ratio: 5 / 2;
}

.property-gallery-grid--3 .property-gallery-item:not(.property-gallery-featured) {
  grid-column: span 2;
}

.property-gallery-grid--4 .property-gallery-item:last-child {
  grid-column: span 2;
}

/* viewer */

.property-viewer {
  display: none;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: rgba(13, 13, 12, .94);
  z-index: 9000;
}

.property-viewer.is-open {
  display: block;
}

.property-viewer-stage {
  position: absolute;
  top: 64px;
  right: 76px;
  bottom: 128px;
  left: 76px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
}

.property-viewer-image {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

/* above the stage image, which would otherwise swallow the taps */

.property-viewer-close,
.property-viewer-prev,
.property-viewer-next {
  position: absolute;
  z-index: 2;
  background: rgba(255, 255, 255, .12);
  border: 0;
  color: #fff;
  text-shadow: none;
  cursor: pointer;
  padding: 0;
}

.property-viewer-close {
  top: 16px;
  right: 20px;
  font-family: Miso-Bold, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1.6em;
  line-height: 1;
  text-transform: uppercase;
  letter-spacing: .06em;
  padding: 10px 16px;
}

.property-viewer-close:hover,
.property-viewer-prev:hover,
.property-viewer-next:hover {
  background: #ddb109;
  color: #3a3628;
}

.property-viewer-prev,
.property-viewer-next {
  top: 50%;
  width: 52px;
  height: 72px;
  margin-top: -36px;
}

.property-viewer-prev {
  left: 12px;
}

.property-viewer-next {
  right: 12px;
}

.property-viewer-prev:before,
.property-viewer-next:before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 14px;
  height: 14px;
  margin: -7px 0 0 -7px;
  border-top: 3px solid currentColor;
  border-right: 3px solid currentColor;
}

.property-viewer-prev:before {
  -webkit-transform: rotate(-135deg);
  transform: rotate(-135deg);
  margin-left: -3px;
}

.property-viewer-next:before {
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
  margin-left: -11px;
}

.property-viewer-counter {
  position: absolute;
  top: 20px;
  left: 24px;
  color: #fff;
  font-family: Miso-Light, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1.8em;
  line-height: 1;
  letter-spacing: .06em;
}

.property-viewer-thumbs {
  position: absolute;
  right: 0;
  bottom: 20px;
  left: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  list-style: none;
  margin: 0;
  padding: 0 20px;
  overflow-x: auto;
}

.property-viewer-thumb-item {
  display: block;
  -ms-flex: 0 0 auto;
  flex: 0 0 auto;
  margin-right: 8px;
}

.property-viewer-thumb {
  display: block;
  background: none;
  border: 2px solid transparent;
  padding: 0;
  cursor: pointer;
  line-height: 0;
}

.property-viewer-thumb img {
  display: block;
  width: 86px;
  height: 58px;
  object-fit: cover;
  opacity: .55;
}

.property-viewer-thumb-item.is-active .property-viewer-thumb {
  border-color: #ddb109;
}

.property-viewer-thumb-item.is-active .property-viewer-thumb img,
.property-viewer-thumb:hover img {
  opacity: 1;
}

.property-viewer--single .property-viewer-prev,
.property-viewer--single .property-viewer-next,
.property-viewer--single .property-viewer-thumbs,
.property-viewer--single .property-viewer-counter {
  display: none;
}

.property-viewer--single .property-viewer-stage {
  top: 64px;
  right: 24px;
  bottom: 24px;
  left: 24px;
}

/* header */

.property-header {
  margin-bottom: 1.6em;
}

.property-title {
  font-family: Miso, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 3.5em;
  line-height: 1.4;
  color: #655d5f;
  border-bottom: 6px solid #ddb109;
  padding-bottom: .12em;
  margin: 0;
}

/* price block */

.property-price-box {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  justify-content: space-between;
  grid-gap: 1em 2em;
  gap: 1em 2em;
  margin-top: 1.4em;
}

.property-price-main {
  -ms-flex: 1 1 auto;
  flex: 1 1 auto;
  min-width: 0;
}

.property-location {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -ms-flex: 0 1 auto;
  flex: 0 1 auto;
  -ms-flex-item-align: start;
  align-self: flex-start;
  font-family: Miso-Light, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1.8em;
  line-height: 1.3;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #3a3628;
  text-decoration: none;
  border: 1px solid #bebdb5;
  background: #fff;
  padding: 8px 12px;
}

.property-location-icon {
  display: block;
  width: 1.05em;
  height: 1.05em;
  margin-right: .45em;
  color: #9f1f63;
  -ms-flex: 0 0 auto;
  flex: 0 0 auto;
}

a.property-location:hover,
a.property-location:focus {
  background: #e8e7dd;
  border-color: #ddb109;
  color: #0d0d0c;
  text-decoration: none;
}

/* share */

.property-header-top {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  grid-gap: .6em 1em;
  gap: .6em 1em;
  margin-bottom: 1em;
}

.property-share {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  position: relative;
  margin-left: auto;
}

.property-share-toggle {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  background: #fff;
  border: 1px solid #bebdb5;
  border-radius: 0;
  color: #3a3628;
  text-shadow: none;
  padding: 0;
  line-height: 0;
  cursor: pointer;
}

.property-share-toggle:hover,
.property-share-toggle:active,
.property-share-toggle[aria-expanded="true"] {
  background: #e8e7dd;
  border-color: #ddb109;
  color: #9f1f63;
  box-shadow: none;
}

.property-share-toggle:focus {
  background: #e8e7dd;
  border-color: #ddb109;
  color: #9f1f63;
  box-shadow: none;
  outline: 0;
}

.property-share-toggle:focus-visible {
  outline: 3px solid #9f1f63;
  outline-offset: 2px;
}

.property-share-icon {
  display: block;
  width: 16px;
  height: 16px;
}

.property-share-popover {
  display: none;
  position: absolute;
  top: 100%;
  right: 0;
  left: auto;
  min-width: 168px;
  max-width: calc(100vw - 2.4em);
  background: #fff;
  border: 1px solid #bebdb5;
  border-top: 3px solid #ddb109;
  -webkit-box-shadow: 0 6px 18px rgba(13, 13, 12, .18);
  box-shadow: 0 6px 18px rgba(13, 13, 12, .18);
  margin-top: 6px;
  padding: 4px;
  z-index: 800;
}

.property-share-popover.is-open {
  display: block;
}

.property-share-option {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  font-family: Miso, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1.6em;
  line-height: 1.4;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #3a3628;
  text-decoration: none;
  padding: 8px 10px;
}

.property-share-option:hover,
.property-share-option:focus,
.property-share-option:active {
  background: #e8e7dd;
  color: #9f1f63;
  text-decoration: none;
}

.property-share-option:focus-visible {
  outline: 2px solid #9f1f63;
  outline-offset: -2px;
}

.property-share-option-icon {
  display: block;
  width: 1em;
  height: 1em;
  margin-right: .5em;
  -ms-flex: 0 0 auto;
  flex: 0 0 auto;
}

.property-badges {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  grid-gap: 6px;
  gap: 6px;
  list-style: none;
  margin: 0;
  padding: 0;
  min-width: 0;
}

.property-badge {
  display: inline-block;
  font-family: Miso-Bold, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1.4em;
  line-height: 1;
  text-transform: uppercase;
  letter-spacing: .08em;
  padding: 6px 12px;
  margin: 0;
}

.property-badge-purpose {
  background: #ddb109;
  color: #3a3628;
}

.property-badge-kind {
  border: 1px solid #bebdb5;
  color: #655d5f;
}

.property-price {
  font-family: Miso-Bold, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 5.2em;
  line-height: 1;
  letter-spacing: -.01em;
  color: #0d0d0c;
}

.property-price-suffix {
  font-family: Miso-Light, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: .42em;
  color: #655d5f;
  text-transform: uppercase;
}

/*
 * While the chip shares the row with the price, nudge it down by Miso-Bold's
 * cap inset (4px at the 52px price size) so its top edge meets the top of the
 * price glyphs rather than the top of the price line box. Scoped above the
 * stacking breakpoint so the mobile layout is untouched.
 */

@media only screen and (min-width: 768px) {
  .property-location {
    margin-top: 4px;
  }
}

.property-price-extras {
  list-style: none;
  margin: .8em 0 0;
  padding: 0;
}

.property-price-extra {
  display: block;
  font-family: Miso, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1.8em;
  line-height: 1.4;
  color: #504b45;
}

.property-price-extra-label {
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #504b45;
  margin-right: .6em;
}

.property-price-extra-value {
  color: #0d0d0c;
}

/* highlights */

.property-specs {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(112px, 1fr));
  grid-gap: 10px;
  gap: 10px;
  list-style: none;
  margin: 1.6em 0 0;
  padding: 0;
}

/* the grid stretches every tile to the tallest one, so the content is centred
   instead of hanging from the top when a neighbour carries an extra line */

.property-spec {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  background: #fff;
  border: 1px solid #bebdb5;
  border-bottom: 3px solid #ddb109;
  padding: 1.2em .8em;
  text-align: center;
}

.property-spec-head {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
}

.property-spec-icon {
  display: block;
  width: 20px;
  height: 20px;
  margin-right: 8px;
  color: #9f1f63;
  -ms-flex: 0 0 auto;
  flex: 0 0 auto;
}

.property-spec-value {
  display: block;
  font-family: Miso-Bold, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 2.6em;
  line-height: 1.1;
  color: #0d0d0c;
}

.property-spec-label {
  display: block;
  font-family: Miso-Light, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1.5em;
  line-height: 1.3;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #3a3628;
  margin-top: .4em;
}

/* rides on the label line and only drops to its own when the tile is too narrow */

.property-spec-note {
  display: inline;
  font-size: 1em;
  letter-spacing: .02em;
  text-transform: none;
  white-space: nowrap;
}

/* sections */

.property-section {
  margin-top: 3.2em;
}

.property-section-title {
  font-family: Miso, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 2.6em;
  line-height: 1.4;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #655d5f;
  border-bottom: 1px solid #ddb109;
  padding-bottom: .2em;
  margin-bottom: .7em;
}

.single-property #content-container .property-description p {
  font-family: Miso, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1.8em;
  line-height: 1.4;
  color: #0d0d0c;
  margin-bottom: 1em;
}

.property-description img {
  height: auto;
}

/* amenities */

.property-features {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
  grid-gap: 6px 24px;
  gap: 6px 24px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.property-feature {
  display: block;
  position: relative;
  font-family: Miso, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1.8em;
  line-height: 1.4;
  color: #0d0d0c;
  padding-left: 1.7em;
}

.property-feature:before {
  content: '';
  position: absolute;
  left: .2em;
  top: .3em;
  width: .34em;
  height: .68em;
  border-right: 3px solid #a37f06;
  border-bottom: 3px solid #a37f06;
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}

/* map */

.property-map-address {
  font-family: Miso, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1.8em;
  line-height: 1.4;
  color: #3a3628;
  margin-bottom: .6em;
}

.property-map {
  position: relative;
  width: 100%;
  padding-top: 56.25%;
  border: 1px solid #bebdb5;
  background: #e8e7dd;
}

.property-map-frame {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

/* contact card */

.property-contact {
  background: #9f1f63;
  padding: 2.2em 1.8em;
}

.property-contact-title {
  font-family: Miso-Bold, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 2.4em;
  line-height: 1.2;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #fff;
  margin: 0;
}

.property-contact-text {
  font-family: Miso-Light, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1.6em;
  line-height: 1.5;
  color: #fff;
  margin-top: .8em;
}

/* contact form */

/* the contact card is tight, and the submit button already carries the gap */

.single-property .emai-recaptcha-notice {
  margin-top: 0;
}

.property-form {
  margin-top: 1.4em;
}

.single-property #content-container .property-form form p {
  font-size: 1.8em;
  line-height: 1.4;
  margin: 0 0 .5em;
  position: relative;
}

.property-form label {
  font-family: Miso, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1em;
  line-height: 1.4;
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  border: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.property-form input[type="text"],
.property-form input[type="email"],
.property-form input[type="tel"],
.property-form textarea {
  display: block;
  width: 100%;
  max-width: 100%;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  border: 1px solid #bebdb5;
  background: #fff;
  color: #0d0d0c;
  font-family: Miso, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1em;
  line-height: 1.4;
  padding: 8px 10px;
}

.property-form textarea {
  height: 85px;
  min-height: 85px;
  resize: vertical;
}

.property-form #property-name,
.property-form #property-email,
.property-form #property-phone {
  padding-left: 38px;
  background-repeat: no-repeat;
  background-size: 18px 18px;
  background-position: 11px center;
}

.property-form #property-name {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23655d5f'%3E%3Cpath d='M12 12a5 5 0 1 0 0-10 5 5 0 0 0 0 10zm0 2c-5 0-9 2.5-9 5.5V22h18v-2.5c0-3-4-5.5-9-5.5z'/%3E%3C/svg%3E");
}

.property-form #property-email {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23655d5f'%3E%3Cpath d='M2 4h20v16H2V4zm2 2v.4l8 5 8-5V6H4zm16 3.7l-8 5-8-5V18h16V9.7z'/%3E%3C/svg%3E");
}

.property-form #property-phone {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23655d5f'%3E%3Cpath d='M6.62 10.79a15.05 15.05 0 0 0 6.59 6.59l2.2-2.2a1 1 0 0 1 1.01-.24c1.12.37 2.33.57 3.58.57a1 1 0 0 1 1 1V20a1 1 0 0 1-1 1C10.4 21 3 13.6 3 4a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1c0 1.25.2 2.46.57 3.58a1 1 0 0 1-.25 1.01l-2.2 2.2z'/%3E%3C/svg%3E");
}

.property-form #property-message {
  background-image: none;
  padding-left: 10px;
}

.property-form ::-webkit-input-placeholder {
  color: #66605b;
}

.property-form ::placeholder {
  color: #66605b;
}

.property-form input[type="text"]:focus,
.property-form input[type="email"]:focus,
.property-form input[type="tel"]:focus,
.property-form textarea:focus {
  border-color: #ddb109;
  color: #0d0d0c;
}

.property-form input[type="submit"] {
  display: block;
  width: 100%;
  background: #ddb109;
  color: #3a3628;
  font-family: Miso, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1em;
  line-height: 1.4;
  text-transform: uppercase;
  letter-spacing: .06em;
  text-shadow: none;
  padding: 12px 14px;
  cursor: pointer;
}

.property-form input[type="submit"]:hover,
.property-form input[type="submit"]:focus,
.property-form input[type="submit"]:active {
  background: #c99f08;
  color: #3a3628;
  text-decoration: none;
  -webkit-box-shadow: none;
  box-shadow: none;
  outline: 0;
}

.property-form input[type="submit"]:focus-visible {
  outline: 3px solid #3a3628;
  outline-offset: -3px;
}

.property-form .wpcf7-spinner {
  display: none;
}

.property-form .wpcf7-not-valid-tip {
  position: static;
  top: auto;
  right: auto;
  display: block;
  font-family: Miso-Light, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: .85em;
  line-height: 1.3;
  color: #ffd9d9;
  margin-top: 3px;
}

.property-form .wpcf7-response-output {
  font-size: 1.4em;
  line-height: 1.4;
  color: #fff;
  background: rgba(13, 13, 12, .22);
  border: 1px solid #ddb109;
  margin: 1em 0 0;
  padding: .7em .9em;
}

.property-contact-actions {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: nowrap;
  flex-wrap: nowrap;
  grid-gap: 8px;
  gap: 8px;
  margin-top: 1.4em;
}

/*
 * Separate the form from the direct-contact buttons. Only when a form is
 * actually above it, hence the sibling combinator. Translucent white rather
 * than #ddb109: the submit button right above the rule is solid yellow and a
 * yellow hairline touching it would read as part of the button instead of a
 * divider. The 1.4em padding mirrors the existing 1.4em margin, so the rule
 * sits centred between the two blocks.
 */

.property-form + .property-contact-actions {
  border-top: 1px solid rgba(255, 255, 255, .22);
  padding-top: 1.4em;
}

.property-contact-actions .property-button {
  -webkit-box-flex: 1;
  -ms-flex: 1 1 0;
  flex: 1 1 0;
  font-size: 1.4em;
  letter-spacing: .02em;
  padding: 12px 8px;
  margin: 0;
  min-width: 0;
  white-space: nowrap;
}

.property-contact-actions .property-button span {
  min-width: 0;
}

.property-contact-actions .property-icon {
  margin-right: .35em;
}

.property-icon {
  display: block;
  width: 1em;
  height: 1em;
  margin-right: .45em;
  -ms-flex: 0 0 auto;
  flex: 0 0 auto;
}

.property-button {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  font-family: Miso-Bold, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1.8em;
  line-height: 1;
  text-align: center;
  text-transform: uppercase;
  letter-spacing: .06em;
  text-decoration: none;
  padding: 14px 16px;
}

.property-button:hover,
.property-button:focus,
.property-button:active {
  text-decoration: none;
  -webkit-box-shadow: none;
  box-shadow: none;
  outline: 0;
}

.property-button-whatsapp,
.property-button-whatsapp:hover,
.property-button-whatsapp:focus,
.property-button-whatsapp:active {
  background: #25d366;
  color: #0b3c1e;
}

.property-button-whatsapp:focus-visible {
  outline: 3px solid #0b3c1e;
  outline-offset: -3px;
}

.property-button-phone,
.property-button-phone:hover,
.property-button-phone:focus,
.property-button-phone:active {
  background: #ddb109;
  color: #3a3628;
}

.property-button-phone:focus-visible {
  outline: 3px solid #3a3628;
  outline-offset: -3px;
}

/* mobile action bar and sheet */

.property-mobile-bar,
.property-sheet-backdrop,
.property-sheet-close {
  display: none;
}

.property-mobile-action {
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  font-family: Miso-Bold, HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1.5em;
  line-height: 1;
  text-transform: uppercase;
  letter-spacing: .04em;
  text-decoration: none;
  text-shadow: none;
  border: 0;
  border-radius: 0;
  padding: 13px 8px;
  cursor: pointer;
}

.property-mobile-action:hover,
.property-mobile-action:focus,
.property-mobile-action:active {
  text-decoration: none;
  -webkit-box-shadow: none;
  box-shadow: none;
  outline: 0;
}

.property-mobile-action-phone,
.property-mobile-action-phone:hover,
.property-mobile-action-phone:focus,
.property-mobile-action-phone:active {
  background: #ddb109;
  color: #3a3628;
}

.property-mobile-action-phone:focus-visible {
  outline: 3px solid #3a3628;
  outline-offset: -3px;
}

.property-mobile-action-message,
.property-mobile-action-message:hover,
.property-mobile-action-message:focus,
.property-mobile-action-message:active {
  background: #9f1f63;
  color: #fff;
}

.property-mobile-action-message:focus-visible {
  outline: 3px solid #ddb109;
  outline-offset: -3px;
}

.property-mobile-action-whatsapp,
.property-mobile-action-whatsapp:hover,
.property-mobile-action-whatsapp:focus,
.property-mobile-action-whatsapp:active {
  background: #25d366;
  color: #0b3c1e;
}

.property-mobile-action-whatsapp:focus-visible {
  outline: 3px solid #0b3c1e;
  outline-offset: -3px;
}

/* desktop */

@media only screen and (min-width: 960px) {
  .property-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 320px;
    grid-column-gap: 3em;
    column-gap: 3em;
    align-items: start;
  }

  .property-aside {
    position: -webkit-sticky;
    position: sticky;
    top: 20px;
    margin-top: 0;
  }
}

/* tablet and below */

@media only screen and (max-width: 959px) {
  .property-layout {
    display: block;
  }

  .property-aside {
    display: none;
    margin-top: 0;
  }

  .property-page {
    padding-bottom: 2em;
  }

  /*
   * Clearance for the fixed action bar, so the footer is fully readable at the
   * bottom of the scroll. It has to equal the bar's height and no more: every
   * extra pixel shows as a strip of page background under the plum. Keep it in
   * step with .property-mobile-action's font-size and padding below.
   */

  .single-property footer.internal {
    padding-bottom: 6.5em;
  }

  .property-mobile-bar {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: stretch;
    -ms-flex-align: stretch;
    align-items: stretch;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    background: #fff;
    border-top: 3px solid #ddb109;
    box-shadow: 0 -2px 8px rgba(13, 13, 12, .18);
    padding: 8px 10px;
    grid-gap: 8px;
    gap: 8px;
    z-index: 900;
  }

  .property-mobile-action {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-flex: 1;
    -ms-flex: 1 1 0;
    flex: 1 1 0;
    min-width: 0;
  }

  .property-mobile-action-phone {
    -webkit-box-flex: 0;
    -ms-flex: 0 0 54px;
    flex: 0 0 54px;
  }

  .property-mobile-action-phone .property-icon {
    width: 20px;
    height: 20px;
    margin: 0;
  }

  .property-sheet-backdrop {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: rgba(13, 13, 12, .62);
    z-index: 950;
  }

  .property-sheet-open .property-sheet-backdrop {
    display: block;
  }

  .property-sheet-open .property-aside {
    display: block;
    position: fixed;
    top: auto;
    right: 0;
    bottom: 0;
    left: 0;
    max-height: 88vh;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    z-index: 960;
  }

  .property-sheet-open .property-mobile-bar {
    display: none;
  }

  .single-property.property-sheet-open {
    overflow: hidden;
  }

  .property-sheet-close {
    display: block;
    position: absolute;
    top: 10px;
    right: 10px;
    background: rgba(255, 255, 255, .16);
    border: 0;
    color: #fff;
    text-shadow: none;
    padding: 8px;
    line-height: 0;
    cursor: pointer;
  }

  .property-sheet-close:hover,
  .property-sheet-close:focus,
  .property-sheet-close:active {
    background: rgba(255, 255, 255, .3);
    color: #fff;
    text-decoration: none;
    -webkit-box-shadow: none;
    box-shadow: none;
    outline: 0;
  }

  .property-sheet-close:focus-visible {
    outline: 3px solid #ddb109;
    outline-offset: 2px;
  }

  .property-sheet-close .property-icon {
    width: 16px;
    height: 16px;
    margin: 0;
  }

  .property-contact {
    position: relative;
    padding-top: 2.6em;
  }
}

@media only screen and (max-width: 767px) {
  /* stacked layout: each row owns its own ratio, so the grid stays auto */

  .property-gallery-grid,
  .property-gallery-grid--1,
  .property-gallery-grid--2,
  .property-gallery-grid--3,
  .property-gallery-grid--4 {
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: auto;
    grid-gap: 6px;
    gap: 6px;
    aspect-ratio: auto;
  }

  .property-gallery-featured {
    grid-column: 1 / -1;
    grid-row: auto;
    aspect-ratio: 3 / 2;
  }

  .property-gallery-grid--3 .property-gallery-item:not(.property-gallery-featured),
  .property-gallery-grid--4 .property-gallery-item:last-child {
    grid-column: auto;
  }

  .property-gallery-item:not(.property-gallery-featured) {
    aspect-ratio: 1 / 1;
  }

  /* one column per thumbnail so the strip never leaves empty slots */

  .property-gallery-grid--2 {
    grid-template-columns: 1fr;
  }

  .property-gallery-grid--2 .property-gallery-item:not(.property-gallery-featured) {
    aspect-ratio: 2 / 1;
  }

  .property-gallery-grid--3 {
    grid-template-columns: repeat(2, 1fr);
  }

  .property-gallery-grid--4 {
    grid-template-columns: repeat(3, 1fr);
  }

  .property-location {
    font-size: 1.8em;
  }

  .property-section {
    margin-top: 2.6em;
  }

  .property-section-title {
    font-size: 2.2em;
  }

  .property-viewer-stage {
    top: 56px;
    right: 12px;
    bottom: 108px;
    left: 12px;
  }

  .property-viewer-prev,
  .property-viewer-next {
    width: 40px;
    height: 56px;
    margin-top: -28px;
  }

  .property-viewer-prev {
    left: 4px;
  }

  .property-viewer-next {
    right: 4px;
  }

  .property-viewer-thumbs {
    -webkit-box-pack: start;
    -ms-flex-pack: start;
    justify-content: flex-start;
    bottom: 14px;
    padding: 0 12px;
  }

  .property-viewer-thumb img {
    width: 64px;
    height: 44px;
  }

  .property-price {
    font-size: 4.2em;
  }

  .property-price-box {
    grid-gap: .8em 1.2em;
    gap: .8em 1.2em;
    margin-top: 1.2em;
  }
}

@media only screen and (max-width: 568px) {
  /* the footer grows to 8em here and pulls itself up by that much, so 6em of
     bottom padding plus #page-container's 2em cancels out exactly and the page
     ends flush against the plum bar; 9.4em restores the air wider screens get */

  .single-property #content-container {
    padding: 1em 1em 9.4em;
  }

  /* the action bar loses 2px with the smaller type, so the clearance follows */

  .single-property footer.internal {
    padding-bottom: 6.3em;
  }

  .property-price {
    font-size: 3.6em;
  }

  .property-location {
    font-size: 1.6em;
    padding: 7px 10px;
  }

  .property-specs {
    grid-template-columns: repeat(auto-fit, minmax(92px, 1fr));
  }

  .property-spec-value {
    font-size: 2.2em;
  }

  .property-spec-label {
    font-size: 1.3em;
  }

  .property-contact {
    padding: 2.6em 1.4em 1.8em;
  }

  .property-features {
    grid-template-columns: 1fr;
  }

  .property-mobile-action {
    font-size: 1.4em;
    padding: 12px 6px;
  }
}
