{
  config,
  lib,
  nixosVista,
  ...
}: let
  cfg = nixosVista.wofi;

  ############################################################
  # DEFAULT PRESET
  ############################################################

  defaultStyle = ''
       * {
      font-family: Noto Sans;
      color: #ffffff;
      background: transparent;

    }

    #window {
      background: rgba(0,20,20,0.5);
      border-radius: 9px;
      margin: auto;
      padding: 12px;

      border-style: solid;
      border-color: rgb(0,0,0);
      border-width: 1px;
    }

    #input {
      padding: 10px;
      border-radius: 8px;
      border-style: solid;
      border-width: 1px;
      border-color: rgb(0,0,0);
      margin: 8px;
      background-image: linear-gradient(to top, rgba(90,90,90,0.6), rgba(35,35,35,0.8));
      box-shadow: inset 0px -5px 8px rgba(0,0,0,0.4);
    }

    #outer-box {
      padding: 0px;
      box-shadow inset 0px 0px 8px rgba(0,0,0,1);
    }

    #inner-box {
      padding: 0px;
    }

    #entry {
      border-radius: 10px;
      border-width: 1px;
      border-style: solid;
      border-color: rgba(255,255,255,0.01);
      border-bottom-color: rgba(255,255,255,0.25);
      border-right-color: rgba(255,255,255,0.25);

      padding: 4px;
      margin: 4px;
      margin-left: 8px;
      margin-right: 8px;
      background-image: linear-gradient(to bottom, rgba(255,255,255,0.3)0%, rgba(20,20,20,0.2)50%, rgba(0,0,0,0.3)50%);
    }
    #entry:selected {
      background-color: rgba(0,255,255,0.4);
      outline: none;
      box-shadow: 0px 0px 6px rgba(0,0,0,0.4);
    }
    #img {
      margin-right: 6px;
    }
    #text {
      margin: 2px;
    }

  '';

  ############################################################
  # TRANSLUCENT PRESET (Real Glass Blur)
  ############################################################

  translucentStyle = ''

      * {
      font-family: Noto Sans;
      color: #ffffff;
      background: transparent;

    }

    #window {
      background: rgba(0,20,20,0.5);
      border-radius: 9px;
      margin: auto;
      padding: 12px;

      border-style: solid;
      border-color: rgb(0,0,0);
      border-width: 1px;
    }

    #input {
      padding: 10px;
      border-radius: 8px;
      border-style: solid;
      border-width: 1px;
      border-color: rgb(0,0,0);
      margin: 8px;
      background-image: linear-gradient(to top, rgba(90,90,90,0.6), rgba(35,35,35,0.8));
      box-shadow: inset 0px -5px 8px rgba(0,0,0,0.4);
    }

    #outer-box {
      padding: 0px;
      box-shadow inset 0px 0px 8px rgba(0,0,0,1);
    }

    #inner-box {
      padding: 0px;
    }

    #entry {
      border-radius: 10px;
      border-width: 1px;
      border-style: solid;
      border-color: rgba(255,255,255,0.01);
      border-bottom-color: rgba(255,255,255,0.25);
      border-right-color: rgba(255,255,255,0.25);

      padding: 4px;
      margin: 4px;
      margin-left: 8px;
      margin-right: 8px;
      background-image: linear-gradient(to bottom, rgba(255,255,255,0.3)0%, rgba(20,20,20,0.2)50%, rgba(0,0,0,0.3)50%);
    }
    #entry:selected {
      background-color: rgba(0,255,255,0.4);
      outline: none;
      box-shadow: 0px 0px 6px rgba(0,0,0,0.4);
    }
    #img {
      margin-right: 6px;
    }
    #text {
      margin: 2px;
    }

  '';

  ############################################################
  # OPAQUE PRESET
  ############################################################

  opaqueStyle = ''
       * {
      font-family: Noto Sans;
      color: #ffffff;
      background: transparent;

    }

    #window {
      background-image: linear-gradient(to bottom, rgb(200,200,200), rgb(160,160,160));
      border-radius: 9px;
      margin: auto;
      padding: 12px;

      border-style: solid;
      border-color: rgb(0,0,0);
      border-width: 1px;
    }

    #input {
      padding: 10px;
      border-radius: 8px;
      border-style: solid;
      border-width: 1px;
      border-color: rgb(18,18,18);
      margin: 8px;
      background-image: linear-gradient(to top, rgb(190,190,190), rgb(130,130,130));
    }

    #outer-box {
      padding: 0px;
      box-shadow inset 0px 0px 8px rgba(0,0,0,1);
    }

    #inner-box {
      padding: 0px;
    }

    #entry {
      border-radius: 10px;
      padding: 4px;
      margin: 4px;
      margin-left: 8px;
      margin-right: 8px;
      background-image: linear-gradient(to bottom, rgba(130,130,130,0.6), rgba(20,20,20,0.8));
      border-style: solid;
      border-width: 1px;
      border-color: rgb(18,18,18);
    }
    #entry:selected {
      background-color: rgba(0,255,255,0.5);
      outline: none;
      box-shadow: 0px 0px 5px rgba(0,0,0,0.35);
    }
    #img {
      margin-right: 6px;
    }
    #text {
      margin: 2px;
    }

  '';

  ############################################################
  # SELECT PRESET
  ############################################################

  selectedStyle =
    if cfg.style.preset == "default"
    then defaultStyle
    else if cfg.style.preset == "translucent"
    then translucentStyle
    else if cfg.style.preset == "opaque"
    then opaqueStyle
    else "";
in {
  programs.wofi = lib.mkIf (cfg.enable && cfg.style.preset != "none") {
    style = selectedStyle;
  };
}
