[data-twostep-nav]{
  --cubic-default: cubic-bezier(0.625, 0.05, 0, 1);
  --animation-ease: 0.2s ease;

  --duration-default: 0.5s;
  --duration-default-long: 0.75s; 
  --duration-default-half: 0.25s; 

  --animation-default: var(--duration-default) var(--cubic-default);
  --animation-default-long: var(--duration-default-long) var(--cubic-default);
  --animation-default-half: var(--duration-default-half) var(--cubic-default);
}


/* -------------------------------
   Menu button
-------------------------------- */
.twostep-nav__toggle-bar{
  transition: transform var(--animation-default);
  transform: translateY(-0.25em) rotate(0.001deg);  
}

.twostep-nav__toggle:hover .twostep-nav__toggle-bar {
  transform: translateY(0.25em) rotate(0.001deg);
}

.twostep-nav__toggle .twostep-nav__toggle-bar:nth-child(2) {
  transform: translateY(0.15em) rotate(0.001deg);
}

.twostep-nav__toggle:hover .twostep-nav__toggle-bar:nth-child(2) {
  transform: translateY(-0.15em) rotate(0.001deg);
}

[data-nav-status="active"] .twostep-nav__toggle .twostep-nav__toggle-bar {
  transform: translateY(0em) rotate(45deg);
}

[data-nav-status="active"] .twostep-nav__toggle .twostep-nav__toggle-bar:nth-child(2) {
  transform: translateY(0em) rotate(-45deg);
}


/* -------------------------------
   Fixed overlay (NOT body)
-------------------------------- */
.twostep-nav__bg {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0); /* overlay only */
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity var(--animation-default), visibility var(--animation-default);
}

[data-nav-status="active"] .twostep-nav__bg {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}


/* -------------------------------
   Inner bar grow
-------------------------------- */
.twostep-nav__bar {
  transition: max-width var(--animation-default-long) 0.2s;
}

[data-nav-status="active"] .twostep-nav__bar {
  transition: max-width var(--animation-default) 0s;
  max-width: 95%;
}


/* -------------------------------
   Thin line
-------------------------------- */
.twostep-nav__top-line {
  transition: opacity var(--animation-default);
  opacity: 0;
}

[data-nav-status="active"] .twostep-nav__top-line {
  opacity: 1;
}


/* -------------------------------
   Nav background (local only)
-------------------------------- */
.twostep-nav__bar__bg,
.twostep-nav__back-bg {
  transition: background-color var(--animation-ease);
}


/* -------------------------------
   Back inset animation
-------------------------------- */
.twostep-nav__back{
  transition: inset var(--animation-default);
  inset: 0em;
}

[data-nav-status="active"] .twostep-nav__back {
  inset: -0.25em;
}

@media (max-width: 767px) {
  [data-nav-status="active"] .twostep-nav__back {
    inset: -1.25em;
  }
}


/* -------------------------------
   Bottom reveal
-------------------------------- */
.twostep-nav__bottom {
  transition: grid-template-rows var(--animation-default);
}

[data-nav-status="active"] .twostep-nav__bottom {
  transition: grid-template-rows var(--animation-default-long) 0.25s;
  grid-template-rows: 1fr;
}


/* -------------------------------
   Columns animation
-------------------------------- */
.twostep-nav__bottom-row > * {
  transform: translateY(2em);
  opacity: 0;
  transition: transform var(--animation-default), opacity var(--animation-default);
}

[data-nav-status="active"] .twostep-nav__bottom-row > * {
  transform: translateY(0);
  opacity: 1;
}
