/* 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/. */

%filter substitution
%define glassActiveBorderColor rgb(37, 44, 51)
%define glassInactiveBorderColor rgb(102, 102, 102)

@media (-moz-os-version: windows-win7),
       (-moz-os-version: windows-win8) {
  @media (-moz-windows-classic: 0) {
    :root[sizemode="normal"] #toolbar-menubar:not([autohide="true"]) > #menubar-items,
    :root[sizemode="normal"] #toolbar-menubar[autohide="true"][inactive] + #TabsToolbar > .toolbar-items {
      margin-top: 1px;
    }
    /**
     * Except for Windows 8, Windows 7 Aero and Windows 7 Aero Basic, the
     * -moz-window-button-box appearance on the .titlebar-buttonbox adds an
     * unwanted margin at the top of the button box.
     *
     * For Windows 8 and Windows Aero (which both use the compositor):
     *   We want the -moz-window-button-box applied in the restored case,
     *   and -moz-window-button-box-maximized in the maximized case.
     *
     * For Windows Aero Basic:
     *   The margin is also unwanted in the maximized case, but we want
     *   it in the restored window case.
     */
    :root[sizemode="normal"] .titlebar-buttonbox {
      appearance: auto;
      -moz-default-appearance: -moz-window-button-box;
    }

    @media (-moz-windows-compositor) {
      :root[sizemode="maximized"] .titlebar-buttonbox {
        appearance: auto;
        -moz-default-appearance: -moz-window-button-box-maximized;
      }
    }
  }
}

@media (-moz-windows-compositor) {
  @media not (-moz-os-version: windows-win7) {
    @media not (-moz-os-version: windows-win8) {
      @media (-moz-windows-default-theme) {
        :root:not(:-moz-lwtheme) {
          background-color: hsl(0, 0%, 78%);
        }

        @media (-moz-windows-accent-color-in-titlebar: 0) {
          :root[sizemode=normal][tabsintitlebar] {
            border-top: 1px solid rgba(0,0,0,.7);
          }
          :root[sizemode=normal][tabsintitlebar][always-use-accent-color-for-window-border]:not(:-moz-window-inactive) {
            border-top-color: -moz-accent-color;
          }
          :root[tabsintitlebar]:not(:-moz-lwtheme) {
            background-color: hsl(235,33%,19%);
            color: hsl(240,9%,98%);
          }
        }

        @media (-moz-windows-accent-color-in-titlebar) {
          :root[sizemode=normal][tabsintitlebar] {
            border-top: 1px solid -moz-accent-color;
          }
          :root[tabsintitlebar]:not(:-moz-window-inactive, :-moz-lwtheme),
          :root[tabsintitlebar]:not(:-moz-window-inactive)[lwt-default-theme-in-dark-mode] {
            background-color: -moz-accent-color;
            color: -moz-accent-color-foreground;
          }
          :root[tabsintitlebar][lwt-default-theme-in-dark-mode] #titlebar {
            --lwt-toolbarbutton-icon-fill: currentColor;
            --toolbarbutton-icon-fill-opacity: .7;
          }
        }

        :root[sizemode=normal][tabsintitlebar]:-moz-window-inactive {
          border-top-color: rgba(0,0,0,.3);
        }

        :root[tabsintitlebar] .tab-label:-moz-window-inactive {
          /* Calculated to match the opacity change of Windows Explorer
             titlebar text change for inactive windows. */
          opacity: .6;
        }

        @supports -moz-bool-pref("browser.proton.tabs.enabled") {
        :root[tabsintitlebar] .tab-icon-sound:-moz-window-inactive {
          opacity: .6;
        }
        } /*** END proton ***/
      }

      @media (-moz-windows-default-theme: 0) {
        :root[tabsintitlebar] {
          appearance: auto;
          -moz-default-appearance: -moz-win-glass;
        }

        :root[tabsintitlebar]:not(:-moz-lwtheme) {
          background-color: transparent;
        }

        /* On win10, if we don't set this on the entire browser container including
         * the sidebar, if the sidebar is open the accent color bleeds through in
         * the titlebar */
        :root[tabsintitlebar] #browser {
          appearance: auto;
          -moz-default-appearance: -moz-win-exclude-glass;
        }
      }

      .titlebar-buttonbox,
      .titlebar-button {
        appearance: none !important;
      }

      .titlebar-button {
        border: none;
        margin: 0 !important;
        padding: 8px 17px;
        -moz-context-properties: stroke;
        stroke: currentColor;
      }

      .titlebar-button > .toolbarbutton-icon {
        width: 12px;
        height: 12px;
      }

      .titlebar-min {
        list-style-image: url(chrome://browser/skin/window-controls/minimize.svg);
      }

      .titlebar-max {
        list-style-image: url(chrome://browser/skin/window-controls/maximize.svg);
      }

      .titlebar-restore {
        list-style-image: url(chrome://browser/skin/window-controls/restore.svg);
      }

      .titlebar-restore > .toolbarbutton-icon:-moz-locale-dir(rtl) {
        transform: scaleX(-1);
      }

      .titlebar-close {
        list-style-image: url(chrome://browser/skin/window-controls/close.svg);
      }

      :root[lwtheme-image] .titlebar-button {
        -moz-context-properties: unset;
      }
      :root[lwtheme-image] .titlebar-min {
        list-style-image: url(chrome://browser/skin/window-controls/minimize-themes.svg);
      }
      :root[lwtheme-image] .titlebar-max {
        list-style-image: url(chrome://browser/skin/window-controls/maximize-themes.svg);
      }
      :root[lwtheme-image] .titlebar-restore {
        list-style-image: url(chrome://browser/skin/window-controls/restore-themes.svg);
      }
      :root[lwtheme-image] .titlebar-close {
        list-style-image: url(chrome://browser/skin/window-controls/close-themes.svg);
      }

      /* the 12px image renders a 10px icon, and the 10px upscaled gets rounded to 12.5, which
       * rounds up to 13px, which makes the icon one pixel too big on 1.25dppx. Fix: */
      @media (min-resolution: 1.20dppx) and (max-resolution: 1.45dppx) {
        .titlebar-button > .toolbarbutton-icon {
          width: 11.5px;
          height: 11.5px;
        }
      }

      /* 175% dpi should result in the same device pixel sizes as 150% dpi. */
      @media (min-resolution: 1.70dppx) and (max-resolution: 1.95dppx) {
        .titlebar-button {
          padding-inline: 14.1px;
        }

        .titlebar-button > .toolbarbutton-icon {
          width: 10.8px;
          height: 10.8px;
        }
      }

      /* 225% dpi should result in the same device pixel sizes as 200% dpi. */
      @media (min-resolution: 2.20dppx) and (max-resolution: 2.45dppx) {
        .titlebar-button {
          padding-inline: 15.3333px;
        }

        .titlebar-button > .toolbarbutton-icon {
          width: 10.8px;
          height: 10.8px;
        }
      }

      /* 275% dpi should result in the same device pixel sizes as 250% dpi. */
      @media (min-resolution: 2.70dppx) and (max-resolution: 2.95dppx) {
        /* NB: todo: this should also change padding on the buttons
         * themselves, but without a device to test this on, it's
         * impossible to know by how much. */
        .titlebar-button > .toolbarbutton-icon {
          width: 10.8px;
          height: 10.8px;
        }
      }

      @media (-moz-windows-default-theme) {
        #main-menubar > menu[_moz-menuactive="true"] {
          color: inherit;
        }

        #main-menubar > menu[_moz-menuactive="true"],
        .titlebar-button:hover {
          background-color: hsla(0,0%,0%,.12);
        }
        .titlebar-button:hover:active {
          background-color: hsla(0,0%,0%,.22);
        }

        #toolbar-menubar[brighttext] > #menubar-items > #main-menubar > menu[_moz-menuactive="true"],
        toolbar[brighttext] .titlebar-button:not(.titlebar-close):hover {
          background-color: hsla(0,0%,100%,.22);
        }
        toolbar[brighttext] .titlebar-button:not(.titlebar-close):hover:active {
          background-color: hsla(0,0%,100%,.32);
        }

        .titlebar-close:hover {
          stroke: white;
          background-color: hsl(355,86%,49%);
        }
        .titlebar-close:hover:active {
          background-color: hsl(355,82%,69%);
        }

        .titlebar-button:not(:hover) > .toolbarbutton-icon:-moz-window-inactive {
          opacity: 0.5;
        }
      }

      @media (-moz-windows-default-theme: 0) {
        .titlebar-button {
          background-color: -moz-field;
          stroke: ButtonText;
        }
        .titlebar-button:hover {
          background-color: Highlight;
          stroke: HighlightText;
        }

        .titlebar-min {
          list-style-image: url(chrome://browser/skin/window-controls/minimize-highcontrast.svg);
        }

        .titlebar-max {
          list-style-image: url(chrome://browser/skin/window-controls/maximize-highcontrast.svg);
        }

        .titlebar-restore {
          list-style-image: url(chrome://browser/skin/window-controls/restore-highcontrast.svg);
        }

        .titlebar-close {
          list-style-image: url(chrome://browser/skin/window-controls/close-highcontrast.svg);
        }
      }
    }
  }

  @media (-moz-os-version: windows-win7),
         (-moz-os-version: windows-win8) {
    :root {
      background-color: transparent;
      appearance: auto;
      -moz-default-appearance: -moz-win-borderless-glass;
    }

    :root[sizemode="maximized"] .titlebar-buttonbox {
      margin-inline-end: 3px;
    }

    /* These should be hidden w/ glass enabled. Windows draws its own buttons. */
    .titlebar-button {
      display: none;
    }

    /* The borders on the glass frame are ours, and inside #browser, and on
     * win7 we want to make sure they are "glassy", so we can't use #browser
     * as the exclude-glass container. We use #appcontent instead. */
    #appcontent {
      appearance: auto;
      -moz-default-appearance: -moz-win-exclude-glass;
    }
  }

  @media (-moz-os-version: windows-win8) {
    /* Artificially draw window borders that are covered by lwtheme, see bug 591930.
     * Borders for win7 are below, win10 doesn't need them. */
    #main-window[sizemode="normal"] #navigator-toolbox:-moz-lwtheme {
      border-top: 1px solid @glassShadowColor@;
    }
  }

  :root[darkwindowframe="true"]:not(:-moz-window-inactive, :-moz-lwtheme) {
    color: white;
  }

  #appcontent:not(:-moz-lwtheme) {
    background-color: -moz-dialog;
  }
}

@media (-moz-windows-glass) {
  /* Set to full fill-opacity to improve visibility of toolbar buttons on aero glass. */
  #TabsToolbar:not(:-moz-lwtheme) {
    --toolbarbutton-icon-fill-opacity: 1;
  }

  #toolbar-menubar:not(:-moz-lwtheme) {
    text-shadow: 0 0 .5em white, 0 0 .5em white, 0 1px 0 rgba(255,255,255,.4);
  }

  #main-menubar:not(:-moz-lwtheme, :-moz-window-inactive) {
    background-color: rgba(255,255,255,.5);
    color: black;
    border-radius: 4px;
  }

  /* Artificially draw window borders that are covered by lwtheme, see bug 591930.
   * We use a different border for win8, and this is not necessary on win10+ */
  #main-window[sizemode="normal"] #navigator-toolbox:-moz-lwtheme {
    border-top: 1px solid @glassActiveBorderColor@;
    padding-top: 1px;
    box-shadow: 0 1px 0 rgba(255,255,255,.6) inset;
  }

  #main-window[sizemode="normal"] #navigator-toolbox:-moz-lwtheme:-moz-window-inactive {
    border-top-color: @glassInactiveBorderColor@;
  }
}

/* Aero Basic */
@media (-moz-windows-compositor: 0) {
  @media (-moz-windows-default-theme) {
    :root {
      background-color: rgb(185,209,234);
    }
    :root:-moz-window-inactive {
      background-color: rgb(215,228,242);
    }

    /* Render a window top border for lwthemes: */
    #main-window[tabsintitlebar][sizemode="normal"] #navigator-toolbox:-moz-lwtheme {
      background-image: linear-gradient(to bottom,
            @glassActiveBorderColor@ 0, @glassActiveBorderColor@ 1px,
            rgba(255,255,255,.6) 1px, rgba(255,255,255,.6) 2px, transparent 2px);
    }

    #main-window[tabsintitlebar][sizemode="normal"] #navigator-toolbox:-moz-lwtheme:-moz-window-inactive {
      background-image: linear-gradient(to bottom,
            @glassInactiveBorderColor@ 0, @glassInactiveBorderColor@ 1px,
            rgba(255,255,255,.6) 1px, rgba(255,255,255,.6) 2px, transparent 2px);
    }
  }

  #print-preview-toolbar:not(:-moz-lwtheme) {
    appearance: auto;
    -moz-default-appearance: -moz-win-browsertabbar-toolbox;
  }
}
