/* Florida Man Sites — identity refinement v2, October 2026.
 * Portable design foundation. This file defines tokens, not a finished UI.
 * Keep this file beside fonts/ or adjust the two relative font URLs.
 */

@font-face {
  font-family: "Bricolage Grotesque";
  src: url("./fonts/BricolageGrotesque-Display.woff2") format("woff2");
  font-style: normal;
  font-weight: 600 800;
  font-display: swap;
}

@font-face {
  font-family: "Public Sans";
  src: url("./fonts/PublicSans-Roman.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
}

:root {
  /* Core palette. Do not lower opacity on accessible text colors. */
  --fm-atlantic: #173c47;
  --fm-inlet: #147d79;
  --fm-foam: #ddeee9;
  --fm-daylight: #f8fbfa;
  --fm-sunlight: #f5ce72;
  --fm-white: #ffffff;

  /* Error is semantic, outside the six-color brand palette. */
  --fm-error: #a52a35;

  /* Surface and text relationships. */
  --color-background: var(--fm-daylight);
  --color-surface: var(--fm-white);
  --color-surface-soft: var(--fm-foam);
  --color-surface-inverse: var(--fm-atlantic);
  --color-text: var(--fm-atlantic);
  --color-text-secondary: var(--fm-atlantic);
  --color-text-inverse: var(--fm-white);
  --color-link: var(--fm-inlet);
  --color-link-on-soft: var(--fm-atlantic);
  --color-link-on-inverse: var(--fm-sunlight);

  /* White on Inlet is 4.95:1. Atlantic on Sunlight is 7.87:1. */
  --color-action: var(--fm-inlet);
  --color-action-text: var(--fm-white);
  --color-action-hover: var(--fm-atlantic);
  --color-action-on-inverse: var(--fm-sunlight);
  --color-action-on-inverse-text: var(--fm-atlantic);
  --color-border-decorative: var(--fm-foam);
  --color-border-control: var(--fm-inlet);
  --color-error: var(--fm-error);
  --color-selection: var(--fm-sunlight);
  --color-selection-text: var(--fm-atlantic);
  --color-caret: var(--fm-atlantic);

  /* Apply focus using outline or a two-layer box-shadow; never clip it. */
  --focus-ring: 0 0 0 2px var(--fm-white), 0 0 0 5px var(--fm-atlantic);
  --focus-outline-width: 3px;
  --focus-outline-offset: 3px;
  --touch-target-min: 2.75rem;

  --font-display: "Bricolage Grotesque", "Arial", sans-serif;
  --font-body: "Public Sans", "Arial", sans-serif;
  --font-display-settings: "opsz" 48, "wdth" 100;
  --weight-body: 400;
  --weight-strong: 600;
  --weight-display: 800;
  --weight-wordmark: 800;

  --type-small: 0.875rem;
  --type-control: 1rem;
  --type-body: 1.125rem;
  --type-intro: clamp(1.25rem, 1.125rem + 0.4vw, 1.375rem);
  --type-subheading: clamp(1.5rem, 1.25rem + 0.8vw, 1.75rem);
  --type-heading: clamp(2rem, 1.25rem + 2.5vw, 3.25rem);
  --type-display: clamp(2.5rem, 1.25rem + 4.5vw, 5rem);
  --leading-small: 1.5;
  --leading-control: 1.4;
  --leading-body: 1.6;
  --leading-intro: 1.5;
  --leading-subheading: 1.2;
  --leading-heading: 1.1;
  --leading-display: 1.02;
  --tracking-display: -0.025em;
  --tracking-body: normal;
  --measure-body: 66ch;
  --measure-intro: 48ch;
  --underline-offset: 0.18em;
  --underline-thickness: 0.08em;

  /* A 4px base at the browser's default 16px root size. */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-20: 5rem;
  --space-24: 6rem;
  --space-28: 7rem;
  --container-max: 75rem;
  --page-gutter: clamp(1.25rem, 4vw, 4rem);
  --section-space: clamp(4rem, 7vw, 7rem);
  --radius-control: 0.375rem;
  --radius-panel: 1rem;
  --border-width: 1px;

  /* Optional floating element only. Normal content uses open spacing. */
  --shadow-floating: 0 0.75rem 2rem rgb(23 60 71 / 0.12);
  --duration-fast: 160ms;
  --duration-normal: 240ms;
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --duration-fast: 0ms;
    --duration-normal: 0ms;
  }
}
