/* ==========================================================================
   walkins.css — walk-in "ON AIR" indicator.
   On-air studio-sign style: dark bezel panel, warm orange neon glow,
   uppercase Bebas Neue lettering. OFF state is a dimmed gray sign that
   still links to the Instagram DM.
   Contrast notes (tokens.css §PLACEMENT RULES):
   - --accent #F26A24 on --ink ≈ 6.4:1 — fine for large neon lettering.
   - Small text never sits on a solid --accent fill; lettering sits on the
     dark bezel. OFF text uses --muted (dark-surfaces-only token, 6.65:1).
   ========================================================================== */

/* Slot wrapper: inline-flex so the link joins hero/bookbar flow layout.
   role="status" + aria-live="polite" are set on it by js/walkins.js. */
.walkin-slot {
  display: inline-flex;
  max-width: 100%;
}
.walkin-slot--bar {
  margin-inline: 8px;
}

/* ---- The sign itself (always a link) ---- */
.walkin {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  max-width: 100%;
  text-decoration: none;
  background: var(--ink);
  border: 2px solid rgba(242, 106, 36, .55);
  border-radius: var(--r-sm);
  transition: box-shadow var(--d-card) var(--ease), border-color var(--d-card) var(--ease);
}
/* Global :focus-visible from tokens.css applies; make sure we never hide it. */
.walkin:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; }

.walkin__text {
  font-family: var(--font-display);
  text-transform: uppercase; /* screen readers still hear "Walk-ins available today" */
  letter-spacing: .1em;
  line-height: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---- ON: full neon on-air sign ---- */
.walkin--on .walkin__text {
  color: var(--accent);
  text-shadow: 0 0 12px rgba(242, 106, 36, .55);
}
/* The "on air" dot: pure decoration, aria-hidden in markup. */
.walkin__dot {
  flex: none;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 10px rgba(242, 106, 36, .9);
}

/* Subtle neon breathing: glow drifts between two states on a 2.4s cycle. */
@keyframes walkin-glow {
  0%, 100% {
    box-shadow:
      0 0 14px rgba(242, 106, 36, .35),
      inset 0 0 10px rgba(242, 106, 36, .12);
    border-color: rgba(242, 106, 36, .55);
  }
  50% {
    box-shadow:
      0 0 30px rgba(242, 106, 36, .65),
      inset 0 0 16px rgba(242, 106, 36, .22);
    border-color: rgba(242, 106, 36, .9);
  }
}
.walkin--on {
  animation: walkin-glow 2.4s ease-in-out infinite;
}

/* ---- OFF: dimmed gray sign, still a working link ---- */
.walkin--off {
  border-color: rgba(148, 148, 154, .45);
  box-shadow: none;
}
.walkin--off .walkin__text {
  color: var(--muted);
  text-shadow: none;
}

/* ---- Hero variant: full-size sign, ≥48px touch target ---- */
.walkin--hero {
  min-width: 48px;
  min-height: 48px;
  padding: 10px 22px;
  font-size: clamp(1.5rem, 7vw, 2.25rem);
}
.walkin--hero .walkin__text { letter-spacing: .14em; }

/* ---- Bar variant: compact pill for the 48px sticky booking bar ---- */
.walkin--bar {
  min-height: 34px;
  padding: 6px 14px;
  border-width: 1px;
  border-radius: var(--r-pill);
  font-size: 1.0625rem;
}
.walkin--bar .walkin__dot {
  width: 8px;
  height: 8px;
}

/* ---- Reduced motion: explicit here, not just the global reset.
   Static glow, no pulse. ---- */
@media (prefers-reduced-motion: reduce) {
  .walkin--on {
    animation: none;
    box-shadow:
      0 0 20px rgba(242, 106, 36, .5),
      inset 0 0 12px rgba(242, 106, 36, .16);
    border-color: rgba(242, 106, 36, .75);
  }
  .walkin__dot { box-shadow: 0 0 6px rgba(242, 106, 36, .7); }
}
