/* ==========================================================================
   Nexus Child - Site chrome (header + footer)
   Loads on every page so the nav and footer are consistent site-wide.
   ========================================================================== */

:root{
  --navy:#02045C;
  --navy-2:#0C669E;
  --green:#2CB647;
  --green-2:#61CE70;
  --ink:#0e0e16;
  --muted:#5a5a66;
  --line:#e6e7ee;
  --bg:#fff;
  --bg-soft:#f5f6fb;
  --shadow:0 8px 30px rgba(2,4,92,.08);
  --shadow-lg:0 18px 60px rgba(2,4,92,.14);
  --container:1180px;
  --header-h:84px;
  --h-font:'Montserrat',system-ui,sans-serif;
  --b-font:'Roboto Flex','Roboto',system-ui,sans-serif;
}

/* Skip link for keyboard / screen-reader users */
.nx-skip-link{position:absolute;left:-9999px;top:0;background:var(--navy);color:#fff;padding:10px 16px;font-family:var(--h-font);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:.78rem;z-index:9999}
.nx-skip-link:focus{left:0;outline:2px solid var(--green)}
.screen-reader-text{position:absolute;clip:rect(1px,1px,1px,1px);width:1px;height:1px;overflow:hidden}

/* ==========================================================================
   SITE HEADER (dark navy)
   ========================================================================== */
.nx-site-header,
body .nx-site-header,
body.home .nx-site-header{position:sticky;top:0;left:0;right:0;z-index:100;background:linear-gradient(180deg,var(--navy) 0%,#04076e 100%);border-bottom:1px solid rgba(255,255,255,.08);font-family:var(--h-font);height:var(--header-h)}
/* Logo wrapper has its own overflow guard so dropdowns can still extend below the header */
.nx-site-header .nx-logo{overflow:hidden}
.admin-bar .nx-site-header{top:32px}
@media(max-width:782px){.admin-bar .nx-site-header{top:46px}}
.nx-site-header__inner{max-width:var(--container);margin:0 auto;padding:0 24px;height:var(--header-h);display:flex;align-items:center;gap:32px;position:relative}

/* LOGO - hard cap with very high specificity so the parent theme can't override */
.nx-site-header .nx-logo,
body .nx-site-header .nx-logo{display:inline-flex;align-items:center;justify-content:flex-start;text-decoration:none;flex-shrink:0;line-height:1;height:var(--header-h);max-width:220px;overflow:hidden}
.nx-site-header .nx-logo a,
.nx-site-header .nx-logo .custom-logo-link,
body .nx-site-header .nx-logo .custom-logo-link{display:flex !important;align-items:center !important;height:var(--header-h) !important;max-height:var(--header-h) !important;line-height:1 !important;padding:0 !important;margin:0 !important}
.nx-site-header .nx-logo img,
.nx-site-header .nx-logo .custom-logo-link img,
.nx-site-header .nx-logo .custom-logo,
body .nx-site-header .nx-logo img,
body .nx-site-header .nx-logo .custom-logo{max-height:46px !important;height:46px !important;width:auto !important;max-width:200px !important;object-fit:contain !important;display:block !important;margin:0 !important}
.nx-logo__text{font-family:var(--h-font);font-weight:900;text-transform:uppercase;letter-spacing:-.02em;font-size:1.4rem;color:#fff;line-height:1;white-space:nowrap}
.nx-logo__text .nx-logo__brand{color:#fff}
.nx-logo__text .nx-logo__sub{color:var(--green-2);font-weight:700;font-size:.7em;letter-spacing:.06em;margin-left:6px}

/* PRIMARY NAV - dark header version */
.nx-primary-nav{margin-left:auto;display:flex;align-items:center}
.nx-primary-nav .nx-menu{list-style:none;display:flex;gap:2px;margin:0;padding:0;align-items:center}
.nx-primary-nav .nx-menu>li{position:relative}
.nx-primary-nav .nx-menu>li>a{font-family:var(--h-font);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.85);text-decoration:none;padding:12px 14px;display:inline-flex;align-items:center;gap:6px;border-radius:8px;transition:color .15s,background .15s;white-space:nowrap;line-height:1.2}
.nx-primary-nav .nx-menu>li>a:hover{color:var(--green-2);background:rgba(255,255,255,.06);text-decoration:none}
.nx-primary-nav .nx-menu>li.current-menu-item>a,
.nx-primary-nav .nx-menu>li.current-page-ancestor>a{color:var(--green-2)}

/* Submenu indicator - CSS-rendered chevron via ::after, no Unicode characters */
.nx-primary-nav .nx-has-sub>a::after,
.nx-primary-nav .menu-item-has-children>a::after{content:"";display:inline-block;width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);margin-left:8px;margin-bottom:3px;opacity:.65;transition:transform .2s,opacity .2s;flex-shrink:0}
.nx-primary-nav .nx-has-sub:hover>a::after,
.nx-primary-nav .menu-item-has-children:hover>a::after,
.nx-primary-nav .nx-has-sub:focus-within>a::after,
.nx-primary-nav .menu-item-has-children:focus-within>a::after{transform:rotate(225deg);opacity:1}

/* Nuke any chevron/toggle/icon the parent theme or plugins inject into the nav.
   Catches any class name containing toggle/caret/arrow/chevron, plus all direct
   non-anchor non-list children of menu items, plus any pseudo-element on
   submenu toggles. In the mobile drawer we additionally kill ::before/::after
   on every menu link. */
.nx-primary-nav button,
.nx-primary-nav [class*="toggle"],
.nx-primary-nav [class*="caret"],
.nx-primary-nav [class*="-arrow"],
.nx-primary-nav [class*="chevron"],
.nx-primary-nav [class*="dropdown-toggle"],
.nx-primary-nav [class*="submenu-icon"],
.nx-primary-nav [class*="sub-menu-icon"],
.nx-primary-nav .menu-item-has-children > svg,
.nx-primary-nav .menu-item-has-children > i,
.nx-primary-nav .menu-item-has-children > .icon,
.nx-primary-nav .nx-caret{display:none !important;visibility:hidden !important;width:0 !important;height:0 !important;font-size:0 !important;line-height:0 !important;padding:0 !important;margin:0 !important;border:0 !important}

/* Belt-and-braces: in the mobile drawer kill ALL pseudo-elements on top-level
   menu links so no parent-theme CSS can render arrows there */
@media(max-width:1024px){
  .nx-primary-nav .nx-menu > li > a::before,
  .nx-primary-nav .nx-menu > li > a::after,
  .nx-primary-nav .nx-menu li > a::before,
  .nx-primary-nav .nx-menu li > a::after{content:none !important;display:none !important;width:0 !important;height:0 !important;border:0 !important;background:none !important;font-size:0 !important;line-height:0 !important}
  /* And nuke any direct child of a menu li that isn't the link or the submenu */
  .nx-primary-nav .nx-menu > li > *:not(a):not(ul):not(.nx-sub):not(.sub-menu){display:none !important;width:0 !important;height:0 !important;visibility:hidden !important}
}

/* SUB MENU dropdown - ensure items render in navy on white */
.nx-sub,
.nx-primary-nav .sub-menu{position:absolute;top:100%;left:0;background:#fff;min-width:240px;border:1.5px solid rgba(255,255,255,.15);border-radius:14px;box-shadow:0 18px 60px rgba(2,4,92,.35);padding:10px;list-style:none;margin:6px 0 0;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .2s,transform .2s,visibility .2s;z-index:200}
.nx-has-sub:hover .nx-sub,.nx-has-sub:focus-within .nx-sub,
.nx-primary-nav .menu-item-has-children:hover .sub-menu,
.nx-primary-nav .menu-item-has-children:focus-within .sub-menu{opacity:1;visibility:visible;transform:translateY(0)}
.nx-sub li,.nx-primary-nav .sub-menu li{display:block;list-style:none;margin:0;padding:0}
.nx-sub li a,.nx-primary-nav .sub-menu li a{display:block !important;padding:12px 14px !important;font-family:var(--h-font) !important;font-weight:600 !important;font-size:.82rem !important;color:var(--navy) !important;text-decoration:none !important;border-radius:8px;text-transform:none !important;letter-spacing:0 !important;line-height:1.3 !important;background:transparent !important;white-space:nowrap}
.nx-sub li a:hover,.nx-primary-nav .sub-menu li a:hover{background:rgba(44,182,71,.08) !important;color:var(--green) !important}

/* HEADER CTAs (right side) - dark header version */
.nx-header-cta{display:flex;gap:12px;align-items:center;flex-shrink:0}
.nx-phone{display:inline-flex;align-items:center;gap:8px;font-family:var(--h-font);font-weight:700;font-size:.82rem;color:#fff;text-decoration:none;letter-spacing:.02em;white-space:nowrap}
.nx-phone:hover{color:var(--green-2);text-decoration:none}
.nx-phone svg{color:var(--green-2);flex-shrink:0}
.nx-book-btn{display:inline-flex;align-items:center;font-family:var(--h-font);font-weight:700;font-size:.76rem;text-transform:uppercase;letter-spacing:.08em;background:var(--green);color:#fff;padding:.8em 1.2em;border-radius:999px;text-decoration:none;transition:transform .15s,box-shadow .15s,background .15s;white-space:nowrap}
.nx-book-btn:hover{background:#28a440;color:#fff;transform:translateY(-1px);box-shadow:0 8px 20px rgba(44,182,71,.32);text-decoration:none}

/* Hide phone link a bit earlier than the full mobile breakpoint to make room for menu */
@media(max-width:1180px){.nx-phone{display:none}}

/* HAMBURGER - dark header version */
.nx-nav-toggle{display:none;background:transparent;border:0;cursor:pointer;width:42px;height:42px;padding:0;flex-direction:column;justify-content:center;align-items:center;gap:5px;margin-left:auto;border-radius:8px}
.nx-nav-toggle:hover{background:rgba(255,255,255,.08)}
.nx-nav-toggle__bar{width:22px;height:2.5px;background:#fff;border-radius:99px;transition:transform .25s,opacity .15s}
.nx-nav-toggle[aria-expanded="true"] .nx-nav-toggle__bar:nth-child(1){transform:translateY(7.5px) rotate(45deg)}
.nx-nav-toggle[aria-expanded="true"] .nx-nav-toggle__bar:nth-child(2){opacity:0}
.nx-nav-toggle[aria-expanded="true"] .nx-nav-toggle__bar:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}

/* MOBILE NAV */
@media(max-width:1024px){
  .nx-nav-toggle{display:flex;order:3}
  .nx-header-cta{order:2;margin-left:auto}
  .nx-header-cta .nx-phone{display:none}
  .nx-primary-nav{position:fixed;top:var(--header-h);left:0;right:0;background:#fff;border-top:1px solid rgba(255,255,255,.1);box-shadow:var(--shadow-lg);max-height:0;overflow:hidden;transition:max-height .35s ease;margin:0;order:99}
  .nx-primary-nav .nx-menu>li>a{color:var(--navy)}
  .nx-primary-nav .nx-menu>li>a:hover{color:var(--green);background:rgba(44,182,71,.06)}
  .admin-bar .nx-primary-nav{top:calc(var(--header-h) + 32px)}
  .nx-primary-nav.is-open{max-height:calc(100vh - var(--header-h));overflow-y:auto}
  .nx-primary-nav .nx-menu{flex-direction:column;align-items:stretch;padding:18px 24px 24px;gap:0}
  .nx-primary-nav .nx-menu>li{border-bottom:1px solid var(--line)}
  .nx-primary-nav .nx-menu>li:last-child{border-bottom:0}
  .nx-primary-nav .nx-menu>li>a{padding:18px 8px;font-size:.95rem;justify-content:flex-start;width:100%;white-space:normal}
  /* Hide the desktop chevron in mobile drawer - submenus already render inline */
  .nx-primary-nav .nx-has-sub>a::after,
  .nx-primary-nav .menu-item-has-children>a::after{display:none}
  .nx-sub,.nx-primary-nav .sub-menu{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:0;background:var(--bg-soft);padding:6px 0;margin:0 0 8px;border-radius:10px}
  .nx-sub a,.nx-primary-nav .sub-menu a{padding:10px 22px;font-size:.86rem}
  .nx-site-header__inner{gap:16px}
  .nx-header-cta .nx-book-btn{padding:.7em 1em;font-size:.72rem}
}
@media(max-width:782px){.admin-bar .nx-primary-nav{top:calc(var(--header-h) + 46px)}}

@media(max-width:560px){
  :root{--header-h:72px}
  .nx-logo__text{font-size:1.1rem}
  .nx-logo__text .nx-logo__sub{display:none}
}

/* MAIN content area gets a touch of breathing room from the sticky header is handled by individual page headers, so no top padding here */
.nx-main{min-height:60vh}

/* ==========================================================================
   SITE FOOTER
   ========================================================================== */
.nx-site-footer{background:linear-gradient(180deg,var(--navy) 0%,#04076e 100%);color:rgba(255,255,255,.78);font-family:var(--b-font);position:relative;overflow:hidden;margin-top:80px}
.nx-site-footer::before{content:"";position:absolute;left:50%;top:-100px;width:600px;height:600px;background:radial-gradient(circle,rgba(44,182,71,.18) 0%,transparent 60%);transform:translateX(-50%);pointer-events:none}
.nx-site-footer__inner{max-width:var(--container);margin:0 auto;padding:80px 24px 32px;position:relative;z-index:2}

/* Footer grid */
.nx-footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1.4fr;gap:48px;padding-bottom:56px;border-bottom:1px solid rgba(255,255,255,.08)}
@media(max-width:980px){.nx-footer-grid{grid-template-columns:1fr 1fr;gap:40px}}
@media(max-width:560px){.nx-footer-grid{grid-template-columns:1fr;gap:36px}}

.nx-footer-col h4{font-family:var(--h-font);font-weight:800;font-size:.84rem;text-transform:uppercase;letter-spacing:.16em;color:var(--green-2);margin:0 0 18px}
.nx-footer-col h4.nx-footer-subhead{margin-top:24px}
.nx-footer-col ul{list-style:none;padding:0;margin:0}
.nx-footer-col ul li{margin:0 0 10px}
.nx-footer-col ul li a{color:rgba(255,255,255,.78);text-decoration:none;font-size:.94rem;transition:color .15s}
.nx-footer-col ul li a:hover{color:var(--green-2);text-decoration:none}

/* Brand col */
.nx-footer-brand{max-width:380px}
.nx-footer-logo{display:flex;align-items:baseline;gap:6px;text-decoration:none;margin-bottom:18px;line-height:1}
.nx-footer-logo__brand{font-family:var(--h-font);font-weight:900;text-transform:uppercase;letter-spacing:-.02em;color:#fff;font-size:1.5rem}
.nx-footer-logo__sub{font-family:var(--h-font);font-weight:700;color:var(--green-2);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase}
.nx-footer-brand p{color:rgba(255,255,255,.7);font-size:.95rem;margin:0 0 22px;line-height:1.6}

.nx-footer-contact{display:flex;flex-direction:column;gap:12px}
.nx-footer-line{display:inline-flex;align-items:center;gap:10px;color:#fff;text-decoration:none;font-family:var(--h-font);font-weight:600;font-size:.9rem;transition:color .15s}
.nx-footer-line svg{color:var(--green-2);flex-shrink:0}
.nx-footer-line:hover{color:var(--green-2);text-decoration:none}

/* Hours */
.nx-hours{font-size:.88rem}
.nx-hours li{display:flex;justify-content:space-between;gap:16px;padding:6px 0;color:rgba(255,255,255,.7)}
.nx-hours li span:first-child{font-family:var(--h-font);font-weight:600;color:#fff}

.nx-footer-col address{font-style:normal;color:rgba(255,255,255,.78);font-size:.94rem;line-height:1.6;margin-bottom:6px}
.nx-footer-col address strong{color:#fff;font-family:var(--h-font);font-weight:700;display:inline-block;margin-bottom:6px}
.nx-footer-col address a{color:var(--green-2);text-decoration:none;font-family:var(--h-font);font-weight:600;font-size:.85rem}
.nx-footer-col address a:hover{text-decoration:underline}

/* Bottom bar */
.nx-footer-bottom{padding-top:24px;display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;align-items:center}
@media(max-width:560px){.nx-footer-bottom{justify-content:flex-start}}
.nx-copy{margin:0;font-size:.82rem;color:rgba(255,255,255,.55);font-family:var(--h-font);font-weight:500}
.nx-footer-utility{display:flex;gap:18px;flex-wrap:wrap}
.nx-footer-utility a{color:rgba(255,255,255,.55);text-decoration:none;font-family:var(--h-font);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.08em}
.nx-footer-utility a:hover{color:var(--green-2);text-decoration:none}
