/* stylelint-disable no-descending-specificity */

/*
 * Copyright 2020 Adobe. All rights reserved.
 * This file is licensed to you under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License. You may obtain a copy
 * of the License at http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under
 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
 * OF ANY KIND, either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */

:root {
  /* colors */
  --light-color: #f8f8f8;
  --light-gray: #f8f9fa;
  --dark-gray: #666663;
  --text-color: #171714;
  --text-color-light: #fff;
  --soft-gray: #DBDBD6;
  --soft-white: #FCFCFA;
  --medium-gray: #DADADA;
  --very-light-gray: #fcfcfc;
  --black-olive: #171714;
  --pure-white: #fff;
  --pure-black: #000;
  --primary-black: #171714;
  --secondary-brown: #e8e8e0;
  --credit-violet: #14A1C8;
  --credit-indigo: #2b4361;
  --credit-iconography-blue: #40ABDE;
  --tertiary-indigo: #3d5470;
  --validation-error: #ea1010;
  --calculator-input-color: #7d7d78;

  /* link text color */
  --link-text-color: oklch(50.38% 0.0907 223.2deg); /* #0D6F8A - sky-blue-600 */
  --link-text-color-hover: oklch(31.69% 0.0532 220.9deg); /* #083845 - sky-blue-800 */
  --link-text-color-visited: oklch(31.69% 0.0532 220.9deg);
  --link-text-color-light: oklch(82% 0.09 264deg);
  --link-text-color-light-hover: oklch(92% 0.09 264deg);
  --link-text-color-light-visited: oklch(92% 0.09 264deg);

  /* buttons */
  --btn-primary-bg: oklch(83% 0.17 81.97deg / 100%);
  --btn-primary-bg-hover: oklch(73% 0.14 81.97deg);
  --btn-primary-blue-bg: oklch(92% 0.05 217deg);
  --btn-primary-blue-bg-hover: oklch(88% 0.1 217deg);
  --btn-secondary-border: oklch(38% 0.06 254.57deg);
  --btn-secondary-border-hover: oklch(27% 0.05 238.22deg);

  /* borders */
  --bs-border-color: #dee2e6;
  --bs-border-color-dotted: #D9D9D9;

  /* fonts */
  --body-font-family: 'Visby Regular', visby-regular-fallback, sans-serif;
  --body-demi-bold: 'Visby DemiBold', visby-demibold-fallback, sans-serif;
  --heading-font-family: 'Acceptance Bold', acceptance-bold-fallback, sans-serif;
  --ff-acceptance-demi-bold: 'Acceptance DemiBold', acceptance-demi-bold-fallback, sans-serif;
  --ff-acceptance-extra-bold: 'Acceptance ExtraBold', acceptance-extrabold-fallback, sans-serif;
  --ff-acceptance-medium: 'Acceptance Medium', acceptance-medium-normal-400-fallback, sans-serif;
  --ff-acceptance-regular: 'Acceptance Regular', acceptance-regular-fallback, sans-serif;
  --ff-arial: 'Arial', sans-serif;

  /* body sizes */
  --body-font-size-m: 16px;
  --body-font-size-s: 10px;

  /* heading sizes */
  --heading-font-size-xxl: 55px;
  --heading-font-size-xl: 48px;
  --heading-font-size-l: 32px;
  --heading-font-size-m: 22px;
  --heading-font-size-s: 20px;
  --heading-font-size-xs: 18px;
    
  /* containers */
  --container-width: 100%;

  /* gaps */
  --gap-xs: 12px;
  --gap-sm: 16px;
  --gap-md: 24px;
  --gap-lg: 32px;
  --gap-xl: 48px;

  /* header height */
  --header-height: 52px;
}

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

body {
  background-color: var(--background-color);
  color: var(--text-color);
  display: none;
  font-family: var(--body-font-family);
  font-size: var(--body-font-size-m);
  line-height: 1.6;
  margin: 0;
  overflow-x: hidden;
}

body.appear {
  display: block;
}

picture {
  line-height: 0;
  display: block;
}

img {
  border-style: none;
  height: auto;
  max-width: 100%;
  width: auto;
}

header .header,
footer .footer {
  visibility: hidden;
}

header .header[data-block-status="loaded"],
footer .footer[data-block-status="loaded"] {
  visibility: visible;
}

main img {
  height: auto;
  max-width: 100%;
  width: auto;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--heading-font-family);
  line-height: 1.2;
  margin-bottom: 0.75rem;
  margin-top: 0;

  b, strong {
    font-family: var(--heading-font-family);
  }
}

h1 {
  font-size: var(--heading-font-size-xxl);
  line-height: 1.1;
}

h2 {
  font-size: var(--heading-font-size-xl);
}

h3 {
  font-family: var(--ff-acceptance-medium);
  font-size: var(--heading-font-size-l);
  font-weight: 400;

  b, strong {
    font-family: var(--ff-acceptance-demi-bold);
    font-weight: 400;
  }
}

h4 {
  font-size: var(--heading-font-size-m);
}

h5 {
  color: var(--credit-indigo);
  font-family: var(--ff-acceptance-regular);
  font-size: var(--heading-font-size-s);
  font-weight: 400;
  margin-bottom: 12px;

  b, strong {
    font-family: var(--ff-acceptance-demi-bold);
  }
}

h6 {
  font-size: var(--heading-font-size-xs); 
}

ul, ol {
  li {  margin-bottom: 1rem; }
}

b, strong {
  font-family: var(--body-demi-bold);
  font-weight: 700;
}

dl,
ol,
ul,
pre,
blockquote {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}

p {
  font-size: var(--body-font-size-m);
  line-height: 1.5;
  margin-top: 0.75em;
  margin-bottom: 0.75em;
  overflow-wrap: break-word;
}

.center {
  text-align: center;
}

code,
pre {
  font-size: var(--body-font-size-s);
}

pre {
  background-color: var(--light-color);
  border-radius: 8px;
  overflow-x: auto;
  padding: 16px;
  white-space: pre;
}

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

/* icons */
.icon {
  display: inline-block;
  height: 24px;
  width: 24px;

  img {
    height: 100%;
    width: 100%;
  }

  &:first-child { 
    margin-inline-end: .5rem;
  }
}

/* stylelint-disable-next-line no-duplicate-selectors */
h1, h2, h3, h4, h5, h6 {
  > .icon:first-child { 
    vertical-align: text-top;
  }
}

p > .icon:first-child {
  vertical-align: text-bottom;
  
  img { margin-top: 2px; }
}

.big-icons .icon {
  width: auto;
  height: auto;
  min-width: 25px;
}

/* Lists */
.ca-list ol {
  --number-size: 27px;

  counter-reset: ca-counter;
  list-style: none;
  margin-inline-start: var(--number-size);
  padding-inline-start: .75rem;
  position: relative;

  li {  counter-increment: ca-counter; }
  
  li::before {
      background: var(--credit-indigo);
      border-radius: 50%;
      color: white;
      content: counter(ca-counter);
      font-family: var(--ff-acceptance-demi-bold);
      font-size: 12px;
      height: var(--number-size);
      left: calc(var(--number-size) * -1);
      line-height: var(--number-size);
      position: absolute;
      text-align: center;
      width: var(--number-size);
  }
}

/* links */
a {
  color: var(--link-text-color);
  font-weight: 700;
  text-decoration: none;
}

a:hover,
a:focus,
a:active {
  color: var(--link-text-color-hover);
  text-decoration: underline;
}

a:visited {
  color: var(--link-text-color-visited);
}

/* Light Text */
.light-text {
  --text-color: var(--text-color-light);

  color: var(--text-color);

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

  a:hover,
  a:focus,
  a:active {
      color: var(--link-text-color-light-hover);
  }

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

/* buttons */
a.button,
button {
  display: inline-block;
  max-width: 100%;
  cursor: pointer;
  text-align: center;
  justify-content: center;
  letter-spacing: .4px;
  font-size: 12px;
  line-height: 20px;
  text-transform: uppercase;
  font-family: var(--heading-font-family);
  text-decoration: none;
  white-space: nowrap;
}

a.button:hover,
a.button:focus,
button:hover,
button:focus {
  background-color: var(--btn-primary-bg-hover);
  color: var(--text-color);
}

button:disabled,
button:disabled:hover {
  background-color: var(--light-color);
  cursor: unset;
}

a.button.primary, 
.btn.btn-primary {
  background-color: var(--btn-primary-bg);
  color: var(--text-color);
  border: 1px solid var(--btn-primary-bg);
  padding: .5rem 1.5rem;
  border-radius: .375rem;
  transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out
}

a.button.primary:focus,
button.primary:focus,
a.button.primary:hover,
button.primary:hover {
  background-color: var(--btn-primary-bg-hover);
  border-color: var(--btn-primary-bg-hover);
  color: var(--pure-black);
}

a.button.primary.blue {
  background-color: var(--btn-primary-blue-bg);
  border-color: var(--btn-primary-blue-bg);
}

a.button.primary.blue:focus,
button.primary.blue:focus,
a.button.primary.blue:hover,
button.primary.blue:hover {
  background-color: var(--btn-primary-blue-bg-hover);
  border-color: var(--btn-primary-blue-bg-hover);
}

a.button.secondary,
button.secondary {
  border: 2px solid var(--btn-secondary-border);
  border-radius: 19px;
  background-color: var(--very-light-gray);
  color: var(--btn-secondary-border);
  padding: .3rem 2rem;
  transition: box-shadow 0.2s ease-in-out, color 0.2s ease-in-out; /* Add transition for smooth effect */
}

a.button.secondary:focus,
button.secondary:focus,
a.button.secondary:hover,
button.secondary:hover {
  box-shadow: inset 0 0 0 1px var(--btn-secondary-border-hover); /* Simulate border increase */
  color: var(--btn-secondary-border-hover);
}

/* Buttons Container */
.center .button-container, .button-center .button-container {
  justify-content: center;
}

.button-container {
  display: flex;
  flex-flow: row wrap;
  gap: .75rem;
}

.buttons-container {
  display: flex;
  flex-flow: row wrap;
  justify-content: center;
}

.buttons-container a.button {
  margin: 5px;
}

.section > .default-content-wrapper {
  padding: 0 1rem;

  h2:not(:first-of-type), h3, h4 {
    margin-top: 3rem;
  }
}

.block .background .tablet-only,
.block .background .desktop-only {
    display: none;
}

/* sections */
main > .section:first-of-type {
  margin-top: 0;
}

main > .section-outer {
  overflow: hidden;
}

main > .section-outer:has(.overflow-visible) {
  overflow: visible;
}

main > .section-outer > .section,
footer .section-outer > .section,
main.error .section-outer .section:not(.marquee-container),
.block .container {
  max-width: 100%;
  margin: 0 auto;
  padding: 1.5rem 1rem;
}

main > .section-outer > .section.width-100 {
  max-width: 100%;
}

main > .section-outer > .section.width-75 > div {
  width: 75%;
}

/* section & block spacing */
main > .section-outer > .section.spacing-0 {
  padding-top: 0;
  padding-bottom: 0;
}

main > .section-outer > .section.spacing-1,
.block.spacing-1 {
  padding-top: 1rem;
  padding-bottom: 1rem;
}

main > .section-outer > .section.spacing-2,
.block.spacing-2  {
  padding-top: 2rem;
  padding-bottom: 2rem;
}

main > .section-outer > .section.spacing-3,
.block.spacing-3  {
  padding-top: 3rem;
  padding-bottom: 3rem;
}

main > .section-outer > .section.spacing-4,
.block.spacing-4  {
  padding-top: 4rem;
  padding-bottom: 4rem;
}

main > .section-outer:has(.section.light-shadow) {
    box-shadow:0 0 18px #0000004d ;
}

main > .section-outer:has(.section.light-bottom-shadow)::after,
main > .section-outer:has(.section.bottom-light-shadow)::after {
    content: ' ';
    display: block;
    height: 2px;
    width: 100%;
    box-shadow: #00000017 0 2px 50px, #00000017 0 4px 2px, #00000017 0 8px 4px, #00000017 0 16px 8px, #00000017 0 32px 16px;
}

main > .section-outer:has(.section.light-top-shadow)::before,
main > .section-outer:has(.section.top-light-shadow)::before {
    content: ' ';
    display: block;
    height: 2px;
    width: 100%;
    box-shadow: #00000017 0 2px 50px, #00000017 0 4px 2px, #00000017 0 8px 4px, #00000017 0 16px 8px, #00000017 0 32px 16px;
}

main > .section-outer:has(.section.strong-shadow) {
    box-shadow:0 -15px 10px -15px #00000080,0 15px 10px -15px #00000080 ;
}

main > .section-outer:has(.section.strong-top-shadow),
main > .section-outer:has(.section.top-strong-shadow) {
    box-shadow:0 -15px 10px -15px #00000080;
}

main > .section-outer:has(.section.bottom-strong-shadow),
main > .section-outer:has(.section.strong-bottom-shadow) {
    box-shadow: 0 15px 10px -15px #00000080 ;
}

.block.spacing-1.has-bg {
  padding-left: 1rem;
  padding-right: 1rem;
}

.block.spacing-2.has-bg {
  padding-left: 2rem;
  padding-right: 2rem;
}

.block.spacing-3.has-bg {
  padding-left: 3rem;
  padding-right: 3rem;
}

.block.spacing-4.has-bg {
  padding-left: 4rem;
  padding-right: 4rem;
}

/* section/block utils */
.section-outer > .section.center,
.block.center{
  text-align: center;
}

.section-outer > .section.right,
.block.right{
  text-align: right;
}

/* Grid Section */
.grid-section {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;

  /* helpers */
  &.grid-justify-items-center {
      justify-items: center;
  }
  
  &.gap-0 { gap: 0; }
  &.gap-2, &.gap-m { gap: 2rem; }
  &.gap-3, &.gap-l { gap: 3rem; }
  &.gap-4 { gap: 4rem; }
  &.gap-5 { gap: 5rem; }
  &.gap-6 { gap: 6rem; }
  &.row-gap-0 { row-gap: 0;}
}

.section.grid-section > .default-content-wrapper {
    max-width: unset;
    margin: unset;
    padding: unset;
}

/* Animations */
.animation-scale {
  transform: scale(1);
  transition: transform 0.15s ease-in-out;
}

/* devider */
.divider, .divider-thin-dark, .divider-thin-blue-dot {
  display: block;
  width: 100%;
  border: 2px solid var(--secondary-brown);
  margin: 30px 0;
}

.divider-thin-dark {
  border: 1px solid var(--credit-indigo);
}

.divider-thin-blue-dot {
  border: none;
  border-bottom: 1px dotted var(--credit-violet);
  margin: 1rem 0;
}

.disclaimer {
  font-family: inherit;
  font-size: 12px;
  
  p {
    font-size: inherit !important;
    margin: 0;
  }
}

header {
  min-height: var(--header-height);
}

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

@media screen and (width >= 576px) {
  main > .section-outer > .section,
  footer .section-outer > .section,
  main.error .section-outer .section:not(.marquee-container),
  .block .container {
    max-width: var(--container-width);
    padding-left: 0;
    padding-right: 0;
  }
  
  .section > .default-content-wrapper {
    max-width: var(--container-width);
    padding-left: 0;
    padding-right: 0;
    margin: 0 auto;
  }

  .block .background .tablet-only,
  .block .background .tablet-only.desktop-only {
    display: block;
  }

  .block .background .mobile-only,
  .block .background .desktop-only {
      display: none;
  }

  :root {  --container-width: 540px; }
}

/* Reverse order of grids in mobile view */
@media (width < 960px) {
  .grid-section.column-reverse-mobile {
    display: flex;
    flex-direction: column-reverse;
  }

  h1 {
    font-size: 46px;
  }
}

@media screen and (width >= 768px) {
    :root { --container-width: 720px; }
}

@media screen and (width >= 992px) {
    header nav {
        max-width: var(--container-width);
    }

    :root { --container-width: 960px; }
}

/* TODO: This MQ is unconventional */
@media screen and (width >= 960px) {
    .block .background .mobile-only,
    .block .background .tablet-only {
        display: none;
    }

    .block .background .desktop-only {
        display: block;
    }
  
    .animation-scale:hover {
        transform: scale(1.05);
    }

    .grid-section {
        grid-template-columns: repeat(12, 1fr);

        .span-1 { grid-column: span 1; }
        .span-2 { grid-column: span 2; }
        .span-3 { grid-column: span 3; }
        .span-4 { grid-column: span 4; }
        .span-5 { grid-column: span 5; }
        .span-6 { grid-column: span 6; }
        .span-7 { grid-column: span 7; }
        .span-8 { grid-column: span 8; }
        .span-9 { grid-column: span 9; }
        .span-10 { grid-column: span 10; }
        .span-11 { grid-column: span 11; }
        .span-12 { grid-column: span 12; }
        .span-auto { grid-column: initial; }

        &.grid-template-columns-1-auto { grid-template-columns: repeat(1, auto); }
        &.grid-template-columns-2-auto { grid-template-columns: repeat(2, auto); }
        &.grid-template-columns-3-auto { grid-template-columns: repeat(3, auto); }
        &.grid-template-columns-4-auto { grid-template-columns: repeat(4, auto); }
        &.grid-template-columns-5-auto { grid-template-columns: repeat(5, auto); }
        &.grid-template-columns-6-auto { grid-template-columns: repeat(6, auto); }
        &.grid-template-columns-7-auto { grid-template-columns: repeat(7, auto); }
        &.grid-template-columns-8-auto { grid-template-columns: repeat(8, auto); }
        &.grid-template-columns-9-auto { grid-template-columns: repeat(9, auto); }
        &.grid-template-columns-10-auto { grid-template-columns: repeat(10, auto); }
        &.grid-template-columns-11-auto { grid-template-columns: repeat(11, auto); }
        &.grid-template-columns-12-auto { grid-template-columns: repeat(12, auto); }
    }
    
}

@media screen and (width >= 1200px) {
    :root { --container-width: 1140px; }
    
    .grid-section {
        &.gap-m { gap: 5rem; }
        &.gap-l { gap: 6rem; }
    }   
}

@media screen and (width >= 1400px) {
    :root { --container-width: 1320px; }
}

@media screen and (width < 960px) {
  .button-center-mobile .button-container{
    justify-content: center;
  }
}

@media screen and (width >= 960px) {
  .button-center-desktop .button-container{
    justify-content: center;
  }
}