/* Edge-Frfox - content/newtab.css */

/*
  MARK: Default colours
*/
@-moz-document url-prefix("about:newtab"),
url-prefix("about:home"),
url-prefix("about:firefoxview") {
  :root:not([lwt-newtab], [lwt-newtab-brighttext]) {
    --newtab-background-color: #F7F7F7 !important;
    --newtab-background-color-secondary: #fff !important;
    --newtab-text-primary-color: #252525 !important;
    --newtab-primary-action-background: #0078D4 !important;
    --newtab-text-secondary-color: color-mix(in srgb, var(--newtab-text-primary-color) 80%, transparent) !important;
    --newtab-element-hover-color: color-mix(in srgb, var(--newtab-background-color) 95%, #000) !important;
    --newtab-element-active-color: color-mix(in srgb, var(--newtab-background-color) 90%, #000) !important;
    --newtab-element-secondary-color: color-mix(in srgb, currentColor 5%, transparent) !important;
    --newtab-element-secondary-hover-color: color-mix(in srgb, currentColor 12%, transparent) !important;
    --newtab-element-secondary-active-color: color-mix(in srgb, currentColor 25%, transparent) !important;
    --newtab-primary-element-hover-color: color-mix(in srgb, var(--newtab-primary-action-background) 90%, #000) !important;
    --newtab-primary-element-active-color: color-mix(in srgb, var(--newtab-primary-action-background) 80%, #000) !important;
    --newtab-primary-element-text-color: #fff !important;
    --newtab-primary-action-background-dimmed: color-mix(in srgb, var(--newtab-primary-action-background) 25%, transparent) !important;
    --newtab-border-color: color-mix(in srgb, var(--newtab-background-color) 75%, #000) !important;
    --newtab-wordmark-color: #737373 !important;
    --newtab-status-success: #50B080 !important;
    --newtab-status-error: #FF848A !important;
    --newtab-inner-box-shadow-color: rgb(0 0 0 / .1) !important;
    --newtab-overlay-color: color-mix(in srgb, var(--newtab-background-color) 85%, transparent) !important;
    --newtab-text-emphasis-background: #FFED32 !important;
    --newtab-text-emphasis-text-color: #000 !important;
    --newtab-textbox-focus-color: var(--newtab-primary-action-background) !important;
    --newtab-textbox-focus-boxshadow: 0 0 0 1px var(--newtab-primary-action-background), 0 0 0 4px rgba(var(--newtab-primary-action-background), 0.3) !important;
    --newtab-button-secondary-color: inherit !important;
  }

  :root:not([style*="color"])[lwt-newtab-brighttext] {
    --newtab-background-color: #252525 !important;
    --newtab-background-color-secondary: #4A4A4A !important;
    --newtab-text-primary-color: #fff !important;
    --newtab-primary-action-background: #75B6E8 !important;
    --newtab-element-hover-color: color-mix(in srgb, var(--newtab-background-color) 95%, #FFF) !important;
    --newtab-element-active-color: color-mix(in srgb, var(--newtab-background-color) 90%, #FFF) !important;
    --newtab-element-secondary-color: color-mix(in srgb, currentColor 10%, transparent) !important;
    --newtab-element-secondary-hover-color: color-mix(in srgb, currentColor 17%, transparent) !important;
    --newtab-element-secondary-active-color: color-mix(in srgb, currentColor 30%, transparent) !important;
    --newtab-border-color: color-mix(in srgb, var(--newtab-background-color) 75%, #FFF) !important;
    --newtab-primary-element-text-color: #252525 !important;
    --newtab-wordmark-color: #fff !important;
    --newtab-status-success: #50B080 !important;
  }

  /*
    MARK: Custom GTK colours
  */
  @media (-moz-gtk-csd-available) {
    :root:not([lwt-newtab]):not([style*="color"]) {
      /* Colour adjusted for readability. */
      --uc-accent-adjusted: light-dark(color-mix(in oklch, AccentColor 92%, black), color-mix(in oklch, AccentColor 60%, white));
      --newtab-background-color: light-dark(-moz-dialog, color-mix(in srgb, -moz-dialog 82%, black)) !important;
      --newtab-background-color-secondary: light-dark(Field, color-mix(in srgb, -moz-dialog 86%, white)) !important;
      --newtab-text-primary-color: -moz-dialogtext !important;
      --newtab-wordmark-color: light-dark(color-mix(in srgb, -moz-dialogtext 65%, transparent), -moz-dialogtext) !important;
      --newtab-primary-action-background: var(--uc-accent-adjusted) !important;
    }
  }

  /* Adjustments for themes. */
  :root[style*="--newtab-background-color"] {
    /* Make the Firefox logo workmark follow text colour. */
    --newtab-wordmark-color: color-mix(in srgb, var(--newtab-text-primary-color) 60%, var(--newtab-background-color)) !important;

    /* If there is no secondary background, create one from other colours. */
    &:not([style*="--newtab-background-color-secondary"]) {
      --newtab-background-color-secondary: color-mix(in srgb, var(--newtab-background-color) 15%, white) !important;
    }

    /* Dark adjustments for themes. */
    &[lwt-newtab-brighttext] {
      /* Make the Firefox logo workmark follow text colour. */
      --newtab-wordmark-color: var(--newtab-text-primary-color) !important;

      /* If there is no secondary background, create one from other colours. */
      &:not([style*="--newtab-background-color-secondary"]) {
        --newtab-background-color-secondary: color-mix(in srgb, var(--newtab-text-primary-color) 15%, var(--newtab-background-color)) !important;
      }
    }
  }
}

/*
  MARK: New tab page
*/
@-moz-document url-prefix("about:newtab"),
url-prefix("about:home") {
  /* Enforce system font selection. */
  :where(body) {
    font-family: system-ui !important;
  }

  /* Hide pin icons. */
  .icon.icon-pin-small {
    display: none !important;
  }

  /* Unpinned sites have lower opacity titles. */
  .top-site-button .title:not(.pinned) {
    opacity: 0.7 !important;
  }

  /*
    MARK: Search bar
  */
  .search-wrapper {
    & .search-handoff-button {
      border-radius: 99px !important;
      background-position: 12px !important;
      padding-inline-start: 48px !important;
      white-space: nowrap !important;
      text-overflow: ellipsis !important;
      --elevation: 4;
      box-shadow:
        0 0 calc((var(--elevation) * 0.225px) + 2px) rgb(0 0 0 / .11),
        0 calc(var(--elevation) * 0.4px) calc((var(--elevation) * 0.9px)) rgb(0 0 0 / .13) !important;

      &:hover {
        --elevation: 6;
      }
    }

    & .search-inner-wrapper {
      min-height: 44px !important;
    }

    &.fake-focus:not(.search.disabled) .search-handoff-button {
      border-color: transparent !important;
      outline: 2px solid var(--newtab-primary-action-background) !important;
      outline-offset: -1px !important;
    }

    &.search-disabled .search-handoff-button {
      opacity: 0 !important;
    }

    .search-handoff-button .fake-caret {
      inset-inline-start: 48px !important;
      top: 13px !important;
    }

    @media (height > 700px) {
      .fixed-search & {
        padding: 15px 0 !important;
        min-height: auto !important;
        border-bottom: none !important;
      }
    }
  }

  .fake-textbox {
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }

  .outer-wrapper.only-search {
    display: flex !important;
    padding: 30px !important;
  }

  /* Sticky search bar header when scrolling. */
  @media (height > 700px) {
    body:not(.inline-onboarding) .fixed-search.visible-logo main {
      padding-top: 246px !important;

      @media (-moz-bool-pref: "uc.tweak.hide-newtab-logo") {
        padding-top: 82px !important;
      }
    }
  }

  .icon-settings {
    background-image: url("../icons/settings.svg") !important;
  }

  /*
    MARK: Top sites tiles
  */
  .top-site-outer {
    & .tile {
      border-radius: 12px !important;
      height: 44px !important;
      width: 44px !important;
      box-shadow: rgb(0 0 0 / 0.1) 0px 2px 4px !important;

      & .icon-wrapper {
        border-radius: 4px !important;
        width: 24px !important;
        height: 24px !important;

        &.letter-fallback::before {
          font-size: 32px !important;
        }
      }
    }

    & .default-icon,
    & .search-topsite {
      background-size: 16px !important;
      height: 24px !important;
      width: 24px !important;
    }
  }

  /*
    MARK: Recent activity cards
  */
  .card-outer {
    --uc-border-radius: 8px;

    &,
    & .card,
    & .ds-card-grid.ds-card-grid-border .ds-card:not(.placeholder) {
      border-radius: var(--uc-border-radius) !important;
    }

    & .card,
    & .ds-card-grid.ds-card-grid-border .ds-card:not(.placeholder) {
      box-shadow:
        rgb(0 0 0 / 0.14) 0px 1px 2px,
        rgb(0 0 0 / 0.12) 0px 0px 2px !important;
    }

    & .card-preview-image-outer,
    & .ds-card-grid.ds-card-grid-border .ds-card:not(.placeholder) .img-wrapper .img img {
      border-radius: var(--uc-border-radius) var(--uc-border-radius) 0 0 !important
    }
  }

  /* Add background & adjust padding for Recent activity & Pocket section. */
  .collapsible-section:not(.top-sites) {
    background-color: var(--newtab-background-color) !important;
    border-radius: 12px !important;
    padding: 10px 20px 20px !important;

    & .section-list {
      gap: 12px !important;
    }
  }

  @media (-moz-bool-pref: "uc.tweak.hide-newtab-logo") {
    .logo-and-wordmark {
      display: none !important;
    }

    .outer-wrapper:not(.fixed-search) .search-wrapper {
      padding-top: 0 !important;
    }
  }
}

/*
  MARK: Private browsing
*/
@-moz-document url-prefix(about:privatebrowsing) {
  :root {
    --uc-wordmark-color: light-dark(#737373, #fff);
    --uc-background-color-secondary: light-dark(#fff, #4a4a4a);

    @media (-moz-bool-pref: "browser.theme.dark-private-windows") {
      color-scheme: dark !important;
    }
  }

  /* Custom GTK colours. */
  @media (-moz-gtk-csd-available) {
    :root:not([lwt-newtab]):not([style*="color"]) {
      /* Colour adjusted for readability. */
      --uc-accent-adjusted: light-dark(color-mix(in oklch, AccentColor 92%, black), color-mix(in oklch, AccentColor 60%, white));
      --in-content-page-background: light-dark(-moz-dialog, color-mix(in srgb, -moz-dialog 82%, black)) !important;
      --uc-background-color-secondary: light-dark(Field, color-mix(in srgb, -moz-dialog 86%, white)) !important;
      --in-content-page-color: -moz-dialogtext !important;
      --in-content-focus-outline-color: var(--uc-accent-adjusted) !important;
    }
  }

  /*
    MARK: Search bar
  */
  .search-inner-wrapper {
    height: 44px !important;
    
    .search-handoff-button,
    .search-handoff-button:active,
    .search-handoff-button:enabled:hover:active {
      background-color: var(--uc-background-color-secondary) !important;
      border: 0 !important;
      border-radius: 99px !important;
      padding-inline-start: 48px !important;
      --elevation: 4;
      box-shadow:
      0 0 calc((var(--elevation) * 0.225px) + 2px) rgb(0 0 0 / .11),
      0 calc(var(--elevation) * 0.4px) calc((var(--elevation) * 0.9px)) rgb(0 0 0 / .13) !important;
      
      &:hover {
        --elevation: 6;
      }
      
      &.focused:not(.disabled) {
        box-shadow: none !important;
        outline: 2px solid var(--in-content-focus-outline-color) !important;
        outline-offset: -1px !important;
      }
      
      &.disabled {
        opacity: 0 !important;
      }
      
      & .fake-textbox {
        color: var(--in-content-page-color) !important;
      }
    }
  }

  .wordmark {
    fill: var(--uc-wordmark-color) !important;
  }

  /* Information box in private browsing. */
  .info {
    background-color: var(--uc-background-color-secondary) !important;
    background-image: none !important;
    position: relative !important;

    /* Private browsing icon. */
    &::before {
      content: "";
      position: absolute;
      left: 32px;
      top: 20px;
      height: 32px;
      aspect-ratio: 1 / 1;
      background: center / contain url("../icons/account-private.svg");
      border-radius: 99px;
    }
  }

}

/*
  MARK: Background images
*/
@media (-moz-bool-pref: "uc.tweak.newtab-background") {
  @-moz-document url(about:newtab),
  url(about:home),
  url(about:privatebrowsing) {
    body {
      /* Specify both jpg and png file extensions, but jpg images will always
       * have a higher priority. */
      --bg-0: url(../background-0.jpg), url(../background-0.png);
      --bg-1: url(../background-1.jpg), url(../background-1.png);
      --newtab-element-hover-color: rgb(239 239 239 / .3) !important;
      --newtab-element-active-color: rgb(239 239 239 / .45) !important;
      --text-shadow: 0 1px 2px #000;
      --icon-shadow: drop-shadow(0 0.3px 0.6px #000);
      background-color: #252525 !important;
      background-image: var(--bg-0) !important;
      background-position: center !important;
      background-size: cover !important;
      background-attachment: fixed !important;

      :root[lwt-newtab-brighttext] &,
      :root.private & {
        background-image: var(--bg-1), var(--bg-0) !important;
        --newtab-element-hover-color: rgb(66 66 66 / .4) !important;
        --newtab-element-active-color: rgb(66 66 66 / .55) !important;
      }

      @media not (-moz-bool-pref: "browser.theme.dark-private-windows") {
        :root.private & {
          background-image: var(--bg-0) !important;

          @media (prefers-color-scheme: dark) {
            background-image: var(--bg-1), var(--bg-0) !important;
          }
        }
      }
    }

    /* Change text colour & add backgrounds to text over the background. */
    .top-site-outer .title {
      text-shadow: var(--text-shadow) !important;
      color: #fff !important;
      -moz-osx-font-smoothing: auto !important;
    }

    .wordmark,
    .icon-settings,
    .top-site-outer .context-menu-button {
      filter: var(--icon-shadow) !important;
      color: #fff !important;
      fill: currentColor !important
    }

    .top-site-outer .title .sponsored-label {
      color: #eee !important;
    }

    /* Add transparent sticky search header. */
    @media (height > 700px) {
      .fixed-search .search-wrapper {
        border-bottom: 0 !important;
        background: transparent linear-gradient(#0004, transparent) !important;
      }
    }
  }
}
