
/*
  Global CSS custom properties.
*/

/* stylelint-disable */

:root {
  --font-sans: "metropolis", sans-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.6875rem;
  --line-height-s: 1.125rem;

  /* Layout helpers. */
  --max-width: 84.375rem;
  --max-bg-color: 98.125rem; /* Width to which the background color extends to. */
  --sp: 1.125rem;
  --content-left: 5.625rem;
  --site-header-height-wide: var(--sp10);
  --container-padding: var(--sp);

  /**
   * 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));

  /* 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 number roughly corresponds to its luminosity.
   */
  --color--gray-hue: 201;
  --color--gray-saturation: 15%;
  --color--gray-5: hsl(var(--color--gray-hue), var(--color--gray-saturation), 5%); /* Black */
  --color--gray-10: hsl(var(--color--gray-hue), var(--color--gray-saturation), 11%);
  --color--gray-20: hsl(var(--color--gray-hue), var(--color--gray-saturation), 20%); /* Black 2 */
  --color--gray-45: hsl(var(--color--gray-hue), var(--color--gray-saturation), 44%); /* Gray Dark */
  --color--gray-60: hsl(var(--color--gray-hue), var(--color--gray-saturation), 57%); /* Gray medium */
  --color--gray-65: hsl(var(--color--gray-hue), var(--color--gray-saturation), 63%); /* Black 4 */
  --color--gray-70: hsl(var(--color--gray-hue), var(--color--gray-saturation), 72%); /* Gray medium 2 */
  --color--gray-90: hsl(var(--color--gray-hue), var(--color--gray-saturation), 88%); /* Gray light */
  --color--gray-95: hsl(var(--color--gray-hue), var(--color--gray-saturation), 93%); /* Gray light 1 */
  --color--gray-100: hsl(var(--color--gray-hue), var(--color--gray-saturation), 97%); /* Gray light 2 */

  /**
   * Primary colors.
   *
   * Color number roughly corresponds to its luminosity.
   */
  --color--primary-hue: 202;
  --color--primary-saturation: 79%;
  --color--primary-lightness: 50;
  --color--primary-30: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * (var(--color--primary-lightness) - (0.36 * var(--color--primary-lightness)))));
  --color--primary-40: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * (var(--color--primary-lightness) - (0.24 * var(--color--primary-lightness))))); /* Blue dark */
  --color--primary-50: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * var(--color--primary-lightness))); /* Blue medium */
  --color--primary-60: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * (var(--color--primary-lightness) + (0.24 * (100 - var(--color--primary-lightness)))))); /* Blue bright */
  --color--primary-80: hsl(var(--color--primary-hue), var(--color--primary-saturation), calc(1% * (var(--color--primary-lightness) + (0.85 * (100 - var(--color--primary-lightness)))))); /* Blue very bright */

  /**
   * 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; /* Black */
  --color--white: #fff; /* White */
  --color--red: #e33f1e; /* Red */
  --color--gold: #fdca40; /* Gold */
  --color--green: #3fa21c; /* Green */

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

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

  /* Border radius */
  --border-radius: 0.1875rem; /* Inline padding on .container elements. */
}

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

/* Width of a grid column. */

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

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

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

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

/* ==========================================================================
   Save Mo Lives brand tokens.
   Static fallbacks; admin-configured values from theme settings are
   injected as a higher-weight :root block by save_mo_lives.theme.
   ========================================================================== */

:root {
  /* Primary palette. */
  --sml-black:        #000000;
  --sml-orange-light: #ff836b;
  --sml-orange:       #ef4727;
  --sml-orange-mid:   #d24917;
  --sml-orange-dark:  #ac3a10;
  --sml-white:        #ffffff;
  --sml-gray-light:   #f3f3f3;
  --sml-gray:         #ececec;
  --sml-gray-dark:    #656565;
  --sml-gray-disabled: #d9d9d9;

  /* Secondary palette. */
  --sml-purple: #6b52a2;
  --sml-green:  #04a952;
  --sml-yellow: #fdd900;

  /* Neutral shades (off-palette; not admin-editable). */
  --sml-gray-mid:   #6b6b6b;
  --sml-gray-300:   #c4c4c4;
  --sml-near-black: #2a2a2a;

  /* State / semantic colors. */
  --sml-error:      #b3261e;
  --sml-warning-bg: #fff79f;

  /* Blue family (used in alerts). */
  --sml-blue:      #5b8db8;
  --sml-blue-dark: #004773;
  --sml-blue-bg:   #f1f9fe;

  /* Decorative gradient accent stops. */
  --sml-accent-magenta: #9b3d62;
  --sml-accent-purple2: #8a3a8e;
  --sml-accent-teal:    #2bb0d6;
  --sml-accent-teal-dk: #1f8fb8;

  /* Semantic aliases. */
  --sml-primary:    var(--sml-orange);
  --sml-text:       var(--sml-black);
  --sml-link:       var(--sml-black);
  --sml-link-hover: var(--sml-purple);
  --sml-border:     #d8d8d8;

  /* Typography. */
  --sml-font-body:    'Source Sans 3', 'Source Sans Pro', Arial, sans-serif;
  --sml-font-heading: 'Source Sans 3', 'Source Sans Pro', Arial, sans-serif;
  --sml-font-display: 'Alkaline', 'Caveat', cursive;

  /* Code Pro family (self-hosted licensed fonts, Archivo as fallback). */
  --sml-font-code-pro:
    'Code Pro LC', 'Archivo', 'Source Sans 3', Arial, sans-serif;
  --sml-font-code-pro-bold:
    'Code Pro Bold LC', 'Archivo', 'Source Sans 3', Arial, sans-serif;
  --sml-font-code-pro-black:
    'Code Pro Black LC', 'Archivo', 'Source Sans 3', Arial, sans-serif;
  --sml-font-display-heading: var(--sml-font-code-pro-black);
  --sml-font-jost:   'Jost', 'Source Sans 3', Arial, sans-serif;
  --sml-font-lexend: 'Lexend Deca', 'Source Sans 3', Arial, sans-serif;

  /* Layout. */
  --sml-container-max: 1416px;
  --sml-shell-max:     1200px;
  --sml-shell-max-xxl: 1732px;
  --sml-container-pad: 1.5rem;
  --sml-header-top-bg: var(--sml-orange);
  --sml-nav-height:    64px;
}

@media (min-width: 1500px) {
  :root {
    --sml-shell-max:     var(--sml-shell-max-xxl);
  }
}

/*
 * Neutralize Olivero's decorative variables that drive the body background
 * pattern and primary accent color so the SaveMoLives palette wins.
 */
.savemolives,
body {
  --color--primary-50:         var(--sml-orange);
  --color--primary-40:         var(--sml-orange-dark);
  --color--primary-60:         var(--sml-orange-light);
  --color-text-primary-medium: var(--sml-black);
  --color-text-primary-loud:   var(--sml-purple);
  --color-text-neutral-loud:   var(--sml-black);
}
