/* ==========================================================================
   LWG – site styles used with the Elementor build.
   Colours / fonts / heading sizes / buttons are set in Elementor Site Settings
   (the kit). This file holds the self-hosted font, a few base rules and the
   small details that Elementor's panels can't express. Classes are added on
   containers/widgets in Elementor under Advanced → CSS Classes (lwg-*).
   ========================================================================== */

@font-face { font-family: "Poppins"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/poppins-400.woff2") format("woff2"); }
@font-face { font-family: "Poppins"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/poppins-500.woff2") format("woff2"); }
@font-face { font-family: "Poppins"; font-style: normal; font-weight: 600; font-display: swap; src: url("../fonts/poppins-600.woff2") format("woff2"); }
@font-face { font-family: "Poppins"; font-style: normal; font-weight: 700; font-display: swap; src: url("../fonts/poppins-700.woff2") format("woff2"); }

:root {
	--lwg-ink: #1C1F22;
	--lwg-paper: #F4F2EE;
	--lwg-muted: #50565D;
	--lwg-rule: #D3D0CA;
	--lwg-accent: #C2410C;
	--lwg-accent-dark: #9A3412;
	--lwg-accent-on-dark: #F27A3D;
	--lwg-muted-on-dark: #B4BAC0;
	--lwg-steel-700: #3A4046;
}

/* Base ------------------------------------------------------------------ */
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; font-family: "Poppins", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif; color: var(--lwg-ink); background: var(--lwg-paper); overflow-x: clip; -webkit-font-smoothing: antialiased; }
img { max-width: 100%; height: auto; }
:focus-visible { outline: 3px solid var(--lwg-accent); outline-offset: 3px; }
.lwg-contact :focus-visible, .lwg-footer :focus-visible, .mobile-bar :focus-visible { outline-color: #fff; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip-link { position: absolute; left: 1rem; top: -100px; z-index: 1000; padding: .75rem 1rem; background: var(--lwg-ink); color: #fff; font-weight: 600; text-decoration: none; }
.skip-link:focus { top: 1rem; color: #fff; }
.elementor-widget-text-editor a { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em; }
.elementor-widget-text-editor a:hover { text-decoration-color: var(--lwg-accent); }

/* Header (Theme Builder template "Sidhuvud") ----------------------------- */
.elementor-location-header { position: sticky; top: 0; z-index: 100; }
.lwg-header { border-bottom: 1px solid var(--lwg-rule); }
.lwg-brand-name .elementor-heading-title { font-size: 17px; font-weight: 700; letter-spacing: -.01em; white-space: nowrap; color: var(--lwg-ink); }
.lwg-header-phone .elementor-heading-title { font-size: 17px; font-weight: 600; white-space: nowrap; }
.lwg-header-phone a { color: var(--lwg-ink); text-decoration: none; border-bottom: 2px solid var(--lwg-accent); padding-bottom: 2px; }
.lwg-header-phone a:hover { color: var(--lwg-accent); }
.lwg-header-btn .elementor-button { padding: 12px 18px; font-size: 15px; }
.lwg-nav .elementor-menu-toggle { min-width: 44px; min-height: 44px; }
.lwg-nav .elementor-nav-menu--dropdown { border-top: 1px solid var(--lwg-rule); border-bottom: 1px solid var(--lwg-rule); }
@media (max-width: 767px) {
	.lwg-brand-name .elementor-heading-title { font-size: 16px; }
}

/* Photos with plain captions --------------------------------------------- */
.lwg-photo figure, .lwg-photo .wp-caption { margin: 0; }
.lwg-photo img { display: block; width: 100%; height: auto; border-radius: 0; }
.lwg-photo .widget-image-caption { margin-top: 10px; font-size: 14px; line-height: 1.4; color: var(--lwg-muted); text-align: left; }

/* Hero ------------------------------------------------------------------- */
.lwg-hero-title .elementor-heading-title { max-width: 15em; text-wrap: balance; }
.lwg-lead { font-size: 19px; line-height: 1.6; max-width: 36em; color: var(--lwg-ink); }
.lwg-call { border-top: 1px solid var(--lwg-rule); max-width: 36em; }
.lwg-call-label p { margin: 0; font-size: 17px; font-weight: 600; }
.lwg-call-number .elementor-heading-title { font-size: clamp(40px, 6vw, 64px); font-weight: 700; line-height: 1.05; letter-spacing: -.02em; }
.lwg-call-number a { color: var(--lwg-ink); text-decoration: none; background: linear-gradient(var(--lwg-accent), var(--lwg-accent)) 0 100% / 100% 4px no-repeat; padding-bottom: 4px; }
.lwg-call-number a:hover { color: var(--lwg-accent); }
.lwg-call-alt p { margin: 8px 0 0; color: var(--lwg-muted); }
.lwg-call-alt a { color: var(--lwg-ink); }
.lwg-hero-photo img { aspect-ratio: 4 / 5; object-fit: cover; object-position: 50% 40%; }
@media (min-width: 1025px) { .lwg-hero-photo { margin-top: 8px; } }

/* Services --------------------------------------------------------------- */
.lwg-services { border-top: 1px solid var(--lwg-rule); }
.lwg-service-list { border-bottom: 1px solid var(--lwg-rule); }
.lwg-service { border-top: 1px solid var(--lwg-rule); }
.lwg-service-title .elementor-heading-title a { color: var(--lwg-ink); text-decoration: none; }
.lwg-service-title .elementor-heading-title a::after { content: " →"; color: var(--lwg-accent); font-weight: 500; }
.lwg-service-title .elementor-heading-title a:hover { color: var(--lwg-accent); text-decoration: underline; text-underline-offset: .2em; }
.lwg-service-text p { margin: 0; color: var(--lwg-muted); max-width: 34em; }
.lwg-note p { margin: 0; font-weight: 500; }
@media (min-width: 768px) {
	.lwg-sticky { position: sticky; top: 110px; }
	.lwg-services-photo img { aspect-ratio: 3 / 4; object-fit: cover; }
}
@media (max-width: 767px) {
	.lwg-services-photo img { aspect-ratio: 4 / 3; object-fit: cover; object-position: 50% 30%; }
	.lwg-sticky { order: 2; }
}

/* Jobs ------------------------------------------------------------------- */
.lwg-more p { margin: 0; white-space: nowrap; font-weight: 600; }
.lwg-more a { color: var(--lwg-ink); }
.lwg-job-tall img { aspect-ratio: 3 / 4; object-fit: cover; }
.lwg-job-small img { aspect-ratio: 3 / 4; object-fit: cover; }
.lwg-job-mid img { aspect-ratio: 4 / 3; object-fit: cover; }
@media (min-width: 768px) {
	.lwg-offset { margin-top: 72px; }
	.lwg-indent { margin-left: 8%; }
}
@media (max-width: 767px) {
	.lwg-job-tall img { aspect-ratio: 4 / 3; object-position: 50% 35%; }
	.lwg-job-small img { aspect-ratio: 4 / 3; }
}

/* About ------------------------------------------------------------------ */
.lwg-about-sub { margin-top: 24px; }
.lwg-about p { max-width: 34em; }
.lwg-plain-list { margin: 0; padding-left: 1.1em; }
.lwg-plain-list li { padding: 2px 0; }
.lwg-plain-list li::marker { color: var(--lwg-accent); }
/* Clearly-marked placeholders for the client */
.lwg-placeholder { aspect-ratio: 4 / 3; background: #D9D7D2; border: 2px dashed #8A8F95; color: #3A4046; }
.lwg-placeholder p, .lwg-quote-placeholder p { margin: 0; font-size: 15px; line-height: 1.5; }
.lwg-quote-placeholder { border: 2px dashed #8A8F95; padding: 16px 20px; color: #3A4046; background: #ECEAE5; }
@media (max-width: 767px) { .lwg-placeholder { aspect-ratio: 4 / 3; } }

/* Contact band (runs into the footer) ------------------------------------ */
.lwg-contact { position: relative; isolation: isolate; color: var(--lwg-muted-on-dark); }
.lwg-contact::after { /* the one perforated-plate detail on the site */
	content: ""; position: absolute; top: 0; right: 0; bottom: 0; width: 34%; z-index: -1; pointer-events: none;
	background-image: radial-gradient(circle, rgba(255,255,255,.08) 1.6px, transparent 2px);
	background-size: 14px 14px;
	-webkit-mask-image: linear-gradient(to left, #000, transparent);
	        mask-image: linear-gradient(to left, #000, transparent);
}
.lwg-contact .elementor-heading-title { color: #fff; }
.lwg-contact-title .elementor-heading-title { font-size: 22px; font-weight: 600; letter-spacing: 0; }
.lwg-contact-number .elementor-heading-title { font-size: clamp(44px, 8vw, 88px); font-weight: 700; line-height: 1; letter-spacing: -.03em; }
.lwg-contact-number a { color: #fff; text-decoration: none; background: linear-gradient(var(--lwg-accent-on-dark), var(--lwg-accent-on-dark)) 0 100% / 100% 4px no-repeat; padding-bottom: 6px; }
.lwg-contact-number a:hover { color: var(--lwg-accent-on-dark); }
.lwg-contact-text p { max-width: 32em; color: var(--lwg-muted-on-dark); }
.lwg-contact a:not(.elementor-button), .lwg-footer a { color: #fff; }
.lwg-contact-address p { color: var(--lwg-muted-on-dark); }
.lwg-contact-btn { margin-top: 8px; }
.lwg-footer-head { margin: 0 0 6px; font-size: 15px !important; font-weight: 600; color: #fff !important; }

/* Footer (Theme Builder template "Sidfot") ------------------------------- */
.lwg-footer { color: var(--lwg-muted-on-dark); font-size: 15px; }
.lwg-footer > .e-con-inner { border-top: 1px solid var(--lwg-steel-700); padding-top: 48px; }
.lwg-footer p { margin: 0 0 12px; line-height: 1.7; }
.lwg-footer-logo img { width: 140px; }
.lwg-footer-links { list-style: none; margin: 0; padding: 0; }
.lwg-footer-links li { padding: 3px 0; }
.lwg-footer a { text-decoration: none; }
.lwg-footer a:hover { color: var(--lwg-accent-on-dark); text-decoration: underline; }
.lwg-footer-bottom { border-top: 1px solid var(--lwg-steel-700); padding-top: 20px !important; font-size: 14px; }
.lwg-footer-bottom p { margin: 0; }
.lwg-todo { background: #3A4046; color: #fff; padding: 0 6px; }

/* Mobile call/quote bar (theme footer.php) ------------------------------- */
.mobile-bar { display: none; }
@media (max-width: 767px) {
	.mobile-bar { display: grid; grid-template-columns: 1fr 1fr; position: fixed; left: 0; right: 0; bottom: 0; z-index: 90; background: var(--lwg-ink); border-top: 1px solid var(--lwg-steel-700); padding-bottom: env(safe-area-inset-bottom); }
	.mobile-bar__link { display: flex; align-items: center; justify-content: center; gap: .5rem; min-height: 3.5rem; color: #fff; font-weight: 600; text-decoration: none; font-size: 16px; }
	.mobile-bar__link:hover { color: #fff; }
	.mobile-bar__link--accent { background: var(--lwg-accent); }
	.mobile-bar .icon { display: inline-block; vertical-align: middle; }
	body { padding-bottom: 3.5rem; }
}

/* Generic pages rendered by the theme (until they're built in Elementor) */
.page-main { padding: 64px 20px; max-width: 48rem; margin: 0 auto; min-height: 40vh; }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; }
}

/* Header sizing: brand + actions take their natural width, the menu takes the rest. */
.lwg-header .e-con.lwg-brand, .lwg-header .e-con.lwg-header-actions { --width: auto; --flex-grow: 0; --flex-shrink: 0; width: auto !important; flex: 0 0 auto !important; }
.lwg-brand-name .elementor-heading-title { line-height: 1.2; margin: 0; }
.lwg-brand > .elementor-widget { align-self: center; height: auto; }
/* Kit link colour (.elementor-kit-6 a) must not win over these */
.mobile-bar a.mobile-bar__link, .mobile-bar a.mobile-bar__link:hover, a.skip-link { color: #fff; }

/* Tablet/mobile: burger sits at the far right, after phone + button */
@media (max-width: 1024px) {
	.lwg-header .lwg-nav { order: 3; --flex-grow: 0; flex-grow: 0 !important; }
	.lwg-header .e-con.lwg-header-actions { margin-left: auto; }
	.lwg-header .e-con.lwg-brand { margin-right: auto; }
}
.lwg-about .elementor-widget-heading.lwg-about-sub { margin-top: 20px; }
.lwg-about .elementor-widget-heading.lwg-about-sub + .elementor-widget-text-editor p:first-child { margin-top: -4px; }
