/*
 * What Elementor's and its add-ons' JavaScript used to do on the old site, done here in CSS (with assets/wabo.js).
 * Everything else about the look is the old site's own CSS in assets/vendor/ and assets/elementor/.
 */

/* Elementor Pro originally pins only the white logo/navigation row. */
.elementor-location-header { position: relative; z-index: 99; }
.elementor-location-header .elementor-element-c11ce0d.wabo-sticky-nav { position: fixed; top: var(--wabo-sticky-top, 0px); left: 0; width: 100%; z-index: 99; }
.elementor-location-header .elementor-element-da640cc p { margin-bottom: 14.4px; }
.elementor-location-header .search-nav { width: 291px !important; max-width: calc(100vw - 32px); }
.elementor-location-header .search-nav .e-search-input { height: 20px !important; }
.elementor-location-header .search-nav .e-search-input-wrapper > svg.e-fas-times { display: none; }
.elementor-location-header .login-hero h3 { margin-top: 8px; }
.elementor-location-header .login-hero h3 a { letter-spacing: normal; }
.elementor-location-header .login-hero :is(h3, .elementor-icon-box-title) { letter-spacing: normal; text-wrap: wrap; }
.elementor-location-header p { text-wrap: wrap; }
/* The live first homepage slide lets the carousel gradient show through its inner container. */
.elementor-11 .elementor-element.elementor-element-024acec { background-color: transparent !important; }
.elementor-11 .elementor-element.elementor-element-3e3828d .elementor-heading-title { text-wrap: wrap; letter-spacing: normal; overflow-wrap: normal; }
/* Live Monthly Highlights use Hello's visible single-post title. The imported
   Elementor kit hides entry titles globally, so restore this post type only. */
body.single-monthly-highlights h1.entry-title {
	display: block;
	font: 500 40px/48px Inter, sans-serif;
	margin: 8px 0 16px;
	color: #303a46;
}
/* The imported Elementor kit suppresses plain Hello page titles. The live
   archive, search and 404 templates show theirs. */
body.error404 .page-header h1.entry-title,
body.search .page-header h1.entry-title,
body.tax-events-categories .page-header h1.entry-title {
	display: block;
	font: 500 40px/48px Inter, sans-serif;
	color: #303a46;
}
.elementor-location-footer .elementor-element-107c669 p { margin-bottom: 14.4px; }
.elementor-location-footer p { text-wrap: wrap; }
body.error404 main.site-main { padding-block: 0; }


/* Menu drop-downs (were opened by SmartMenus) */

/* Imported Elementor sections carry their original spacing; the parent theme's
   generic main > section padding must not add 96px above and below each one. */
main > section:where(.elementor-element) { padding-block: 0; }

/* Cantata Edit gives content headings overflow-wrap:anywhere. Imported Elementor
   pages used normal word wrapping on live; their oversized mobile hero titles
   otherwise turn into one letter per line and enlarge the background section. */
main:is(.elementor, .site-main) .elementor-heading-title { overflow-wrap: normal; letter-spacing: normal; }
main.elementor .elementor-heading-title { text-wrap: wrap; }
/* Imported icon/image boxes and body widgets use Hello's normal word wrapping
   too. Cantata's generic text rule otherwise splits titles within a word. */
main.elementor :is(.elementor-icon-box-title, .elementor-image-box-title, .elementor-widget-text-editor, .elementor-widget-text-editor *) { overflow-wrap: normal; }

/* Imported WABO content used Hello's natural wrapping. The parent theme adds
   balanced headings and pretty paragraphs, which move words and change page
   height on otherwise unchanged Elementor pages and listing captions. */
main:is(.elementor, .site-main) :is(.elementor-icon-box-title, .elementor-image-box-title, p, figcaption, .jet-listing-dynamic-field__content),
main .elementor-11 :is(p, figcaption, .jet-listing-dynamic-field__content) {
	overflow-wrap: normal;
	text-wrap: wrap;
}
main:is(.elementor, .site-main) :is(h1, h2, h3, h4, h5, h6):not(.elementor-heading-title) { letter-spacing: normal; text-wrap: wrap; overflow-wrap: normal; }

/* Hello's content-heading scale applies inside imported rich text and search
   results. The Cantata parent scale otherwise enlarges search/privacy titles
   while shrinking job and award headings at narrow widths. */
main:is(.elementor, .site-main) .elementor-widget-text-editor :is(h2, h3, h4),
body.search main.site-main article.post h2.entry-title { font-family: Inter, sans-serif; font-weight: 500; line-height: 1.2; }
main:is(.elementor, .site-main) .elementor-widget-text-editor h2,
body.search main.site-main article.post h2.entry-title { font-size: 32px; }
main:is(.elementor, .site-main) .elementor-widget-text-editor h3 { font-size: 28px; }
main:is(.elementor, .site-main) .elementor-widget-text-editor h4 { font-size: 24px; }

/* Preserve Hello's paragraph spacing inside imported pages. The parent theme's
   last-child reset otherwise shortens text widgets and shifts centered heroes. */
main.elementor .elementor-widget-text-editor p { margin-block-end: .9rem; }

.elementor-nav-menu--main .elementor-nav-menu li { position: relative; }
.elementor-nav-menu--main .elementor-nav-menu > li > ul { top: 100%; left: 0; }
.elementor-nav-menu--main .elementor-nav-menu ul { width: max-content; min-width: 12em; }
.elementor-nav-menu--main .elementor-nav-menu ul ul { top: 0; left: 100%; }
.elementor-nav-menu--main .elementor-nav-menu li:hover > ul,
.elementor-nav-menu--main .elementor-nav-menu li:focus-within > ul { display: block; }
/* JS owns disclosure state so Escape can close while returning focus to its parent. */
.elementor-nav-menu--main .elementor-nav-menu > li[data-wabo-desktop-disclosure] > ul { display: none; }
.elementor-nav-menu--main .elementor-nav-menu > li[data-wabo-desktop-disclosure].wabo-desktop-open > ul { display: block; }
.elementor-nav-menu--dropdown .elementor-nav-menu li.wabo-open > ul { display: block; position: static; width: auto; }

/* Authored entrance content is visible by default, including failed/disabled JS. */
.elementor-invisible { visibility: visible; }

/* The welder photo gallery (was laid out by e-gallery's script): 4 / 2 / 1 columns, 3:2 pictures, 10px gaps */
.elementor-gallery__container { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
@media (max-width: 1024px) { .elementor-gallery__container { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) { .elementor-gallery__container { grid-template-columns: minmax(0, 1fr); } }
.elementor-gallery__container .e-gallery-item { position: relative; display: block; overflow: hidden; }
.elementor-gallery__container .e-gallery-image { position: relative; padding-bottom: 66.6667%; background: none; }
.elementor-gallery__container .e-gallery-image img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.elementor-gallery__container .elementor-gallery-item__overlay { position: absolute; inset: 0; opacity: 0; transition: opacity .3s; }
.elementor-gallery__container .e-gallery-item:hover .elementor-gallery-item__overlay { opacity: 1; }

/* This authored gallery retains four columns at the original 1024px boundary. */
@media (min-width: 1024px) and (max-width: 1024px) {
  .elementor-10277 .elementor-element-fb9583e .elementor-gallery__container { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .elementor-10277 .elementor-element-fb9583e .e-gallery-image { padding-bottom: 66.66%; }
}

/* Live slots keep the widget's own box */
.wabo-slot { display: contents; }

/* JetSmartFilters used an inline display:none on this accessible fieldset label. */
.jet-checkboxes-list-wrapper > legend { display: none; }

/* The meeting registration has its own page so the public event page retains live layout. */
.wabo-qbm-registration-page main.site-main { box-sizing: border-box; max-width: 1100px; margin: 0 auto; padding: 2rem 1.25rem 5rem; }

/* The submission route is new; keep the current site's content width and type. */
.wabo-job-submission { box-sizing: border-box; max-width: 960px; margin: 0 auto; padding: 2rem 1.25rem 5rem; }
.wabo-job-submission h1 { font: 500 40px/1.2 Inter, sans-serif; color: #303a46; }

/* Replacement service and membership pages use the live Hello page-title scale
   and responsive content width rather than the parent theme's landing-page hero. */
main.wabo-membership-registration { width: 100%; margin-inline: auto; }
.wabo-membership-registration > .page-content,
.wabo-service-page > .page-content { margin: 0; padding: 8px 0 5rem; }
.wabo-membership-registration > .page-content > h1,
.wabo-service-page > .page-content > h1 {
	font: 500 40px/48px Inter, sans-serif;
	color: #303a46;
	margin: 0 0 16px;
	overflow-wrap: normal;
	letter-spacing: normal;
	text-wrap: wrap;
}
@media (min-width: 576px) { main.wabo-membership-registration { max-width: 500px; } }
@media (min-width: 768px) { main.wabo-membership-registration { max-width: 600px; } }
@media (min-width: 992px) { main.wabo-membership-registration { max-width: 800px; } }
@media (min-width: 1200px) { main.wabo-membership-registration { max-width: 1140px; } }
@media (max-width: 575px) {
	main.wabo-membership-registration,
	main.wabo-service-page { padding-inline: 10px; }
	.wabo-membership-registration > .page-content > h1,
	.wabo-service-page > .page-content > h1 { padding-inline: 10px; }
}

/* The member account is a new page; use the site's existing content width and colors. */
.wabo-account-page main.site-main { box-sizing: border-box; max-width: 1100px; margin: 0 auto; padding: 2rem 1.25rem 5rem; }
.wabo-account-page .wabo-account-title { margin: 0 0 1.5rem; }
.wabo-account-page .wabo-member-summary,
.wabo-account-page .wabo-member-profile { border: 1px solid #d7d7d7; padding: 1.5rem; margin-bottom: 2rem; }
.wabo-account-page .wabo-member-summary h2,
.wabo-account-page .wabo-member-profile h2 { margin-top: 0; }
.wabo-account-page .wabo-member-summary dl { display: grid; grid-template-columns: minmax(7rem, max-content) 1fr; gap: .5rem 1.5rem; margin: 0; }
.wabo-account-page .wabo-member-summary dt { font-weight: 700; }
.wabo-account-page .wabo-member-summary dd { margin: 0; }
.wabo-account-page .wabo-member-profile form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem 1.5rem; }
.wabo-account-page .wabo-member-profile form p { margin: 0; }
.wabo-account-page .wabo-member-profile input { box-sizing: border-box; width: 100% !important; max-width: 100%; }
@media (max-width: 767px) {
	.wabo-account-page .wabo-member-profile form { grid-template-columns: 1fr; }
	.wabo-account-page .wabo-member-summary dl { grid-template-columns: 1fr; gap: .2rem; }
	.wabo-account-page .wabo-member-summary dd { margin-bottom: .75rem; }
}

/* Preserve original Hello list spacing in retained Elementor text widgets. */
main.elementor .elementor-widget-text-editor :is(ul, ol) { margin-block: 0; }

/* The homepage is nested inside main; preserve its original Hello text defaults. */
main .elementor-11 .elementor-widget-text-editor p,
main .elementor-11 .jet-listing-dynamic-field__content p { margin-block-end: .9rem; }
main .elementor-11 .jet-listing-dynamic-field__content :is(ul, ol) { margin-block: 0; }
main .elementor-11 .elementor-heading-title { letter-spacing: normal; overflow-wrap: normal; text-wrap: wrap; }
main .elementor-11 .elementor-widget-text-editor p { overflow-wrap: normal; text-wrap: wrap; }
main .elementor-11 .text-balance .elementor-heading-title { text-wrap: balance; }

/* The live code schedule keeps this imported container within its viewport.
   Its stored 124.256% Elementor width otherwise expands the flat staging page. */
.elementor-711 .elementor-element.elementor-element-53381ce { --width: 100%; }

/* Restore the original Annual Business Meeting slide, distinct from ShakeOut. */
.elementor-11 .elementor-element.elementor-element-1955984 { --display: flex; --flex-direction: row; --container-widget-width: initial; --container-widget-height: 100%; --container-widget-flex-grow: 1; --container-widget-align-self: stretch; --flex-wrap-mobile: wrap; --gap: 0px 0px; --row-gap: 0px; --column-gap: 0px; --padding-top: 1rem; --padding-bottom: 1rem; --padding-left: 1rem; --padding-right: 1rem; }
.elementor-11 .elementor-element.elementor-element-1955984:not(.elementor-motion-effects-element-type-background), .elementor-11 .elementor-element.elementor-element-1955984 > .elementor-motion-effects-container > .elementor-motion-effects-layer { background-color: var( --e-global-color-81b1f91 ); }
.elementor-11 .elementor-element.elementor-element-d305aaa { --display: flex; --flex-direction: column; --container-widget-width: calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% ); --container-widget-height: initial; --container-widget-flex-grow: 0; --container-widget-align-self: initial; --flex-wrap-mobile: wrap; --justify-content: center; --align-items: center; --gap: 1rem 1rem; --row-gap: 1rem; --column-gap: 1rem; --padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px; }
.elementor-11 .elementor-element.elementor-element-dc96e5b { text-align: center; }
.elementor-11 .elementor-element.elementor-element-dc96e5b .elementor-heading-title { font-family: Inter, sans-serif; font-size: 1.3rem; font-weight: 700; line-height: 1.2rem; color: var( --e-global-color-875ba23 ); }
.elementor-11 .elementor-element.elementor-element-2ce02ad .elementor-heading-title { font-family: Inter, sans-serif; font-size: 3.2rem; font-weight: 700; color: var( --e-global-color-875ba23 ); }
.elementor-11 .elementor-element.elementor-element-6ffcc9c .elementor-heading-title { font-family: var( --e-global-typography-accent-font-family ), Sans-serif; font-size: var( --e-global-typography-accent-font-size ); font-weight: var( --e-global-typography-accent-font-weight ); line-height: var( --e-global-typography-accent-line-height ); color: var( --e-global-color-875ba23 ); }
.elementor-11 .elementor-element.elementor-element-b4e29d9 .elementor-button { background-color: var( --e-global-color-accent ); font-family: Inter, sans-serif; font-size: 1.2rem; font-weight: 700; line-height: 1.2rem; border-style: none; }
.elementor-11 .elementor-element.elementor-element-b4e29d9 .elementor-button:hover, .elementor-11 .elementor-element.elementor-element-b4e29d9 .elementor-button:focus { background-color: var( --e-global-color-875ba23 ); color: var( --e-global-color-secondary ); }
.elementor-11 .elementor-element.elementor-element-b4e29d9 .elementor-button:hover svg, .elementor-11 .elementor-element.elementor-element-b4e29d9 .elementor-button:focus svg { fill: var( --e-global-color-secondary ); }
@media (min-width: 768px) { .elementor-11 .elementor-element.elementor-element-d305aaa { --width: 100%; } }
@media (max-width: 1024px) { .elementor-11 .elementor-element.elementor-element-6ffcc9c .elementor-heading-title { font-size: var( --e-global-typography-accent-font-size ); line-height: var( --e-global-typography-accent-line-height ); } }
@media (max-width: 767px) { .elementor-11 .elementor-element.elementor-element-2ce02ad { text-align: center; } }
@media (max-width: 767px) { .elementor-11 .elementor-element.elementor-element-6ffcc9c .elementor-heading-title { font-size: var( --e-global-typography-accent-font-size ); line-height: var( --e-global-typography-accent-line-height ); } }

/* Retain Hello heading margins on the About icon cards and current job listings.
   The parent heading reset removes the original 8px top / 16px bottom spacing. */
main.elementor-392 .elementor-icon-box-title,
main.elementor-396 .elementor-widget-text-editor h3 { margin-block: 8px 16px; }

/* Preserve the original Steel Fabricator Gayle/Caldwell row. This retained
   Elementor fragment needs its original grid/padding/mobile rules explicitly. */
.elementor-489 .elementor-element.elementor-element-1b84c8f { --display: grid; --min-height: 42px; --e-con-grid-template-columns: repeat(2, 1fr); --e-con-grid-template-rows: repeat(1, 1fr); --gap: 0px 2px; --row-gap: 0px; --column-gap: 2px; --grid-auto-flow: row; --justify-items: stretch; --align-items: stretch; border-style: none; --border-style: none; --padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px; }
.elementor-489 .elementor-element.elementor-element-1b84c8f:not(.elementor-motion-effects-element-type-background), .elementor-489 .elementor-element.elementor-element-1b84c8f > .elementor-motion-effects-container > .elementor-motion-effects-layer { background-color: rgb(238, 236, 236); }
.elementor-489 .elementor-element.elementor-element-1b84c8f.e-con { --align-self: center; }
.elementor-489 .elementor-element.elementor-element-774e7df { padding: 15px 0px 0px 25px; column-gap: 0px; text-align: start; color: var( --e-global-color-secondary ); }
.elementor-489 .elementor-element.elementor-element-774e7df.elementor-element { --align-self: center; }
.elementor-489 .elementor-element.elementor-element-774e7df p { margin-block-end: 15px; }
.elementor-489 .elementor-element.elementor-element-dacd1d6 { padding: 15px 0px 0px; column-gap: 0px; text-align: center; }
.elementor-489 .elementor-element.elementor-element-dacd1d6.elementor-element { --align-self: center; }
.elementor-489 .elementor-element.elementor-element-dacd1d6 p { margin-block-end: 15px; }
@media (max-width: 1024px) { .elementor-489 .elementor-element.elementor-element-1b84c8f { --grid-auto-flow: row; } }
@media (max-width: 767px) { .elementor-489 .elementor-element.elementor-element-1b84c8f { --e-con-grid-template-columns: repeat(1, 1fr); --grid-auto-flow: row; } }

/* Keep Steel Fabricator facility-link underlines at the original Hello baseline. */
.elementor-489 .elementor-element-7b52c0a a { text-underline-offset: auto; }

/* Original Hello reset.css supplies these defaults to raw rich-text headings.
   Retained Elementor widget-specific rules still override this fallback. */
main.elementor .elementor-widget-text-editor h4 { margin: 8px 0 16px; }

/* Keep original flex min-content sizing for Contact email icon lists. */
main.elementor-70 .elementor-icon-list-item { overflow-wrap: normal; }

/* Privacy retains its Elementor wrapper inside the ordinary page main. Match
   Hello's rich-text spacing there without changing native forms or other pages. */
main.site-main .elementor-3689 .elementor-widget-text-editor p { margin-block-end: .9rem; }
main.site-main .elementor-3689 .elementor-widget-text-editor h2 { margin: 8px 0 16px; }

/* Retained instructor tabs use their widget colors, including the original
   gray active/hover states, rather than the global red button override. */
main.elementor.elementor-7926 .elementor-element.elementor-widget-n-tabs:not(:has(> .elementor-widget-container)) > .e-n-tabs > .e-n-tabs-heading .e-n-tab-title[aria-selected="true"] { background-color: var(--n-tabs-title-background-color-active) !important; }
main.elementor-7926 .e-n-tab-title:focus-visible { outline: revert; outline-offset: revert; }

/* Hello keeps footer list icons at their authored width in narrow columns. */
footer.elementor-location-footer .elementor-icon-list-icon svg { max-width: none; }

/* Preserve Hello fallback templates without changing new account/form layouts. */
body.search main.site-main .page-header h1.entry-title,
body.error404 main.site-main .page-header h1.entry-title,
body.search main.site-main .page-content .post h2.entry-title { margin: 8px 0 16px; }
body.search main.site-main .page-content > .post > p,
body.search main.site-main .page-content > p,
body.error404 main.site-main .page-content > p,
body.single-monthly-highlights main.site-main .page-content > p,
body.single-wabo-meetings main#main .jet-listing-dynamic-field__content > p,
body.single-legislative-reports main#main .jet-listing-dynamic-field__content > p { margin: 0 0 14.4px; }
body.search main.site-main .page-content > .post > a > img { display: inline; vertical-align: baseline; }

/* Finder keeps its imported text widget inside the ordinary page wrapper. */
main.site-main .elementor-6272 .elementor-element-300aab4 p { margin-block-end: .9rem; }

/* Preserve source footer link decoration and retained report template defaults. */
.elementor-location-footer a { text-underline-offset: auto; }
body.single-legislative-reports .elementor-1675 .elementor-widget-theme-post-title.elementor-page-title { display: block; }
body.single-legislative-reports .elementor-1675 .elementor-widget-theme-post-content > p { margin: 0 0 14.4px; }

/* Original report template typography and rich-text list/figure spacing. */
body.single-legislative-reports .elementor-1675 .elementor-heading-title { letter-spacing: normal; text-wrap: wrap; overflow-wrap: normal; }
body.single-legislative-reports .elementor-1675 .elementor-widget-theme-post-content > :is(ul, ol) { margin-block: 0; }
body.single-legislative-reports .elementor-1675 .elementor-widget-theme-post-content > figure { margin: 0 0 16px; }

/* Preserve source paragraph wrapping inside the nested report template. Table
   cells retain their own authored wrapping, already matching the reference. */
body.single-legislative-reports .elementor-1675 .elementor-widget-theme-post-content p { text-wrap: wrap; overflow-wrap: normal; white-space: normal; word-break: normal; }

/* Original rich-text policy paragraphs inside native form page wrappers. */
main.site-main :is(.elementor-1360, .elementor-1339, .elementor-7909) .elementor-widget-text-editor p { margin-block-end: .9rem; }

/* Small, layout-neutral feedback on retained CTAs and native content buttons. */
:is(.elementor-button, #main > section[class^="c-"] .btn) { transition: color 160ms ease, background-color 160ms ease, border-color 160ms ease, translate 180ms cubic-bezier(.22,1,.36,1); }
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
 :is(a.elementor-button, #main > section[class^="c-"] a.btn):hover { translate: 0 -1px; }
 :is(a.elementor-button, #main > section[class^="c-"] a.btn):active { translate: 0 0; }
}
@media (prefers-reduced-motion: reduce) {
 [data-wabo-anim], [data-wabo-anim].animated { animation: none !important; }
 [data-wabo-carousel] .swiper-wrapper { transition-duration: 0ms !important; }
 :is(.elementor-button, #main > section[class^="c-"] .btn) { transition: none; translate: none; }
}

/* Kindly Edit's buttons (cantata-edit.json "button"/"button2"), such as a Button added to a migrated page in
   <p class="cb-actions">: the Elementor kit's link colour (.elementor-kit-6 a, WABO red), Hello's a:hover and
   .page-content a outrank the parent theme's .btn-main and .btn-second, which painted the words the button's own red
   and underlined them. :where() keeps this one class above those link rules and below every tone, dark-area,
   component and homepage button rule. */
:where(body) a.btn.btn-main { color: var(--cb-on-accent); text-decoration: none; }
:where(body) a.btn.btn-second { color: var(--cb-heading); text-decoration: none; }

/* Explicit frontend actions and native paid submit components share the audited
   WABO red/white interaction palette. Form8 uses its observed protected form id.
   These classes are not attached to WordPress administrative controls. */
body:not(.wp-admin) .wabo-action-button,
main.wabo-service-registration-page .fluentform .ff-btn-submit,
form:is(.fluent_form_6, .fluent_form_7, #fluentform_8, .fluent_form_9, .fluent_form_15) .ff-btn-submit {
 display: inline-flex; align-items: center; justify-content: center; gap: .5em;
 box-sizing: border-box; max-width: 100%; min-height: 46px; padding: 10px 24px;
 border: 1px solid #8c0b10; border-radius: 12px;
 font: 500 16px/24px Inter, sans-serif; letter-spacing: normal; text-transform: none;
 text-align: center; text-decoration: none; white-space: normal; text-wrap: wrap;
 cursor: pointer; transition: color 160ms ease, background-color 160ms ease, border-color 160ms ease;
 background-color: #8c0b10 !important; color: #fff !important; opacity: 1;
}
body:not(.wp-admin) .wabo-action-button:is(:hover, :active),
main.wabo-service-registration-page .fluentform .ff-btn-submit:is(:hover, :active),
form:is(.fluent_form_6, .fluent_form_7, #fluentform_8, .fluent_form_9, .fluent_form_15) .ff-btn-submit:is(:hover, :active) {
 background-color: #fff !important; color: #8c0b10 !important; border-color: #8c0b10; opacity: 1;
}
body:not(.wp-admin) .wabo-action-button:focus-visible,
main.wabo-service-registration-page .fluentform .ff-btn-submit:focus-visible,
form:is(.fluent_form_6, .fluent_form_7, #fluentform_8, .fluent_form_9, .fluent_form_15) .ff-btn-submit:focus-visible {
 outline: 3px solid #8c0b10; outline-offset: 3px;
}
body:not(.wp-admin) .wabo-action-button:disabled,
main.wabo-service-registration-page .fluentform .ff-btn-submit:disabled,
form:is(.fluent_form_6, .fluent_form_7, #fluentform_8, .fluent_form_9, .fluent_form_15) .ff-btn-submit:disabled {
 background-color: #e7e7e7 !important; color: #555 !important; border-color: #aaa; cursor: not-allowed; opacity: 1;
}
body:not(.wp-admin) .wabo-action-button[aria-busy="true"],
main.wabo-service-registration-page .fluentform .ff-btn-submit[aria-busy="true"],
form:is(.fluent_form_6, .fluent_form_7, #fluentform_8, .fluent_form_9, .fluent_form_15) .ff-btn-submit[aria-busy="true"] { cursor: progress; }
main.wabo-service-registration-page { max-width: none; padding: 0; }
.wabo-service-registration-content { box-sizing: border-box; max-width: 1100px; margin: 0 auto; padding: clamp(2rem,5vw,5rem) 1.25rem; }
.wabo-service-registration-content > h1 { display: block; margin: 0 0 1.5rem; font: 600 clamp(2rem,4vw,2.75rem)/1.15 Inter, sans-serif; color: #303a46; letter-spacing: normal; }
@media (prefers-reduced-motion: reduce) {
 body:not(.wp-admin) .wabo-action-button, main.wabo-service-registration-page .fluentform .ff-btn-submit,
form:is(.fluent_form_6, .fluent_form_7, #fluentform_8, .fluent_form_9, .fluent_form_15) .ff-btn-submit { transition: none; }
}

/* Readable native Fluent error text: deliberate accessibility delta from live pale red.
   Reuse the membership component's established dark red across normal error states. */
body:not(.wp-admin) form[id^="fluentform_"] .error.text-danger,
body:not(.wp-admin) form[id^="fluentform_"] .ff-el-is-error .text-danger,
body:not(.wp-admin) form[id^="fluentform_"] .ff-el-is-error .ff-el-form-check-label,
body:not(.wp-admin) .fluentform .ff-errors-in-stack,
body:not(.wp-admin) .fluentform .ff-el-error-message,
body:not(.wp-admin) .fluentform .ff-message-error,
body:not(.wp-admin) .fluentform .ff-message-errors { color: #a32020 !important; }

/* Original Coaching has no body content or trailing section padding. */
main.wabo-service-page.wabo-coaching-page > .page-content { padding-bottom: 0; }

/* Intentional accessibility delta: readable Contact Us hover and keyboard label. */
footer.elementor-68 .elementor-element.elementor-element-8974969 .elementor-button:is(:hover, :focus) {
 color: #a32020;
 background-color: #fff;
}

/* Keep long search excerpts inside narrow result cards. */
@media (max-width: 767px) {
 body.search main.site-main .page-content > .post > p,
 body.search main.site-main .page-header h1.entry-title span { overflow-wrap: anywhere; }
}

/* Keep nested accordion SVG controls at their intrinsic size on narrow FAQ layouts. */
.elementor-widget-n-accordion .e-n-accordion-item-title-icon { flex-shrink: 0; }

/* Match the retained Agencies directory link decoration on tablet and desktop. */
.elementor-1329 a { text-underline-offset: auto !important; }

/* Keep the retained mobile links usable until disclosure enhancement is ready.
   The same menu tree serves disabled/failed JS; there is no duplicate link list. */
@media (max-width: 1024px) {
  .elementor-location-header .elementor-menu-toggle:not(.wabo-menu-ready) { display: none; }
  .elementor-location-header .elementor-menu-toggle:not(.wabo-menu-ready) + .elementor-nav-menu--dropdown {
    display: block; position: static; width: 100%; max-height: none; overflow: visible; transform: none;
  }
  .elementor-location-header .elementor-menu-toggle:not(.wabo-menu-ready) + .elementor-nav-menu--dropdown ul {
    display: block; position: static; width: auto;
  }
  .elementor-location-header .elementor-menu-toggle:not(.wabo-menu-ready) + .elementor-nav-menu--dropdown a { white-space: normal; overflow-wrap: anywhere; }
  .elementor-location-header .elementor-menu-toggle:not(.wabo-menu-ready) + .elementor-nav-menu--dropdown .sub-arrow { display: none; }
}

/* Accessibility delta approved by Cameron 2026-10-17 (U19 contrast findings, cycle6/content/CONTRAST-PROPOSAL.md).
   A browser measurement of all 609 visible Elementor buttons on 143 staging pages found 26 widgets whose labels were
   #151515 or black on #5D5C5C (2.74:1) or #8C0B10 (1.89-2.17:1). Only those get white labels (6.66:1 and 9.6:1, as
   the site's own "Contact Us" button already has). 22 of them turn white on hover with dark words, which passes, so
   their hover is left as designed; the other 4 keep their colour on hover and get white words in every state.
   Paragraph links get an underline so they are not told apart by colour alone. */
.elementor-element-0e113d0 .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-3378700 .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-35dc1a9 .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-41541b3 .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-586c89c .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-5fe18d3 .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-6230a02 .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-632b29c .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-644ef9a .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-6869920 .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-6c60302 .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-b139e2d .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-c138a88 .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-c520bbf .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-c8b922e .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-d0b00bf .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-d10d171 .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-d544fd2 .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-de0a8fa .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-ded5382 .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-ec5bb3b .elementor-button:not(:hover):not(:focus) .elementor-button-text,
.elementor-element-f1bc449 .elementor-button:not(:hover):not(:focus) .elementor-button-text { color: #fff; }
.elementor-element-334d3c0 .elementor-button .elementor-button-text,
.elementor-element-4179132 .elementor-button .elementor-button-text,
.elementor-element-8a8057a .elementor-button .elementor-button-text,
.elementor-element-b137e36 .elementor-button .elementor-button-text { color: #fff; }
.elementor-widget-text-editor p a:not(.elementor-button):not(.btn),
main p a:not(.elementor-button):not(.btn) { text-decoration: underline; text-underline-offset: 2px; }

/* Event excerpts inherit nonbreaking legacy address text; wrap it on phones. */
@media (max-width: 767px) {
  body.tax-events-categories #content .page-content > article.post p {
    overflow-wrap: anywhere;
  }
}
