/* ============================================================
   buttons.css v2: Byteland house button system, HYBRID edition.
   Approved by Sleek on store compare.html v3 (Sept 2026).

   LOAD THIS FILE LAST on every property (after its own css).
   Same selectors, later cascade: it overrides the gamey look
   without touching each property's own stylesheet.

   Ethos: premium with a pulse. Sparse ANIMATED gradients.
   Sentence case (kills uppercase + wide letterspacing), pill
   shape, same-hue gradient pan on primaries, sheen sweep on
   hover, calm glass ghosts with a gradient hairline on hover.
   No rainbow, no neon halo, no scale pop.
   ============================================================ */

:root {
  --btn-accent: #00e5ff;
  --btn-radius: 999px;
  --btn-font: 'Space Grotesk', system-ui, sans-serif;
}

/* ---- base (works for .btn, .btn-primary, .btn-ghost, bare buttons) ---- */
.btn,
.btn-primary,
.btn-ghost {
  position: relative;
  overflow: hidden;
  font-family: var(--btn-font) !important;
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 0.01em !important;
  text-transform: none !important;
  border-radius: var(--btn-radius) !important;
  padding: 12px 26px !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  line-height: 1.2;
  text-decoration: none;
  cursor: pointer;
  user-select: none;
  transition: filter 0.16s ease, transform 0.16s ease, border-color 0.2s ease, background 0.2s ease;
}

/* ---- primary: animated same-hue gradient + soft glow ---- */
.btn-primary {
  color: #04121f !important;
  border: none;
  background: linear-gradient(120deg, var(--cyan) 0%, #00b8d4 30%, #4df0ff 60%, var(--cyan) 100%) !important;
  background-size: 280% 280% !important;
  animation: btnFlow 7s ease-in-out infinite;
  box-shadow: 0 4px 22px rgba(0, 229, 255, 0.28) !important;
}
.btn-primary:hover {
  filter: brightness(1.1);
  transform: translateY(-1px);
}
.btn-primary:active { filter: brightness(0.96); transform: translateY(0); }
.btn-primary::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(105deg, transparent 42%, rgba(255, 255, 255, 0.32) 50%, transparent 58%);
  transform: translateX(-130%);
}
.btn-primary:hover::after { animation: btnSheen 0.9s ease; }

@keyframes btnFlow {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
@keyframes btnSheen { to { transform: translateX(130%); } }

/* owned/success state (store uses .owned) */
.btn-primary.owned {
  background: linear-gradient(120deg, #22c55e 0%, #16a34a 30%, #4ade80 60%, #22c55e 100%) !important;
  background-size: 280% 280% !important;
  box-shadow: 0 4px 22px rgba(34, 197, 94, 0.26) !important;
}

/* ---- ghost: calm glass, gradient hairline border on hover only ---- */
.btn-ghost {
  color: #eef0ff !important;
  background: rgba(255, 255, 255, 0.05) !important;
  border: 1px solid rgba(255, 255, 255, 0.14);
}
.btn-ghost:hover {
  border-color: transparent !important;
  background:
    linear-gradient(rgba(10, 12, 24, 0.92), rgba(10, 12, 24, 0.92)) padding-box,
    linear-gradient(120deg, rgba(0, 229, 255, 0.55), rgba(124, 58, 237, 0.4), rgba(0, 229, 255, 0.55)) border-box !important;
  background-size: 100% 100%, 240% 240% !important;
  animation: ghostBorder 4s linear infinite;
  box-shadow: none !important;
  transform: none !important;
}
@keyframes ghostBorder { to { background-position: 0 0, 240% 0; } }

/* ---- size variants ---- */
.btn-sm, .btn-small { padding: 8px 16px !important; font-size: 13.5px !important; }
.btn-lg, .btn-large { padding: 14px 30px !important; font-size: 16.5px !important; }

@media (prefers-reduced-motion: reduce) {
  .btn-primary, .btn-primary::after, .btn-ghost:hover { animation: none !important; }
  .btn-primary, .btn-ghost { transition: none !important; }
}
