/*
 * STRUD Property, Elementor build layer. Added 2 Oct 2026.
 * Only what the native widgets cannot express: the pulsing office pins, the map blend,
 * the hero search form, arrow links, card hover, the reel overflow and the menu label.
 * Palette: olive #495748, deep #3A4539, white, greys. No gold, no mint.
 */
:root {
	--strud-olive: #495748;
	--strud-deep: #3A4539;
	--strud-mute: #B7BFB5;
	--strud-line: rgba(255, 255, 255, .16);
	--strud-gut: calc(max(0px, (100% - 1560px) / 2) + 5vw);
}
@media (max-width: 767px) {
	:root { --strud-gut: 18px; }
}
html { -webkit-text-size-adjust: 100%; }
body { font-variant-numeric: tabular-nums; -webkit-font-smoothing: antialiased; }
/* Hello Elementor's default page wrapper gives Gutenberg pages padding we do not want */
.site-main { padding: 0; }

/* ---- arrow links: a label followed by a 26px rule, as in the concept ---- */
.strud-arrow a::after,
a.strud-arrow::after,
.strud-arrow .elementor-button-content-wrapper::after {
	content: "";
	display: inline-block;
	width: 26px;
	height: 1px;
	background: currentColor;
	vertical-align: middle;
	margin-left: 12px;
	transition: width .3s;
}
.strud-arrow a:hover::after,
a.strud-arrow:hover::after,
.strud-arrow:hover .elementor-button-content-wrapper::after { width: 40px; }
.strud-arrow .elementor-button { padding: 0; background: none; border: 0; }

/* ---- cards: image zoom on hover, no badges ---- */
.strud-card .elementor-widget-theme-post-featured-image img,
.strud-card .elementor-widget-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 1.2s cubic-bezier(.2, .7, .2, 1);
}
.strud-card:hover .elementor-widget-theme-post-featured-image img,
.strud-card:hover .elementor-widget-image img { transform: scale(1.04); }
.strud-card .elementor-widget-theme-post-featured-image,
.strud-card .elementor-widget-theme-post-featured-image .elementor-widget-container { overflow: hidden; }
/* a card is one column, never a wrapping row: Elementor's phone default (--flex-wrap-mobile: wrap) pushed the text off the card */
.strud-card.e-con { flex-wrap: nowrap !important; --flex-wrap-mobile: nowrap; }
.strud-card .elementor-widget-theme-post-featured-image a { display: block; height: 100%; }
.strud-ph-34 { aspect-ratio: 3 / 4; overflow: hidden; }
.strud-ph-43 { aspect-ratio: 4 / 3; overflow: hidden; }
.strud-ph-11 { aspect-ratio: 1 / 1; overflow: hidden; }
.strud-ph-169 { aspect-ratio: 16 / 9; overflow: hidden; }
.strud-ph-34 img, .strud-ph-43 img, .strud-ph-11 img, .strud-ph-169 img { width: 100%; height: 100%; object-fit: cover; display: block; }
.strud-ph-34 .elementor-widget-container, .strud-ph-43 .elementor-widget-container, .strud-ph-11 .elementor-widget-container, .strud-ph-169 .elementor-widget-container { height: 100%; }

/* ---- the for-sale reel: overflows to the right, first card on the gutter ---- */
.strud-reel .swiper, .strud-reel .swiper-container { overflow: visible; }
.strud-reel { overflow: hidden; }
.strud-reel .swiper-slide { height: auto; }
.strud-reel .elementor-swiper-button { color: #fff; }

/* ---- sales map: screen-blended grey tiles on olive, faded top and bottom ---- */
.strud-map { position: relative; overflow: hidden; background: var(--strud-olive); }
.strud-map .elementor-widget-image img,
.strud-map img.strud-map__img {
	width: 100%;
	height: auto;
	display: block;
	mix-blend-mode: screen;
	filter: grayscale(1) contrast(1.3) brightness(.92);
	-webkit-mask-image: linear-gradient(180deg, transparent 0, #000 15%, #000 85%, transparent 100%);
	mask-image: linear-gradient(180deg, transparent 0, #000 15%, #000 85%, transparent 100%);
}
.elementor-widget.strud-pin { z-index: 3; transform: translate(-50%, -50%); }
.strud-pin .elementor-heading-title > span { white-space: nowrap; background: rgba(73, 87, 72, .85); padding: 7px 11px; }
.elementor-widget.strud-place { z-index: 2; transform: translate(-50%, -50%); white-space: nowrap; }
.strud-place .elementor-heading-title { color: rgba(255, 255, 255, .62) !important; }
@keyframes strud-ping { from { transform: scale(1); opacity: .8; } to { transform: scale(3.4); opacity: 0; } }
@media (max-width: 767px) {
	.strud-place { display: none; }
	.strud-pin span { font-size: 9px; padding: 5px 8px; }
}
@media (prefers-reduced-motion: reduce) { .strud-pin .elementor-heading-title::after { animation: none; } }

/* ---- hero search (EPL search underneath) ---- */
.strud-hero-search {
	display: grid; grid-template-columns: auto 1fr 190px auto; gap: 10px; align-items: center;
	padding: 10px; border: 1px solid rgba(255, 255, 255, .28); text-align: left;
	background: rgba(73, 87, 72, .62); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
	font: 400 15.5px/1.7 "Montserrat", "Helvetica Neue", Arial, sans-serif; color: #fff;
}
.strud-hero-search__tabs { display: flex; gap: 4px; }
.strud-hero-search__tabs button {
	background: none; border: 0; padding: 11px 15px; color: var(--strud-mute); cursor: pointer;
	font: 600 11px/1.5 "Montserrat", Arial, sans-serif; letter-spacing: .22em; text-transform: uppercase;
}
.strud-hero-search__tabs button.is-on { color: #fff; box-shadow: inset 0 -1px 0 #fff; }
.strud-hero-search__field { display: block; margin: 0; }
.strud-hero-search input, .strud-hero-search select {
	font: inherit; color: inherit; background: none; border: 0; padding: 14px 12px; width: 100%; border-radius: 0; outline: 0;
}
.strud-hero-search input::placeholder { color: var(--strud-mute); }
.strud-hero-search select option { color: #222; }
.strud-hero-search__submit {
	display: inline-block; background: #fff; color: var(--strud-olive); border: 0; cursor: pointer; padding: 17px 28px;
	font: 600 11px/1.5 "Montserrat", Arial, sans-serif; letter-spacing: .22em; text-transform: uppercase;
}
.strud-hero-search__submit:hover { background: #EFEFEF; }
@media (max-width: 767px) {
	.strud-hero-search { grid-template-columns: 1fr; gap: 4px; }
	.strud-hero-search__tabs { border-bottom: 1px solid var(--strud-line); padding-bottom: 4px; }
}
/* the EPL search form on the archive pages and the strud_search_bar shortcode, on the olive ground */
.strud-search-bar { display: grid; grid-template-columns: repeat(6, 1fr) auto; gap: 10px; padding: 10px; border: 1px solid var(--strud-line); }
.strud-search-bar select { font: inherit; color: #fff; background: none; border: 0; border-bottom: 1px solid var(--strud-line); padding: 12px 8px; }
.strud-search-bar select option { color: #222; }
.strud-search-bar button { background: #fff; color: var(--strud-olive); border: 0; padding: 14px 24px; font: 600 11px/1.5 "Montserrat", Arial, sans-serif; letter-spacing: .22em; text-transform: uppercase; cursor: pointer; }
@media (max-width: 767px) { .strud-search-bar { grid-template-columns: 1fr 1fr; } .strud-search-bar button { grid-column: 1 / -1; } }

/* ---- header: the "Menu" label beside the toggle, hidden on phones ---- */
.strud-menu-label { cursor: pointer; }
@media (max-width: 767px) { .strud-menu-label { display: none !important; } }
.strud-header .elementor-menu-toggle { color: #fff; border: 0; padding: 0; }
.strud-header .elementor-menu-toggle:hover, .strud-header .elementor-menu-toggle:focus { color: #fff; background: none; }
.strud-header .elementor-nav-menu--dropdown { background: var(--strud-deep); border-top: 1px solid var(--strud-line); }
.strud-header .elementor-nav-menu--dropdown a { color: #fff; padding: 22px var(--strud-gut); border-bottom: 1px solid var(--strud-line); }
.strud-header .elementor-nav-menu--dropdown a:hover, .strud-header .elementor-nav-menu--dropdown a:focus { background: var(--strud-olive); color: #fff; }
.strud-header .elementor-nav-menu--dropdown a.elementor-item-active { color: #fff; }

/* ---- hero height: the header bar is 9vh, so the hero fills the rest of the first screen ---- */
.strud-hero { min-height: calc(100vh - 9vh); min-height: calc(100svh - 9vh); }
@media (max-width: 767px) { .strud-hero { min-height: calc(100svh - 64px); } }
.strud-hero .elementor-background-overlay { background: radial-gradient(120% 90% at 50% 55%, transparent 30%, rgba(20, 26, 21, .55) 100%) !important; opacity: 1 !important; }
@media (prefers-reduced-motion: no-preference) {
	.strud-hero.strud-kb::before { animation: strud-kb 30s ease-out forwards; transform-origin: 70% 40%; }
}
@keyframes strud-kb { from { transform: scale(1.12); } to { transform: scale(1); } }

/* ---- equal height cards with the link pinned to the bottom ---- */
.strud-rep { display: flex; flex-direction: column; height: 100%; }
.strud-rep > .elementor-element:nth-last-child(2) { flex: 1; }

/* ---- the two-column suburb list ---- */
.strud-cols-2 .elementor-loop-container { column-gap: 56px; }

/* ---- footer link lists: plain text links, no icons ---- */
.strud-footer .elementor-icon-list-item a { color: var(--strud-mute); }
.strud-footer .elementor-icon-list-item a:hover { color: #fff; }

/* ---- EPL leftovers on the Elementor single listing: hide the plugin's own extras ---- */
.strud-listing-el .epl-section-title, .strud-listing-el .epl-tab-section h5 { font-family: "Montserrat", sans-serif; }

/* ---- Yoast breadcrumbs and WordPress default elements that would show on olive ---- */
.strud-on-olive a { color: #fff; }
.strud-on-olive .elementor-widget-text-editor a { text-decoration: underline; text-underline-offset: 3px; }

/* ---- visible placeholders, so nothing invented looks finished ---- */
.strud-tbc { display: inline-block; border: 1px dashed rgba(255, 255, 255, .5); padding: 4px 10px; color: var(--strud-mute); font-size: 11px; letter-spacing: .22em; text-transform: uppercase; }

/* ---- listing agent block and EPL blocks inside the Elementor single listing ---- */
.strud-agents { margin-top: 26px; display: grid; gap: 18px; }
.strud-agent { display: flex; gap: 16px; align-items: center; }
.strud-agent__photo { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; display: block; flex: 0 0 64px; }
.strud-agent__initials { display: grid; place-items: center; border: 1px solid var(--strud-line); font-weight: 600; letter-spacing: .1em; color: #fff; }
.strud-agent__text { display: flex; flex-direction: column; gap: 3px; }
.strud-agent__name { color: #fff; font-weight: 600; }
.strud-agent__role, .strud-agent__phone { color: var(--strud-mute); font: 600 11px/1.5 "Montserrat", Arial, sans-serif; letter-spacing: .22em; text-transform: uppercase; }
.strud-rail .elementor-widget-button { margin-top: 26px; }
.strud-epl { margin-top: 26px; color: var(--strud-mute); }
.strud-epl h5, .strud-epl h4, .strud-epl .epl-section-title { color: #fff; font: 600 11px/1.5 "Montserrat", Arial, sans-serif; letter-spacing: .22em; text-transform: uppercase; margin: 0 0 10px; }
.strud-epl .epl-button, .strud-epl .button, .strud-epl a.epl-button { display: inline-block; background: #fff; color: var(--strud-olive); padding: 12px 18px; margin: 0 8px 8px 0; font: 600 11px/1.5 "Montserrat", Arial, sans-serif; letter-spacing: .22em; text-transform: uppercase; }
.strud-epl.epl_buttons_single_property { margin-top: 18px; }
.strud-epl ul { list-style: none; margin: 0; padding: 0; }
.strud-gallery .swiper-slide img { aspect-ratio: 3 / 2; height: auto; object-fit: cover; width: 100%; display: block; }
.strud-gallery .swiper-pagination { bottom: 18px !important; }
.strud-gallery .swiper-pagination-bullet { background: #fff; opacity: .45; } .strud-gallery .swiper-pagination-bullet-active { opacity: 1; }
.strud-gallery .elementor-swiper-button { color: #fff; }
.strud-rail { position: sticky; top: 24px; }
@media (max-width: 767px) { .strud-rail { position: static; } }
.strud-inline-list .elementor-icon-list-items { display: flex; flex-wrap: wrap; gap: 6px 0; }
.strud-inline-list .elementor-icon-list-item { margin-right: 18px; }
.strud-inline-list .elementor-icon-list-item::after { content: "\00b7"; margin-left: 18px; color: var(--strud-mute); }
.strud-inline-list .elementor-icon-list-item:last-child::after { content: none; }
.strud-reg:hover { padding-left: 8px !important; transition: padding .4s; }
.strud-press-logo img { height: 28px; width: auto; }
.strud-legal .elementor-widget-container h2 { font-size: 15.5px; font-weight: 600; color: #fff; margin: 28px 0 8px; text-transform: none; letter-spacing: 0; font-family: "Montserrat", sans-serif; }
.strud-report-embed { background: #fff; padding: 24px; min-height: 480px; }
.strud-counters .elementor-counter-number-wrapper { justify-content: center; }
.strud-pin .elementor-heading-title { display: flex; align-items: center; gap: 10px; position: relative; }
.strud-pin .elementor-heading-title::before { content: ""; position: relative; display: block; width: 12px; height: 12px; border-radius: 50%; background: #fff; box-shadow: 0 0 0 5px rgba(255, 255, 255, .2); flex: 0 0 12px; }
.strud-pin .elementor-heading-title::after { content: ""; position: absolute; left: -5px; top: 50%; margin-top: -11px; width: 22px; height: 22px; border-radius: 50%; border: 1px solid #fff; animation: strud-ping 2.6s ease-out infinite; }
.strud-pin--left .elementor-heading-title { flex-direction: row-reverse; }
.strud-pin--left .elementor-heading-title::after { left: auto; right: -5px; }
.strud-legend .elementor-heading-title { display: inline-flex; align-items: center; gap: 10px; }
.strud-legend .elementor-heading-title::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: #fff; box-shadow: 0 0 8px #fff; display: block; }
.elementor-widget.strud-pin, .elementor-widget.strud-place { width: auto; }
.strud-counters .elementor-counter-number-prefix, .strud-counters .elementor-counter-number-suffix { flex-grow: 0; }
.strud-counters .elementor-counter-number-suffix { margin-left: .25em; }

.strud-arrow .elementor-heading-title { white-space: nowrap; }
.strud-card.e-con, a.e-con.strud-card, a.e-con.strud-reg, a.e-con.strud-rep { background: transparent; }
.elementor-loop-container > .e-loop-item, .elementor-loop-container > .e-loop-item > .e-con { min-width: 0; }
.strud-rep .strud-arrow, .strud-reg .strud-arrow { transition: opacity .3s; }
.strud-epl .epl-button-wrapper { display: flex; flex-wrap: wrap; gap: 8px; }
.strud-epl .epl-button { display: inline-block; margin: 0; padding: 0; background: none; }
.strud-epl .epl-button a, .strud-epl a.epl-button { display: inline-block; background: #fff; color: var(--strud-olive) !important; padding: 12px 18px; font: 600 11px/1.5 "Montserrat", Arial, sans-serif; letter-spacing: .22em; text-transform: uppercase; text-decoration: none; }
.strud-epl .epl-button a:hover { background: #EFEFEF; }
/* the listing search bar on the olive ground (overrides the light version in epl-strud.css) */
.strud-on-olive .strud-search-bar { background: transparent; border: 1px solid var(--strud-line); border-radius: 0; padding: 10px; }
.strud-on-olive .strud-search-bar select { background: transparent; color: #fff; border: 0; border-bottom: 1px solid var(--strud-line); border-radius: 0; height: 46px; font: 400 15.5px/1.7 "Montserrat", Arial, sans-serif; }
.strud-on-olive .strud-search-bar select:focus { border-color: #fff; outline: 0; }
.strud-on-olive .strud-search-bar select option { color: #222; }
.strud-on-olive .strud-search-bar button[type="submit"] { background: #fff; color: var(--strud-olive); border-radius: 0; height: 46px; padding: 0 28px; font: 600 11px/1.5 "Montserrat", Arial, sans-serif; letter-spacing: .22em; text-transform: uppercase; }
.strud-on-olive .strud-search-bar button[type="submit"]:hover { background: #EFEFEF; }
.strud-inline-links a { color: var(--strud-mute); text-decoration: none; } .strud-inline-links a:hover { color: #fff; }
.strud-post-body p { margin: 0 0 1em; } .strud-post-body p:last-child { margin-bottom: 0; }
/* the menu panel opens as a full-width sheet under the bar, whatever the toggle's own box is */
.strud-header { position: relative; }
.strud-header .elementor-widget-nav-menu, .strud-header .elementor-widget-nav-menu > .elementor-widget-container, .strud-header .elementor-widget-nav-menu .elementor-nav-menu__container { position: static; }
.strud-header .elementor-nav-menu--dropdown.elementor-nav-menu__container { position: absolute !important; top: 100% !important; left: 0 !important; right: 0 !important; width: 100% !important; margin: 0 !important; max-height: calc(100vh - 64px); overflow: auto; }
.strud-header .elementor-nav-menu--dropdown a { text-transform: none; letter-spacing: 0; }
.strud-header > .e-con { position: static; }
.strud-reel .swiper, .strud-reel .swiper-container, .strud-reel .elementor-loop-container { margin-left: 0 !important; margin-right: 0 !important; }
.strud-reel .swiper-slide { cursor: grab; }

/* ---- 13 Oct 2026 ---- */
/* cards have no frame: epl-strud.css styles the old EPL loop's .strud-card (border, radius, shadow, lift on hover) and the
   class name collides with the Elementor cards, so undo it on the Elementor containers only */
.strud-card.e-con, a.e-con.strud-card,
.strud-card.e-con:hover, a.e-con.strud-card:hover,
.strud-card.e-con:focus-within, a.e-con.strud-card:focus-within { border: 0; border-radius: 0; box-shadow: none; transform: none; }
/* no photo, or a missing file (the child theme reports those as no thumbnail): the branded placeholder, deep olive with the
   white STRUD logo at 38% of the width. Elementor drops the empty image widget, so it is drawn on the card body, at the
   card's own ratio (3:4 listing card 610924 and agent card 610926, 4:3 listing card 610925) */
.e-loop-item:not(.has-post-thumbnail) .strud-card > .e-con:first-child::before {
	content: ""; display: block; aspect-ratio: 3 / 4; margin: -16px 0 16px; border: 0;
	position: relative; inset: auto; width: auto; height: auto; opacity: 1; mix-blend-mode: normal; border-radius: 0; flex: none; align-self: stretch;
	background: var(--strud-deep) url("/wp-content/uploads/2023/05/White-Blank.png") center / 38% auto no-repeat;
}
.e-loop-item:not(.has-post-thumbnail) .strud-card--43 > .e-con:first-child::before { aspect-ratio: 4 / 3; }
/* hero search, matched to the concept (13 Oct 2026): one row of tabs | suburb | type (190px) | button. The hidden
   property-type carrier span was taking the first grid cell and pushing the button onto a second row; the type select
   picked up an 11px bold label face and a shorter box. */
.strud-hero-search > .strud-hero-search__types { display: none !important; }
form.strud-hero-search .strud-hero-search__field input,
form.strud-hero-search .strud-hero-search__field select {
	font: 400 15.5px/1.7 "Montserrat", "Helvetica Neue", Arial, sans-serif !important; letter-spacing: 0 !important; text-transform: none !important;
	color: #fff; height: auto; min-height: 0; box-sizing: border-box; padding: 14px 12px; margin: 0; border: 0; border-radius: 0; box-shadow: none; background-color: transparent;
}
form.strud-hero-search .strud-hero-search__field select {
	-webkit-appearance: none; appearance: none; cursor: pointer; padding-right: 34px;
	background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23fff' stroke-width='1.2'/%3E%3C/svg%3E") no-repeat right 12px center / 10px 6px;
}
form.strud-hero-search .strud-hero-search__field select option { color: #222; background: #fff; }
@media (max-width: 767px) {
	form.strud-hero-search .strud-hero-search__submit { margin-top: 6px; }
}
/* single listing hero with no featured image (or a missing file): plain olive, no overlay */
.elementor-location-single:not(.has-post-thumbnail) .strud-listing-hero::before { display: none; }
.strud-listing-hero .strud-hero-price .elementor-heading-title { font-size: clamp(1.5rem, 2.4vw, 2.1rem); }
.strud-listing-hero .elementor-heading-title { margin: 0; }
/* forms on olive: selects, checkbox and radio options, the section titles inside the offer form, the privacy line */
.strud-on-olive .elementor-form select option { color: #222; background: #fff; }
.strud-on-olive .elementor-form .elementor-select-wrapper::before { color: #fff; }
.strud-on-olive .elementor-form .elementor-field-subgroup label { color: #fff; }
.strud-on-olive .elementor-form .elementor-field-type-html { margin-top: 6px; }
.strud-on-olive .elementor-form input[type="checkbox"], .strud-on-olive .elementor-form input[type="radio"] { accent-color: #fff; }
.strud-form-note .elementor-heading-title { font-size: 13px; }
.strud-form-note a { font: inherit; color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.strud-stat-source .elementor-heading-title { max-width: 34ch; margin: 0 auto; opacity: .85; }
.strud-legal ul { margin: 0 0 1em; }

/* 13 Oct 2026, Toby: headshots crop from the top, not the middle */
.strud-person-photo img, .strud-agent__photo, .strud-agent-block img { object-position: 50% 0 !important; }
/* the sold count is not shown on the Team page grids */
.strud-hide-sold .strud-agent-sold { display: none !important; }
/* agent page buttons are one size */
.strud-even-btns .elementor-button { min-width: 250px; height: 52px; padding: 0 24px !important; display: inline-flex; align-items: center; justify-content: center; }
@media (max-width: 767px) { .strud-even-btns > .elementor-element { width: 100%; } .strud-even-btns .elementor-button { width: 100%; min-width: 0; } }
/* room between the second agent and the Enquire button */
.strud-rail-enquire { margin-top: 28px !important; }
/* no caption or title strip in the lightbox (Toby, 13 Oct 2026) */
.elementor-lightbox .elementor-slideshow__footer, .elementor-lightbox .elementor-slideshow__title, .elementor-lightbox .elementor-slideshow__description { display: none !important; }
/* footer credit matches the copyright line, the link no longer takes the body link font (Toby, 13 Oct 2026) */
.strud-footer .elementor-heading-title a { font: inherit; letter-spacing: inherit; text-transform: inherit; color: inherit; }
.strud-footer .elementor-heading-title a:hover { color: #fff; }
/* buttons side by side are always one height (Toby, 13 Oct 2026) */
:is(.e-con, .e-con-inner):has(> .elementor-widget-button ~ .elementor-widget-button) > .elementor-widget-button .elementor-button { min-height: 51px; display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; }
