@view-transition {
  navigation: auto;
}

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

  /* https://kilianvalkhof.com/2022/css-html/your-css-reset-needs-text-size-adjust-probably/ */
  html {
    -moz-text-size-adjust: none;
    -webkit-text-size-adjust: none;
    text-size-adjust: none;
  }

  body,
  h1,
  h2,
  h3,
  h4,
  p,
  figure,
  blockquote,
  dl,
  dd {
    margin: 0;
  }

  /* https://www.scottohara.me/blog/2019/01/12/lists-and-safari.html */
  [role="list"] {
    list-style: none;
    margin: 0;
    padding: 0;
  }

  body {
    min-block-size: 100vh;
    line-height: 1.6;
  }

  h1,
  h2,
  h3,
  button,
  input,
  label {
    line-height: 1.1;
  }

  h1,
  h2,
  h3,
  h4 {
    text-wrap: balance;
  }

  p,
  li {
    text-wrap: pretty;
  }

  img,
  picture {
    max-inline-size: 100%;
    display: block;
  }

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

@layer custom {
  /* color palette */
  :root {
    --clr-caramel-100: #28180b;
    --clr-caramel-200: #503016;
    --clr-caramel-300: #774822;
    --clr-caramel-400: #9f602d;
    --clr-caramel-500: #c67838;
    --clr-caramel-600: #d29360;
    --clr-caramel-700: #ddae88;
    --clr-caramel-800: #e9c9af;
    --clr-caramel-900: #f4e4d7;
    --clr-blue-100: #020f17;
    --clr-blue-200: #02121b;
    --clr-blue-300: #02141e;
    --clr-blue-400: #031722;
    --clr-blue-500: #031926;
    --clr-blue-600: #1c303c;
    --clr-blue-700: #354751;
    --clr-blue-800: #4f5e67;
    --clr-blue-900: #68757d;
    --clr-greenish-100: #1a1f1b;
    --clr-greenish-200: #333d36;
    --clr-greenish-300: #4d5c50;
    --clr-greenish-400: #667a6b;
    --clr-greenish-500: #839788;
    --clr-greenish-600: #9bab9f;
    --clr-greenish-700: #b4c0b7;
    --clr-greenish-800: #cdd5cf;
    --clr-greenish-900: #e6eae7;
    --clr-red-100: #21060a;
    --clr-red-200: #420c14;
    --clr-red-300: #63111e;
    --clr-red-400: #841728;
    --clr-red-500: #a71d31;
    --clr-red-600: #d92843;
    --clr-red-700: #e35e72;
    --clr-red-800: #ec93a1;
    --clr-red-900: #f6c9d0;
    --clr-green-100: #041106;
    --clr-green-200: #08230c;
    --clr-green-300: #0c3411;
    --clr-green-400: #104617;
    --clr-green-500: #14591d;
    --clr-green-600: #239932;
    --clr-green-700: #3ad24e;
    --clr-green-800: #7ce189;
    --clr-green-900: #bdf0c4;
    /* font families */
    --ff-base: "Fira Sans", sans-serif;
    --ff-accent: "Outfit", sans-serif;
    /* font sizes */
    --fs-300: 0.875rem;
    --fs-400: 1rem;
    --fs-500: 1.125rem;
    --fs-600: 1.25rem;
    --fs-700: 1.5rem;
    --fs-800: 2rem;
    --fs-900: 3.75rem;
    --fs-1000: 3.75rem;
    /* font sizes mobile */
    @media (width > 760px) {
      --fs-500: 1.25rem;
      --fs-600: 1.5rem;
      --fs-700: 2rem;
      --fs-800: 3rem;
      --fs-900: 5rem;
      --fs-1000: 7.5rem;
    }
  }
  :root {
    /* text colors */
    --text-base: var(--clr-greenish-600);
    --text-high-contrast: var(--clr-greenish-900);
    --text-brand: var(--clr-caramel-500);
    --text-brand-light: var(--clr-caramel-700);
    /* background colors */
    --background-clr-extra-dark: var(--clr-blue-300);
    --background-clr-dark: var(--clr-blue-400);
    --background-clr-main: var(--clr-blue-500);
    --background-clr-light: var(--clr-blue-600);
    --background-clr-extra-light: var(--clr-blue-700);

    --bg-accent-dark: var(--clr-green-300);
    --bg-accent-main: var(--clr-green-500);
    --bg-accent-light: var(--clr-green-600);

    /* text sizes */
    --heading-sm: var(--fs-700);
    --heading-reg: var(--fs-800);
    --heading-lg: var(--fs-900);
    --heading-huge: var(--fs-1000);

    --text-sm: var(--fs-300);
    --text-reg: var(--fs-400);
    --text-md: var(--fs-500);
    --text-lg: var(--fs-600);

    /* border radiuses */
    --border-radius-sm: 0.25rem;
    --border-radius-reg: 0.5rem;
    --border-radius-lg: 0.75rem;
  }
}

@layer base {
  html {
    font-family: var(--ff-base);
    line-height: 1.6;
    scroll-padding: 1rem;
  }

  @media (prefers-reduced-motion: no-preference) {
    html {
      scroll-behavior: smooth;
    }
  }

  body {
    font-family: var(--text-base);
    font-size: var(--text-reg);
    color: var(--text-base);
    background-color: var(--background-clr-main);
  }

  h1,
  h2,
  h3,
  h4 {
    color: var(--text-high-contrast);
    font-family: var(--ff-accent);
  }

  h1 {
    font-size: var(--heading-lg);
    font-family: var(--ff-accent);
  }

  a {
    color: var(--text-high-contrast);
  }

  a:hover,
  a:focus-visible {
    color: var(--text-brand-light);
  }

  img {
    border-radius: var(--border-radius-lg);
  }
}

@layer layout {
  .flex-group {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
  }

  .flow > * + * {
    margin-top: var(--flow-space, 1em);
  }

  .grid-flow {
    display: grid;
    gap: 1rem;
  }

  .grid-auto-fit {
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
  }
  .grid-auto-fill {
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr));
  }

  .col-equal {
    display: grid;
    gap: 1rem;

    @media (width > 760px) {
      grid-auto-flow: column;
      grid-auto-columns: 1fr;
    }
  }

  .col-gap-wide {
    gap: 2rem;
  }

  .col-align-center {
    align-items: center;
  }

  .section {
    padding-block: 3.75rem;

    @media (width > 760px) {
      padding-block: 8rem;
    }
  }

  .section--compact {
    padding-block: 4.5rem;
  }

  .wrapper {
    max-width: 1130px;
    margin-inline: auto;
    padding-inline: 1rem;
  }
  .wrapper--wide {
    max-width: 1330px;
  }

  .wrapper--narrow {
    max-width: 720px;
  }
}

@layer components {
  .skiptomain:not(:focus) {
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    height: 1px;
    overflow: hidden;
    position: absolute;
    white-space: nowrap;
    width: 1px;
  }
  .skiptomain {
    background-color: var(--bg-accent-light);
    position: absolute;
    color: var(--text-brand-light);
  }

  .site-header {
    padding-block: 1rem;
    overflow-x: clip;
  }
  .site-header--inner {
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem 1rem;
  }

  [aria-controls="primary-nav"] {
    z-index: 100;
    background: transparent;
    border: 0;
    display: none;
  }

  [aria-controls="primary-nav"] i {
    color: var(--text-high-contrast);
    font-size: var(--text-lg);
  }

  .primary-nav {
    ul {
      display: flex;
      gap: 0.5rem 1rem;
      list-style: none;
      flex-wrap: wrap;
    }

    a {
      text-decoration: none;
    }

    @media (width < 760px) {
      display: none;
      opacity: 0;
      background-color: var(--bg-accent-dark);
      z-index: 10;
      padding: 2rem;
      position: absolute;
      top: 0;
      right: 0;
      font-size: var(--text-md);
      font-weight: 600;
      font-family: var(--ff-accent);
      border-bottom-left-radius: var(--border-radius-lg);
      translate: 100% -100%;
      transition: opacity 0.7s, display 0.7s, translate 0.7s;
      transition-behavior: allow-discrete;
      ul {
        flex-direction: column;
        gap: none;
        li {
          translate: 50% -50%;
          opacity: 0;
          transition: translate 0.5s 0.3s, opacity 0.5s 0.3s;
        }
      }

      li + li {
        margin-block-start: 1rem;
        padding-block-start: 1rem;
        border-top: 1.5px solid var(--bg-accent-main);
      }
    }
  }

  @media (width < 760px) {
    [aria-expanded="true"] ~ .primary-nav {
      display: block;
      opacity: 1;
      translate: 0 0;
      @starting-style {
        display: block;
        opacity: 0;
        translate: 80% -100%;
      }

      li {
        translate: 0 0;
        opacity: 1;
        @starting-style {
          translate: 50% -50%;
        }
      }
    }
    [aria-controls="primary-nav"] {
      display: block;
    }
  }

  /* footer */
  .site-footer {
    text-align: center;
    padding-block: 2rem;
    display: grid;
    gap: 0.5rem 1rem;
    background-color: var(--background-clr-dark);

    a {
      color: var(--text-brand-light);
    }
  }

  .footer-text {
    font-size: var(--text-md);
    font-family: var(--ff-accent);
  }

  /* hero */
  .hero {
    text-align: center;
    font-size: var(--text-lg);
    color: var(--text-high-contrast);
    background-image: url("./assets/hero_bg.webp");
    background-size: cover;
  }
  .hero-title {
    font-size: var(--heading-lg);
    span {
      font-size: var(--heading-huge);
      color: var(--text-brand);
      display: block;
    }
  }
  /* image cards */
  .image-cards {
    --card-title-fs: var(--text-lg);
    --card-title-col: var(--text-brand-light);
    --card-gap: 0.75rem;
    img {
      object-fit: cover;
      height: 300px;
      padding: 3px;
      background-color: var(--background-clr-extra-light);
    }
  }

  .faq-bento {
    --card-title-col: var(--text-high-contrast);

    display: grid;
    gap: 1rem;
    grid-template-areas: "card-one" "card-two" "card-three" "card-four";

    .img {
      height: 100%;
      object-fit: cover;
    }

    @media (width > 600px) {
      grid-template-areas: "card-one card-two" "card-three card-four";
      .card:nth-child(even) {
        img {
          order: 3;
        }
      }
    }

    @media (width > 900px) {
      grid-template-columns: repeat(3, 1fr);
      grid-template-areas: "card-one card-two card-four" "card-three card-three card-four";
    }

    .card:nth-child(1) {
      grid-area: card-one;
    }
    .card:nth-child(2) {
      grid-area: card-two;
    }
    .card:nth-child(3) {
      grid-area: card-three;

      @media (width > 900px) {
        display: grid;
        gap: 1rem;
        grid-template-columns: 1fr 1fr;

        img {
          grid-column: 1/2;
          grid-row: 1/3;
        }
      }
    }
    .card:nth-child(4) {
      grid-area: card-four;
    }
  }

  /* cards */
  .card {
    display: flex;
    flex-direction: column;
    gap: var(--card-gap, 1rem);
    padding: 1rem;
    background-color: var(--background-clr-light);
    border-radius: var(--border-radius-lg);

    img {
      border-radius: var(--border-radius-reg);
    }
  }

  .card-title {
    font-size: var(--card-title-fs, var(--heading-sm));
    color: var(--card-title-col, var(--text-brand));
  }

  .tag-list {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    li {
      padding: 0 0.3rem;
      background-color: var(--tag-bg);
      font-family: var(--ff-accent);
      color: var(--text-high-contrast);
      font-size: var(--text-sm);
      border-radius: var(--border-radius-sm);
    }

    [data-dog="benny"] {
      background-color: var(--clr-caramel-400);
    }
    [data-dog="balou"] {
      background-color: var(--clr-blue-100);
    }
    [data-theme="lazy"] {
      background-color: var(--clr-red-800);
    }
    [data-theme="frolic"] {
      background-color: var(--clr-green-700);
    }
  }

  /* buttons */
  .button {
    text-decoration: none;
    cursor: pointer;
    display: inline-flex;
    padding: 0.5rem 1rem;
    background-color: var(--bg-accent-dark);
    font-family: var(--ff-accent);
    font-size: var(--text-md);
    font-weight: 600;
    border-radius: var(--border-radius-sm);
  }

  .button:hover,
  .button:focus-visible {
    background-color: var(--bg-accent-main);
    color: var(--text-high-contrast);
    border: 0;
  }
  /* selection styling, i copiy/pasted this from mdn. need to read up on that */

  select,
  ::picker(select) {
    appearance: base-select;
  }
  select {
    border: 0;
    background: var(--bg-accent-main);
    padding: 0.5rem 1rem;
    transition: 0.4s;
    color: var(--text-high-contrast);
  }
  select:hover,
  select:focus {
    background: var(--bg-accent-light);
  }
  select::picker-icon {
    color: var(--text-brand);
    transition: 0.4s rotate;
  }
  select:open::picker-icon {
    rotate: 180deg;
  }

  /* select options */
  ::picker(select) {
    border: none;
  }
  option {
    display: flex;
    justify-content: flex-start;
    gap: 20px;
    border: 2px solid var(--bg-accent-dark);
    background: var(--bg-accent-main);
    padding: 0.5rem;
    transition: 0.4s;
    color: var(--text-high-contrast);
  }
  option:first-of-type {
    border-radius: 8px 8px 0 0;
  }

  option:last-of-type {
    border-radius: 0 0 8px 8px;
  }

  option:not(option:last-of-type) {
    border-bottom: none;
  }
  /* option:nth-of-type(odd) {
    background: var(--bg-accent-light);
  } */

  option:hover,
  option:focus {
    background: var(--clr-greenish-700);
  }
  option:checked {
    font-weight: bold;
    color: var(--background-clr-extra-dark);
  }
  option::checkmark {
    order: 1;
    margin-left: auto;
    content: "☑️";
  }
  ::picker(select) {
    opacity: 0;
    transition: all 0.4s allow-discrete;
  }
  ::picker(select):popover-open {
    opacity: 1;
  }
  @starting-style {
    ::picker(select):popover-open {
      opacity: 0;
    }
  }
  ::picker(select) {
    top: calc(anchor(bottom) + 1px);
  }
}

@layer utilities {
  .visually-hidden {
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    height: 1px;
    overflow: hidden;
    position: absolute;
    white-space: nowrap;
    width: 1px;
  }
  /* text colors */
  .text-col-base {
    color: var(--text-base);
  }
  .text-col-high-contrast {
    color: var(--text-high-contrast);
  }
  .text-col-brand {
    color: var(--text-brand);
  }
  .text-col-brand-light {
    color: var(--text-brand-light);
  }
  /* text sizes */
  .heading-sm {
    font-size: var(--heading-lg);
  }
  .heading-reg,
  .section-heading {
    font-size: var(--heading-reg);
  }
  .heading-lg {
    font-size: var(--heading-lg);
  }
  .heading-huge {
    font-size: var(--heading-huge);
  }

  .text-sm {
    font-size: var(--text-sm);
  }
  .text-reg {
    font-size: var(--text-reg);
  }
  .text-md {
    font-size: var(--text-md);
  }
  .text-lg {
    font-size: var(--text-lg);
  }
  /* text alignment */
  .text-center {
    text-align: center;
  }

  /* background colors */
  .bg-col-base {
    background-color: var(--background-clr-main);
  }
  .bg-col-extra-dark {
    background-color: var(--background-clr-extra-dark);
  }
  .bg-col-accent {
    background-color: var(--bg-accent-main);
  }
  .bg-col-accent-dark {
    background-color: var(--bg-accent-dark);
  }

  .no-animation * {
    transition: none !important;
  }

  [hidden] {
    display: none;
  }
}

@keyframes fade-out {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
