/* ============================================================
   ALIFY — push-menu.css · full-height side panel nav (every page)
   CSS owns container transitions; GSAP staggers inner content
   (see /assets/gsap/animations-push-menu.js).
   ============================================================ */

.pushmenu {
  position: fixed;
  inset: 0;
  z-index: var(--z-menu);
  visibility: hidden;
  pointer-events: none;
}
.pushmenu.is-open { visibility: visible; pointer-events: auto; }

.pushmenu__backdrop {
  position: absolute; inset: 0;
  background: rgba(5, 6, 10, .62);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  opacity: 0;
  transition: opacity .5s ease;
}
.pushmenu.is-open .pushmenu__backdrop { opacity: 1; }

.pushmenu__panel {
  position: absolute;
  top: 0; right: 0;
  height: 100%;
  width: min(560px, 94vw);
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  overscroll-behavior: contain;
  background:
    radial-gradient(120% 80% at 100% 0%, rgba(12, 220, 42, .08), transparent 50%),
    linear-gradient(165deg, #3D4670 0%, var(--navy) 42%, #232947 100%);
  border-left: 1px solid rgba(236, 236, 228, .12);
  box-shadow: -40px 0 90px rgba(0, 0, 0, .5);
  transform: translateX(103%);
  transition: transform .65s cubic-bezier(.76, 0, .18, 1);
}
.pushmenu.is-open .pushmenu__panel { transform: translateX(0); }

.pushmenu__top {
  display: flex; align-items: center; justify-content: space-between;
  padding: 1.35rem clamp(1.5rem, 3vw, 2.75rem);
  border-bottom: 1px solid rgba(236, 236, 228, .1);
}
.pushmenu__close { background: transparent; border-color: rgba(236, 236, 228, .25); }

.pushmenu__nav { padding: clamp(1.5rem, 3vh, 2.5rem) clamp(1.5rem, 3vw, 2.75rem); flex: 1 0 auto; }

.pmenu__item { border-bottom: 1px solid rgba(236, 236, 228, .1); }

.pmenu__row { display: flex; align-items: center; gap: 1rem; }

.pmenu__link {
  flex: 1;
  display: flex; align-items: baseline; gap: 1.1rem;
  padding-block: 1rem;
  font-family: var(--ff-display);
  font-weight: 500;
  font-size: clamp(1.65rem, 4.4vh, 2.3rem);
  line-height: 1.1;
  color: var(--off);
  text-decoration: none;
  transition: color .3s, padding-left .35s;
}
.pmenu__link .idx { font-size: .72rem; transform: translateY(-.9em); }
.pmenu__link:hover, .pmenu__link:focus-visible { color: var(--green); padding-left: .6rem; }

.pmenu__toggle {
  width: 40px; height: 40px; flex: none;
  display: inline-grid; place-items: center;
  border: 1px solid rgba(236, 236, 228, .25);
  border-radius: 50%;
  color: var(--sand);
  background: transparent;
  transition: transform .45s cubic-bezier(.7, 0, .2, 1), border-color .3s, color .3s;
}
.pmenu__toggle:hover { border-color: var(--green); color: var(--green); }
.pmenu__toggle[aria-expanded="true"] { transform: rotate(135deg); border-color: var(--green); color: var(--green); }

/* services submenu */
.pmenu__sub {
  max-height: 0;
  overflow: hidden;
  transition: max-height .55s cubic-bezier(.7, 0, .2, 1);
}
.pmenu__sub-list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .15rem 1.5rem;
  list-style: none;
  padding: .25rem 0 1.4rem 2.6rem;
}
.pmenu__sub-link {
  display: inline-block;
  padding-block: .45rem;
  font-family: var(--ff-mono);
  font-size: .83rem; letter-spacing: .04em;
  color: rgba(236, 236, 228, .68);
  text-decoration: none;
  transition: color .3s, padding-left .3s;
}
.pmenu__sub-link::before { content: "→ "; color: var(--teal-2); opacity: 0; margin-left: -1.1em; transition: opacity .3s; }
.pmenu__sub-link:hover { color: var(--green); padding-left: .35rem; }
.pmenu__sub-link:hover::before { opacity: 1; }

@media (max-width: 420px) {
  .pmenu__sub-list { grid-template-columns: 1fr; padding-left: 1.5rem; }
}

/* bottom meta */
.pushmenu__meta {
  margin-top: auto;
  padding: 1.75rem clamp(1.5rem, 3vw, 2.75rem) 2rem;
  border-top: 1px solid rgba(236, 236, 228, .1);
  display: grid;
  gap: 1.35rem;
}
.pushmenu__meta .eyebrow { margin-bottom: .25rem; }
.pushmenu__mail {
  font-family: var(--ff-display);
  font-size: 1.45rem; font-weight: 500;
  color: var(--off); text-decoration: none;
}
.pushmenu__mail:hover { color: var(--green); }
.pushmenu__meta-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.pushmenu__regions { font-family: var(--ff-mono); font-size: .72rem; letter-spacing: .16em; color: var(--muted); text-transform: uppercase; }
