:root{
  --fab-ring: rgba(0,0,0,.55);
  --fab-size: 38px; --fab-radius: 8px; --fab-z: 999999;
  --ease: cubic-bezier(.2,.8,.2,1);
  --accent: #7E3AF2;
  --panel-bg: rgba(10,10,14,.60);
}
.nyhac-no-scroll{ overflow:hidden; }

/* === Floating Button === */
#nyhacMenuBtn.nyhac-fab{
  position: fixed; z-index: var(--fab-z);
  display:inline-flex; align-items:center; gap:10px;
  height: var(--fab-size); padding: 0 12px;
  appearance:none; border: 1px solid var(--fab-ring); border-radius: var(--fab-radius);
  background: rgba(255,255,255,.86); color:#111;
  box-shadow: 0 8px 24px rgba(0,0,0,.20), 0 2px 8px rgba(0,0,0,.12);
  font: 800 13px/1 ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
  letter-spacing:.4px; cursor:pointer; -webkit-tap-highlight-color: transparent;
  transition: transform .16s var(--ease), background .16s var(--ease), border-color .16s var(--ease);
}
.nyhac-pos-bl{ left:14px; bottom: calc(14px + env(safe-area-inset-bottom)); }
.nyhac-pos-br{ right:14px; bottom: calc(14px + env(safe-area-inset-bottom)); }
.nyhac-pos-tr{ right:14px; top:14px; }
#nyhacMenuBtn:hover{ transform: translateY(-1px); }
.nyhac-fab-label{ white-space: nowrap; }

/* + icon morph */
.nyhac-plus{ position:relative; width:14px; height:14px; display:inline-block; }
.nyhac-plus i{
  position:absolute; left:0; right:0; top:6px; height:2px; background: currentColor; border-radius:2px;
  transition: transform .22s var(--ease), opacity .18s var(--ease), top .22s var(--ease);
}
.nyhac-plus i:nth-child(2){ transform: rotate(90deg); }
#nyhacMenuBtn.is-open .nyhac-plus i:nth-child(1){ transform: rotate(45deg); }
#nyhacMenuBtn.is-open .nyhac-plus i:nth-child(2){ transform: rotate(-45deg); }

/* === Overlay/backdrop === */
#nyhacMenuOverlay{
  position: fixed; inset: 0; z-index: calc(var(--fab-z) - 1);
  display: grid; place-items: center;
  background:
    radial-gradient(900px 500px at 70% 20%, rgba(126,58,242,.10), transparent 74%),
    rgba(0,0,0,.28);
  opacity: 0; pointer-events: none;
  transition: opacity .33s var(--ease), backdrop-filter .33s var(--ease);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
#nyhacMenuOverlay.is-open{ opacity:1; pointer-events:auto; }

/* === Panel === */
.nyhac-overlay__panel{
  position: relative; box-sizing: border-box;
  width: min(94vw, 520px); max-height: 86vh; overflow:auto;
  margin: 12px;
  background: var(--panel-bg); color:#fff;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 18px;
  box-shadow: 0 30px 80px rgba(0,0,0,.45), 0 10px 25px rgba(0,0,0,.35);
  backdrop-filter: blur(18px) saturate(120%);
  -webkit-backdrop-filter: blur(18px) saturate(120%);
  transform: scale(.86); opacity:0;
  transition: transform .28s var(--ease), opacity .28s var(--ease), box-shadow .28s var(--ease);
  padding: 28px 18px 20px;
  text-align: center;
  transform-origin: 10% 90%;
  display:flex; flex-direction:column;
}
.nyhac-overlay__panel::after{
  content:''; position:absolute; inset:0; pointer-events:none; opacity:.06; z-index:0;
  background-image: radial-gradient(rgba(255,255,255,.35) 1px, transparent 1px);
  background-size: 3px 3px; mix-blend-mode: soft-light;
}

/* Springy open */
#nyhacMenuOverlay.is-open .nyhac-overlay__panel{
  transform: scale(1); opacity: 1;
}

/* Close button */
.nyhac-overlay__close{
  position:absolute; top:6px; right:8px;
  background: transparent; border: 0; color:#fff;
  font-size: 32px; line-height: 1; padding: 10px; cursor: pointer;
  opacity:.9; transition: transform .15s var(--ease), opacity .15s var(--ease);
}
.nyhac-overlay__close:hover{ opacity:1; transform: translateY(-1px); }

/* Brand / Logo */
.nyhac-brand{
  position: relative; z-index: 1; display:block;
  height:68px; margin:2px auto 12px; width: auto; max-width: 68%;
  object-fit: contain; object-position: center;
  opacity:0; transform: translateY(-6px);
  filter: drop-shadow(0 2px 5px rgba(0,0,0,.35));
  mix-blend-mode: luminosity;
  transition: opacity .4s var(--ease), transform .4s var(--ease);
}
#nyhacMenuOverlay.is-open .nyhac-brand{
  opacity:.6; transform: translateY(0);
}

/* Nav */
.nyhac-nav__list{
  list-style:none; margin: 6px 12px 8px; padding:0;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px;
}
.nyhac-nav__item{
  opacity:0; transform: translateY(8px) scale(.985);
  transition: transform .30s var(--ease), opacity .30s var(--ease);
}
#nyhacMenuOverlay.is-open .nyhac-nav__item{
  opacity:1; transform: translateY(0) scale(1);
}

/* Buttons */
.nyhac-nav__link{
  position:relative; overflow:hidden; box-sizing: border-box;
  display:block; text-decoration:none; color:#fff; text-align:center;
  width: 360px; max-width: 86vw; margin-inline:auto;
  padding:14px 20px; border-radius:16px;
  background: rgba(0,0,0,.86);
  border:1px solid rgba(255,255,255,.10);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08);
  font: 800 15px/1 ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
  letter-spacing:.8px;
  transition: transform .18s var(--ease), background .18s var(--ease), border-color .18s var(--ease), box-shadow .18s var(--ease);
}
.nyhac-nav__link:hover{
  transform: translateY(-1px);
  background: var(--accent);
  border-color: rgba(255,255,255,.18);
}

/* Meta links */
.nyhac-meta-links{
  display:flex; justify-content:center; align-items:center; gap:10px;
  margin-top:auto; padding-top:14px;
  font: 700 11px/1 ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
  opacity:.85;
}
.nyhac-meta-link{
  color:#fff; text-decoration:none; border-bottom: 1px dotted rgba(255,255,255,.35);
  padding-bottom:1px; transition: opacity .18s var(--ease), border-color .18s var(--ease);
}
.nyhac-meta-link:hover{ opacity:1; border-color: rgba(255,255,255,.6); }
.nyhac-dot{ opacity:.6; }

/* Small screens */
@media (max-width:420px){
  .nyhac-nav__link{ width: 320px; max-width: 88vw; padding:12px 18px; }
  .nyhac-brand{ max-width: 72%; height: 60px; }
}
