/*
Theme Name: Urban Hideaways
Theme URI: https://www.urbanhideaways.co.uk
Description: Urban Hideaways design system. Astra child theme carrying the full brand stylesheet, so Elementor only supplies content while the look is controlled here.
Author: Urban Hideaways
Template: astra
Version: 1.0.0
Text Domain: urban-hideaways
*/

/* =====================================================================
   URBAN HIDEAWAYS - design system for Elementor
   ~60% cream/white, 30% ink, 10% brass. Gold = identity only.
   Brass text on light grounds is always #8E6320. Sage is a surface.
   ===================================================================== */

:root{
  --ink:#14202B; --ink-soft:#1E3040; --cream:#FAF7F2; --white:#FFFFFF;
  --slate:#43535F; --slate-light:#62717C; --line:#E3DDD3;
  --brass:#C08A3E; --brass-text:#8E6320; --brass-hover:#A67632;
  --gold:#C9A24B; --sage:#F1F0EB; --ivory:#F6F1E9; --btn-ink:#17120A;
  --success:#2F6B4F; --alert-bg:#FFF4E2; --alert-line:#EBD5AF;
  --brass-08:rgba(192,138,62,.08); --brass-16:rgba(192,138,62,.16);
  --line-dark:rgba(246,241,233,.16);
  --font-display:"Cormorant Garamond",Georgia,"Times New Roman",serif;
  --font-body:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  --fs-display:clamp(2.7rem,1.55rem + 4.3vw,4.75rem);
  --fs-h1:clamp(2.25rem,1.5rem + 2.9vw,3.5rem);
  --fs-h2:clamp(1.9rem,1.42rem + 1.75vw,2.7rem);
  --fs-h3:clamp(1.3rem,1.2rem + .45vw,1.6rem);
  --fs-lead:clamp(1.0625rem,1.01rem + .22vw,1.1875rem);
  --r-sm:3px; --r-md:5px; --r-lg:8px; --r-pill:999px;
  --shadow-md:0 2px 4px rgba(20,32,43,.04),0 12px 28px rgba(20,32,43,.08);
  --shadow-lg:0 4px 10px rgba(20,32,43,.05),0 24px 60px rgba(20,32,43,.13);
  --ease:cubic-bezier(.22,.61,.36,1);
  --section-y:clamp(4rem,7.5vw,7rem);
}

body{background:var(--cream);color:var(--slate);font-family:var(--font-body);line-height:1.65;-webkit-font-smoothing:antialiased}
body a{text-decoration:none}
:focus-visible{outline:2px solid var(--brass);outline-offset:3px;border-radius:2px}
::selection{background:var(--brass-16);color:var(--ink)}

/* ---------- sections ---------- */
.e-con.uh-sec{padding-block:var(--section-y);padding-inline:24px}
.e-con.uh-sec--tight{padding-block:clamp(2.5rem,4vw,3.75rem)}
@media (max-width:767px){.e-con.uh-sec{padding-inline:20px}}
.uh-sec--cream{background-color:var(--cream)}
.uh-sec--white{background-color:var(--white)}
.uh-sec--sage{background-color:var(--sage)}
.uh-sec--brass{background-color:var(--brass)}
.uh-sec--ink{background-color:var(--ink);position:relative;isolation:isolate}
.uh-sec--ink::after,.uh-hero::after{
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.5;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.055'/%3E%3C/svg%3E");
}

/* ---------- typography ---------- */
.uh-sec .elementor-heading-title,.uh-hero .elementor-heading-title{font-family:var(--font-display);font-weight:600;color:var(--ink);letter-spacing:-.012em;line-height:1.1}
.uh-display .elementor-heading-title{font-size:var(--fs-display);line-height:1.03;letter-spacing:-.02em}
.uh-h1 .elementor-heading-title{font-size:var(--fs-h1);line-height:1.06;letter-spacing:-.018em}
.uh-h2 .elementor-heading-title{font-size:var(--fs-h2);line-height:1.1}
.uh-h3 .elementor-heading-title{font-size:var(--fs-h3);line-height:1.2}

.uh-eyebrow .elementor-heading-title{
  display:inline-flex;align-items:center;gap:.65rem;font-family:var(--font-body);font-size:.78125rem;
  font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--brass-text);line-height:1.4;
}
.uh-eyebrow .elementor-heading-title::before{content:"";width:22px;height:1px;background:var(--brass);flex:none}
.uh-sec--ink .uh-eyebrow .elementor-heading-title,.uh-hero .uh-eyebrow .elementor-heading-title{color:var(--gold)}
.uh-sec--ink .uh-eyebrow .elementor-heading-title::before,.uh-hero .uh-eyebrow .elementor-heading-title::before{background:var(--gold);opacity:.8}

.uh-sec .elementor-widget-text-editor,.uh-hero .elementor-widget-text-editor{font-family:var(--font-body);color:var(--slate);font-size:1rem;line-height:1.65}
.uh-lead.elementor-widget-text-editor{font-size:var(--fs-lead);line-height:1.6}
.uh-small.elementor-widget-text-editor{font-size:.875rem;line-height:1.55;color:var(--slate-light)}
.uh-sec .elementor-widget-text-editor p:last-child{margin-bottom:0}
.uh-sec .elementor-widget-text-editor a{color:var(--brass-text);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--brass-16)}
.uh-sec .elementor-widget-text-editor a:hover{text-decoration-color:var(--brass)}
.uh-sec strong{color:var(--ink)}

.uh-sec--ink .elementor-heading-title,.uh-hero .elementor-heading-title{color:var(--ivory)}
.uh-sec--ink .uh-display .elementor-heading-title,.uh-hero .uh-display .elementor-heading-title,
.uh-sec--ink .uh-h1 .elementor-heading-title,.uh-hero .uh-h1 .elementor-heading-title{color:var(--white)}
.uh-sec--ink .elementor-widget-text-editor,.uh-hero .elementor-widget-text-editor{color:rgba(246,241,233,.82)}
.uh-sec--ink .uh-small.elementor-widget-text-editor,.uh-hero .uh-small.elementor-widget-text-editor{color:rgba(246,241,233,.7)}
.uh-sec--ink strong,.uh-hero strong{color:var(--white)}

.uh-prose.elementor-widget-text-editor{max-width:72ch}
.uh-prose h3{font-family:var(--font-display);font-weight:600;color:var(--ink);font-size:1.35rem;line-height:1.25;margin:2rem 0 .5rem;letter-spacing:-.01em}
.uh-prose p{margin:0 0 1.15em;line-height:1.72}

/* ---------- buttons ---------- */
.uh-sec .elementor-button,.uh-hero .elementor-button{
  font-family:var(--font-body);font-size:.9375rem;font-weight:600;padding:.875rem 1.6rem;
  border-radius:var(--r-md);border:1px solid transparent;line-height:1.2;
  transition:background-color .22s var(--ease),color .22s var(--ease),border-color .22s var(--ease),box-shadow .22s var(--ease),transform .22s var(--ease);
}
.uh-sec .elementor-button:active,.uh-hero .elementor-button:active{transform:translateY(1px)}
.uh-btn--brass .elementor-button{background-color:var(--brass);color:var(--btn-ink);box-shadow:0 1px 2px rgba(20,32,43,.12)}
.uh-btn--brass .elementor-button:hover{background-color:var(--brass-hover);color:var(--btn-ink);box-shadow:0 6px 18px rgba(160,112,45,.28)}
.uh-btn--ghost .elementor-button{background-color:transparent;color:var(--ink);border-color:var(--line)}
.uh-btn--ghost .elementor-button:hover{background-color:var(--white);border-color:var(--brass);color:var(--brass-text)}
.uh-btn--ghostlight .elementor-button{background-color:transparent;color:var(--ivory);border-color:rgba(246,241,233,.35)}
.uh-btn--ghostlight .elementor-button:hover{background-color:rgba(246,241,233,.08);color:var(--white);border-color:var(--ivory)}
.uh-btnrow .elementor-widget{width:auto}

/* ---------- hero ---------- */
.e-con.uh-hero{position:relative;isolation:isolate;overflow:hidden;padding-block:clamp(3rem,5.5vw,4.75rem);background-size:cover;background-position:center center}
.e-con.uh-hero-home{padding-block:clamp(2.75rem,5vw,4.25rem)}
.uh-hero::before{
  content:"";position:absolute;inset:0;z-index:-2;
  background:linear-gradient(102deg,rgba(20,32,43,.96) 0%,rgba(20,32,43,.9) 38%,rgba(30,48,64,.72) 68%,rgba(30,48,64,.52) 100%),radial-gradient(120% 90% at 8% 100%,rgba(192,138,62,.16) 0%,transparent 55%);
}
@media (max-width:820px){.uh-hero::before{background:linear-gradient(180deg,rgba(20,32,43,.94) 0%,rgba(20,32,43,.9) 55%,rgba(30,48,64,.88) 100%)}}
.uh-hero .uh-h1 .elementor-heading-title,.uh-hero .uh-display .elementor-heading-title{max-width:16ch}
.uh-herotop{align-items:flex-end}
@media (max-width:900px){.uh-herotop{align-items:flex-start}}

/* ---------- search bar (Hostaway widget) ----------
   The widget renders its own white chrome, so it sits directly on the ink hero
   rather than inside a second white card. */
.e-con.uh-searchbar{background:transparent;border:0;box-shadow:none;padding:0}
.uh-hostaway-widget{width:100%}
.uh-hostaway-widget iframe{width:100%;border:0;display:block;border-radius:var(--r-lg);box-shadow:0 18px 50px rgba(9,16,22,.34)}
.uh-searchbar .elementor-widget-shortcode,.uh-searchbar .elementor-shortcode{width:100%}
.uh-searchmeta{margin-top:.35rem}
.uh-searchmeta .elementor-widget-text-editor{color:rgba(246,241,233,.75)}
.uh-searchmeta strong{color:var(--white)}
@media (min-width:901px){
  .uh-searchmeta.uh-grid--2 > .e-con:first-child{width:calc(62% - 12px)}
  .uh-searchmeta.uh-grid--2 > .e-con:last-child{width:calc(38% - 12px)}
  .uh-searchmeta.uh-grid--2 > .e-con:last-child .uh-btnrow{justify-content:flex-end}
}

/* ---------- tick lists ---------- */
.uh-ticks .elementor-icon-list-item{align-items:flex-start}
.uh-ticks .elementor-icon-list-icon{margin-top:3px}
.uh-ticks .elementor-icon-list-text{font-size:.9375rem;line-height:1.5}
.uh-ticks--2col .elementor-icon-list-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem 1.5rem}
@media (max-width:640px){.uh-ticks--2col .elementor-icon-list-items{grid-template-columns:1fr}}

/* ---------- value bar ---------- */
.uh-valuebar .uh-vb-item{padding:1.35rem 1.4rem;position:relative}
.uh-valuebar .uh-vb-item + .uh-vb-item::before{content:"";position:absolute;left:0;top:18%;bottom:18%;width:1px;background:rgba(23,18,10,.16)}
.uh-valuebar .elementor-heading-title{color:var(--btn-ink)}
.uh-vb-k .elementor-heading-title{font-family:var(--font-display);font-size:1.5rem;line-height:1.1}
.uh-vb-v .elementor-heading-title{font-family:var(--font-body);font-size:.75rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:rgba(23,18,10,.72)}
@media (max-width:1024px){.uh-valuebar .uh-vb-item:nth-child(2n+1)::before{display:none}}
@media (max-width:767px){.uh-valuebar .uh-vb-item::before{display:none}}

/* ---------- grids ---------- */
.uh-grid{display:flex;flex-wrap:wrap;gap:24px}
.uh-grid > .e-con{flex:0 0 auto}
.uh-grid--2 > .e-con{width:calc((100% - 24px) / 2)}
.uh-grid--3 > .e-con{width:calc((100% - 48px) / 3)}
.uh-grid--4{gap:20px}
.uh-grid--4 > .e-con{width:calc((100% - 60px) / 4)}
@media (max-width:1024px){.uh-grid--3 > .e-con,.uh-grid--4 > .e-con{width:calc((100% - 24px) / 2)}}
@media (max-width:767px){.uh-grid > .e-con{width:100%}}

/* ---------- cards ---------- */
.e-con.uh-card{
  background:var(--white);border:1px solid var(--line);border-radius:var(--r-md);
  padding:clamp(1.4rem,2.2vw,1.85rem);position:relative;
  transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s var(--ease);
}
.e-con.uh-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:#D8D0C3}
.uh-sec--ink .e-con.uh-card{background:var(--ink-soft);border-color:rgba(246,241,233,.12)}
.e-con.uh-card::before,.e-con.uh-card::after{content:"";position:absolute;width:14px;height:14px;border:1.5px solid var(--brass);opacity:0;transition:opacity .3s var(--ease),transform .3s var(--ease);pointer-events:none}
.e-con.uh-card::before{top:-1px;left:-1px;border-right:0;border-bottom:0;transform:translate(4px,4px)}
.e-con.uh-card::after{bottom:-1px;right:-1px;border-left:0;border-top:0;transform:translate(-4px,-4px)}
.e-con.uh-card:hover::before,.e-con.uh-card:hover::after{opacity:1;transform:translate(0,0)}
.uh-card .elementor-icon-box-icon{margin-bottom:1rem}
.uh-card .elementor-icon-box-icon .elementor-icon{width:44px;height:44px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;background:var(--brass-08);color:var(--brass-text);font-size:20px}
.uh-sec--ink .uh-card .elementor-icon-box-icon .elementor-icon{background:rgba(192,138,62,.18);color:var(--brass)}
.uh-card .elementor-icon-box-title{font-family:var(--font-display);font-weight:600;font-size:1.1875rem;line-height:1.2;color:var(--ink);margin-bottom:.5rem}
.uh-sec--ink .uh-card .elementor-icon-box-title{color:var(--ivory)}
.uh-card .elementor-icon-box-description{font-size:.9375rem;line-height:1.6;color:var(--slate)}
.uh-sec--ink .uh-card .elementor-icon-box-description{color:rgba(246,241,233,.78)}

/* ---------- property cards ---------- */
.e-con.uh-pcard{background:var(--white);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;transition:transform .35s var(--ease),box-shadow .35s var(--ease)}
.e-con.uh-pcard:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
.uh-pcard .elementor-widget-image{line-height:0;overflow:hidden}
.uh-pcard .elementor-widget-image img{width:100%;height:230px;object-fit:cover;display:block;border-radius:0;transition:transform .7s var(--ease)}
.e-con.uh-pcard:hover .elementor-widget-image img{transform:scale(1.045)}
.uh-pcard-meta .elementor-heading-title{font-family:var(--font-body);font-size:.8125rem;font-weight:500;color:var(--slate-light);letter-spacing:.01em;display:inline-flex;align-items:center;gap:.4rem}
.uh-pcard-meta .elementor-heading-title::before{content:"\2605";color:var(--brass-text);font-size:.9rem;line-height:1}
.uh-pcard .uh-ticks .elementor-icon-list-items{display:flex;flex-wrap:wrap;gap:.3rem .85rem}
.uh-pcard .uh-ticks .elementor-icon-list-text{font-size:.8125rem;color:var(--slate-light)}
.uh-pcard-tags.elementor-widget-text-editor{font-size:.75rem;color:var(--slate-light);line-height:1.5}
.uh-pcard .elementor-button{width:100%;justify-content:center}

/* ---------- image tiles ---------- */
.e-con.uh-tile{position:relative;isolation:isolate;overflow:hidden;border-radius:var(--r-md);min-height:320px;justify-content:flex-end;padding:1.35rem;background-size:cover;background-position:center center;transition:background-size .8s var(--ease)}
.e-con.uh-tile:hover{background-size:108% auto}
.e-con.uh-tile::before{content:"";position:absolute;inset:0;z-index:-1;transition:opacity .4s var(--ease);background:linear-gradient(to top,rgba(20,32,43,.92) 0%,rgba(20,32,43,.55) 44%,rgba(20,32,43,.14) 78%)}
.e-con.uh-tile:hover::before{opacity:.96}
.uh-tile .elementor-heading-title{color:var(--white);font-size:1.35rem}
.uh-tile .elementor-widget-text-editor{color:rgba(246,241,233,.84);font-size:.8125rem}
.uh-tile .elementor-button{background:transparent;border:0;padding:0;color:var(--brass);font-size:.8125rem;letter-spacing:.02em;box-shadow:none}
.uh-tile .elementor-button:hover{color:var(--gold);background:transparent;box-shadow:none}

/* ---------- split media ---------- */
.uh-split{align-items:center}
.uh-splitmedia{position:relative;isolation:isolate}
.uh-splitmedia img{border-radius:var(--r-md);width:100%;object-fit:cover}
.uh-splitmedia::after{content:"";position:absolute;inset:auto -14px -14px auto;width:58%;height:58%;border:1px solid var(--brass);border-radius:var(--r-md);z-index:-1;opacity:.55}
@media (max-width:860px){.uh-splitmedia::after{display:none}}

/* ---------- notice ---------- */
.e-con.uh-notice{background:var(--alert-bg);border:1px solid var(--alert-line);border-radius:var(--r-md);padding:clamp(1.15rem,2.2vw,1.6rem)}
.uh-notice .elementor-heading-title{font-size:1.15rem}
.uh-sec--ink .e-con.uh-notice{background:rgba(255,244,226,.07);border-color:rgba(235,213,175,.34)}

/* ---------- pricing plans ---------- */
.e-con.uh-plan{background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(1.5rem,2.6vw,2rem);position:relative}
.e-con.uh-plan--featured{border-color:var(--brass);box-shadow:0 0 0 1px var(--brass),var(--shadow-md)}
.e-con.uh-plan--featured::before{content:"Most owners choose this";position:absolute;top:0;right:1.5rem;transform:translateY(-50%);background:var(--brass);color:var(--btn-ink);font-family:var(--font-body);font-size:.6875rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;padding:.34rem .7rem;border-radius:var(--r-pill)}
.uh-plan-pct .elementor-heading-title{font-size:3.1rem;line-height:.95;letter-spacing:-.02em}
.uh-plan--featured .uh-plan-pct .elementor-heading-title{color:var(--brass-text)}
.uh-plan .elementor-icon-list-items{border-top:1px solid var(--line);padding-top:1.15rem;margin-top:.4rem}
.uh-plan .elementor-icon-list-text{font-size:.9375rem;line-height:1.5}
.uh-plan .elementor-button{width:100%;justify-content:center}

/* ---------- steps ---------- */
.uh-step .uh-stepn .elementor-heading-title{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--ink);color:var(--gold);font-size:1.05rem;line-height:1}

/* ---------- FAQ ---------- */
.uh-faq .elementor-accordion{border-top:1px solid var(--line)}
.uh-faq .elementor-accordion-item{border:0;border-bottom:1px solid var(--line)}
.uh-faq .elementor-tab-title{padding:1.25rem 0;background:transparent;font-family:var(--font-display);font-size:1.1875rem;font-weight:600;line-height:1.3}
.uh-faq .elementor-tab-title a{color:var(--ink)}
.uh-faq .elementor-tab-title:hover a,.uh-faq .elementor-active a{color:var(--brass-text)}
.uh-faq .elementor-accordion-icon{color:var(--brass);width:auto}
.uh-faq .elementor-tab-content{padding:0 0 1.4rem;border:0;max-width:78ch;background:transparent}
.uh-faq .elementor-tab-content p{font-size:.9375rem;color:var(--slate);line-height:1.65;margin:0 0 .8em}
.uh-faq .elementor-tab-content p:last-child{margin-bottom:0}

/* ---------- reviews marquee ---------- */
.uh-revcar{position:relative;overflow:hidden;width:100%;padding-block:4px}
.uh-revcar::before,.uh-revcar::after{content:"";position:absolute;top:0;bottom:0;width:clamp(2rem,7vw,7rem);z-index:2;pointer-events:none}
.uh-revcar::before{left:0;background:linear-gradient(90deg,var(--sage),transparent)}
.uh-revcar::after{right:0;background:linear-gradient(270deg,var(--sage),transparent)}
.uh-revtrack{display:flex;gap:20px;width:max-content;animation:uh-marquee 95s linear infinite}
.uh-revcar:hover .uh-revtrack,.uh-revcar:focus-within .uh-revtrack{animation-play-state:paused}
@keyframes uh-marquee{from{transform:translateX(0)}to{transform:translateX(calc(-50% - 10px))}}
.e-con.uh-review{flex:0 0 clamp(270px,26vw,340px);width:clamp(270px,26vw,340px);background:var(--white);border:1px solid var(--line);border-left:3px solid var(--brass);border-radius:0 var(--r-md) var(--r-md) 0;padding:1.4rem 1.5rem}
.uh-review .uh-quote.elementor-widget-text-editor{font-family:var(--font-display);font-size:1.0625rem;line-height:1.5;color:var(--ink);font-weight:500}
.uh-review .uh-attr.elementor-widget-text-editor{font-size:.8125rem;color:var(--slate-light)}
.uh-review .uh-attr strong{display:block;color:var(--ink);font-size:.9375rem}
.uh-review .elementor-star-rating{font-size:13px}
.uh-review .elementor-star-rating i{color:var(--brass)}
@media (prefers-reduced-motion:reduce){
  .uh-revcar{overflow-x:auto}
  .uh-revtrack{animation:none}
  .uh-revcar::before,.uh-revcar::after{display:none}
}

/* ---------- CTA band ---------- */
.e-con.uh-cta{position:relative;isolation:isolate;overflow:hidden;background-size:cover;background-position:center center;padding-block:clamp(3.25rem,6vw,5rem)}
.uh-cta::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(95deg,rgba(20,32,43,.95) 0%,rgba(20,32,43,.88) 50%,rgba(30,48,64,.78) 100%)}
.uh-cta .elementor-heading-title{color:var(--white)}
.uh-cta .elementor-widget-text-editor{color:rgba(246,241,233,.84)}

/* ---------- section heads ---------- */
.uh-sechead{max-width:64ch}
.uh-sechead--center{margin-inline:auto;text-align:center}
.uh-sechead--center .elementor-heading-title{justify-content:center}

/* ---------- reveal ---------- */
.uh-reveal{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.uh-reveal.is-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.uh-reveal{opacity:1;transform:none;transition:none}}

/* ---------- header ---------- */
.uh-announce{background:var(--ink)}
.uh-announce .elementor-heading-title{font-family:var(--font-body);font-size:.8125rem;color:rgba(246,241,233,.9);display:flex;align-items:center;justify-content:center;gap:.6rem;font-weight:400}
.uh-announce .elementor-heading-title::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--brass);flex:none}
.uh-header{background:rgba(250,247,242,.94);border-bottom:1px solid var(--line)}
.uh-logo .elementor-heading-title{font-family:var(--font-display);font-size:1.35rem;color:var(--ink);line-height:1.1}
.uh-logosub .elementor-heading-title{font-family:var(--font-body);font-size:.5625rem;letter-spacing:.22em;text-transform:uppercase;color:var(--slate-light);line-height:1.2}
.uh-header .xpro-nav-menu > li > a,.uh-header .xpro-elementor-nav-menu > li > a{font-family:var(--font-body);font-size:.9063rem;font-weight:500;color:var(--ink);border-radius:var(--r-sm)}
.uh-header .xpro-nav-menu > li > a:hover,.uh-header .xpro-elementor-nav-menu > li > a:hover{color:var(--brass-text);background:var(--brass-08)}
.uh-header .sub-menu{border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-lg);background:var(--white)}
.uh-header .sub-menu a{font-size:.9063rem;color:var(--ink)}
.uh-header .sub-menu a:hover{background:var(--cream);color:var(--brass-text)}

/* ---------- footer ---------- */
.uh-footer{background:var(--ink);position:relative;isolation:isolate}
.uh-footer::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.05'/%3E%3C/svg%3E")}
.uh-footer .elementor-widget-text-editor{color:rgba(246,241,233,.66);font-size:.875rem}
.uh-footer .elementor-heading-title{color:var(--ivory)}
.uh-fhead .elementor-heading-title{font-family:var(--font-body);font-size:.78125rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.uh-footer .xpro-infolist-title{font-family:var(--font-body);font-size:.9375rem;font-weight:400;color:rgba(246,241,233,.72);transition:color .2s var(--ease)}
.uh-footer .xpro-infolist-item:hover .xpro-infolist-title{color:var(--gold)}
.uh-footer .xpro-infolist-icon i,.uh-footer .xpro-infolist-icon svg{color:var(--brass);fill:var(--brass);font-size:11px}
.uh-footer a{color:rgba(246,241,233,.66)}
.uh-footer a:hover{color:var(--gold)}
.uh-fbottom{border-top:1px solid var(--line-dark)}
.uh-fbottom .elementor-widget-text-editor{color:rgba(246,241,233,.55);font-size:.8125rem}

/* ---------- mobile sticky CTA ---------- */
.uh-mbar{position:fixed;left:0;right:0;bottom:0;z-index:99;display:none;background:rgba(250,247,242,.97);border-top:1px solid var(--line);padding:.6rem 20px calc(.6rem + env(safe-area-inset-bottom));box-shadow:0 -4px 20px rgba(20,32,43,.08);transform:translateY(110%);transition:transform .35s var(--ease)}
.uh-mbar.is-visible{transform:translateY(0)}
.uh-mbar__inner{display:flex;gap:.55rem;max-width:520px;margin-inline:auto}
.uh-mbar a{flex:1;display:inline-flex;align-items:center;justify-content:center;text-align:center;font-family:var(--font-body);font-size:.875rem;font-weight:600;padding:.8rem .6rem;border-radius:var(--r-md);border:1px solid transparent;line-height:1.2}
.uh-mbar .uh-mbar-primary{background:var(--brass);color:var(--btn-ink)}
.uh-mbar .uh-mbar-ghost{background:transparent;color:var(--ink);border-color:var(--line)}
@media (max-width:768px){.uh-mbar{display:block}.uh-footer{padding-bottom:74px}}

/* =====================================================================
   PART 2 - corrections against the real Elementor / Xpro markup
   ===================================================================== */

/* Icon lists render as inline SVG, so colour needs fill as well as color. */
.uh-ticks .elementor-icon-list-icon svg,.uh-ticks .elementor-icon-list-icon i{fill:var(--brass-text);color:var(--brass-text);width:15px;height:15px}
.uh-ticks .elementor-icon-list-icon svg.e-fas-xmark,.uh-ticks .elementor-icon-list-icon i.fa-xmark{fill:#A8564A;color:#A8564A}
.uh-ticks .elementor-icon-list-text{color:var(--slate)}
.uh-sec--ink .uh-ticks .elementor-icon-list-icon svg,.uh-hero .uh-ticks .elementor-icon-list-icon svg,
.uh-sec--ink .uh-ticks .elementor-icon-list-icon i,.uh-hero .uh-ticks .elementor-icon-list-icon i{fill:var(--brass);color:var(--brass)}
.uh-sec--ink .uh-ticks .elementor-icon-list-text,.uh-hero .uh-ticks .elementor-icon-list-text{color:rgba(246,241,233,.9)}

/* Icon box glyphs */
.uh-card .elementor-icon-box-icon .elementor-icon i,
.uh-card .elementor-icon-box-icon .elementor-icon svg{color:inherit;fill:currentColor;font-size:20px;width:20px;height:20px}

/* Star rating */
.uh-review .elementor-star-rating i{color:var(--brass);font-size:13px}
.uh-review .elementor-star-rating__wrapper{margin-bottom:2px}

/* Search-bar highlight beats the generic strong rule */
.uh-searchbar .uh-searchnote strong{color:var(--success)}

/* ---------- Xpro header menu (real class names) ---------- */
.uh-header .xpro-elementor-horizontal-navbar-nav > li > a{
  font-family:var(--font-body);font-size:.9063rem;font-weight:500;color:var(--ink);
  padding:.55rem .7rem;border-radius:var(--r-sm);transition:color .2s var(--ease),background-color .2s var(--ease);
}
.uh-header .xpro-elementor-horizontal-navbar-nav > li > a:hover,
.uh-header .xpro-elementor-horizontal-navbar-nav > li.current-menu-item > a,
.uh-header .xpro-elementor-horizontal-navbar-nav > li.active > a{color:var(--brass-text);background:var(--brass-08)}
.uh-header .xpro-elementor-horizontal-navbar-nav .sub-menu{
  background:var(--white);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-lg);padding:.4rem;min-width:230px;
}
.uh-header .xpro-elementor-horizontal-navbar-nav .sub-menu li a{
  font-family:var(--font-body);font-size:.9063rem;font-weight:500;color:var(--ink);padding:.55rem .7rem;border-radius:var(--r-sm);
}
.uh-header .xpro-elementor-horizontal-navbar-nav .sub-menu li a:hover{background:var(--cream);color:var(--brass-text)}
.uh-header .xpro-elementor-horizontal-menu-close,.uh-header .xpro-elementor-horizontal-menu-toggle{color:var(--ink)}

/* ---------- Xpro footer link lists (real class names) ---------- */
.uh-footer .xpro-infolist-wrapper{display:grid;gap:.5rem;margin:0;padding:0;list-style:none}
.uh-footer .xpro-infolist-item a{display:flex;align-items:center;gap:.5rem}
.uh-footer .xpro-infolist-title{
  font-family:var(--font-body);font-size:.9375rem;font-weight:400;
  color:rgba(246,241,233,.72);transition:color .2s var(--ease);line-height:1.5;
}
.uh-footer .xpro-infolist-item:hover .xpro-infolist-title{color:var(--gold)}
.uh-footer .xpro-infolist-media svg,.uh-footer .xpro-infolist-media i{fill:var(--brass);color:var(--brass);width:10px;height:10px;font-size:10px}
.uh-footer .xpro-infolist-media{display:flex;align-items:center}

/* Xpro social icons */
.uh-footer .xpro-social-icon-wrapper a svg,.uh-footer .xpro-social-icon-wrapper a i{fill:currentColor}

/* ---------- proportional hero + header columns ---------- */
@media (min-width:1025px){
  .uh-herotop.uh-grid--2 > .e-con:first-child{width:calc(56% - 12px)}
  .uh-herotop.uh-grid--2 > .e-con:last-child{width:calc(44% - 12px)}
  .uh-herofoot.uh-grid--2 > .e-con:first-child{width:calc(58% - 12px)}
  .uh-herofoot.uh-grid--2 > .e-con:last-child{width:calc(42% - 12px)}
  .uh-herofoot.uh-grid--2 > .e-con:last-child .uh-btnrow{justify-content:flex-end}
}
.uh-headrow.uh-grid,.uh-frow.uh-grid,.uh-fbottomrow.uh-grid{gap:20px}
.uh-headrow.uh-grid > .e-con,.uh-frow.uh-grid > .e-con,.uh-fbottomrow.uh-grid > .e-con{width:auto}
@media (max-width:1024px){
  .uh-headrow.uh-grid > .e-con{width:100%}
  .uh-fbottomrow.uh-grid > .e-con{width:100%}
}

/* plans: marklist sits above the CTA */
.uh-plan .elementor-widget-icon-list{margin-top:.4rem}
.uh-plan .elementor-icon-list-icon svg.e-fas-xmark{fill:#C3CBD1}
.uh-plan .elementor-icon-list-item:has(svg.e-fas-xmark) .elementor-icon-list-text{color:#96A0A8}

/* images fill their card */
.uh-pcard .elementor-widget-image a{display:block;line-height:0}
.uh-splitmedia .elementor-widget-image img{aspect-ratio:4/3;height:auto}

/* Elementor writes per-element background rules at higher specificity, so the
   tile zoom has to insist. Contained to this one property. */
.e-con.uh-tile:hover{background-size:110% auto !important}

/* the reveal wrapper must not clip the card bracket motif */
.uh-grid.uh-reveal{overflow:visible}

/* section rhythm inside a section container */
.e-con.uh-sec > .e-con + .e-con{margin-top:0}

/* WPForms, brand-aligned */
.uh-sec .wpforms-container .wpforms-field-label{font-family:var(--font-body);font-size:.8125rem;font-weight:500;color:var(--slate-light)}
.uh-sec .wpforms-container input[type=text],.uh-sec .wpforms-container input[type=email],
.uh-sec .wpforms-container input[type=tel],.uh-sec .wpforms-container input[type=number],
.uh-sec .wpforms-container select,.uh-sec .wpforms-container textarea{
  font-family:var(--font-body);font-size:.9375rem;color:var(--ink);background:var(--white);
  border:1px solid var(--line);border-radius:var(--r-sm);padding:.7rem .8rem;box-shadow:none;
}
.uh-sec .wpforms-container input:focus,.uh-sec .wpforms-container select:focus,.uh-sec .wpforms-container textarea:focus{
  border-color:var(--brass);box-shadow:0 0 0 3px var(--brass-16);outline:none;
}
.uh-sec .wpforms-container .wpforms-submit{
  font-family:var(--font-body);font-size:.9375rem;font-weight:600;background:var(--brass);color:var(--btn-ink);
  border:0;border-radius:var(--r-md);padding:.95rem 1.8rem;cursor:pointer;transition:background-color .22s var(--ease);
}
.uh-sec .wpforms-container .wpforms-submit:hover{background:var(--brass-hover)}
.uh-sec .wpforms-container .wpforms-field-description{font-size:.75rem;color:var(--slate-light)}
.uh-sec .wpforms-container .wpforms-required-label{color:var(--brass-text)}

/* =====================================================================
   PART 3 - signature details carried over from the static build
   ===================================================================== */

/* CRITICAL: Astra boxes page content in .ast-container, which was capping every
   full-bleed band (hero, brass value bar, dark sections, CTA) at ~1200px and
   insetting it. Sections must span the viewport; the 1220px measure is handled
   by Elementor's own .e-con-inner. */
#content.site-content > .ast-container{max-width:100%;padding-left:0;padding-right:0}
#content .ast-container > .elementor{width:100%}
#content .entry-content,#content .ast-article-single{margin:0;padding:0;max-width:100%}
.ast-page-builder-template .entry-header,.ast-page-builder-template .entry-content{margin:0;padding:0}
#content article.ast-article-single{border:0;box-shadow:none;background:transparent}

/* Xpro header/footer templates must also run edge to edge. */
.xpro-theme-builder-header-nav,.xpro-theme-builder-footer{width:100%}
.xpro-theme-builder-header-nav > .elementor,.xpro-theme-builder-footer > .elementor{width:100%}
.xpro-theme-builder-header-nav .ast-container,.xpro-theme-builder-footer .ast-container{max-width:100%;padding:0}
.site-header,.ast-primary-header-bar{border:0}

/* Value bar is one continuous brass band divided by hairlines, not a gapped grid. */
.uh-valuebar .uh-grid{gap:0}
.uh-valuebar .uh-grid--4 > .e-con{width:25%}
@media (max-width:1024px){.uh-valuebar .uh-grid--4 > .e-con{width:50%}}
@media (max-width:600px){.uh-valuebar .uh-grid--4 > .e-con{width:100%}}

/* Property card: rating chip and location pill sit ON the photograph. */
.uh-pcard .uh-pcard-media{position:relative;overflow:hidden;border-radius:var(--r-md) var(--r-md) 0 0;line-height:0}
.uh-pcard .uh-pcard-media .elementor-widget-image{line-height:0;margin:0}
.uh-pcard .uh-pcard-media img{width:100%;height:230px;object-fit:cover;display:block;transition:transform .7s var(--ease)}
.e-con.uh-pcard:hover .uh-pcard-media img{transform:scale(1.045)}
.uh-pcard .uh-pcard-rating,.uh-pcard .uh-pcard-loc{position:absolute;z-index:2;width:auto}
.uh-pcard .uh-pcard-rating{top:.75rem;left:.75rem}
.uh-pcard .uh-pcard-loc{bottom:.75rem;left:.75rem}
.uh-pcard .uh-pcard-rating .elementor-heading-title{
  display:inline-flex;align-items:center;gap:.35rem;background:rgba(255,255,255,.95);color:var(--ink);
  font-family:var(--font-body);font-size:.75rem;font-weight:600;letter-spacing:.01em;
  padding:.32rem .6rem;border-radius:var(--r-pill);box-shadow:0 2px 8px rgba(20,32,43,.2);line-height:1.3;
}
.uh-pcard .uh-pcard-rating .elementor-heading-title::before{content:"\2605";color:var(--brass-text);font-size:.85rem}
.uh-pcard .uh-pcard-loc .elementor-heading-title{
  display:inline-flex;align-items:center;gap:.35rem;background:rgba(20,32,43,.85);color:var(--ivory);
  font-family:var(--font-body);font-size:.75rem;font-weight:500;padding:.3rem .6rem;
  border-radius:var(--r-pill);line-height:1.3;
}
.uh-pcard .uh-pcard-body{padding:1.15rem 1.25rem 1.35rem}

/* A little more air between a section header and the grid beneath it. */
.e-con.uh-sec > .uh-sechead{margin-bottom:clamp(.5rem,1.6vw,1.25rem)}

/* Tiles keep the editorial 3:4 crop the static build used. */
.e-con.uh-tile{min-height:0;aspect-ratio:3/4}
.uh-grid--3 .e-con.uh-tile,.uh-grid--2 .e-con.uh-tile{aspect-ratio:4/3}
@media (max-width:767px){.e-con.uh-tile{aspect-ratio:16/10}}

/* Long-form location prose sits in a comfortable measure, centred in the page. */
.uh-prose.elementor-widget-text-editor{margin-inline:0}

/* =====================================================================
   PART 4 - Xpro emits its own class names, not Elementor's. The header
   and footer have to be targeted through those.
   ===================================================================== */

/* Announcement bar: a slim strip, not a full-height section. */
.e-con.uh-announce{padding-block:9px;padding-inline:24px}
.uh-announce .xpro-heading-wrapper{width:100%}
.uh-announce .xpro-heading-title{
  font-family:var(--font-body);font-size:.8125rem;font-weight:400;line-height:1.4;
  color:rgba(246,241,233,.9);display:flex;align-items:center;justify-content:center;gap:.6rem;text-align:center;
}
.uh-announce .xpro-heading-title::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--brass);flex:none}
@media (max-width:600px){.uh-announce .xpro-heading-title{font-size:.75rem;line-height:1.35}}

/* Header bar */
.e-con.uh-header{padding-block:14px;padding-inline:24px}
@media (max-width:767px){.e-con.uh-header{padding-block:12px;padding-inline:20px}}
.uh-logo .xpro-heading-title{font-family:var(--font-display);font-weight:600;font-size:1.35rem;color:var(--ink);line-height:1.1;letter-spacing:.005em}
.uh-logosub .xpro-heading-title{font-family:var(--font-body);font-weight:500;font-size:.5625rem;letter-spacing:.22em;text-transform:uppercase;color:var(--slate-light);line-height:1.2}

/* Header row is one line: logo | nav | actions */
.uh-headrow.uh-grid{flex-wrap:nowrap;align-items:center;gap:20px}
.uh-headrow.uh-grid > .e-con:nth-child(1){width:auto;flex:0 0 auto}
.uh-headrow.uh-grid > .e-con:nth-child(2){width:auto;flex:1 1 auto;min-width:0}
.uh-headrow.uh-grid > .e-con:nth-child(3){width:auto;flex:0 0 auto}
@media (max-width:1100px){
  .uh-headrow.uh-grid{flex-wrap:wrap}
  .uh-headrow.uh-grid > .e-con:nth-child(1){flex:1 1 auto}
  .uh-headrow.uh-grid > .e-con:nth-child(2){order:3;width:100%;flex:1 1 100%}
}

/* Xpro buttons */
.uh-xbtn .xpro-elementor-button{
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--font-body);font-size:.875rem;font-weight:600;letter-spacing:0;text-transform:none;
  padding:.75rem 1.15rem;border-radius:var(--r-md);border:1px solid transparent;line-height:1.2;white-space:nowrap;
  transition:background-color .22s var(--ease),color .22s var(--ease),border-color .22s var(--ease);
}
.uh-xbtn .xpro-button-text{text-transform:none;letter-spacing:0;font-size:.875rem}
.uh-xbtn--brass .xpro-elementor-button{background-color:var(--brass);color:var(--btn-ink)}
.uh-xbtn--brass .xpro-elementor-button:hover{background-color:var(--brass-hover);color:var(--btn-ink)}
.uh-xbtn--ghost .xpro-elementor-button{background-color:transparent;color:var(--ink);border-color:var(--line)}
.uh-xbtn--ghost .xpro-elementor-button:hover{background-color:var(--white);border-color:var(--brass);color:var(--brass-text)}

/* Footer headings and link lists */
.e-con.uh-footer{padding-block:64px 40px;padding-inline:24px}
.e-con.uh-fbottom{padding-block:18px 22px}
.uh-footer .uh-logo .xpro-heading-title{color:var(--ivory)}
.uh-footer .uh-logosub .xpro-heading-title{color:rgba(246,241,233,.5)}
.uh-fhead .xpro-heading-title{
  font-family:var(--font-body);font-size:.78125rem;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--gold);line-height:1.4;
}

/* =====================================================================
   PART 5 - proportions, from looking at the rendered page
   ===================================================================== */

/* The hero headline was running to four lines and pushing the search bar
   below the fold. Tighter scale, wider measure, two lines at desktop. */
.uh-hero .uh-display .elementor-heading-title{
  font-size:clamp(2.3rem,1.35rem + 3.1vw,3.55rem);
  line-height:1.05;max-width:none;
}
@media (min-width:1025px){
  .uh-herotop.uh-grid--2 > .e-con:first-child{width:calc(60% - 12px)}
  .uh-herotop.uh-grid--2 > .e-con:last-child{width:calc(40% - 12px)}
}
.uh-hero-lead .elementor-widget-text-editor{max-width:46ch}

/* Hero footer: ticks left, the two CTAs on one line at the right. */
.uh-herofoot .uh-btnrow{flex-wrap:nowrap}
@media (max-width:1024px){.uh-herofoot .uh-btnrow{flex-wrap:wrap}}
.uh-searchmeta .uh-btnrow{flex-wrap:nowrap}

/* Nav: keep it on one line for as long as possible. */
.uh-header .xpro-elementor-horizontal-navbar-nav{flex-wrap:nowrap}
@media (max-width:1320px){
  .uh-header .xpro-elementor-horizontal-navbar-nav > li > a{padding:.5rem .5rem;font-size:.875rem}
  .uh-xbtn .xpro-elementor-button{padding:.7rem .9rem;font-size:.8125rem}
  .uh-xbtn .xpro-button-text{font-size:.8125rem}
}

/* Property spec lists: neutral glyphs, laid out two-up like the static build. */
.uh-specs .elementor-icon-list-items{display:grid;grid-template-columns:1fr 1fr;gap:.35rem .75rem}
.uh-specs .elementor-icon-list-icon svg,.uh-specs .elementor-icon-list-icon i{fill:var(--slate-light);color:var(--slate-light);width:13px;height:13px}
.uh-specs .elementor-icon-list-text{font-size:.8125rem;color:var(--slate-light)}

/* Card icon tiles need a visible glyph even when Elementor swaps in an SVG. */
.uh-card .elementor-icon-box-icon .elementor-icon svg{width:20px;height:20px;fill:currentColor}

/* =====================================================================
   PART 6 - fixes from the second visual pass
   ===================================================================== */

/* Something upstream force-uppercases buttons. The brand sets sentence case. */
.uh-sec .elementor-button,.uh-hero .elementor-button,
.uh-sec .elementor-button-text,.uh-hero .elementor-button-text,
.uh-xbtn .xpro-elementor-button,.uh-xbtn .xpro-button-text{
  text-transform:none;letter-spacing:0;
}

/* Announcement copy sits inside an inner span that was inheriting a dark colour. */
.uh-announce .xpro-heading-title,
.uh-announce .xpro-title-focus{color:rgba(246,241,233,.92)}
.uh-announce .xpro-title-focus{font-weight:400}

/* Logo block was collapsing and colliding with the first nav item. */
.uh-headrow.uh-grid > .e-con:nth-child(1){min-width:210px}
.uh-logo .xpro-heading-wrapper,.uh-logosub .xpro-heading-wrapper{white-space:nowrap}
.uh-header .xpro-elementor-horizontal-navbar-wrapper{justify-content:flex-start}

/* Hero CTAs: one line each. */
.uh-herofoot .elementor-button,.uh-searchmeta .elementor-button{white-space:nowrap}

/* =====================================================================
   PART 7 - header fits on one line
   The nav ul was 766px of content in a 569px column. With justify-content
   flex-end, flex overflows to the LEFT, so the menu ran over the logo.
   Sizing is tuned so the whole bar fits inside 1220px.
   ===================================================================== */
.uh-headrow.uh-grid > .e-con:nth-child(1){min-width:0;flex:0 0 auto}
.uh-headrow.uh-grid > .e-con:nth-child(2){flex:1 1 auto;min-width:0}
.uh-headrow.uh-grid > .e-con:nth-child(3){flex:0 0 auto}

.uh-header .xpro-elementor-horizontal-navbar-nav{
  flex-wrap:nowrap;justify-content:flex-end;margin:0;padding:0;max-width:100%;
}
.uh-header .xpro-elementor-horizontal-navbar-nav > li{flex:0 0 auto}
.uh-header .xpro-elementor-horizontal-navbar-nav > li > a{
  padding:.5rem .5rem;font-size:.875rem;white-space:nowrap;
}
.uh-header .xpro-elementor-horizontal-navbar-nav .sub-menu a{white-space:nowrap}

/* Actions column: compact enough to leave the nav room. */
.uh-xbtn .xpro-elementor-button{padding:.7rem .95rem;font-size:.8125rem}
.uh-xbtn .xpro-button-text{font-size:.8125rem}

@media (max-width:1300px){
  .uh-header .xpro-elementor-horizontal-navbar-nav > li > a{padding:.5rem .38rem;font-size:.8125rem}
  .uh-xbtn .xpro-elementor-button{padding:.65rem .8rem;font-size:.78125rem}
  .uh-xbtn .xpro-button-text{font-size:.78125rem}
  .uh-logo .xpro-heading-title{font-size:1.2rem}
}
/* Below Xpro's tablet breakpoint the burger takes over, so restore comfort. */
@media (max-width:1024px){
  .uh-header .xpro-elementor-horizontal-navbar-nav{flex-wrap:wrap;justify-content:flex-start}
  .uh-header .xpro-elementor-horizontal-navbar-nav > li > a{font-size:1rem;padding:.65rem .25rem}
}

/* PART 8 - final header sizing. The kit accent typography (uppercase, 1.9px
   tracking) was leaking into the Xpro button label; overridden here. */
.uh-header .uh-xbtn .xpro-elementor-button,
.uh-header .uh-xbtn .xpro-elementor-button .xpro-button-text,
.uh-footer .uh-xbtn .xpro-elementor-button .xpro-button-text{
  text-transform:none;letter-spacing:0;font-family:var(--font-body);font-weight:600;
}
@media (min-width:1201px){
  .uh-header .xpro-elementor-horizontal-navbar-nav > li > a{padding:.5rem .34rem;font-size:.8438rem}
  .uh-header .uh-xbtn .xpro-elementor-button,
  .uh-header .uh-xbtn .xpro-elementor-button .xpro-button-text{font-size:.8125rem}
  .uh-header .uh-xbtn .xpro-elementor-button{padding:.68rem .8rem}
  .uh-headrow.uh-grid{gap:14px}
}
@media (min-width:1440px){
  .uh-header .xpro-elementor-horizontal-navbar-nav > li > a{padding:.5rem .5rem;font-size:.875rem}
  .uh-header .uh-xbtn .xpro-elementor-button{padding:.7rem .95rem}
}

/* PART 9 - footer, against Xpro's real markup.
   Social icons were rendering at 60px in platform brand colours; the infolist
   chevrons sat in 25px boxes with a lot of air between rows. */
.uh-footer .xpro-social-icon{
  width:36px;height:36px;min-width:0;padding:0;
  display:inline-flex;align-items:center;justify-content:center;
  background:transparent;border:1px solid rgba(246,241,233,.2);border-radius:var(--r-sm);
  color:rgba(246,241,233,.75);font-size:15px;
  transition:color .22s var(--ease),border-color .22s var(--ease),background-color .22s var(--ease);
}
.uh-footer .xpro-social-icon:hover{color:var(--gold);border-color:var(--brass);background:rgba(192,138,62,.1)}
.uh-footer .xpro-social-icon svg,.uh-footer .xpro-social-icon i{width:15px;height:15px;font-size:15px;fill:currentColor;color:currentColor}

.uh-footer .xpro-infolist-wrapper{display:grid;gap:.5rem}
.uh-footer .xpro-infolist-item{margin:0}
.uh-footer .xpro-infolist-item a{display:flex;align-items:center;gap:.45rem;padding:0}
.uh-footer .xpro-infolist-media{
  width:auto;height:auto;min-width:0;background:transparent;border:0;padding:0;
  display:inline-flex;align-items:center;
}
.uh-footer .xpro-infolist-media svg,.uh-footer .xpro-infolist-media i{width:9px;height:9px;font-size:9px;fill:var(--brass);color:var(--brass)}
.uh-footer .xpro-infolist-content{margin:0}
.uh-fhead{margin-bottom:.35rem}

/* PART 10 - Elementor writes per-element CSS from widget defaults at higher
   specificity than a theme stylesheet can reach. These few properties are the
   ones Xpro's defaults get wrong, so they are forced. Deliberately narrow. */
.uh-footer .xpro-infolist-media{width:auto !important;height:auto !important;min-width:0 !important;background:transparent !important;padding:0 !important;border:0 !important}
.uh-footer .xpro-infolist-media svg,
.uh-footer .xpro-infolist-media i{width:9px !important;height:9px !important;font-size:9px !important;fill:var(--brass) !important;color:var(--brass) !important}
.uh-footer .xpro-infolist-item{margin:0 !important;padding:0 !important}
.uh-footer .xpro-infolist-wrapper{display:grid !important;gap:.5rem !important;margin:0 !important;padding:0 !important}
.uh-footer .xpro-infolist-item a{gap:.5rem !important;padding:0 !important}
.uh-footer .xpro-infolist-content{padding:0 !important;margin:0 !important}

.uh-footer .xpro-social-icon{
  width:36px !important;height:36px !important;line-height:1 !important;padding:0 !important;
  background:transparent !important;border:1px solid rgba(246,241,233,.2) !important;
  border-radius:var(--r-sm) !important;color:rgba(246,241,233,.75) !important;
}
.uh-footer .xpro-social-icon:hover{color:var(--gold) !important;border-color:var(--brass) !important;background:rgba(192,138,62,.1) !important}
.uh-footer .xpro-social-icon svg,.uh-footer .xpro-social-icon i{width:15px !important;height:15px !important;font-size:15px !important;fill:currentColor !important;color:currentColor !important}

/* PART 11 - Xpro wraps heading text in an inner .xpro-title-focus span that
   carries its own colour (defaulting to Ink). On dark grounds that rendered
   ink-on-ink and the text vanished. Let the span inherit from the heading. */
.xpro-heading-title .xpro-title-focus{color:inherit !important;font:inherit;letter-spacing:inherit}

/* PART 12a - value bar, FAQ, centring (matched to the coded build) */

/* The band has no section padding in the coded build; the cells supply it. */
.e-con.uh-valuebar{padding-block:0}
.uh-valuebar .uh-vb-item{padding:1.35rem 1.25rem}
.uh-vb-k .elementor-heading-title{font-size:1.35rem}
.uh-vb-v .elementor-heading-title{font-size:.78125rem;letter-spacing:.06em}

/* FAQ used title_html_tag h3, so the kit's 22px h3 style was winning. */
.uh-faq .elementor-tab-title,
.uh-faq .elementor-tab-title a,
.uh-faq .elementor-accordion-title{font-size:1.1875rem !important;line-height:1.3;font-family:var(--font-display);font-weight:600}
.uh-faq .elementor-tab-content,
.uh-faq .elementor-tab-content p{font-size:.9375rem !important;line-height:1.65}

/* Centred blocks: a container with an explicit width still needs centring. */
.e-con.uh-narrow{margin-inline:auto}
.e-con.uh-cta > .e-con{margin-inline:auto}
.uh-sechead--center{margin-inline:auto;text-align:center}
.uh-sechead--center .elementor-widget-text-editor{text-align:center}
.e-con.uh-sec > .uh-card[class*="uh-narrow"]{margin-inline:auto}

/* PART 12b - footer grid and tile hover */

/* Coded footer grid is 1.35fr 1fr 1fr 1fr. */
.uh-frow.uh-grid{gap:clamp(1.75rem,3.5vw,3rem)}
.uh-frow.uh-grid > .e-con:nth-child(1){width:calc(33% - 24px)}
.uh-frow.uh-grid > .e-con:nth-child(n+2){width:calc(22.3% - 24px)}
@media (max-width:900px){
  .uh-frow.uh-grid > .e-con:nth-child(1),
  .uh-frow.uh-grid > .e-con:nth-child(n+2){width:calc(50% - 16px)}
}
@media (max-width:560px){
  .uh-frow.uh-grid > .e-con:nth-child(1),
  .uh-frow.uh-grid > .e-con:nth-child(n+2){width:100%}
}
.uh-fbottomrow.uh-grid > .e-con{width:calc(50% - 10px)}
@media (max-width:767px){.uh-fbottomrow.uh-grid > .e-con{width:100%}}

/* Tiles: the coded build scales an <img>. Scaling background-size distorted the
   crop, so the photograph now sits on a pseudo-element that transforms cleanly. */
.e-con.uh-tile{background-size:cover !important;background-position:center center}
.e-con.uh-tile::after{
  content:"";position:absolute;inset:0;z-index:-2;
  background-image:inherit;background-size:cover;background-position:center center;
  transition:transform .8s var(--ease);
}
.e-con.uh-tile:hover::after{transform:scale(1.05)}
.e-con.uh-tile:hover{background-size:cover !important}

/* PART 12c - location page sidebar, and the header dropdowns */

/* Coded layout: prose in a fluid column, 340px sticky sidebar beside it. */
.uh-withside.uh-grid{gap:clamp(2rem,4vw,3.5rem);align-items:flex-start}
.uh-withside.uh-grid > .e-con:nth-child(1){width:calc(100% - 340px - clamp(2rem,4vw,3.5rem))}
.uh-withside.uh-grid > .e-con:nth-child(2){width:340px}
@media (max-width:940px){
  .uh-withside.uh-grid > .e-con:nth-child(1),
  .uh-withside.uh-grid > .e-con:nth-child(2){width:100%}
}
@media (min-width:941px){.uh-side{position:sticky;top:96px}}
.uh-hl .uh-hl-item + .uh-hl-item{border-top:1px solid var(--line);padding-top:1.15rem}
.uh-hl .elementor-icon-box-wrapper{display:flex;gap:.9rem;align-items:flex-start;text-align:left}
.uh-hl .elementor-icon-box-icon{margin:0 !important;flex:0 0 auto}
.uh-hl .elementor-icon-box-icon .elementor-icon{width:36px;height:36px;font-size:17px}
.uh-hl .elementor-icon-box-title{font-family:var(--font-body) !important;font-size:1rem !important;font-weight:600;margin-bottom:.2rem}
.uh-hl .elementor-icon-box-description{font-size:.875rem;line-height:1.55}
.uh-card--sage{background:var(--sage) !important;border-color:var(--sage-deep) !important}
.uh-side .elementor-button{width:100%;justify-content:center}

/* Dropdowns: white card, hairline, soft shadow, matching the coded menu. */
.uh-header .xpro-elementor-horizontal-navbar-nav .sub-menu{
  min-width:250px;padding:.45rem;border:1px solid var(--line);border-radius:var(--r-md);
  background:var(--white);box-shadow:var(--shadow-lg);
}
.uh-header .xpro-elementor-horizontal-navbar-nav .sub-menu li{width:100%}
.uh-header .xpro-elementor-horizontal-navbar-nav .sub-menu li a{
  display:block;padding:.58rem .7rem;border-radius:var(--r-sm);
  font-family:var(--font-body);font-size:.9063rem;font-weight:500;color:var(--ink);
}
.uh-header .xpro-elementor-horizontal-navbar-nav .sub-menu li a:hover{background:var(--cream);color:var(--brass-text)}

/* PART 13 - Xpro dropdowns use .xpro-elementor-dropdown-menu, not .sub-menu,
   which is why the earlier dropdown styling never landed. */
.uh-header .xpro-elementor-dropdown-menu{
  min-width:252px;padding:.45rem;margin:0;list-style:none;
  background:var(--white);border:1px solid var(--line);border-radius:var(--r-md);
  box-shadow:var(--shadow-lg);
}
.uh-header .xpro-elementor-dropdown-menu li{width:100%;margin:0}
.uh-header .xpro-elementor-dropdown-menu li a{
  display:block;padding:.58rem .7rem;border-radius:var(--r-sm);
  font-family:var(--font-body);font-size:.9063rem;font-weight:500;color:var(--ink);white-space:nowrap;
  transition:background-color .18s var(--ease),color .18s var(--ease);
}
.uh-header .xpro-elementor-dropdown-menu li a:hover{background:var(--cream);color:var(--brass-text)}

/* Value bar: trim to the coded height (~82px). */
.uh-valuebar .uh-vb-item{padding:1.15rem 1.25rem;gap:2px}
.uh-vb-k .elementor-heading-title{line-height:1.1}
.uh-vb-v .elementor-heading-title{line-height:1.35}

/* PART 14 - Xpro writes the dropdown colours as per-element CSS, which outranks
   a theme stylesheet. Forced so the menu reads as a white card. */
.uh-header .xpro-elementor-dropdown-menu{
  background-color:var(--white) !important;border:1px solid var(--line) !important;
  border-radius:var(--r-md) !important;box-shadow:var(--shadow-lg) !important;padding:.45rem !important;
}
.uh-header .xpro-elementor-dropdown-menu li a,
.uh-header .xpro-elementor-dropdown-menu li a .xpro-menu-item-text{
  color:var(--ink) !important;background-color:transparent !important;
  font-size:.9063rem !important;font-weight:500 !important;padding:.58rem .7rem !important;
  border-radius:var(--r-sm) !important;border:0 !important;
}
.uh-header .xpro-elementor-dropdown-menu li a:hover,
.uh-header .xpro-elementor-dropdown-menu li a:hover .xpro-menu-item-text{
  color:var(--brass-text) !important;background-color:var(--cream) !important;
}
.uh-header .xpro-elementor-dropdown-menu li{border:0 !important;margin:0 !important}

/* Xpro's dark dropdown caret doesn't belong on a white card. */
.uh-header .xpro-elementor-dropdown-menu::before,
.uh-header .xpro-elementor-dropdown-menu::after,
.uh-header .xpro-elementor-horizontal-navbar-nav > li.dropdown > .xpro-elementor-dropdown-menu::before{display:none !important}
.uh-header .xpro-elementor-dropdown-menu li a{line-height:1.35 !important}

/* PART 15 - final proportions against the coded build */

/* Value bar: coded band is ~82px. Elementor widgets add their own margins. */
.uh-valuebar .uh-vb-item{padding:.95rem 1.25rem;gap:0}
.uh-valuebar .uh-vb-item .elementor-widget{margin:0}
.uh-valuebar .uh-vb-item .elementor-widget-container{margin:0}
.uh-vb-v .elementor-heading-title{margin-top:2px}

/* Footer: coded grid is 1.35fr 1fr 1fr 1fr (first column ~31%). */
.uh-frow.uh-grid > .e-con:nth-child(1){width:calc(30.8% - 24px)}
.uh-frow.uh-grid > .e-con:nth-child(n+2){width:calc(23.06% - 24px)}

/* Centre any explicitly-sized block inside a section. */
.e-con.uh-sec > .e-con.uh-narrow,
.e-con.uh-cta > .e-con,
.e-con.uh-sec > .e-con.uh-card{margin-inline:auto}

/* PART 16 - thin brass rule in place of the value bar.
   A plain band between the hero and the content below: no text, no dividers,
   no inner padding. Change the height here to adjust it. */
.e-con.uh-valuebar--thin{
  padding:0;min-height:12px;height:12px;
  background-color:var(--brass);
  flex-direction:row;
}
.e-con.uh-valuebar--thin > .e-con-inner{padding:0;min-height:0;height:100%}
.e-con.uh-valuebar--thin .uh-vb-item,
.e-con.uh-valuebar--thin .uh-grid{display:none}
@media (max-width:767px){.e-con.uh-valuebar--thin{min-height:10px;height:10px}}

/* PART 17 - let the Hostaway date picker escape the hero.
   The hero had overflow:hidden (clipping the calendar) and isolation:isolate
   (so its children could never paint over the sections below it). The hero is
   lifted above the following sections instead, and the grain overlay is clipped
   on its own pseudo-element rather than by the container. */
.e-con.uh-hero{overflow:visible;z-index:6}
.uh-hero::before,.uh-hero::after{border-radius:inherit}
.searchband{position:relative;z-index:20}
.e-con.uh-searchbar{position:relative;z-index:20}
.uh-hostaway-widget{position:relative;z-index:9999}
/* anything the widget pops open sits above the page */
.uh-hostaway-widget .hsbw-calendar,
.uh-hostaway-widget .hsbw-dropdown,
.uh-hostaway-widget [class*="hsbw-"][class*="popup"],
.uh-hostaway-widget [class*="hsbw-"][class*="panel"]{z-index:10000}
/* the bands below must not paint over it */
.e-con.uh-valuebar--thin{position:relative;z-index:1}

/* PART 18 - brand monogram in the header lockup */
.uh-lockup{align-items:center}
.uh-mark{flex:0 0 auto;line-height:0}
.uh-mark .elementor-widget-container,.uh-mark a{line-height:0;display:block}
.uh-mark img{width:38px;height:auto;display:block}
.uh-wordmark{flex:0 0 auto}
@media (max-width:1300px){.uh-mark img{width:34px}}
@media (max-width:767px){.uh-mark img{width:32px}}
/* the lockup sets the logo column width, so let it size to content */
.uh-headrow.uh-grid > .e-con:nth-child(1){min-width:0}

/* PART 19 - refit the header now that the monogram is in the lockup.
   Elementor writes its own width on the image widget, hence the override. */
.uh-header .uh-mark img{width:36px !important;height:auto !important;max-width:none}
.uh-lockup{gap:9px}
.uh-logo .xpro-heading-title{font-size:1.18rem}
.uh-logosub .xpro-heading-title{font-size:.5rem;letter-spacing:.18em}

@media (min-width:1201px){
  .uh-header .xpro-elementor-horizontal-navbar-nav > li > a{padding:.5rem .26rem;font-size:.8281rem}
  .uh-header .uh-xbtn .xpro-elementor-button{padding:.62rem .72rem}
  .uh-header .uh-xbtn .xpro-elementor-button,
  .uh-header .uh-xbtn .xpro-elementor-button .xpro-button-text{font-size:.7969rem}
  .uh-headrow.uh-grid{gap:12px}
}
@media (min-width:1500px){
  .uh-header .xpro-elementor-horizontal-navbar-nav > li > a{padding:.5rem .45rem;font-size:.875rem}
  .uh-header .uh-mark img{width:40px !important}
  .uh-logo .xpro-heading-title{font-size:1.3rem}
}

#ast-scroll-top{display:none}


/* ============================================================
   PART 20 - Tom's own logo icon replaces the traced monogram.
   Source is 264x250. Height is set explicitly rather than auto so the
   lockup keeps its box while the image is still lazy-loading; with
   height:auto the row collapsed to 0 on first paint.
   ============================================================ */
.uh-header .uh-mark img{
  width:38px !important; height:36px !important;
  max-width:none; display:block; object-fit:contain;
}
.uh-header .uh-mark a{display:block; line-height:0;}
@media (min-width:1500px){
  .uh-header .uh-mark img{width:42px !important; height:40px !important;}
}
@media (max-width:600px){
  .uh-header .uh-mark img{width:32px !important; height:30px !important;}
}


/* ============================================================
   PART 21 - 'Most owners choose this' badge on the featured plan.

   Elementor uses .e-con::before as the container's own border and
   background-overlay layer, so it ships:
       height: max(100% + ..., 100%)
       width:  max(100% + ..., 100%)
       left:   calc(0px - var(--border-left-width))
   Our badge rule set only top/right/background, so it inherited the
   full-bleed geometry and rendered as a bronze slab across the whole
   card, covering the plan text. Pin every side and let it shrink-wrap.
   ============================================================ */
.e-con.uh-plan--featured::before{
  width:auto !important;
  height:auto !important;
  inset:0 1.5rem auto auto;      /* top right bottom left */
  white-space:nowrap;
  border:0;
  z-index:3;
}

/* ============================================================
   PART 22

   Cards sitting on an ink ground were ink-soft, so dark on dark
   and visually flat. Only one section on the site does this
   (What full management covers), so switching to a light card is
   safe to make globally rather than scoping it.
   ============================================================ */
.uh-sec--ink .e-con.uh-card{
  background:var(--cream);
  border-color:rgba(20,32,43,.10);
  box-shadow:0 6px 24px rgba(0,0,0,.18);
}
.uh-sec--ink .uh-card .elementor-icon-box-title{color:var(--ink)}
.uh-sec--ink .uh-card .elementor-icon-box-description{color:var(--slate)}
.uh-sec--ink .uh-card .elementor-icon-box-icon .elementor-icon{
  background:var(--brass-16);
  color:var(--brass-text);
}

/* Onboarding step numbers were gold text on an ink disc, inside an
   ink section. A brass disc with white weight reads at a glance. */
.uh-step .uh-stepn .elementor-heading-title{
  background:var(--brass);
  color:#FFFFFF;
  font-weight:700;
  font-size:1.15rem;
  box-shadow:0 2px 10px rgba(20,32,43,.18);
}

/* Enquiry form. Fields ran as one tall full-width column; these
   pair them up and tighten the vertical rhythm. */
.uh-grid--formside{grid-template-columns:1.75fr 1fr}
@media (max-width:900px){
  .uh-grid--formside{grid-template-columns:1fr}
}
.uh-sec .wpforms-container .wpforms-field{padding:0 0 .55rem}
.uh-sec .wpforms-container .wpforms-field-label{margin-bottom:.15rem}
.uh-sec .wpforms-container .wpforms-submit-container{padding-top:.5rem}

/* WPForms own half-width classes, made to behave inside our card. */
.uh-sec .wpforms-container .wpforms-one-half{
  width:calc(50% - .5rem);
  float:left;
  margin-left:1rem;
}
.uh-sec .wpforms-container .wpforms-one-half.wpforms-first{
  margin-left:0;
  clear:left;
}
.uh-sec .wpforms-container form.wpforms-form::after{content:"";display:table;clear:both}
@media (max-width:600px){
  .uh-sec .wpforms-container .wpforms-one-half{width:100%;float:none;margin-left:0}
}

/* Contact details panel beside the form. */
.uh-contactcard p{margin:0 0 .5rem}
.uh-contactcard a{color:var(--brass-text);text-decoration:none;font-weight:600}
.uh-contactcard a:hover{text-decoration:underline}

/* Image filling the empty half of the qualification block. */
.uh-figure img{
  width:100%;
  height:100%;
  min-height:320px;
  object-fit:cover;
  border-radius:14px;
  display:block;
}

/* ============================================================
   PART 23 - enquiry form layout

   WPForms sets clear:both on every .wpforms-field, which defeats
   its own wpforms-one-half float classes, and its "medium" size
   class caps inputs at max-width:60%. Flexing the field container
   is more reliable than fighting the floats, so PART 22's float
   approach is superseded here.
   ============================================================ */
.uh-sec .wpforms-container .wpforms-field-container{
  display:flex;
  flex-wrap:wrap;
  column-gap:1rem;
}
.uh-sec .wpforms-container .wpforms-field{
  width:100%;
  clear:none !important;
  float:none !important;
  margin-left:0;
}
.uh-sec .wpforms-container .wpforms-one-half{
  width:calc(50% - .5rem);
  margin-left:0;
}
@media (max-width:600px){
  .uh-sec .wpforms-container .wpforms-one-half{width:100%}
}

/* Inputs fill their column instead of stopping at WPForms' 60%. */
.uh-sec .wpforms-container .wpforms-field input[type=text],
.uh-sec .wpforms-container .wpforms-field input[type=email],
.uh-sec .wpforms-container .wpforms-field input[type=tel],
.uh-sec .wpforms-container .wpforms-field input[type=url],
.uh-sec .wpforms-container .wpforms-field input[type=number],
.uh-sec .wpforms-container .wpforms-field select,
.uh-sec .wpforms-container .wpforms-field textarea{
  width:100%;
  max-width:100%;
}
.uh-sec .wpforms-container .wpforms-submit-container{width:100%}

/* The contact panel was stretching to match the full height of the
   form column, leaving a tall empty box beside it. */
.uh-grid--formside > .uh-contactcard{align-self:flex-start}

/* ============================================================
   PART 24 - form pairing, sub-pixel fix

   Two halves at calc(50% - .5rem) plus a 1rem column-gap came
   to 536.8px inside a 537px container, so rounding wrapped them
   onto separate rows. Using flex-basis with shrink allowed lets
   them give up the fraction of a pixel instead of wrapping.
   ============================================================ */
.uh-sec .wpforms-container .wpforms-field{box-sizing:border-box}
.uh-sec .wpforms-container .wpforms-one-half{
  flex:0 1 calc(50% - .5rem);
  width:auto;
  min-width:0;
}
@media (max-width:600px){
  .uh-sec .wpforms-container .wpforms-one-half{flex:0 0 100%}
}

/* ============================================================
   PART 25 - the actual cause of the form not pairing

   WPForms enqueues its own stylesheet after the theme and sets
   margin-left:20px on .wpforms-field.wpforms-one-half at equal
   specificity, so it won on source order. Two halves plus that
   margin came to 540.8px in a 537px column and wrapped. This is
   one of the few places !important is genuinely warranted.
   ============================================================ */
.uh-sec .wpforms-container .wpforms-field.wpforms-one-half{
  margin-left:0 !important;
  margin-right:0 !important;
}

/* ============================================================
   PART 26 - sticky header

   Xpro has a sticky flag set on the header template but it was
   not applying. The blocker is overflow-x:hidden on body, which
   creates a scroll container and silently disables position:
   sticky on every descendant. overflow:clip does the same job
   of preventing sideways scroll without creating one.

   Sticky sits on the outer Xpro header element rather than
   .uh-header, because .uh-header lives inside .elementor-103,
   which ends immediately below it - a sticky child cannot
   outlive its parent box.
   ============================================================ */
html{overflow-x:clip}
body{overflow-x:clip}

header.xpro-theme-builder-header{
  position:sticky;
  top:0;
  z-index:200;
}

/* The admin bar is fixed, so logged-in users need the offset. */
body.admin-bar header.xpro-theme-builder-header{top:32px}
@media (max-width:782px){
  body.admin-bar header.xpro-theme-builder-header{top:46px}
}

/* Lift it off the content once it is over something. */
header.xpro-theme-builder-header .uh-header{
  background:rgba(250,247,242,.97);
  backdrop-filter:saturate(1.4) blur(6px);
  box-shadow:0 1px 0 var(--line), 0 8px 24px rgba(20,32,43,.06);
}

/* ============================================================
   PART 27 - vertical rhythm

   --section-y was clamp(4rem,7.5vw,7rem), so up to 112px above
   and below every section: 224px of dead space between two of
   them on a large screen. Roughly a third comes off here, which
   still leaves clear separation without pushing content down.

   The header matters more than it used to now that it is sticky,
   because it occupies the viewport permanently rather than
   scrolling away.
   ============================================================ */
:root{
  --section-y:clamp(2.75rem,5vw,4.75rem);
}

.uh-sec--tight{padding-block:clamp(1.75rem,3vw,2.5rem)}
.uh-hero{padding-block:clamp(2.5rem,4.5vw,4rem)}
.uh-hero-home{padding-block:clamp(2.25rem,4vw,3.5rem)}

/* Header and announce bar, trimmed. */
.uh-announce{padding-block:6px}
.uh-header{padding-block:10px}
@media (max-width:1024px){
  .uh-header{padding-block:9px}
}

/* Section headings sat a long way from the content they introduce. */
.uh-sechead{gap:8px}

/* ============================================================
   PART 28 - balanced card rows

   .uh-grid is flex, so a row that does not divide evenly left
   its remainder hanging on the left. Centring the whole grid
   has no effect on full rows, which fill the width exactly, and
   centres the last row when it is short. Means card counts no
   longer have to be stretched to a multiple of the columns.
   ============================================================ */
.uh-grid{justify-content:center}


/* ---------- PART 29: anchor offset for the sticky header ---------- */
#search{scroll-margin-top:120px}
@media(max-width:782px){#search{scroll-margin-top:96px}}


/* ---------- PART 30: media cards on the location pages ---------- */
.uh-card--media{padding:0;overflow:hidden}
.uh-card--media .elementor-widget-image{margin:0;line-height:0}
.uh-card--media .uh-figure img{width:100%;height:210px;min-height:0;object-fit:cover;border-radius:var(--r-md) var(--r-md) 0 0;display:block}
.uh-card--media .uh-h3{padding:1.1rem 1.25rem 0}
.uh-card--media .uh-small{padding:0 1.25rem 1.25rem}

/* PART 31: readable measure for the location intro after the sidebar was removed */
.uh-prosewrap{max-width:72ch}
.uh-prosewrap .uh-prose{max-width:none}

/* PART 32: lists and tables in long-form legal prose (privacy, terms, cookies) */
.uh-prose ul{margin:0 0 1.15em;padding-left:1.25em}
.uh-prose li{margin:0 0 .5em;line-height:1.65}
.uh-legal-table{width:100%;border-collapse:collapse;margin:.25rem 0 1.5em;font-size:.95rem}
.uh-legal-table th,.uh-legal-table td{text-align:left;vertical-align:top;padding:.65rem .75rem;border:0;border-bottom:1px solid rgba(0,0,0,.1)}
.uh-legal-table th{font-weight:600;color:var(--ink)}

/* ---------- PART 33: whole location tile is a link (homepage). The tile's own button link is stretched over the tile, so there is one link, no nested anchors, and keyboard focus still lands on the button. ---------- */
.e-con.uh-tile--link{cursor:pointer}
.e-con.uh-tile--link .e-con,.e-con.uh-tile--link .elementor-element,.e-con.uh-tile--link .elementor-widget-container,.e-con.uh-tile--link .elementor-button-wrapper{position:static}
.e-con.uh-tile--link .elementor-button::after{content:"";position:absolute;inset:0;z-index:2}
.e-con.uh-tile--link:focus-within{outline:2px solid var(--gold);outline-offset:3px}

/* ---------- PART 34: footer 'Cookie settings' (WPConsent preferences button) styled as a plain link like its neighbours ---------- */
.uh-cookie-settings,.uh-cookie-settings.button{all:unset;cursor:pointer;font:inherit;color:#8E6320;text-decoration:underline}
.uh-cookie-settings:hover{color:var(--gold)}
.uh-cookie-settings:focus-visible{outline:2px solid var(--gold);outline-offset:2px}

/* ---------- PART 35: mobile layout (2 October 2026). Everything here is inside a max-width media query, except the one rule hiding the menu CTAs on desktop, so the desktop layout is untouched. ---------- */
.uh-cardots{display:none}
@media (min-width:1025px){.uh-menu-cta{display:none!important}}

/* Header: logo left, menu button right, CTAs move into the menu panel (tablet and phone, where the menu collapses) */
@media (max-width:1024px){
  .uh-header{padding-top:10px!important;padding-bottom:10px!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background-color:#FAF7F2!important}
  .uh-header .uh-headrow{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;align-items:center!important;justify-content:space-between!important;gap:12px!important}
  .uh-header .elementor-element-7353569{order:1;width:auto!important;flex:0 1 auto!important;margin:0!important;justify-content:flex-start!important}
  .uh-header .elementor-element-9188463{order:2;width:auto!important;flex:0 0 auto!important;margin-left:auto!important}
  .uh-header .elementor-element-7298610{display:none!important}
  .xpro-elementor-horizontal-menu-toggler{width:44px!important;height:44px!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center;border-radius:var(--r-md)}
  .xpro-elementor-horizontal-menu-toggler svg{width:22px!important;height:22px!important;fill:#fff!important;display:block}
  .uh-menu-cta{display:block!important;padding:0 20px!important;margin-top:10px!important;border:0!important}
  .uh-menu-cta > a{display:block!important;text-align:center!important;padding:12px 16px!important;border-radius:var(--r-md)!important;font-weight:600!important;border:1px solid #C08A3E!important}
  .uh-menu-cta--book{margin-top:22px!important}
  .uh-menu-cta--book > a{background:#C08A3E!important;color:#14202B!important}
  .uh-menu-cta--list > a{background:transparent!important;color:inherit!important}
}

@media (max-width:767px){
  /* Discount bar: hidden on phones (the same discounts are on the Deals page and at checkout) */
  .uh-announce{display:none!important}
  .uh-header .uh-lockup img,.uh-header .uh-mark img{max-height:34px;width:auto}

  /* Type: a step smaller on phones. Body text is left at its current size for readability */
  .uh-display .elementor-heading-title{font-size:29px!important;line-height:1.12!important}
  .uh-h1 .elementor-heading-title{font-size:28px!important;line-height:1.15!important}
  .uh-h2 .elementor-heading-title{font-size:24px!important;line-height:1.2!important}
  .uh-h3 .elementor-heading-title{font-size:18px!important}
  .uh-lead,.uh-lead p{font-size:15px!important;line-height:1.55!important}
  .uh-eyebrow .elementor-heading-title{font-size:11px!important}

  /* Swipe carousels for property cards, location tiles and service cards */
  .uh-grid:has(> .uh-pcard),.uh-grid:has(> .uh-tile),.uh-grid:has(> .uh-card--link){display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;overflow-x:auto!important;overflow-y:hidden;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:14px!important;scrollbar-width:none;padding-bottom:4px}
  .uh-grid:has(> .uh-pcard)::-webkit-scrollbar,.uh-grid:has(> .uh-tile)::-webkit-scrollbar,.uh-grid:has(> .uh-card--link)::-webkit-scrollbar{display:none}
  .uh-grid > .uh-pcard,.uh-grid > .uh-tile,.uh-grid > .uh-card--link{flex:0 0 84%!important;width:84%!important;max-width:84%!important;scroll-snap-align:start}
  .uh-cardots{display:flex;justify-content:center;gap:8px;margin-top:14px}
  .uh-cardots button{all:unset;width:8px;height:8px;border-radius:50%;background:rgba(20,32,43,.22);cursor:pointer}
  .uh-cardots button[aria-current="true"]{background:#C08A3E}
  .uh-cardots button:focus-visible{outline:2px solid #C08A3E;outline-offset:2px}

  /* Footer: stack the columns instead of squeezing three into one row */
  .elementor-104 .uh-frow{flex-wrap:wrap!important;row-gap:28px!important}
  .elementor-104 .uh-frow > .e-con{width:100%!important;flex:0 0 100%!important;max-width:100%!important}
  .elementor-104 .uh-frow > .e-con:not(:first-child){width:calc(50% - 13px)!important;flex:0 0 calc(50% - 13px)!important}
}
/* PART 35b: mobile menu panel legibility */
@media (max-width:1024px){
.uh-header .xpro-elementor-horizontal-navbar-wrapper{background:#FAF7F2!important}
.uh-header .xpro-elementor-horizontal-navbar-nav>li:not(.uh-menu-cta)>a,.uh-header .xpro-elementor-horizontal-navbar-nav .sub-menu a{color:#14202B!important}
.uh-header .xpro-elementor-horizontal-navbar-nav>li:not(.uh-menu-cta)>a:hover,.uh-header .xpro-elementor-horizontal-navbar-nav>li.current-menu-item>a{color:#8E6320!important}
}

/* PART 35c: carousels start at the first card (no unreachable left overflow) */
@media (max-width:767px){
.uh-grid:has(> .uh-pcard),.uh-grid:has(> .uh-tile),.uh-grid:has(> .uh-card--link){justify-content:flex-start!important;align-items:stretch!important}
}

/* PART 35d: tidier footer link columns on phones */
@media (max-width:767px){
.elementor-104 .uh-footer{padding-top:40px!important}
.elementor-104 .xpro-heading-title{text-align:left!important}
.elementor-104 .xpro-heading-wrapper,.elementor-104 .elementor-widget-xpro-heading{text-align:left!important}
.elementor-104 .xpro-infolist-media{margin:0 8px 0 0!important}
.elementor-104 .xpro-infolist-item>a{align-items:center!important}
.elementor-104 .elementor-element:has(> .xpro-infolist-wrapper),.elementor-104 .elementor-element:has(.xpro-heading-title){align-self:stretch!important;width:100%!important;max-width:100%!important}
.elementor-104 .xpro-infolist-item{padding:5px 0!important}
}
