/**
 * @file
 * Global CSS custom properties.
 */

:root {
  --font-sans: "metropolis", sans-serif;
  --font-serif: "Lora", "georgia", serif;

  /* Typography helpers. */
  --font-size-base: 1rem;
  --font-size-l: 1.125rem;
  --font-size-s: 0.875rem;
  --font-size-xs: 0.8125rem;
  --font-size-xxs: 0.75rem;
  --line-height-base: 1.5;
  --line-height-s: 1.25;

  /* Layout helpers. */
  --max-width: 85rem;
  --sp: 1rem;
  --site-header-height-wide: var(--sp6);
  --container-padding: var(--sp); /* Inline padding on .container elements. */

  @media (min-width: 75rem) {
    --container-padding: var(--sp2);
  }

  /**
   * Grid helpers.
   *
   * These variables help authors apply widths and negative margins to break items out of
   * the grid, while still conforming to the larger grid system.
   */
  --scrollbar-width: 0px; /* Unit must be specified here for calc() to work properly.*/
  --grid-col-count: 6;
  --grid-gap: var(--sp);
  --grid-gap-count: calc(var(--grid-col-count) - 1); /* Count of grid-gaps. */
  --grid-full-width: calc(100vw - var(--sp2) - var(--scrollbar-width)); /* Width of the entire grid. */
  --grid-col-width: calc((var(--grid-full-width) - (var(--grid-gap-count) * var(--grid-gap))) / var(--grid-col-count)); /* Width of a grid column. */

  @media (min-width: 43.75rem) {
    --grid-col-count: 12;
    --grid-gap: var(--sp2);
  }

  @media (min-width: 62.5rem) {
    --scrollbar-width: 0.9375rem; /* Approximate width of a scrollbar. Doesn't have to be perfect. */
  }

  @media (min-width: 75rem) {
    --grid-full-width: calc(100vw - var(--scrollbar-width) - var(--sp4));
  }

  @media (min-width: 85rem) {
    --grid-full-width: calc(var(--max-width) - var(--sp4));
  }

  /* Layout helpers */
  --sp0-25: calc(0.25 * var(--sp));
  --sp0-5: calc(0.5 * var(--sp));
  --sp0-75: calc(0.75 * var(--sp));
  --sp1: calc(1 * var(--sp));
  --sp1-5: calc(1.5 * var(--sp));
  --sp2: calc(2 * var(--sp));
  --sp2-5: calc(2.5 * var(--sp));
  --sp3: calc(3 * var(--sp));
  --sp3-5: calc(3.5 * var(--sp));
  --sp4: calc(4 * var(--sp));
  --sp4-5: calc(4.5 * var(--sp));
  --sp5: calc(5 * var(--sp));
  --sp6: calc(6 * var(--sp));
  --sp7: calc(7 * var(--sp));
  --sp8: calc(8 * var(--sp));
  --sp9: calc(9 * var(--sp));
  --sp10: calc(10 * var(--sp));
  --sp11: calc(11 * var(--sp));
  --sp12: calc(12 * var(--sp));
  --sp13: calc(13 * var(--sp));

  /**
   * Gray colors.
   */
  --color--gray-5: hsl(201, 15%, 5%);
  --color--gray-10: hsl(201, 15%, 11%);
  --color--gray-20: hsl(201, 15%, 20%);
  --color--gray-45: hsl(201, 15%, 44%);
  --color--gray-60: hsl(201, 15%, 57%);
  --color--gray-65: hsl(201, 15%, 63%);
  --color--gray-70: hsl(201, 15%, 72%);
  --color--gray-90: hsl(201, 15%, 88%);
  --color--gray-95: hsl(201, 15%, 93%);
  --color--gray-100: hsl(201, 15%, 97%);

  /**
   * Primary colors.
  */
  --color--primary-30: hsl(202, 79%, 32%);
  --color--primary-40: hsl(202, 79%, 38%);
  --color--primary-50: hsl(202, 79%, 50%);
  --color--primary-60: hsl(202, 79%, 62%);
  --color--primary-80: hsl(202, 79%, 92.5%);

  /**
   * Semantic colors shared by light and dark color schemes.
   */
  --color-surface-body: transparent;
  --color-surface-page: var(--color--white);
  --color-surface: var(--color--white);
  --color-surface-soft: var(--color--gray-100);
  --color-surface-medium: var(--color--gray-95);
  --color-surface-strong: var(--color--gray-45);
  --color-surface-chip: var(--color--gray-90);
  --color-surface-inverse: var(--color--gray-5);
  --color-surface-inverse-soft: var(--color--gray-10);
  --color-surface-transparent: rgb(255 255 255 / 0%);
  --color-border: var(--color--gray-90);
  --color-border-subtle: var(--color--gray-95);
  --color-border-strong: var(--color--gray-60);
  --color-border-interactive: var(--color--gray-70);
  --color-border-heavy: var(--color--gray-45);
  --color-border-table: var(--color--gray-65);
  --color-shadow: rgb(0 0 0 / 8%);
  --color-shadow-heavy: rgb(0 0 0 / 10%);
  --color-text-inverse: var(--color--white);
  --color-text-inverse-soft: var(--color--gray-65);
  --color-text-disabled: var(--color--gray-60);
  --color-text-disabled-button: var(--color--gray-90);
  --color-scheme-toggle-color: var(--color--primary-40);
  --color-scheme-toggle-border: var(--color--primary-80);
  --color-scheme-toggle-hover-color: var(--color--primary-30);
  --color-scheme-toggle-hover-background: var(--color--primary-80);

  /**
   * Variables specific to text.
   */
  --color-text-neutral-soft: var(--color--gray-45);
  --color-text-neutral-medium: var(--color--gray-20);
  --color-text-neutral-loud: var(--color--gray-5);

  --color-text-primary-medium: var(--color--primary-40);
  --color-text-primary-loud: var(--color--primary-30);

  /**
   * Named Colors.
   */
  --color--black: #000;
  --color--white: #fff;
  --color--red: #e33f1e;
  --color--gold: #fdca40;
  --color--green: #3fa21c;

  /* Header */
  --header-height-wide-when-fixed: var(--sp6);

  /* Width of slide out navigation */
  --mobile-nav-width: 31.25rem;

  /* Border radius */
  --border-radius: 0.1875rem;
}

/**
 * Dark color scheme values for Olivero's semantic color properties.
 */
html[data-theme="dark"] {
  color-scheme: dark;

  --color-surface-body: var(--color-surface-page);
  --color-surface-page: hsl(201, 15%, 8%);
  --color-surface: hsl(201, 15%, 12%);
  --color-surface-soft: hsl(201, 15%, 17%);
  --color-surface-medium: hsl(201, 15%, 22%);
  --color-surface-strong: hsl(201, 15%, 31%);
  --color-surface-chip: hsl(201, 15%, 22%);
  --color-surface-transparent: hsl(201 15% 8% / 0%);
  --color-border: hsl(201, 15%, 31%);
  --color-border-subtle: hsl(201, 15%, 24%);
  --color-border-strong: hsl(201, 15%, 44%);
  --color-border-interactive: hsl(201, 15%, 57%);
  --color-border-heavy: hsl(201, 15%, 44%);
  --color-border-table: hsl(201, 15%, 44%);
  --color-shadow: rgb(0 0 0 / 35%);
  --color-shadow-heavy: rgb(0 0 0 / 45%);
  --color-text-neutral-soft: hsl(201, 15%, 72%);
  --color-text-neutral-medium: hsl(201, 15%, 88%);
  --color-text-neutral-loud: var(--color-text-inverse);
  --color-text-primary-medium: var(--color--primary-60);
  --color-text-primary-loud: var(--color--primary-80);
  --color-text-disabled: hsl(201, 15%, 57%);
  --color-text-disabled-button: hsl(201, 15%, 57%);
  --color-scheme-toggle-color: var(--color--primary-60);
  --color-scheme-toggle-border: var(--color-border);
  --color-scheme-toggle-hover-color: var(--color-text-inverse);
  --color-scheme-toggle-hover-background: var(--color-surface-medium);
  --form-element-select-icon: url("data:image/svg+xml,%3csvg width='18' height='11' viewBox='0 0 18 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M18 1.49699C18 1.35271 17.9279 1.19038 17.8196 1.08216L16.9178 0.18036C16.8096 0.0721439 16.6473 0 16.503 0C16.3587 0 16.1964 0.0721439 16.0882 0.18036L9 7.26854L1.91182 0.18036C1.80361 0.0721439 1.64128 0 1.49699 0C1.33467 0 1.19038 0.0721439 1.08216L0.180361 1.08216C0.0721442 1.19038 0 1.35271 0 1.49699C0 1.64128 0.0721442 1.80361 0.180361 1.91182L8.58517 10.3166C8.69339 10.4248 8.85571 10.497 9 10.497C9.14429 10.497 9.30661 10.4248 9.41483 10.3166L17.8196 1.91182C17.9279 1.80361 18 1.64128 18 1.49699Z' fill='%23B9C3C9'/%3e%3c/svg%3e");
}

@media (forced-colors: active) {
  html[data-theme="dark"] {
    color-scheme: light dark;
  }
}
