diff --git a/adblock2privoxy.cabal b/adblock2privoxy.cabal
--- a/adblock2privoxy.cabal
+++ b/adblock2privoxy.cabal
@@ -1,10 +1,10 @@
-name:                adblock2privoxy
-version:             2.0.2
-cabal-version:       >= 1.10
-build-type:          Simple
+name:           adblock2privoxy
+version:        2.1.0
+cabal-version:  >= 1.10
+build-type:     Simple
 tested-with:
-                     GHC==8.10.4
-author:              Alexey Zubritsky <adblock2privoxy@zubr.me>, Steven Thomas Smith <steve.t.smith@gmail.com>
+                GHC==8.10.7
+author:         Alexey Zubritsky <adblock2privoxy@zubr.me>, Steven Thomas Smith <steve.t.smith@gmail.com>
 data-files:
                 templates/ab2p.system.action,
                 templates/ab2p.system.filter
@@ -19,88 +19,88 @@
                 distribution/makeRpm.sh
                 distribution/debbuild/DEBIAN/control
                 distribution/makeDeb.sh
-license:             GPL-3
-maintainer:          Steven Thomas Smith <steve.t.smith@gmail.com>
-license-file:        LICENSE
-stability:           stable
-homepage:            https://github.com/essandess/adblock2privoxy
-category:            Web
-synopsis:            Convert adblock config files to privoxy format
+license:        GPL-3
+maintainer:     Steven Thomas Smith <steve.t.smith@gmail.com>
+license-file:   LICENSE
+stability:      stable
+homepage:       https://github.com/essandess/adblock2privoxy
+category:       Web
+synopsis:       Convert adblock config files to privoxy format
 description:
-                       AdBlock Plus browser plugin has great block list files provided by big community,
-                       but it is client software and cannot work on a server as proxy.
-                       .
-                       Privoxy proxy has good potential to block ads at server side,
-                       but it experiences acute shortage of updated block lists.
-                       .
-                       This software converts adblock lists to privoxy config files format.
-                       .
-                       Almost all adblock features are supported including
-                       .
-                       * block/unblock requests (on privoxy)
-                       .
-                       all syntax features are supported except for regex templates matching host name
-                       .
-                       * hide/unhide page elements (via CSS)
-                       .
-                       all syntax features are supported
-                       .
-                       * all block request options except for outdated ones:
-                       .
-                       Supported: script, image, stylesheet, object, xmlhttprequest, object-subrequest, subdocument,
-                       document, elemhide, other, popup, third-party, domain=..., match-case, donottrack
-                       .
-                       Unsupported: collapse, background, xbl, ping and dtd
+                AdBlock Plus browser plugin has great block list files provided by big community,
+                but it is client software and cannot work on a server as proxy.
+                .
+                Privoxy proxy has good potential to block ads at server side,
+                but it experiences acute shortage of updated block lists.
+                .
+                This software converts adblock lists to privoxy config files format.
+                .
+                Almost all adblock features are supported including
+                .
+                * block/unblock requests (on privoxy)
+                .
+                all syntax features are supported except for regex templates matching host name
+                .
+                * hide/unhide page elements (via CSS)
+                .
+                all syntax features are supported
+                .
+                * all block request options except for outdated ones:
+                .
+                Supported: script, image, stylesheet, object, xmlhttprequest, object-subrequest, subdocument,
+                document, elemhide, other, popup, third-party, domain=..., match-case, donottrack
+                .
+                Unsupported: collapse, background, xbl, ping and dtd
 
 
 executable adblock2privoxy
-  hs-source-dirs:  src
-  main-is:         Main.hs
+  hs-source-dirs:   src
+  main-is:          Main.hs
   default-language: Haskell2010
   default-extensions:
-                   RankNTypes,
-                   ScopedTypeVariables,
-                   FlexibleInstances,
-                   GeneralizedNewtypeDeriving,
-                   FlexibleContexts
+                RankNTypes,
+                ScopedTypeVariables,
+                FlexibleInstances,
+                GeneralizedNewtypeDeriving,
+                FlexibleContexts
   build-depends:
-                   base >= 4 && < 5,
-                   parsec,
-                   mtl,
-                   containers,
-                   filepath,
-                   directory,
-                   MissingH,
-                   parsec-permutation >= 0.1.2.0,
-                   time >=1.4,
-                   old-locale >=1.0,
-                   strict >=0.3,
-                   network >=2.4,
-                   http-conduit,
-                   text >=0.11,
-                   network-uri,
-                   case-insensitive
-  ghc-options:     -Wall
+                base >= 4 && < 5,
+                parsec,
+                mtl,
+                containers,
+                filepath,
+                directory,
+                MissingH >=1.4.3.0,
+                parsec-permutation >=0.1.2.0,
+                time >=1.4,
+                old-locale >=1.0,
+                strict >=0.3,
+                network >=2.4,
+                http-conduit,
+                text >=0.11,
+                network-uri,
+                case-insensitive
+  ghc-options:  -Wall
   other-modules:
-                   ElementBlocker,
-                   InputParser,
-                   Network,
-                   OptionsConverter,
-                   ParsecExt,
-                   Paths_adblock2privoxy,
-                   PatternConverter,
-                   PolicyTree,
-                   PopupBlocker,
-                   ProgramOptions,
-                   SourceInfo,
-                   Statistics,
-                   Task,
-                   Templates,
-                   UrlBlocker,
-                   Utils
+                ElementBlocker,
+                InputParser,
+                Network,
+                OptionsConverter,
+                ParsecExt,
+                Paths_adblock2privoxy,
+                PatternConverter,
+                PolicyTree,
+                PopupBlocker,
+                ProgramOptions,
+                SourceInfo,
+                Statistics,
+                Task,
+                Templates,
+                UrlBlocker,
+                Utils
 
 source-repository this
-  type:      git
-  location:  https://github.com/essandess/adblock2privoxy.git
-  subdir:    adblock2privoxy
-  tag:       v2.0.2
+  type:         git
+  location:     https://github.com/essandess/adblock2privoxy.git
+  subdir:       adblock2privoxy
+  tag:          v2.1.0
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,8 @@
+2.1.0
+	* Use TLS for CSS server to avoid mixed content errors
+	* Add --useHTTP option
+        * Update to ghc 8.10.7, lts-18.18 resolver
+
 2.0.2
         * Update to ghc 8.10.4, lts-17.11 resolver
 
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -35,7 +35,7 @@
                 then putStrLn "WARNING: CSS generation is not run because webserver domain is not specified"
                 else elemBlock (_webDir options) sourceInfoText parsed'
         urlBlock (_privoxyDir options) sourceInfoText parsed'
-        writeTemplateFiles (_privoxyDir options) (_cssDomain options)
+        writeTemplateFiles (_privoxyDir options) (_cssDomain options) (_useHTTP options)
         putStrLn $ "Run 'adblock2privoxy -t " ++ taskFile ++ "' every 1-2 days to process data updates."
         where
         parseSource manager sourceInfo = do
@@ -62,7 +62,7 @@
         setForeignEncoding utf8
         now <- getCurrentTime
         args <- getArgs
-        (options@(Options printVersion _ _ taskFile _ forced), urls) <- parseOptions args
+        (options@(Options printVersion _ _ taskFile _ _ forced), urls) <- parseOptions args
         (options', task) <- do
                 fileExists <- doesFileExist taskFile
                 if fileExists
diff --git a/src/ProgramOptions.hs b/src/ProgramOptions.hs
--- a/src/ProgramOptions.hs
+++ b/src/ProgramOptions.hs
@@ -22,6 +22,7 @@
      , _webDir      :: FilePath
      , _taskFile    :: FilePath
      , _cssDomain   :: String
+     , _useHTTP     :: Bool
      , _forced      :: Bool
      }
 
@@ -42,6 +43,9 @@
          (ReqArg (\ d opts -> opts { _cssDomain = d })
                  "DOMAIN")
          "Domain of CSS web server (required for Element Hide functionality)"
+     , Option "u"   ["useHTTP"]
+         (NoArg (\ opts -> opts { _useHTTP = True }))
+         "Use HTTP for CSS web server; the default is HTTPS to avoid mixed content"
      , Option "t"   ["taskFile"]
          (ReqArg (\ f opts -> opts { _taskFile = f })
                  "PATH")
@@ -56,13 +60,13 @@
    case getOpt Permute options argv of
       (opts,nonOpts,[]  ) ->
                 case foldl (flip id) emptyOptions opts of
-                        Options False "" _ "" _ _ -> writeError "Privoxy dir or task file should be specified.\n"
+                        Options False "" _ "" _ _ _ -> writeError "Privoxy dir or task file should be specified.\n"
                         opts'@Options{_showVersion = True} -> return (opts', nonOpts)
                         opts' -> return (setDefaults opts', nonOpts)
       (_,_,errs) -> writeError $ concat errs
    where
-        setDefaults opts@(Options _ (privoxyDir@(_:_)) "" _ _ _) = setDefaults opts{ _webDir = privoxyDir }
-        setDefaults opts@(Options _ privoxyDir _ "" _ _) = setDefaults opts{ _taskFile = privoxyDir </> "ab2p.task" }
+        setDefaults opts@(Options _ (privoxyDir@(_:_)) "" _ _ _ _) = setDefaults opts{ _webDir = privoxyDir }
+        setDefaults opts@(Options _ privoxyDir _ "" _ _ _) = setDefaults opts{ _taskFile = privoxyDir </> "ab2p.task" }
         setDefaults opts = opts
 
 versionText :: String
@@ -92,7 +96,7 @@
 endMark = "------- end ------"
 
 emptyOptions :: Options
-emptyOptions = Options False "" "" "" "" False
+emptyOptions = Options False "" "" "" "" False False
 
 
 fillFromLog :: Options -> [String] -> Options
diff --git a/src/Templates.hs b/src/Templates.hs
--- a/src/Templates.hs
+++ b/src/Templates.hs
@@ -28,8 +28,13 @@
 terminalActionSwitch True Dnt = "+add-header{DNT: 1}"
 terminalActionSwitch _ _ = ""
 
-writeTemplateFiles :: String -> String -> IO ()
-writeTemplateFiles outDir cssDomain = do
+cssProtocol :: Bool -> String
+cssProtocol useHTTP
+        | useHTTP == True = "http"
+        | otherwise       = "https"
+
+writeTemplateFiles :: String -> String -> Bool -> IO ()
+writeTemplateFiles outDir cssDomain useHTTP = do
         copySystem "ab2p.system.action"
         copySystem "ab2p.system.filter"
         where
@@ -38,8 +43,8 @@
                 lns = lines content
                 replace' line (from, to) = replace from to line
                 filterLine line
-                        | null cssDomain && startswith "[?CSS_DOMAIN]" line = ""
-                        | otherwise = foldl replace' line [("[?CSS_DOMAIN]", ""), ("[CSS_DOMAIN]", cssDomain)]
+                        | null cssDomain && (startswith "[?CSS_DOMAIN]" line || startswith "[?CSS_DOMAIN_DEBUG]" line) = ""
+                        | otherwise = foldl replace' line [("[?CSS_DOMAIN]", ""), ("[?CSS_DOMAIN_DEBUG]", "# "), ("[CSS_DOMAIN]", cssDomain), ("[CSS_PROTOCOL]", cssProtocol useHTTP)]
 
         copySystem file = do
                 dataDir <- getDataDir
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,14 +1,16 @@
 # For more information, see: https://github.com/commercialhaskell/stack/blob/release/doc/yaml_configuration.md
 
 # Specifies the GHC version and set of packages available (e.g., lts-3.5, nightly-2015-09-21, ghc-7.10.2)
-resolver: lts-17.11
+resolver: lts-18.18
 
 # Local packages, usually specified by relative directory name
 packages:
 - '.'
 
 # Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
-extra-deps: [parsec-permutation-0.1.2.0]
+extra-deps:
+- parsec-permutation-0.1.2.0
+- MissingH-1.4.3.0@sha256:efbbe7065e17bc01ed925593a0c5b5793ab857585a8e9d5015d0025e526ab55c
 
 # Override default flag values for local packages and extra-deps
 flags: {}
diff --git a/templates/ab2p.system.filter b/templates/ab2p.system.filter
--- a/templates/ab2p.system.filter
+++ b/templates/ab2p.system.filter
@@ -24,16 +24,14 @@
 SERVER-HEADER-FILTER: ab2p-xframe-filter
 s@.*\sHTTP\/1.*@$&\r\nX-Frame-Options: DENY@i
 
-CLIENT-HEADER-TAGGER: ab2p-elemhide-check-debug
-s@^cookie:.*ab2p-elemhide-filter-debug=true(?:;|$).*@ab2p-elemhide-filter-debug@Ti
+[?CSS_DOMAIN_DEBUG]CLIENT-HEADER-TAGGER: ab2p-elemhide-check-debug
+[?CSS_DOMAIN_DEBUG]s@^cookie:.*ab2p-elemhide-filter-debug=true(?:;|$).*@ab2p-elemhide-filter-debug@Ti
 
 [?CSS_DOMAIN]FILTER: ab2p-elemhide-filter
-[?CSS_DOMAIN]s@[^'"\s]\s*<head[^>]*>(?=\s*[^'"\s])@$&<link rel="stylesheet" type="text/css" href="http://[CSS_DOMAIN]/ab2p.common.css"></link><link rel="stylesheet" type="text/css" href="http://[CSS_DOMAIN]/$host/ab2p.css"></link>@iUD
+[?CSS_DOMAIN]s@[^'"\s]\s*<head[^>]*>(?=\s*[^'"\s])@$&<link rel="stylesheet" type="text/css" href="[CSS_PROTOCOL]://[CSS_DOMAIN]/ab2p.common.css"></link><link rel="stylesheet" type="text/css" href="[CSS_PROTOCOL]://[CSS_DOMAIN]/$host/ab2p.css"></link>@iUD
 
-[?CSS_DOMAIN]FILTER: ab2p-elemhide-filter-debug
-[?CSS_DOMAIN]s@[^'"\s]\s*<head[^>]*>(?=\s*[^'"\s])@$&<link rel="stylesheet" type="text/css" href="http://[CSS_DOMAIN]/debug/ab2p.common.css"></link><link rel="stylesheet" type="text/css" href="http://[CSS_DOMAIN]/$host.debug/ab2p.css"></link>@iUD
+[?CSS_DOMAIN_DEBUG]FILTER: ab2p-elemhide-filter-debug
+[?CSS_DOMAIN_DEBUG]s@[^'"\s]\s*<head[^>]*>(?=\s*[^'"\s])@$&<link rel="stylesheet" type="text/css" href="[CSS_PROTOCOL]://[CSS_DOMAIN]/debug/ab2p.common.css"></link><link rel="stylesheet" type="text/css" href="[CSS_PROTOCOL]://[CSS_DOMAIN]/$host.debug/ab2p.css"></link>@iUD
 
 FILTER: ab2p-popup-filter
 s@[^'"\s]\s*<head[^>]*>(?=\s*[^'"\s])@$&<script type="text/javascript">parent==window&&opener&&close()</script>@iUD
-
-
