/*
███████████████████████████████████████████████████████████████████████████████████████████████
    Main Nav-Menu
███████████████████████████████████████████████████████████████████████████████████████████████
*/
#main_menu {
  --text_color: var(--clr_text);
  --text_font_weight: var(--font_weight_normal);
  --a_padding_vertical: 1.1em;
  --a_padding_horizontal: 0.7em;
  --overlay_menu_bgc: #333;
  --burger_stripe_thickness: 5px;
  --burger_width: calc(var(--burger_stripe_thickness) * 7);
  --burger_color: var(--clr_text);
  --burger_color_hover: var(--clr_brand);
  --close_button_color: #e74141;
  --submenu_bgc: #fff;
  --link_hover_decoration_color: var(--clr_brand, #444);
  --link_active_decoration_color: var(--clr_brand_300, #777);
  overflow: visible;
  transition: none;
}
#main_menu:has(#main_menu_toggle:checked) {
  inset: 0;
  position: absolute;
  width: 100%;
  height: 100svh;
  background-color: oklch(0 0 0 / 0.6);
  backdrop-filter: blur(2px);
}
#main_menu ul {
  display: flex;
  justify-content: flex-end;
  gap: 0.8ch;
  list-style: none;
  margin-block-end: 0;
  @media (max-width: 120ch) {
    & {
      justify-content: center;
    }
  }
}
#main_menu li {
  padding-block: 0;
}
#main_menu li::before,
#main_menu li::after {
  display: none;
}
#main_menu a {
  display: block;
  padding-inline: var(--a_padding_horizontal);
  padding-block: var(--a_padding_vertical);
  text-box-trim: trim-both;
  text-box-edge: cap alphabetic;
  font-weight: var(--text_font_weight);
  color: var(--text_color);
  line-height: 1.2em;
  text-decoration: none auto transparent;
  text-decoration-skip-ink: none;
  text-underline-offset: -1ex;
  transition-duration: 0.2s;
  transition-timing-function: ease-in-out;
  transition-property: text-underline-offset, text-decoration;
}
#main_menu a * {
  font-weight: inherit;
  color: inherit;
  line-height: inherit;
}
#main_menu a span {
  text-wrap-mode: nowrap;
}
#main_menu li.active a:not([href*="#"]) {
  text-underline-offset: 0.6em;
  text-decoration-line: underline;
  text-decoration-thickness: 3px;
  text-decoration-color: var(--link_active_decoration_color);
}
#main_menu li:not(.active) a:hover,
#main_menu li:not(.active) a:focus-visible {
  text-underline-offset: 0.6em;
  text-decoration-line: underline;
  text-decoration-thickness: 3px;
  text-decoration-color: var(--link_hover_decoration_color);
}
#main_menu a i {
  line-height: 0.7em;
}
/*
███████████████████████████████████████████████████████████████████████████████████████████████
  Sub-Menu
███████████████████████████████████████████████████████████████████████████████████████████████
*/
#main_menu li.has_submenu > a::after {
  font-family: var(--fontawesome);
  content: "\f0da" / "";
  display: inline-block;
  width: 0.8em;
  height: 0.8em;
  margin-left: 0.2em;
  font-size: 0.8em;
  line-height: 0.8em;
  padding-left: 0.1em;
}
#main_menu li.has_submenu:hover > a::after {
  transform: rotate(90deg);
  transform-origin: 50% 50%;
}
#main_menu .submenu {
  display: block;
  position: absolute;
  visibility: hidden;
  right: inherit;
  z-index: 1;
  overflow: visible;
  background-color: var(--submenu_bgc);
  border-radius: 0.3rem;
  padding: 1em 0.7em;
  box-shadow:
    0 0px 0.6px rgba(0, 0, 0, 0.02),
    0 0px 1.4px rgba(0, 0, 0, 0.028),
    0 0px 2.6px rgba(0, 0, 0, 0.035),
    0 0px 4.7px rgba(0, 0, 0, 0.042),
    0 0px 8.8px rgba(0, 0, 0, 0.05),
    0 0px 21px rgba(0, 0, 0, 0.07);
}
#main_menu #main_menu_toggle:checked ~ nav .submenu {
  visibility: visible;
}
#header.shrink #main_menu .submenu {
  margin-top: -0.6rem;
}
#main_menu li:hover .submenu,
#main_menu li:focus-within .submenu {
  visibility: visible;
}
#main_menu .submenu li {
  display: block;
  margin-left: 0;
}
#main_menu .submenu a {
  display: block;
  text-align: left;
  padding: 0.7em 0.7em;
  position: relative;
  text-transform: none;
}
#main_menu .submenu li:not(.active) a:hover,
#main_menu .submenu li:not(.active) a:focus-visible {
  text-underline-offset: 0.2em;
  text-decoration-thickness: 2px;
}
/*
███████████████████████████████████████████████████████████████████████████████████████████████
  Menu Toggle Button
███████████████████████████████████████████████████████████████████████████████████████████████
*/
#main_menu .button_container {
  display: none;
  padding: calc(var(--text_line_height) / 2 + var(--a_padding_vertical));
  height: auto;
  cursor: pointer;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  position: relative;
  z-index: 1;
  width: calc(var(--burger_width) + (var(--a_padding_vertical) * 2));
}
#main_menu #main_menu_toggle:focus-visible + .button_container {
  outline: var(--focus_outline_size) var(--focus_outline_style)
    var(--focus_outline_color);
  outline-offset: var(--focus_outline_offset, var(--focus_outline_size));
}
#main_menu_toggle {
  display: none;
  position: absolute;
  top: -500px;
  opacity: 0;
}
#main_menu .button_container .menu_button,
#main_menu .button_container .menu_button::before,
#main_menu .button_container .menu_button::after {
  display: block;
  background-color: var(--burger_color);
  position: absolute;
  height: var(--burger_stripe_thickness);
  width: var(--burger_width);
  transition: transform 550ms cubic-bezier(0.2, 1, 0.3, 1);
  border-radius: calc(var(--line_height) / 5);
}
#main_menu #main_menu_toggle:checked ~ .button_container {
  margin-block: 0;
  background-color: rgb(0 0 0 / 0.2);
  backdrop-filter: blur(4px);
}
/* Fix for Safari */
#main_menu #main_menu_toggle:checked ~ .button_container {
  order: -1;
}
#main_menu #main_menu_toggle:checked + .button_container .menu_button,
#main_menu #main_menu_toggle:checked + .button_container .menu_button::before,
#main_menu #main_menu_toggle:checked + .button_container .menu_button::after {
  background-color: var(--close_button_color);
  opacity: 0.9;
}
#main_menu #main_menu_toggle:checked + .button_container:hover .menu_button,
#main_menu
  #main_menu_toggle:checked
  + .button_container:hover
  .menu_button::before,
#main_menu
  #main_menu_toggle:checked
  + .button_container:hover
  .menu_button::after {
  opacity: 1;
}
/* Fix for Safari */
#main_menu #main_menu_toggle:checked ~ nav {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
}
#main_menu .button_container .menu_button::before {
  content: "" / "";
  margin-top: calc(var(--burger_stripe_thickness) * -2);
}
#main_menu .button_container .menu_button::after {
  content: "" / "";
  margin-top: calc(var(--burger_stripe_thickness) * 2);
}
#main_menu .button_container:hover .menu_button,
#main_menu .button_container:hover .menu_button::before,
#main_menu .button_container:hover .menu_button::after {
  background-color: var(--burger_color_hover);
}
#main_menu #main_menu_toggle:checked + .button_container .menu_button::before {
  margin-top: 0;
  transform: rotate(405deg);
}
#main_menu #main_menu_toggle:checked + .button_container .menu_button {
  background: transparent;
}
#main_menu #main_menu_toggle:checked + .button_container .menu_button::after {
  margin-top: 0;
  transform: rotate(-405deg);
}
/*
███████████████████████████████████████████████████████████████████████████████████████████████
  Breakpoint
███████████████████████████████████████████████████████████████████████████████████████████████
*/
@media (max-width: 80ch) {
  #main_menu_toggle {
    display: block;
  }
  #main_menu .button_container {
    display: flex;
    float: right;
  }
  #main_menu .button_container {
    padding: calc(var(--text_line_height) / 3 + var(--a_padding_vertical));
  }
  #main_menu nav {
    position: absolute;
    top: 0;
    right: 0;
    width: auto;
    justify-content: center;
    align-items: center;
  }
  #main_menu #main_menu_toggle:checked ~ nav {
    background-color: var(--overlay_menu_bgc);
    padding: 1rem;
    padding-top: 3rem;
  }
  #main_menu #main_menu_toggle:checked ~ nav > ul {
    flex-direction: column;
    margin-inline: auto;
    justify-content: center;
    align-items: center;
    border-top: 1px solid rgb(255 255 255 / 0.3);
    gap: 0;
  }
  #main_menu #main_menu_toggle:checked ~ nav > ul > li {
    border-bottom: 1px solid rgb(255 255 255 / 0.3);
    width: 100%;
    background-color: transparent;
    padding-inline: 0;
  }
  #main_menu #main_menu_toggle ~ nav > ul > li {
    display: none;
  }
  #main_menu #main_menu_toggle:checked ~ nav > ul > li {
    display: block;
    margin: 0;
  }
  #main_menu #main_menu_toggle:checked ~ nav > ul > li a {
    color: #fff;
    position: relative;
    text-transform: none;
    text-align: left;
    padding-inline: calc(var(--a_padding_horizontal) * 2);
    padding-block: 2ch;
    border: none;
  }
  #main_menu #main_menu_toggle:checked ~ nav > ul > li.active a {
    color: #f2f2f2;
  }
  #main_menu #main_menu_toggle:checked ~ nav > ul > li a:hover {
    background-color: inherit;
  }
  #main_menu #main_menu_toggle:checked ~ nav > ul > li a:hover::before {
    content: "" / "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.4);
  }
  #main_menu #main_menu_toggle:checked ~ nav > ul > li a > * {
    position: relative;
  }
  #main_menu #main_menu_toggle:checked ~ nav ul li.has_submenu > a::after {
    display: none;
  }
  #main_menu #main_menu_toggle:checked ~ nav ul li .submenu {
    display: block;
    position: unset;
    right: unset;
    z-index: unset;
    background-color: unset;
    box-shadow: unset;
    padding: 0;
    margin-top: 0;
  }
  #main_menu #main_menu_toggle:checked ~ nav ul li .submenu li {
    padding-left: calc(var(--a_padding_horizontal) * 2);
  }
  #main_menu #main_menu_toggle:checked ~ .button_container {
    position: absolute;
    top: 0;
    right: 0;
  }
}
