@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800&display=swap');
@import url('ai_chat.css');
/* AI Chat page styles */

:root {
  /* Desktop “card” width for header + hero */
  --hero-max: 1100px;

  /* Unified, symmetric header gutters (left & right) */
  --nav-gutter: clamp(28px, 4.5vw, 56px);
}


/* static/css/styles.css */

/* === GLOBAL STICKY FOOTER SYSTEM (applies to ALL pages) ================== */
html,
body {
  height: 100%;
  min-height: 100%;
  margin: 0;
  /* remove default 8px body margin everywhere */
  font-family: 'Inter', sans-serif;
}


.site-root {
  /* Make the page a vertical flex stack: header (auto) + main (fills) + footer (auto) */
  min-height: 100vh;
  /* modern browsers */
  min-height: 100dvh;
  /* mobile address-bar safe unit where supported */
  display: flex;
  flex-direction: column;
}

.site-main {
  flex: 1 0 auto;
  /* grow to fill remaining height, push footer to bottom */
  display: block;
}

.homepage-footer {
  flex-shrink: 0;
  /* never let the footer collapse */
}

/* iOS/Safari fallback for certain viewport quirks */
@supports (-webkit-touch-callout: none) {

  html,
  body {
    height: -webkit-fill-available;
  }

  .site-root {
    min-height: -webkit-fill-available;
  }
}

/* ======================================================================== */


/* === Remove any default bottom gap under the header === */
header {
  margin-bottom: 0px;
}

/* === GLOBAL SITE-HEADER STACKING ===
     Keeps nav + its dropdowns above any in-page headers            */
header {
  position: relative;
  z-index: 12000;
  /* above page content; below drawer(12000+)/toast(16000)/preloader(20000) */
}




/* Ensure header container uses flex to space out its children */
.header-container {
  /* center the whole nav row within a fixed max-width so left/right gutters match */
  max-width: var(--hero-max);
  margin-inline: auto;

  display: flex;
  align-items: center;
  justify-content: space-between;

  /* symmetric, slightly larger safe gutters so right links never hug the edge */
  padding-inline: var(--nav-gutter);
  padding-block: 0;

  flex-wrap: nowrap;
}


/* Convert nav-left and nav-right into flex containers to space their items evenly */
/* ===== Updated “nav-left” to tighten spacing ===== */
.nav-left {
  display: flex;
  align-items: center;
  gap: 8px;
  /* slightly larger gap for readability, adjust if desired */
  background: transparent;
  padding: 2px 5px;
}

/* ===== Updated “nav-right” to pull closer to center ===== */
.nav-right {
  display: flex;
  align-items: center;
  gap: 8px;
  /* slightly smaller gap between right‐side icons/text */
  background: transparent;
  padding: 2px 5px;

}

/* Desktop header spacing + anti-wrap (keeps logo truly centered with equal side weight) */
@media (min-width: 901px) {
  .header-container {
    /* 3-column grid: Left group | Centered logo | Right group */
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: center;
    gap: clamp(12px, 2vw, 28px);

    /* Fill the full bar; rely on unified gutters for safe edges */
    width: 100%;
    max-width: none;
    margin-inline: 0;

    /* symmetric gutters so nothing hugs edges */
    padding-inline: var(--nav-gutter);
    padding-block: 0;
  }



  .nav-left,
  .nav-right {
    display: flex;
    align-items: center;
    min-width: 0;
    flex-wrap: nowrap;
    gap: clamp(10px, 1.2vw, 18px);
    /* Let the outer container own the edge gutters */
    padding-inline: 0;
  }

  .nav-left {
    justify-content: flex-start;
  }

  .nav-right {
    justify-content: flex-end;
  }

  .nav-left a,
  .nav-right a {
    padding-inline: clamp(8px, 0.9vw, 14px);
    white-space: nowrap;
    /* no two-line wraps */
  }

  /* Center brand with no artificial margins; grid handles the centering */
  .logo {
    flex: 0 0 auto;
    /* override mobile flex behavior */
    margin: 0;
    justify-content: center;
  }
}




.background-wrapper {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
  pointer-events: none;
  /* Prevents background from interfering with clicks */
}



/* --- TOP MENU HOVER (match second menu behavior)  (REV 2025-06-26) --- */
.nav-left a,
.nav-right a {
  display: inline-block;
  height: 100%;
  padding: 0 16px;
  margin: 0 4px;
  text-decoration: none;
  color: #1f3a93;
  font-size: 0.9em;
  font-weight: bold;
  line-height: 50px;
  border-radius: 4px;
  background: transparent;
  transition: color 0.2s ease, border-bottom 0.2s ease;
  font-family: 'Inter', sans-serif;
  /* ← NEW: match homepage header font */
}


/* On hover, match the second‐menu link style: darker blue text + bottom border */
.nav-left a:hover,
.nav-right a:hover {
  color: #003f7f;
  border-bottom: 2px solid #0056b3;
  padding-bottom: 2px;
  background: transparent;
}


/* New: Style for navigation icons inside header links */
.nav-left a img.nav-icon {
  vertical-align: middle;
  margin-right: 5px;
  /* Adjust spacing between the icon and text */
  height: 20px;
  /* Set the icon height (adjust as needed) */
}



/* New: Logout Link Alignment (unified with other nav links – no underline tile) */
.logout-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  text-decoration: none;
  color: #1f3a93;
  font-size: 0.9em;
  font-weight: bold;
  padding: 4px 8px;
  background: transparent;
  /* CHANGED from #ffffff */
  border: none;
  border-radius: 4px;
  margin-right: 8px;
  transition: transform 0.2s ease, color 0.2s ease;
}

.logout-link:hover {
  color: #003f7f;
  transform: translateY(-2px);
  /* match other header links’ hover feel */
}




#userIDInput:focus {
  box-shadow: 0 0 5px rgba(0, 123, 255, 0.5);
}





/* ────────────────────────────────────────────────
   USER DROPDOWN – revised container & icon (06-13-25)
   Prevents baseline clipping that caused the icon to
   appear chopped on refresh when a user is logged in.
   ──────────────────────────────────────────────── */

/* ▼ 2-A. User-selector trigger (revised 2025-06-13) */
.user-selector {
  position: relative;
  /* anchor for the dropdown           */
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  background-color: #ffffff;
  border: none;
  border-radius: 4px;
  margin-right: 8px;
  overflow: visible;
  transition: background-color .3s ease,
    box-shadow .3s ease,
    border .3s ease;
  z-index: 3100;
  /* sits above header/nav             */
}


/* ▼ 2-B.  User-profile icon  */
.user-icon {
  display: block;
  /* removes baseline clipping    */
  width: 24px;
  height: 24px;
  object-fit: contain;
  /* keeps correct proportions    */
  margin-right: 0;
  /* keep flush with input field  */
}

/* ────────────────────────────────────────────────
   USER SELECTOR COLOR ALIGNMENT  (updated 2025-06-13)
   -- Matches default & hover colors to LOCATION selector --
   ──────────────────────────────────────────────── */

.user-selector,
.user-selector input#userIDInput,
.user-selector .user-button {
  color: #0056b3;
  /* primary nav-link blue */
}

/* username input field */
#userIDInput {
  width: auto;
  /* allow the content to define width */
  min-width: 9ch;
  /* enough for “Dagobert2” and similar */
  max-width: 16ch;
  /* avoid blowing up the header layout */
  height: 24px;
  text-align: center;
  font-size: 0.9em;
  font-weight: 600;
  color: #1f3a93;
  background: transparent;
  border: none;
  outline: none;
  padding: 2px 4px;
  flex: 0 0 auto;
  box-sizing: content-box;
  /* ensure “ch” works as intended */
  transition: box-shadow 0.3s ease;
}


#userIDInput::placeholder {
  color: #0056b3;
  /* placeholder matches default text */
  font-weight: 600;
}

/* username dropdown arrow */
.user-button {
  display: inline-flex;
  width: 16px;
  height: 16px;
  background: transparent;
  border: none;
  cursor: pointer;
  color: #0056b3;
  /* updated */
  font-size: 1em;
  align-items: center;
  justify-content: center;
  margin-left: 4px;
}

/* Hover state – identical to other header links (no underline; avoid layout jitter) */
.user-selector:hover,
.user-button:hover {
  color: #003f7f;
  transform: translateY(-2px);
  /* smooth, minimal lift like other nav links */
  background: transparent;
  border: none;
  box-shadow: none;
  padding-bottom: 0;
  transition: transform 0.2s ease, color 0.2s ease;
}




/* ─── USER DROPDOWN (global) ─── */
#userDropdown {
  position: absolute;
  top: 100%;
  /* flush against its trigger – no vertical gap */
  left: 0;
  width: max-content;
  min-width: 160px;
  max-height: 220px;
  overflow-y: auto;
  background: linear-gradient(135deg,
      rgba(0, 123, 255, .10),
      rgba(0, 123, 255, .05)), #ffffff;
  box-shadow: 0 6px 20px rgba(0, 0, 0, .15);
  border-radius: 4px;
  list-style: none;
  padding: 4px 0;
  margin: 0;
  z-index: 15000;
  /* one level above the 7000 site-header       */

  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}



/* ────────────────────────────────────────────────
   USER DROPDOWN LIST ITEMS
   -- Spacing & color parity with LOCATION selector --
   ──────────────────────────────────────────────── */
#userDropdown li {
  padding: 2px 4px;
  /* identical vertical & horizontal padding */
  margin: 0;
  white-space: nowrap;
  line-height: 1.2;
  font-size: 0.9em;
  font-weight: normal;
  /* mirrors location dropdown */
  color: #1f3a93;
  /* same default blue */
  cursor: pointer;
  transition: background-color 0.2s ease, color 0.2s ease;
}


#userDropdown li:hover {
  background-color: #d0eaff;
  color: #007BFF;
  border: none;
  box-shadow: none;
  outline: none;
}

#userDropdown li:focus {
  outline: none;
  border: none;
  box-shadow: none;
}

/* Ensure anchor tags in the user dropdown look like plain list items */
#userDropdown li a {
  display: block;
  width: 100%;
  padding: 0;
  text-decoration: none;
  color: inherit;
  font-weight: normal !important;
}


/* On hover, use the same styles as the location dropdown items */
#userDropdown li a:hover {
  background-color: #d0eaff;
  color: #007BFF;
  border: none;
  box-shadow: none;
  outline: none;
}




/* Redesigned Location Selector (no white background) */
.location-selector {
  position: relative;
  display: flex;
  align-items: center;
  height: 50px;
  /* Keep the height */
  line-height: 50px;
  /* Vertically center text */
  padding: 0 16px;
  /* Same horizontal padding */
  background-color: transparent;
  /* Removed white background */
  border: none;
  border-radius: 4px;
  margin-right: 8px;
  transition: background-color 0.3s ease, box-shadow 0.3s ease, border 0.3s ease;
}



/* Location input — unify desktop & mobile */
.location-selector input[id^="locationInput"] {
  width: 110px;
  height: 24px;
  text-align: center;
  font-size: 0.9em;
  font-weight: bold;
  color: #1f3a93;
  background-color: transparent;
  border: none;
  outline: none;
  padding: 2px 4px;
  transition: border-color 0.3s ease, box-shadow 0.3s ease;
}

.location-selector input[id^="locationInput"]:focus {
  box-shadow: 0 0 5px rgba(0, 123, 255, 0.5);
}

.location-selector input[id^="locationInput"]::placeholder {
  color: #1f3a93;
  font-weight: bold;
}

.location-icon {
  display: inline-block;
  width: 20px;
  height: 20px;
  background: url('../images/location.png') no-repeat center center;
  background-size: 20px 20px;
  /* Scale down the 2x image */
  margin-right: 0;
  backface-visibility: hidden;
  transform: translateZ(0);
  transition: none;
  will-change: transform;
  /* Hint for GPU acceleration */
}


.location-button {
  display: inline-flex;
  width: 16px;
  /* Fixed width for the arrow */
  height: 16px;
  /* Fixed height */
  background: transparent;
  border: none;
  cursor: pointer;
  color: #1f3a93;
  font-size: 1em;
  margin-left: 4px;
  /* Space between the input and arrow */
  align-items: center;
  justify-content: center;
}


.location-button:hover {
  color: #007BFF;
}


.location-selector .dropdown {
  position: absolute;
  top: 110%;
  left: 0;
  width: 100%;
  max-height: 220px;
  /* smoother scroll room */
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  /* iOS smooth scroll */
  overscroll-behavior: contain;
  /* avoid page scroll bleed */
  background: linear-gradient(135deg, rgba(0, 123, 255, 0.10), rgba(0, 123, 255, 0.05)), #ffffff;
  box-shadow: 0 4px 14px rgba(0, 123, 255, 0.18);
  border: none;
  border-radius: 6px;
  z-index: 16000;
  /* above header & panels; below global toast */
  list-style: none;
  padding: 0;
  margin: 4px 0 0 0;
  pointer-events: auto;
  /* belt-and-suspenders for Safari */
}




.location-selector .dropdown li:hover {
  background-color: #d0eaff;
  /* Changed from #e0e4ff to match the user selector */
  color: #007BFF;
  /* Matches the text color on hover */
  border: none;
  /* Ensure no border is applied */
  box-shadow: none;
  /* Remove any box-shadow */
}


.location-selector .dropdown li {
  padding: 2px 4px;
  /* Reduced padding for consistency */
  margin: 0;
  white-space: nowrap;
  line-height: 1.2;
  font-size: 0.9em;
  /* Decreased font size */
  cursor: pointer;
}



/* Style for navigation icons inside header links */
.nav-right a img.nav-icon {
  vertical-align: middle;
  margin-right: 5px;
  /* Adjust spacing as needed */
  height: 20px;
  /* Set a suitable icon height */
}


.register-button .subtext {
  display: block;
  font-size: 0.8em;
  /* (Optional) Slightly increased font size */
  font-weight: normal;
  margin-top: 4px;
  /* Increased margin for more space */
  line-height: 1;
  color: #ffffff;
}


.logo {
  flex: 0 0 auto;
  display: flex;
  /* Added for flex layout */
  align-items: center;
  /* Vertically centers the logo */
  justify-content: center;
  /* Horizontally centers the logo */
  background: transparent;
  padding: 8px 5px;
  text-align: center;
}

.logo img {
  max-height: 60px;
  vertical-align: middle;
  /* Ensure no transform affects its alignment */
  transform: translateY(0);
}


/* --- END NEW HEADER STYLES --- */




main {
  margin: 20px;
}

/* Home: no outer margins so hero can align to full-width header */
body.homepage main.site-main {
  margin: 0;
}


.flashes {
  list-style-type: none;
  padding: 0;
  color: red;
}

/* Preloader Styles */
#preloader {
  position: fixed;
  top: 0;
  left: 0;
  width: 100dvw;
  /* dynamic viewport units for mobile chrome/safari UI */
  height: 100dvh;
  background: #ffffff;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  z-index: 20000;
  /* ensure it sits above header/nav/content */
  padding: env(safe-area-inset-top) 0 env(safe-area-inset-bottom);
  /* avoid notch overlap */
}

/* Wrap for the logo above the bar */
.logo-container {
  width: min(84vw, 520px);
  /* tie logo row to viewport width */
  margin: 0 auto 20px;
  text-align: center;
}

/* ✅ Responsive, uncroppable logo sizing */
#preloader .logo-container img {
  display: block;
  width: 100%;
  /* scale with container */
  max-width: 100%;
  /* never exceed the container */
  height: auto;
  /* keep aspect ratio */
  max-height: min(28vh, 260px);
  /* also respect short viewports */
  object-fit: contain;
  /* avoid any clipping/cropping */
  margin: 0 auto;
  image-rendering: auto;
}

/* Progress bar scales with the logo width for a consistent look */
.progress-container {
  width: min(84vw, 520px);
  max-width: 520px;
  background: #ccc;
  border-radius: 5px;
  overflow: hidden;
}

.progress-bar {
  height: 20px;
  background: #007BFF;
  width: 0%;
  animation: load 2s forwards;
  /* 0% -> 100% */
}

@keyframes load {
  from {
    width: 0%;
  }

  to {
    width: 100%;
  }
}

/* ---- Small devices: slightly smaller logo cap ---- */
@media (max-width: 480px) {
  #preloader .logo-container img {
    max-height: min(24vh, 220px);
  }
}

/* ---- Very short landscapes (e.g., iPhone landscape) ---- */
@media (orientation: landscape) and (max-height: 480px) {
  #preloader .logo-container img {
    max-height: min(22vh, 200px);
  }
}

/* ---- Tall/large screens: allow a little more breathing room but keep a sane cap ---- */
@media (min-width: 1280px) and (min-height: 800px) {
  #preloader .logo-container {
    width: min(60vw, 560px);
  }

  .progress-container {
    width: min(60vw, 560px);
  }

  #preloader .logo-container img {
    max-height: min(30vh, 300px);
  }
}


/* Ensure the text element is tightly wrapped */
#typing-text {
  display: inline-block;
  /* Force inline-block layout */
  white-space: nowrap;
  /* Prevent wrapping */
  overflow: hidden;
  /* Hide any overflow */
  letter-spacing: normal;
  /* Reset any unusual spacing */
}

/* Cursor styling – ensure it lines up properly */
.cursor {
  display: inline-block;
  background-color: #007BFF;
  width: 1px;
  /* Thinner line for a modern look */
  height: 1em;
  /* Matches the height of the text */
  margin-left: 2px;
  vertical-align: middle;
  animation: cursorBlink 0.8s infinite;
}

@keyframes cursorBlink {

  0%,
  50% {
    opacity: 1;
  }

  51%,
  100% {
    opacity: 0;
  }
}




@media (min-width: 960px) {
  .results-content {
    flex-wrap: nowrap;
    /* Force three columns side-by-side on wide screens */
  }
}

@media (max-width: 768px) {
  .header-container {
    flex-direction: column;
    align-items: center;
    text-align: center;
  }

  .nav-left,
  .nav-right {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    width: 100%;
  }

  .nav-left a,
  .nav-right a {
    padding: 8px 10px;
    border-right: none;
    /* Remove dividers */
    font-size: 0.9em;
  }

  /* ===== TOP MENU (mobile) HOVER (match second menu) ===== */
  .nav-right .location-selector:hover,
  .nav-right a.sign-in:hover {
    color: #003f7f;
    border-bottom: 2px solid #0056b3;
    padding-bottom: 2px;
    background: transparent;
    transition: color 0.2s ease, border-bottom 0.2s ease;
  }

  /* ===== End mobile hover updates ===== */


  .search-bar-wrapper {
    flex-direction: column;
    align-items: center;
  }

  .search-box {
    width: 100%;
    max-width: 90%;
  }

  .ai-chat-button {
    width: 100%;
    max-width: 90%;
  }
}


/* Existing Floating Window Styles (unchanged properties are kept) */
.floating-window {
  background-color: rgba(255, 255, 255, 0.9);
  border-radius: 12px;
  padding: 30px;
  min-height: 300px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
  max-width: 800px;
  margin: 40px auto;
  position: relative;
  z-index: 2;
  /* Existing subtle floating animation */
  animation: floatAnimation 6s ease-in-out infinite;
  /* New transition for smooth glow effect */
  transition: box-shadow 0.3s ease, transform 0.3s ease;
}

/* New Hover/Active/Focus States for Glow and Pausing the Animation */
.floating-window:hover,
.floating-window:focus-within,
.floating-window:active {
  animation-play-state: paused;
  /* Stops the floating animation */
  box-shadow: 0 0 20px 5px rgba(0, 123, 255, 0.6);
  /* Glowing outer corners */
  transform: none;
}

@keyframes floatAnimation {
  0% {
    transform: translateY(0px);
  }

  50% {
    transform: translateY(-5px);
  }

  100% {
    transform: translateY(0px);
  }
}

/* Optionally, if you want the search bar or insurer section text to have additional styling, add similar rules */


/* profile card */

.profile-card {
  position: absolute;
  display: none;
  background: #fff;
  border: 1px solid #ddd;
  border-radius: 4px;
  padding: 10px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
  z-index: 1000;
  min-width: 200px;
}

.profile-card h4 {
  margin: 0 0 5px;
  font-size: 16px;
}

.profile-card p {
  margin: 2px 0;
  font-size: 14px;
}

/* ---------------------------------------------------
   Utility class to hide dropdowns on all pages
   --------------------------------------------------- */
.location-selector .dropdown.hidden,
.user-selector .dropdown.hidden {
  display: none !important;
}


/* === HOME PAGE OVERRIDES – 2025-06-02 ============================== */

/* insurer CTA now stacks title > button vertically */
body.homepage .insurer-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}


/* === MIC WRAPPER – 2025-06-11 (inside-field alignment fix) ============== */
.input-wrapper {
  position: relative;
  width: 100%;
  max-width: 700px;
  /* keeps wrapper same width as the input */
  margin: 0 auto;
  /* centres the whole wrapper */
  display: block;
}

.input-wrapper .search-box {
  padding-right: 52px;
  /* room for the mic */
  margin: 0;
  /* wrapper handles centring now */
}

.input-wrapper .mic-icon {
  position: absolute;
  right: 14px;
  top: 50%;
  transform: translateY(-50%);
  width: 26px;
  height: 26px;
  cursor: pointer;
  opacity: .6;
  transition: opacity .25s, filter .25s;
}

.input-wrapper .mic-icon:hover {
  opacity: 1;
}

.input-wrapper .mic-icon.listening {
  opacity: 1;
  filter: drop-shadow(0 0 4px #007BFF);
}


/* ─── GLOBAL TOAST – fixed top-right, top-most stacking (mobile-safe) ─── */
#toastContainer.global-toast {
  position: fixed;
  /* Prefer safe-area on mobile; fall back to header height var on desktop */
  top: calc(env(safe-area-inset-top, 0px) + 16px);
  right: 24px;
  width: auto;
  max-width: 300px;

  /* Put toast ABOVE header(7000), dropdowns(7100), drawer(12000).
     Keep it BELOW preloader(20000). */
  z-index: 16000;

  pointer-events: none;

  /* iOS/Safari stacking-context hardening to prevent text painting above it */
  isolation: isolate;
  /* its own stacking context */
  -webkit-transform: translateZ(0);
  /* trigger compositor on iOS Safari */
  transform: translateZ(0);
  will-change: transform;
  backface-visibility: hidden;
}

/* Mobile: ensure toast can’t be clipped and stays visually on top */
@media (max-width: 900px) {
  #toastContainer.global-toast {
    /* keep it clear of edges and centered if space is tight */
    left: 12px;
    right: 12px;
    max-width: none;
    display: flex;
    justify-content: flex-end;
    /* right-align by default */
  }

  /* If you want to center the toast on small phones, switch to center:
     justify-content: center; */
}



.notification-modern {
  margin-bottom: 12px;
  padding: 12px 20px;
  border-radius: 6px;
  font-size: 15px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, .20);
  opacity: 0;
  transition: opacity .25s ease-in-out;
  display: inline-flex;
  align-items: center;
  pointer-events: auto;
  /* allow toast clicks if needed */
}

.notification-modern.show {
  opacity: 1;
}

/* pending/success/error backgrounds unchanged */


.notification-modern.pending {
  background: #0056b3;
  color: #fff;
}

.notification-modern.success {
  background: #27ae60;
  color: #fff;
}

.notification-modern.error {
  background: #e74c3c;
  color: #fff;
}

/* animate dots unchanged… */


.notification-modern .toast-message {
  flex: 1;
}

.notification-modern .toast-dots {
  display: inline-flex;
  margin-left: 8px;
}

.toast-dots span {
  display: block;
  width: 6px;
  height: 6px;
  margin: 0 2px;
  background: #fff;
  border-radius: 50%;
  animation: toast-bounce .6s infinite ease-in-out;
}

.toast-dots span:nth-child(2) {
  animation-delay: .2s;
}

.toast-dots span:nth-child(3) {
  animation-delay: .4s;
}

@keyframes toast-bounce {

  0%,
  100% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(-4px);
  }
}

/* === END GLOBAL TOAST STYLES ========================================= */

/* ============================================================================
   ── HOMEPAGE OVERHAUL STYLES (2025‐06 Revision)
   ============================================================================ */

/* Ensure we use Inter for homepage text */
body.homepage {
  font-family: 'Inter', sans-serif;
  background: #f5f8fc;
  /* Light, clean background */
}


/* Header “card” that directly attaches to the hero below */
.homepage-nav {
  background: #ffffff;
  /* give it the same width as the hero and center it */
  max-width: none;
  /* was: var(--hero-max) */
  width: 100%;
  /* new: stretch full width */
  margin: 0;
  /* was: 0 auto */
  /* center */
  padding-block: 12px;
  padding-inline: 0;
  box-shadow: 0 8px 24px rgba(0, 84, 166, 0.10);
  border-radius: 0;
  /* remove rounding so it “touches” the hero */
  /* rounded top; hero will own the bottom corners */
  margin-bottom: 0;
  /* <<< remove the gap under the header */
}

/* Mobile: keep full-width simple bar */
@media (max-width:900px) {
  .homepage-nav {
    max-width: none;
    border-radius: 0;
    box-shadow: none;
    padding: 8px 12px;
  }
}


/* ===== UPDATED: Center nav groups around the middle ===== */
.homepage-nav .nav-links {
  position: relative;
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: clamp(6px, 1.2vw, 18px);
  list-style: none;

  /* ➜ Make it span the whole bar rather than cap at hero width */
  max-width: none;
  width: 100%;
  margin: 0;

  /* Symmetric gutters so left and right match exactly */
  padding-inline: var(--nav-gutter);

  /* left group → spacer → right group */
  justify-content: center;

}



/* Keep the center logo between left and right groups (in normal flow) */
.homepage-nav .nav-center-logo {
  position: static;
  transform: none;
  /* equal margin both sides; tuned slightly for balance */
  margin-inline: clamp(14px, 2vw, 28px);
  z-index: auto;
  flex: 0 0 auto;
}

/* DESKTOP: normalize the first right item so it doesn't feel farther from the logo */
@media (min-width: 901px) {
  .homepage-nav .nav-links li.nav-right-item .location-selector {
    padding-left: 10px;
    /* was 16px globally */
    padding-right: 10px;
    /* keep symmetry too */
  }
}


/* Ensure comfortable inset at the far right, beyond general padding */
@media (min-width: 901px) {
  .homepage-nav .nav-links li.nav-right-item:last-child {
    margin-inline-end: 12px;
  }
}




/* Use the existing spacer LI to push right-group to the right edge */
.homepage-nav .nav-spacer {
  flex: 1 1 auto;
  /* was fixed width; let it expand */
  width: auto;
}

/* DESKTOP: remove the spacer so the logo has equal gaps on both sides */
@media (min-width: 901px) {
  .homepage-nav .nav-spacer {
    flex: 0 0 0;
    width: 0;
    display: none !important;
  }
}


/* Hide the center logo on small screens (drawer handles mobile) */
@media (max-width: 900px) {
  .homepage-nav .nav-center-logo {
    display: none !important;
  }
}

.homepage-nav .nav-links li {
  list-style: none;
}

/* — Left and right items share this same link styling —  (REV 2025-06-26) */
.homepage-nav .nav-links li.nav-left-item a,
.homepage-nav .nav-links li.nav-right-item a {
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
  /* keep “Sign In” on one line */
  color: #0056b3;
  text-decoration: none;
  font-weight: 600;
  font-size: 1rem;
  line-height: 1;
  transition: color 0.2s, border-bottom 0.2s;
  padding: 0 clamp(10px, 0.9vw, 14px);
  /* ↓ tighter = no center overlap */
  font-family: 'Inter', sans-serif;
}



/* ─── MODERN MINIMAL HOVER FOR NAV LINKS ────────────────────────── */
.homepage-nav .nav-links li.nav-left-item a:hover,
.homepage-nav .nav-links li.nav-right-item a.sign-in:hover,
.homepage-nav .nav-links li.nav-right-item .location-selector:hover {
  color: #003f7f;
  transform: translateY(-2px);
  background: transparent;
  transition: transform 0.2s ease, color 0.2s ease;
}


/* Header outer container should not fight the inner UL width/centering */
.homepage-nav {
  display: block;
  /* let .nav-links control centering/max-width */
}

/* Desktop: never let the mobile bar affect spacing */
@media (min-width: 901px) {
  .homepage-nav .mobile-bar {
    display: none !important;
  }
}

.nav-brand .brand-logo {
  height: 44px;
  width: auto;
  display: block;
}

@media (max-width: 900px) {
  .nav-brand {
    display: none !important;
  }

  /* we already have the mobile bar */
}


/* Centered logo item inside the nav list */
.nav-center-logo {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0 10px;
}

.nav-center-logo .brand-logo {
  height: 44px;
  width: auto;
  display: block;
}


/* Icon sizing for any <img class="nav-icon"> inside links */
.homepage-nav .nav-links li a img.nav-icon {
  height: 20px;
  width: auto;
  vertical-align: middle;
  margin-right: 6px;
}



/* — Location Selector (right‐nav) — */
.homepage-nav .nav-links li.nav-right-item .location-selector {
  display: inline-flex;
  align-items: center;
  position: relative;
  color: #0056b3;
  /* match other links */
  padding-bottom: 0;
  transition: color 0.2s, background 0.2s, border-radius 0.2s;
}

/* Desktop override (keeps your original desktop look) */
.homepage-nav .nav-links li.nav-right-item .location-selector input[id^="locationInput"] {
  background: transparent;
  border: none;
  outline: none;
  font-size: 1rem;
  font-weight: 600;
  color: inherit;
  /* #0056b3 from parent */
  text-align: center;
  width: 130px;
}

.homepage-nav .nav-links li.nav-right-item .location-selector input[id^="locationInput"]::placeholder {
  color: #0056b3;
  opacity: 0.6;
}


.homepage-nav .nav-links li.nav-right-item .location-selector:hover {
  color: #003f7f;
  /* dark blue on hover */
  border-radius: 4px;
}

/* ─── LOCATION SELECTOR DOWN ARROW DEFAULT COLOR ─────────────────── */
.homepage-nav .nav-links li.nav-right-item .location-button {
  color: #1f3a93;
  /* matches non-hover nav-link color */
}


.homepage-nav .nav-links li.nav-right-item .location-selector .location-icon {
  display: inline-block;
  width: 20px;
  height: 20px;
  background: url('../images/location.png') no-repeat center center;
  background-size: 20px 20px;
  margin-right: 4px;
}

.homepage-nav .nav-links li.nav-right-item .location-selector .location-button {
  background: transparent;
  border: none;
  cursor: pointer;
  font-size: 1rem;
  color: inherit;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: 4px;
}


/* === Register-Now Button: Left-to-Right Fill Hover === */
.homepage-nav .nav-links li.nav-right-item a.register-button {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 6px 14px;
  border: 2px solid #0056b3;
  background: transparent;
  color: #0056b3;
  font-size: 0.95rem;
  font-weight: 600;
  border-radius: 999px;
  text-decoration: none;
  line-height: 1;
  white-space: nowrap;
  background: linear-gradient(90deg, #0056b3 0%, #0056b3 0%) no-repeat;
  background-size: 0% 100%;
  transition: background-size 0.4s ease, color 0.4s ease;
}

.homepage-nav .nav-links li.nav-right-item a.register-button .main-text {
  display: block;
  font-size: 1rem;
  line-height: 1.2;
}

.homepage-nav .nav-links li.nav-right-item a.register-button .subtext {
  display: block;
  font-size: 0.65rem;
  font-weight: 400;
  margin-top: 2px;
  color: #0056b3;
  opacity: 0.9;
  line-height: 1;
  transition: color 0.4s ease;
}

.homepage-nav .nav-links li.nav-right-item a.register-button:hover {
  background-size: 100% 100%;
  color: #ffffff;
}

.homepage-nav .nav-links li.nav-right-item a.register-button:hover .subtext {
  color: #ffffff;
}



/* ─────────── HERO SLIDER ─────────── */
.hero-slider {
  background: #fff;
  border-radius: 0 0 16px 16px;
  /* bottom corners only; top attaches to header */
  padding: clamp(24px, 2.6vw, 36px);
  box-shadow: 0 8px 24px rgba(0, 84, 166, 0.10);
  max-width: none;
  /* full width bar to match header */
  width: 100%;
  /* <<< use the same width as header */
  margin: 0 0 12px;
  /* sits flush under header */
  /* no top margin; sits flush under header */
  position: relative;
  overflow: hidden;
  min-height: clamp(480px, 36vw, 620px);
  /* slightly tighter vertical envelope */
  display: block;
}



.hero-grid {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  /* a touch more balance */
  gap: clamp(16px, 2.4vw, 28px);
  align-items: center;
  height: 100%;
  max-width: var(--hero-max);
  margin: 0 auto;
}

/* Re-center slide content vertically; remove top nudge */
.hero-grid {
  align-items: center;
  padding-top: 0;
}


/* ensure the left copy never hugs the edge */
.hero-copy {
  padding-inline-start: clamp(12px, 2.6vw, 40px);
  padding-inline-end: clamp(6px, 1.4vw, 16px);
}

/* Structured spacing for left column so it’s not crammed */
.hero-copy {
  display: grid;
  align-content: start;
  gap: clamp(10px, 1.4vw, 14px);
  max-width: 560px;
}

.hero-copy .hero-title {
  margin: 0;
}

.hero-copy .hero-sub {
  margin: 2px 0 4px;
  /* tighter, consistent */
}

.hero-copy .cta-primary {
  margin-top: 6px;
}


.hero-copy .hero-title {
  margin: 0 0 10px;
  font-weight: 800;
  color: #0056b3;
  font-size: clamp(1.55rem, 2.2vw, 2.2rem);
  /* slightly calmer scale */
  line-height: 1.18;
}

.hero-copy .hero-sub {
  margin: 6px 0 16px;
  font-size: clamp(1rem, 1.4vw, 1.15rem);
  line-height: 1.45;
  color: #223050;
  max-width: 42ch;
}


.cta-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 12px 18px;
  border-radius: 10px;
  background: #0056b3;
  color: #fff;
  font-weight: 700;
  text-decoration: none;
}

.cta-primary:hover {
  background: #003f7f;
}

.hero-art img {
  display: block;
  width: 100%;
  height: auto;
}

/* Overlapped slides with directional slide transitions */
.hero-slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  pointer-events: none;
  z-index: 1;
  transform: translateX(6%);
  transition: transform .6s cubic-bezier(.22, .61, .36, 1), opacity .6s cubic-bezier(.22, .61, .36, 1);
}

.hero-slide.active {
  opacity: 1;
  pointer-events: auto;
  z-index: 2;
  transform: translateX(0);
}

/* When leaving, we push the outgoing slide away */
.hero-slide.exiting-left {
  opacity: 0;
  transform: translateX(-6%);
  z-index: 3;
}

.hero-slide.exiting-right {
  opacity: 0;
  transform: translateX(6%);
  z-index: 3;
}

/* elevate controls so they don't collide with the bottom overlay on desktop */
.hero-controls {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 10px;
  z-index: 5;
}

/* sit above the centered search on desktop; fall back on mobile */
@media (min-width:901px) {
  .hero-controls {
    bottom: 22px;
  }
}


@media (max-width: 900px) {
  .hero-controls {
    bottom: 12px;
  }
}

/* modern ring dots that never stretch */
.hero-dot {
  width: 12px;
  aspect-ratio: 1 / 1;
  border-radius: 999px;
  border: 2px solid #cfe0ff;
  background: #ffffff;
  cursor: pointer;
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease, background-color .2s ease;
}

.hero-dot.active {
  background: #0056b3;
  border-color: #0056b3;
  box-shadow: 0 0 0 4px rgba(0, 86, 179, .12);
  transform: scale(1.06);
}


/* center-bottom overlay on desktop; mobile remains stacked via existing media rule */
.hero-search {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: 8px;
  /* sit on the bottom edge */
  /* slightly tighter */
  z-index: 4;
  width: min(900px, 92%);
  display: flex;
  gap: 12px;
  align-items: center;
  justify-content: center;
  margin: 0;
}


@media (max-width: 900px) {
  .hero-search {
    position: static;
    width: 100%;
    margin-top: 12px;
    padding: 0 2px;
    display: flex;
    flex-direction: column;
    gap: 12px;
  }
}


/* === Empowering (hero-style) =========================================== */
.empowering-hero {
  background: #fff;
  border-radius: 16px;
  box-shadow: 0 8px 24px rgba(0, 84, 166, 0.10);
  width: 100%;
  margin: 28px 0 16px;
  padding: clamp(20px, 2.4vw, 32px);
}

.empower-grid {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  align-items: center;
  gap: clamp(16px, 2.4vw, 28px);
  max-width: var(--hero-max);
  margin: 0 auto;
}

.empower-copy {
  display: grid;
  align-content: start;
  gap: clamp(10px, 1.2vw, 14px);
  padding-inline-start: clamp(6px, 1.6vw, 24px);
}

.empower-title {
  margin: 0;
  font-weight: 800;
  color: #0056b3;
  font-size: clamp(1.35rem, 2.1vw, 2rem);
  line-height: 1.18;
}

.emp-label {
  font-weight: 800;
  color: #003f7f;
  letter-spacing: .02em;
  margin-bottom: 6px;
  font-size: 1.05rem;
}

.emp-text {
  margin: 0 0 8px;
  color: #223050;
  line-height: 1.55;
  font-size: 1rem;
}

.empower-arrows {
  display: inline-flex;
  gap: 10px;
  margin-top: 4px;
}

.empower-arrows .carousel-arrow {
  height: 44px;
  width: 44px;
  border-radius: 50%;
  border: 1px solid #dbe7ff;
  background: #ffffff;
  box-shadow: 0 4px 12px rgba(0, 0, 0, .08);
  cursor: pointer;
  font-size: 18px;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: transform .15s ease, box-shadow .15s ease;
}

.empower-arrows .carousel-arrow:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 18px rgba(0, 0, 0, .12);
}

/* right art */
.empower-art img {
  display: block;
  width: 100%;
  height: auto;
  max-height: clamp(240px, 28vw, 380px);
  object-fit: contain;
}

/* subtle fade when rotating */
.emp-item.fade {
  opacity: .35;
  transition: opacity .15s ease;
}

@media (max-width: 900px) {
  .empower-grid {
    grid-template-columns: 1fr;
  }

  .empower-art img {
    max-height: clamp(180px, 42vw, 300px);
  }
}

/* === Mission unified ==================================================== */
.mission-unified {
  max-width: 1100px;
  margin: 0 auto;
  padding: 18px;
  background: #fff;
  border: 1px solid #e3ecfb;
  border-radius: 14px;
  box-shadow: 0 6px 18px rgba(0, 84, 166, .08);
}

.mission-unified .mission-title {
  text-align: left;
  /* keep consistent with other modern sections */
  margin: 0 0 8px;
}

.mission-blurb {
  margin: 0 0 10px;
  color: #223050;
  line-height: 1.65;
  font-size: 1.02rem;
}

.mission-values {
  list-style: none;
  padding: 0;
  margin: 10px 0 0;
  display: grid;
  gap: 10px;
}

.mission-values li {
  display: grid;
  grid-template-columns: 26px 1fr;
  gap: 8px;
  align-items: start;
  color: #223050;
  font-size: .95rem;
  line-height: 1.5;
  position: relative;
}

.mission-values li::before {
  content: "✓";
  display: inline-grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #eaf3ff;
  border: 1px solid #cfe0ff;
  color: #27ae60;
  font-weight: 800;
  font-size: 0.9rem;
}


/* === Mission (hero-style to match Empowering) ============================ */
.mission-hero {
  background: #fff;
  border-radius: 16px;
  box-shadow: 0 8px 24px rgba(0, 84, 166, .10);
  width: 100%;
  margin: 28px 0 16px;
  padding: clamp(20px, 2.4vw, 32px);
}

.mission-grid {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  /* slightly text-forward like Empowering */
  align-items: center;
  gap: clamp(16px, 2.4vw, 28px);
  max-width: var(--hero-max);
  margin: 0 auto;
}

.mission-copy {
  display: grid;
  align-content: start;
  gap: clamp(10px, 1.2vw, 14px);
  padding-inline-start: clamp(6px, 1.6vw, 24px);
}

.mission-title {
  margin: 0;
  font-weight: 800;
  color: #0056b3;
  font-size: clamp(1.35rem, 2.1vw, 2rem);
  line-height: 1.18;
}

/* Standout lead paragraph for the mission statement */
.mission-lead {
  margin: 6px 0 10px;
  font-size: clamp(1.02rem, 1.35vw, 1.12rem);
  line-height: 1.6;
  color: #223050;
  position: relative;
}

/* Subtle accent bar to the left of the lead text */
.mission-lead::before {
  content: "";
  position: absolute;
  left: -14px;
  top: 0.4em;
  width: 4px;
  height: calc(100% - 0.8em);
  border-radius: 4px;
  background: #cfe0ff;
}

.mission-art img {
  display: block;
  width: 100%;
  height: auto;
  max-height: clamp(240px, 28vw, 380px);
  object-fit: contain;
}

@media (max-width: 900px) {
  .mission-grid {
    grid-template-columns: 1fr;
  }

  .mission-art img {
    max-height: clamp(180px, 42vw, 300px);
  }

  .mission-lead::before {
    left: -8px;
  }
}


/* === HERO SEARCH — canonical (single source of truth) === */
.hero-search .input-wrapper {
  max-width: none;
  flex: 1 1 auto;
}

/* Inherit unified search box look; keep width/font override if desired */
.hero-search .search-box {
  width: 100%;
  font-size: 1.05rem;
}



.hero-search .search-box:focus {
  border-color: #84b2ff;
  box-shadow:
    0 10px 28px rgba(0, 86, 179, .16),
    0 0 0 3px rgba(0, 119, 255, .12),
    inset 0 1px 0 rgba(255, 255, 255, .9);
  outline: none;
}

.hero-search .mic-icon {
  position: absolute;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  width: 26px;
  height: 26px;
  cursor: pointer;
  opacity: .65;
  transition: opacity .25s, filter .25s;
}

.hero-search .mic-icon:hover {
  opacity: 1;
}

.hero-search .mic-icon.listening {
  opacity: 1;
  filter: drop-shadow(0 0 4px #007BFF);
}

/* Sleek AI button */
.hero-search .search-btn {
  position: relative;
  border: none;
  border-radius: 999px;
  padding: 14px 22px;
  height: 52px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
  background: radial-gradient(120% 160% at 0% 0%, #1a66cc 0%, #0056b3 42%, #004a9b 100%);
  color: #fff;
  font-weight: 800;
  letter-spacing: .02em;
  box-shadow:
    0 10px 24px rgba(0, 86, 179, .22),
    inset 0 1px 0 rgba(255, 255, 255, .22);
  transition: transform .12s ease, box-shadow .25s ease, filter .25s ease;
}

.hero-search .search-btn:active {
  transform: translateY(1px);
  box-shadow:
    0 6px 18px rgba(0, 86, 179, .22),
    inset 0 0 0 rgba(255, 255, 255, 0);
}

.hero-search .btn-main {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}

/* AI tag as a subtle pill */
.hero-search .ai-tag {
  display: inline-flex;
  align-items: center;
  padding: 6px 10px;
  border-radius: 999px;
  background: rgba(255, 255, 255, .16);
  border: 1px solid rgba(255, 255, 255, .22);
  font-weight: 700;
  letter-spacing: .02em;
}

/* No divider needed with tighter layout */
.hero-search .divider {
  display: none !important;
}

.hero-search .btn-text {
  font-weight: 800;
}

@media (max-width:900px) {
  .hero-search {
    flex-direction: column;
  }

  .hero-search .search-btn {
    width: 100%;
  }
}

/* === Unified Search Box Look (high-contrast white) === */
.search-form .search-box {
  width: 100%;
  border: 1px solid #e5e7eb;
  /* neutral, not blue */
  border-radius: 999px;
  padding: 16px 56px 16px 18px;
  /* keeps room for mic */
  background: #ffffff;
  /* solid white */
  color: #0f172a;
  /* high legibility */
  font-size: 1.05rem;
  box-shadow:
    0 2px 4px rgba(0, 0, 0, .04),
    0 8px 20px rgba(0, 0, 0, .06);
  /* neutral shadow */
  transition: box-shadow .2s ease, border-color .2s ease;
}

.search-form .search-box::placeholder {
  color: #64748b;
  /* slate placeholder */
  opacity: .9;
}

.search-form .search-box:focus {
  outline: none;
  border-color: #60a5fa;
  /* accessible blue ring */
  box-shadow:
    0 0 0 3px rgba(37, 99, 235, .15),
    0 8px 22px rgba(0, 0, 0, .08);
}

/* === Centralized Search BELOW the hero (2025-10-25) === */
.homepage-search-wrap {
  max-width: var(--hero-max);
  margin: 12px auto 24px;
  padding: 0 12px;
}

.homepage-search {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  width: 100%;
}

.homepage-search .input-wrapper {
  max-width: none;
  flex: 1 1 auto;
}

/* Inherit unified search box look; keep only needed overrides */
.homepage-search .search-box {
  width: 100%;
  font-size: 1.05rem;
}



.homepage-search .mic-icon {
  position: absolute;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  width: 26px;
  height: 26px;
  cursor: pointer;
  opacity: .65;
  transition: opacity .25s, filter .25s;
}

.homepage-search .mic-icon:hover {
  opacity: 1;
}

.homepage-search .mic-icon.listening {
  opacity: 1;
  filter: drop-shadow(0 0 4px #007BFF);
}

.homepage-search .search-btn {
  position: relative;
  border: none;
  border-radius: 999px;
  padding: 14px 22px;
  height: 52px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
  background: radial-gradient(120% 160% at 0% 0%, #1a66cc 0%, #0056b3 42%, #004a9b 100%);
  color: #fff;
  font-weight: 800;
  letter-spacing: .02em;
  box-shadow:
    0 10px 24px rgba(0, 86, 179, .22),
    inset 0 1px 0 rgba(255, 255, 255, .22);
  transition: transform .12s ease, box-shadow .25s ease, filter .25s ease;
}

/* PATCH: Clickable affordance + accessibility for AI button */
.homepage-search .search-btn,
.hero-search .search-btn {
  cursor: pointer;
}

.homepage-search .search-btn:focus-visible,
.hero-search .search-btn:focus-visible {
  outline: none;
  box-shadow:
    0 0 0 3px rgba(37, 99, 235, .30),
    0 12px 28px rgba(0, 86, 179, .30),
    inset 0 1px 0 rgba(255, 255, 255, .28);
}

.homepage-search .search-btn:active,
.hero-search .search-btn:active {
  transform: translateY(1px);
  filter: brightness(0.98);
}

.homepage-search .btn-main {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}

.homepage-search .ai-tag {
  display: inline-flex;
  align-items: center;
  padding: 6px 10px;
  border-radius: 999px;
  background: rgba(255, 255, 255, .16);
  border: 1px solid rgba(255, 255, 255, .22);
  font-weight: 700;
  letter-spacing: .02em;
}

/* NEW: modern hover behavior for AI button (also applied to legacy .hero-search below) */
.homepage-search .search-btn:hover,
.hero-search .search-btn:hover {
  transform: translateY(-1px);
  filter: brightness(1.05);
  box-shadow:
    0 14px 28px rgba(0, 86, 179, .28),
    inset 0 1px 0 rgba(255, 255, 255, .28);
}

@media (max-width: 900px) {
  .homepage-search {
    flex-direction: column;
    gap: 12px;
  }

  .homepage-search .search-btn {
    width: 100%;
  }
}



/* ─────────── QUICK ACCESS CARDS ─────────── */
.home-cards {
  max-width: 1100px;
  margin: 24px auto;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 16px;
}

.home-card {
  display: block;
  position: relative;
  background: #fff;
  border: 1px solid #e3ecfb;
  border-radius: 14px;
  padding: 16px;
  text-decoration: none;
  color: inherit;
  box-shadow: 0 6px 18px rgba(0, 84, 166, .08);
  transition: transform .2s ease, box-shadow .2s ease;
}

/* PATCH: Only cards we mark as .is-clickable will show pointer + focus ring */
.home-card.is-clickable {
  cursor: pointer;
}

.home-card.is-clickable:focus-visible {
  outline: 3px solid rgba(0, 86, 179, .35);
  outline-offset: 3px;
}

/* Underline card titles on hover for ALL cards (home + tools), clickable or not */
.home-card:hover .card-title,
.tool-card:hover .tool-title {
  text-decoration: underline;
}

.home-card.is-clickable:active {
  transform: translateY(-1px) scale(0.995);
}

.home-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 24px rgba(0, 84, 166, .12);
}

.home-card .card-media {
  position: relative;
  height: 64px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 10px;
}

.home-card img {
  max-height: 48px;
  width: auto;
}

.coming-soon {
  position: absolute;
  top: -6px;
  right: -6px;
  background: linear-gradient(135deg, #ffd166, #fca311);
  color: #111;
  font-size: .72rem;
  padding: 4px 8px;
  border-radius: 999px;
  font-weight: 800;
}

.card-title {
  margin: 0 0 6px;
  font-weight: 800;
  color: #0b4aa2;
  font-size: 1.05rem;
}

.card-desc {
  margin: 0;
  color: #334;
  font-size: .95rem;
}

/* Mobile hero stack */
@media (max-width: 900px) {
  .hero-grid {
    grid-template-columns: 1fr;
    gap: 16px;
  }

  .hero-controls {
    bottom: 10px;
  }
}


/* ===== End updated header navigation ===== */


/* ===== Adjusted Homepage Logo spacing ===== */
.homepage-logo {
  text-align: center;
  margin: 16px 0 24px;
}

/* ===== End updated Homepage Logo ===== */

.homepage-logo img {
  max-height: 72px;
  vertical-align: middle;
}

/* ─────────── Tab Container (Slider Version) ─────────── */
.tab-container {
  display: flex;
  justify-content: center;
  margin-bottom: 24px;
}

.tab-slider {
  position: relative;
  display: flex;
  background: #e6f2ff;
  border-radius: 8px;
  padding: 4px;
  width: 100%;
  max-width: 600px;
}

/* ▷ Updated tab-button padding to ensure equal left/right gap ▷ */
.tab-slider .tab-button {
  flex: 1;
  text-align: center;
  background: transparent;
  border: none;
  color: #0056b3;
  font-size: 1rem;
  font-weight: 600;
  padding: 12px 20px;
  /* increased side padding for consistent gap */
  cursor: pointer;
  z-index: 1;
  transition: color 0.2s;
}

/* Active tab: white text */
.tab-slider .tab-button.active {
  color: #ffffff;
}

/* Inactive tab hover: darker blue text */
.tab-slider .tab-button:hover:not(.active) {
  color: #003f7f;
}

/* ▷ Updated indicator width to match half of container minus internal padding ▷ */
.slider-indicator {
  position: absolute;
  top: 4px;
  bottom: 4px;
  width: calc(50% - 8px);
  background: #0056b3;
  border-radius: 6px;
  transition: left 0.3s ease;
  left: 4px;
}

/* Move indicator under "Health Cost Estimator" when active */
.tab-slider .tab-button#tab-estimator.active~.slider-indicator {
  left: calc(50% + 4px);
}

/* Move indicator back under "Search" when active */
.tab-slider .tab-button#tab-search.active~.slider-indicator {
  left: 4px;
}

/* ─────────── Tab Content Containers ─────────── */
.tab-content {
  display: none;
}

.tab-content.active {
  display: block;
}

/* ─────────────────────────────────────────────────── */


/* ─────────── SEARCH TAB HEADER ─────────── */
.search-header {
  text-align: center;
  max-width: 800px;
  margin: 0 auto 32px;
}

.search-header .welcome-header {
  margin: 0;
  font-size: 2.75rem;
  font-weight: 800;
  color: #0056b3;
  line-height: 1.15;
}

/* PATCH: equalize "Welcome to" + "ClarityCare Hub" font size */
.search-header .welcome-header .line1,
.search-header .welcome-header .line2 {
  font-size: 0.9em;
  /* same size for both lines */
  font-weight: 700;
}


.search-header .subtext {
  font-size: 1.25rem;
  line-height: 1.35;
  color: #555;
  margin: 12px 0 0;
}

/* === Modern Section Divider (for features & mission) === */
.section-divider {
  width: 64%;
  height: 1px;
  margin: 32px auto;
  border: none;
  background: linear-gradient(90deg,
      transparent,
      #c5d1e4 30%,
      #c5d1e4 70%,
      transparent);
}

/* Keep the title on one line without breaking the layout */
.search-header .welcome-header {
  white-space: normal;
  /* default for desktop */
}

/* Mobile: make “Welcome to ClarityCare Hub” same size & on a single line */
@media (max-width: 768px) {

  .search-header .welcome-header {
    font-size: clamp(1.2rem, 6vw, 1.9rem);
    /* slightly wider range to help fit */
    white-space: nowrap;
    /* keep single line */
    overflow: visible;
    /* let JS handle sizing instead of ellipsis */
    text-overflow: clip;
    /* no ellipsis; we resize instead */
  }


  .search-header .welcome-header .line1,
  .search-header .welcome-header .line2 {
    font-size: 1em;
    /* equalize both lines on mobile */
  }
}



/* ─────────────────────────────────────────────────────────────
   SEARCH LOADING UI (shared across Home + Results pages)
   - Button shows "Searching" + 3 animated dots
   - Input wrapper gets an animated conic-gradient border ring
   - Mobile-safe; pointer-events preserved
   ───────────────────────────────────────────────────────────── */

.search-form .search-btn.is-loading {
  position: relative;
  pointer-events: none;
  opacity: 0.92;
  filter: saturate(1.05);
  transform: translateZ(0);
}

.search-form .search-btn.is-loading .ai-tag,
.search-form .search-btn.is-loading .divider {
  display: none !important;
}

.search-form .search-btn.is-loading .btn-text {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

/* Reuse your global toast-dots animation */
.search-form .search-btn.is-loading .btn-text .toast-dots {
  display: inline-flex;
}


/* Make sure the input itself stays above page backgrounds */
.search-form .search-box[aria-busy="true"] {
  position: relative;
  z-index: 2;
}



/* ─────────── INSURER CTA ─────────── */
.insurer-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  margin-bottom: 40px;
}

.insurer-text {
  font-size: 1.15rem;
  font-weight: 600;
  color: #333;
  background: rgba(0, 123, 255, 0.1);
  padding: 8px 16px;
  border-radius: 6px;
  white-space: nowrap;
}

.upload-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 16px 24px;
  background: #0056b3;
  color: #fff;
  font-size: 1rem;
  font-weight: 600;
  border: none;
  border-radius: 6px;
  text-decoration: none;
  cursor: pointer;
  transition: background 0.3s;
}

.upload-button:hover {
  background: #003f7f;
  animation: glow 1.5s ease-in-out infinite;
}


/* ─────────── PLATFORM MISSION ─────────── */

.mission-section {
  max-width: 800px;
  margin: 40px auto;
  text-align: left;
}


.mission-section h2 {
  font-size: 1.75rem;
  color: #0056b3;
  margin-bottom: 16px;
}

.features-list {
  list-style: disc inside;
  font-size: 1rem;
  line-height: 1.6;
  color: #333;
  padding-left: 20px;
}

.mission-section p {
  font-size: 1rem;
  line-height: 1.6;
  color: #555;
}


/* ─────────── More Tools & Services (new grid) ─────────── */
.tools-section {
  max-width: 1100px;
  margin: 28px auto 0;
  padding: 0 12px;
}

.tools-title {
  font-size: 1.6rem;
  color: #0056b3;
  text-align: center;
  margin: 0 0 16px;
  font-weight: 800;
}

.tools-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px;
}

.tool-card {
  position: relative;
  background: #fff;
  border: 1px solid #e3ecfb;
  border-radius: 14px;
  padding: 16px;
  box-shadow: 0 6px 18px rgba(0, 84, 166, .08);
  transition: transform .2s ease, box-shadow .2s ease;
}

.tool-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 24px rgba(0, 84, 166, .12);
}


.tool-title {
  margin: 4px 0 6px;
  font-weight: 800;
  color: #0b4aa2;
  font-size: 1.05rem;
}

.tool-desc {
  margin: 0;
  color: #334;
  font-size: .95rem;
  line-height: 1.5;
}

/* Tool-card media icon (top) */
.tool-card .tool-media {
  position: relative;
  height: 64px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 10px;
}

.tool-card .tool-media img {
  max-height: 48px;
  width: auto;
  display: block;
}


/* === AI Chat Card: Border ring beam pulse (background-clip; no transforms) === */
/* Single pseudo-element, beam confined to the border via background-clip */
@property --aiGlowAngle {
  syntax: '<angle>';
  inherits: false;
  initial-value: 0turn;
}

/* Keep content above effects, but let .ai-stars sit between ring and content */
.home-card.ai-glow> :not(.ai-stars) {
  position: relative;
  z-index: 2;
}


/* Mask-based ring: draws ONLY in the border, never over the content */
.home-card.ai-glow::before {
  content: "";
  position: absolute;
  inset: -2px;
  /* was -1px: allows room for the thicker ring */
  /* tiny bleed to avoid hairline gaps */
  border-radius: inherit;
  pointer-events: none;
  z-index: 0;
  /* below children (which are z:2) */
  border: 3px solid transparent;
  /* was 2px */

  /* Beam gradient (no padding-box paint!) */
  background:
    conic-gradient(from var(--aiGlowAngle),
      rgba(102, 166, 255, 0) 0deg,
      rgba(102, 166, 255, 0) 42deg,
      #66a6ff 56deg,
      #0064D2 80deg,
      rgba(102, 166, 255, 0) 96deg,
      rgba(102, 166, 255, 0) 360deg) border-box;

  /* Clip the background to the BORDER RING only */
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask-composite: exclude;

  /* Subtle halo */
  filter:
    drop-shadow(0 0 4px rgba(0, 100, 210, .30)) drop-shadow(0 0 10px rgba(0, 100, 210, .18));

  opacity: 0;

  /* Slower sweep + longer idle: elegant cadence */
  animation:
    aiGlowRotate 8s linear infinite,
    aiGlowPulse 8s linear infinite;

}

/* Pause the cycle while the user interacts */
.home-card.ai-glow:hover::before,
.home-card.ai-glow:focus-within::before {
  animation-play-state: paused;
}

/* Reduced motion: disable */
@media (prefers-reduced-motion: reduce) {
  .home-card.ai-glow::before {
    animation: none !important;
    opacity: 0 !important;
  }
}

/* Rotate the gradient ANGLE slowly for a ~3.9s sweep, then idle */
@keyframes aiGlowRotate {

  /* 0–75% (≈6s of an 8s cycle): full 360° sweep */
  0% {
    --aiGlowAngle: 0turn;
  }

  75% {
    --aiGlowAngle: 1turn;
  }

  /* 75–100% (≈2s): hold angle steady for the short break */
  100% {
    --aiGlowAngle: 1turn;
  }
}


/* Glow opacity is visible only during the sweep window */
@keyframes aiGlowPulse {

  /* gentle fade in at start of sweep */
  0% {
    opacity: 0;
  }

  5% {
    opacity: 1;
  }

  /* stay visible through the sweep */
  75% {
    opacity: 1;
  }

  /* quick fade out, then stay hidden during the ~2s break */
  80% {
    opacity: 0;
  }

  100% {
    opacity: 0;
  }
}


/* === Ask Clara card: starfield (JS-driven, keeps ::before ring intact) === */
.home-card.ai-glow {
  position: relative;
}

/* ensures overlay positioning */

.ai-stars {
  position: absolute;
  inset: 6px;
  /* inside the border ring */
  border-radius: inherit;
  pointer-events: none;
  z-index: 1;
  /* below card content (z:2) but above the ring border area */
  overflow: hidden;
}

/* ✦ star shape: small core + two diagonal flares (brand-blue, more visible) */
.ai-stars .star {
  position: absolute;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  opacity: 0;

  /* Clear core + blue halo with more tone (brand #0064D2) */
  background: radial-gradient(circle at 50% 50%,
      rgba(255, 255, 255, 0.98) 0 35%,
      rgba(180, 210, 255, 0.96) 35% 62%,
      rgba(0, 100, 210, 0.90) 62% 100%);

  /* Slightly stronger glow for visibility, still sleek */
  filter:
    drop-shadow(0 0 8px rgba(0, 100, 210, .65)) drop-shadow(0 0 18px rgba(0, 100, 210, .32));

  animation: starTwinkle 7.5s ease-in-out infinite;
  will-change: opacity, transform;
}

.ai-stars .star::before,
.ai-stars .star::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 16px;
  height: 2px;
  transform: translate(-50%, -50%) rotate(45deg);
  /* white core → branded blue edge */
  background: linear-gradient(90deg,
      transparent,
      rgba(255, 255, 255, 0.95) 46%,
      rgba(0, 100, 210, 0.80) 54%,
      transparent);
  border-radius: 2px;
}

.ai-stars .star::after {
  transform: translate(-50%, -50%) rotate(-45deg);
}

/* Orchestrated cadence: appear → hold → gentle pulse → fade → rest (hidden) */
@keyframes starTwinkle {
  0% {
    opacity: 0;
    transform: scale(.65);
  }

  10% {
    opacity: 1;
    transform: scale(1.00);
  }

  20% {
    opacity: .95;
    transform: scale(1.06);
  }

  /* tiny flare */
  30% {
    opacity: .90;
    transform: scale(1.00);
  }

  40% {
    opacity: .85;
    transform: scale(1.04);
  }

  /* micro shimmer */
  50% {
    opacity: .80;
    transform: scale(1.00);
  }

  60% {
    opacity: .55;
    transform: scale(.92);
  }

  70% {
    opacity: .25;
    transform: scale(.80);
  }

  80% {
    opacity: 0;
    transform: scale(.70);
  }

  100% {
    opacity: 0;
    transform: scale(.65);
  }

  /* long rest window */
}


@media (prefers-reduced-motion: reduce) {
  .ai-stars .star {
    animation: none;
    opacity: .5;
  }
}





/* ─────────── Helpful Resources (grid-of-two) ─────────── */
.helpful-section {
  max-width: 1100px;
  margin: 28px auto 0;
  padding: 0 12px;
}

.helpful-title {
  font-size: 1.6rem;
  color: #0056b3;
  text-align: center;
  margin: 0 0 16px;
  font-weight: 800;
}

.helpful-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}

@media (max-width: 840px) {
  .helpful-grid {
    grid-template-columns: 1fr;
  }
}

.helpful-card {
  background: #fff;
  border: 1px solid #e3ecfb;
  border-radius: 14px;
  padding: 18px;
  box-shadow: 0 6px 18px rgba(0, 84, 166, .08);
  transition: transform .2s ease, box-shadow .2s ease;
}

.helpful-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 24px rgba(0, 84, 166, .12);
}

/* ▼ Helpful Resources: top icon row (parity with tool/quick cards) */
.helpful-card .helpful-media {
  position: relative;
  height: 64px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 10px;
}

.helpful-card .helpful-media img {
  max-height: 48px;
  width: auto;
  display: block;
}

.helpful-card-title {
  margin: 4px 0 6px;
  font-weight: 800;
  color: #0b4aa2;
  font-size: 1.05rem;
}

.helpful-desc {
  margin: 0;
  color: #334;
  font-size: .95rem;
  line-height: 1.5;
}

/* (Optional consistency) underline on hover like other cards */
.helpful-card:hover .helpful-card-title {
  text-decoration: underline;
}

/* ─────────── HEALTH COST ESTIMATOR TAB ─────────── */

.input-group .field-input {
  box-sizing: border-box;
  width: 100%;
  padding: 18px 48px 18px 20px;
  /* room on the right for the arrow */
  font-size: 1rem;
  text-align: center;
  border: 1px solid #0056b3;
  border-radius: 14px;
  background: linear-gradient(145deg, #ffffff 0%, #f3f7ff 100%);
  box-shadow:
    inset 2px 2px 4px rgba(0, 0, 0, 0.04),
    inset -2px -2px 4px rgba(255, 255, 255, 0.9),
    0 0 8px rgba(0, 119, 255, 0.25);
  transition: border-color 0.25s, box-shadow 0.25s;
}

.input-group .field-input:focus {
  box-sizing: border-box;
  border-color: #0056b3;
  box-shadow:
    inset 2px 2px 4px rgba(0, 0, 0, 0.04),
    inset -2px -2px 4px rgba(255, 255, 255, 1),
    0 0 14px rgba(0, 119, 255, 0.45);
  outline: none;
}

.estimator-header {
  text-align: center;
  max-width: 800px;
  margin: 0 auto 32px;
}

.estimator-header .estimator-title {
  margin: 0;
  font-size: 2.75rem;
  font-weight: 800;
  color: #0056b3;
  line-height: 1.15;
}

.estimator-header .estimator-subtext {
  font-size: 1.25rem;
  line-height: 1.35;
  color: #555;
  margin: 12px 0 0;
}

.estimator-deck {
  max-width: 700px;
  margin: 0 auto 40px;
  background: linear-gradient(135deg, #e9f2fc, #d4e5f9);
  border-radius: 16px;
  padding: 40px;
  box-shadow: 0 8px 24px rgba(0, 84, 166, 0.10);
}

.progress-indicators {
  display: flex;
  justify-content: center;
  margin-bottom: 24px;
}

.progress-indicators .circle {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: #cfd8e3;
  margin: 0 6px;
  transition: background 0.3s;
}

.progress-indicators .circle.active {
  background: #0056b3;
}

.deck-slide {
  display: none;
}

.deck-slide:not(.hidden) {
  display: block;
}

.question-text {
  font-size: 1.25rem;
  font-weight: 600;
  color: #333;
  margin-bottom: 20px;
  text-align: center;
}

.input-group {
  position: relative;
  margin-bottom: 20px;
}


.input-group .dropdown-toggle {
  position: absolute;
  right: 12px;
  /* inside the padding */
  top: 50%;
  transform: translateY(-50%);
  background: transparent;
  border: none;
  font-size: 1.2rem;
  cursor: pointer;
  color: #0056b3;
}


.dropdown-list {
  position: absolute;
  top: 100%;
  left: 0;
  width: 100%;
  max-height: 150px;
  overflow-y: auto;
  background: #fff;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
  border-radius: 4px;
  list-style: none;
  padding: 0;
  margin: 4px 0;
  z-index: 1500;
}

.dropdown-list.hidden {
  display: none;
}

.dropdown-list li {
  padding: 8px 12px;
  cursor: pointer;
}

.dropdown-list li:hover {
  background: #e6f2ff;
}

.deck-nav {
  display: flex;
  justify-content: center;
  gap: 16px;
  margin-top: 24px;
}

.deck-nav button {
  padding: 12px 24px;
  background: #0056b3;
  color: #fff;
  font-size: 1rem;
  font-weight: 600;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  transition: background 0.3s;
}

.deck-nav button:hover:not(:disabled) {
  background: #003f7f;
}

.deck-nav button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.result-slide .result-title {
  font-size: 1.5rem;
  text-align: center;
  color: #0056b3;
  margin-bottom: 12px;
}

.result-slide .result-amount {
  font-size: 2rem;
  font-weight: 700;
  text-align: center;
  color: #27ae60;
  margin-bottom: 8px;
}

.result-slide .result-details {
  font-size: 1rem;
  text-align: center;
  margin-bottom: 4px;
}

.disclaimer-text {
  font-size: 0.85rem;
  color: #666;
  text-align: center;
  margin-top: 16px;
}

/* === HCE: Results Grid, Cards, Badges, Narrative, Contact === */
.results-content {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 16px;
  align-items: stretch;
}

.estimate-card {
  position: relative;
  background: #fff;
  border: 2px solid #e3ecfb;
  border-radius: 14px;
  padding: 16px 16px 18px;
  box-shadow: 0 6px 20px rgba(0, 84, 166, .08);
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.estimate-card.best-deal {
  border-color: #27ae60;
  box-shadow: 0 12px 28px rgba(39, 174, 96, .18);
}

.best-deal-badge {
  position: absolute;
  top: 12px;
  left: 12px;
  display: inline-block;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .08em;
  background: linear-gradient(135deg, #27ae60, #1e874b);
  color: #fff;
  padding: 6px 10px;
  border-radius: 999px;
  pointer-events: none;
}

.estimate-meta .hospital-name {
  margin: 0 0 4px;
  font-size: 1.15rem;
  font-weight: 800;
  color: #003f7f;
}

.estimate-meta .matched {
  margin: 2px 0;
  font-size: .95rem;
  color: #1a2439;
}

.price-tag {
  margin: 8px 0 0;
  font-size: 1.6rem;
  font-weight: 800;
  color: #27ae60;
}

.meta-label {
  color: #6b7a99;
  font-weight: 600;
}

/* Make AI narrative render as clean sections & list (you currently see inline text) */
.ai-summary strong {
  display: block;
  margin-top: 10px;
  color: #003f7f;
}

.ai-summary ul {
  margin: 8px 0 0 18px;
  padding: 0;
}

.ai-summary li {
  margin: 4px 0;
  line-height: 1.5;
}

.contact-info h4 {
  margin: 12px 0 6px;
  color: #003f7f;
}

.contact-info p {
  margin: 2px 0;
}

/* === HCE: Selected hospital chips (Step 3) === */
.selected-hospitals {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding-top: 8px;
}

.hospital-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  background: linear-gradient(145deg, #e6f2ff, #d4e8ff);
  border: 1px solid #0056b3;
  color: #003f7f;
  border-radius: 999px;
  font-weight: 600;
}

.hospital-chip button {
  border: none;
  background: transparent;
  font-size: 14px;
  line-height: 1;
  padding: 0 2px;
  cursor: pointer;
  color: #003f7f;
  opacity: .7;
}

.hospital-chip button:hover {
  opacity: 1;
  transform: scale(1.1);
}




/* === HCE Results Tabs (2025-09-12) =================================== */
.hce-tabs {
  margin-top: 12px;
}

.hce-tablist {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  border-bottom: 1px solid #e6edf7;
  padding-bottom: 8px;
  margin-bottom: 12px;
}

.hce-tab {
  position: relative;
  appearance: none;
  border: 1px solid #cfe0ff;
  background: #f3f8ff;
  color: #0b4aa2;
  font-family: 'Inter', sans-serif;
  font-weight: 600;
  font-size: 0.95rem;
  padding: 8px 14px;
  border-radius: 999px;
  cursor: pointer;
}

.hce-tab.active {
  background: #ffffff;
  border-color: #84b2ff;
  box-shadow: 0 1px 3px rgba(0, 0, 0, .06);
}

.hce-tab .hce-best-pill {
  margin-left: 10px;
  display: inline-block;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .03em;
  background: #27ae60;
  color: #fff;
  border-radius: 999px;
  padding: 2px 8px;
  vertical-align: middle;
}

/* Panels */
.tab-panels .tab-panel.hidden {
  display: none;
}

/* Remove old badge style inside cards if any remnants exist */
.estimate-card .best-deal-badge {
  display: none !important;
}


/* === HCE Input Groups (Step 1–6) – robust arrow alignment === */
.estimator-deck .input-group {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 8px;
  position: relative;
}

.estimator-deck .input-group .field-input {
  width: 100%;
  min-height: 38px;
  box-sizing: border-box;
}

.estimator-deck .input-group .dropdown-toggle {
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #d6d9e0;
  border-radius: 6px;
  background: #fff;
  cursor: pointer;
  user-select: none;
}

.estimator-deck .input-group .dropdown-list {
  grid-column: 1 / -1;
  /* make the list full-width under input+arrow */
  margin: 6px 0 0 0;
}

.estimator-deck .helper-text.muted {
  margin-top: 6px;
  /* description lines under input-groups */
}



/* HCE: Related Services section heading + list normalization */
.estimate-card .associated-charges h4 {
  margin: 12px 0 8px;
  font-weight: 700;
  font-size: 1.05rem;
  color: #1f3a93;
}



/* ─────────── FOOTER (responsive + scalable) ─────────── */
.homepage-footer {
  background: #ffffff;
  padding: 24px 0;
  margin-top: 40px;
  box-shadow: 0 -2px 6px rgba(0, 0, 0, 0.05);
  font-family: 'Inter', sans-serif;
  /* NEW: enforce footer typography everywhere */
}

.homepage-footer .footer-container {
  max-width: 800px;
  margin: 0 auto;
  text-align: center;
  font-size: 0.9rem;
  color: #555;
  padding: 0 16px;
  /* safe side padding on small screens */
}

/* container for nav */
.homepage-footer .footer-links {
  margin-bottom: 12px;
}

/* responsive, wrapping menu */
.footer-menu {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  /* wrap to multiple rows as needed */
  justify-content: center;
  /* center items neatly */
  gap: 8px 16px;
  /* row/column spacing */
}

/* each item stays together; no word splitting */
.footer-item {
  display: inline-flex;
}

.footer-item a {
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
  /* keep “Terms of Service” together */
  color: #0056b3;
  text-decoration: none;
  padding: 6px 8px;
  border-radius: 6px;
  transition: color 0.2s, background 0.2s, transform 0.2s;
}

.footer-item a:hover {
  color: #003f7f;
  background: rgba(0, 86, 179, 0.06);
  transform: translateY(-1px);
}

/* desktop-only separators (assumes one row fits on >=960px) */
@media (min-width: 960px) {
  .footer-menu {
    gap: 0 12px;
  }

  .footer-item+.footer-item {
    position: relative;
  }

  .footer-item+.footer-item::before {
    content: '|';
    margin: 0 12px 0 8px;
    color: #c5d1e4;
  }
}

/* small screens: slightly tighter spacing & font-size */
@media (max-width: 768px) {
  .homepage-footer .footer-links {
    margin-bottom: 10px;
  }

  .footer-item a {
    padding: 6px 6px;
    font-size: 0.95rem;
  }
}

.footer-copy {
  margin: 0;
}


/* ─────────── GLOW ANIMATION (used by several buttons) ─────────── */
@keyframes glow {
  0% {
    box-shadow: 0 0 5px #0056b3;
  }

  50% {
    box-shadow: 0 0 20px #0056b3;
  }

  100% {
    box-shadow: 0 0 5px #0056b3;
  }
}

/* ─────────── RESPONSIVE BREAKPOINTS ─────────── */
@media (max-width: 768px) {
  .search-header .welcome-header {
    font-size: 2rem;
  }

  .search-form .search-box {
    max-width: 100%;
  }

  .search-prompts {
    grid-template-columns: 1fr;
  }

  .tab-button {
    padding: 10px 20px;
  }

  .features-list {
    padding-left: 16px;
  }

  .homepage-footer .footer-links {
    font-size: 0.85rem;
  }
}

/* ─────────── Additional Styles for Platform Features & Mission ─────────── */

/* Center the “Platform Features” heading */
.features-title {
  font-size: 1.75rem;
  color: #0056b3;
  text-align: center;
  margin-bottom: 24px;
}


/* ─────────── PLATFORM FEATURES: CONSOLIDATED SIDEBAR & DETAIL ─────────── */
.features-section .features-container {
  display: flex;
  gap: 24px;
  max-width: 1200px;
  margin: 0 auto;
  align-items: stretch;
  /* ensure panels equal height */
}

/* Sidebar panel */
.features-list-panel {
  flex: 0 0 240px;
  background: #e6f2ff;
  border-radius: 8px;
  padding: 8px;
  list-style: none;
  overflow-y: auto;
}

.features-list-panel li {
  padding: 12px 16px;
  margin-bottom: 8px;
  font-size: 1rem;
  font-weight: 600;
  color: #003f7f;
  border-left: 4px solid transparent;
  border-radius: 4px;
  cursor: pointer;
  transition: background 0.2s ease, border-color 0.2s ease;
}

.features-list-panel li:hover {
  background: #d0e8ff;
  border-left-color: #0056b3;
}

.features-list-panel li.feature-active {
  background: #c5deff;
  border-left-color: #0056b3;
  color: #001f4d;
}



/* ▼ Mission & Values: modern two-column layout aligned with home cards */
.mission-section {
  max-width: 1100px;
  /* match other wide sections */
  margin: 40px auto;
  padding: 0 12px;
}

.mission-title {
  font-size: 1.6rem;
  color: #0056b3;
  text-align: center;
  margin: 0 0 16px;
  font-weight: 800;
}


/* ========= MOBILE NAV OVERHAUL (2025-08-09) ========= */

/* Global: prevent any sideways scroll */
html,
body {
  max-width: 100%;
  overflow-x: hidden;
}

/* Ensure all boxes respect width */
*,
*::before,
*::after {
  box-sizing: border-box;
}

/* A simple global .hidden helper */
.hidden {
  display: none !important;
}

/* Mobile bar (shows on <= 900px) */
.mobile-bar {
  display: none;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 12px;
  background: #ffffff;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.mobile-menu-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border: none;
  border-radius: 8px;
  background: #eef5ff;
  cursor: pointer;
}

.mobile-menu-btn .nav-icon {
  height: 22px;
  width: 22px;
}

.mobile-brand img {
  height: 28px;
  width: auto;
  display: block;
}

.mobile-right {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  min-width: 170px;
  /* keeps arrow visible */
  max-width: 50vw;
  /* avoids overflow on small phones */
}

/* Make sure the location control never gets cropped on mobile */
.mobile-bar .location-selector {
  flex: 0 0 auto;
  overflow: visible;
  white-space: nowrap;
}

/* Desktop nav hides on mobile; Mobile bar shows on mobile */
@media (max-width: 900px) {
  .desktop-only {
    display: none !important;
  }

  .mobile-bar {
    display: flex;
  }
}

/* Drawer */
/* Ensure the whole drawer layer sits above header/content */
#mobileDrawer {
  position: fixed;
  inset: 0;
  z-index: 12000;
  /* above header (7000) and toasts (2000) */
}

/* Backdrop & panel stacking above everything */
.mobile-drawer .drawer-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.35);
  backdrop-filter: saturate(120%) blur(1px);
  z-index: 12000;
}

.mobile-drawer .drawer-panel {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  width: min(82vw, 360px);
  background: #ffffff;
  box-shadow: 2px 0 18px rgba(0, 0, 0, 0.18);
  padding: 16px 12px;
  overflow-y: auto;
  z-index: 12001;
  /* above backdrop */
  font-family: 'Inter', sans-serif;
}



.drawer-close {
  position: absolute;
  top: 8px;
  right: 10px;
  width: 36px;
  height: 36px;
  border: none;
  border-radius: 6px;
  background: #eef5ff;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}

.drawer-menu {
  list-style: none;
  padding: 8px 6px;
  margin: 36px 0 0;
}

.drawer-menu li {
  margin: 0;
}

.drawer-menu a {
  display: block;
  padding: 12px 10px;
  text-decoration: none;
  color: #003f7f;
  font-weight: 600;
  border-radius: 8px;
  font-family: 'Inter', sans-serif;
}


.drawer-menu a:hover {
  background: #e6f2ff;
}

.drawer-section-title {
  padding: 8px 10px;
  font-size: 0.85rem;
  font-weight: 700;
  color: #6b7a99;
  text-transform: uppercase;
  letter-spacing: .04em;
  font-family: 'Inter', sans-serif;
}


.drawer-menu .divider {
  height: 1px;
  margin: 10px 6px;
  background: #e3ecfb;
}

/* Search form: guarantee no overflow on mobile */
.search-form {
  width: 100%;
  padding: 0 16px;
}

.search-form .input-wrapper {
  max-width: 100%;
}

.search-form .search-box {
  width: 100%;
  max-width: 100%;
}

/* Also ensure the tab slider never overflows */
.tab-container,
.tab-slider {
  max-width: 100%;
  overflow: hidden;
}



/* Desktop: lock the tab slider height & indicator */
@media (min-width: 1024px) {
  .tab-container {
    display: flex;
    justify-content: center;
  }

  .tab-slider {
    display: flex;
    flex-direction: row;
    align-items: stretch;
    height: 52px;
    /* stable height */
    max-width: 680px;
    /* previous desktop feel */
    margin: 0 auto;
  }

  .tab-slider .tab-button {
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    /* avoid stretching from line-height */
    padding: 12px 24px;
  }

  .slider-indicator {
    top: 4px;
    bottom: auto;
    height: calc(100% - 8px);
    /* fill the bar’s height neatly */
    border-radius: 6px;
  }
}

/* Mobile alignment + sizing for the location selector */
.mobile-right {
  margin-left: auto;
  /* force the whole block to the far right */
}

.mobile-bar .location-selector {
  margin-right: 0;
  /* remove residual gap on the right edge */
}

@media (max-width: 900px) {
  .mobile-bar .location-selector input[id^="locationInput"] {
    width: 140px;
    height: 24px;
    font-size: 0.95rem;
    font-weight: 600;
  }
}

/* === Mobile Drawer stacking + header with centered logo (08-09 fix) === */
#mobileDrawer {
  z-index: 13000;
}

.mobile-drawer .drawer-backdrop {
  z-index: 12999;
}

.mobile-drawer .drawer-panel {
  z-index: 13001;
}

.drawer-header {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #ffffff;
  padding: 10px 10px 12px;
  border-bottom: 1px solid #e3ecfb;
}

.drawer-brand {
  display: flex;
  align-items: center;
  justify-content: center;
  padding-right: 42px;
  /* reserve space for the close button */
}

.drawer-brand img {
  height: 28px;
  width: auto;
  display: block;
}



/* ───────────────── COOKIE CONSENT UI ───────────────── */
.cc-banner.hidden,
.cc-modal.hidden {
  display: none !important;
}

.cc-banner {
  position: fixed;
  inset: auto 0 0 0;
  z-index: 15000;
  background: #0b1f3a;
  color: #fff;
  box-shadow: 0 -6px 20px rgba(0, 0, 0, .2);
}

.cc-banner .cc-inner {
  max-width: 1100px;
  margin: 0 auto;
  padding: 16px;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 16px;
}

.cc-banner .cc-text strong {
  display: block;
  margin-bottom: 6px;
  font-size: 1.05rem;
}

.cc-banner .cc-text p {
  margin: 0 0 8px;
  color: #e7eefc;
  line-height: 1.5;
}

.cc-banner .cc-text a {
  color: #90caff;
  text-decoration: underline;
}

.cc-actions {
  display: flex;
  gap: 8px;
  align-items: center;
}

.cc-btn {
  border: 1px solid transparent;
  border-radius: 8px;
  padding: 10px 14px;
  cursor: pointer;
  font-weight: 600;
}

.cc-btn-primary {
  background: #3b82f6;
  color: #fff;
}

.cc-btn-primary:hover {
  background: #1f67de;
}

.cc-btn-outline {
  background: transparent;
  color: #fff;
  border-color: #90caff;
}

.cc-btn-outline:hover {
  background: rgba(144, 202, 255, .15);
}

.cc-btn-secondary {
  background: #e6f2ff;
  color: #003f7f;
  border-color: #e6f2ff;
}

.cc-btn-secondary:hover {
  background: #d6e9ff;
}

@media (max-width: 720px) {
  .cc-banner .cc-inner {
    grid-template-columns: 1fr;
  }

  .cc-actions {
    justify-content: flex-end;
  }
}

/* Modal */
.cc-modal {
  position: fixed;
  inset: 0;
  z-index: 16000;
}

.cc-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, .35);
  backdrop-filter: blur(1px);
}

.cc-modal-panel {
  position: relative;
  margin: 8vh auto;
  max-width: 760px;
  background: #fff;
  border-radius: 12px;
  box-shadow: 0 12px 36px rgba(0, 0, 0, .25);
  display: grid;
  grid-template-rows: auto 1fr auto;
}

.cc-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 18px;
  border-bottom: 1px solid #e6ecf7;
}

.cc-modal-header h3 {
  margin: 0;
  color: #003f7f;
}

.cc-close {
  border: none;
  background: #eef5ff;
  border-radius: 8px;
  width: 36px;
  height: 36px;
  cursor: pointer;
}

.cc-modal-body {
  padding: 18px;
}

.cc-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}

.cc-col h4 {
  margin: 10px 0;
  color: #003f7f;
}

.cc-cat {
  display: grid;
  grid-template-columns: 56px 1fr;
  gap: 10px;
  align-items: start;
  padding: 10px;
  background: #f8fbff;
  border: 1px solid #e6ecf7;
  border-radius: 10px;
}

.cc-switch {
  position: relative;
  display: inline-block;
  width: 44px;
  height: 24px;
}

.cc-switch input {
  display: none;
}

.cc-slider {
  position: absolute;
  cursor: pointer;
  inset: 0;
  background: #c9d6ee;
  border-radius: 24px;
  transition: .2s;
}

.cc-slider:before {
  content: "";
  position: absolute;
  height: 18px;
  width: 18px;
  left: 3px;
  top: 3px;
  background: white;
  border-radius: 50%;
  transition: .2s;
}

.cc-switch input:checked+.cc-slider {
  background: #3b82f6;
}

.cc-switch input:checked+.cc-slider:before {
  transform: translateX(20px);
}

.cc-modal-footer {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 12px 18px 16px;
  border-top: 1px solid #e6ecf7;
}

@media (max-width: 720px) {
  .cc-row {
    grid-template-columns: 1fr;
  }
}

/* Modal-only cancel button contrast fix */
.cc-modal .cc-btn-outline {
  background: #ffffff;
  /* white button on white modal */
  color: #003f7f;
  /* brand navy */
  border: 1px solid #c5d1e4;
  /* subtle divider */
}

.cc-modal .cc-btn-outline:hover,
.cc-modal .cc-btn-outline:focus {
  background: #eef5ff;
  /* light blue hover */
  color: #003060;
  /* stays readable */
  border-color: #b7c6e0;
}


/* === MOBILE FIX (2025-08-24): prevent search text from running under mic === */
@media (max-width: 900px) {

  /* Make sure the input always reserves room for the mic image on mobile */
  .search-form .input-wrapper .search-box {
    /* keep existing padding, but enlarge the RIGHT side for the mic */
    padding-right: 56px !important;
    /* 26px icon + ~14px gap + safety */
    /* keep your current look & feel; do not force left-align */
    /* Optional: show ellipsis for extremely long placeholders (visual polish) */
    text-overflow: ellipsis;
  }

  /* Ensure the mic icon is always clickable and visually on top */
  .search-form .input-wrapper .mic-icon {
    z-index: 2;
    pointer-events: auto;
  }

  /* Keep input under the mic icon in stacking order (no overlap issues) */
  .search-form .input-wrapper .search-box {
    position: relative;
    z-index: 1;
  }
}

/* === HCE Mobile Layout Fix (append at end of styles.css) ================== */
@media (max-width: 768px) {
  .estimator-deck {
    margin: 12px auto !important;
    padding: 16px 14px 20px !important;
    /* adds breathing room above/below */
    max-width: 100% !important;
    box-sizing: border-box;
  }

  .hce-tabs {
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: 100% !important;
    overflow: hidden;
  }

  .hce-tablist {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding: 6px 2px;
    margin: 0;
    border-bottom: 1px solid #e5e7eb;
  }

  .hce-tablist::-webkit-scrollbar {
    display: none;
  }

  /* cleaner mobile tabs */

  .hce-tab {
    flex: 0 0 auto;
    border: 1px solid #e5e7eb;
    border-radius: 9999px;
    padding: 6px 12px;
    background: #fff;
    line-height: 1.2;
  }

  .hce-tab.active {
    border-color: #007BFF;
  }

  .hce-tab.best {
    position: relative;
  }

  .hce-tab .hce-best-pill {
    position: absolute;
    top: -8px;
    right: -6px;
    font-size: 10px;
    padding: 2px 6px;
    border-radius: 9999px;
    background: #27ae60;
    color: #fff;
  }

  .results-content.tab-panels {
    display: block;
    width: 100% !important;
    max-width: 100% !important;
    overflow: hidden;
  }

  .estimate-card {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box;
    margin: 0;
    padding: 12px;
  }

  .ai-summary,
  .contact-info {
    margin: 10px 0;
  }
}