/* ============ UTILITIES ============ */
.text-center { text-align: center; }
.text-right { text-align: right; }
.mt-0 { margin-top: 0; } .mt-1 { margin-top: 8px; } .mt-2 { margin-top: 16px; }
.mt-3 { margin-top: 28px; } .mt-4 { margin-top: 44px; } .mt-5 { margin-top: 66px; }
.mb-0 { margin-bottom: 0; } .mb-1 { margin-bottom: 8px; } .mb-2 { margin-bottom: 16px; }
.mb-3 { margin-bottom: 28px; } .mb-4 { margin-bottom: 44px; } .mb-5 { margin-bottom: 66px; }
.py-6 { padding: 80px 0; }
.py-4 { padding: 56px 0; }
.bg-light { background: var(--bg-light); }
.bg-white { background: #fff; }
.bg-grad { background: linear-gradient(160deg, #FFF6EC, #fff 45%, #EAF2FC); }

.text-primary { color: var(--primary-dark); }
.text-accent { color: var(--accent); }
.text-muted { color: var(--text-muted); }
.fs-small { font-size: 13.5px; }
.fw-700 { font-weight: 700; }

.flex { display: flex; align-items: center; gap: 16px; }
.flex-between { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; }

.center { display: flex; align-items: center; justify-content: center; }
.hide { display: none !important; }

.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;
}

/* glass utilities */
.glass-card {
  background: rgba(255,255,255,.55);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border: 1px solid rgba(255,255,255,.7);
  box-shadow: var(--shadow-md);
  border-radius: var(--radius-md);
}

/* tag chip */
.tag-chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 12px;
  font-weight: 700;
  font-family: var(--font-head);
  letter-spacing: .5px;
  padding: 6px 15px;
  border-radius: var(--radius-full);
}

/* divider */
.divider {
  height: 4px;
  width: 90px;
  margin: 22px auto;
  border-radius: 4px;
  background: linear-gradient(90deg, var(--primary), var(--accent));
}

/* stat line under headings */
.section-head-sub { max-width: 760px; margin: 0 auto 40px; text-align: center; color: var(--text-muted); font-size: 16px; }

/* skip link */
.skip-link {
  position: absolute;
  top: -60px; left: 16px;
  background: var(--primary);
  color: #fff;
  padding: 10px 20px;
  border-radius: 8px;
  z-index: 3000;
  transition: top .3s;
  font-weight: 700;
}
.skip-link:focus { top: 16px; }

/* focus visible */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 2px;
}

/* scroll progress bar */
.scroll-progress {
  position: fixed;
  top: 0; left: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--primary), var(--accent));
  z-index: 1500;
  width: 0%;
  border-radius: 0 4px 4px 0;
}

/* placeholder shimmer */
.shimmer { background: linear-gradient(90deg, #f0f0f0 25%, #e4e4e4 50%, #f0f0f0 75%); background-size: 200% 100%; animation: shimmerMove 1.4s infinite; border-radius: 8px; }
@keyframes shimmerMove { to { background-position: -200% 0; } }