/* Laurisilva Forest - design system for Laurisilva Heights service pages */

:root{
  --lsh-bg:#F4F5F1;
  --lsh-surface:#FFFFFF;
  --lsh-ink:#22261F;
  --lsh-muted:#5C6156;
  --lsh-accent:#495338;
  --lsh-accent-dark:#3A462B;
  --lsh-accent-soft:#EDF0E6;
  --lsh-forest:#495338;
  --lsh-deep:#1A1D17;
  --lsh-line:#DDE0D6;
  --lsh-green:#A9BC8E;
  --lsh-r:10px;
  --lsh-rb:4px;
  --lsh-w:1240px;
  --lsh-header-h:72px;
}

/* ---------- base ---------- */
body.lsh{background:var(--lsh-bg);color:var(--lsh-ink);font-family:"Open Sans",system-ui,sans-serif;font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body.lsh h1,body.lsh h2,body.lsh h3,body.lsh h4,body.lsh h5{font-family:"Archivo","Open Sans",sans-serif;color:var(--lsh-ink);letter-spacing:-.02em;margin:0}
body.lsh p{margin:0 0 1em}
body.lsh p:last-child{margin-bottom:0}

/* The Elementor global kit sets Roboto and a blue heading colour on this site.
   These selectors out-specify it without touching the kit itself. */
body.lsh .elementor-widget-heading .elementor-heading-title{font-family:"Archivo","Open Sans",sans-serif;color:var(--lsh-ink);letter-spacing:-.02em;font-weight:700}
body.lsh .elementor-widget-text-editor,body.lsh .elementor-widget-text-editor p,body.lsh .elementor-widget-icon-list,body.lsh .elementor-widget-form{font-family:"Open Sans",system-ui,sans-serif}
body.lsh .lsh-hero .elementor-widget-heading .elementor-heading-title,
body.lsh .lsh-bg-deep .elementor-widget-heading .elementor-heading-title,
body.lsh .lsh-bg-forest .elementor-widget-heading .elementor-heading-title,
body.lsh .lsh-card--lead .elementor-widget-heading .elementor-heading-title{color:#F4F5F1}

/* 100vw includes the scrollbar, so the edge bleed overshoots by a few pixels on
   purpose. Clipping per section (not on body) keeps that off the horizontal
   scrollbar without breaking sticky or overflowing menus. */
body.lsh .lsh-sec{padding-block:clamp(64px,8vw,124px);overflow-x:clip}
body.lsh .lsh-sec>.e-con-inner{max-width:var(--lsh-w);width:100%;display:flex;flex-direction:column;gap:clamp(20px,2.4vw,32px)}
body.lsh .lsh-sec--tight{padding-block:clamp(48px,5vw,80px)}
body.lsh .lsh-bg-bone{background:var(--lsh-bg)}
body.lsh .lsh-bg-white{background:var(--lsh-surface)}
body.lsh .lsh-bg-deep{background:var(--lsh-deep);color:#F4F5F1}
body.lsh .lsh-bg-forest{background:var(--lsh-forest);color:#F4F5F1}
body.lsh .lsh-bg-deep h1,body.lsh .lsh-bg-deep h2,body.lsh .lsh-bg-deep h3,body.lsh .lsh-bg-deep h4,
body.lsh .lsh-bg-forest h1,body.lsh .lsh-bg-forest h2,body.lsh .lsh-bg-forest h3,body.lsh .lsh-bg-forest h4{color:#F4F5F1}

/* ---------- type scale ---------- */
body.lsh .lsh-h1 .elementor-heading-title{font-size:clamp(38px,5.6vw,76px);line-height:1.03;font-weight:800;max-width:17ch}
body.lsh .lsh-h2 .elementor-heading-title{font-size:clamp(29px,3.4vw,48px);line-height:1.1;font-weight:700;max-width:22ch}
body.lsh .lsh-h3 .elementor-heading-title{font-size:clamp(21px,2vw,28px);line-height:1.16;font-weight:700}
body.lsh .lsh-lead{font-size:clamp(17px,1.35vw,20px);line-height:1.55;max-width:56ch;color:var(--lsh-muted)}
body.lsh .lsh-bg-deep .lsh-lead,body.lsh .lsh-bg-forest .lsh-lead,body.lsh .lsh-hero .lsh-lead{color:rgba(244,245,241,.85)}
body.lsh .lsh-body{max-width:66ch;color:var(--lsh-muted)}
body.lsh .lsh-label .elementor-heading-title{font-family:"Open Sans",sans-serif;font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--lsh-muted)}
body.lsh .lsh-bg-deep .lsh-label .elementor-heading-title,body.lsh .lsh-card--lead .lsh-label .elementor-heading-title{color:rgba(244,245,241,.62)}
body.lsh .lsh-price .elementor-heading-title{font-family:"Archivo",sans-serif;font-size:clamp(28px,3vw,40px);font-weight:700;line-height:1;letter-spacing:-.03em;color:var(--lsh-accent)}

/* ---------- buttons ---------- */
body.lsh .elementor-button{font-family:"Archivo",sans-serif;font-weight:600;font-size:15px;letter-spacing:.01em;border-radius:var(--lsh-rb);padding:17px 30px;line-height:1;border:0;transition:background-color .2s ease,color .2s ease,transform .2s ease,box-shadow .2s ease}
body.lsh .lsh-btn .elementor-button{background:var(--lsh-accent);color:#fff}
body.lsh .lsh-btn .elementor-button:hover,body.lsh .lsh-btn .elementor-button:focus{background:var(--lsh-accent-dark);color:#fff;transform:translateY(-1px)}
body.lsh .lsh-btn--ghost .elementor-button{background:transparent;color:var(--lsh-ink);box-shadow:inset 0 0 0 1px var(--lsh-ink)}
body.lsh .lsh-btn--ghost .elementor-button:hover{background:var(--lsh-ink);color:#F4F5F1}
body.lsh .lsh-hero .lsh-btn .elementor-button,body.lsh .lsh-bg-deep .lsh-btn .elementor-button,body.lsh .lsh-bg-forest .lsh-btn .elementor-button{background:#F4F5F1;color:var(--lsh-deep)}
body.lsh .lsh-hero .lsh-btn .elementor-button:hover,body.lsh .lsh-bg-deep .lsh-btn .elementor-button:hover,body.lsh .lsh-bg-forest .lsh-btn .elementor-button:hover{background:#fff;color:var(--lsh-deep)}
body.lsh .lsh-hero .lsh-btn--ghost .elementor-button,body.lsh .lsh-bg-deep .lsh-btn--ghost .elementor-button,body.lsh .lsh-bg-forest .lsh-btn--ghost .elementor-button{background:transparent;color:#F4F5F1;box-shadow:inset 0 0 0 1px rgba(244,245,241,.5)}
body.lsh .lsh-hero .lsh-btn--ghost .elementor-button:hover,body.lsh .lsh-bg-deep .lsh-btn--ghost .elementor-button:hover,body.lsh .lsh-bg-forest .lsh-btn--ghost .elementor-button:hover{background:rgba(244,245,241,.16);color:#fff}
body.lsh .lsh-link .elementor-button{background:transparent;color:var(--lsh-accent);padding:0 0 6px;font-size:13px;letter-spacing:.08em;text-transform:uppercase;box-shadow:inset 0 -1px 0 0 var(--lsh-line)}
body.lsh .lsh-link .elementor-button:hover{color:var(--lsh-ink);box-shadow:inset 0 -1px 0 0 var(--lsh-accent);transform:none;background:transparent}
body.lsh .lsh-actions{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px;width:auto;padding:0;margin-top:8px}

/* ---------- site header: transparent over the hero, light once scrolled ---------- */
/* one height in every state, so nothing jumps when the sticky style engages */
body.lsh .site-header{position:fixed;top:var(--lsh-vv-offset,0px);left:0;right:0;z-index:1200;padding-top:max(9px,env(safe-area-inset-top));background:transparent;border-bottom:1px solid transparent;padding-block:9px;transition:border-color .35s ease}
body.lsh .site-header::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:0;transition:opacity .35s ease;background:rgba(244,245,241,.92);backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px)}
body.lsh .site-header .header-inner{max-width:var(--lsh-w);margin-inline:auto;width:100%}
body.lsh .site-header .site-description{display:none}
body.lsh .site-header .custom-logo{max-height:42px;width:auto;height:auto;transition:opacity .3s ease}
body.lsh .site-header .site-logo,body.lsh .site-header .custom-logo-link{position:relative;display:inline-flex;align-items:center}
/* The ink mark is painted over the white one so the two cross fade. Injecting a
   second <img> through get_custom_logo() also duplicated it in the footer. */
body.lsh .site-header .custom-logo-link::after{content:"";position:absolute;inset:0;background:url("https://laurisilvaheights.com/wp-content/uploads/2026/08/LH-logo-ink.png") center/contain no-repeat;opacity:0;transition:opacity .3s ease;pointer-events:none}
body.lsh .site-navigation ul{gap:30px}
body.lsh .site-navigation a{font-family:"Archivo",sans-serif;font-size:12px;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:#F4F5F1;text-decoration:none;position:relative;padding-block:6px;transition:color .25s ease}
body.lsh .site-navigation a::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:2px;background:currentColor;opacity:.85;transition:right .3s cubic-bezier(.22,.61,.36,1)}
body.lsh .site-navigation a:hover::after{right:0}

/* The theme builds the burger from the span's ::before and ::after using
   currentColor, so only the colour may be set. Filling the span itself paints a
   solid block, which is what it was doing. */
body.lsh .site-navigation-toggle-holder .site-navigation-toggle{background-color:rgba(244,245,241,.16);color:#F4F5F1;border-radius:4px}
body.lsh .site-header.is-stuck .site-navigation-toggle-holder .site-navigation-toggle{background-color:rgba(34,38,31,.07);color:var(--lsh-ink)}
body.lsh .site-navigation-toggle-holder .site-navigation-toggle-icon{background-color:transparent}

body.lsh .site-navigation-dropdown{margin-block-start:0;background:transparent}
body.lsh .site-navigation-dropdown ul.menu{background:var(--lsh-bg);padding:0;border-block-end:1px solid var(--lsh-line);box-shadow:0 18px 40px rgba(26,29,23,.18)}
body.lsh .site-navigation-dropdown ul.menu li a{display:block;background:transparent;box-shadow:inset 0 -1px 0 var(--lsh-line);padding:16px 22px;font-family:"Archivo",sans-serif;font-size:12px;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--lsh-ink);line-height:1.25;transition:background-color .2s ease,color .2s ease}
body.lsh .site-navigation-dropdown ul.menu li:last-child a{box-shadow:none}
body.lsh .site-navigation-dropdown ul.menu li a:hover,body.lsh .site-navigation-dropdown ul.menu li a:focus{background:var(--lsh-accent-soft);color:var(--lsh-accent-dark)}
body.lsh .site-navigation-dropdown ul.menu li.current-menu-item>a{background:var(--lsh-accent-soft);color:var(--lsh-accent-dark);box-shadow:inset 3px 0 0 0 var(--lsh-accent),inset 0 -1px 0 var(--lsh-line)}

/* ---------- slide out navigation drawer ----------
   The panel is moved to <body> by the script: the header gains a backdrop-filter
   in its sticky state, and that makes it a containing block for fixed children,
   which would trap the drawer inside the header. */
body.lsh .lsh-drawer{position:fixed;top:var(--lsh-vv-offset,0px);bottom:0;right:0;left:auto;padding-top:max(88px,calc(72px + env(safe-area-inset-top)));width:min(88vw,368px);max-width:none;height:100dvh;z-index:5;background:var(--lsh-bg);border-left:1px solid var(--lsh-line);box-shadow:-18px 0 48px rgba(26,29,23,.18);overflow-y:auto;overscroll-behavior:contain;padding-bottom:max(32px,env(safe-area-inset-bottom));padding-inline:0;display:block;margin:0;transition:transform .42s cubic-bezier(.22,.61,.36,1)}
/* the theme collapses the panel with max-height and scaleY, so those two need
   overriding outright rather than out-specifying */
body.lsh .lsh-drawer{transform:translateX(106%) !important;max-height:none !important}
body.lsh .site-navigation-toggle-holder.elementor-active+.lsh-drawer{transform:none !important}
body.lsh .lsh-drawer ul.menu{position:static;width:100%;background:transparent;padding:0;margin:0;box-shadow:none;border:0}
body.lsh .lsh-drawer ul.menu li{width:100%}
body.lsh .lsh-drawer ul.menu li a{display:block;background:transparent;box-shadow:inset 0 -1px 0 var(--lsh-line);padding:18px 30px;font-family:"Archivo",sans-serif;font-size:13px;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--lsh-ink);line-height:1.25;transition:background-color .2s ease,color .2s ease}
body.lsh .lsh-drawer ul.menu li:first-child a{box-shadow:inset 0 1px 0 var(--lsh-line),inset 0 -1px 0 var(--lsh-line)}
body.lsh .lsh-drawer ul.menu li a:hover,body.lsh .lsh-drawer ul.menu li a:focus{background:var(--lsh-accent-soft);color:var(--lsh-accent-dark)}
body.lsh .lsh-drawer ul.menu li.current-menu-item>a{background:var(--lsh-accent-soft);color:var(--lsh-accent-dark);box-shadow:inset 3px 0 0 0 var(--lsh-accent),inset 0 -1px 0 var(--lsh-line)}
body.lsh .lsh-drawer-close{position:absolute;top:26px;right:24px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:rgba(34,38,31,.07);color:var(--lsh-ink);cursor:pointer;font-size:0;transition:background-color .2s ease}
body.lsh .lsh-drawer-close:hover{background:var(--lsh-accent-soft);color:var(--lsh-accent-dark)}
body.lsh .lsh-drawer-close::before,body.lsh .lsh-drawer-close::after{content:"";position:absolute;width:16px;height:2px;background:currentColor;border-radius:2px}
body.lsh .lsh-drawer-close::before{transform:rotate(45deg)}
body.lsh .lsh-drawer-close::after{transform:rotate(-45deg)}
body.lsh .lsh-drawer-backdrop{position:fixed;inset:0;background:rgba(26,29,23,.52);opacity:0;visibility:hidden;transition:opacity .35s ease,visibility .35s ease;z-index:1}
body.lsh-nav-open .lsh-drawer-backdrop{opacity:1;visibility:visible}
body.lsh-nav-open{overflow:hidden}
@media (prefers-reduced-motion:reduce){body.lsh .lsh-drawer{transition:none}}

/* scrolled state */
body.lsh .site-header.is-stuck{border-bottom-color:var(--lsh-line);box-shadow:0 1px 18px rgba(26,29,23,.07)}
body.lsh .site-header.is-stuck::before{opacity:1}
body.lsh .site-header.is-stuck .custom-logo{opacity:0}
body.lsh .site-header.is-stuck .custom-logo-link::after{opacity:1}
body.lsh .site-header.is-stuck .site-navigation a{color:var(--lsh-ink)}
body.lsh .site-header.is-stuck .site-navigation a:hover{color:var(--lsh-accent)}

/* the WordPress admin bar only renders for logged in users, so these offsets
   cannot leave a gap for visitors */
body.admin-bar.lsh .site-header{top:calc(32px + var(--lsh-vv-offset,0px))}
body.admin-bar.lsh .lsh-hero{min-height:calc(100svh - 32px)}
@media screen and (min-width:601px) and (max-width:782px){
  body.admin-bar.lsh .site-header{top:calc(46px + var(--lsh-vv-offset,0px))}
  body.admin-bar.lsh .lsh-hero{min-height:calc(100svh - 46px)}
}
@media screen and (max-width:600px){
  body.admin-bar.lsh .site-header{top:var(--lsh-vv-offset,0px)}
  body.admin-bar.lsh .lsh-hero{min-height:100svh}
}

/* ---------- language switcher ---------- */
body.lsh .lsh-lang-switcher{display:flex;align-items:center;gap:10px}
body.lsh .site-navigation a.lsh-lang{font-family:"Archivo",sans-serif;font-size:11px;font-weight:600;letter-spacing:.14em;color:rgba(244,245,241,.6);padding:4px 2px}
body.lsh .site-navigation a.lsh-lang:hover{color:#F4F5F1}
body.lsh .site-navigation a.lsh-lang.is-current{color:#F4F5F1}
body.lsh .site-navigation a.lsh-lang::after{display:none}
body.lsh .site-header.is-stuck .site-navigation a.lsh-lang{color:var(--lsh-muted)}
body.lsh .site-header.is-stuck .site-navigation a.lsh-lang:hover,body.lsh .site-header.is-stuck .site-navigation a.lsh-lang.is-current{color:var(--lsh-ink)}
body.lsh .lsh-drawer .lsh-lang-switcher{gap:0;padding:18px 30px;box-shadow:inset 0 -1px 0 var(--lsh-line)}
body.lsh .lsh-drawer .lsh-lang-switcher a.lsh-lang{display:inline-block;box-shadow:none;padding:6px 12px;font-size:12px;color:var(--lsh-muted);border:1px solid var(--lsh-line);border-radius:4px;margin-inline-end:8px}
body.lsh .lsh-drawer .lsh-lang-switcher a.lsh-lang.is-current{background:var(--lsh-accent-soft);border-color:var(--lsh-accent);color:var(--lsh-accent-dark)}

/* ---------- hero: full first screen, Ken Burns slideshow, scroll response ---------- */
/* The container is a flex COLUMN, so vertical centring is justify-content, and the
   inner box must stop growing or it fills the screen and the copy sits at the top. */
body.lsh .lsh-hero{position:relative;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:var(--lsh-deep);background-size:cover;background-position:center;overflow:hidden;padding-block:var(--lsh-header-h) 0}
body.lsh .lsh-hero>.e-con-inner{flex-grow:0;flex-shrink:0}
body.lsh .lsh-hero::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(26,29,23,.55) 0%,rgba(26,29,23,.28) 32%,rgba(26,29,23,.55) 68%,rgba(26,29,23,.88) 100%)}
body.lsh .lsh-hero>.e-con-inner{position:relative;z-index:2}
body.lsh .lsh-hero .elementor-heading-title{color:#F4F5F1}
body.lsh .lsh-hero--compact{min-height:min(74svh,620px)}
body.lsh .lsh-hero::after{content:"";position:absolute;left:50%;bottom:30px;width:20px;height:20px;margin-left:-10px;border-right:2px solid rgba(244,245,241,.8);border-bottom:2px solid rgba(244,245,241,.8);z-index:2;pointer-events:none;transform:rotate(45deg);animation:lsh-cue 2.2s cubic-bezier(.22,.61,.36,1) infinite;transition:opacity .35s ease}
body.lsh .lsh-hero.is-scrolled::after{opacity:0;animation-play-state:paused}
@keyframes lsh-cue{0%{transform:rotate(45deg) translate(-5px,-5px);opacity:0}25%{opacity:.95}70%{transform:rotate(45deg) translate(6px,6px);opacity:0}100%{transform:rotate(45deg) translate(6px,6px);opacity:0}}
/* the slideshow layer drifts slower than the page, the content lifts and fades */
body.lsh .lsh-hero .elementor-background-slideshow{will-change:transform;transform:translate3d(0,calc(var(--lsh-scroll,0) * 80px),0) scale(1.05)}
body.lsh .lsh-hero>.e-con-inner{transform:translate3d(0,calc(var(--lsh-scroll,0) * -46px),0);opacity:calc(1 - var(--lsh-scroll,0) * .85)}

/* ---------- grids ---------- */
body.lsh .lsh-grid{display:grid;gap:20px;width:100%;padding:0}
body.lsh .lsh-bento{grid-template-columns:repeat(6,1fr)}
body.lsh .lsh-bento>.lsh-card{grid-column:span 3}
body.lsh .lsh-bento>.lsh-card--lead{grid-column:span 3;grid-row:span 2}
body.lsh .lsh-props{grid-template-columns:repeat(6,1fr)}
body.lsh .lsh-props>.lsh-prop{grid-column:span 3}
body.lsh .lsh-props>.lsh-prop--lead{grid-column:span 6}

/* ---------- service cards ---------- */
body.lsh .lsh-card{position:relative;display:flex;flex-direction:column;justify-content:flex-start;background:var(--lsh-surface);border:1px solid var(--lsh-line);border-radius:var(--lsh-r);overflow:hidden;padding:clamp(26px,2.4vw,38px);gap:14px;transition:translate .3s cubic-bezier(.22,.61,.36,1),border-color .3s ease,background-color .3s ease,background-size .6s ease}
body.lsh .lsh-card--lead{background:var(--lsh-deep);border-color:var(--lsh-deep);color:#F4F5F1;justify-content:flex-end;min-height:340px;background-size:cover;background-position:center}
body.lsh .lsh-card--lead .lsh-card__body{color:rgba(244,245,241,.8)}
body.lsh .lsh-card--lead .lsh-link .elementor-button{color:#F4F5F1;box-shadow:inset 0 -1px 0 0 rgba(244,245,241,.4)}
body.lsh .lsh-card__body{font-size:16px;color:var(--lsh-muted);max-width:46ch;line-height:1.55}
body.lsh .lsh-card .lsh-link{margin-top:auto;padding-top:10px}

/* the whole card is the link: the button carries a stretched anchor */
body.lsh .lsh-card--link .lsh-link .elementor-button::after{content:"";position:absolute;inset:0;z-index:3;border-radius:var(--lsh-r)}
body.lsh .lsh-card--link:hover{translate:0 -5px;border-color:var(--lsh-accent);background-color:var(--lsh-accent-soft)}
body.lsh .lsh-card--link:hover .lsh-link .elementor-button{color:var(--lsh-accent-dark);box-shadow:inset 0 -1px 0 0 var(--lsh-accent)}
body.lsh .lsh-card--lead.lsh-card--link{background-position:center center}
body.lsh .lsh-card--lead.lsh-card--link:hover{translate:0 -5px;background-position:center 42%}
body.lsh .lsh-card--lead.lsh-card--link:hover{background-size:cover;border-color:var(--lsh-accent)}
body.lsh .lsh-card--lead.lsh-card--link:hover .lsh-link .elementor-button{color:#fff;box-shadow:inset 0 -1px 0 0 #F4F5F1}
body.lsh .lsh-card--link:focus-within{border-color:var(--lsh-accent);outline:2px solid var(--lsh-accent);outline-offset:2px}

/* ---------- property cards ---------- */
body.lsh .lsh-prop{display:flex;flex-direction:column;background:var(--lsh-surface);border:1px solid var(--lsh-line);border-radius:var(--lsh-r);overflow:hidden;padding:0;gap:0}
body.lsh .lsh-prop__media{width:100%;line-height:0}
body.lsh .lsh-prop__text{display:flex;flex-direction:column;justify-content:flex-start;padding:clamp(26px,2.4vw,38px);gap:12px;width:100%}
body.lsh .lsh-prop--lead{display:grid;grid-template-columns:1.05fr 1fr}
body.lsh .lsh-prop--lead .lsh-prop__text{padding:clamp(32px,3.4vw,56px);justify-content:center}
body.lsh .lsh-prop .lsh-btn{margin-top:auto;padding-top:8px}

/* carousel: mixed source ratios, so every slide is cropped to one frame */
body.lsh .lsh-prop__carousel .elementor-widget-container{height:100%}
body.lsh .lsh-prop__carousel .swiper,body.lsh .lsh-prop__carousel .elementor-image-carousel-wrapper{height:100%}
body.lsh .lsh-prop__carousel .swiper-slide{display:block;height:auto}
body.lsh .lsh-prop__carousel .swiper-slide figure,body.lsh .lsh-prop__carousel .swiper-slide a{display:block;height:100%;margin:0}
body.lsh .lsh-prop__carousel .swiper-slide img{width:100%;height:100%;aspect-ratio:4/3;object-fit:cover;display:block;border-radius:0}
body.lsh .lsh-prop--lead .lsh-prop__carousel .swiper-slide img{aspect-ratio:16/11}
body.lsh .lsh-prop__carousel .elementor-swiper-button{color:#F4F5F1;background:rgba(26,29,23,.45);width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:15px;transition:background-color .2s ease;backdrop-filter:blur(4px)}
body.lsh .lsh-prop__carousel .elementor-swiper-button:hover{background:var(--lsh-accent)}
body.lsh .lsh-prop__carousel .elementor-swiper-button-prev{left:12px}
body.lsh .lsh-prop__carousel .elementor-swiper-button-next{right:12px}
body.lsh .lsh-prop__carousel .elementor-image-carousel-wrapper{padding-bottom:0}
body.lsh .lsh-prop__media{position:relative}
body.lsh .lsh-prop__media::after{content:"";position:absolute;left:0;right:0;bottom:0;height:82px;background:linear-gradient(180deg,rgba(26,29,23,0) 0%,rgba(26,29,23,.42) 100%);pointer-events:none;z-index:2}
body.lsh .lsh-prop__carousel.elementor-widget-image-carousel .swiper-pagination{position:absolute;left:0;right:0;bottom:14px;top:auto;z-index:5;line-height:0}
body.lsh .lsh-prop__carousel .swiper-pagination-bullet{background:#F4F5F1;opacity:.55;width:7px;height:7px;margin:0 4px;box-shadow:0 0 0 1px rgba(26,29,23,.35)}
body.lsh .lsh-prop__carousel .swiper-pagination-bullet-active{opacity:1;background:#fff;box-shadow:0 0 0 1px rgba(26,29,23,.5)}

/* fact list */
body.lsh .lsh-facts .elementor-icon-list-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}
body.lsh .lsh-facts .elementor-icon-list-item{border-top:1px solid var(--lsh-line);padding:11px 0;font-size:14px;line-height:1.4;color:var(--lsh-muted)}
body.lsh .lsh-facts .elementor-icon-list-item>a,body.lsh .lsh-facts .elementor-icon-list-text{padding-inline-start:0}
body.lsh .lsh-facts .elementor-icon-list-icon{display:none}

/* checked list */
body.lsh .lsh-checks .elementor-icon-list-item{padding:15px 0;border-top:1px solid var(--lsh-line);font-size:16px;line-height:1.5;align-items:flex-start;color:var(--lsh-ink)}
body.lsh .lsh-checks .elementor-icon-list-item:last-child{border-bottom:1px solid var(--lsh-line)}
body.lsh .lsh-checks .elementor-icon-list-icon{color:var(--lsh-accent);margin-top:4px;font-size:13px}
body.lsh .lsh-bg-deep .lsh-checks .elementor-icon-list-item,body.lsh .lsh-bg-forest .lsh-checks .elementor-icon-list-item{border-color:rgba(244,245,241,.22);color:rgba(244,245,241,.9)}
body.lsh .lsh-bg-deep .lsh-checks .elementor-icon-list-icon,body.lsh .lsh-bg-forest .lsh-checks .elementor-icon-list-icon{color:var(--lsh-green)}

/* ---------- split with a bleeding image ---------- */
body.lsh .lsh-split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,80px);align-items:center;width:100%;padding:0}
body.lsh .lsh-split>.e-con{display:flex;flex-direction:column;gap:18px;align-items:flex-start;padding:0}
body.lsh .lsh-bleed img{border-radius:var(--lsh-r);width:100%;display:block}
/* a flex item does not grow from a negative margin, so the bleed widens the box */
body.lsh .lsh-bleed--right,body.lsh .lsh-bleed--left{width:calc(100% + max(12px,(100vw - var(--lsh-w))/2)) !important;max-width:none !important;align-self:stretch}
body.lsh .lsh-bleed--left{margin-inline-start:calc(-1 * max(12px,(100vw - var(--lsh-w))/2))}
body.lsh .lsh-bleed--right img{border-start-end-radius:0;border-end-end-radius:0}
body.lsh .lsh-bleed--left img{border-start-start-radius:0;border-end-start-radius:0}

/* ---------- process ---------- */
body.lsh .lsh-process{border-top:1px solid var(--lsh-line)}
body.lsh .lsh-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:0;width:100%;padding:0}
body.lsh .lsh-step{display:flex;flex-direction:column;justify-content:flex-start;border-top:2px solid var(--lsh-accent);padding:22px 28px 0 0;gap:8px}
body.lsh .lsh-step .lsh-step__n .elementor-heading-title{font-family:"Archivo",sans-serif;font-size:13px;font-weight:700;color:var(--lsh-accent);letter-spacing:.08em}
body.lsh .lsh-step__t .elementor-heading-title{font-size:19px;line-height:1.2;font-weight:700}
body.lsh .lsh-step__d{font-size:15px;color:var(--lsh-muted);line-height:1.5}
body.lsh .lsh-bg-deep .lsh-step,body.lsh .lsh-bg-forest .lsh-step{border-top-color:var(--lsh-green)}
body.lsh .lsh-bg-deep .lsh-step .lsh-step__n .elementor-heading-title,body.lsh .lsh-bg-forest .lsh-step .lsh-step__n .elementor-heading-title{color:var(--lsh-green)}
body.lsh .lsh-bg-deep .lsh-step__d,body.lsh .lsh-bg-forest .lsh-step__d{color:rgba(244,245,241,.78)}

/* ---------- gallery ---------- */
body.lsh .lsh-gal img,body.lsh .lsh-gal .e-gallery-item,body.lsh .lsh-gal .e-gallery-image{border-radius:var(--lsh-r);overflow:hidden}
body.lsh .lsh-gal .elementor-gallery__titles-container{display:none}

/* ---------- FAQ ---------- */
/* Elementor draws a full box border on the summary, which pins the +/- marker hard
   against it. Swapped for the site hairline, with real breathing room around the icon. */
body.lsh .lsh-faq .e-n-accordion .e-n-accordion-item{border:0;border-bottom:1px solid var(--lsh-line);border-radius:0;background:transparent}
body.lsh .lsh-faq .e-n-accordion .e-n-accordion-item-title{font-family:"Archivo",sans-serif;font-weight:600;font-size:18px;color:var(--lsh-ink);border:0;border-radius:0;background:transparent;padding:22px 4px;gap:14px;cursor:pointer;transition:color .2s ease}
body.lsh .lsh-faq .e-n-accordion .e-n-accordion-item-title:hover{color:var(--lsh-accent)}
body.lsh .lsh-faq .e-n-accordion-item[open] .e-n-accordion-item-title{color:var(--lsh-accent)}
body.lsh .lsh-faq .e-n-accordion-item-title-text{font-family:"Archivo",sans-serif;letter-spacing:-.01em}
body.lsh .lsh-faq .e-n-accordion .e-n-accordion-item-title-icon{color:var(--lsh-accent);flex:0 0 auto;width:14px;justify-content:center}
body.lsh .lsh-faq .e-n-accordion .e-n-accordion-item-title-icon svg{width:13px;height:13px;fill:currentColor}
body.lsh .lsh-faq p{font-size:16px;color:var(--lsh-muted);max-width:70ch;padding:0 4px 24px}

/* ---------- consultation form ---------- */
body.lsh .lsh-form .elementor-field-group{margin-bottom:10px}
body.lsh .lsh-form .elementor-field-label{font-family:"Open Sans",sans-serif;font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:rgba(244,245,241,.68);margin-bottom:8px}
/* the underline is 2px in every state, so focus changes colour and never height */
body.lsh .lsh-form input[type=text],body.lsh .lsh-form input[type=email],body.lsh .lsh-form input[type=tel],body.lsh .lsh-form textarea,body.lsh .lsh-form select{background:transparent;border:0;border-bottom:2px solid rgba(244,245,241,.3);border-radius:0;color:#F4F5F1;font-family:"Open Sans",sans-serif;font-size:16px;line-height:1.4;padding:12px 0;box-shadow:none;transition:border-color .2s ease}
body.lsh .lsh-form select option{color:var(--lsh-ink);background:#fff}
body.lsh .lsh-form input::placeholder,body.lsh .lsh-form textarea::placeholder{color:rgba(244,245,241,.66)}
body.lsh .lsh-form input:focus,body.lsh .lsh-form textarea:focus,body.lsh .lsh-form select:focus{outline:0;border-bottom-color:var(--lsh-green);box-shadow:none}
body.lsh .lsh-form .elementor-message{font-size:15px;color:#F4F5F1}
body.lsh .lsh-form-note{font-size:13px;color:rgba(244,245,241,.62);line-height:1.5}

/* ---------- site footer ---------- */
body.lsh .site-footer{background:var(--lsh-deep);color:rgba(244,245,241,.62);padding-block:34px;font-size:14px}
body.lsh .site-footer .footer-inner{max-width:var(--lsh-w);margin-inline:auto;gap:20px}
/* the theme prints the logo at its natural 1150px width, which is the whole footer */
body.lsh .site-footer .custom-logo{max-height:44px;max-width:150px;width:auto;height:auto}
body.lsh .site-footer .site-logo,body.lsh .site-footer .site-branding{max-width:150px}
body.lsh .site-footer a{color:rgba(244,245,241,.85);text-decoration:none}
body.lsh .site-footer a:hover{color:#fff}
body.lsh .site-footer .site-navigation ul{gap:22px}
body.lsh .site-footer .site-navigation a{color:rgba(244,245,241,.85);font-size:13px}
body.lsh .site-footer .copyright{font-size:13px;color:rgba(244,245,241,.45)}

/* ---------- motion ---------- */
body.lsh .lsh-rise{opacity:1;transform:none}
html.lsh-js body.lsh .lsh-rise{opacity:0;transform:translateY(18px);transition:opacity .6s cubic-bezier(.22,.61,.36,1),transform .6s cubic-bezier(.22,.61,.36,1)}
html.lsh-js body.lsh .lsh-card.lsh-rise{transition:opacity .6s cubic-bezier(.22,.61,.36,1),transform .6s cubic-bezier(.22,.61,.36,1),translate .32s cubic-bezier(.22,.61,.36,1),border-color .32s ease,background-color .32s ease,background-position .7s cubic-bezier(.22,.61,.36,1)}
html.lsh-js body.lsh .lsh-rise.is-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  html.lsh-js body.lsh .lsh-rise{opacity:1;transform:none;transition:none}
  body.lsh .elementor-button{transition:none}
  body.lsh .lsh-hero .elementor-background-slideshow,body.lsh .lsh-hero>.e-con-inner{transform:none;opacity:1}
  body.lsh .lsh-card--link:hover{translate:none}
  body.lsh .lsh-hero::after{animation:none;opacity:.85}
}

/* ---------- responsive ---------- */
@media (max-width:1024px){
  body.lsh .lsh-bento{grid-template-columns:repeat(2,1fr)}
  body.lsh .lsh-bento>.lsh-card{grid-column:span 1}
  body.lsh .lsh-bento>.lsh-card--lead{grid-column:span 2;grid-row:span 1;min-height:300px}
  body.lsh .lsh-props{grid-template-columns:repeat(2,1fr)}
  body.lsh .lsh-props>.lsh-prop{grid-column:span 1}
  body.lsh .lsh-props>.lsh-prop--lead{grid-column:span 2;grid-template-columns:1fr}
  body.lsh .lsh-props>.lsh-prop--lead .lsh-prop__carousel .swiper-slide img{aspect-ratio:16/9}
  body.lsh .lsh-split{grid-template-columns:1fr;gap:36px}
  body.lsh .lsh-bleed--right,body.lsh .lsh-bleed--left{margin-inline:0;width:100% !important}
  body.lsh .lsh-bleed--right img,body.lsh .lsh-bleed--left img{border-radius:var(--lsh-r)}
}
@media (max-width:767px){
  body.lsh{font-size:16px}
  /* the kit leaves 10px, which reads as text glued to the screen edge */
  body.lsh .lsh-sec{padding-inline:20px}
  body.lsh .lsh-bento,body.lsh .lsh-props{grid-template-columns:1fr}
  body.lsh .lsh-bento>.lsh-card,body.lsh .lsh-bento>.lsh-card--lead,body.lsh .lsh-props>.lsh-prop,body.lsh .lsh-props>.lsh-prop--lead{grid-column:span 1}
  body.lsh .lsh-facts .elementor-icon-list-items{grid-template-columns:1fr}
  body.lsh .lsh-hero{padding-block:var(--lsh-header-h) 0}
  body.lsh .lsh-hero--compact{min-height:62svh}
  body.lsh .lsh-step{padding-right:0}
  body.lsh .lsh-actions{width:100%}
  body.lsh .lsh-actions .elementor-widget-button,body.lsh .lsh-actions .elementor-button{width:100%;justify-content:center}
  body.lsh .site-footer .footer-inner{flex-direction:column;text-align:center}
}
