gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taler-merchant-demos] branch master updated (3b9139a -> 1d969ad)


From: gnunet
Subject: [taler-taler-merchant-demos] branch master updated (3b9139a -> 1d969ad)
Date: Tue, 20 Apr 2021 17:04:23 +0200

This is an automated email from the git hooks/post-receive script.

dold pushed a change to branch master
in repository taler-merchant-demos.

    from 3b9139a  plugin loading workaround
     new a284905  factor out uwsgi arg
     new 424cc50  new white logo
     new efdfde7  gitignore
     new cdc81e5  formatting and method de-duplication
     new 1d969ad  get rid of SCSS

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .gitignore                                        |    1 +
 Makefile                                          |   33 +-
 bin/taler-merchant-demos                          |   12 +-
 talermerchantdemos/httpcommon/__init__.py         |   50 +-
 talermerchantdemos/landing/landing.py             |   74 +-
 talermerchantdemos/landing/templates/base.html.j2 |    4 +-
 talermerchantdemos/static/demo.scss               |   82 --
 talermerchantdemos/static/logo-white.svg          |   45 +
 talermerchantdemos/static/navbar.scss             |  103 --
 talermerchantdemos/static/pure.scss               | 1508 ---------------------
 talermerchantdemos/static/taler-fallback.scss     |   15 -
 11 files changed, 120 insertions(+), 1807 deletions(-)
 delete mode 100644 talermerchantdemos/static/demo.scss
 create mode 100644 talermerchantdemos/static/logo-white.svg
 delete mode 100644 talermerchantdemos/static/navbar.scss
 delete mode 100644 talermerchantdemos/static/pure.scss
 delete mode 100644 talermerchantdemos/static/taler-fallback.scss

diff --git a/.gitignore b/.gitignore
index 0075ec7..dd58494 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@ translations/*/LC_MESSAGES/messages.mo
 config.mk
 *~
 .sass-cache
+.vscode
diff --git a/Makefile b/Makefile
index 10a2a01..e0088e7 100644
--- a/Makefile
+++ b/Makefile
@@ -4,8 +4,6 @@ install_global=false
 .PHONY: all
 all:
        @echo "This is a python project, no compilation required"
-       @echo "SCSS/SASS Initial Setup: make sass-setup"
-       @echo "SCSS/SASS Build (for static files): make sass-build"
        @echo "Installation: make install"
 
 .PHONY: install
@@ -40,7 +38,7 @@ dist:
 
 .PHONY: pretty
 pretty:
-       yapf -r -i talerblog/
+       black talermerchantdemos
 
 # i18n
 extract:
@@ -59,32 +57,3 @@ compile: update
 update: extract
        pybabel update -i translations/messages.pot -d translations/
 
-# SASS/SCSS
-
-.PHONY: sass-setup
-sass-setup:
-       @echo "This is the initial sass-installation/setup script."
-       @echo "This setup must run as root, on a machine that has NPM 
installed!"
-       @echo "If your password is requested (for escalation), please enter it."
-       sudo npm install -g sass
-
-.PHONY: scss-setup
-scss-setup: sass-setup
-
-.PHONY: sass-build
-sass-build:
-       @echo "Warning: If Sass/Scss is not installed, please run \`make 
sass-setup\` first!"
-       @echo "This script will only convert files inside /static"
-       sass talermerchantdemos/static:talermerchantdemos/static
-
-.PHONY: scss-build
-scss-build: sass-build
-
-.PHONY: sass-autobuild
-sass-autobuild:
-       @echo "Warning: If Sass/Scss is not installed, please run \`make 
sass-setup\` first!"
-       @echo "This script will automatically build sass/scss files in the 
static directory!"
-       sass --watch talermerchantdemos/static:talermerchantdemos/static
-
-.PHONY: scss-autobuild
-scss-autobuild: sass-autobuild
diff --git a/bin/taler-merchant-demos b/bin/taler-merchant-demos
index feb4e4d..b252bb6 100755
--- a/bin/taler-merchant-demos
+++ b/bin/taler-merchant-demos
@@ -33,6 +33,11 @@ LOGGER = logging.getLogger(__name__)
 # No perfect match to our logging format, but good enough ...
 UWSGI_LOGFMT = "%(ltime) %(proto) %(method) %(uri) %(proto) => %(status)"
 
+# Argument to tell uWSGI to load the python plugin.
+# This hack is required, because on systems where the plugin is statically 
linked,
+# loading it causes an error.
+arg_load_python = "--if-not-plugin python --plugins python --endif".split(" ")
+
 ##
 # This function interprets the 'serve-uwsgi' subcommand.
 # The effect is to launch the blog UWSGI service.  This
@@ -45,6 +50,7 @@ def handle_serve_uwsgi(config, which_shop):
     params = [
         "uwsgi",
         "uwsgi",
+        *arg_load_python,
         "--master",
         "--die-on-term",
         "--log-format",
@@ -91,11 +97,7 @@ def handle_serve_http(config, which_shop, port=None):
         os.execlp(
             "uwsgi",
             "uwsgi",
-            "--if-not-plugin",
-            "python",
-            "--plugins",
-            "python",
-            "--endif",
+            *arg_load_python,
             "--master",
             "--die-on-term",
             "--log-format",
diff --git a/talermerchantdemos/httpcommon/__init__.py 
b/talermerchantdemos/httpcommon/__init__.py
index 650228d..443160b 100644
--- a/talermerchantdemos/httpcommon/__init__.py
+++ b/talermerchantdemos/httpcommon/__init__.py
@@ -6,15 +6,6 @@ from datetime import datetime
 import time
 from flask_babel import gettext
 
-##
-# Return a error response to the client.
-#
-# @param abort_status_code status code to return along the response.
-# @param params _kw_ arguments to passed verbatim to the templating engine.
-def err_abort(abort_status_code, **params):
-    t = flask.render_template("templates/error.html", **params)
-    flask.abort(flask.make_response(t, abort_status_code))
-
 ##
 # POST a request to the backend, and return a error
 # response if any error occurs.
@@ -28,9 +19,7 @@ def backend_post(backend_url, endpoint, json):
     final_url = urljoin(backend_url, endpoint)
     print("POSTing to: " + final_url)
     try:
-        resp = requests.post(
-            final_url, json=json, headers=headers
-        )
+        resp = requests.post(final_url, json=json, headers=headers)
     except requests.ConnectionError:
         err_abort(500, message=gettext("Could not establish connection to 
backend"))
     try:
@@ -39,14 +28,14 @@ def backend_post(backend_url, endpoint, json):
         err_abort(
             500,
             message=gettext("Could not parse response from backend"),
-            status_code=resp.status_code
+            status_code=resp.status_code,
         )
     if resp.status_code != 200:
         err_abort(
             500,
             message=gettext("Backend returned error status"),
             json=response_json,
-            status_code=resp.status_code
+            status_code=resp.status_code,
         )
     print("Backend responds to {}: {}".format(final_url, str(response_json)))
     return response_json
@@ -64,9 +53,7 @@ def backend_get(backend_url, endpoint, params):
     final_url = urljoin(backend_url, endpoint)
     print("GETting: " + final_url + " with params: " + str(params))
     try:
-        resp = requests.get(
-            final_url, params=params, headers=headers
-        )
+        resp = requests.get(final_url, params=params, headers=headers)
     except requests.ConnectionError:
         err_abort(500, message=gettext("Could not establish connection to 
backend"))
     try:
@@ -78,19 +65,21 @@ def backend_get(backend_url, endpoint, params):
             500,
             message=gettext("Backend returned error status"),
             json=response_json,
-            status_code=resp.status_code
+            status_code=resp.status_code,
         )
     print("Backend responds to {}: {}".format(final_url, str(response_json)))
     return response_json
 
+
 def get_locale():
-    parts = request.path.split('/', 2)
-    if (2 >= len(parts)):
+    parts = request.path.split("/", 2)
+    if 2 >= len(parts):
         # Totally unexpected path format, do not localize
         return "en"
     lang = parts[1]
     return lang
 
+
 ##
 # Helper function used inside Jinja2 logic to create a links
 # to the current page but in a different language. Used to
@@ -102,8 +91,8 @@ def self_localized(lang):
     """
     path = request.path
     # path must have the form "/$LANG/$STUFF"
-    parts = path.split('/', 2)
-    if (2 >= len(parts)):
+    parts = path.split("/", 2)
+    if 2 >= len(parts):
         # Totally unexpected path format, do not localize
         return path
     return "/" + lang + "/" + parts[2]
@@ -115,30 +104,27 @@ def self_localized(lang):
 # @param abort_status_code status code to return along the response.
 # @param params _kw_ arguments to passed verbatim to the templating engine.
 def err_abort(abort_status_code, **params):
-    t = flask.render_template(
-        "templates/error.html.j2",
-        lang=get_locale(),
-        **params
-    )
+    t = flask.render_template("templates/error.html.j2", lang=get_locale(), 
**params)
     flask.abort(flask.make_response(t, abort_status_code))
 
 
-
 def fallback_404(error):
     return "Page not found"
 
 
-
 class Deadline:
     def __init__(self, value):
         self.value = value
+
     def isExpired(self):
         if self.value == "never":
             return False
         now = int(round(time.time()) * 1000)
         now_dt = datetime.fromtimestamp(now / 1000)
         deadline_dt = datetime.fromtimestamp(self.value / 1000)
-        print("debug: checking refund expiration, now: {}, deadline: 
{}".format(
-            now_dt.strftime("%c"), deadline_dt.strftime("%c")
-        ))
+        print(
+            "debug: checking refund expiration, now: {}, deadline: {}".format(
+                now_dt.strftime("%c"), deadline_dt.strftime("%c")
+            )
+        )
         return now > self.value
diff --git a/talermerchantdemos/landing/landing.py 
b/talermerchantdemos/landing/landing.py
index 170a950..071a44e 100644
--- a/talermerchantdemos/landing/landing.py
+++ b/talermerchantdemos/landing/landing.py
@@ -35,13 +35,17 @@ import sys
 
 if not sys.version_info.major == 3 and sys.version_info.minor >= 6:
     print("Python 3.6 or higher is required.")
-    print("You are using Python {}.{}.".format(sys.version_info.major, 
sys.version_info.minor))
+    print(
+        "You are using Python {}.{}.".format(
+            sys.version_info.major, sys.version_info.minor
+        )
+    )
     sys.exit(1)
 
 BASE_DIR = os.path.dirname(os.path.abspath(__file__))
 app = flask.Flask(__name__, template_folder=BASE_DIR)
 app.debug = True
-app.secret_key = base64.b64encode(os.urandom(64)).decode('utf-8')
+app.secret_key = base64.b64encode(os.urandom(64)).decode("utf-8")
 
 LOGGER = logging.getLogger(__name__)
 TC = TalerConfig.from_env()
@@ -56,18 +60,21 @@ except ConfigurationError as ce:
 app.config.from_object(__name__)
 babel = Babel(app)
 
-LOGGER.info("Using translations from:" + 
':'.join(list(babel.translation_directories)))
+LOGGER.info("Using translations from:" + 
":".join(list(babel.translation_directories)))
 translations = [str(translation) for translation in babel.list_translations()]
-if not 'en' in translations:
-    translations.append('en')
-LOGGER.info("Operating with the following translations available: " + ' 
'.join(translations))
+if not "en" in translations:
+    translations.append("en")
+LOGGER.info(
+    "Operating with the following translations available: " + " 
".join(translations)
+)
 
 app.jinja_env.globals.update(self_localized=self_localized)
 
+
 @babel.localeselector
 def get_locale():
-    parts = request.path.split('/', 2)
-    if (2 >= len(parts)):
+    parts = request.path.split("/", 2)
+    if 2 >= len(parts):
         # Totally unexpected path format, do not localize
         return "en"
     lang = parts[1]
@@ -75,6 +82,7 @@ def get_locale():
         return lang
     return "en"
 
+
 ##
 # Make the environment available into templates.
 #
@@ -108,20 +116,21 @@ def internal_error(e):
         "templates/error.html.j2",
         message=gettext("Internal error"),
         stack=traceback.format_exc(),
-        lang=get_locale()
+        lang=get_locale(),
     )
 
+
 ##
 # Serve the /favicon.ico requests.
 #
 # @return the favicon.ico file.
 @app.route("/favicon.ico")
 def favicon():
-    LOGGER.info("will look into: " + os.path.join(app.root_path, 'static'))
+    LOGGER.info("will look into: " + os.path.join(app.root_path, "static"))
     return flask.send_from_directory(
-        os.path.join(app.root_path, 'static'),
+        os.path.join(app.root_path, "static"),
         "favicon.ico",
-        mimetype="image/vnd.microsoft.ico"
+        mimetype="image/vnd.microsoft.ico",
     )
 
 
@@ -131,10 +140,11 @@ def favicon():
 # @return response object of the index page.
 @app.route("/")
 def index():
-    default = 'en'
+    default = "en"
     target = flask.request.accept_languages.best_match(translations, default)
     return flask.redirect("/" + target + "/", code=302)
 
+
 ##
 # Serve the internationalized main index page.
 #
@@ -142,17 +152,25 @@ def index():
 @app.route("/<lang>/", methods=["GET"])
 def start(lang):
 
-    if x:= os.environ.get("TALER_ENV_URL_BANK"): bank_register_url = 
"/".join([x.strip("/"), f"{lang}/register"])
-    else: bank_register_url = "#"
+    if x := os.environ.get("TALER_ENV_URL_BANK"):
+        bank_register_url = "/".join([x.strip("/"), f"{lang}/register"])
+    else:
+        bank_register_url = "#"
 
-    if x:= os.environ.get("TALER_ENV_URL_MERCHANT_BLOG"): merchant_blog_url = 
"/".join([x.strip("/"), lang])
-    else: merchant_blog_url = "#"
+    if x := os.environ.get("TALER_ENV_URL_MERCHANT_BLOG"):
+        merchant_blog_url = "/".join([x.strip("/"), lang])
+    else:
+        merchant_blog_url = "#"
 
-    if x:= os.environ.get("TALER_ENV_URL_MERCHANT_DONATIONS"): 
merchant_donations_url = "/".join([x.strip("/"), lang])
-    else: merchant_donations_url = "#"
+    if x := os.environ.get("TALER_ENV_URL_MERCHANT_DONATIONS"):
+        merchant_donations_url = "/".join([x.strip("/"), lang])
+    else:
+        merchant_donations_url = "#"
 
-    if x:= os.environ.get("TALER_ENV_URL_MERCHANT_SURVEY"): 
merchant_survey_url = "/".join([x.strip("/"), lang])
-    else: merchant_survey_url = "#"
+    if x := os.environ.get("TALER_ENV_URL_MERCHANT_SURVEY"):
+        merchant_survey_url = "/".join([x.strip("/"), lang])
+    else:
+        merchant_survey_url = "#"
 
     return flask.render_template(
         "templates/index.html.j2",
@@ -161,21 +179,21 @@ def start(lang):
         bank_url=bank_register_url,
         merchant_blog_url=merchant_blog_url,
         merchant_donations_url=merchant_donations_url,
-        merchant_survey_url=merchant_survey_url
+        merchant_survey_url=merchant_survey_url,
     )
 
+
 @app.errorhandler(404)
-def handler(e):
+def handler_404(e):
     return flask.render_template(
-        "templates/error.html.j2",
-        message=gettext("Page not found"),
-        lang=get_locale()
+        "templates/error.html.j2", message=gettext("Page not found"), 
lang=get_locale()
     )
 
+
 @app.errorhandler(405)
-def handler(e):
+def handler_405(e):
     return flask.render_template(
         "templates/error.html.j2",
         message=gettext("HTTP method not allowed for this page"),
-        lang=get_locale()
+        lang=get_locale(),
     )
diff --git a/talermerchantdemos/landing/templates/base.html.j2 
b/talermerchantdemos/landing/templates/base.html.j2
index 2114347..97a91a5 100644
--- a/talermerchantdemos/landing/templates/base.html.j2
+++ b/talermerchantdemos/landing/templates/base.html.j2
@@ -15,7 +15,7 @@
   TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 -->
 
-<html data-taler-nojs="true">
+<html>
 <head>
   <title>{{ gettext("GNU Taler Demo: Introduction") }}</title>
   <link rel="stylesheet" type="text/css" href="{{ url_for('static', 
filename='pure.css') }}" />
@@ -28,7 +28,7 @@
 
 <body>
   <header class="demobar" style="display: flex; flex-direction: column;">
-    <h1><span class="tt adorn-brackets">{{ gettext("Taler Demo") }}</span><br/>
+    <h1><img src="{{ url_for('static', filename='logo-white.svg') }}" 
height="100"><br/>
         <span class="it"><a href="{{ env('TALER_ENV_URL_MERCHANT_SURVEY') 
}}">{{ gettext("Introduction") }}</a></span></h1>
     <p>{{
       gettext("This is the GNU Taler demo.") + "<br>" +
diff --git a/talermerchantdemos/static/demo.scss 
b/talermerchantdemos/static/demo.scss
deleted file mode 100644
index 7733515..0000000
--- a/talermerchantdemos/static/demo.scss
+++ /dev/null
@@ -1,82 +0,0 @@
-/* style common to all demo pages */
-
-.demobar h1 {
-  text-align: center;
-}
-.demobar > p {
-  padding: 0.5em; 
-}
-.demobar a,
-.demobar a:visited {
-  color: inherit;
-}
-.adorn-brackets::before {
-  content: "❬";
-  color: #aa3939;
-}
-.adorn-brackets::after {
-  content: "❭";
-  color: #aa3939;
-}
-.tt {
-  font-family: 'Lucida Console', Monaco, monospace;
-}
-
-.informational-ok {
-  background: lightgreen;
-  border-radius: 1em;
-  padding: 0.5em;
-}
-
-.informational-fail {
-  background: lightpink;
-  border-radius: 1em;
-  padding: 0.5em;
-}
-
-.content {
-  overflow-x: auto;
-}
-.demobar {
-  overflow-x: auto;
-  background-color: #033;
-  color: white;
-}
-
-body {
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-
-body * {
-  /* margin-left: 0.5vw; */
-  left: 0.1vw;
-}
-
-@media (min-width: 500px) {
-  .content {
-    /* margin-left: 0vw; */
-    padding-left: 2em;
-    margin-right: 1em;
-    overflow-x: hidden;
-    overflow-y: auto;
-  }
-  .demobar {
-    /* height: 100%; */
-    /* width: 25%; */
-    /* NOTE: Please use "vh"/"vw" instead of "%" when possible, in the future. 
*/
-    height: min-content;
-    width: 100vw;
-    margin: 0;
-    top: 0;
-    left: 0;
-    background-color: #033;
-    color: white;
-    position: relative;
-    padding-right: 1em;
-    overflow-x: hidden;
-    overflow-y: auto;
-    text-align: center;
-  }
-}
-
diff --git a/talermerchantdemos/static/logo-white.svg 
b/talermerchantdemos/static/logo-white.svg
new file mode 100644
index 0000000..cb1f023
--- /dev/null
+++ b/talermerchantdemos/static/logo-white.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   width="670"
+   height="300"
+   viewBox="0 0 201 90"
+   version="1.1"
+   id="svg8">
+  <g
+     id="logo">
+    <g
+       id="circles"
+       
style="fill:#FFF;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.327943">
+      <path
+         d="m 86.662153,1.1211936 c 15.589697,0 29.129227,9.4011664 
35.961027,23.2018054 h -5.81736 C 110.4866,13.623304 99.349002,6.5180852 
86.662153,6.5180852 c -19.690571,0 -35.652876,17.1120008 -35.652876,38.2205688 
0,10.331797 3.825597,19.704678 10.03957,26.582945 -1.342357,1.120912 
-2.771532,2.127905 -4.275488,3.006754 C 50.071485,66.553412 45.974857,56.15992 
45.974857,44.738654 c 0,-24.089211 18.216325,-43.6174604 40.687296,-43.6174604 
z M 122.51416,65.375898 c -6.86645,13.680134  [...]
+         id="path2350" />
+      <path
+         d="m 64.212372,1.1211936 c 1.052607,0 2.095998,0.042919 
3.128684,0.1270583 C 64.288864,2.8094199 61.427378,4.728606 58.802653,6.9555572 
41.679542,9.7498571 28.559494,25.601563 28.559494,44.738654 c 0,14.264563 
7.29059,26.702023 18.093843,33.268925 -1.593656,0.26719 -3.226966,0.406948 
-4.890748,0.406948 -1.239545,0 -2.46151,-0.07952 -3.663522,-0.229364 C 
29.191129,70.184015 23.525076,58.171633 23.525076,44.738654 23.525076,20.649443 
41.7414,1.1211936 64.212372,1.1211936 Z M 69.62 [...]
+         id="path2352" />
+      <path
+         d="m 41.762589,1.1211936 c 1.064296,0 2.118804,0.044379 
3.162607,0.1302161 -3.046523,1.558961 -5.903162,3.4745139 -8.52358,5.6968133 C 
19.254624,9.7205882 6.1097128,25.583465 6.1097128,44.738654 c 0,21.108568 
15.9624012,38.22057 35.6528762,38.22057 12.599746,0 23.672446,-7.007056 
30.013748,-17.583802 h 5.838515 C 70.748498,79.055727 57.26924,88.356116 
41.762589,88.356116 c -22.470907,0 -40.6871998,-19.52825 -40.6871998,-43.617462 
0,-24.089211 18.2162928,-43.6174604 40.6871998,-4 [...]
+         id="path2354" />
+    </g>
+    <g
+       id="letters"
+       style="fill:#FFF">
+      <path
+         d="m 76.135411,34.409066 h 9.161042 V 29.36588 H 61.857537 v 5.043186 
h 9.161137 v 25.92317 h 5.116737 z"
+         id="path2346" />
+      <path
+         d="m 92.647571,52.856334 h 13.659009 l 2.93009,7.476072 h 5.36461 L 
101.89122,29.144903 H 97.187186 L 84.477089,60.332406 h 5.199533 z m 
11.802109,-4.822276 h -9.944771 l 4.951718,-12.386462 z"
+         id="path2362" />
+      <path
+         d="m 123.80641,29.366084 h -4.58038 v 30.966322 h 20.54728 v 
-4.910253 c -5.32227,0 -10.64463,0 -15.9669,0 z"
+         id="path2356" />
+      <path
+         d="m 166.4722,29.366084 h -21.37564 v 30.966322 h 21.58203 v 
-4.910253 h -16.54771 v -8.27275 h 14.48439 V 42.23925 h -14.48439 v -7.962811 
h 16.34132 z"
+         id="path2360" />
+      <path
+         d="m 191.19035,39.474593 c 0,1.59947 -0.53646,2.87535 
-1.61628,3.818883 -1.07281,0.95124 -2.52409,1.422837 -4.34678,1.422837 h 
-7.44851 V 34.276439 h 7.4073 c 1.9051,0 3.38376,0.435027 4.42939,1.312178 
1.05226,0.870258 1.57488,2.167734 1.57488,3.885976 z m 6.06602,20.857813 
-7.79911,-11.723191 c 1.01771,-0.294794 1.94631,-0.714813 2.78553,-1.260566 
0.83885,-0.545619 1.56122,-1.209263 2.16629,-1.990627 0.60541,-0.781738 
1.07981,-1.681096 1.42369,-2.698345 0.34378,-1.017553 0.5156 [...]
+         id="path2358" />
+    </g>
+  </g>
+</svg>
diff --git a/talermerchantdemos/static/navbar.scss 
b/talermerchantdemos/static/navbar.scss
deleted file mode 100644
index 7a022d6..0000000
--- a/talermerchantdemos/static/navbar.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * @author      Torsten Grothoff
- * @name        navbar.css
- * @description Makes the navigation bar have styles
- * @license     LGPL-3.0-or-later
- */
- 
- 
-.navcontainer{
-    overflow:hidden;
-    background:#144;
-    margin-bottom:50px;
-    width:100%; 
-    color:white; 
-    position:-webkit-sticky;
-    position:sticky;
-    top:0px;
-    width: 100vw;
-    backdrop-filter: blur(10px);
-    opacity: 1;
-    z-index: 10000;
-}
-nav {
-    left: 1vw;
-    position: relative;
-    background:#144;
-    z-index: 10000;
-}
-
-nav a, nav span,.navbtn {
-    border: none;
-    color: white;
-    text-align: center;
-    text-decoration: none;
-    display: inline-block;
-    font-size: 16px;
-    background: #00000000;
-    height: inherit;
-}
-nav a, nav span,.navbtn{
-    padding: 15px 32px;
-}
-
-nav a:hover, nav span:hover,.navbtn:hover {
-    background: #00000022;
-}
-
-nav a.active, nav span.active,.navbtn.active {
-    background-color: #3daee9;
-}
-
-nav a.active:hover, nav span.active:hover,.navbtn.active:hover {
-    background: #0042b2;
-}
-
-nav a, nav span,.navbtn {
-    cursor: pointer;
-}
-nav .right {
-    // input[type=checkbox] {
-    //     // // opacity: 0;
-    //     // // position: absolute;
-    //     // position: relative;
-    //     // left:0.5vw;
-    //     // // top:0;
-    //     // width: inherit;
-    //     // height: inherit;
-
-    //     // $sx: 1.5;
-    //     // $sy: 1.5;
-
-    //     // -ms-transform: scale($sx,$sy); /* IE */
-    //     // -moz-transform: scale($sx,$sy); /* FF */
-    //     // -webkit-transform: scale($sx,$sy); /* Safari and Chrome */
-    //     // -o-transform: scale($sx,$sy); /* Opera */
-    //     // transform: scale($sx,$sy);
-    //     // float:right;
-    //     opacity: 0;
-    // }
-    // input[type=checkbox]:checked + div.nav {
-    //     display: block;
-    // }
-    // input[type=checkbox] + div.nav {
-    //     display: none;
-    // }
-    div.nav {
-        display: none;
-    }
-    div.nav:hover {
-        display: block;
-    }
-    float:right;
-    margin-right: 5vw;
-}
-nav .right:hover {
-    div.nav {
-        display:block;
-    }
-}
-
-// input[type=checkbox]:checked + label {
-//     color: red;
-// }
diff --git a/talermerchantdemos/static/pure.scss 
b/talermerchantdemos/static/pure.scss
deleted file mode 100644
index 9b555ed..0000000
--- a/talermerchantdemos/static/pure.scss
+++ /dev/null
@@ -1,1508 +0,0 @@
-/*!
-Pure v0.6.2
-Copyright 2013 Yahoo!
-Licensed under the BSD License.
-https://github.com/yahoo/pure/blob/master/LICENSE.md
-*/
-/*!
-normalize.css v^3.0 | MIT License | git.io/normalize
-Copyright (c) Nicolas Gallagher and Jonathan Neal
-*/
-/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
-
-/**
- * 1. Set default font family to sans-serif.
- * 2. Prevent iOS and IE text size adjust after device orientation change,
- *    without disabling user zoom.
- */
-
-html {
-  font-family: sans-serif; /* 1 */
-  -ms-text-size-adjust: 100%; /* 2 */
-  -webkit-text-size-adjust: 100%; /* 2 */
-}
-
-/**
- * Remove default margin.
- */
-
-body {
-  margin: 0;
-}
-
-/* HTML5 display definitions
-   ========================================================================== 
*/
-
-/**
- * Correct `block` display not defined for any HTML5 element in IE 8/9.
- * Correct `block` display not defined for `details` or `summary` in IE 10/11
- * and Firefox.
- * Correct `block` display not defined for `main` in IE 11.
- */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-menu,
-nav,
-section,
-summary {
-  display: block;
-}
-
-/**
- * 1. Correct `inline-block` display not defined in IE 8/9.
- * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
- */
-
-audio,
-canvas,
-progress,
-video {
-  display: inline-block; /* 1 */
-  vertical-align: baseline; /* 2 */
-}
-
-/**
- * Prevent modern browsers from displaying `audio` without controls.
- * Remove excess height in iOS 5 devices.
- */
-
-audio:not([controls]) {
-  display: none;
-  height: 0;
-}
-
-/**
- * Address `[hidden]` styling not present in IE 8/9/10.
- * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
- */
-
-[hidden],
-template {
-  display: none;
-}
-
-/* Links
-   ========================================================================== 
*/
-
-/**
- * Remove the gray background color from active links in IE 10.
- */
-
-a {
-  background-color: transparent;
-}
-
-/**
- * Improve readability of focused elements when they are also in an
- * active/hover state.
- */
-
-a:active,
-a:hover {
-  outline: 0;
-}
-
-/* Text-level semantics
-   ========================================================================== 
*/
-
-/**
- * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
- */
-
-abbr[title] {
-  border-bottom: 1px dotted;
-}
-
-/**
- * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
- */
-
-b,
-strong {
-  font-weight: bold;
-}
-
-/**
- * Address styling not present in Safari and Chrome.
- */
-
-dfn {
-  font-style: italic;
-}
-
-/**
- * Address variable `h1` font-size and margin within `section` and `article`
- * contexts in Firefox 4+, Safari, and Chrome.
- */
-
-h1 {
-  font-size: 2em;
-  margin: 0.67em 0;
-}
-
-/**
- * Address styling not present in IE 8/9.
- */
-
-mark {
-  background: #ff0;
-  color: #000;
-}
-
-/**
- * Address inconsistent and variable font size in all browsers.
- */
-
-small {
-  font-size: 80%;
-}
-
-/**
- * Prevent `sub` and `sup` affecting `line-height` in all browsers.
- */
-
-sub,
-sup {
-  font-size: 75%;
-  line-height: 0;
-  position: relative;
-  vertical-align: baseline;
-}
-
-sup {
-  top: -0.5em;
-}
-
-sub {
-  bottom: -0.25em;
-}
-
-/* Embedded content
-   ========================================================================== 
*/
-
-/**
- * Remove border when inside `a` element in IE 8/9/10.
- */
-
-img {
-  border: 0;
-}
-
-/**
- * Correct overflow not hidden in IE 9/10/11.
- */
-
-svg:not(:root) {
-  overflow: hidden;
-}
-
-/* Grouping content
-   ========================================================================== 
*/
-
-/**
- * Address margin not present in IE 8/9 and Safari.
- */
-
-figure {
-  margin: 1em 40px;
-}
-
-/**
- * Address differences between Firefox and other browsers.
- */
-
-hr {
-  box-sizing: content-box;
-  height: 0;
-}
-
-/**
- * Contain overflow in all browsers.
- */
-
-pre {
-  overflow: auto;
-}
-
-/**
- * Address odd `em`-unit font size rendering in all browsers.
- */
-
-code,
-kbd,
-pre,
-samp {
-  font-family: monospace, monospace;
-  font-size: 1em;
-}
-
-/* Forms
-   ========================================================================== 
*/
-
-/**
- * Known limitation: by default, Chrome and Safari on OS X allow very limited
- * styling of `select`, unless a `border` property is set.
- */
-
-/**
- * 1. Correct color not being inherited.
- *    Known issue: affects color of disabled elements.
- * 2. Correct font properties not being inherited.
- * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
- */
-
-button,
-input,
-optgroup,
-select,
-textarea {
-  color: inherit; /* 1 */
-  font: inherit; /* 2 */
-  margin: 0; /* 3 */
-}
-
-/**
- * Address `overflow` set to `hidden` in IE 8/9/10/11.
- */
-
-button {
-  overflow: visible;
-}
-
-/**
- * Address inconsistent `text-transform` inheritance for `button` and `select`.
- * All other form control elements do not inherit `text-transform` values.
- * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
- * Correct `select` style inheritance in Firefox.
- */
-
-button,
-select {
-  text-transform: none;
-}
-
-/**
- * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
- *    and `video` controls.
- * 2. Correct inability to style clickable `input` types in iOS.
- * 3. Improve usability and consistency of cursor style between image-type
- *    `input` and others.
- */
-
-button,
-html input[type="button"], /* 1 */
-input[type="reset"],
-input[type="submit"] {
-  -webkit-appearance: button; /* 2 */
-  cursor: pointer; /* 3 */
-}
-
-/**
- * Re-set default cursor for disabled elements.
- */
-
-button[disabled],
-html input[disabled] {
-  cursor: default;
-}
-
-/**
- * Remove inner padding and border in Firefox 4+.
- */
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  border: 0;
-  padding: 0;
-}
-
-/**
- * Address Firefox 4+ setting `line-height` on `input` using `!important` in
- * the UA stylesheet.
- */
-
-input {
-  line-height: normal;
-}
-
-/**
- * It's recommended that you don't attempt to style these elements.
- * Firefox's implementation doesn't respect box-sizing, padding, or width.
- *
- * 1. Address box sizing set to `content-box` in IE 8/9/10.
- * 2. Remove excess padding in IE 8/9/10.
- */
-
-input[type="checkbox"],
-input[type="radio"] {
-  box-sizing: border-box; /* 1 */
-  padding: 0; /* 2 */
-}
-
-/**
- * Fix the cursor style for Chrome's increment/decrement buttons. For certain
- * `font-size` values of the `input`, it causes the cursor style of the
- * decrement button to change from `default` to `text`.
- */
-
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
-  height: auto;
-}
-
-/**
- * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
- * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
- */
-
-input[type="search"] {
-  -webkit-appearance: textfield; /* 1 */
-  box-sizing: content-box; /* 2 */
-}
-
-/**
- * Remove inner padding and search cancel button in Safari and Chrome on OS X.
- * Safari (but not Chrome) clips the cancel button when the search input has
- * padding (and `textfield` appearance).
- */
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
-  -webkit-appearance: none;
-}
-
-/**
- * Define consistent border, margin, and padding.
- */
-
-fieldset {
-  border: 1px solid #c0c0c0;
-  margin: 0 2px;
-  padding: 0.35em 0.625em 0.75em;
-}
-
-/**
- * 1. Correct `color` not being inherited in IE 8/9/10/11.
- * 2. Remove padding so people aren't caught out if they zero out fieldsets.
- */
-
-legend {
-  border: 0; /* 1 */
-  padding: 0; /* 2 */
-}
-
-/**
- * Remove default vertical scrollbar in IE 8/9/10/11.
- */
-
-textarea {
-  overflow: auto;
-}
-
-/**
- * Don't inherit the `font-weight` (applied by a rule above).
- * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
- */
-
-optgroup {
-  font-weight: bold;
-}
-
-/* Tables
-   ========================================================================== 
*/
-
-/**
- * Remove most spacing between table cells.
- */
-
-table {
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-
-td,
-th {
-  padding: 0;
-}
-
-/*csslint important:false*/
-
-/* ==========================================================================
-   Pure Base Extras
-   ========================================================================== 
*/
-
-/**
- * Extra rules that Pure adds on top of Normalize.css
- */
-
-/**
- * Always hide an element when it has the `hidden` HTML attribute.
- */
-
-.hidden,
-[hidden] {
-    display: none !important;
-}
-
-/**
- * Add this class to an image to make it fit within it's fluid parent wrapper 
while maintaining
- * aspect ratio.
- */
-.pure-img {
-    max-width: 100%;
-    height: auto;
-    display: block;
-}
-
-/*csslint regex-selectors:false, known-properties:false, 
duplicate-properties:false*/
-
-.pure-g {
-    letter-spacing: -0.31em; /* Webkit: collapse white-space between units */
-    *letter-spacing: normal; /* reset IE < 8 */
-    *word-spacing: -0.43em; /* IE < 8: collapse white-space between units */
-    text-rendering: optimizespeed; /* Webkit: fixes text-rendering: 
optimizeLegibility */
-
-    /*
-    Sets the font stack to fonts known to work properly with the above letter
-    and word spacings. See: https://github.com/yahoo/pure/issues/41/
-
-    The following font stack makes Pure Grids work on all known environments.
-
-    * FreeSans: Ships with many Linux distros, including Ubuntu
-
-    * Arimo: Ships with Chrome OS. Arimo has to be defined before Helvetica and
-      Arial to get picked up by the browser, even though neither is available
-      in Chrome OS.
-
-    * Droid Sans: Ships with all versions of Android.
-
-    * Helvetica, Arial, sans-serif: Common font stack on OS X and Windows.
-    */
-    font-family: FreeSans, Arimo, "Droid Sans", Helvetica, Arial, sans-serif;
-
-    /* Use flexbox when possible to avoid `letter-spacing` side-effects. */
-    display: -webkit-box;
-    display: -webkit-flex;
-    display: -ms-flexbox;
-    display: flex;
-    -webkit-flex-flow: row wrap;
-        -ms-flex-flow: row wrap;
-            flex-flow: row wrap;
-
-    /* Prevents distributing space between rows */
-    -webkit-align-content: flex-start;
-        -ms-flex-line-pack: start;
-            align-content: flex-start;
-}
-
-/* IE10 display: -ms-flexbox (and display: flex in IE 11) does not work inside 
a table; fall back to block and rely on font hack */
-@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
-       table .pure-g {
-               display: block;
-       }
-}
-
-/* Opera as of 12 on Windows needs word-spacing.
-   The ".opera-only" selector is used to prevent actual prefocus styling
-   and is not required in markup.
-*/
-.opera-only :-o-prefocus,
-.pure-g {
-    word-spacing: -0.43em;
-}
-
-.pure-u {
-    display: inline-block;
-    *display: inline; /* IE < 8: fake inline-block */
-    zoom: 1;
-    letter-spacing: normal;
-    word-spacing: normal;
-    vertical-align: top;
-    text-rendering: auto;
-}
-
-/*
-Resets the font family back to the OS/browser's default sans-serif font,
-this the same font stack that Normalize.css sets for the `body`.
-*/
-.pure-g [class *= "pure-u"] {
-    font-family: sans-serif;
-}
-
-.pure-u-1,
-.pure-u-1-1,
-.pure-u-1-2,
-.pure-u-1-3,
-.pure-u-2-3,
-.pure-u-1-4,
-.pure-u-3-4,
-.pure-u-1-5,
-.pure-u-2-5,
-.pure-u-3-5,
-.pure-u-4-5,
-.pure-u-5-5,
-.pure-u-1-6,
-.pure-u-5-6,
-.pure-u-1-8,
-.pure-u-3-8,
-.pure-u-5-8,
-.pure-u-7-8,
-.pure-u-1-12,
-.pure-u-5-12,
-.pure-u-7-12,
-.pure-u-11-12,
-.pure-u-1-24,
-.pure-u-2-24,
-.pure-u-3-24,
-.pure-u-4-24,
-.pure-u-5-24,
-.pure-u-6-24,
-.pure-u-7-24,
-.pure-u-8-24,
-.pure-u-9-24,
-.pure-u-10-24,
-.pure-u-11-24,
-.pure-u-12-24,
-.pure-u-13-24,
-.pure-u-14-24,
-.pure-u-15-24,
-.pure-u-16-24,
-.pure-u-17-24,
-.pure-u-18-24,
-.pure-u-19-24,
-.pure-u-20-24,
-.pure-u-21-24,
-.pure-u-22-24,
-.pure-u-23-24,
-.pure-u-24-24 {
-    display: inline-block;
-    *display: inline;
-    zoom: 1;
-    letter-spacing: normal;
-    word-spacing: normal;
-    vertical-align: top;
-    text-rendering: auto;
-}
-
-.pure-u-1-24 {
-    width: 4.1667%;
-    *width: 4.1357%;
-}
-
-.pure-u-1-12,
-.pure-u-2-24 {
-    width: 8.3333%;
-    *width: 8.3023%;
-}
-
-.pure-u-1-8,
-.pure-u-3-24 {
-    width: 12.5000%;
-    *width: 12.4690%;
-}
-
-.pure-u-1-6,
-.pure-u-4-24 {
-    width: 16.6667%;
-    *width: 16.6357%;
-}
-
-.pure-u-1-5 {
-    width: 20%;
-    *width: 19.9690%;
-}
-
-.pure-u-5-24 {
-    width: 20.8333%;
-    *width: 20.8023%;
-}
-
-.pure-u-1-4,
-.pure-u-6-24 {
-    width: 25%;
-    *width: 24.9690%;
-}
-
-.pure-u-7-24 {
-    width: 29.1667%;
-    *width: 29.1357%;
-}
-
-.pure-u-1-3,
-.pure-u-8-24 {
-    width: 33.3333%;
-    *width: 33.3023%;
-}
-
-.pure-u-3-8,
-.pure-u-9-24 {
-    width: 37.5000%;
-    *width: 37.4690%;
-}
-
-.pure-u-2-5 {
-    width: 40%;
-    *width: 39.9690%;
-}
-
-.pure-u-5-12,
-.pure-u-10-24 {
-    width: 41.6667%;
-    *width: 41.6357%;
-}
-
-.pure-u-11-24 {
-    width: 45.8333%;
-    *width: 45.8023%;
-}
-
-.pure-u-1-2,
-.pure-u-12-24 {
-    width: 50%;
-    *width: 49.9690%;
-}
-
-.pure-u-13-24 {
-    width: 54.1667%;
-    *width: 54.1357%;
-}
-
-.pure-u-7-12,
-.pure-u-14-24 {
-    width: 58.3333%;
-    *width: 58.3023%;
-}
-
-.pure-u-3-5 {
-    width: 60%;
-    *width: 59.9690%;
-}
-
-.pure-u-5-8,
-.pure-u-15-24 {
-    width: 62.5000%;
-    *width: 62.4690%;
-}
-
-.pure-u-2-3,
-.pure-u-16-24 {
-    width: 66.6667%;
-    *width: 66.6357%;
-}
-
-.pure-u-17-24 {
-    width: 70.8333%;
-    *width: 70.8023%;
-}
-
-.pure-u-3-4,
-.pure-u-18-24 {
-    width: 75%;
-    *width: 74.9690%;
-}
-
-.pure-u-19-24 {
-    width: 79.1667%;
-    *width: 79.1357%;
-}
-
-.pure-u-4-5 {
-    width: 80%;
-    *width: 79.9690%;
-}
-
-.pure-u-5-6,
-.pure-u-20-24 {
-    width: 83.3333%;
-    *width: 83.3023%;
-}
-
-.pure-u-7-8,
-.pure-u-21-24 {
-    width: 87.5000%;
-    *width: 87.4690%;
-}
-
-.pure-u-11-12,
-.pure-u-22-24 {
-    width: 91.6667%;
-    *width: 91.6357%;
-}
-
-.pure-u-23-24 {
-    width: 95.8333%;
-    *width: 95.8023%;
-}
-
-.pure-u-1,
-.pure-u-1-1,
-.pure-u-5-5,
-.pure-u-24-24 {
-    width: 100%;
-}
-.pure-button {
-    /* Structure */
-    display: inline-block;
-    zoom: 1;
-    line-height: normal;
-    white-space: nowrap;
-    vertical-align: middle;
-    text-align: center;
-    cursor: pointer;
-    -webkit-user-drag: none;
-    -webkit-user-select: none;
-       -moz-user-select: none;
-        -ms-user-select: none;
-            user-select: none;
-    box-sizing: border-box;
-}
-
-/* Firefox: Get rid of the inner focus border */
-.pure-button::-moz-focus-inner {
-    padding: 0;
-    border: 0;
-}
-
-/* Inherit .pure-g styles */
-.pure-button-group {
-    letter-spacing: -0.31em; /* Webkit: collapse white-space between units */
-    *letter-spacing: normal; /* reset IE < 8 */
-    *word-spacing: -0.43em; /* IE < 8: collapse white-space between units */
-    text-rendering: optimizespeed; /* Webkit: fixes text-rendering: 
optimizeLegibility */
-}
-
-.opera-only :-o-prefocus,
-.pure-button-group {
-    word-spacing: -0.43em;
-}
-
-.pure-button-group .pure-button {
-    letter-spacing: normal;
-    word-spacing: normal;
-    vertical-align: top;
-    text-rendering: auto;
-}
-
-/*csslint outline-none:false*/
-
-.pure-button {
-    font-family: inherit;
-    font-size: 100%;
-    padding: 0.5em 1em;
-    color: #444; /* rgba not supported (IE 8) */
-    color: rgba(0, 0, 0, 0.80); /* rgba supported */
-    border: 1px solid #999;  /*IE 6/7/8*/
-    border: none rgba(0, 0, 0, 0);  /*IE9 + everything else*/
-    background-color: #E6E6E6;
-    text-decoration: none;
-    border-radius: 2px;
-}
-
-.pure-button-hover,
-.pure-button:hover,
-.pure-button:focus {
-    /* csslint ignore:start */
-    filter: alpha(opacity=90);
-    /* csslint ignore:end */
-    background-image: -webkit-linear-gradient(transparent, rgba(0,0,0, 0.05) 
40%, rgba(0,0,0, 0.10));
-    background-image: linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, 
rgba(0,0,0, 0.10));
-}
-.pure-button:focus {
-    outline: 0;
-}
-.pure-button-active,
-.pure-button:active {
-    box-shadow: 0 0 0 1px rgba(0,0,0, 0.15) inset, 0 0 6px rgba(0,0,0, 0.20) 
inset;
-    border-color: #000;
-}
-
-.pure-button[disabled],
-.pure-button-disabled,
-.pure-button-disabled:hover,
-.pure-button-disabled:focus,
-.pure-button-disabled:active {
-    border: none;
-    background-image: none;
-    /* csslint ignore:start */
-    filter: alpha(opacity=40);
-    /* csslint ignore:end */
-    opacity: 0.40;
-    cursor: not-allowed;
-    box-shadow: none;
-    pointer-events: none;
-}
-
-.pure-button-hidden {
-    display: none;
-}
-
-.pure-button-primary,
-.pure-button-selected,
-a.pure-button-primary,
-a.pure-button-selected {
-    background-color: rgb(0, 120, 231);
-    color: #fff;
-}
-
-/* Button Groups */
-.pure-button-group .pure-button {
-    margin: 0;
-    border-radius: 0;
-    border-right: 1px solid #111;  /* fallback color for rgba() for IE7/8 */
-    border-right: 1px solid rgba(0, 0, 0, 0.2);
-
-}
-
-.pure-button-group .pure-button:first-child {
-    border-top-left-radius: 2px;
-    border-bottom-left-radius: 2px;
-}
-.pure-button-group .pure-button:last-child {
-    border-top-right-radius: 2px;
-    border-bottom-right-radius: 2px;
-    border-right: none;
-}
-
-/*csslint box-model:false*/
-/*
-Box-model set to false because we're setting a height on select elements, which
-also have border and padding. This is done because some browsers don't render
-the padding. We explicitly set the box-model for select elements to border-box,
-so we can ignore the csslint warning.
-*/
-
-.pure-form input[type="text"],
-.pure-form input[type="password"],
-.pure-form input[type="email"],
-.pure-form input[type="url"],
-.pure-form input[type="date"],
-.pure-form input[type="month"],
-.pure-form input[type="time"],
-.pure-form input[type="datetime"],
-.pure-form input[type="datetime-local"],
-.pure-form input[type="week"],
-.pure-form input[type="number"],
-.pure-form input[type="search"],
-.pure-form input[type="tel"],
-.pure-form input[type="color"],
-.pure-form select,
-.pure-form textarea {
-    padding: 0.5em 0.6em;
-    display: inline-block;
-    border: 1px solid #ccc;
-    box-shadow: inset 0 1px 3px #ddd;
-    border-radius: 4px;
-    vertical-align: middle;
-    box-sizing: border-box;
-}
-
-/*
-Need to separate out the :not() selector from the rest of the CSS 2.1 selectors
-since IE8 won't execute CSS that contains a CSS3 selector.
-*/
-.pure-form input:not([type]) {
-    padding: 0.5em 0.6em;
-    display: inline-block;
-    border: 1px solid #ccc;
-    box-shadow: inset 0 1px 3px #ddd;
-    border-radius: 4px;
-    box-sizing: border-box;
-}
-
-
-/* Chrome (as of v.32/34 on OS X) needs additional room for color to display. 
*/
-/* May be able to remove this tweak as color inputs become more standardized 
across browsers. */
-.pure-form input[type="color"] {
-    padding: 0.2em 0.5em;
-}
-
-
-.pure-form input[type="text"]:focus,
-.pure-form input[type="password"]:focus,
-.pure-form input[type="email"]:focus,
-.pure-form input[type="url"]:focus,
-.pure-form input[type="date"]:focus,
-.pure-form input[type="month"]:focus,
-.pure-form input[type="time"]:focus,
-.pure-form input[type="datetime"]:focus,
-.pure-form input[type="datetime-local"]:focus,
-.pure-form input[type="week"]:focus,
-.pure-form input[type="number"]:focus,
-.pure-form input[type="search"]:focus,
-.pure-form input[type="tel"]:focus,
-.pure-form input[type="color"]:focus,
-.pure-form select:focus,
-.pure-form textarea:focus {
-    outline: 0;
-    border-color: #129FEA;
-}
-
-/*
-Need to separate out the :not() selector from the rest of the CSS 2.1 selectors
-since IE8 won't execute CSS that contains a CSS3 selector.
-*/
-.pure-form input:not([type]):focus {
-    outline: 0;
-    border-color: #129FEA;
-}
-
-.pure-form input[type="file"]:focus,
-.pure-form input[type="radio"]:focus,
-.pure-form input[type="checkbox"]:focus {
-    outline: thin solid #129FEA;
-    outline: 1px auto #129FEA;
-}
-.pure-form .pure-checkbox,
-.pure-form .pure-radio {
-    margin: 0.5em 0;
-    display: block;
-}
-
-.pure-form input[type="text"][disabled],
-.pure-form input[type="password"][disabled],
-.pure-form input[type="email"][disabled],
-.pure-form input[type="url"][disabled],
-.pure-form input[type="date"][disabled],
-.pure-form input[type="month"][disabled],
-.pure-form input[type="time"][disabled],
-.pure-form input[type="datetime"][disabled],
-.pure-form input[type="datetime-local"][disabled],
-.pure-form input[type="week"][disabled],
-.pure-form input[type="number"][disabled],
-.pure-form input[type="search"][disabled],
-.pure-form input[type="tel"][disabled],
-.pure-form input[type="color"][disabled],
-.pure-form select[disabled],
-.pure-form textarea[disabled] {
-    cursor: not-allowed;
-    background-color: #eaeded;
-    color: #cad2d3;
-}
-
-/*
-Need to separate out the :not() selector from the rest of the CSS 2.1 selectors
-since IE8 won't execute CSS that contains a CSS3 selector.
-*/
-.pure-form input:not([type])[disabled] {
-    cursor: not-allowed;
-    background-color: #eaeded;
-    color: #cad2d3;
-}
-.pure-form input[readonly],
-.pure-form select[readonly],
-.pure-form textarea[readonly] {
-    background-color: #eee; /* menu hover bg color */
-    color: #777; /* menu text color */
-    border-color: #ccc;
-}
-
-.pure-form input:focus:invalid,
-.pure-form textarea:focus:invalid,
-.pure-form select:focus:invalid {
-    color: #b94a48;
-    border-color: #e9322d;
-}
-.pure-form input[type="file"]:focus:invalid:focus,
-.pure-form input[type="radio"]:focus:invalid:focus,
-.pure-form input[type="checkbox"]:focus:invalid:focus {
-    outline-color: #e9322d;
-}
-.pure-form select {
-    /* Normalizes the height; padding is not sufficient. */
-    height: 2.25em;
-    border: 1px solid #ccc;
-    background-color: white;
-}
-.pure-form select[multiple] {
-    height: auto;
-}
-.pure-form label {
-    margin: 0.5em 0 0.2em;
-}
-.pure-form fieldset {
-    margin: 0;
-    padding: 0.35em 0 0.75em;
-    border: 0;
-}
-.pure-form legend {
-    display: block;
-    width: 100%;
-    padding: 0.3em 0;
-    margin-bottom: 0.3em;
-    color: #333;
-    border-bottom: 1px solid #e5e5e5;
-}
-
-.pure-form-stacked input[type="text"],
-.pure-form-stacked input[type="password"],
-.pure-form-stacked input[type="email"],
-.pure-form-stacked input[type="url"],
-.pure-form-stacked input[type="date"],
-.pure-form-stacked input[type="month"],
-.pure-form-stacked input[type="time"],
-.pure-form-stacked input[type="datetime"],
-.pure-form-stacked input[type="datetime-local"],
-.pure-form-stacked input[type="week"],
-.pure-form-stacked input[type="number"],
-.pure-form-stacked input[type="search"],
-.pure-form-stacked input[type="tel"],
-.pure-form-stacked input[type="color"],
-.pure-form-stacked input[type="file"],
-.pure-form-stacked select,
-.pure-form-stacked label,
-.pure-form-stacked textarea {
-    display: block;
-    margin: 0.25em 0;
-}
-
-/*
-Need to separate out the :not() selector from the rest of the CSS 2.1 selectors
-since IE8 won't execute CSS that contains a CSS3 selector.
-*/
-.pure-form-stacked input:not([type]) {
-    display: block;
-    margin: 0.25em 0;
-}
-.pure-form-aligned input,
-.pure-form-aligned textarea,
-.pure-form-aligned select,
-/* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline 
instead. */
-.pure-form-aligned .pure-help-inline,
-.pure-form-message-inline {
-    display: inline-block;
-    *display: inline;
-    *zoom: 1;
-    vertical-align: middle;
-}
-.pure-form-aligned textarea {
-    vertical-align: top;
-}
-
-/* Aligned Forms */
-.pure-form-aligned .pure-control-group {
-    margin-bottom: 0.5em;
-}
-.pure-form-aligned .pure-control-group label {
-    text-align: right;
-    display: inline-block;
-    vertical-align: middle;
-    width: 10em;
-    margin: 0 1em 0 0;
-}
-.pure-form-aligned .pure-controls {
-    margin: 1.5em 0 0 11em;
-}
-
-/* Rounded Inputs */
-.pure-form input.pure-input-rounded,
-.pure-form .pure-input-rounded {
-    border-radius: 2em;
-    padding: 0.5em 1em;
-}
-
-/* Grouped Inputs */
-.pure-form .pure-group fieldset {
-    margin-bottom: 10px;
-}
-.pure-form .pure-group input,
-.pure-form .pure-group textarea {
-    display: block;
-    padding: 10px;
-    margin: 0 0 -1px;
-    border-radius: 0;
-    position: relative;
-    top: -1px;
-}
-.pure-form .pure-group input:focus,
-.pure-form .pure-group textarea:focus {
-    z-index: 3;
-}
-.pure-form .pure-group input:first-child,
-.pure-form .pure-group textarea:first-child {
-    top: 1px;
-    border-radius: 4px 4px 0 0;
-    margin: 0;
-}
-.pure-form .pure-group input:first-child:last-child,
-.pure-form .pure-group textarea:first-child:last-child {
-    top: 1px;
-    border-radius: 4px;
-    margin: 0;
-}
-.pure-form .pure-group input:last-child,
-.pure-form .pure-group textarea:last-child {
-    top: -2px;
-    border-radius: 0 0 4px 4px;
-    margin: 0;
-}
-.pure-form .pure-group button {
-    margin: 0.35em 0;
-}
-
-.pure-form .pure-input-1 {
-    width: 100%;
-}
-.pure-form .pure-input-3-4 {
-    width: 75%;
-}
-.pure-form .pure-input-2-3 {
-    width: 66%;
-}
-.pure-form .pure-input-1-2 {
-    width: 50%;
-}
-.pure-form .pure-input-1-3 {
-    width: 33%;
-}
-.pure-form .pure-input-1-4 {
-    width: 25%;
-}
-
-/* Inline help for forms */
-/* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline 
instead. */
-.pure-form .pure-help-inline,
-.pure-form-message-inline {
-    display: inline-block;
-    padding-left: 0.3em;
-    color: #666;
-    vertical-align: middle;
-    font-size: 0.875em;
-}
-
-/* Block help for forms */
-.pure-form-message {
-    display: block;
-    color: #666;
-    font-size: 0.875em;
-}
-
-@media only screen and (max-width : 480px) {
-    .pure-form button[type="submit"] {
-        margin: 0.7em 0 0;
-    }
-
-    .pure-form input:not([type]),
-    .pure-form input[type="text"],
-    .pure-form input[type="password"],
-    .pure-form input[type="email"],
-    .pure-form input[type="url"],
-    .pure-form input[type="date"],
-    .pure-form input[type="month"],
-    .pure-form input[type="time"],
-    .pure-form input[type="datetime"],
-    .pure-form input[type="datetime-local"],
-    .pure-form input[type="week"],
-    .pure-form input[type="number"],
-    .pure-form input[type="search"],
-    .pure-form input[type="tel"],
-    .pure-form input[type="color"],
-    .pure-form label {
-        margin-bottom: 0.3em;
-        display: block;
-    }
-
-    .pure-group input:not([type]),
-    .pure-group input[type="text"],
-    .pure-group input[type="password"],
-    .pure-group input[type="email"],
-    .pure-group input[type="url"],
-    .pure-group input[type="date"],
-    .pure-group input[type="month"],
-    .pure-group input[type="time"],
-    .pure-group input[type="datetime"],
-    .pure-group input[type="datetime-local"],
-    .pure-group input[type="week"],
-    .pure-group input[type="number"],
-    .pure-group input[type="search"],
-    .pure-group input[type="tel"],
-    .pure-group input[type="color"] {
-        margin-bottom: 0;
-    }
-
-    .pure-form-aligned .pure-control-group label {
-        margin-bottom: 0.3em;
-        text-align: left;
-        display: block;
-        width: 100%;
-    }
-
-    .pure-form-aligned .pure-controls {
-        margin: 1.5em 0 0 0;
-    }
-
-    /* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline 
instead. */
-    .pure-form .pure-help-inline,
-    .pure-form-message-inline,
-    .pure-form-message {
-        display: block;
-        font-size: 0.75em;
-        /* Increased bottom padding to make it group with its related input 
element. */
-        padding: 0.2em 0 0.8em;
-    }
-}
-
-/*csslint adjoining-classes: false, box-model:false*/
-.pure-menu {
-    box-sizing: border-box;
-}
-
-.pure-menu-fixed {
-    position: fixed;
-    left: 0;
-    top: 0;
-    z-index: 3;
-}
-
-.pure-menu-list,
-.pure-menu-item {
-    position: relative;
-}
-
-.pure-menu-list {
-    list-style: none;
-    margin: 0;
-    padding: 0;
-}
-
-.pure-menu-item {
-    padding: 0;
-    margin: 0;
-    height: 100%;
-}
-
-.pure-menu-link,
-.pure-menu-heading {
-    display: block;
-    text-decoration: none;
-    white-space: nowrap;
-}
-
-/* HORIZONTAL MENU */
-.pure-menu-horizontal {
-    width: 100%;
-    white-space: nowrap;
-}
-
-.pure-menu-horizontal .pure-menu-list {
-    display: inline-block;
-}
-
-/* Initial menus should be inline-block so that they are horizontal */
-.pure-menu-horizontal .pure-menu-item,
-.pure-menu-horizontal .pure-menu-heading,
-.pure-menu-horizontal .pure-menu-separator {
-    display: inline-block;
-    *display: inline;
-    zoom: 1;
-    vertical-align: middle;
-}
-
-/* Submenus should still be display: block; */
-.pure-menu-item .pure-menu-item {
-    display: block;
-}
-
-.pure-menu-children {
-    display: none;
-    position: absolute;
-    left: 100%;
-    top: 0;
-    margin: 0;
-    padding: 0;
-    z-index: 3;
-}
-
-.pure-menu-horizontal .pure-menu-children {
-    left: 0;
-    top: auto;
-    width: inherit;
-}
-
-.pure-menu-allow-hover:hover > .pure-menu-children,
-.pure-menu-active > .pure-menu-children {
-    display: block;
-    position: absolute;
-}
-
-/* Vertical Menus - show the dropdown arrow */
-.pure-menu-has-children > .pure-menu-link:after {
-    padding-left: 0.5em;
-    content: "\25B8";
-    font-size: small;
-}
-
-/* Horizontal Menus - show the dropdown arrow */
-.pure-menu-horizontal .pure-menu-has-children > .pure-menu-link:after {
-    content: "\25BE";
-}
-
-/* scrollable menus */
-.pure-menu-scrollable {
-    overflow-y: scroll;
-    overflow-x: hidden;
-}
-
-.pure-menu-scrollable .pure-menu-list {
-    display: block;
-}
-
-.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list {
-    display: inline-block;
-}
-
-.pure-menu-horizontal.pure-menu-scrollable {
-    white-space: nowrap;
-    overflow-y: hidden;
-    overflow-x: auto;
-    -ms-overflow-style: none;
-    -webkit-overflow-scrolling: touch;
-    /* a little extra padding for this style to allow for scrollbars */
-    padding: .5em 0;
-}
-
-.pure-menu-horizontal.pure-menu-scrollable::-webkit-scrollbar {
-    display: none;
-}
-
-/* misc default styling */
-
-.pure-menu-separator,
-.pure-menu-horizontal .pure-menu-children .pure-menu-separator {
-    background-color: #ccc;
-    height: 1px;
-    margin: .3em 0;
-}
-
-.pure-menu-horizontal .pure-menu-separator {
-    width: 1px;
-    height: 1.3em;
-    margin: 0 .3em ;
-}
-
-/* Need to reset the separator since submenu is vertical */
-.pure-menu-horizontal .pure-menu-children .pure-menu-separator {
-    display: block;
-    width: auto;
-}
-
-.pure-menu-heading {
-    text-transform: uppercase;
-    color: #565d64;
-}
-
-.pure-menu-link {
-    color: #777;
-}
-
-.pure-menu-children {
-    background-color: #fff;
-}
-
-.pure-menu-link,
-.pure-menu-disabled,
-.pure-menu-heading {
-    padding: .5em 1em;
-}
-
-.pure-menu-disabled {
-    opacity: .5;
-}
-
-.pure-menu-disabled .pure-menu-link:hover {
-    background-color: transparent;
-}
-
-.pure-menu-active > .pure-menu-link,
-.pure-menu-link:hover,
-.pure-menu-link:focus {
-    background-color: #eee;
-}
-
-.pure-menu-selected .pure-menu-link,
-.pure-menu-selected .pure-menu-link:visited {
-    color: #000;
-}
-
-.pure-table {
-    /* Remove spacing between table cells (from Normalize.css) */
-    border-collapse: collapse;
-    border-spacing: 0;
-    empty-cells: show;
-    border: 1px solid #cbcbcb;
-}
-
-.pure-table caption {
-    color: #000;
-    font: italic 85%/1 arial, sans-serif;
-    padding: 1em 0;
-    text-align: center;
-}
-
-.pure-table td,
-.pure-table th {
-    border-left: 1px solid #cbcbcb;/*  inner column border */
-    border-width: 0 0 0 1px;
-    font-size: inherit;
-    margin: 0;
-    overflow: visible; /*to make ths where the title is really long work*/
-    padding: 0.5em 1em; /* cell padding */
-}
-
-/* Consider removing this next declaration block, as it causes problems when
-there's a rowspan on the first cell. Case added to the tests. issue#432 */
-.pure-table td:first-child,
-.pure-table th:first-child {
-    border-left-width: 0;
-}
-
-.pure-table thead {
-    background-color: #e0e0e0;
-    color: #000;
-    text-align: left;
-    vertical-align: bottom;
-}
-
-/*
-striping:
-   even - #fff (white)
-   odd  - #f2f2f2 (light gray)
-*/
-.pure-table td {
-    background-color: transparent;
-}
-.pure-table-odd td {
-    background-color: #f2f2f2;
-}
-
-/* nth-child selector for modern browsers */
-.pure-table-striped tr:nth-child(2n-1) td {
-    background-color: #f2f2f2;
-}
-
-/* BORDERED TABLES */
-.pure-table-bordered td {
-    border-bottom: 1px solid #cbcbcb;
-}
-.pure-table-bordered tbody > tr:last-child > td {
-    border-bottom-width: 0;
-}
-
-
-/* HORIZONTAL BORDERED TABLES */
-
-.pure-table-horizontal td,
-.pure-table-horizontal th {
-    border-width: 0 0 1px 0;
-    border-bottom: 1px solid #cbcbcb;
-}
-.pure-table-horizontal tbody > tr:last-child > td {
-    border-bottom-width: 0;
-}
diff --git a/talermerchantdemos/static/taler-fallback.scss 
b/talermerchantdemos/static/taler-fallback.scss
deleted file mode 100644
index e403d71..0000000
--- a/talermerchantdemos/static/taler-fallback.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Fallback stylesheet.  Should be included in the document as follows:
- *
- * <link rel="stylesheet"
- *       href="taler-fallback.css"
- *       id="taler-presence-stylesheet />
- *
- * When either the taler-wallet-lib is included or the wallet is presence,
- * it will take over this stylesheet for presence detection.
- *
- * This fallback stylesheet makes sure that classes for presence detection
- * are displayed correctly, even if JavaScript is disabled and the wallet
- * is not present.
- */
-
-.taler-installed-show { display: none; }

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]