@use 'Foundation/scss/scrollbar-chains' as chains;

$side-padding: var(--wds-page-header-padding-horizontal, var(--wds-space-800, 48px));
$side-padding-small: var(--wds-page-header-padding-horizontal-small, var(--wds-space-400, 24px));
$header-padding-vertical: var(--wds-page-header-padding-vertical, var(--wds-space-400, 24px));
$header-padding-vertical-small: var(--wds-page-header-padding-vertical-small, var(--wds-space-300, 18px));
$header-padding-bottom-with-tail: var(--wds-page-header-padding-bottom-with-tail, var(--wds-space-200, 12px));
$stage-fill: var(--wds-color-fill-surface-stage, var(--wsr-color-D70, #eceff3));
$surface-fill: var(--wds-color-fill-surface-default, var(--wsr-color-D80, #ffffff));

@keyframes page-header-entrance {
  0% {
    opacity: 0;
    bottom: -20px;
  }

  100% {
    opacity: 1;
    bottom: 0;
  }
}

.page {
  overflow-x: auto;
  height: 100%;
  z-index: 1;

  &__page {
    position: relative;
    background-color: $stage-fill;
    min-width: 864px;
    height: 100%;
    transform: scale(1);
  }

  &__scrollable-container {
    overflow-y: auto;
    width: 100%;
    position: relative;
    height: 100%;
  }

  &__scrollable-container::-webkit-scrollbar {
    height: 0;
    width: 12px;
  }

  &__scrollable-container::-webkit-scrollbar-button {
    display: none;
    height: 6px;
  }

  &__scrollable-container::-webkit-scrollbar-thumb {
    background-color: chains.$scrollbar-fill;
    background-clip: content-box;
    border-radius: var(--wds-border-radius-full, 6px);
    border: calc((12px - #{chains.$scrollbar-width}) / 2) solid transparent;
    height: 72px;
  }

  @media (hover: hover) {
    &__scrollable-container::-webkit-scrollbar-thumb:hover {
      background-color: chains.$scrollbar-fill-hover;
    }
  }

  &__scrollable-container::-webkit-scrollbar-thumb:active {
    background-color: chains.$scrollbar-fill-active;
  }

  &__page-header-container {
    --wds-internal-page-minimization-top: 0;

    position: relative;
    width: 100%;
    margin: 0 auto;
    box-sizing: border-box;
    top: var(--wds-internal-page-minimization-top);
  }

  &__page-header-container &__header-wrapper {
    padding-top: $header-padding-vertical;
    padding-bottom: $header-padding-vertical;
  }

  &__page-header-container &__header-wrapper#{&}__header-wrapper--minimized {
    box-sizing: content;
    min-height: 30px;
    padding-top: $header-padding-vertical-small;
    padding-bottom: $header-padding-vertical-small;
    position: relative;
    animation: page-header-entrance 0.2s;
  }

  &__page-header-container#{&}__page-header-container--has-tail &__header-wrapper#{&}__header-wrapper--minimized {
    padding-bottom: $header-padding-bottom-with-tail;
  }

  &__page-header-container &__tail {
    background-color: $stage-fill;
  }

  &__page-header-container#{&}__page-header-container--minimized {
    position: -webkit-sticky;
    position: sticky;
    z-index: 1200;
    background-color: $stage-fill;
    border-bottom: 1px solid var(--wds-page-header-divider-color, var(--wds-color-border-dark-secondary, var(--wsr-color-D60, #dfe5eb)));
  }

  &__scrollable-container &__content-container {
    position: relative;
  }

  &__scrollable-container#{&}__scrollable-container--has-tail &__content-container {
    margin-top: $header-padding-vertical;
  }

  &__scrollable-inner--stretch-vertically {
    display: flex;
    flex-direction: column;
    min-height: 100%;
  }

  &__content-stretch-container {
    display: flex;
    flex: 1 0 auto;
  }

  &__content-container--stretch-vertically {
    flex: 1 1 auto;
  }

  &__content-floating--stretch-vertically {
    height: 100%;
  }

  &__image-background-container {
    position: absolute;
    overflow: hidden;
    top: 0;
    width: 100%;
    height: 100%;
    transform: scale(1);
  }

  &__image-background-container::after {
    content: '';
    position: absolute;
    top: 0;
    width: 100%;
    height: 100%;
    /* stylelint-disable-next-line plugin/use-baseline */
    background-color: color-mix(in srgb, var(--wds-color-black-100, var(--wsr-color-D10, #000624)) 42%, transparent);
  }

  &__image-background-container &__image-background {
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center;
    position: absolute;
    top: -30px;
    bottom: -30px;
    left: -30px;
    right: -30px;
    filter: blur(12px);
  }

  &__gradient-background {
    position: absolute;
    top: 0;
    width: 100%;
  }

  &__content-horizontal-layout {
    padding: 0 $side-padding;
    margin: 0 auto;
  }

  &__content-horizontal-layout#{&}__content-horizontal-layout--content-full-width {
    padding-left: 0;
    padding-right: 0;
  }

  &__content-horizontal-layout#{&}__content-horizontal-layout--horizontal-scroll {
    overflow-x: auto;
    padding-right: 0;
  }

  &__content-horizontal-layout#{&}__content-horizontal-layout--horizontal-scroll::-webkit-scrollbar {
    height: 12px;
    width: 12px;
  }

  &__content-horizontal-layout#{&}__content-horizontal-layout--horizontal-scroll::-webkit-scrollbar-button {
    display: none;
    height: 6px;
  }

  &__content-horizontal-layout#{&}__content-horizontal-layout--horizontal-scroll::-webkit-scrollbar-thumb {
    background-color: chains.$scrollbar-fill;
    background-clip: content-box;
    border-radius: var(--wds-border-radius-full, 6px);
    border: calc((12px - #{chains.$scrollbar-width}) / 2) solid transparent;
    height: 72px;
  }

  @media (hover: hover) {
    &__content-horizontal-layout#{&}__content-horizontal-layout--horizontal-scroll::-webkit-scrollbar-thumb:hover {
      background-color: chains.$scrollbar-fill-hover;
    }
  }

  &__content-horizontal-layout#{&}__content-horizontal-layout--horizontal-scroll::-webkit-scrollbar-thumb:active {
    background-color: chains.$scrollbar-fill-active;
  }

  &__content-floating {
    position: relative;
    display: flex;
    flex-direction: column;
  }

  &__sticky {
    position: -webkit-sticky;
    position: sticky;
    z-index: 1100;
    background-color: $stage-fill;
  }

  &__fixed-footer {
    z-index: 2000;
    box-sizing: border-box;
    position: fixed;
    background: linear-gradient(90deg, transparent 0px, #{$stage-fill} 0px, #{$stage-fill} calc(100% - 0px), transparent calc(100% - 0px));
    right: 50%;
    transform: translateX(50%);
    bottom: 0;
    width: calc(100% - 2 * #{$side-padding});
    padding-bottom: var(--wds-space-800, 48px);
  }

  @media (max-width: 959px) {
    &__content-horizontal-layout {
      padding: 0 $side-padding-small;
    }

    &__fixed-footer {
      width: calc(100% - 2 * #{$side-padding-small});
    }
  }

  .provider--mobile &__page {
    min-width: 0;
    background-color: $surface-fill;
  }

  .provider--mobile &__page-header-container &__tail {
    background-color: $surface-fill;
  }

  .provider--mobile &__page-header-container#{&}__page-header-container--minimized {
    background-color: $surface-fill;
  }

  .provider--mobile &__sticky {
    background-color: $surface-fill;
  }

  .provider--mobile &__content-horizontal-layout {
    padding-left: $side-padding-small;
    padding-right: $side-padding-small;
  }

  .provider--mobile &__content-horizontal-layout#{&}__content-horizontal-layout--content-full-width {
    padding-left: 0;
    padding-right: 0;
  }

  .provider--mobile &__content-horizontal-layout#{&}__content-horizontal-layout--horizontal-scroll {
    padding-right: 0;
  }

  .provider--mobile &__fixed-footer {
    width: calc(100% - 2 * #{$side-padding-small});
    background: $surface-fill;
  }
}
