/* Independent v3 styling; mechanics adapted from the old mobile navigation. */
.v3-menu-toggle,.v3-menu-close {
  display: none; place-items: center; flex: none; width: 44px; height: 44px;
  padding: 0; margin: 0; border: 0; border-radius: 12px; background: transparent;
  color: var(--v3-text); cursor: pointer; -webkit-tap-highlight-color: transparent;
}
.v3-menu-toggle:focus-visible,.v3-menu-close:focus-visible,
html[data-v3-input="keyboard"] :is(.v3-menu-toggle,.v3-menu-close):focus { outline: 2px solid var(--v3-focus); outline-offset: 4px; }
.v3-menu-glyph { display: block; pointer-events: none; }
.v3-menu-stroke { transform-box: view-box; transform-origin: 50% 50%; transition: transform .2s ease-in-out; }
.v3-menu-stroke--top { transform: translateY(-4px) rotate(0); }
.v3-menu-stroke--bottom { transform: translateY(4px) rotate(0); }
[data-menu-icon='close'] .v3-menu-stroke--top { transform: translateY(0) rotate(45deg); }
[data-menu-icon='close'] .v3-menu-stroke--bottom { transform: translateY(0) rotate(-45deg); }
.v3-mobile-menu {
  box-sizing: border-box; position: fixed; inset: 0; margin: 0; padding: 0;
  width: 100%; max-width: none; height: 100dvh; max-height: none;
  border: 0; background: transparent; color: var(--v3-text); overflow: hidden;
  font-family: 'DM Sans', sans-serif; font-variation-settings: 'opsz' 14;
}
.v3-mobile-menu:not([open]) { display: none; }
.v3-mobile-menu::backdrop { background: transparent; }
.v3-menu-scrim { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; border: 0; background: #00000018; cursor: default; }
.v3-menu-panel {
  box-sizing: border-box; position: absolute; inset: 0 0 0 auto;
  display: flex; flex-direction: column;
  width: 100%; height: 100%; background: var(--v3-page-background);
  padding: max(80px, env(safe-area-inset-top)) 32px max(80px, env(safe-area-inset-bottom));
  overflow-y: auto; overscroll-behavior: contain; box-shadow: none;
}
.v3-menu-panel:focus { outline: none; }
/* Auto margins center the group in the dynamic viewport, but collapse to zero
   on short windows so every item remains reachable through panel scrolling. */
.v3-menu-links { display: flex; flex: none; flex-direction: column; align-items: center; gap: 24px; margin-block: auto; }
.v3-menu-links a { display: flex; align-items: center; flex: none; min-height: 48px; color: var(--v3-text); font-size: 36px; line-height: 48px; font-weight: 500; letter-spacing: -.03em; text-decoration: none; cursor: pointer; }
.v3-menu-close { display: grid; position: absolute; z-index: 1; top: var(--v3-toggle-top, 32px); right: var(--v3-toggle-right, 24px); }
.v3-menu-ready .v3-header { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.v3-menu-ready .v3-identity { min-width: 0; }
.v3-menu-ready .v3-nav { flex: none; flex-wrap: nowrap; width: max-content; margin: 0; }
/* Preserve the intrinsic width so a growing window can bring back the links. */
.v3-menu-ready.v3-menu-compact .v3-nav { position: absolute; inset-inline-end: 0; visibility: hidden; }
.v3-menu-ready.v3-menu-compact .v3-menu-toggle { display: grid; }
@media (max-width:359px) { .v3-menu-ready .v3-identity { gap: 10px; } .v3-menu-ready .v3-name { font-size: 19px; } }
@media (prefers-reduced-motion:reduce) { .v3-menu-stroke { transition: none; } }
