/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@use 'sass:math';
@import '../styles/feature-callout';

$break-point-small: 570px;
$break-point-medium: 610px;
$break-point-large: 866px;
$container-min-width: 700px;
$logo-size: 80px;
$main-section-width: 504px;
$split-section-width: 400px;
$split-screen-height: 550px;
$small-main-section-height: 450px;
$small-secondary-section-height: 100px;
$noodle-buffer: 106px;
$video-section-width: 800px;

html {
  height: 100%;
}

// Below variables are used via config JSON in AboutWelcomeDefaults
// and referenced below inside dummy class to pass test browser_parsable_css
.dummy {
  background: var(--mr-welcome-background-color) var(--mr-welcome-background-gradient) var(--mr-secondary-position) var(--mr-screen-background-color);
}

// Styling for content rendered in a Spotlight messaging surface.
:root {
  &[dialogroot] {
    background-color: transparent;

    body {
      padding: 0;
    }

    .onboardingContainer {
      // Without this, the container will be 100vh in height. When the dialog
      // overflows horizontally, the horizontal scrollbar will appear. If the
      // scrollbars aren't overlay scrollbars (this is controlled by
      // Theme::ScrollbarStyle), they will take up vertical space in the
      // viewport, causing the dialog to overflow vertically. This causes the
      // vertical scrollbar to appear, which takes up horizontal space, causing
      // the horizontal scrollbar to appear, and so on.
      height: 100%;
      background-color: transparent;

      &:dir(rtl) {
        transform: unset;
      }

      .logo-container {
        pointer-events: none;
      }

      .screen {
        &:dir(rtl) {
          transform: unset;
        }
      }
    }
  }
}

// Styling for about:welcome background container
.welcome-container {
  .onboardingContainer {
    min-height: $break-point-medium;
    min-width: fit-content;
  }
}

.onboardingContainer {
  --grey-subtitle-1: #696977;
  --mr-welcome-background-color: #F8F6F4;
  --mr-screen-heading-color: var(--in-content-text-color);
  --mr-welcome-background-gradient: linear-gradient(0deg, rgba(144, 89, 255, 20%) 0%, rgba(2, 144, 238, 20%) 100%);
  --mr-screen-background-color: #F8F6F4;

  @media (prefers-color-scheme: dark) {
    --grey-subtitle-1: #FFF;
    --mr-welcome-background-color: #333336;
    --mr-welcome-background-gradient: linear-gradient(0deg, rgba(144, 89, 255, 30%) 0%, rgba(2, 144, 238, 30%) 100%);
    --mr-screen-background-color: #62697A;
  }

  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Ubuntu,
    'Helvetica Neue', sans-serif;
  font-size: 16px;
  position: relative;
  text-align: center;
  height: 100vh;

  @media (prefers-contrast) {
    --mr-screen-background-color: buttontext;
    --mr-screen-heading-color: buttonface;

    background-color: var(--in-content-page-background);
  }

  // Transition all of these and reduced motion effectively only does opacity.
  --transition: 0.6s opacity, 0.6s scale, 0.6s rotate, 0.6s translate;

  // Define some variables that are used for in/out states.
  @media (prefers-reduced-motion: no-preference) {
    --translate: 30px;
    --rotate: 20deg;
    --scale: 0.4;
    --progress-bar-transition: 0.6s translate;

    // Scale is used for noodles that can be flipped.
    &:dir(rtl) {
      --scale: -0.4 0.4;
    }
  }

  // Use default values that match "unmoved" state to avoid motion.
  @media (prefers-reduced-motion: reduce) {
    --translate: 0;
    --rotate: 0deg;
    --scale: 1;
    // To reduce motion, progress bar fades in instead of wiping in.
    --progress-bar-transition: none;

    &:dir(rtl) {
      --scale: -1 1;
    }
  }

  &:dir(rtl) {
    transform: rotateY(180deg);
  }

  .section-main {
    display: flex;
    flex-direction: column;
    justify-content: center;
    width: $main-section-width;
    flex-shrink: 0;
  }

  .section-main:not(.embedded-migration) {
    position: relative;
  }

  .main-content {
    background-color: var(--in-content-page-background);
    border-radius: 20px;
    box-shadow: 0 2px 14px 0 rgba(0, 0, 0, 20%);
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 0;
    transition: var(--transition);
    z-index: 1;
    box-sizing: border-box;

    &.no-steps {
      padding-bottom: 48px;
    }

    .main-content-inner {
      display: flex;
      flex-direction: column;
      flex-grow: 1;
      justify-content: space-around;
    }
  }

  // Handle conditional display of steps indicator
  // Don't show when there's only one screen
  .main-content .no-steps {
    .main-content {
      padding-bottom: 48px;
    }

    .steps {
      display: none;
    }
  }

  @mixin arrow-icon-styles {
    .arrow-icon {
      -moz-context-properties: fill;
      fill: currentColor;
      text-decoration: none;

      &::after {
        content: '';
        padding-inline-end: 12px;
        margin-inline-start: 4px;
        background: url('chrome://browser/skin/forward.svg') no-repeat center / 12px;
      }

      &:dir(rtl)::after {
        background-image: url('chrome://browser/skin/back.svg');
      }
    }
  }

  @mixin secondary-cta-styles {
    background-color: var(--in-content-button-background) !important; // stylelint-disable-line declaration-no-important
    border: 1px solid var(--in-content-button-border-color);
    line-height: 12px;
    font-size: 0.72em;
    font-weight: 600;
    padding: 8px 16px;
    text-decoration: none;

    &:hover {
      background-color: var(--in-content-button-background-hover) !important; // stylelint-disable-line declaration-no-important
      color: var(--in-content-button-text-color-hover);
    }
  }

  @mixin text-link-styles {
    text-decoration: underline;
    cursor: pointer;
    color: var(--in-content-link-color);

    &:hover {
      text-decoration: none;
      color: var(--in-content-link-color-hover);
    }

    &:active {
      text-decoration: none;
      color: var(--in-content-link-color-active);
    }
  }

  .screen {
    display: flex;
    position: relative;
    flex-flow: row nowrap;
    height: 100%;
    min-height: 500px;
    overflow: hidden;

    --in-content-link-color: var(--in-content-primary-button-background);
    --in-content-link-color-hover: var(--in-content-primary-button-background-hover);
    --in-content-link-color-active: var(--in-content-primary-button-background-active);
    --in-content-link-color-visited: var(--in-content-link-color);

    &.light-text {
      --in-content-page-color: rgb(251, 251, 254);
      --in-content-primary-button-text-color: rgb(43, 42, 51);
      --in-content-primary-button-text-color-hover: rgb(43, 42, 51);
      --in-content-primary-button-background: rgb(0, 221, 255);
      --in-content-primary-button-background-hover: rgb(128, 235, 255);
      --in-content-primary-button-background-active: rgb(170, 242, 255);
      --checkbox-checked-bgcolor: var(--in-content-primary-button-background);
      --in-content-button-text-color: var(--in-content-page-color);
    }

    &.dark-text {
      --in-content-page-color: rgb(21,  20,  26);
      --in-content-primary-button-text-color: rgb(251, 251, 254);
      --in-content-primary-button-text-color-hover: rgb(251, 251, 254);
      --in-content-primary-button-background: #0061E0;
      --in-content-primary-button-background-hover: #0250BB;
      --in-content-primary-button-background-active: #053E94;
      --in-content-primary-button-border-color: transparent;
      --in-content-primary-button-border-hover: transparent;
      --checkbox-checked-bgcolor: var(--in-content-primary-button-background);
      --in-content-button-text-color: var(--in-content-page-color);
    }

    &:dir(rtl) {
      transform: rotateY(180deg);
    }

    &[pos='center'] {
      background-color: rgba(21, 20, 26, 50%);
      min-width: $main-section-width;

      &.with-noodles {
        // Adjust for noodles partially extending out from the square modal
        min-width: $main-section-width + $noodle-buffer;
        min-height: $main-section-width + $noodle-buffer;

        .section-main {
          height: $main-section-width;
        }
      }

      &.with-video {
        justify-content: center;
        background: none;
        align-items: center;

        .section-main {
          width: $video-section-width;
          height: $split-screen-height;
        }

        .main-content {
          background-color: var(--mr-welcome-background-color);
          border-radius: 8px;
          box-shadow: 0 2px 14px rgba(58, 57, 68, 20%);
          padding: 44px 85px 20px;

          .welcome-text {
            margin: 0;
          }

          .main-content-inner {
            justify-content: space-between;
          }

          h1,
          h2 {
            align-self: start;
          }

          h1 {
            font-size: 24px;
            line-height: 28.8px;
          }

          h2 {
            font-size: 15px;
            line-height: 22px;
          }

          .secondary-cta {
            @include arrow-icon-styles;

            justify-content: end;

            .secondary {
              @include secondary-cta-styles;

              color: var(--in-content-button-text-color);
            }
          }
        }
      }
    }

    &:not([pos='split']) {
      .secondary-cta {
        .secondary {
          background: none;
          color: var(--in-content-link-color);
          font-size: 14px;
          font-weight: normal;
          line-height: 20px;
        }

        &.top {
          button {
            color: #FFF;

            &:hover {
              color: #E0E0E6;
            }
          }
        }
      }
    }

    &[pos='split'] {
      margin: auto;
      min-height: $split-screen-height;

      &::before {
        content: '';
        position: absolute;
        box-shadow: 0 2px 14px 0 rgba(0, 0, 0, 20%);
        width: $split-section-width + $split-section-width;
        height: $split-screen-height;
        border-radius: 8px;
        inset: 0;
        margin: auto;
        pointer-events: none;
      }

      .section-secondary,
      .section-main {
        width: $split-section-width;
        height: $split-screen-height;
      }

      .secondary-cta.top {
        position: fixed;
        padding-inline-end: 0;

        button {
          color: var(--in-content-page-color);
        }
      }

      .section-main {
        flex-direction: row;
        display: block;
        margin: auto auto auto 0;

        &:dir(rtl) {
          margin: auto 0 auto auto;
        }

        .main-content {
          border-radius: 0 8px 8px 0;
          overflow: hidden;
          padding-inline: 35px 20px;
          padding-block: 120px 0;
          box-shadow: none;

          &.no-steps {
            padding-bottom: 48px;
          }

          &:dir(rtl) {
            border-radius: 8px 0 0 8px;
          }

          .main-content-inner {
            min-height: 330px;

            .language-switcher-container {
              .primary {
                margin-bottom: 5px;
              }
            }
          }

          .action-buttons {
            position: relative;
            text-align: initial;
            height: 100%;

            .checkbox-container {
              font-size: 13px;
              margin-block: 1em;

              &:not(.multi-select-item) {
                transition: var(--transition);
              }

              input,
              label {
                vertical-align: middle;
              }
            }

            .additional-cta {
              margin: 8px 0;

              &.cta-link {
                background: none;
                padding: 0;
                font-weight: normal;

                @include text-link-styles;
              }

              &.secondary {
                &:hover {
                  background-color: var(--in-content-button-background-hover);
                }
              }
            }

            &.additional-cta-container {
              flex-wrap: nowrap;
              align-items: start;
            }

            .secondary-cta {
              position: absolute;
              bottom: -30px;
              inset-inline-end: 0;

              .secondary {
                @include secondary-cta-styles;
              }

              @include arrow-icon-styles;
            }
          }

          .logo-container {
            text-align: start;
          }

          .brand-logo {
            height: 25px;
            margin-block: 0;
          }

          .welcome-text {
            margin-inline: 0 10px;
            margin-block: 10px 35px;
            text-align: initial;
            align-items: initial;

            &:empty {
              margin: 0;
            }

            h1 {
              font-size: 24px;
              line-height: 1.2;
              width: 300px;
            }

            h2 {
              margin: 10px 0 0;
              min-height: 1em;
              font-size: 15px;
              line-height: 1.5;

              @media (prefers-contrast: no-preference) {
                color: #5B5B66;
              }
            }
          }

          .welcome-text h1,
          .primary {
            margin: 0;
          }

          .steps {
            z-index: 1;

            &.progress-bar {
              width: $split-section-width;
              margin-inline: -35px;
            }
          }

          @media (prefers-contrast) {
            border: 1px solid var(--in-content-page-color);

            .steps.progress-bar {
              border-top: 1px solid var(--in-content-page-color);
              background-color: var(--in-content-page-background);

              .indicator {
                background-color: var(--in-content-accent-color);
              }
            }
          }
        }
      }

      .section-secondary {
        --mr-secondary-position: center center / auto 350px;

        border-radius: 8px 0 0 8px;
        margin: auto 0 auto auto;
        display: flex;
        align-items: center;
        -moz-context-properties: fill, stroke, fill-opacity, stroke-opacity;
        stroke: currentColor;

        &:dir(rtl) {
          border-radius: 0 8px 8px 0;
          margin: auto auto auto 0;
        }

        h1 {
          color: var(--mr-screen-heading-color);
          font-weight: 700;
          font-size: 47px;
          line-height: 110%;
          max-width: 340px;
          text-align: initial;
          white-space: pre-wrap;
          text-shadow: none;
          margin-inline: 40px 0;
        }

        .image-alt {
          width: inherit;
          height: inherit;
        }

        .hero-image {
          flex: 1;
          display: flex;
          justify-content: center;
          max-height: 100%;

          img {
            width: 100%;
            max-width: 180px;
            margin: 25px 0;
            padding-bottom: 30px;

            @media only screen and (max-width: 800px) {
              padding-bottom: unset;
            }
          }
        }
      }

      .tiles-theme-container {
        margin-block: -20px auto;
        align-items: initial;

        .colorway-text {
          text-align: initial;
          transition: var(--transition);
          font-size: 13px;
          line-height: 1.5;
          min-height: 4.5em;
          margin-block: 10px 20px;
        }

        .theme {
          min-width: 38px;
        }
      }

      @media (prefers-contrast: no-preference) and (prefers-color-scheme: dark) {
        .section-main .main-content {
          .welcome-text h2 {
            color: #CFCFD8;
          }

          .action-buttons .secondary {
            background-color: #2B2A33;
          }
        }
      }

      @media only screen and (min-width: 800px) {
        .tiles-theme-section {
          margin-inline-start: -10px;
        }
      }

      @media only screen and (max-width: 800px) {
        flex-direction: column;
        min-height: $small-main-section-height + $small-secondary-section-height;

        &::before {
          width: $split-section-width;
        }

        .section-secondary,
        .section-main {
          width: $split-section-width;
        }

        .section-secondary {
          --mr-secondary-background-position-y: top;
          --mr-secondary-position: center var(--mr-secondary-background-position-y) / 75%;

          border-radius: 8px 8px 0 0;
          margin: auto auto 0;
          height: $small-secondary-section-height;

          .hero-image img {
            margin: 6px 0;
          }

          .message-text {
            margin-inline: auto;
          }

          h1 {
            font-size: 35px;
            text-align: center;
            white-space: normal;
            margin-inline: auto;
            margin-block: 14px 6px;
          }

          &:dir(rtl) {
            margin: auto auto 0;
            border-radius: 8px 8px 0 0;
          }
        }

        .section-main {
          margin: 0 auto auto;
          height: $small-main-section-height;

          .main-content {
            border-radius: 0 0 8px 8px;
            padding: 30px 0 0;

            .main-content-inner {
              align-items: center;
            }

            .logo-container {
              text-align: center;

              .brand-logo {
                min-height: 25px;

                &,
                &:dir(rtl) {
                  background-position: center;
                }
              }
            }

            .welcome-text {
              align-items: center;
              text-align: center;
              margin-inline: 0;
              padding-inline: 30px;

              .spacer-bottom,
              .spacer-top {
                display: none;
              }
            }

            .action-buttons {
              text-align: center;

              .checkbox-container {
                display: none;
              }

              .secondary-cta {
                position: relative;
                margin-block: 10px 0;
                bottom: 0;
              }
            }

            .primary,
            .secondary {
              min-width: 240px;
            }

            .colorway-text {
              text-align: center;
              margin-inline: 30px;
            }

            .steps {
              padding-block: 0;
              margin: 0;

              &.progress-bar {
                margin-inline: 0;
              }
            }
          }

          .additional-cta {
            &.cta-link {
              align-self: center;
            }
          }

          .dismiss-button {
            top: -$small-secondary-section-height;
          }

          &:dir(rtl) {
            margin: 0 auto auto;

            .main-content {
              border-radius: 0 0 8px 8px;
            }
          }
        }

      }

      @media only screen and (max-height: 650px) {
        // Hide the "Sign in" button on the welcome screen when it would
        // otherwise overlap the screen. We'd reposition it, but then it would
        // overlap the dismiss button. We may change the alignment so they don't
        // overlap in a future revision.
        @media (min-width: 800px) and (max-width: 990px) {
          .section-main .secondary-cta.top {
            display: none;
          }
        }

        // Reposition the "Sign in" button on the welcome screen to move inside
        // the screen when it would otherwise overlap the screen.
        @media (max-width: 590px) {
          .section-main .secondary-cta.top {
            position: absolute;
            padding: 0;
            top: 0;
            inset-inline-end: 0;
          }
        }
      }
    }
  }

  .brand-logo {
    margin-block: 60px 10px;
    transition: var(--transition);
    height: 80px;

    &.cta-top {
      margin-top: 25px;
    }

    &.hide {
      visibility: hidden;
      padding: unset;
      margin-top: 50px;
    }
  }

  .rtamo-theme-icon {
    max-height: 30px;
    border-radius: 2px;
    margin-bottom: 10px;
    margin-top: 24px;
  }

  .rtamo-icon {
    text-align: start;

    @media only screen and (max-width: 800px) {
      text-align: center;
    }
  }

  .text-link {
    @include text-link-styles;
  }

  .welcome-text {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    margin: 0.5em 1em;
    transition: var(--transition);

    h1,
    h2 {
      color: var(--in-content-page-color);
      line-height: 1.5;
    }

    h1 {
      font-size: 24px;
      font-weight: 600;
      margin: 0 6px;
      letter-spacing: -0.02em;
      outline: none;
    }

    h2 {
      font-size: 16px;
      font-weight: normal;
      margin: 10px 6px 0;
      max-width: 750px;
      letter-spacing: -0.01em;
    }

    &.fancy {
      h1 {
        background-image: linear-gradient(90deg, #9059FF, #FF4AA2, #FF8C00, #FF4AA2, #9059FF);
        background-clip: text;
        background-size: 200%;

        @media (prefers-contrast: no-preference) {
          color: transparent;
        }

        @media (prefers-color-scheme: dark) {
          background-image: linear-gradient(90deg, #C688FF, #FF84C0, #FFBD4F, #FF84C0, #C688FF);

          &::selection {
            color: #FFF;
            background-color: #696977;
          }
        }
      }
    }

    &.shine {
      h1 {
        animation: shine 50s linear infinite;
        background-size: 400%;
      }

      @keyframes shine {
        to {
          background-position: 400%;
        }
      }
    }

    .cta-paragraph {
      a {
        margin: 0;
        text-decoration: underline;
        cursor: pointer;
      }
    }
  }

  // Override light and dark mode fancy title colors for use over light and dark backgrounds
  .screen.light-text .welcome-text.fancy h1 {
    background-image: linear-gradient(90deg, #C688FF, #FF84C0, #FFBD4F, #FF84C0, #C688FF);
  }

  .screen.dark-text .welcome-text.fancy h1 {
    background-image: linear-gradient(90deg, #9059FF, #FF4AA2, #FF8C00, #FF4AA2, #9059FF);
  }

  .welcomeZap {
    span {
      position: relative;
      z-index: 1;
      white-space: nowrap;
    }

    .zap {
      &::after {
        display: block;
        background-repeat: no-repeat;
        background-size: 100% 100%;
        content: '';
        position: absolute;
        top: calc(100% - 0.15em);
        width: 100%;
        height: 0.3em;
        left: 0;
        z-index: -1;
        transform: scaleY(3);
      }

      &.short::after {
        background-image:  url('chrome://activity-stream/content/data/content/assets/short-zap.svg');
      }

      &.long::after {
        background-image:  url('chrome://activity-stream/content/data/content/assets/long-zap.svg');
      }
    }
  }

  .language-loader {
    filter: invert(1);
    margin-inline-end: 10px;
    position: relative;
    top: 3px;
    width: 16px;
    height: 16px;
    margin-top: -6px;
  }

  @media (prefers-color-scheme: dark) {
    .language-loader {
      filter: invert(0);
    }
  }

  .tiles-theme-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin: 10px auto;
  }

  .sr-only {
    opacity: 0;
    overflow: hidden;
    position: absolute;

    &.input {
      height: 1px;
      width: 1px;
    }
  }

  .tiles-theme-section {
    border: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    justify-content: space-evenly;
    margin-inline: 10px;
    padding: 10px;
    transition: var(--transition);

    &:hover,
    &:active,
    &:focus-within {
      border-radius: 8px;
      outline: 2px solid var(--in-content-primary-button-background);
    }

    .theme {
      align-items: center;
      display: flex;
      flex-direction: column;
      flex: 1;
      padding: 0;
      min-width: 50px;
      width: 180px;
      color: #000;
      box-shadow: none;
      border-radius: 4px;
      cursor: pointer;
      z-index: 0;

      &.colorway {
        width: auto;
      }

      &:focus,
      &:active {
        outline: initial;
        outline-offset: initial;
      }

      .icon.colorway,
      .label.colorway {
        width: 20px;
        height: 20px;
      }

      .icon {
        background-size: cover;
        width: 40px;
        height: 40px;
        border-radius: 40px;
        outline: 1px solid var(--in-content-border-color);
        outline-offset: -0.5px;
        z-index: -1;

        &:dir(rtl) {
          transform: scaleX(-1);
        }

        &:focus,
        &:active,
        &.selected {
          outline: 2px solid var(--in-content-primary-button-background);
          outline-offset: 2px;
        }

        &.light {
          background-image: url('resource://builtin-themes/light/icon.svg');
        }

        &.dark {
          background-image: url('resource://builtin-themes/dark/icon.svg');
        }

        &.alpenglow {
          background-image: url('resource://builtin-themes/alpenglow/icon.svg');
        }

        &.default,
        &.automatic {
          background-image: url('resource://default-theme/icon.svg');

          &.colorway {
            background-image: url('chrome://activity-stream/content/data/content/assets/default.svg');
          }
        }

        &.playmaker {
          background-image: url('resource://builtin-themes/colorways/2022playmaker/balanced/icon.svg');
        }

        &.expressionist {
          background-image: url('resource://builtin-themes/colorways/2022expressionist/balanced/icon.svg');
        }

        &.visionary {
          background-image: url('resource://builtin-themes/colorways/2022visionary/balanced/icon.svg');
        }

        &.dreamer {
          background-image: url('resource://builtin-themes/colorways/2022dreamer/balanced/icon.svg');
        }

        &.innovator {
          background-image: url('resource://builtin-themes/colorways/2022innovator/balanced/icon.svg');
        }

        &.activist {
          background-image: url('resource://builtin-themes/colorways/2022activist/balanced/icon.svg');
        }
      }

      .text {
        display: flex;
        color: var(--in-content-page-color);
        font-size: 14px;
        font-weight: normal;
        line-height: 20px;
        margin-inline-start: 0;
        margin-top: 9px;
      }
    }

    legend {
      cursor: default;
    }
  }

  .tiles-container {
    margin: 10px auto;

    &.info {
      padding: 6px 12px 12px;

      &:hover,
      &:focus {
        background-color: rgba(217, 217, 227, 30%);
        border-radius: 4px;
      }
    }
  }

  .tiles-delayed {
    animation: fadein 0.4s;
  }

  .multi-select-container {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    margin-block: -1em 1em;
    color: #5B5B66;
    font-weight: 400;
    font-size: 14px;
    text-align: initial;
    transition: var(--transition);
    z-index: 1;

    .checkbox-container {
      display: flex;
      margin-bottom: 16px;
    }
  }

  @media (prefers-color-scheme: dark) {
    .multi-select-container {
      color: #CFCFD8;
    }
  }

  @media only screen and (max-width: 800px) {
    .multi-select-container {
      padding: 0 30px;
    }
  }

  .mobile-downloads {
    .qr-code-image {
      margin: 24px 0 10px;
      width: 113px;
      height: 113px;
    }

    .email-link {
      font-size: 16px;
      font-weight: 400;
      background: none;

      @include text-link-styles;

      &:hover {
        background: none;
      }
    }

    .ios button {
      background-image: url('chrome://app-marketplace-icons/locale/ios.svg');
    }

    .android button {
      background-image: url('chrome://app-marketplace-icons/locale/android.png');
    }
  }

  .mobile-download-buttons {
    list-style: none;
    padding: 10px 0;
    margin: 0;

    li {
      display: inline-block;

      button {
        display: inline-block;
        height: 45px;
        width: 152px;
        background-repeat: no-repeat;
        background-size: contain;
        background-position: center;
        box-shadow: none;
        border: 0;
      }

      &:not(:first-child) {
        margin-inline: 5px 0;
      }
    }
  }

  .dismiss-button {
    position: absolute;
    z-index: 1;
    top: 0;
    left: auto;
    right: 0;
    box-sizing: border-box;
    padding: 0;
    margin: 16px;
    display: block;
    float: inline-end;
    background: url('chrome://global/skin/icons/close.svg') no-repeat center / 16px;
    height: 32px;
    width: 32px;
    align-self: end;
    // override default min-height and min-width for buttons
    min-height: 32px;
    min-width: 32px;
    -moz-context-properties: fill;
    fill: currentColor;
    transition: var(--transition);

    &:dir(rtl) {
      left: 0;
      right: auto;
    }
  }

  @keyframes fadein {
    from { opacity: 0; }
  }

  .secondary-cta {
    display: flex;
    align-items: end;
    flex-direction: row;
    justify-content: center;
    font-size: 14px;
    transition: var(--transition);

    &.top {
      justify-content: end;
      padding-inline-end: min(150px, 500px - 70vh);
      padding-top: 4px;
      position: absolute;
      top: 10px;
      inset-inline-end: 20px;
      z-index: 2;
    }

    span {
      color: var(--grey-subtitle-1);
      margin: 0 4px;
    }
  }

  .message-text,
  .attrib-text {
    transition: var(--transition);
  }

  .helptext {
    padding: 1em;
    text-align: center;
    color: var(--grey-subtitle-1);
    font-size: 12px;
    line-height: 18px;

    &.default {
      align-self: center;
      max-width: 40%;
    }

    span {
      padding-inline-end: 4px;
    }
  }

  .helptext-img {
    height: 1.5em;
    width: 1.5em;
    margin-inline-end: 4px;
    vertical-align: middle;

    &.end {
      margin: 4px;
    }

    &.footer {
      vertical-align: bottom;
    }
  }

  .steps {
    display: flex;
    flex-direction: row;
    justify-content: center;
    margin-top: 0;
    padding-block: 16px 0;
    transition: var(--transition);
    z-index: -1;
    height: 48px;
    box-sizing: border-box;

    &.has-helptext {
      padding-bottom: 0;
    }

    .indicator {
      width: 0;
      height: 0;
      margin-inline-end: 4px;
      margin-inline-start: 4px;
      background: var(--grey-subtitle-1);
      border-radius: 5px;
      // using border will show up in Windows High Contrast Mode to improve accessibility.
      border: 3px solid var(--in-content-button-text-color);
      opacity: 0.35;
      box-sizing: inherit;

      &.current {
        opacity: 1;
        border-color: var(--checkbox-checked-bgcolor);

        // This is the only step shown, so visually hide it to maintain spacing.
        &:last-of-type:first-of-type {
          opacity: 0;
        }
      }
    }

    &.progress-bar {
      height: 6px;
      padding-block: 0;
      margin-block: 42px 0;
      background-color: color-mix(in srgb, var(--in-content-button-text-color) 25%, transparent);
      justify-content: start;
      opacity: 1;
      transition: none;

      .indicator {
        width: 100%;
        height: 100%;
        margin-inline: -1px;
        background-color: var(--checkbox-checked-bgcolor);
        border: 0;
        border-radius: 0;
        opacity: 1;
        transition: var(--progress-bar-transition);
        translate: calc(var(--progress-bar-progress, 0%) - 100%);

        &:dir(rtl) {
          translate: calc(var(--progress-bar-progress, 0%) * -1 + 100%);
        }
      }
    }
  }

  .additional-cta-container {
    &[flow] {
      display: flex;
      flex-flow: column wrap;
      align-items: center;

      &[flow='row'] {
        flex-direction: row;
        justify-content: center;

        .secondary-cta {
          flex-basis: 100%;
        }
      }
    }
  }

  .primary,
  .secondary,
  .additional-cta {
    font-size: 13px;
    line-height: 16px;
    padding: 11px 15px;
    transition: var(--transition);

    &.rtamo {
      margin-top: 24px;
    }
  }

  .secondary {
    background-color: var(--in-content-button-background);
    color: var(--in-content-button-text-color);
  }

  // Styles specific to background noodles, with screen-by-screen positions
  .noodle {
    display: block;
    background-repeat: no-repeat;
    background-size: 100% 100%;
    position: absolute;
    transition: var(--transition);

    // Flip noodles in a way that combines individual transforms.
    &:dir(rtl) {
      scale: -1 1;
    }
  }

  .outline-L {
    background-image: url('chrome://activity-stream/content/data/content/assets/noodle-outline-L.svg');
  }

  .solid-L {
    background-image: url('chrome://activity-stream/content/data/content/assets/noodle-solid-L.svg');
    -moz-context-properties: fill;
    fill: var(--in-content-page-background);
    display: none;
  }

  .purple-C {
    background-image: url('chrome://activity-stream/content/data/content/assets/noodle-C.svg');
    -moz-context-properties: fill;
    fill: #E7258C;
  }

  .orange-L {
    background-image: url('chrome://activity-stream/content/data/content/assets/noodle-solid-L.svg');
    -moz-context-properties: fill;
    fill: #FFA437;
  }

  .screen-1 {
    .section-main {
      z-index: 1;
      margin: auto;
    }

    // Position of noodles on second screen
    .outline-L {
      width: 87px;
      height: 80px;
      transform: rotate(10deg) translate(-30%, 200%);
      transition-delay: 0.4s;
      z-index: 2;
    }

    .orange-L {
      width: 550px;
      height: 660px;
      transform: rotate(-155deg) translate(11%, -18%);
      transition-delay: 0.2s;
    }

    .purple-C {
      width: 310px;
      height: 260px;
      transform: translate(-18%, -67%);
    }

    .yellow-circle {
      width: 165px;
      height: 165px;
      border-radius: 50%;
      transform: translate(230%, -5%);
      background: #952BB9;
      transition-delay: -0.2s;
    }
  }

  // Defining the timing of the transition-in for items within the dialog,
  // These longer delays are to allow for the dialog to slide down on first screen
  .dialog-initial {
    .brand-logo {
      transition-delay: 0.6s;
    }

    .welcome-text {
      transition-delay: 0.8s;
    }

    .tiles-theme-section,
    .multi-select-container,
    migration-wizard {
      transition-delay: 0.9s;
    }

    .primary,
    .secondary,
    .secondary-cta,
    .steps,
    .cta-link {
      transition-delay: 1s;
    }
  }

  // Delays for transitioning-in of intermediate screens
  .screen:not(.dialog-initial) {
    .tiles-theme-section,
    .multi-select-container,
    .colorway-text {
      transition-delay: 0.2s;
    }

    .primary,
    .secondary,
    .secondary-cta,
    .cta-link {
      transition-delay: 0.4s;
    }
  }

  .screen-2 {
    .section-main {
      z-index: 1;
      margin: auto;
    }

    // Position of noodles on third screen
    .outline-L {
      width: 87px;
      height: 80px;
      transform: rotate(250deg) translate(-420%, 425%);
      transition-delay: 0.2s;
      z-index: 2;
    }

    .orange-L {
      height: 800px;
      width: 660px;
      transform: rotate(35deg) translate(-10%, -7%);
      transition-delay: -0.4s;
    }

    .purple-C {
      width: 392px;
      height: 394px;
      transform: rotate(260deg) translate(-34%, -35%);
      transition-delay: -0.2s;
      fill: #952BB9;
    }

    .yellow-circle {
      width: 165px;
      height: 165px;
      border-radius: 50%;
      transform: translate(160%, 130%);
      background: #E7258C;
    }
  }

  &.transition-in {
    .noodle {
      opacity: 0;
      rotate: var(--rotate);
      scale: var(--scale);
    }

    .dialog-initial {
      .main-content,
      .dismiss-button {
        translate: 0 calc(-2 * var(--translate));
      }

      .brand-logo,
      .steps {
        opacity: 0;
        translate: 0 calc(-1 * var(--translate));
      }
    }

    .screen {
      .welcome-text,
      .multi-select-container,
      .tiles-theme-section,
      .colorway-text,
      .primary,
      .checkbox-container:not(.multi-select-item),
      .secondary,
      .secondary-cta:not(.top),
      .cta-link,
      migration-wizard {
        opacity: 0;
        translate: 0 calc(-1 * var(--translate));
      }

      &:not(.dialog-initial) {
        .steps:not(.progress-bar) {
          opacity: 0.2;
        }
      }
    }
  }

  &.transition-out {
    .noodle {
      opacity: 0;
      rotate: var(--rotate);
      scale: var(--scale);
      transition-delay: 0.2s;
    }

    .screen:not(.dialog-last) {
      .main-content {
        overflow: hidden;
      }

      .welcome-text,
      .multi-select-container {
        opacity: 0;
        translate: 0 var(--translate);
        transition-delay: 0.1s;
      }

      // content that is nested between inner main content and navigation CTAs
      // requires an additional 0.1s transition to avoid overlap
      .tiles-theme-section,
      .colorway-text,
      migration-wizard {
        opacity: 0;
        translate: 0 var(--translate);
        transition-delay: 0.2s;
      }

      .primary,
      .checkbox-container:not(.multi-select-item),
      .secondary,
      .secondary-cta:not(.top),
      .cta-link {
        opacity: 0;
        translate: 0 var(--translate);
        transition-delay: 0.3s;
      }

      .steps:not(.progress-bar) {
        opacity: 0.2;
        transition-delay: 0.5s;
      }
    }

    .dialog-last {
      .noodle {
        transition-delay: 0s;
      }

      .main-content,
      .dismiss-button {
        opacity: 0;
        translate: 0 calc(2 * var(--translate));
        transition-delay: 0.4s;
      }
    }
  }

  migration-wizard {
    width: unset;
    transition: var(--transition);

    &::part(buttons) {
      margin-top: 32px;
      justify-content: flex-start;
    }

    &::part(deck) {
      font-size: 0.83em;
    }
  }
}
