/* Studio Hummingbird theme
   The live look, made consistent: Playfair headings, Roboto body, Montserrat for the menu and small caps,
   charcoal and gold, cream and off-white bands, one button style. Effects: hover gold, image lift, 0.3s
   transitions, cross-fading hero, fixed-background sanctuary section. */

:root {
  --sh-ink: #3a3d3e;
  --sh-text: #3e4b45;   /* Victoria's legibility rule: nothing lighter than this on white */
  --sh-muted: #5f6664;   /* secondary text, 5.6:1 on white */
  --sh-gold: #d1b46d;
  --sh-gold-deep: #b89b55;
  --sh-white: #ffffff;
  --sh-cream: #f4f1ea;
  --sh-paper: #f7f7f7;
  --sh-line: rgba(74,77,78,0.14);
  --sh-serif: "Playfair Display", Georgia, serif;
  --sh-sans: Roboto, "Helvetica Neue", Arial, sans-serif;
  --sh-mont: Montserrat, "Helvetica Neue", Arial, sans-serif;
  --sh-lato: Lato, "Helvetica Neue", Arial, sans-serif;
  --sh-wrap: 1100px;
  --sh-narrow: 720px;
  --sh-gutter: clamp(16px, 4vw, 40px);
  --sh-space: clamp(56px, 7vw, 96px);
  --sh-t: .3s;
  --sh-ease: cubic-bezier(.22,.61,.36,1);
}

/* Base */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
/* Reduced motion (Windows "animation effects" off, etc.): drop movement, but keep the hero crossfade, which is a fade
   and not motion, so the slides never cut hard. The drift is dropped. */
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; } .sh-slides .sh-slide { animation: sh-slide 30s infinite !important; } .sh-slides .sh-slide:nth-child(2) { animation-delay: 6s !important; } .sh-slides .sh-slide:nth-child(3) { animation-delay: 12s !important; } .sh-slides .sh-slide:nth-child(4) { animation-delay: 18s !important; } .sh-slides .sh-slide:nth-child(5) { animation-delay: 24s !important; } }
body { margin: 0; font: 400 17px/1.8 var(--sh-sans); color: var(--sh-text); background: var(--sh-white); -webkit-font-smoothing: antialiased; }
img, video { max-width: 100%; height: auto; display: block; }
a { color: var(--sh-gold-deep); text-decoration: none; transition: color var(--sh-t) var(--sh-ease); }
a:hover { color: var(--sh-gold); }
.sh h1, .sh h2, .sh h3 { font-family: var(--sh-serif); font-weight: 400; line-height: 1.25; color: var(--sh-ink); margin: 0 0 .5em; letter-spacing: 0; text-transform: none; }
.sh h1 { font-size: clamp(34px, 4.2vw, 56px); }
.sh h2 { font-size: clamp(28px, 3vw, 38px); }
.sh h3 { font-size: 26px; }
.sh p, .sh li, .sh dd, .sh blockquote { font-family: inherit; }
.sh blockquote { border: 0; padding: 0; }
/* Leftovers from the old stack that must not show over the new theme */
a.floating-call-button, .tatsu-floating-call, #tatsu-footer-container { display: none !important; }
p { margin: 0 0 1.2em; }
p:last-child { margin-bottom: 0; }
.sh-eyebrow { font: 600 13px/1.4 var(--sh-mont); letter-spacing: 3px; text-transform: uppercase; color: var(--sh-gold-deep); margin-bottom: 18px; }
.sh-eyebrow--gold { color: var(--sh-gold); }
.sh-visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.sh-skip { position: absolute; left: -9999px; top: 8px; background: var(--sh-ink); color: #fff; padding: 8px 14px; z-index: 1000; }
.sh-skip:focus { left: 8px; }
:where(a, button, input, select, textarea, summary):focus-visible { outline: 2px solid var(--sh-gold-deep); outline-offset: 2px; }

/* Layout */
.sh-wrap { width: min(100% - 2 * var(--sh-gutter), var(--sh-wrap)); margin-inline: auto; }
.sh-narrow { max-width: var(--sh-narrow); }
.sh-center { text-align: center; }
.sh-section { padding-block: var(--sh-space); }
.sh-section--tight-top { padding-top: 0; }
.sh-section--white { background: var(--sh-white); }
.sh-section--paper { background: var(--sh-paper); }
.sh-section--cream { background: var(--sh-cream); }
.sh-section__title { text-align: center; margin-bottom: 40px; }

/* Preview bar (only while the switch snippet is on) */
.sh-preview-bar { background: var(--sh-ink); color: #fff; font: 13px/1.4 var(--sh-mont); text-align: center; padding: 6px 12px; }
.sh-preview-bar a { color: var(--sh-gold); text-decoration: underline; }

/* Header: white bar, circle logo, Montserrat menu with thin dividers, gold for the current page */
.sh-header { position: sticky; top: 0; z-index: 50; background: var(--sh-white); box-shadow: 0 1px 0 var(--sh-line); }
.sh-header__inner { display: flex; align-items: center; justify-content: space-between; min-height: 100px; }
.sh-brand { display: block; }
.sh-brand img, .sh-brand__logo { width: 100px; height: 100px; border-radius: 50%; object-fit: cover; }
.sh-nav { display: flex; align-items: center; }
.sh-menu { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; }
.sh-menu > li { position: relative; display: flex; align-items: center; }
.sh-menu > li + li::before { content: "|"; color: rgba(74,77,78,.35); font-size: 14px; }
.sh-menu > li > a { display: block; padding: 8px 22px; font: 500 15px/1.4 var(--sh-mont); letter-spacing: 1.5px; text-transform: uppercase; color: var(--sh-text); }
.sh-menu > li > a:hover, .sh-menu > li.current-menu-item > a, .sh-menu > li.current-menu-ancestor > a, .sh-menu > li.current_page_parent > a { color: var(--sh-gold); }
.sh-menu .sub-menu { list-style: none; margin: 0; padding: 10px 0; position: absolute; top: 100%; left: 12px; min-width: 240px; background: var(--sh-white); box-shadow: 0 10px 30px rgba(0,0,0,.10); opacity: 0; visibility: hidden; transform: translateY(6px); transition: opacity var(--sh-t), transform var(--sh-t), visibility var(--sh-t); }
.sh-menu > li:hover > .sub-menu, .sh-menu > li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; }
.sh-menu .sub-menu a { display: block; padding: 10px 22px; font: 500 13px/1.4 var(--sh-mont); letter-spacing: 1px; text-transform: uppercase; color: var(--sh-text); }
.sh-menu .sub-menu a:hover { color: var(--sh-gold); }
.sh-nav-toggle { display: none; background: none; border: 0; padding: 10px; cursor: pointer; }
.sh-nav-toggle span:not(.sh-visually-hidden) { display: block; width: 24px; height: 2px; background: var(--sh-ink); margin: 5px 0; transition: transform var(--sh-t), opacity var(--sh-t); }
@media (max-width: 900px) {
  .sh-header__inner { min-height: 80px; }
  .sh-brand img, .sh-brand__logo { width: 72px; height: 72px; }
  .sh-nav-toggle { display: block; }
  .sh-nav { position: fixed; inset: 80px 0 0 0; background: var(--sh-white); align-items: flex-start; padding: 24px var(--sh-gutter); transform: translateX(100%); transition: transform var(--sh-t) var(--sh-ease); overflow: auto; }
  .sh-nav-open .sh-nav { transform: none; }
  .sh-nav-open .sh-nav-toggle span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .sh-nav-open .sh-nav-toggle span:nth-child(2) { opacity: 0; }
  .sh-nav-open .sh-nav-toggle span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
  .sh-menu { flex-direction: column; align-items: stretch; width: 100%; }
  .sh-menu > li { flex-direction: column; align-items: stretch; }
  .sh-menu > li + li::before { display: none; }
  .sh-menu > li > a { padding: 14px 0; font-size: 18px; border-bottom: 1px solid var(--sh-line); }
  .sh-menu .sub-menu { position: static; opacity: 1; visibility: visible; transform: none; box-shadow: none; padding: 0 0 8px 16px; }
}

/* Buttons: gold (site-wide) and the translucent version on photos */
.sh-btn { display: inline-block; padding: 16px 36px; font: 600 13px/1 var(--sh-mont); letter-spacing: 3px; text-transform: uppercase; border-radius: 2px; transition: background var(--sh-t), color var(--sh-t), border-color var(--sh-t), transform var(--sh-t); }
.sh-btn--gold { background: var(--sh-gold); color: var(--sh-white); border: 1px solid var(--sh-gold); }
.sh-btn--gold:hover { background: var(--sh-gold-deep); border-color: var(--sh-gold-deep); color: var(--sh-white); transform: translateY(-1px); }
.sh-btn--glass { background: rgba(255,255,255,.15); border: 1px solid rgba(255,255,255,.7); color: var(--sh-white); font-weight: 400; backdrop-filter: blur(4px); }
.sh-btn--glass:hover { background: rgba(255,255,255,.3); border-color: var(--sh-white); color: var(--sh-white); }
.sh-link { font: 600 13px/1.4 var(--sh-mont); letter-spacing: 3px; text-transform: uppercase; color: var(--sh-gold-deep); }

/* Hero: full-height photo (cross-fading slides on the homepage), centred Playfair with a soft shadow */
.sh-hero { position: relative; display: flex; align-items: center; justify-content: center; text-align: center; overflow: hidden; background: #000; color: var(--sh-white); }
.sh-hero--home { min-height: calc(100vh - 100px); }
.sh-hero--inner { min-height: 450px; }
.sh-hero--404 { min-height: 480px; }
.sh-slides, .sh-slide { position: absolute; inset: 0; }
.sh-slide { width: 100%; height: 100%; object-fit: cover; }
/* Five slides, 6 s each, as the live slider: each fades out to black (0.75 s), a beat of dark, then the next
   fades in (0.75 s), with a slow drift while it shows. 30 s cycle: 2.5% = 0.75 s, 20% = 6 s. */
.sh-slides .sh-slide { opacity: 0; animation: sh-slide 30s infinite, sh-drift 30s linear infinite; transform-origin: 50% 40%; }
.sh-slides .sh-slide:nth-child(2) { animation-delay: 6s; }
.sh-slides .sh-slide:nth-child(3) { animation-delay: 12s; }
.sh-slides .sh-slide:nth-child(4) { animation-delay: 18s; }
.sh-slides .sh-slide:nth-child(5) { animation-delay: 24s; }
@keyframes sh-slide { 0% { opacity: 0; } 2.5% { opacity: 1; } 17% { opacity: 1; } 19.5% { opacity: 0; } 100% { opacity: 0; } }
@keyframes sh-drift { 0% { transform: scale(1); } 24% { transform: scale(1.07); } 100% { transform: scale(1.07); } }
.sh-hero--tint::before { content: ""; position: absolute; inset: 0; background: rgba(0,0,0,.3); }
.sh-hero__content { position: relative; display: flex; flex-direction: column; align-items: center; gap: 20px; max-width: 860px; padding: 60px 20px; }
.sh .sh-hero__title { color: var(--sh-white); margin: 0; letter-spacing: 1px; text-shadow: 0 2px 20px rgba(0,0,0,.3); }
.sh-hero--inner .sh-hero__title { font-size: clamp(34px, 4vw, 56px); }
.sh-hero__line { margin: 0; font: 300 18px/1.6 var(--sh-lato); letter-spacing: 1px; color: rgba(255,255,255,.92); max-width: 600px; }
.sh-hero__line--spaced { letter-spacing: 2px; line-height: 1.8; }
.sh-hero__sub { margin: 0; font-size: 18px; line-height: 1.6; color: var(--sh-white); max-width: 600px; }
.sh-hero__content .sh-eyebrow { margin-bottom: 0; }
.sh-hero__content .sh-btn { margin-top: 10px; }

/* Fixed-background section (the "sanctuary" effect): the photo stays put, the text scrolls over it */
.sh-fixed { position: relative; min-height: 450px; display: flex; align-items: center; justify-content: center; text-align: center; color: var(--sh-white); background-size: cover; background-position: center; background-attachment: fixed; }
.sh-fixed__tint { position: absolute; inset: 0; background: rgba(0,0,0,.22); }
.sh-fixed__content { position: relative; display: flex; flex-direction: column; align-items: center; gap: 22px; max-width: 820px; padding: 60px 20px; }
.sh-fixed__content .sh-hero__title { font-size: clamp(30px, 3.5vw, 46px); }
@media (max-width: 900px), (hover: none) { .sh-fixed { background-attachment: scroll; } }

/* Testimonial band and photo strip */
.sh-testimonial { padding-block: 72px 64px; }
.sh-testimonial__inner { display: flex; flex-direction: column; align-items: center; gap: 22px; text-align: center; max-width: 760px; }
.sh-stars { display: flex; gap: 6px; justify-content: center; color: var(--sh-gold); }
.sh-stars svg { width: 14px; height: 14px; }
.sh-quote-mark { color: var(--sh-gold); }
.sh-testimonial__quote { margin: 0; font: italic 400 clamp(20px, 2vw, 26px)/1.55 var(--sh-serif); color: var(--sh-ink); }
.sh-testimonial__name { font: 600 13px/1.4 var(--sh-mont); letter-spacing: 3px; text-transform: uppercase; color: var(--sh-gold-deep); }
.sh-strip { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 40px; margin-top: 60px; }
.sh-strip__img { width: 100%; aspect-ratio: 4/3; object-fit: cover; }
@media (max-width: 900px) { .sh-strip { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; } .sh-strip__img:nth-child(n+4) { display: none; } }

/* About */
.sh-about { padding-block: 80px; }
.sh-about__grid { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 80px; align-items: center; }
.sh-about__text p { margin-bottom: 1.1em; }
.sh-about__action { margin-top: 8px; }
.sh-about__portrait { width: 300px; height: 300px; object-fit: cover; border-radius: 50%; }
@media (max-width: 900px) { .sh-about__grid { grid-template-columns: 1fr; gap: 32px; } .sh-about__portrait { margin-inline: auto; } }

/* Services */
.sh-services { padding-top: 40px; }
.sh-services__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; }
.sh-service { display: flex; flex-direction: column; gap: 18px; text-align: center; color: var(--sh-text); }
.sh-service__img { width: 100%; aspect-ratio: 37/25; object-fit: cover; transition: transform .6s var(--sh-ease); }
.sh-service:hover .sh-service__img { transform: scale(1.02); }
.sh-service__title { margin: 0; }
.sh-service p { font-size: 16px; line-height: 1.7; margin: 0; }
@media (max-width: 900px) { .sh-services__grid { grid-template-columns: 1fr; gap: 40px; } }

/* Feature (Findon Valley) */
.sh-feature__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-items: start; }
.sh-feature__left { display: flex; flex-direction: column; gap: 22px; }
.sh-feature__wide { width: 100%; aspect-ratio: 3/2; object-fit: cover; }
.sh-feature__tall { width: 100%; height: 650px; object-fit: cover; }
.sh-feature__text { display: flex; flex-direction: column; align-items: center; gap: 16px; text-align: center; padding: 14px 20px 0; }
.sh-feature__text h2 { margin: 0; font-size: 32px; }
.sh-feature__text p { font-size: 16px; margin: 0; }
.sh-feature__text .sh-eyebrow { margin-bottom: 0; }
.sh-feature__text .sh-btn { margin-top: 6px; }
@media (max-width: 900px) { .sh-feature__grid { grid-template-columns: 1fr; } .sh-feature__tall { height: auto; aspect-ratio: 2/3; } }

/* Partners */
.sh-partners { padding-block: 56px 64px; }
.sh-partners__row { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 32px 56px; margin-top: 36px; }
.sh-partners__logo { height: 72px; width: auto; max-width: 150px; object-fit: contain; }

/* Video testimonials */
.sh-videos__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; }
.sh-video { position: relative; aspect-ratio: 16/9; background: var(--sh-ink); overflow: hidden; }
.sh-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
/* Complianz wraps a blocked YouTube embed in its own placeholder; keep it inside the 16:9 box */
.sh-videos__grid > * { min-width: 0; }
.sh-video.cmplz-blocked-content-container { width: 100% !important; max-width: 100% !important; height: auto !important; aspect-ratio: 16/9; padding: 0 !important; margin: 0 !important; background-size: cover !important; }
.sh-video .cmplz-placeholder-element, .sh-video .cmplz-video { position: absolute !important; inset: 0 !important; width: 100% !important; max-width: 100% !important; height: 100% !important; margin: 0 !important; }
@media (max-width: 900px) { .sh-videos__grid { grid-template-columns: 1fr; } }

/* Photo band before Areas: on the live page this is a plain cover photo that moves with the page (not pinned), 770px tall */
.sh-fixed--band { min-height: 770px; background-attachment: scroll; }

/* Areas */
.sh-areas__line { font: 400 15px/1.6 var(--sh-mont); color: var(--sh-muted); margin: 0 0 14px; }
.sh-areas__list { display: flex; flex-wrap: wrap; justify-content: center; gap: 18px 44px; max-width: 780px; margin: 14px auto 0; }
.sh-areas__list a { font: 400 15px/1.4 var(--sh-mont); color: var(--sh-text); }
.sh-areas__list a:hover { color: var(--sh-gold-deep); }

/* Call to action */
.sh-cta { padding-block: 80px; }
.sh-cta h2 { margin-bottom: .5em; }
.sh-cta p { margin-bottom: 1.4em; }
.sh-cta--inner { padding-top: 24px; }
.sh-cta a:not(.sh-btn) { text-decoration: underline; text-underline-offset: 3px; }

/* Project page */
.sh-brief { padding-block: 80px 72px; }
.sh-brief__grid { display: grid; grid-template-columns: 600px minmax(0, 1fr); gap: 60px; padding: 0 50px; }
.sh-brief__text h2 { font-size: 36px; margin-bottom: .6em; }
.sh-facts { margin: 0; padding-top: 44px; display: flex; flex-direction: column; gap: 28px; }
.sh-fact dt { margin-bottom: 8px; }
.sh-fact dd { margin: 0; font-size: 16px; color: var(--sh-text); }
@media (max-width: 900px) { .sh-brief__grid { grid-template-columns: 1fr; padding: 0; gap: 32px; } .sh-facts { padding-top: 0; } }
.sh-gallery { padding-top: 0; }
.sh-gallery__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 380px; grid-auto-flow: dense; gap: 24px; }
.sh-gallery__item { margin: 0; overflow: hidden; }
.sh-gallery__item img { width: 100%; height: 100%; object-fit: cover; }
.sh-gallery__item.is-portrait { grid-row: span 2; }
@media (max-width: 700px) { .sh-gallery__grid { grid-template-columns: 1fr; grid-auto-rows: auto; } .sh-gallery__item.is-portrait { grid-row: auto; } .sh-gallery__item img { height: auto; } }

/* 404 tiles */
.sh-tiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 22px; }
.sh-tile { display: flex; flex-direction: column; gap: 8px; padding: 30px 28px; background: var(--sh-white); border: 1px solid var(--sh-line); border-top: 3px solid var(--sh-gold); color: var(--sh-text); font-size: 15px; line-height: 1.55; transition: transform var(--sh-t), box-shadow var(--sh-t); }
.sh-tile:hover { transform: translateY(-3px); box-shadow: 0 12px 30px rgba(0,0,0,.08); color: var(--sh-text); }
.sh-tile__title { font-family: var(--sh-serif); font-size: 24px; color: var(--sh-ink); }
@media (max-width: 900px) { .sh-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Search (404 hero) */
.sh-search { display: flex; gap: 10px; width: min(100%, 520px); margin-top: 6px; }
.sh-search input { flex: 1; min-width: 0; min-height: 50px; padding: 0 16px; font: inherit; font-size: 16px; border: 1px solid rgba(255,255,255,.6); border-radius: 2px; background: rgba(255,255,255,.96); color: var(--sh-ink); }
.sh-search .sh-btn { padding-inline: 22px; min-height: 50px; display: inline-flex; align-items: center; }

/* Post cards (blog grid on the 404 and archives) */
.sh-post-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; }
.sh-card { display: flex; flex-direction: column; gap: 14px; }
.sh-card__media { display: block; aspect-ratio: 3/2; overflow: hidden; background: var(--sh-cream); }
.sh-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--sh-ease); }
.sh-card:hover .sh-card__media img { transform: scale(1.03); }
.sh-card__body { display: flex; flex-direction: column; gap: 10px; }
.sh-card__body .sh-eyebrow { margin-bottom: 0; }
.sh-card__title { margin: 0; font: 500 20px/1.35 var(--sh-sans); }
.sh-card__title a { color: var(--sh-ink); }
.sh-card__title a:hover { color: var(--sh-gold-deep); }
.sh-card p { font-size: 15px; color: var(--sh-muted); margin: 0; }
@media (max-width: 900px) { .sh-post-grid { grid-template-columns: 1fr; } }

/* Generic page and post content (until those templates get their own pass) */
.sh-prose { font-size: 17px; }
.sh-prose img { margin-block: 1.5em; }
.sh-prose a { text-decoration: underline; text-decoration-color: var(--sh-gold); text-underline-offset: 3px; }
.sh-title { margin-bottom: .6em; }
.sh-article__media img { width: 100%; }
.sh-post-nav { display: flex; justify-content: space-between; gap: 24px; padding-block: 32px; font-family: var(--sh-serif); }
.sh-pagination { margin-top: 48px; text-align: center; }
.sh-pagination .page-numbers { display: inline-block; padding: 8px 12px; margin: 0 2px; color: var(--sh-text); border-bottom: 2px solid transparent; }
.sh-pagination .page-numbers.current, .sh-pagination .page-numbers:hover { border-color: var(--sh-gold); color: var(--sh-ink); }

/* Footer: centred links, gold social circles, copyright strip */
.sh-footer { background: var(--sh-white); border-top: 1px solid var(--sh-line); }
.sh-footer__inner { display: flex; align-items: center; justify-content: space-between; gap: 40px; padding: 44px 0 36px; }
.sh-footer__menu { list-style: none; margin: 0 0 0 120px; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 12px 26px; max-width: 640px; }
.sh-footer__menu a { font: 400 15px/1.4 var(--sh-mont); color: var(--sh-text); }
.sh-footer__menu a:hover { color: var(--sh-gold-deep); }
.sh-social { display: flex; gap: 14px; }
.sh-social a { display: inline-flex; width: 34px; height: 34px; align-items: center; justify-content: center; border-radius: 50%; background: var(--sh-gold); color: var(--sh-white); transition: background var(--sh-t), transform var(--sh-t); }
.sh-social a:hover { background: var(--sh-gold-deep); color: var(--sh-white); transform: translateY(-2px); }
.sh-social svg { width: 16px; height: 16px; fill: currentColor; }
.sh-footer__bottom { background: var(--sh-cream); padding: 22px 0; font: 400 15px/1.4 var(--sh-mont); color: var(--sh-text); }
@media (max-width: 900px) { .sh-footer__inner { flex-direction: column; } .sh-footer__menu { margin-left: 0; } }

/* Floating WhatsApp and back-to-top, stacked on the right */
.sh-whatsapp { position: fixed; right: 24px; bottom: 130px; width: 56px; height: 56px; background: #25D366; border-radius: 50%; display: grid; place-items: center; box-shadow: 0 4px 12px rgba(0,0,0,.25); z-index: 60; transition: transform var(--sh-t), box-shadow var(--sh-t); }
.sh-whatsapp:hover { transform: scale(1.1); box-shadow: 0 6px 16px rgba(0,0,0,.3); }
.sh-whatsapp svg { width: 30px; height: 30px; fill: #fff; }
.sh-top { position: fixed; right: 24px; bottom: 65px; width: 54px; height: 54px; background: var(--sh-ink); color: #fff; display: grid; place-items: center; border-radius: 2px; z-index: 60; opacity: 0; visibility: hidden; transition: opacity var(--sh-t), visibility var(--sh-t), background var(--sh-t); }
.sh-top.is-visible { opacity: 1; visibility: visible; }
.sh-top:hover { background: var(--sh-gold-deep); color: #fff; }

/* Reveal on scroll (only when JS enables it; without JS everything is simply visible) */
.sh-js-reveal .sh-reveal { opacity: 0; transform: translateY(18px); transition: opacity .7s var(--sh-ease), transform .7s var(--sh-ease); }
.sh-js-reveal .sh-reveal.is-visible { opacity: 1; transform: none; }

/* Forms from plugins (WPForms) inherit the palette */
.wpforms-container input[type="text"], .wpforms-container input[type="email"], .wpforms-container textarea, .wpforms-container select { font: inherit; border: 1px solid var(--sh-line) !important; border-radius: 2px !important; padding: 12px 14px !important; }
.wpforms-container button[type="submit"] { background: var(--sh-gold) !important; color: var(--sh-white) !important; border: 1px solid var(--sh-gold) !important; font: 600 13px/1 var(--sh-mont) !important; letter-spacing: 3px; text-transform: uppercase; padding: 16px 36px !important; }
.wpforms-container button[type="submit"]:hover { background: var(--sh-gold-deep) !important; border-color: var(--sh-gold-deep) !important; }

/* Photo grid from old gallery shortcodes in page content */
.sh-gallery-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; margin: 32px 0; }
.sh-gallery-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sh-gallery-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.sh-gallery-grid__item { margin: 0; aspect-ratio: 8/5; overflow: hidden; }
.sh-gallery-grid__item img { width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 700px) { .sh-gallery-grid, .sh-gallery-grid--2, .sh-gallery-grid--4 { grid-template-columns: 1fr; } }
/* Content figures from Tatsu image blocks */
.sh-tatsu-figure { margin: 28px 0; }
.sh-tatsu-figure--center { margin-inline: auto; }
.sh-tatsu-figure--right { margin-left: auto; }
.sh-tatsu-space { border: 0; height: 24px; margin: 0; }
.sh-tatsu-button { margin: 28px 0; }

/* Enquiry form (shared: Projects, Contact) */
.sh-form-wrap { max-width: 760px; margin: 0 auto; }
.sh-form { background: var(--sh-white); border: 1px solid var(--sh-line); padding: 36px 32px 32px; display: flex; flex-direction: column; gap: 20px; }
.sh-form__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.sh-field { display: flex; flex-direction: column; gap: 8px; }
.sh-field label { font: 600 13px/1.4 var(--sh-mont); letter-spacing: 2px; text-transform: uppercase; color: var(--sh-ink); }
.sh-field__opt { font-weight: 400; letter-spacing: 1px; text-transform: none; color: var(--sh-muted); }
.sh-field input, .sh-field textarea, .sh-field select { width: 100%; min-height: 50px; padding: 12px 16px; font: 400 17px/1.5 var(--sh-sans); color: var(--sh-ink); background: var(--sh-white); border: 1px solid rgba(74,77,78,.3); border-radius: 2px; transition: border-color var(--sh-t); }
.sh-field textarea { min-height: 150px; resize: vertical; }
.sh-field select { appearance: none; -webkit-appearance: none; padding-right: 44px; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'><path d='M1 1l6 6 6-6' fill='none' stroke='%233a3d3e' stroke-width='1.8'/></svg>"); background-repeat: no-repeat; background-position: right 16px center; cursor: pointer; }
@media (min-width: 700px) { .sh-field--half select { max-width: calc(50% - 10px); } }
.sh-field input::placeholder, .sh-field textarea::placeholder { color: #8a8d8e; }
.sh-field input:focus, .sh-field textarea:focus, .sh-field select:focus { border-color: var(--sh-gold-deep); outline: 2px solid var(--sh-gold-deep); outline-offset: 1px; }
.sh-field.is-invalid input, .sh-field.is-invalid textarea { border-color: #b3261e; }
.sh-field__msg { font-size: 15px; color: #b3261e; }
.sh-form__note { font-size: 15px; color: var(--sh-muted); margin: 0; }
.sh-form__note a { text-decoration: underline; text-underline-offset: 3px; }
.sh-form__actions { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.sh-form__status { font-size: 15px; color: var(--sh-text); }
.sh-form__error { color: #b3261e; font-size: 16px; margin: 0; }
.sh-form__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.sh-form-done { background: var(--sh-white); border: 1px solid var(--sh-line); border-top: 3px solid var(--sh-gold); padding: 40px 32px; text-align: center; }
.sh-form-done h3 { margin-bottom: .4em; }
.sh-form-done p { margin: 0; }
.sh-btn[disabled] { opacity: .6; cursor: wait; transform: none; }
@media (max-width: 700px) { .sh-form__row { grid-template-columns: 1fr; } .sh-form { padding: 24px 18px; } }

/* Secondary button */
.sh-btn--outline { background: transparent; color: var(--sh-gold-deep); border: 1px solid var(--sh-gold); }
.sh-btn--outline:hover { background: var(--sh-gold); color: var(--sh-white); border-color: var(--sh-gold); }
.sh-cta .sh-btn + .sh-btn { margin-left: 12px; }
/* Enquiry popup */
.sh-dialog { border: 0; padding: 0; max-width: min(760px, calc(100vw - 32px)); width: 100%; background: transparent; }
.sh-dialog::backdrop { background: rgba(58,61,62,.55); backdrop-filter: blur(2px); }
.sh-dialog__inner { position: relative; background: var(--sh-paper); padding: 40px 36px 32px; max-height: calc(100vh - 32px); overflow: auto; }
.sh-dialog__inner h2 { margin-bottom: .3em; }
.sh-dialog__lead { margin-bottom: 22px; }
.sh-dialog__close { position: absolute; top: 12px; right: 14px; width: 44px; height: 44px; border: 0; background: transparent; font-size: 30px; line-height: 1; color: var(--sh-text); cursor: pointer; }
.sh-dialog__close:hover { color: var(--sh-gold-deep); }
.sh-dialog .sh-form-wrap { max-width: none; }
@media (max-width: 700px) { .sh-dialog__inner { padding: 28px 18px 22px; } .sh-cta .sh-btn + .sh-btn { margin: 12px 0 0; } }
