/* ==========================================================================
   Agency Branding — site styles
   --------------------------------------------------------------------------
   1. Tokens          brand values, read from Elementor Site Settings
   2. Context         ab-on-dark / ab-on-light flip a whole area's colors
   3. Base            behaviour shared by every page
   4. Utilities       small single-purpose helpers
   5. Components      reusable blocks used by Elementor widgets
   6. Shortcodes      markup produced by the plugin's shortcodes
   Typography and heading/button styles themselves live in Site Settings; this
   file only adds what Elementor cannot express globally.
   ========================================================================== */

/* 1. Tokens ----------------------------------------------------------------
   Declared on body, where Elementor defines its --e-global-* variables. */
body {
	--ab-primary: var(--e-global-color-primary, #0B6353);
	--ab-accent: var(--e-global-color-accent, #FF3E00);
	--ab-light: var(--e-global-color-aglight, #F2F1EC);
	--ab-dark: var(--e-global-color-agdark, #0A0A0B);
	--ab-white: var(--e-global-color-agwhite, #FFFFFF);
	--ab-surface: var(--e-global-color-agsurface, #1C1C1C);
	--ab-highlight: var(--e-global-color-aghighlight, #FFDE59);
	--ab-font-heading: var(--e-global-typography-primary-font-family, "Inter Tight"), system-ui, sans-serif;
	--ab-font-body: var(--e-global-typography-text-font-family, "DM Sans"), system-ui, sans-serif;

	/* Light-background values, kept so dark areas can restore them. */
	--ab-ink: var(--e-global-color-secondary, #1C1C1C);
	--ab-ink-soft: var(--e-global-color-text, #5C5C5C);
	--ab-line: var(--e-global-color-agborder, #DAD9D6);

	/* Context-dependent values (switched by ab-on-dark / ab-on-light). */
	--ab-heading: var(--ab-ink);
	--ab-text: var(--ab-ink-soft);
	--ab-border: var(--ab-line);
	--ab-invert: var(--ab-white);
}

/* 2. Context ----------------------------------------------------------------
   Overriding Elementor's own color variables makes Site Settings heading and
   text colors (which reference them) turn light inside dark areas. */
.ab-on-dark {
	--e-global-color-secondary: var(--ab-white);
	--e-global-color-text: color-mix(in srgb, var(--ab-white) 84%, transparent);
	--ab-heading: var(--ab-white);
	--ab-text: color-mix(in srgb, var(--ab-white) 84%, transparent);
	--ab-border: color-mix(in srgb, var(--ab-white) 24%, transparent);
	--ab-invert: var(--ab-dark);
	color: var(--ab-text);
}

/* Light surfaces that can open inside dark areas (overlays, panels). */
.ab-on-light,
.ab-search,
.ab-offcanvas-inner {
	--e-global-color-secondary: var(--ab-ink);
	--e-global-color-text: var(--ab-ink-soft);
	--ab-heading: var(--ab-ink);
	--ab-text: var(--ab-ink-soft);
	--ab-border: var(--ab-line);
	--ab-invert: var(--ab-white);
	color: var(--ab-text);
}

/* 3. Base ------------------------------------------------------------------- */
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
[id] { scroll-margin-top: 90px; }
body.ab-locked { overflow: hidden; }

/* Headings rendered as p/span/div have no Site Settings style; give them the heading color. */
.elementor-widget-heading :is(p, span, div).elementor-heading-title { color: var(--ab-heading); }

.ab-icon { flex: none; display: block; }

/* Buttons printed by shortcodes inherit the Site Settings button style (kit). */
.ab-button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 0; border-radius: 0; cursor: pointer; line-height: 1; }
.ab-button:active { transform: translateY(1px); }

/* 4. Utilities --------------------------------------------------------------- */
/* Clips sideways only, so decorations may still overlap the section above. */
.e-con.ab-clip, .ab-clip { overflow-x: clip; }
.e-con.ab-auto-width { --width: auto; }
.ab-muted { opacity: .8; }
.ab-hl { color: var(--ab-primary); }
.ab-text-sm {
	font-family: var(--e-global-typography-agsmall-font-family, var(--ab-font-body));
	font-size: var(--e-global-typography-agsmall-font-size, 14px);
	line-height: var(--e-global-typography-agsmall-line-height, 1.5);
}
.e-con.ab-divider-top, .e-con.ab-divider-bottom { --border-color: var(--ab-border); border-color: var(--ab-border); }
@media (min-width: 1025px) {
	.ab-measure-sm .elementor-heading-title { max-width: 440px; }
	.ab-measure-md .elementor-heading-title,
	.elementor-widget-text-editor.ab-measure-md { max-width: 620px; }
	.ab-measure-lg .elementor-heading-title { max-width: 880px; }
}

/* 5. Components ------------------------------------------------------------ */

/* Eyebrow: small uppercase label (typography = Site Settings "Eyebrow"). */
.elementor-widget-heading.ab-eyebrow .elementor-heading-title { color: var(--ab-heading); }

/* Display headings */
@media (min-width: 1600px) { .ab-display-fluid .elementor-heading-title { font-size: 5.7vw; } }
.ab-display-xl .elementor-heading-title {
	font-family: var(--e-global-typography-agdisplay-font-family, var(--ab-font-heading));
	font-size: clamp(44px, 7vw, 102px); font-weight: 600; line-height: .94; letter-spacing: -.01em; text-transform: uppercase;
}

/* Outline button (Site Settings button, outlined) */
.elementor-widget-button.ab-btn-outline .elementor-button {
	background: transparent; color: var(--ab-heading); box-shadow: inset 0 0 0 1px currentColor;
}
.elementor-widget-button.ab-btn-outline .elementor-button:hover,
.elementor-widget-button.ab-btn-outline .elementor-button:focus-visible {
	background: var(--ab-heading); color: var(--ab-invert); box-shadow: inset 0 0 0 1px var(--ab-heading);
}

/* Round arrow link; hovering its `ab-link-group` fills it */
.elementor-widget-icon.ab-circle-link .elementor-icon { color: var(--ab-heading); border-color: var(--ab-border); background: transparent; transition: all .25s ease; }
.elementor-widget-icon.ab-circle-link .elementor-icon svg { fill: currentColor; }
.ab-link-group:hover .elementor-widget-icon.ab-circle-link .elementor-icon,
.elementor-widget-icon.ab-circle-link .elementor-icon:hover,
.elementor-widget-icon.ab-circle-link .elementor-icon:focus-visible { background: var(--ab-accent); border-color: var(--ab-accent); color: var(--ab-white); }
.ab-list-num .elementor-heading-title { opacity: .72; }

/* Scroll cue (chevron) */
.elementor-widget-icon.ab-scroll-cue .elementor-icon { color: var(--ab-heading); transition: transform .3s ease; }
.elementor-widget-icon.ab-scroll-cue .elementor-icon svg { fill: currentColor; }
.elementor-widget-icon.ab-scroll-cue .elementor-icon:hover { transform: translateY(4px); }

/* Decorations */
.ab-deco { color: var(--ab-primary); pointer-events: none; }
.ab-deco-accent { color: var(--ab-accent); }
.ab-deco-highlight { color: var(--ab-highlight); z-index: 0; }
.ab-above-deco { position: relative; z-index: 1; }
.ab-scribble, .ab-blob { display: block; width: 100%; height: auto; }
.ab-blob .ab-blob-cut { stroke: var(--ab-dark); }
.ab-starburst { display: inline-block; width: 92px; height: auto; }
.ab-xmarks { display: block; width: 186px; height: auto; }
@media (max-width: 767px) { .ab-starburst { width: 64px; } .ab-xmarks { width: 140px; } }

/* Images */
.ab-tilt { box-shadow: 0 18px 40px rgba(0,0,0,.18); }
.ab-tilt img { display: block; }
.ab-avatar-stack .ab-avatar img { border: 3px solid var(--ab-white); }
.ab-logo-muted img { opacity: .55; transition: opacity .3s ease; }
.ab-logo-muted:hover img { opacity: 1; }

/* Checklist (icon list) */
.elementor-widget-icon-list.ab-checklist .elementor-icon-list-icon i { color: var(--ab-accent); }
.elementor-widget-icon-list.ab-checklist .elementor-icon-list-icon svg { fill: var(--ab-accent); }
.elementor-widget-icon-list.ab-checklist .elementor-icon-list-text { color: var(--ab-heading); }

/* Feature (icon box): round icon, H4 title, small description */
.elementor-widget-icon-box.ab-feature .elementor-icon { background-color: var(--ab-light); color: var(--ab-accent); }
.elementor-widget-icon-box.ab-feature .elementor-icon svg { fill: currentColor; }
.elementor-widget-icon-box.ab-feature .elementor-icon-box-title { margin-top: 4px; }
.elementor-widget-icon-box.ab-feature .elementor-icon-box-description {
	color: var(--ab-text);
	font-family: var(--e-global-typography-agsmall-font-family, var(--ab-font-body));
	font-size: var(--e-global-typography-agsmall-font-size, 14px);
	line-height: var(--e-global-typography-agsmall-line-height, 1.5);
}

/* Counter: H2-sized number, H4-sized label, left aligned */
.elementor-widget-counter.ab-counter .elementor-counter { align-items: flex-start; }
.elementor-widget-counter.ab-counter .elementor-counter-number-wrapper {
	justify-content: flex-start; color: var(--ab-heading); line-height: 1;
	font-family: var(--e-global-typography-primary-font-family, var(--ab-font-heading));
	font-size: var(--e-global-typography-primary-font-size, 54px);
	font-weight: var(--e-global-typography-primary-font-weight, 600);
}
.elementor-widget-counter.ab-counter .elementor-counter-title {
	justify-content: flex-start; text-align: left; text-transform: none; color: var(--ab-heading);
	font-family: var(--e-global-typography-agh4-font-family, var(--ab-font-heading));
	font-size: var(--e-global-typography-agh4-font-size, 18px);
	font-weight: var(--e-global-typography-agh4-font-weight, 600);
}

/* Quote card (testimonials): dark bubble with pointer; the current one uses the primary color */
.ab-quote .ab-quote-bubble { position: relative; width: 100%; background: var(--ab-surface); transition: background-color .4s ease; }
.ab-quote .ab-quote-bubble::after {
	content: ""; position: absolute; left: 50%; top: 100%; width: 0; height: 0; transform: translateX(-50%);
	border: 9px solid transparent; border-top-color: var(--ab-surface); border-bottom: 0; transition: border-color .4s ease;
}
.ab-quote.is-current .ab-quote-bubble { background: var(--ab-primary); }
.ab-quote.is-current .ab-quote-bubble::after { border-top-color: var(--ab-primary); }
.ab-quote .ab-quote-bubble .elementor-widget-icon .elementor-icon { color: var(--ab-primary); transition: color .4s ease; }
.ab-quote .ab-quote-bubble .elementor-widget-icon .elementor-icon svg { fill: currentColor; }
.ab-quote.is-current .ab-quote-bubble .elementor-widget-icon .elementor-icon { color: var(--ab-white); }
.ab-quote .ab-quote-bubble .elementor-widget-text-editor { font-family: var(--ab-font-heading); font-size: 17px; font-weight: 500; line-height: 2; color: var(--ab-white); }
.ab-quote .ab-quote-bubble .elementor-widget-text-editor p { margin: 0; }

/* Carousel: direct children of `.ab-carousel` become slides (see frontend.js) */
.e-con.ab-carousel, .ab-posts.ab-carousel { overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; }
.ab-carousel::-webkit-scrollbar { display: none; }
.e-con.ab-carousel { flex-wrap: nowrap !important; }
.ab-posts.ab-carousel { display: flex; gap: 40px; }
.ab-carousel > .e-con, .ab-carousel > .ab-post { flex: 0 0 calc((100% - 80px) / 3) !important; max-width: none; scroll-snap-align: start; }
@media (max-width: 1024px) { .ab-carousel > .e-con, .ab-carousel > .ab-post { flex-basis: calc((100% - 40px) / 2) !important; } }
@media (max-width: 767px) {
	.ab-posts.ab-carousel { gap: 16px; }
	.ab-carousel > .e-con, .ab-carousel > .ab-post { flex-basis: 86% !important; scroll-snap-align: center; }
}
@media (prefers-reduced-motion: reduce) { .ab-carousel { scroll-behavior: auto; } }
.ab-carousel-dots { display: flex; justify-content: center; gap: 12px; margin-top: 8px; }
.ab-posts.ab-carousel + .ab-carousel-dots { margin-top: 36px; }
body button.ab-carousel-dot.ab-carousel-dot {
	width: 12px; height: 12px; margin: 0; padding: 0; border: 1.5px solid var(--ab-border);
	border-radius: 50%; background: transparent; box-shadow: none; cursor: pointer; transition: all .25s ease;
}
body button.ab-carousel-dot.ab-carousel-dot:hover { border-color: var(--ab-heading); background: transparent; }
body button.ab-carousel-dot.ab-carousel-dot[aria-current="true"] { background: var(--ab-primary); border-color: var(--ab-primary); }
body button.ab-carousel-dot.ab-carousel-dot:focus-visible { outline: 2px solid var(--ab-heading); outline-offset: 3px; }

/* Video with an outline "play" circle */
.ab-video-play .elementor-custom-embed-image-overlay { background-size: cover; background-position: center; }
.ab-video-play .elementor-custom-embed-play {
	display: flex; align-items: center; justify-content: center; width: 270px; height: 270px;
	border: 1px solid color-mix(in srgb, var(--ab-white) 80%, transparent); border-radius: 50%; transition: transform .35s ease, background-color .35s ease;
}
.ab-video-play .elementor-custom-embed-play i, .ab-video-play .elementor-custom-embed-play svg { display: none !important; }
.ab-video-play .elementor-custom-embed-play::after { content: "Play"; color: var(--ab-white); font-family: var(--ab-font-body); font-size: 14px; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; }
html[lang^="es"] .ab-video-play .elementor-custom-embed-play::after { content: "Reproducir"; }
.ab-video-play .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play { transform: translate(-50%, -50%) scale(1.06); background: color-mix(in srgb, var(--ab-white) 10%, transparent); }
@media (max-width: 767px) {
	.ab-video-play .elementor-custom-embed-play { width: 130px; height: 130px; }
	.ab-video-play .elementor-custom-embed-play::after { font-size: 12px; }
}

/* Marquee */
.ab-marquee { display: flex; overflow: hidden; user-select: none; }
.ab-marquee-track { display: flex; align-items: center; flex: none; min-width: 100%; animation: ab-marquee var(--ab-marquee-duration, 28s) linear infinite; }
.ab-marquee-item {
	flex: none; padding-right: .35em; white-space: nowrap;
	font-family: var(--ab-font-heading); font-size: clamp(56px, 12vw, 172px); font-weight: 600; line-height: 1; letter-spacing: -.02em;
	text-transform: uppercase; color: var(--ab-primary);
}
.ab-marquee.is-belt .ab-marquee-item { padding-right: 0; font-size: clamp(32px, 4.2vw, 60px); font-weight: 500; letter-spacing: -.01em; color: var(--ab-heading); }
.ab-marquee-sep { flex: none; display: inline-flex; padding: 0 .75em; font-size: clamp(32px, 4.2vw, 60px); color: var(--ab-highlight); }
.ab-marquee-sep svg { width: .9em; height: .9em; animation: ab-spin 7s linear infinite; }
.ab-marquee.is-xl .ab-marquee-item, .ab-marquee.is-xl .ab-marquee-sep { font-size: clamp(56px, 8.4vw, 122px); }
.ab-marquee.has-accent-star .ab-marquee-sep { color: var(--ab-accent); }
@keyframes ab-marquee { to { transform: translateX(-100%); } }
@keyframes ab-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .ab-marquee-track, .ab-marquee-sep svg { animation: none; } }

/* 6. Shortcodes ------------------------------------------------------------ */

/* Logo */
a.ab-logo.ab-logo { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; color: var(--ab-heading); }
a.ab-logo.ab-logo:hover { color: var(--ab-heading); }
.ab-logo-img { display: block; max-width: 100%; }
.ab-logo-mark {
	width: calc(var(--ab-logo-height) * .8); height: calc(var(--ab-logo-height) * .8); border-radius: 50%;
	background: conic-gradient(from 200deg, var(--ab-primary) 0 60%, var(--ab-accent) 60% 100%);
}
.ab-logo-text { font-family: var(--ab-font-heading); font-size: calc(var(--ab-logo-height) * .56); font-weight: 700; letter-spacing: -.02em; white-space: nowrap; }

/* Header: the logo slot keeps a fixed width so the menu starts at the same
   place on every page, whatever the logo or language. */
@media (min-width: 1025px) {
	.e-con.ab-header > .elementor-widget:first-child { min-width: 300px; }
}

/* Header */
@media (max-width: 767px) {
	/* Long text logos must not push the header icons off small screens. */
	.e-con.ab-header > .elementor-widget:first-child { --flex-shrink: 1; flex-shrink: 1; min-width: 0; }
	.ab-header .ab-logo-text { white-space: normal; font-size: 19px; line-height: 1.1; }
}

/* Menus */
.ab-menu-list { list-style: none; margin: 0; padding: 0; }
.ab-menu-header .ab-menu-list { display: flex; flex-wrap: wrap; gap: 4px 30px; }
.ab-menu-header .ab-menu-list > li { position: relative; }
.ab-menu.ab-menu-header a {
	position: relative; display: block; padding: 8px 0; text-decoration: none;
	font-family: var(--ab-font-heading); font-size: 16px; font-weight: 500; letter-spacing: -.01em; color: var(--ab-heading);
}
.ab-menu-header .ab-menu-list > li > a::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: currentColor;
	transform: scaleX(0); transform-origin: right; transition: transform .35s cubic-bezier(.2,.7,.2,1);
}
.ab-menu-header .ab-menu-list > li > a:hover::after,
.ab-menu-header .ab-menu-list > li > a:focus-visible::after,
.ab-menu-header .ab-menu-list > li.is-active > a::after,
.ab-menu-header .ab-menu-list > li.current-menu-item:not(.menu-item-type-custom) > a::after { transform: scaleX(1); transform-origin: left; }
/* Menu links keep the color of their own area (white on the dark band, dark in
   the white dropdown). Without this, Elementor's global link-hover color wins
   and dropdown items turn white on white. */
.ab-menu.ab-menu-header a:hover,
.ab-menu.ab-menu-header a:focus,
.ab-menu.ab-menu-header a:focus-visible { color: var(--ab-heading); }
.ab-menu.ab-menu-header a:focus-visible { outline: none; }
.ab-menu-header .sub-menu {
	list-style: none; margin: 0; padding: 12px 0; position: absolute; top: 100%; left: -22px; z-index: 50; min-width: 312px;
	background: var(--ab-white); box-shadow: 0 18px 40px rgba(0,0,0,.08);
	opacity: 0; visibility: hidden; transform: translateY(6px); transition: all .2s ease;
	--ab-heading: var(--ab-ink);
}
.ab-menu-header li:hover > .sub-menu, .ab-menu-header li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; }
.ab-menu.ab-menu-header .sub-menu a { padding: 7px 22px; font-size: 15px; }
.ab-menu.ab-menu-header .sub-menu a:hover,
.ab-menu.ab-menu-header .sub-menu a:focus-visible { color: var(--ab-accent); }
@media (max-width: 1024px) { .ab-menu-header { display: none; } }

.ab-menu-footer .ab-menu-list { display: grid; gap: 16px; }
.ab-menu.ab-menu-footer a { color: var(--ab-text); text-decoration: none; font-family: var(--ab-font-body); font-size: 17px; line-height: 1.2; transition: color .2s ease; }
.ab-menu.ab-menu-footer a:hover, .ab-menu.ab-menu-footer a:focus-visible { color: var(--ab-heading); }

.ab-menu-panel { display: none; }
.ab-menu-panel .ab-menu-list > li + li { border-top: 1px solid var(--ab-border); }
.ab-menu.ab-menu-panel a { display: block; padding: 14px 0; text-decoration: none; font-family: var(--ab-font-heading); font-size: 22px; font-weight: 500; color: var(--ab-heading); }
.ab-menu.ab-menu-panel a:hover { color: var(--ab-accent); }
.ab-menu-panel .sub-menu { list-style: none; margin: 0; padding: 0 0 10px 14px; }
.ab-menu.ab-menu-panel .sub-menu a { padding: 6px 0; font-size: 17px; }
@media (max-width: 1024px) { .ab-menu-panel { display: block; } }

/* Header tools (search + panel) */
.ab-tools { display: flex; align-items: center; justify-content: flex-end; gap: 22px; }
/* `body button.x.x` outranks the theme's and the Site Settings global button styles. */
body button.ab-tool.ab-tool {
	display: inline-flex; align-items: center; justify-content: center; flex: none; width: 40px; height: 40px; margin: 0; padding: 0;
	border: 0; border-radius: 50%; background: transparent; box-shadow: none; color: var(--ab-heading); cursor: pointer; transition: color .2s ease;
}
body button.ab-tool.ab-tool:hover { color: var(--ab-accent); background: transparent; border: 0; }
body button.ab-tool.ab-tool:focus { background: transparent; border: 0; }
body button.ab-tool.ab-tool:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
.ab-tool .ab-icon { width: 26px; height: 26px; stroke-width: 1.5; }
.ab-tool .ab-icon-burger { display: none; }
@media (max-width: 1024px) {
	.ab-tool-panel .ab-icon-dots { display: none; }
	.ab-tool-panel .ab-icon-burger { display: block; }
}

.ab-search {
	position: fixed; inset: 0 0 auto; z-index: 9999; display: flex; align-items: center; gap: 16px;
	padding: 34px max(24px, calc((100vw - 1252px) / 2)); background: var(--ab-light); box-shadow: 0 30px 60px rgba(0,0,0,.08);
	animation: ab-drop .3s ease both;
}
.ab-search[hidden] { display: none; }
.ab-search-form { flex: 1; display: flex; align-items: center; gap: 8px; border-bottom: 2px solid var(--ab-heading); }
.ab-search-form input[type="search"] {
	flex: 1; min-width: 0; padding: 14px 0; border: 0; background: none; box-shadow: none; outline: none;
	font-family: var(--ab-font-heading); font-size: clamp(22px, 3vw, 34px); font-weight: 500; color: var(--ab-heading);
}
.ab-search-form input[type="search"]::placeholder { color: var(--ab-text); opacity: .6; }

.ab-offcanvas { position: fixed; inset: 0; z-index: 9999; }
.ab-offcanvas[hidden] { display: none; }
.ab-offcanvas-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.35); animation: ab-fade .3s ease both; }
.ab-offcanvas-inner {
	position: absolute; top: 0; right: 0; bottom: 0; width: min(420px, 100%); overflow-y: auto;
	display: flex; flex-direction: column; gap: 32px; padding: 32px 40px 48px;
	background: var(--ab-light); animation: ab-slide .4s cubic-bezier(.2,.7,.2,1) both;
}
.ab-offcanvas-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.ab-panel-about { margin: 0; font-family: var(--ab-font-body); font-size: 17px; line-height: 1.65; color: var(--ab-text); }
.ab-offcanvas-label { margin: 0 0 16px; font-family: var(--ab-font-body); font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--ab-heading); }
@keyframes ab-drop { from { transform: translateY(-100%); } }
@keyframes ab-slide { from { transform: translateX(100%); } }
@keyframes ab-fade { from { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
	.ab-search, .ab-offcanvas-inner, .ab-offcanvas-backdrop { animation: none; }
	.ab-menu-header .ab-menu-list > li > a::after { transition: none; }
}

/* Contact details */
.ab-contact { list-style: none; margin: 0; padding: 0; display: grid; gap: 18px; color: var(--ab-text); font-family: var(--ab-font-body); }
.ab-contact-item { display: flex; gap: 14px; align-items: flex-start; line-height: 1.5; }
.ab-contact-item .ab-icon { margin-top: 1px; color: var(--ab-accent); }
.ab-contact .ab-contact-item a { color: inherit; text-decoration: none; }
.ab-contact .ab-contact-item a:hover { color: var(--ab-accent); }

.ab-office { font-family: var(--ab-font-body); font-size: 17px; line-height: 1.65; color: var(--ab-text); }
.ab-office p { margin: 0; }
.ab-office-address { max-width: 240px; }
.ab-office .ab-office-email { margin-top: 16px; }
.ab-office .ab-office-email a { color: inherit; text-decoration: none; border-bottom: 1px solid currentColor; padding-bottom: 2px; transition: color .2s ease; }
.ab-office .ab-office-email a:hover { color: var(--ab-heading); }
.ab-office .ab-office-phone { margin-top: 30px; }
.ab-office .ab-office-phone a { color: var(--ab-heading); text-decoration: none; font-family: var(--ab-font-heading); font-size: 19px; font-weight: 600; }
.ab-office .ab-office-phone a:hover { color: var(--ab-accent); }

/* Social icons */
.ab-socials { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.ab-socials li a {
	display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%;
	border: 1px solid var(--ab-border); color: var(--ab-heading); transition: all .2s ease;
}
.ab-socials li a:hover, .ab-socials li a:focus-visible { background: var(--ab-accent); border-color: var(--ab-accent); color: var(--ab-white); }
.ab-socials .ab-icon { width: 18px; height: 18px; }

.ab-social-bar { display: grid; grid-template-columns: repeat(var(--ab-social-count, 4), minmax(0, 1fr)); }
.ab-social-bar a.ab-social-cell {
	display: flex; align-items: center; justify-content: center; gap: 10px; min-height: 80px; padding: 0 12px;
	color: var(--ab-heading); text-decoration: none; font-family: var(--ab-font-heading); font-size: 15px; font-weight: 500;
	transition: color .2s ease;
}
.ab-social-bar a.ab-social-cell + a.ab-social-cell { border-left: 1px solid var(--ab-border); }
.ab-social-bar a.ab-social-cell:hover { color: var(--ab-accent); }
.ab-social-bar .ab-icon { width: 18px; height: 18px; }
@media (max-width: 767px) {
	.ab-social-bar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ab-social-bar a.ab-social-cell { min-height: 64px; }
	.ab-social-bar a.ab-social-cell + a.ab-social-cell:nth-child(2n+1) { border-left: 0; }
	.ab-social-bar a.ab-social-cell:nth-child(n+3) { border-top: 1px solid var(--ab-border); }
}

.ab-about { margin: 0; }
.ab-copyright { font-family: var(--ab-font-body); font-size: 16px; color: var(--ab-text); }

/* Back to top */
a.ab-back-to-top.ab-back-to-top {
	position: fixed; right: 34px; bottom: 34px; z-index: 900; display: inline-flex; align-items: center; justify-content: center;
	width: 42px; height: 42px; border-radius: 50%; background: var(--ab-surface); color: var(--ab-white); text-decoration: none;
	opacity: 0; visibility: hidden; transform: translateY(10px); transition: opacity .3s ease, visibility .3s ease, transform .3s ease, background-color .2s ease;
}
a.ab-back-to-top.is-visible { opacity: 1; visibility: visible; transform: none; }
a.ab-back-to-top.ab-back-to-top:hover { background: var(--ab-accent); color: var(--ab-white); }
.ab-back-to-top .ab-icon-up { width: 18px; height: 18px; transform: rotate(-90deg); }
@media (max-width: 767px) { a.ab-back-to-top.ab-back-to-top { right: 16px; bottom: 16px; } }

/* Posts */
.ab-posts { display: grid; grid-template-columns: repeat(var(--ab-posts-columns, 4), minmax(0, 1fr)); gap: 24px; }
@media (max-width: 1024px) { .ab-posts:not(.ab-carousel) { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .ab-posts:not(.ab-carousel) { grid-template-columns: 1fr; } }
.ab-post { display: flex; flex-direction: column; background: var(--ab-white); overflow: hidden; transition: transform .25s ease, box-shadow .25s ease; }
.ab-post:hover { transform: translateY(-4px); box-shadow: 0 20px 40px rgba(0,0,0,.08); }
.ab-post-media { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--ab-border); }
.ab-post-media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .5s ease; }
.ab-post:hover .ab-post-media img { transform: scale(1.05); }
.ab-post-placeholder { display: block; width: 100%; height: 100%; background: linear-gradient(135deg, var(--ab-primary), var(--ab-dark)); }
.ab-post-body { padding: 22px 24px 26px; }
.ab-post-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin-bottom: 12px; font-family: var(--ab-font-body); font-size: 13px; color: var(--ab-text); }
.ab-post-cat { padding: 5px 11px; background: var(--ab-light); color: var(--ab-primary); font-weight: 600; }
.ab-post-title { margin: 0; font-family: var(--ab-font-heading); font-size: 19px; font-weight: 600; line-height: 1.35; letter-spacing: -.01em; }
.ab-post .ab-post-title a { color: var(--ab-heading); text-decoration: none; }
.ab-post .ab-post-title a:hover { color: var(--ab-accent); }
.ab-post.is-plain { background: transparent; overflow: visible; }
.ab-post.is-plain:hover { transform: none; box-shadow: none; }
.ab-post.is-plain .ab-post-media { margin-bottom: 22px; }
.ab-post.is-plain .ab-post-title { font-size: 24px; font-weight: 500; line-height: 1.3; }
.ab-post-kicker { display: block; margin-bottom: 10px; font-family: var(--ab-font-body); font-size: 13px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--ab-heading); }
.ab-post-date { display: block; margin-top: 12px; font-family: var(--ab-font-body); font-size: 14px; color: var(--ab-text); opacity: .8; }

/* Forms */
.ab-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.ab-form { position: relative; font-family: var(--ab-font-body); }
.ab-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 18px; }
@media (max-width: 640px) { .ab-form-grid { grid-template-columns: 1fr; } }
.ab-form-wide { grid-column: 1 / -1; }
.ab-form-field { margin: 0 0 18px; }
.ab-form-field label { display: block; margin-bottom: 8px; font-size: 14px; font-weight: 600; color: var(--ab-heading); }
.ab-form input[type="text"], .ab-form input[type="email"], .ab-form input[type="tel"], .ab-form textarea {
	width: 100%; padding: 14px 16px; border: 1px solid var(--ab-border); border-radius: 0;
	background: var(--ab-white); color: var(--ab-ink); font: inherit; font-size: 16px; transition: border-color .2s ease, box-shadow .2s ease;
}
.ab-form input:focus, .ab-form textarea:focus { outline: none; border-color: var(--ab-primary); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ab-primary) 18%, transparent); }
.ab-form textarea { resize: vertical; min-height: 130px; }
.ab-consent { display: flex; gap: 10px; align-items: flex-start; margin: 4px 0 22px; font-size: 14px; line-height: 1.45; color: var(--ab-text); cursor: pointer; }
.ab-consent input { margin-top: 3px; accent-color: var(--ab-primary); }
.ab-consent a { color: var(--ab-heading); text-decoration: underline; text-underline-offset: 2px; }
.ab-form-notice { margin: 0 0 18px; padding: 12px 16px; font-family: var(--ab-font-body); font-size: 15px; }
.ab-form-notice.is-success { background: color-mix(in srgb, var(--ab-primary) 12%, var(--ab-white)); color: var(--ab-primary); }
.ab-form-notice.is-error { background: color-mix(in srgb, var(--ab-accent) 12%, var(--ab-white)); color: var(--ab-accent); }

/* Newsletter (boxed) */
.ab-newsletter-row { display: flex; gap: 8px; padding: 6px; background: var(--ab-white); }
.ab-newsletter-row input[type="email"] { flex: 1; min-width: 0; border: 0; padding: 10px 16px; background: transparent; box-shadow: none; }
.ab-newsletter-row input[type="email"]:focus { box-shadow: none; }
.ab-newsletter-row .ab-button { width: 46px; height: 46px; padding: 0; }
.ab-newsletter-wrap .ab-consent { margin: 14px 0 0; }

/* Newsletter (minimal underlined line) */
.ab-newsletter-wrap.is-line { max-width: 300px; }
.ab-newsletter-wrap.is-line .ab-newsletter-row { align-items: center; gap: 10px; padding: 0 0 2px; background: transparent; border-bottom: 2px solid var(--ab-border); transition: border-color .2s ease; }
.ab-newsletter-wrap.is-line .ab-newsletter-row:focus-within { border-color: var(--ab-heading); }
.ab-newsletter-wrap.is-line .ab-newsletter-row > .ab-icon { width: 18px; height: 18px; stroke-width: 1.5; color: var(--ab-text); }
.ab-newsletter-wrap.is-line .ab-newsletter-row input[type="email"] { padding: 10px 0 22px; color: var(--ab-heading); font-size: 16px; background: transparent; border: 0; }
.ab-newsletter-wrap.is-line input[type="email"]::placeholder { color: var(--ab-text); opacity: 1; }
body button.ab-newsletter-submit.ab-newsletter-submit {
	display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; margin: 0; padding: 0;
	border: 0; border-radius: 0; background: transparent; box-shadow: none; color: var(--ab-heading); cursor: pointer;
}
body button.ab-newsletter-submit.ab-newsletter-submit:hover { color: var(--ab-accent); background: transparent; }
.ab-newsletter-submit .ab-icon { width: 22px; height: 22px; stroke-width: 1.6; }
.ab-newsletter-wrap.is-line .ab-consent { margin: 22px 0 0; align-items: center; }
.ab-newsletter-wrap.is-line .ab-consent input {
	appearance: none; -webkit-appearance: none; width: 16px; height: 16px; margin: 0; flex: none; cursor: pointer;
	border: 1px solid var(--ab-border); border-radius: 3px; background: transparent; display: grid; place-content: center;
}
.ab-newsletter-wrap.is-line .ab-consent input:checked { background: var(--ab-primary); border-color: var(--ab-primary); }
.ab-newsletter-wrap.is-line .ab-consent input:checked::after { content: ""; width: 8px; height: 4px; border: solid var(--ab-white); border-width: 0 0 2px 2px; transform: rotate(-45deg) translate(1px, -1px); }

/* Accordion (FAQ): numbered rows, thin rules, round toggle.
   Colors/typography come from the brand tokens, so it matches any page. */
.elementor-widget-n-accordion.ab-accordion .e-n-accordion { counter-reset: ab-faq; }
.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item {
	counter-increment: ab-faq; border: 0; border-top: 1px solid var(--ab-border); border-radius: 0;
	background: transparent; transition: background-color .3s ease;
}
.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item:last-of-type { border-bottom: 1px solid var(--ab-border); }
.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item[open] { background: color-mix(in srgb, var(--ab-heading) 4%, transparent); }
.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item-title {
	display: flex; align-items: center; justify-content: space-between; gap: 24px;
	padding: 26px 28px; cursor: pointer; background: transparent;
}
.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item-title-header { display: flex; align-items: baseline; gap: 18px; }
/* Question number, in the same style as the numbered lists elsewhere. */
.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item-title-header::before {
	content: "0" counter(ab-faq) ".";
	flex: none; color: var(--ab-text); opacity: .72;
	font-family: var(--e-global-typography-agh4-font-family, var(--ab-font-heading));
	font-size: var(--e-global-typography-agh4-font-size, 18px);
	font-weight: var(--e-global-typography-agh4-font-weight, 600);
}
.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item-title-text {
	margin: 0; color: var(--ab-heading); transition: color .2s ease;
	font-family: var(--e-global-typography-agh4-font-family, var(--ab-font-heading));
	font-size: var(--e-global-typography-agh4-font-size, 18px);
	font-weight: var(--e-global-typography-agh4-font-weight, 600);
	line-height: 1.4;
}
.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item-title:hover .e-n-accordion-item-title-text { color: var(--ab-accent); }
.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item-title-icon {
	flex: none; display: flex; align-items: center; justify-content: center; width: 42px; height: 42px;
	border: 1px solid var(--ab-border); border-radius: 50%; color: var(--ab-heading); transition: all .25s ease;
}
.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item-title-icon span { display: flex; height: auto; }
.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item-title-icon span > svg { width: 13px; height: 13px; fill: currentColor; }
.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item-title:hover .e-n-accordion-item-title-icon { border-color: var(--ab-accent); color: var(--ab-accent); }
.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon { background: var(--ab-accent); border-color: var(--ab-accent); color: var(--ab-white); }
/* Answer text lines up under the question, past the number. */
.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item > .e-con { padding: 0 82px 28px 74px; }
@media (max-width: 767px) {
	.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item-title { padding: 22px 18px; gap: 14px; }
	.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item-title-header { gap: 12px; }
	.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item-title-icon { width: 36px; height: 36px; }
	.elementor-widget-n-accordion.ab-accordion .e-n-accordion-item > .e-con { padding: 0 18px 22px 52px; }
}

/* Large quote mark on the testimonial band */
.elementor-widget-icon.ab-quote-mark .elementor-icon { color: var(--ab-heading); opacity: .5; }
.elementor-widget-icon.ab-quote-mark .elementor-icon svg { fill: currentColor; }

/* Outlined number: same display font, drawn as an outline. Fills on hover. */
.elementor-widget-heading.ab-num-outline .elementor-heading-title {
	font-family: var(--e-global-typography-agdisplay-font-family, var(--ab-font-heading));
	font-size: clamp(40px, 4vw, 62px); font-weight: 600; line-height: 1; letter-spacing: -.02em;
	color: transparent; -webkit-text-stroke: 1.5px var(--ab-heading); transition: all .3s ease;
}
.ab-step:hover .elementor-widget-heading.ab-num-outline .elementor-heading-title { color: var(--ab-accent); -webkit-text-stroke-color: var(--ab-accent); }
.e-con.ab-step { transition: border-color .3s ease; }
.e-con.ab-step:hover { --border-color: var(--ab-accent); border-color: var(--ab-accent); }

/* Offset frame behind a photo */
.e-con.ab-frame { position: relative; }
.e-con.ab-frame::after {
	content: ""; position: absolute; inset: 22px -22px -22px 22px; border: 1px solid var(--ab-border); pointer-events: none;
}
.e-con.ab-frame > .elementor-widget-image { position: relative; z-index: 1; }
@media (max-width: 767px) { .e-con.ab-frame::after { display: none; } }

/* Card: bordered block that lifts on hover */
.elementor-widget.ab-card, .e-con.ab-card {
	padding: 34px; border: 1px solid var(--ab-border); background: var(--ab-white);
	transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease;
}
.elementor-widget.ab-card:hover, .e-con.ab-card:hover { transform: translateY(-5px); border-color: transparent; box-shadow: 0 24px 50px rgba(0,0,0,.09); }
.elementor-widget-icon-box.ab-card:hover .elementor-icon { background-color: var(--ab-accent); color: var(--ab-white); }
@media (max-width: 767px) { .elementor-widget.ab-card, .e-con.ab-card { padding: 26px; } }

/* Oversized quotation mark behind a testimonial */
.e-con.ab-watermark { position: relative; }
.e-con.ab-watermark::before {
	content: "”"; position: absolute; top: -.16em; left: 0; right: 0; text-align: center;
	font-family: var(--ab-font-heading); font-size: clamp(200px, 22vw, 360px); line-height: .8;
	color: var(--ab-heading); opacity: .1; pointer-events: none;
}
.e-con.ab-watermark > * { position: relative; }

/* Marquee: small size for thin strips */
.ab-marquee.is-sm .ab-marquee-item, .ab-marquee.is-sm .ab-marquee-sep { font-size: clamp(16px, 1.6vw, 22px); letter-spacing: .04em; }
.ab-marquee.is-sm .ab-marquee-sep { padding: 0 1.1em; }

/* Portfolio grid: the card slides in on hover (projects are not links) */
.ab-projects { display: grid; grid-template-columns: repeat(var(--ab-projects-columns, 2), minmax(0, 1fr)); gap: 32px; }
.ab-project {
	position: relative; margin: 0; overflow: hidden; background: var(--ab-light);
	aspect-ratio: 632 / 690; display: flex; align-items: center; justify-content: center;
}
.ab-project img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .6s cubic-bezier(.2,.7,.2,1), filter .5s ease; filter: brightness(1) saturate(1); }
.ab-project:hover img, .ab-project:focus-within img { transform: scale(1.06); filter: brightness(.55) saturate(1.1); }
.ab-project-card {
	position: absolute; left: 50%; bottom: 24px; transform: translate(-50%, 24px); width: min(90%, 560px);
	display: grid; gap: 10px; padding: 34px 38px; text-align: center; background: var(--ab-white); font-style: normal;
	opacity: 0; visibility: hidden; transition: opacity .35s ease, transform .45s cubic-bezier(.2,.7,.2,1), visibility .35s;
}
.ab-project:hover .ab-project-card, .ab-project:focus-within .ab-project-card { opacity: 1; visibility: visible; transform: translate(-50%, 0); }
.ab-project-title {
	color: var(--ab-ink); font-style: normal;
	font-family: var(--e-global-typography-agh4-font-family, var(--ab-font-heading));
	font-size: var(--e-global-typography-agh4-font-size, 18px);
	font-weight: var(--e-global-typography-agh4-font-weight, 600);
	line-height: 1.3;
}
.ab-project-summary { color: var(--ab-ink-soft); font-family: var(--ab-font-body); font-size: 15px; font-style: normal; line-height: 1.5; }
@media (max-width: 1024px) { .ab-projects { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; } }
@media (max-width: 767px) { .ab-projects { grid-template-columns: 1fr; gap: 16px; } }
/* Touch screens: no hover, so the card stays visible under the photo. */
@media (hover: none) and (pointer: coarse) {
	.ab-project-card { position: static; transform: none; opacity: 1; visibility: visible; width: 100%; text-align: left; }
	.ab-project { aspect-ratio: auto; display: block; }
	.ab-project img { aspect-ratio: 632 / 690; }
}

/* ab-fixed-header-offset: non-Elementor templates (single posts, archives) start below the fixed header. */
.single-post .site-main,
.archive .site-main,
.search .site-main,
.error404 .site-main { padding-top: 170px; }
@media (max-width: 767px) {
	.single-post .site-main,
	.archive .site-main,
	.search .site-main,
	.error404 .site-main { padding-top: 130px; }
}

/* ab-single-post-type: article headings sized for reading. */
.single-post h1.entry-title { font-size: clamp(32px, 4vw, 52px); line-height: 1.15; }
.single-post .page-content h2 { font-size: clamp(22px, 2.4vw, 32px); line-height: 1.25; margin-top: 1.6em; }
.single-post .page-content h3 { font-size: clamp(19px, 2vw, 24px); line-height: 1.3; }
