diff --git a/incorporealcms/pages.py b/incorporealcms/pages.py
index 7c6a044..659cc93 100644
--- a/incorporealcms/pages.py
+++ b/incorporealcms/pages.py
@@ -45,7 +45,9 @@ def handle_markdown_file_path(path: str) -> str:
                                description=get_meta_str(md, 'description'),
                                image=get_meta_str(md, 'image'),
                                content=content,
-                               user_style=Config.PAGE_STYLES.get(Config.DEFAULT_PAGE_STYLE),
+                               stylesheet=(Config.DEFAULT_PAGE_STYLE,
+                                           Config.PAGE_STYLES.get(Config.DEFAULT_PAGE_STYLE)),
+                               page_styles=Config.PAGE_STYLES,
                                base_url=Config.BASE_HOST + instance_resource_path_to_request_path(path),
                                navs=parent_navs,
                                mtime=mtime.strftime('%Y-%m-%d %H:%M:%S %Z'),
diff --git a/incorporealcms/ssg.py b/incorporealcms/ssg.py
index 4f01c9c..6b88a88 100644
--- a/incorporealcms/ssg.py
+++ b/incorporealcms/ssg.py
@@ -45,11 +45,11 @@ def build():
     tmp_output_dir = tempfile.mkdtemp(dir=os.path.dirname(output_dir))
     cprint(f"creating temporary directory '{tmp_output_dir}' for writing", 'green')
 
-    # CORE CONTENT
+    # copy core content
     pages_dir = os.path.join(instance_dir, 'pages')
     copy_to_destination(pages_dir, tmp_output_dir)
 
-    # STATIC DIR
+    # copy the program's static dir
     program_static_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static')
     static_output_dir = os.path.join(tmp_output_dir, 'static')
     try:
@@ -59,7 +59,7 @@ def build():
         pass
     copy_to_destination(program_static_dir, static_output_dir, convert_markdown=False)
 
-    # INSTANCE STATIC DIR
+    # copy the instance's static dir --- should I deprecate this since it could just be stuff in pages/static/?
     custom_static_dir = os.path.join(instance_dir, 'custom-static')
     copy_to_destination(custom_static_dir, static_output_dir, convert_markdown=False)
 
diff --git a/incorporealcms/templates/base.html b/incorporealcms/templates/base.html
index d7ec4d8..5e3a761 100644
--- a/incorporealcms/templates/base.html
+++ b/incorporealcms/templates/base.html
@@ -6,16 +6,64 @@ SPDX-License-Identifier: AGPL-3.0-or-later
 <!doctype html>
 <html lang="en">
 <title>{{ title }}</title>
+<meta charset="utf-8">
 {% if title %}<meta property="og:title" content="{{ title }}">{% endif %}
 {% if description %}<meta property="og:description" content="{{ description }}">{% endif %}
 <meta property="og:url" content="{{ base_url }}">
 {% if image %}<meta property="og:image" content="{{ image }}">{% endif %}
 <meta name="twitter:card" content="summary_large_image">
 <meta name="viewport" content="width=device-width, initial-scale=1">
-<link rel="stylesheet" href="{{ user_style }}">
+<link rel="stylesheet" type="text/css" title="{{ stylesheet.0 }}" href="{{ stylesheet.1 }}">
+{% for style, stylesheet in page_styles.items() %}
+<link rel="alternate stylesheet" type="text/css" title="{{ style }}" href="{{ stylesheet }}" />
+{% endfor %}
 <link rel="icon" href="{% if config.FAVICON %}{{ config.FAVICON }}{% else %}/static/img/favicon.png{% endif %}">
 <link rel="alternate" type="application/atom+xml" href="/feed/atom">
 <link rel="alternate" type="application/rss+xml" href="/feed/rss">
+<script type="text/javascript">
+// loathe as I am to use JavaScript, this style selection is one of my favorite parts
+// of my CMS, so I want to keep it around even in the static site
+function applyStyle(styleName) {
+    // disable all stylesheets except the one to apply, the user style
+    var i, link_tag;
+    for (i = 0, link_tag = document.getElementsByTagName("link"); i < link_tag.length; i++ ) {
+        // find the stylesheets with titles, meaning they can be disabled/enabled
+        if ((link_tag[i].rel.indexOf("stylesheet") != -1) && link_tag[i].title) {
+            alert(link_tag[i].title);
+            link_tag[i].disabled = true;
+            if (link_tag[i].title == styleName) {
+                link_tag[i].disabled = false ;
+            }
+        }
+    }
+}
+
+function setStyle(styleName) {
+    document.cookie = "user-style=" + encodeURIComponent(styleName) + "; max-age=31536000";
+    applyStyle(styleName);
+}
+
+
+function applyStyleFromCookie() {
+    // get the user style cookie and set that specified style as the active one
+    var styleName = getCookie("user-style");
+    alert(styleName);
+    if (styleName) {
+        applyStyle(styleName);
+    }
+}
+
+function getCookie(cookieName) {
+    // find the desired cookie from the document's cookie(s) string
+    let matches = document.cookie.match(new RegExp(
+                "(?:^|; )" + cookieName.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
+                ));
+    alert(matches);
+    return matches ? decodeURIComponent(matches[1]) : undefined;
+}
+
+applyStyleFromCookie();
+</script>
 
 <div {% block site_class %}class="site-wrap site-wrap-normal-width"{% endblock %}>
     {% block header %}
@@ -29,7 +77,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
         {% if page_styles %}
         <div class="styles">
             {% for style in page_styles %}
-            <a href="?style={{ style }}">[{{ style }}]</a>
+            <a href="#" onclick="setStyle('{{ style }}'); return false;">[{{ style }}]</a>
             {% endfor %}
         </div>
         {% endif %}