/* Base reset for our custom menu */
#bootscore-navbar.menu-custom { position: relative; }
#bootscore-navbar.menu-custom li { list-style: none; }
#bootscore-navbar.menu-custom a { text-decoration: none; }

/* Top-level menu hover underline (odd/even) */
#bootscore-navbar.menu-custom > li.level-0 > a.nav-link {
  text-decoration: none;
  text-decoration-thickness: auto;
  font-weight: 700;
}
#bootscore-navbar.menu-custom > li.level-0:nth-child(odd) > a.nav-link:hover,
#bootscore-navbar.menu-custom > li.level-0:nth-child(odd) > a.nav-link:focus,
#bootscore-navbar.menu-custom > li.level-0:nth-child(odd) > a.nav-link:focus-visible,
#bootscore-navbar.menu-custom > li.level-0:nth-child(odd).open > a.nav-link {
  text-decoration-line: underline;
  text-decoration-thickness: 3px;
  text-underline-offset: 0.35em;
  text-decoration-color: var(--color-2);
}
#bootscore-navbar.menu-custom > li.level-0:nth-child(even) > a.nav-link:hover,
#bootscore-navbar.menu-custom > li.level-0:nth-child(even) > a.nav-link:focus,
#bootscore-navbar.menu-custom > li.level-0:nth-child(even) > a.nav-link:focus-visible,
#bootscore-navbar.menu-custom > li.level-0:nth-child(even).open > a.nav-link {
  text-decoration-line: underline;
  text-decoration-thickness: 3px;
  text-underline-offset: 0.35em;
  text-decoration-color: var(--color-3);
}

/* Second-level links underline */
#bootscore-navbar.menu-custom .sub-menu.level-1 > li > a.dropdown-item:hover,
#bootscore-navbar.menu-custom .sub-menu.level-1 > li > a.dropdown-item:focus,
#bootscore-navbar.menu-custom .sub-menu.level-1 > li > a.dropdown-item:focus-visible {
  text-decoration-line: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.25em;
  text-decoration-color: #fff;
}

/* Header color overrides */
#masthead.bg-color-1 { color: #fff; }
#masthead.bg-color-1 .navbar-brand,
#masthead.bg-color-1 .nav-link,
#masthead.bg-color-1 .submenu-toggle { color: #fff; }
#masthead.bg-color-1 .nav-link:hover { color: #fff; opacity: .9; }
#masthead.bg-color-1 .nav-toggler {
  color: #fff;
  border-color: rgba(255, 255, 255, .45);
}
#masthead.bg-color-1 .nav-toggler:hover { border-color: rgba(255, 255, 255, .75); }
#masthead.bg-color-1 .handyamo-mobile-action {
  border-color: rgba(255, 255, 255, .75);
  color: #fff;
}
#masthead.bg-color-1 .handyamo-mobile-action:hover,
#masthead.bg-color-1 .handyamo-mobile-action:focus {
  background: var(--color-2);
  border-color: var(--color-2);
  color: #fff;
}

/* Submenu common: default visible; specific contexts control visibility */

/* Toggle button common */
#bootscore-navbar.menu-custom li.has-children { position: relative; }
#bootscore-navbar.menu-custom li.has-children .submenu-toggle {
  display: inline-flex; align-items: center; justify-content: center;
  width: 2rem; height: 2rem;
  border: 0; border-radius: .375rem;
  background: transparent; cursor: pointer; padding: 0;
  line-height: 1; color: inherit;
}
#bootscore-navbar.menu-custom li.has-children .submenu-toggle:hover { background: rgba(0,0,0,.05); }
#bootscore-navbar.menu-custom li.has-children .submenu-toggle .fa-chevron-down { transition: transform .2s ease; }
#bootscore-navbar.menu-custom li.has-children .submenu-toggle[aria-expanded="true"] .fa-chevron-down { transform: rotate(180deg); }
#bootscore-navbar.menu-custom .accordion-button.submenu-toggle:not(.collapsed) .fa-chevron-down { transform: rotate(180deg); }

#bootscore-navbar.menu-custom .sub-menu a.dropdown-item
   { padding: .45rem 1rem;}
/* Desktop: center main menu between logo and actions */
@media (min-width: 1200px) {
  #offcanvas-navbar {
    flex: 1 1 0% !important;
  }
  #offcanvas-navbar .offcanvas-body {
    flex-grow: 1 !important;
    justify-content: end !important;
    margin-right: 30px;
  }
  #bootscore-navbar.menu-custom {
    gap: 3vw;
  }
}

/* Desktop dropdown (≥ xxl) — width-based only */
@media (min-width: 1200px) {
  #nav-main { position: relative; overflow: visible; }
  #nav-main .container { overflow: visible; }
  #bootscore-navbar.menu-custom { position: static; }
  #bootscore-navbar.menu-custom > li { position: static; }
  #bootscore-navbar.menu-custom > li.has-children { position: static; }
  #bootscore-navbar.menu-custom > li > .sub-menu {
    --menu-line-width: 1140px;
    position: absolute; top: 100%; left: 0; z-index: 1050;
    display: none; align-items: center; justify-content: center; gap: 2.5rem;
    width: 100vw; margin: 0; padding: .85rem clamp(1rem, (100vw - 1320px)/2, 6rem);
    margin-left: calc(50% - 50vw);
    transform-origin: top; transform: translateY(8px); opacity: 0;
    max-height: 0;
    overflow: hidden;
    transition: transform .18s ease, opacity .18s ease, max-height .18s ease;
    box-sizing: border-box;
    box-shadow: 0 14px 24px rgba(0,0,0,.18);
  }
  #bootscore-navbar.menu-custom > li > .sub-menu > li { flex: 0 1 auto; position: relative; }
  #bootscore-navbar.menu-custom > li > .sub-menu > li:not(:first-child)::before {
    content: "";
    position: absolute;
    left: calc(-1.25rem);
    top: 50%;
    transform: translateY(-50%);
    width: 2px;
    height: 10px;
    border-right: 1px solid rgba(255,255,255,.7);
    background: #fff;
  }
  #bootscore-navbar.menu-custom > li.open > .sub-menu { display: flex !important; }
  #bootscore-navbar.menu-custom > li.open > .sub-menu { transform: translateY(0); opacity: 1; max-height: 500px; }

  #bootscore-navbar.menu-custom > li > .sub-menu::before {
    content: "";
    position: absolute; inset: 0;
    background: var(--color-1);
    z-index: -1;
  }
  #bootscore-navbar.menu-custom > li > .sub-menu::after {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    width: min(var(--menu-line-width), calc(100% - 2rem));
    height: 1px;
    background: rgba(255,255,255,.7);
    transform: translateX(-50%);
    pointer-events: none;
  }

  #bootscore-navbar.menu-custom > li > .sub-menu a {
    color: #fff;
    font-weight: 600;
  }
  #bootscore-navbar.menu-custom > li > .sub-menu a:hover { color: #fff; opacity: .85; }
  #bootscore-navbar.menu-custom > li > .sub-menu > li > a { padding: .35rem .25rem; }

  /* Nested levels inside dropdown become accordion stacks */
  #bootscore-navbar.menu-custom > li > .sub-menu .accordion-header { display: flex; align-items: center; gap: .5rem; padding: .25rem .75rem; }
  #bootscore-navbar.menu-custom > li > .sub-menu .accordion-button.submenu-toggle { flex: 0 0 auto; width: 1.75rem; height: 1.75rem; padding: 0; justify-content: center; }
  #bootscore-navbar.menu-custom > li > .sub-menu .accordion-button.submenu-toggle::after { display: none; }
  #bootscore-navbar.menu-custom > li > .sub-menu .accordion-body { padding: .25rem .75rem .25rem 1rem; }
  #bootscore-navbar.menu-custom > li > .sub-menu > li > a { display: block; }

  /* Hide toggle only for top-level on desktop (we open on hover) */
  #bootscore-navbar.menu-custom > li.has-children > .submenu-toggle { display: none; }
}

@media (min-width: 1400px) {
  #bootscore-navbar.menu-custom > li > .sub-menu {
    --menu-line-width: 1320px;
  }
}

/* Offcanvas stack with Bootstrap Accordion */
#offcanvas-navbar.offcanvas.show #bootscore-navbar.menu-custom { width: 100%; }
#offcanvas-navbar.offcanvas.show #bootscore-navbar.menu-custom .accordion-header a.nav-link { flex: 1 1 auto; }
#offcanvas-navbar.offcanvas.show #bootscore-navbar.menu-custom .accordion-header { display: flex; align-items: center; gap: .5rem; }
#offcanvas-navbar.offcanvas.show #bootscore-navbar.menu-custom .accordion-button.submenu-toggle { flex: 0 0 auto; width: 2rem; height: 2rem; padding: 0; justify-content: center; }
#offcanvas-navbar.offcanvas.show #bootscore-navbar.menu-custom .accordion-button.submenu-toggle::after { display: none; }
#offcanvas-navbar.offcanvas.show #bootscore-navbar.menu-custom .accordion-body { padding: .25rem 0 .25rem .75rem; }
/* Prevent flash but allow smooth opening: show content during 'collapsing' and 'show' */
#offcanvas-navbar.offcanvas.show #bootscore-navbar.menu-custom .accordion-collapse > .sub-menu { display: block; }
#offcanvas-navbar.offcanvas.show #bootscore-navbar.menu-custom .accordion-collapse:not(.show):not(.collapsing) > .sub-menu { display: none; }
#offcanvas-navbar #bootscore-navbar.menu-custom .accordion-collapse:not(.show):not(.collapsing) > .sub-menu { display: none; }

/* Mobile submenu as styled bullet list */
@media (max-width: 1199.98px) {
  #bootscore-navbar.menu-custom .sub-menu {
    margin: .35rem 0 .75rem 0;
    padding: 0;
  }
  #bootscore-navbar.menu-custom .sub-menu > li > a.dropdown-item {
    font-size: .9rem;
    padding: .35rem 0 .35rem 1.35rem;
    position: relative;
  }
  #bootscore-navbar.menu-custom .sub-menu > li > a.dropdown-item::before {
    content: "";
    position: absolute;
    left: .35rem;
    top: .9em;
    width: .4rem;
    height: .4rem;
    border-radius: 50%;
    background: currentColor;
    opacity: .6;
  }
}

/* Keep offcanvas text readable on mobile */
@media (max-width: 1199.98px) {
  #offcanvas-navbar {
    background-color: var(--color-1) !important;
    color: #fff;
    --bs-offcanvas-bg: var(--color-1);
    --bs-offcanvas-color: #fff;
  }
  #offcanvas-navbar .offcanvas-header,
  #offcanvas-navbar .offcanvas-body { background-color: var(--color-1); }
  #offcanvas-navbar .nav-link,
  #offcanvas-navbar .dropdown-item,
  #offcanvas-navbar .submenu-toggle { color: #fff; }
}

/* Loader overlay during menu initialization to avoid CLS */
#offcanvas-navbar.menu-building .offcanvas-body { position: relative; }
#offcanvas-navbar .offcanvas-menu-loader {
  display: none;
  position: absolute; inset: 0;
  align-items: center; justify-content: center;
  background: var(--bs-offcanvas-bg);
  z-index: 1;
}
#offcanvas-navbar.menu-building .offcanvas-menu-loader { display: flex; }
#offcanvas-navbar.menu-building .offcanvas-body > *:not(.offcanvas-menu-loader) {
  visibility: hidden;
}

/* Main menu hover underlines (header primary nav) */
#nav-main #bootscore-navbar > .nav-item > .nav-link {
  text-decoration: none;
  text-decoration-thickness: auto;
}
#nav-main #bootscore-navbar > .nav-item:nth-child(odd) > .nav-link:hover, #nav-main #bootscore-navbar > .nav-item:nth-child(odd) > .nav-link:focus, #nav-main #bootscore-navbar > .nav-item:nth-child(odd) > .nav-link:focus-visible {
  text-decoration-line: underline;
  text-decoration-thickness: 3px;
  text-underline-offset: 0.35em;
  text-decoration-color: var(--color-2);
}
#nav-main #bootscore-navbar > .nav-item:nth-child(even) > .nav-link:hover, #nav-main #bootscore-navbar > .nav-item:nth-child(even) > .nav-link:focus, #nav-main #bootscore-navbar > .nav-item:nth-child(even) > .nav-link:focus-visible {
  text-decoration-line: underline;
  text-decoration-thickness: 3px;
  text-underline-offset: 0.35em;
  text-decoration-color: var(--color-1);
}
/* Second-level menu links */
#nav-main #bootscore-navbar .dropdown-menu .dropdown-item:hover, #nav-main #bootscore-navbar .dropdown-menu .dropdown-item:focus, #nav-main #bootscore-navbar .dropdown-menu .dropdown-item:focus-visible {
  text-decoration-line: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.25em;
  text-decoration-color: #fff;
}
