├── .gitignore ├── .npmignore ├── HISTORY.md ├── LICENSE ├── README.md ├── _config.yml ├── assets ├── css │ ├── main.css │ └── monokai-sublime.min.css ├── images │ ├── CSS_Purge_FB.png │ ├── CSS_Purge_Logo_300.png │ ├── CSS_Purge_Logo_Full.png │ ├── css_purge_report.jpg │ ├── css_purge_report_viewer_ux.jpg │ ├── favicon │ │ ├── android-icon-144x144.png │ │ ├── android-icon-192x192.png │ │ ├── android-icon-36x36.png │ │ ├── android-icon-48x48.png │ │ ├── android-icon-72x72.png │ │ ├── android-icon-96x96.png │ │ ├── apple-icon-114x114.png │ │ ├── apple-icon-120x120.png │ │ ├── apple-icon-144x144.png │ │ ├── apple-icon-152x152.png │ │ ├── apple-icon-180x180.png │ │ ├── apple-icon-57x57.png │ │ ├── apple-icon-60x60.png │ │ ├── apple-icon-72x72.png │ │ ├── apple-icon-76x76.png │ │ ├── apple-icon-precomposed.png │ │ ├── apple-icon.png │ │ ├── browserconfig.xml │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon-96x96.png │ │ ├── favicon.ico │ │ ├── manifest.json │ │ ├── ms-icon-144x144.png │ │ ├── ms-icon-150x150.png │ │ ├── ms-icon-310x310.png │ │ └── ms-icon-70x70.png │ ├── get_started.png │ ├── global_cli_ux.jpg │ ├── grunt-css-purge.png │ ├── gulp-css-purge.png │ ├── local_cli_ux.jpg │ ├── overview1.png │ ├── overview2.png │ ├── under_the_hood.png │ └── visit_website.jpg └── js │ ├── highlight.min.js │ └── main.js ├── config_css.json ├── config_css_example.json ├── config_reduce_declarations.json ├── config_reduce_declarations_example_2.json ├── config_reduce_declarations_example_3.json ├── css-purge.js ├── demo ├── .gitignore ├── 4095.css ├── 40K_simple_duplicate_stress_test.css ├── config_css.json ├── css-purge-demo-app.js ├── css_folder │ ├── file1.css │ └── file2.css ├── hacks │ ├── browser-specific-hacks.css │ ├── declarations.css │ ├── media_queries.css │ ├── miscellaneous.css │ ├── selectors.css │ └── supports.css ├── html │ ├── README.md │ └── test1.html ├── js │ ├── test1.js │ └── test2.js ├── libs │ ├── 960.css │ ├── animate.css │ ├── blueprint │ │ ├── ie.css │ │ ├── print.css │ │ └── screen.css │ ├── bootstrap3.css │ ├── bootstrap4.css │ ├── font-awesome.css │ ├── foundation.css │ ├── gumby.css │ ├── inuitV6.css │ ├── milligram.css │ ├── normalize.css │ ├── oocss │ │ ├── content.css │ │ ├── grids.css │ │ ├── grids_debug.css │ │ ├── libraries.css │ │ ├── mod.css │ │ ├── mod_debug.css │ │ ├── mod_skins.css │ │ ├── mod_skins_ex4.css │ │ ├── readme.md │ │ ├── template.css │ │ └── template_debug.css │ ├── pure.css │ └── reset.css ├── package-lock.json ├── package.json ├── readme.md ├── test1.css ├── test10.css ├── test11.css ├── test12.css ├── test13.css ├── test14.css ├── test15.css ├── test16.css ├── test2.css ├── test3.css ├── test4.css ├── test5.css ├── test6.css ├── test7.css ├── test8.css └── test9.css ├── index.html ├── index.js ├── lib ├── css-purge-stream.js └── css-purge.js ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | /demo 2 | /assets 3 | index.html -------------------------------------------------------------------------------- /HISTORY.md: -------------------------------------------------------------------------------- 1 | 3.1.0 / 2018-11-07 2 | 3 | * Minor Release 4 | * Fixes 5 | * Grouping of common declarations into parent classes 6 | 7 | 8 | 3.0.0 / 2017-11-18 9 | 10 | * Major Release : Blaze 11 | * HTML processing improved, less memory used and performance increase 12 | * Standardised options 13 | * Core has been restructured for async performance 14 | 15 | 16 | 2.0.0 / 2017-11-10 17 | =================== 18 | 19 | * Major Release : Fireball 20 | Find out more on the [website](http://rbtech.github.io/css-purge) 21 | 22 | 23 | 1.1.1 / 2014-05-15 24 | =================== 25 | 26 | * Added support for detecting duplicate properties apart from duplicate rules :) 27 | 28 | 29 | 1.0.7 / 2014-03-18 30 | =================== 31 | 32 | * Dependency Fix 33 | 34 | 35 | 1.0.0 / 2013-04-02 36 | =================== 37 | 38 | * Initial release 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2017 Red Blueprint Technologies 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [![npm](https://img.shields.io/npm/v/css-purge.svg)](https://www.npmjs.com/package/css-purge) [![npm](https://img.shields.io/npm/dm/css-purge.svg)](https://npmcharts.com/compare/css-purge?&=true&periodLength=30&minimal=true) [![NpmLicense](https://img.shields.io/npm/l/css-purge.svg)](https://www.npmjs.com/package/css-purge) 5 | 6 | 7 | **V3 - We just released our most awesome version yet!** 8 | 9 | 10 | 11 | ## A CSS tool written in Node JS as a command line app or library for the purging, burning, reducing, shortening, compressing, cleaning, trimming and formatting of duplicate, extra, excess or bloated CSS. 12 | 13 | 14 | [![CSS Purge](http://rbtech.github.io/css-purge/assets/images/CSS_Purge_Logo_Full.png)](http://rbtech.github.io/css-purge) 15 | 16 | 17 | 18 | 19 | 20 | 21 | ## Overview 22 | 23 | #### Purging CSS 24 | 25 | This is the typical usage scenario, where you may want to purge some CSS from a file(s) or folder(s) or CSS from your workflow (like from [gulp](https://gulpjs.com) or [grunt](https://gruntjs.com)). 26 | 27 | ![Purging CSS](http://rbtech.github.io/css-purge/assets/images/overview1.png) 28 | 29 | #### Purging Unused CSS 30 | 31 | You want to take it a step further by taking your CSS file(s) and reducing it further based on what is used in your HTML file(s). 32 | 33 | ![Purging Unused CSS](http://rbtech.github.io/css-purge/assets/images/overview2.png) 34 | 35 | 36 | 37 | 38 | 39 | 40 | Usage 41 | ---- 42 | 43 | ### CLI App Usage 44 | Global usage is nice for doing something quick everywhere. 45 | 46 | 1) Install with npm: 47 | ``` 48 | npm install css-purge -g 49 | ``` 50 | 2) Run with options: 51 | ``` 52 | css-purge [CLI options] 53 | ``` 54 | 55 | CLI Options: 56 | 57 | 58 | Command | Description 59 | ------------ | ------------- 60 | -i "filename/folder name location" | CSS file(s) input 61 | -o "filename" | The new CSS filename to output as 62 | -c "some CSS" | input CSS from CLI 63 | -f "config filename" | run with a custom config filename 64 | -m "filename/folder name/URL location" | HTML file(s) input 65 | -d | run with the default config file (config_css.json must exist in folder) 66 | -v | displays the version number 67 | -h | CLI help 68 | 69 | ##### Examples 70 | **CSS** - Purge some CSS and output to terminal 71 | ``` 72 | css-purge -c ".panel { color:red; color: blue; }" 73 | ``` 74 | **CSS file** - Purge CSS from main.css and output to main.min.css 75 | ``` 76 | css-purge -i main.css -o main.min.css 77 | ``` 78 | **CSS file with Custom Config** - Purge CSS from main.css and output to main.min.css using myconfig.json for configuration 79 | ``` 80 | css-purge -i main.css -o main.min.css -f myconfig.json 81 | ``` 82 | **CSS file with HTML file** - Purge CSS from main.css using index.html to compare and output to main.min.css 83 | ``` 84 | css-purge -i main.css -o main.min.css -m index.html 85 | ``` 86 | **Multiple CSS and HTML files** - Purge CSS from main.css and framework.css (in that specific order) using index.html and index.html from www.mywebsite.com to compare and output to main.min.css 87 | ``` 88 | css-purge -i "main.css, framework.css" -o main.min.css -m "index.html, http://www.mywebsite.com/index.html" 89 | ``` 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | ### Project Usage 98 | Local usage is nice for “setting up shop” for a project. 99 | 100 | 1) Clone with [git](https://git-scm.com)/[GitHub Desktop](https://desktop.github.com/): 101 | ``` 102 | git clone https://github.com/rbtech/css-purge.git 103 | ``` 104 | or download from: [https://github.com/rbtech/css-purge](https://github.com/rbtech/css-purge) 105 | 106 | 2) Install dependencies: 107 | ``` 108 | npm install 109 | ``` 110 | 111 | 3) Run with options 112 | ``` 113 | node css-purge [CLI options] 114 | ``` 115 | 116 | CLI Options: 117 | 118 | 119 | Command | Description 120 | ------------ | ------------- 121 | -i "filename/folder name location" | CSS file(s) input 122 | -o "filename" | The new CSS filename to output as 123 | -c "some CSS" | input CSS from CLI 124 | -f "config filename" | run with a custom config filename 125 | -m "filename/folder name/URL location" | HTML file(s) input 126 | -d | run with the default config file (config_css.json must exist in folder) 127 | -v | displays the version number 128 | -h | CLI help 129 | 130 | 131 | 132 | 133 | 134 | ### Node JS Library Usage 135 | Libraries help share the awesomeness to more people :) 136 | 137 | You can test out the library in your browser [here](https://npm.runkit.com/css-purge). 138 | 139 | Install: 140 | ``` 141 | npm install css-purge --save 142 | ``` 143 | 144 | Some example usage: 145 | 146 | ```javascript 147 | var cssPurge = require('css-purge'); 148 | 149 | //purging a CSS string with options 150 | var css = "p { color: blue; color: blue; } "; 151 | 152 | cssPurge.purgeCSS(css, { 153 | trim : true, 154 | shorten : true 155 | }, function(error, result){ 156 | if (error) 157 | console.log(error) 158 | else 159 | console.log('Output CSS: ', result); 160 | }); 161 | 162 | 163 | //uses default settings that are set in the config file 164 | //make sure that css is set 165 | cssPurge.purgeCSSFiles(); 166 | 167 | //purging a CSS file 168 | cssPurge.purgeCSSFiles({ 169 | css:'demo/test1.css' 170 | }); 171 | 172 | //purging a CSS file with HTML 173 | cssPurge.purgeCSSFiles({ 174 | css: 'demo/test1.css', 175 | html: 'demo/html/test1.html' 176 | }); 177 | 178 | //purging a CSS file with HTML and options 179 | cssPurge.purgeCSSFiles({ 180 | css_output: 'test1.min.css', 181 | css: 'demo/test1.css', 182 | html: 'demo/html/test1.html', 183 | trim : true, 184 | shorten : true, 185 | verbose : true 186 | }); 187 | 188 | //purging a CSS file with HTML, options and config 189 | cssPurge.purgeCSSFiles({ 190 | css_output: 'test1.min.css', 191 | css: 'demo/test1.css', 192 | html: 'demo/html/test1.html', 193 | trim : true, 194 | shorten : true, 195 | verbose : true 196 | }, 197 | 'myconfig.json' 198 | ); 199 | 200 | ``` 201 | 202 | 203 | 204 | CSS-Purge Report Viewer 205 | ---- 206 | [![Report Preview](http://rbtech.github.io/css-purge/assets/images/css_purge_report.jpg)](http://rbtech.github.io/css-purge) 207 | 208 | Open a separate terminal window, then: 209 | 1) Clone with [git](https://git-scm.com)/[GitHub Desktop](https://desktop.github.com/): 210 | ``` 211 | git clone https://github.com/rbtech/css-purge-report-viewer.git 212 | ``` 213 | or download from: [https://github.com/rbtech/css-purge-report-viewer](https://github.com/rbtech/css-purge-report-viewer) 214 | 215 | 2) Install reload: 216 | ``` 217 | npm install reload -g 218 | ``` 219 | 220 | 3) Run reload to view the report: 221 | ``` 222 | reload -b -e html, css, js, json 223 | ``` 224 | 225 | Report notes: 226 | - make sure you are in the report viewers directory before running reload 227 | - make sure CSS-Purge is set to generate into the report viewers directory 228 | 229 | 230 | Config Options 231 | ---- 232 | For an overview of some of the options/features, 233 | have a look [Under the hood](http://rbtech.github.io/css-purge/#features). 234 | 235 | Full description of each option can be found on the [website](http://rbtech.github.io/css-purge) (Getting Started > Config). 236 | 237 | Example config.json: 238 | ```json 239 | { 240 | "options": { 241 | "css_output": "purged.min.css", 242 | "css": "demo/html/static-jekyll/_siteassets/main.css", 243 | 244 | "html": "demo/html/static-jekyll/_site", 245 | 246 | "new_reduce_common_into_parent": true, 247 | 248 | "trim": true, 249 | "trim_keep_non_standard_inline_comments": false, 250 | "trim_removed_rules_previous_comment": true, 251 | "trim_comments": false, 252 | "trim_whitespace": false, 253 | "trim_breaklines": false, 254 | "trim_last_semicolon": false, 255 | 256 | "shorten": true, 257 | "shorten_zero": false, 258 | "shorten_hexcolor": false, 259 | "shorten_hexcolor_extended_names": false, 260 | "shorten_hexcolor_UPPERCASE": false, 261 | "shorten_font": false, 262 | "shorten_background": true, 263 | "shorten_background_min": 2, 264 | "shorten_margin": false, 265 | "shorten_padding": false, 266 | "shorten_list_style": false, 267 | "shorten_outline": false, 268 | "shorten_border": false, 269 | "shorten_border_top": false, 270 | "shorten_border_right": false, 271 | "shorten_border_bottom": false, 272 | "shorten_border_left": false, 273 | "shorten_border_radius": false, 274 | 275 | "format": true, 276 | "format_4095_rules_legacy_limit": false, 277 | "format_font_family": true, 278 | 279 | "special_convert_rem": false, 280 | "special_convert_rem_browser_default_px": "16", 281 | "special_convert_rem_desired_html_px": "10", 282 | "special_convert_rem_font_size": true, 283 | 284 | "special_reduce_with_html" : false, 285 | "special_reduce_with_html_ignore_selectors" : [ 286 | "@-ms-", 287 | ":-ms-", 288 | "::", 289 | ":valid", 290 | ":invalid", 291 | "+.", 292 | ":-" 293 | ], 294 | 295 | "generate_report": true, 296 | "verbose": true, 297 | 298 | "bypass_media_rules": true, 299 | "bypass_document_rules": false, 300 | "bypass_supports_rules": false, 301 | "bypass_page_rules": false, 302 | "bypass_charset": false, 303 | 304 | "zero_units": "em, ex, %, px, cm, mm, in, pt, pc, ch, rem, vh, vw, vmin, vmax", 305 | "zero_ignore_declaration": [], 306 | 307 | "report_file_location": "report/purged_css_report_data.json", 308 | 309 | "reduce_declarations_file_location": "config_reduce_declarations.json" 310 | } 311 | } 312 | ``` 313 | 314 | 315 | 316 | 317 | Plugins! 318 | ---- 319 | - [gulp-css-purge](https://github.com/rbtech/gulp-css-purge) 320 | - [grunt-css-purge](https://github.com/dominikwilkowski/grunt-css-purge) 321 | - [Webpack loader : purge-css-loader](https://github.com/dzianisreznik/purge-css-loader) 322 | 323 | 324 | We will list them as they come. 325 | 326 | 327 | 328 | 329 | 330 | 331 | Help 332 | ---- 333 | ##### Source Code Issues 334 | - [Visit the issues section on github](https://github.com/rbtech/css-purge/issues) 335 | 336 | ##### Community and Q&A 337 | 338 | Got a question on how to do something and when answered will help everyone? 339 | Then place it on StackOverflow with the tag “css-purge” 340 | - [View questions tagged with “css-purge”](https://stackoverflow.com/questions/tagged/css-purge) 341 | - Join us on gitter - [Visit the community](https://gitter.im/css-purge) 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | License 351 | ----- 352 | 353 | (The MIT License) 354 | 355 | Copyright (c) 2017 [Red Blueprint Technologies](http://redblueprint.com) 356 | 357 | Permission is hereby granted, free of charge, to any person obtaining 358 | a copy of this software and associated documentation files (the 359 | 'Software'), to deal in the Software without restriction, including 360 | without limitation the rights to use, copy, modify, merge, publish, 361 | distribute, sublicense, and/or sell copies of the Software, and to 362 | permit persons to whom the Software is furnished to do so, subject to 363 | the following conditions: 364 | 365 | The above copyright notice and this permission notice shall be 366 | included in all copies or substantial portions of the Software. 367 | 368 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 369 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 370 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 371 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 372 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 373 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 374 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | auto: true -------------------------------------------------------------------------------- /assets/css/main.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | font-family: 'Roboto', 'Helvetica', sans-serif; 3 | letter-spacing: 1px; 4 | margin: 0; 5 | padding: 0; 6 | } 7 | 8 | .full-width { 9 | width: 100%; 10 | } 11 | .table1 { 12 | width: 100%; 13 | } 14 | 15 | .table1 td, .table1 th { 16 | padding: 10px; 17 | vertical-align: top; 18 | } 19 | 20 | #code-sponsor-widget { 21 | position: absolute; 22 | top: -1px; 23 | right: 2em; 24 | z-index: 999; 25 | width: 300px; 26 | height: 130px; 27 | background-color: white; 28 | } 29 | 30 | #layoutHeader .mdl-layout__header { 31 | background-color: white!important; 32 | background-image: url(../images/CSS_Purge_Logo_Full.png); 33 | background-repeat: no-repeat; 34 | background-position: 90px 20px; 35 | } 36 | 37 | #layoutHeader header .mdl-color--primary-dark { 38 | background-color: #ff2d68!important; 39 | } 40 | 41 | .mdl-color--indigo-100 { 42 | background-color: #ff6992!important; 43 | } 44 | 45 | #jumboName { 46 | display: none; 47 | color: #FF2F68; 48 | font-size: 82px; 49 | } 50 | 51 | #mainDescription { 52 | font-size: 2em; 53 | margin-bottom: 0; 54 | } 55 | 56 | a:hover { 57 | color: white; 58 | } 59 | 60 | .mdl-layout__tab-panel a:hover { 61 | color: darkgrey; 62 | } 63 | 64 | .mdl-color--accent { 65 | background-color: #C01C5E!important; 66 | } 67 | 68 | code { 69 | border-radius: 4px; 70 | } 71 | 72 | .sidemenu { 73 | position: fixed; 74 | display: inline-block; 75 | width: 120px; 76 | margin-top: 20px; 77 | 78 | background-color: white; 79 | border-radius: 4px; 80 | } 81 | 82 | .mdl-purge .mdl-layout__header-row h1 { 83 | margin-left: -1em; 84 | } 85 | .mdl-purge .mdl-layout.is-small-screen .mdl-layout__header-row h3 { 86 | font-size: inherit; 87 | } 88 | .mdl-purge .mdl-layout__tab-bar-button { 89 | display: none; 90 | } 91 | 92 | .mdl-purge .mdl-layout.is-small-screen .mdl-layout__tab-bar #add { 93 | position: relative; 94 | right: 0; 95 | left: 10px; 96 | top: 15px; 97 | } 98 | 99 | .mdl-purge #add { 100 | position: absolute; 101 | right: 40px; 102 | top: 36px; 103 | z-index: 999; 104 | } 105 | .mdl-purge .mdl-layout:not(.is-small-screen) .mdl-layout__tab-bar, 106 | .mdl-purge .mdl-layout:not(.is-small-screen) .mdl-layout__tab-bar-container { 107 | overflow: visible; 108 | } 109 | .mdl-purge .mdl-layout__tab-bar-container { 110 | height: 64px; 111 | } 112 | .mdl-purge .mdl-layout__tab-bar { 113 | padding: 0; 114 | padding-left: 16px; 115 | box-sizing: border-box; 116 | height: 100%; 117 | width: 100%; 118 | } 119 | .mdl-purge .mdl-layout__tab-bar .mdl-layout__tab { 120 | height: 64px; 121 | line-height: 64px; 122 | } 123 | .mdl-purge .mdl-layout__tab-bar .mdl-layout__tab.is-active::after { 124 | background-color: white; 125 | height: 4px; 126 | } 127 | .mdl-purge main > .mdl-layout__tab-panel { 128 | padding: 8px; 129 | padding-top: 48px; 130 | } 131 | .mdl-purge .mdl-card { 132 | height: auto; 133 | display: flex; 134 | flex-direction: column; 135 | } 136 | .mdl-purge .mdl-card > * { 137 | height: auto; 138 | } 139 | .mdl-purge .mdl-card .mdl-card__supporting-text { 140 | margin: 40px; 141 | flex-grow: 1; 142 | padding: 0; 143 | color: inherit; 144 | width: calc(100% - 80px); 145 | } 146 | .mdl-purge.mdl-purge .mdl-card__supporting-text h4 { 147 | margin-top: 0; 148 | margin-bottom: 20px; 149 | } 150 | .mdl-purge .mdl-card__actions { 151 | margin: 0; 152 | padding: 4px 40px; 153 | color: inherit; 154 | } 155 | .mdl-purge .mdl-card__actions a { 156 | color: #00BCD4; 157 | margin: 0; 158 | } 159 | .mdl-purge .mdl-card__actions a:hover, 160 | .mdl-purge .mdl-card__actions a:active { 161 | color: inherit; 162 | background-color: transparent; 163 | } 164 | .mdl-purge .mdl-card__supporting-text + .mdl-card__actions { 165 | border-top: 1px solid rgba(0, 0, 0, 0.12); 166 | } 167 | 168 | .mdl-purge .mdl-layout__content section:not(:last-of-type) { 169 | position: relative; 170 | margin-bottom: 48px; 171 | } 172 | .mdl-purge section.section--center { 173 | max-width: 860px; 174 | } 175 | .mdl-purge #features section.section--center { 176 | max-width: 860px; 177 | } 178 | .mdl-purge section > header{ 179 | display: flex; 180 | align-items: center; 181 | justify-content: center; 182 | } 183 | .mdl-purge section > .section__play-btn { 184 | min-height: 200px; 185 | } 186 | .mdl-purge section > header > .material-icons { 187 | font-size: 3rem; 188 | } 189 | .mdl-purge section > button { 190 | position: absolute; 191 | z-index: 99; 192 | top: 8px; 193 | right: 8px; 194 | } 195 | .mdl-purge section .section__circle { 196 | display: flex; 197 | align-items: center; 198 | justify-content: flex-start; 199 | flex-grow: 0; 200 | flex-shrink: 1; 201 | } 202 | .mdl-purge section .section__text { 203 | flex-grow: 1; 204 | flex-shrink: 0; 205 | padding-top: 8px; 206 | } 207 | .mdl-purge section .section__text h5 { 208 | font-size: inherit; 209 | margin: 0; 210 | margin-bottom: 0.5em; 211 | } 212 | .mdl-purge section .section__text a { 213 | text-decoration: none; 214 | } 215 | .mdl-purge section .section__circle-container > .section__circle-container__circle { 216 | width: 64px; 217 | height: 64px; 218 | border-radius: 32px; 219 | margin: 8px 0; 220 | } 221 | .mdl-purge section.section--footer .section__circle--big { 222 | width: 100px; 223 | height: 100px; 224 | border-radius: 50px; 225 | margin: 8px 32px; 226 | } 227 | .mdl-purge .is-small-screen section.section--footer .section__circle--big { 228 | width: 50px; 229 | height: 50px; 230 | border-radius: 25px; 231 | margin: 8px 16px; 232 | } 233 | .mdl-purge section.section--footer { 234 | padding: 64px 0; 235 | margin: 0 -8px -8px -8px; 236 | } 237 | .mdl-purge section.section--center .section__text:not(:last-child) { 238 | border-bottom: 1px solid rgba(0,0,0,.13); 239 | } 240 | .mdl-purge .mdl-card .mdl-card__supporting-text > h3:first-child { 241 | margin-bottom: 24px; 242 | } 243 | .mdl-purge .mdl-layout__tab-panel:not(#overview) { 244 | background-color: white; 245 | } 246 | .mdl-purge #features section { 247 | margin-bottom: 72px; 248 | } 249 | .mdl-purge #features h4, #features h5 { 250 | margin-bottom: 16px; 251 | } 252 | .mdl-purge .toc { 253 | border-left: 4px solid #C1EEF4; 254 | margin: 24px; 255 | padding: 0; 256 | padding-left: 8px; 257 | display: flex; 258 | flex-direction: column; 259 | } 260 | .mdl-purge .toc h4 { 261 | font-size: 0.9rem; 262 | margin-top: 0; 263 | } 264 | .mdl-purge .toc a { 265 | color: #4DD0E1; 266 | text-decoration: none; 267 | font-size: 16px; 268 | line-height: 28px; 269 | display: block; 270 | } 271 | .mdl-purge .mdl-menu__container { 272 | z-index: 99; 273 | } 274 | 275 | .cs__wrapper { 276 | width: 100%; 277 | padding: 10px; 278 | margin: 0; 279 | overflow: hidden; 280 | font-size: 13px; 281 | line-height: 1.4; 282 | text-align: left; 283 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; 284 | font-weight: normal; 285 | color: #212529; 286 | } 287 | .cs__header { 288 | text-align: left; 289 | font-size: 13px; 290 | line-height: 1.2; 291 | margin-bottom: 10px; 292 | display: block; 293 | text-decoration: none; 294 | color: #51585f; 295 | } 296 | .cs__blurb { 297 | text-align: left; 298 | font-size: 1.3em; 299 | line-height: 1.4; 300 | margin-bottom: 10px; 301 | display: block; 302 | text-decoration: none; 303 | color: #212529; 304 | } 305 | .cs__image_wrapper { 306 | text-align: center; 307 | display: block; 308 | } 309 | .cs__image { 310 | max-width: 80%; 311 | } 312 | .cs__footer { 313 | margin-top: 8px; 314 | text-align: left; 315 | font-size: 10px; 316 | } 317 | .cs__wrapper.dark { 318 | color: rgba(255,255,255,0.6); 319 | } 320 | .cs__wrapper.dark .cs__header { 321 | color: rgba(255,255,255,0.5); 322 | } 323 | .cs__wrapper.dark .cs__blurb { 324 | color: rgba(255,255,255,0.8); 325 | } 326 | .cs__wrapper.dark .cs__blurb strong { 327 | color: #6caedd; 328 | } 329 | .cs__wrapper.dark .cs__footer { 330 | color: rgba(255,255,255,0.3); 331 | } 332 | .cs__wrapper.dark .cs__footer a { 333 | color: rgba(255,255,255,0.3); 334 | } 335 | 336 | 337 | 338 | @media (max-width:1025px) { 339 | #jumboName { 340 | display: inline-block; 341 | } 342 | #leftPanel { 343 | width: 100%; 344 | } 345 | 346 | #rightPanel { 347 | display: none; 348 | } 349 | 350 | #code-sponsor-widget { 351 | position: absolute; 352 | top: -1px; 353 | right: 2em; 354 | z-index: 999; 355 | background-color: white; 356 | 357 | -webkit-border-bottom-right-radius: 4px; 358 | -webkit-border-bottom-left-radius: 4px; 359 | -moz-border-radius-bottomright: 4px; 360 | -moz-border-radius-bottomleft: 4px; 361 | border-bottom-left-radius: 4px; 362 | border-bottom-right-radius: 4px; 363 | border: 1px solid lightgrey; 364 | } 365 | } 366 | 367 | 368 | @media (max-width:850px) { 369 | 370 | #code-sponsor-widget { 371 | display: none; 372 | } 373 | } 374 | 375 | @media (max-width:580px) { 376 | 377 | #jumboName { 378 | font-size: 40px; 379 | } 380 | 381 | #jumboName img { 382 | width: 50px; 383 | } 384 | } -------------------------------------------------------------------------------- /assets/css/monokai-sublime.min.css: -------------------------------------------------------------------------------- 1 | .hljs{display:block;overflow-x:auto;padding:0.5em;background:#23241f}.hljs,.hljs-tag,.hljs-subst{color:#f8f8f2}.hljs-strong,.hljs-emphasis{color:#a8a8a2}.hljs-bullet,.hljs-quote,.hljs-number,.hljs-regexp,.hljs-literal,.hljs-link{color:#ae81ff}.hljs-code,.hljs-title,.hljs-section,.hljs-selector-class{color:#a6e22e}.hljs-strong{font-weight:bold}.hljs-emphasis{font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-name,.hljs-attr{color:#f92672}.hljs-symbol,.hljs-attribute{color:#66d9ef}.hljs-params,.hljs-class .hljs-title{color:#f8f8f2}.hljs-string,.hljs-type,.hljs-built_in,.hljs-builtin-name,.hljs-selector-id,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-addition,.hljs-variable,.hljs-template-variable{color:#e6db74}.hljs-comment,.hljs-deletion,.hljs-meta{color:#75715e} -------------------------------------------------------------------------------- /assets/images/CSS_Purge_FB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/CSS_Purge_FB.png -------------------------------------------------------------------------------- /assets/images/CSS_Purge_Logo_300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/CSS_Purge_Logo_300.png -------------------------------------------------------------------------------- /assets/images/CSS_Purge_Logo_Full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/CSS_Purge_Logo_Full.png -------------------------------------------------------------------------------- /assets/images/css_purge_report.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/css_purge_report.jpg -------------------------------------------------------------------------------- /assets/images/css_purge_report_viewer_ux.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/css_purge_report_viewer_ux.jpg -------------------------------------------------------------------------------- /assets/images/favicon/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/android-icon-144x144.png -------------------------------------------------------------------------------- /assets/images/favicon/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/android-icon-192x192.png -------------------------------------------------------------------------------- /assets/images/favicon/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/android-icon-36x36.png -------------------------------------------------------------------------------- /assets/images/favicon/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/android-icon-48x48.png -------------------------------------------------------------------------------- /assets/images/favicon/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/android-icon-72x72.png -------------------------------------------------------------------------------- /assets/images/favicon/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/android-icon-96x96.png -------------------------------------------------------------------------------- /assets/images/favicon/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/apple-icon-114x114.png -------------------------------------------------------------------------------- /assets/images/favicon/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/apple-icon-120x120.png -------------------------------------------------------------------------------- /assets/images/favicon/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/apple-icon-144x144.png -------------------------------------------------------------------------------- /assets/images/favicon/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/apple-icon-152x152.png -------------------------------------------------------------------------------- /assets/images/favicon/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/apple-icon-180x180.png -------------------------------------------------------------------------------- /assets/images/favicon/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/apple-icon-57x57.png -------------------------------------------------------------------------------- /assets/images/favicon/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/apple-icon-60x60.png -------------------------------------------------------------------------------- /assets/images/favicon/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/apple-icon-72x72.png -------------------------------------------------------------------------------- /assets/images/favicon/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/apple-icon-76x76.png -------------------------------------------------------------------------------- /assets/images/favicon/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/apple-icon-precomposed.png -------------------------------------------------------------------------------- /assets/images/favicon/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/apple-icon.png -------------------------------------------------------------------------------- /assets/images/favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff -------------------------------------------------------------------------------- /assets/images/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /assets/images/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /assets/images/favicon/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/favicon-96x96.png -------------------------------------------------------------------------------- /assets/images/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/favicon.ico -------------------------------------------------------------------------------- /assets/images/favicon/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "App", 3 | "icons": [ 4 | { 5 | "src": "\/android-icon-36x36.png", 6 | "sizes": "36x36", 7 | "type": "image\/png", 8 | "density": "0.75" 9 | }, 10 | { 11 | "src": "\/android-icon-48x48.png", 12 | "sizes": "48x48", 13 | "type": "image\/png", 14 | "density": "1.0" 15 | }, 16 | { 17 | "src": "\/android-icon-72x72.png", 18 | "sizes": "72x72", 19 | "type": "image\/png", 20 | "density": "1.5" 21 | }, 22 | { 23 | "src": "\/android-icon-96x96.png", 24 | "sizes": "96x96", 25 | "type": "image\/png", 26 | "density": "2.0" 27 | }, 28 | { 29 | "src": "\/android-icon-144x144.png", 30 | "sizes": "144x144", 31 | "type": "image\/png", 32 | "density": "3.0" 33 | }, 34 | { 35 | "src": "\/android-icon-192x192.png", 36 | "sizes": "192x192", 37 | "type": "image\/png", 38 | "density": "4.0" 39 | } 40 | ] 41 | } -------------------------------------------------------------------------------- /assets/images/favicon/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/ms-icon-144x144.png -------------------------------------------------------------------------------- /assets/images/favicon/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/ms-icon-150x150.png -------------------------------------------------------------------------------- /assets/images/favicon/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/ms-icon-310x310.png -------------------------------------------------------------------------------- /assets/images/favicon/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/favicon/ms-icon-70x70.png -------------------------------------------------------------------------------- /assets/images/get_started.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/get_started.png -------------------------------------------------------------------------------- /assets/images/global_cli_ux.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/global_cli_ux.jpg -------------------------------------------------------------------------------- /assets/images/grunt-css-purge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/grunt-css-purge.png -------------------------------------------------------------------------------- /assets/images/gulp-css-purge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/gulp-css-purge.png -------------------------------------------------------------------------------- /assets/images/local_cli_ux.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/local_cli_ux.jpg -------------------------------------------------------------------------------- /assets/images/overview1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/overview1.png -------------------------------------------------------------------------------- /assets/images/overview2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/overview2.png -------------------------------------------------------------------------------- /assets/images/under_the_hood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/under_the_hood.png -------------------------------------------------------------------------------- /assets/images/visit_website.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rbtech/css-purge/0e58b26809472140a07d575105ef18e4c0f1fb10/assets/images/visit_website.jpg -------------------------------------------------------------------------------- /assets/js/main.js: -------------------------------------------------------------------------------- 1 | 2 | var gId = document.getElementById.bind(document); 3 | 4 | var overviewTab = gId('overviewTab'); 5 | var featuresTab = gId('featuresTab'); 6 | var getStartedTab = gId('getStartedTab'); 7 | var helpTab = gId('helpTab'); 8 | 9 | 10 | 11 | var overviewTop = 0; 12 | var usageTop = 0; 13 | var globalTop = 0; 14 | var localTop = 0; 15 | var libraryTop = 0; 16 | var reportTop = 0; 17 | var configTop = 0; 18 | 19 | function setTop() { 20 | 21 | overviewTop = $('#headerOverview').offset().top - 10; 22 | usageTop = $('#headerUsage').offset().top-10; 23 | globalTop = $('#headerGlobal').offset().top - 10; 24 | localTop = $('#headerLocal').offset().top - 10; 25 | libraryTop = $('#headerLibrary').offset().top - 10; 26 | reportTop = $('#headerReport').offset().top - 10; 27 | configTop = $('#headerConfig').offset().top - 10; 28 | 29 | } 30 | 31 | $(function(){ 32 | 33 | $('.underTheHoodLink').on('click', function(){ 34 | 35 | $("#layoutHeader").animate({scrollTop:0}, 300); 36 | 37 | featuresTab.click(); 38 | }); 39 | 40 | $('.gettingStartedLink').on('click', function(){ 41 | 42 | $("#layoutHeader").animate({scrollTop:0}, 300); 43 | 44 | getStartedTab.click(); 45 | }); 46 | 47 | $('.helpLink').on('click', function(){ 48 | 49 | $("#layoutHeader").animate({scrollTop:0}, 300); 50 | 51 | helpTab.click(); 52 | }); 53 | 54 | 55 | 56 | //overview 57 | $('#menuBtn1, .footerOverview').on('click', function(){ 58 | 59 | getStartedTab.click(); 60 | 61 | setTimeout(function(){ 62 | 63 | if (overviewTop == 0) { 64 | setTop(); 65 | } 66 | 67 | $("#layoutHeader").animate({scrollTop:overviewTop}, 300); 68 | 69 | },100); 70 | }); 71 | 72 | 73 | 74 | 75 | //usage 76 | $('#menuBtn2, footerUsage').on('click', function(){ 77 | 78 | getStartedTab.click(); 79 | 80 | setTimeout(function(){ 81 | 82 | if (usageTop == 0) { 83 | setTop(); 84 | } 85 | 86 | $("#layoutHeader").animate({scrollTop:usageTop}, 300); 87 | 88 | },100); 89 | }); 90 | 91 | //global 92 | $('#submenuBtn1, .globalLink').on('click', function(){ 93 | 94 | getStartedTab.click(); 95 | 96 | if (globalTop == 0) { setTop(); } 97 | 98 | $("#layoutHeader").animate({scrollTop: globalTop}, 300); 99 | 100 | }); 101 | //local 102 | $('#submenuBtn2, .localLink').on('click', function(){ 103 | 104 | getStartedTab.click(); 105 | 106 | if (localTop == 0) { setTop(); } 107 | 108 | $("#layoutHeader").animate({scrollTop:localTop}, 300); 109 | 110 | }); 111 | //library 112 | $('#submenuBtn3, .libraryLink').on('click', function(){ 113 | 114 | getStartedTab.click(); 115 | 116 | if (libraryTop == 0) { setTop(); } 117 | 118 | $("#layoutHeader").animate({scrollTop:libraryTop}, 300); 119 | 120 | }); 121 | 122 | 123 | 124 | //report 125 | $('#menuBtn3, .footerReport').on('click', function(){ 126 | 127 | getStartedTab.click(); 128 | 129 | setTimeout(function(){ 130 | 131 | if (reportTop == 0) { setTop(); } 132 | 133 | $("#layoutHeader").animate({scrollTop:reportTop}, 300); 134 | 135 | },100); 136 | }); 137 | 138 | 139 | //config 140 | $('#menuBtn4, .configHeaderLink, .footerConfig').on('click', function(){ 141 | 142 | getStartedTab.click(); 143 | 144 | setTimeout(function(){ 145 | 146 | if (configTop == 0) { setTop(); } 147 | 148 | $("#layoutHeader").animate({scrollTop:configTop}, 300); 149 | 150 | },100); 151 | }); 152 | 153 | var token = "EETIPcM4wPVlWpWFnY2SLw"; 154 | 155 | if (document.domain.indexOf('npm') != -1) { 156 | token = "tZWUuWEjGuwxBevlNrkMvg"; 157 | } 158 | 159 | $(".cs__footer a").attr("href", "https://codesponsor.io/?utm_source=widget&utm_medium=banner&utm_campaign=" + token); 160 | $.ajax({ 161 | url: "https://app.codesponsor.io/p/" + token + "/message.json", 162 | method: "GET" 163 | }).done(function(results) { 164 | console.log(results); 165 | $(".cs__blurb").attr("href", results.link_href); 166 | $(".cs__blurb strong").text(results.title); 167 | $(".cs__blurb span").text(results.body); 168 | $(".cs__pixel").attr("src", results.pixel_href); 169 | }).fail(function(args) { 170 | $(".cs__blurb strong").text("CodeSponsor.io"); 171 | $(".cs__blurb span").text(" - get paid by adding one line of code to your README"); 172 | }); 173 | 174 | }); -------------------------------------------------------------------------------- /config_css.json: -------------------------------------------------------------------------------- 1 | { 2 | "options": { 3 | 4 | "css_output": "purged.min.css", 5 | 6 | "new_reduce_common_into_parent": false, 7 | 8 | "trim": true, 9 | "trim_keep_non_standard_inline_comments": false, 10 | "trim_removed_rules_previous_comment": true, 11 | "trim_comments": false, 12 | "trim_whitespace": false, 13 | "trim_breaklines": false, 14 | "trim_last_semicolon": false, 15 | 16 | "shorten": true, 17 | "shorten_zero": false, 18 | "shorten_hexcolor": false, 19 | "shorten_hexcolor_extended_names": false, 20 | "shorten_hexcolor_UPPERCASE": false, 21 | "shorten_font": false, 22 | "shorten_background": false, 23 | "shorten_background_min": 2, 24 | "shorten_margin": false, 25 | "shorten_padding": false, 26 | "shorten_list_style": false, 27 | "shorten_outline": false, 28 | "shorten_border": false, 29 | "shorten_border_top": false, 30 | "shorten_border_right": false, 31 | "shorten_border_bottom": false, 32 | "shorten_border_left": false, 33 | "shorten_border_radius": false, 34 | 35 | "format": true, 36 | "format_font_family": true, 37 | "format_4095_rules_legacy_limit": false, 38 | 39 | "special_convert_rem": false, 40 | "special_convert_rem_browser_default_px": "16", 41 | "special_convert_rem_desired_html_px": "10", 42 | "special_convert_rem_font_size": true, 43 | 44 | "special_reduce_with_html" : false, 45 | "special_reduce_with_html_ignore_selectors" : [ 46 | "@-ms-", 47 | ":-ms-", 48 | "::", 49 | ":valid", 50 | ":invalid", 51 | "+.", 52 | ":-" 53 | ], 54 | 55 | "generate_report": true, 56 | "verbose": true, 57 | 58 | "bypass_media_rules": true, 59 | "bypass_document_rules": false, 60 | "bypass_supports_rules": false, 61 | "bypass_page_rules": false, 62 | "bypass_charset": false, 63 | 64 | "zero_units": "em, ex, %, px, cm, mm, in, pt, pc, ch, rem, vh, vw, vmin, vmax", 65 | "zero_ignore_declaration": [], 66 | 67 | "report_file_location": "purged_css_report_data.json", 68 | 69 | "reduce_declarations_file_location": "config_reduce_declarations.json" 70 | } 71 | } -------------------------------------------------------------------------------- /config_css_example.json: -------------------------------------------------------------------------------- 1 | { 2 | "file_output": "purged.min.css", 3 | 4 | 5 | "input_files": "demo/test1.css", 6 | "input_files": "demo/test1.css, demo/test2.css", 7 | "input_files": "demo/test1.css, demo/test2.css, demo/test3.css, demo/test4.css", 8 | "input_files": "demo/test1.css, demo/css_folder", 9 | "input_files": ["demo/test1.css", "demo/css_folder", "demo/libs/bootstrap4.css"], 10 | "input_files": "demo/libs/960.css", 11 | "input_files": "demo/libs/animate.css", 12 | "input_files": "demo/libs/blueprint", 13 | "input_files": "demo/libs/bootstrap3.css", 14 | "input_files": "demo/libs/bootstrap4.css", 15 | "input_files": "demo/libs/font-awesome.css", 16 | "input_files": "demo/libs/foundation.css", 17 | "input_files": "demo/libs/gumby.css", 18 | "input_files": "demo/libs/inuitV6.css", 19 | "input_files": "demo/libs/normalize.css", 20 | "input_files": "demo/libs/oocss", 21 | "input_files": "demo/libs/pure.css", 22 | "input_files": "demo/libs/reset.css", 23 | "input_files": "http://localhost:4000/assets/main.css", 24 | "input_files": [ 25 | "demo/html/static-jekyll/_site/assets/main.css", 26 | "demo/libs/bootstrap4.css" 27 | ], 28 | "input_files": "demo/html/static-jekyll/_site/assets/main.css", 29 | 30 | 31 | 32 | "input_html_files": "demo/html/test1.html", 33 | "input_html_files": "http://localhost:4000", 34 | "input_html_files": [ 35 | "http://localhost:4000/index.html", 36 | "http://localhost:4000/jekyll/update/2017/10/17/welcome-to-jekyll.html", 37 | "http://localhost:4000/about/" 38 | ], 39 | "input_html_files": "demo/html/static-jekyll/_site", 40 | 41 | 42 | 43 | 44 | "options": { 45 | "trim": true, 46 | "trim_keep_non_standard_inline_comments": false, 47 | "trim_removed_rules_previous_comment": true, 48 | "trim_comments": false, 49 | "trim_whitespace": false, 50 | "trim_breaklines": false, 51 | "trim_last_semicolon": false, 52 | 53 | "shorten": true, 54 | "shorten_zero": false, 55 | "shorten_hexcolor": false, 56 | "shorten_hexcolor_extended_names": false, 57 | "shorten_hexcolor_UPPERCASE": false, 58 | "shorten_font": false, 59 | "shorten_background": false, 60 | "shorten_background_min": 2, 61 | "shorten_margin": false, 62 | "shorten_padding": false, 63 | "shorten_list_style": false, 64 | "shorten_outline": false, 65 | "shorten_border": false, 66 | "shorten_border_top": false, 67 | "shorten_border_right": false, 68 | "shorten_border_bottom": false, 69 | "shorten_border_left": false, 70 | "shorten_border_radius": false, 71 | 72 | "format": true, 73 | "format_font_family": true, 74 | "format_4095_rules_legacy_limit": false, 75 | 76 | "special_convert_rem": false, 77 | "special_convert_rem_browser_default_px": "16", 78 | "special_convert_rem_desired_html_px": "10", 79 | "special_convert_rem_font_size": true, 80 | 81 | "special_reduce_with_html" : false, 82 | "special_reduce_with_html_ignore_selectors" : [ 83 | "@-ms-", 84 | ":-ms-", 85 | "::", 86 | ":valid", 87 | ":invalid", 88 | "+.", 89 | ":-" 90 | ], 91 | 92 | "generate_report": true, 93 | "verbose": true, 94 | 95 | "bypass_media_rules": true, 96 | "bypass_document_rules": false, 97 | "bypass_supports_rules": false, 98 | "bypass_page_rules": false, 99 | "bypass_charset": false 100 | }, 101 | 102 | "zero_units": "em, ex, %, px, cm, mm, in, pt, pc, ch, rem, vh, vw, vmin, vmax", 103 | 104 | "report_file_location": "purged_css_report_data.json", 105 | 106 | "reduce_declarations_file_location": "config_reduce_declarations.json" 107 | } -------------------------------------------------------------------------------- /config_reduce_declarations.json: -------------------------------------------------------------------------------- 1 | { 2 | "declaration_names" : [ 3 | "font", 4 | "margin", 5 | "padding", 6 | "list-style", 7 | "outline", 8 | "border", 9 | "border-top", 10 | "border-right", 11 | "border-bottom", 12 | "border-left", 13 | "border-radius", 14 | "border-color", 15 | "border-top-color", 16 | "border-right-color", 17 | "border-bottom-color", 18 | "border-left-color", 19 | "color", 20 | "background-color", 21 | "font-color", 22 | "outline-color", 23 | "box-shadow", 24 | "text-shadow", 25 | "float", 26 | "font-family", 27 | "font-size", 28 | "font-weight", 29 | "font-style", 30 | "font-variant", 31 | "font-stretch" 32 | ] 33 | } 34 | -------------------------------------------------------------------------------- /config_reduce_declarations_example_2.json: -------------------------------------------------------------------------------- 1 | { 2 | "declaration_names" : "color, background-color", 3 | "selectors" : ".test, .panel" 4 | } -------------------------------------------------------------------------------- /config_reduce_declarations_example_3.json: -------------------------------------------------------------------------------- 1 | { 2 | "declaration_names" : "color, background-color", 3 | "selectors" : { 4 | ".panel" : "border", 5 | ".test" : "padding-right" 6 | } 7 | } -------------------------------------------------------------------------------- /css-purge.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var through2 = require('through2'); 3 | var clc = require('cli-color'); 4 | var program = require('commander'); 5 | var pkg = require('./package.json'); 6 | var cssPurge = require('./lib/css-purge'); 7 | 8 | var error = clc.red.bold; 9 | var info = clc.xterm(123); 10 | var warn = clc.yellow; 11 | var logoRed = clc.xterm(197); 12 | 13 | program 14 | .version(pkg.version) 15 | .option('-c, --cssinput - CSS ', 'The CSS to purge') 16 | .option('-i, --input - CSS file(s) ', 'The CSS file(s) to parse') 17 | .option('-m, --inputhtml - HTML file(s) ', 'The HTML file(s) to parse for CSS') 18 | .option('-o, --output - CSS file ', 'The new css filename to output as') 19 | .option('-f, --customconfig - - run with custom config filename', 'Global Workflow - All options must be defined in a json file') 20 | .option('-d, --defaultconfig - run with default config file', 'Local Workflow - All options are defined in a config_css.json') 21 | .option('-v, --verbose - displays internal messages', 'Outputs CSS-PURGE activity') 22 | .parse(process.argv); 23 | 24 | var options = {}; 25 | 26 | if (program.cssinput) { 27 | 28 | if (program.output) { 29 | 30 | options = { 31 | css_output: program.output, 32 | verbose : (program.verbose) ? true : false 33 | }; 34 | 35 | if (program.customconfig === undefined) { 36 | options.trim = true; 37 | options.shorten = true; 38 | } 39 | 40 | cssPurge.purgeCSS(program.cssinput, options, function(error, result){ 41 | if (error) 42 | console.log(error) 43 | else 44 | console.log(result); 45 | }); 46 | } else { 47 | 48 | options = { 49 | verbose : (program.verbose) ? true : false 50 | }; 51 | 52 | if (program.customconfig === undefined) { 53 | options.trim = true; 54 | options.shorten = true; 55 | } 56 | 57 | cssPurge.purgeCSS(program.cssinput, options, function(error, result){ 58 | if (error) 59 | console.log(error) 60 | else 61 | console.log(result); 62 | }); 63 | } 64 | 65 | } else if (program.input && program.inputhtml && program.output) { 66 | 67 | options = { 68 | css: program.input, 69 | css_output: program.output, 70 | special_reduce_with_html: true, 71 | html: program.inputhtml, 72 | verbose : (program.verbose) ? true : false 73 | }; 74 | 75 | if (program.customconfig === undefined) { 76 | options.trim = true; 77 | options.shorten = true; 78 | } 79 | 80 | cssPurge.purgeCSSFiles( 81 | options, 82 | (program.customconfig !== undefined) ? program.customconfig : 'cmd_default' 83 | ); 84 | 85 | 86 | } else if (program.input && program.inputhtml) { 87 | 88 | options = { 89 | css: program.input, 90 | css_output: program.input.substr(0, program.input.lastIndexOf('.')) + '.min.css', 91 | special_reduce_with_html: true, 92 | html: program.inputhtml, 93 | verbose : (program.verbose) ? true : false 94 | }; 95 | 96 | if (program.customconfig === undefined) { 97 | options.trim = true; 98 | options.shorten = true; 99 | } 100 | 101 | cssPurge.purgeCSSFiles( 102 | options, 103 | (program.customconfig !== undefined) ? program.customconfig : 'cmd_default' 104 | ); 105 | 106 | 107 | } else if (program.input && program.output) { 108 | 109 | options = { 110 | css: program.input, 111 | css_output: program.output, 112 | verbose : (program.verbose) ? true : false 113 | }; 114 | 115 | if (program.customconfig === undefined) { 116 | options.trim = true; 117 | options.shorten = true; 118 | } 119 | 120 | cssPurge.purgeCSSFiles( 121 | options, 122 | (program.customconfig !== undefined) ? program.customconfig : 'cmd_default' 123 | ); 124 | } else if (program.input) { 125 | 126 | options = { 127 | css: program.input, 128 | css_output: program.input.substr(0, program.input.lastIndexOf('.')) + '.min.css', 129 | verbose : (program.verbose) ? true : false 130 | }; 131 | 132 | if (program.customconfig === undefined) { 133 | options.trim = true; 134 | options.shorten = true; 135 | } 136 | 137 | cssPurge.purgeCSSFiles( 138 | options, 139 | (program.customconfig !== undefined) ? program.customconfig : 'cmd_default' 140 | ); 141 | } else if (program.customconfig) { 142 | cssPurge.purgeCSSFiles(null, '' + program.customconfig); 143 | } else if (program.defaultconfig) { 144 | cssPurge.purgeCSSFiles(); 145 | } else { 146 | program.help(); 147 | } 148 | -------------------------------------------------------------------------------- /demo/.gitignore: -------------------------------------------------------------------------------- 1 | ./node_modules -------------------------------------------------------------------------------- /demo/config_css.json: -------------------------------------------------------------------------------- 1 | { 2 | "options": { 3 | 4 | "css_output": "purged.min.css", 5 | 6 | "trim": true, 7 | "trim_keep_non_standard_inline_comments": false, 8 | "trim_removed_rules_previous_comment": true, 9 | "trim_comments": false, 10 | "trim_whitespace": false, 11 | "trim_breaklines": false, 12 | "trim_last_semicolon": false, 13 | 14 | "shorten": true, 15 | "shorten_zero": false, 16 | "shorten_hexcolor": false, 17 | "shorten_hexcolor_extended_names": false, 18 | "shorten_hexcolor_UPPERCASE": false, 19 | "shorten_font": false, 20 | "shorten_background": false, 21 | "shorten_background_min": 2, 22 | "shorten_margin": false, 23 | "shorten_padding": false, 24 | "shorten_list_style": false, 25 | "shorten_outline": false, 26 | "shorten_border": false, 27 | "shorten_border_top": false, 28 | "shorten_border_right": false, 29 | "shorten_border_bottom": false, 30 | "shorten_border_left": false, 31 | "shorten_border_radius": false, 32 | 33 | "format": true, 34 | "format_font_family": true, 35 | "format_4095_rules_legacy_limit": false, 36 | 37 | "special_convert_rem": false, 38 | "special_convert_rem_browser_default_px": "16", 39 | "special_convert_rem_desired_html_px": "10", 40 | "special_convert_rem_font_size": true, 41 | 42 | "special_reduce_with_html" : false, 43 | "special_reduce_with_html_ignore_selectors" : [ 44 | "@-ms-", 45 | ":-ms-", 46 | "::", 47 | ":valid", 48 | ":invalid", 49 | "+.", 50 | ":-" 51 | ], 52 | 53 | "generate_report": true, 54 | "verbose": true, 55 | 56 | "bypass_media_rules": true, 57 | "bypass_document_rules": false, 58 | "bypass_supports_rules": false, 59 | "bypass_page_rules": false, 60 | "bypass_charset": false, 61 | 62 | "zero_units": "em, ex, %, px, cm, mm, in, pt, pc, ch, rem, vh, vw, vmin, vmax", 63 | "zero_ignore_declaration": [], 64 | 65 | "report_file_location": "purged_css_report_data.json", 66 | 67 | "reduce_declarations_file_location": "config_reduce_declarations.json" 68 | } 69 | } -------------------------------------------------------------------------------- /demo/css-purge-demo-app.js: -------------------------------------------------------------------------------- 1 | var cssPurge = require('css-purge'); 2 | 3 | //purging a CSS file with HTML and options 4 | cssPurge.purgeCSSFiles({ 5 | css: 'test1.css', 6 | html: 'html/test1.html', 7 | trim : true, 8 | shorten : true, 9 | verbose : true 10 | } 11 | ); 12 | 13 | //purging some CSS 14 | var css = "p { color: blue; color: blue; } "; 15 | cssPurge.purgeCSS(css, { 16 | trim : true, 17 | shorten : true, 18 | verbose : false 19 | }, function(error, result){ 20 | if (error) 21 | console.log(error) 22 | else 23 | console.log('Output CSS: ', result); 24 | }); -------------------------------------------------------------------------------- /demo/css_folder/file1.css: -------------------------------------------------------------------------------- 1 | 2 | /*file1 red*/ 3 | .file1 { 4 | color: red; 5 | } 6 | 7 | /*file1 green */ 8 | .file1 { 9 | color: green; 10 | } 11 | 12 | /*file1 blue */ 13 | .file1 { 14 | color: blue; 15 | } 16 | -------------------------------------------------------------------------------- /demo/css_folder/file2.css: -------------------------------------------------------------------------------- 1 | 2 | /*file2 red*/ 3 | .file2 { 4 | color: blue; 5 | background-color: blue; 6 | } 7 | 8 | /*file2 green */ 9 | .file2 { 10 | color: green; 11 | background-color: green; 12 | } 13 | 14 | /*file2 blue */ 15 | .file2 { 16 | color: red; 17 | background-color: red; 18 | } 19 | 20 | /*file2 last say red*/ 21 | .file1 { 22 | color: red; 23 | } -------------------------------------------------------------------------------- /demo/hacks/browser-specific-hacks.css: -------------------------------------------------------------------------------- 1 | /* https://css-tricks.com/snippets/css/browser-specific-hacks */ 2 | 3 | /* IE6 and below */ 4 | * html #uno { color: red } 5 | 6 | /* IE7 */ 7 | *:first-child+html #dos { color: red } 8 | 9 | /* IE7, FF, Saf, Opera */ 10 | html>body #tres { color: red } 11 | 12 | /* IE8, FF, Saf, Opera (Everything but IE 6,7) */ 13 | html>/**/body #cuatro { color: red } 14 | 15 | /* Opera 9.27 and below, safari 2 */ 16 | html:first-child #cinco { color: red } 17 | 18 | /* Safari 2-3 */ 19 | html[xmlns*=""] body:last-child #seis { color: red } 20 | 21 | /* safari 3+, chrome 1+, opera9+, ff 3.5+ */ 22 | body:nth-of-type(1) #siete { color: red } 23 | 24 | /* safari 3+, chrome 1+, opera9+, ff 3.5+ */ 25 | body:first-of-type #ocho { color: red } 26 | 27 | /* saf3+, chrome1+ */ 28 | @media screen and (-webkit-min-device-pixel-ratio:0) { 29 | #diez { color: red } 30 | } 31 | 32 | /* iPhone / mobile webkit */ 33 | @media screen and (max-device-width: 480px) { 34 | #veintiseis { color: red } 35 | } 36 | 37 | /* Safari 2 - 3.1 */ 38 | html[xmlns*=""]:root #trece { color: red } 39 | 40 | /* Safari 2 - 3.1, Opera 9.25 */ 41 | *|html[xmlns*=""] #catorce { color: red } 42 | 43 | /* Everything but IE6-8 */ 44 | :root *> #quince { color: red } 45 | 46 | /* IE7 */ 47 | *+html #dieciocho { color: red } 48 | 49 | /* Firefox only. 1+ */ 50 | #veinticuatro, x:-moz-any-link { color: red } 51 | 52 | /* Firefox 3.0+ */ 53 | #veinticinco, x:-moz-any-link, x:default { color: red } 54 | 55 | 56 | 57 | /***** Attribute Hacks ******/ 58 | 59 | /* IE6 */ 60 | #once { _color: blue } 61 | 62 | /* IE6, IE7 */ 63 | #doce { *color: blue; /* or #color: blue */ } 64 | 65 | /* Everything but IE6 */ 66 | #diecisiete { color/**/: blue } 67 | 68 | /* IE6, IE7, IE8 */ 69 | #diecinueve { color: blue\9; } 70 | 71 | /* IE7, IE8 */ 72 | #veinte { color/*\**/: blue\9; } 73 | 74 | /* IE6, IE7 -- acts as an !important */ 75 | #veintesiete { color: blue !ie; } /* string after ! can be anything */ -------------------------------------------------------------------------------- /demo/hacks/declarations.css: -------------------------------------------------------------------------------- 1 | /***** Declaration Hacks ******/ 2 | /* Ref: http://browserhacks.com */ 3 | /* 4 | Remember: to remove duplicate 5 | declarations, just add them to 6 | "declaration_names" in 7 | config_reduce_declarations.json 8 | 9 | e.g. "declaration_names" : [ 10 | "_color", 11 | "-color", 12 | "!color" 13 | ] 14 | 15 | Only works for hacks we 16 | process/optimize. 17 | */ 18 | 19 | 20 | /*Internet Explorer/Edge 6 */ 21 | .selector { 22 | _color: skyblue; 23 | _color: red; 24 | } 25 | .selector { 26 | -color: skyblue; 27 | -color: red; 28 | } 29 | 30 | /*Internet Explorer/Edge 6-8 */ 31 | .selector { color: skyblue\9; } 32 | .selector { color/*\**/: skyblue\9; } 33 | 34 | /*Acts as an !important; string after ! can be anything */ 35 | /*Internet Explorer/Edge ≤ 7 */ 36 | .selector { color: skyblue !ie; } 37 | 38 | 39 | 40 | 41 | /*Chrome ≤ 28 Safari ≤ 7 Opera ≥ 14 */ 42 | /*We dont currently process/optimize this type of hack */ 43 | .selector { (;color: skyblue;); } 44 | .selector { [;color: skyblue;]; } 45 | 46 | .selector { (;border: 1px solid white;); } 47 | .selector { [;border: 1px solid white;]; } 48 | 49 | .selector { 50 | (; 51 | font-weight: bold; 52 | font-family: arial, helvetica, sans-serif; 53 | font-size: 1.5em; 54 | ); 55 | } 56 | .selector { 57 | [; 58 | font-weight: bold; 59 | font-family: arial, helvetica, sans-serif; 60 | font-size: 1.5em; 61 | ]; 62 | } 63 | /*End - We dont currently process/optimize this type of hack */ 64 | 65 | 66 | 67 | 68 | 69 | /*Any combination of these characters: ! $ & * ( ) = % + @ , . / ` [ ] # ~ ? : < > | */ 70 | /*Internet Explorer/Edge ≤ 7 */ 71 | /*We dont currently process/optimize this type of hack */ 72 | .selector { !color: skyblue; } 73 | .selector { !color: skyblue; } 74 | .selector { $color: skyblue; } 75 | .selector { &color: skyblue; } 76 | .selector { *color: skyblue; } 77 | .selector { )color: skyblue; } 78 | .selector { =color: skyblue; } 79 | .selector { %color: skyblue; } 80 | .selector { +color: skyblue; } 81 | .selector { @color: skyblue; } 82 | .selector { ,color: skyblue; } 83 | .selector { .color: skyblue; } 84 | .selector { /color: skyblue; } 85 | // .selector { `color: skyblue; } 86 | .selector { ]color: skyblue; } 87 | .selector { #color: skyblue; } 88 | .selector { ~color: skyblue; } 89 | .selector { ?color: skyblue; } 90 | .selector { :color: skyblue; } 91 | .selector { |color: skyblue; } 92 | /*End - We dont currently process/optimize this type of hack */ 93 | 94 | -------------------------------------------------------------------------------- /demo/hacks/media_queries.css: -------------------------------------------------------------------------------- 1 | /***** Media Query Hacks ******/ 2 | /* Ref: http://browserhacks.com */ 3 | 4 | /*Internet Explorer/Edge ≥ 9 Safari 4 Android ≥ 2.3 */ 5 | @media screen and (min-width:0\0) { 6 | 7 | body { 8 | background-color: red; 9 | } 10 | } 11 | 12 | 13 | 14 | /*Chrome 22-28 Safari ≥ 7 */ 15 | @media \\0 screen { 16 | 17 | body { 18 | background-color: red; 19 | } 20 | } 21 | 22 | /*Chrome ≥ 29 Opera ≥ 16 */ 23 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { 24 | 25 | body { 26 | background-color: red; 27 | } 28 | } 29 | 30 | 31 | 32 | /*Firefox ≤ 3 */ 33 | @media \0 all { 34 | 35 | body { 36 | background-color: red; 37 | } 38 | } 39 | 40 | /*Firefox ≥ 3.6 */ 41 | @media screen and (-moz-images-in-menus:0) { 42 | 43 | body { 44 | background-color: red; 45 | } 46 | } 47 | 48 | /*Firefox ≥ 4 */ 49 | @media screen and (min--moz-device-pixel-ratio:0) { 50 | 51 | body { 52 | background-color: red; 53 | } 54 | } 55 | 56 | /*Firefox ≥ 8 */ 57 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) { 58 | 59 | body { 60 | background-color: red; 61 | } 62 | } 63 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) { 64 | 65 | body { 66 | background-color: red; 67 | } 68 | } 69 | 70 | /*Firefox ≥ 11 */ 71 | @media all and (min--moz-device-pixel-ratio:0) { 72 | @media (min-width: 0px) { 73 | body { 74 | background-color: red; 75 | } 76 | } 77 | } 78 | @media all and (-moz-images-in-menus:0) { 79 | @media (min-width: 0px) { 80 | body { 81 | background-color: red; 82 | } 83 | } 84 | } 85 | 86 | /*Firefox ≥ 29 */ 87 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) { 88 | body { 89 | background-color: red; 90 | } 91 | } 92 | 93 | 94 | 95 | /*Internet Explorer/Edge ≤ 7 */ 96 | @media screen\9 { 97 | 98 | body { 99 | background-color: red; 100 | } 101 | } 102 | 103 | /*Internet Explorer/Edge ≤ 8 */ 104 | @media \0screen\,screen\9 { 105 | 106 | body { 107 | background-color: red; 108 | } 109 | } 110 | 111 | /*Internet Explorer/Edge 8 */ 112 | @media \0screen { 113 | 114 | body { 115 | background-color: red; 116 | } 117 | } 118 | 119 | /*Internet Explorer/Edge ≥ 10 */ 120 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { 121 | 122 | body { 123 | background-color: red; 124 | } 125 | } 126 | 127 | /*Everything but Internet Explorer and Safari ≤6 */ 128 | /*Internet Explorer/Edge * Safari ≤ 6 */ 129 | @media screen { 130 | @media (min-width: 0px) { 131 | body { 132 | background-color: red; 133 | } 134 | } 135 | } 136 | 137 | 138 | 139 | /*Opera ≥ 12 */ 140 | @media (min-resolution: .001dpcm) { 141 | _:-o-prefocus, 142 | body { 143 | background-color: red; 144 | } 145 | } 146 | 147 | -------------------------------------------------------------------------------- /demo/hacks/miscellaneous.css: -------------------------------------------------------------------------------- 1 | /***** Miscellaneous Hacks ******/ 2 | /* Ref: http://browserhacks.com */ 3 | 4 | @-moz-document url-prefix() { 5 | 6 | body { 7 | background-color: red; 8 | } 9 | } -------------------------------------------------------------------------------- /demo/hacks/selectors.css: -------------------------------------------------------------------------------- 1 | /***** Selector Hacks ******/ 2 | /* Ref: http://browserhacks.com */ 3 | 4 | /* Android *, Chrome *, Safari *, Opera ≥ 14 */ 5 | .selector:not(*:root) { background-color: red; } 6 | 7 | 8 | 9 | 10 | /* Firefox 1.5/2 */ 11 | body:empty .selector { background-color: red; } 12 | 13 | /* Firefox ≥ 2 */ 14 | body:last-child .selector, x:-moz-any-link { background-color: red; } 15 | 16 | /* Firefox ≥ 3 */ 17 | body:last-child .selector, x:-moz-any-link, x:default { background-color: red; } 18 | 19 | /* Firefox ≥ 3.5 */ 20 | body:not(:-moz-handler-blocked) .selector { background-color: red; } 21 | 22 | /* Firefox ≥ 6 */ 23 | _::-moz-progress-bar, body:last-child .selector { background-color: red; } 24 | 25 | /* Firefox ≥ 21 */ 26 | _::-moz-range-track, body:last-child .selector { background-color: red; } 27 | 28 | /* Firefox * */ 29 | _:-moz-tree-row(hover), .selector { background-color: red; } 30 | 31 | /* Everything but Firefox and Internet Explorer ≤8 */ 32 | _::selection, .selector:not([attr*='']) { background-color: red; } 33 | 34 | 35 | 36 | 37 | /* Internet Explorer/Edge ≤ 6 */ 38 | * html .selector { background-color: red; } 39 | /* .unused-class can be any unused class */ 40 | .unused-class.selector { background-color: red; } 41 | 42 | /* Internet Explorer/Edge ≤ 7 */ 43 | .selector, { background-color: red; } 44 | 45 | /* Internet Explorer/Edge ≤ 7 */ 46 | .selector\ { background-color: red; } 47 | 48 | /* Everything but Internet Explorer 6 */ 49 | /* Internet Explorer/Edge 6 */ 50 | html > body .selector { background-color: red; } 51 | 52 | /* Internet Explorer/Edge 7 */ 53 | *:first-child+html .selector { background-color: red; } 54 | .selector, x:-IE7 { background-color: red; } 55 | *+html .selector { background-color: red; } 56 | body*.selector { background-color: red; } 57 | 58 | /* Everything but Internet Explorer ≤7 */ 59 | /* Internet Explorer/Edge ≤ 7 */ 60 | html > /**/ body .selector { background-color: red; } 61 | head ~ /**/ body .selector { background-color: red; } 62 | 63 | /* Everything but Internet Explorer ≤8 */ 64 | /* Internet Explorer/Edge ≤ 8 */ 65 | :root .selector { background-color: red; } 66 | body:last-child .selector { background-color: red; } 67 | body:nth-of-type(1) .selector { background-color: red; } 68 | body:first-of-type .selector { background-color: red; } 69 | .selector:not([attr*='']) { background-color: red; } 70 | 71 | /* Internet Explorer/Edge ≥ 10 */ 72 | _:-ms-input-placeholder, :root .selector { background-color: red; } 73 | 74 | /* Internet Explorer/Edge ≥ 11 */ 75 | _:-ms-fullscreen, :root .selector { background-color: red; } 76 | 77 | 78 | 79 | 80 | /* Opera ≤ 9.27, Safari 2 */ 81 | html:first-child .selector { background-color: red; } 82 | 83 | /* Opera ≥ 9.5 */ 84 | _:-o-prefocus, body:last-child .selector { background-color: red; } 85 | 86 | /* Opera ≤ 11 */ 87 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) { .test { background-color: red; } } 88 | 89 | /* Opera 9.25, Safari 2/3.1 */ 90 | *|html[xmlns*=""] .selector { background-color: red; } 91 | 92 | 93 | 94 | 95 | /* Safari 2-3 */ 96 | html[xmlns*=""] body:last-child .selector { background-color: red; } 97 | html[xmlns*=""]:root .selector { background-color: red; } 98 | 99 | /* Safari 5.1-6 */ 100 | _::-moz-svg-foreign-content, :root .selector { background-color: red; } 101 | 102 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /demo/hacks/supports.css: -------------------------------------------------------------------------------- 1 | /***** Supports Hacks ******/ 2 | /* Ref: http://browserhacks.com */ 3 | 4 | 5 | /*Chrome ≥ 28 Safari ≥ 9 Internet Explorer/Edge >= 12 Opera ≥ 14 */ 6 | @supports (-webkit-appearance:none) { 7 | body { 8 | background-color: red; 9 | } 10 | } 11 | 12 | 13 | /*Firefox ≥ 16 */ 14 | @supports (-moz-appearance:meterbar) { 15 | body { 16 | background-color: red; 17 | } 18 | } 19 | 20 | /*Firefox ≥ 22 */ 21 | @supports (-moz-appearance:meterbar) and (display:flex) { 22 | body { 23 | background-color: red; 24 | } 25 | } 26 | 27 | /*Firefox ≥ 24 */ 28 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) { 29 | body { 30 | background-color: red; 31 | } 32 | } 33 | 34 | /*Firefox ≥ 25 */ 35 | @supports (-moz-appearance:meterbar) and (background-attachment:local) { 36 | body { 37 | background-color: red; 38 | } 39 | } 40 | 41 | /*Firefox ≥ 26 */ 42 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) { 43 | body { 44 | background-color: red; 45 | } 46 | } 47 | 48 | /*Firefox ≥ 27 */ 49 | @supports (-moz-appearance:meterbar) and (all:initial) { 50 | body { 51 | background-color: red; 52 | } 53 | } 54 | 55 | /*Firefox ≥ 28 */ 56 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) { 57 | body { 58 | background-color: red; 59 | } 60 | } 61 | 62 | /*Firefox ≥ 30 */ 63 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) { 64 | body { 65 | background-color: red; 66 | } 67 | } 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /demo/html/README.md: -------------------------------------------------------------------------------- 1 | HTML Gotchas 2 | ----- 3 | 4 | Current breaking selectors found: 5 | 6 | @-ms- 7 | :-ms- 8 | :: 9 | :valid 10 | :invalid 11 | +. 12 | :- 13 | 14 | 15 | If you have a selector that does not work with the current version of CSS selector detection, then add it to the "special_reduce_with_html_ignore_selectors" option in config_css.json. 16 | 17 | The type of error message will be similar to the following: 18 | 19 | 20 | SyntaxError: Unknown pseudo-class selector ":invalid" -------------------------------------------------------------------------------- /demo/html/test1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CSS-Purge HTML Test 7 | 8 | 9 | 10 | 79 | 80 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 |

Hello

94 |

World!

95 | 96 |

Hello from the other side

97 | 98 |
test-1
99 | 100 |
test1
101 |
102 | 110 |
111 | 112 | 113 | 114 |
115 |
Hello
116 |
Goodbye
117 |
118 | 119 | 120 | -------------------------------------------------------------------------------- /demo/js/test1.js: -------------------------------------------------------------------------------- 1 | $(function(){ 2 | 3 | document.getElementById('test1').style.display = 'block'; 4 | var h1 = document.getElementsByTagName("h1"); 5 | h1[0].style.color = 'red'; 6 | 7 | $('#test1').hide(); 8 | $('.test-1').hide(); 9 | 10 | $('ul li.item.link-1').removeClass('active'); 11 | $('ul li.item.link-2').addClass('active'); 12 | 13 | console.log($('ul li.item.link-1').hasClass('active')); 14 | 15 | console.log($("p").css("background-color")); 16 | 17 | $("p").css({"background-color": "yellow", "font-size": "200%"}); 18 | 19 | console.log($("p").css("background-color")); 20 | 21 | $("button").click(function(){ 22 | 23 | h1[0].style.color = ''; 24 | 25 | $("p").css({"background-color": ""}); 26 | $("h1, h2, p").toggleClass("blue"); 27 | $("ul li").toggleClass("active"); 28 | }); 29 | 30 | $( ".hello" ).clone().appendTo( ".goodbye" ); 31 | }); 32 | -------------------------------------------------------------------------------- /demo/js/test2.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | ReactDOM.render( 4 |

Hello, world!

, 5 | document.getElementById('root') 6 | ); 7 | 8 | 9 | function formatName(user) { 10 | return user.firstName + ' ' + user.lastName; 11 | } 12 | 13 | const user = { 14 | firstName: 'Harper', 15 | lastName: 'Perez' 16 | }; 17 | 18 | const element = ( 19 |

20 | Hello, {formatName(user)}! 21 |

22 | ); 23 | 24 | ReactDOM.render( 25 | element, 26 | document.getElementById('root') 27 | ); -------------------------------------------------------------------------------- /demo/libs/960.css: -------------------------------------------------------------------------------- 1 | /* 2 | 960 Grid System ~ Core CSS. 3 | Learn more ~ http://960.gs/ 4 | 5 | Licensed under GPL and MIT. 6 | */ 7 | 8 | /* 9 | Forces backgrounds to span full width, 10 | even if there is horizontal scrolling. 11 | Increase this if your layout is wider. 12 | 13 | Note: IE6 works fine without this fix. 14 | */ 15 | 16 | body { 17 | min-width: 960px; 18 | } 19 | 20 | /* `Container 21 | ----------------------------------------------------------------------------------------------------*/ 22 | 23 | .container_12, 24 | .container_16 { 25 | margin-left: auto; 26 | margin-right: auto; 27 | width: 960px; 28 | } 29 | 30 | /* `Grid >> Global 31 | ----------------------------------------------------------------------------------------------------*/ 32 | 33 | .grid_1, 34 | .grid_2, 35 | .grid_3, 36 | .grid_4, 37 | .grid_5, 38 | .grid_6, 39 | .grid_7, 40 | .grid_8, 41 | .grid_9, 42 | .grid_10, 43 | .grid_11, 44 | .grid_12, 45 | .grid_13, 46 | .grid_14, 47 | .grid_15, 48 | .grid_16 { 49 | display: inline; 50 | float: left; 51 | margin-left: 10px; 52 | margin-right: 10px; 53 | } 54 | 55 | .push_1, .pull_1, 56 | .push_2, .pull_2, 57 | .push_3, .pull_3, 58 | .push_4, .pull_4, 59 | .push_5, .pull_5, 60 | .push_6, .pull_6, 61 | .push_7, .pull_7, 62 | .push_8, .pull_8, 63 | .push_9, .pull_9, 64 | .push_10, .pull_10, 65 | .push_11, .pull_11, 66 | .push_12, .pull_12, 67 | .push_13, .pull_13, 68 | .push_14, .pull_14, 69 | .push_15, .pull_15 { 70 | position: relative; 71 | } 72 | 73 | .container_12 .grid_3, 74 | .container_16 .grid_4 { 75 | width: 220px; 76 | } 77 | 78 | .container_12 .grid_6, 79 | .container_16 .grid_8 { 80 | width: 460px; 81 | } 82 | 83 | .container_12 .grid_9, 84 | .container_16 .grid_12 { 85 | width: 700px; 86 | } 87 | 88 | .container_12 .grid_12, 89 | .container_16 .grid_16 { 90 | width: 940px; 91 | } 92 | 93 | /* `Grid >> Children (Alpha ~ First, Omega ~ Last) 94 | ----------------------------------------------------------------------------------------------------*/ 95 | 96 | .alpha { 97 | margin-left: 0; 98 | } 99 | 100 | .omega { 101 | margin-right: 0; 102 | } 103 | 104 | /* `Grid >> 12 Columns 105 | ----------------------------------------------------------------------------------------------------*/ 106 | 107 | .container_12 .grid_1 { 108 | width: 60px; 109 | } 110 | 111 | .container_12 .grid_2 { 112 | width: 140px; 113 | } 114 | 115 | .container_12 .grid_4 { 116 | width: 300px; 117 | } 118 | 119 | .container_12 .grid_5 { 120 | width: 380px; 121 | } 122 | 123 | .container_12 .grid_7 { 124 | width: 540px; 125 | } 126 | 127 | .container_12 .grid_8 { 128 | width: 620px; 129 | } 130 | 131 | .container_12 .grid_10 { 132 | width: 780px; 133 | } 134 | 135 | .container_12 .grid_11 { 136 | width: 860px; 137 | } 138 | 139 | /* `Grid >> 16 Columns 140 | ----------------------------------------------------------------------------------------------------*/ 141 | 142 | .container_16 .grid_1 { 143 | width: 40px; 144 | } 145 | 146 | .container_16 .grid_2 { 147 | width: 100px; 148 | } 149 | 150 | .container_16 .grid_3 { 151 | width: 160px; 152 | } 153 | 154 | .container_16 .grid_5 { 155 | width: 280px; 156 | } 157 | 158 | .container_16 .grid_6 { 159 | width: 340px; 160 | } 161 | 162 | .container_16 .grid_7 { 163 | width: 400px; 164 | } 165 | 166 | .container_16 .grid_9 { 167 | width: 520px; 168 | } 169 | 170 | .container_16 .grid_10 { 171 | width: 580px; 172 | } 173 | 174 | .container_16 .grid_11 { 175 | width: 640px; 176 | } 177 | 178 | .container_16 .grid_13 { 179 | width: 760px; 180 | } 181 | 182 | .container_16 .grid_14 { 183 | width: 820px; 184 | } 185 | 186 | .container_16 .grid_15 { 187 | width: 880px; 188 | } 189 | 190 | /* `Prefix Extra Space >> Global 191 | ----------------------------------------------------------------------------------------------------*/ 192 | 193 | .container_12 .prefix_3, 194 | .container_16 .prefix_4 { 195 | padding-left: 240px; 196 | } 197 | 198 | .container_12 .prefix_6, 199 | .container_16 .prefix_8 { 200 | padding-left: 480px; 201 | } 202 | 203 | .container_12 .prefix_9, 204 | .container_16 .prefix_12 { 205 | padding-left: 720px; 206 | } 207 | 208 | /* `Prefix Extra Space >> 12 Columns 209 | ----------------------------------------------------------------------------------------------------*/ 210 | 211 | .container_12 .prefix_1 { 212 | padding-left: 80px; 213 | } 214 | 215 | .container_12 .prefix_2 { 216 | padding-left: 160px; 217 | } 218 | 219 | .container_12 .prefix_4 { 220 | padding-left: 320px; 221 | } 222 | 223 | .container_12 .prefix_5 { 224 | padding-left: 400px; 225 | } 226 | 227 | .container_12 .prefix_7 { 228 | padding-left: 560px; 229 | } 230 | 231 | .container_12 .prefix_8 { 232 | padding-left: 640px; 233 | } 234 | 235 | .container_12 .prefix_10 { 236 | padding-left: 800px; 237 | } 238 | 239 | .container_12 .prefix_11 { 240 | padding-left: 880px; 241 | } 242 | 243 | /* `Prefix Extra Space >> 16 Columns 244 | ----------------------------------------------------------------------------------------------------*/ 245 | 246 | .container_16 .prefix_1 { 247 | padding-left: 60px; 248 | } 249 | 250 | .container_16 .prefix_2 { 251 | padding-left: 120px; 252 | } 253 | 254 | .container_16 .prefix_3 { 255 | padding-left: 180px; 256 | } 257 | 258 | .container_16 .prefix_5 { 259 | padding-left: 300px; 260 | } 261 | 262 | .container_16 .prefix_6 { 263 | padding-left: 360px; 264 | } 265 | 266 | .container_16 .prefix_7 { 267 | padding-left: 420px; 268 | } 269 | 270 | .container_16 .prefix_9 { 271 | padding-left: 540px; 272 | } 273 | 274 | .container_16 .prefix_10 { 275 | padding-left: 600px; 276 | } 277 | 278 | .container_16 .prefix_11 { 279 | padding-left: 660px; 280 | } 281 | 282 | .container_16 .prefix_13 { 283 | padding-left: 780px; 284 | } 285 | 286 | .container_16 .prefix_14 { 287 | padding-left: 840px; 288 | } 289 | 290 | .container_16 .prefix_15 { 291 | padding-left: 900px; 292 | } 293 | 294 | /* `Suffix Extra Space >> Global 295 | ----------------------------------------------------------------------------------------------------*/ 296 | 297 | .container_12 .suffix_3, 298 | .container_16 .suffix_4 { 299 | padding-right: 240px; 300 | } 301 | 302 | .container_12 .suffix_6, 303 | .container_16 .suffix_8 { 304 | padding-right: 480px; 305 | } 306 | 307 | .container_12 .suffix_9, 308 | .container_16 .suffix_12 { 309 | padding-right: 720px; 310 | } 311 | 312 | /* `Suffix Extra Space >> 12 Columns 313 | ----------------------------------------------------------------------------------------------------*/ 314 | 315 | .container_12 .suffix_1 { 316 | padding-right: 80px; 317 | } 318 | 319 | .container_12 .suffix_2 { 320 | padding-right: 160px; 321 | } 322 | 323 | .container_12 .suffix_4 { 324 | padding-right: 320px; 325 | } 326 | 327 | .container_12 .suffix_5 { 328 | padding-right: 400px; 329 | } 330 | 331 | .container_12 .suffix_7 { 332 | padding-right: 560px; 333 | } 334 | 335 | .container_12 .suffix_8 { 336 | padding-right: 640px; 337 | } 338 | 339 | .container_12 .suffix_10 { 340 | padding-right: 800px; 341 | } 342 | 343 | .container_12 .suffix_11 { 344 | padding-right: 880px; 345 | } 346 | 347 | /* `Suffix Extra Space >> 16 Columns 348 | ----------------------------------------------------------------------------------------------------*/ 349 | 350 | .container_16 .suffix_1 { 351 | padding-right: 60px; 352 | } 353 | 354 | .container_16 .suffix_2 { 355 | padding-right: 120px; 356 | } 357 | 358 | .container_16 .suffix_3 { 359 | padding-right: 180px; 360 | } 361 | 362 | .container_16 .suffix_5 { 363 | padding-right: 300px; 364 | } 365 | 366 | .container_16 .suffix_6 { 367 | padding-right: 360px; 368 | } 369 | 370 | .container_16 .suffix_7 { 371 | padding-right: 420px; 372 | } 373 | 374 | .container_16 .suffix_9 { 375 | padding-right: 540px; 376 | } 377 | 378 | .container_16 .suffix_10 { 379 | padding-right: 600px; 380 | } 381 | 382 | .container_16 .suffix_11 { 383 | padding-right: 660px; 384 | } 385 | 386 | .container_16 .suffix_13 { 387 | padding-right: 780px; 388 | } 389 | 390 | .container_16 .suffix_14 { 391 | padding-right: 840px; 392 | } 393 | 394 | .container_16 .suffix_15 { 395 | padding-right: 900px; 396 | } 397 | 398 | /* `Push Space >> Global 399 | ----------------------------------------------------------------------------------------------------*/ 400 | 401 | .container_12 .push_3, 402 | .container_16 .push_4 { 403 | left: 240px; 404 | } 405 | 406 | .container_12 .push_6, 407 | .container_16 .push_8 { 408 | left: 480px; 409 | } 410 | 411 | .container_12 .push_9, 412 | .container_16 .push_12 { 413 | left: 720px; 414 | } 415 | 416 | /* `Push Space >> 12 Columns 417 | ----------------------------------------------------------------------------------------------------*/ 418 | 419 | .container_12 .push_1 { 420 | left: 80px; 421 | } 422 | 423 | .container_12 .push_2 { 424 | left: 160px; 425 | } 426 | 427 | .container_12 .push_4 { 428 | left: 320px; 429 | } 430 | 431 | .container_12 .push_5 { 432 | left: 400px; 433 | } 434 | 435 | .container_12 .push_7 { 436 | left: 560px; 437 | } 438 | 439 | .container_12 .push_8 { 440 | left: 640px; 441 | } 442 | 443 | .container_12 .push_10 { 444 | left: 800px; 445 | } 446 | 447 | .container_12 .push_11 { 448 | left: 880px; 449 | } 450 | 451 | /* `Push Space >> 16 Columns 452 | ----------------------------------------------------------------------------------------------------*/ 453 | 454 | .container_16 .push_1 { 455 | left: 60px; 456 | } 457 | 458 | .container_16 .push_2 { 459 | left: 120px; 460 | } 461 | 462 | .container_16 .push_3 { 463 | left: 180px; 464 | } 465 | 466 | .container_16 .push_5 { 467 | left: 300px; 468 | } 469 | 470 | .container_16 .push_6 { 471 | left: 360px; 472 | } 473 | 474 | .container_16 .push_7 { 475 | left: 420px; 476 | } 477 | 478 | .container_16 .push_9 { 479 | left: 540px; 480 | } 481 | 482 | .container_16 .push_10 { 483 | left: 600px; 484 | } 485 | 486 | .container_16 .push_11 { 487 | left: 660px; 488 | } 489 | 490 | .container_16 .push_13 { 491 | left: 780px; 492 | } 493 | 494 | .container_16 .push_14 { 495 | left: 840px; 496 | } 497 | 498 | .container_16 .push_15 { 499 | left: 900px; 500 | } 501 | 502 | /* `Pull Space >> Global 503 | ----------------------------------------------------------------------------------------------------*/ 504 | 505 | .container_12 .pull_3, 506 | .container_16 .pull_4 { 507 | left: -240px; 508 | } 509 | 510 | .container_12 .pull_6, 511 | .container_16 .pull_8 { 512 | left: -480px; 513 | } 514 | 515 | .container_12 .pull_9, 516 | .container_16 .pull_12 { 517 | left: -720px; 518 | } 519 | 520 | /* `Pull Space >> 12 Columns 521 | ----------------------------------------------------------------------------------------------------*/ 522 | 523 | .container_12 .pull_1 { 524 | left: -80px; 525 | } 526 | 527 | .container_12 .pull_2 { 528 | left: -160px; 529 | } 530 | 531 | .container_12 .pull_4 { 532 | left: -320px; 533 | } 534 | 535 | .container_12 .pull_5 { 536 | left: -400px; 537 | } 538 | 539 | .container_12 .pull_7 { 540 | left: -560px; 541 | } 542 | 543 | .container_12 .pull_8 { 544 | left: -640px; 545 | } 546 | 547 | .container_12 .pull_10 { 548 | left: -800px; 549 | } 550 | 551 | .container_12 .pull_11 { 552 | left: -880px; 553 | } 554 | 555 | /* `Pull Space >> 16 Columns 556 | ----------------------------------------------------------------------------------------------------*/ 557 | 558 | .container_16 .pull_1 { 559 | left: -60px; 560 | } 561 | 562 | .container_16 .pull_2 { 563 | left: -120px; 564 | } 565 | 566 | .container_16 .pull_3 { 567 | left: -180px; 568 | } 569 | 570 | .container_16 .pull_5 { 571 | left: -300px; 572 | } 573 | 574 | .container_16 .pull_6 { 575 | left: -360px; 576 | } 577 | 578 | .container_16 .pull_7 { 579 | left: -420px; 580 | } 581 | 582 | .container_16 .pull_9 { 583 | left: -540px; 584 | } 585 | 586 | .container_16 .pull_10 { 587 | left: -600px; 588 | } 589 | 590 | .container_16 .pull_11 { 591 | left: -660px; 592 | } 593 | 594 | .container_16 .pull_13 { 595 | left: -780px; 596 | } 597 | 598 | .container_16 .pull_14 { 599 | left: -840px; 600 | } 601 | 602 | .container_16 .pull_15 { 603 | left: -900px; 604 | } 605 | 606 | /* `Clear Floated Elements 607 | ----------------------------------------------------------------------------------------------------*/ 608 | 609 | /* http://sonspring.com/journal/clearing-floats */ 610 | 611 | .clear { 612 | clear: both; 613 | display: block; 614 | overflow: hidden; 615 | visibility: hidden; 616 | width: 0; 617 | height: 0; 618 | } 619 | 620 | /* http://www.yuiblog.com/blog/2010/09/27/clearfix-reloaded-overflowhidden-demystified */ 621 | 622 | .clearfix:before, 623 | .clearfix:after, 624 | .container_12:before, 625 | .container_12:after, 626 | .container_16:before, 627 | .container_16:after { 628 | content: '.'; 629 | display: block; 630 | overflow: hidden; 631 | visibility: hidden; 632 | font-size: 0; 633 | line-height: 0; 634 | width: 0; 635 | height: 0; 636 | } 637 | 638 | .clearfix:after, 639 | .container_12:after, 640 | .container_16:after { 641 | clear: both; 642 | } 643 | 644 | /* 645 | The following zoom:1 rule is specifically for IE6 + IE7. 646 | Move to separate stylesheet if invalid CSS is a problem. 647 | */ 648 | 649 | .clearfix, 650 | .container_12, 651 | .container_16 { 652 | zoom: 1; 653 | } -------------------------------------------------------------------------------- /demo/libs/animate.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /*! 4 | * animate.css -http://daneden.me/animate 5 | * Version - 3.5.2 6 | * Licensed under the MIT license - http://opensource.org/licenses/MIT 7 | * 8 | * Copyright (c) 2017 Daniel Eden 9 | */ 10 | 11 | .animated { 12 | animation-duration: 1s; 13 | animation-fill-mode: both; 14 | } 15 | 16 | .animated.infinite { 17 | animation-iteration-count: infinite; 18 | } 19 | 20 | .animated.hinge { 21 | animation-duration: 2s; 22 | } 23 | 24 | .animated.flipOutX, 25 | .animated.flipOutY, 26 | .animated.bounceIn, 27 | .animated.bounceOut { 28 | animation-duration: .75s; 29 | } 30 | 31 | @keyframes bounce { 32 | from, 20%, 53%, 80%, to { 33 | animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 34 | transform: translate3d(0,0,0); 35 | } 36 | 37 | 40%, 43% { 38 | animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); 39 | transform: translate3d(0, -30px, 0); 40 | } 41 | 42 | 70% { 43 | animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); 44 | transform: translate3d(0, -15px, 0); 45 | } 46 | 47 | 90% { 48 | transform: translate3d(0,-4px,0); 49 | } 50 | } 51 | 52 | .bounce { 53 | animation-name: bounce; 54 | transform-origin: center bottom; 55 | } 56 | 57 | @keyframes flash { 58 | from, 50%, to { 59 | opacity: 1; 60 | } 61 | 62 | 25%, 75% { 63 | opacity: 0; 64 | } 65 | } 66 | 67 | .flash { 68 | animation-name: flash; 69 | } 70 | 71 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 72 | 73 | @keyframes pulse { 74 | from { 75 | transform: scale3d(1, 1, 1); 76 | } 77 | 78 | 50% { 79 | transform: scale3d(1.05, 1.05, 1.05); 80 | } 81 | 82 | to { 83 | transform: scale3d(1, 1, 1); 84 | } 85 | } 86 | 87 | .pulse { 88 | animation-name: pulse; 89 | } 90 | 91 | @keyframes rubberBand { 92 | from { 93 | transform: scale3d(1, 1, 1); 94 | } 95 | 96 | 30% { 97 | transform: scale3d(1.25, 0.75, 1); 98 | } 99 | 100 | 40% { 101 | transform: scale3d(0.75, 1.25, 1); 102 | } 103 | 104 | 50% { 105 | transform: scale3d(1.15, 0.85, 1); 106 | } 107 | 108 | 65% { 109 | transform: scale3d(.95, 1.05, 1); 110 | } 111 | 112 | 75% { 113 | transform: scale3d(1.05, .95, 1); 114 | } 115 | 116 | to { 117 | transform: scale3d(1, 1, 1); 118 | } 119 | } 120 | 121 | .rubberBand { 122 | animation-name: rubberBand; 123 | } 124 | 125 | @keyframes shake { 126 | from, to { 127 | transform: translate3d(0, 0, 0); 128 | } 129 | 130 | 10%, 30%, 50%, 70%, 90% { 131 | transform: translate3d(-10px, 0, 0); 132 | } 133 | 134 | 20%, 40%, 60%, 80% { 135 | transform: translate3d(10px, 0, 0); 136 | } 137 | } 138 | 139 | .shake { 140 | animation-name: shake; 141 | } 142 | 143 | @keyframes headShake { 144 | 0% { 145 | transform: translateX(0); 146 | } 147 | 148 | 6.5% { 149 | transform: translateX(-6px) rotateY(-9deg); 150 | } 151 | 152 | 18.5% { 153 | transform: translateX(5px) rotateY(7deg); 154 | } 155 | 156 | 31.5% { 157 | transform: translateX(-3px) rotateY(-5deg); 158 | } 159 | 160 | 43.5% { 161 | transform: translateX(2px) rotateY(3deg); 162 | } 163 | 164 | 50% { 165 | transform: translateX(0); 166 | } 167 | } 168 | 169 | .headShake { 170 | animation-timing-function: ease-in-out; 171 | animation-name: headShake; 172 | } 173 | 174 | @keyframes swing { 175 | 20% { 176 | transform: rotate3d(0, 0, 1, 15deg); 177 | } 178 | 179 | 40% { 180 | transform: rotate3d(0, 0, 1, -10deg); 181 | } 182 | 183 | 60% { 184 | transform: rotate3d(0, 0, 1, 5deg); 185 | } 186 | 187 | 80% { 188 | transform: rotate3d(0, 0, 1, -5deg); 189 | } 190 | 191 | to { 192 | transform: rotate3d(0, 0, 1, 0deg); 193 | } 194 | } 195 | 196 | .swing { 197 | transform-origin: top center; 198 | animation-name: swing; 199 | } 200 | 201 | @keyframes tada { 202 | from { 203 | transform: scale3d(1, 1, 1); 204 | } 205 | 206 | 10%, 20% { 207 | transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); 208 | } 209 | 210 | 30%, 50%, 70%, 90% { 211 | transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); 212 | } 213 | 214 | 40%, 60%, 80% { 215 | transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); 216 | } 217 | 218 | to { 219 | transform: scale3d(1, 1, 1); 220 | } 221 | } 222 | 223 | .tada { 224 | animation-name: tada; 225 | } 226 | 227 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 228 | 229 | @keyframes wobble { 230 | from { 231 | transform: none; 232 | } 233 | 234 | 15% { 235 | transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); 236 | } 237 | 238 | 30% { 239 | transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); 240 | } 241 | 242 | 45% { 243 | transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); 244 | } 245 | 246 | 60% { 247 | transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); 248 | } 249 | 250 | 75% { 251 | transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); 252 | } 253 | 254 | to { 255 | transform: none; 256 | } 257 | } 258 | 259 | .wobble { 260 | animation-name: wobble; 261 | } 262 | 263 | @keyframes jello { 264 | from, 11.1%, to { 265 | transform: none; 266 | } 267 | 268 | 22.2% { 269 | transform: skewX(-12.5deg) skewY(-12.5deg); 270 | } 271 | 272 | 33.3% { 273 | transform: skewX(6.25deg) skewY(6.25deg); 274 | } 275 | 276 | 44.4% { 277 | transform: skewX(-3.125deg) skewY(-3.125deg); 278 | } 279 | 280 | 55.5% { 281 | transform: skewX(1.5625deg) skewY(1.5625deg); 282 | } 283 | 284 | 66.6% { 285 | transform: skewX(-0.78125deg) skewY(-0.78125deg); 286 | } 287 | 288 | 77.7% { 289 | transform: skewX(0.390625deg) skewY(0.390625deg); 290 | } 291 | 292 | 88.8% { 293 | transform: skewX(-0.1953125deg) skewY(-0.1953125deg); 294 | } 295 | } 296 | 297 | .jello { 298 | animation-name: jello; 299 | transform-origin: center; 300 | } 301 | 302 | @keyframes bounceIn { 303 | from, 20%, 40%, 60%, 80%, to { 304 | animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 305 | } 306 | 307 | 0% { 308 | opacity: 0; 309 | transform: scale3d(.3, .3, .3); 310 | } 311 | 312 | 20% { 313 | transform: scale3d(1.1, 1.1, 1.1); 314 | } 315 | 316 | 40% { 317 | transform: scale3d(.9, .9, .9); 318 | } 319 | 320 | 60% { 321 | opacity: 1; 322 | transform: scale3d(1.03, 1.03, 1.03); 323 | } 324 | 325 | 80% { 326 | transform: scale3d(.97, .97, .97); 327 | } 328 | 329 | to { 330 | opacity: 1; 331 | transform: scale3d(1, 1, 1); 332 | } 333 | } 334 | 335 | .bounceIn { 336 | animation-name: bounceIn; 337 | } 338 | 339 | @keyframes bounceInDown { 340 | from, 60%, 75%, 90%, to { 341 | animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 342 | } 343 | 344 | 0% { 345 | opacity: 0; 346 | transform: translate3d(0, -3000px, 0); 347 | } 348 | 349 | 60% { 350 | opacity: 1; 351 | transform: translate3d(0, 25px, 0); 352 | } 353 | 354 | 75% { 355 | transform: translate3d(0, -10px, 0); 356 | } 357 | 358 | 90% { 359 | transform: translate3d(0, 5px, 0); 360 | } 361 | 362 | to { 363 | transform: none; 364 | } 365 | } 366 | 367 | .bounceInDown { 368 | animation-name: bounceInDown; 369 | } 370 | 371 | @keyframes bounceInLeft { 372 | from, 60%, 75%, 90%, to { 373 | animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 374 | } 375 | 376 | 0% { 377 | opacity: 0; 378 | transform: translate3d(-3000px, 0, 0); 379 | } 380 | 381 | 60% { 382 | opacity: 1; 383 | transform: translate3d(25px, 0, 0); 384 | } 385 | 386 | 75% { 387 | transform: translate3d(-10px, 0, 0); 388 | } 389 | 390 | 90% { 391 | transform: translate3d(5px, 0, 0); 392 | } 393 | 394 | to { 395 | transform: none; 396 | } 397 | } 398 | 399 | .bounceInLeft { 400 | animation-name: bounceInLeft; 401 | } 402 | 403 | @keyframes bounceInRight { 404 | from, 60%, 75%, 90%, to { 405 | animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 406 | } 407 | 408 | from { 409 | opacity: 0; 410 | transform: translate3d(3000px, 0, 0); 411 | } 412 | 413 | 60% { 414 | opacity: 1; 415 | transform: translate3d(-25px, 0, 0); 416 | } 417 | 418 | 75% { 419 | transform: translate3d(10px, 0, 0); 420 | } 421 | 422 | 90% { 423 | transform: translate3d(-5px, 0, 0); 424 | } 425 | 426 | to { 427 | transform: none; 428 | } 429 | } 430 | 431 | .bounceInRight { 432 | animation-name: bounceInRight; 433 | } 434 | 435 | @keyframes bounceInUp { 436 | from, 60%, 75%, 90%, to { 437 | animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 438 | } 439 | 440 | from { 441 | opacity: 0; 442 | transform: translate3d(0, 3000px, 0); 443 | } 444 | 445 | 60% { 446 | opacity: 1; 447 | transform: translate3d(0, -20px, 0); 448 | } 449 | 450 | 75% { 451 | transform: translate3d(0, 10px, 0); 452 | } 453 | 454 | 90% { 455 | transform: translate3d(0, -5px, 0); 456 | } 457 | 458 | to { 459 | transform: translate3d(0, 0, 0); 460 | } 461 | } 462 | 463 | .bounceInUp { 464 | animation-name: bounceInUp; 465 | } 466 | 467 | @keyframes bounceOut { 468 | 20% { 469 | transform: scale3d(.9, .9, .9); 470 | } 471 | 472 | 50%, 55% { 473 | opacity: 1; 474 | transform: scale3d(1.1, 1.1, 1.1); 475 | } 476 | 477 | to { 478 | opacity: 0; 479 | transform: scale3d(.3, .3, .3); 480 | } 481 | } 482 | 483 | .bounceOut { 484 | animation-name: bounceOut; 485 | } 486 | 487 | @keyframes bounceOutDown { 488 | 20% { 489 | transform: translate3d(0, 10px, 0); 490 | } 491 | 492 | 40%, 45% { 493 | opacity: 1; 494 | transform: translate3d(0, -20px, 0); 495 | } 496 | 497 | to { 498 | opacity: 0; 499 | transform: translate3d(0, 2000px, 0); 500 | } 501 | } 502 | 503 | .bounceOutDown { 504 | animation-name: bounceOutDown; 505 | } 506 | 507 | @keyframes bounceOutLeft { 508 | 20% { 509 | opacity: 1; 510 | transform: translate3d(20px, 0, 0); 511 | } 512 | 513 | to { 514 | opacity: 0; 515 | transform: translate3d(-2000px, 0, 0); 516 | } 517 | } 518 | 519 | .bounceOutLeft { 520 | animation-name: bounceOutLeft; 521 | } 522 | 523 | @keyframes bounceOutRight { 524 | 20% { 525 | opacity: 1; 526 | transform: translate3d(-20px, 0, 0); 527 | } 528 | 529 | to { 530 | opacity: 0; 531 | transform: translate3d(2000px, 0, 0); 532 | } 533 | } 534 | 535 | .bounceOutRight { 536 | animation-name: bounceOutRight; 537 | } 538 | 539 | @keyframes bounceOutUp { 540 | 20% { 541 | transform: translate3d(0, -10px, 0); 542 | } 543 | 544 | 40%, 45% { 545 | opacity: 1; 546 | transform: translate3d(0, 20px, 0); 547 | } 548 | 549 | to { 550 | opacity: 0; 551 | transform: translate3d(0, -2000px, 0); 552 | } 553 | } 554 | 555 | .bounceOutUp { 556 | animation-name: bounceOutUp; 557 | } 558 | 559 | @keyframes fadeIn { 560 | from { 561 | opacity: 0; 562 | } 563 | 564 | to { 565 | opacity: 1; 566 | } 567 | } 568 | 569 | .fadeIn { 570 | animation-name: fadeIn; 571 | } 572 | 573 | @keyframes fadeInDown { 574 | from { 575 | opacity: 0; 576 | transform: translate3d(0, -100%, 0); 577 | } 578 | 579 | to { 580 | opacity: 1; 581 | transform: none; 582 | } 583 | } 584 | 585 | .fadeInDown { 586 | animation-name: fadeInDown; 587 | } 588 | 589 | @keyframes fadeInDownBig { 590 | from { 591 | opacity: 0; 592 | transform: translate3d(0, -2000px, 0); 593 | } 594 | 595 | to { 596 | opacity: 1; 597 | transform: none; 598 | } 599 | } 600 | 601 | .fadeInDownBig { 602 | animation-name: fadeInDownBig; 603 | } 604 | 605 | @keyframes fadeInLeft { 606 | from { 607 | opacity: 0; 608 | transform: translate3d(-100%, 0, 0); 609 | } 610 | 611 | to { 612 | opacity: 1; 613 | transform: none; 614 | } 615 | } 616 | 617 | .fadeInLeft { 618 | animation-name: fadeInLeft; 619 | } 620 | 621 | @keyframes fadeInLeftBig { 622 | from { 623 | opacity: 0; 624 | transform: translate3d(-2000px, 0, 0); 625 | } 626 | 627 | to { 628 | opacity: 1; 629 | transform: none; 630 | } 631 | } 632 | 633 | .fadeInLeftBig { 634 | animation-name: fadeInLeftBig; 635 | } 636 | 637 | @keyframes fadeInRight { 638 | from { 639 | opacity: 0; 640 | transform: translate3d(100%, 0, 0); 641 | } 642 | 643 | to { 644 | opacity: 1; 645 | transform: none; 646 | } 647 | } 648 | 649 | .fadeInRight { 650 | animation-name: fadeInRight; 651 | } 652 | 653 | @keyframes fadeInRightBig { 654 | from { 655 | opacity: 0; 656 | transform: translate3d(2000px, 0, 0); 657 | } 658 | 659 | to { 660 | opacity: 1; 661 | transform: none; 662 | } 663 | } 664 | 665 | .fadeInRightBig { 666 | animation-name: fadeInRightBig; 667 | } 668 | 669 | @keyframes fadeInUp { 670 | from { 671 | opacity: 0; 672 | transform: translate3d(0, 100%, 0); 673 | } 674 | 675 | to { 676 | opacity: 1; 677 | transform: none; 678 | } 679 | } 680 | 681 | .fadeInUp { 682 | animation-name: fadeInUp; 683 | } 684 | 685 | @keyframes fadeInUpBig { 686 | from { 687 | opacity: 0; 688 | transform: translate3d(0, 2000px, 0); 689 | } 690 | 691 | to { 692 | opacity: 1; 693 | transform: none; 694 | } 695 | } 696 | 697 | .fadeInUpBig { 698 | animation-name: fadeInUpBig; 699 | } 700 | 701 | @keyframes fadeOut { 702 | from { 703 | opacity: 1; 704 | } 705 | 706 | to { 707 | opacity: 0; 708 | } 709 | } 710 | 711 | .fadeOut { 712 | animation-name: fadeOut; 713 | } 714 | 715 | @keyframes fadeOutDown { 716 | from { 717 | opacity: 1; 718 | } 719 | 720 | to { 721 | opacity: 0; 722 | transform: translate3d(0, 100%, 0); 723 | } 724 | } 725 | 726 | .fadeOutDown { 727 | animation-name: fadeOutDown; 728 | } 729 | 730 | @keyframes fadeOutDownBig { 731 | from { 732 | opacity: 1; 733 | } 734 | 735 | to { 736 | opacity: 0; 737 | transform: translate3d(0, 2000px, 0); 738 | } 739 | } 740 | 741 | .fadeOutDownBig { 742 | animation-name: fadeOutDownBig; 743 | } 744 | 745 | @keyframes fadeOutLeft { 746 | from { 747 | opacity: 1; 748 | } 749 | 750 | to { 751 | opacity: 0; 752 | transform: translate3d(-100%, 0, 0); 753 | } 754 | } 755 | 756 | .fadeOutLeft { 757 | animation-name: fadeOutLeft; 758 | } 759 | 760 | @keyframes fadeOutLeftBig { 761 | from { 762 | opacity: 1; 763 | } 764 | 765 | to { 766 | opacity: 0; 767 | transform: translate3d(-2000px, 0, 0); 768 | } 769 | } 770 | 771 | .fadeOutLeftBig { 772 | animation-name: fadeOutLeftBig; 773 | } 774 | 775 | @keyframes fadeOutRight { 776 | from { 777 | opacity: 1; 778 | } 779 | 780 | to { 781 | opacity: 0; 782 | transform: translate3d(100%, 0, 0); 783 | } 784 | } 785 | 786 | .fadeOutRight { 787 | animation-name: fadeOutRight; 788 | } 789 | 790 | @keyframes fadeOutRightBig { 791 | from { 792 | opacity: 1; 793 | } 794 | 795 | to { 796 | opacity: 0; 797 | transform: translate3d(2000px, 0, 0); 798 | } 799 | } 800 | 801 | .fadeOutRightBig { 802 | animation-name: fadeOutRightBig; 803 | } 804 | 805 | @keyframes fadeOutUp { 806 | from { 807 | opacity: 1; 808 | } 809 | 810 | to { 811 | opacity: 0; 812 | transform: translate3d(0, -100%, 0); 813 | } 814 | } 815 | 816 | .fadeOutUp { 817 | animation-name: fadeOutUp; 818 | } 819 | 820 | @keyframes fadeOutUpBig { 821 | from { 822 | opacity: 1; 823 | } 824 | 825 | to { 826 | opacity: 0; 827 | transform: translate3d(0, -2000px, 0); 828 | } 829 | } 830 | 831 | .fadeOutUpBig { 832 | animation-name: fadeOutUpBig; 833 | } 834 | 835 | @keyframes flip { 836 | from { 837 | transform: perspective(400px) rotate3d(0, 1, 0, -360deg); 838 | animation-timing-function: ease-out; 839 | } 840 | 841 | 40% { 842 | transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); 843 | animation-timing-function: ease-out; 844 | } 845 | 846 | 50% { 847 | transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); 848 | animation-timing-function: ease-in; 849 | } 850 | 851 | 80% { 852 | transform: perspective(400px) scale3d(.95, .95, .95); 853 | animation-timing-function: ease-in; 854 | } 855 | 856 | to { 857 | transform: perspective(400px); 858 | animation-timing-function: ease-in; 859 | } 860 | } 861 | 862 | .animated.flip { 863 | -webkit-backface-visibility: visible; 864 | backface-visibility: visible; 865 | animation-name: flip; 866 | } 867 | 868 | @keyframes flipInX { 869 | from { 870 | transform: perspective(400px) rotate3d(1, 0, 0, 90deg); 871 | animation-timing-function: ease-in; 872 | opacity: 0; 873 | } 874 | 875 | 40% { 876 | transform: perspective(400px) rotate3d(1, 0, 0, -20deg); 877 | animation-timing-function: ease-in; 878 | } 879 | 880 | 60% { 881 | transform: perspective(400px) rotate3d(1, 0, 0, 10deg); 882 | opacity: 1; 883 | } 884 | 885 | 80% { 886 | transform: perspective(400px) rotate3d(1, 0, 0, -5deg); 887 | } 888 | 889 | to { 890 | transform: perspective(400px); 891 | } 892 | } 893 | 894 | .flipInX { 895 | -webkit-backface-visibility: visible !important; 896 | backface-visibility: visible !important; 897 | animation-name: flipInX; 898 | } 899 | 900 | @keyframes flipInY { 901 | from { 902 | transform: perspective(400px) rotate3d(0, 1, 0, 90deg); 903 | animation-timing-function: ease-in; 904 | opacity: 0; 905 | } 906 | 907 | 40% { 908 | transform: perspective(400px) rotate3d(0, 1, 0, -20deg); 909 | animation-timing-function: ease-in; 910 | } 911 | 912 | 60% { 913 | transform: perspective(400px) rotate3d(0, 1, 0, 10deg); 914 | opacity: 1; 915 | } 916 | 917 | 80% { 918 | transform: perspective(400px) rotate3d(0, 1, 0, -5deg); 919 | } 920 | 921 | to { 922 | transform: perspective(400px); 923 | } 924 | } 925 | 926 | .flipInY { 927 | -webkit-backface-visibility: visible !important; 928 | backface-visibility: visible !important; 929 | animation-name: flipInY; 930 | } 931 | 932 | @keyframes flipOutX { 933 | from { 934 | transform: perspective(400px); 935 | } 936 | 937 | 30% { 938 | transform: perspective(400px) rotate3d(1, 0, 0, -20deg); 939 | opacity: 1; 940 | } 941 | 942 | to { 943 | transform: perspective(400px) rotate3d(1, 0, 0, 90deg); 944 | opacity: 0; 945 | } 946 | } 947 | 948 | .flipOutX { 949 | animation-name: flipOutX; 950 | -webkit-backface-visibility: visible !important; 951 | backface-visibility: visible !important; 952 | } 953 | 954 | @keyframes flipOutY { 955 | from { 956 | transform: perspective(400px); 957 | } 958 | 959 | 30% { 960 | transform: perspective(400px) rotate3d(0, 1, 0, -15deg); 961 | opacity: 1; 962 | } 963 | 964 | to { 965 | transform: perspective(400px) rotate3d(0, 1, 0, 90deg); 966 | opacity: 0; 967 | } 968 | } 969 | 970 | .flipOutY { 971 | -webkit-backface-visibility: visible !important; 972 | backface-visibility: visible !important; 973 | animation-name: flipOutY; 974 | } 975 | 976 | @keyframes lightSpeedIn { 977 | from { 978 | transform: translate3d(100%, 0, 0) skewX(-30deg); 979 | opacity: 0; 980 | } 981 | 982 | 60% { 983 | transform: skewX(20deg); 984 | opacity: 1; 985 | } 986 | 987 | 80% { 988 | transform: skewX(-5deg); 989 | opacity: 1; 990 | } 991 | 992 | to { 993 | transform: none; 994 | opacity: 1; 995 | } 996 | } 997 | 998 | .lightSpeedIn { 999 | animation-name: lightSpeedIn; 1000 | animation-timing-function: ease-out; 1001 | } 1002 | 1003 | @keyframes lightSpeedOut { 1004 | from { 1005 | opacity: 1; 1006 | } 1007 | 1008 | to { 1009 | transform: translate3d(100%, 0, 0) skewX(30deg); 1010 | opacity: 0; 1011 | } 1012 | } 1013 | 1014 | .lightSpeedOut { 1015 | animation-name: lightSpeedOut; 1016 | animation-timing-function: ease-in; 1017 | } 1018 | 1019 | @keyframes rotateIn { 1020 | from { 1021 | transform-origin: center; 1022 | transform: rotate3d(0, 0, 1, -200deg); 1023 | opacity: 0; 1024 | } 1025 | 1026 | to { 1027 | transform-origin: center; 1028 | transform: none; 1029 | opacity: 1; 1030 | } 1031 | } 1032 | 1033 | .rotateIn { 1034 | animation-name: rotateIn; 1035 | } 1036 | 1037 | @keyframes rotateInDownLeft { 1038 | from { 1039 | transform-origin: left bottom; 1040 | transform: rotate3d(0, 0, 1, -45deg); 1041 | opacity: 0; 1042 | } 1043 | 1044 | to { 1045 | transform-origin: left bottom; 1046 | transform: none; 1047 | opacity: 1; 1048 | } 1049 | } 1050 | 1051 | .rotateInDownLeft { 1052 | animation-name: rotateInDownLeft; 1053 | } 1054 | 1055 | @keyframes rotateInDownRight { 1056 | from { 1057 | transform-origin: right bottom; 1058 | transform: rotate3d(0, 0, 1, 45deg); 1059 | opacity: 0; 1060 | } 1061 | 1062 | to { 1063 | transform-origin: right bottom; 1064 | transform: none; 1065 | opacity: 1; 1066 | } 1067 | } 1068 | 1069 | .rotateInDownRight { 1070 | animation-name: rotateInDownRight; 1071 | } 1072 | 1073 | @keyframes rotateInUpLeft { 1074 | from { 1075 | transform-origin: left bottom; 1076 | transform: rotate3d(0, 0, 1, 45deg); 1077 | opacity: 0; 1078 | } 1079 | 1080 | to { 1081 | transform-origin: left bottom; 1082 | transform: none; 1083 | opacity: 1; 1084 | } 1085 | } 1086 | 1087 | .rotateInUpLeft { 1088 | animation-name: rotateInUpLeft; 1089 | } 1090 | 1091 | @keyframes rotateInUpRight { 1092 | from { 1093 | transform-origin: right bottom; 1094 | transform: rotate3d(0, 0, 1, -90deg); 1095 | opacity: 0; 1096 | } 1097 | 1098 | to { 1099 | transform-origin: right bottom; 1100 | transform: none; 1101 | opacity: 1; 1102 | } 1103 | } 1104 | 1105 | .rotateInUpRight { 1106 | animation-name: rotateInUpRight; 1107 | } 1108 | 1109 | @keyframes rotateOut { 1110 | from { 1111 | transform-origin: center; 1112 | opacity: 1; 1113 | } 1114 | 1115 | to { 1116 | transform-origin: center; 1117 | transform: rotate3d(0, 0, 1, 200deg); 1118 | opacity: 0; 1119 | } 1120 | } 1121 | 1122 | .rotateOut { 1123 | animation-name: rotateOut; 1124 | } 1125 | 1126 | @keyframes rotateOutDownLeft { 1127 | from { 1128 | transform-origin: left bottom; 1129 | opacity: 1; 1130 | } 1131 | 1132 | to { 1133 | transform-origin: left bottom; 1134 | transform: rotate3d(0, 0, 1, 45deg); 1135 | opacity: 0; 1136 | } 1137 | } 1138 | 1139 | .rotateOutDownLeft { 1140 | animation-name: rotateOutDownLeft; 1141 | } 1142 | 1143 | @keyframes rotateOutDownRight { 1144 | from { 1145 | transform-origin: right bottom; 1146 | opacity: 1; 1147 | } 1148 | 1149 | to { 1150 | transform-origin: right bottom; 1151 | transform: rotate3d(0, 0, 1, -45deg); 1152 | opacity: 0; 1153 | } 1154 | } 1155 | 1156 | .rotateOutDownRight { 1157 | animation-name: rotateOutDownRight; 1158 | } 1159 | 1160 | @keyframes rotateOutUpLeft { 1161 | from { 1162 | transform-origin: left bottom; 1163 | opacity: 1; 1164 | } 1165 | 1166 | to { 1167 | transform-origin: left bottom; 1168 | transform: rotate3d(0, 0, 1, -45deg); 1169 | opacity: 0; 1170 | } 1171 | } 1172 | 1173 | .rotateOutUpLeft { 1174 | animation-name: rotateOutUpLeft; 1175 | } 1176 | 1177 | @keyframes rotateOutUpRight { 1178 | from { 1179 | transform-origin: right bottom; 1180 | opacity: 1; 1181 | } 1182 | 1183 | to { 1184 | transform-origin: right bottom; 1185 | transform: rotate3d(0, 0, 1, 90deg); 1186 | opacity: 0; 1187 | } 1188 | } 1189 | 1190 | .rotateOutUpRight { 1191 | animation-name: rotateOutUpRight; 1192 | } 1193 | 1194 | @keyframes hinge { 1195 | 0% { 1196 | transform-origin: top left; 1197 | animation-timing-function: ease-in-out; 1198 | } 1199 | 1200 | 20%, 60% { 1201 | transform: rotate3d(0, 0, 1, 80deg); 1202 | transform-origin: top left; 1203 | animation-timing-function: ease-in-out; 1204 | } 1205 | 1206 | 40%, 80% { 1207 | transform: rotate3d(0, 0, 1, 60deg); 1208 | transform-origin: top left; 1209 | animation-timing-function: ease-in-out; 1210 | opacity: 1; 1211 | } 1212 | 1213 | to { 1214 | transform: translate3d(0, 700px, 0); 1215 | opacity: 0; 1216 | } 1217 | } 1218 | 1219 | .hinge { 1220 | animation-name: hinge; 1221 | } 1222 | 1223 | @keyframes jackInTheBox { 1224 | from { 1225 | opacity: 0; 1226 | transform: scale(0.1) rotate(30deg); 1227 | transform-origin: center bottom; 1228 | } 1229 | 1230 | 50% { 1231 | transform: rotate(-10deg); 1232 | } 1233 | 1234 | 70% { 1235 | transform: rotate(3deg); 1236 | } 1237 | 1238 | to { 1239 | opacity: 1; 1240 | transform: scale(1); 1241 | } 1242 | } 1243 | 1244 | .jackInTheBox { 1245 | animation-name: jackInTheBox; 1246 | } 1247 | 1248 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 1249 | 1250 | @keyframes rollIn { 1251 | from { 1252 | opacity: 0; 1253 | transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); 1254 | } 1255 | 1256 | to { 1257 | opacity: 1; 1258 | transform: none; 1259 | } 1260 | } 1261 | 1262 | .rollIn { 1263 | animation-name: rollIn; 1264 | } 1265 | 1266 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 1267 | 1268 | @keyframes rollOut { 1269 | from { 1270 | opacity: 1; 1271 | } 1272 | 1273 | to { 1274 | opacity: 0; 1275 | transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); 1276 | } 1277 | } 1278 | 1279 | .rollOut { 1280 | animation-name: rollOut; 1281 | } 1282 | 1283 | @keyframes zoomIn { 1284 | from { 1285 | opacity: 0; 1286 | transform: scale3d(.3, .3, .3); 1287 | } 1288 | 1289 | 50% { 1290 | opacity: 1; 1291 | } 1292 | } 1293 | 1294 | .zoomIn { 1295 | animation-name: zoomIn; 1296 | } 1297 | 1298 | @keyframes zoomInDown { 1299 | from { 1300 | opacity: 0; 1301 | transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); 1302 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 1303 | } 1304 | 1305 | 60% { 1306 | opacity: 1; 1307 | transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); 1308 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 1309 | } 1310 | } 1311 | 1312 | .zoomInDown { 1313 | animation-name: zoomInDown; 1314 | } 1315 | 1316 | @keyframes zoomInLeft { 1317 | from { 1318 | opacity: 0; 1319 | transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); 1320 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 1321 | } 1322 | 1323 | 60% { 1324 | opacity: 1; 1325 | transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); 1326 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 1327 | } 1328 | } 1329 | 1330 | .zoomInLeft { 1331 | animation-name: zoomInLeft; 1332 | } 1333 | 1334 | @keyframes zoomInRight { 1335 | from { 1336 | opacity: 0; 1337 | transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); 1338 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 1339 | } 1340 | 1341 | 60% { 1342 | opacity: 1; 1343 | transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); 1344 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 1345 | } 1346 | } 1347 | 1348 | .zoomInRight { 1349 | animation-name: zoomInRight; 1350 | } 1351 | 1352 | @keyframes zoomInUp { 1353 | from { 1354 | opacity: 0; 1355 | transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); 1356 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 1357 | } 1358 | 1359 | 60% { 1360 | opacity: 1; 1361 | transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); 1362 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 1363 | } 1364 | } 1365 | 1366 | .zoomInUp { 1367 | animation-name: zoomInUp; 1368 | } 1369 | 1370 | @keyframes zoomOut { 1371 | from { 1372 | opacity: 1; 1373 | } 1374 | 1375 | 50% { 1376 | opacity: 0; 1377 | transform: scale3d(.3, .3, .3); 1378 | } 1379 | 1380 | to { 1381 | opacity: 0; 1382 | } 1383 | } 1384 | 1385 | .zoomOut { 1386 | animation-name: zoomOut; 1387 | } 1388 | 1389 | @keyframes zoomOutDown { 1390 | 40% { 1391 | opacity: 1; 1392 | transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); 1393 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 1394 | } 1395 | 1396 | to { 1397 | opacity: 0; 1398 | transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); 1399 | transform-origin: center bottom; 1400 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 1401 | } 1402 | } 1403 | 1404 | .zoomOutDown { 1405 | animation-name: zoomOutDown; 1406 | } 1407 | 1408 | @keyframes zoomOutLeft { 1409 | 40% { 1410 | opacity: 1; 1411 | transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); 1412 | } 1413 | 1414 | to { 1415 | opacity: 0; 1416 | transform: scale(.1) translate3d(-2000px, 0, 0); 1417 | transform-origin: left center; 1418 | } 1419 | } 1420 | 1421 | .zoomOutLeft { 1422 | animation-name: zoomOutLeft; 1423 | } 1424 | 1425 | @keyframes zoomOutRight { 1426 | 40% { 1427 | opacity: 1; 1428 | transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); 1429 | } 1430 | 1431 | to { 1432 | opacity: 0; 1433 | transform: scale(.1) translate3d(2000px, 0, 0); 1434 | transform-origin: right center; 1435 | } 1436 | } 1437 | 1438 | .zoomOutRight { 1439 | animation-name: zoomOutRight; 1440 | } 1441 | 1442 | @keyframes zoomOutUp { 1443 | 40% { 1444 | opacity: 1; 1445 | transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); 1446 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); 1447 | } 1448 | 1449 | to { 1450 | opacity: 0; 1451 | transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); 1452 | transform-origin: center bottom; 1453 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); 1454 | } 1455 | } 1456 | 1457 | .zoomOutUp { 1458 | animation-name: zoomOutUp; 1459 | } 1460 | 1461 | @keyframes slideInDown { 1462 | from { 1463 | transform: translate3d(0, -100%, 0); 1464 | visibility: visible; 1465 | } 1466 | 1467 | to { 1468 | transform: translate3d(0, 0, 0); 1469 | } 1470 | } 1471 | 1472 | .slideInDown { 1473 | animation-name: slideInDown; 1474 | } 1475 | 1476 | @keyframes slideInLeft { 1477 | from { 1478 | transform: translate3d(-100%, 0, 0); 1479 | visibility: visible; 1480 | } 1481 | 1482 | to { 1483 | transform: translate3d(0, 0, 0); 1484 | } 1485 | } 1486 | 1487 | .slideInLeft { 1488 | animation-name: slideInLeft; 1489 | } 1490 | 1491 | @keyframes slideInRight { 1492 | from { 1493 | transform: translate3d(100%, 0, 0); 1494 | visibility: visible; 1495 | } 1496 | 1497 | to { 1498 | transform: translate3d(0, 0, 0); 1499 | } 1500 | } 1501 | 1502 | .slideInRight { 1503 | animation-name: slideInRight; 1504 | } 1505 | 1506 | @keyframes slideInUp { 1507 | from { 1508 | transform: translate3d(0, 100%, 0); 1509 | visibility: visible; 1510 | } 1511 | 1512 | to { 1513 | transform: translate3d(0, 0, 0); 1514 | } 1515 | } 1516 | 1517 | .slideInUp { 1518 | animation-name: slideInUp; 1519 | } 1520 | 1521 | @keyframes slideOutDown { 1522 | from { 1523 | transform: translate3d(0, 0, 0); 1524 | } 1525 | 1526 | to { 1527 | visibility: hidden; 1528 | transform: translate3d(0, 100%, 0); 1529 | } 1530 | } 1531 | 1532 | .slideOutDown { 1533 | animation-name: slideOutDown; 1534 | } 1535 | 1536 | @keyframes slideOutLeft { 1537 | from { 1538 | transform: translate3d(0, 0, 0); 1539 | } 1540 | 1541 | to { 1542 | visibility: hidden; 1543 | transform: translate3d(-100%, 0, 0); 1544 | } 1545 | } 1546 | 1547 | .slideOutLeft { 1548 | animation-name: slideOutLeft; 1549 | } 1550 | 1551 | @keyframes slideOutRight { 1552 | from { 1553 | transform: translate3d(0, 0, 0); 1554 | } 1555 | 1556 | to { 1557 | visibility: hidden; 1558 | transform: translate3d(100%, 0, 0); 1559 | } 1560 | } 1561 | 1562 | .slideOutRight { 1563 | animation-name: slideOutRight; 1564 | } 1565 | 1566 | @keyframes slideOutUp { 1567 | from { 1568 | transform: translate3d(0, 0, 0); 1569 | } 1570 | 1571 | to { 1572 | visibility: hidden; 1573 | transform: translate3d(0, -100%, 0); 1574 | } 1575 | } 1576 | 1577 | .slideOutUp { 1578 | animation-name: slideOutUp; 1579 | } 1580 | -------------------------------------------------------------------------------- /demo/libs/blueprint/ie.css: -------------------------------------------------------------------------------- 1 | /* ----------------------------------------------------------------------- 2 | 3 | 4 | Blueprint CSS Framework 1.0.1 5 | http://blueprintcss.org 6 | 7 | * Copyright (c) 2007-Present. See LICENSE for more info. 8 | * See README for instructions on how to use Blueprint. 9 | * For credits and origins, see AUTHORS. 10 | * This is a compressed file. See the sources in the 'src' directory. 11 | 12 | ----------------------------------------------------------------------- */ 13 | 14 | /* ie.css */ 15 | body {text-align:center;} 16 | .container {text-align:left;} 17 | * html .column, * html .span-1, * html .span-2, * html .span-3, * html .span-4, * html .span-5, * html .span-6, * html .span-7, * html .span-8, * html .span-9, * html .span-10, * html .span-11, * html .span-12, * html .span-13, * html .span-14, * html .span-15, * html .span-16, * html .span-17, * html .span-18, * html .span-19, * html .span-20, * html .span-21, * html .span-22, * html .span-23, * html .span-24 {display:inline;overflow-x:hidden;} 18 | * html legend {margin:0px -8px 16px 0;padding:0;} 19 | sup {vertical-align:text-top;} 20 | sub {vertical-align:text-bottom;} 21 | html>body p code {*white-space:normal;} 22 | hr {margin:-8px auto 11px;} 23 | img {-ms-interpolation-mode:bicubic;} 24 | .clearfix, .container {display:inline-block;} 25 | * html .clearfix, * html .container {height:1%;} 26 | fieldset {padding-top:0;} 27 | legend {margin-top:-0.2em;margin-bottom:1em;margin-left:-0.5em;} 28 | textarea {overflow:auto;} 29 | label {vertical-align:middle;position:relative;top:-0.25em;} 30 | input.text, input.title, textarea {background-color:#fff;border:1px solid #bbb;} 31 | input.text:focus, input.title:focus {border-color:#666;} 32 | input.text, input.title, textarea, select {margin:0.5em 0;} 33 | input.checkbox, input.radio {position:relative;top:.25em;} 34 | form.inline div, form.inline p {vertical-align:middle;} 35 | form.inline input.checkbox, form.inline input.radio, form.inline input.button, form.inline button {margin:0.5em 0;} 36 | button, input.button {position:relative;top:0.25em;} -------------------------------------------------------------------------------- /demo/libs/blueprint/print.css: -------------------------------------------------------------------------------- 1 | /* ----------------------------------------------------------------------- 2 | 3 | 4 | Blueprint CSS Framework 1.0.1 5 | http://blueprintcss.org 6 | 7 | * Copyright (c) 2007-Present. See LICENSE for more info. 8 | * See README for instructions on how to use Blueprint. 9 | * For credits and origins, see AUTHORS. 10 | * This is a compressed file. See the sources in the 'src' directory. 11 | 12 | ----------------------------------------------------------------------- */ 13 | 14 | /* print.css */ 15 | body {line-height:1.5;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;color:#000;background:none;font-size:10pt;} 16 | .container {background:none;} 17 | hr {background:#ccc;color:#ccc;width:100%;height:2px;margin:2em 0;padding:0;border:none;} 18 | hr.space {background:#fff;color:#fff;visibility:hidden;} 19 | h1, h2, h3, h4, h5, h6 {font-family:"Helvetica Neue", Arial, "Lucida Grande", sans-serif;} 20 | code {font:.9em "Courier New", Monaco, Courier, monospace;} 21 | a img {border:none;} 22 | p img.top {margin-top:0;} 23 | blockquote {margin:1.5em;padding:1em;font-style:italic;font-size:.9em;} 24 | .small {font-size:.9em;} 25 | .large {font-size:1.1em;} 26 | .quiet {color:#999;} 27 | .hide {display:none;} 28 | a:link, a:visited {background:transparent;font-weight:700;text-decoration:underline;} 29 | a:link:after, a:visited:after {content:" (" attr(href) ")";font-size:90%;} -------------------------------------------------------------------------------- /demo/libs/blueprint/screen.css: -------------------------------------------------------------------------------- 1 | /* ----------------------------------------------------------------------- 2 | 3 | 4 | Blueprint CSS Framework 1.0.1 5 | http://blueprintcss.org 6 | 7 | * Copyright (c) 2007-Present. See LICENSE for more info. 8 | * See README for instructions on how to use Blueprint. 9 | * For credits and origins, see AUTHORS. 10 | * This is a compressed file. See the sources in the 'src' directory. 11 | 12 | ----------------------------------------------------------------------- */ 13 | 14 | /* reset.css */ 15 | html {margin:0;padding:0;border:0;} 16 | body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section {margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;} 17 | article, aside, details, figcaption, figure, dialog, footer, header, hgroup, menu, nav, section {display:block;} 18 | body {line-height:1.5;background:white;} 19 | table {border-collapse:separate;border-spacing:0;} 20 | caption, th, td {text-align:left;font-weight:normal;float:none !important;} 21 | table, th, td {vertical-align:middle;} 22 | blockquote:before, blockquote:after, q:before, q:after {content:'';} 23 | blockquote, q {quotes:"" "";} 24 | a img {border:none;} 25 | :focus {outline:0;} 26 | 27 | /* typography.css */ 28 | html {font-size:100.01%;} 29 | body {font-size:75%;color:#222;background:#fff;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;} 30 | h1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;} 31 | h1 {font-size:3em;line-height:1;margin-bottom:0.5em;} 32 | h2 {font-size:2em;margin-bottom:0.75em;} 33 | h3 {font-size:1.5em;line-height:1;margin-bottom:1em;} 34 | h4 {font-size:1.2em;line-height:1.25;margin-bottom:1.25em;} 35 | h5 {font-size:1em;font-weight:bold;margin-bottom:1.5em;} 36 | h6 {font-size:1em;font-weight:bold;} 37 | h1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin:0;} 38 | p {margin:0 0 1.5em;} 39 | .left {float:left !important;} 40 | p .left {margin:1.5em 1.5em 1.5em 0;padding:0;} 41 | .right {float:right !important;} 42 | p .right {margin:1.5em 0 1.5em 1.5em;padding:0;} 43 | a:focus, a:hover {color:#09f;} 44 | a {color:#06c;text-decoration:underline;} 45 | blockquote {margin:1.5em;color:#666;font-style:italic;} 46 | strong, dfn {font-weight:bold;} 47 | em, dfn {font-style:italic;} 48 | sup, sub {line-height:0;} 49 | abbr, acronym {border-bottom:1px dotted #666;} 50 | address {margin:0 0 1.5em;font-style:italic;} 51 | del {color:#666;} 52 | pre {margin:1.5em 0;white-space:pre;} 53 | pre, code, tt {font:1em 'andale mono', 'lucida console', monospace;line-height:1.5;} 54 | li ul, li ol {margin:0;} 55 | ul, ol {margin:0 1.5em 1.5em 0;padding-left:1.5em;} 56 | ul {list-style-type:disc;} 57 | ol {list-style-type:decimal;} 58 | dl {margin:0 0 1.5em 0;} 59 | dl dt {font-weight:bold;} 60 | dd {margin-left:1.5em;} 61 | table {margin-bottom:1.4em;width:100%;} 62 | th {font-weight:bold;} 63 | thead th {background:#c3d9ff;} 64 | th, td, caption {padding:4px 10px 4px 5px;} 65 | tbody tr:nth-child(even) td, tbody tr.even td {background:#e5ecf9;} 66 | tfoot {font-style:italic;} 67 | caption {background:#eee;} 68 | .small {font-size:.8em;margin-bottom:1.875em;line-height:1.875em;} 69 | .large {font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;} 70 | .hide {display:none;} 71 | .quiet {color:#666;} 72 | .loud {color:#000;} 73 | .highlight {background:#ff0;} 74 | .added {background:#060;color:#fff;} 75 | .removed {background:#900;color:#fff;} 76 | .first {margin-left:0;padding-left:0;} 77 | .last {margin-right:0;padding-right:0;} 78 | .top {margin-top:0;padding-top:0;} 79 | .bottom {margin-bottom:0;padding-bottom:0;} 80 | 81 | /* forms.css */ 82 | label {font-weight:bold;} 83 | fieldset {padding:0 1.4em 1.4em 1.4em;margin:0 0 1.5em 0;border:1px solid #ccc;} 84 | legend {font-weight:bold;font-size:1.2em;margin-top:-0.2em;margin-bottom:1em;} 85 | fieldset, #IE8#HACK {padding-top:1.4em;} 86 | legend, #IE8#HACK {margin-top:0;margin-bottom:0;} 87 | input[type=text], input[type=password], input[type=url], input[type=email], input.text, input.title, textarea {background-color:#fff;border:1px solid #bbb;color:#000;} 88 | input[type=text]:focus, input[type=password]:focus, input[type=url]:focus, input[type=email]:focus, input.text:focus, input.title:focus, textarea:focus {border-color:#666;} 89 | select {background-color:#fff;border-width:1px;border-style:solid;} 90 | input[type=text], input[type=password], input[type=url], input[type=email], input.text, input.title, textarea, select {margin:0.5em 0;} 91 | input.text, input.title {width:300px;padding:5px;} 92 | input.title {font-size:1.5em;} 93 | textarea {width:390px;height:250px;padding:5px;} 94 | form.inline {line-height:3;} 95 | form.inline p {margin-bottom:0;} 96 | .error, .alert, .notice, .success, .info {padding:0.8em;margin-bottom:1em;border:2px solid #ddd;} 97 | .error, .alert {background:#fbe3e4;color:#8a1f11;border-color:#fbc2c4;} 98 | .notice {background:#fff6bf;color:#514721;border-color:#ffd324;} 99 | .success {background:#e6efc2;color:#264409;border-color:#c6d880;} 100 | .info {background:#d5edf8;color:#205791;border-color:#92cae4;} 101 | .error a, .alert a {color:#8a1f11;} 102 | .notice a {color:#514721;} 103 | .success a {color:#264409;} 104 | .info a {color:#205791;} 105 | 106 | /* grid.css */ 107 | .container {width:950px;margin:0 auto;} 108 | .showgrid {background:url(src/grid.png);} 109 | .column, .span-1, .span-2, .span-3, .span-4, .span-5, .span-6, .span-7, .span-8, .span-9, .span-10, .span-11, .span-12, .span-13, .span-14, .span-15, .span-16, .span-17, .span-18, .span-19, .span-20, .span-21, .span-22, .span-23, .span-24 {float:left;margin-right:10px;} 110 | .last {margin-right:0;} 111 | .span-1 {width:30px;} 112 | .span-2 {width:70px;} 113 | .span-3 {width:110px;} 114 | .span-4 {width:150px;} 115 | .span-5 {width:190px;} 116 | .span-6 {width:230px;} 117 | .span-7 {width:270px;} 118 | .span-8 {width:310px;} 119 | .span-9 {width:350px;} 120 | .span-10 {width:390px;} 121 | .span-11 {width:430px;} 122 | .span-12 {width:470px;} 123 | .span-13 {width:510px;} 124 | .span-14 {width:550px;} 125 | .span-15 {width:590px;} 126 | .span-16 {width:630px;} 127 | .span-17 {width:670px;} 128 | .span-18 {width:710px;} 129 | .span-19 {width:750px;} 130 | .span-20 {width:790px;} 131 | .span-21 {width:830px;} 132 | .span-22 {width:870px;} 133 | .span-23 {width:910px;} 134 | .span-24 {width:950px;margin-right:0;} 135 | input.span-1, textarea.span-1, input.span-2, textarea.span-2, input.span-3, textarea.span-3, input.span-4, textarea.span-4, input.span-5, textarea.span-5, input.span-6, textarea.span-6, input.span-7, textarea.span-7, input.span-8, textarea.span-8, input.span-9, textarea.span-9, input.span-10, textarea.span-10, input.span-11, textarea.span-11, input.span-12, textarea.span-12, input.span-13, textarea.span-13, input.span-14, textarea.span-14, input.span-15, textarea.span-15, input.span-16, textarea.span-16, input.span-17, textarea.span-17, input.span-18, textarea.span-18, input.span-19, textarea.span-19, input.span-20, textarea.span-20, input.span-21, textarea.span-21, input.span-22, textarea.span-22, input.span-23, textarea.span-23, input.span-24, textarea.span-24 {border-left-width:1px;border-right-width:1px;padding-left:5px;padding-right:5px;} 136 | input.span-1, textarea.span-1 {width:18px;} 137 | input.span-2, textarea.span-2 {width:58px;} 138 | input.span-3, textarea.span-3 {width:98px;} 139 | input.span-4, textarea.span-4 {width:138px;} 140 | input.span-5, textarea.span-5 {width:178px;} 141 | input.span-6, textarea.span-6 {width:218px;} 142 | input.span-7, textarea.span-7 {width:258px;} 143 | input.span-8, textarea.span-8 {width:298px;} 144 | input.span-9, textarea.span-9 {width:338px;} 145 | input.span-10, textarea.span-10 {width:378px;} 146 | input.span-11, textarea.span-11 {width:418px;} 147 | input.span-12, textarea.span-12 {width:458px;} 148 | input.span-13, textarea.span-13 {width:498px;} 149 | input.span-14, textarea.span-14 {width:538px;} 150 | input.span-15, textarea.span-15 {width:578px;} 151 | input.span-16, textarea.span-16 {width:618px;} 152 | input.span-17, textarea.span-17 {width:658px;} 153 | input.span-18, textarea.span-18 {width:698px;} 154 | input.span-19, textarea.span-19 {width:738px;} 155 | input.span-20, textarea.span-20 {width:778px;} 156 | input.span-21, textarea.span-21 {width:818px;} 157 | input.span-22, textarea.span-22 {width:858px;} 158 | input.span-23, textarea.span-23 {width:898px;} 159 | input.span-24, textarea.span-24 {width:938px;} 160 | .append-1 {padding-right:40px;} 161 | .append-2 {padding-right:80px;} 162 | .append-3 {padding-right:120px;} 163 | .append-4 {padding-right:160px;} 164 | .append-5 {padding-right:200px;} 165 | .append-6 {padding-right:240px;} 166 | .append-7 {padding-right:280px;} 167 | .append-8 {padding-right:320px;} 168 | .append-9 {padding-right:360px;} 169 | .append-10 {padding-right:400px;} 170 | .append-11 {padding-right:440px;} 171 | .append-12 {padding-right:480px;} 172 | .append-13 {padding-right:520px;} 173 | .append-14 {padding-right:560px;} 174 | .append-15 {padding-right:600px;} 175 | .append-16 {padding-right:640px;} 176 | .append-17 {padding-right:680px;} 177 | .append-18 {padding-right:720px;} 178 | .append-19 {padding-right:760px;} 179 | .append-20 {padding-right:800px;} 180 | .append-21 {padding-right:840px;} 181 | .append-22 {padding-right:880px;} 182 | .append-23 {padding-right:920px;} 183 | .prepend-1 {padding-left:40px;} 184 | .prepend-2 {padding-left:80px;} 185 | .prepend-3 {padding-left:120px;} 186 | .prepend-4 {padding-left:160px;} 187 | .prepend-5 {padding-left:200px;} 188 | .prepend-6 {padding-left:240px;} 189 | .prepend-7 {padding-left:280px;} 190 | .prepend-8 {padding-left:320px;} 191 | .prepend-9 {padding-left:360px;} 192 | .prepend-10 {padding-left:400px;} 193 | .prepend-11 {padding-left:440px;} 194 | .prepend-12 {padding-left:480px;} 195 | .prepend-13 {padding-left:520px;} 196 | .prepend-14 {padding-left:560px;} 197 | .prepend-15 {padding-left:600px;} 198 | .prepend-16 {padding-left:640px;} 199 | .prepend-17 {padding-left:680px;} 200 | .prepend-18 {padding-left:720px;} 201 | .prepend-19 {padding-left:760px;} 202 | .prepend-20 {padding-left:800px;} 203 | .prepend-21 {padding-left:840px;} 204 | .prepend-22 {padding-left:880px;} 205 | .prepend-23 {padding-left:920px;} 206 | .border {padding-right:4px;margin-right:5px;border-right:1px solid #ddd;} 207 | .colborder {padding-right:24px;margin-right:25px;border-right:1px solid #ddd;} 208 | .pull-1 {margin-left:-40px;} 209 | .pull-2 {margin-left:-80px;} 210 | .pull-3 {margin-left:-120px;} 211 | .pull-4 {margin-left:-160px;} 212 | .pull-5 {margin-left:-200px;} 213 | .pull-6 {margin-left:-240px;} 214 | .pull-7 {margin-left:-280px;} 215 | .pull-8 {margin-left:-320px;} 216 | .pull-9 {margin-left:-360px;} 217 | .pull-10 {margin-left:-400px;} 218 | .pull-11 {margin-left:-440px;} 219 | .pull-12 {margin-left:-480px;} 220 | .pull-13 {margin-left:-520px;} 221 | .pull-14 {margin-left:-560px;} 222 | .pull-15 {margin-left:-600px;} 223 | .pull-16 {margin-left:-640px;} 224 | .pull-17 {margin-left:-680px;} 225 | .pull-18 {margin-left:-720px;} 226 | .pull-19 {margin-left:-760px;} 227 | .pull-20 {margin-left:-800px;} 228 | .pull-21 {margin-left:-840px;} 229 | .pull-22 {margin-left:-880px;} 230 | .pull-23 {margin-left:-920px;} 231 | .pull-24 {margin-left:-960px;} 232 | .pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 {float:left;position:relative;} 233 | .push-1 {margin:0 -40px 1.5em 40px;} 234 | .push-2 {margin:0 -80px 1.5em 80px;} 235 | .push-3 {margin:0 -120px 1.5em 120px;} 236 | .push-4 {margin:0 -160px 1.5em 160px;} 237 | .push-5 {margin:0 -200px 1.5em 200px;} 238 | .push-6 {margin:0 -240px 1.5em 240px;} 239 | .push-7 {margin:0 -280px 1.5em 280px;} 240 | .push-8 {margin:0 -320px 1.5em 320px;} 241 | .push-9 {margin:0 -360px 1.5em 360px;} 242 | .push-10 {margin:0 -400px 1.5em 400px;} 243 | .push-11 {margin:0 -440px 1.5em 440px;} 244 | .push-12 {margin:0 -480px 1.5em 480px;} 245 | .push-13 {margin:0 -520px 1.5em 520px;} 246 | .push-14 {margin:0 -560px 1.5em 560px;} 247 | .push-15 {margin:0 -600px 1.5em 600px;} 248 | .push-16 {margin:0 -640px 1.5em 640px;} 249 | .push-17 {margin:0 -680px 1.5em 680px;} 250 | .push-18 {margin:0 -720px 1.5em 720px;} 251 | .push-19 {margin:0 -760px 1.5em 760px;} 252 | .push-20 {margin:0 -800px 1.5em 800px;} 253 | .push-21 {margin:0 -840px 1.5em 840px;} 254 | .push-22 {margin:0 -880px 1.5em 880px;} 255 | .push-23 {margin:0 -920px 1.5em 920px;} 256 | .push-24 {margin:0 -960px 1.5em 960px;} 257 | .push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 {float:left;position:relative;} 258 | div.prepend-top, .prepend-top {margin-top:1.5em;} 259 | div.append-bottom, .append-bottom {margin-bottom:1.5em;} 260 | .box {padding:1.5em;margin-bottom:1.5em;background:#e5eCf9;} 261 | hr {background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:1px;margin:0 0 17px;border:none;} 262 | hr.space {background:#fff;color:#fff;visibility:hidden;} 263 | .clearfix:after, .container:after {content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;} 264 | .clearfix, .container {display:block;} 265 | .clear {clear:both;} -------------------------------------------------------------------------------- /demo/libs/milligram.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Milligram v1.3.0 3 | * https://milligram.github.io 4 | * 5 | * Copyright (c) 2017 CJ Patoilo 6 | * Licensed under the MIT license 7 | */ 8 | 9 | *, 10 | *:after, 11 | *:before { 12 | box-sizing: inherit; 13 | } 14 | 15 | html { 16 | box-sizing: border-box; 17 | font-size: 62.5%; 18 | } 19 | 20 | body { 21 | color: #606c76; 22 | font-family: 'Roboto', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif; 23 | font-size: 1.6em; 24 | font-weight: 300; 25 | letter-spacing: .01em; 26 | line-height: 1.6; 27 | } 28 | 29 | blockquote { 30 | border-left: 0.3rem solid #d1d1d1; 31 | margin-left: 0; 32 | margin-right: 0; 33 | padding: 1rem 1.5rem; 34 | } 35 | 36 | blockquote *:last-child { 37 | margin-bottom: 0; 38 | } 39 | 40 | .button, 41 | button, 42 | input[type='button'], 43 | input[type='reset'], 44 | input[type='submit'] { 45 | background-color: #9b4dca; 46 | border: 0.1rem solid #9b4dca; 47 | border-radius: .4rem; 48 | color: #fff; 49 | cursor: pointer; 50 | display: inline-block; 51 | font-size: 1.1rem; 52 | font-weight: 700; 53 | height: 3.8rem; 54 | letter-spacing: .1rem; 55 | line-height: 3.8rem; 56 | padding: 0 3.0rem; 57 | text-align: center; 58 | text-decoration: none; 59 | text-transform: uppercase; 60 | white-space: nowrap; 61 | } 62 | 63 | .button:focus, .button:hover, 64 | button:focus, 65 | button:hover, 66 | input[type='button']:focus, 67 | input[type='button']:hover, 68 | input[type='reset']:focus, 69 | input[type='reset']:hover, 70 | input[type='submit']:focus, 71 | input[type='submit']:hover { 72 | background-color: #606c76; 73 | border-color: #606c76; 74 | color: #fff; 75 | outline: 0; 76 | } 77 | 78 | .button[disabled], 79 | button[disabled], 80 | input[type='button'][disabled], 81 | input[type='reset'][disabled], 82 | input[type='submit'][disabled] { 83 | cursor: default; 84 | opacity: .5; 85 | } 86 | 87 | .button[disabled]:focus, .button[disabled]:hover, 88 | button[disabled]:focus, 89 | button[disabled]:hover, 90 | input[type='button'][disabled]:focus, 91 | input[type='button'][disabled]:hover, 92 | input[type='reset'][disabled]:focus, 93 | input[type='reset'][disabled]:hover, 94 | input[type='submit'][disabled]:focus, 95 | input[type='submit'][disabled]:hover { 96 | background-color: #9b4dca; 97 | border-color: #9b4dca; 98 | } 99 | 100 | .button.button-outline, 101 | button.button-outline, 102 | input[type='button'].button-outline, 103 | input[type='reset'].button-outline, 104 | input[type='submit'].button-outline { 105 | background-color: transparent; 106 | color: #9b4dca; 107 | } 108 | 109 | .button.button-outline:focus, .button.button-outline:hover, 110 | button.button-outline:focus, 111 | button.button-outline:hover, 112 | input[type='button'].button-outline:focus, 113 | input[type='button'].button-outline:hover, 114 | input[type='reset'].button-outline:focus, 115 | input[type='reset'].button-outline:hover, 116 | input[type='submit'].button-outline:focus, 117 | input[type='submit'].button-outline:hover { 118 | background-color: transparent; 119 | border-color: #606c76; 120 | color: #606c76; 121 | } 122 | 123 | .button.button-outline[disabled]:focus, .button.button-outline[disabled]:hover, 124 | button.button-outline[disabled]:focus, 125 | button.button-outline[disabled]:hover, 126 | input[type='button'].button-outline[disabled]:focus, 127 | input[type='button'].button-outline[disabled]:hover, 128 | input[type='reset'].button-outline[disabled]:focus, 129 | input[type='reset'].button-outline[disabled]:hover, 130 | input[type='submit'].button-outline[disabled]:focus, 131 | input[type='submit'].button-outline[disabled]:hover { 132 | border-color: inherit; 133 | color: #9b4dca; 134 | } 135 | 136 | .button.button-clear, 137 | button.button-clear, 138 | input[type='button'].button-clear, 139 | input[type='reset'].button-clear, 140 | input[type='submit'].button-clear { 141 | background-color: transparent; 142 | border-color: transparent; 143 | color: #9b4dca; 144 | } 145 | 146 | .button.button-clear:focus, .button.button-clear:hover, 147 | button.button-clear:focus, 148 | button.button-clear:hover, 149 | input[type='button'].button-clear:focus, 150 | input[type='button'].button-clear:hover, 151 | input[type='reset'].button-clear:focus, 152 | input[type='reset'].button-clear:hover, 153 | input[type='submit'].button-clear:focus, 154 | input[type='submit'].button-clear:hover { 155 | background-color: transparent; 156 | border-color: transparent; 157 | color: #606c76; 158 | } 159 | 160 | .button.button-clear[disabled]:focus, .button.button-clear[disabled]:hover, 161 | button.button-clear[disabled]:focus, 162 | button.button-clear[disabled]:hover, 163 | input[type='button'].button-clear[disabled]:focus, 164 | input[type='button'].button-clear[disabled]:hover, 165 | input[type='reset'].button-clear[disabled]:focus, 166 | input[type='reset'].button-clear[disabled]:hover, 167 | input[type='submit'].button-clear[disabled]:focus, 168 | input[type='submit'].button-clear[disabled]:hover { 169 | color: #9b4dca; 170 | } 171 | 172 | code { 173 | background: #f4f5f6; 174 | border-radius: .4rem; 175 | font-size: 86%; 176 | margin: 0 .2rem; 177 | padding: .2rem .5rem; 178 | white-space: nowrap; 179 | } 180 | 181 | pre { 182 | background: #f4f5f6; 183 | border-left: 0.3rem solid #9b4dca; 184 | overflow-y: hidden; 185 | } 186 | 187 | pre > code { 188 | border-radius: 0; 189 | display: block; 190 | padding: 1rem 1.5rem; 191 | white-space: pre; 192 | } 193 | 194 | hr { 195 | border: 0; 196 | border-top: 0.1rem solid #f4f5f6; 197 | margin: 3.0rem 0; 198 | } 199 | 200 | input[type='email'], 201 | input[type='number'], 202 | input[type='password'], 203 | input[type='search'], 204 | input[type='tel'], 205 | input[type='text'], 206 | input[type='url'], 207 | textarea, 208 | select { 209 | -webkit-appearance: none; 210 | -moz-appearance: none; 211 | appearance: none; 212 | background-color: transparent; 213 | border: 0.1rem solid #d1d1d1; 214 | border-radius: .4rem; 215 | box-shadow: none; 216 | box-sizing: inherit; 217 | height: 3.8rem; 218 | padding: .6rem 1.0rem; 219 | width: 100%; 220 | } 221 | 222 | input[type='email']:focus, 223 | input[type='number']:focus, 224 | input[type='password']:focus, 225 | input[type='search']:focus, 226 | input[type='tel']:focus, 227 | input[type='text']:focus, 228 | input[type='url']:focus, 229 | textarea:focus, 230 | select:focus { 231 | border-color: #9b4dca; 232 | outline: 0; 233 | } 234 | 235 | select { 236 | background: url('data:image/svg+xml;utf8,') center right no-repeat; 237 | padding-right: 3.0rem; 238 | } 239 | 240 | select:focus { 241 | background-image: url('data:image/svg+xml;utf8,'); 242 | } 243 | 244 | textarea { 245 | min-height: 6.5rem; 246 | } 247 | 248 | label, 249 | legend { 250 | display: block; 251 | font-size: 1.6rem; 252 | font-weight: 700; 253 | margin-bottom: .5rem; 254 | } 255 | 256 | fieldset { 257 | border-width: 0; 258 | padding: 0; 259 | } 260 | 261 | input[type='checkbox'], 262 | input[type='radio'] { 263 | display: inline; 264 | } 265 | 266 | .label-inline { 267 | display: inline-block; 268 | font-weight: normal; 269 | margin-left: .5rem; 270 | } 271 | 272 | .container { 273 | margin: 0 auto; 274 | max-width: 112.0rem; 275 | padding: 0 2.0rem; 276 | position: relative; 277 | width: 100%; 278 | } 279 | 280 | .row { 281 | display: flex; 282 | flex-direction: column; 283 | padding: 0; 284 | width: 100%; 285 | } 286 | 287 | .row.row-no-padding { 288 | padding: 0; 289 | } 290 | 291 | .row.row-no-padding > .column { 292 | padding: 0; 293 | } 294 | 295 | .row.row-wrap { 296 | flex-wrap: wrap; 297 | } 298 | 299 | .row.row-top { 300 | align-items: flex-start; 301 | } 302 | 303 | .row.row-bottom { 304 | align-items: flex-end; 305 | } 306 | 307 | .row.row-center { 308 | align-items: center; 309 | } 310 | 311 | .row.row-stretch { 312 | align-items: stretch; 313 | } 314 | 315 | .row.row-baseline { 316 | align-items: baseline; 317 | } 318 | 319 | .row .column { 320 | display: block; 321 | flex: 1 1 auto; 322 | margin-left: 0; 323 | max-width: 100%; 324 | width: 100%; 325 | } 326 | 327 | .row .column.column-offset-10 { 328 | margin-left: 10%; 329 | } 330 | 331 | .row .column.column-offset-20 { 332 | margin-left: 20%; 333 | } 334 | 335 | .row .column.column-offset-25 { 336 | margin-left: 25%; 337 | } 338 | 339 | .row .column.column-offset-33, .row .column.column-offset-34 { 340 | margin-left: 33.3333%; 341 | } 342 | 343 | .row .column.column-offset-50 { 344 | margin-left: 50%; 345 | } 346 | 347 | .row .column.column-offset-66, .row .column.column-offset-67 { 348 | margin-left: 66.6666%; 349 | } 350 | 351 | .row .column.column-offset-75 { 352 | margin-left: 75%; 353 | } 354 | 355 | .row .column.column-offset-80 { 356 | margin-left: 80%; 357 | } 358 | 359 | .row .column.column-offset-90 { 360 | margin-left: 90%; 361 | } 362 | 363 | .row .column.column-10 { 364 | flex: 0 0 10%; 365 | max-width: 10%; 366 | } 367 | 368 | .row .column.column-20 { 369 | flex: 0 0 20%; 370 | max-width: 20%; 371 | } 372 | 373 | .row .column.column-25 { 374 | flex: 0 0 25%; 375 | max-width: 25%; 376 | } 377 | 378 | .row .column.column-33, .row .column.column-34 { 379 | flex: 0 0 33.3333%; 380 | max-width: 33.3333%; 381 | } 382 | 383 | .row .column.column-40 { 384 | flex: 0 0 40%; 385 | max-width: 40%; 386 | } 387 | 388 | .row .column.column-50 { 389 | flex: 0 0 50%; 390 | max-width: 50%; 391 | } 392 | 393 | .row .column.column-60 { 394 | flex: 0 0 60%; 395 | max-width: 60%; 396 | } 397 | 398 | .row .column.column-66, .row .column.column-67 { 399 | flex: 0 0 66.6666%; 400 | max-width: 66.6666%; 401 | } 402 | 403 | .row .column.column-75 { 404 | flex: 0 0 75%; 405 | max-width: 75%; 406 | } 407 | 408 | .row .column.column-80 { 409 | flex: 0 0 80%; 410 | max-width: 80%; 411 | } 412 | 413 | .row .column.column-90 { 414 | flex: 0 0 90%; 415 | max-width: 90%; 416 | } 417 | 418 | .row .column .column-top { 419 | align-self: flex-start; 420 | } 421 | 422 | .row .column .column-bottom { 423 | align-self: flex-end; 424 | } 425 | 426 | .row .column .column-center { 427 | -ms-grid-row-align: center; 428 | align-self: center; 429 | } 430 | 431 | @media (min-width: 40rem) { 432 | .row { 433 | flex-direction: row; 434 | margin-left: -1.0rem; 435 | width: calc(100% + 2.0rem); 436 | } 437 | .row .column { 438 | margin-bottom: inherit; 439 | padding: 0 1.0rem; 440 | } 441 | } 442 | 443 | a { 444 | color: #9b4dca; 445 | text-decoration: none; 446 | } 447 | 448 | a:focus, a:hover { 449 | color: #606c76; 450 | } 451 | 452 | dl, 453 | ol, 454 | ul { 455 | list-style: none; 456 | margin-top: 0; 457 | padding-left: 0; 458 | } 459 | 460 | dl dl, 461 | dl ol, 462 | dl ul, 463 | ol dl, 464 | ol ol, 465 | ol ul, 466 | ul dl, 467 | ul ol, 468 | ul ul { 469 | font-size: 90%; 470 | margin: 1.5rem 0 1.5rem 3.0rem; 471 | } 472 | 473 | ol { 474 | list-style: decimal inside; 475 | } 476 | 477 | ul { 478 | list-style: circle inside; 479 | } 480 | 481 | .button, 482 | button, 483 | dd, 484 | dt, 485 | li { 486 | margin-bottom: 1.0rem; 487 | } 488 | 489 | fieldset, 490 | input, 491 | select, 492 | textarea { 493 | margin-bottom: 1.5rem; 494 | } 495 | 496 | blockquote, 497 | dl, 498 | figure, 499 | form, 500 | ol, 501 | p, 502 | pre, 503 | table, 504 | ul { 505 | margin-bottom: 2.5rem; 506 | } 507 | 508 | table { 509 | border-spacing: 0; 510 | width: 100%; 511 | } 512 | 513 | td, 514 | th { 515 | border-bottom: 0.1rem solid #e1e1e1; 516 | padding: 1.2rem 1.5rem; 517 | text-align: left; 518 | } 519 | 520 | td:first-child, 521 | th:first-child { 522 | padding-left: 0; 523 | } 524 | 525 | td:last-child, 526 | th:last-child { 527 | padding-right: 0; 528 | } 529 | 530 | b, 531 | strong { 532 | font-weight: bold; 533 | } 534 | 535 | p { 536 | margin-top: 0; 537 | } 538 | 539 | h1, 540 | h2, 541 | h3, 542 | h4, 543 | h5, 544 | h6 { 545 | font-weight: 300; 546 | letter-spacing: -.1rem; 547 | margin-bottom: 2.0rem; 548 | margin-top: 0; 549 | } 550 | 551 | h1 { 552 | font-size: 4.6rem; 553 | line-height: 1.2; 554 | } 555 | 556 | h2 { 557 | font-size: 3.6rem; 558 | line-height: 1.25; 559 | } 560 | 561 | h3 { 562 | font-size: 2.8rem; 563 | line-height: 1.3; 564 | } 565 | 566 | h4 { 567 | font-size: 2.2rem; 568 | letter-spacing: -.08rem; 569 | line-height: 1.35; 570 | } 571 | 572 | h5 { 573 | font-size: 1.8rem; 574 | letter-spacing: -.05rem; 575 | line-height: 1.5; 576 | } 577 | 578 | h6 { 579 | font-size: 1.6rem; 580 | letter-spacing: 0; 581 | line-height: 1.4; 582 | } 583 | 584 | img { 585 | max-width: 100%; 586 | } 587 | 588 | .clearfix:after { 589 | clear: both; 590 | content: ' '; 591 | display: table; 592 | } 593 | 594 | .float-left { 595 | float: left; 596 | } 597 | 598 | .float-right { 599 | float: right; 600 | } 601 | 602 | /*# sourceMappingURL=milligram.css.map */ -------------------------------------------------------------------------------- /demo/libs/normalize.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */ 2 | 3 | /* Document 4 | ========================================================================== */ 5 | 6 | /** 7 | * 1. Correct the line height in all browsers. 8 | * 2. Prevent adjustments of font size after orientation changes in 9 | * IE on Windows Phone and in iOS. 10 | */ 11 | 12 | html { 13 | line-height: 1.15; /* 1 */ 14 | -ms-text-size-adjust: 100%; /* 2 */ 15 | -webkit-text-size-adjust: 100%; /* 2 */ 16 | } 17 | 18 | /* Sections 19 | ========================================================================== */ 20 | 21 | /** 22 | * Remove the margin in all browsers (opinionated). 23 | */ 24 | 25 | body { 26 | margin: 0; 27 | } 28 | 29 | /** 30 | * Add the correct display in IE 9-. 31 | */ 32 | 33 | article, 34 | aside, 35 | footer, 36 | header, 37 | nav, 38 | section { 39 | display: block; 40 | } 41 | 42 | /** 43 | * Correct the font size and margin on `h1` elements within `section` and 44 | * `article` contexts in Chrome, Firefox, and Safari. 45 | */ 46 | 47 | h1 { 48 | font-size: 2em; 49 | margin: 0.67em 0; 50 | } 51 | 52 | /* Grouping content 53 | ========================================================================== */ 54 | 55 | /** 56 | * Add the correct display in IE 9-. 57 | * 1. Add the correct display in IE. 58 | */ 59 | 60 | figcaption, 61 | figure, 62 | main { /* 1 */ 63 | display: block; 64 | } 65 | 66 | /** 67 | * Add the correct margin in IE 8. 68 | */ 69 | 70 | figure { 71 | margin: 1em 40px; 72 | } 73 | 74 | /** 75 | * 1. Add the correct box sizing in Firefox. 76 | * 2. Show the overflow in Edge and IE. 77 | */ 78 | 79 | hr { 80 | box-sizing: content-box; /* 1 */ 81 | height: 0; /* 1 */ 82 | overflow: visible; /* 2 */ 83 | } 84 | 85 | /** 86 | * 1. Correct the inheritance and scaling of font size in all browsers. 87 | * 2. Correct the odd `em` font sizing in all browsers. 88 | */ 89 | 90 | pre { 91 | font-family: monospace, monospace; /* 1 */ 92 | font-size: 1em; /* 2 */ 93 | } 94 | 95 | /* Text-level semantics 96 | ========================================================================== */ 97 | 98 | /** 99 | * 1. Remove the gray background on active links in IE 10. 100 | * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. 101 | */ 102 | 103 | a { 104 | background-color: transparent; /* 1 */ 105 | -webkit-text-decoration-skip: objects; /* 2 */ 106 | } 107 | 108 | /** 109 | * 1. Remove the bottom border in Chrome 57- and Firefox 39-. 110 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. 111 | */ 112 | 113 | abbr[title] { 114 | border-bottom: none; /* 1 */ 115 | text-decoration: underline; /* 2 */ 116 | text-decoration: underline dotted; /* 2 */ 117 | } 118 | 119 | /** 120 | * Prevent the duplicate application of `bolder` by the next rule in Safari 6. 121 | */ 122 | 123 | b, 124 | strong { 125 | font-weight: inherit; 126 | } 127 | 128 | /** 129 | * Add the correct font weight in Chrome, Edge, and Safari. 130 | */ 131 | 132 | b, 133 | strong { 134 | font-weight: bolder; 135 | } 136 | 137 | /** 138 | * 1. Correct the inheritance and scaling of font size in all browsers. 139 | * 2. Correct the odd `em` font sizing in all browsers. 140 | */ 141 | 142 | code, 143 | kbd, 144 | samp { 145 | font-family: monospace, monospace; /* 1 */ 146 | font-size: 1em; /* 2 */ 147 | } 148 | 149 | /** 150 | * Add the correct font style in Android 4.3-. 151 | */ 152 | 153 | dfn { 154 | font-style: italic; 155 | } 156 | 157 | /** 158 | * Add the correct background and color in IE 9-. 159 | */ 160 | 161 | mark { 162 | background-color: #ff0; 163 | color: #000; 164 | } 165 | 166 | /** 167 | * Add the correct font size in all browsers. 168 | */ 169 | 170 | small { 171 | font-size: 80%; 172 | } 173 | 174 | /** 175 | * Prevent `sub` and `sup` elements from affecting the line height in 176 | * all browsers. 177 | */ 178 | 179 | sub, 180 | sup { 181 | font-size: 75%; 182 | line-height: 0; 183 | position: relative; 184 | vertical-align: baseline; 185 | } 186 | 187 | sub { 188 | bottom: -0.25em; 189 | } 190 | 191 | sup { 192 | top: -0.5em; 193 | } 194 | 195 | /* Embedded content 196 | ========================================================================== */ 197 | 198 | /** 199 | * Add the correct display in IE 9-. 200 | */ 201 | 202 | audio, 203 | video { 204 | display: inline-block; 205 | } 206 | 207 | /** 208 | * Add the correct display in iOS 4-7. 209 | */ 210 | 211 | audio:not([controls]) { 212 | display: none; 213 | height: 0; 214 | } 215 | 216 | /** 217 | * Remove the border on images inside links in IE 10-. 218 | */ 219 | 220 | img { 221 | border-style: none; 222 | } 223 | 224 | /** 225 | * Hide the overflow in IE. 226 | */ 227 | 228 | svg:not(:root) { 229 | overflow: hidden; 230 | } 231 | 232 | /* Forms 233 | ========================================================================== */ 234 | 235 | /** 236 | * 1. Change the font styles in all browsers (opinionated). 237 | * 2. Remove the margin in Firefox and Safari. 238 | */ 239 | 240 | button, 241 | input, 242 | optgroup, 243 | select, 244 | textarea { 245 | font-family: sans-serif; /* 1 */ 246 | font-size: 100%; /* 1 */ 247 | line-height: 1.15; /* 1 */ 248 | margin: 0; /* 2 */ 249 | } 250 | 251 | /** 252 | * Show the overflow in IE. 253 | * 1. Show the overflow in Edge. 254 | */ 255 | 256 | button, 257 | input { /* 1 */ 258 | overflow: visible; 259 | } 260 | 261 | /** 262 | * Remove the inheritance of text transform in Edge, Firefox, and IE. 263 | * 1. Remove the inheritance of text transform in Firefox. 264 | */ 265 | 266 | button, 267 | select { /* 1 */ 268 | text-transform: none; 269 | } 270 | 271 | /** 272 | * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` 273 | * controls in Android 4. 274 | * 2. Correct the inability to style clickable types in iOS and Safari. 275 | */ 276 | 277 | button, 278 | html [type="button"], /* 1 */ 279 | [type="reset"], 280 | [type="submit"] { 281 | -webkit-appearance: button; /* 2 */ 282 | } 283 | 284 | /** 285 | * Remove the inner border and padding in Firefox. 286 | */ 287 | 288 | button::-moz-focus-inner, 289 | [type="button"]::-moz-focus-inner, 290 | [type="reset"]::-moz-focus-inner, 291 | [type="submit"]::-moz-focus-inner { 292 | border-style: none; 293 | padding: 0; 294 | } 295 | 296 | /** 297 | * Restore the focus styles unset by the previous rule. 298 | */ 299 | 300 | button:-moz-focusring, 301 | [type="button"]:-moz-focusring, 302 | [type="reset"]:-moz-focusring, 303 | [type="submit"]:-moz-focusring { 304 | outline: 1px dotted ButtonText; 305 | } 306 | 307 | /** 308 | * Correct the padding in Firefox. 309 | */ 310 | 311 | fieldset { 312 | padding: 0.35em 0.75em 0.625em; 313 | } 314 | 315 | /** 316 | * 1. Correct the text wrapping in Edge and IE. 317 | * 2. Correct the color inheritance from `fieldset` elements in IE. 318 | * 3. Remove the padding so developers are not caught out when they zero out 319 | * `fieldset` elements in all browsers. 320 | */ 321 | 322 | legend { 323 | box-sizing: border-box; /* 1 */ 324 | color: inherit; /* 2 */ 325 | display: table; /* 1 */ 326 | max-width: 100%; /* 1 */ 327 | padding: 0; /* 3 */ 328 | white-space: normal; /* 1 */ 329 | } 330 | 331 | /** 332 | * 1. Add the correct display in IE 9-. 333 | * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. 334 | */ 335 | 336 | progress { 337 | display: inline-block; /* 1 */ 338 | vertical-align: baseline; /* 2 */ 339 | } 340 | 341 | /** 342 | * Remove the default vertical scrollbar in IE. 343 | */ 344 | 345 | textarea { 346 | overflow: auto; 347 | } 348 | 349 | /** 350 | * 1. Add the correct box sizing in IE 10-. 351 | * 2. Remove the padding in IE 10-. 352 | */ 353 | 354 | [type="checkbox"], 355 | [type="radio"] { 356 | box-sizing: border-box; /* 1 */ 357 | padding: 0; /* 2 */ 358 | } 359 | 360 | /** 361 | * Correct the cursor style of increment and decrement buttons in Chrome. 362 | */ 363 | 364 | [type="number"]::-webkit-inner-spin-button, 365 | [type="number"]::-webkit-outer-spin-button { 366 | height: auto; 367 | } 368 | 369 | /** 370 | * 1. Correct the odd appearance in Chrome and Safari. 371 | * 2. Correct the outline style in Safari. 372 | */ 373 | 374 | [type="search"] { 375 | -webkit-appearance: textfield; /* 1 */ 376 | outline-offset: -2px; /* 2 */ 377 | } 378 | 379 | /** 380 | * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. 381 | */ 382 | 383 | [type="search"]::-webkit-search-cancel-button, 384 | [type="search"]::-webkit-search-decoration { 385 | -webkit-appearance: none; 386 | } 387 | 388 | /** 389 | * 1. Correct the inability to style clickable types in iOS and Safari. 390 | * 2. Change font properties to `inherit` in Safari. 391 | */ 392 | 393 | ::-webkit-file-upload-button { 394 | -webkit-appearance: button; /* 1 */ 395 | font: inherit; /* 2 */ 396 | } 397 | 398 | /* Interactive 399 | ========================================================================== */ 400 | 401 | /* 402 | * Add the correct display in IE 9-. 403 | * 1. Add the correct display in Edge, IE, and Firefox. 404 | */ 405 | 406 | details, /* 1 */ 407 | menu { 408 | display: block; 409 | } 410 | 411 | /* 412 | * Add the correct display in all browsers. 413 | */ 414 | 415 | summary { 416 | display: list-item; 417 | } 418 | 419 | /* Scripting 420 | ========================================================================== */ 421 | 422 | /** 423 | * Add the correct display in IE 9-. 424 | */ 425 | 426 | canvas { 427 | display: inline-block; 428 | } 429 | 430 | /** 431 | * Add the correct display in IE. 432 | */ 433 | 434 | template { 435 | display: none; 436 | } 437 | 438 | /* Hidden 439 | ========================================================================== */ 440 | 441 | /** 442 | * Add the correct display in IE 10-. 443 | */ 444 | 445 | [hidden] { 446 | display: none; 447 | } 448 | -------------------------------------------------------------------------------- /demo/libs/oocss/content.css: -------------------------------------------------------------------------------- 1 | body{font-family:"Myriad Pro","Segoe UI",Helvetica, Arial, sans-serif;} 2 | /* **************** CONTENT OBJECTS ***************** */ 3 | /* ====== Default spacing ====== */ 4 | h1, h2, h3, h4, h5, h6, ul, ol,dl, p,blockquote {padding:10px;} 5 | h1, h2, h3, h4, h5, h6,img{padding-bottom:0px;} 6 | pre{margin: 10px;} 7 | table h1,table h2,table h3, table h4, table h5, table h6, table p, table ul, table ol, table dl, 8 | ul h1,ul h2,ul h3, ul h4, ul h5, ul h6, ul p, ul ul, ul ol, ul dl, 9 | ol h1,ol h2,ol h3, ol h4, ol h5, ol h6, ol p, ol ul, ol ol, ol dl {padding:0;} 10 | /* ====== Elements ====== */ 11 | img{display:block;} 12 | em{font-style: italic;} 13 | strong{font-weight:bold;} 14 | hr{border: 5px solid #e2e2e2; border-width: 0 0 5px 0; margin: 20px 10px 10px 10px;} 15 | code{color:#0B8C8F;} 16 | /* ====== Headings ====== */ 17 | /* .h1-.h6 classes should be used to maintain the semantically appropriate heading levels - NOT for use on non-headings */ 18 | h1, .h1{font-size:196%; font-weight:normal; font-style: normal; color:#AE0345;} 19 | h2, .h2{font-size:167%; font-weight:normal; font-style: normal; color:#AE0345;} 20 | h3, .h3{font-size:146.5%; font-weight:normal; font-style: normal; color:#DF2B72;} 21 | h4, .h4{font-size:123.1%; font-weight:normal; font-style: normal; color: #333;} 22 | h5, .h5{font-size:108%; font-weight:bold; font-style: normal; color:#AE0345;} 23 | h6, .h6{font-size:108%; font-weight:normal; font-style: italic; color:#333;} 24 | /* if additional headings are needed they should be created via additional classes, never via location dependant styling */ 25 | .category{font-size:108%; font-weight:normal; font-style: normal; text-transform:uppercase; color: #333;} 26 | .category a{color: #333;} 27 | .important a{font-weight:bold;} 28 | /* links */ 29 | a { color: #036; font-weight:bold;text-decoration: none } 30 | a:focus, a:hover { text-decoration: underline } 31 | a:visited { color:#005a9c; } 32 | /* ====== Lists ======*/ 33 | /* numbered list */ 34 | ol.simpleList li{list-style-type: decimal; margin-left:40px;} 35 | /* standard list */ 36 | ul.simpleList li{list-style-type:disc; margin-left:40px;} 37 | /* ====== Tables ====== */ 38 | .data{padding: 20px; position:relative; zoom:1;vertical-align: top;border-right:solid 1px transparent;/* border fixes a FF2 bug which causes the data table to overlay its borders*/} 39 | .data table {width:100%;border:1px solid #AE0345;} 40 | th, td{vertical-align:top;border:1px solid #AE0345;} 41 | .txtC, .data .txtC td, .data .txtC th{text-align:center;} 42 | .txtL, .data .txtL td, .data .txtL th{text-align:left;} 43 | .txtR, .data .txtR td, .data .txtR th{text-align:right;} 44 | .txtT, .data .txtT td, .data .txtT th{vertical-align:top;} 45 | .txtB, .data .txtB td, .data .txtB th{vertical-align:bottom;} 46 | .txtM, .data .txtM td, .data .txtM th{vertical-align:middle;} 47 | .data th,.data td{padding:3px 20px} 48 | .data thead tr{background-color: #fff0f8;} 49 | .data th{color: #000; font-weight:bold} 50 | /* specification table - extends data table */ 51 | .spec{padding:10px;} 52 | .spec table{border-top: 1px solid #e2e2e2; border-bottom-color:#fff; border-left:none; border-right:none;} 53 | .spec th, .spec td{border:1px solid #e2e2e2; border-width: 1px 0; padding-left:0;} 54 | .spec .odd, .spec .even{background-color: #fff;} 55 | /* ====== blockquote ====== */ 56 | cite{display:block; text-align:right; padding-top: 10px;} 57 | /* ====== callout ====== */ 58 | .callout{font-size:189%;color:#999999; font-style:italic;} 59 | .callout cite{display:block; text-align:right;padding-top: 30px; font-size:69.25%;} 60 | .callout span.quot{font-size: 500%; vertical-align: sub; color:#e2e2e2; line-height:25px; font-weight:bold;} 61 | .callout span.quotLast{vertical-align:middle;} 62 | /* ====== image treatments (get more from jason santa maria) ====== */ 63 | .caption{font-size:13px; color:#666666; font-style:italic;padding-top:0;} 64 | /* will need to either 65 | 1. find a way to capture the width of the caption in the width of the image or flash 66 | 2. Set some default widths, mby use flickr widths? 67 | */ -------------------------------------------------------------------------------- /demo/libs/oocss/grids.css: -------------------------------------------------------------------------------- 1 | /* **************** GRIDS ***************** */ 2 | .line, .lastUnit {overflow: hidden;_overflow:visible;_zoom:1; } 3 | .unit{float:left;_zoom:1;} 4 | .unitExt{float:right;} 5 | .size1of1{float:none;} 6 | .size1of2{width:50%;} 7 | .size1of3{width:33.33333%;} 8 | .size2of3{width:66.66666%;} 9 | .size1of4{width:25%;} 10 | .size3of4{width:75%;} 11 | .size1of5{width:20%;} 12 | .size2of5{width:40%;} 13 | .size3of5{width:60%;} 14 | .size4of5{width:80%;} 15 | .lastUnit {float:none;_position:relative; _left:-3px; _margin-right: -3px;width:auto;} 16 | /* extending grids to allow a unit that takes the width of its content */ 17 | .media{width:auto;} -------------------------------------------------------------------------------- /demo/libs/oocss/grids_debug.css: -------------------------------------------------------------------------------- 1 | /* grids debug */ 2 | .line{background-color:#e2e2e2;} 3 | .size1of1{background-color:pink;} 4 | .size1of2{background-color:red;} 5 | .size1of3{background-color:orange;} 6 | .size2of3{background-color: yellow;} 7 | .size1of4{background-color:lime;} 8 | .size3of4{background-color:green;} 9 | .size1of5{background-color:aqua;} 10 | .size2of5{background-color:blue;} 11 | .size3of5{background-color:purple;} 12 | .size4of5{background-color:magenta;} -------------------------------------------------------------------------------- /demo/libs/oocss/libraries.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2008, Yahoo! Inc. All rights reserved. 3 | Code licensed under the BSD License: 4 | http://developer.yahoo.net/yui/license.txt 5 | version: 3.0.0pr2 6 | */ 7 | 8 | 9 | /* reset */ 10 | 11 | html { 12 | color: #000; 13 | background: #FFF; 14 | } 15 | 16 | body, 17 | div, 18 | dl, 19 | dt, 20 | dd, 21 | ul, 22 | ol, 23 | li, 24 | h1, 25 | h2, 26 | h3, 27 | h4, 28 | h5, 29 | h6, 30 | pre, 31 | code, 32 | form, 33 | fieldset, 34 | legend, 35 | input, 36 | textarea, 37 | p, 38 | blockquote, 39 | th, 40 | td { 41 | margin: 0; 42 | padding: 0; 43 | } 44 | 45 | table { 46 | border-collapse: collapse; 47 | border-spacing: 0; 48 | } 49 | 50 | fieldset, 51 | img { 52 | border: 0; 53 | } 54 | 55 | address, 56 | caption, 57 | cite, 58 | code, 59 | dfn, 60 | em, 61 | strong, 62 | th, 63 | var { 64 | font-style: normal; 65 | font-weight: normal; 66 | } 67 | 68 | li { 69 | list-style: none; 70 | } 71 | 72 | caption, 73 | th { 74 | text-align: left; 75 | } 76 | 77 | h1, 78 | h2, 79 | h3, 80 | h4, 81 | h5, 82 | h6 { 83 | font-size: 100%; 84 | font-weight: normal; 85 | } 86 | 87 | q:before, 88 | q:after { 89 | content: ''; 90 | } 91 | 92 | abbr, 93 | acronym { 94 | border: 0; 95 | font-variant: normal; 96 | } 97 | 98 | sup { 99 | vertical-align: text-top; 100 | } 101 | 102 | sub { 103 | vertical-align: text-bottom; 104 | } 105 | 106 | input, 107 | textarea, 108 | select { 109 | font-family: inherit; 110 | font-size: inherit; 111 | font-weight: inherit; 112 | } 113 | 114 | input, 115 | textarea, 116 | select { 117 | *font-size: 100%; 118 | } 119 | 120 | legend { 121 | color: #000; 122 | } 123 | 124 | 125 | /* fonts */ 126 | 127 | body { 128 | font: 13px/1.231 arial, helvetica, clean, sans-serif; 129 | *font-size: small; 130 | *font: x-small; 131 | } 132 | 133 | select, 134 | input, 135 | button, 136 | textarea { 137 | font: 99% arial, helvetica, clean, sans-serif; 138 | } 139 | 140 | table { 141 | font-size: inherit; 142 | font: 100%; 143 | font-family: inherit; 144 | } 145 | 146 | pre, 147 | code, 148 | kbd, 149 | samp, 150 | tt { 151 | font-family: monospace; 152 | *font-size: 108%; 153 | line-height: 100%; 154 | } -------------------------------------------------------------------------------- /demo/libs/oocss/mod.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2009, Nicole Sullivan. All rights reserved. 3 | Code licensed under the BSD License: 4 | version: 0.2 5 | */ 6 | /* **************** BLOCK STRUCTURES ***************** */ 7 | /* mod */ 8 | .mod{margin:10px;} 9 | .mod .inner{background: url(http://oocss.org/css/skin/transparent.png) repeat left top;} 10 | .hd,.bd,.ft{overflow:hidden;_overflow:visible; _zoom:1;} 11 | .inner{position:relative;} 12 | b{display:block;background-repeat:no-repeat;font-size:1%;position:relative;z-index:10;} 13 | .tl, .tr, .bl, .br{height:10px; width:10px;float:left;} 14 | .tl{background-position: left top;} 15 | .tr{background-position: right top;} 16 | .bl{background-position: left bottom;} 17 | .br{background-position: right bottom;} 18 | .br,.tr{float:right;} 19 | .tr, .tl{overflow:hidden;margin-bottom:-32000px;}/* margin bottom needs to be < -9px */ 20 | .bl,.br{margin-top:-10px;} 21 | .top{background-position:center top;} 22 | .bottom{background-position:center bottom;_zoom:1;}/* this zoom required for IE5.5 only*/ 23 | /* complex */ 24 | .complex{overflow:hidden;*position:relative;*zoom:1;}/* position/zoom required for IE7, 6, 5.5 */ 25 | .complex .tl, .complex .tr{height:32000px; margin-bottom:-32000px;width:10px;} 26 | .complex .bl, .complex .br{/*margin-top:0;*/} 27 | .complex .top{height:5px;} 28 | .complex .bottom{height:5px;/*margin-top:-10px;*/} 29 | /* pop */ 30 | .pop{overflow:visible;margin: 10px 20px 20px 10px; background-position:left top;} 31 | .pop .inner{right:-10px; bottom:-10px; background-position:right bottom;padding:0 10px 10px 0;} 32 | .pop .tl, .pop .br{display:none;} 33 | .pop .bl{bottom:-10px;} 34 | .pop .tr{right:-10px;} -------------------------------------------------------------------------------- /demo/libs/oocss/mod_debug.css: -------------------------------------------------------------------------------- 1 | /* debug modules */ 2 | .top, .bottom{background-color:#e2e2e2;} 3 | .tl{background-color:red;} 4 | .tr{background-color:orange;} 5 | .bl{background-color:yellow;} 6 | .br{background-color:lime;} 7 | /*.hd{background-color: green;} 8 | .bd{background-color: teal;} 9 | .ft{background-color: blue;}*/ 10 | .mod{background-color:purple;} 11 | .inner{background-color:magenta;} 12 | -------------------------------------------------------------------------------- /demo/libs/oocss/mod_skins.css: -------------------------------------------------------------------------------- 1 | /* **************** BLOCK SKINS ***************** */ 2 | /* ====== Contour blocks ====== */ 3 | /* remove background-image:" to default to square corners for IE */ 4 | /* ----- simple (extends mod) ----- */ 5 | .simple .inner {border:1px solid #D7D7D7;/*-moz-border-radius: 7px;-webkit-border-radius: 7px;border-radius: 7px;*/} 6 | .simple b{background-image:url(http://oocss.org/css/skin/mod/simple_corners.png);} 7 | /* ----- basic (extends mod) ----- */ 8 | .basic .inner {/*-moz-border-radius: 7px;-webkit-border-radius: 7px;border-radius: 7px;*/} 9 | .basic b{background-image:url(http://oocss.org/css/skin/mod/round.png);} 10 | /* ----- simpleExt (extends mod) ----- */ 11 | .simpleExt,.simpleExt .inner{border:1px solid #c7c7c7;/*-moz-border-radius: 7px;-webkit-border-radius: 7px;border-radius: 7px;*/ } 12 | .simpleExt .inner{border-color:#fff; border-width:4px; /*background-color:#e2e2e2;*/} 13 | .simpleExt b{background-image:url(http://oocss.org/css/skin/mod/simple_extended.png);} 14 | .simpleExt .tl{left:-1px;top:-1px;height:12px; width:12px;} 15 | .simpleExt .tr{right:-1px;top:-1px;height:12px; width:12px;} 16 | .simpleExt .bl{left:-1px;bottom:-1px;height:12px; width:12px;margin-top:-12px;} 17 | .simpleExt .br{right:-1px;bottom:-1px;height:12px; width:12px;margin-top:-12px;} 18 | /* ----- me (extends mod) use for my comments ----- */ 19 | .me,.me .inner{border:1px solid #909090;/*-moz-border-radius: 5px;-webkit-border-radius: 5px;border-radius: 5px;*/} 20 | .me .inner{border-color:#d76a84;} 21 | .me b{background-image:url(http://oocss.org/css/skin/mod/me.png);} 22 | .me .tl{left:-1px;top:-1px;} 23 | .me .tr{right:-1px;top:-1px;} 24 | .me .bl{left:-1px;bottom:-1px;} 25 | .me .br{right:-1px;bottom:-1px;} 26 | /* ----- noted (extends mod) ----- */ 27 | .noted,.noted .inner{border:1px solid #c2c2c2;/*-moz-border-radius: 5px;-webkit-border-radius: 5px;border-radius: 5px;*/} 28 | .noted .inner{border-color:#eded68;} 29 | .noted b{background-image:url(http://oocss.org/css/skin/mod/noted.png);} 30 | .noted .tl{left:-1px;top:-1px;} 31 | .noted .tr{right:-1px;top:-1px;} 32 | .noted .bl{left:-1px;bottom:-1px;} 33 | .noted .br{right:-1px;bottom:-1px;} 34 | /* ----- grab (extends mod) ----- */ 35 | .grab .inner{border: 3px solid #00477a; border-bottom-width:10px;}/* can't be done w border radius */ 36 | .grab b{background-image:url(http://oocss.org/css/skin/mod/grab.png);} 37 | .grab .tl, .grab .tr{height:10px; width:10px;} 38 | .grab .bl, .grab .br{height:16px;/*if height is set, margin set*/margin-top:-16px;} 39 | /* ----- faq (extends mod) ----- */ 40 | .faq .inner{border: 3px solid #b20029; border-bottom-width:10px;}/* can't be done w border radius */ 41 | .faq b{background-image:url(http://oocss.org/css/skin/mod/faq.png);} 42 | .faq .tl, .faq .tr{height:10px; width:10px;} 43 | .faq .bl, .faq .br{height:16px;/*if height is set, margin set*/margin-top:-16px;} 44 | /* ----- onlinestore (extends mod) ----- */ 45 | .onlinestore .inner{border: 3px solid #9a9800; border-bottom-width:10px;}/* can't be done w border radius */ 46 | .onlinestore b{background-image:url(http://oocss.org/css/skin/mod/store.png);} 47 | .onlinestore .tl, .onlinestore .tr{height:10px; width:10px;} 48 | .onlinestore .bl, .onlinestore .br{height:16px;/*if height is set, margin set*/margin-top:-16px;} 49 | /* ----- about (extends mod) ----- */ 50 | .about .inner{border: 3px solid #494949; border-bottom-width:10px;}/* can't be done w border radius */ 51 | .about b{background-image:url(http://oocss.org/css/skin/mod/about.png);} 52 | .about .tl, .about .tr{height:10px; width:10px;} 53 | .about .bl, .about .br{height:16px;/*if height is set, margin set*/margin-top:-16px;} 54 | /* ----- talk (extends mod) ----- */ 55 | .talk,.talk .inner{border:1px solid #c7c7c7;/*-moz-border-radius: 5px;-webkit-border-radius: 5px;border-radius: 5px;*/} 56 | .talk .inner{border-color:#ededed;} 57 | .talk b{background-image:url(http://oocss.org/css/skin/mod/talk.png);} 58 | .talk .tl{left:-1px;top:-1px;} 59 | .talk .tr{right:-1px;top:-1px;} 60 | .talk .bl{left:-1px;bottom:-1px;} 61 | .talk .br{right:-1px;bottom:-1px;} 62 | /* ----- photo (extends complex) ----- */ 63 | .photo .inner{border:solid 10px #fff;margin:0 4px;}/* muck with margins to change how the block will align with other blocks, any value between 0-10px */ 64 | .photo b{background-image:url(http://oocss.org/css/skin/mod/photo.png);} 65 | .photo .tr, .photo .tl{width:20px;} 66 | .photo .top, .photo .bottom{height:4px;margin-top:0px;} 67 | .photo .bl, .photo .br{height:16px;margin-top: -12px;} 68 | /* ----- flow (extends complex) ----- */ 69 | .flow{margin:6px;} 70 | .flow b{background-image:url(http://oocss.org/css/skin/mod/even.png);} 71 | .flow .inner{padding:0 4px;} 72 | .flow .top{height:4px;} 73 | .flow .bottom{height:4px;margin-top:-4px;} 74 | .flow .br,.flow .bl{height:10px;margin-top:-6px;}/* margin top = bottom height - corner height */ 75 | /* ----- shadow test (experimental attempt to match "flow" cross browser w no img)----- */ 76 | .boo{-webkit-box-shadow: 0px 0px 1px rgba(0,0,0,33);-moz-box-shadow: black 2px 2px 2px 2px;/*-moz-border-radius: 5px;-webkit-border-radius: 5px;border-radius: 5px;*/border:solid 1px #949494;background:#fff;} 77 | /* ----- .excerpt (extends complex) ----- */ 78 | .excerpt b{background-image:url(http://oocss.org/css/skin/mod/excerpt.png);} 79 | .excerpt .top{height:1px;} 80 | .excerpt .bottom{height:6px;margin-top:-6px;}/* margin top equal to - height of bottom */ 81 | .excerpt .br,.excerpt .bl{height:12px;margin-top:-6px;}/* margin top = bottom height - corner height */ 82 | /* ----- sommers (extends pop) ----- */ 83 | .sommers .inner{_border:3px solid #D7D7D7;}/*IE6 backup no alpha transparency */ 84 | .sommers,.sommers .inner,.sommers b{background-image:url(http://oocss.org/css/skin/mod/glow_7px.png);_background-image:none;} 85 | .sommers{margin:3px 20px 20px 3px;} 86 | /* ----- gonzalo ----- */ 87 | .gonzalo, .gonzalo .inner, .gonzalo b{background-image:url(http://oocss.org/css/skin/mod/gc.png);} 88 | /* ====== Background blocks ====== */ 89 | .sale .inner{background:red none;} 90 | .nicole .inner{background:#c01c41 none; color:#fff;} 91 | .nicole *, .login *{ color:#fff;} 92 | .highlight .inner{background:#e3e36f none;} 93 | .universe .inner{background:url(http://oocss.org/css/skin/mod/universe.png) repeat left top;} 94 | .foo .inner{background: url(http://oocss.org/css/skin/mod/universe_gray.png) repeat left top;} 95 | .login .inner{background: url(http://oocss.org/css/skin/mod/universe_login.png) repeat left top;} 96 | .comment .inner{background:#e2e2e2 none;} 97 | /* ====== Block headers and footers ====== */ 98 | .hd h1, .hd h2, .hd h3, .hd h4, .hd h5, .hd h6{padding: 5px 10px;} 99 | .section{background: #e9e9e9 url(http://oocss.org/css/skin/mod/header.png) repeat-x left bottom; color:#de2c72;font-size:120%;padding:5px 10px;} 100 | .section h1,.section h2,.section h3,.section h4,.section h5,.section h6{font-size:100%;color:#de2c72;padding:0;} 101 | .act{background-color:#e9e9e9;} 102 | .topper{background: #fff url(http://oocss.org/css/skin/mod/header_gradient_light.png) repeat-x left bottom;color: #4D4D4D;font-size:120%;padding:5px 10px;} 103 | .topper h1,.topper h2,.topper h3,.topper h4,.topper h5,.topper h6{font-size:100%;color:#4D4D4D;padding:0;} 104 | .bam{background: #00477a url(http://oocss.org/css/skin/mod/header_glossy.png) repeat-x left top;color: #fff;font-size:120%;padding:5px 10px;} 105 | .bam h1,.bam h2,.bam h3,.bam h4,.bam h5,.bam h6{font-size:100%;color:#fff;padding:0;} 106 | .gonz{background:url(http://oocss.org/css/skin/mod/gc_header.png) no-repeat left top;}/* messed up */ 107 | .online{background: #9a9400 url(http://oocss.org/css/skin/mod/online.png) repeat-x left top;color: #000;font-size:120%;padding:5px 10px;} 108 | .online h1,.online h2,.online h3,.online h4,.online h5,.online h6{font-size:100%;color:#000;padding:0;} 109 | .help{background: #b20029 url(http://oocss.org/css/skin/mod/help.png) repeat-x left top;color: #fff;font-size:120%;padding:5px 10px;} 110 | .help h1,.help h2,.help h3,.help h4,.help h5,.help h6{font-size:100%;color:#fff;padding:0;} 111 | .info{background: #636363 url(http://oocss.org/css/skin/mod/info.png) repeat-x left top;color: #fff;font-size:120%;padding:5px 10px;} 112 | .info h1,.info h2,.info h3,.info h4,.info h5,.info h6{font-size:100%;color:#fff;padding:0;} -------------------------------------------------------------------------------- /demo/libs/oocss/mod_skins_ex4.css: -------------------------------------------------------------------------------- 1 | /* **************** BLOCK SKINS ***************** */ 2 | /* ====== Contour blocks ====== */ 3 | /* remove *background-image:" to default to square corners for IE */ 4 | /* ----- simple (extends mod) ----- */ 5 | .simple .inner {border:1px solid #D7D7D7;-moz-border-radius: 7px;-webkit-border-radius: 7px;border-radius: 7px;} 6 | .simple b{*background-image:url(http://oocss.org/css/skin/mod/simple_corners.png);} 7 | /* ----- basic (extends mod) ----- */ 8 | .basic .inner {-moz-border-radius: 7px;-webkit-border-radius: 7px;border-radius: 7px;} 9 | .basic b{*background-image:url(http://oocss.org/css/skin/mod/round.png);} 10 | /* ----- simpleExt (extends mod) ----- */ 11 | .simpleExt,.simpleExt .inner{border:1px solid #c7c7c7;-moz-border-radius: 7px;-webkit-border-radius: 7px;border-radius: 7px; } 12 | .simpleExt .inner{border-color:#fff; border-width:4px; background-color:#e2e2e2;} 13 | .simpleExt b{*background-image:url(http://oocss.org/css/skin/mod/simple_extended.png);} 14 | .simpleExt .tl{left:-1px;top:-1px;height:12px; width:12px;} 15 | .simpleExt .tr{right:-1px;top:-1px;height:12px; width:12px;} 16 | .simpleExt .bl{left:-1px;bottom:-1px;height:12px; width:12px;margin-top:-12px;} 17 | .simpleExt .br{right:-1px;bottom:-1px;height:12px; width:12px;margin-top:-12px;} 18 | /* ----- me (extends mod) use for my comments ----- */ 19 | .me,.me .inner{border:1px solid #909090;-moz-border-radius: 5px;-webkit-border-radius: 5px;border-radius: 5px;} 20 | .me .inner{border-color:#d76a84;} 21 | .me b{*background-image:url(http://oocss.org/css/skin/mod/me.png);} 22 | .me .tl{left:-1px;top:-1px;} 23 | .me .tr{right:-1px;top:-1px;} 24 | .me .bl{left:-1px;bottom:-1px;} 25 | .me .br{right:-1px;bottom:-1px;} 26 | /* ----- noted (extends mod) ----- */ 27 | .noted,.noted .inner{border:1px solid #c2c2c2;-moz-border-radius: 5px;-webkit-border-radius: 5px;border-radius: 5px;} 28 | .noted .inner{border-color:#eded68;} 29 | .noted b{*background-image:url(http://oocss.org/css/skin/mod/noted.png);} 30 | .noted .tl{left:-1px;top:-1px;} 31 | .noted .tr{right:-1px;top:-1px;} 32 | .noted .bl{left:-1px;bottom:-1px;} 33 | .noted .br{right:-1px;bottom:-1px;} 34 | /* ----- grab (extends mod) ----- */ 35 | .grab .inner{border: 3px solid #00477a; border-bottom-width:10px;}/* can't be done w border radius */ 36 | .grab b{background-image:url(http://oocss.org/css/skin/mod/grab.png);} 37 | .grab .tl, .grab .tr{height:10px; width:10px;} 38 | .grab .bl, .grab .br{height:16px;/*if height is set, margin set*/margin-top:-16px;} 39 | /* ----- faq (extends mod) ----- */ 40 | .faq .inner{border: 3px solid #b20029; border-bottom-width:10px;}/* can't be done w border radius */ 41 | .faq b{background-image:url(http://oocss.org/css/skin/mod/faq.png);} 42 | .faq .tl, .faq .tr{height:10px; width:10px;} 43 | .faq .bl, .faq .br{height:16px;/*if height is set, margin set*/margin-top:-16px;} 44 | /* ----- onlinestore (extends mod) ----- */ 45 | .onlinestore .inner{border: 3px solid #9a9800; border-bottom-width:10px;}/* can't be done w border radius */ 46 | .onlinestore b{background-image:url(http://oocss.org/css/skin/mod/store.png);} 47 | .onlinestore .tl, .onlinestore .tr{height:10px; width:10px;} 48 | .onlinestore .bl, .onlinestore .br{height:16px;/*if height is set, margin set*/margin-top:-16px;} 49 | /* ----- about (extends mod) ----- */ 50 | .about .inner{border: 3px solid #494949; border-bottom-width:10px;}/* can't be done w border radius */ 51 | .about b{background-image:url(http://oocss.org/css/skin/mod/about.png);} 52 | .about .tl, .about .tr{height:10px; width:10px;} 53 | .about .bl, .about .br{height:16px;/*if height is set, margin set*/margin-top:-16px;} 54 | /* ----- talk (extends mod) ----- */ 55 | .talk,.talk .inner{border:1px solid #c7c7c7;-moz-border-radius: 5px;-webkit-border-radius: 5px;border-radius: 5px;} 56 | .talk .inner{border-color:#ededed;} 57 | .talk b{*background-image:url(http://oocss.org/css/skin/mod/talk.png);} 58 | .talk .tl{left:-1px;top:-1px;} 59 | .talk .tr{right:-1px;top:-1px;} 60 | .talk .bl{left:-1px;bottom:-1px;} 61 | .talk .br{right:-1px;bottom:-1px;} 62 | /* ----- photo (extends complex) ----- */ 63 | .photo .inner{border:solid 10px #fff;margin:0 4px;}/* muck with margins to change how the block will align with other blocks, any value between 0-10px */ 64 | .photo b{background-image:url(http://oocss.org/css/skin/mod/photo.png);} 65 | .photo .tr, .photo .tl{width:20px;} 66 | .photo .top, .photo .bottom{height:4px;margin-top:0px;} 67 | .photo .bl, .photo .br{height:16px;margin-top: -12px;} 68 | /* ----- flow (extends complex) ----- */ 69 | .flow{margin:6px;} 70 | .flow b{background-image:url(http://oocss.org/css/skin/mod/even.png);} 71 | .flow .inner{padding:0 4px;} 72 | .flow .top{height:4px;} 73 | .flow .bottom{height:4px;margin-top:-4px;} 74 | .flow .br,.flow .bl{height:10px;margin-top:-6px;}/* margin top = bottom height - corner height */ 75 | /* ----- shadow test (experimental attempt to match "flow" cross browser w no img)----- */ 76 | .boo{-webkit-box-shadow: 0px 0px 1px rgba(0,0,0,33);-moz-box-shadow: black 2px 2px 2px 2px;-moz-border-radius: 5px;-webkit-border-radius: 5px;border-radius: 5px;border:solid 1px #949494;background:#fff;} 77 | /* ----- .excerpt (extends complex) ----- */ 78 | .excerpt b{background-image:url(http://oocss.org/css/skin/mod/excerpt.png);} 79 | .excerpt .top{height:1px;} 80 | .excerpt .bottom{height:6px;margin-top:-6px;}/* margin top equal to - height of bottom */ 81 | .excerpt .br,.excerpt .bl{height:12px;margin-top:-6px;}/* margin top = bottom height - corner height */ 82 | /* ----- sommers (extends pop) ----- */ 83 | .sommers .inner{_border:3px solid #D7D7D7;}/*IE6 backup no alpha transparency */ 84 | .sommers,.sommers .inner,.sommers b{background-image:url(http://oocss.org/css/skin/mod/glow_7px.png);_background-image:none;} 85 | .sommers{/*margin:3px 10px 10px 3px;*/} 86 | /* ----- gblock (extends pop) ----- */ 87 | .gblock,.gblock .inner,.gblock b{background-image:url(http://oocss.org/css/skin/mod/gc.png);_background-image:none;} 88 | /* ====== Background blocks ====== */ 89 | .sale .inner{background-color:red;} 90 | .nicole .inner{background-color:#c01c41; color:#fff;} 91 | .nicole *, .login *{ color:#fff;} 92 | .highlight .inner{background-color:#e3e36f;} 93 | .universe .inner{background:url(http://oocss.org/css/skin/mod/universe.png) repeat left top;} 94 | .foo .inner{background: url(http://oocss.org/css/skin/mod/universe_gray.png) repeat left top;} 95 | .login .inner{background: url(http://oocss.org/css/skin/mod/universe_login.png) repeat left top;} 96 | .comment .inner{background-color:#e2e2e2;} 97 | /* ====== Block headers and footers ====== */ 98 | .section{background: #e9e9e9 url(http://oocss.org/css/skin/mod/header.png) repeat-x left bottom; color:#de2c72;font-size:120%;padding:5px 10px;} 99 | .section h1,.section h2,.section h3,.section h4,.section h5,.section h6{font-size:100%;color:#de2c72;padding:0;} 100 | .act{background-color:#e9e9e9;} 101 | .topper{background: #fff url(http://oocss.org/css/skin/mod/header_gradient_light.png) repeat-x left bottom;color: #4D4D4D;font-size:120%;padding:5px 10px;} 102 | .topper h1,.topper h2,.topper h3,.topper h4,.topper h5,.topper h6{font-size:100%;color:#4D4D4D;padding:0;} 103 | .bam{background: #00477a url(http://oocss.org/css/skin/mod/header_glossy.png) repeat-x left top;color: #fff;font-size:120%;padding:5px 10px;} 104 | .bam h1,.bam h2,.bam h3,.bam h4,.bam h5,.bam h6{font-size:100%;color:#fff;padding:0;} 105 | .online{background: #9a9400 url(http://oocss.org/css/skin/mod/online.png) repeat-x left top;color: #000;font-size:120%;padding:5px 10px;} 106 | .online h1,.online h2,.online h3,.online h4,.online h5,.online h6{font-size:100%;color:#000;padding:0;} 107 | .help{background: #b20029 url(http://oocss.org/css/skin/mod/help.png) repeat-x left top;color: #fff;font-size:120%;padding:5px 10px;} 108 | .help h1,.help h2,.help h3,.help h4,.help h5,.help h6{font-size:100%;color:#fff;padding:0;} 109 | .info{background: #636363 url(http://oocss.org/css/skin/mod/info.png) repeat-x left top;color: #fff;font-size:120%;padding:5px 10px;} 110 | .info h1,.info h2,.info h3,.info h4,.info h5,.info h6{font-size:100%;color:#fff;padding:0;} 111 | -------------------------------------------------------------------------------- /demo/libs/oocss/readme.md: -------------------------------------------------------------------------------- 1 | libraries.css - found a missing font-family on line 143 2 | mod_skins.css - found a missing "*" on line 12, so comment was incomplete 3 | -------------------------------------------------------------------------------- /demo/libs/oocss/template.css: -------------------------------------------------------------------------------- 1 | /* **************** TEMPLATE ***************** */ 2 | /* ====== Page Head, Body, and Foot ====== */ 3 | body{_text-align:center;}/* IE5.5 */ 4 | .body{overflow:hidden; _overflow:visible; _zoom:1;} 5 | .page{margin: 0 auto; width: 950px;_text-align:left;} /* wraps other template elems to set width */ /* text-align IE5.5 */ 6 | /* "old school" and "liquid" extend page to allow for different page widths */ 7 | .oldSchool{width:750px;} 8 | .gs960{width:960px;} 9 | .liquid{extends:.page; width: auto;margin:0;} 10 | /* ====== Columns ====== */ 11 | .main{overflow: hidden;_overflow:visible;_zoom:1;} 12 | .leftCol{float:left; width:250px;_margin-right:-3px;} 13 | .rightCol{float:right; width: 300px;_margin-left:-3px;} 14 | /* extend columns to allow for common column widths */ 15 | .gMail{width:160px;} 16 | .gCal{width:180px;} 17 | .yahoo{width:240px;} 18 | .myYahoo{width:300px;} -------------------------------------------------------------------------------- /demo/libs/oocss/template_debug.css: -------------------------------------------------------------------------------- 1 | /* **************** TEMPLATE DEBUG ***************** */ 2 | .body{background-color:red;} 3 | .page{background-color:orange;} 4 | .main{background-color:yellow;} 5 | .leftCol{background-color:lime;} 6 | .rightCol{background-color:aqua;} -------------------------------------------------------------------------------- /demo/libs/reset.css: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ 2 | v2.0 | 20110126 3 | License: none (public domain) 4 | */ 5 | 6 | html, body, div, span, applet, object, iframe, 7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 8 | a, abbr, acronym, address, big, cite, code, 9 | del, dfn, em, img, ins, kbd, q, s, samp, 10 | small, strike, strong, sub, sup, tt, var, 11 | b, u, i, center, 12 | dl, dt, dd, ol, ul, li, 13 | fieldset, form, label, legend, 14 | table, caption, tbody, tfoot, thead, tr, th, td, 15 | article, aside, canvas, details, embed, 16 | figure, figcaption, footer, header, hgroup, 17 | menu, nav, output, ruby, section, summary, 18 | time, mark, audio, video { 19 | margin: 0; 20 | padding: 0; 21 | border: 0; 22 | font-size: 100%; 23 | font: inherit; 24 | vertical-align: baseline; 25 | } 26 | /* HTML5 display-role reset for older browsers */ 27 | article, aside, details, figcaption, figure, 28 | footer, header, hgroup, menu, nav, section { 29 | display: block; 30 | } 31 | body { 32 | line-height: 1; 33 | } 34 | ol, ul { 35 | list-style: none; 36 | } 37 | blockquote, q { 38 | quotes: none; 39 | } 40 | blockquote:before, blockquote:after, 41 | q:before, q:after { 42 | content: ''; 43 | content: none; 44 | } 45 | table { 46 | border-collapse: collapse; 47 | border-spacing: 0; 48 | } -------------------------------------------------------------------------------- /demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "css-purge-demo-app", 3 | "version": "1.0.0", 4 | "description": "Demo usage", 5 | "keywords": "css-purge demo app", 6 | "main": "css-purge-demo-app.js", 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "author": "Red Blueprint Technologies", 11 | "license": "MIT", 12 | "dependencies": { 13 | "css-purge": "^3.1.6" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /demo/readme.md: -------------------------------------------------------------------------------- 1 | 2 | CSS-PURGE Demo App 3 | ================== 4 | 5 | Requires [Node JS](https://nodejs.org) 6 | 7 | 1. ```npm install``` 8 | 9 | 2. ```node css-purge-demo-app.js``` 10 | 11 | 12 | 13 | License 14 | ----- 15 | 16 | (The MIT License) 17 | 18 | Copyright (c) 2017 [Red Blueprint Technologies](http://redblueprint.com) 19 | 20 | Permission is hereby granted, free of charge, to any person obtaining 21 | a copy of this software and associated documentation files (the 22 | 'Software'), to deal in the Software without restriction, including 23 | without limitation the rights to use, copy, modify, merge, publish, 24 | distribute, sublicense, and/or sell copies of the Software, and to 25 | permit persons to whom the Software is furnished to do so, subject to 26 | the following conditions: 27 | 28 | The above copyright notice and this permission notice shall be 29 | included in all copies or substantial portions of the Software. 30 | 31 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 32 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 33 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 34 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 35 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 36 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 37 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /demo/test1.css: -------------------------------------------------------------------------------- 1 | .colour { 2 | color: #aaaaaa; 3 | background-color: #ffeedd; 4 | outline-color: yellow; 5 | border-color: blanchedalmond!important; 6 | border-right-color: red; 7 | } 8 | 9 | .borderRadius5 { 10 | 11 | border-top-left-radius: 5px; 12 | border-top-right-radius: 5px; 13 | border-bottom-left-radius: 10px; 14 | border-bottom-right-radius: 10px; 15 | } 16 | 17 | .borderRadius4 { 18 | 19 | border-top-left-radius: 5px; 20 | border-top-right-radius: 20px; 21 | border-bottom-left-radius: 10px; 22 | border-bottom-right-radius: 20px; 23 | } 24 | 25 | .borderRadius3 { 26 | 27 | border-top-left-radius: 20px; 28 | border-top-right-radius: 40px; 29 | border-bottom-left-radius: 20px; 30 | border-bottom-right-radius: 40px; 31 | } 32 | 33 | .borderRadius2 { 34 | 35 | border-top-left-radius: 2em; 36 | border-top-right-radius: 2em; 37 | border-bottom-left-radius: 2em; 38 | border-bottom-right-radius: 2em; 39 | } 40 | 41 | .borderRadius1 { 42 | border-top-left-radius: 2em; 43 | border-top-right-radius: 2em; 44 | border-bottom-left-radius: 2em; 45 | border-bottom-right-radius: 2em; 46 | border-radius: 5px!important; 47 | } 48 | 49 | .border4 { 50 | 51 | border-top-width: 1px; 52 | border-top-style: solid; 53 | border-top-color: aquamarine; 54 | border-right-width: 1px; 55 | border-right-style: solid; 56 | border-right-color: aquamarine; 57 | border-bottom-width: 1px; 58 | border-bottom-style: solid; 59 | border-bottom-color: aquamarine; 60 | border-left-width: 1px; 61 | border-left-style: solid; 62 | border-left-color: aquamarine; 63 | border-width: 2px; 64 | border-style: dotted; 65 | border-color: red; 66 | } 67 | 68 | .border3 { 69 | 70 | border-top-width: 1px; 71 | border-top-style: solid; 72 | border-top-color: aquamarine; 73 | border-right-width: 1px; 74 | border-right-style: solid; 75 | border-right-color: aquamarine; 76 | border-bottom-width: 1px; 77 | border-bottom-style: solid; 78 | border-bottom-color: aquamarine; 79 | border-left-width: 1px; 80 | border-left-style: solid; 81 | border-left-color: aquamarine; 82 | } 83 | 84 | .border2 { 85 | border-width: 1px!important; 86 | border-style: solid; 87 | border-color: #ffaaff; 88 | } 89 | 90 | .border1 { 91 | border: 1px solid #7fffd4; 92 | } 93 | 94 | .borderLeft2 { 95 | border-left-width: 1px; 96 | border-left-style: solid; 97 | border-left-color: aquamarine!important; 98 | } 99 | 100 | .borderLeft1 { 101 | border-left: 1px solid #7fffd4; 102 | } 103 | 104 | .borderBottom2 { 105 | border-bottom-width: 1px; 106 | border-bottom-style: solid; 107 | border-bottom-color: aquamarine; 108 | } 109 | 110 | .borderBottom1 { 111 | border-bottom: 1px solid #7fffd4; 112 | } 113 | 114 | .borderRight2 { 115 | border-right-width: 1px; 116 | border-right-style: solid!important; 117 | border-right-color: aquamarine; 118 | } 119 | 120 | .borderRight1 { 121 | border-right: 1px solid #7fffd4; 122 | } 123 | 124 | .borderTop2 { 125 | border-top-width: 1px; 126 | border-top-style: solid!important; 127 | border-top-color: aquamarine; 128 | } 129 | 130 | .borderTop1 { 131 | border-top: 1px solid #7fffd4; 132 | } 133 | 134 | 135 | .outline3 { 136 | outline-width: thin; 137 | outline-style: dotted; 138 | outline: lightblue solid thick; 139 | outline-color: aquamarine; 140 | } 141 | 142 | .outline2 { 143 | outline-width: thin; 144 | outline-style: dotted; 145 | outline-color: aquamarine; 146 | outline: #00FF00 dotted thick; 147 | } 148 | 149 | .outline1 { 150 | outline: #00FF00 dotted thick!important; 151 | } 152 | 153 | ul.liststyle4 { 154 | list-style-image: url('sqpurple.gif'); 155 | list-style-position: inside; 156 | list-style: square outside url("sqpurple2.gif"); 157 | list-style-type: circle; 158 | } 159 | 160 | ul.liststyle3 { 161 | list-style: square url("sqpurple.gif"); 162 | } 163 | 164 | ul.liststyle2 { 165 | list-style-image: url('sqpurple.gif'); 166 | list-style-position: inside; 167 | list-style-type: circle!important; 168 | } 169 | 170 | ul.liststyle1 { 171 | 172 | list-style: none; 173 | list-style-type: circle; 174 | } 175 | 176 | .font4 { 177 | font-style: inherit; //inherit prevents shorten 178 | font-family: helvetica, arial, sans-serif; 179 | font-variant: small-caps; 180 | font-weight: bold!important; 181 | font-size: 16px; 182 | line-height: 1; 183 | } 184 | 185 | .font3 { 186 | font-family: helvetica, arial, sans-serif; 187 | font-style: italic; 188 | font-variant: small-caps; 189 | font: oblique 500 3em Times New Roman, Georgia, Serif; 190 | font-weight: bold; 191 | font-size: 16px; 192 | font: oblique 900 6em Verdana, sans-serif; 193 | font-stretch: extra-condensed; 194 | } 195 | 196 | .font2 { 197 | font-family: helvetica, arial, sans-serif; 198 | font-style: italic; 199 | font-variant: small-caps; 200 | font-weight: bold!important; 201 | font-size: 16px; 202 | line-height: 1; 203 | } 204 | 205 | .font1 { 206 | 207 | font: 0/0 a; 208 | } 209 | 210 | .padding6 { 211 | padding-top: 60em; 212 | padding-right: 60em; 213 | padding-bottom: 60em; 214 | padding-left: 60em; 215 | color: red; 216 | } 217 | 218 | .padding5 { 219 | 220 | padding: 10px; 221 | padding-top: 60em; 222 | padding-bottom: 60em; 223 | color: lime; 224 | } 225 | 226 | .padding4 { 227 | 228 | padding: 10px; 229 | padding-right: 60em; 230 | padding-left: 60em; 231 | color: crimson; 232 | } 233 | 234 | .padding3 { 235 | 236 | padding-right: 30em; 237 | padding-left: 30em; 238 | padding-top: 10em; 239 | padding-bottom: 20em; 240 | color: slateblue; 241 | } 242 | 243 | .padding2 { 244 | 245 | padding-top: 30em; 246 | padding: 10px; 247 | padding-right: 40em; 248 | padding: 20px; 249 | padding-bottom: 50em; 250 | padding-left: 60em; 251 | color: green; 252 | } 253 | 254 | .padding1 { 255 | 256 | color: green; 257 | 258 | padding: 10px 20px 30px; 259 | padding-top: 30em; 260 | padding-right: 40em!important; 261 | padding-bottom: 50em; 262 | padding-left: 60em; 263 | 264 | color: lightgreen; 265 | } 266 | 267 | .margin6 { 268 | margin-top: 60em; 269 | margin-right: 60em; 270 | margin-bottom: 60em; 271 | margin-left: 60em; 272 | color: red; 273 | } 274 | 275 | .margin5 { 276 | 277 | margin: 10px; 278 | margin-top: 60em; 279 | margin-bottom: 60em; 280 | color: lime; 281 | } 282 | 283 | .margin4 { 284 | 285 | margin: 10px; 286 | margin-right: 60em; 287 | margin-left: 60em; 288 | color: crimson; 289 | } 290 | 291 | .margin3 { 292 | 293 | margin-right: 30em; 294 | margin-left: 30em; 295 | margin-top: 10em; 296 | margin-bottom: 20em; 297 | color: slateblue; 298 | } 299 | 300 | .margin2 { 301 | 302 | margin-top: 30em; 303 | margin: 10px; 304 | margin-right: 40em; 305 | margin: 20px; 306 | margin-bottom: 50em; 307 | margin-left: 60em; 308 | color: green; 309 | } 310 | 311 | .margin1 { 312 | 313 | color: green; 314 | 315 | margin: 10px 20px 30px; 316 | margin-top: 30em; 317 | margin-right: 40em!important; 318 | // margin-bottom: 50em; //inline comments get removed cos they're not standard css comments 319 | margin-left: 60em; 320 | 321 | color: lightgreen; 322 | } 323 | 324 | 325 | #multiplebackgrounds { 326 | background-image: url(img_blue_flower.gif), url(paper.gif); 327 | background-position: right bottom, left top; 328 | background-repeat: no-repeat, repeat; 329 | background-color: blue, slateblue; 330 | background-attachment: fixed, scroll; 331 | } 332 | 333 | .rgba { 334 | background-color: #BABDC2; 335 | background-color: rgba(0, 0, 0, 0.1); 336 | color: white; 337 | margin: 0px 0px 0px 15px; 338 | padding: 0.2rem 1rem; 339 | border: 1px solid #D9DCDD; 340 | } 341 | 342 | 343 | .background0 { 344 | 345 | min-height: 1080px; 346 | background-color: aquamarine; 347 | color: white; 348 | background: url("aquamarine.jpg") no-repeat; 349 | background-attachment: fixed; 350 | background-repeat: no-repeat; 351 | background-size: cover; 352 | overflow: hidden; 353 | } 354 | 355 | 356 | .background1 { 357 | 358 | border-top-width: 1px; 359 | border-top-style: solid; 360 | border-top-color: aquamarine; 361 | border-right-width: 1px; 362 | border-right-style: solid; 363 | border-right-color: aquamarine; 364 | border-bottom-width: 1px; 365 | border-bottom-style: solid; 366 | border-bottom-color: aquamarine; 367 | border-left-width: 1px; 368 | border-left-style: solid; 369 | border-left-color: aquamarine; 370 | border-width: 2px; 371 | border-style: dotted; 372 | border-color: aquamarine; 373 | 374 | 375 | background: red url("image1.jpg"); 376 | background-image: url('image1-2.png'); 377 | background-color: blue; 378 | background: green repeat-x; 379 | background-color: white; 380 | background: blue url("image1-3.jpg"); 381 | background-attachment: fixed; 382 | background-position: inherit; 383 | background-repeat: no-repeat; 384 | background-size: cover; 385 | } 386 | 387 | .background2_extended { 388 | background: lightgreen url("image2.jpg"); 389 | 390 | background-attachment: fixed; 391 | background-position: inherit; 392 | background-repeat: no-repeat; 393 | background-size: cover; 394 | } 395 | 396 | p { 397 | 398 | border-top-width: 1px; 399 | border-top-style: solid; 400 | border-top-color: aquamarine; 401 | border-right-width: 1px; 402 | border-right-style: solid; 403 | border-right-color: aquamarine; 404 | border-bottom-width: 1px; 405 | border-bottom-style: solid; 406 | border-bottom-color: aquamarine; 407 | border-left-width: 1px; 408 | border-left-style: solid; 409 | border-left-color: aquamarine; 410 | border-width: 2px; 411 | border-style: dotted; 412 | border-color: aquamarine; 413 | 414 | margin-right: 40em; 415 | margin: 10px 20px 30px 40px; 416 | margin-left: 60em; 417 | margin-top: 30em; 418 | margin-bottom: 50em; 419 | 420 | color: blue; 421 | 422 | font-style: italic; 423 | font-variant: small-caps; 424 | font-weight: bold; 425 | font-size: 16px; 426 | font-stretch: extra-condensed; 427 | 428 | 429 | border-top-left-radius: 5px; 430 | border-top-right-radius: 5px; 431 | border-bottom-left-radius: 5px; 432 | border-bottom-right-radius: 5px; 433 | 434 | padding-left: 60em; 435 | padding-right: 40em; 436 | padding: 10px; 437 | padding-top: 30em; 438 | padding-bottom: 50em; 439 | 440 | background-color: white; 441 | background: red; 442 | background-image: url('deepskyblueimage.jpg'); 443 | background-position: center center; 444 | background-repeat: repeat-x; 445 | background-attachment: fixed; 446 | 447 | outline-width: thin; 448 | outline-style: dotted; 449 | outline-color: deepskyblue; 450 | 451 | list-style-type: disc; 452 | list-style-position: inside; 453 | list-style-image: url('dot.jpg'); 454 | 455 | 456 | 457 | } -------------------------------------------------------------------------------- /demo/test10.css: -------------------------------------------------------------------------------- 1 | .panel1 { 2 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA2CAMAAAC/bkrSAAAAV1BMVEVHcEy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLRI2JfcAAAAHHRSTlMAZTRs/gNpEOmq9i1AEsp5jUjfVAgml+4qHtKcDjTlBwAAAR1JREFUSMfl1tuOgjAUheGFMm1FAFXAOfzv/5xzoUABQsvEi4muKxPzAaE7myVJtiozopKVlZUk6ezYEHeWpDxlU9Jcsg6cKRSVwjhwVhW4RtFpHFQqIdGGJFAqg2ILsnAToE0BXhytj9N9fGYoMILueei6/njXtzmn/45qu5J6GbWrayltl9AutLt2z0I6re7m7PT+E/E3VOfXpE8cKmZnEUafl9mZ+YvF+/eS9/eZGw81o3n97tAJcPvdIz8AhwHli1uuzsB9dVcwKXD48Gfv5pnu65gD+6kJvYhkGO/BhJABjvef+97EI89EI9/EopGJRGMThyYmVD4McJyaUM0xQDs1oUJlAICReVQ3G0BjE1cSpyamjs5NuPjOzC/J/mac5mZAkwAAAABJRU5ErkJggg=="); 3 | } 4 | 5 | .panel2 { 6 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAACuUExURUdwTP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7B471YAAAA5dFJOUwDwl07+9voB/Qa9quveduKFn0INwvsUowlbjtFuAikbL81lfpOcH3tJN9muYFNpWDyL5xC3ybDVIhk4hiwAAAFsSURBVBgZtcDpcppQAIbhDxE4oCiuuOGuUc2qSdv3/m+sM+k0CB7H/MmjH9UZtsZ14526yWug27YVjy/xJJRd9uAB/kdaqRxjgMOrbM4R0H0Z6NN2dYLeRNfOY2julBskBhKVhV2I+ipoO7BUSQJRqJK5gz9XwbRHfNYVt0pXBSm0ZZFCWxf6Pu+ymfm868IzuLKq4XeUq+GFshrCTrnfdGX3BxrKObRklxnWykFFNzhslHPY6AbDWrkDkexm8KDcESeT1RO4yk2gLasW5qzczFCTTd8j0qUjZi6LEbi6NDcsQl3Z91gEKhhBGqhk28TfqyhcQBqqYBpDQ2X9AyzmymVLD6jvVBL0P6CX7vXPYDjmk++qJAjfesCpljQao8gDmisA/0lXpjXDl/qqoxaAedG12eRX04A3rrihpKwFYIay6wz0X7YBMI+6K6gAmKXuCtYA1WfdFYwAqo+67w2grm9IgFjf0XDitn7AX5YQNKt9rKhYAAAAAElFTkSuQmCC"); 7 | } -------------------------------------------------------------------------------- /demo/test11.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: red; 3 | } 4 | 5 | h1, h2 { 6 | color: purple; 7 | } 8 | 9 | h1 { 10 | color: black; 11 | } -------------------------------------------------------------------------------- /demo/test12.css: -------------------------------------------------------------------------------- 1 | .panel { 2 | border-width: 1px 0px 2px; 3 | border-style: solid; 4 | border-color: black 5 | } 6 | -------------------------------------------------------------------------------- /demo/test13.css: -------------------------------------------------------------------------------- 1 | body { 2 | display: flex; 3 | } 4 | 5 | div { 6 | background: yellow; 7 | } 8 | 9 | @media (orientation: landscape) { 10 | body { 11 | flex-direction: row; 12 | } 13 | } 14 | 15 | @media (orientation: portrait) { 16 | body { 17 | flex-direction: column; 18 | } 19 | } -------------------------------------------------------------------------------- /demo/test14.css: -------------------------------------------------------------------------------- 1 | @-moz-keyframes blinker,@-webkit-keyframes blinker,@keyframes blinker{ 2 | 0%{opacity:1;} 3 | 50%{opacity:0;} 4 | 100%{opacity:1;} 5 | } -------------------------------------------------------------------------------- /demo/test16.css: -------------------------------------------------------------------------------- 1 | .class-1 { 2 | color: purple; 3 | } 4 | 5 | .class-1 .class-1-1 { 6 | padding-top: 10px; 7 | padding-bottom: 10px; 8 | padding-right: 10px; 9 | } 10 | 11 | .class-1 .class-1-2 { 12 | padding-top: 10px; 13 | padding-bottom: 10px; 14 | } 15 | 16 | .class-1 .class-1-2 { 17 | padding-top: 10px; 18 | padding-bottom: 10px; 19 | padding-left: 10px; 20 | padding-right: 10px; 21 | } 22 | 23 | .class-1 .class-1-3 { 24 | padding-top: 10px; 25 | padding-bottom: 10px; 26 | padding-right: 10px; 27 | } 28 | 29 | .class-1 .class-1-1 .class-2-1 .class-3-1 { 30 | color: red; 31 | background-color: red; 32 | } 33 | 34 | .class-1 .class-1-1 .class-2-1 .class-3-2 { 35 | color: red; 36 | background-color: green; 37 | } 38 | 39 | .class-1 .class-1-1 .class-2-1 .class-3-3 { 40 | color: red; 41 | background-color: blue; 42 | } 43 | -------------------------------------------------------------------------------- /demo/test2.css: -------------------------------------------------------------------------------- 1 | /* first line - step aside comment for the charset */ 2 | @charset "UTF-8"; /* Set the encoding of the style sheet to Unicode UTF-8 */ 3 | @charset 'iso-8859-15'; /* Invalid, wrong quoting style used */ 4 | @charset "UTF-8"; /* Invalid, more than one space */ 5 | @charset "UTF-8"; /* Invalid, there is a character (a space) before the at-rule */ 6 | 7 | @charset UTF-8; 8 | 9 | @import url("fineprint.css") print; 10 | @import url("bluish.css") projection, tv; 11 | @import 'custom.css'; 12 | @import url("chrome://communicator/skin/"); 13 | @import "common.css" screen, projection; 14 | @import url('landscape.css') screen and (orientation:landscape); 15 | 16 | body { filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFF2F2F2', endColorstr='#FFFFFFFF'); } 17 | 18 | // test 19 | #grad { 20 | background: red; /* For browsers that do not support gradients */ 21 | background: -webkit-linear-gradient(blue, yellow); /* For Safari 5.1 to 6.0 */ 22 | background: -o-linear-gradient(aliceblue, yellow); /* For Opera 11.1 to 12.0 */ 23 | background: -moz-linear-gradient(red, yellow); /* For Firefox 3.6 to 15 */ 24 | background: linear-gradient(aliceblue, aliceblue); /* Standard syntax */ 25 | background: linear-gradient(yellow, yellow); /* Standard syntax */ 26 | } 27 | 28 | /* comment above a rule to be removed */ 29 | @supports (--foo: red) { 30 | 31 | } 32 | 33 | @supports (--foo: green) { 34 | body { 35 | color: var(--varName); 36 | } 37 | body { 38 | color: red; 39 | } 40 | } 41 | /*shweet*/ 42 | @supports (--foo: green) { 43 | body { 44 | color: var(--varName); 45 | } 46 | body { 47 | color: red; 48 | color: green; 49 | color: blue; 50 | } 51 | } 52 | 53 | .panelcolors { 54 | 55 | padding: 0rem; 56 | color: #aaaaaa; 57 | } 58 | .panel { 59 | color: red; 60 | background-color: blue; 61 | } 62 | .panel { 63 | color: green; 64 | background-color: green; 65 | } 66 | .panel { 67 | color: blue; 68 | background-color: red; 69 | } 70 | 71 | @document url(http://www.w3.org/), 72 | url-prefix(http://www.w3.org/Style/), 73 | domain(mozilla.org), 74 | regexp("https:.*") { 75 | 76 | body { 77 | color: purple; 78 | background-color: yellow; 79 | } 80 | body { 81 | color: red; 82 | background-color: green; 83 | background-color: blue; 84 | } 85 | } 86 | 87 | @media screen (max-width: 900px) { 88 | 89 | } 90 | @media screen (max-width: 700px) { 91 | 92 | .panel { 93 | color: red; 94 | } 95 | .panel { 96 | color: red; 97 | } 98 | } 99 | 100 | @media screen (max-width: 700px) { 101 | 102 | .panel { 103 | color: red; 104 | } 105 | .panel { 106 | color: red; 107 | } 108 | } 109 | @page { 110 | margin: 1cm; 111 | } 112 | @page { 113 | margin: 2cm; 114 | } -------------------------------------------------------------------------------- /demo/test3.css: -------------------------------------------------------------------------------- 1 | .lists { 2 | 3 | list-style-type: disc; 4 | list-style-position: inside!important; 5 | list-style-image: url('dot.jpg'); 6 | } 7 | 8 | a:focus { 9 | outline: -webkit-focus-ring-color auto!important; 10 | outline-offset: -2px 11 | } 12 | 13 | .welcome .header .header-background.background-p-1 { 14 | background: url(https://storage.googleapis.com/sale_spot_pub_usc/ui/images/backgrounds/shopping/bk_1.jpg) center center no-repeat; 15 | -webkit-background-size: cover; 16 | -moz-background-size: cover; 17 | -o-background-size: cover; 18 | background-size: cover 19 | } 20 | 21 | .sale-item .sale-item-name, 22 | .sale-item h1.sale-item-name { 23 | color: #000; 24 | font-size: 1.2em!important; 25 | margin: 0!important; 26 | font-family: ubuntu!important; 27 | font-weight: lighter!important; 28 | text-align: left; 29 | display: block 30 | } 31 | 32 | .clock.clock-dark .hours, 33 | .clock.clock-dark .minutes, 34 | .clock.clock-dark .seconds { 35 | background: #000 36 | } 37 | 38 | .base .left-panel { 39 | position: fixed; 40 | top: 0; 41 | left: -276px; 42 | width: 276px; 43 | height: 100%; 44 | padding: 10px; 45 | overflow-x: hidden; 46 | overflow-y: auto; 47 | z-index: 3; 48 | background-color: #333!important; 49 | -webkit-transition: background-image .3s cubic-bezier(.55, 0, .1, 1); 50 | -o-transition: background-image .3s cubic-bezier(.55, 0, .1, 1); 51 | transition: background-image .3s cubic-bezier(.55, 0, .1, 1); 52 | background-repeat: repeat 53 | } 54 | 55 | input[type=checkbox]:focus, 56 | input[type=file]:focus, 57 | input[type=radio]:focus { 58 | outline: -webkit-focus-ring-color auto; 59 | outline-offset: -2px 60 | } 61 | 62 | .btn.active.focus, 63 | .btn.active:focus, 64 | .btn.focus, 65 | .btn:active.focus, 66 | .btn:active:focus, 67 | .btn:focus { 68 | outline: -webkit-focus-ring-color auto; 69 | outline-offset: -2px 70 | } 71 | 72 | 73 | button.close { 74 | padding: 0; 75 | cursor: pointer; 76 | background: 0 0; 77 | border: 0; 78 | -webkit-appearance: none 79 | } 80 | 81 | .modal { 82 | display: none; 83 | overflow: hidden; 84 | position: fixed; 85 | top: 0; 86 | right: 0; 87 | bottom: 0; 88 | left: 0; 89 | z-index: 1050; 90 | -webkit-overflow-scrolling: touch; 91 | outline: 0 92 | } 93 | 94 | .modal-content { 95 | position: relative; 96 | background-color: #fff; 97 | border: 1px solid #999; 98 | border: 1px solid rgba(0, 0, 0, .2); 99 | border-radius: 6px; 100 | -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); 101 | box-shadow: 0 3px 9px rgba(0, 0, 0, .5); 102 | background-clip: padding-box; 103 | outline: 0 104 | } 105 | -------------------------------------------------------------------------------- /demo/test4.css: -------------------------------------------------------------------------------- 1 | 2 | .loading-red, 3 | .loading-white { 4 | background-image: url(https://storage.googleapis.com/sale_spot_pub_usc/ui/images/loading.gif) 5 | } 6 | -------------------------------------------------------------------------------- /demo/test5.css: -------------------------------------------------------------------------------- 1 | .panel { 2 | background-color: blue; 3 | } 4 | 5 | .panel { 6 | background-color: red; 7 | } 8 | 9 | 10 | @media (max-width: 400) { 11 | 12 | .panel { 13 | background-color: green; 14 | } 15 | 16 | .panel { 17 | background-color: red; 18 | } 19 | } 20 | 21 | @media (max-width: 400) { 22 | 23 | .panel { 24 | background-color: green; 25 | } 26 | 27 | .panel { 28 | background-color: red; 29 | } 30 | } -------------------------------------------------------------------------------- /demo/test6.css: -------------------------------------------------------------------------------- 1 | .footer { 2 | padding: 50px 0; 3 | background: #d6d6d6; 4 | } 5 | 6 | .footer__navigation ul { 7 | list-style-type: none; 8 | padding: 0; 9 | margin: 0; 10 | display: -webkit-box; 11 | display: -ms-flexbox; 12 | display: flex; 13 | -ms-flex-wrap: wrap; 14 | flex-wrap: wrap; 15 | margin: 0 -15px; 16 | } 17 | 18 | .footer__navigation li { 19 | padding: 0 15px; 20 | } 21 | 22 | .navigation__main>nav { 23 | display: -webkit-box; 24 | display: -ms-flexbox; 25 | display: flex; 26 | margin: 10px -15px 0; 27 | } 28 | 29 | .footer { 30 | padding: 50px 0; 31 | background: #d6d6d6; 32 | } 33 | 34 | .footer__navigation ul { 35 | list-style-type: none; 36 | padding: 0; 37 | margin: 0; 38 | display: -webkit-box; 39 | display: -ms-flexbox; 40 | display: flex; 41 | -ms-flex-wrap: wrap; 42 | flex-wrap: wrap; 43 | margin: 0 -15px; 44 | } 45 | 46 | .footer__navigation li { 47 | padding: 0 15px; 48 | } 49 | 50 | .navigation__main>nav { 51 | display: -webkit-box; 52 | display: -ms-flexbox; 53 | display: flex; 54 | margin: 10px -15px 0; 55 | } -------------------------------------------------------------------------------- /demo/test7.css: -------------------------------------------------------------------------------- 1 | 2 | .panel { 3 | background-color: #FFF; 4 | border-top-left-radius: 5px; 5 | border-top-right-radius: 5px; 6 | border-bottom-left-radius: 5px; 7 | border-bottom-right-radius: 5px; 8 | border-bottom-right-radius: 5px; 9 | border-top-right-radius: 5px; 10 | border-bottom-left-radius: 5px; 11 | border-top-left-radius: 5px; 12 | margin-bottom: 20px; 13 | padding: 20px; 14 | clear: both; /*crossed*/ 15 | background-color: #04003F; 16 | position: relative; 17 | text-decoration: none; 18 | position: relative; 19 | padding-bottom: 60px; 20 | overflow: hidden; 21 | clear: none; 22 | overflow: hidden; /*crossed*/ 23 | } -------------------------------------------------------------------------------- /demo/test8.css: -------------------------------------------------------------------------------- 1 | 2 | .class-1 .class-1-1 { 3 | padding-top: 10px; 4 | padding-left: 10px; 5 | } 6 | 7 | .class-1 .class-1-2 .class-1-2-3 { 8 | padding-top: 10px; 9 | padding-right: 10px; 10 | } 11 | 12 | .class-1 .class-1-3, .class-1 .class-1-4 { 13 | padding-top: 10px; 14 | padding-right: 20px; 15 | } 16 | 17 | .class-1 .class-1-5 { 18 | padding-top: 10px; 19 | padding-right: 10px; 20 | } 21 | 22 | .class-1 .class-1-6, .class-1 .class-1-2 { 23 | padding-top: 10px; 24 | padding-right: 10px; 25 | padding-left: 10px; 26 | } 27 | 28 | div { 29 | padding-top: 10px; 30 | padding-right: 10px; 31 | } 32 | 33 | 34 | div.class-1 .class-1-5 { 35 | padding-top: 10px; 36 | padding-left: 10px; 37 | } 38 | 39 | div.class-1 .class-1-6 { 40 | padding-top: 10px; 41 | padding-right: 10px; 42 | } 43 | 44 | .class-1 .class-1-2 .class-1-2-3 .class-1-2-3-4 { 45 | padding-top: 10px; 46 | padding-right: 10px; 47 | } -------------------------------------------------------------------------------- /demo/test9.css: -------------------------------------------------------------------------------- 1 | div:before { 2 | content: " "; 3 | width: 0; 4 | height: 0; 5 | position: absolute; 6 | border-style: solid; 7 | border-width: 0 10px 10px 0; 8 | border-color: #494949 ; 9 | left: 0px; 10 | bottom: -10px; 11 | } -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/css-purge'); -------------------------------------------------------------------------------- /lib/css-purge-stream.js: -------------------------------------------------------------------------------- 1 | var through2 = require('through2'); 2 | var cssPurge = require('./css-purge'); 3 | 4 | 5 | //for streams 6 | function write(buffer, encoding, next) { 7 | 8 | cssPurge.purgeCSS(buffer.toString(), { 9 | trim : true, 10 | shorten : true, 11 | verbose : false, 12 | }, function(error, result){ 13 | 14 | this.push(result); 15 | 16 | next(); 17 | }); 18 | } 19 | function end(done) { 20 | 21 | done(); 22 | } 23 | 24 | process.stdin.pipe(through2(write, end)).pipe(process.stdout); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "css-purge", 3 | "version": "3.1.8", 4 | "description": "A CSS tool written in Node JS as a command line app or library for the purging, burning, reducing, shortening, compressing, cleaning, trimming and formatting of duplicate, extra, excess or bloated CSS.", 5 | "homepage": "http://rbtech.github.io/css-purge", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/rbtech/css-purge.git" 9 | }, 10 | "bugs": { 11 | "url": "https://github.com/rbtech/css-purge/issues" 12 | }, 13 | "readmeFilename": "README.md", 14 | "main": "./lib/css-purge.js", 15 | "scripts": { 16 | "start": "node css-purge.js", 17 | "test": "echo \"Error: no test specified\" && exit 1" 18 | }, 19 | "bin": { 20 | "css-purge": "./css-purge.js" 21 | }, 22 | "requires": true, 23 | "author": "Andrew Quan (http://redblueprint.com)", 24 | "license": "MIT", 25 | "lockfileVersion": 1, 26 | "keywords": [ 27 | "css", 28 | "css minifier", 29 | "minifier", 30 | "purge", 31 | "stylesheet", 32 | "duplicate", 33 | "deduplicate", 34 | "merge", 35 | "group", 36 | "duplicate css", 37 | "duplicate rules", 38 | "duplicate properties", 39 | "clean css", 40 | "purging css", 41 | "burning css", 42 | "reducing css", 43 | "shortening css", 44 | "compressing css", 45 | "cleaning css", 46 | "trimming css", 47 | "formatting css", 48 | "unused css", 49 | "not used css" 50 | ], 51 | "dependencies": { 52 | "cli-color": "^1.4.0", 53 | "commander": "^2.19.0", 54 | "css": "^2.2.4", 55 | "htmlparser2": "^3.10.0", 56 | "jsdom": "^16.5.0", 57 | "parse-css-font": "^2.0.2", 58 | "request": "^2.88.0", 59 | "through2": "^2.0.5", 60 | "valid-url": "^1.0.9" 61 | }, 62 | "devDependencies": {} 63 | } 64 | --------------------------------------------------------------------------------