/*
 * GO! Base Styles
 * Font-face declarations, box-model reset, body defaults, and icon utility.
 * Requires go-design-tokens.css to be loaded first.
 */

/* ==========================================================================
   @font-face: Flanders Art Sans
   Self-hosted WOFF2 + WOFF fallback, font-display: swap for performance.
   Available weights: Light (300), Regular (400), Medium (500), Bold (700).
   ========================================================================== */

@font-face {
  font-family: "Flanders Art Sans";
  src: url("../fonts/FlandersArtSans-Light.woff2") format("woff2"),
       url("../fonts/FlandersArtSans-Light.woff") format("woff");
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Flanders Art Sans";
  src: url("../fonts/FlandersArtSans-Regular.woff2") format("woff2"),
       url("../fonts/FlandersArtSans-Regular.woff") format("woff");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Flanders Art Sans";
  src: url("../fonts/FlandersArtSans-Medium.woff2") format("woff2"),
       url("../fonts/FlandersArtSans-Medium.woff") format("woff");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Flanders Art Sans";
  src: url("../fonts/FlandersArtSans-Bold.woff2") format("woff2"),
       url("../fonts/FlandersArtSans-Bold.woff") format("woff");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* ==========================================================================
   Base styles
   ========================================================================== */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  font-size: var(--go-font-size-body);
  line-height: var(--go-line-height-body);
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  font-family: var(--go-font-family);
  font-size: var(--go-font-size-body);
  font-weight: 400;
  line-height: var(--go-line-height-body);
  color: var(--go-text-primary);
  background-color: var(--go-background);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* ==========================================================================
   Icon utility (CSS mask technique)
   ========================================================================== */

.c-icon {
  display: inline-block;
  width: 20px;
  height: 20px;
  background: currentColor;
  mask-image: var(--icon);
  -webkit-mask-image: var(--icon);
  mask-size: contain;
  -webkit-mask-size: contain;
  mask-repeat: no-repeat;
  -webkit-mask-repeat: no-repeat;
}

.c-icon--xs {
  width: 16px;
  height: 16px;
}

/* ==========================================================================
   Progress bar (indeterminate)
   ========================================================================== */

.go-progress-indeterminate {
  height: 3px;
  background: var(--go-surface-alt);
  overflow: hidden;
  border-radius: 2px;
}

.go-progress-indeterminate::after {
  content: '';
  display: block;
  height: 100%;
  width: 40%;
  background: var(--go-magenta);
  border-radius: 2px;
  animation: go-progress-slide 1.5s infinite ease-in-out;
}

@keyframes go-progress-slide {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(350%); }
}
