/* ============================================================================
 HAVEN - Global elements v2 (scope: .g2-*)
 Utility bar · mega-nav w/ promo cards · footer w/ city links + endorsement
 lockup · sticky mobile CTA · cookie banner · chatbot slot · DVA strip.
 ============================================================================ */

/* ---- DVA strip (variant) ---- */
.g2-dva { background: var(--al-blue-dark); color: #fff; font-size: .84rem; }
.g2-dva .wrap2 { display: flex; align-items: center; justify-content: center; gap: 10px; padding-block: 8px; flex-wrap: wrap; text-align: center; }
.g2-dva span.txt { white-space: normal; }
.g2-dva a { white-space: nowrap; }
.g2-dva .lucide { width: 15px; height: 15px; color: var(--al-cyan); }
.g2-dva a { color: #fff; font-weight: 700; text-decoration: none; white-space: nowrap; }
.g2-dva a:hover { text-decoration: underline; }

/* ---- utility bar ---- */
.g2-util { background: var(--grey-50); border-bottom: 1px solid var(--grey-200); font-size: .82rem; }
.g2-util .wrap2 { display: flex; align-items: center; justify-content: space-between; gap: 8px 16px; padding-block: 8px; flex-wrap: wrap; }
.g2-util a { display: inline-flex; align-items: center; gap: 6px; color: var(--grey-700); text-decoration: none; font-weight: 600; white-space: nowrap; }
.g2-util a:hover { color: var(--al-blue); }
.g2-util .lucide { width: 14px; height: 14px; color: var(--al-healthcare); }
.g2-util .grp { display: flex; align-items: center; gap: 20px; }
.g2-util .ext { font-size: .68rem; opacity: .6; }

.wrap2 { max-width: 1200px; margin-inline: auto; padding-inline: clamp(20px, 4vw, 40px); }

/* ---- main header ---- */
.g2-hdr { position: sticky; top: 0; z-index: 55; background: rgba(255,255,255,.96); backdrop-filter: blur(10px); border-bottom: 1px solid var(--grey-200); }
.g2-hdr .wrap2 { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding-block: 12px; }
.g2-hdr img.lg { height: 44px; width: auto; display: block; }
.g2-nav { display: flex; align-items: center; gap: 4px; }
.g2-navitem { position: relative; }
.g2-navitem > button { display: inline-flex; align-items: center; gap: 6px; background: none; border: none; font-family: var(--font-body); font-size: .95rem; font-weight: 600; color: var(--grey-700); padding: 12px 14px; cursor: pointer; border-radius: 10px; transition: .14s; }
.g2-navitem > button:hover, .g2-navitem:hover > button { color: var(--al-blue); background: var(--info-bg); }
.g2-navitem > button .lucide { width: 15px; height: 15px; transition: transform .18s; }
.g2-navitem:hover > button .lucide { transform: rotate(180deg); }

/* mega dropdown */
.g2-mega { position: absolute; top: calc(100% + 6px); left: 50%; transform: translate(-50%, 6px); opacity: 0; pointer-events: none; transition: .16s ease;
  background: #fff; border: 1px solid var(--grey-200); border-radius: 20px; box-shadow: var(--shadow-lg); padding: 26px; display: grid; gap: 30px; }
.g2-navitem:hover .g2-mega, .g2-navitem:focus-within .g2-mega { opacity: 1; pointer-events: auto; transform: translate(-50%, 0); }
.g2-mega .col h6 { font-size: .72rem; font-weight: 700; letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--al-healthcare); margin: 0 0 10px; white-space: nowrap; }
.g2-mega .col { min-width: 180px; }
.g2-mega .col a { display: block; font-size: .92rem; color: var(--grey-700); text-decoration: none; padding: 7px 0; white-space: nowrap; }
.g2-mega .col a:hover { color: var(--al-blue); }
/* promo card */
.g2-promo { width: 250px; border-radius: 16px; overflow: hidden; background: var(--grey-50); border: 1px solid var(--grey-200); display: flex; flex-direction: column; text-decoration: none; transition: .16s; }
.g2-promo:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.g2-promo .pimg { height: 110px; position: relative; }
.g2-promo .pimg img { width: 100%; height: 100%; object-fit: cover; display: block; }
.g2-promo .pbody { padding: 14px 16px 16px; }
.g2-promo b { display: block; font-family: var(--font-display); font-size: .98rem; color: var(--al-blue-dark); line-height: 1.25; }
.g2-promo span.s { display: block; font-size: .82rem; color: var(--grey-500); line-height: 1.5; margin-top: 4px; }
.g2-promo .pcta { display: inline-flex; align-items: center; gap: 6px; font-size: .86rem; font-weight: 700; color: var(--al-blue); margin-top: 10px; }
.g2-promo .pcta .lucide { width: 14px; height: 14px; }

.g2-hdr .acts { display: flex; align-items: center; gap: 12px; }
.g2-hdr .navtoggle2 { display: none; background: none; border: none; cursor: pointer; color: var(--al-blue-dark); padding: 6px; }

/* ---- mobile nav panel ---- */
.g2-mob { position: fixed; inset: 0; z-index: 65; display: none; }
.g2-mob.open { display: block; }
.g2-mob .scrim2 { position: absolute; inset: 0; background: rgba(0,26,56,.45); }
.g2-mob .panel2 { position: absolute; top: 0; right: 0; bottom: 0; width: min(360px, 88vw); background: #fff; box-shadow: var(--shadow-lg); overflow-y: auto; padding: 18px 20px calc(24px + env(safe-area-inset-bottom)); }
.g2-mob .phead { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.g2-mob .phead img { height: 36px; width: auto; }
.g2-mob .phead button { background: none; border: none; cursor: pointer; color: var(--al-blue-dark); padding: 6px; }
.g2-mob .mrow { width: 100%; display: flex; align-items: center; justify-content: space-between; background: none; border: none; border-top: 1px solid var(--grey-200); padding: 15px 2px; font-family: var(--font-display); font-weight: 700; font-size: 1.05rem; color: var(--al-blue-dark); cursor: pointer; }
.g2-mob .mrow .lucide { width: 18px; height: 18px; color: var(--al-blue); transition: transform .18s; }
.g2-mob .mrow.on .lucide { transform: rotate(180deg); }
.g2-mob .msub { overflow: hidden; max-height: 0; transition: max-height .22s ease; }
.g2-mob .msub.open { max-height: 600px; }
.g2-mob .msub h6 { font-size: .7rem; font-weight: 700; letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--al-healthcare); margin: 10px 0 4px; }
.g2-mob .msub a { display: block; font-size: .95rem; color: var(--grey-700); text-decoration: none; padding: 9px 2px; }
.g2-mob .msub a:active { color: var(--al-blue); }
.g2-mob .mfoot { border-top: 1px solid var(--grey-200); margin-top: 8px; padding-top: 18px; display: flex; flex-direction: column; gap: 14px; }
.g2-mob .mfoot .pb-btn { width: 100%; justify-content: center; }
.g2-mob .mutil { display: flex; gap: 16px; flex-wrap: wrap; }
.g2-mob .mutil a { display: inline-flex; align-items: center; gap: 6px; font-size: .88rem; font-weight: 600; color: var(--grey-700); text-decoration: none; white-space: nowrap; }
.g2-mob .mutil a .lucide { width: 15px; height: 15px; color: var(--al-healthcare); }

/* ---- footer ---- */
.g2-foot { background: linear-gradient(170deg, var(--al-blue-dark), #001A38); color: #fff; margin-top: 0; }
.g2-foot .cols2 { display: grid; grid-template-columns: 1.3fr repeat(4, 1fr); gap: clamp(24px, 3.5vw, 48px); padding-block: clamp(40px, 6vw, 64px) 30px; }
.g2-foot h5 { font-family: var(--font-display); font-size: .95rem; font-weight: 700; color: #fff; margin: 0 0 14px; }
.g2-foot .cols2 a { display: block; font-size: .88rem; color: rgba(255,255,255,.75); text-decoration: none; padding: 5px 0; }
.g2-foot .cols2 a:hover { color: #fff; text-decoration: underline; }
.g2-foot .cols2 a .ext { font-size: .68rem; opacity: .6; }
/* endorsement lockup */
.g2-lockup img { height: 44px; width: auto; display: block; }
.g2-lockup .tag2 { font-family: var(--font-display); font-size: 1.05rem; color: #fff; margin-top: 14px; }
.g2-lockup .tag2 span { display: block; font-family: var(--font-body); font-size: .82rem; color: rgba(255,255,255,.65); margin-top: 3px; }
/* city links - SEO critical */
.g2-cities { border-top: 1px solid rgba(255,255,255,.15); padding-block: 18px; display: flex; align-items: center; gap: 8px 18px; flex-wrap: wrap; }
.g2-cities .clabel2 { font-size: .78rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: rgba(255,255,255,.55); }
.g2-cities a { font-size: .84rem; color: rgba(255,255,255,.78); text-decoration: none; }
.g2-cities a:hover { color: #fff; text-decoration: underline; }
/* legal row */
.g2-legal { border-top: 1px solid rgba(255,255,255,.15); padding-block: 18px 26px; display: flex; align-items: center; justify-content: space-between; gap: 12px 22px; flex-wrap: wrap; font-size: .78rem; color: rgba(255,255,255,.6); }
.g2-legal .lnks { display: flex; gap: 18px; flex-wrap: wrap; }
.g2-legal a { color: rgba(255,255,255,.6); text-decoration: none; }
.g2-legal a:hover { color: #fff; text-decoration: underline; }

/* ---- sticky mobile CTA ---- */
.g2-sticky { position: fixed; left: 0; right: 0; bottom: 0; z-index: 60; display: none;
  background: rgba(255,255,255,.96); backdrop-filter: blur(10px); border-top: 1px solid var(--grey-200);
  padding: 10px 16px calc(10px + env(safe-area-inset-bottom)); box-shadow: 0 -8px 24px rgba(16,42,77,.1); }
.g2-sticky .pb-btn { width: 100%; justify-content: center; }

/* ---- chatbot slot - never collides with sticky CTA ---- */
.g2-chat { position: fixed; right: 18px; bottom: 18px; z-index: 61; }
.g2-chat button.launch { width: 58px; height: 58px; border-radius: 50%; border: none; background: var(--al-blue); color: #fff; cursor: pointer;
  display: flex; align-items: center; justify-content: center; box-shadow: 0 10px 28px rgba(16,42,77,.35); transition: .16s; }
.g2-chat button.launch:hover { background: var(--al-blue-dark); transform: translateY(-2px); }
.g2-chat button.launch .lucide { width: 26px; height: 26px; }
.g2-chat .bubble { position: absolute; right: 0; bottom: 68px; width: 250px; background: #fff; border: 1px solid var(--grey-200); border-radius: 16px 16px 4px 16px; box-shadow: var(--shadow-lg); padding: 14px 16px; font-size: .88rem; line-height: 1.5; color: var(--grey-700); }
.g2-chat .bubble b { color: var(--al-blue-dark); }

/* ---- cookie banner - decline-first-equal ---- */
.g2-cookie { position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 70; max-width: 560px; margin-inline: auto;
  background: #fff; border: 1px solid var(--grey-200); border-radius: 20px; box-shadow: var(--shadow-lg); padding: 22px 24px; }
.g2-cookie h4 { font-family: var(--font-display); font-size: 1.05rem; color: var(--al-blue-dark); margin: 0 0 6px; }
.g2-cookie p { font-size: .88rem; line-height: 1.6; color: var(--grey-700); margin: 0 0 16px; }
.g2-cookie .row3 { display: flex; gap: 10px; flex-wrap: wrap; }
.g2-cookie .row3 .pb-btn { flex: 1; justify-content: center; min-width: 140px; }
.g2-cookie .manage { display: block; text-align: center; font-size: .8rem; color: var(--grey-500); margin-top: 12px; background: none; border: none; cursor: pointer; width: 100%; font-family: var(--font-body); text-decoration: underline; }
.g2-cookie .manage:hover { color: var(--al-blue); }

@media (max-width: 1020px){
  .g2-nav { display: none; }
  .g2-hdr .navtoggle2 { display: block; }
}
@media (max-width: 860px){ .g2-util .grp.l { display: none; } }
@media (max-width: 920px){ .g2-foot .cols2 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 720px){
  .g2-sticky { display: block; }
  body { padding-bottom: 70px; }
  .g2-chat { bottom: calc(70px + env(safe-area-inset-bottom) + 10px); } /* rides above sticky CTA */
  .g2-foot .cols2 { grid-template-columns: 1fr; }
}
