/*-----------------------------------
-------------------------------------
CORE BLOCKS
Styles for WordPress Gutenberg core blocks and their variations.
-------------------------------------
-----------------------------------*/

/* Shadow Styles */
.is-style-shadow-light {
  box-shadow: var(--wp--preset--shadow--light);
}

.is-style-shadow-solid {
  box-shadow: var(--wp--preset--shadow--solid);
}

:root :where(a:where(:not(.wp-element-button)):hover){
  color: var(--wp--preset--color--secondary);
  opacity: 1;
}


/*-----------------------------------
-------------------------------------
Accordion
-------------------------------------
-----------------------------------*/

.wp-block-accordion .wp-block-accordion-heading{
  font-size: var(--wp--preset--font-size--medium);
  line-height: var(--wp--custom--line-height-medium);
  letter-spacing: var(--wp--custom--letter-spacing-medium);
}

.wp-block-accordion .wp-block-accordion-item .wp-block-accordion-panel {
  margin-top: 0 !important;
  max-height: 100vh;
  overflow: hidden;
  transition: max-height 0.3s ease-in-out;
}

.wp-block-accordion .wp-block-accordion-item .wp-block-accordion-panel *:last-child {
  padding-bottom: var(--wp--preset--spacing--5);
}

.wp-block-accordion .wp-block-accordion-item .wp-block-accordion-panel[inert] {
  max-height: 0;
  display: block !important;
}

.wp-block-accordion .wp-block-accordion-item .wp-block-accordion-heading__toggle {
  padding: var(--wp--preset--spacing--5) 0;
  font-weight: 400;
  gap: var(--wp--preset--spacing--5);
}

.wp-block-accordion .wp-block-accordion-item:not(:first-child) .wp-block-accordion-heading__toggle {
  border-top: solid var(--wp--preset--color--gray-400) 1px;
}


/*-----------------------------------
-------------------------------------
Buttons
-------------------------------------
-----------------------------------*/

.wp-block-button {
  text-transform: uppercase;
}

.wp-block-button.is-small-button.is-style-link a {
  padding: 0 !important;
}

/* Full-width buttons on mobile */
@media screen and (max-width: 991px) {

  .wp-block-buttons.is-content-justification-right{
    justify-content: flex-start;
  }
}

@media screen and (max-width: 599px) {

  :root :where(.wp-block-buttons-is-layout-flex){
    gap: var(--wp--preset--spacing--4);
  }

  .wp-block-buttons:not(.preserve-width-mobile) > div:not(.preserve-width-mobile),
  .wp-block-button:not(.preserve-width-mobile) .wp-block-button__link {
    width: 100%;
  }
}

/* Button Icons - Base */
.wp-block-button.has-icon .wp-block-button__link::before,
.wp-block-button.has-icon .wp-block-button__link::after {
  display: inline-block;
  position: relative;
  font-family: 'Font Awesome 6 Pro';
  font-weight: 400;
}

.wp-block-button.has-icon.icon-right .wp-block-button__link::after {
  margin-left: var(--wp--preset--spacing--3);
}

.wp-block-button.has-icon.icon-left .wp-block-button__link::before {
  margin-right: var(--wp--preset--spacing--3);
}

/* Button Icons - Right Position */
.wp-block-button.has-icon.icon-right.icon-arrow-up-right .wp-block-button__link::after { content: var(--icon-arrow-up-right); }
.wp-block-button.has-icon.icon-right.icon-arrow-right .wp-block-button__link::after { content: var(--icon-arrow-right); }
.wp-block-button.has-icon.icon-right.icon-arrow-left .wp-block-button__link::after { content: var(--icon-arrow-left); }
.wp-block-button.has-icon.icon-right.icon-arrow-down .wp-block-button__link::after { content: var(--icon-arrow-down); }
.wp-block-button.has-icon.icon-right.icon-arrow-up .wp-block-button__link::after { content: var(--icon-arrow-up); }
.wp-block-button.has-icon.icon-right.icon-video .wp-block-button__link::after { content: var(--icon-video); }
.wp-block-button.has-icon.icon-right.icon-download .wp-block-button__link::after { content: var(--icon-download); }

/* Button Icons - Left Position */
.wp-block-button.has-icon.icon-left.icon-arrow-up-right .wp-block-button__link::before { content: var(--icon-arrow-up-right); }
.wp-block-button.has-icon.icon-left.icon-arrow-right .wp-block-button__link::before { content: var(--icon-arrow-right); }
.wp-block-button.has-icon.icon-left.icon-arrow-left .wp-block-button__link::before { content: var(--icon-arrow-left); }
.wp-block-button.has-icon.icon-left.icon-arrow-down .wp-block-button__link::before { content: var(--icon-arrow-down); }
.wp-block-button.has-icon.icon-left.icon-arrow-up .wp-block-button__link::before { content: var(--icon-arrow-up); }
.wp-block-button.has-icon.icon-left.icon-video .wp-block-button__link::before { content: var(--icon-video); }
.wp-block-button.has-icon.icon-left.icon-download .wp-block-button__link::before { content: var(--icon-download); }

/* Animation */
.wp-block-button .wp-block-button__link {
    background-image: linear-gradient(var(--wp--preset--color--secondary));
    background-size: 0% 3px;
    background-repeat: no-repeat;
    background-position: left bottom;
    transition: background-size 0.4s ease-out,
                background-position 0s step-end;

  /* Hover state */
  &:hover {
    background-size: 100% 3px;
    background-position: left bottom;
  } 
  
  /* Hover-out */
  &:not(:hover) {
      background-position: right bottom;
      transition: background-size 0.4s ease-out,
                  background-position 0s step-start;
  }
}

.wp-block-button.is-style-link .wp-block-button__link {
  padding-bottom: calc(0.5rem + 3px);
  bottom: -3px;
  position: relative;
  
  &:hover {
    background-position: left bottom;
  }
  &:not(:hover) {
    background-position: right bottom;
  }
}

/*-----------------------------------
-------------------------------------
Columns
-------------------------------------
-----------------------------------*/

.wp-block-columns.is-columns-spread {
  justify-content: space-between;
}

/* Tablet Breakpoint */
@media screen and (max-width: 991px) {
  .wp-block-columns.three-col-tablet,
  .wp-block-columns.two-col-tablet,
  .wp-block-columns.single-col-tablet,
  .wp-block-group.is-layout-flex.three-col-tablet > *,
  .wp-block-group.is-layout-flex.two-col-tablet > *,
  .wp-block-group.is-layout-flex.single-col-tablet > * {
    flex-wrap: wrap !important;
  }

  .wp-block-columns.three-col-tablet > .wp-block-column,
  .wp-block-group.is-layout-flex.three-col-tablet > * {
    flex-basis: calc(33% - (var(--wp--custom--gutter) / 2)) !important;
  }

  .wp-block-columns.two-col-tablet > .wp-block-column,
  .wp-block-group.is-layout-flex.two-col-tablet > * {
    flex-basis: calc(50% - (var(--wp--custom--gutter) / 2)) !important;
  }

  .wp-block-columns.single-col-tablet > .wp-block-column,
  .wp-block-group.is-layout-flex.single-col-tablet > * {
    flex-basis: 100% !important;
  }
}

/* Mobile Breakpoint */
@media screen and (max-width: 599px) {
  .wp-block-columns.two-col-mobile,
  .wp-block-columns.single-col-mobile,
  .wp-block-group.is-layout-flex.two-col-mobile > *,
  .wp-block-group.is-layout-flex.single-col-mobile > * {
    flex-wrap: wrap !important;
  }

  .wp-block-columns.two-col-mobile > .wp-block-column,
  .wp-block-group.is-layout-flex.two-col-mobile > * {
    flex-basis: calc(50% - (var(--wp--custom--gutter) / 2)) !important;
  }

  .wp-block-columns.single-col-mobile > .wp-block-column,
  .wp-block-group.is-layout-flex.singl-col-mobile > * {
    flex-basis: 100% !important;
  }
}


/*-----------------------------------
-------------------------------------
Cover
-------------------------------------
-----------------------------------*/
.wp-block-cover {
  max-width: 100%;
  padding: var(--wp--preset--spacing--4);

  .wp-block-cover__inner-container {
    z-index: 1;
  }

  &.is-style-hourglass,
  &.is-style-chevrons {
    position: relative;

    &.svg-animated::before {
      content: none;
    }

    &::before {
      display: block;
      content: '';
      height: 100%;
      background-size: 100% 100%;
      background-repeat: no-repeat;
      position: absolute;
      top: 0;
      right: 0;
      z-index: 0;
    }

    /* Injected SVGs for animation */
    .cover-hourglass-svg,
    .cover-chevrons-svg {
      position: absolute;
      right: 0;
      top: 0;
      height: 100%;
      width: auto;
      z-index: 0;
    }
  }

  &.is-style-hourglass {
    &::before {
      aspect-ratio: 0.6576;
      background-image: url("data:image/svg+xml,%3Csvg width='451' height='656' viewBox='0 0 451 656' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M226.624 299.733L0.00012207 -16H450.688L226.624 299.733Z' fill='%2372CDF4'/%3E%3Cpath d='M224.063 353.578L450.687 669.311H0L224.063 353.578Z' fill='%2372CDF4'/%3E%3C/svg%3E%0A");
      transform: translateX(-20%);
    }

    .cover-hourglass-svg {
      transform: translateX(-20%);
    }
  }

  &.is-style-chevrons {
    &::before {
      aspect-ratio: 1.1402;
      background-image: url("data:image/svg+xml,%3Csvg width='702' height='656' viewBox='0 0 702 656' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 102.754H145.257L302.228 319.468L145.257 537.354H0L156.971 319.468L0 102.754Z' fill='white'/%3E%3Cpath d='M748.551 537.354H603.294L447.494 321.811L603.294 102.754H748.551L591.58 320.64L748.551 537.354Z' fill='white'/%3E%3Cpath d='M374.864 301.894L167.521 -0.333984H579.864L374.864 301.894Z' fill='white'/%3E%3Cpath d='M372.521 353.438L579.864 655.666H167.521L372.521 353.438Z' fill='white'/%3E%3C/svg%3E%0A");
      transform: translateX(10%);
    }

    .cover-chevrons-svg {
      transform: translateX(10%);
    }
  }

  /* Tablet and below */
  @media screen and (max-width: 991px) {
    &.is-style-chevrons {
      &::before,
      .cover-chevrons-svg {
        display: none;
      }
    }

    &.has-aspect-ratio {
      &::before,
      .cover-hourglass-svg {
        transform: translateX(50%);
      }
    }
  }

  /* Mobile */
  @media screen and (max-width: 599px) {
    &.has-aspect-ratio {
      aspect-ratio: 1 !important;
    }
  }
}

/*-----------------------------------
-------------------------------------
File
-------------------------------------
-----------------------------------*/

.wp-block-file a:not(.wp-element-button){
  font-size: var(--wp--preset--font-size--base);
  text-decoration: none !important;
}

.wp-block-file a.wp-element-button{
  background: black;
  color: white;
}


/*-----------------------------------
-------------------------------------
Gallery
-------------------------------------
-----------------------------------*/

/* Monochrome Styles */
.wp-block-gallery.is-style-all-black img,
.wp-block-image.is-style-all-black-img img {
  filter: brightness(0);
}

.wp-block-gallery.is-style-all-white img,
.wp-block-image.is-style-all-white-img img {
  filter: brightness(0) invert(1);
}

/* Masonry Style */
.wp-block-gallery.is-style-masonry {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(6, 4.5rem);
  position: relative;

  @media screen and (min-width: 1024px) {
    &::after {
      content: url("data:image/svg+xml,%3Csvg width='631' height='619' viewBox='0 0 631 619' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg opacity='0.7'%3E%3Cpath d='M459.892 389.971H239.235L0 61.2605L239.235 -272H459.892L221.036 59.3648L459.892 389.971Z' fill='%23D6D9DB'/%3E%3Cpath d='M254.018 720.958H475.054L713.909 392.247L475.054 58.9863H254.018L492.873 390.351L254.018 720.958Z' fill='%23D6D9DB'/%3E%3C/g%3E%3C/svg%3E%0A");
      position: absolute;
      height: 100%;
      right: -5.18181rem;
      top: -6rem;
      pointer-events: none;
      z-index: 0;
    }

    /* Hide fallback when JS animation is active */
    &.svg-animated::after {
      content: none;
    }

    /* Injected SVG for animation */
    .gallery-masonry-svg {
      position: absolute;
      height: 100%;
      width: auto;
      right: -5.18181rem;
      top: -6rem;
      pointer-events: none;
      z-index: 0;
    }
  }

  /* Hide on tablet and below */
  @media screen and (max-width: 1023px) {
    &::after {
      content: none;
    }

    .gallery-masonry-svg {
      display: none;
    }
  }
}

.wp-block-gallery.is-style-masonry > figure{
  width: 100% !important;
  grid-row: auto / span 3;
  grid-column: auto / span 1;
  z-index: 1;
}

.wp-block-gallery.is-style-masonry > figure:nth-of-type(2),
.wp-block-gallery.is-style-masonry > figure:nth-of-type(4),
.wp-block-gallery.is-style-masonry > figure:nth-of-type(7){
  grid-row: auto / span 2;
}

/* Logo Gallery */
.is-gallery-logos {
  justify-content: center;
}

.is-gallery-logos > figure {
  align-items: center;
  justify-content: center;
  height: auto;
  aspect-ratio: 10 / 6;
  flex-grow: 0 !important;
}

.is-gallery-logos > figure > div {
  flex-grow: 0 !important;
}

@media screen and (min-width: 992px) {
  .is-gallery-logos > figure {
    padding-left: var(--wp--preset--spacing--5);
    padding-right: var(--wp--preset--spacing--5);
    padding-top: var(--wp--preset--spacing--3);
    padding-bottom: var(--wp--preset--spacing--3);
  }
}

.is-gallery-logos > figure img {
  width: 10rem !important;
  height: auto !important;
  max-height: 4.75rem !important;
  object-fit: contain !important;
  object-position: center !important;
}

@media screen and (max-width: 599px) {
  .wp-block-gallery.is-gallery-logos.has-nested-images figure.wp-block-image:not(#individual-image) {
    width: calc(32% - var(--wp--custom--gutter) / 2);
    padding: var(--wp--preset--spacing--3);
  }

  .wp-block-gallery.is-style-masonry{
    grid-template-columns: repeat(2,1fr);
    grid-template-rows: repeat(6,3rem);
  }

  .wp-block-gallery.is-style-masonry > figure:nth-of-type(5),
  .wp-block-gallery.is-style-masonry > figure:nth-of-type(6),
  .wp-block-gallery.is-style-masonry > figure:last-of-type{
    display: none !important;
  }
}


/*-----------------------------------
-------------------------------------
Group
-------------------------------------
-----------------------------------*/

section.wp-block-group {
  position: relative;
}

.wp-block-group.is-style-expanded{
  border-top: 1px solid var(--wp--preset--color--gray-200);
  border-left: 1px solid var(--wp--preset--color--gray-200);
}

.wp-block-group.is-style-expanded > div{
  border-right: 1px solid var(--wp--preset--color--gray-200);
  border-bottom: 1px solid var(--wp--preset--color--gray-200);
}

/* Grid Column Variations - Tablet */
@media screen and (max-width: 991px) {
  .wp-block-group.three-col-tablet,
  .wp-block-query.three-col-tablet > ul {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  }

  .wp-block-group.two-col-tablet,
  .wp-block-query.two-col-tablet > ul {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .wp-block-group.single-col-tablet,
  .wp-block-query.single-col-tablet > ul {
    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;
  }

  .wp-block-group.is-style-expanded{
    width: calc(100% + (var(--wp--custom--container-padding) * 2));
    transform: translateX(-50%);
    position: relative;
    left: 50%;
    border-left: 0;
  }

  .wp-block-group.is-style-expanded:not(.two-col-mobile, .two-col-tablet) > div{
    border-right: 0;
  }

  .wp-block-group.is-style-expanded.two-col-tablet > div:nth-of-type(even){
    border-right: 0;
  }
}

/* Grid Column Variations - Mobile */
@media screen and (max-width: 599px) {
  .wp-block-group.two-col-mobile,
  .wp-block-query.two-col-mobile > ul {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .wp-block-group.single-col-mobile,
  .wp-block-query.single-col-mobile > ul {
    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;
  }

  .wp-block-group.row-mobile {
    flex-direction: row;
  }

  .wp-block-group.is-style-expanded.two-col-mobile > div:nth-of-type(even){
    border-right: 0;
  }
}


/*-----------------------------------
-------------------------------------
Image
-------------------------------------
-----------------------------------*/

figure.max-w-full{
  max-width: 100%;
}

/* Fill Image Container */
figure.wp-block-image.img-fill {
  position: relative;
}

figure.wp-block-image.img-fill img {
  position: absolute;
  top: 0;
  left: 0;
  object-fit: cover;
  object-position: center;
  height: 100%;
}

@media screen and (min-width: 600px) {
  figure.img-fill {
    height: 100% !important;
  }
}

/* Default Image Behavior */
.wp-block-image:not(.is-style-manual-size) img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
}

/* Backend Editor Overrides */
.wp-block-image.has-custom-aspect-ratio div {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
  max-height: none !important;
}

.wp-block-image .components-resizable-box__container.has-show-handle .components-resizable-box__handle {
  display: none;
}


/*-----------------------------------
-------------------------------------
List
-------------------------------------
-----------------------------------*/

/* Checklist Style */
.wp-block-list.is-style-checklist {
  list-style: none !important;
  padding-left: 0 !important;
  padding-inline-start: 0 !important;
}

.wp-block-list.is-style-checklist li {
  display: flex;
}

.wp-block-list.is-style-checklist li::before {
  font-family: 'Font Awesome 6 Pro';
  content: '\f058';
  padding-right: var(--wp--preset--spacing--2);
  font-weight: 400;
  color: var(--wp--preset--color--primary);
}

/* Separated Style */
.wp-block-list.is-style-separated {
  list-style: none !important;
  padding-left: 0 !important;
  padding-inline-start: 0 !important;
}

.wp-block-list.is-style-separated li {
  border-style: solid;
  border-width: 0;
  border-bottom-width: 1px;
  border-color: var(--wp--preset--color--dark);
  padding-top: var(--wp--preset--spacing--4);
  padding-bottom: var(--wp--preset--spacing--4);
}


/*-----------------------------------
-------------------------------------
Media & Text
-------------------------------------
-----------------------------------*/

@media screen and (min-width: 992px){

  .wp-block-media-text {
    .wp-block-media-text__media {
      padding-right: calc(var(--wp--custom--gutter) / 2);
    }

    > .wp-block-media-text__content {
      margin-left: calc(var(--wp--custom--gutter) / 2);
      padding-left: var(--wp--preset--spacing--8);
      padding-top: var(--wp--preset--spacing--8);
      padding-bottom: var(--wp--preset--spacing--8);
    }

    &.has-media-on-the-right {
      > .wp-block-media-text__content {
        padding-left: 0;
        margin-left: 0;
        padding-right: var(--wp--preset--spacing--8);
        margin-right: calc(var(--wp--custom--gutter) / 2);
      }

      .wp-block-media-text__media {
        padding-left: calc(var(--wp--custom--gutter) / 2);
      }
    }
  }

}

@media screen and (max-width: 991px){

  .wp-block-media-text__content{
    padding-top: var(--wp--preset--spacing--2) !important;
    
  }
}

@media screen and (max-width: 600px) {
  .wp-block-media-text.is-stacked-on-mobile {
    row-gap: var(--wp--custom--gutter);
  }

  .wp-block-media-text > .wp-block-media-text__content {
    padding-left: 0;
    padding-right: 0;
  }
}


/*-----------------------------------
-------------------------------------
Paragraph
-------------------------------------
-----------------------------------*/
.wp-block-paragraph.has-custom-max-width {
  max-width: unset;
}


/*-----------------------------------
-------------------------------------
Pullquote
-------------------------------------
-----------------------------------*/
.wp-block-pullquote blockquote {
  line-height: 1;
}

.wp-block-pullquote p {
  font-size: var(--wp--preset--font-size--large) !important;
  line-height: var(--wp--custom--line-height-large) !important;
}

.wp-block-pullquote cite {
  font-size: var(--wp--preset--font-size--small) !important;
  line-height: 130% !important;
}

/*-----------------------------------
-------------------------------------
Quote
-------------------------------------
-----------------------------------*/

.wp-block-quote::before {
    content: "\f10d";
    font-family: "Font Awesome 6 Sharp";
    font-weight: 900;
    font-size: var(--wp--preset--font-size--xx-large);
    line-height: 100%;
    display: inline-block;
    margin-right: var(--wp--preset--spacing--2);
    margin-bottom: var(--wp--preset--spacing--2);
    color: var(--wp--preset--color--secondary);
}


/*-----------------------------------
-------------------------------------
Separator
-------------------------------------
-----------------------------------*/
.wp-block-separator.is-style-fullscreen {
  width: 100vw;
  position: relative;
  left: 50%;
  margin-left: -50vw !important;
  max-width: none;
}


/*-----------------------------------
-------------------------------------
Table
-------------------------------------
-----------------------------------*/
.wp-list-table.fixed {
  position: relative;
}


/*-----------------------------------
-------------------------------------
Video
-------------------------------------
-----------------------------------*/
.wp-block-video.is-style-background-video {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  margin: 0 !important;
}

.wp-block-video.is-style-background-video video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}