/* ==========================================================================
   AS Design Studio — construction design system
   --------------------------------------------------------------------------
   Every rule is scoped to body.asds so the parent theme, plugins and the
   Elementor editor keep working untouched. Elementor writes per-element CSS
   with high specificity, so a handful of declarations use !important on
   purpose; each one is a deliberate design-system override, not a hack.

   Table of contents
   1. Tokens & palette bridge
   2. Base
   3. Typography system
   4. Header (desktop)
   5. Header (mobile) + off-canvas drawer
   6. Buttons
   7. Elementor layout & tone (light / dark / accent sections)
   8. Hero
   9. Components (cards, lists, gallery, team, pricing, testimonials, FAQ…)
   10. Forms
   11. Blog & content pages
   12. Footer
   13. Utilities (back to top, reveal, chat launcher)
   14. Responsive
   15. Accessibility & print
   16. Icon font subsets
   ========================================================================== */

/* 1. Tokens & palette bridge
   ------------------------------------------------------------------------ */
:root,
body.asds {
	--asds-accent: #f4a51c;
	--asds-accent-deep: #d98700;
	--asds-accent-text: #9c6000; /* amber that passes WCAG AA as text on white + concrete */
	--asds-accent-hover: #f6b23c;
	--asds-accent-rgb: 244, 165, 28;
	--asds-ink: #0f1a24;
	--asds-ink-rgb: 15, 26, 36;
	--asds-ink-2: #172532;
	--asds-ink-3: #22303c;
	--asds-text: #3b4a58;
	--asds-muted: #6b7885;
	--asds-surface: #f3f5f7;
	--asds-surface-2: #e9edf1;
	--asds-line: #dbe2e8;
	--asds-paper: #ffffff;
	--asds-whatsapp: #25d366;
	--asds-whatsapp-deep: #1ebe5b;

	--asds-font-body: "Barlow", ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
	--asds-font-display: "Barlow Condensed", "Arial Narrow", "Roboto Condensed", var(--asds-font-body);

	--asds-radius-sm: 6px;
	--asds-radius: 12px;
	--asds-radius-lg: 18px;
	--asds-shadow-sm: 0 1px 2px rgba(15, 26, 36, 0.06), 0 6px 18px rgba(15, 26, 36, 0.06);
	--asds-shadow: 0 2px 4px rgba(15, 26, 36, 0.06), 0 18px 44px rgba(15, 26, 36, 0.12);
	--asds-shadow-lg: 0 30px 70px rgba(15, 26, 36, 0.22);
	--asds-ease: cubic-bezier(0.2, 0.7, 0.2, 1);

	--asds-container: 1240px;
	--asds-gutter: clamp(20px, 4vw, 40px);
	--asds-header-h: 84px;

	/* Contextual text colours — switched by section tone (see section 7). */
	--asds-heading: var(--asds-ink);
	--asds-fg: var(--asds-text);
	--asds-fg-muted: var(--asds-muted);
	--asds-link: var(--asds-accent-text);
	--asds-card-bg: var(--asds-paper);
	--asds-card-line: var(--asds-line);

	/* Bridge: every Astra / Elementor "global colour" now resolves to the
	   construction palette, so builder layouts recolour without editing. */
	--ast-global-color-0: var(--asds-accent);
	--ast-global-color-1: var(--asds-accent-deep);
	--ast-global-color-2: var(--asds-ink);
	--ast-global-color-3: var(--asds-text);
	--ast-global-color-4: var(--asds-surface);
	--ast-global-color-5: var(--asds-paper);
	--ast-global-color-6: var(--asds-surface);
	--ast-global-color-7: var(--asds-ink-3);
	--ast-global-color-8: var(--asds-ink);
	--e-global-color-astglobalcolor0: var(--asds-accent);
	--e-global-color-astglobalcolor1: var(--asds-accent-deep);
	--e-global-color-astglobalcolor2: var(--asds-ink);
	--e-global-color-astglobalcolor3: var(--asds-text);
	--e-global-color-astglobalcolor4: var(--asds-surface);
	--e-global-color-astglobalcolor5: var(--asds-paper);
	--e-global-color-astglobalcolor6: var(--asds-surface);
	--e-global-color-astglobalcolor7: var(--asds-ink-3);
	--e-global-color-astglobalcolor8: var(--asds-ink);
	--e-global-color-primary: var(--asds-accent);
	--e-global-color-secondary: var(--asds-ink);
	--e-global-color-text: var(--asds-text);
	--e-global-color-accent: var(--asds-accent-deep);
}

/* 2. Base
   ------------------------------------------------------------------------ */
html {
	scroll-behavior: smooth;
	scroll-padding-top: calc(var(--asds-header-h) + 16px);
	-webkit-text-size-adjust: 100%;
	/* Decorative Elementor shapes are positioned past the right edge on
	   purpose (right: -15vw). Clipping at the root keeps them from creating
	   a horizontal scrollbar on any page. */
	overflow-x: clip;
}

body.asds {
	color: var(--asds-text);
	background: var(--asds-paper);
	font-family: var(--asds-font-body);
	font-size: 17px;
	line-height: 1.65;
	overflow-x: clip;
	text-rendering: optimizeLegibility;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

body.asds #page {
	overflow-x: clip;
}

body.asds *,
body.asds *::before,
body.asds *::after {
	box-sizing: border-box;
}

body.asds ::selection {
	color: var(--asds-ink);
	background: rgba(var(--asds-accent-rgb), 0.55);
}

body.asds :focus-visible {
	outline: 3px solid var(--asds-accent);
	outline-offset: 3px;
	border-radius: 2px;
}

body.asds a {
	color: var(--asds-link);
	text-underline-offset: 0.18em;
	text-decoration-thickness: 1.5px;
	transition: color 160ms var(--asds-ease);
}

body.asds a:hover {
	color: var(--asds-ink);
}

body.asds img,
body.asds video,
body.asds iframe {
	max-width: 100%;
	height: auto;
}

body.asds iframe {
	border: 0;
}

body.asds p,
body.asds li {
	text-wrap: pretty;
}

body.asds hr {
	border: 0;
	border-top: 1px solid var(--asds-line);
	margin: 2rem 0;
}

/* 3. Typography system
   ------------------------------------------------------------------------ */
body.asds h1,
body.asds h2,
body.asds h3,
body.asds h4,
body.asds h5,
body.asds h6 {
	margin-top: 0;
	font-family: var(--asds-font-display);
	font-weight: 800;
	line-height: 1.06;
	letter-spacing: 0.005em;
	color: var(--asds-heading);
	text-wrap: balance;
}

body.asds h1 { font-size: clamp(2.5rem, 5.4vw, 4.6rem); }
body.asds h2 { font-size: clamp(2rem, 3.8vw, 3.2rem); }
body.asds h3 { font-size: clamp(1.45rem, 2.2vw, 2rem); font-weight: 700; }
body.asds h4 { font-size: clamp(1.2rem, 1.6vw, 1.45rem); font-weight: 700; }
body.asds h5 { font-size: 1.05rem; font-weight: 700; letter-spacing: 0.04em; }
body.asds h6 { font-size: 0.92rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; }

/* Page-builder text is forced into the type system for consistency.
   :where() keeps specificity flat so the heading rule below can win by order;
   icon fonts (<i>, <svg>) are never touched. */
body.asds.asds-fonts,
body.asds.asds-fonts .elementor-widget-container,
body.asds.asds-fonts .elementor-widget-container :where(p, li, ul, ol, span, div, a, td, th, label, small, strong, em, b, blockquote, figcaption, input, textarea, select, button):not(:where(h1, h2, h3, h4, h5, h6) *):not(:where([class*="fa-"], .ast-icon, .elementor-icon, .eicon, [class^="icon-"])),
body.asds.asds-fonts .ast-custom-button,
body.asds.asds-fonts .menu-link,
body.asds.asds-fonts .wpforms-container :where(label, input, textarea, select, button),
body.asds.asds-fonts .wrapped-line {
	font-family: var(--asds-font-body) !important;
}

body.asds.asds-fonts .elementor-widget-container :where(h1, h2, h3, h4, h5, h6),
body.asds.asds-fonts .elementor-widget-container :where(h1, h2, h3, h4, h5, h6) :where(span, a, strong, em, b),
body.asds.asds-fonts .elementor-heading-title,
body.asds.asds-fonts .ekit-heading--title,
body.asds.asds-fonts .elementskit-pricing-price,
body.asds.asds-fonts .fg-item-title,
body.asds.asds-fonts .elementor-counter-number-wrapper,
body.asds.asds-fonts .elementor-accordion-title,
body.asds.asds-fonts .entry-title,
body.asds.asds-fonts .page-title,
body.asds.asds-fonts .ast-related-posts-title,
body.asds.asds-fonts .widget-title,
body.asds.asds-fonts .comments-title,
body.asds.asds-fonts .comment-reply-title {
	font-family: var(--asds-font-display) !important;
}

body.asds.asds-fonts .elementskit-pricing-price :where(.currency, .period) {
	font-family: var(--asds-font-body) !important;
}

/* Essential Blocks (block editor) get the same treatment; its Google Fonts
   request (Open Sans + Rubik, 36 weights) is skipped in inc/assets.php. */
body.asds.asds-fonts .eb-parent-wrapper :where(p, li, span, div, a, label, small, strong, em, b, button, time):not(:where(h1, h2, h3, h4, h5, h6) *):not(:where([class*="fa-"], [class*="icon"], .dashicons)) {
	font-family: var(--asds-font-body) !important;
}

body.asds.asds-fonts .eb-parent-wrapper :where(h1, h2, h3, h4, h5, h6),
body.asds.asds-fonts .eb-parent-wrapper :where(h1, h2, h3, h4, h5, h6) :where(a, span, strong, em, b) {
	font-family: var(--asds-font-display) !important;
}

/* Essential Blocks post grid: titles read like every other card title. */
body.asds .ebpg-entry-title,
body.asds .ebpg-entry-title a {
	color: var(--asds-ink) !important;
	font-size: 1.2rem !important;
	font-weight: 700 !important;
	line-height: 1.2 !important;
	text-decoration: none;
}

body.asds .ebpg-entry-title a:hover,
body.asds .ebpg-entry-title a:focus-visible {
	color: var(--asds-accent-text) !important;
}

/* Elementor sets font-size per widget; keep sizes fluid and never wider than
   the viewport — this is what fixes the overflowing hero on phones. */
body.asds .elementor-heading-title,
body.asds .ekit-heading--title {
	overflow-wrap: anywhere;
	line-height: 1.06 !important;
	letter-spacing: 0.005em !important;
	font-weight: 800 !important;
	color: var(--asds-heading) !important;
}

body.asds h1.elementor-heading-title { font-size: clamp(2.5rem, 6vw, 4.8rem) !important; text-transform: uppercase; }
body.asds h2.elementor-heading-title,
body.asds h2.ekit-heading--title { font-size: clamp(1.9rem, 3.6vw, 3rem) !important; text-transform: uppercase; }
body.asds h3.elementor-heading-title { font-size: clamp(1.45rem, 2.2vw, 2rem) !important; font-weight: 700 !important; }
body.asds h4.elementor-heading-title { font-size: clamp(1.15rem, 1.6vw, 1.4rem) !important; font-weight: 700 !important; }
/* Small headings stay readable (they are often used for quotes or notes)… */
body.asds h5.elementor-heading-title,
body.asds h6.elementor-heading-title {
	font-size: 1.05rem !important;
	font-weight: 700 !important;
	letter-spacing: 0.02em !important;
	line-height: 1.35 !important;
}

/* …and become an amber eyebrow label only when they sit directly above
   another heading, i.e. when they act as a kicker. */
body.asds .elementor-widget-heading:has(+ .elementor-widget-heading) :is(h5, h6).elementor-heading-title {
	font-size: 0.82rem !important;
	letter-spacing: 0.16em !important;
	line-height: 1.2 !important;
	text-transform: uppercase;
	color: var(--asds-accent-text) !important;
}

body.asds .elementor-widget-text-editor,
body.asds .elementor-widget-text-editor p,
body.asds .elementor-image-box-description,
body.asds .elementor-icon-box-description,
body.asds .eael-infobox .infobox-content p {
	color: var(--asds-fg) !important;
	font-size: 1.02rem;
	line-height: 1.7;
}

body.asds .elementor-widget-text-editor h2,
body.asds .elementor-widget-text-editor h3,
body.asds .elementor-widget-text-editor h4 {
	margin: 1.4em 0 0.5em;
	color: var(--asds-heading);
}

body.asds .elementor-widget-text-editor a {
	color: var(--asds-link);
	font-weight: 600;
}

/* A linked title (team member, service, heading widget) keeps the heading
   colour; the link reveals itself on hover. */
body.asds .elementor-widget-container :is(h1, h2, h3, h4, h5, h6) a:not(.elementor-button) {
	display: inline-block;
	padding-block: 3px;
	color: inherit !important;
	text-decoration: none;
}

body.asds .elementor-widget-container :is(h1, h2, h3, h4, h5, h6) a:not(.elementor-button):hover {
	color: var(--asds-link) !important;
}

body.asds .elementor-widget-text-editor ul,
body.asds .elementor-widget-text-editor ol {
	padding-left: 1.25em;
}

body.asds .elementor-widget-text-editor li + li {
	margin-top: 0.35em;
}

/* 4. Header (desktop)
   ------------------------------------------------------------------------ */
body.asds .site-header {
	position: relative;
	z-index: 200;
	transition: box-shadow 220ms var(--asds-ease);
}

body.asds.ast-theme-transparent-header .site-header,
body.asds.ast-theme-transparent-header #masthead {
	position: absolute;
	inset-inline: 0;
	top: 0;
}

body.asds .site-header .ast-above-header-bar,
body.asds .site-header .ast-primary-header-bar,
body.asds .site-header .ast-below-header-bar,
body.asds .site-header .main-header-bar {
	border: 0 !important;
	color: #fff;
	background-color: var(--asds-ink) !important;
	background-image: none !important;
}

body.asds.ast-theme-transparent-header .site-header .ast-above-header-bar,
body.asds.ast-theme-transparent-header .site-header .ast-primary-header-bar {
	box-shadow: inset 0 -1px 0 rgba(255, 255, 255, 0.08);
}

/* Sticky (mystickymenu) / scrolled states → add depth. */
body.asds .site-header.myfixed .ast-above-header-bar,
body.asds .site-header.myfixed .ast-primary-header-bar,
body.asds.asds-scrolled .site-header .ast-above-header-bar,
body.asds.asds-scrolled .site-header .ast-primary-header-bar {
	box-shadow: 0 6px 24px rgba(0, 0, 0, 0.22);
}

body.asds .site-header .wrap-sticky {
	background: transparent;
}

body.asds .ast-above-header-bar .site-above-header-wrap,
body.asds .ast-primary-header-bar .site-primary-header-wrap {
	min-height: var(--asds-header-h) !important;
	max-width: min(var(--asds-container), calc(100% - 2 * var(--asds-gutter)));
	padding-inline: 0;
}

body.asds.ast-desktop .ast-above-header-bar .main-header-menu > .menu-item {
	line-height: 1.2;
}

/* Logo */
body.asds .site-branding {
	display: flex;
	align-items: center;
}

body.asds .site-logo-img img,
body.asds .custom-logo-link img {
	display: block;
	width: auto !important;
	max-width: none !important;
	max-height: 54px;
	object-fit: contain;
	filter: none !important;
	transition: transform 200ms var(--asds-ease);
}

body.asds .custom-logo-link:hover img {
	transform: translateY(-1px);
}

/* The current logo file has an opaque white background. Inverting it and
   screen-blending it against an isolated charcoal backdrop renders it white
   with no box around it. */
body.asds.asds-logo-invert .site-header .custom-logo-link {
	display: inline-block;
	isolation: isolate;
	background: var(--asds-ink);
	line-height: 0;
}

body.asds.asds-logo-invert .site-header .site-logo-img img,
body.asds.asds-logo-invert .site-header .custom-logo-link img {
	filter: invert(1) grayscale(1) brightness(1.7) contrast(1.05) !important;
	mix-blend-mode: screen;
}

/* Dark header without inversion: present the logo on an intentional plate. */
body.asds.asds-header-dark:not(.asds-logo-invert) .site-header .custom-logo-link {
	display: inline-block;
	padding: 5px 9px;
	border-radius: var(--asds-radius-sm);
	background: #fff;
	line-height: 0;
}

body.asds.asds-header-light .site-header .site-logo-img img {
	mix-blend-mode: multiply;
}

/* Navigation */
body.asds .ast-builder-menu .main-header-menu,
body.asds .ast-builder-menu .main-header-menu .sub-menu {
	background: transparent !important;
	box-shadow: none;
}

body.asds #ast-desktop-header .main-header-menu {
	display: flex;
	align-items: center;
	gap: 2px;
}

body.asds #ast-desktop-header .main-header-menu > .menu-item > .menu-link {
	position: relative;
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 14px;
	border-radius: var(--asds-radius-sm);
	color: rgba(255, 255, 255, 0.86) !important;
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	background: transparent !important;
	transition: color 160ms var(--asds-ease), background-color 160ms var(--asds-ease);
}

body.asds #ast-desktop-header .main-header-menu > .menu-item:hover > .menu-link,
body.asds #ast-desktop-header .main-header-menu > .menu-item:focus-within > .menu-link {
	color: #fff !important;
	background: rgba(255, 255, 255, 0.08) !important;
}

body.asds #ast-desktop-header .main-header-menu > .current-menu-item > .menu-link,
body.asds #ast-desktop-header .main-header-menu > .current-menu-ancestor > .menu-link,
body.asds #ast-desktop-header .main-header-menu > .current_page_item > .menu-link {
	color: var(--asds-accent) !important;
	background: transparent !important;
}

body.asds #ast-desktop-header .main-header-menu > .current-menu-item > .menu-link::after,
body.asds #ast-desktop-header .main-header-menu > .current-menu-ancestor > .menu-link::after,
body.asds #ast-desktop-header .main-header-menu > .current_page_item > .menu-link::after {
	content: "";
	position: absolute;
	left: 14px;
	right: 14px;
	bottom: 4px;
	height: 3px;
	border-radius: 2px;
	background: var(--asds-accent);
}

body.asds #ast-desktop-header .main-header-menu .menu-item .icon-arrow svg {
	fill: currentColor;
	opacity: 0.75;
}

body.asds #ast-desktop-header .ast-menu-hover-style-zoom > .menu-item > .menu-link:hover {
	transform: none;
}

/* Drop-downs */
body.asds #ast-desktop-header .main-header-menu .sub-menu {
	min-width: 300px;
	max-width: min(360px, calc(100vw - 32px));
	padding: 10px;
	border: 1px solid var(--asds-line);
	border-top: 4px solid var(--asds-accent);
	border-radius: 0 0 var(--asds-radius) var(--asds-radius);
	background: var(--asds-paper) !important;
	box-shadow: var(--asds-shadow);
}

body.asds #ast-desktop-header .main-header-menu .sub-menu::before {
	display: none;
}

body.asds #ast-desktop-header .main-header-menu .sub-menu .menu-item > .menu-link {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	gap: 8px;
	padding: 11px 14px !important;
	border: 0 !important;
	border-radius: var(--asds-radius-sm);
	color: var(--asds-ink) !important;
	background: transparent !important;
	font-size: 0.84rem;
	font-weight: 600;
	letter-spacing: 0.02em;
	text-align: left !important;
	text-transform: none;
	/* Keep every row the same height: the long tool names must not wrap. */
	white-space: nowrap;
	transition: background-color 140ms var(--asds-ease), color 140ms var(--asds-ease), padding-left 140ms var(--asds-ease);
}

body.asds #ast-desktop-header .main-header-menu .sub-menu .menu-item > .menu-link .icon-arrow {
	display: none;
}

body.asds #ast-desktop-header .main-header-menu .sub-menu .menu-item:hover > .menu-link,
body.asds #ast-desktop-header .main-header-menu .sub-menu .menu-item:focus-within > .menu-link,
body.asds #ast-desktop-header .main-header-menu .sub-menu .current-menu-item > .menu-link {
	color: var(--asds-ink) !important;
	background: rgba(var(--asds-accent-rgb), 0.16) !important;
	padding-left: 18px !important;
}

/* Search */
body.asds .ast-header-search .ast-search-icon .astra-search-icon,
body.asds .ast-header-search .ast-icon svg {
	color: #fff;
	fill: #fff;
}

body.asds .ast-header-search .ast-search-icon .astra-search-icon {
	display: inline-grid;
	place-items: center;
	width: 42px;
	height: 42px;
	border-radius: 50%;
	transition: background-color 160ms var(--asds-ease);
}

body.asds .ast-header-search .ast-search-icon .astra-search-icon:hover {
	background: rgba(255, 255, 255, 0.1);
}

body.asds .ast-search-menu-icon.slide-search .search-form {
	border-radius: var(--asds-radius-sm);
	background: var(--asds-paper) !important;
	box-shadow: var(--asds-shadow);
	border: 0;
}

body.asds .ast-search-menu-icon .search-field {
	color: var(--asds-ink) !important;
	background: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
	min-height: 44px;
	font-size: 0.95rem;
}

body.asds .ast-search-menu-icon .search-submit .ast-icon svg {
	fill: var(--asds-ink);
	color: var(--asds-ink);
}

/* Primary call-to-action. The link wraps a block; make the link the block so
   the whole button is the target. */
body.asds .ast-header-button-1 .ast-custom-button-link,
body.asds .ast-header-button-2 .ast-custom-button-link {
	display: inline-flex;
}

body.asds .ast-header-button-1 .ast-custom-button,
body.asds .ast-header-button-2 .ast-custom-button {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	min-height: 46px;
	padding: 0 22px !important;
	border: 0 !important;
	border-radius: var(--asds-radius-sm) !important;
	color: var(--asds-ink) !important;
	background: var(--asds-accent) !important;
	box-shadow: 0 6px 18px rgba(var(--asds-accent-rgb), 0.28);
	font-size: 0.78rem !important;
	font-weight: 800 !important;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	white-space: nowrap;
	transition: transform 180ms var(--asds-ease), box-shadow 180ms var(--asds-ease), background-color 180ms var(--asds-ease);
}

body.asds .ast-header-button-1 .ast-custom-button-link[href^="tel:"] .ast-custom-button::before {
	content: "";
	width: 15px;
	height: 15px;
	flex: none;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.4 1.8.7 2.7a2 2 0 0 1-.5 2.1L8 9.8a16 16 0 0 0 6.2 6.2l1.3-1.3a2 2 0 0 1 2.1-.4c.9.3 1.8.6 2.7.7a2 2 0 0 1 1.7 2z'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.4 1.8.7 2.7a2 2 0 0 1-.5 2.1L8 9.8a16 16 0 0 0 6.2 6.2l1.3-1.3a2 2 0 0 1 2.1-.4c.9.3 1.8.6 2.7.7a2 2 0 0 1 1.7 2z'/%3E%3C/svg%3E") center / contain no-repeat;
}

body.asds .ast-header-button-1 .ast-custom-button-link:hover .ast-custom-button,
body.asds .ast-header-button-2 .ast-custom-button-link:hover .ast-custom-button {
	background: var(--asds-accent-hover) !important;
	box-shadow: 0 10px 26px rgba(var(--asds-accent-rgb), 0.4);
	transform: translateY(-2px);
}

/* Light header variant */
body.asds.asds-header-light .site-header .ast-above-header-bar,
body.asds.asds-header-light .site-header .ast-primary-header-bar {
	color: var(--asds-ink);
	background-color: rgba(255, 255, 255, 0.94) !important;
	box-shadow: 0 1px 0 rgba(var(--asds-ink-rgb), 0.08);
}

body.asds.asds-header-light .site-header.myfixed .ast-above-header-bar,
body.asds.asds-header-light.asds-scrolled .site-header .ast-above-header-bar {
	background-color: rgba(255, 255, 255, 0.98) !important;
	box-shadow: 0 6px 24px rgba(var(--asds-ink-rgb), 0.12);
}

body.asds.asds-header-light #ast-desktop-header .main-header-menu > .menu-item > .menu-link {
	color: var(--asds-ink) !important;
}

body.asds.asds-header-light #ast-desktop-header .main-header-menu > .menu-item:hover > .menu-link {
	background: rgba(var(--asds-ink-rgb), 0.06) !important;
}

body.asds.asds-header-light #ast-desktop-header .main-header-menu > .current-menu-item > .menu-link,
body.asds.asds-header-light #ast-desktop-header .main-header-menu > .current-menu-ancestor > .menu-link {
	color: var(--asds-accent-text) !important;
}

body.asds.asds-header-light .ast-header-search .ast-search-icon .astra-search-icon,
body.asds.asds-header-light .ast-header-search .ast-icon svg {
	color: var(--asds-ink);
	fill: var(--asds-ink);
}

/* 5. Header (mobile) + off-canvas drawer
   ------------------------------------------------------------------------ */
body.asds #ast-mobile-header .ast-above-header-bar,
body.asds #ast-mobile-header .ast-primary-header-bar {
	background-color: var(--asds-ink) !important;
}

body.asds #ast-mobile-header .ast-above-header-bar .site-above-header-wrap,
body.asds #ast-mobile-header .ast-primary-header-bar .site-primary-header-wrap {
	min-height: 68px !important;
}

body.asds #ast-mobile-header .site-logo-img img {
	max-height: 44px;
}

body.asds #ast-mobile-header .ast-builder-grid-row {
	align-items: center;
}

body.asds #ast-mobile-header .site-header-section {
	gap: 8px;
}

/* Hamburger */
body.asds .ast-button-wrap .menu-toggle.main-header-menu-toggle {
	display: inline-grid;
	place-items: center;
	width: 46px;
	height: 46px;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.22) !important;
	border-radius: var(--asds-radius-sm);
	color: #fff !important;
	background: rgba(255, 255, 255, 0.06) !important;
	box-shadow: none !important;
}

body.asds .ast-button-wrap .menu-toggle .ast-mobile-svg,
body.asds [data-section="section-header-mobile-trigger"] .ast-button-wrap .mobile-menu-toggle-icon .ast-mobile-svg {
	width: 22px;
	height: 22px;
	fill: #fff !important;
}

/* Tap-to-call icon shown next to the hamburger */
body.asds #ast-mobile-header .ast-header-social-wrap .ast-builder-social-element {
	display: inline-grid;
	place-items: center;
	width: 44px;
	height: 44px;
	margin: 0;
	padding: 0 !important;
	border-radius: 50%;
	color: var(--asds-ink) !important;
	background: var(--asds-accent) !important;
	--color: var(--asds-ink);
	--background-color: var(--asds-accent);
}

body.asds #ast-mobile-header .ast-header-social-wrap .ast-builder-social-element svg {
	width: 20px;
	height: 20px;
	fill: currentColor;
}

/* Drawer */
body.asds .ast-mobile-popup-drawer .ast-mobile-popup-inner {
	max-width: 420px;
	color: #fff;
	background: var(--asds-ink);
	box-shadow: var(--asds-shadow-lg);
}

body.asds .ast-mobile-popup-drawer .ast-mobile-popup-overlay {
	background: rgba(var(--asds-ink-rgb), 0.6);
	backdrop-filter: blur(3px);
}

body.asds .ast-mobile-popup-drawer .ast-mobile-popup-header {
	min-height: 68px;
	padding: 12px 16px;
	border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

body.asds .ast-mobile-popup-drawer .menu-toggle-close,
body.asds .ast-mobile-popup-drawer.active .menu-toggle-close {
	width: 44px;
	height: 44px;
	padding: 0 !important;
	border: 1px solid rgba(255, 255, 255, 0.22) !important;
	border-radius: var(--asds-radius-sm);
	color: #fff !important;
	background: rgba(255, 255, 255, 0.06) !important;
}

body.asds .ast-mobile-popup-drawer .menu-toggle-close svg {
	fill: #fff;
}

body.asds .ast-mobile-popup-content .main-header-menu {
	background: transparent !important;
}

body.asds .ast-mobile-popup-content .main-header-menu .menu-item {
	border: 0 !important;
}

body.asds .ast-mobile-popup-content .main-header-menu .menu-item > .menu-link {
	display: flex;
	align-items: center;
	min-height: 54px;
	padding: 12px 24px !important;
	border: 0 !important;
	border-bottom: 1px solid rgba(255, 255, 255, 0.08) !important;
	color: #fff !important;
	background: transparent !important;
	font-size: 0.92rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

body.asds .ast-mobile-popup-content .main-header-menu .sub-menu {
	background: rgba(255, 255, 255, 0.04) !important;
}

body.asds .ast-mobile-popup-content .main-header-menu .sub-menu .menu-item > .menu-link {
	min-height: 48px;
	padding-left: 36px !important;
	color: rgba(255, 255, 255, 0.82) !important;
	font-size: 0.86rem;
	font-weight: 600;
	letter-spacing: 0.02em;
	text-align: left !important;
	text-transform: none;
}

body.asds .ast-mobile-popup-content .main-header-menu .sub-menu .menu-item > .menu-link .icon-arrow {
	display: none;
}

body.asds .ast-mobile-popup-content .main-header-menu .current-menu-item > .menu-link,
body.asds .ast-mobile-popup-content .main-header-menu .menu-item:hover > .menu-link {
	color: var(--asds-accent) !important;
	background: rgba(255, 255, 255, 0.05) !important;
}

body.asds .ast-mobile-popup-content .main-header-menu .ast-menu-toggle {
	width: 54px;
	color: #fff !important;
	background: transparent !important;
	border: 0 !important;
}

body.asds .ast-mobile-popup-content .main-header-menu .ast-menu-toggle .icon-arrow svg {
	fill: currentColor;
}

body.asds .ast-mobile-popup-content .main-header-menu .menu-link .dropdown-menu-toggle {
	display: none;
}

/* 6. Buttons
   ------------------------------------------------------------------------ */
body.asds .elementor-widget-button .elementor-button,
body.asds .elementskit-pricing-btn,
body.asds .wp-element-button,
body.asds .wp-block-button__link,
body.asds .wpforms-container .wpforms-submit,
body.asds .ast-button,
body.asds button.button,
body.asds input[type="submit"],
body.asds .eael-load-more-button,
body.asds .comment-respond .submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 52px;
	padding: 12px 26px !important;
	border: 2px solid var(--asds-accent) !important;
	border-radius: var(--asds-radius-sm) !important;
	color: var(--asds-ink) !important;
	background: var(--asds-accent) !important;
	box-shadow: 0 6px 18px rgba(var(--asds-accent-rgb), 0.24);
	font-size: 0.82rem !important;
	font-weight: 800 !important;
	letter-spacing: 0.08em !important;
	line-height: 1.2 !important;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
	transition: transform 180ms var(--asds-ease), box-shadow 180ms var(--asds-ease), background-color 180ms var(--asds-ease), color 180ms var(--asds-ease), border-color 180ms var(--asds-ease);
}

body.asds .elementor-widget-button .elementor-button:hover,
body.asds .elementor-widget-button .elementor-button:focus-visible,
body.asds .elementskit-pricing-btn:hover,
body.asds .wp-element-button:hover,
body.asds .wp-block-button__link:hover,
body.asds .wpforms-container .wpforms-submit:hover,
body.asds .ast-button:hover,
body.asds input[type="submit"]:hover,
body.asds .eael-load-more-button:hover,
body.asds .comment-respond .submit:hover {
	color: var(--asds-ink) !important;
	background: var(--asds-accent-hover) !important;
	border-color: var(--asds-accent-hover) !important;
	box-shadow: 0 12px 28px rgba(var(--asds-accent-rgb), 0.36);
	transform: translateY(-2px);
}

body.asds .elementor-widget-button .elementor-button .elementor-button-content-wrapper {
	gap: 10px;
}

body.asds .elementor-widget-button .elementor-button .elementor-button-icon svg,
body.asds .elementor-widget-button .elementor-button .elementor-button-icon i {
	font-size: 1em;
	color: currentColor;
	fill: currentColor;
}

/* Secondary (outline) — the second button of any pair, and "info" style. */
body.asds .elementor-widget-button.elementor-button-info .elementor-button,
body.asds .elementor-widget-button + .elementor-widget-button .elementor-button,
body.asds .e-con-full > .elementor-widget-button:nth-of-type(2) .elementor-button {
	color: var(--asds-heading) !important;
	background: transparent !important;
	border-color: currentColor !important;
	box-shadow: none;
}

body.asds .elementor-widget-button.elementor-button-info .elementor-button:hover,
body.asds .elementor-widget-button + .elementor-widget-button .elementor-button:hover,
body.asds .e-con-full > .elementor-widget-button:nth-of-type(2) .elementor-button:hover {
	color: var(--asds-ink) !important;
	background: var(--asds-accent) !important;
	border-color: var(--asds-accent) !important;
}

/* WhatsApp actions read as WhatsApp everywhere: brand green with the
   WhatsApp glyph. Charcoal text, not white — white on this green is 2:1 and
   fails WCAG AA; charcoal is 9:1. */
body.asds .elementor-widget-button .elementor-button[href*="whatsapp"],
body.asds .elementor-widget-button .elementor-button[href*="wa.me"],
body.asds .elementskit-pricing-btn[href*="whatsapp"],
body.asds .wp-block-button__link[href*="whatsapp"] {
	color: var(--asds-ink) !important;
	background: var(--asds-whatsapp) !important;
	border-color: var(--asds-whatsapp) !important;
	box-shadow: 0 6px 18px rgba(37, 211, 102, 0.28);
}

body.asds .elementor-widget-button .elementor-button[href*="whatsapp"]:hover,
body.asds .elementor-widget-button .elementor-button[href*="wa.me"]:hover,
body.asds .elementskit-pricing-btn[href*="whatsapp"]:hover {
	background: var(--asds-whatsapp-deep) !important;
	border-color: var(--asds-whatsapp-deep) !important;
	color: var(--asds-ink) !important;
}

body.asds .elementor-widget-button .elementor-button[href*="whatsapp"] .elementor-button-text::before,
body.asds .elementor-widget-button .elementor-button[href*="wa.me"] .elementor-button-text::before {
	content: "";
	display: inline-block;
	width: 18px;
	height: 18px;
	margin-right: 9px;
	vertical-align: -4px;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17.5 14.4c-.3-.1-1.8-.9-2-1-.3-.1-.5-.1-.7.1-.2.3-.8 1-.9 1.2-.2.2-.3.2-.6.1-.3-.1-1.3-.5-2.4-1.5-.9-.8-1.5-1.8-1.7-2.1-.2-.3 0-.5.1-.6l.5-.6.3-.5c.1-.2 0-.4 0-.5l-.9-2.2c-.2-.6-.5-.5-.7-.5h-.6c-.2 0-.5.1-.8.4-.3.3-1 1-1 2.5s1.1 2.9 1.2 3.1c.1.2 2.1 3.2 5.1 4.5.7.3 1.3.5 1.7.6.7.2 1.4.2 1.9.1.6-.1 1.8-.7 2-1.4.2-.7.2-1.3.2-1.4-.1-.2-.3-.3-.6-.4zM12 21.8c-1.8 0-3.5-.5-5-1.4l-.4-.2-3.7 1 1-3.6-.2-.4A9.8 9.8 0 1 1 12 21.8zM12 .2A11.8 11.8 0 0 0 2 18.1L.3 24l6.1-1.6A11.8 11.8 0 1 0 12 .2z'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17.5 14.4c-.3-.1-1.8-.9-2-1-.3-.1-.5-.1-.7.1-.2.3-.8 1-.9 1.2-.2.2-.3.2-.6.1-.3-.1-1.3-.5-2.4-1.5-.9-.8-1.5-1.8-1.7-2.1-.2-.3 0-.5.1-.6l.5-.6.3-.5c.1-.2 0-.4 0-.5l-.9-2.2c-.2-.6-.5-.5-.7-.5h-.6c-.2 0-.5.1-.8.4-.3.3-1 1-1 2.5s1.1 2.9 1.2 3.1c.1.2 2.1 3.2 5.1 4.5.7.3 1.3.5 1.7.6.7.2 1.4.2 1.9.1.6-.1 1.8-.7 2-1.4.2-.7.2-1.3.2-1.4-.1-.2-.3-.3-.6-.4zM12 21.8c-1.8 0-3.5-.5-5-1.4l-.4-.2-3.7 1 1-3.6-.2-.4A9.8 9.8 0 1 1 12 21.8zM12 .2A11.8 11.8 0 0 0 2 18.1L.3 24l6.1-1.6A11.8 11.8 0 1 0 12 .2z'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* Text links styled as buttons ("View all →") */
body.asds .elementor-widget-button.elementor-button-text .elementor-button,
body.asds .elementor-widget-button .elementor-button.elementor-size-xs {
	min-height: 0;
	padding: 6px 0 !important;
	border: 0 !important;
	border-bottom: 2px solid var(--asds-accent) !important;
	border-radius: 0 !important;
	color: var(--asds-heading) !important;
	background: transparent !important;
	box-shadow: none;
}

body.asds .elementor-widget-button.elementor-button-text .elementor-button:hover,
body.asds .elementor-widget-button .elementor-button.elementor-size-xs:hover {
	color: var(--asds-accent-text) !important;
	transform: none;
}

/* 7. Elementor layout & tone
   ------------------------------------------------------------------------ */
body.asds .e-con,
body.asds .elementor-section.elementor-section-boxed > .elementor-container {
	--container-max-width: var(--asds-container);
}

body.asds .e-con.e-parent {
	--asds-section-pad: clamp(56px, 8vw, 104px);
}

body.asds .e-con.e-con-boxed.e-parent > .e-con-inner {
	padding-inline: var(--asds-gutter);
}

/* Page-builder pages: the first block never butts against the header and the
   last never against the footer. Only a minimum is enforced — any larger
   spacing set in Elementor is kept. */
body.asds.ast-page-builder-template:not(.ast-theme-transparent-header) .elementor[data-elementor-type="wp-page"] > .e-con.e-parent:first-child:not(.asds-hero) {
	padding-top: max(var(--padding-top, 0px), clamp(28px, 4vw, 56px)) !important;
}

body.asds.ast-page-builder-template .elementor[data-elementor-type="wp-page"] > .e-con.e-parent:last-child {
	padding-bottom: max(var(--padding-bottom, 0px), clamp(40px, 6vw, 72px)) !important;
}

/* Section tones set by inc/elementor.php from each container's background. */
body.asds .asds-dark,
body.asds .asds-photo {
	--asds-heading: #ffffff;
	--asds-fg: rgba(255, 255, 255, 0.84);
	--asds-fg-muted: rgba(255, 255, 255, 0.62);
	--asds-link: var(--asds-accent);
	--asds-card-bg: rgba(255, 255, 255, 0.06);
	--asds-card-line: rgba(255, 255, 255, 0.12);
	color: var(--asds-fg);
}

body.asds .asds-dark-raw {
	background-color: var(--asds-ink) !important;
}

body.asds .asds-surface-raw {
	background-color: var(--asds-surface) !important;
}

body.asds .asds-accent {
	--asds-heading: var(--asds-ink);
	--asds-fg: rgba(var(--asds-ink-rgb), 0.86);
	--asds-fg-muted: rgba(var(--asds-ink-rgb), 0.68);
	--asds-link: var(--asds-ink);
	--asds-card-bg: rgba(255, 255, 255, 0.28);
	--asds-card-line: rgba(var(--asds-ink-rgb), 0.12);
	color: var(--asds-fg);
}

body.asds .asds-accent-raw {
	background-color: var(--asds-accent) !important;
}

body.asds .asds-light {
	--asds-heading: var(--asds-ink);
	--asds-fg: var(--asds-text);
	--asds-fg-muted: var(--asds-muted);
	--asds-link: var(--asds-accent-text);
	--asds-card-bg: var(--asds-paper);
	--asds-card-line: var(--asds-line);
	color: var(--asds-fg);
}

body.asds .asds-dark h5.elementor-heading-title,
body.asds .asds-dark h6.elementor-heading-title,
body.asds .asds-photo h5.elementor-heading-title {
	color: var(--asds-accent) !important;
}

/* Dark sections get a subtle blueprint grid; accent sections a hazard edge. */
body.asds .e-con.e-parent.asds-dark:not(.asds-photo),
body.asds .elementor-top-section.asds-dark:not(.asds-photo) {
	position: relative;
	background-image:
		linear-gradient(rgba(255, 255, 255, 0.035) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255, 255, 255, 0.035) 1px, transparent 1px) !important;
	background-size: 44px 44px, 44px 44px !important;
}

/* Never on photo/video blocks: Elementor draws their overlay with ::before. */
body.asds .e-con.e-parent.asds-accent:not(.asds-media)::before,
body.asds .e-con.e-child.asds-accent:not(.asds-media)::before {
	content: "";
	position: absolute;
	inset: 0 auto auto 0;
	width: 100%;
	height: 8px;
	background: repeating-linear-gradient(135deg, var(--asds-ink) 0 14px, transparent 14px 28px);
	opacity: 0.85;
	pointer-events: none;
}

body.asds .e-con.asds-accent {
	position: relative;
}

/* Icon defaults — Elementor icons pick up the accent unless a section is dark. */
body.asds .elementor-icon,
body.asds .elementor-icon-list-icon i,
body.asds .elementor-icon-list-icon svg,
body.asds .eael-feature-list-icon,
body.asds .elementor-accordion-icon {
	color: var(--asds-accent-deep);
	fill: var(--asds-accent-deep);
}

body.asds .asds-dark .elementor-icon-list-icon i,
body.asds .asds-dark .elementor-icon-list-icon svg {
	color: var(--asds-accent);
	fill: var(--asds-accent);
}

body.asds .elementor-icon-list-text {
	color: var(--asds-fg) !important;
}

/* Dividers keep the width and weight set in Elementor (full-width rules frame
   headings, short ones accent cards); only the colour joins the palette. */
body.asds .elementor-divider-separator {
	border-color: var(--asds-accent) !important;
}

body.asds .ekit_heading_separetor_wraper .elementskit-border-divider {
	width: 72px;
	height: 4px;
	border: 0 !important;
	border-radius: 2px;
	background: var(--asds-accent) !important;
}

/* 8. Hero
   ------------------------------------------------------------------------ */
/* Inner-page banners carry only a title, so they stay compact; a hero with
   supporting copy (the homepage) gets the full-height treatment. */
body.asds .asds-hero {
	position: relative;
	isolation: isolate;
	min-height: clamp(300px, 40vh, 440px) !important;
	--padding-top: calc(var(--asds-header-h) + clamp(32px, 4vw, 56px)) !important;
	--padding-bottom: clamp(32px, 4vw, 56px) !important;
	--overlay-opacity: 1 !important;
	color: #fff;
}

body.asds .asds-hero:has(.elementor-widget-text-editor) {
	min-height: clamp(560px, 78vh, 820px) !important;
	--padding-top: calc(var(--asds-header-h) + clamp(56px, 8vw, 120px)) !important;
	--padding-bottom: clamp(64px, 8vw, 120px) !important;
}

body.asds .asds-hero::before {
	background-color: transparent !important;
	background-image:
		linear-gradient(90deg, rgba(var(--asds-ink-rgb), 0.94) 0%, rgba(var(--asds-ink-rgb), 0.82) 42%, rgba(var(--asds-ink-rgb), 0.38) 100%),
		linear-gradient(180deg, rgba(var(--asds-ink-rgb), 0.55) 0%, rgba(var(--asds-ink-rgb), 0) 30%, rgba(var(--asds-ink-rgb), 0.55) 100%) !important;
	opacity: 1 !important;
}

body.asds .asds-hero::after {
	content: "";
	position: absolute;
	inset: auto 0 0 0;
	height: 8px;
	background: repeating-linear-gradient(135deg, var(--asds-accent) 0 18px, var(--asds-ink) 18px 36px);
	z-index: 1;
}

body.asds .asds-hero > .e-con-inner,
body.asds .asds-hero > .elementor-container {
	position: relative;
	z-index: 1;
}

body.asds .asds-hero .elementor-heading-title {
	color: #fff !important;
	text-shadow: 0 2px 22px rgba(0, 0, 0, 0.35);
}

/* inline-block: the 14ch measure follows the alignment chosen in Elementor
   (a centred banner title stays centred instead of hugging the left edge). */
body.asds .asds-hero h1.elementor-heading-title {
	display: inline-block;
	max-width: 14ch;
	font-size: clamp(2.9rem, 7.2vw, 6rem) !important;
	line-height: 0.98 !important;
	letter-spacing: 0.01em !important;
}

body.asds .asds-hero .elementor-widget-heading + .elementor-widget-heading h2.elementor-heading-title {
	font-size: clamp(1.4rem, 2.6vw, 2.1rem) !important;
	font-weight: 700 !important;
	letter-spacing: 0.14em !important;
	color: var(--asds-accent) !important;
	text-transform: uppercase;
	text-shadow: none;
}

body.asds .asds-hero .elementor-widget-text-editor,
body.asds .asds-hero .elementor-widget-text-editor p {
	max-width: 58ch;
	color: rgba(255, 255, 255, 0.86) !important;
	font-size: clamp(1.02rem, 1.3vw, 1.18rem);
	line-height: 1.65;
}

body.asds .asds-hero .elementor-widget-button {
	width: auto !important;
	max-width: 100% !important;
}

body.asds .asds-hero .elementor-widget-button > .elementor-widget-container {
	padding: 0 !important;
}

/* A pair of hero buttons sits side by side from tablet up, stacked on phones.
   --width stays 100% so the row can never grow past its parent container. */
body.asds .asds-hero .e-con:has(> .elementor-widget-button + .elementor-widget-button) {
	--width: 100% !important;
	--flex-wrap: wrap !important;
	--align-items: stretch !important;
	--gap: 12px 12px !important;
	--row-gap: 12px !important;
	--column-gap: 12px !important;
	--padding-top: 0 !important;
}

body.asds .asds-hero .e-con:has(> .e-con > .elementor-widget-button + .elementor-widget-button) {
	--padding-top: 28px !important;
}

@media (min-width: 768px) {
	body.asds .asds-hero .e-con:has(> .elementor-widget-button + .elementor-widget-button) {
		--width: auto !important;
		--flex-direction: row !important;
		--align-items: center !important;
		--gap: 14px 14px !important;
		--row-gap: 14px !important;
		--column-gap: 14px !important;
	}
}

body.asds .asds-hero .elementor-widget-button .elementor-button {
	min-height: 56px;
	padding-inline: 30px !important;
	font-size: 0.86rem !important;
}

body.asds .asds-hero .elementor-widget-button + .elementor-widget-button .elementor-button,
body.asds .asds-hero .e-con-full > .elementor-widget-button:nth-of-type(2) .elementor-button {
	color: #fff !important;
	border-color: rgba(255, 255, 255, 0.55) !important;
	background: rgba(255, 255, 255, 0.06) !important;
	backdrop-filter: blur(6px);
}

/* 9. Components
   ------------------------------------------------------------------------ */

/* 9.1 Image tiles (photo-background containers with a caption icon-box) */
body.asds .e-con.e-child.asds-photo {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	min-height: 380px;
	justify-content: flex-end;
	transition: transform 300ms var(--asds-ease);
}

body.asds .e-con.e-child.asds-photo::before {
	background-color: transparent !important;
	background-image: linear-gradient(0deg, rgba(var(--asds-ink-rgb), 0.92) 0%, rgba(var(--asds-ink-rgb), 0.35) 45%, rgba(var(--asds-ink-rgb), 0.05) 100%) !important;
	opacity: 1 !important;
	transition: opacity 300ms var(--asds-ease);
}

body.asds .e-con.e-child.asds-photo:hover::before {
	opacity: 0.92 !important;
}

body.asds .e-con.e-child.asds-photo .elementor-icon-box-title {
	position: relative;
	padding-left: 16px;
	color: #fff !important;
	font-size: 1.35rem !important;
	line-height: 1.1;
}

body.asds .e-con.e-child.asds-photo .elementor-icon-box-title::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.1em;
	bottom: 0.1em;
	width: 4px;
	border-radius: 2px;
	background: var(--asds-accent);
}

body.asds .e-con.e-child.asds-photo .elementor-icon-box-description {
	padding-left: 16px;
	color: rgba(255, 255, 255, 0.78) !important;
	font-size: 0.86rem;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

/* 9.2 Generic card recipe */
body.asds .asds-card,
body.asds .eael-infobox,
body.asds .elementor-widget-image-box .elementor-image-box-wrapper,
body.asds .elementor-widget-elementskit-pricing .elementskit-single-pricing,
body.asds .elementor-widget-elementskit-icon-box .elementskit-infobox,
body.asds .elementor-widget-testimonial .elementor-testimonial-wrapper,
body.asds .elementor-widget-elementskit-team .profile-image-card,
body.asds .ast-article-post,
body.asds .ast-related-post {
	border: 1px solid var(--asds-card-line);
	border-radius: var(--asds-radius);
	background: var(--asds-card-bg);
	box-shadow: var(--asds-shadow-sm);
	transition: transform 240ms var(--asds-ease), box-shadow 240ms var(--asds-ease), border-color 240ms var(--asds-ease);
}

body.asds .eael-infobox:hover,
body.asds .elementor-widget-image-box:hover .elementor-image-box-wrapper,
body.asds .elementor-widget-elementskit-pricing:hover .elementskit-single-pricing,
body.asds .elementor-widget-elementskit-icon-box:hover .elementskit-infobox,
body.asds .elementor-widget-elementskit-team:hover .profile-image-card,
body.asds .ast-article-post:hover,
body.asds .ast-related-post:hover {
	border-color: rgba(var(--asds-accent-rgb), 0.7);
	box-shadow: var(--asds-shadow);
	transform: translateY(-5px);
}

/* 9.3 Info boxes ("Why choose us") */
body.asds .elementor-widget-eael-info-box,
body.asds .elementor-widget-eael-info-box > .elementor-widget-container {
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
}

body.asds .elementor-widget-eael-info-box > .elementor-widget-container {
	height: 100%;
}

body.asds .eael-infobox {
	position: relative;
	height: 100%;
	padding: 30px 28px 30px !important;
	overflow: hidden;
	background: var(--asds-card-bg) !important;
	text-align: left;
}

body.asds .eael-infobox::after {
	content: "";
	position: absolute;
	inset: 0 0 auto 0;
	height: 4px;
	background: var(--asds-accent);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 300ms var(--asds-ease);
}

body.asds .eael-infobox:hover::after {
	transform: scaleX(1);
}

body.asds .eael-infobox.icon-on-left {
	display: grid;
	grid-template-columns: 56px 1fr;
	gap: 18px;
	align-items: start;
}

body.asds .eael-infobox .infobox-icon {
	display: grid;
	place-items: center;
	align-self: start !important;
	width: 56px !important;
	min-width: 0;
	height: 56px !important;
	margin: 0 !important;
	border-radius: var(--asds-radius-sm);
	background: var(--asds-ink) !important;
	box-shadow: inset 0 -3px 0 var(--asds-accent);
}

body.asds .eael-infobox .infobox-icon img,
body.asds .eael-infobox .infobox-icon i {
	width: 28px !important;
	height: 28px !important;
	object-fit: contain;
	font-size: 24px;
	color: var(--asds-accent) !important;
}

/* Icon artwork is normalised to white so any colour of PNG reads on the badge. */
body.asds .eael-infobox .infobox-icon img {
	filter: brightness(0) invert(1) !important;
}

body.asds .eael-infobox .infobox-icon > * {
	padding: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
}

body.asds .eael-infobox .infobox-content {
	width: auto !important;
	padding: 0 !important;
}

body.asds .eael-infobox .infobox-content .title {
	margin: 0 0 8px !important;
	color: var(--asds-heading) !important;
	font-size: 1.35rem !important;
	font-weight: 700 !important;
	line-height: 1.15;
}

body.asds .eael-infobox .infobox-content p {
	margin: 0;
	font-size: 0.98rem;
	line-height: 1.65;
}

/* 9.4 Process / feature list (workflow steps) */
body.asds .elementor-widget-eael-feature-list {
	width: 100% !important;
	max-width: 100% !important;
}

body.asds .eael-feature-list-items {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
	gap: 12px 24px;
	margin: 0;
	padding: 0;
	list-style: none;
}

body.asds .eael-feature-list-items .eael-feature-list-item {
	position: relative;
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 0 !important;
	padding: 12px 14px !important;
	border: 1px solid var(--asds-card-line);
	border-radius: var(--asds-radius-sm);
	background: var(--asds-card-bg);
	transition: border-color 200ms var(--asds-ease), transform 200ms var(--asds-ease), box-shadow 200ms var(--asds-ease);
}

body.asds .eael-feature-list-items .eael-feature-list-item:hover {
	border-color: rgba(var(--asds-accent-rgb), 0.7);
	box-shadow: var(--asds-shadow-sm);
	transform: translateX(4px);
}

body.asds .eael-feature-list-items .eael-feature-list-item::before,
body.asds .eael-feature-list-items .eael-feature-list-item::after {
	display: none !important;
}

body.asds .eael-feature-list-items .eael-feature-list-icon-box {
	margin: 0 !important;
	padding: 0 !important;
}

body.asds .eael-feature-list-items .eael-feature-list-icon-inner,
body.asds .eael-feature-list-items .eael-feature-list-icon {
	display: grid;
	place-items: center;
	width: 40px !important;
	height: 40px !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: var(--asds-radius-sm) !important;
	background: var(--asds-ink) !important;
	color: var(--asds-accent) !important;
	font-size: 1rem !important;
	line-height: 1;
}

body.asds .eael-feature-list-items .eael-feature-list-icon i,
body.asds .eael-feature-list-items .eael-feature-list-icon svg {
	color: var(--asds-accent) !important;
	fill: var(--asds-accent) !important;
	font-size: 1rem !important;
}

body.asds .eael-feature-list-items .eael-feature-list-content-box {
	padding: 0 !important;
}

body.asds .eael-feature-list-items .eael-feature-list-title {
	margin: 0 !important;
	color: var(--asds-heading) !important;
	font-size: 1.08rem !important;
	font-weight: 700 !important;
	line-height: 1.2;
}

body.asds .eael-feature-list-items .eael-feature-list-content:empty {
	display: none;
}

/* 9.5 Image boxes (services, articles, testimonials) */
body.asds .elementor-widget-image-box .elementor-image-box-wrapper {
	overflow: hidden;
	height: 100%;
	text-align: left;
}

body.asds .elementor-widget-image-box .elementor-image-box-img {
	width: 100% !important;
	margin: 0 !important;
	overflow: hidden;
}

body.asds .elementor-widget-image-box .elementor-image-box-img img {
	width: 100%;
	aspect-ratio: 16 / 10;
	object-fit: cover;
	border-radius: 0 !important;
	transition: transform 600ms var(--asds-ease);
}

body.asds .elementor-widget-image-box:hover .elementor-image-box-img img {
	transform: scale(1.05);
}

body.asds .elementor-widget-image-box .elementor-image-box-content {
	padding: 22px 24px 26px;
}

body.asds .elementor-widget-image-box .elementor-image-box-title {
	margin: 0 0 8px !important;
	color: var(--asds-heading) !important;
	font-size: 1.35rem !important;
	font-weight: 700 !important;
	line-height: 1.15;
}

body.asds .elementor-widget-image-box .elementor-image-box-title a {
	color: inherit;
	text-decoration: none;
}

body.asds .elementor-widget-image-box .elementor-image-box-description {
	margin: 0;
	font-size: 0.98rem;
}

/* Testimonial variant: image-box without an image inside a dark card */
body.asds .asds-dark .elementor-widget-image-box .elementor-image-box-wrapper {
	position: relative;
	padding-top: 12px;
	border: 0;
	background: transparent;
	box-shadow: none;
}

body.asds .asds-dark .elementor-widget-image-box .elementor-image-box-wrapper::before {
	content: "\201C";
	position: absolute;
	top: -8px;
	left: 20px;
	font-family: Georgia, serif;
	font-size: 4.5rem;
	line-height: 1;
	color: var(--asds-accent);
	opacity: 0.8;
}

body.asds .asds-dark .elementor-widget-image-box .elementor-image-box-content {
	padding: 26px 24px 20px;
}

body.asds .asds-dark .elementor-widget-image-box .elementor-image-box-description {
	color: var(--asds-fg) !important;
	font-size: 1.02rem;
	font-style: italic;
}

body.asds .asds-dark.e-child:has(> .elementor-widget-image-box) {
	border-radius: var(--asds-radius);
}

body.asds .asds-dark.e-child .elementor-widget-image img[width="70"] {
	width: 64px;
	height: 64px;
	border-radius: 50%;
	border: 3px solid var(--asds-accent);
	object-fit: cover;
}

/* 9.6 Plain icon boxes (offices, stats) */
body.asds .elementor-widget-icon-box .elementor-icon-box-title {
	color: var(--asds-heading) !important;
	font-size: 1.3rem !important;
	font-weight: 700 !important;
}

body.asds .elementor-widget-icon-box .elementor-icon-box-description {
	font-size: 0.98rem;
}

body.asds .elementor-widget-icon-box :is(.elementor-icon-box-title, .elementor-icon-box-description) {
	text-align: inherit;
}

body.asds .elementor-widget-icon-box .elementor-icon-box-icon .elementor-icon {
	color: var(--asds-accent-deep);
	fill: var(--asds-accent-deep);
}

body.asds .asds-accent .elementor-widget-icon-box .elementor-icon-box-title,
body.asds .asds-dark .elementor-widget-icon-box .elementor-icon-box-title {
	font-size: clamp(2.2rem, 3.4vw, 3rem) !important;
	font-weight: 800 !important;
	line-height: 1;
}

/* 9.7 Filterable gallery (projects) */
body.asds .eael-filter-gallery-control {
	margin-bottom: 28px;
}

body.asds .eael-filter-gallery-control ul {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

body.asds .eael-filter-gallery-control ul li {
	margin: 0 !important;
	padding: 10px 18px !important;
	border: 1px solid var(--asds-line) !important;
	border-radius: 999px !important;
	color: var(--asds-ink) !important;
	background: var(--asds-paper) !important;
	font-size: 0.78rem !important;
	font-weight: 700 !important;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background-color 160ms var(--asds-ease), border-color 160ms var(--asds-ease), color 160ms var(--asds-ease);
}

body.asds .eael-filter-gallery-control ul li:hover,
body.asds .eael-filter-gallery-control ul li.active {
	color: var(--asds-ink) !important;
	border-color: var(--asds-accent) !important;
	background: var(--asds-accent) !important;
}

body.asds .eael-filter-gallery-container {
	gap: 22px;
}

body.asds .eael-filterable-gallery-item-wrap .eael-gallery-grid-item {
	position: relative;
	overflow: hidden;
	border: 1px solid var(--asds-line) !important;
	border-radius: var(--asds-radius) !important;
	background: var(--asds-paper) !important;
	box-shadow: var(--asds-shadow-sm) !important;
	transition: transform 240ms var(--asds-ease), box-shadow 240ms var(--asds-ease), border-color 240ms var(--asds-ease);
}

body.asds .eael-filterable-gallery-item-wrap .eael-gallery-grid-item:hover {
	border-color: rgba(var(--asds-accent-rgb), 0.7) !important;
	box-shadow: var(--asds-shadow) !important;
	transform: translateY(-5px);
}

body.asds .eael-gallery-grid-item .eael-magnific-link {
	display: block;
}

body.asds .eael-gallery-grid-item .gallery-item-thumbnail-wrap {
	width: 100% !important;
	overflow: hidden;
	aspect-ratio: 4 / 3;
}

body.asds .eael-gallery-grid-item .gallery-item-thumbnail-wrap img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 600ms var(--asds-ease);
}

body.asds .eael-gallery-grid-item:hover .gallery-item-thumbnail-wrap img {
	transform: scale(1.06);
}

body.asds .eael-gallery-grid-item .gallery-item-caption-wrap.caption-style-card {
	padding: 16px 18px !important;
	background: var(--asds-paper) !important;
	border-top: 1px solid var(--asds-line);
}

body.asds .eael-gallery-grid-item .gallery-item-caption-over > a,
body.asds .eael-gallery-grid-item .gallery-item-caption-over > .asds-caption-link {
	display: block;
	padding: 4px 0;
	text-decoration: none;
}

body.asds .eael-gallery-grid-item .fg-item-title {
	position: relative;
	margin: 0 !important;
	padding-left: 14px;
	color: var(--asds-ink) !important;
	font-size: 1.05rem !important;
	font-weight: 700 !important;
	line-height: 1.2;
}

body.asds .eael-gallery-grid-item .fg-item-title::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.15em;
	bottom: 0.15em;
	width: 3px;
	border-radius: 2px;
	background: var(--asds-accent);
}

body.asds .eael-gallery-grid-item .fg-item-content {
	color: var(--asds-muted) !important;
	font-size: 0.9rem;
}

body.asds .eael-gallery-grid-item .caption-style-card .gallery-item-caption-over {
	padding: 0 !important;
	background: transparent !important;
}

body.asds .eael-gallery-grid-item .caption-style-hoverer,
body.asds .eael-gallery-grid-item .caption-style-hoverer .gallery-item-caption-over {
	background: rgba(var(--asds-ink-rgb), 0.72) !important;
}

/* Column rhythm (Isotope reads these widths) */
body.asds .eael-filterable-gallery-item-wrap {
	padding: 0 !important;
}

body.asds .eael-filterable-gallery-item-wrap .eael-gallery-grid-item {
	margin: 0 11px 22px !important;
}

@media (min-width: 1200px) {
	body.asds .eael-filter-gallery-container .eael-filterable-gallery-item-wrap {
		width: 25% !important;
	}
}

@media (min-width: 768px) and (max-width: 1199px) {
	body.asds .eael-filter-gallery-container .eael-filterable-gallery-item-wrap {
		width: 33.333% !important;
	}
}

@media (max-width: 767px) {
	body.asds .eael-filter-gallery-container .eael-filterable-gallery-item-wrap {
		width: 50% !important;
	}

	body.asds .eael-filterable-gallery-item-wrap .eael-gallery-grid-item {
		margin: 0 6px 12px !important;
	}

	body.asds .eael-gallery-grid-item .gallery-item-caption-wrap.caption-style-card {
		padding: 10px 12px !important;
	}

	body.asds .eael-gallery-grid-item .fg-item-title {
		font-size: 0.92rem !important;
	}

	body.asds .eael-gallery-grid-item .gallery-item-caption-over > a,
	body.asds .eael-gallery-grid-item .gallery-item-caption-over > .asds-caption-link {
		padding: 5px 0;
	}
}

body.asds .eael-gallery-load-more {
	margin-top: 28px;
}

/* 9.8 Team */
body.asds .elementor-widget-elementskit-team .profile-image-card {
	overflow: hidden;
	background: var(--asds-paper);
}

body.asds .elementor-widget-elementskit-team .profile-image-card img {
	aspect-ratio: 1;
	object-fit: contain;
	padding: 24px;
	background: var(--asds-paper);
}

body.asds .elementor-widget-elementskit-team .profile-body .profile-title,
body.asds .elementor-widget-elementskit-team .profile-body .profile-title a {
	color: var(--asds-heading) !important;
	font-size: 1.3rem !important;
	font-weight: 700 !important;
	text-decoration: none;
}

body.asds .elementor-widget-elementskit-team .profile-designation {
	color: var(--asds-accent-text) !important;
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

body.asds .elementor-widget-elementskit-team .ekit-team-style-overlay_circle .hover-area,
body.asds .elementor-widget-elementskit-team .ekit-team-style-overlay .hover-area {
	background: rgba(var(--asds-ink-rgb), 0.86) !important;
}

body.asds .elementor-widget-elementskit-team .ekit-team-style-overlay_circle .hover-area .profile-title a,
body.asds .elementor-widget-elementskit-team .ekit-team-style-overlay_circle .hover-area .profile-designation {
	color: #fff !important;
}

body.asds .ekit-team-social-list a {
	display: inline-grid;
	place-items: center;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	color: var(--asds-ink) !important;
	background: var(--asds-accent) !important;
}

/* 9.9 Pricing
   ElementsKit paints a coloured "tag" pill behind the price with rules more
   specific than a theme can reach politely, which made the currency and unit
   almost invisible. The pill is removed and the price is rebuilt as a plain,
   legible line. Elementor also saves per-element text alignment on the card
   and its paddings, so the few contested declarations below are !important on
   purpose. */
body.asds .ekit-wid-con .elementskit-single-pricing {
	display: flex;
	flex-direction: column;
	position: relative;
	overflow: hidden;
	height: 100%;
	padding: 32px 26px 28px !important;
	text-align: left !important;
}

body.asds .ekit-wid-con .elementskit-single-pricing::before {
	content: "";
	position: absolute;
	inset: 0 0 auto 0;
	height: 6px;
	background: var(--asds-accent);
}

/* Equal-height cards: stretch the widget chain, pin the button to the base. */
body.asds .elementor-widget-elementskit-pricing,
body.asds .elementor-widget-elementskit-pricing > .elementor-widget-container,
body.asds .elementor-widget-elementskit-pricing .ekit-wid-con {
	display: flex;
	flex-direction: column;
	height: 100%;
}

body.asds .elementor-widget-elementskit-pricing .ekit-wid-con {
	width: 100%;
}

body.asds .elementor-widget-elementskit-pricing .elementskit-single-pricing {
	flex: 1 1 auto;
}

body.asds .elementskit-pricing-header .elementskit-pricing-title {
	margin: 0 0 14px !important;
	color: var(--asds-accent-text) !important;
	font-size: 0.86rem !important;
	font-weight: 700 !important;
	letter-spacing: 0.16em;
	text-transform: uppercase;
}

/* Remove the ElementsKit tag pill entirely. */
body.asds .ekit-wid-con .elementskit-single-pricing .elementskit-pricing-tag {
	display: none !important;
}

/* The "has-tag" spacing ElementsKit saved (margins/padding) is reset. */
body.asds .ekit-wid-con .elementskit-single-pricing .elementskit-pricing-price-wraper,
body.asds .ekit-wid-con .elementskit-single-pricing .elementskit-pricing-price-wraper.has-tag {
	margin: 0 0 16px !important;
	padding: 0 0 16px !important;
	border-bottom: 1px solid var(--asds-line);
}

body.asds .ekit-wid-con .elementskit-single-pricing .elementskit-pricing-price {
	display: inline-flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 2px 7px;
	max-width: 100%;
	color: var(--asds-ink) !important;
	font-size: clamp(2rem, 6.4vw, 2.7rem) !important;
	font-weight: 800 !important;
	line-height: 1.05 !important;
	letter-spacing: 0.005em !important;
}

body.asds .ekit-wid-con .elementskit-single-pricing .elementskit-pricing-price .currency,
body.asds .ekit-wid-con .elementskit-single-pricing .elementskit-pricing-price .period {
	position: static !important;
	top: auto !important;
	right: auto !important;
	bottom: auto !important;
	left: auto !important;
	display: inline-block !important;
	vertical-align: baseline !important;
	color: var(--asds-muted) !important;
	font-family: var(--asds-font-body) !important;
	font-size: max(0.72rem, 0.36em) !important;
	font-weight: 700 !important;
	letter-spacing: 0.08em;
	line-height: 1.6 !important;
	text-transform: uppercase;
}

body.asds .ekit-wid-con .elementskit-single-pricing .elementskit-pricing-price .period::before {
	content: "/ ";
}

body.asds .ekit-wid-con .elementskit-single-pricing .elementskit-pricing-content {
	margin: 0 0 22px !important;
}

body.asds .elementskit-pricing-lists {
	margin: 0 0 22px;
	padding: 0;
	list-style: none;
}

body.asds .ekit-wid-con .elementskit-single-pricing .elementskit-pricing-lists > li {
	position: relative;
	padding: 9px 0 9px 28px !important;
	border-bottom: 1px dashed var(--asds-line);
	color: var(--asds-text) !important;
	text-align: left !important;
	font-size: 0.94rem;
	line-height: 1.45;
}

body.asds .ekit-wid-con .elementskit-single-pricing .elementskit-pricing-lists > li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 50%;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	transform: translateY(-50%);
	background: rgba(var(--asds-accent-rgb), 0.2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239c6000' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 11px no-repeat;
}

body.asds .ekit-wid-con .elementskit-single-pricing .elementskit-pricing-btn-wraper {
	margin-top: auto !important;
}

body.asds .ekit-wid-con .elementskit-single-pricing .elementskit-pricing-btn {
	display: inline-flex !important;
	width: 100% !important;
}

/* The builder saved a white frame (background, border, radius, padding) on
   the widget wrapper, which drew a second card around the plan card and
   squeezed the copy. The plan card is the only frame. */
body.asds .elementor-widget-elementskit-pricing > .elementor-widget-container {
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
}

/* 4 plans across on wide screens, 2×2 on tablets, 1-up on phones. */
@media (max-width: 1100px) {
	body.asds .e-con:has(> .e-con > .elementor-widget-elementskit-pricing) {
		flex-wrap: wrap !important;
		row-gap: 22px !important;
	}

	body.asds .e-con:has(> .e-con > .elementor-widget-elementskit-pricing) > .e-con {
		width: calc(50% - 5px) !important;
		flex: 0 0 auto !important;
	}
}

@media (max-width: 640px) {
	body.asds .e-con:has(> .e-con > .elementor-widget-elementskit-pricing) > .e-con {
		width: 100% !important;
	}
}

/* 9.10 Latest posts list (ElementsKit post list) */
body.asds .ekit-post-list-wrapper {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 14px;
	margin: 0;
	padding: 0;
}

body.asds .ekit-post-list-wrapper .elementor-icon-list-item {
	margin: 0 !important;
	padding: 0 !important;
}

body.asds .ekit-post-list-wrapper .elementor-icon-list-item > a {
	display: flex;
	align-items: center;
	gap: 14px;
	min-height: 64px;
	padding: 14px 18px;
	border: 1px solid var(--asds-line);
	border-radius: var(--asds-radius-sm);
	background: var(--asds-paper);
	color: var(--asds-ink) !important;
	text-decoration: none;
	transition: border-color 160ms var(--asds-ease), transform 160ms var(--asds-ease), box-shadow 160ms var(--asds-ease);
}

body.asds .ekit-post-list-wrapper .elementor-icon-list-item > a:hover {
	border-color: rgba(var(--asds-accent-rgb), 0.7);
	box-shadow: var(--asds-shadow-sm);
	transform: translateX(4px);
}

body.asds .ekit-post-list-wrapper .elementor-icon-list-icon {
	display: grid;
	place-items: center;
	width: 34px;
	height: 34px;
	flex: none;
	border-radius: var(--asds-radius-sm);
	background: rgba(var(--asds-accent-rgb), 0.16);
}

body.asds .ekit-post-list-wrapper .elementor-icon-list-icon i {
	font-size: 8px !important;
	color: var(--asds-accent-deep) !important;
}

body.asds .ekit-post-list-wrapper .elementor-icon-list-text {
	color: var(--asds-ink) !important;
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.35;
}

/* 9.11 FAQ accordion */
body.asds .elementor-accordion .elementor-accordion-item {
	margin-bottom: 10px;
	border: 1px solid var(--asds-line) !important;
	border-radius: var(--asds-radius-sm);
	background: var(--asds-paper);
	overflow: hidden;
	transition: border-color 160ms var(--asds-ease), box-shadow 160ms var(--asds-ease);
}

body.asds .elementor-accordion .elementor-accordion-item:has(.elementor-active) {
	border-color: rgba(var(--asds-accent-rgb), 0.7) !important;
	box-shadow: var(--asds-shadow-sm);
}

body.asds .elementor-accordion .elementor-tab-title {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 18px 20px !important;
	border: 0 !important;
	color: var(--asds-ink) !important;
	background: transparent !important;
	font-size: 1.12rem !important;
	font-weight: 700 !important;
	line-height: 1.3;
}

body.asds .elementor-accordion .elementor-tab-title a,
body.asds .elementor-accordion .elementor-accordion-title {
	color: inherit !important;
	font-family: var(--asds-font-display) !important;
	font-size: 1.15rem;
	font-weight: 700;
	text-decoration: none;
}

/* WCAG 2.2 target size: the title link is a one-line block (~22px). Equal
   padding and negative margin give it a 24px+ hit area without moving it. */
body.asds .elementor-accordion .elementor-accordion-title {
	padding-block: 2px;
	margin-block: -2px;
}

/* Same for Astra's desktop submenu arrow toggles (27 x 14px). */
body.asds .main-header-menu .menu-link > .dropdown-menu-toggle {
	padding-block: 5px;
	margin-block: -5px;
}

body.asds .elementor-accordion .elementor-accordion-icon {
	order: 2;
	display: grid;
	place-items: center;
	width: 30px;
	height: 30px;
	flex: none;
	margin-left: auto;
	border-radius: 50%;
	background: rgba(var(--asds-accent-rgb), 0.16);
	color: var(--asds-accent-deep) !important;
	font-size: 0.8rem;
}

body.asds .elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon {
	background: var(--asds-accent);
	color: var(--asds-ink) !important;
}

body.asds .elementor-accordion .elementor-tab-content {
	padding: 0 20px 20px !important;
	border: 0 !important;
	color: var(--asds-text) !important;
	font-size: 1rem;
	line-height: 1.7;
}

/* 9.12 Image carousels (Swiper) */
body.asds .elementor-image-carousel-wrapper .swiper-slide img {
	border-radius: var(--asds-radius);
}

body.asds .elementor-swiper-button {
	width: 46px;
	height: 46px;
	display: grid;
	place-items: center;
	border-radius: 50%;
	color: var(--asds-ink) !important;
	background: rgba(255, 255, 255, 0.92);
	box-shadow: var(--asds-shadow-sm);
	font-size: 18px !important;
}

body.asds .swiper-pagination-bullet {
	width: 12px;
	height: 12px;
	margin: 0 6px !important;
	background: var(--asds-ink);
	opacity: 0.3;
}

body.asds .swiper-pagination-bullet-active {
	background: var(--asds-accent);
	opacity: 1;
}

/* 9.13 Before / after comparison, maps */
body.asds .elementor-widget-elementskit-image-comparison .ekit-wid-con,
body.asds .elementor-widget-google_maps iframe,
body.asds .elementor-widget-google_maps .elementor-custom-embed {
	overflow: hidden;
	border-radius: var(--asds-radius);
	box-shadow: var(--asds-shadow-sm);
}

body.asds .elementor-widget-google_maps iframe {
	min-height: 360px;
	filter: grayscale(0.2) contrast(1.05);
}

/* 9.14 Standalone images */
body.asds .elementor-widget-image img {
	border-radius: var(--asds-radius);
}

body.asds .asds-hero .elementor-widget-image img,
body.asds .elementor-widget-image img[src$=".svg"],
body.asds .elementor-widget-image img[src$=".png"] {
	border-radius: 0;
}

/* 9.15 ElementsKit icon boxes */
body.asds .elementor-widget-elementskit-icon-box .elementskit-infobox {
	padding: 30px 26px !important;
	text-align: left;
}

body.asds .elementskit-infobox .elementskit-box-header .elementskit-info-box-icon {
	display: grid;
	place-items: center;
	width: 60px;
	height: 60px;
	margin-bottom: 18px;
	border-radius: var(--asds-radius-sm);
	background: rgba(var(--asds-accent-rgb), 0.16) !important;
	color: var(--asds-accent-deep) !important;
	font-size: 26px;
}

body.asds .elementskit-infobox .elementskit-info-box-title {
	color: var(--asds-heading) !important;
	font-size: 1.3rem !important;
	font-weight: 700 !important;
}

/* 9.16 Embedded calculators (Elementor HTML widgets)
   The Tools pages embed self-contained calculators. The calculator markup is
   plain HTML that ships without its own stylesheet, so the design system
   dresses it here: one card, readable labels, matching input and button. */
body.asds .elementor-widget-html #calculator {
	display: grid;
	gap: 6px;
	max-width: 720px;
	margin: 0 auto clamp(32px, 5vw, 56px);
	padding: clamp(22px, 4vw, 40px);
	border: 1px solid var(--asds-line);
	border-radius: var(--asds-radius-lg);
	background: var(--asds-paper);
	box-shadow: var(--asds-shadow-sm);
	text-align: left;
}

body.asds .elementor-widget-html #calculator h1 {
	margin: 0 0 10px;
	padding-bottom: 16px;
	border-bottom: 3px solid var(--asds-accent);
	font-size: clamp(1.7rem, 3vw, 2.3rem);
	text-align: left;
	text-transform: uppercase;
}

body.asds .elementor-widget-html #calculator label {
	margin-top: 12px;
	color: var(--asds-ink);
	font-size: 0.88rem;
	font-weight: 700;
	letter-spacing: 0.02em;
	text-align: left;
}

body.asds .elementor-widget-html #calculator button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 52px;
	margin-top: 14px;
	padding: 12px 26px;
	border: 2px solid var(--asds-accent);
	border-radius: var(--asds-radius-sm);
	color: var(--asds-ink);
	background: var(--asds-accent);
	box-shadow: 0 6px 18px rgba(var(--asds-accent-rgb), 0.24);
	font-size: 0.82rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	cursor: pointer;
	transition: transform 180ms var(--asds-ease), box-shadow 180ms var(--asds-ease), background-color 180ms var(--asds-ease);
}

body.asds .elementor-widget-html #calculator button:hover {
	background: var(--asds-accent-hover);
	box-shadow: 0 12px 28px rgba(var(--asds-accent-rgb), 0.36);
	transform: translateY(-2px);
}

body.asds .elementor-widget-html #calculator #result {
	margin-top: 18px;
	color: var(--asds-ink);
	font-size: 1rem;
	line-height: 1.7;
	text-align: left;
}

body.asds .elementor-widget-html #calculator #materialsBreakdownTable:not(:empty) {
	margin-top: 18px;
	overflow-x: auto;
}

body.asds .elementor-widget-html #calculator table {
	width: 100%;
	border-collapse: collapse;
	border: 1px solid var(--asds-line);
	font-size: 0.94rem;
}

body.asds .elementor-widget-html #calculator th,
body.asds .elementor-widget-html #calculator td {
	padding: 10px 12px;
	border: 1px solid var(--asds-line);
	text-align: left;
	vertical-align: top;
}

body.asds .elementor-widget-html #calculator tr:first-child th,
body.asds .elementor-widget-html #calculator thead th {
	color: #fff;
	background: var(--asds-ink);
}

/* Charts render only after the first calculation (Chart.js adds the size
   attributes then); until that moment the empty canvases would leave a tall
   blank gap, so they stay hidden. */
body.asds .elementor-widget-html #calculator canvas {
	max-width: 100% !important;
	margin-top: 16px;
}

body.asds .elementor-widget-html #calculator canvas:not([width]) {
	display: none;
}

/* 10. Forms
   ------------------------------------------------------------------------ */
body.asds :where(input:not([type="submit"]):not([type="button"]):not([type="checkbox"]):not([type="radio"]), textarea, select),
body.asds .wpforms-container input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
body.asds .wpforms-container textarea,
body.asds .wpforms-container select {
	width: 100%;
	min-height: 50px;
	padding: 11px 14px !important;
	border: 1px solid #c9d2da !important;
	border-radius: var(--asds-radius-sm) !important;
	color: var(--asds-ink) !important;
	background: var(--asds-paper) !important;
	box-shadow: 0 1px 2px rgba(var(--asds-ink-rgb), 0.04);
	font-size: 1rem !important;
	line-height: 1.4;
	transition: border-color 160ms var(--asds-ease), box-shadow 160ms var(--asds-ease);
}

body.asds textarea,
body.asds .wpforms-container textarea {
	min-height: 140px;
	resize: vertical;
}

body.asds input:is([type="checkbox"], [type="radio"]) {
	width: 18px !important;
	height: 18px;
	min-height: 0;
	margin: 0 8px 0 0;
	vertical-align: -3px;
	accent-color: var(--asds-accent-text);
	cursor: pointer;
}

body.asds :where(input, textarea, select):focus,
body.asds .wpforms-container input:focus,
body.asds .wpforms-container textarea:focus,
body.asds .wpforms-container select:focus {
	border-color: var(--asds-accent-text) !important;
	box-shadow: 0 0 0 4px rgba(var(--asds-accent-rgb), 0.22) !important;
	outline: none !important;
}

body.asds .wpforms-container {
	max-width: 720px;
}

body.asds .wpforms-container .wpforms-field {
	padding: 8px 0 !important;
}

/* WPForms ships its grid in a stylesheet this site does not load, so the
   name row is rebuilt here: two columns when there is room, stacked when not. */
body.asds .wpforms-container .wpforms-field-row {
	display: flex;
	flex-wrap: wrap;
	/* flex-start, not the default stretch: each column sizes to its own
	   input + sublabel instead of overflowing a shared height. */
	align-items: flex-start;
	gap: 14px;
	height: auto !important;
	max-width: 100%;
}

body.asds .wpforms-container .wpforms-field-row > .wpforms-field-row-block {
	flex: 1 1 200px;
	width: auto !important;
	min-width: 0;
	height: auto !important;
	padding: 0 !important;
}

body.asds .wpforms-container .wpforms-field-row input {
	height: auto !important;
}

body.asds .wpforms-container .wpforms-field-sublabel {
	display: block;
	margin-top: 5px;
}

body.asds .wpforms-container .wpforms-field-label {
	margin-bottom: 7px !important;
	color: var(--asds-heading) !important;
	font-size: 0.86rem !important;
	font-weight: 700 !important;
	letter-spacing: 0.02em;
}

body.asds .wpforms-container .wpforms-field-sublabel {
	color: var(--asds-fg-muted) !important;
	font-size: 0.78rem !important;
}

body.asds .wpforms-container .wpforms-required-label {
	color: var(--asds-accent-text) !important;
}

body.asds .wpforms-container .wpforms-submit-container {
	padding-top: 12px !important;
}

body.asds .wpforms-container .wpforms-submit {
	width: 100%;
}

body.asds .wpforms-container .wpforms-confirmation-container-full {
	border: 1px solid #b7e4c7;
	border-radius: var(--asds-radius-sm);
	background: #edf9f1;
	color: #1b4332;
}

body.asds .asds-dark .wpforms-container .wpforms-field-label {
	color: #fff !important;
}

/* Same :not() chain as the base rule so dark sections actually win. */
body.asds .asds-dark .wpforms-container input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
body.asds .asds-dark .wpforms-container textarea,
body.asds .asds-dark .wpforms-container select {
	border-color: rgba(255, 255, 255, 0.18) !important;
	background: rgba(255, 255, 255, 0.06) !important;
	color: #fff !important;
}

body.asds .asds-dark .wpforms-container ::placeholder {
	color: rgba(255, 255, 255, 0.5);
}

/* Search forms outside the header (404, search results, widgets) reuse
   Astra's slide-search markup: a label wrapping the field plus an icon button,
   followed by a real submit. Field grows, submit keeps its size, the duplicate
   icon button is hidden (or tucked inside the field where :has is missing). */
body.asds .search-form:not(.ast-search-menu-icon *) {
	display: flex;
	align-items: stretch;
	gap: 8px;
	width: 100%;
	max-width: 560px;
	margin-inline: auto;
}

body.asds .search-form:not(.ast-search-menu-icon *) > label {
	position: relative;
	flex: 1 1 auto;
	min-width: 0;
	margin: 0;
}

body.asds .search-form:not(.ast-search-menu-icon *) .search-field {
	width: 100%;
	height: 100%;
}

/* Astra pins this submit inside the field (absolute, 45px wide) and a
   site-wide snippet adds width/margins to every input and button. */
body.asds .search-form:not(.ast-search-menu-icon *) > :is(input[type="submit"], button) {
	position: static !important;
	flex: none;
	width: auto !important;
	max-width: none !important;
	margin: 0 !important;
}

body.asds .search-form:not(.ast-search-menu-icon *) .search-field {
	margin: 0 !important;
}

body.asds .search-form:not(.ast-search-menu-icon *) > label .ast-search-submit {
	position: absolute;
	top: 50%;
	right: 12px;
	width: auto;
	height: auto;
	padding: 0;
	border: 0;
	color: var(--asds-muted);
	background: none;
	transform: translateY(-50%);
}

body.asds .search-form:not(.ast-search-menu-icon *):has(> .search-submit) > label .ast-search-submit {
	display: none;
}

/* 11. Blog & content pages
   ------------------------------------------------------------------------ */
body.asds.ast-separate-container .ast-container,
body.asds .ast-container {
	max-width: calc(var(--asds-container) + 2 * var(--asds-gutter));
	padding-inline: var(--asds-gutter);
}

body.asds.ast-separate-container #primary,
body.asds.ast-separate-container #secondary {
	padding-block: clamp(36px, 5vw, 72px);
}

body.asds.ast-separate-container .site-content {
	background: var(--asds-surface);
}

/* Archive header */
body.asds .ast-archive-description {
	margin-bottom: 32px;
	padding: 0;
	border: 0;
	background: transparent;
	box-shadow: none;
}

body.asds .ast-archive-description .ast-archive-title,
body.asds .page-title.ast-archive-title {
	position: relative;
	padding-bottom: 14px;
	font-size: clamp(2rem, 4vw, 3rem);
	text-transform: uppercase;
}

body.asds .ast-archive-description .ast-archive-title::after,
body.asds .page-title.ast-archive-title::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 72px;
	height: 4px;
	border-radius: 2px;
	background: var(--asds-accent);
}

/* Post grid — a real grid driven by Astra's own ast-grid-N column setting,
   so the Customizer choice keeps working and cards stay equal height. */
body.asds .site-main > .ast-row {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 26px;
	/* Astra's blog-layout-4 dynamic CSS applies a negative row margin at a
	   higher specificity than a child theme can reach without this. */
	margin-inline: 0 !important;
	margin-block: 0;
}

body.asds .ast-grid-1 .site-main > .ast-row { grid-template-columns: minmax(0, 1fr); }
body.asds .ast-grid-2 .site-main > .ast-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
body.asds .ast-grid-3 .site-main > .ast-row { grid-template-columns: repeat(3, minmax(0, 1fr)); }
body.asds .ast-grid-4 .site-main > .ast-row { grid-template-columns: repeat(4, minmax(0, 1fr)); }

@media (max-width: 1024px) {
	body.asds .ast-grid-3 .site-main > .ast-row,
	body.asds .ast-grid-4 .site-main > .ast-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 767px) {
	body.asds .site-main > .ast-row,
	body.asds .ast-grid-2 .site-main > .ast-row,
	body.asds .ast-grid-3 .site-main > .ast-row,
	body.asds .ast-grid-4 .site-main > .ast-row { grid-template-columns: minmax(0, 1fr); }
}

body.asds .ast-article-post {
	position: relative;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	width: auto !important;
	margin: 0 !important;
	padding: 0 !important;
	background: var(--asds-paper) !important;
	text-align: left;
}

body.asds .ast-article-post :where(.entry-title, .entry-meta, .ast-excerpt-container, .read-more, .entry-header) {
	text-align: left;
}

body.asds .ast-article-post .ast-article-inner,
body.asds .ast-article-post .post-content {
	display: flex;
	flex-direction: column;
	flex: 1;
	height: 100%;
}

body.asds .ast-article-post .ast-blog-featured-section {
	order: -1;
	margin: 0 !important;
	overflow: hidden;
}

body.asds .ast-article-post .ast-blog-featured-section:empty {
	display: none;
}

/* Search results use Astra's side-image layout (two half-width columns);
   inside a card grid both parts must span the card. */
body.asds .site-main .ast-article-post .ast-article-inner {
	flex-direction: column;
}

body.asds .site-main .ast-article-post :where(.ast-blog-featured-section, .post-content) {
	width: 100% !important;
	max-width: 100%;
	float: none;
}

/* Posts without a featured image get a blueprint panel, so every card in a
   row starts with the same 16:9 media area. Purely decorative. */
body.asds .site-main .ast-article-post .ast-no-thumb .ast-blog-featured-section {
	display: block;
	position: relative;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	background-color: var(--asds-ink);
	background-image:
		linear-gradient(rgba(255, 255, 255, 0.06) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255, 255, 255, 0.06) 1px, transparent 1px);
	background-size: 28px 28px;
}

body.asds .site-main .ast-article-post .ast-no-thumb .ast-blog-featured-section::before {
	content: "";
	position: absolute;
	inset: auto 0 0 0;
	height: 6px;
	background: repeating-linear-gradient(135deg, var(--asds-accent) 0 14px, var(--asds-ink) 14px 28px);
}

body.asds .site-main .ast-article-post .ast-no-thumb .ast-blog-featured-section::after {
	content: "";
	position: absolute;
	inset: 0;
	width: 64px;
	height: 64px;
	margin: auto;
	background: var(--asds-accent);
	opacity: 0.9;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 10.5 12 3l9 7.5'/%3E%3Cpath d='M5 9v12h14V9'/%3E%3Cpath d='M9.5 21v-6h5v6'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 10.5 12 3l9 7.5'/%3E%3Cpath d='M5 9v12h14V9'/%3E%3Cpath d='M9.5 21v-6h5v6'/%3E%3C/svg%3E") center / contain no-repeat;
}

body.asds .ast-article-post .post-thumb-img-content {
	margin: 0;
	overflow: hidden;
}

body.asds .ast-article-post .post-thumb-img-content img {
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	transition: transform 600ms var(--asds-ease);
}

body.asds .ast-article-post:hover .post-thumb-img-content img {
	transform: scale(1.05);
}

body.asds .ast-article-post .entry-title,
body.asds .ast-article-post .entry-header,
body.asds .ast-article-post .ast-excerpt-container,
body.asds .ast-article-post .read-more {
	padding-inline: 24px;
}

body.asds .ast-article-post .entry-header.ast-blog-meta-container {
	order: -1;
	margin: 0;
	padding-top: 20px;
}

body.asds .ast-article-post .entry-title {
	margin: 12px 0 10px;
	font-size: 1.45rem;
	line-height: 1.15;
}

body.asds .ast-article-post .entry-title a {
	color: var(--asds-ink);
	text-decoration: none;
}

body.asds .ast-article-post .entry-title a:hover {
	color: var(--asds-accent-text);
}

body.asds .ast-article-post .ast-excerpt-container {
	flex: 1;
	margin-bottom: 14px;
	color: var(--asds-text);
	font-size: 0.98rem;
}

body.asds .ast-article-post .ast-excerpt-container p {
	margin: 0;
}

body.asds .ast-article-post .read-more {
	margin: 0 0 24px;
}

body.asds .ast-article-post .entry-content:empty {
	display: none;
}

body.asds .entry-meta,
body.asds .entry-meta * {
	color: var(--asds-muted);
	font-size: 0.78rem;
	font-weight: 600;
	letter-spacing: 0.05em;
	text-transform: uppercase;
}

body.asds .entry-meta a {
	display: inline-block;
	padding: 5px 0;
}

body.asds .entry-meta a:hover {
	color: var(--asds-accent-text);
}

body.asds .entry-meta .cat-links a,
body.asds .entry-meta .ast-terms-link a {
	display: inline-block;
	padding: 5px 10px;
	border-radius: 999px;
	color: var(--asds-ink);
	background: rgba(var(--asds-accent-rgb), 0.18);
	text-decoration: none;
}

body.asds .read-more a,
body.asds .ast-read-more-container a {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding-top: 6px;
	padding-bottom: 4px;
	color: var(--asds-ink);
	font-size: 0.78rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	text-decoration: none;
	border-bottom: 2px solid var(--asds-accent);
	transition: color 160ms var(--asds-ease), gap 160ms var(--asds-ease);
}

body.asds .read-more a:hover {
	color: var(--asds-accent-text);
	gap: 10px;
}

/* Pagination */
body.asds .ast-pagination,
body.asds .pagination {
	margin-top: 12px;
}

/* One centred row: Astra floats "Next" to the far edge, and a grid box
   stacked its label and arrow on two lines. */
body.asds .pagination .nav-links,
body.asds .ast-pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 8px;
}

body.asds .pagination .page-numbers,
body.asds .ast-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	float: none !important;
	min-width: 46px;
	height: 46px;
	padding: 0 14px;
	margin: 0;
	border: 1px solid var(--asds-line);
	border-radius: var(--asds-radius-sm);
	color: var(--asds-ink);
	background: var(--asds-paper);
	font-weight: 700;
	text-decoration: none;
	transition: background-color 160ms var(--asds-ease), border-color 160ms var(--asds-ease);
}

body.asds :is(.pagination, .ast-pagination) a.page-numbers:hover,
body.asds :is(.pagination, .ast-pagination) .page-numbers.current {
	border-color: var(--asds-accent);
	background: var(--asds-accent);
}

body.asds :is(.pagination, .ast-pagination) .page-numbers.dots {
	min-width: 0;
	padding: 0 4px;
	border-color: transparent;
	background: transparent;
}

/* Single post */
body.asds.single .ast-article-single,
body.asds.page.ast-separate-container .ast-article-single {
	padding: clamp(24px, 5vw, 56px) !important;
	border: 1px solid var(--asds-line);
	border-radius: var(--asds-radius-lg);
	background: var(--asds-paper) !important;
	box-shadow: var(--asds-shadow-sm);
}

body.asds.single .ast-article-single .entry-header {
	margin-bottom: 28px;
}

body.asds.single .ast-article-single .entry-header .post-thumb-img-content {
	margin: 0 0 28px;
	overflow: hidden;
	border-radius: var(--asds-radius);
}

body.asds.single .ast-article-single .entry-header .post-thumb-img-content img {
	width: 100%;
	max-height: 560px;
	object-fit: cover;
}

body.asds.single .entry-title,
body.asds.page.ast-separate-container .entry-title {
	margin-top: 0;
	margin-bottom: 14px;
	font-size: clamp(2rem, 4.2vw, 3.3rem);
	line-height: 1.05;
}

body.asds .asds-breadcrumbs {
	margin-bottom: 18px;
	color: var(--asds-muted);
	font-size: 0.82rem;
	font-weight: 600;
	text-align: left;
}

body.asds .asds-breadcrumbs p {
	margin: 0;
}

body.asds .asds-breadcrumbs a {
	display: inline-block;
	padding: 5px 0;
	color: var(--asds-muted);
	text-decoration: none;
}

body.asds .asds-breadcrumbs a:hover {
	color: var(--asds-accent-text);
}

body.asds .asds-breadcrumbs .separator {
	margin: 0 8px;
	opacity: 0.6;
}

body.asds .asds-breadcrumbs .last {
	color: var(--asds-ink);
}

/* Elementor content placed inside an Astra article card lines up with the
   card's title instead of adding the section gutter a second time. */
body.asds.ast-separate-container .ast-article-single:has(.entry-header .entry-title) .entry-content > .elementor > .e-con.e-parent {
	--padding-left: 0px !important;
	--padding-right: 0px !important;
}

body.asds.ast-separate-container .ast-article-single:has(.entry-header .entry-title) .entry-content > .elementor > .e-con.e-con-boxed.e-parent > .e-con-inner {
	padding-inline: 0;
}

body.asds.single .entry-content,
body.asds.page.ast-separate-container:not(.elementor-page) .entry-content {
	max-width: 760px;
	margin-inline: auto;
	font-size: 1.08rem;
	line-height: 1.75;
}

/* This site inherits text-align:center from <body>, and the existing Custom CSS
   only patched p/li/h3/h4 — headings and tables were left centred. Article copy
   reads left-aligned; Elementor-built pages keep their own art direction, and
   blocks carrying an explicit alignment class still win (a rule on the element
   beats an inherited value). */
body.asds:not(.elementor-page) .entry-content,
body.asds.single .entry-header,
body.asds .ast-article-post,
body.asds .ast-related-post {
	text-align: left;
}

/* Breadcrumbs, title and meta share the reading column of the text below;
   the featured image keeps the full card width. Elementor-built pages keep
   their own layout. */
body.asds.single .ast-article-single :where(.asds-breadcrumbs, .entry-title, .entry-meta),
body.asds.page.ast-separate-container:not(.elementor-page) .ast-article-single :where(.asds-breadcrumbs, .entry-title, .entry-meta) {
	max-width: 760px;
	margin-inline: auto;
}

body.asds .entry-content > :where(p, ul, ol, table, figure, blockquote, pre) {
	margin-bottom: 1.45em;
}

body.asds .entry-content > :where(h2, h3, h4) {
	margin-top: 1.7em;
	margin-bottom: 0.55em;
	scroll-margin-top: calc(var(--asds-header-h) + 20px);
}

body.asds .entry-content h2 {
	font-size: clamp(1.7rem, 2.6vw, 2.2rem);
}

body.asds .entry-content h3 {
	font-size: clamp(1.35rem, 2vw, 1.65rem);
}

body.asds .entry-content a:not(.wp-block-button__link) {
	color: var(--asds-accent-text);
	font-weight: 600;
	text-decoration: underline;
	text-decoration-color: rgba(var(--asds-accent-rgb), 0.5);
}

body.asds .entry-content a:not(.wp-block-button__link):hover {
	color: var(--asds-ink);
	text-decoration-color: currentColor;
}

body.asds .entry-content img {
	border-radius: var(--asds-radius);
}

body.asds .entry-content figure figcaption {
	margin-top: 8px;
	color: var(--asds-muted);
	font-size: 0.86rem;
	text-align: center;
}

body.asds .entry-content li + li {
	margin-top: 0.4em;
}

body.asds blockquote,
body.asds .wp-block-quote {
	margin: 2rem 0;
	padding: 1.4rem 1.6rem;
	border: 0;
	border-left: 5px solid var(--asds-accent);
	border-radius: 0 var(--asds-radius-sm) var(--asds-radius-sm) 0;
	color: var(--asds-ink);
	background: var(--asds-surface);
	font-size: 1.1em;
}

body.asds blockquote p:last-child {
	margin-bottom: 0;
}

body.asds .entry-content table,
body.asds .wp-block-table table {
	width: 100%;
	border-collapse: collapse;
	border: 1px solid var(--asds-line);
	border-radius: var(--asds-radius-sm);
	overflow: hidden;
	font-size: 0.96rem;
}

body.asds .entry-content th,
body.asds .entry-content td {
	padding: 12px 14px;
	border: 1px solid var(--asds-line);
	text-align: left;
	vertical-align: top;
}

body.asds .entry-content thead th,
body.asds .entry-content tr:first-child th {
	color: #fff;
	background: var(--asds-ink);
	font-family: var(--asds-font-display);
	font-size: 1.02rem;
	font-weight: 700;
	letter-spacing: 0.03em;
}

body.asds .entry-content tbody tr:nth-child(even) {
	background: var(--asds-surface);
}

body.asds .wp-block-table,
body.asds .entry-content .table-wrap {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

body.asds .entry-content pre,
body.asds .entry-content code {
	border-radius: var(--asds-radius-sm);
	background: var(--asds-surface);
	font-size: 0.92em;
}

body.asds .entry-content pre {
	padding: 16px;
	overflow-x: auto;
}

/* Easy Table of Contents */
body.asds #ez-toc-container,
body.asds .ez-toc-v2_0_58_1 #ez-toc-container {
	margin: 1.5rem 0 2rem;
	padding: 18px 22px;
	border: 1px solid var(--asds-line);
	border-left: 5px solid var(--asds-accent);
	border-radius: var(--asds-radius-sm);
	background: var(--asds-surface);
	box-shadow: none;
	font-size: 0.96rem;
}

body.asds #ez-toc-container .ez-toc-title {
	color: var(--asds-ink);
	font-family: var(--asds-font-display);
	font-size: 1.15rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

body.asds #ez-toc-container a {
	color: var(--asds-text);
	text-decoration: none;
}

body.asds #ez-toc-container a:hover {
	color: var(--asds-accent-text);
}

/* Tags, post navigation, related, comments */
body.asds .entry-footer,
body.asds .ast-single-post .tags-links {
	margin-top: 32px;
}

body.asds .tags-links a,
body.asds .tagcloud a {
	display: inline-block;
	margin: 0 6px 6px 0;
	padding: 5px 12px;
	border: 1px solid var(--asds-line);
	border-radius: 999px;
	color: var(--asds-text);
	background: var(--asds-paper);
	font-size: 0.8rem !important;
	font-weight: 600;
	text-decoration: none;
}

body.asds .tags-links a:hover,
body.asds .tagcloud a:hover {
	border-color: var(--asds-accent);
	background: rgba(var(--asds-accent-rgb), 0.16);
	color: var(--asds-ink);
}

body.asds .post-navigation {
	margin: 32px 0;
	padding: 0;
	border: 0;
}

body.asds .post-navigation .nav-links {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
}

body.asds .post-navigation .nav-links > div {
	width: auto;
	float: none;
}

body.asds .post-navigation .nav-links a {
	display: flex;
	align-items: center;
	gap: 10px;
	min-height: 64px;
	padding: 16px 20px;
	border: 1px solid var(--asds-line);
	border-radius: var(--asds-radius-sm);
	background: var(--asds-paper);
	color: var(--asds-ink);
	font-weight: 700;
	text-decoration: none;
	transition: border-color 160ms var(--asds-ease), transform 160ms var(--asds-ease);
}

body.asds .post-navigation .nav-next a {
	justify-content: flex-end;
	text-align: right;
}

body.asds .post-navigation .nav-links a:hover {
	border-color: var(--asds-accent);
	transform: translateY(-2px);
}

body.asds .ast-single-related-posts-container {
	margin-top: 8px;
	padding: 0;
	border: 0;
	background: transparent;
}

body.asds .ast-related-posts-title {
	position: relative;
	margin-bottom: 24px;
	padding-bottom: 12px;
	font-size: 1.9rem;
	text-transform: uppercase;
}

body.asds .ast-related-posts-title::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 60px;
	height: 4px;
	border-radius: 2px;
	background: var(--asds-accent);
}

body.asds .ast-related-posts-wrapper {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 22px;
}

body.asds .ast-related-post {
	margin: 0 !important;
	overflow: hidden;
	background: var(--asds-paper);
}

body.asds .ast-related-post .post-thumb-img-content a,
body.asds .ast-article-post .post-thumb-img-content a {
	display: block;
}

body.asds .ast-related-post .post-thumb-img-content img {
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

body.asds .ast-related-post .ast-related-post-content {
	padding: 0;
}

body.asds .ast-related-post .ast-related-post-content > :not(.ast-related-post-featured-section) {
	padding-inline: 20px;
}

body.asds .ast-related-post .ast-related-post-title {
	margin: 14px 0 8px;
	font-size: 1.15rem;
	line-height: 1.2;
}

body.asds .ast-related-post .ast-related-post-title a {
	color: var(--asds-ink);
	text-decoration: none;
}

body.asds .ast-related-post .ast-related-post-cta,
body.asds .ast-related-post .ast-related-post-excerpt {
	padding-bottom: 18px;
}

body.asds .comments-area {
	margin-top: 32px;
	padding: clamp(24px, 4vw, 40px);
	border: 1px solid var(--asds-line);
	border-radius: var(--asds-radius-lg);
	background: var(--asds-paper);
}

body.asds .comments-title,
body.asds .comment-reply-title {
	font-size: 1.6rem;
	text-transform: uppercase;
}

body.asds .ast-comment-list .ast-comment {
	padding: 20px 0;
	border-bottom: 1px solid var(--asds-line);
}

body.asds .ast-comment-avatar-wrap img {
	border-radius: 50%;
}

body.asds .comment-form label {
	font-weight: 700;
	font-size: 0.86rem;
}

/* Comment form: the card above already pads, so Astra's own 4em/7em padding
   on #respond (and the centred text it inherits) is dropped; the three
   name/email/website fields become a grid that stacks on phones. */
body.asds .comments-area,
body.asds .comment-respond {
	text-align: left;
}

body.asds .comments-area .comment-respond {
	padding: 0 !important;
}

body.asds .comment-form .comment-notes {
	margin: 0 0 18px;
	color: var(--asds-muted);
	font-size: 0.92rem;
}

body.asds .comment-form .ast-row {
	margin-inline: 0;
}

body.asds .comment-form .ast-grid-common-col {
	padding-inline: 0 !important;
}

body.asds .comment-form .ast-comment-formwrap {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 14px;
	margin-block: 14px;
}

body.asds .comment-form .ast-comment-formwrap > p {
	float: none;
	width: auto !important;
	margin: 0;
}

body.asds .comment-form .comment-form-cookies-consent {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	margin: 0 0 18px;
}

body.asds .comment-form .comment-form-cookies-consent input {
	flex: none;
	margin-top: 2px;
}

body.asds .comment-form .comment-form-cookies-consent label {
	font-size: 0.9rem;
	font-weight: 500;
	line-height: 1.5;
}

body.asds .comment-form .form-submit {
	margin: 0;
}

@media (max-width: 767px) {
	body.asds .comment-form .ast-comment-formwrap {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Sidebar widgets */
body.asds .widget-area .widget {
	margin-bottom: 24px;
	padding: 22px;
	border: 1px solid var(--asds-line);
	border-radius: var(--asds-radius);
	background: var(--asds-paper);
	box-shadow: var(--asds-shadow-sm);
}

body.asds .widget-title {
	position: relative;
	margin-bottom: 18px;
	padding-bottom: 10px;
	font-size: 1.15rem;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

body.asds .widget-title::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 48px;
	height: 3px;
	border-radius: 2px;
	background: var(--asds-accent);
}

body.asds .widget-area a {
	color: var(--asds-text);
	text-decoration: none;
}

body.asds .widget-area a:hover {
	color: var(--asds-accent-text);
}

/* 404 & search */
body.asds.error404 .ast-404-layout-1 .page-title,
body.asds.search .page-title {
	font-size: clamp(2rem, 4vw, 3rem);
}

/* 12. Footer
   ------------------------------------------------------------------------ */
body.asds .site-footer {
	position: relative;
	color: rgba(255, 255, 255, 0.72);
	background: var(--asds-ink) !important;
	font-size: 0.96rem;
}

body.asds .site-footer::before {
	content: "";
	position: absolute;
	inset: 0 0 auto 0;
	height: 8px;
	background: repeating-linear-gradient(135deg, var(--asds-accent) 0 18px, var(--asds-ink) 18px 36px);
}

body.asds .site-primary-footer-wrap {
	position: relative;
	padding-block: clamp(56px, 7vw, 88px) clamp(40px, 5vw, 64px) !important;
	background: transparent !important;
	background-image:
		linear-gradient(rgba(255, 255, 255, 0.035) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255, 255, 255, 0.035) 1px, transparent 1px) !important;
	background-size: 44px 44px, 44px 44px !important;
}

body.asds .site-primary-footer-wrap .ast-builder-grid-row,
body.asds .site-below-footer-wrap .ast-builder-grid-row {
	max-width: var(--asds-container);
	margin-inline: auto;
	padding-inline: 0;
}

body.asds .site-primary-footer-wrap .ast-builder-grid-row {
	gap: 40px;
}

body.asds .site-footer .footer-widget-area,
body.asds .site-footer .widget {
	margin: 0;
	padding: 0;
	border: 0;
	background: transparent !important;
	box-shadow: none;
}

body.asds .site-footer .widget + .widget {
	margin-top: 10px;
}

body.asds .site-footer h1,
body.asds .site-footer h2,
body.asds .site-footer h3,
body.asds .site-footer h4,
body.asds .site-footer h5,
body.asds .site-footer h6,
body.asds .site-footer .widget-title {
	position: relative;
	margin: 0 0 18px;
	padding-bottom: 12px;
	color: #fff !important;
	font-size: 1.15rem;
	letter-spacing: 0.08em;
	text-align: left !important;
	text-transform: uppercase;
}

body.asds .site-footer h5::after,
body.asds .site-footer .widget-title::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 40px;
	height: 3px;
	border-radius: 2px;
	background: var(--asds-accent);
}

body.asds .site-footer p,
body.asds .site-footer li {
	color: rgba(255, 255, 255, 0.74) !important;
	line-height: 1.7;
}

body.asds .site-footer p {
	margin: 0 0 10px;
	text-align: left !important;
}

body.asds .site-footer ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

body.asds .site-footer .widget_nav_menu .menu .menu-item {
	margin: 0;
}

body.asds .site-footer .widget_nav_menu .menu .menu-link,
body.asds .site-footer a {
	color: rgba(255, 255, 255, 0.82) !important;
	text-decoration: none;
	transition: color 140ms var(--asds-ease), padding-left 140ms var(--asds-ease);
}

body.asds .site-footer .widget_nav_menu .menu .menu-link {
	display: block;
	padding: 7px 0;
	border: 0 !important;
}

body.asds .site-footer .widget_nav_menu .menu .menu-link::before {
	content: "";
	display: inline-block;
	width: 6px;
	height: 6px;
	margin-right: 10px;
	vertical-align: 2px;
	border-radius: 1px;
	background: var(--asds-accent);
	opacity: 0.85;
}

body.asds .site-footer a:hover,
body.asds .site-footer .widget_nav_menu .menu .menu-link:hover {
	color: var(--asds-accent) !important;
}

body.asds .site-footer .widget_nav_menu .menu .menu-link:hover {
	padding-left: 4px;
}

/* Below footer */
body.asds .site-below-footer-wrap {
	padding-block: 22px !important;
	border-top: 1px solid rgba(255, 255, 255, 0.1);
	background: rgba(0, 0, 0, 0.25) !important;
	font-size: 0.86rem;
}

body.asds .site-below-footer-wrap .ast-builder-grid-row {
	align-items: center !important;
}

body.asds .ast-footer-copyright p {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin: 0 18px 0 0 !important;
	color: rgba(255, 255, 255, 0.62) !important;
	font-size: 0.86rem;
}

body.asds .ast-footer-copyright p a {
	display: inline-flex;
	align-items: center;
	min-height: 28px;
}

body.asds .ast-footer-copyright img {
	width: 28px;
	height: 28px;
	border-radius: 50%;
}

body.asds .site-footer .ast-footer-social-wrap .ast-builder-social-element {
	display: inline-grid;
	place-items: center;
	width: 40px;
	height: 40px;
	margin: 0 4px;
	padding: 0 !important;
	border-radius: 50%;
	color: #fff !important;
	background: rgba(255, 255, 255, 0.08) !important;
	--color: #fff;
	--background-color: transparent;
	transition: background-color 160ms var(--asds-ease), color 160ms var(--asds-ease), transform 160ms var(--asds-ease);
}

body.asds .site-footer .ast-footer-social-wrap .ast-builder-social-element svg {
	width: 18px;
	height: 18px;
	fill: currentColor;
}

body.asds .site-footer .ast-footer-social-wrap .ast-builder-social-element:hover {
	color: var(--asds-ink) !important;
	background: var(--asds-accent) !important;
	transform: translateY(-2px);
}

body.asds .site-footer .footer-social-inner-wrap {
	justify-content: flex-end;
}

/* 13. Utilities
   ------------------------------------------------------------------------ */
body.asds .asds-top {
	position: fixed;
	left: 22px;
	bottom: 22px;
	z-index: 900;
	display: grid;
	place-items: center;
	width: 48px;
	height: 48px;
	border-radius: var(--asds-radius-sm);
	color: var(--asds-ink);
	background: var(--asds-accent);
	box-shadow: var(--asds-shadow);
	text-decoration: none;
	transition: transform 200ms var(--asds-ease), opacity 200ms var(--asds-ease), background-color 200ms var(--asds-ease), visibility 0s;
}

body.asds .asds-top:hover {
	color: var(--asds-ink);
	background: var(--asds-accent-hover);
	transform: translateY(-3px);
}

/* visibility (not only opacity) so the hidden control is also skipped by
   the keyboard and screen readers; it flips after the fade-out. */
body.asds .asds-top[hidden] {
	display: grid;
	visibility: hidden;
	opacity: 0;
	pointer-events: none;
	transform: translateY(12px);
	transition: transform 200ms var(--asds-ease), opacity 200ms var(--asds-ease), visibility 0s linear 200ms;
}

/* Reveal on scroll (classes are only added by JS, see assets/js/site.js) */
body.asds .asds-will-reveal {
	opacity: 0;
	transform: translateY(22px);
	transition: opacity 600ms var(--asds-ease), transform 700ms var(--asds-ease);
	will-change: opacity, transform;
}

body.asds .asds-will-reveal.asds-in {
	opacity: 1;
	transform: none;
}

/* WhatsApp launcher (wp-whatsapp plugin) — brand-consistent, never overlaps. */
body.asds .wa__btn_popup {
	z-index: 950 !important;
	right: 22px !important;
	bottom: 22px !important;
}

body.asds .wa__btn_popup .wa__btn_popup_txt {
	color: var(--asds-ink) !important;
	background: #fff !important;
	border-radius: 999px !important;
	box-shadow: var(--asds-shadow-sm) !important;
	font-family: var(--asds-font-body) !important;
	font-weight: 600 !important;
}

body.asds .wa__btn_popup .wa__btn_popup_icon {
	box-shadow: 0 8px 22px rgba(37, 211, 102, 0.4) !important;
}

body.asds .wa__popup_chat_box {
	z-index: 951 !important;
	border-radius: var(--asds-radius) !important;
	overflow: hidden;
	font-family: var(--asds-font-body) !important;
}

/* Elementor lightbox */
body.asds .elementor-lightbox {
	background: rgba(var(--asds-ink-rgb), 0.94) !important;
}

/* Skip link */
body.asds .skip-link:focus {
	z-index: 100000;
	top: 8px;
	left: 8px;
	padding: 12px 18px;
	border-radius: var(--asds-radius-sm);
	color: var(--asds-ink);
	background: var(--asds-accent);
	font-weight: 700;
	outline: 0;
	box-shadow: var(--asds-shadow);
}

/* 14. Responsive
   ------------------------------------------------------------------------ */
@media (max-width: 1024px) {
	:root,
	body.asds {
		--asds-header-h: 76px;
		--asds-gutter: 24px;
	}

	body.asds {
		font-size: 16px;
	}

	body.asds #ast-desktop-header .main-header-menu > .menu-item > .menu-link {
		padding: 0 10px;
		font-size: 0.74rem;
		letter-spacing: 0.06em;
	}

	body.asds .ast-header-button-1 .ast-custom-button {
		padding: 0 16px !important;
	}

}

@media (max-width: 921px) {
	:root,
	body.asds {
		--asds-header-h: 68px;
	}

	/* Astra centres stacked footer columns while the headings stay left;
	   keep every column on one left edge. */
	body.asds .site-footer .footer-widget-area,
	body.asds .site-footer .footer-widget-area :where(p, ul, ol, li, .menu, .widget-title, h1, h2, h3, h4, h5, h6) {
		text-align: left !important;
	}

	body.asds .site-footer .site-footer-section {
		align-items: flex-start !important;
		justify-content: flex-start !important;
	}

	body.asds .site-below-footer-wrap :where(.ast-footer-copyright, .ast-footer-social-wrap, .footer-social-inner-wrap) {
		justify-content: flex-start !important;
		text-align: left !important;
	}
}

@media (max-width: 767px) {
	:root,
	body.asds {
		--asds-gutter: 18px;
		--asds-radius: 10px;
		--asds-radius-lg: 14px;
	}

	html {
		scroll-padding-top: 84px;
	}

	body.asds {
		font-size: 16px;
		line-height: 1.6;
	}

	body.asds h1 { font-size: clamp(2.1rem, 9.5vw, 2.9rem); }
	body.asds h2 { font-size: clamp(1.7rem, 7.5vw, 2.3rem); }

	body.asds h1.elementor-heading-title { font-size: clamp(2.2rem, 10vw, 3rem) !important; }
	body.asds h2.elementor-heading-title,
	body.asds h2.ekit-heading--title { font-size: clamp(1.7rem, 7.6vw, 2.3rem) !important; }
	body.asds h3.elementor-heading-title { font-size: 1.4rem !important; }

	body.asds .asds-hero {
		min-height: 0 !important;
		--padding-top: calc(var(--asds-header-h) + 48px) !important;
		--padding-bottom: 56px !important;
		--padding-left: 0 !important;
		--padding-right: 0 !important;
	}

	body.asds .asds-hero h1.elementor-heading-title {
		max-width: none;
		font-size: clamp(2.4rem, 11.5vw, 3.4rem) !important;
	}

	body.asds .asds-hero .elementor-widget-heading + .elementor-widget-heading h2.elementor-heading-title {
		font-size: 1.15rem !important;
	}

	body.asds .asds-hero .elementor-widget-text-editor p {
		font-size: 1rem;
	}

	body.asds .asds-hero .elementor-widget-button,
	body.asds .asds-hero .elementor-widget-button .elementor-button-wrapper,
	body.asds .asds-hero .elementor-widget-button .elementor-button {
		width: 100% !important;
	}

	body.asds .e-con.e-parent {
		--padding-left: var(--asds-gutter) !important;
		--padding-right: var(--asds-gutter) !important;
	}

	/* Reclaim the width that nested layout wrappers eat on small screens.
	   A child container with no tone class has no background of its own (see
	   inc/elementor.php), so its side padding is purely structural — the
	   parent's gutter already provides the margin. Containers that paint a
	   background or draw a border/shadow (asds-framed) keep their padding. */
	body.asds .e-con.e-child:not(.asds-light):not(.asds-dark):not(.asds-accent):not(.asds-photo):not(.asds-framed) {
		--padding-left: 0 !important;
		--padding-right: 0 !important;
	}

	/* Stack the icon above the text so the copy gets the full card width. */
	body.asds .eael-infobox.icon-on-left {
		grid-template-columns: 1fr;
		gap: 14px;
	}

	body.asds .e-con.e-child.asds-photo {
		min-height: 260px;
		--padding-top: 200px !important;
		--padding-bottom: 24px !important;
		--padding-left: 20px !important;
		--padding-right: 20px !important;
	}

	body.asds .e-con.e-child.asds-photo .elementor-icon-box-title {
		font-size: 1.2rem !important;
	}

	body.asds .eael-infobox {
		padding: 22px 20px !important;
	}

	body.asds .eael-infobox .infobox-icon {
		width: 48px;
		height: 48px;
	}

	body.asds .eael-infobox .infobox-content {
	width: auto !important;
	padding: 0 !important;
}

body.asds .eael-infobox .infobox-content .title {
		font-size: 1.2rem !important;
	}

	body.asds .elementor-widget-image-box .elementor-image-box-content {
		padding: 18px 18px 22px;
	}

	body.asds .eael-filter-gallery-control ul {
		flex-wrap: nowrap;
		justify-content: flex-start;
		overflow-x: auto;
		padding: 2px 2px 10px;
		scroll-snap-type: x proximity;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}

	body.asds .eael-filter-gallery-control ul::-webkit-scrollbar {
		display: none;
	}

	body.asds .eael-filter-gallery-control ul li {
		flex: 0 0 auto;
		scroll-snap-align: start;
	}

	body.asds .eael-filter-gallery-container {
		gap: 14px;
	}

	body.asds .elementor-accordion .elementor-tab-title {
		padding: 15px 16px !important;
		font-size: 1rem !important;
	}

	body.asds .elementor-accordion .elementor-accordion-title {
		font-size: 1.02rem;
	}

	body.asds .elementor-widget-elementskit-pricing .elementskit-single-pricing {
		padding: 28px 22px 24px !important;
	}

	body.asds .ast-article-post .entry-title,
	body.asds .ast-article-post .entry-header,
	body.asds .ast-article-post .ast-excerpt-container,
	body.asds .ast-article-post .read-more {
		padding-inline: 18px;
	}

	body.asds.single .ast-article-single {
		padding: 20px 18px !important;
	}

	body.asds .post-navigation .nav-links {
		grid-template-columns: 1fr;
	}

	body.asds .post-navigation .nav-next a {
		justify-content: flex-start;
		text-align: left;
	}

	body.asds .site-primary-footer-wrap .ast-builder-grid-row {
		gap: 32px;
	}

	body.asds .site-footer .footer-social-inner-wrap {
		justify-content: flex-start;
	}

	body.asds .ast-footer-copyright p {
		display: flex;
		margin: 0 0 8px !important;
	}

	body.asds .asds-top {
		left: 16px;
		bottom: 16px;
		width: 44px;
		height: 44px;
	}

	body.asds .wa__btn_popup {
		right: 16px !important;
		bottom: 16px !important;
	}

	body.asds .elementor-widget-google_maps iframe {
		min-height: 280px;
	}
}

@media (max-width: 480px) {
	body.asds .asds-hero h1.elementor-heading-title {
		font-size: clamp(2.2rem, 11vw, 2.8rem) !important;
	}

	body.asds .elementor-widget-button .elementor-button {
		width: 100%;
	}
}

/* 15. Accessibility & print
   ------------------------------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	body.asds *,
	body.asds *::before,
	body.asds *::after {
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		scroll-behavior: auto !important;
	}

	body.asds .asds-will-reveal {
		opacity: 1;
		transform: none;
	}
}

@media print {
	body.asds .site-header,
	body.asds .site-footer,
	body.asds .asds-top,
	body.asds .wa__btn_popup,
	body.asds .wa__popup_chat_box,
	body.asds .post-navigation,
	body.asds .ast-single-related-posts-container,
	body.asds .comments-area {
		display: none !important;
	}

	body.asds,
	body.asds #content,
	body.asds .site-content {
		color: #000;
		background: #fff !important;
	}

	body.asds .ast-article-single {
		border: 0;
		box-shadow: none;
	}

	body.asds a {
		color: #000;
		text-decoration: underline;
	}

	body.asds .asds-will-reveal {
		opacity: 1;
		transform: none;
	}
}

/* 16. Icon font subsets
   ------------------------------------------------------------------------
   ElementsKit ships one 454 KB icon font and Font Awesome a 78 KB solid set,
   although the site shows a few dozen icons. These faces carry only those
   glyphs (plus common UI icons) under the plugins' own family names. Because
   this stylesheet is printed after the plugins', the browser tries these
   first and only fetches a plugin's full font when a page shows an icon
   outside the ranges below — so no icon can ever go missing.
   Rebuild the subsets if new icons are added (see README).
   ------------------------------------------------------------------------ */
@font-face {
	font-family: elementskit;
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url(../fonts/elementskit-subset.woff2) format("woff2");
	unicode-range: U+E800, U+E818, U+E831, U+E833, U+E835, U+E83D, U+E870, U+E877, U+E879-E87A, U+E91B, U+E934, U+E973, U+E976, U+E97E, U+E981-E982, U+E992, U+E994, U+E998-E999, U+E9C3, U+E9D2, U+EA2A, U+EA3C, U+EA53, U+EAAF, U+EAE6, U+EB16, U+EB1A, U+EB43-EB46, U+EB4B-EB4C, U+EB6C, U+EBC1;
}

@font-face {
	font-family: "Font Awesome 5 Free";
	font-style: normal;
	font-weight: 900;
	font-display: block;
	src: url(../fonts/fa-solid-900-subset.woff2) format("woff2");
	unicode-range: U+E065, U+F002, U+F004-F005, U+F007, U+F00C-F00E, U+F015, U+F017, U+F019, U+F041, U+F04B, U+F053-F054, U+F057-F058, U+F05A, U+F060-F063, U+F067-F068, U+F06E, U+F073, U+F077-F078, U+F086, U+F095, U+F0AC, U+F0C0-F0C1, U+F0C9, U+F0D7, U+F0DA, U+F0E0, U+F101, U+F104-F108, U+F10D-F10E, U+F111, U+F155, U+F164, U+F1AD, U+F1B8, U+F1C1, U+F1E0, U+F1EC, U+F30B, U+F35D, U+F3C5, U+F3CD, U+F53A, U+F542, U+F546, U+F559, U+F568, U+F5AA, U+F5AE, U+F64F, U+F66F, U+F6E3, U+F7D9, U+F807, U+F879;
}
