/* ==========================================================================
   BookingMoko — GLOBAL BASE  v3.0   (reset, typography, layout helpers)
   Needs: design-tokens.css
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--bm-header-h) + 16px); -webkit-text-size-adjust: 100%; }
body {
    margin: 0;
    font-family: var(--bm-font-body);
    font-size: var(--bm-text-base);
    line-height: var(--bm-leading-body);
    color: var(--bm-ink);
    background: var(--bm-paper);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}
img, svg, video { display: block; max-width: 100%; }
button, input, select, textarea { font: inherit; color: inherit; }
h1, h2, h3, h4 {
    margin: 0 0 var(--bm-space-3);
    font-family: var(--bm-font-display);
    line-height: var(--bm-leading-tight);
    letter-spacing: -.02em;
    text-wrap: balance;
}
h1 { font-size: var(--bm-text-hero); font-weight: 700; }
h2 { font-size: var(--bm-text-3xl); font-weight: 700; }
h3 { font-size: var(--bm-text-xl);  font-weight: 650; line-height: var(--bm-leading-snug); }
h4 { font-size: var(--bm-text-lg);  font-weight: 650; }
p  { margin: 0 0 var(--bm-space-4); text-wrap: pretty; }
a  { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 3px; }
ul, ol { margin: 0; padding: 0; list-style: none; }
::selection { background: var(--bm-accent); color: var(--bm-on-accent); }

/* Keyboard focus — always visible */
:focus-visible { outline: none; box-shadow: var(--bm-focus); border-radius: var(--bm-r-xs); }

/* Layout helpers */
.container { width: min(100% - 2 * var(--bm-gutter), var(--bm-container)); margin-inline: auto; }
.section   { padding-block: var(--bm-section-y); }
.muted-text { color: var(--bm-ink-3); }
.lead { font-size: var(--bm-text-lg); color: var(--bm-ink-2); max-width: 60ch; }
.sr-only {
    position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
    overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.skip-link {
    position: fixed; top: 8px; left: 8px; z-index: 999;
    padding: .6rem 1rem; border-radius: var(--bm-r-sm);
    background: var(--bm-primary); color: var(--bm-on-primary);
    transform: translateY(-200%); transition: transform var(--bm-fast);
}
.skip-link:focus { transform: none; }

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}