/* ==========================================================================
   AWS Services - Elementor bridge
   Pages built in Elementor reuse the same awsh- classes as the coded pages.
   These rules make Elementor's containers and widgets behave like the plain
   HTML they replace, so site.css styles them the same way.
   ========================================================================== */

/* Containers: plain boxes unless an awsh- class gives them a layout */
.awsh.e-con,
.awsh .e-con {
	--display: block !important;
	--flex-direction: row !important;
	--flex-wrap: nowrap !important;
	--justify-content: normal !important;
	--align-items: normal !important;
	--gap: 0px !important;
	--row-gap: 0px !important;
	--column-gap: 0px !important;
	--padding-top: 0px !important;
	--padding-right: 0px !important;
	--padding-bottom: 0px !important;
	--padding-left: 0px !important;
	--margin-top: 0px !important;
	--margin-right: 0px !important;
	--margin-bottom: 0px !important;
	--margin-left: 0px !important;
	--width: auto !important;
	--min-height: 0px !important;
	--container-widget-width: auto !important;
	--container-widget-flex-grow: 0 !important;
	--kit-widget-spacing: 0px !important;
	--widgets-spacing: 0px !important;
	--widgets-spacing-row: 0px !important;
	--widgets-spacing-column: 0px !important;
}
.awsh.e-con { width: 100%; max-width: none; }
.awsh .e-con.aws-wrap { width: 100%; max-width: 1288px; margin-left: auto; margin-right: auto; padding-left: 24px; padding-right: 24px; }
@media (max-width: 767px) { .awsh .e-con.aws-wrap { padding-left: 18px; padding-right: 18px; } }
.awsh .e-con.awsh-section,
.awsh .e-con.awsh-hero,
.awsh .e-con.awsh-trust,
.awsh .e-con.awsh-cta,
.awsh .e-con.awsh-urgent { width: 100%; }

/* Elementor draws background overlays with .e-con::before. Containers that
   carry an awsh- class use ::before/::after for their own icons and rules, so
   start those from a clean slate (site styles that set them still win). */
.elementor.elementor.elementor .awsh .e-con:where([class*="awsh-"])::before,
.elementor.elementor.elementor .awsh .e-con:where([class*="awsh-"])::after {
	position: static; inset: auto; top: auto; left: auto; width: auto; height: auto; opacity: 1;
	mix-blend-mode: normal; transition: none; border-radius: 0; z-index: auto; background: none;
}

/* Widgets: no automatic spacing (the awsh- classes set their own) */
.awsh .elementor-widget { margin-block-end: 0; }
.awsh .elementor-widget:not(:last-child) { margin-block-end: 0; }
.awsh .elementor-widget-container { padding: 0; margin: 0; }

/* Headings and text: inner tags take their look from the widget's awsh- class */
.awsh .elementor-heading-title { padding: 0; margin: 0; }
.awsh .elementor-widget-heading[class*="awsh-"] > .elementor-heading-title,
.awsh .elementor-widget-heading[class*="awsh-"] > .elementor-widget-container > .elementor-heading-title {
	font-family: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;
	letter-spacing: inherit; color: inherit; text-transform: inherit; font-style: inherit;
}
.awsh .elementor-widget-heading:not([class*="awsh-"]) :is(h1, h2, h3, h4, h5, h6).elementor-heading-title { color: var(--aws-navy-950); font-family: var(--aws-font-heading); }
.awsh .elementor-widget-heading h1.elementor-heading-title,
.awsh .elementor-widget-heading h2.elementor-heading-title,
.awsh .elementor-widget-heading h3.elementor-heading-title,
.awsh .elementor-widget-heading h4.elementor-heading-title { font-weight: 800; letter-spacing: -0.03em; line-height: 1.12; }
/* A heading widget with an awsh- class stands in for the h1-h4 itself, so it
   starts from the same base heading look before its class styles apply. */
html .awsh .elementor-widget-heading[class*="awsh-"]:has(> :is(h1, h2, h3, h4)) {
	font-family: var(--aws-font-heading); letter-spacing: -0.03em; line-height: 1.12; color: var(--aws-navy-950); font-weight: 800;
}
/* Links take the page font, not the Elementor Site Settings link font */
.elementor .awsh a { font-family: inherit; }
.awsh .elementor-widget-heading .elementor-heading-title a { color: inherit; font: inherit; }
.awsh .elementor-widget-heading div.elementor-heading-title,
.awsh .elementor-widget-heading span.elementor-heading-title,
.awsh .elementor-widget-heading p.elementor-heading-title { font: inherit; letter-spacing: inherit; color: inherit; text-transform: inherit; }
/* Plain h1-h6 headings start from the browser size, like the coded pages,
   instead of the Elementor Site Settings size */
.awsh .elementor-widget-heading :is(h1, h2, h3, h4, h5, h6).elementor-heading-title { font-size: revert; }
.awsh .elementor-widget-text-editor { color: inherit; font-family: inherit; font-size: inherit; line-height: inherit; font-weight: inherit; }
.awsh .elementor-widget-text-editor > p:last-child { margin-bottom: 0; }
.awsh .awsh-prose > .elementor-widget-text-editor p + p { margin-top: 18px; }
.awsh .awsh-prose > * + * { margin-top: 18px; }
.awsh .awsh-prose > .awsh-eyebrow + * { margin-top: 0; }

/* Text links and small labels sit at their natural width */
.awsh .elementor-widget.awsh-link,
.awsh .elementor-widget.awsh-state,
.awsh .elementor-widget.awsh-tag,
.awsh .elementor-widget.awsh-step__num { width: auto; align-self: flex-start; }
.awsh .elementor-widget.awsh-link { display: inline-block; justify-self: start; }
.awsh .awsh-prose .elementor-widget.awsh-link { margin-top: 18px; }
.awsh .elementor-widget.awsh-tag { position: absolute; }
.awsh .awsh-hl { color: var(--aws-amber); }

/* Buttons: the widget wrapper carries the awsh-btn look (from site.css), and
   Elementor's inner link is made invisible but still fills the whole button. */
.elementor.elementor.elementor .awsh .elementor-widget-button[class*="awsh-btn"] { position: relative; cursor: pointer; }
.elementor.elementor.elementor .awsh .elementor-widget-button[class*="awsh-btn"]:focus-within { outline: 2px solid var(--aws-amber); outline-offset: 2px; }
.elementor.elementor.elementor.elementor .awsh .elementor-widget-button[class*="awsh-btn"] .elementor-button {
	all: unset; display: inline-flex; align-items: center; justify-content: center; gap: inherit;
	color: inherit; font: inherit; letter-spacing: inherit; white-space: nowrap; cursor: pointer; width: 100%;
}
.elementor.elementor.elementor.elementor .awsh .elementor-widget-button[class*="awsh-btn"] .elementor-button::before { content: ""; position: absolute; inset: 0; }
.elementor.elementor.elementor.elementor .awsh .elementor-widget-button[class*="awsh-btn"] .elementor-button-content-wrapper { display: inline-flex; align-items: center; gap: inherit; }
.elementor.elementor.elementor.elementor .awsh .elementor-widget-button[class*="awsh-btn"] .elementor-button-icon { display: inline-flex; font-size: inherit; margin: 0; }
.elementor.elementor.elementor.elementor .awsh .elementor-widget-button[class*="awsh-btn"] .elementor-button-icon svg { width: 15px; height: 15px; fill: currentColor; }
.elementor.elementor.elementor.elementor .awsh .elementor-widget-button[class*="awsh-btn"] .elementor-button-text { all: unset; }
.awsh .awsh-hero__ctas .elementor-widget-button .elementor-button,
.awsh .awsh-cta__btns .elementor-widget-button .elementor-button,
.awsh .awsh-head--action .elementor-widget-button .elementor-button { min-height: 58px; padding: 0 26px; font-size: 16px; }
.awsh .awsh-map__panel .elementor-widget-button .elementor-button { min-height: 52px; font-size: 16px; }
.awsh .awsh-head--action > .elementor-widget-button { justify-self: end; }
@media (max-width: 900px) { .awsh .awsh-head--action > .elementor-widget-button { justify-self: start; } }
@media (max-width: 767px) {
	.awsh .awsh-hero__ctas > .elementor-widget-button,
	.awsh .awsh-hero__ctas > .elementor-widget-button .elementor-button { width: 100%; }
}
@media (max-width: 560px) {
	.awsh .awsh-cta__btns > .elementor-widget-button,
	.awsh .awsh-cta__btns > .elementor-widget-button .elementor-button,
	.awsh .awsh-actions > .elementor-widget-button,
	.awsh .awsh-actions > .elementor-widget-button .elementor-button { width: 100%; }
}

/* Lists: Elementor's list disappears from the layout, so each item is laid
   out by the awsh- class exactly like the coded <li> items */
.awsh .elementor-widget-icon-list[class*="awsh-"] .elementor-icon-list-items { display: contents; }
.awsh .elementor-widget-icon-list .elementor-icon-list-item { margin: 0; padding: 0; font-size: inherit; }
.awsh .elementor-widget-icon-list .elementor-icon-list-item > a { width: 100%; font-size: inherit; }
.awsh .elementor-widget-icon-list .elementor-icon-list-text { color: inherit; font: inherit; padding: 0; letter-spacing: inherit; transition: none; }
.awsh .elementor-widget-icon-list .elementor-icon-list-icon { display: none; }
.awsh .elementor-widget-icon-list.awsh-ticks li,
.awsh .elementor-widget-icon-list.awsh-hero__points li { display: flex; }
.awsh .elementor-widget-icon-list.awsh-related .elementor-icon-list-item > a { display: inline-flex; align-items: center; gap: 8px; padding: 11px 16px; background: #fff; border: 1px solid var(--aws-border); border-radius: 999px; font-size: 14px; font-weight: 600; color: var(--aws-navy-950); width: auto; }
.awsh .elementor-widget-icon-list.awsh-related .elementor-icon-list-item > a::after { content: "\2192"; color: var(--aws-amber); }
.awsh .elementor-widget-icon-list.awsh-related .elementor-icon-list-item > a:hover { border-color: var(--aws-amber); }

/* Images fill their frames */
.awsh :is(.awsh-media, .awsh-frame, .awsh-video) > .elementor-widget-image { position: absolute; inset: 0; margin: 0; text-align: left; }
.awsh :is(.awsh-media, .awsh-frame, .awsh-video) > .elementor-widget-image img { display: block; width: 100%; height: 100%; max-width: none; object-fit: cover; border-radius: 0; }
.awsh .awsh-video > .elementor-widget-html { position: absolute; inset: 0; pointer-events: none; }
.awsh .awsh-video > .awsh-video__label { position: absolute; left: 16px; bottom: 16px; width: auto; }

/* Hero background photo set in Elementor (Style > Background) */
.awsh .e-con.awsh-hero { background-color: var(--aws-navy-950); }

/* FAQ accordion */
.awsh .awsh-faq__list .e-n-accordion { gap: 0; }
.awsh .awsh-faq__list .e-n-accordion-item { border-top: 1px solid #d5dbe1; margin: 0; }
.awsh .awsh-faq__list .e-n-accordion-item:last-child { border-bottom: 1px solid #d5dbe1; }
.awsh .awsh-faq__list .e-n-accordion-item-title {
	display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 22px 0; border: 0; background: none;
	font-family: var(--aws-font-heading); font-size: 18px; font-weight: 700; letter-spacing: -0.02em; color: var(--aws-navy-950);
}
.awsh .awsh-faq__list .e-n-accordion-item-title-text { font: inherit; color: inherit; }
.awsh .awsh-faq__list .e-n-accordion-item-title:hover { color: var(--aws-amber-dark); }
.awsh .awsh-faq__list .e-n-accordion-item-title-icon { color: var(--aws-amber); fill: var(--aws-amber); }
.awsh .awsh-faq__list .e-n-accordion-item-title-icon svg { width: 14px; height: 14px; fill: var(--aws-amber); }
.awsh .awsh-faq__list .e-n-accordion-item > .e-con { padding: 0 40px 24px 0; border: 0; font-size: 15px; color: var(--aws-text-muted); line-height: 1.65; }
.awsh .awsh-faq__list .e-n-accordion-item > .e-con a { color: var(--aws-navy-950); font-weight: 600; border-bottom: 1px solid var(--aws-amber); }

/* Elementor Pro form inside the quote box */
.awsh .awsh-form .elementor-form-fields-wrapper { margin: 0 -5px; }
.awsh .awsh-form .elementor-field-group { padding: 0 5px; margin-bottom: 10px; }
.awsh .awsh-form .elementor-field-group.elementor-field-type-submit { margin-bottom: 0; margin-top: 4px; }
.awsh .awsh-form .elementor-field-textual,
.awsh .awsh-form .elementor-select-wrapper select {
	min-height: 44px; height: 44px; padding: 0 13px; background: #fff; border: 1px solid #d5dbe1; border-radius: var(--aws-radius);
	font-family: var(--aws-font-body); font-size: 14px; color: var(--aws-text); box-shadow: none;
}
.awsh .awsh-form textarea.elementor-field-textual { height: auto; min-height: 84px; padding: 12px 13px; }
.awsh .awsh-form .elementor-select-wrapper::before { color: var(--aws-text-muted); font-size: 12px; }
.awsh .awsh-form .elementor-field-textual:focus,
.awsh .awsh-form .elementor-select-wrapper select:focus { outline: none; border-color: var(--aws-amber); box-shadow: 0 0 0 3px rgba(241, 169, 0, 0.22); }
.awsh .awsh-form .elementor-button[type="submit"] { width: 100%; min-height: 54px; background: var(--aws-amber); color: var(--aws-navy-950); border-radius: var(--aws-radius); font-size: 16px; font-weight: 700; }
.awsh .awsh-form .elementor-button[type="submit"]:hover { background: #ffbb14; }
.awsh .awsh-form .elementor-button[type="submit"] svg { width: 14px; height: 14px; fill: currentColor; }
/* Labels are for screen readers only, like the coded form */
.awsh .awsh-form .elementor-field-group > .elementor-field-label:not(.elementor-screen-only) {
	position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
/* Two fields per row until very small phones */
@media (min-width: 481px) {
	.elementor.elementor.elementor .awsh .awsh-form .elementor-field-group.elementor-col-50 { width: 50%; }
}
.awsh .awsh-form .elementor-message { font-size: 14px; margin-top: 12px; }
.awsh .awsh-form .elementor-message.elementor-message-success { color: #14532d; background: #e8f5ec; padding: 12px 14px; border-radius: var(--aws-radius); }
.awsh .awsh-form .elementor-message.elementor-message-success::before { display: none; }

/* Map */
.awsh .awsh-map .elementor-widget-google_maps iframe { display: block; width: 100%; height: 340px; border: 0; }
.awsh .awsh-map .elementor-custom-embed { line-height: 0; }

/* Table inside a text editor widget */
.awsh .awsh-table-wrap { overflow-x: auto; }

/* Inside the Elementor editor */
.elementor-editor-active .awsh .awsh-faq__list .e-n-accordion-item > .e-con { min-height: 40px; }

/* FAQ: question on the left, +/- on the right */
.elementor.elementor .awsh .awsh-faq__list .e-n-accordion-item-title { flex-direction: row; justify-content: space-between; text-align: left; }
.elementor.elementor .awsh .awsh-faq__list .e-n-accordion-item-title-header { order: 1; flex: 1; justify-content: flex-start; text-align: left; }
.elementor.elementor .awsh .awsh-faq__list .e-n-accordion-item-title-icon { order: 2; flex-shrink: 0; margin-left: 16px; }

/* Filtered-out case study cards (the projects page filter sets [hidden]) */
.elementor .awsh [hidden] { display: none !important; }

/* ---------- Blog posts (Single Post template) ---------- */
/* Post info (date and author line in the hero) */
.elementor.elementor.elementor .awsh .elementor-widget-post-info.awsh-post-meta > .elementor-widget-container { display: contents; }
.elementor.elementor.elementor .awsh .elementor-widget-post-info.awsh-post-meta .elementor-icon-list-items { display: contents; }
.elementor.elementor.elementor .awsh .elementor-widget-post-info.awsh-post-meta .elementor-icon-list-item { margin: 0; padding: 0; font-size: inherit; }
.elementor.elementor.elementor .awsh .elementor-widget-post-info.awsh-post-meta .elementor-icon-list-item::after { display: none; }
.elementor.elementor.elementor .awsh .elementor-widget-post-info.awsh-post-meta .elementor-icon-list-icon { display: none; }
.elementor.elementor.elementor .awsh .elementor-widget-post-info.awsh-post-meta .elementor-icon-list-text,
.elementor.elementor.elementor .awsh .elementor-widget-post-info.awsh-post-meta .elementor-icon-list-text a { color: inherit; font: inherit; padding: 0; }

/* Post title in the hero is the h1 */
.elementor.elementor.elementor .awsh .awsh-post-hero .elementor-widget-theme-post-title .elementor-heading-title { color: #fff; font-family: var(--aws-font-heading); font-weight: 800; letter-spacing: -0.03em; line-height: 1.08; font-size: clamp(32px, 3.6vw, 50px); margin: 0 0 18px; }
@media (max-width: 767px) { .elementor.elementor.elementor .awsh .awsh-post-hero .elementor-widget-theme-post-title .elementor-heading-title { font-size: 30px; } }

/* Excerpt under the title */
.elementor.elementor.elementor .awsh .elementor-widget-theme-post-excerpt.awsh-hero__lead > .elementor-widget-container { color: inherit; font: inherit; }

/* Article text from the post editor */
.elementor.elementor.elementor .awsh .elementor-widget-theme-post-content.awsh-article { font-family: var(--aws-font-body); }
.elementor.elementor.elementor .awsh .elementor-widget-theme-post-content.awsh-article > .elementor-widget-container > * + * { margin-top: 22px; }

/* "More articles" cards (Posts widget). The section hides itself until there is another post to show. */
body:not(.elementor-editor-active) .awsh .awsh-more-posts:not(:has(.elementor-post)) { display: none; }
.elementor.elementor.elementor .awsh .awsh-post-list .elementor-posts-container { --grid-column-gap: 24px; --grid-row-gap: 24px; }
.elementor.elementor.elementor .awsh .awsh-post-list .elementor-post { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--aws-border); border-radius: var(--aws-radius-lg); overflow: hidden; transition: box-shadow var(--aws-transition), transform var(--aws-transition); }
.elementor.elementor.elementor .awsh .awsh-post-list .elementor-post:hover { box-shadow: var(--aws-shadow); transform: translateY(-2px); }
.elementor.elementor.elementor .awsh .awsh-post-list .elementor-post__thumbnail__link { display: block; margin: 0; width: 100%; }
.elementor.elementor.elementor .awsh .awsh-post-list .elementor-post__thumbnail { position: relative; padding-bottom: 60% !important; overflow: hidden; }
.elementor.elementor.elementor .awsh .awsh-post-list .elementor-post__thumbnail img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transform: none; }
.elementor.elementor.elementor .awsh .awsh-post-list .elementor-post__text { display: flex; flex-direction: column; flex: 1; padding: 22px 24px 24px; }
.elementor.elementor.elementor .awsh .awsh-post-list .elementor-post__title { margin: 0 0 10px; font-size: 19px; line-height: 1.3; font-weight: 800; letter-spacing: -0.02em; font-family: var(--aws-font-heading); }
.elementor.elementor.elementor .awsh .awsh-post-list .elementor-post__title a { color: var(--aws-navy-950); font: inherit; letter-spacing: inherit; }
.elementor.elementor.elementor .awsh .awsh-post-list .elementor-post__meta-data { order: -1; margin: 0 0 10px; font-size: 12.5px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--aws-amber-dark); }
.elementor.elementor.elementor .awsh .awsh-post-list .elementor-post__excerpt { margin: 0 0 18px; }
.elementor.elementor.elementor .awsh .awsh-post-list .elementor-post__excerpt p { font-size: 15px; line-height: 1.6; color: var(--aws-text-muted); margin: 0; }
.elementor.elementor.elementor .awsh .awsh-post-list .elementor-post__read-more { margin-top: auto; font-size: 14.5px; font-weight: 700; color: var(--aws-navy-950); border-bottom: 2px solid var(--aws-amber); align-self: flex-start; padding-bottom: 2px; }
.elementor.elementor.elementor .awsh .awsh-post-list .elementor-posts-nothing-found { font-size: 15px; color: var(--aws-text-muted); }
@media (max-width: 1024px) { .elementor.elementor.elementor .awsh .awsh-post-list .elementor-posts-container { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .elementor.elementor.elementor .awsh .awsh-post-list .elementor-posts-container { grid-template-columns: minmax(0, 1fr); } }

/* ---------- Video embed (Elementor Video widget, 1.7.0) ---------- */
.elementor.elementor.elementor .awsh .elementor-widget-video.awsh-video--embed .elementor-wrapper { border-radius: var(--aws-radius-lg); overflow: hidden; background: var(--aws-navy-800); }

/* Blog sidebar: centred sticky column (Elementor container) */
.elementor.elementor.elementor .awsh .e-con.awsh-post__aside { --justify-content: safe center; justify-content: safe center; }

/* Homepage hero: the quote card matches the text height on desktop (Elementor version of the site.css rules) */
@media (min-width: 1025px) {
	.elementor.elementor.elementor .awsh .e-con.awsh-hero:not(.awsh-hero--page) .awsh-hero__grid { align-items: stretch; }
	.elementor.elementor.elementor .awsh .e-con.awsh-hero:not(.awsh-hero--page) .e-con.awsh-hero__form { margin-top: 8px; align-self: stretch; display: flex; flex-direction: column; }
	.elementor.elementor.elementor .awsh .e-con.awsh-hero:not(.awsh-hero--page) .e-con.awsh-hero__form > .e-con.awsh-form { flex: 1 1 auto; display: flex; flex-direction: column; --justify-content: center; justify-content: center; padding: 36px 30px; }
	.elementor.elementor.elementor .awsh .e-con.awsh-hero:not(.awsh-hero--page) .awsh-form .elementor-heading-title { font-size: 28px; }
	.elementor.elementor.elementor .awsh .e-con.awsh-hero:not(.awsh-hero--page) .awsh-form__sub,
	.elementor.elementor.elementor .awsh .e-con.awsh-hero:not(.awsh-hero--page) .awsh-form__sub p { font-size: 16px; }
	.elementor.elementor.elementor .awsh .e-con.awsh-hero:not(.awsh-hero--page) .awsh-form__sub { margin-bottom: 30px; }
	.elementor.elementor.elementor .awsh .e-con.awsh-hero:not(.awsh-hero--page) .awsh-form .elementor-field-group { margin-bottom: 16px; }
	.elementor.elementor.elementor .awsh .e-con.awsh-hero:not(.awsh-hero--page) .awsh-form .elementor-field-textual,
	.elementor.elementor.elementor .awsh .e-con.awsh-hero:not(.awsh-hero--page) .awsh-form .elementor-select-wrapper select { height: 58px !important; min-height: 58px !important; font-size: 15px !important; }
	.elementor.elementor.elementor .awsh .e-con.awsh-hero:not(.awsh-hero--page) .awsh-form .elementor-select-wrapper select { font-size: 14px !important; }
	.elementor.elementor.elementor .awsh .e-con.awsh-hero:not(.awsh-hero--page) .awsh-form .elementor-button[type="submit"] { min-height: 64px !important; font-size: 17px !important; }
	.elementor.elementor.elementor .awsh .e-con.awsh-hero:not(.awsh-hero--page) .awsh-form__next,
	.elementor.elementor.elementor .awsh .e-con.awsh-hero:not(.awsh-hero--page) .awsh-form__next p { font-size: 14px; }
}

/* Frame that shows the whole image (before and after photos) */
.elementor.elementor.elementor .awsh .awsh-frame--fit { aspect-ratio: auto; }
.elementor.elementor.elementor .awsh .awsh-frame--fit > .elementor-widget-image { position: static; }
.elementor.elementor.elementor .awsh .awsh-frame--fit > .elementor-widget-image img { height: auto; object-fit: contain; }
