/* WordPress / Elementor layer — loaded after site.css. Elementor wraps every widget in a plain
   <div class="elementor-element elementor-widget …"> and every row in <div class="e-con …">; on the front end the
   theme dequeues Elementor's stylesheet, so these rules make the wrappers transparent to the design-system layout. */
.e-con, .elementor-widget, .elementor-widget-container { min-width: 0; }
@media (min-width: 1024px) { .e-con.article-aside { position: sticky; top: 88px; align-self: start; } }
@media (min-width: 1240px) { .e-con.article-rail { position: sticky; top: 88px; align-self: start; } }
/* reading column: the 74ch measure applies to the content inside each wrapper, not the wrapper itself */
@media (min-width: 1240px) {
  .has-rail .prose > .elementor-element { max-width: none; }
  .has-rail .prose > .elementor-element > *, .has-rail .prose > .elementor-element > .elementor-widget-container > * { max-width: 74ch; }
  .has-rail .prose > .elementor-element > .cta-block, .has-rail .prose > .elementor-element > .daylight, .has-rail .prose > .elementor-element > .table-wrap, .has-rail .prose > .elementor-element > .issues, .has-rail .prose > .elementor-element > .city-grid,
  .has-rail .prose > .elementor-element > .elementor-widget-container > .cta-block, .has-rail .prose > .elementor-element > .elementor-widget-container > .daylight, .has-rail .prose > .elementor-element > .elementor-widget-container > .table-wrap, .has-rail .prose > .elementor-element > .elementor-widget-container > .issues, .has-rail .prose > .elementor-element > .elementor-widget-container > .city-grid { max-width: none; }
}
/* nested .prose (prose widget inside the prose column) must not re-apply the measure or font-size */
.prose .prose { max-width: none; font-size: inherit; line-height: inherit; }
/* rhythm between stacked widgets inside the reading column (mirrors the static page's flow spacing) */
.prose > .elementor-element + .elementor-element { margin-top: 1.5rem; }
.prose > .elementor-element:has(> .inshort, > .takeaways) + .elementor-element { margin-top: 2rem; }
.article-aside > .elementor-element, .article-rail > .elementor-element { min-width: 0; } /* the columns are grids: their gap provides the rhythm */
/* a hidden rail card must not leave an empty grid track: hide its Elementor wrapper too */
@media (max-width: 1239px) { .article-rail > .elementor-element:has(> .rail-related), .article-rail > .elementor-element:has(> .rail-links), .article-rail > .elementor-element:has(> .elementor-widget-container > .rail-related), .article-rail > .elementor-element:has(> .elementor-widget-container > .rail-links) { display: none; } }
@media (max-width: 1023px) { .article-aside > .elementor-element:has(.author-box-compact) { display: none; } }
/* the article body grid container rows */
.e-con.article-grid { display: grid; }
/* WordPress adds classes to featured images; keep the theme's fill behaviour */
.card-media img.wp-post-image, .article-img img, .article-hero img { width: 100%; height: auto; }
.card-media img { width: 100%; height: 100%; object-fit: cover; }
/* contact form: server-side error state */
.form .err:not([hidden]) { display: block; }
.form-status.is-error { color: var(--danger, #9b2c2c); }
/* header/footer templates: the Elementor wrappers must not become the sticky header's containing block */
.cs-chrome, .cs-chrome > .elementor, .cs-chrome .e-con, .cs-chrome .e-con-inner, .cs-chrome .elementor-widget, .cs-chrome .elementor-widget-container { display: contents; }
/* generic WP content inside prose (block editor posts) */
.prose .wp-block-image img, .prose > p > img, .prose figure img { max-width: 100%; height: auto; border-radius: 12px; }
.prose figure { margin: 1.5rem 0; }
.screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.admin-bar .site-header.is-overlay { top: 32px; }
@media (max-width: 782px) { .admin-bar .site-header.is-overlay { top: 46px; } }
