/* GameEngine Studios shared icon treatment */
.ges-has-icon {
  align-items: center;
  justify-content: center;
  gap: .7em;
}

/* Never change an element's display mode here. The page's own CSS decides
   whether a control is flex, block, inline, or hidden at each breakpoint. */
.ges-icon {
  width: 1.28em;
  height: 1.28em;
  flex: 0 0 auto;
  display: inline-block;
  stroke: currentColor;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  filter: drop-shadow(0 0 7px rgba(79, 178, 255, .28));
  transition: transform .18s ease, filter .18s ease;
}
.ges-has-icon:hover .ges-icon,
.ges-has-icon:focus-visible .ges-icon {
  transform: translateY(-1px) scale(1.08);
  filter: drop-shadow(0 0 10px rgba(79, 178, 255, .55));
}
.ges-has-icon .ges-icon + .ges-icon-label { min-width: 0; }
.ges-icon-only { gap: 0 !important; }
.ges-icon-only .ges-icon { margin: 0; }
@media (max-width: 640px) {
  .ges-icon { width: 1.18em; height: 1.18em; }
  .ges-has-icon { gap: .58em; }
}
@media (prefers-reduced-motion: reduce) {
  .ges-icon { transition: none; }
  .ges-has-icon:hover .ges-icon,
  .ges-has-icon:focus-visible .ges-icon { transform: none; }
}

/* Defensive rule for mobile navigation controls. The site's original
   desktop rules remain authoritative even if an old cached script added
   icon classes previously. */
@media (min-width: 769px) {
  .nav-toggle.ges-has-icon,
  .menu-toggle.ges-has-icon,
  .navbar-toggler.ges-has-icon,
  .hamburger.ges-has-icon,
  .mobile-menu-toggle.ges-has-icon {
    display: none;
  }
}

/* v3.1 label wrapping fix */
.ges-has-icon {
  min-width: 0;
  height: auto;
  max-width: 100%;
  white-space: normal !important;
  overflow-wrap: anywhere;
  word-break: normal;
  text-align: center;
}
.ges-has-icon > .ges-icon { flex: 0 0 auto; }
