/* ==UserStyle==
@name           NixOS Search Catppuccin
@namespace      github.com/catppuccin/userstyles/nixos-search
@homepageURL    https://github.com/catppuccin/userstyles/tree/main/styles/nixos-search
@version        0.3.0
@description    Soothing pastel theme for NixOS Search
@author         Catppuccin
@updateURL      https://github.com/catppuccin/userstyles/raw/main/styles/nixos-search/catppuccin.user.css
@license        MIT

@preprocessor less
@var select lightFlavor "Light Flavor" ["latte:Latte*", "frappe:Frappé", "macchiato:Macchiato", "mocha:Mocha"]
@var select darkFlavor "Dark Flavor" ["latte:Latte", "frappe:Frappé", "macchiato:Macchiato", "mocha:Mocha*"]
@var select accentColor "Accent" ["rosewater:Rosewater", "flamingo:Flamingo", "pink:Pink", "mauve:Mauve", "red:Red", "maroon:Maroon", "peach:Peach", "yellow:Yellow", "green:Green", "teal:Teal", "blue:Blue*", "sapphire:Sapphire", "sky:Sky", "lavender:Lavender", "subtext0:Gray"]
==/UserStyle== */
@-moz-document domain("search.nixos.org") {
  @media (prefers-color-scheme: light) {
    #catppuccin(@lightFlavor, @accentColor);
  }

  @media (prefers-color-scheme: dark) {
    #catppuccin(@darkFlavor, @accentColor);
  }

  #catppuccin(@lookup, @accent) {
    @rosewater: @catppuccin[@@lookup][@rosewater];
    @flamingo: @catppuccin[@@lookup][@flamingo];
    @pink: @catppuccin[@@lookup][@pink];
    @mauve: @catppuccin[@@lookup][@mauve];
    @red: @catppuccin[@@lookup][@red];
    @maroon: @catppuccin[@@lookup][@maroon];
    @peach: @catppuccin[@@lookup][@peach];
    @yellow: @catppuccin[@@lookup][@yellow];
    @green: @catppuccin[@@lookup][@green];
    @teal: @catppuccin[@@lookup][@teal];
    @sky: @catppuccin[@@lookup][@sky];
    @sapphire: @catppuccin[@@lookup][@sapphire];
    @blue: @catppuccin[@@lookup][@blue];
    @lavender: @catppuccin[@@lookup][@lavender];
    @text: @catppuccin[@@lookup][@text];
    @subtext1: @catppuccin[@@lookup][@subtext1];
    @subtext0: @catppuccin[@@lookup][@subtext0];
    @overlay2: @catppuccin[@@lookup][@overlay2];
    @overlay1: @catppuccin[@@lookup][@overlay1];
    @overlay0: @catppuccin[@@lookup][@overlay0];
    @surface2: @catppuccin[@@lookup][@surface2];
    @surface1: @catppuccin[@@lookup][@surface1];
    @surface0: @catppuccin[@@lookup][@surface0];
    @base: @catppuccin[@@lookup][@base];
    @mantle: @catppuccin[@@lookup][@mantle];
    @crust: @catppuccin[@@lookup][@crust];
    @accent-color: @catppuccin[@@lookup][@@accent];

    /* Generic */
    html,
    body {
      background-color: @base;
      color: @text;
    }

    code,
    pre {
      color: @red;
      background-color: @surface0;
      border: none;
    }

    a,
    a:hover,
    a:focus {
      color: @accent-color;
      outline: none;
    }

    /* Navbar */
    .navbar .navbar-static-top {
      background-color: @mantle;
    }

    .navbar-inner {
      background-color: @mantle;
      background-image: none;
      border: 1px solid @base;
    }

    .nav-tabs {
      border-bottom: 1px solid @surface0;
    }

    .nav-tabs > .active > a,
    .nav-tabs > .active > a:hover,
    .nav-tabs > .active > a:focus {
      background-color: @base;
      border: 1px solid @surface0;
      color: @text;
    }

    .navbar .nav > li > a {
      text-shadow: none;
      color: @subtext0;
    }

    .navbar .nav > li > a:focus,
    .navbar .nav > li > a:hover {
      color: @text;
      border: none;
    }

    .navbar .nav > .active > a,
    .navbar .nav > .active > a:hover,
    .navbar .nav > .active > a:focus {
      background-color: @surface0;
      color: @text;
    }

    /* Installation instructions tabs */
    .nav > li > a:hover,
    .nav > li > a:focus {
      background-color: @surface0;
      border: 1px solid @surface0;
    }

    /* "Experimental" label */
    .label,
    .badge {
      background-color: @accent-color;
      color: @crust;
      text-shadow: none;
    }

    /* Buttons */
    .btn {
      background-color: @surface0;
      background-image: none;
      text-shadow: none;
      box-shadow: none;
      color: @text;
      border: 1px solid @base;
    }

    .btn:focus {
      outline: none;
      color: @text;
      background-color: @surface1;
    }

    .btn:hover,
    .btn:active,
    .btn.active,
    .btn.disabled,
    .btn[disabled] {
      background-color: @surface1;
      color: @text;
    }

    /* "Sort" menu */
    .dropdown-menu {
      background-color: @mantle;
      border: 1px solid @crust;
      box-shadow: 0 5px 10px @mantle;
    }

    .dropdown-menu > li > a {
      color: @text;
    }

    .dropdown-menu > li > a:hover,
    .dropdown-menu > li > a:focus,
    .dropdown-submenu:hover > a,
    .dropdown-submenu:focus > a {
      background-color: @surface0;
      background-image: none;
    }

    .dropdown-menu .divider {
      background-color: @surface0;
      border-bottom: @surface0;
    }

    .dropdown .caret {
      border-top: 4px solid @text;
    }

    /* Overrides menu item hover color */
    .search-page
      > .search-results
      > div
      > :first-child
      > div:first-child
      > ul
      > li
      > a {
      color: @text;
    }

    /* Loading indicator */
    .loader {
      color: @crust;
    }

    /* Input box */
    textarea,
    input[type="text"],
    input[type="password"],
    input[type="datetime"],
    input[type="datetime-local"],
    input[type="date"],
    input[type="month"],
    input[type="time"],
    input[type="week"],
    input[type="number"],
    input[type="email"],
    input[type="url"],
    input[type="search"],
    input[type="tel"],
    input[type="color"],
    .uneditable-input {
      background-color: @surface0;
      color: @text;
      border: 1px solid @base;
    }

    textarea:focus,
    input[type="text"]:focus,
    input[type="password"]:focus,
    input[type="datetime"]:focus,
    input[type="datetime-local"]:focus,
    input[type="date"]:focus,
    input[type="month"]:focus,
    input[type="time"]:focus,
    input[type="week"]:focus,
    input[type="number"]:focus,
    input[type="email"]:focus,
    input[type="url"]:focus,
    input[type="search"]:focus,
    input[type="tel"]:focus,
    input[type="color"]:focus,
    .uneditable-input:focus {
      border-color: @accent-color;
      box-shadow:
        inset 0 1px 1px @crust,
        0 0 8px @accent-color;
    }

    /* Fix input box placeholder text */
    textarea::placeholder,
    input[type="text"]::placeholder,
    input[type="password"]::placeholder,
    input[type="datetime"]::placeholder,
    input[type="datetime-local"]::placeholder,
    input[type="date"]::placeholder,
    input[type="month"]::placeholder,
    input[type="time"]::placeholder,
    input[type="week"]::placeholder,
    input[type="number"]::placeholder,
    input[type="email"]::placeholder,
    input[type="url"]::placeholder,
    input[type="search"]::placeholder,
    input[type="tel"]::placeholder,
    input[type="color"]::placeholder,
    .uneditable-input::placeholder {
      color: @subtext0;
    }

    /* Search results */
    .search-page > .search-results > div > :nth-child(2) > li {
      border-bottom: 1px solid @surface0;
    }

    .search-page > .search-results > div > :nth-child(2) > li > :first-child {
      color: @accent-color;
    }

    .search-page
      > .search-results
      > div
      > :nth-child(2)
      > li.package
      > :nth-child(5)
      > :nth-child(2)
      ul.nav-tabs
      > li
      > a {
      color: @text;
    }

    .search-page
      > .search-results
      > div
      > :nth-child(2)
      > li.package
      > :nth-child(5)
      > :nth-child(2)
      pre {
      color: @text;
      background-color: @mantle;
      border: none;
    }

    .search-page
      > .search-results
      > div
      > :nth-child(2)
      > li.package
      .result-item-show-more {
      background-color: @base;
      color: @text;
    }

    .search-page
      > .search-results
      > div
      > :nth-child(2)
      > li.package
      > :nth-child(3)
      > li {
      color: @text;
    }

    .search-page
      > .search-results
      > div
      > :nth-child(2)
      > li.package
      > :nth-child(5)
      > :nth-child(2)
      div.tab-content {
      border: 1px solid @surface0;
    }

    .search-page
      > .search-results
      > div
      > :nth-child(2)
      > li.option
      > :nth-child(2)
      > div:nth-child(2n)
      pre
      code {
      color: @text;
      background-color: @mantle;
    }

    /* Search sidebar */
    .search-page ul.search-sidebar > li {
      border-color: @surface0;
    }

    .search-page ul.search-sidebar > li > ul > li > a {
      color: @text;
    }

    .search-page ul.search-sidebar > li > ul > li > a:hover {
      background-color: @surface0;
    }

    .search-page ul.search-sidebar > li > ul > li > a.selected {
      color: @crust;
      background-color: @accent-color;
    }

    /* Override sidebar labels (number of packages) */
    .search-sidebar .label,
    .search-sidebar .badge {
      background-color: @surface0;
      color: @text;
      text-shadow: none;
    }

    /* Pager */
    .pager li > a,
    .pager li > span {
      color: @text;
      background-color: @surface0;
      border: none;
      border-radius: 5px;
    }

    .pager li > a:hover,
    .pager li > a:focus {
      background-color: @surface1;
      transition: all;
      transition-duration: 5ms;
    }

    .pager .disabled > a,
    .pager .disabled > a:hover,
    .pager .disabled > a:focus,
    .pager .disabled > span {
      color: @text;
      background-color: @mantle;
      border: none;
      border-radius: 5px;
    }
  }
}

@catppuccin: {
  @latte: {
    @rosewater: #dc8a78;
    @flamingo: #dd7878;
    @pink: #ea76cb;
    @mauve: #8839ef;
    @red: #d20f39;
    @maroon: #e64553;
    @peach: #fe640b;
    @yellow: #df8e1d;
    @green: #40a02b;
    @teal: #179299;
    @sky: #04a5e5;
    @sapphire: #209fb5;
    @blue: #1e66f5;
    @lavender: #7287fd;
    @text: #4c4f69;
    @subtext1: #5c5f77;
    @subtext0: #6c6f85;
    @overlay2: #7c7f93;
    @overlay1: #8c8fa1;
    @overlay0: #9ca0b0;
    @surface2: #acb0be;
    @surface1: #bcc0cc;
    @surface0: #ccd0da;
    @base: #eff1f5;
    @mantle: #e6e9ef;
    @crust: #dce0e8;
  };
  @frappe: {
    @rosewater: #f2d5cf;
    @flamingo: #eebebe;
    @pink: #f4b8e4;
    @mauve: #ca9ee6;
    @red: #e78284;
    @maroon: #ea999c;
    @peach: #ef9f76;
    @yellow: #e5c890;
    @green: #a6d189;
    @teal: #81c8be;
    @sky: #99d1db;
    @sapphire: #85c1dc;
    @blue: #8caaee;
    @lavender: #babbf1;
    @text: #c6d0f5;
    @subtext1: #b5bfe2;
    @subtext0: #a5adce;
    @overlay2: #949cbb;
    @overlay1: #838ba7;
    @overlay0: #737994;
    @surface2: #626880;
    @surface1: #51576d;
    @surface0: #414559;
    @base: #303446;
    @mantle: #292c3c;
    @crust: #232634;
  };
  @macchiato: {
    @rosewater: #f4dbd6;
    @flamingo: #f0c6c6;
    @pink: #f5bde6;
    @mauve: #c6a0f6;
    @red: #ed8796;
    @maroon: #ee99a0;
    @peach: #f5a97f;
    @yellow: #eed49f;
    @green: #a6da95;
    @teal: #8bd5ca;
    @sky: #91d7e3;
    @sapphire: #7dc4e4;
    @blue: #8aadf4;
    @lavender: #b7bdf8;
    @text: #cad3f5;
    @subtext1: #b8c0e0;
    @subtext0: #a5adcb;
    @overlay2: #939ab7;
    @overlay1: #8087a2;
    @overlay0: #6e738d;
    @surface2: #5b6078;
    @surface1: #494d64;
    @surface0: #363a4f;
    @base: #24273a;
    @mantle: #1e2030;
    @crust: #181926;
  };
  @mocha: {
    @rosewater: #f5e0dc;
    @flamingo: #f2cdcd;
    @pink: #f5c2e7;
    @mauve: #cba6f7;
    @red: #f38ba8;
    @maroon: #eba0ac;
    @peach: #fab387;
    @yellow: #f9e2af;
    @green: #a6e3a1;
    @teal: #94e2d5;
    @sky: #89dceb;
    @sapphire: #74c7ec;
    @blue: #89b4fa;
    @lavender: #b4befe;
    @text: #cdd6f4;
    @subtext1: #bac2de;
    @subtext0: #a6adc8;
    @overlay2: #9399b2;
    @overlay1: #7f849c;
    @overlay0: #6c7086;
    @surface2: #585b70;
    @surface1: #45475a;
    @surface0: #313244;
    @base: #1e1e2e;
    @mantle: #181825;
    @crust: #11111b;
  };
};