/* Lightning Bolts · Brand system v1
   Load tokens.css before components.css. Apply .lb-site to the page wrapper.
   data-lb-theme: crew | snow | camp | river. data-lb-mode: main | trip.
   Theme accents support the core navy/yellow identity; red is decorative only. */

@font-face {
  font-family: "LB DM Sans";
  src: url("assets/fonts/DMSans-Regular.ttf") format("truetype");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "LB DM Sans";
  src: url("assets/fonts/DMSans-SemiBold.ttf") format("truetype");
  font-style: normal;
  font-weight: 600;
  font-display: swap;
}

@font-face {
  font-family: "LB DM Sans";
  src: url("assets/fonts/DMSans-Bold.ttf") format("truetype");
  font-style: normal;
  font-weight: 700;
  font-display: swap;
}

@font-face {
  font-family: "LB Caveat Brush";
  src: url("assets/fonts/CaveatBrush-Regular.ttf") format("truetype");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

:where(.lb-site) {
  /* Core colors. Use ink on yellow and light text on navy. */
  --lb-color-navy: #112c3e;
  --lb-color-ink: #142d3d;
  --lb-color-yellow: #fbd643;
  --lb-color-cream: #f6f3ea;
  --lb-color-paper: #fffef9;
  --lb-color-muted: #526773;
  --lb-color-line: #d7dcd9;
  --lb-color-red: #d5543f;

  /* Theme values also work on nested preview or feature blocks. */
  --lb-theme-soft: var(--lb-color-cream);
  --lb-theme-accent: var(--lb-color-navy);
  --lb-color-background: var(--lb-color-cream);
  --lb-color-text: var(--lb-color-ink);
  --lb-color-link: var(--lb-theme-accent);

  /* The brush face is reserved for trip titles and major section headings. */
  --lb-font-body: "LB DM Sans", "DM Sans", Arial, sans-serif;
  --lb-font-display: "LB Caveat Brush", "Caveat Brush", cursive;
  --lb-font-heading: var(--lb-font-body);
  --lb-heading-weight: 700;
  --lb-heading-tracking: -0.035em;
  --lb-text-xs: 0.75rem;
  --lb-text-sm: 0.875rem;
  --lb-text-base: 1rem;
  --lb-text-lg: 1.125rem;
  --lb-text-xl: 1.25rem;
  --lb-type-h1: clamp(4rem, 8vw, 6.5rem);
  --lb-type-h2: clamp(2.25rem, 4vw, 3rem);
  --lb-type-h3: clamp(1.25rem, 2.5vw, 1.5rem);
  --lb-leading-body: 1.6;
  --lb-leading-heading: 1.08;
  --lb-measure: 65ch;

  /* 4px spacing rhythm; page gutters stay at least 20px. */
  --lb-space-1: 0.25rem;
  --lb-space-2: 0.5rem;
  --lb-space-3: 0.75rem;
  --lb-space-4: 1rem;
  --lb-space-5: 1.25rem;
  --lb-space-6: 1.5rem;
  --lb-space-8: 2rem;
  --lb-space-10: 2.5rem;
  --lb-space-11: 2.75rem;
  --lb-space-12: 3rem;
  --lb-space-16: 4rem;
  --lb-space-18: 4.5rem;
  --lb-space-24: 6rem;
  --lb-wrap: 72.5rem;
  --lb-gutter: 1.25rem;
  --lb-section-space: var(--lb-space-18);
  --lb-grid-gap: var(--lb-space-6);
  --lb-stack-gap: var(--lb-space-4);

  --lb-radius-sm: 0.25rem;
  --lb-radius-card: 0.5rem;
  --lb-radius-pill: 999px;
  --lb-control-height: 2.75rem;
  --lb-border: 1px solid var(--lb-color-line);
  --lb-shadow-card: 0 6px 22px rgb(17 44 62 / 6%);
  --lb-focus-inner: var(--lb-color-paper);
  --lb-focus-outer: var(--lb-color-navy);
  --lb-duration-fast: 150ms;
  --lb-duration-base: 220ms;
  --lb-ease: cubic-bezier(0.2, 0.65, 0.3, 1);
}

:where([data-lb-theme="crew"]) {
  --lb-theme-soft: var(--lb-color-cream);
  --lb-theme-accent: var(--lb-color-navy);
  --lb-color-link: var(--lb-theme-accent);
}

:where([data-lb-theme="snow"]) {
  --lb-theme-soft: #dcebf0;
  --lb-theme-accent: #2d6678;
  --lb-color-link: var(--lb-theme-accent);
}

:where([data-lb-theme="camp"]) {
  --lb-theme-soft: #e6ead8;
  --lb-theme-accent: #3d5547;
  --lb-color-link: var(--lb-theme-accent);
}

:where([data-lb-theme="river"]) {
  --lb-theme-soft: #f4e4ce;
  --lb-theme-accent: #006c70;
  --lb-color-link: var(--lb-theme-accent);
}

:where([data-lb-mode="main"]) {
  --lb-font-heading: var(--lb-font-body);
  --lb-heading-weight: 700;
  --lb-heading-tracking: -0.035em;
}

:where([data-lb-mode="trip"]) {
  --lb-font-heading: var(--lb-font-display);
  --lb-heading-weight: 400;
  --lb-heading-tracking: -0.015em;
}

@media (max-width: 47.99rem) {
  :where(.lb-site) {
    --lb-section-space: var(--lb-space-11);
    --lb-type-h1: clamp(2.75rem, 14vw, 4rem);
    --lb-grid-gap: var(--lb-space-5);
  }
}

@media (prefers-reduced-motion: reduce) {
  :where(.lb-site) {
    --lb-duration-fast: 0ms;
    --lb-duration-base: 0ms;
  }
}
