:root {
  --font-family-heading: "Google Sans Flex", system-ui, -apple-system, sans-serif;
  --font-family-body: "Google Sans Flex", system-ui, -apple-system, sans-serif;
  --font-family-label: "Google Sans Flex", system-ui, -apple-system, sans-serif;
}

html {
  scrollbar-gutter: stable;
  scrollbar-width: thin;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}

*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  -webkit-tap-highlight-color: transparent;
}

body {
  margin: 0;
  background-color: #ffffff;
  color: #121317;
  font-family: var(--font-family-body);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  min-height: 100vh;
}

/* Base Resets */
img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
}

input,
button,
textarea,
select {
  font: inherit;
  color: inherit;
}

ul,
ol {
  list-style: none;
  margin: 0;
  padding: 0;
}

a {
  color: inherit;
  text-decoration: none;
}

p,
h1,
h2,
h3,
h4,
h5,
h6 {
  overflow-wrap: break-word;
  text-wrap: pretty;
}

/* Headings Baseline */
.display,
h1, .h1,
h2, .h2,
h3, .h3,
h4, .h4,
h5, .h5,
h6, .h6 {
  font-family: var(--font-family-heading);
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: -0.04em;
}

/* Display */
.display { font-size: 3rem; }
@media (min-width: 768px) { .display { font-size: 3.25rem; } }
@media (min-width: 1024px) { .display { font-size: 3.5rem; } }

/* H1 */
h1, .h1 { font-size: 2.5rem; }
@media (min-width: 768px) { h1, .h1 { font-size: 2.75rem; } }
@media (min-width: 1024px) { h1, .h1 { font-size: 3rem; } }

/* H2 */
h2, .h2 { font-size: 2.25rem; }
@media (min-width: 768px) { h2, .h2 { font-size: 2.5rem; } }
@media (min-width: 1024px) { h2, .h2 { font-size: 2.75rem; } }

/* H3 */
h3, .h3 { font-size: 2rem; }
@media (min-width: 768px) { h3, .h3 { font-size: 2.25rem; } }
@media (min-width: 1024px) { h3, .h3 { font-size: 2.5rem; } }

/* H4 */
h4, .h4 { font-size: 1.75rem; }
@media (min-width: 768px) { h4, .h4 { font-size: 2rem; } }
@media (min-width: 1024px) { h4, .h4 { font-size: 2.25rem; } }

/* H5 */
h5, .h5 { font-size: 1.5rem; }
@media (min-width: 768px) { h5, .h5 { font-size: 1.75rem; } }
@media (min-width: 1024px) { h5, .h5 { font-size: 2rem; } }

/* H6 */
h6, .h6 { font-size: 1.25rem; }
@media (min-width: 768px) { h6, .h6 { font-size: 1.5rem; } }
@media (min-width: 1024px) { h6, .h6 { font-size: 1.75rem; } }

/* Body Typography */
.body-l,
.body-m,
.body-s {
  font-family: var(--font-family-body);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: -0.01em;
}

.body-l { font-size: 1rem; }
.body-m { font-size: 0.875rem; }
.body-s { font-size: 0.75rem; }

/* Labels & UI Text */
.label-l,
.label-m,
.label-s,
.label-xs {
  font-family: var(--font-family-label);
  font-weight: 400;
  letter-spacing: -0.02em;
}

.label-l { font-size: 1.125rem; line-height: 1.25rem; }
.label-m { font-size: 1rem; line-height: 1.25rem; }
.label-s { font-size: 0.875rem; line-height: 1.125rem; }
.label-xs { font-size: 0.75rem; line-height: 1rem; }

list-card {
  display: block;
  width: 100%;
}

@keyframes shimmer {
  0% {
    background-position: -200px 0;
  }
  100% {
    background-position: 200px 0;
  }
}
