├── .github
└── workflows
│ └── codeql-analysis.yml
├── .htaccess
├── CHANGELOG.md
├── LICENSE
├── README.md
├── content
├── backup
│ └── index.php
├── plugins
│ ├── gallery
│ │ ├── ext-gallery.php
│ │ ├── fotorama
│ │ │ ├── fotorama-config.css
│ │ │ ├── fotorama.css
│ │ │ ├── fotorama.js
│ │ │ ├── fotorama.png
│ │ │ └── fotorama@2x.png
│ │ └── readme.txt
│ └── hound-slider
│ │ └── ext-slider.php
└── site
│ ├── pages
│ └── index.php
│ └── templates
│ ├── demo
│ ├── blog.php
│ ├── css
│ │ ├── demo.css
│ │ └── thin-ui.css
│ ├── footer.php
│ ├── header.php
│ ├── home.php
│ ├── images
│ │ └── gallery
│ │ │ ├── 10.jpg
│ │ │ ├── 11.jpg
│ │ │ ├── 12.jpg
│ │ │ ├── 13.jpg
│ │ │ ├── 4.jpg
│ │ │ ├── 6.jpg
│ │ │ ├── 8.jpg
│ │ │ ├── 9.jpg
│ │ │ ├── IMG_4065.JPG
│ │ │ ├── IMG_4125.JPG
│ │ │ ├── IMG_4160.JPG
│ │ │ ├── IMG_4210.JPG
│ │ │ ├── IMG_4225.JPG
│ │ │ └── IMG_4307.JPG
│ ├── js
│ │ └── functions.js
│ ├── lib
│ │ ├── roarjs
│ │ │ ├── roar.css
│ │ │ └── roar.js
│ │ └── thin-select
│ │ │ ├── thin-select.css
│ │ │ └── thin-select.js
│ ├── page-payment.php
│ ├── page-roarjs.php
│ ├── page-thin-select.php
│ ├── page.php
│ ├── post.php
│ └── style.css
│ ├── grey
│ ├── blog.php
│ ├── css
│ │ ├── normalize.css
│ │ └── normalize.min.css
│ ├── footer.php
│ ├── header.php
│ ├── images
│ │ └── gallery
│ │ │ ├── 10.jpg
│ │ │ ├── 11.jpg
│ │ │ ├── 12.jpg
│ │ │ ├── 13.jpg
│ │ │ ├── 4.jpg
│ │ │ ├── 6.jpg
│ │ │ ├── 8.jpg
│ │ │ ├── 9.jpg
│ │ │ ├── IMG_4065.JPG
│ │ │ ├── IMG_4125.JPG
│ │ │ ├── IMG_4160.JPG
│ │ │ ├── IMG_4210.JPG
│ │ │ ├── IMG_4225.JPG
│ │ │ └── IMG_4307.JPG
│ ├── js
│ │ └── functions.js
│ ├── page-payment.php
│ ├── page.php
│ ├── post.php
│ └── style.css
│ └── index.php
├── core
├── admin
│ ├── backup.php
│ ├── configuration.php
│ ├── content.php
│ ├── css
│ │ └── thin-ui.css
│ ├── dashboard.php
│ ├── edit-menu.php
│ ├── edit.php
│ ├── includes
│ │ ├── footer.php
│ │ ├── functions.php
│ │ ├── header.php
│ │ └── sidebar.php
│ ├── index.php
│ ├── js
│ │ └── jquery-functions.js
│ ├── login.php
│ ├── logout.php
│ ├── media-popup.php
│ ├── media.php
│ ├── menu.php
│ ├── new-menu.php
│ ├── new.php
│ ├── search-replace.php
│ └── tinymceplugin
│ │ └── plugin.min.js
├── config.php
├── db-functions.php
├── db.php
├── db
│ ├── .htaccess
│ └── index.php
├── hound.php
├── plugins.php
└── template.class.php
├── index.php
└── license.txt
/.github/workflows/codeql-analysis.yml:
--------------------------------------------------------------------------------
1 | # For most projects, this workflow file will not need changing; you simply need
2 | # to commit it to your repository.
3 | #
4 | # You may wish to alter this file to override the set of languages analyzed,
5 | # or to provide custom queries or build logic.
6 | name: "CodeQL"
7 |
8 | on:
9 | push:
10 | branches: [master]
11 | pull_request:
12 | # The branches below must be a subset of the branches above
13 | branches: [master]
14 | schedule:
15 | - cron: '0 18 * * 5'
16 |
17 | jobs:
18 | analyze:
19 | name: Analyze
20 | runs-on: ubuntu-latest
21 |
22 | strategy:
23 | fail-fast: false
24 | matrix:
25 | # Override automatic language detection by changing the below list
26 | # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
27 | language: ['javascript']
28 | # Learn more...
29 | # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
30 |
31 | steps:
32 | - name: Checkout repository
33 | uses: actions/checkout@v2
34 | with:
35 | # We must fetch at least the immediate parents so that if this is
36 | # a pull request then we can checkout the head.
37 | fetch-depth: 2
38 |
39 | # If this run was triggered by a pull request event, then checkout
40 | # the head of the pull request instead of the merge commit.
41 | - run: git checkout HEAD^2
42 | if: ${{ github.event_name == 'pull_request' }}
43 |
44 | # Initializes the CodeQL tools for scanning.
45 | - name: Initialize CodeQL
46 | uses: github/codeql-action/init@v1
47 | with:
48 | languages: ${{ matrix.language }}
49 | # If you wish to specify custom queries, you can do so here or in a config file.
50 | # By default, queries listed here will override any specified in a config file.
51 | # Prefix the list here with "+" to use these queries and those in the config file.
52 | # queries: ./path/to/local/query, your-org/your-repo/queries@main
53 |
54 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
55 | # If this step fails, then you should remove it and run the build manually (see below)
56 | - name: Autobuild
57 | uses: github/codeql-action/autobuild@v1
58 |
59 | # ℹ️ Command-line programs to run using the OS shell.
60 | # 📚 https://git.io/JvXDl
61 |
62 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
63 | # and modify them (or add more) to build your code if your project
64 | # uses a compiled language
65 |
66 | #- run: |
67 | # make bootstrap
68 | # make release
69 |
70 | - name: Perform CodeQL Analysis
71 | uses: github/codeql-action/analyze@v1
72 |
--------------------------------------------------------------------------------
/.htaccess:
--------------------------------------------------------------------------------
1 |
2 | RewriteEngine on
3 | RewriteCond %{REQUEST_FILENAME} !-f
4 | RewriteCond %{REQUEST_FILENAME} !-d
5 | RewriteRule ^([^?]*)$ /beta/index.php [NC,L,QSA]
6 |
7 |
8 |
9 | #AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript
10 |
11 |
12 |
13 | #ExpiresActive On
14 | #ExpiresByType image/jpg "access plus 1 year"
15 | #ExpiresByType image/jpeg "access plus 1 year"
16 | #ExpiresByType image/gif "access plus 1 year"
17 | #ExpiresByType image/png "access plus 1 year"
18 | #ExpiresByType text/css "access plus 1 month"
19 | #ExpiresByType application/pdf "access plus 1 month"
20 | #ExpiresByType text/x-javascript "access plus 1 month"
21 | #ExpiresByType application/x-shockwave-flash "access plus 1 month"
22 | #ExpiresByType image/x-icon "access plus 1 year"
23 | #ExpiresDefault "access plus 2 days"
24 |
25 |
26 |
27 | #Header set Connection keep-alive
28 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | = 0.X.X =
2 | * TODO: Remove classes
3 | * TODO: Add basic plugins panel with name, version, author and URI
4 | * TODO: Add unique content directory
5 | * TODO: Group all core files
6 | * TODO: Better upgrader
7 | * TODO: Responsive default theme
8 | * TODO: AJAX
9 | * TODO: PureCSS
10 | * TODO: Better check_login function
11 | * TODO: Update FontAwesome
12 |
13 | = 0.8.4 =
14 | * UPDATE: Changed path detection for performance
15 | * UPDATE: Added more constants to config file
16 |
17 | = 0.8.3 =
18 | * FIX: Path fixes
19 | * FIX: Media modal fixes
20 | * FIX: Permission check fixes
21 |
22 | = 0.8.2 =
23 | * core/admin
24 | * core/config.php
25 | * core/hound.php
26 | * core/plugins.php
27 | * core/template.class.php
28 | * content/plugins
29 | * content/site
30 | * content/files
31 | * content/backup
32 | * vendor/*
33 |
34 | = 0.8.0 =
35 | * UPDATE: Refactored authentication check (in progress...)
36 | * UPDATE: Refactored core/content files (in progress...)
37 | * UPDATE: Refactored core using a functional approach
38 | * UPDATE: Removed tagline/slogan
39 | * UPDATE: Removed access log
40 | * UPDATE: Removed .php from template on post/page screen
41 | * UPDATE: Fixed upgrade routine
42 |
43 | = 0.7.0 =
44 | * FIX: Fixed PHP 7.2 compatibility
45 | * FIX: Fixed lots of issues with undeclared variables
46 | * UPDATE: Removed template editor
47 | * UPDATE: Removed installation prompt/template
48 |
49 | = 0.6.1 =
50 | * UPDATE: Moved Hound version to a constant
51 | * UPDATE: Code quality changes
52 |
53 | = 0.6.0 =
54 | * FIX: Removed/combined unused function
55 | * FIX: Consolidated parameter extraction
56 | * UPDATE: Added plugin header
57 |
58 | = 0.5.1 =
59 | * FEATURE: Added hook/listener system
60 | * UPDATE: Removed old, non-functional plugin system
61 |
62 | = 0.5.0 =
63 | * PERFORMANCE: Removed meta title
64 | * PERFORMANCE: Removed meta description
65 | * PERFORMANCE: Removed meta keywords
66 | * PERFORMANCE: Removed featured image
67 | * SECURITY: Removed unused files from Grey theme
68 | * UPDATE: Updated media library popup
69 | * UPDATE: Update TinyMCE to 4.6.6 (from 4.5.4)
70 |
71 | = 0.4.2 =
72 | * UPDATE: Updated media library code
73 |
74 | = 0.4.1 =
75 | * UPDATE: Added user agent to cURL call for update checking
76 |
77 | = 0.4.0 =
78 | * UPDATE: Removed last accessed location as the API has a small quota
79 | * UPDATE: Changed the way the update check is performed to allow for more server configurations
80 |
81 | = 0.3.1 =
82 | * FIX: Fixed post/page preview link
83 | * UPDATE: UI tweaks for content section
84 |
85 | = 0.3.0 =
86 | * FIX: Fixed site title in default template header
87 | * FIX: Removed strict types declaration for PHP versions lower than 7
88 | * FIX: Fixed missing styles for several admin pages
89 | * FIX: Fixed sidebar width
90 | * UPDATE: Merged pages.php and posts.php into content.php and used URI arguments
91 | * UPDATE: Merged new-page.php and new-post.php into new.php and used URI arguments
92 |
93 | = 0.2.4 =
94 | * FIX: Fixed template editor to not append .tpl at the end of saved files
95 | * FIX: Removed unused styles and compressed stylesheets
96 | * FIX: Fixed a fatal error with the theme editor
97 | * FIX: Fixed TinyMCE editor
98 | * FIX: Fixed logout function not working properly
99 | * UPDATE: Removed Ace editor
100 | * UPDATE: Allowed removal of all files before applying automatic updates
101 | * FEATURE: Added "last login" functionality
102 | * TODO: Document all functions
103 | * TODO: Clean up all files
104 | * TODO: Clean up gallery
105 | * TODO: Add Headline as the second official theme
106 | * TODO: Figure out how plugins work (and then the world opens up)
107 |
108 | = 0.2.3 =
109 | * FEATURE: Added CPU load in Dashboard
110 |
111 | = 0.2.2 =
112 | * FIX: Fixed a fatal error
113 |
114 | = 0.2.1 =
115 | * FEATURE: Added a welcome screen for fresh installations or for no index page found
116 | * REFACTORING: Removed /libs/houndAdmin.php
117 | * REFACTORING: Code cleanup
118 |
119 | = 0.2.0 =
120 | * FIX: Removed duplicate license
121 | * UPDATE: Added backups to "At a Glance" section
122 | * UPDATE: Added media items to "At a Glance" section
123 | * UPDATE: Admin UI tweaks
124 | * UPDATE: Added more server software checks to dashboard
125 | * FEATURE: Added automatic updates and notifications
126 |
127 | = 0.1.8 =
128 | * FEATURE: Added automatic updates and notifications
129 |
130 | = 0.1.5 =
131 | * FIX: Fixed URL parameters not being allowed
132 | * UPDATE: Admin UI tweaks
133 | * FEATURE: Added backup functionality
134 |
135 | = 0.1.4 =
136 | * UPDATE: Added CHANGELOG.md
137 | * UPDATE: Refactored system requirements check
138 | * UPDATE: Cleaned up the configuration page
139 | * UI: Updated interface for consistency
140 | * UI: Updated the pages section UI
141 |
142 | = 0.1.3 =
143 | * UPDATE: Added default theme (Grey)
144 | * UPDATE: Admin UI tweaks
145 | * UPDATE: New PHP template tags
146 | * FEATURE: Added search and replace feature to assist with migrations
147 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://codeclimate.com/github/wolffe/hound) [](https://codeclimate.com/github/wolffe/hound)
2 |
3 | [](https://www.codacy.com/app/wolffe/hound?utm_source=github.com&utm_medium=referral&utm_content=wolffe/hound&utm_campaign=Badge_Grade)
4 | [](https://www.codefactor.io/repository/github/wolffe/hound)
5 |
6 | # Note
7 | Do not use Hound on a production website! It is not secure and it is not completed! Work is still in progress.
8 |
9 | # Hound
10 | Hound is a light, flat-file, PHP-based content management system.
11 |
12 | # Demo
13 | https://getbutterfly.com/demo/hound/
14 |
15 | # Official page:
16 | https://getbutterfly.com/hound/
17 |
18 | # Version
19 | Current version: `0.8.4`
20 |
21 | Note that versions below `1.0.0` are considered beta and not production-ready. Use at your own risk.
22 |
23 | # Upgrading
24 | When upgrading your Hound site, just replace (and overwrite) all files except for site-specific content (see below).
25 |
26 | **Do not remove or replace the following files and folders:**
27 |
28 | ```
29 | /files/
30 | /site/
31 | .htaccess
32 | config.php
33 | ```
34 |
35 | # Documentation
36 | Read more here:
37 | https://github.com/wolffe/hound/wiki
38 |
--------------------------------------------------------------------------------
/content/backup/index.php:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wolffe/hound/60516dbb4ded7fa348de3c5edc1379da3b1c8f94/content/backup/index.php
--------------------------------------------------------------------------------
/content/plugins/gallery/ext-gallery.php:
--------------------------------------------------------------------------------
1 | .
27 | */
28 |
29 | /*
30 | *
31 | * Usage: [gallery "/path/to/gallery/"]
32 | */
33 | add_listener('content', 'pluginGallery');
34 |
35 | function pluginGallery($args) {
36 | $pattern = '/\[gallery(.*?)?\](?:(.+?)?\[\/gallery\])?/';
37 | $content = $args[0];
38 | $template = hound_get_option('site_theme');;
39 |
40 | preg_match($pattern, $content, $matches, PREG_OFFSET_CAPTURE, 3);
41 |
42 | if (!empty($matches)) {
43 | $files = glob('site/templates/' . $template . '/' . str_replace('"', '', trim($matches[1][0])) . '*.*');
44 | $gstring = '
45 |
46 |
47 |
48 |
49 |
';
50 |
51 | for ($i=1; $i';
63 | } else {
64 | continue;
65 | }
66 | }
67 | $gstring .= '
';
68 | $content = preg_replace($pattern, $gstring, $content);
69 | }
70 |
71 | return $content;
72 | }
73 |
--------------------------------------------------------------------------------
/content/plugins/gallery/fotorama/fotorama-config.css:
--------------------------------------------------------------------------------
1 | .fotorama__wrap {
2 | margin: 0 auto;
3 | }
4 | .fotorama__caption {
5 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
6 | font-size: 14px;
7 | line-height: 1.5;
8 | }
--------------------------------------------------------------------------------
/content/plugins/gallery/fotorama/fotorama.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Fotorama 4.6.4 | http://fotorama.io/license/
3 | */
4 | .fotorama__arr:focus:after,.fotorama__fullscreen-icon:focus:after,.fotorama__html,.fotorama__img,.fotorama__nav__frame:focus .fotorama__dot:after,.fotorama__nav__frame:focus .fotorama__thumb:after,.fotorama__stage__frame,.fotorama__stage__shaft,.fotorama__video iframe{position:absolute;width:100%;height:100%;top:0;right:0;left:0;bottom:0}.fotorama--fullscreen,.fotorama__img{max-width:99999px!important;max-height:99999px!important;min-width:0!important;min-height:0!important;border-radius:0!important;box-shadow:none!important;padding:0!important}.fotorama__wrap .fotorama__grab{cursor:move;cursor:-webkit-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.fotorama__grabbing *{cursor:move;cursor:-webkit-grabbing;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.fotorama__spinner{position:absolute!important;top:50%!important;left:50%!important}.fotorama__wrap--css3 .fotorama__arr,.fotorama__wrap--css3 .fotorama__fullscreen-icon,.fotorama__wrap--css3 .fotorama__nav__shaft,.fotorama__wrap--css3 .fotorama__stage__shaft,.fotorama__wrap--css3 .fotorama__thumb-border,.fotorama__wrap--css3 .fotorama__video-close,.fotorama__wrap--css3 .fotorama__video-play{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.fotorama__caption,.fotorama__nav:after,.fotorama__nav:before,.fotorama__stage:after,.fotorama__stage:before,.fotorama__wrap--css3 .fotorama__html,.fotorama__wrap--css3 .fotorama__nav,.fotorama__wrap--css3 .fotorama__spinner,.fotorama__wrap--css3 .fotorama__stage,.fotorama__wrap--css3 .fotorama__stage .fotorama__img,.fotorama__wrap--css3 .fotorama__stage__frame{-webkit-transform:translateZ(0);transform:translateZ(0)}.fotorama__arr:focus,.fotorama__fullscreen-icon:focus,.fotorama__nav__frame{outline:0}.fotorama__arr:focus:after,.fotorama__fullscreen-icon:focus:after,.fotorama__nav__frame:focus .fotorama__dot:after,.fotorama__nav__frame:focus .fotorama__thumb:after{content:'';border-radius:inherit;background-color:rgba(0,175,234,.5)}.fotorama__wrap--video .fotorama__stage,.fotorama__wrap--video .fotorama__stage__frame--video,.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__html,.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__img,.fotorama__wrap--video .fotorama__stage__shaft{-webkit-transform:none!important;transform:none!important}.fotorama__wrap--css3 .fotorama__nav__shaft,.fotorama__wrap--css3 .fotorama__stage__shaft,.fotorama__wrap--css3 .fotorama__thumb-border{transition-property:-webkit-transform,width;transition-property:transform,width;transition-timing-function:cubic-bezier(0.1,0,.25,1);transition-duration:0ms}.fotorama__arr,.fotorama__fullscreen-icon,.fotorama__no-select,.fotorama__video-close,.fotorama__video-play,.fotorama__wrap{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fotorama__select{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.fotorama__nav,.fotorama__nav__frame{margin:auto;padding:0}.fotorama__caption__wrap,.fotorama__nav__frame,.fotorama__nav__shaft{-moz-box-orient:vertical;display:inline-block;vertical-align:middle;*display:inline;*zoom:1}.fotorama__nav__frame,.fotorama__thumb-border{box-sizing:content-box}.fotorama__caption__wrap{box-sizing:border-box}.fotorama--hidden,.fotorama__load{position:absolute;left:-99999px;top:-99999px;z-index:-1}.fotorama__arr,.fotorama__fullscreen-icon,.fotorama__nav,.fotorama__nav__frame,.fotorama__nav__shaft,.fotorama__stage__frame,.fotorama__stage__shaft,.fotorama__video-close,.fotorama__video-play{-webkit-tap-highlight-color:transparent}.fotorama__arr,.fotorama__fullscreen-icon,.fotorama__video-close,.fotorama__video-play{background:url(fotorama.png) no-repeat}@media (-webkit-min-device-pixel-ratio:1.5),(min-resolution:2dppx){.fotorama__arr,.fotorama__fullscreen-icon,.fotorama__video-close,.fotorama__video-play{background:url(fotorama@2x.png) 0 0/96px 160px no-repeat}}.fotorama__thumb{background-color:#7f7f7f;background-color:rgba(127,127,127,.2)}@media print{.fotorama__arr,.fotorama__fullscreen-icon,.fotorama__thumb-border,.fotorama__video-close,.fotorama__video-play{background:none!important}}.fotorama{min-width:1px;overflow:hidden}.fotorama:not(.fotorama--unobtrusive)>*:not(:first-child){display:none}.fullscreen{width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;margin:0!important;padding:0!important;overflow:hidden!important;background:#000}.fotorama--fullscreen{position:absolute!important;top:0!important;left:0!important;right:0!important;bottom:0!important;float:none!important;z-index:2147483647!important;background:#000;width:100%!important;height:100%!important;margin:0!important}.fotorama--fullscreen .fotorama__nav,.fotorama--fullscreen .fotorama__stage{background:#000}.fotorama__wrap{-webkit-text-size-adjust:100%;position:relative;direction:ltr;z-index:0}.fotorama__wrap--rtl .fotorama__stage__frame{direction:rtl}.fotorama__nav,.fotorama__stage{overflow:hidden;position:relative;max-width:100%}.fotorama__wrap--pan-y{-ms-touch-action:pan-y}.fotorama__wrap .fotorama__pointer{cursor:pointer}.fotorama__wrap--slide .fotorama__stage__frame{opacity:1!important}.fotorama__stage__frame{overflow:hidden}.fotorama__stage__frame.fotorama__active{z-index:8}.fotorama__wrap--fade .fotorama__stage__frame{display:none}.fotorama__wrap--fade .fotorama__fade-front,.fotorama__wrap--fade .fotorama__fade-rear,.fotorama__wrap--fade .fotorama__stage__frame.fotorama__active{display:block;left:0;top:0}.fotorama__wrap--fade .fotorama__fade-front{z-index:8}.fotorama__wrap--fade .fotorama__fade-rear{z-index:7}.fotorama__wrap--fade .fotorama__fade-rear.fotorama__active{z-index:9}.fotorama__wrap--fade .fotorama__stage .fotorama__shadow{display:none}.fotorama__img{-ms-filter:"alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;border:none!important}.fotorama__error .fotorama__img,.fotorama__loaded .fotorama__img{-ms-filter:"alpha(Opacity=100)";filter:alpha(opacity=100);opacity:1}.fotorama--fullscreen .fotorama__loaded--full .fotorama__img,.fotorama__img--full{display:none}.fotorama--fullscreen .fotorama__loaded--full .fotorama__img--full{display:block}.fotorama__wrap--only-active .fotorama__nav,.fotorama__wrap--only-active .fotorama__stage{max-width:99999px!important}.fotorama__wrap--only-active .fotorama__stage__frame{visibility:hidden}.fotorama__wrap--only-active .fotorama__stage__frame.fotorama__active{visibility:visible}.fotorama__nav{font-size:0;line-height:0;text-align:center;display:none;white-space:nowrap;z-index:5}.fotorama__nav__shaft{position:relative;left:0;top:0;text-align:left}.fotorama__nav__frame{position:relative;cursor:pointer}.fotorama__nav--dots{display:block}.fotorama__nav--dots .fotorama__nav__frame{width:18px;height:30px}.fotorama__nav--dots .fotorama__nav__frame--thumb,.fotorama__nav--dots .fotorama__thumb-border{display:none}.fotorama__nav--thumbs{display:block}.fotorama__nav--thumbs .fotorama__nav__frame{padding-left:0!important}.fotorama__nav--thumbs .fotorama__nav__frame:last-child{padding-right:0!important}.fotorama__nav--thumbs .fotorama__nav__frame--dot{display:none}.fotorama__dot{display:block;width:4px;height:4px;position:relative;top:12px;left:6px;border-radius:6px;border:1px solid #7f7f7f}.fotorama__nav__frame:focus .fotorama__dot:after{padding:1px;top:-1px;left:-1px}.fotorama__nav__frame.fotorama__active .fotorama__dot{width:0;height:0;border-width:3px}.fotorama__nav__frame.fotorama__active .fotorama__dot:after{padding:3px;top:-3px;left:-3px}.fotorama__thumb{overflow:hidden;position:relative;width:100%;height:100%}.fotorama__nav__frame:focus .fotorama__thumb{z-index:2}.fotorama__thumb-border{position:absolute;z-index:9;top:0;left:0;border-style:solid;border-color:#00afea;background-image:linear-gradient(to bottom right,rgba(255,255,255,.25),rgba(64,64,64,.1))}.fotorama__caption{position:absolute;z-index:12;bottom:0;left:0;right:0;font-family:'Helvetica Neue',Arial,sans-serif;font-size:14px;line-height:1.5;color:#000}.fotorama__caption a{text-decoration:none;color:#000;border-bottom:1px solid;border-color:rgba(0,0,0,.5)}.fotorama__caption a:hover{color:#333;border-color:rgba(51,51,51,.5)}.fotorama__wrap--rtl .fotorama__caption{left:auto;right:0}.fotorama__wrap--no-captions .fotorama__caption,.fotorama__wrap--video .fotorama__caption{display:none}.fotorama__caption__wrap{background-color:#fff;background-color:rgba(255,255,255,.9);padding:5px 10px}@-webkit-keyframes spinner{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fotorama__wrap--css3 .fotorama__spinner{-webkit-animation:spinner 24s infinite linear;animation:spinner 24s infinite linear}.fotorama__wrap--css3 .fotorama__html,.fotorama__wrap--css3 .fotorama__stage .fotorama__img{transition-property:opacity;transition-timing-function:linear;transition-duration:.3s}.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__html,.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__img{-ms-filter:"alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0}.fotorama__select{cursor:auto}.fotorama__video{top:32px;right:0;bottom:0;left:0;position:absolute;z-index:10}@-moz-document url-prefix(){.fotorama__active{box-shadow:0 0 0 transparent}}.fotorama__arr,.fotorama__fullscreen-icon,.fotorama__video-close,.fotorama__video-play{position:absolute;z-index:11;cursor:pointer}.fotorama__arr{position:absolute;width:32px;height:32px;top:50%;margin-top:-16px}.fotorama__arr--prev{left:2px;background-position:0 0}.fotorama__arr--next{right:2px;background-position:-32px 0}.fotorama__arr--disabled{pointer-events:none;cursor:default;*display:none;opacity:.1}.fotorama__fullscreen-icon{width:32px;height:32px;top:2px;right:2px;background-position:0 -32px;z-index:20}.fotorama__arr:focus,.fotorama__fullscreen-icon:focus{border-radius:50%}.fotorama--fullscreen .fotorama__fullscreen-icon{background-position:-32px -32px}.fotorama__video-play{width:96px;height:96px;left:50%;top:50%;margin-left:-48px;margin-top:-48px;background-position:0 -64px;opacity:0}.fotorama__wrap--css2 .fotorama__video-play,.fotorama__wrap--video .fotorama__stage .fotorama__video-play{display:none}.fotorama__error .fotorama__video-play,.fotorama__loaded .fotorama__video-play,.fotorama__nav__frame .fotorama__video-play{opacity:1;display:block}.fotorama__nav__frame .fotorama__video-play{width:32px;height:32px;margin-left:-16px;margin-top:-16px;background-position:-64px -32px}.fotorama__video-close{width:32px;height:32px;top:0;right:0;background-position:-64px 0;z-index:20;opacity:0}.fotorama__wrap--css2 .fotorama__video-close{display:none}.fotorama__wrap--css3 .fotorama__video-close{-webkit-transform:translate3d(32px,-32px,0);transform:translate3d(32px,-32px,0)}.fotorama__wrap--video .fotorama__video-close{display:block;opacity:1}.fotorama__wrap--css3.fotorama__wrap--video .fotorama__video-close{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__arr,.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__fullscreen-icon{opacity:0}.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__arr:focus,.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__fullscreen-icon:focus{opacity:1}.fotorama__wrap--video .fotorama__arr,.fotorama__wrap--video .fotorama__fullscreen-icon{opacity:0!important}.fotorama__wrap--css2.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__arr,.fotorama__wrap--css2.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__fullscreen-icon{display:none}.fotorama__wrap--css2.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__arr:focus,.fotorama__wrap--css2.fotorama__wrap--no-controls.fotorama__wrap--toggle-arrows .fotorama__fullscreen-icon:focus{display:block}.fotorama__wrap--css2.fotorama__wrap--video .fotorama__arr,.fotorama__wrap--css2.fotorama__wrap--video .fotorama__fullscreen-icon{display:none!important}.fotorama__wrap--css3.fotorama__wrap--no-controls.fotorama__wrap--slide.fotorama__wrap--toggle-arrows .fotorama__fullscreen-icon:not(:focus){-webkit-transform:translate3d(32px,-32px,0);transform:translate3d(32px,-32px,0)}.fotorama__wrap--css3.fotorama__wrap--no-controls.fotorama__wrap--slide.fotorama__wrap--toggle-arrows .fotorama__arr--prev:not(:focus){-webkit-transform:translate3d(-48px,0,0);transform:translate3d(-48px,0,0)}.fotorama__wrap--css3.fotorama__wrap--no-controls.fotorama__wrap--slide.fotorama__wrap--toggle-arrows .fotorama__arr--next:not(:focus){-webkit-transform:translate3d(48px,0,0);transform:translate3d(48px,0,0)}.fotorama__wrap--css3.fotorama__wrap--video .fotorama__fullscreen-icon{-webkit-transform:translate3d(32px,-32px,0)!important;transform:translate3d(32px,-32px,0)!important}.fotorama__wrap--css3.fotorama__wrap--video .fotorama__arr--prev{-webkit-transform:translate3d(-48px,0,0)!important;transform:translate3d(-48px,0,0)!important}.fotorama__wrap--css3.fotorama__wrap--video .fotorama__arr--next{-webkit-transform:translate3d(48px,0,0)!important;transform:translate3d(48px,0,0)!important}.fotorama__wrap--css3 .fotorama__arr:not(:focus),.fotorama__wrap--css3 .fotorama__fullscreen-icon:not(:focus),.fotorama__wrap--css3 .fotorama__video-close:not(:focus),.fotorama__wrap--css3 .fotorama__video-play:not(:focus){transition-property:-webkit-transform,opacity;transition-property:transform,opacity;transition-duration:.3s}.fotorama__nav:after,.fotorama__nav:before,.fotorama__stage:after,.fotorama__stage:before{content:"";display:block;position:absolute;text-decoration:none;top:0;bottom:0;width:10px;height:auto;z-index:10;pointer-events:none;background-repeat:no-repeat;background-size:1px 100%,5px 100%}.fotorama__nav:before,.fotorama__stage:before{background-image:linear-gradient(transparent,rgba(0,0,0,.2) 25%,rgba(0,0,0,.3) 75%,transparent),radial-gradient(farthest-side at 0 50%,rgba(0,0,0,.4),transparent);background-position:0 0,0 0;left:-10px}.fotorama__nav.fotorama__shadows--left:before,.fotorama__stage.fotorama__shadows--left:before{left:0}.fotorama__nav:after,.fotorama__stage:after{background-image:linear-gradient(transparent,rgba(0,0,0,.2) 25%,rgba(0,0,0,.3) 75%,transparent),radial-gradient(farthest-side at 100% 50%,rgba(0,0,0,.4),transparent);background-position:100% 0,100% 0;right:-10px}.fotorama__nav.fotorama__shadows--right:after,.fotorama__stage.fotorama__shadows--right:after{right:0}.fotorama--fullscreen .fotorama__nav:after,.fotorama--fullscreen .fotorama__nav:before,.fotorama--fullscreen .fotorama__stage:after,.fotorama--fullscreen .fotorama__stage:before,.fotorama__wrap--fade .fotorama__stage:after,.fotorama__wrap--fade .fotorama__stage:before,.fotorama__wrap--no-shadows .fotorama__nav:after,.fotorama__wrap--no-shadows .fotorama__nav:before,.fotorama__wrap--no-shadows .fotorama__stage:after,.fotorama__wrap--no-shadows .fotorama__stage:before{display:none}
--------------------------------------------------------------------------------
/content/plugins/gallery/fotorama/fotorama.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wolffe/hound/60516dbb4ded7fa348de3c5edc1379da3b1c8f94/content/plugins/gallery/fotorama/fotorama.png
--------------------------------------------------------------------------------
/content/plugins/gallery/fotorama/fotorama@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wolffe/hound/60516dbb4ded7fa348de3c5edc1379da3b1c8f94/content/plugins/gallery/fotorama/fotorama@2x.png
--------------------------------------------------------------------------------
/content/plugins/gallery/readme.txt:
--------------------------------------------------------------------------------
1 | // https://cdnjs.com/libraries/fotorama
2 | // http://fotorama.io/
3 | // https://github.com/artpolikarpov/fotorama
4 |
--------------------------------------------------------------------------------
/content/plugins/hound-slider/ext-slider.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
[@title]
6 |
7 | [@content]
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/content/site/templates/demo/css/demo.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --content-width: 1170px;
3 | --whiskey-accent: #0057ff;
4 | --whiskey-accent-switch: #02B2BD;
5 | --whiskey-accent-highlight: #ff5959;
6 | --whiskey-color: rgb(49, 52, 87);
7 | --whiskey-color-dark: #17191f;
8 | --whiskey-color-secondary: #313457;
9 | --whiskey-background: #ffffff;
10 | --whiskey-nav-background: #ffffff;
11 | --whiskey-panel-background: #f7f7f8;
12 | --whiskey-radius: 2px;
13 | --whiskey-pastel-green: #4bdbb7;
14 | --whiskey-sponsors: #FC427B;
15 | accent-color: var(--whiskey-accent);
16 |
17 | --font-family: "Alliance1", -apple-system, BlinkMacSystemFont, "Segoe UI", "Segoe UI Symbol", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
18 | --font-heading: "Alliance1";
19 | --font-native: -apple-system, BlinkMacSystemFont, "Segoe UI", "Segoe UI Symbol", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
20 | --font-monospace: ui-monospace, "SFMono-Regular", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
21 | }
22 |
23 | @font-face {
24 | font-family: 'Alliance1';
25 | src: url('https://getbutterfly.com/wp-content/themes/wp-whiskey-air/fonts/alliance/alliance-1.woff2') format('woff2 supports variations'),
26 | url('https://getbutterfly.com/wp-content/themes/wp-whiskey-air/fonts/alliance/alliance-1.woff2') format('woff2-variations');
27 | font-weight: 200 900;
28 | font-stretch: 75% 125%;
29 | font-display: swap;
30 | }
31 |
32 | * {
33 | box-sizing: border-box;
34 | }
35 |
36 | body {
37 | padding: 48px;
38 |
39 | background-color: var(--whiskey-background);
40 | color: var(--whiskey-color);
41 | font-family: var(--font-family);
42 | font-feature-settings: "ss02" on, "ss01" on;
43 | font-weight: 400;
44 | font-style: normal;
45 | font-size: 16px;
46 | line-height: 1.6;
47 | -webkit-font-smoothing: antialiased;
48 | text-rendering: optimizeLegibility;
49 | font-variant-ligatures: discretionary-ligatures;
50 | }
51 |
52 | input,
53 | textarea,
54 | select,
55 | button {
56 | padding: 8px;
57 | font-size: inherit;
58 | font-family: inherit;
59 | font-feature-settings: "ss02" off, "ss01" off;
60 | }
61 | select {
62 | width: fit-content;
63 | }
64 |
65 | header,
66 | footer,
67 | main.gb-main {
68 | max-width: var(--content-width);
69 | margin: 0 auto;
70 | }
71 |
--------------------------------------------------------------------------------
/content/site/templates/demo/css/thin-ui.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Thin UI CSS Framework
3 | *
4 | * @version 2.0.1
5 | */
6 | :root {
7 | --thin-ui-primary: #323CB9;
8 | --thin-ui-secondary: #A3A9F5;
9 | --thin-ui-neutral: #E4E9EF;
10 |
11 | --thin-ui-action: #4FAE33;
12 | --thin-ui-warning: #FF7F00;
13 | }
14 |
15 | html {
16 | scroll-behavior: smooth;
17 | }
18 |
19 | .thin-ui-grid {
20 | box-sizing: border-box;
21 | display: flex;
22 | flex: 0 1 auto;
23 | flex-direction: row;
24 | flex-wrap: wrap;
25 | margin: 0;
26 | }
27 |
28 | .thin-ui-grid-start {
29 | justify-content: flex-start;
30 | }
31 | .thin-ui-grid-center {
32 | justify-content: center;
33 | }
34 | .thin-ui-grid-end {
35 | justify-content: flex-end;
36 | }
37 | .thin-ui-grid-around {
38 | justify-content: space-around;
39 | }
40 | .thin-ui-grid-between {
41 | justify-content: space-between;
42 | }
43 | .thin-ui-grid-push {
44 | margin-bottom: 16px;
45 | }
46 |
47 | .thin-ui-col {
48 | box-sizing: border-box;
49 | flex: 0 0 auto;
50 | flex-grow: 1;
51 | flex-basis: 0;
52 | max-width: 100%;
53 | min-width: 0;
54 | padding: 0;
55 | }
56 | .thin-ui-col-align-top {
57 | align-self: flex-start;
58 | }
59 | .thin-ui-col-align-bottom {
60 | align-self: flex-end;
61 | }
62 | .thin-ui-col-align-middle {
63 | align-self: center;
64 | }
65 | .thin-ui-col-top {
66 | justify-content: flex-start;
67 | flex-direction: column;
68 | display: flex;
69 | }
70 | .thin-ui-col-bottom {
71 | justify-content: flex-end;
72 | flex-direction: column;
73 | display: flex;
74 | }
75 | .thin-ui-col-middle {
76 | justify-content: center;
77 | flex-direction: column;
78 | display: flex;
79 | }
80 |
81 | .thin-ui-col-first {
82 | order: -1;
83 | }
84 | .thin-ui-col-last {
85 | order: 1;
86 | }
87 | .thin-ui-col-fixed {
88 | flex: initial;
89 | }
90 |
91 | .thin-ui-col-grow-2 {
92 | flex-grow: 2;
93 | }
94 | .thin-ui-col-grow-3 {
95 | flex-grow: 3;
96 | }
97 | .thin-ui-col-grow-4 {
98 | flex-grow: 4;
99 | }
100 | .thin-ui-col-grow-5 {
101 | flex-grow: 5;
102 | }
103 | .thin-ui-col-grow-6 {
104 | flex-grow: 6;
105 | }
106 | .thin-ui-col-grow-7 {
107 | flex-grow: 7;
108 | }
109 | .thin-ui-col-grow-8 {
110 | flex-grow: 8;
111 | }
112 | .thin-ui-col-grow-9 {
113 | flex-grow: 9;
114 | }
115 | .thin-ui-col-grow-10 {
116 | flex-grow: 10;
117 | }
118 | .thin-ui-col-grow-11 {
119 | flex-grow: 11;
120 | }
121 | .thin-ui-col-1 {
122 | flex-basis: 8.33333%;
123 | max-width: 8.33333%;
124 | }
125 | .thin-ui-col-2 {
126 | flex-basis: 16.66667%;
127 | max-width: 16.66667%;
128 | }
129 | .thin-ui-col-3 {
130 | flex-basis: 25%;
131 | max-width: 25%;
132 | }
133 | .thin-ui-col-4 {
134 | flex-basis: 33.33333%;
135 | max-width: 33.33333%;
136 | }
137 | .thin-ui-col-5 {
138 | flex-basis: 41.66667%;
139 | max-width: 41.66667%;
140 | }
141 | .thin-ui-col-6 {
142 | flex-basis: 50%;
143 | max-width: 50%;
144 | }
145 | .thin-ui-col-7 {
146 | flex-basis: 58.33333%;
147 | max-width: 58.33333%;
148 | }
149 | .thin-ui-col-8 {
150 | flex-basis: 66.66667%;
151 | max-width: 66.66667%;
152 | }
153 | .thin-ui-col-9 {
154 | flex-basis: 75%;
155 | max-width: 75%;
156 | }
157 | .thin-ui-col-10 {
158 | flex-basis: 83.33333%;
159 | max-width: 83.33333%;
160 | }
161 | .thin-ui-col-11 {
162 | flex-basis: 91.66667%;
163 | max-width: 91.66667%;
164 | }
165 | .thin-ui-col-12 {
166 | flex-basis: 100%;
167 | max-width: 100%;
168 | }
169 |
170 | @media only screen and (max-width: 768px) {
171 | .thin-ui-col-1,
172 | .thin-ui-col-2,
173 | .thin-ui-col-3,
174 | .thin-ui-col-4,
175 | .thin-ui-col-5,
176 | .thin-ui-col-6,
177 | .thin-ui-col-7,
178 | .thin-ui-col-8,
179 | .thin-ui-col-9,
180 | .thin-ui-col-10,
181 | .thin-ui-col-11,
182 | .thin-ui-col-12 {
183 | flex-basis: 100%;
184 | max-width: 100%;
185 | }
186 | }
187 |
188 |
189 |
190 |
191 | .thin-ui-svg {
192 | display: inline-block;
193 | font-size: inherit;
194 | height: 1em;
195 | overflow: visible;
196 | vertical-align: -.125em;
197 | }
198 |
199 |
200 |
201 | /**
202 | * Form elements reset
203 | */
204 | .thin-ui-form input[type="text"],
205 | .thin-ui-form input[type="url"],
206 | .thin-ui-form input[type="email"],
207 | .thin-ui-form input[type="tel"],
208 | .thin-ui-form input[type="search"],
209 | .thin-ui-form input[type="number"],
210 | .thin-ui-form input[type="file"],
211 | .thin-ui-form input[type="password"],
212 | .thin-ui-form input[type="submit"],
213 | .thin-ui-form input[type="button"],
214 | .thin-ui-form input[type="reset"],
215 | .thin-ui-form input[type="date"],
216 | .thin-ui-form input[type="month"],
217 | .thin-ui-form input[type="week"],
218 | .thin-ui-form input[type="time"],
219 | .thin-ui-form input[type="datetime"],
220 | .thin-ui-form input[type="datetime-local"],
221 | .thin-ui-form input[type="color"],
222 | .thin-ui-form button,
223 | .thin-ui-form select,
224 | .thin-ui-form textarea,
225 | .thin-ui-color-well {
226 | font-family: inherit;
227 | font-weight: 400;
228 | font-size: 16px;
229 | padding: 10px 12px;
230 | margin: 2px;
231 | color: #000000;
232 | border: 1px solid var(--thin-ui-neutral);
233 | background-color: #ffffff;
234 | border-radius: 2px;
235 | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
236 | outline-color: var(--thin-ui-secondary);
237 | transition: 100ms all ease-in-out;
238 | }
239 |
240 | .thin-ui-form input[type="submit"],
241 | .thin-ui-form input[type="button"],
242 | .thin-ui-form input[type="reset"],
243 | .thin-ui-form input[type="file"],
244 | .thin-ui-form button {
245 | color: #000000;
246 | background-color: var(--thin-ui-neutral);
247 | border: 0 none;
248 | cursor: pointer;
249 | }
250 |
251 | .thin-ui-form input::placeholder,
252 | .thin-ui-form textarea::placeholder {
253 | color: var(--thin-ui-neutral);
254 | }
255 |
256 | .thin-ui-form input:hover,
257 | .thin-ui-form button:hover,
258 | .thin-ui-form select:hover,
259 | .thin-ui-form textarea:hover {
260 | border-color: rgba(0, 0, 0, 0.5);
261 | box-shadow: 0 4px 8px rgba(0, 0, 0, 0.075);
262 | }
263 |
264 |
265 |
266 | /*
267 | * Buttons
268 | *
269 | * Button types: Primary, secondary, neutral
270 | * Button sizes: Hero, large, regular, small
271 | * Button roles: File download, (external) link, (internal) action
272 | */
273 | .thin-ui-button {
274 | font-family: inherit;
275 | font-weight: 400;
276 | display: inline-block;
277 | width: fit-content;
278 | position: relative;
279 | white-space: nowrap;
280 | text-decoration: none;
281 | cursor: pointer;
282 | box-sizing: border-box;
283 | border: 0 none;
284 | border-radius: 2px;
285 | }
286 | .thin-ui-button:hover {
287 | box-shadow: inset 0 99px 0 rgba(0, 0, 0, 0.05);
288 | text-decoration: none;
289 | }
290 | .thin-ui-button-primary {
291 | color: #ffffff;
292 | background-color: var(--thin-ui-primary);
293 | }
294 | .thin-ui-button-secondary {
295 | color: #000000;
296 | background-color: var(--thin-ui-secondary);
297 | }
298 | .thin-ui-button-neutral {
299 | color: #000000;
300 | background-color: var(--thin-ui-neutral);
301 | }
302 | .thin-ui-button-action {
303 | color: #ffffff;
304 | background-color: var(--thin-ui-action);
305 | }
306 | .thin-ui-button-mini {
307 | padding: 4px 12px;
308 | font-size: 12px;
309 | }
310 | .thin-ui-button-small {
311 | padding: 6px 18px;
312 | font-size: 13px;
313 | }
314 | .thin-ui-button-regular {
315 | padding: 8px 24px;
316 | font-size: 14px;
317 | }
318 | .thin-ui-button-large {
319 | padding: 12px 32px;
320 | font-size: 16px;
321 | }
322 | .thin-ui-button-giant {
323 | padding: 16px 36px;
324 | font-size: 20px;
325 | }
326 | .thin-ui-button-hero {
327 | padding: 16px 48px;
328 | font-size: 18px;
329 | border-radius: 38px;
330 | }
331 |
332 | .thin-ui-button-rounded {
333 | border-radius: 64px;
334 | }
335 |
336 |
337 |
338 | .thin-ui-warning {
339 | color: var(--thin-ui-warning);
340 | }
341 |
342 |
343 |
344 | /**
345 | * Thin UI Checkblock
346 | * Thin UI Group Switch
347 | */
348 | .thin-ui-checkblock,
349 | .thin-ui-group-switch input {
350 | display: none;
351 | }
352 | .thin-ui-group-switch {
353 | white-space: nowrap;
354 | background-color: var(--thin-ui-neutral);
355 | display: inline-flex;
356 | border-radius: 2px;
357 | padding: 4px;
358 | }
359 | .thin-ui-checkblock + label,
360 | .thin-ui-group-switch label {
361 | display: inline-block;
362 | padding: 8px 12px;
363 | background-color: var(--thin-ui-neutral);
364 | border-radius: 2px;
365 | color: #000000;
366 | cursor: pointer;
367 | transition: all 0.1s ease-in-out;
368 | user-select: none;
369 | }
370 | .thin-ui-checkblock + label:hover,
371 | .thin-ui-group-switch label:hover {
372 | cursor: pointer;
373 | background-color: var(--thin-ui-secondary);
374 | }
375 | .thin-ui-checkblock:checked + label,
376 | .thin-ui-group-switch input:checked + label {
377 | background-color: var(--thin-ui-primary);
378 | color: #ffffff;
379 | }
380 |
381 |
382 |
383 | /**
384 | * Thin UI Switch
385 | */
386 | .thin-ui-switch-container {
387 | display: block;
388 | position: relative;
389 | }
390 | .thin-ui-switch-container .thin-ui-switch {
391 | display: inline-block;
392 | position: relative;
393 | width: 24px;
394 | height: 14px;
395 | cursor: pointer;
396 | user-select: none;
397 | }
398 | .thin-ui-switch-container .thin-ui-switch input[type="checkbox"] {
399 | display: none;
400 | }
401 | .thin-ui-switch-container .thin-ui-switch .thin-ui-switch-track {
402 | background-color: var(--thin-ui-secondary);
403 | position: absolute;
404 | top: 0;
405 | left: 0;
406 | width: 100%;
407 | height: 100%;
408 | margin: 0;
409 | border-radius: 7px;
410 | transition: background-color 0.1s ease;
411 | }
412 | .thin-ui-switch .thin-ui-switch-button {
413 | background: #ffffff;
414 | position: absolute;
415 | top: 2px;
416 | right: 12px;
417 | bottom: 2px;
418 | left: 2px;
419 | border-radius: 100%;
420 | transition: left 0.1s ease-in-out, right 0.1s ease-in-out;
421 | }
422 | .thin-ui-switch input[type="checkbox"]:checked ~ .thin-ui-switch-track {
423 | background-color: var(--thin-ui-primary);
424 | }
425 | .thin-ui-switch input[type="checkbox"]:checked ~ .thin-ui-switch-button {
426 | right: 2px;
427 | left: 12px;
428 | }
429 |
430 |
431 |
432 |
433 | .col--inner {
434 | background-color: #ffffff;
435 | margin: 4px;
436 | padding: 16px;
437 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.025),
438 | 0 2px 4px rgba(0, 0, 0, 0.025),
439 | 0 4px 8px rgba(0, 0, 0, 0.025),
440 | 0 8px 16px rgba(0, 0, 0, 0.025);
441 | }
442 | .col--inner-blank {
443 | box-shadow: none;
444 | }
445 | .col--inner-highlight {
446 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05),
447 | 0 2px 4px rgba(0, 0, 0, 0.05),
448 | 0 4px 8px rgba(0, 0, 0, 0.05),
449 | 0 8px 16px rgba(0, 0, 0, 0.05),
450 | 0 16px 32px rgba(0, 0, 0, 0.05),
451 | 0 32px 64px rgba(0, 0, 0, 0.05);
452 | }
453 | .col--inner-title {
454 | margin-top: 0;
455 | padding-top: 0;
456 | }
457 | .col-item--value {
458 | font-weight: 500;
459 | font-size: 16px;
460 | }
461 |
462 |
463 |
464 |
465 |
466 | /**
467 | * Thin UI Pills
468 | */
469 | .thin-ui-pills {
470 | display: flex;
471 | flex-wrap: wrap;
472 | font-size: 13px;
473 | margin: 8px 0;
474 | padding: 0;
475 | }
476 | .thin-ui-pill {
477 | white-space: nowrap;
478 | display: flex;
479 | box-shadow: rgba(0, 0, 0, 0.04) 0px 1px 2px;
480 | line-height: 1.2;
481 | max-width: 100%;
482 | margin: 0px 10px 10px 0px;
483 | border-width: 1px;
484 | border-style: solid;
485 | border-color: rgb(189, 180, 199);
486 | border-image: initial;
487 | border-radius: 2px;
488 | }
489 | .thin-ui-pill-name {
490 | font-weight: 400;
491 | min-width: 0px;
492 | white-space: nowrap;
493 | padding: 4px 8px;
494 | }
495 | .thin-ui-pill-value {
496 | min-width: 0px;
497 | white-space: nowrap;
498 | font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace;
499 | max-width: 100%;
500 | padding: 4px 8px;
501 | background: rgb(251, 251, 252);
502 | border-left: 1px solid rgb(189, 180, 199);
503 | border-radius: 0 2px 2px 0;
504 | }
505 | .thin-ui-pill-value > a {
506 | text-decoration: none;
507 | white-space: nowrap;
508 | display: inline-block;
509 | }
510 |
511 |
512 |
513 | .thin-ui-badge {
514 | display: inline-block;
515 | font-size: 10px;
516 | text-transform: uppercase;
517 | line-height: 1;
518 | background-color: var(--thin-ui-warning);
519 | color: #ffffff;
520 | padding: 4px;
521 | border-radius: 2px;
522 | }
523 |
524 |
525 |
526 | .thin-ui-notification-bar {
527 | position: fixed;
528 | z-index: 999;
529 | padding: 16px 8px;
530 | background-color: rgb(121, 198, 152);
531 | border-bottom: 1px solid rgba(0, 0, 0, 0.15);
532 | width: 100%;
533 | top: 0;
534 | left: 0;
535 | text-align: center;
536 | transition: all 0.5s ease-out;
537 | transform: translateY(-72px);
538 | }
539 |
540 |
541 |
542 | /**
543 | * Thin UI Popovers
544 | */
545 | label.thin-ui-popover {
546 | position: relative;
547 | }
548 | label.thin-ui-popover button[name="popover"] {
549 | font-family: inherit;
550 | font-size: inherit;
551 | background: none;
552 | border: 0 none;
553 | display: inline;
554 | outline: none;
555 | color: inherit;
556 | padding: unset;
557 | cursor: pointer;
558 | }
559 |
560 | label.thin-ui-popover .thin-ui-popover-body {
561 | display: none;
562 |
563 | font-size: 13px;
564 | border-radius: 2px;
565 | padding: 16px 36px 16px 16px;
566 | background-color: #ffffff;
567 |
568 | box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
569 |
570 | position: absolute;
571 | z-index: 128;
572 | top: 32px;
573 | left: 0;
574 | min-width: 320px;
575 | max-width: 480px;
576 | }
577 |
578 | label.thin-ui-popover button:focus + .thin-ui-popover-body {
579 | display: block;
580 | }
581 |
582 |
583 |
584 | /**
585 | * Thin UI Spacers
586 | */
587 | .thin-ui-spacer-v {
588 | margin: 24px 0;
589 | }
590 |
591 |
592 |
593 | /**
594 | * Thin UI Tabs
595 | */
596 | .thin-ui-tabstrip {
597 | display: flex;
598 | flex-wrap: wrap;
599 | }
600 | .thin-ui-tabstrip label {
601 | order: 1;
602 | display: block;
603 | margin-right: 2px;
604 |
605 | background-color: var(--thin-ui-neutral);
606 | color: #000000;
607 |
608 | cursor: pointer;
609 | white-space: nowrap;
610 | color: #000000;
611 | padding: 8px 14px;
612 | font-size: 13px;
613 | border-radius: 2px 2px 0 0;
614 | box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.15);
615 | transition: background-color 0.05s ease-out;
616 | }
617 | .thin-ui-tabstrip label:hover {
618 | background-color: var(--thin-ui-secondary);
619 | color: #ffffff;
620 | }
621 |
622 | .thin-ui-tabstrip .thin-ui-tab {
623 | order: 99;
624 | flex-grow: 1;
625 | width: 100%;
626 | display: none;
627 | padding: 1em;
628 |
629 | border-radius: 0 0 2px 2px;
630 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.025), 0 2px 4px rgba(0, 0, 0, 0.025), 0 4px 8px rgba(0, 0, 0, 0.025), 0 8px 16px rgba(0, 0, 0, 0.025);
631 | }
632 | .thin-ui-tabstrip input[type="radio"] {
633 | display: none;
634 | }
635 | .thin-ui-tabstrip input[type="radio"]:checked + label {
636 | background-color: var(--thin-ui-primary);
637 | color: #ffffff;
638 | }
639 | .thin-ui-tabstrip input[type="radio"]:checked + label + .thin-ui-tab {
640 | display: block;
641 | }
642 |
643 | @media (max-width: 768px) {
644 | .thin-ui-tabstrip .thin-ui-tab,
645 | .thin-ui-tabstrip label {
646 | order: initial;
647 | }
648 | .thin-ui-tabstrip label {
649 | width: 100%;
650 | margin-right: 0;
651 | margin-top: 0.2rem;
652 | }
653 | }
654 |
655 |
656 |
657 | /**
658 | * Thin UI Modal Dialog
659 | */
660 | .thin-ui-modal-dialog * {
661 | box-sizing: border-box;
662 | }
663 |
664 | .thin-ui-modal-dialog {
665 | position: fixed;
666 | z-index: 1;
667 | left: 0;
668 | top: 0;
669 | width: 100%;
670 | height: 100%;
671 | background-color: rgba(0, 0, 0, 0.4);
672 | border: none;
673 | display: flex;
674 | align-items: center;
675 | justify-content: center;
676 | }
677 |
678 | .thin-ui-modal-window {
679 | background-color: #fff;
680 | min-width: 480px;
681 | border: 4px solid black;
682 | border-top-width: 0;
683 | box-shadow: 0 0 0 4px rgb(0 0 0 / 15%), 0 0 16px rgb(0 0 0 / 25%);
684 | display: flex;
685 | flex-flow: column wrap;
686 | }
687 |
688 | .thin-ui-modal-title {
689 | display: flex;
690 | align-items: center;
691 | justify-content: center;
692 | font-weight: 500;
693 | background-color: #000000;
694 | width: 100%;
695 | color: #fff;
696 | padding: 4px 16px;
697 | }
698 |
699 | .thin-ui-modal-close {
700 | margin-left: auto;
701 | background: none;
702 | border: 0 none;
703 | font-size: 26px;
704 | font-weight: inherit;
705 | font-family: inherit;
706 | color: #fff;
707 | cursor: pointer;
708 | }
709 |
710 | .thin-ui-modal-text {
711 | margin: 48px 0;
712 | padding: 0 16px;
713 | }
714 |
715 | .thin-ui-modal-button-group {
716 | margin: auto 0 16px 0;
717 | padding: 0 16px;
718 | display: flex;
719 | justify-content: space-between;
720 | flex-direction: row;
721 | }
722 |
723 | .thin-ui-modal-button-group button {
724 | font-weight: inherit;
725 | font-family: inherit;
726 | }
727 |
--------------------------------------------------------------------------------
/content/site/templates/demo/footer.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
12 |
13 |