/* rx: standard Elementor (classic) + Astra structural CSS.
   The site's real per-page LiteSpeed UCSS was lost from the archive; each page keeps
   its inline critical (above-the-fold) CSS but is missing the below-the-fold layout
   rules (column widths, section/column flex, responsive). This restores the STANDARD
   Elementor frontend layout so every page lays out consistently. Content untouched. */

.elementor *, .elementor *::before, .elementor *::after { box-sizing: border-box; }
.elementor a { box-shadow: none; text-decoration: none; }

/* sections / containers */
.elementor-section { position: relative; }
.elementor-section .elementor-container { display: flex; margin-right: auto; margin-left: auto; position: relative; flex-wrap: wrap; }
.elementor-section.elementor-section-boxed > .elementor-container { max-width: 1140px; }
.elementor-section.elementor-section-full_width > .elementor-container { max-width: 100%; }
.elementor-section-stretched { overflow: hidden; }
.elementor-row { width: 100%; display: flex; flex-wrap: wrap; }

/* columns */
.elementor-column { position: relative; min-height: 1px; display: flex; }
.elementor-column-wrap, .elementor-widget-wrap { position: relative; width: 100%; display: flex; }
.elementor-widget-wrap { flex-wrap: wrap; align-content: flex-start; }
.elementor-element-populated { padding: 10px; }
.elementor-widget-wrap > .elementor-element { width: 100%; }
.elementor-column-gap-narrow > .elementor-column > .elementor-element-populated { padding: 5px; }
.elementor-column-gap-default > .elementor-column > .elementor-element-populated { padding: 10px; }
.elementor-column-gap-extended > .elementor-column > .elementor-element-populated { padding: 15px; }
.elementor-column-gap-wide > .elementor-column > .elementor-element-populated { padding: 20px; }

/* column widths (the piece the archived critical CSS was missing) */
.elementor-col-10 { width: 10%; }  .elementor-col-11 { width: 11.111%; }
.elementor-col-12 { width: 12.5%; } .elementor-col-14 { width: 14.285%; }
.elementor-col-16 { width: 16.666%; } .elementor-col-20 { width: 20%; }
.elementor-col-25 { width: 25%; }  .elementor-col-30 { width: 30%; }
.elementor-col-33 { width: 33.333%; } .elementor-col-40 { width: 40%; }
.elementor-col-50 { width: 50%; }  .elementor-col-60 { width: 60%; }
.elementor-col-66 { width: 66.666%; } .elementor-col-70 { width: 70%; }
.elementor-col-75 { width: 75%; }  .elementor-col-80 { width: 80%; }
.elementor-col-83 { width: 83.333%; } .elementor-col-90 { width: 90%; }
.elementor-col-100 { width: 100%; }

/* widgets */
.elementor-widget { position: relative; }
.elementor-widget:not(:last-child) { margin-bottom: 20px; }
.elementor-widget-wrap > .elementor-widget-empty { margin-bottom: 0; }
.elementor-heading-title { margin: 0; padding: 0; line-height: 1.2; }
.elementor-widget-text-editor p { margin: 0 0 1em; }
.elementor-widget-image { text-align: center; }
.elementor-widget-image img { display: inline-block; vertical-align: middle; }

/* media */
.elementor img { max-width: 100%; height: auto; border: none; border-radius: 0; }
img { max-width: 100%; height: auto; }

/* buttons */
.elementor-button-wrapper .elementor-button, .elementor-button { display: inline-block; line-height: 1;
  background-color: #818a91; font-size: 15px; padding: 12px 24px; border-radius: 3px; color: #fff;
  fill: #fff; text-align: center; transition: all .3s; border: none; cursor: pointer; text-decoration: none; }
.elementor-button:hover, .elementor-button:focus { color: #fff; }
.elementor-button .elementor-button-content-wrapper { display: flex; justify-content: center; align-items: center; }

/* responsive: stack columns cleanly on tablet / phone */
@media (max-width: 1024px) {
  .elementor-column.elementor-col-25, .elementor-column.elementor-col-20 { width: 50%; }
  .elementor-column.elementor-col-33, .elementor-column.elementor-col-30 { width: 50%; }
}
@media (max-width: 767px) {
  .elementor-column { width: 100% !important; }
  .elementor-section .elementor-container { flex-wrap: wrap; }
  .elementor-widget-wrap { padding: 0; }
}

/* ===== Swiper (Elementor sliders/carousels) — graceful static fallback ===== */
/* The swiper base CSS was lost; without JS the slides stack vertically. Lay them out
   as a responsive wrapped row so all content is visible and tidy (not a broken stack). */
/* Fallback applies ONLY while Swiper JS has not initialized (rx-enhance.js inits it). */
.swiper, .swiper-container { position: relative; overflow: hidden; width: 100%; list-style: none; padding: 0; }
.swiper:not(.swiper-container-initialized) .swiper-wrapper,
.swiper-container:not(.swiper-container-initialized) .swiper-wrapper {
  display: flex !important; flex-wrap: wrap; transform: none !important; width: 100% !important; height: auto !important; box-sizing: border-box; }
.swiper:not(.swiper-container-initialized) .swiper-slide,
.swiper-container:not(.swiper-container-initialized) .swiper-slide {
  flex: 1 1 280px; max-width: 100%; height: auto !important; margin: 6px; box-sizing: border-box; }
.swiper-slide img { width: 100%; height: auto; display: block; }
.swiper:not(.swiper-container-initialized) .swiper-pagination,
.swiper-container:not(.swiper-container-initialized) .swiper-pagination,
.swiper:not(.swiper-container-initialized) .swiper-scrollbar { display: none !important; }
.elementor-image-carousel-wrapper { overflow: visible; }
/* Elementor Slides (banner): give height so the background image is visible (JS or fallback). */
.elementor-slides .swiper-slide, .elementor-main-swiper .swiper-slide { min-height: 340px; }
.elementor-slides .swiper-slide-inner { position: relative; z-index: 2; display: flex; flex-direction: column;
  justify-content: center; align-items: center; text-align: center; min-height: 340px; padding: 34px 8%; color: #fff; }
.elementor-slides .swiper-slide-bg { position: absolute; inset: 0; z-index: 0; background-size: cover; background-position: center; }
.elementor-slides .swiper-slide > .elementor-background-overlay { position: absolute; inset: 0; z-index: 1; background: rgba(0,0,0,.4); }
/* slides without a photo get an on-brand gradient (an inline background-image, e.g. the TIME100 slide, overrides this) */
.elementor-slides .swiper-slide:nth-child(3n+1) .swiper-slide-bg { background-image: linear-gradient(135deg, #0f5257, #0a3b3f); }
.elementor-slides .swiper-slide:nth-child(3n+2) .swiper-slide-bg { background-image: linear-gradient(135deg, #7a1e1e, #4a1010); }
.elementor-slides .swiper-slide:nth-child(3n)   .swiper-slide-bg { background-image: linear-gradient(135deg, #0d3b66, #08243f); }
/* slide text must sit ABOVE the dark overlay (some slides have no swiper-slide-inner wrapper) */
.elementor-slides .swiper-slide-contents { position: relative; z-index: 2; }
/* reduce flash-of-fallback on refresh: before Swiper inits, show only the first slide (not the whole stack) */
.elementor-main-swiper:not(.swiper-container-initialized) .swiper-slide:not(:first-child),
.elementor-slides-wrapper:not(.swiper-container-initialized) .swiper-slide:not(:first-child) { display: none !important; }
/* clip carousels so nothing overflows horizontally */
.swiper, .swiper-container, .elementor-main-swiper, .elementor-slides-wrapper { overflow: hidden !important; }
img, iframe, video { max-width: 100%; }
/* mobile: prevent the stray horizontal scroll (empty space on the right) */
@media (max-width: 1024px) { html, body { overflow-x: hidden !important; max-width: 100%; } }

/* ===== Elementor Nav Menu — restore dropdown submenu (CSS-only, hover, no JS) ===== */
.elementor-nav-menu { display: flex; flex-wrap: wrap; align-items: center; list-style: none; margin: 0; padding: 0; }
.elementor-nav-menu > li, .elementor-nav-menu .menu-item { position: relative; }
.elementor-nav-menu .elementor-item { display: block; padding: 12px 16px; text-decoration: none; line-height: 1.2; }
.elementor-nav-menu .sub-menu, .elementor-nav-menu ul.sub-menu {
  position: absolute; top: 100%; left: 0; min-width: 230px; margin: 0; padding: 6px 0;
  list-style: none; background: #fff; box-shadow: 0 6px 22px rgba(0,0,0,.14);
  border-radius: 4px; z-index: 9999; display: none; }
.elementor-nav-menu .menu-item-has-children:hover > .sub-menu,
.elementor-nav-menu li:hover > ul.sub-menu { display: block; }
.elementor-nav-menu .sub-menu li { position: relative; width: 100%; }
.elementor-nav-menu .sub-menu .elementor-sub-item,
.elementor-nav-menu .sub-menu a { display: block; padding: 9px 20px; white-space: nowrap;
  color: #333; text-decoration: none; }
.elementor-nav-menu .sub-menu a:hover, .elementor-nav-menu .sub-menu .elementor-sub-item:hover { background: #f3f5f7; }
/* nested (3rd level) submenu flies to the right */
.elementor-nav-menu .sub-menu .sub-menu { top: 0; left: 100%; }
/* dropdown arrow indicator */
.elementor-nav-menu .ast-header-navigation-arrow, .elementor-nav-menu .dropdown-menu-toggle { display: inline-block; margin-left: 4px; }

/* ===== Footer widgets + Elementor icon lists (consistent with header) ===== */
.elementor-icon-list-items { list-style: none; margin: 0; padding: 0; }
.elementor-icon-list-item { display: flex; align-items: flex-start; margin-bottom: 8px; font-size: 15px; }
.elementor-icon-list-item > a { display: flex; align-items: flex-start; color: inherit; text-decoration: none; }
.elementor-icon-list-icon { display: inline-flex; padding-right: 9px; line-height: 1.5; min-width: 1em; }
.elementor-icon-list-text { line-height: 1.5; }
.elementor-icon-list-item:hover .elementor-icon-list-text { text-decoration: underline; }
.elementor-social-icons-wrapper, .elementor-widget-social-icons .elementor-icon-list-items { display: flex; gap: 8px; flex-wrap: wrap; }
.elementor-icon { display: inline-flex; align-items: center; justify-content: center; }
footer .elementor-heading-title { margin-bottom: 12px; }

/* ===== eicons (Elementor icon font) mapped to FontAwesome — menu toggle boxes fix ===== */
[class^="eicon-"], [class*=" eicon-"] { font-family: "Font Awesome 6 Free"; font-weight: 900; font-style: normal; line-height: 1; display: inline-block; }
.eicon-menu-bar:before { content: "\f0c9"; }
.eicon-close:before { content: "\f00d"; }
.eicon-search:before { content: "\f002"; }
.eicon-chevron-right:before { content: "\f054"; }
.eicon-chevron-left:before { content: "\f053"; }

/* ===== mobile menu toggle (works without original Elementor JS) ===== */
.elementor-menu-toggle { cursor: pointer; }
.elementor-menu-toggle__icon--close { display: none; }
.elementor-menu-toggle.elementor-active .elementor-menu-toggle__icon--open,
.elementor-menu-toggle.rx-open .elementor-menu-toggle__icon--open { display: none; }
.elementor-menu-toggle.elementor-active .elementor-menu-toggle__icon--close,
.elementor-menu-toggle.rx-open .elementor-menu-toggle__icon--close { display: inline-block; }
/* Elementor collapses the dropdown via transform:scaleY(0);max-height:0 on :not(.elementor-active);
   our JS adds .elementor-active + .rx-mobile-show -> expand it (not display:none based). */
/* the absolute dropdown needs a positioned parent, else it floats to the wrong place */
.elementor-widget-nav-menu, .elementor-widget-nav-menu .elementor-widget-container { position: relative; }
.elementor-menu-toggle.elementor-active + .elementor-nav-menu__container,
.elementor-nav-menu--dropdown.rx-mobile-show {
  transform: none !important; max-height: 80vh !important; overflow-y: auto !important;
  display: block !important; visibility: visible !important; opacity: 1 !important;
  position: absolute !important; top: 100% !important; left: 0 !important; right: 0 !important;
  width: 100% !important; z-index: 9999 !important; margin-top: 0 !important; }
.elementor-nav-menu--dropdown a, .elementor-nav-menu--dropdown .elementor-item {
  display: block !important; width: 100%; padding: 13px 22px !important; }
.elementor-nav-menu--dropdown .elementor-nav-menu { display: block !important; }
.elementor-nav-menu--dropdown .sub-menu { position: static !important; display: block !important; box-shadow: none; padding: 0 0 0 16px; width: 100%; }
.elementor-nav-menu--dropdown .menu-item { position: static !important; width: 100%; }

/* ===== scroll-to-top + accessibility buttons (theme red #992626) ===== */
#rx-top, #rx-a11y { position: fixed; right: 20px; width: 48px; height: 48px; border: none; border-radius: 50%;
  background: #992626; color: #fff; cursor: pointer; z-index: 99999; font-size: 18px; line-height: 1;
  box-shadow: 0 3px 12px rgba(0,0,0,.28); align-items: center; justify-content: center; }
#rx-top { bottom: 20px; display: none; }
#rx-top.show { display: flex; }
#rx-a11y { bottom: 78px; display: flex; }
#rx-top:hover, #rx-a11y:hover { background: #7d1e1e; }
#rx-top:focus-visible, #rx-a11y:focus-visible { outline: 3px solid #ffd0d0; outline-offset: 2px; }
/* accessibility panel */
#rx-a11y-panel { position: fixed; right: 20px; bottom: 132px; width: 234px; background: #fff; border-radius: 10px;
  box-shadow: 0 8px 28px rgba(0,0,0,.25); z-index: 100000; display: none; overflow: hidden; }
#rx-a11y-panel.show { display: block; }
#rx-a11y-panel .rx-a11y-head { background: #992626; color: #fff; padding: 12px 14px; font-weight: 700;
  display: flex; justify-content: space-between; align-items: center; }
#rx-a11y-panel .rx-a11y-x { background: none; border: none; color: #fff; font-size: 22px; line-height: 1; cursor: pointer; }
#rx-a11y-panel button[data-act] { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
  padding: 11px 16px; border: none; border-top: 1px solid #eee; background: #fff; cursor: pointer; font-size: 14px; color: #333; }
#rx-a11y-panel button[data-act]:hover { background: #f6eaea; }
#rx-a11y-panel button[data-act] i { color: #992626; width: 18px; text-align: center; }
#rx-a11y-panel button[data-act="reset"] { color: #992626; font-weight: 600; }
/* accessibility effects */
:root[data-rx-text="1"] .rx-content, :root[data-rx-text="1"] .elementor-widget-text-editor p, :root[data-rx-text="1"] .elementor-icon-list-text, :root[data-rx-text="1"] p, :root[data-rx-text="1"] li { font-size: 1.14em !important; }
:root[data-rx-text="2"] .rx-content, :root[data-rx-text="2"] .elementor-widget-text-editor p, :root[data-rx-text="2"] .elementor-icon-list-text, :root[data-rx-text="2"] p, :root[data-rx-text="2"] li { font-size: 1.28em !important; }
:root[data-rx-text="3"] .rx-content, :root[data-rx-text="3"] .elementor-widget-text-editor p, :root[data-rx-text="3"] .elementor-icon-list-text, :root[data-rx-text="3"] p, :root[data-rx-text="3"] li { font-size: 1.45em !important; }
html.rx-a11y-gray body { filter: grayscale(100%); }
html.rx-a11y-contrast body { filter: contrast(1.45); }
html.rx-a11y-gray.rx-a11y-contrast body { filter: grayscale(100%) contrast(1.45); }
html.rx-a11y-links a { text-decoration: underline !important; font-weight: 700 !important; }
html.rx-a11y-font, html.rx-a11y-font body, html.rx-a11y-font p, html.rx-a11y-font li, html.rx-a11y-font span, html.rx-a11y-font a, html.rx-a11y-font h1, html.rx-a11y-font h2, html.rx-a11y-font h3 { font-family: Arial, Helvetica, sans-serif !important; letter-spacing: .3px; }

/* ===== client-side search overlay ===== */
#rx-search-ov { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.55); z-index: 100000; align-items: flex-start; justify-content: center; }
#rx-search-ov.show { display: flex; }
#rx-search-ov .rx-search-box { background: #fff; max-width: 560px; width: 92%; margin-top: 8vh; border-radius: 10px; padding: 26px; position: relative; max-height: 80vh; overflow: auto; }
#rx-search-ov h3 { color: #992626; margin: 0 0 14px; }
#rx-search-ov .rx-search-in { width: 100%; padding: 12px 14px; border: 1px solid #ccc; border-radius: 6px; font-size: 16px; box-sizing: border-box; }
#rx-search-ov .rx-search-res { list-style: none; margin: 16px 0 0; padding: 0; }
#rx-search-ov .rx-search-res li { padding: 10px 0; border-bottom: 1px solid #eee; }
#rx-search-ov .rx-search-res a { color: #046bd2; text-decoration: none; font-size: 16px; }
#rx-search-ov .rx-search-res a:hover { text-decoration: underline; }
#rx-search-ov .rx-search-x { position: absolute; top: 10px; right: 14px; background: none; border: none; font-size: 28px; line-height: 1; cursor: pointer; color: #666; }
#rx-search-ov .rx-none { color: #888; }

/* ===== rx content/program pages: firmly center the content column on desktop ===== */
.elementor-rxpage { max-width: 960px; margin-left: auto !important; margin-right: auto !important; }
.elementor-rxpage > .elementor-section > .elementor-container,
.elementor-rxpage .elementor-container { max-width: 920px !important; margin-left: auto !important; margin-right: auto !important; }
.elementor-rxpage .elementor-column, .elementor-rxpage .elementor-col-100 { width: 100% !important; }
.elementor-rxpage .elementor-widget-wrap { display: block !important; }
.elementor-rxpage figure img { margin-left: auto; margin-right: auto; }
.elementor-rxpage .elementor-heading-title { text-align: left; }
