/* =========================================================================
 * Utilities：版面與留白小工具（行動優先）
 * ====================================================================== */

/* Stack / Grid */
.bnes-stack { display: flex; flex-direction: column; gap: var(--sp-30); }
.bnes-stack--lg { gap: var(--sp-50); }
.bnes-cluster { display: flex; flex-wrap: wrap; gap: var(--sp-20); align-items: center; }
.bnes-center { text-align: center; }

.bnes-grid { display: grid; gap: var(--sp-40); grid-template-columns: 1fr; }
@media (min-width: 640px) {
  .bnes-grid--2 { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 900px) {
  .bnes-grid--3 { grid-template-columns: repeat(3, 1fr); }
  .bnes-grid--4 { grid-template-columns: repeat(4, 1fr); }
}

/* Spacing helpers */
.bnes-mt-0 { margin-top: 0; }
.bnes-mt-30 { margin-top: var(--sp-30); }
.bnes-mt-40 { margin-top: var(--sp-40); }
.bnes-mt-50 { margin-top: var(--sp-50); }
.bnes-mb-30 { margin-bottom: var(--sp-30); }
.bnes-mb-40 { margin-bottom: var(--sp-40); }

/* Type helpers */
.bnes-lead { font-size: var(--fs-lg); color: var(--c-text-muted); line-height: var(--lh-snug); }
.bnes-muted { color: var(--c-text-muted); }
.bnes-display { font-family: var(--font-display); letter-spacing: var(--tracking-tight); }
.bnes-text-accent { color: var(--c-accent-strong); }

/* Visibility */
.bnes-hide { display: none !important; }
@media (max-width: 639px) { .bnes-hide-sm { display: none !important; } }
@media (min-width: 900px) { .bnes-hide-lg { display: none !important; } }

/* Reduced motion：關閉非必要動效 */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}
