:root {
  --brand-primary: #164361;
  --brand-secondary: #c87927;
  --bg-surface: #ffffff;
  --bg-muted: #fdf8f3;
  --text-primary: #0f1f2a;
  --muted: #5b656e;
  --radius-base: 16px;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 16px;
  --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-scale-base: 16px;
}

body {
  font-family: var(--font-sans);
  font-size: var(--font-scale-base);
  line-height: 1.6;
  background: var(--bg-muted);
  color: var(--text-primary);
}

:focus {
  outline: 3px solid rgba(22, 67, 97, 0.25);
  outline-offset: 3px;
}

/* ─────────────────────────────────────────────────────────────────────
   Mobile-First Guardrails
   ─────────────────────────────────────────────────────────────────────
   Applied globally. These rules enforce the DESIGN.md §10 hard rules at
   the stylesheet level so individual components don't have to remember:
   - iOS Safari never auto-zooms on input focus (font-size >= 16px on inputs)
   - No accidental horizontal scroll at the document level
   - Touch-target utility class for any custom interactive element
   - Safe-area padding helper for sticky bottom CTAs (iOS notch/home bar)
   - Honor prefers-reduced-motion at a minimum baseline
   ───────────────────────────────────────────────────────────────────── */

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

html, body {
  overflow-x: hidden;
}

/* Prevent iOS Safari auto-zoom on focus of any text input. All inputs
   render at 16px or larger; smaller visual sizes should be achieved via
   transform: scale() or a design decision, not font-size reduction. */
input:not([type='checkbox']):not([type='radio']):not([type='range']),
textarea,
select {
  font-size: max(16px, 1rem);
}

/* Minimum touch-target utility. Use on any custom button-like element
   (divs with role=button, icon buttons, chip toggles) to meet WCAG 2.5.5
   and the DESIGN.md §10 44px rule. */
.min-tap {
  min-width: 44px;
  min-height: 44px;
}

/* Safe-area padding for sticky bottom bars (checkout CTAs, booking
   confirm). Use with `padding-bottom: env(safe-area-inset-bottom)` or
   apply class `.safe-bottom` to respect iOS home-indicator area. */
.safe-bottom {
  padding-bottom: max(env(safe-area-inset-bottom, 0px), 0px);
}

/* Reduced motion baseline. Individual components may still opt in to
   motion; this kills default CSS animations for users who request less. */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
