/* =========================================================================
 * Brand North — Utilities (kept short by design — utility soup is banned)
 * ========================================================================= */

/* ---------- Accessibility ----------------------------------------------- */
.bn-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.bn-no-scroll {
  overflow: hidden;
  touch-action: none;
}

/* ---------- Visibility -------------------------------------------------- */
.bn-hide          { display: none !important; }
.bn-hide\@mobile  { @media (max-width: 768px) { display: none !important; } }
.bn-hide\@desktop { @media (min-width: 769px) { display: none !important; } }

/* ---------- Show-on-focus link ------------------------------------------ */
.bn-show-on-focus {
  position: absolute;
  left: -9999px;
}

.bn-show-on-focus:focus-visible {
  position: static;
}

/* ---------- Maintain aspect with bg ------------------------------------- */
.bn-bg-cover {
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

/* ---------- Glow halos used behind dashboards / hero panels ------------- */
.bn-glow-magenta {
  position: relative;
  isolation: isolate;
}

.bn-glow-magenta::before {
  content: '';
  position: absolute;
  inset: -10%;
  z-index: -1;
  background: radial-gradient(50% 50% at 50% 50%, rgba(229, 103, 60, 0.18), transparent 70%);
  pointer-events: none;
}

.bn-glow-edge {
  box-shadow: var(--shadow-dashboard);
}

/* ---------- Reduced-motion overrides ------------------------------------ */
[data-bn-reduced-motion="1"] .bn-marquee__track { animation: none; }
[data-bn-reduced-motion="1"] .bn-pill--live .bn-pill__dot { animation: none; }
[data-bn-reduced-motion="1"] .bn-live-timestamp::before { animation: none; }

/* ---------- Custom cursor ----------------------------------------------- */
.bn-cursor {
  position: fixed;
  top: 0;
  left: 0;
  pointer-events: none;
  z-index: var(--z-toast);
  will-change: transform;
}

.bn-cursor--dot {
  width: 6px;
  height: 6px;
  background-color: var(--bn-ember);
  border-radius: 50%;
  transition: opacity var(--dur-fast) var(--ease-out-quart);
}

.bn-cursor--ring {
  width: 28px;
  height: 28px;
  border: 1px solid rgba(229, 103, 60, 0.5);
  border-radius: 50%;
  transition: transform var(--dur-base) var(--ease-out-quart),
              border-color var(--dur-base) var(--ease-out-quart),
              opacity var(--dur-fast) var(--ease-out-quart);
}

.bn-cursor--ring[data-state="hover"] {
  border-color: var(--bn-ember);
  background-color: rgba(229, 103, 60, 0.06);
}

[data-bn-cursor="1"] {
  cursor: none;
}

[data-bn-cursor="1"] a,
[data-bn-cursor="1"] button,
[data-bn-cursor="1"] input,
[data-bn-cursor="1"] textarea,
[data-bn-cursor="1"] select {
  cursor: none;
}

[data-bn-cursor="0"] .bn-cursor { opacity: 0; }

/* ---------- Hero headline fade transition (audience switcher) ----------- */
.bn-hero__headline,
.bn-hero__intro {
  transition: opacity var(--dur-base) var(--ease-out-quart);
}

/* ---------- Motion-ready signal helps debugging in console -------------- */
[data-bn-motion="ready"]::before {
  content: '';
  display: none;
}
