/* ==========================================================================
   Atelier Stamba: Elementor compatibility.
   main.css is the unchanged site stylesheet. This file only switches off
   Elementor's own spacing and resets inside the section containers, and adds
   the few theme-level rules WordPress needs (admin bar, header-hidden state).
   ========================================================================== */

/* Section containers hold one HTML widget each and must add no padding, gap or margin of their own. */
.elementor .e-con.sd-raw,
.elementor .e-con.sd-raw > .e-con-inner {
	--padding-top: 0px; --padding-right: 0px; --padding-bottom: 0px; --padding-left: 0px;
	--margin-top: 0px; --margin-bottom: 0px;
	--gap: 0px; --row-gap: 0px; --column-gap: 0px;
	padding: 0; margin: 0; gap: 0; max-width: none; width: 100%;
}
.elementor .sd-raw > .elementor-widget { width: 100%; max-width: 100%; margin: 0; --kit-widget-spacing: 0px; }
.elementor .sd-raw > .elementor-widget > .elementor-widget-container { margin: 0; padding: 0; }

/* Elementor resets links, images and lists inside .elementor; put back what the design relies on. */
body .elementor .textlink { text-decoration: underline; text-underline-offset: 5px; text-decoration-thickness: 1px; }
body .elementor .crumbs a:hover { text-decoration: underline; text-underline-offset: 4px; }
body .elementor .btn { text-decoration: none; }
body .elementor .filters, body .elementor .features, body .elementor .checks { list-style: none; }
body .elementor img { max-width: 100%; }

/* Keep the page free of the empty space Elementor adds below its last element. */
.elementor { overflow: visible; }

/* WordPress admin bar pushes the fixed header down. */
.admin-bar .site-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .site-header { top: 46px; } }

/* The sticky services bar sits under the header; when the header slides away it moves up with it. */
.svc-nav { transition: top .5s cubic-bezier(.2, .7, .2, 1); }
.header-hidden .svc-nav { top: 0; }

/* Theme-rendered pages without Elementor (blog index, 404). */
.plain-page { padding: calc(var(--header-h) + 60px) var(--pad) var(--space); max-width: var(--max); margin: 0 auto; }

/* Elementor's own stylesheet sets `.elementor img { height: auto }`, which loads after main.css and leaves the photo
   panels, cards and tiles only as tall as their image. Re-assert the fill rules at higher specificity. */
body .elementor .hp__img img,
body .elementor .page-hero__img img,
body .elementor .reveal-img img,
body .elementor .svc-card__img img,
body .elementor .proj__img img,
body .elementor .cta-band__img img,
body .elementor .tcard img,
body .elementor .post__media img { width: 100%; height: 100%; max-width: none; object-fit: cover; }
body .elementor .philo__media img { width: 100%; height: 128%; max-width: none; object-fit: cover; }
body .elementor .tcard img { position: absolute; inset: 0; }

/* The HTML widget must span the whole container, whatever alignment the Elementor kit applies, or grids inside it
   shrink to their content and text wraps one word per line. */
body .elementor .e-con.sd-raw { display: block; width: 100%; max-width: 100%; align-items: stretch; }
body .elementor .e-con.sd-raw > .elementor-widget,
body .elementor .e-con.sd-raw > .e-con-inner > .elementor-widget,
body .elementor .e-con.sd-raw .elementor-widget-container { display: block; width: 100%; max-width: 100%; min-width: 0; flex: 1 1 100%; }


/* ==========================================================================
   Native Elementor build: containers, Heading, Text Editor, Button and Image widgets carry the original class names.
   ========================================================================== */

/* Containers act as plain blocks unless a class from main.css makes them a grid or flex row. Elementor's own padding,
   gap and widget spacing are switched off; the classes provide the layout. */
body .elementor .elementor-element.e-con.sd { --display: block; --kit-widget-spacing: 0px; --widgets-spacing: 0px; --widgets-spacing-row: 0px; --widgets-spacing-column: 0px; min-width: 0; }
body .elementor .e-con.sd > .elementor-widget { margin-block-end: 0; }

/* Headings and text keep the theme's type. */
.elementor-heading-title { line-height: 1.12; margin: 0 0 .5em; padding: 0; }
body .elementor .elementor-widget-text-editor { color: inherit; font-family: inherit; font-weight: inherit; font-size: inherit; line-height: inherit; }
body .elementor .e-con.sd > .elementor-widget-text-editor, body .elementor .e-con.sd > .elementor-widget-heading, body .elementor .tcard .elementor-widget-image { position: static; }
body .elementor .elementor-widget-text-editor p:last-child { margin-bottom: 1.1em; }

/* Image widgets that stand in for a sized photo box. */
body .elementor .elementor-widget-image.fill .elementor-widget-container { height: 100%; }
body .elementor .elementor-widget-image.fill img { display: block; width: 100%; height: 100%; max-width: none; object-fit: cover; }
body .elementor .elementor-widget-image.rimg { overflow: hidden; margin: 0; }
body .elementor .elementor-widget-image.pic img { display: block; }
body .elementor .elementor-widget-image.philo__media img { top: 0; height: 100%; }
body .elementor .elementor-widget-image.page-hero__img { inset: 0; }
body .elementor .tcard .elementor-widget-image img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; max-width: none; }

/* Buttons: the Button widget wears the .btn look. */
body .elementor .elementor-widget-button.nbtn { display: inline-block; width: auto; }
body .elementor .nbtn .elementor-button { font: inherit; border-radius: 0; text-decoration: none; box-shadow: none; }
body .elementor .nbtn .elementor-button { position: relative; isolation: isolate; overflow: hidden; display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 52px; padding: 13px 32px; border: 1px solid var(--ink); background: transparent; color: var(--ink); font: 600 12.5px/1.3 var(--sans); letter-spacing: .2em; text-transform: uppercase; text-decoration: none; text-align: center; cursor: pointer; transition: color .35s var(--ease), border-color .35s; }
body .elementor .nbtn .elementor-button::before { content: ''; position: absolute; inset: 0; z-index: -1; background: var(--ink); transform: translateY(101%); transition: transform .45s var(--ease); }
body .elementor .nbtn .elementor-button:hover::before, body .elementor .nbtn .elementor-button:focus-visible::before { transform: none; }
body .elementor .nbtn .elementor-button:hover, body .elementor .nbtn .elementor-button:focus-visible { color: #fff; }
body .elementor .nbtn--solid .elementor-button { background: var(--ink); color: #fff; }
body .elementor .nbtn--solid .elementor-button::before { background: var(--accent); }
body .elementor .nbtn--solid .elementor-button:hover { border-color: var(--accent); }
body .elementor .nbtn--light .elementor-button { border-color: #fff; color: #fff; }
body .elementor .nbtn--light .elementor-button::before { background: #fff; }
body .elementor .nbtn--light .elementor-button:hover, body .elementor .nbtn--light .elementor-button:focus-visible { color: var(--ink); }
body .elementor .nbtn--white .elementor-button { background: #fff; border-color: #fff; color: var(--ink); }
body .elementor .nbtn--white .elementor-button::before { background: var(--accent-l); }
body .elementor .nbtn--white .elementor-button:hover { color: var(--ink); border-color: var(--accent-l); }

/* Services: the sticky bar is the widget itself (a sticky element only sticks inside its parent). */
body .elementor .svc-nav-w { position: sticky; top: 68px; z-index: 50; transition: top .5s cubic-bezier(.2, .7, .2, 1); }
body .elementor .svc-nav-w .svc-nav { position: static; }
.header-hidden .svc-nav-w { top: 0; }
body .elementor .sd-viewer { position: static; }

/* Elementor's default kit paints headings blue Roboto and text grey. Point its global colour and font variables at the theme's. */
body[class*="elementor-kit-"] {
	--e-global-color-primary: var(--ink); --e-global-color-secondary: var(--ink); --e-global-color-text: var(--text); --e-global-color-accent: var(--accent);
	--e-global-typography-primary-font-family: 'Bellefair'; --e-global-typography-primary-font-weight: 400;
	--e-global-typography-secondary-font-family: 'Bellefair'; --e-global-typography-secondary-font-weight: 400;
	--e-global-typography-text-font-family: 'Josefin Sans'; --e-global-typography-text-font-weight: 400;
	--e-global-typography-accent-font-family: 'Josefin Sans'; --e-global-typography-accent-font-weight: 600;
}

/* Two-column cards (number or icon beside the text) use flex instead of grid tracks, so a stylesheet optimiser or a
   container default can never collapse the text column to one word per line. */
body .elementor .col-item, body .elementor .info-card { display: flex; flex-direction: row; flex-wrap: nowrap; align-items: flex-start; }
body .elementor .col-item > :first-child { flex: 0 0 70px; width: 70px; }
body .elementor .info-card > :first-child { flex: 0 0 54px; width: 54px; }
body .elementor .col-item > :last-child, body .elementor .info-card > :last-child { flex: 1 1 0; width: auto; min-width: 0; max-width: 100%; }

/* Pages saved by an older version of this theme (and cached) hold empty <p></p> items that take up grid cells and push
   the text into a narrow column. They carry no content, so hide them. */
p:empty { display: none; }
