From 582caed9e7c3368ff2a1b89cb078f10ee9ce711c Mon Sep 17 00:00:00 2001 From: "Erik R. Flowers" Date: Tue, 28 Jul 2015 11:05:33 -0700 Subject: [PATCH] getting the files and folder structure built --- .gitignore | 1 + cheatsheet.html | 1 - css/README.md | 4 - css/weather-icons.min.css | 720 +- docs/CNAME | 1 + docs/browserconfig.xml | 11 + docs/cheatsheet.html | 537 + docs/css/img/sky.jpg | Bin 0 -> 66743 bytes docs/css/styles.css | 2236 ++ docs/favicons/apple-touch-icon-57x57.png | Bin 0 -> 1746 bytes docs/favicons/apple-touch-icon-60x60.png | Bin 0 -> 1819 bytes .../favicons/apple-touch-icon-precomposed.png | Bin 0 -> 1631 bytes docs/favicons/apple-touch-icon.png | Bin 0 -> 1819 bytes docs/favicons/favicon-16x16.png | Bin 0 -> 637 bytes docs/favicons/favicon-32x32.png | Bin 0 -> 1069 bytes docs/favicons/favicon.ico | Bin 0 -> 15086 bytes docs/favicons/mstile-150x150.png | Bin 0 -> 2224 bytes docs/favicons/mstile-310x150.png | Bin 0 -> 2359 bytes docs/favicons/mstile-70x70.png | Bin 0 -> 2106 bytes docs/font-source/weathericons-regular.glyphs | 28286 ++++++++++++++++ .../font-source/weathericons-regular.otf | Bin docs/font/weathericons-regular-webfont.eot | Bin 0 -> 42175 bytes docs/font/weathericons-regular-webfont.svg | 216 + docs/font/weathericons-regular-webfont.ttf | Bin 0 -> 84188 bytes docs/font/weathericons-regular-webfont.woff | Bin 0 -> 48376 bytes docs/index.html | 1009 + docs/jade/cheatsheet.jade | 435 + docs/jade/icon-list.jade | 0 docs/jade/index.jade | 1002 + docs/less/bootstrap-includes.less | 64 + docs/less/bootstrap/accordion.less | 34 + docs/less/bootstrap/alerts.less | 92 + docs/less/bootstrap/badges.less | 58 + docs/less/bootstrap/bootstrap.less | 64 + docs/less/bootstrap/breadcrumbs.less | 28 + docs/less/bootstrap/button-groups.less | 170 + docs/less/bootstrap/buttons.less | 160 + docs/less/bootstrap/carousel.less | 192 + docs/less/bootstrap/close.less | 33 + docs/less/bootstrap/code.less | 61 + docs/less/bootstrap/component-animations.less | 23 + docs/less/bootstrap/dropdowns.less | 226 + docs/less/bootstrap/forms.less | 432 + docs/less/bootstrap/glyphicons.less | 200 + docs/less/bootstrap/grid.less | 204 + docs/less/bootstrap/jumbotron.less | 32 + docs/less/bootstrap/labels.less | 70 + docs/less/bootstrap/list-group.less | 94 + docs/less/bootstrap/media.less | 54 + docs/less/bootstrap/mixins.less | 495 + docs/less/bootstrap/modals.less | 137 + docs/less/bootstrap/navbar.less | 363 + docs/less/bootstrap/navs.less | 247 + docs/less/bootstrap/normalize.less | 396 + docs/less/bootstrap/pager.less | 54 + docs/less/bootstrap/pagination.less | 87 + docs/less/bootstrap/panels.less | 96 + docs/less/bootstrap/popovers.less | 129 + docs/less/bootstrap/print.less | 85 + docs/less/bootstrap/progress-bars.less | 118 + docs/less/bootstrap/responsive-utilities.less | 127 + docs/less/bootstrap/scaffolding.less | 81 + docs/less/bootstrap/tables.less | 244 + docs/less/bootstrap/thumbnails.less | 43 + docs/less/bootstrap/tooltip.less | 71 + docs/less/bootstrap/type.less | 246 + docs/less/bootstrap/utilities.less | 42 + docs/less/bootstrap/variables.less | 429 + docs/less/bootstrap/wells.less | 29 + docs/less/cheatsheet.less | 57 + docs/less/main.less | 250 + docs/less/mixins.less | 96 + docs/less/styles.less | 11 + docs/less/variables.less | 16 + ...lasses.less => weather-icons-classes.less} | 0 ...bles.less => weather-icons-variables.less} | 0 less/weather-icons.less | 4 +- less/weather-icons.min.less | 4 +- 78 files changed, 40697 insertions(+), 10 deletions(-) create mode 100644 .gitignore delete mode 100644 cheatsheet.html delete mode 100644 css/README.md create mode 100644 docs/CNAME create mode 100644 docs/browserconfig.xml create mode 100644 docs/cheatsheet.html create mode 100644 docs/css/img/sky.jpg create mode 100644 docs/css/styles.css create mode 100644 docs/favicons/apple-touch-icon-57x57.png create mode 100644 docs/favicons/apple-touch-icon-60x60.png create mode 100644 docs/favicons/apple-touch-icon-precomposed.png create mode 100644 docs/favicons/apple-touch-icon.png create mode 100644 docs/favicons/favicon-16x16.png create mode 100644 docs/favicons/favicon-32x32.png create mode 100644 docs/favicons/favicon.ico create mode 100644 docs/favicons/mstile-150x150.png create mode 100644 docs/favicons/mstile-310x150.png create mode 100644 docs/favicons/mstile-70x70.png create mode 100644 docs/font-source/weathericons-regular.glyphs rename font-source/WeatherIcons-Regular.otf => docs/font-source/weathericons-regular.otf (100%) create mode 100755 docs/font/weathericons-regular-webfont.eot create mode 100755 docs/font/weathericons-regular-webfont.svg create mode 100755 docs/font/weathericons-regular-webfont.ttf create mode 100755 docs/font/weathericons-regular-webfont.woff create mode 100644 docs/index.html create mode 100644 docs/jade/cheatsheet.jade create mode 100644 docs/jade/icon-list.jade create mode 100644 docs/jade/index.jade create mode 100644 docs/less/bootstrap-includes.less create mode 100644 docs/less/bootstrap/accordion.less create mode 100644 docs/less/bootstrap/alerts.less create mode 100644 docs/less/bootstrap/badges.less create mode 100644 docs/less/bootstrap/bootstrap.less create mode 100644 docs/less/bootstrap/breadcrumbs.less create mode 100644 docs/less/bootstrap/button-groups.less create mode 100644 docs/less/bootstrap/buttons.less create mode 100644 docs/less/bootstrap/carousel.less create mode 100644 docs/less/bootstrap/close.less create mode 100644 docs/less/bootstrap/code.less create mode 100644 docs/less/bootstrap/component-animations.less create mode 100644 docs/less/bootstrap/dropdowns.less create mode 100644 docs/less/bootstrap/forms.less create mode 100644 docs/less/bootstrap/glyphicons.less create mode 100644 docs/less/bootstrap/grid.less create mode 100644 docs/less/bootstrap/jumbotron.less create mode 100644 docs/less/bootstrap/labels.less create mode 100644 docs/less/bootstrap/list-group.less create mode 100644 docs/less/bootstrap/media.less create mode 100644 docs/less/bootstrap/mixins.less create mode 100644 docs/less/bootstrap/modals.less create mode 100644 docs/less/bootstrap/navbar.less create mode 100644 docs/less/bootstrap/navs.less create mode 100644 docs/less/bootstrap/normalize.less create mode 100644 docs/less/bootstrap/pager.less create mode 100644 docs/less/bootstrap/pagination.less create mode 100644 docs/less/bootstrap/panels.less create mode 100644 docs/less/bootstrap/popovers.less create mode 100644 docs/less/bootstrap/print.less create mode 100644 docs/less/bootstrap/progress-bars.less create mode 100644 docs/less/bootstrap/responsive-utilities.less create mode 100644 docs/less/bootstrap/scaffolding.less create mode 100644 docs/less/bootstrap/tables.less create mode 100644 docs/less/bootstrap/thumbnails.less create mode 100644 docs/less/bootstrap/tooltip.less create mode 100644 docs/less/bootstrap/type.less create mode 100644 docs/less/bootstrap/utilities.less create mode 100644 docs/less/bootstrap/variables.less create mode 100644 docs/less/bootstrap/wells.less create mode 100644 docs/less/cheatsheet.less create mode 100644 docs/less/main.less create mode 100644 docs/less/mixins.less create mode 100644 docs/less/styles.less create mode 100644 docs/less/variables.less rename less/{icon-classes.less => weather-icons-classes.less} (100%) rename less/{variables.less => weather-icons-variables.less} (100%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0cb2192 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +config.codekit diff --git a/cheatsheet.html b/cheatsheet.html deleted file mode 100644 index 945c9b4..0000000 --- a/cheatsheet.html +++ /dev/null @@ -1 +0,0 @@ -. \ No newline at end of file diff --git a/css/README.md b/css/README.md deleted file mode 100644 index 331d326..0000000 --- a/css/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Weather Icons -*Version 1.3 - November 30th, 2014* - -If you want to just include the CSS itself, just reference this file. Make sure you have the `font` folder that holds all the font files a level above the CSS folder. If you want to change it, you'll have to edit it in the source. \ No newline at end of file diff --git a/css/weather-icons.min.css b/css/weather-icons.min.css index cc1501a..cfbaeb9 100644 --- a/css/weather-icons.min.css +++ b/css/weather-icons.min.css @@ -21,4 +21,722 @@ * ------------------------------------------------------------------------------ * Email: erik@helloerik.com * Twitter: http://twitter.com/Erik_UX - */@font-face{font-family:weathericons;src:url(../font/weathericons-regular-webfont.eot);src:url(../font/weathericons-regular-webfont.eot?#iefix) format('embedded-opentype'),url(../font/weathericons-regular-webfont.woff) format('woff'),url(../font/weathericons-regular-webfont.ttf) format('truetype'),url(../font/weathericons-regular-webfont.svg#weathericons-regular-webfontRg) format('svg');font-weight:400;font-style:normal}.wi{display:inline-block;font-family:weathericons;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wi-day-cloudy-gusts:before{content:"\f000"}.wi-day-cloudy-windy:before{content:"\f001"}.wi-day-cloudy:before{content:"\f002"}.wi-day-fog:before{content:"\f003"}.wi-day-hail:before{content:"\f004"}.wi-day-lightning:before{content:"\f005"}.wi-day-rain-mix:before{content:"\f006"}.wi-day-rain-wind:before{content:"\f007"}.wi-day-rain:before{content:"\f008"}.wi-day-showers:before{content:"\f009"}.wi-day-snow:before{content:"\f00a"}.wi-day-sprinkle:before{content:"\f00b"}.wi-day-sunny-overcast:before{content:"\f00c"}.wi-day-sunny:before{content:"\f00d"}.wi-day-storm-showers:before{content:"\f00e"}.wi-day-thunderstorm:before{content:"\f010"}.wi-cloudy-gusts:before{content:"\f011"}.wi-cloudy-windy:before{content:"\f012"}.wi-cloudy:before{content:"\f013"}.wi-fog:before{content:"\f014"}.wi-hail:before{content:"\f015"}.wi-lightning:before{content:"\f016"}.wi-rain-mix:before{content:"\f017"}.wi-rain-wind:before{content:"\f018"}.wi-rain:before{content:"\f019"}.wi-showers:before{content:"\f01a"}.wi-snow:before{content:"\f01b"}.wi-sprinkle:before{content:"\f01c"}.wi-storm-showers:before{content:"\f01d"}.wi-thunderstorm:before{content:"\f01e"}.wi-windy:before{content:"\f021"}.wi-night-alt-cloudy-gusts:before{content:"\f022"}.wi-night-alt-cloudy-windy:before{content:"\f023"}.wi-night-alt-hail:before{content:"\f024"}.wi-night-alt-lightning:before{content:"\f025"}.wi-night-alt-rain-mix:before{content:"\f026"}.wi-night-alt-rain-wind:before{content:"\f027"}.wi-night-alt-rain:before{content:"\f028"}.wi-night-alt-showers:before{content:"\f029"}.wi-night-alt-snow:before{content:"\f02a"}.wi-night-alt-sprinkle:before{content:"\f02b"}.wi-night-alt-storm-showers:before{content:"\f02c"}.wi-night-alt-thunderstorm:before{content:"\f02d"}.wi-night-clear:before{content:"\f02e"}.wi-night-cloudy-gusts:before{content:"\f02f"}.wi-night-cloudy-windy:before{content:"\f030"}.wi-night-cloudy:before{content:"\f031"}.wi-night-hail:before{content:"\f032"}.wi-night-lightning:before{content:"\f033"}.wi-night-rain-mix:before{content:"\f034"}.wi-night-rain-wind:before{content:"\f035"}.wi-night-rain:before{content:"\f036"}.wi-night-showers:before{content:"\f037"}.wi-night-snow:before{content:"\f038"}.wi-night-sprinkle:before{content:"\f039"}.wi-night-storm-showers:before{content:"\f03a"}.wi-night-thunderstorm:before{content:"\f03b"}.wi-celsius:before{content:"\f03c"}.wi-cloud-down:before{content:"\f03d"}.wi-cloud-refresh:before{content:"\f03e"}.wi-cloud-up:before{content:"\f040"}.wi-cloud:before{content:"\f041"}.wi-degrees:before{content:"\f042"}.wi-down-left:before{content:"\f043"}.wi-down:before{content:"\f044"}.wi-fahrenheit:before{content:"\f045"}.wi-horizon-alt:before{content:"\f046"}.wi-horizon:before{content:"\f047"}.wi-left:before{content:"\f048"}.wi-lightning:before{content:"\f016"}.wi-night-fog:before{content:"\f04a"}.wi-refresh-alt:before{content:"\f04b"}.wi-refresh:before{content:"\f04c"}.wi-right:before{content:"\f04d"}.wi-sprinkles:before{content:"\f04e"}.wi-strong-wind:before{content:"\f050"}.wi-sunrise:before{content:"\f051"}.wi-sunset:before{content:"\f052"}.wi-thermometer-exterior:before{content:"\f053"}.wi-thermometer-internal:before{content:"\f054"}.wi-thermometer:before{content:"\f055"}.wi-tornado:before{content:"\f056"}.wi-up-right:before{content:"\f057"}.wi-up:before{content:"\f058"}.wi-wind-west:before{content:"\f059"}.wi-wind-south-west:before{content:"\f05a"}.wi-wind-south-east:before{content:"\f05b"}.wi-wind-south:before{content:"\f05c"}.wi-wind-north-west:before{content:"\f05d"}.wi-wind-north-east:before{content:"\f05e"}.wi-wind-north:before{content:"\f060"}.wi-wind-east:before{content:"\f061"}.wi-smoke:before{content:"\f062"}.wi-dust:before{content:"\f063"}.wi-snow-wind:before{content:"\f064"}.wi-day-snow-wind:before{content:"\f065"}.wi-night-snow-wind:before{content:"\f066"}.wi-night-alt-snow-wind:before{content:"\f067"}.wi-day-sleet-storm:before{content:"\f068"}.wi-night-sleet-storm:before{content:"\f069"}.wi-night-alt-sleet-storm:before{content:"\f06a"}.wi-day-snow-thunderstorm:before{content:"\f06b"}.wi-night-snow-thunderstorm:before{content:"\f06c"}.wi-night-alt-snow-thunderstorm:before{content:"\f06d"}.wi-solar-eclipse:before{content:"\f06e"}.wi-lunar-eclipse:before{content:"\f070"}.wi-meteor:before{content:"\f071"}.wi-hot:before{content:"\f072"}.wi-hurricane:before{content:"\f073"}.wi-smog:before{content:"\f074"}.wi-alien:before{content:"\f075"}.wi-snowflake-cold:before{content:"\f076"}.wi-stars:before{content:"\f077"}.wi-night-partly-cloudy:before{content:"\f083"}.wi-umbrella:before{content:"\f084"}.wi-day-windy:before{content:"\f085"}.wi-night-alt-cloudy:before{content:"\f086"}.wi-up-left:before{content:"\f087"}.wi-down-right:before{content:"\f088"}.wi-time-12:before{content:"\f089"}.wi-time-1:before{content:"\f08a"}.wi-time-2:before{content:"\f08b"}.wi-time-3:before{content:"\f08c"}.wi-time-4:before{content:"\f08d"}.wi-time-5:before{content:"\f08e"}.wi-time-6:before{content:"\f08f"}.wi-time-7:before{content:"\f090"}.wi-time-8:before{content:"\f091"}.wi-time-9:before{content:"\f092"}.wi-time-10:before{content:"\f093"}.wi-time-11:before{content:"\f094"}.wi-day-sleet:before{content:"\f0b2"}.wi-night-sleet:before{content:"\f0b3"}.wi-night-alt-sleet:before{content:"\f0b4"}.wi-sleet:before{content:"\f0b5"}.wi-day-haze:before{content:"\f0b6"}.wi-beafort-0:before{content:"\f0b7"}.wi-beafort-1:before{content:"\f0b8"}.wi-beafort-2:before{content:"\f0b9"}.wi-beafort-3:before{content:"\f0ba"}.wi-beafort-4:before{content:"\f0bb"}.wi-beafort-5:before{content:"\f0bc"}.wi-beafort-6:before{content:"\f0bd"}.wi-beafort-7:before{content:"\f0be"}.wi-beafort-8:before{content:"\f0bf"}.wi-beafort-9:before{content:"\f0c0"}.wi-beafort-10:before{content:"\f0c1"}.wi-beafort-11:before{content:"\f0c2"}.wi-beafort-12:before{content:"\f0c3"}.wi-wind-default:before{content:"\f0b1"}.wi-wind-default._0-deg{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}.wi-wind-default._15-deg{-webkit-transform:rotate(15deg);-moz-transform:rotate(15deg);-ms-transform:rotate(15deg);-o-transform:rotate(15deg);transform:rotate(15deg)}.wi-wind-default._30-deg{-webkit-transform:rotate(30deg);-moz-transform:rotate(30deg);-ms-transform:rotate(30deg);-o-transform:rotate(30deg);transform:rotate(30deg)}.wi-wind-default._45-deg{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.wi-wind-default._60-deg{-webkit-transform:rotate(60deg);-moz-transform:rotate(60deg);-ms-transform:rotate(60deg);-o-transform:rotate(60deg);transform:rotate(60deg)}.wi-wind-default._75-deg{-webkit-transform:rotate(75deg);-moz-transform:rotate(75deg);-ms-transform:rotate(75deg);-o-transform:rotate(75deg);transform:rotate(75deg)}.wi-wind-default._90-deg{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.wi-wind-default._105-deg{-webkit-transform:rotate(105deg);-moz-transform:rotate(105deg);-ms-transform:rotate(105deg);-o-transform:rotate(105deg);transform:rotate(105deg)}.wi-wind-default._120-deg{-webkit-transform:rotate(120deg);-moz-transform:rotate(120deg);-ms-transform:rotate(120deg);-o-transform:rotate(120deg);transform:rotate(120deg)}.wi-wind-default._135-deg{-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}.wi-wind-default._150-deg{-webkit-transform:rotate(150deg);-moz-transform:rotate(150deg);-ms-transform:rotate(150deg);-o-transform:rotate(150deg);transform:rotate(150deg)}.wi-wind-default._165-deg{-webkit-transform:rotate(165deg);-moz-transform:rotate(165deg);-ms-transform:rotate(165deg);-o-transform:rotate(165deg);transform:rotate(165deg)}.wi-wind-default._180-deg{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.wi-wind-default._195-deg{-webkit-transform:rotate(195deg);-moz-transform:rotate(195deg);-ms-transform:rotate(195deg);-o-transform:rotate(195deg);transform:rotate(195deg)}.wi-wind-default._210-deg{-webkit-transform:rotate(210deg);-moz-transform:rotate(210deg);-ms-transform:rotate(210deg);-o-transform:rotate(210deg);transform:rotate(210deg)}.wi-wind-default._225-deg{-webkit-transform:rotate(225deg);-moz-transform:rotate(225deg);-ms-transform:rotate(225deg);-o-transform:rotate(225deg);transform:rotate(225deg)}.wi-wind-default._240-deg{-webkit-transform:rotate(240deg);-moz-transform:rotate(240deg);-ms-transform:rotate(240deg);-o-transform:rotate(240deg);transform:rotate(240deg)}.wi-wind-default._255-deg{-webkit-transform:rotate(255deg);-moz-transform:rotate(255deg);-ms-transform:rotate(255deg);-o-transform:rotate(255deg);transform:rotate(255deg)}.wi-wind-default._270-deg{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.wi-wind-default._285-deg{-webkit-transform:rotate(295deg);-moz-transform:rotate(295deg);-ms-transform:rotate(295deg);-o-transform:rotate(295deg);transform:rotate(295deg)}.wi-wind-default._300-deg{-webkit-transform:rotate(300deg);-moz-transform:rotate(300deg);-ms-transform:rotate(300deg);-o-transform:rotate(300deg);transform:rotate(300deg)}.wi-wind-default._315-deg{-webkit-transform:rotate(315deg);-moz-transform:rotate(315deg);-ms-transform:rotate(315deg);-o-transform:rotate(315deg);transform:rotate(315deg)}.wi-wind-default._330-deg{-webkit-transform:rotate(330deg);-moz-transform:rotate(330deg);-ms-transform:rotate(330deg);-o-transform:rotate(330deg);transform:rotate(330deg)}.wi-wind-default._345-deg{-webkit-transform:rotate(345deg);-moz-transform:rotate(345deg);-ms-transform:rotate(345deg);-o-transform:rotate(345deg);transform:rotate(345deg)}.wi-moon-new:before{content:"\f095"}.wi-moon-waxing-cresent-1:before{content:"\f096"}.wi-moon-waxing-cresent-2:before{content:"\f097"}.wi-moon-waxing-cresent-3:before{content:"\f098"}.wi-moon-waxing-cresent-4:before{content:"\f099"}.wi-moon-waxing-cresent-5:before{content:"\f09a"}.wi-moon-waxing-cresent-6:before{content:"\f09b"}.wi-moon-first-quarter:before{content:"\f09c"}.wi-moon-waxing-gibbous-1:before{content:"\f09d"}.wi-moon-waxing-gibbous-2:before{content:"\f09e"}.wi-moon-waxing-gibbous-3:before{content:"\f09f"}.wi-moon-waxing-gibbous-4:before{content:"\f0a0"}.wi-moon-waxing-gibbous-5:before{content:"\f0a1"}.wi-moon-waxing-gibbous-6:before{content:"\f0a2"}.wi-moon-full:before{content:"\f0a3"}.wi-moon-waning-gibbous-1:before{content:"\f0a4"}.wi-moon-waning-gibbous-2:before{content:"\f0a5"}.wi-moon-waning-gibbous-3:before{content:"\f0a6"}.wi-moon-waning-gibbous-4:before{content:"\f0a7"}.wi-moon-waning-gibbous-5:before{content:"\f0a8"}.wi-moon-waning-gibbous-6:before{content:"\f0a9"}.wi-moon-3rd-quarter:before{content:"\f0aa"}.wi-moon-waning-crescent-1:before{content:"\f0ab"}.wi-moon-waning-crescent-2:before{content:"\f0ac"}.wi-moon-waning-crescent-3:before{content:"\f0ad"}.wi-moon-waning-crescent-4:before{content:"\f0ae"}.wi-moon-waning-crescent-5:before{content:"\f0af"}.wi-moon-waning-crescent-6:before{content:"\f0b0"} \ No newline at end of file + */ +@font-face { + font-family: 'weathericons'; + src: url('../font/weathericons-regular-webfont.eot'); + src: url('../font/weathericons-regular-webfont.eot?#iefix') format('embedded-opentype'), url('../font/weathericons-regular-webfont.woff') format('woff'), url('../font/weathericons-regular-webfont.ttf') format('truetype'), url('../font/weathericons-regular-webfont.svg#weathericons-regular-webfontRg') format('svg'); + font-weight: normal; + font-style: normal; +} +.wi { + display: inline-block; + font-family: 'weathericons'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.wi-day-cloudy-gusts:before { + content: "\f000"; +} +.wi-day-cloudy-windy:before { + content: "\f001"; +} +.wi-day-cloudy:before { + content: "\f002"; +} +.wi-day-fog:before { + content: "\f003"; +} +.wi-day-hail:before { + content: "\f004"; +} +.wi-day-lightning:before { + content: "\f005"; +} +.wi-day-rain-mix:before { + content: "\f006"; +} +.wi-day-rain-wind:before { + content: "\f007"; +} +.wi-day-rain:before { + content: "\f008"; +} +.wi-day-showers:before { + content: "\f009"; +} +.wi-day-snow:before { + content: "\f00a"; +} +.wi-day-sprinkle:before { + content: "\f00b"; +} +.wi-day-sunny-overcast:before { + content: "\f00c"; +} +.wi-day-sunny:before { + content: "\f00d"; +} +.wi-day-storm-showers:before { + content: "\f00e"; +} +.wi-day-thunderstorm:before { + content: "\f010"; +} +.wi-cloudy-gusts:before { + content: "\f011"; +} +.wi-cloudy-windy:before { + content: "\f012"; +} +.wi-cloudy:before { + content: "\f013"; +} +.wi-fog:before { + content: "\f014"; +} +.wi-hail:before { + content: "\f015"; +} +.wi-lightning:before { + content: "\f016"; +} +.wi-rain-mix:before { + content: "\f017"; +} +.wi-rain-wind:before { + content: "\f018"; +} +.wi-rain:before { + content: "\f019"; +} +.wi-showers:before { + content: "\f01a"; +} +.wi-snow:before { + content: "\f01b"; +} +.wi-sprinkle:before { + content: "\f01c"; +} +.wi-storm-showers:before { + content: "\f01d"; +} +.wi-thunderstorm:before { + content: "\f01e"; +} +.wi-windy:before { + content: "\f021"; +} +.wi-night-alt-cloudy-gusts:before { + content: "\f022"; +} +.wi-night-alt-cloudy-windy:before { + content: "\f023"; +} +.wi-night-alt-hail:before { + content: "\f024"; +} +.wi-night-alt-lightning:before { + content: "\f025"; +} +.wi-night-alt-rain-mix:before { + content: "\f026"; +} +.wi-night-alt-rain-wind:before { + content: "\f027"; +} +.wi-night-alt-rain:before { + content: "\f028"; +} +.wi-night-alt-showers:before { + content: "\f029"; +} +.wi-night-alt-snow:before { + content: "\f02a"; +} +.wi-night-alt-sprinkle:before { + content: "\f02b"; +} +.wi-night-alt-storm-showers:before { + content: "\f02c"; +} +.wi-night-alt-thunderstorm:before { + content: "\f02d"; +} +.wi-night-clear:before { + content: "\f02e"; +} +.wi-night-cloudy-gusts:before { + content: "\f02f"; +} +.wi-night-cloudy-windy:before { + content: "\f030"; +} +.wi-night-cloudy:before { + content: "\f031"; +} +.wi-night-hail:before { + content: "\f032"; +} +.wi-night-lightning:before { + content: "\f033"; +} +.wi-night-rain-mix:before { + content: "\f034"; +} +.wi-night-rain-wind:before { + content: "\f035"; +} +.wi-night-rain:before { + content: "\f036"; +} +.wi-night-showers:before { + content: "\f037"; +} +.wi-night-snow:before { + content: "\f038"; +} +.wi-night-sprinkle:before { + content: "\f039"; +} +.wi-night-storm-showers:before { + content: "\f03a"; +} +.wi-night-thunderstorm:before { + content: "\f03b"; +} +.wi-celsius:before { + content: "\f03c"; +} +.wi-cloud-down:before { + content: "\f03d"; +} +.wi-cloud-refresh:before { + content: "\f03e"; +} +.wi-cloud-up:before { + content: "\f040"; +} +.wi-cloud:before { + content: "\f041"; +} +.wi-degrees:before { + content: "\f042"; +} +.wi-down-left:before { + content: "\f043"; +} +.wi-down:before { + content: "\f044"; +} +.wi-fahrenheit:before { + content: "\f045"; +} +.wi-horizon-alt:before { + content: "\f046"; +} +.wi-horizon:before { + content: "\f047"; +} +.wi-left:before { + content: "\f048"; +} +.wi-lightning:before { + content: "\f016"; +} +.wi-night-fog:before { + content: "\f04a"; +} +.wi-refresh-alt:before { + content: "\f04b"; +} +.wi-refresh:before { + content: "\f04c"; +} +.wi-right:before { + content: "\f04d"; +} +.wi-sprinkles:before { + content: "\f04e"; +} +.wi-strong-wind:before { + content: "\f050"; +} +.wi-sunrise:before { + content: "\f051"; +} +.wi-sunset:before { + content: "\f052"; +} +.wi-thermometer-exterior:before { + content: "\f053"; +} +.wi-thermometer-internal:before { + content: "\f054"; +} +.wi-thermometer:before { + content: "\f055"; +} +.wi-tornado:before { + content: "\f056"; +} +.wi-up-right:before { + content: "\f057"; +} +.wi-up:before { + content: "\f058"; +} +.wi-wind-west:before { + content: "\f059"; +} +.wi-wind-south-west:before { + content: "\f05a"; +} +.wi-wind-south-east:before { + content: "\f05b"; +} +.wi-wind-south:before { + content: "\f05c"; +} +.wi-wind-north-west:before { + content: "\f05d"; +} +.wi-wind-north-east:before { + content: "\f05e"; +} +.wi-wind-north:before { + content: "\f060"; +} +.wi-wind-east:before { + content: "\f061"; +} +.wi-smoke:before { + content: "\f062"; +} +.wi-dust:before { + content: "\f063"; +} +.wi-snow-wind:before { + content: "\f064"; +} +.wi-day-snow-wind:before { + content: "\f065"; +} +.wi-night-snow-wind:before { + content: "\f066"; +} +.wi-night-alt-snow-wind:before { + content: "\f067"; +} +.wi-day-sleet-storm:before { + content: "\f068"; +} +.wi-night-sleet-storm:before { + content: "\f069"; +} +.wi-night-alt-sleet-storm:before { + content: "\f06a"; +} +.wi-day-snow-thunderstorm:before { + content: "\f06b"; +} +.wi-night-snow-thunderstorm:before { + content: "\f06c"; +} +.wi-night-alt-snow-thunderstorm:before { + content: "\f06d"; +} +.wi-solar-eclipse:before { + content: "\f06e"; +} +.wi-lunar-eclipse:before { + content: "\f070"; +} +.wi-meteor:before { + content: "\f071"; +} +.wi-hot:before { + content: "\f072"; +} +.wi-hurricane:before { + content: "\f073"; +} +.wi-smog:before { + content: "\f074"; +} +.wi-alien:before { + content: "\f075"; +} +.wi-snowflake-cold:before { + content: "\f076"; +} +.wi-stars:before { + content: "\f077"; +} +.wi-night-partly-cloudy:before { + content: "\f083"; +} +.wi-umbrella:before { + content: "\f084"; +} +.wi-day-windy:before { + content: "\f085"; +} +.wi-night-alt-cloudy:before { + content: "\f086"; +} +.wi-up-left:before { + content: "\f087"; +} +.wi-down-right:before { + content: "\f088"; +} +.wi-time-12:before { + content: "\f089"; +} +.wi-time-1:before { + content: "\f08a"; +} +.wi-time-2:before { + content: "\f08b"; +} +.wi-time-3:before { + content: "\f08c"; +} +.wi-time-4:before { + content: "\f08d"; +} +.wi-time-5:before { + content: "\f08e"; +} +.wi-time-6:before { + content: "\f08f"; +} +.wi-time-7:before { + content: "\f090"; +} +.wi-time-8:before { + content: "\f091"; +} +.wi-time-9:before { + content: "\f092"; +} +.wi-time-10:before { + content: "\f093"; +} +.wi-time-11:before { + content: "\f094"; +} +.wi-day-sleet:before { + content: "\f0b2"; +} +.wi-night-sleet:before { + content: "\f0b3"; +} +.wi-night-alt-sleet:before { + content: "\f0b4"; +} +.wi-sleet:before { + content: "\f0b5"; +} +.wi-day-haze:before { + content: "\f0b6"; +} +.wi-beafort-0:before { + content: "\f0b7"; +} +.wi-beafort-1:before { + content: "\f0b8"; +} +.wi-beafort-2:before { + content: "\f0b9"; +} +.wi-beafort-3:before { + content: "\f0ba"; +} +.wi-beafort-4:before { + content: "\f0bb"; +} +.wi-beafort-5:before { + content: "\f0bc"; +} +.wi-beafort-6:before { + content: "\f0bd"; +} +.wi-beafort-7:before { + content: "\f0be"; +} +.wi-beafort-8:before { + content: "\f0bf"; +} +.wi-beafort-9:before { + content: "\f0c0"; +} +.wi-beafort-10:before { + content: "\f0c1"; +} +.wi-beafort-11:before { + content: "\f0c2"; +} +.wi-beafort-12:before { + content: "\f0c3"; +} +.wi-wind-default:before { + content: "\f0b1"; +} +.wi-wind-default._0-deg { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -ms-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); +} +.wi-wind-default._15-deg { + -webkit-transform: rotate(15deg); + -moz-transform: rotate(15deg); + -ms-transform: rotate(15deg); + -o-transform: rotate(15deg); + transform: rotate(15deg); +} +.wi-wind-default._30-deg { + -webkit-transform: rotate(30deg); + -moz-transform: rotate(30deg); + -ms-transform: rotate(30deg); + -o-transform: rotate(30deg); + transform: rotate(30deg); +} +.wi-wind-default._45-deg { + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.wi-wind-default._60-deg { + -webkit-transform: rotate(60deg); + -moz-transform: rotate(60deg); + -ms-transform: rotate(60deg); + -o-transform: rotate(60deg); + transform: rotate(60deg); +} +.wi-wind-default._75-deg { + -webkit-transform: rotate(75deg); + -moz-transform: rotate(75deg); + -ms-transform: rotate(75deg); + -o-transform: rotate(75deg); + transform: rotate(75deg); +} +.wi-wind-default._90-deg { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); +} +.wi-wind-default._105-deg { + -webkit-transform: rotate(105deg); + -moz-transform: rotate(105deg); + -ms-transform: rotate(105deg); + -o-transform: rotate(105deg); + transform: rotate(105deg); +} +.wi-wind-default._120-deg { + -webkit-transform: rotate(120deg); + -moz-transform: rotate(120deg); + -ms-transform: rotate(120deg); + -o-transform: rotate(120deg); + transform: rotate(120deg); +} +.wi-wind-default._135-deg { + -webkit-transform: rotate(135deg); + -moz-transform: rotate(135deg); + -ms-transform: rotate(135deg); + -o-transform: rotate(135deg); + transform: rotate(135deg); +} +.wi-wind-default._150-deg { + -webkit-transform: rotate(150deg); + -moz-transform: rotate(150deg); + -ms-transform: rotate(150deg); + -o-transform: rotate(150deg); + transform: rotate(150deg); +} +.wi-wind-default._165-deg { + -webkit-transform: rotate(165deg); + -moz-transform: rotate(165deg); + -ms-transform: rotate(165deg); + -o-transform: rotate(165deg); + transform: rotate(165deg); +} +.wi-wind-default._180-deg { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); +} +.wi-wind-default._195-deg { + -webkit-transform: rotate(195deg); + -moz-transform: rotate(195deg); + -ms-transform: rotate(195deg); + -o-transform: rotate(195deg); + transform: rotate(195deg); +} +.wi-wind-default._210-deg { + -webkit-transform: rotate(210deg); + -moz-transform: rotate(210deg); + -ms-transform: rotate(210deg); + -o-transform: rotate(210deg); + transform: rotate(210deg); +} +.wi-wind-default._225-deg { + -webkit-transform: rotate(225deg); + -moz-transform: rotate(225deg); + -ms-transform: rotate(225deg); + -o-transform: rotate(225deg); + transform: rotate(225deg); +} +.wi-wind-default._240-deg { + -webkit-transform: rotate(240deg); + -moz-transform: rotate(240deg); + -ms-transform: rotate(240deg); + -o-transform: rotate(240deg); + transform: rotate(240deg); +} +.wi-wind-default._255-deg { + -webkit-transform: rotate(255deg); + -moz-transform: rotate(255deg); + -ms-transform: rotate(255deg); + -o-transform: rotate(255deg); + transform: rotate(255deg); +} +.wi-wind-default._270-deg { + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); +} +.wi-wind-default._285-deg { + -webkit-transform: rotate(295deg); + -moz-transform: rotate(295deg); + -ms-transform: rotate(295deg); + -o-transform: rotate(295deg); + transform: rotate(295deg); +} +.wi-wind-default._300-deg { + -webkit-transform: rotate(300deg); + -moz-transform: rotate(300deg); + -ms-transform: rotate(300deg); + -o-transform: rotate(300deg); + transform: rotate(300deg); +} +.wi-wind-default._315-deg { + -webkit-transform: rotate(315deg); + -moz-transform: rotate(315deg); + -ms-transform: rotate(315deg); + -o-transform: rotate(315deg); + transform: rotate(315deg); +} +.wi-wind-default._330-deg { + -webkit-transform: rotate(330deg); + -moz-transform: rotate(330deg); + -ms-transform: rotate(330deg); + -o-transform: rotate(330deg); + transform: rotate(330deg); +} +.wi-wind-default._345-deg { + -webkit-transform: rotate(345deg); + -moz-transform: rotate(345deg); + -ms-transform: rotate(345deg); + -o-transform: rotate(345deg); + transform: rotate(345deg); +} +.wi-moon-new:before { + content: "\f095"; +} +.wi-moon-waxing-cresent-1:before { + content: "\f096"; +} +.wi-moon-waxing-cresent-2:before { + content: "\f097"; +} +.wi-moon-waxing-cresent-3:before { + content: "\f098"; +} +.wi-moon-waxing-cresent-4:before { + content: "\f099"; +} +.wi-moon-waxing-cresent-5:before { + content: "\f09a"; +} +.wi-moon-waxing-cresent-6:before { + content: "\f09b"; +} +.wi-moon-first-quarter:before { + content: "\f09c"; +} +.wi-moon-waxing-gibbous-1:before { + content: "\f09d"; +} +.wi-moon-waxing-gibbous-2:before { + content: "\f09e"; +} +.wi-moon-waxing-gibbous-3:before { + content: "\f09f"; +} +.wi-moon-waxing-gibbous-4:before { + content: "\f0a0"; +} +.wi-moon-waxing-gibbous-5:before { + content: "\f0a1"; +} +.wi-moon-waxing-gibbous-6:before { + content: "\f0a2"; +} +.wi-moon-full:before { + content: "\f0a3"; +} +.wi-moon-waning-gibbous-1:before { + content: "\f0a4"; +} +.wi-moon-waning-gibbous-2:before { + content: "\f0a5"; +} +.wi-moon-waning-gibbous-3:before { + content: "\f0a6"; +} +.wi-moon-waning-gibbous-4:before { + content: "\f0a7"; +} +.wi-moon-waning-gibbous-5:before { + content: "\f0a8"; +} +.wi-moon-waning-gibbous-6:before { + content: "\f0a9"; +} +.wi-moon-3rd-quarter:before { + content: "\f0aa"; +} +.wi-moon-waning-crescent-1:before { + content: "\f0ab"; +} +.wi-moon-waning-crescent-2:before { + content: "\f0ac"; +} +.wi-moon-waning-crescent-3:before { + content: "\f0ad"; +} +.wi-moon-waning-crescent-4:before { + content: "\f0ae"; +} +.wi-moon-waning-crescent-5:before { + content: "\f0af"; +} +.wi-moon-waning-crescent-6:before { + content: "\f0b0"; +} diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 0000000..239a1e5 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +weathericons.io diff --git a/docs/browserconfig.xml b/docs/browserconfig.xml new file mode 100644 index 0000000..55f0d33 --- /dev/null +++ b/docs/browserconfig.xml @@ -0,0 +1,11 @@ + + + + + + + + #da532c + + + diff --git a/docs/cheatsheet.html b/docs/cheatsheet.html new file mode 100644 index 0000000..609e5fd --- /dev/null +++ b/docs/cheatsheet.html @@ -0,0 +1,537 @@ + + + + Weather Icons - Icon Font inspired by Font Awesome and designed for Bootstrap + + + + +

Copy and paste these characters into your design apps to use them as real fonts:

+
+
+
+
Day / Sunny
+
+
+
+
+
+
 
+
wi-day-cloudy-gusts 
+
()
+
+
+
 
+
wi-day-cloudy-windy 
+
()
+
+
+
 
+
wi-day-cloudy 
+
()
+
+
+
 
+
wi-day-fog 
+
()
+
+
+
 
+
wi-day-hail 
+
()
+
+
+
 
+
wi-day-lightning 
+
()
+
+
+
+
+
 
+
wi-day-rain-mix 
+
()
+
+
+
 
+
wi-day-rain-wind 
+
()
+
+
+
 
+
wi-day-rain 
+
()
+
+
+
 
+
wi-day-showers 
+
()
+
+
+
 
+
wi-day-snow 
+
()
+
+
+
 
+
wi-day-sprinkle 
+
()
+
+
+
+
+
 
+
wi-day-sunny-overcast 
+
()
+
+
+
 
+
wi-day-sunny 
+
()
+
+
+
 
+
wi-day-storm-showers 
+
()
+
+
+
 
+
wi-day-thunderstorm 
+
()
+
+
+
+
+
+
Neutral / Cloudy
+
+
+
+
+
+
 
+
wi-cloudy-gusts 
+
()
+
+
+
 
+
wi-cloudy-windy 
+
()
+
+
+
 
+
wi-cloudy 
+
()
+
+
+
 
+
wi-fog 
+
()
+
+
+
 
+
wi-hail 
+
()
+
+
+
+
+
 
+
wi-lightning 
+
()
+
+
+
 
+
wi-rain-mix 
+
()
+
+
+
 
+
wi-rain-wind 
+
()
+
+
+
 
+
wi-rain 
+
()
+
+
+
 
+
wi-showers 
+
()
+
+
+
+
+
 
+
wi-snow 
+
()
+
+
+
 
+
wi-sprinkle 
+
()
+
+
+
 
+
wi-storm-showers 
+
()
+
+
+
 
+
wi-thunderstorm 
+
()
+
+
+
+
+
+
Night / Moons
+
+
+
+
+
+
 
+
wi-night-alt-cloudy-gusts 
+
()
+
+
+
 
+
wi-night-alt-cloudy-windy 
+
()
+
+
+
 
+
wi-night-alt-hail 
+
()
+
+
+
 
+
wi-night-alt-lightning 
+
()
+
+
+
 
+
wi-night-alt-rain-mix 
+
()
+
+
+
 
+
wi-night-alt-rain-wind 
+
()
+
+
+
 
+
wi-night-alt-rain 
+
()
+
+
+
 
+
wi-night-alt-showers 
+
()
+
+
+
 
+
wi-night-alt-snow 
+
+
+
()
+
+
+
 
+
wi-night-alt-sprinkle 
+
()
+
+
+
 
+
wi-night-alt-storm-showers 
+
()
+
+
+
 
+
wi-night-alt-thunderstorm 
+
()
+
+
+
 
+
wi-night-clear 
+
()
+
+
+
 
+
wi-night-cloudy-gusts 
+
()
+
+
+
 
+
wi-night-cloudy-windy 
+
()
+
+
+
 
+
wi-night-cloudy 
+
()
+
+
+
 
+
wi-night-hail 
+
()
+
+
+
 
+
wi-night-lightning 
+
()
+
+
+
+
+
+
 
+
wi-night-rain-mix 
+
()
+
+
+
 
+
wi-night-rain-wind 
+
()
+
+
+
 
+
wi-night-rain 
+
()
+
+
+
 
+
wi-night-showers 
+
()
+
+
+
 
+
wi-night-snow 
+
()
+
+
+
 
+
wi-night-sprinkle 
+
()
+
+
+
 
+
wi-night-storm-showers 
+
()
+
+
+
 
+
wi-night-thunderstorm 
+
()
+
+
+
+
+
+
Miscellaneous Weather
+
+
+
+
+
+
 
+
wi-celcius 
+
()
+
+
+
 
+
wi-cloud-down 
+
()
+
+
+
 
+
wi-cloud-refresh 
+
()
+
+
+
 
+
wi-cloud-up 
+
()
+
+
+
 
+
wi-cloud 
+
()
+
+
+
 
+
wi-degrees 
+
()
+
+
+
 
+
wi-down-left 
+
()
+
+
+
 
+
wi-down 
+
()
+
+
+
 
+
wi-fahrenheit 
+
()
+
+
+
 
+
wi-horizon-alt 
+
()
+
+
+
 
+
wi-horizon 
+
()
+
+
+
 
+
wi-left 
+
()
+
+
+
+
+
 
+
wi-lightning 
+
()
+
+
+
 
+
wi-night-fog 
+
()
+
+
+
 
+
wi-refresh-alt 
+
()
+
+
+
 
+
wi-refresh 
+
()
+
+
+
 
+
wi-right 
+
()
+
+
+
 
+
wi-sprinkles 
+
()
+
+
+
 
+
wi-strong-wind 
+
()
+
+
+
 
+
wi-sunrise 
+
()
+
+
+
 
+
wi-sunset 
+
()
+
+
+
 
+
wi-thermometer-exterior 
+
()
+
+
+
 
+
wi-thermometer-internal 
+
()
+
+
+
 
+
wi-thermometer 
+
()
+
+
+
+
+
 
+
wi-tornado 
+
()
+
+
+
 
+
wi-up-right 
+
()
+
+
+
 
+
wi-up 
+
()
+
+
+
 
+
wi-wind-east 
+
()
+
+
+
 
+
wi-wind-north-east 
+
()
+
+
+
 
+
wi-wind-north-west 
+
()
+
+
+
 
+
wi-wind-north 
+
()
+
+
+
 
+
wi-wind-south-east 
+
()
+
+
+
 
+
wi-wind-south-west 
+
()
+
+
+
 
+
wi-wind-south 
+
()
+
+
+
 
+
wi-wind-west 
+
()
+
+
+
 
+
wi-windy 
+
()
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/css/img/sky.jpg b/docs/css/img/sky.jpg new file mode 100644 index 0000000000000000000000000000000000000000..375d900417b14a60ad0cadbb6be9992961661f0e GIT binary patch literal 66743 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 literal 0 HcmV?d00001 diff --git a/docs/css/styles.css b/docs/css/styles.css new file mode 100644 index 0000000..c075db3 --- /dev/null +++ b/docs/css/styles.css @@ -0,0 +1,2236 @@ +/*! + * Bootstrap v3.0.0 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ +/*! normalize.css v2.1.0 | MIT License | git.io/normalize */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} +audio, +canvas, +video { + display: inline-block; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden] { + display: none; +} +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; +} +a:focus { + outline: thin dotted; +} +a:active, +a:hover { + outline: 0; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} +mark { + background: #ff0; + color: #000; +} +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} +pre { + white-space: pre-wrap; +} +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 0; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + border: 0; + padding: 0; +} +button, +input, +select, +textarea { + font-family: inherit; + font-size: 100%; + margin: 0; +} +button, +input { + line-height: normal; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0; +} +input[type="search"] { + -webkit-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} +textarea { + overflow: auto; + vertical-align: top; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +@media print { + * { + text-shadow: none !important; + color: #000 !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 2cm .5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .table td, + .table th { + background-color: #fff !important; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 62.5%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333333; + background-color: #ffffff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #428bca; + text-decoration: none; +} +a:hover, +a:focus { + color: #2a6496; + text-decoration: underline; +} +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +img { + max-width: 100%; + height: auto; + vertical-align: middle; +} +.img-rounded { + border-radius: 6px; +} +.img-circle { + border-radius: 500px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 1.4; +} +small { + font-size: 85%; +} +cite { + font-style: normal; +} +.text-muted { + color: #999999; +} +a.text-muted:hover, +a.text-muted:focus { + color: #808080; +} +.text-warning { + color: #c09853; +} +a.text-warning:hover, +a.text-warning:focus { + color: #a47e3c; +} +.text-danger { + color: #b94a48; +} +a.text-danger:hover, +a.text-danger:focus { + color: #953b39; +} +.text-success { + color: #468847; +} +a.text-success:hover, +a.text-success:focus { + color: #356635; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.1; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} +h1, +h2, +h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h4, +h5, +h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h1, +.h1 { + font-size: 38px; +} +h2, +.h2 { + font-size: 32px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +h1 small, +.h1 small { + font-size: 24px; +} +h2 small, +.h2 small { + font-size: 18px; +} +h3 small, +.h3 small, +h4 small, +.h4 small { + font-size: 14px; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + list-style: none; +} +.list-inline > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; +} +dl { + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 10px; +} +.dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.dl-horizontal dd { + margin-left: 180px; +} +.dl-horizontal dd:before, +.dl-horizontal dd:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.dl-horizontal dd:after { + clear: both; +} +.dl-horizontal dd:before, +.dl-horizontal dd:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.dl-horizontal dd:after { + clear: both; +} +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #fff; + border-bottom: 1px solid rgba(255, 255, 255, 0.5); +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} +blockquote p { + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} +blockquote p:last-child { + margin-bottom: 0; +} +blockquote small { + display: block; + line-height: 1.42857143; + color: #999999; +} +blockquote small:before { + content: '\2014 \00A0'; +} +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} +blockquote.pull-right small:before { + content: ''; +} +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + border-radius: 4px; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + white-space: nowrap; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; +} +pre.prettyprint { + margin-bottom: 20px; +} +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + margin-right: auto; + margin-left: auto; +} +.container:before, +.container:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.container:after { + clear: both; +} +.container:before, +.container:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.container:after { + clear: both; +} +.row:before, +.row:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.row:after { + clear: both; +} +.row:before, +.row:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.row:after { + clear: both; +} +@media (min-width: 768px) { + .row { + margin-left: -15px; + margin-right: -15px; + } +} +.row .row { + margin-left: -15px; + margin-right: -15px; +} +.col-1, +.col-2, +.col-3, +.col-4, +.col-5, +.col-6, +.col-7, +.col-8, +.col-9, +.col-10, +.col-11, +.col-12, +.col-sm-1, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-lg-1, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-lg-10, +.col-lg-11, +.col-lg-12 { + position: relative; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; +} +.col-1, +.col-2, +.col-3, +.col-4, +.col-5, +.col-6, +.col-7, +.col-8, +.col-9, +.col-10, +.col-11, +.col-12 { + float: left; +} +.col-1 { + width: 8.33333333%; +} +.col-2 { + width: 16.66666667%; +} +.col-3 { + width: 25%; +} +.col-4 { + width: 33.33333333%; +} +.col-5 { + width: 41.66666667%; +} +.col-6 { + width: 50%; +} +.col-7 { + width: 58.33333333%; +} +.col-8 { + width: 66.66666667%; +} +.col-9 { + width: 75%; +} +.col-10 { + width: 83.33333333%; +} +.col-11 { + width: 91.66666667%; +} +.col-12 { + width: 100%; +} +@media (min-width: 768px) { + .container { + max-width: 728px; + } + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11, + .col-sm-12 { + float: left; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-12 { + width: 100%; + } + .col-push-1 { + left: 8.33333333%; + } + .col-push-2 { + left: 16.66666667%; + } + .col-push-3 { + left: 25%; + } + .col-push-4 { + left: 33.33333333%; + } + .col-push-5 { + left: 41.66666667%; + } + .col-push-6 { + left: 50%; + } + .col-push-7 { + left: 58.33333333%; + } + .col-push-8 { + left: 66.66666667%; + } + .col-push-9 { + left: 75%; + } + .col-push-10 { + left: 83.33333333%; + } + .col-push-11 { + left: 91.66666667%; + } + .col-pull-1 { + right: 8.33333333%; + } + .col-pull-2 { + right: 16.66666667%; + } + .col-pull-3 { + right: 25%; + } + .col-pull-4 { + right: 33.33333333%; + } + .col-pull-5 { + right: 41.66666667%; + } + .col-pull-6 { + right: 50%; + } + .col-pull-7 { + right: 58.33333333%; + } + .col-pull-8 { + right: 66.66666667%; + } + .col-pull-9 { + right: 75%; + } + .col-pull-10 { + right: 83.33333333%; + } + .col-pull-11 { + right: 91.66666667%; + } +} +@media (min-width: 992px) { + .container { + max-width: 940px; + } + .col-lg-1, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9, + .col-lg-10, + .col-lg-11, + .col-lg-12 { + float: left; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-12 { + width: 100%; + } + .col-offset-1 { + margin-left: 8.33333333%; + } + .col-offset-2 { + margin-left: 16.66666667%; + } + .col-offset-3 { + margin-left: 25%; + } + .col-offset-4 { + margin-left: 33.33333333%; + } + .col-offset-5 { + margin-left: 41.66666667%; + } + .col-offset-6 { + margin-left: 50%; + } + .col-offset-7 { + margin-left: 58.33333333%; + } + .col-offset-8 { + margin-left: 66.66666667%; + } + .col-offset-9 { + margin-left: 75%; + } + .col-offset-10 { + margin-left: 83.33333333%; + } + .col-offset-11 { + margin-left: 91.66666667%; + } +} +@media (min-width: 1200px) { + .container { + max-width: 1170px; + } +} +.clearfix:before, +.clearfix:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.clearfix:after { + clear: both; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +@media screen and (max-width: 400px) { + @-ms-viewport { + width: 320px; + } +} +.hidden { + display: none; + visibility: hidden; +} +.visible-sm { + display: block !important; +} +tr.visible-sm { + display: table-row !important; +} +th.visible-sm, +td.visible-sm { + display: table-cell !important; +} +.visible-md { + display: none !important; +} +.visible-lg { + display: none !important; +} +.hidden-sm { + display: none !important; +} +.hidden-md { + display: block !important; +} +tr.hidden-md { + display: table-row !important; +} +th.hidden-md, +td.hidden-md { + display: table-cell !important; +} +.hidden-lg { + display: block !important; +} +tr.hidden-lg { + display: table-row !important; +} +th.hidden-lg, +td.hidden-lg { + display: table-cell !important; +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: none !important; + } + .visible-md { + display: block !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } + .visible-lg { + display: none !important; + } + .hidden-sm { + display: block !important; + } + tr.hidden-sm { + display: table-row !important; + } + th.hidden-sm, + td.hidden-sm { + display: table-cell !important; + } + .hidden-md { + display: none !important; + } + .hidden-lg { + display: block !important; + } + tr.hidden-lg { + display: table-row !important; + } + th.hidden-lg, + td.hidden-lg { + display: table-cell !important; + } +} +@media (min-width: 992px) { + .visible-sm { + display: none !important; + } + .visible-md { + display: none !important; + } + .visible-lg { + display: block !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } + .hidden-sm { + display: block !important; + } + tr.hidden-sm { + display: table-row !important; + } + th.hidden-sm, + td.hidden-sm { + display: table-cell !important; + } + .hidden-md { + display: block !important; + } + tr.hidden-md { + display: table-row !important; + } + th.hidden-md, + td.hidden-md { + display: table-cell !important; + } + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } + .hidden-print { + display: none !important; + } +} +/*! + * Weather Icons 1.3 + * Updated November 30th, 2014 + * Weather themed icons for Bootstrap + * ------------------------------------------------------------------------------ +* Maintained at http://erikflowers.github.io/weather-icons + * http://twitter.com/Erik_UX + * + * License + * ------------------------------------------------------------------------------ + * - Fpmt licensed under SIL OFL 1.1 - + * http://scripts.sil.org/OFL + * - CSS and LESS are licensed under MIT License - + * http://opensource.org/licenses/mit-license.html + * - Documentation licensed under CC BY 3.0 - + * http://creativecommons.org/licenses/by/3.0/ + * - Inspired by and works great as a companion with Font Awesome + * "Font Awesome by Dave Gandy - http://fontawesome.io" + * + * Weather Icons Bootstrap Package Author - Erik Flowers - erik@helloerik.com + * ------------------------------------------------------------------------------ + * Email: erik@helloerik.com + * Twitter: http://twitter.com/Erik_UX + */ +@font-face { + font-family: 'weathericons'; + src: url('../font/weathericons-regular-webfont.eot'); + src: url('../font/weathericons-regular-webfont.eot?#iefix') format('embedded-opentype'), url('../font/weathericons-regular-webfont.woff') format('woff'), url('../font/weathericons-regular-webfont.ttf') format('truetype'), url('../font/weathericons-regular-webfont.svg#weathericons-regular-webfontRg') format('svg'); + font-weight: normal; + font-style: normal; +} +.wi { + display: inline-block; + font-family: 'weathericons'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.wi-day-cloudy-gusts:before { + content: "\f000"; +} +.wi-day-cloudy-windy:before { + content: "\f001"; +} +.wi-day-cloudy:before { + content: "\f002"; +} +.wi-day-fog:before { + content: "\f003"; +} +.wi-day-hail:before { + content: "\f004"; +} +.wi-day-lightning:before { + content: "\f005"; +} +.wi-day-rain-mix:before { + content: "\f006"; +} +.wi-day-rain-wind:before { + content: "\f007"; +} +.wi-day-rain:before { + content: "\f008"; +} +.wi-day-showers:before { + content: "\f009"; +} +.wi-day-snow:before { + content: "\f00a"; +} +.wi-day-sprinkle:before { + content: "\f00b"; +} +.wi-day-sunny-overcast:before { + content: "\f00c"; +} +.wi-day-sunny:before { + content: "\f00d"; +} +.wi-day-storm-showers:before { + content: "\f00e"; +} +.wi-day-thunderstorm:before { + content: "\f010"; +} +.wi-cloudy-gusts:before { + content: "\f011"; +} +.wi-cloudy-windy:before { + content: "\f012"; +} +.wi-cloudy:before { + content: "\f013"; +} +.wi-fog:before { + content: "\f014"; +} +.wi-hail:before { + content: "\f015"; +} +.wi-lightning:before { + content: "\f016"; +} +.wi-rain-mix:before { + content: "\f017"; +} +.wi-rain-wind:before { + content: "\f018"; +} +.wi-rain:before { + content: "\f019"; +} +.wi-showers:before { + content: "\f01a"; +} +.wi-snow:before { + content: "\f01b"; +} +.wi-sprinkle:before { + content: "\f01c"; +} +.wi-storm-showers:before { + content: "\f01d"; +} +.wi-thunderstorm:before { + content: "\f01e"; +} +.wi-windy:before { + content: "\f021"; +} +.wi-night-alt-cloudy-gusts:before { + content: "\f022"; +} +.wi-night-alt-cloudy-windy:before { + content: "\f023"; +} +.wi-night-alt-hail:before { + content: "\f024"; +} +.wi-night-alt-lightning:before { + content: "\f025"; +} +.wi-night-alt-rain-mix:before { + content: "\f026"; +} +.wi-night-alt-rain-wind:before { + content: "\f027"; +} +.wi-night-alt-rain:before { + content: "\f028"; +} +.wi-night-alt-showers:before { + content: "\f029"; +} +.wi-night-alt-snow:before { + content: "\f02a"; +} +.wi-night-alt-sprinkle:before { + content: "\f02b"; +} +.wi-night-alt-storm-showers:before { + content: "\f02c"; +} +.wi-night-alt-thunderstorm:before { + content: "\f02d"; +} +.wi-night-clear:before { + content: "\f02e"; +} +.wi-night-cloudy-gusts:before { + content: "\f02f"; +} +.wi-night-cloudy-windy:before { + content: "\f030"; +} +.wi-night-cloudy:before { + content: "\f031"; +} +.wi-night-hail:before { + content: "\f032"; +} +.wi-night-lightning:before { + content: "\f033"; +} +.wi-night-rain-mix:before { + content: "\f034"; +} +.wi-night-rain-wind:before { + content: "\f035"; +} +.wi-night-rain:before { + content: "\f036"; +} +.wi-night-showers:before { + content: "\f037"; +} +.wi-night-snow:before { + content: "\f038"; +} +.wi-night-sprinkle:before { + content: "\f039"; +} +.wi-night-storm-showers:before { + content: "\f03a"; +} +.wi-night-thunderstorm:before { + content: "\f03b"; +} +.wi-celsius:before { + content: "\f03c"; +} +.wi-cloud-down:before { + content: "\f03d"; +} +.wi-cloud-refresh:before { + content: "\f03e"; +} +.wi-cloud-up:before { + content: "\f040"; +} +.wi-cloud:before { + content: "\f041"; +} +.wi-degrees:before { + content: "\f042"; +} +.wi-down-left:before { + content: "\f043"; +} +.wi-down:before { + content: "\f044"; +} +.wi-fahrenheit:before { + content: "\f045"; +} +.wi-horizon-alt:before { + content: "\f046"; +} +.wi-horizon:before { + content: "\f047"; +} +.wi-left:before { + content: "\f048"; +} +.wi-lightning:before { + content: "\f016"; +} +.wi-night-fog:before { + content: "\f04a"; +} +.wi-refresh-alt:before { + content: "\f04b"; +} +.wi-refresh:before { + content: "\f04c"; +} +.wi-right:before { + content: "\f04d"; +} +.wi-sprinkles:before { + content: "\f04e"; +} +.wi-strong-wind:before { + content: "\f050"; +} +.wi-sunrise:before { + content: "\f051"; +} +.wi-sunset:before { + content: "\f052"; +} +.wi-thermometer-exterior:before { + content: "\f053"; +} +.wi-thermometer-internal:before { + content: "\f054"; +} +.wi-thermometer:before { + content: "\f055"; +} +.wi-tornado:before { + content: "\f056"; +} +.wi-up-right:before { + content: "\f057"; +} +.wi-up:before { + content: "\f058"; +} +.wi-wind-west:before { + content: "\f059"; +} +.wi-wind-south-west:before { + content: "\f05a"; +} +.wi-wind-south-east:before { + content: "\f05b"; +} +.wi-wind-south:before { + content: "\f05c"; +} +.wi-wind-north-west:before { + content: "\f05d"; +} +.wi-wind-north-east:before { + content: "\f05e"; +} +.wi-wind-north:before { + content: "\f060"; +} +.wi-wind-east:before { + content: "\f061"; +} +.wi-smoke:before { + content: "\f062"; +} +.wi-dust:before { + content: "\f063"; +} +.wi-snow-wind:before { + content: "\f064"; +} +.wi-day-snow-wind:before { + content: "\f065"; +} +.wi-night-snow-wind:before { + content: "\f066"; +} +.wi-night-alt-snow-wind:before { + content: "\f067"; +} +.wi-day-sleet-storm:before { + content: "\f068"; +} +.wi-night-sleet-storm:before { + content: "\f069"; +} +.wi-night-alt-sleet-storm:before { + content: "\f06a"; +} +.wi-day-snow-thunderstorm:before { + content: "\f06b"; +} +.wi-night-snow-thunderstorm:before { + content: "\f06c"; +} +.wi-night-alt-snow-thunderstorm:before { + content: "\f06d"; +} +.wi-solar-eclipse:before { + content: "\f06e"; +} +.wi-lunar-eclipse:before { + content: "\f070"; +} +.wi-meteor:before { + content: "\f071"; +} +.wi-hot:before { + content: "\f072"; +} +.wi-hurricane:before { + content: "\f073"; +} +.wi-smog:before { + content: "\f074"; +} +.wi-alien:before { + content: "\f075"; +} +.wi-snowflake-cold:before { + content: "\f076"; +} +.wi-stars:before { + content: "\f077"; +} +.wi-night-partly-cloudy:before { + content: "\f083"; +} +.wi-umbrella:before { + content: "\f084"; +} +.wi-day-windy:before { + content: "\f085"; +} +.wi-night-alt-cloudy:before { + content: "\f086"; +} +.wi-up-left:before { + content: "\f087"; +} +.wi-down-right:before { + content: "\f088"; +} +.wi-time-12:before { + content: "\f089"; +} +.wi-time-1:before { + content: "\f08a"; +} +.wi-time-2:before { + content: "\f08b"; +} +.wi-time-3:before { + content: "\f08c"; +} +.wi-time-4:before { + content: "\f08d"; +} +.wi-time-5:before { + content: "\f08e"; +} +.wi-time-6:before { + content: "\f08f"; +} +.wi-time-7:before { + content: "\f090"; +} +.wi-time-8:before { + content: "\f091"; +} +.wi-time-9:before { + content: "\f092"; +} +.wi-time-10:before { + content: "\f093"; +} +.wi-time-11:before { + content: "\f094"; +} +.wi-day-sleet:before { + content: "\f0b2"; +} +.wi-night-sleet:before { + content: "\f0b3"; +} +.wi-night-alt-sleet:before { + content: "\f0b4"; +} +.wi-sleet:before { + content: "\f0b5"; +} +.wi-day-haze:before { + content: "\f0b6"; +} +.wi-beafort-0:before { + content: "\f0b7"; +} +.wi-beafort-1:before { + content: "\f0b8"; +} +.wi-beafort-2:before { + content: "\f0b9"; +} +.wi-beafort-3:before { + content: "\f0ba"; +} +.wi-beafort-4:before { + content: "\f0bb"; +} +.wi-beafort-5:before { + content: "\f0bc"; +} +.wi-beafort-6:before { + content: "\f0bd"; +} +.wi-beafort-7:before { + content: "\f0be"; +} +.wi-beafort-8:before { + content: "\f0bf"; +} +.wi-beafort-9:before { + content: "\f0c0"; +} +.wi-beafort-10:before { + content: "\f0c1"; +} +.wi-beafort-11:before { + content: "\f0c2"; +} +.wi-beafort-12:before { + content: "\f0c3"; +} +.wi-wind-default:before { + content: "\f0b1"; +} +.wi-wind-default._0-deg { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -ms-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); +} +.wi-wind-default._15-deg { + -webkit-transform: rotate(15deg); + -moz-transform: rotate(15deg); + -ms-transform: rotate(15deg); + -o-transform: rotate(15deg); + transform: rotate(15deg); +} +.wi-wind-default._30-deg { + -webkit-transform: rotate(30deg); + -moz-transform: rotate(30deg); + -ms-transform: rotate(30deg); + -o-transform: rotate(30deg); + transform: rotate(30deg); +} +.wi-wind-default._45-deg { + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.wi-wind-default._60-deg { + -webkit-transform: rotate(60deg); + -moz-transform: rotate(60deg); + -ms-transform: rotate(60deg); + -o-transform: rotate(60deg); + transform: rotate(60deg); +} +.wi-wind-default._75-deg { + -webkit-transform: rotate(75deg); + -moz-transform: rotate(75deg); + -ms-transform: rotate(75deg); + -o-transform: rotate(75deg); + transform: rotate(75deg); +} +.wi-wind-default._90-deg { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); +} +.wi-wind-default._105-deg { + -webkit-transform: rotate(105deg); + -moz-transform: rotate(105deg); + -ms-transform: rotate(105deg); + -o-transform: rotate(105deg); + transform: rotate(105deg); +} +.wi-wind-default._120-deg { + -webkit-transform: rotate(120deg); + -moz-transform: rotate(120deg); + -ms-transform: rotate(120deg); + -o-transform: rotate(120deg); + transform: rotate(120deg); +} +.wi-wind-default._135-deg { + -webkit-transform: rotate(135deg); + -moz-transform: rotate(135deg); + -ms-transform: rotate(135deg); + -o-transform: rotate(135deg); + transform: rotate(135deg); +} +.wi-wind-default._150-deg { + -webkit-transform: rotate(150deg); + -moz-transform: rotate(150deg); + -ms-transform: rotate(150deg); + -o-transform: rotate(150deg); + transform: rotate(150deg); +} +.wi-wind-default._165-deg { + -webkit-transform: rotate(165deg); + -moz-transform: rotate(165deg); + -ms-transform: rotate(165deg); + -o-transform: rotate(165deg); + transform: rotate(165deg); +} +.wi-wind-default._180-deg { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); +} +.wi-wind-default._195-deg { + -webkit-transform: rotate(195deg); + -moz-transform: rotate(195deg); + -ms-transform: rotate(195deg); + -o-transform: rotate(195deg); + transform: rotate(195deg); +} +.wi-wind-default._210-deg { + -webkit-transform: rotate(210deg); + -moz-transform: rotate(210deg); + -ms-transform: rotate(210deg); + -o-transform: rotate(210deg); + transform: rotate(210deg); +} +.wi-wind-default._225-deg { + -webkit-transform: rotate(225deg); + -moz-transform: rotate(225deg); + -ms-transform: rotate(225deg); + -o-transform: rotate(225deg); + transform: rotate(225deg); +} +.wi-wind-default._240-deg { + -webkit-transform: rotate(240deg); + -moz-transform: rotate(240deg); + -ms-transform: rotate(240deg); + -o-transform: rotate(240deg); + transform: rotate(240deg); +} +.wi-wind-default._255-deg { + -webkit-transform: rotate(255deg); + -moz-transform: rotate(255deg); + -ms-transform: rotate(255deg); + -o-transform: rotate(255deg); + transform: rotate(255deg); +} +.wi-wind-default._270-deg { + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); +} +.wi-wind-default._285-deg { + -webkit-transform: rotate(295deg); + -moz-transform: rotate(295deg); + -ms-transform: rotate(295deg); + -o-transform: rotate(295deg); + transform: rotate(295deg); +} +.wi-wind-default._300-deg { + -webkit-transform: rotate(300deg); + -moz-transform: rotate(300deg); + -ms-transform: rotate(300deg); + -o-transform: rotate(300deg); + transform: rotate(300deg); +} +.wi-wind-default._315-deg { + -webkit-transform: rotate(315deg); + -moz-transform: rotate(315deg); + -ms-transform: rotate(315deg); + -o-transform: rotate(315deg); + transform: rotate(315deg); +} +.wi-wind-default._330-deg { + -webkit-transform: rotate(330deg); + -moz-transform: rotate(330deg); + -ms-transform: rotate(330deg); + -o-transform: rotate(330deg); + transform: rotate(330deg); +} +.wi-wind-default._345-deg { + -webkit-transform: rotate(345deg); + -moz-transform: rotate(345deg); + -ms-transform: rotate(345deg); + -o-transform: rotate(345deg); + transform: rotate(345deg); +} +.wi-moon-new:before { + content: "\f095"; +} +.wi-moon-waxing-cresent-1:before { + content: "\f096"; +} +.wi-moon-waxing-cresent-2:before { + content: "\f097"; +} +.wi-moon-waxing-cresent-3:before { + content: "\f098"; +} +.wi-moon-waxing-cresent-4:before { + content: "\f099"; +} +.wi-moon-waxing-cresent-5:before { + content: "\f09a"; +} +.wi-moon-waxing-cresent-6:before { + content: "\f09b"; +} +.wi-moon-first-quarter:before { + content: "\f09c"; +} +.wi-moon-waxing-gibbous-1:before { + content: "\f09d"; +} +.wi-moon-waxing-gibbous-2:before { + content: "\f09e"; +} +.wi-moon-waxing-gibbous-3:before { + content: "\f09f"; +} +.wi-moon-waxing-gibbous-4:before { + content: "\f0a0"; +} +.wi-moon-waxing-gibbous-5:before { + content: "\f0a1"; +} +.wi-moon-waxing-gibbous-6:before { + content: "\f0a2"; +} +.wi-moon-full:before { + content: "\f0a3"; +} +.wi-moon-waning-gibbous-1:before { + content: "\f0a4"; +} +.wi-moon-waning-gibbous-2:before { + content: "\f0a5"; +} +.wi-moon-waning-gibbous-3:before { + content: "\f0a6"; +} +.wi-moon-waning-gibbous-4:before { + content: "\f0a7"; +} +.wi-moon-waning-gibbous-5:before { + content: "\f0a8"; +} +.wi-moon-waning-gibbous-6:before { + content: "\f0a9"; +} +.wi-moon-3rd-quarter:before { + content: "\f0aa"; +} +.wi-moon-waning-crescent-1:before { + content: "\f0ab"; +} +.wi-moon-waning-crescent-2:before { + content: "\f0ac"; +} +.wi-moon-waning-crescent-3:before { + content: "\f0ad"; +} +.wi-moon-waning-crescent-4:before { + content: "\f0ae"; +} +.wi-moon-waning-crescent-5:before { + content: "\f0af"; +} +.wi-moon-waning-crescent-6:before { + content: "\f0b0"; +} +::selection, +-moz::selection { + background: #0a91ff; + color: #ffffff; +} +* { + padding: 0; + margin: 0; +} +#header_content { + width: 960px; + margin: 0 auto; +} +#main { + float: none; +} +#main_content { + width: 960px; + margin: 0 auto; + float: none; +} +h2 { + font-family: 'Average Sans', sans-serif; + color: #0099FF; + margin-top: 25px; + margin-bottom: 15px; +} +.left { + float: left; + width: 320px; +} +.center { + float: left; + width: 320px; +} +.right { + float: left; + width: 320px; +} +.icon { + font-family: 'weather'; + src: url('../font/weathericons-regular-webfont.eot'); + src: url('../font/weathericons-regular-webfont.eot?#iefix') format('embedded-opentype'), url('../font/weathericons-regular-webfont.woff') format('woff'), url('../font/weathericons-regular-webfont.ttf') format('truetype'), url('../font/weathericons-regular-webfont.svg#weathericons-regular-webfontRg') format('svg'); + font-weight: normal; + font-style: normal; +} +.icon_name { + font-family: 'Average Sans', sans-serif; +} +.icon_unicode { + font-family: 'Average Sans', sans-serif; + color: #BBBBBB; + font-size: 0.8em; + float: none; +} +.stop_float { + clear: both; +} +#footer_content { + width: 960px; + margin: 0 auto; +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 400; + font-size: 14px; + color: #333333; +} +.reference { + font-family: "Helvetica", Arial, sans-serif; + font-size: 22px; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} +header { + position: relative; + height: 100px; + padding-top: 0px; + background: url("img/sky.jpg") top center no-repeat fixed; + border-bottom: 5px solid #404040; +} +@media (min-width: 768px) { + header { + height: 300px; + } +} +header h1 { + float: left; + font-family: "proxima nova", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 100; + font-size: 30px; + margin-top: 40px; + margin-left: 0px; + color: #ffffff; + text-shadow: 0px 2px 2px rgba(0, 0, 0, 0.9); +} +@media (min-width: 768px) { + header h1 { + font-size: 60px; + margin-top: 180px; + } +} +header .icon { + position: absolute; + right: 20px; + top: 40px; + color: #ffffff; + font-size: 55px; + margin-left: 100px; + float: left; + line-height: .65em; + text-shadow: 0px 2px 2px rgba(0, 0, 0, 0.5); +} +@media (min-width: 768px) { + header .icon { + font-size: 200px; + top: 100px; + } +} +footer { + height: 200px; + background-color: #333333; + margin-top: 30px; + color: #ffffff; + padding-top: 15px; + font-weight: 400; +} +footer a { + color: #b3b3b3; +} +.buttons { + font-size: 100px; +} +.follow { + text-align: center; +} +.intro-icons { + font-size: 15px; + color: #357cbb; +} +.intro-icons i { + margin-right: 10px; +} +@media (min-width: 768px) { + .intro-icons { + font-size: 25px; + } + .intro-icons i { + margin-right: 10px; + } +} +@media (min-width: 992px) { + .intro-icons { + font-size: 45px; + } + .intro-icons i { + margin-right: 10px; + } +} +.headline { + font-size: 25px; + line-height: 1.3em; + margin-bottom: 30px; +} +.social { + margin-top: 15px; +} +.social p { + margin-bottom: 0px; + text-align: center; +} +.download-here { + margin-top: 20px; +} +.download { + display: block; +} +.intro { + font-size: 18px; + margin-top: 30px; + font-weight: 400; +} +.beta { + margin-top: 20px; + color: #808080; +} +.beta .title { + color: #808080; + font-weight: 500; + font-size: 20px; +} +.beta p { + font-weight: 400; + font-size: 15px; +} +.download-button { + position: relative; + float: left; + width: 100%; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; +} +@media (min-width: 768px) { + .download-button { + width: 33.33333333%; + } +} +@media (min-width: 768px) { + .download-button { + margin-left: 33.33333333%; + } +} +.banner { + background-color: #e6e6e6; + background-image: url("img/large-bg2.jpg"); + background-repeat: no-repeat; + background-position: top center; + background-attachment: fixed; + height: 250px; +} +.banner h1 { + color: #ffffff; + font-weight: 400; +} +.banner a { + display: block; + text-decoration: none; +} +.banner .tweet .icon-circle { + color: #33bbff; +} +.banner .tweet .icon-twitter { + color: #ffffff; +} +.banner .tweet:hover .icon-circle { + color: #0088cc; +} +.banner .icon-stack { + display: inline-block; +} +.banner .tweeter { + display: inline-block; + font-weight: 700; + color: #ffffff; +} +.banner .github { + font-size: 25px; + float: left; +} +.banner .github .icon-circle { + color: #999999; +} +.banner .github .icon-github-alt { + color: #ffffff; +} +.iconExamples:before, +.iconExamples:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.iconExamples:after { + clear: both; +} +.iconExamples:before, +.iconExamples:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.iconExamples:after { + clear: both; +} +.iconExamples h2 { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 200; + color: #3b6ab5; +} +.iconExamples .example { + text-align: center; + margin: 10px 3px; +} +.iconExamples .example:before, +.iconExamples .example:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.iconExamples .example:after { + clear: both; +} +.iconExamples .example:before, +.iconExamples .example:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.iconExamples .example:after { + clear: both; +} +.iconExamples .example .icon { + font-size: 28px; + float: left; + width: 35px; +} +.iconExamples .example .class { + text-align: center; + font-size: 14px; + float: left; + margin-top: 6px; + font-weight: 400; + margin-left: 10px; + color: #333333; +} +.download-share { + padding: 20px 0px 30px 0px; + border-top: 1px solid #e6e6e6; + border-bottom: 1px solid #e6e6e6; + background-color: #f2f2f2; + margin-top: 30px; + -webkit-box-shadow: inset 0px 0px 15px rgba(0, 0, 0, 0.1); + box-shadow: inset 0px 0px 15px rgba(0, 0, 0, 0.1); +} diff --git a/docs/favicons/apple-touch-icon-57x57.png b/docs/favicons/apple-touch-icon-57x57.png new file mode 100644 index 0000000000000000000000000000000000000000..b21a06e9d69ff52fffa115a3d93b34e4a0ab5ba4 GIT binary patch literal 1746 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 literal 0 HcmV?d00001 diff --git a/docs/favicons/apple-touch-icon.png b/docs/favicons/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f72644810a092c0f1b9d5ffc72dab8409cde38ae GIT binary patch literal 1819 zcmV+$2juvPP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt1`$a_K~z}7?U`#(RAm^)|L?i5yRf_Linxf1pjh4z4Wq)GNlfvU zDTZd0)!2u|E)!jtE?SyaPFb1RL}QsXLqp|c79yp2>*8%mk;GES4Fg>PSzuk@?CyE` zfU;+|z&+sdp?cm=@B3VS=XuV1JG;RD(o4cZ8T?mV%YB^u_Kee!I<#Eqz{NO}E+x>Vo|l!U z4j)|E8{pqi5ijd}eG<)y^&Kx+2p!l1FQ=SM3?#PnM#f#szZBfXvJEYmI#>PoN*%;< zB7i}F7qaS|mO3A}0(d=m@%h^~&a3TfbY*O<{`^R@fN4QejqtdbR{1V?e0@o`?P0IG|LcwmrXav6ASa*uVfB%lH2RB8lecH) zooF2u+%rFoWp~D&^<@kKX__-ukf|oftO>-~VoFE-X(j|)DFB~i$M9&YKNzHIn7ovX zrNM_$F9hPU9@jep(b@~Q=8`^NO%7`1Fm^;{uLy7aJNmXqnzZkS5>41@SoCbfg+R2~ ze)l9|Mct0eU&$a9ze|}%9g;0sicpSAy5VHsam@W==yC=M(P+rZG5XDKCQtq5VMBJe zV+M8gnT7J^&o<0=Z(r)PbPQ6oEyZi=#Df5K+VaDQ!|^qS+K5&m#+lGCr2ZQF#7d!F z3qZw%z6ILwyYBvSRZDbx-*PTv;YWMFpm}~)=iy`mu4v$x&g9H8$fn>`v&7;&N` zx;U5YlQuA1n7xnhrgVDQ$a+9p-CY8 zLt~_q40iL+neVDP=?MA!C#JMP#FyD(9FjLrp?e8>v2OhL4;`82G<&ab$}@;=HQe^B z+8;ddjpB)jnTv;>1O?r$h7i7uAG5lzLk0F~fM3Cj6Gv|m-KwxX1s5Y7i)ReC3f_O7 zO3cf7nTL6phx0O-DRn(7@qA1fy>4CkBsoCCAiBLRac5FWqpCG_)SDIU4`z;EN*CVG=(gIvoU?wKvoYje%_LJfXPa17{z_H{5s;~9z?x@5Z>V)cuaKp&*4Ge=8iy*S4x+1 z44W-|OPF7oV@g+~g%}IuBIiLvgA!}3%UKk-m3AfFn$`qx!)|Fc`9^p-?)!nCouHAS z&9?wWNzq4@`5Nk$PdcY+GwN2xyCIC{2m1PqMwgbC+^_2OUIJU;WNU@RrU(<*rTM`C zB1XU0e&tN`+L7PkB4ISd!A`Rxikw`ux^)}2s|6RLRrqmg*(383crnnx(>mdRX5~zq z5A4KA7%dkShkaPvq1`6wPql?301w>}Tfud5fN9(#it?fgJM7Crk%J197V&3N6O&a^ zIba_ss&GNg(9ZUoHlgOms!ZR$TZdM?)}XYAY8d7jtP(5$Ww6IbBy?ruF&s?t-TWJH zS|{j~dV?duU8f$bgqkQ$fDHP=9Dl&pi#kXZqvU8 zs}~EK#nm^xkSICPolwlKFZXKAbkW9xe2$y0P7u^Jn45d<`Q=0_vm3uZHGcnn^!Mkm zFIPC0?M`9!idvj*!_Q-5`fW|-g(^nZ2S?T&mt@+TTFWR?lEdJ~D56oyrZX|*+M7hJ zf4lzw=2_3dv@Txn`IqmJPrdKOa6Fk(v0Z4RfK#i$;jofZd~w-~s}Eeg?Z)_Vy{(yi z$=krSlb=~OFMiq+IHzV)WybfvJ1*~0t=qe(K5KGu%1%K)7MG)HHr7$WokFU&I$y1+ zK2g1>TsvQS+Q!#EGs3baF5bAVKHS6Y%pRfpyF*+eQX=olyyysT_?JFw$M)dq>$k_& z-ueBt&X{f8r>d~5eS!z~PQ3sBz!S@Wt^7t`1!Deu-u~geu_Nz!|K+mHd18NFK6X49 zyz9%^f+q(Simg&AS)2coRUj_l(P>+wcU$lNH>=FP8op552pAcvC9V-ADTyViR>?)F zK#IZ0z|ch3z*5)9EX2^#%D~Xd$WYtB$jZRri0PZlC>nC}Q!>*kackI`5t0woAPKS| sI6tkVJh3R1!7(L2DOJHUH!(dmC^a#qvhZXoC`~YUy85}Sb4q9e0NPIir2qf` literal 0 HcmV?d00001 diff --git a/docs/favicons/favicon-32x32.png b/docs/favicons/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..70df58537400ab94cbb6da615fd9ba1d4f47f66a GIT binary patch literal 1069 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{-G$+Qd;gjJ3=GW5 zo-U3d9>2EIIFTGDfcHi^N z7hm{qoSye}qan-2bMhPQm`ds!G>fLqU^vC)wng&7pLdQ9>*_iGGfv32V`MVdTF%9A z@45BfmyMhHd|$h~)@3j-DAHnA;5(;#b3eL z<$hmVyZ29w=dC&1sou|&FF#v{_>bbl#_P43$-`F=QZu$LIi{bP4YJc;p7i-@uiv4}|bmH1o5{x0|A}iB= zKb$yIE-NCmRF`8x-7UL2KKgRs3bH?5ogJ-Qv3BX=HoFB6H)tn3+OZ<6KZAFQX5;MT zMOA7^lUcVMT`U&CaG86;5v$FArdUePDtE6~w@CkEuI|(WPwiute@xZ-L1;Fyx1 gl&avFo0y&&l$w}QS$HxPl!qBSUHx3vIVCg!00sNnm;e9( literal 0 HcmV?d00001 diff --git a/docs/favicons/favicon.ico b/docs/favicons/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6d2597bec8b306db135809666c17d2af488d39ff GIT binary patch literal 15086 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 AkpKVy literal 0 HcmV?d00001 diff --git a/docs/favicons/mstile-150x150.png b/docs/favicons/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..0095ba5cfea7bbfb11bee2e9ca2d37b4b5da880a GIT binary patch literal 2224 zcmZ`)c{J3G8vd1C)+`ZPY-MdMgBc;aX)IY{BKt7cHhiJ66S8Hk7`tpkmNCfKiJD{^ zNun%MA;M(OKCbWnchCLqd(Qhl=Y5{@oag=TO}t}j$j*9^6#xKsn30~vDQ5lM%=G`6 ztsbX9kJ2{L27vmsb4Sh$r~4IGBMTD%2$2MUs8|3vIHjVN03Z+q0LxAQ0L=z~3x4@+ z<~L7;vo3H$J>VohZKxXnm;Au6)54Kgg`TFFIEn zLFvTEPJCQ7oV}Gs@zP`5*^HTnz{^`a9$X(hJoI(wcx^|GN~P|kL!Bzp?wi47((K6TB(l6%cIfjSbw9?lBRs0kI0f+6X=$xm^Ns zjH{w~X9t_FgzQ}TSZ0QTY zv}K0F1@zT+d_mT-+%*)wIklQuCT9}Ro1`5UUp}{2Ceih#q%*X2kE0q(!XTP0RJXtX z5vu-O`;lFh#r0r;GsNQ?vX4pQzRYW849An@FOzKdJ|P|jS77QfG#sz7;RLwDI>1{y zbQJ}|QEQip`h0jPm_msGG=#JgPRIp~mg_ttj{vhLY36Ti-mtKCIi5~?po}WiboV8FqTbDv6vUK0?i~A&Z&RmZHLp$27tuLx8gpdo|^A0{E0>`^^ zMCNKzjDGQAdz(87kFi}U%hQ!QgUfgMeHV$3dB1Ps`rudPo8(e$K6~}K`AjRWfG~45 zOO`~n2VlDkSz})3;v&%l-0unD#BTitnTF_!YyG1I9P!k98F7)qST<9Gm`8a}<3-JE zQg`zY%mePT-QH;8w@G}*SW5c9zINej66-{qO2;KrtC3yV;@>DP`6CGkyb7j-COJHh zQhd&qtIZ^nvx#Umi+lVb`gNBU{+Ywnw1T|BkgVC$hY$C2rGM&nJ)fG69HL*-=rQN6 zSV~`YxjrrIw|_D3qK>06L{(GKF5kTu9mdn)H5?h|>pm}|`sVwP65N6|O9CRJ^5!NB zn?z6WHxlCMC%I(KCmJOiBdw8Q-U;jtv?;ZJOZSChX0v zm@)NQ7`1PaCtvB0Y;~I@@%_Y3ajaB^`0P^1ub<~FwR6Fg4p;GO$2p=saQtYYa+;l4 zV*1IOzudyEzk3nDJSaXxkm>F_)4q*xaIibr3DgYtLM;;>)aTDT+U<=cl*S)&skT1E zMX)M;T&t#Jky)qO4%E#F$-H_mqZN9Y#SEPJL?{tF@l8|Khg%f%At=>X9e8s};)#kH*_2xNn|uP=8>={yAHEoq7*78+No$Yu|?sgQRoL z4xXd)pAdJP7d4nD!O8|`2F0cX*sfU6?=EMWNdz{>AG1Wj5m4pO?$M?tK3@cOfrVOt zc15DXdw3!V_7q6cM)bQ{G`h1!G)J>i!v z^Sr(Sr7I)p7rnb3vdff>lrqiXBy80yF+FRgXOE4M)H<*v1ht+>r-gM zC3mzIE~3)b!I*OS8f*5S=wu7RGB}$fpd!b8P8&-YxJR)npPE8ER#)1I^&Hy%=6Bw@ z32ba>H^h@APZuUO2VbN4yh!!}s*@yRNlPftN)0C^6GYpqn$gV{{w-4|c7o#3kL%;S zz1j?ppBVYkCf+K;Nfq+WDbH+EIq}zK!X_Tk<7oS^aimhlCc277rbl1=@UPs&MtKIo z+t-vA=G9hOnKK0SSDYkzc2|pR(=|yDNn$^JQ!$ zHh5ib9RV>1;d{Hc>Q9{TS_gOiEh*}C+iQD5Kf)E17TcY10?h$=Jtqj+_B%(4h6(Se z9L3R3CFMthh;@=`%Trsasg@i=X+cYlp&2Yibjs8I#8nsTRW&&`QZN&L4iY@09J6>b zeQm}*&T1~(ICZv9T?)FX!@$!h6bkjM;Q&l2B9}$3b4se6I zK5#n)KoO*%EC+(fDXLg0K%gK6s4_$bqzDCp6q>4){>$Lwi}Y|0{{MzsOFU_R=fm_( K_3%1Q(fCx literal 0 HcmV?d00001 diff --git a/docs/favicons/mstile-310x150.png b/docs/favicons/mstile-310x150.png new file mode 100644 index 0000000000000000000000000000000000000000..42b98f1afeff6d258e93438ef2d891c9e56f60db GIT binary patch literal 2359 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 GG5-QkZe6ed literal 0 HcmV?d00001 diff --git a/docs/favicons/mstile-70x70.png b/docs/favicons/mstile-70x70.png new file mode 100644 index 0000000000000000000000000000000000000000..429545c7d20f3042bf9b112fd9e8dd9723ef5aeb GIT binary patch literal 2106 zcmV-A2*vk_P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt2UST#K~#9!?V5XVRMj2F&*MJ!k%eqXLJ~j(0l|obB1m-xMx4P1 zAXv48QIQT+rXw&7DvtnCfhN)*prf=Ru>lHg(MY2yP>?!cr;t!FCbTAGh{UL5L$cXN zHoJQt=ky<_xx1U)o85bpWqQB&uid@poX`E;-#O>^JHG|MkRd~c3>h+H$dDmJ$)E~m zmep>%)%L9AQ>3KpaddzO|*#iR5q@q2O~352}(R@0i-nP5+NKzY~Z<@@`Le+=!u zuc>D zs{@G|Hl}v*zuLqEl$Hk+P~KU*_ycp_`)fw0*mF#qzP^4#|3-TznOgw~!zWzFYx#fC z+iMe5scHQ>lRMn@fbiG0JzkmY_&aPbZ;p&_Zrw5O7@PPAI^!2cv_6!x8%suip{oZc zd_M9wA-^Wie{Px_>Lf5|%@bPwaY{;JcmR$HPt{I#o&9krJ^~q@&hk1@KX^?J)}HSw zE8Q5_@>(!exo?;Pu~$q7{0d*d^|&2&LN`bOIV6YX(BULko+$SVJOE342mi21dUbnG zd?e;pr%8KzZBvIn;wstggC|UJ-|ZhK*hQOU6$8O`pTpDI))M$~#>L6Pd~ueJZr4M9 zHWxq5wIlg@a23owzar!By-e7{>;l{Fyfwvleu-V!#{?J=OISiOmKl)|m;mEvytgzy zSNiVU`%+iNvEjv`3e(O9CS1U7+{HNOR_q*C9x+>ZpIwyt##8s4W!y~Q#-m2M5MczS zE2H`6`+6Hs@sB1|ae+R9M}hC37!Ldn`mEApMMYiN>YPO# zWxv1|LOIR5vGiwxO;uj4nzCQ2Kf<7|->#e&wDk5nCQt?hP)Z;K5I}$kLsUFwKfv#^ zH2$J;Ze(;ULlFe0G)%1-dez>R(khueSqEG4?1%;!VQJ*L z^UlBV_;Z8zaZM57YEg;l`Jsgy(yy?>0KqS{KX9B8!eV{GJJ+xMXu=Va^{kP%Arwx{+ zdqNMTAhCT{GUIfz=eD)zH@BOvg`MfRwk@jUwHiaWrLuzaE|Eft@N96|yXKGQ29qBC zpWHWdh{8P}&G^>8V~kI)5j9f{-aDP~C|!o_-dymGrV~}Cn$&T&X+BVZBAWC4#RJPU z-EdU8O*`yF;bApHNB2^{sKUY&s^}X@vrngJ>@q6g-{E$f_72I(M2P;6A3{n2kj2?o z(*61VN5h`00ef$w%C{;`{dknPQ(O92+GQ(xVMGIVBX6XOZC~)gmQe>noUaqE8;%r5 zfRI`ovxf99Ie62&s>tMymg955iPbAIK2Zc$^?3huZ-)CpUUEaTr= z78pdL+$C@gcV;fFS4>VP1Q}4#2GXIFVj8(`U|f&Ci+MQUKsv2><~7p8)~?GhqLB1^}P{Nl<|QFh!OB1N`6cAN;=qn2${Q zf5HEo5CF6RmH<* zj@5st!+*+V0FM7M?*DZ@0Ox-z{{PNq`2XpZ?Elj#03fa|^Z&UG7{G=Nz<~nbKnE~x z0Z*OAjhU=kkK3w$Rf`Ow(G+On;?3dO&fCTXp*Y$t5P{i8&#KXJe#lLz$g6e`FCUKg zt1CB+_Kk_0gk+oNn1(5JDgI{L99BX?m=wAC7PF$W{#N|8r!RSGghT1hAL4By#CGGG zvQMLDxsW^m-UaPOjtq`ptgYk|kfi63famhpp6awV8kITJu>6zbHfH17>1?ES%5S3+ zINTF(TcYN6kp3KM9ONX;Tj6lwj@s{!`oW1Gx1Bod|kf zlOAJ}iz7YM7a*E2zLVUIw1skqjrdXKpA@Uc^zg#WhU#5a#5U3>-BBe;h1N$Yt3%hDONLr$3r*3>*_%b%bq2+ zk?S}B8{TC}hqvj^C%a0m?yFNz=&Gp4m?^tis1cDW8A>A5qD2fMxXJ#8RDi347)HEV01a={dcVt_5b*xKuoM9KoO#1Mlz<#hljJ6IHX5nx0I2&VQ~&@n2V$H+6qeU zea2!|{l}4d=xLBGZka$GUUaMKoS#n@8%e%7*R@)#>IrddxV^nPC8tte_6oFO5J%|hPRrXO><*^l>NH-+B7_a-#(Z^53F`_0@pac36D@QJ|%YA3fd z;a#VC{}0KsOS47>uHgIsr9b!7w79uSH{_O$tlKttQOnuV^v2qv;0|;Z(g!OGfdo zLG~w?@j5qEh~EntxjSKM{K6!F89u# zUUPRcJUNV>utRY3MMr8BxAF{AI7PC%sz(0bf&QnfaMS<7M`x5nob{Q0Z5&enfR$PfYP+t$XWiA5u$^wSxpvU zkamO|gmsE4^;?4~tM%hRB?5==Sb9}`k)d# z6BPwaR^90^+RT%_g_0?UOfu}<<|`5{%OV|LcAL{uvS*a(5+|CxGYl}4&^KX8wLwsw zF|P|#F5-LafSUy&dn0GKVdzZGBs?$BwSptHmquCvL*hR?KjL7 za!sulJY;>VzT&8e91Vy=6X+lOY<6Y1ycCcA2~$ImyS)c>14Oq{quON$W~h}!)_GSa zU#Y?*v}Iz&Su)sX5LjdZjcpYkY!jXPn<-4qtvv81XS7E(g)hjPxenR`Gk{)+R3$iI z=;~Nj0ueJCc}6FvoFk=b>{VqzI>DDvR$2jiH0^g>N-_ashIZnY0LO7yt#majs-W$tb<3&C6dxW9NM)Dt5e8Ly-_>xpR!4 z{Q&=cFkMQC=2{-Ypyar+)1OEmmbZ|;X$*S&r-om?YE^lIk|6{3k?4rRG;=@$8)dGvcj8EM2F zu>jwOC5Raxb82wBQwbId$OWesdfjNRD{R2qY1GCPFXo z8n~FM^blmE8p5bZB%6x&p-wOMfCYEiR5Ih!vtm0~Po%Fgpc+bied{09_67Q~T*l9pQF7N;x)ox@c2NOyhQi_v!X)xNcmUn% zs{U%8sluhTUF}edWt`olw!w_4FVt3iD$SCK4lKzkAKTJyY)SVtUk;q4(GM5KQX{ZJ zhh5v(F&W@Sc_s_H4kNV z{)nHSdl>1TBv|KYcA9k2K+1Af^s#}@@`9@T&Vo`Nw0G{tHKh*P>#bRT=}XC}l8-tg z*s;m_mDEV}v}N_gKAX1lMS5>={q`W==3Jrd={ImVLCv*SRO`l~7M;f43xc7!gM7Ws zd|#5^x?sm(Z)1hhSm->q@^4u7WUm&7_s#C=Ryyp9yZ@Y<6CBaj0>@L%WzSzd( ztmX3^w_^3Ih9# zvWoX;GXKQXbR>Rt5N>Nzn%O#2=!x<=U6xM6<0s?_BZ#rt@P+BJjR?#c&8blUI}i%| z+b;y)QFn%Bqf(Wuw5ewjQ^t02_M^qbps7N#XLkuI4XT>_U++DeQN%awo~fV@@WIxE zn`iBkq|4v@pnjW%5R7`neJQrxDY52hsQ{oKSpqs3XAx<-O~aD6TKZD|q6yGmQIO9S zKpsk!6HVNhvXC*Sd{&Uq=K6y#O1}OiB6mn6m))m6`(@6Nk!HcMC8+|E!_=haGbv@; z7tS6L+Q#&QQ2h;wkzEy_TeQS|fGf3JB%hshAi(*KWx$kGlS3OZX;N{a2v^C3DG891 z0epr-N%!XZ-tpxIzY0-Thic38V$A<=$E(gbGVIozlghzmCN$|RZyAIHDv8BnZ`^Oo zGTuOGT_~c9n)nzFwfe6d|9E8@1Q472}VWk_?Vazv{)7 zB)T=8p)}e*?Nx6Nm;10s4jhkr(I9aGK6jhK#s!(7#*u?UyXNF-0Gj5P;5%4dLE1?W zyAI;6(o+EoCw$z$wGWBhcU7@lk5qH=G>(q`(*TVuNpAAGV##KInJJsy)Q6bWSZ+L1 z@aD)VEtLu|tVgTg`0}j2g@A$u#ILGj;$a>DzAb8Mp(-MK)I$GHJ|dteP?lD4mY8yR%UFW(}{{?s`(`)k&aEDN7-AtZvWOjBB+njg{RvmtR zBC7PdpC;L+)6=n7rs`&#pm_i0aD!~szW4*xy?cT^*Vbf;Ema%LUlQ#!Q(5XP#O<9hh z(#?jOUloL|(^AE$V37KZEm?Qmv~K2ut~_O7DBZU;JNL^6w$Wt{^rHUYcl=tXJ{x46 z5s=`6%nVPWK>Nle5}B_o7)y}ON*?AN?E}^aW<{{fb= z-9;m`KA1_N-}Z+fjD9=fqO{GnL!@DexO=X8$IMpY-~J1qFY6*mVAO{~Iq?zQLJJ?x zABLDA%J!Q!!$E#IMdk_&x%BiFWP#FO99wIYXfP(VwjQV;AZfcn#7YF(p>9QZT<>Qr zCWVl)a_gd@PI9nI5pJgpV!FUN1f}l)r4+nbK9LeiZ>V$Ixx9&nNvGA)yX_ouQCP=# z;3;%8@1}AGmqTu@S-(zxAZS-Jiere7(oK{OMM>-?k=OnbRjA5ETw2UfsxDH*vd)nB zBPM$Ih4ED~l^ zWORat&L-r%8P4&`WhG=gPwpoR1OKq??-&NZjcDRpm5I*;lkdRA5H#PN)o_dLD(nO`&lT6InZ>vITyc0b_o zCS({g(evBQd1da$>Dan1E?nTz|CCKNLw@?ff!hI5q`c0IXm1L*W*hG`B*YLJK*p|mjPjG0jhd3e!unX52R*=}b#q~zFhWU#_& z#(m1!N0E>jUQA6*L&U%UcUS+~I!@*=Hv?k1cmeEP|OIkOHfRB}v=!U-`oQviCRKDXoP zR2X5~&QeMDDu@85M!0EyMF(TeB{g70-U}pczFbG^fM(Z}4cmuimlD0X*2>Ab?UI4;bpRl_ zz&JIbP17+;57Z~MMB1jAPOgn`FTnjPZ!)~_ue`%qW{8{0MVRvZqNAW_e5K}s6igAa>b=dC zt`xY+06$!Drai3`g4qZGA4&-Hp|QcrhVei_=0Y%5ReA*r9k#m0^@yicsj zfHX1vVv)gu+!9PzuiQX(B-yvWVj%{i7n1dj4408lM=H5MlF5=A;=Cm0f}h|*D=dqT zRL@luO!xK`btWHZO+v6lyl)GFNeT})>m;(d*?C_?&26gs_^RMZ&W)7*%1EJpBH~#E zRaOItTbp`TMPJwY|r9JJnX#sMap07~CA|$V6^)Q2$HX z*>+_BzFDH^onEAdp=)x==R;LlilZ9+O5(`V5+dD3luDd6OQz1a5IIgDK@@N)uxGeA zpDW75H*sK}AY1y0gN_{ZU@lO zhlNXHd{Swznn7aQ%82BWwZB@OrHd-g=O0VIJfBd>vjagj)9o3&o5ErU6>d$EO9{_s z&~U(}cd8h=`v`>b*s!(HK4WL2H|SNA18K!pJMS>_$eOn`MB3YHP3}wZmI6)tq81?- zXg{LEtw}*iCOy)+O5@j>323~diRFvsdy<-F@!=h|JUhzGlVQa81Sglt?+6ofr*jDb z+0Ye3U9>5yqo!eLXU1BRvo4l1;t3D>WPU`p4Js~~imFzOeW@eH|m}*To3z6-T zI%r&dh_s(T3J_Ewp7Unptk8hE0IqKJTnkE&sV*97+a=Yu=Rt-dQOGL{rOL6u(=nzN zYGxXLemvckm7KE>WZ9HO7y71pBg;OMUwCRSJdGSh_9n$R^tN*n`j6jNeKWVPG0!cy z@t(WbKDk{&xwsM^AdAUwVMmi%U>csz!NE5zhfu$K;{IsGMjNMZFV~EeYK&f`gBeR{ zDRz!(J$$xojr6km(8Ddcn^r-%Ek>`g*4w?%2gT9dNCX#LBVCieMM}=YCohB zNnCzaI62h0_E`f;$PIA?frWsazruJ?k1)!6VKClbp;x-I>7yBwds@Q@Fb}{@qI)~! z3W3VW-u$fmIP(!W7@k_%$Hs5H2W1>6F=;32ClRh$VkrSn(HHA%+?m7ca*q#hMH zeZRd$*|Xb%t*|;cS6~2!V35vEU1XwV&yFUQxPfmRo8%u!C6(&;&z-D74OCGt{EddB zU}q=@we;~{t&e5=&3{EVWAT7*a9;?(>qEQK%N&@jysHQcK^l)mYE8EH(X!*oZed@O zKmNu8&@{y!rWdbwb>dV3DB;}9{Xfo%mR%ypij8i+5LKy%&BR+BpO_6AAm+?6leRG& z0=@?`@P#9Lp?;R#U6CL8y9=_#rCM!lABU_CzT@ZcKHTRO2nQpk@a3lR#<0|Y*L!9aJ3n5-aB6%$wR)HvR5v0*{FPgka^T6Ge~Ls5=}Fl9+D}=MgdqdD<0!m?TH;oNzb=w1P#hwf{Ff>+w5nmJiIAvK*I zIHxgtkO5!H(eB2~^Pvd&IL+Qe5GW9cQYWw^j|$)+#+Z*N#uOe`PxSj2KBHvI+t10k z|Ha`S!G249v6im!;JAL(>>wHP!Oy#-d=Syjf{DyQG~T7%Dm%fS)49@X-!SqcNIw84 zXCA7D%bor0tD&u>x=tJj81{Q+5?$B*h?=2$}=Z4 z*H{&BE=huoupb9k?3hf~a#qa=kzVU9D4DBKJ#uOgjJvi#tP&`}5OKtOYDN=g~ zBO2$V65NbbXPz(q1Q}9Wj7?JgwIrtQ}e-r@8Pe>?d?Rt>>|z@exaEi2Mq8zY&Py96*lk zpzz@tw|SH`xT5J(U;qQd!0GOs>mJVtQ664*@$jtu-HqP7n3%?Lll%)P7EyoU09~#I zA;%4BHLkGe||)`+O^&cI?GwN{gY2R;>8rldDZ-q--EsVki0kj1?-{^XYA^WE8XxX;V1eNy8$EN#XF za=;(`0*9)el$BD${&rL&J z!9)!~XoX^&T08PEjM(9rXBu*iH5M;rbXTG>I4!7TpAo zM91yd*hYbIMv7P4W)juLoa}s4s2lLO3XIHMj4v3p{L%=a9Z)~GL2M63A3}jnPV_O{ zWT}MLo(a#MOaKbC(;u1^)|iu&EArz5ItVk0^HD5v^M&9j4Bi)L$oG2rLfG4Ya2F79ksyk4oD6+ zrKIRxiU1DeGN7?cQ=ne2@nf`UQjvd;UI>B2cS+nqwr=dnbi@vao)QZhhf=2a!J(?rq%oNGz*r;gHJFY8)5I?> z1>M4S%v7i^OS`2ng+p$L?*fXe{Q7+<&tc%lg$flM^kBP?Kkgnz*pU$jRFHChqJ~sB&IqR1^?2 zWvzS>B`qaCQKHq)sc^V~;Qj9ktoAJ`wEa?RjQ(2u|M1Z_@lVDdi<4^%+;v;+VBrQU zBrM2Aeh)R6S%=VNVwGEP}Jh|q(<4TAri_G+lJI4*asOT5lb7wIg&^bbUYzv>Q1 zw#qX|`5loHj_6(8WS8{Y=c_7TJ!e){hErwMC`p2uEAG=8L#gAW-Q8o?`hfG0&v z5?cO%o!}Q~?ahAV6uni<4Y^LA28EupJv)f`*Zskmk;6YBGphJ~Q`YA;sVZeW>DUM05Ng1tOXOx;G#mBy75Pq7(GX3mZ z_7_M+EEjHrnM9V3w{@DHz$o(0#aLzKXQj|-6^>TCI=u9e)$){c{rzqh?Yyv5RE_+2J!swv3jHpKyVHtSp{$fu#F9cu{Igq zd=<2l@n{K^hRKH+rJarwok=^2sEQWLV)hf@=_@fY2mOh9>Jf$85n3J>UN`VqsuNdy zyoIdDkf1dCwRq*F{Gu7H_|+uu3TC6IYrKG8;Qdk5B_-cBz>>A0E$JakmV@%VZ5&6aYrtA0AH5gDoboJ&%gly^Gcd7z}54nk>iud5hQO;;K)ngyr za-j&9^fM$=IL=Hm_wwE3@D!Jpw!I{)Mh0y<3=l_pN0jk zrXKIYPd~GgBXqJI)ex9#P5{Sb1n`FncT)~(&(~hNec&74f-}`({VP7NH`h4hmV7uV z4FO2Qv)_qa#w{}{SQZJ)BIl%7I;SAP; zspM4A50>hdob;F9PEI(b@QkwC?l)>|kTWxx)dChMMX9Th6DFrKCOzVcYa=S`3@c=U zrj!fdQ}Pb{Np8K7JmZo1Ic>a2Y?+{VLr2mnjH^MXspRPJCWNh3kTI!ngM5=9fS{<} z)rUIp$FR^5LQzAlg&AVOmUb2y8Ad^|iSxP0%`NShb`e7{K=!ISa|oy^imVG8-+ux( z=#I^yzwY!!LQBFy*@;Q=o}IIU3*(9i>lO=s$=W@PZPw6hb5u5MK_6=7&%igT*iv@8 z;KmsSZ$4+#AK0YBY+r^!S~}{eRY>g?x>wRq!Bn26E{vK&lX`~D?*-(?z@&xz- zSp}GYmiUGP>K;Af(Y9z*gHXaDjw|uNkOAFgQ||Az2=MWIH~n&r#3<#f^7tUfU1BVi ze)hTP!Piko?_K5_6cXhqP=BE$ff;Y>8ryu%m1p6R1dtE!*-Mrz=%Ui)@3B~5AswlO zc-*JS7dzGaj^r+^8*YcOZ9_F;U<+KT&2!>>tB1$|35NAOE6cER(GQ0eG$@RX_wpxk zdG2RL4Mf7A$>zza4KhE;DuI^ci7Ma_2=z}A5lyE*gV3tMyu?`HsUq=o{XVb*iLFWm z`dDmHf7p`C5|O_$zxt22aoFC!6lv!wOqPe^1$!qzK-=KanIUlNiU01a^@fGU@-R&{(5&Em<}- z`&)L@vTdq5(M-3O@U@mB+U$kx)S}gY-XuBkv%1KN+>J`_hK&41ifM%ezY)IHXoFz^ zzgLlh7yXA#Wj7;;M%pS6hH1;P zL~s=l57H#k*n>9XPn|i>F2v4N0VZEQL(((WUTfBOBar9x^)2)VG0%6*2XLsmxhfHfOP|dKePS@3QyfAW3p%%eyx6nwsx>2CFq++W))G+yv5~mZQ(tPb zU=KlNQC){0XPZOPlO>|!1K<)AprfMdfcL^_rm-#rBwPREH&DQOMwnV|uyV>|HQC>m zH8T@$oZ%_V8}ijdT4VQgb!{nluh7TON>;uZ(73LlcSmS3YkH-o?MDEW<;%}A%) z#MUAPpa$F2B1YZYn`f@x<2#1dj-|5DSo!G0XyxINgb~wrL7_ z8k>qCQzj(U`YP7@))3v5#I}tF1Up+JD^#H{sEL+gQ$MqZDkE+)MX*@d6fZiUdrDyL zKsC-#%qMk}>6I6dWryKO74hs7+_)<0L zxY;Zfrki%*(TqhFG>6Z~rSYE*Er>|k9lZB8A9?B>r%ruY4nuYKw}@P<8#h(FBQd@4 zN|({_e?d|7is1BGHwsz#d}QE^D=bY%l*2N@mI-Wo=BXJ;DdkLxpE69)TQwKeQ6itd z>m+7-a`BsrwZK@*VJB|`rebW^AZq|Os7Bk=U`s27tWhl(#&*WY^ivJz-?=4BS(dHe zbbHKw;*v?056lPhRSYIN+c_3 z1uR5V1T#AXwRkUs_enIOiS&zDm^dlB!Zt zNEx;kCrTZ`MJexjAzp~ct)uFZj2{=9t={Q*XVSCFU*G%fZBoTk2gclLm&(k;PvJF` z2h;i9T|(O@$HDBMn$+N^)KHYJWTZapHMHCsd&YS#DruA~?@9 zE)xzZLbEN`#9M`@0mH=;eo-S+paqm_{VB)5t1zygYC_1TJt3SENDMB7`knBoPfDzw zh}q!^hqJ_2!h-cXYYtl$ps|6)T!72PEOy@KU{bZVrxYnAP&0c=oLe z#x+Y>wzw64J2CFu)$HS}LEJWAI6HdgX8FjRNL@vMoWCMEGxQf9UNm&n^${vpf1I2n zTx{)ce2&rxY+6`c6An0HQ`h$We^kRa=Epoc^CAnv;qNyoLxOdp2Nu!`P|hiV&{=cR zFYndecKwE|=T(2nscP&}pPUQf27g0QQvgj<23%L<9Mo$Yb$?R;#|x_iO(7_hWW+1M zr9vpX{LpzjY_JXG8pj^gkINRoLAuBd#S|pPIMBCwwXZ+;J}QM{`wXq?m8jslP1t|e ziXH9U7C!tQg@@g!RAF`n%>BSqwIh?4WT3nkm~gOckND2OEGj#p0ei|aD6NqITsKBXZ;nHQsr^%`TEV0c7!TF!GNwVxg6FzuIi<{=M zl6Y`waOLdPVI6?1srJ2AL-Z^5NhE037{X|$7i20m&5&D@yJ%5{^dH@@odm(Y@~1}W zXEXw(cL(Xt2pX+h+Z9@0((_`@BJ8v4tk>kXSBL%1#C@JTCxN3mhe}Ky`AI~)Cd-rk zPxf%^D0&w|g_9)AIOvgkEsnw4Omxdv@(kg0u$$xPZsS7_#efU3d+VBzY~Y@-A=V}CQv2agr8DWSQX15-qsO# zi5cdkTwXQq=O^i*)s**xt57Gaf-vMQo3>Qi#tX=&2+Vfc5>j^JG1t`kvX)A%`1)9I zE2j@aq8-OzL4)v)wHx1I2yOHP&4ciq!S&j(J2b0Z_&G89s3b0)Jyev~&QR2)Tr7R^ zUcndLIhjRivJ4YSr@VQ74hl_{X3X#2#7p~%Y1qj7*RRgq^ay6g!Q+axa%tRegBq=Z zTe6dccw{m{VVB=-8sivs?l^(7UEF2>J_K1+Vi?^tKtmH5O|i8U!$*}zc#38I?8-Y1 z#n_V&&RY20jgo20_v9cCx{{Yt6N@K4C3Fa&`%XhzU?hkVg!yH+21HdGwW?ufFWQ(1X?peo@@RHMF$ubA01^_PyyQnJBVL zEInV?#$@+Wzh=kX!kSdL`B{HiMloxF+s7EcU6|M?^8Kw44PC5xRvf8N&zijO=g(xn zN!{Y$zWR+1aTw6X_S(51`-}6Y_sU+FMeC@TYwao{UQ45G^N2-|$f)!CnaOjk7 z@e7@+%v3mh&5kg_mkA5Ch?^f-il`B*BX6{xTpmmys4B9!xv=O86&qT(nj0hJLwXu` zl+ZXng&I{gTW42A%@7p5wC2xO*&MaWlb7p<3fCYg0>S7+y*O37M{Y+9sH$)j6vMLD z8>hIENHzSlS+v8bKaLpm=IK7JPYLjQQq>jEf5NRwX`pxV%~X;M@`6yhbS{?#qI8Ab zWk&kx8p&HY6g}yXsmT%&3h$Y{SCgx`zrIWc308qn%l_RZ$Ls+E( z+unKu+~|8a7An7?HwKay2NO-^nnT%*k5kdr3Q(ueE&SuPdZQeV=NW}G#i%*46H&PQ zdR+WwL`PH?gpvBB`v@Dfb%)-7Y)odF6_gMICE_!cb~>V)Sp7hOhd_g1Q^pKs47ZH$NLpe4S46pi`6iCMH9Li_G~7GR zs{@7zzQHy$pCX2aaW91El`ew-Er6+@vA)I|}9yfb*`j)3vESrt<>$W{UHrXA#80QFV-FdAg$UGT_s^gfYzPl&5?p@hc9Gh;{q*VOSVZ80IM#EFIhS zx5b;Qh9u1};my7*iaKVhZJ2VGZ6(nl?hKDPCz8qRQ(rzYBFjUPVZB&OsKbGVJcKdo zQPpMJE-cD>&!2MmVg(eljII$RoBY5g@j57*l*mm&J4&dV2QrNb(M$CnOt9qA?iqCkQXB7tc5EN8qSrI~9{F)kvyE z9!bL!{Y60dx6s-3ZBI>vlUAkdC#vY5)ke&9^diUQ?ZS^9{o_JxJvcdgCM&YcQKBXn zx;P~`JxR2p&O6@V_6(Ui5M7cxlDJejsh8UDZn&(S;Mn(#*?hde28MOa9=)aX0{r=s+C<)O@Iex?TfT@<#T>uEu&Cn_l}Bp3}4 zG)U>RlOj7v{Q5_w4E{ry(kPX6{tA#WvnpM0tlz6(R^ggH2Zb9e} zIgDk$Q*nYVHjM3hq;<#z;J)#@{sw$~jY6nkn?I0*dpd?$MQF7pSX;4Lt^hl(g2#nb zEPfDtIy)9a%&z(VOUi=6JdU??xQc{xeOgjnY5D>|KmV{ zr#gO3Q%HVKoKsLt#@#X|IZ@5Bw@pe{bp5gZX&aP(ndPvb* z<7uI0=%ECh(HjpUI&oO@$-*LQ6eV8y-=g6G{VnE^)zClCEN`QG|J0H5kzxs%7Lu+^ zGdV}k%W*{D+sPW7ilB*?uMrDA*62R+OqqDWp5kUKX3H`8zCO(i8j?Vt0a79an%!Gl8 zG;|hUONGUD+_wPC_Ey+pXdt08t%|5T@uNA;gnOWqGCr4~JzAg2pHR`rl8#m-MDXD|`$AoR>Qe8;huHc9xGf-u3J&R4t zWn(*{Fw4DI7Ml&kmWCpM$Aw@VVc4jOCvwB&i2*O}W-X|0^Yk`JHRdweXWh<|!0LC% zbwY{C?1;%VkmAdl$*(CzeO61 z;Vy?EYJ><10v7j)JWq!$UXop!V$z`|lkJrjUtC)lc}Vr*0o#3kjvxp8rjalWE;|_4 zo#3v7JZomxU<8btT?Kf?;rL`BOZJh(dQYGaDKHYZs2`2L(SjT#%bLqg%B0z~%cbsVM8obh!3d`@!+8HU$2&RM(T zHMT|SO3_~coe4@XVU-lS+rq7RCA|hzfp1%mv>6wF#+R?g+y``aqA%2?{+`>$o(tj z+wUp*@}QTYm1E=PoSeGZnwCn7E0QwnDWwNpE!5h6HS3v^E?h3k^*<(4^;h79Iv^#L zH_iUzxIwMVW?8a!IWApiAs_`AH=FZfeQ8A~#2fh?De3TQOg<1QmrNVdG^Mri@Gh2~nJ!M5#b7upr_auFQ4Tk(CKCvcO&NT3J|tHPL6Rv^nbmz*C$6IY zR3*)tav?5ZK&k%_iJ1pd+0)SDzrXSd;$_qmul!83?`t{c>rwQdlr_^ zCTlxly0^v+yR)4!{U|%2KPcqI`kUp(?J)jPeCiYdeCRMzVAUCz*Xmc|=`{nJzG zZb|<*!w#sVnwhHYFf-%EhW?C^1E-C!z^4kCv&h1RWY4P_Tu#_lxf-9n5VC~U<0rw# zQ7llfL4=ZG2l_|CwAPI(5X?_yEW%K2aqek-pjt7Gdi=*)hh!ZYLK}8!M7{=sq!>^s zq}dd#qRkX(cu`3e{8HM1QSaV**ext%YAB!Z^L)jz8|9-W(7LO6)-)$P&4>&VQf|;d zHS(;~U$Go_r|Lmj;XdUX@@$#h1aM{rVqcvwRMA|(Ir`eeQN7m=rWLb1a1@~fVhPr2AQ_Npn0kqdd*Sl4!vpx%hK9qzNsLl*?EX*o%m6>O6IR#+LheM;RSp{mrIaR z|E*~uKmeO`B~Y~DeCwNBNGu_x1r_2Qxbo4~vg;i0(fmC9z2Aej4J&wc`k z2Js$nx9Cfx&hq5(1HgJ>DcbM&7+0I5EI{LN!sjbV%rG*9^P8Y;f3YQ!PDV_nGnBAt6rG{G?Edv1B3;r+ZW2@;i5%G} zI0;yGw^b7J2|Ay4*DO{gazE|S{>Bc#iZCpl3VVwe!^Tg&4 z=?zzn#IbA~sKm>TL5LR4%5cW}G>r4)6S~wj^r3^0;cG=8t=hEz5u_UIn8^{1-{>JS zUxw*r;7D_Do^Ua7piYzgC0K+WQCc3w$S5Fy2U$rMU$u3+E16Vshfz6N6VYrfz5B65 zol3zqJX5#+A^kEaiB9BTc4gs!y_S4AyeC+?UT=AxgCpU}YKAb51)qu{RLiPX3^DWc z4W#S_e3kshSBMEyYN0p2UxD()KalRe3JlLPHKPVh(6Fq|z?1@lfYBLS2%(KFvlqIMe1yCGT zv5K17VHtS+6?KD3L>FlwHmz{)i+LlY zBZpve!V7`MhsWFG;GKTqfpM+A4!uuw!yhJeZH9$?{T0B$bV6i{zUi0WN~h zR&0c?h@lJ2oso%DETE!7JkG&I2QrDmAt1i-cZbB$oDzfS$nMD@z>{eLg;lz8!ZvH; z{zQY-D2_o=YxKkQH@)>i%u+0Pz$uIrRwb}HLjk-Y4yfpgva8;}2Sj!QDA2YtV5E`4 zi3DuO>YKct?m!Nbr{JgSo0dqOKLp(Jgywp2gW^qaP9O%|w->WrsF4!^M1**7I6|@N z;(dW6Lh;qJNXMB)&z#H9S^|p&U8S0uz>hD#B4saXqNYT?TjAH^S{Hp5?KKm^fS|TR z{HgO@#dp-AqN8X?llK?w*V1Fhlm!X%#Oudkacnz;5M~piiWG`Fhe*d#a3^x{+D;DT zMQnZ51y&ZJ%Zj+eLpVVv_dm3Z7$O{Dw}vKp;*mX3DfN|~Q7|w6>@33al@=c8 zU|AFql8)UZ8UPMs%`4(E3H34Ib}nbu4)RK49@y zVBoN!3FKlJ_?|fEqM4W}+BoJ#Du9OWMr02fMbD!HnQ8?5Bn+hu)2cAN#i&WvgC-#P$V)*?WNRlk-LS=C&0~!20SZJ+4-TZF620APH{0KINW!k2VEF-v6qv6P0V%#FrjAh8I z@GlF!m3JaD1D5L3q`k1@S%Y;2e3?Fu?95F^(C+!E+`Xyh0eS-0m_^dXsTdm9*|U^n zDS^+67KLIF6H!mgM_cyrk54FpNaK-%pPUk_6dVl~?m{t86*jp45QoQ$&fC5(XAjT< zGKb8E-1-sjpTgxFI0O7OXCR2|uUWHDk_TiS#d0NxB`ek-EIUcg7oS=a^n44-Clbgb zkfNg^L0gDMkw62pUVo_`Q85 z;6`XZeJz#J(8GmM2Tcgi*vfyhcloV+p;pqcAHxHw;S3ME+GfJUJI$?bn!hJ=10O>; zK`$tEUVbl&KE(kdI3^04(mbtCjy?=-pwiNKGZV~uwdgQ(dPTGd-|xCCGSDYGHV?$g z0d|@vAKMv;QgMQ(;MmNNXOzY~c{2NI;y>7Y1eIwdp~@fP(~iH?mI^oG5w)X)gQXlz9@_S3+ar`!dqTkcI+cr%y&tc#gR! zAUe6Y7dU>~s|wLbsLjl|O>_kTEy;`$IfH`49FIYpA(f0}wTfv&HN;<~qgbf2Tox$q z{uGGeR?SL46>eTE$gTFP-c9%_=@YNgAF&L=Bns++Vu=j2ekd--a$+T$lo~~qEGY_n zo>E$&T1K=zpT9u^-1~AO$SMLDm2sNeO1C^_%7l0BfmP7@tx_XH5o&mP6>TaQQkQTu z`3kZ>;6)P%BW;nLmg=cxvzgaC6My1o9ajXWHJ!Mm?R&3Hf!lKfPzJrjFc-gFEobak0X>(7B zP-#Y2&Q!Ern*^9g56k~@X)EW16}{#QP=e!Rt$@Vkr2+;4CYnUkHV^saOd3p8mrn_? z%SQ#Pd{s_cA!;;tY;W5pSlczlE;RQ%e4yx8;6vo=5M(g3z9*TX(#Ohm?_l7#OlZDk zii0RZ^Kjo4?GYFEz9|NA2^ImifQJLPcl#l*V{oRY!t^EjwFz}ly|>Xfis*T&UyHbq z+8NGTkF$Vk`Jbj)cnZ0pa^P=e^DMV;g~dcpn9>}&x0&Sa2OhiZCRH;3X_?~ygS1^(4rU5a z*Z686y@opj1PciE3P>3abT1sK2JcBoyF`QWAyC>~3vj zlo1xPGC)yrfWt}zF^x({H9Y7Dy6C*&CkqFqu16~bBI7xE;m_->%dDJqg8;R zf5-#|D01q8P~m$p1AwUqrD_17I1*!bvN}!&NatPYE>Gn+D1gluE%0IrHULnWRZMbS z&l~txINPdXrT_<^dLIG`QvjHpDUaJ$RLLhFk~_B10v8n>Rghrn?OQM?7{<+vT_d8} zPpKH?e=NaR+x1SW%wam2gA(|Xd zNO6F4mQ&f;MCCNp)<)pK1bXl}5DF&Wn_q9OgySxV7D&b-?Plz0PR`ULL3KXk8O}6U z1X=b~Kdn6HGi-cB`c+qUUbQmWEeq2%rXL0l%=VoaLwRNu82}`^=Qezv($)Xo|l%9$s zxJv$~1m94)V<4;+3#E_jv?wLI+oTfG=W}Vi%hNSnqH!?n%;?7&iVTdr&~>XOhJwX! zc5Kp^;{iPt`im{dMFRh|Nzjosq);X&fzlYsI2j-vHsxp zp(qio`?ZTeb>{$vpjUrE)IhN$y@n=;2hc&kdG+=h%r12y|G9TtOz;W{8mSzGpf}Zt z;seAvo-hO|zH`e zX-d`&kRC(`%9gqmIS)bkjVtey@KUFFcCC#nLNyTL%0$nJXBptVJg!6^L=HgPwiKEW zn(h^-9V^^0C8k*dnv!+z!8Bq8-5@x!?EZPzjGQXtl6nv+v}701fz5*N5Xdl6U{XaO znefeeKg|N=icWO=nl_jfFxj&G`pEO7#@#Mo66v0UZxO4ry&cv5f2x_iK zn@MJc1Vo-i^-gatAvm{aM_QJlyy``#)nKR(i13G|vn+toXi&|gDTtyV8z#g?@Z!7% zN(E3f9%Y7vn0nEFH@l%BWQCzc_)R9J>}u#(1*O_8@PMMct5He2TSkmsce_O#IRbjw z030DL1=HMGW3U1Lz6MNd}eIT>Gev;Ic zY;mUI90l`qAA8Y#TG|5mQkMuq5e!Q07fx(oi4{;o;UiG9LTP}!4g1Q>Y2}7EJLY|F8Qti~G<20c)A@e#1Q)FEb`dp?OK^DpMA9OGp*ZNSJ5K7GQ zE|jyV5-U)7DMp}(Y-!3LLJ1_Ry%21jXJpPhCp9)Pt%WM3$VLos*4P&lx_~44fQ^@d z`TNdpCZ^&Jo>UdE9(>rs{4YK6z`5c7tA36LzPctl`EgtTR2Wg9f^o7ys7B11?7>NCqomn+3}Y{FQ9jEissL?;El>da@+1}sNd${n0L7peSjXSb02YNSU@!qO=YIP}HTv}7m;gPom}dYJhk%eEFaa==m;gvOFaVI~FMtWh zBT2Urh>HM1I@iOX-WcI#T4S#0!67Gt!pKvL{mI9w zB@#KgQ1T&?l~JNx2&com2Vbz(6dgq|x-sB&uaOY&|6-t*K8(fS9e5jRSB* zNoLS>U1icap5@_SOJ-A6$R&btU z!l;9;hkucRbFQ}FvU%Za^}kCU4vrSKW!{SqJTUPxw$Bu3DIsCupmZIs#bzatin68B zNZ{z3$fy(SbB_BKQdlgn1X(h#DXa?X6&+Y{qWm$-LyRFp&D{>@K6Ii62lbk3&=w(L zmVh}K%H0&rJ)0BKAVqM?a(i%c+znB#U1jwRTrJ8>_YJ|J8) z>eG_a6c;XIwnLUUx}Y~MSVZOn_$vSi+an!#~1A|aAS>&H8$SY9rAI}Q@S@jD|GKRW!by{7WeKJ3i|IlLuo}w zAvr9{J{KU@b^I7WX=WtfCeed1JoH?RJn+}J%@2)bE+*7$IoO-NQn)iB!yE>$xBi1H z^wLGJt&rxf%mblxIPeS6+vW|Ty8K>hsaiX)AxilPn90JW zp4h6eF<3?*zirjs){k%g02nQYLiL1h;zXdib1^Yt30|n(24(NJBTLWzIy_Xfi zwTrEd;nVmYii^6~i3C+RXeu@3FL7zp9u=ULp$!UTU3vBZwrU(@hlciCk=QZ+j6A<$r#OA-t_ zV33^Fi^S}vlhAYd;R2*^{B75Ay+KQzwS=8VvPqvNKp;3AVnhP7YsE5Z4Ff_;&ts|9 znb-lqixY@xF2;SK{j=C8i1{)AP4{LkeN&Q|gLv*6xhM>XrtSaPGM~cDZHX2Uy0Ce| z-@A+6_y-JdIZNr-v3By-tj* z1x9*o(UG~8B)cf6%!RL(ypPp(-O0K(yW@u~n$DiS)?>s}Hb8vr4=ct<7j2+iNzWVD zYK*)vAg*Mol);adtQ!P0;Y_Pm{Qca?kyR+9)$nHw>^H8Ao!8OEUGXz29S};y z-fV841CI0Mjn%!(C%0GTVBUK}bl}9KZz3z4(*<~yh!ArG*=gBI#-Xa!q>Q{9ikw89 zYJp;qCFD8mzH@C~wRk489>a`C>qVG1%TcUUg;#=t>Z5?MM82P?$AOfo9qhbGpL*#V z4b7nQus~|4XN>HM{UKfNq$?}NF;}+mn!9t>E(QC2dfJ`Wt6(^+0I7vR7OTxr;+K!H zLyzKLpw+B>B*$vw^XM9T!Ai9%b#JdEQn6%5Jr!t1h3nAj+XoGGEieFhn0;2MZhCfE zyACe=E%AnMQQPmuwA{`GQV0>s zwTg<4B!GhbW|_wf z>k>j_DZRZpraq!MldAKR6`)_4Crr_%kGRP+Kq0QbCh}pAToR4TX3?P^Cqu8{4**mzlkL5;-!+7nS3rM zRbxZ7BRBp3?qlBbn`GZ#)vk}gQ8gZ!SmxZOMi3OsHqsZB^q7SkTl%=U4d?Fkr_zx7 znFBVoO3NVY#|Y9FRh1^jQ-t2j!(%2czPbA_D&(61A<07G>zS7*O!OVn&k-7tnm z=czNzY#0O}G-5=n(pmvY0M4Wv{~rBon6qw4raR4`Lm+36y}xzx_NziYi(PfcW?m z9&bzm1!a;7>xtaND@A6ylFN-D*#;=|qG{NRr!TF`ylvMt6d z7CUNE1~JkMN<4uW&1vufhJQIaQ$Pve zr{WkqC&A0MGz~DSTG7_tz)$;*^3Fb9GNrA2Y=xmZb(JfvK@%v2Q~`I^v69G%B*^yC zYeYui`aI;i5i0OJO9UPbrg-Tf2@&wqw;UV%V+umIbNRKnlzd%9@|Fofj7mMUU&bXE zQZe1T_{Cz-;)RWuiXtd3D*mqzplH**#C!GXJoCUvT-%2K%**V=R1e%36(I{cej5+Y z&GuZ#IHz$~Cn62KjQiIdQ-x`qY#6};-7W~hj1t1+-P821W2&E|+;L%!x3f6Cj($c! z2UFPUFP=_KJ$`$5=UMuC9Q0x^1D6|s-x{Vk^|Mp-gWI2?H+4yb)tK1hY{rXLBm41k z6%nnRS|+bFD0Coc z-&pa>mvSUQ=n4a-7iGdRf^7gEZKJH^M5p6cO2-6kaCudBhu6Gs0c~~DIzLQ8K~TZP z(U8P#3Fv18ea)JRkB=?f066Q(cO2a)`rBe+XAIb1OCjM1rs-*)@ysYZ6zVv|ziS^8 z#KFmq=)6o2hDtaa0PBzONCza0+_(T!WK~(wD3=<4+Qd_mMr~weEJV0S_SPc2H^}d4 zwUVGDM!o8LCo+-C*o^#Rs1CqM6==-Vc>nqTRJek(Z>n$q8q*8uIivO zP_`6tqZaXn(7B;~7m8AtZKLnL#osC2!A__q3dq>F-dc^mt2u&&>^c_(R;Q&cQD<(q ze|tLucYHogof7p-tz8ryHEV`FUc3&3L~Amt671CW92Ppn68B#^l!txBo@l+Hr&qSL z(OP5-hZd%vKu2$M9|Q&aKGNy=9yZ$N03ly7cDT#i2vTrNLb_2-L|TTyYz5%BNosZN zG$!Ym!fUD)wi=|6TC47KAMpm%4+e!!77mCw_Kg|M=$efLVC}`>Slu*HNQTs?n*$eJ z(pLj%R1^5LiN<0G!E5JBN}X>6_(fY69MuMjFlsIBjrWb9N|?hV`9d^L7<)q-L~5vv z_>z?w2Z?PRI7Ez>W3Sp+^*O;7CAt$%X~&oyh6E+iD%bx%}4 z6~b98PlOFvE~=$Ec72vDAu4vp<{aZ2ykuCyI+|c&xV0d~JqZJ4sEM6lWHKfOMn#Dh zO=En?ZgE@D&^Ai0Mx%tuFBbz-^L~URKJHG;b3PnEc5<$fQxx7&obQ%K3Q@$2=X|@b zOeVh`qPV~|H-nC<95Jv7r&<{sO+7QPz;98^kZEYhgG4O%!MVtq;zcqip+J)Xgwb!D z9lI|Y)>wM~zRooOWd`8|5*9ReKgGr7qLCpTqfQb7DGNaJpaB&97DGlX*N-93@)|Sy z4f$apM94EHM^e^0BtqFlI5UtQCs*YaX$J-b>RrFL8}{>a1gD)d(#FXp>_bsg%~G{m zidIc))CZm-ld-E)%u)smCV(RuP*>cf38}!f2qSNBqpWli>_2ospi0Kvf#LXu5lZzn zi+xj+QCu5c(03C8l9on1N(b9-={5o_LV-WTh$g_ZgzzY_IUi87iYu7O(C8k+CI(^G zr`&0sx)p1@duj%PBXg`qniCR|5!tzU8K~OUoJzd1#e1N9k`7Z8U8X;HTkLL_=IHbhoKCJY1V8W zMC+8!Pjfxzfu46(5kFyzhzhTP=cO6z#1^}EF)B!&IXy%ZWS?b?(o%eZF0ax~$Dbb! zazxUiA$BA^oPd{F`BVJGFq;<+O^Mp_uWSdKKDZP=x# z1e^-QZcwtwl5)xlwvlpRiDl_uq70-MuwEQp!A*)Fudez|^x9Hb#qw~N_cJ#B6Zu5l zlRN?^%?i_60>O>D7!;V12u6Tl*>C9IH_q#qyd+&6Z|nfPo?q=jgviUwRr|zCitHs7 z5Ixu<3AZFkIkzNAQEBUIV#~>rNg;-lY>_O&w&;dwD7|QkDWb^h1<*jd@KGX-FMlP0 z6uO$l>Vg5gTPEWjHi9S5e844A3Up3Wd%2{mj+$!vH6W+ODG zm4J)KW~PMX;xkq9gm1}qo`A<`P(?5#kY>`H<{inAeGz<@Qwd4r1txt&8*sT3c($pO zFfHW+GXXfh!x+R)%R|Q#=FINl`#jvt5b_JFvZ?H}))TjY)y~sBr-yZEm_`;3iW8Kr z_riw6J$h4NAjKH!kUO%(jWvt23DS1ung#qBk9^gC^0JzK@ zB0r{98QZKI7e(t8Mu7@$Si?tYGe|}U!LdB_jhXXdMhm zu!}ZyZ`s|#$~jS|g2tbqXQzH1??IlVP5`D`x);otS7_KGs1IRXlAIP{Im~C{UApmM zVXI6yiE88uo;lRSP^4*5ldq;mD&u~R2LW6XO-Yh z!(kE@F-`-SB9OurxC|?pOh-wenSw00Zz~C6POML*AR9wy4Qh`D*bs%*ZQ<|L_N&A` z)oBV7RERSLF6I2k+N=PP9I%Yj5mAmKOCBs-IB7Jnk8s6F(SK{x1emY$Z(wuQ*oo2S zJK`J-$)~(81-N@NNGuonOSNaApx@dn(652-82}jYDNFGUOwuH&!#tSN!n;6jddR^=*v{)2(0*(mdfMNJ@pm8QU!Q?x0Z(Nz>pOO6Db z0*TDf_{=BjiJoKmm%ZCY>Z#NNgZx9T31TvzkbE1sl}6P(5o={cISp!uMvQ*VtQfT` z1Hjh-a$`6Omb@1-73h!ZZ9dtf+VH)2?Jl5K%EsNk zbdy$9Jf(W-L1;`xxz=Pa2}{~TZ$}waa|YCKw4<)Y{1z@du!U*gFT3Nfc{>z9&fISt|xLG@HZ6&S!yA0D!yBl9X$_ zV&BFHsRn!q{F`Xibjeh`0s!wNtMRKG2=Va5s3R4hfABLUg<}(!U=V+x8zcaCAV3n@ zFsf#C?__yese-d;7t{snR`awNiI*as8{s26#k-IX6dIV+Q3l`vAny(E+e0mB6J+Oa?)Ec{6ZXivAy|;4uc%WqbT%>-dX^s zvC-EW0VyvY0-5E~lr%i|h&|S#MNE9O(>(DiN`Fg3%YE9lR~@AB6Qf*xhg8S{AgZbi zDa!8{ZJ!4Q-t)5hft2lUQ|Ky}DqpU4jRx7V)LO;u%yNWTHQO-1tgi1q%P%F#ET zW(Z1=R8d933_NIkq7(;)pt|^}(Bft@$H+DIFwI{L35VoG>mWdszd+tk^mu9!B?G_V zSVYbiwJ;bd6Ygcw+k2qXDAOAlIQ^6JQVDEX`gad5t*)%MITsUOJ3q|cfybozIep%t z0X1-0W)@YYuth^sjgBV;=$@T?2ud&eTGt48G)Pz2Y>e{xZ*Zh$4$;LBuP1QHd(J8RALB?9lw-~uG z)M0?XvcrW*k|;>Jbp>rwRb;OTHpx9BpmwP5Vb!C`M-mPEHh|jEkVab=3N5I=;)Mm_ z70e|-PN5ORd7n^WSc4*Q6P!bV4#XmffFMgWzeXu0%mhe|gJhQm?q`jKtsPwn*&t@Mv=^G@yZ?ydUV z5%S!Q2vOq4O{pSrVUM@4$6HuqjchSymKdWu3{91WCc?uHVPS_bu)|l_VXNFQweA>7 z=L{ihhQ6`hy0PB0vEHt+-lD1Anx)>5ot%uFoPw2{evzDdk(_jioNk4jYK5JE!E1VG z6zo(D>(lM)gYD~s&Fb^5>T`|iQ;q49jp>7J=~C_JvhC7$Cs52qG<<3>MA=3uk-^XL$-|2E{Xiq8Y&<4B%LXcld^P z$cA^Ac6V5IcR+S__;qV&GX<_0g3Jm*U*)n_@PelHK~6g$q&<*Oj>spE zWD}#J39Zot#OQ)xbU`h6Ae1~1Lw*P$mgEq(atKSg1R~sm4eUV%HXwpK5I|iBFZ{?a zoQN+Rh%W3%E?fvM925f1l_qd6BkwOFFE1YNFC8y07Vj?+t}hSnFAQ!k3#~5+tuF}e zF9<9z25T<`DlY^ou35)BQ>eUMQFywd@ij%_I!nYf7l4NhJeoV+nHcwS=gq{ZPm zi^5YEgr+Y+OkRPMy!$D6<}&k~W#;(H&5;+HAuln)USWj1!wGqM67t*y<+uyV&=-_o zFGE0HhJ3vU`FZKw%I|t86prhqpdZ-lLp^rj5BWQoR5hPj0O$I&+(^1X56)scNQURT z?3v3?hCj%v%h7-U009F5U;r@XEi>+$7L9?0-Obi;ILv~fOlSzK{Sh4*L=mcpaUgC9 z*aR#aB64=gWA@xDaPyk%PW?XiTi8KmQ;h3rwe zt^5%tm|@D04%u42N=US0Gx^-Mbn~{~G83gX;p1ym^LZTZcfK&v6S)yP$Oi8M9_CV^ zu=4MMK<-4ZSvu#}*0?b1#N{QXI6)t=MwHCJ-U6aMDRTm@8qF-B=_k-hgNs$Nawp2j z{z6EbAjaxWUE9Er^(r>3!(H$ zKNuo{qIt-%I>!geP>K|&QPXM7vAVGTF`-Qi9`pR2HKbONUDV1zl{ynV3;H zgJ{Y`rsBffbh{o%@n$f#TN6)Oa6Z>@%8oAUya+l`^$vQWyw)dR6`Vw#N?BbQ5<<*S zl~vU_;V+sLT~m#l^pGl>c^*$l2vvD)70rODSs69(RS?Mbxppln&Cj0aKqu^8mwR0y zc~8_~ZZ5WGH(5KEQ+D?Lg34w$y1ct@bWV(UaHtSP#md=Lbccakl8Y)U=ImuE)4>&- z@wzn?WQU|$NbutgMs$^FAg-0>hhmU)*kOGj6K>v92%nsPF~||(f~kWKxGESSsHB8k zkR39972jw8$(@NEbdj|G*nh;q!oh|tzzk3OBY~EgnS(q$BGWUNM^ga^T#8BnY+y2k z+w$J@IZ&_&Ytl0wa(D>EK!bI@xbEON#8^Fr$?k&Es3p`t>)XQ+>U%+t_-hQZaQH?= z3-!n^{)dkd5Nn)NW_qWog+ey24P8s23*tL2XykC+AQTW#qv{mkHAP^RqKiUJAb>uc zF365aos%V7i(-mWH<^r1;Q~upHY+Q2l_875$KWV6t^O0$> zLq&PyT&D#EqD6=J#&_T#wK%`2C!*YeDHK`IBnuGSmaN&TNWMY-X08Fzt2Gwg8S-BG99q9nO zvQeOmTT&E(nD(hKmez3N6_^@tmn}C0T~`vo#%LL+zq+J7&Ok8dZ2*IOzqKM<5BXc0FSgJrfBqeNva-flccP<>ef!oktLM}ZQljp2Sj5vv80-a#`$x{hy_PYStlI6|?aT1X)K$ufaUnqM< zi5$Fmrl}queS8^Mq*S(#1(^^cHNe4^Tl}B3(@mRj`CDYlxOK!6ieU`}6Fh&l>_mDl zCuG@Ns9cs%xQ@uyIjWrdG$meA`kROO5F(bALtRY(X7HKyrkG z!-t|iK79Vv=8^={qncUuxz|IQQm)s*pW2!CKw?=Nzd&pw41(d$zjb5?$crL-U;BpS z_)uymI-Wfn)8l$7zha&(9VH+0AG$2tzON5g(OX<=mz8B>(^ zaLd)NCCSIJSVYjPSlqsKH~N4&H+QtCUA(OySK=|b`PP`>eW6?kh6X>EutZ*@`6#@WYtQ}6!7BZqdjJP3% z$ucYLt1tl1MaI{N35Bc{ImusTgvw(T@g#*UgzCsdBm!$xU=A^rNahwSy*u`?PaP;v zyAICIp^$h2#tVojwu>>Qj<@@3EE(c8nFS(5?nmPBxtfwwQfe>&jCUKwYfw893h7l= zP!lG$NSh}zH$O-O_x-j<0s}}Tm|!e%5^WihGC_q@g_mLdaS&6YCim_&DQR$b2c5GW z|D8xHXMx2YI%<8*V*g5iI4nC;Q0y<&8}YbXLEAf?AgbDs3gAL%5UdX(S%QQOL6PJl zmn90)6b&n22Azvn(F=u;=F1vOQbMW3EMcuoIYKqasc@~pH5!hoX_3j>r}EFn+*m_p z%#t^_Pf_QgQFj8i8-s6KxaN&p0&;dlo!hOvB}l{Fdz;PY(WLm)ToIpDtzt$YA>nSN zKoMQ@L;s*HaSv9wq!;Kd1r0FJQ&U>fF|+crLlEm_uY+7Uw1k{4QuTOMXUC@tolYm* zhyZ&NJ>Fy@yn!oVa2shsFx5idB$c zp7-#wG1(UvL-0$R)z-L$zK&ZLFVS6`?RF z6fwg7;6=R1CVfX^6GQKzVYtAY~PPd3wl+V3C+ zpgiq8{KI0gxzwqOlHN!$i3(M1v)fzrV$-xpq<@d_KV)vkn(qoLCd~*;ek@BMQ6!9;8*fLkXZ!&4$-od zzk)YH0D5E#+dMb$s>DR|V9Ue=4pE^eir|WbU9roc$C*s4Tuq%&nfrnCfchwQCjM_? zh^XQZL^n1BR$}Ik0;iS8~lW zgigG2bKh;*ZK&uuLXa07wA1N7u`1`WQXIS|4J3AMA&9udf(xRI(n~Lu(G%B%_(dD7 z1f}jstKx~^2B{48VFpiSaO8eQzat6IAUYiywe`{+UG3s6T^pyIGBblvRJqUb9gx182q8uh-OG2`Z)MQvU z&tXBsFMqC3eE|{2I=7%|{1{-7b%!3Sm_K_FZzXrf@bgN;q@Fy8cngkRLz-v$Mc zvVF`8h-p!0XSY)#@Ne7&5bH1y&A95eiPc zOuXEYa+Chp36ssYC}5Pc8_gmx{2wB9do}QU*%y?QStozWe^WV)4|gp8YePA^AfFtBwQjt25hT{CE$vSU})WJ_a)P zW=><#--!+NMvN8((-$A|3yN2dD@}FRBSz#fa$MR6N`KwFHd=X?hi0rf136}jrYYMZ zVK#{A&%}CteqTF=@gWr8+o-H~Ec^2kyCsqarixdqCJqZO9+`Wa)R~b!0Z8igT(o$( zz+V2^L_?WtSHq3A8ZtMXN7+++R#qnKu1x3QkId_nL}u>7v^+e_On!mQrnVOi+>dAf z?>T7P(%K50{rkx(An+MrH)E*62&~S*k{y;&xtD16YuTBHd_nUInJR*6RN5EvV*x0# zWM%M}ub7p_VJfM81jM<~W^2P^UcUDZ%_}_Ed8;jDEVbYOckHuz!WLLS+gbWGGUr_4 zw>h4I%ogaD%pHqxRv_|TerWpme});GNhc@3F(2a-l&Upw+5JhC{eZ^`B#TStL!UlX03yJ1$AM&Zj#nFoM2aRA%6@d81) z(b-MH_DgI=AcOB0mj>QjKwAB*=Y|LQBqhV#2lp&rZYG*j*!(*w0HnjgF}J9w$(POt za% z2y`>uMo9hC%-DjYc4`40bDT?K-OfRO8eY=9;y`ugorpk7!Xnw zJHAP?3!X{h7@bB*=^w7j^6KiJ)$=Ej4eKu(yv+3$liU={dIhsjR{Z5+do%=u;6x@+ zdw`zy+=rWWfX#~E6>q>LVRl0>uNhiO1LwtGJjRD(u#X{Wi}aBBxrkh7{+*1%2&BMJ zIi~)*u7gNxQ{{+Itq@=3;oWQz0_`CYg{t(2aP$XFK;Z~lu3A$HN`BVKvjpZYgh-va zeXg{W^O(!Mvn4+s6vU!aAC6R%+TVN(9+SIns7Iu1&tt zqW|t(iUqaYZoB2@7;tCxb^Wl;&YB%h`QhAw6C4e5+5A(r_+jh@C1MO>Ru`7R4^JFC zD$~y7*65k3F9DRymWqf5bTR! zrt3GRv_h@LW_CTrR{k}l+EMxV=X%)LwPIzy!wh0r`}|b2!Z}txZ4}Fft#3uynAvZ$w$Ru!q8_6UK?h3V;d#L%c{|q&zT1 zANl|c?8Gl^)wi@^&UXEewb*x(&eK|50Hfj&+4ey0$VL#v1kPY$1wy`Hg=05x^Q8b_ z9*;%iYEnJAgb&0rP+2^@q*`w%0WkP{1xx|VBQxAwIvAVG0E_o;W;nc!^*+fU<-YuI z=hyot&3RAD+eMBF=86-<1!%!$`LroKg)25@7=I{em2PoF_C)v=daTcch-}9Y<<6K- z0z7>Y6j7F3?qC57wl)@zcdnc9;3X)Qb+fR`Q92A)PAqNB%3+kg8k;U1(@QRcWK-4+ zm|I(1`NG|IyXRhOtUfdGr&*Zu&>fm=kHO%|xY-mqKE=d0f1bf<;%8 zlx}QeViThQ&MFe48mXSD`b|7Y=d_%5`q*)i=)osg+6Q)I$y2eS%|}5%V8MDoo5oj> z8HwN`UhHL&_*qHgF%@=mq$9v;oJu@INU1h4mT0JB#~W0RBm^OtgMByA&waJ9PIlCf zqyrKlFW^r=tiT)sZF)!My>GpETz(E344P~W{*9z`kzC60SX#^jDqrUYgJ!cDQYPo= z7_1m14C1Q|9PaZGk2sF}{8E8n+w^klrVFqFeL#f+83i_?Y1aJD)YK0M-vn`>Bm@Ei zGpHj<4^b3~G^aO+muxYr#{l!Kpqt8eUugqo*+Zrc3wL5?xkK|>AFI}DdK|0`5Ue(? z+%@4g1ZTohk#N-F%_T#WC@e0RoK}vBh7nOsBRPygg%cB$v`T=9t!FeZ6~2QU@hK^itoI`*w`?7hXr4%*}RT zOYe>i>pwnireOT(sEsK=kX^p^$f#Fw4<@gZ8y?`{tClU4wJKRWC5WGpv3js#sBThA zAU9fgQV%4hfZsEa>2tvuq<1~wL%;eRmVS0Pzspb{nZdi)t{8=&|Av3YCUHY~%xk0B14)146=#*xV~ua=HXgB2&zc5WjlD z-}A~7_sm4W)LL|$qpegEmFj?88LU>{rU>t|a9iq=%)*ZVi>@@>o{lGj9Kdnw@^FU@ zW>dV|>LKQuIDvkliH3_SEg_N)##cFi(Yb+E6Oagj?64jUM>WE7N*r{M0OhhTUL#xw z3PphM`#cB68~#s|0o2b`vOrS=WF`|(Mz8O|1usr2O0-an+P8Hjw7`1UBZNcP-8{^P zBTUlpLUP^0=uU|;hrZZVL;9Fi9W0Otuwl%3Cs#$CQ>t7Ek%l9|$}d4PWg9rsAMmgd zwFeSW<0cjnU?WW2tbhoM5!49_hXozf+m0q$u?9YJ-B~7Dgv=wx5+MP>6&WA6(8aZw z=_VQ4OBhP)-Gn) zh(lZy)$8ha5#Z^~0acNxVhOtMjddZF&gmqfd|r{-Eg^IzmM+#9Rc#rf8Ai&_ng;oszskUA9vpJ^fH@2JUj1!} z96E*pfT4&64!%&tr(m9@dx#=5)KzetQC59$uw7(y?mA@28B6-dAwv(WL*lzz4LEy@ zn@2rQo2KNZG<=idBc2nM0>{cQBhG;!*i_1xLMOu}5NQZDVEXUKJF0ZZmfsR`B|B}H z4wOnT&lAfx;gSQA!}<|YdAZ*0T!tUi*QM}SdljJ-b2}IJu`eQUw3zg3k3`j@Pc9>!dy5OHYRNuQE3Uj&6T*_Rcsd_mBy`*x=H+!TY6&tld z)q$f%rO<+)WnSAG`G7%UhV2+q8bLpBgu(oX^J4_!#WSemWu!M$q{>O69X2B_H)FEJ zAfE{WNFy_n!DuMA-4E&jy-Fn;vin*)4U7yhZ4sg2s}T~H$I=r;FCU1I+VUxWi408+ z#EKV04tF{20;~}Pse>&!9+Vuz!yK6nP{waV!}feE1UHE8?vNfzHK>HheTr3nBVifxy{(kg zbAW+&28xS&03pe63J}Iy&8q9c4Xu_#Gn@rW1resX_WU5 zKXidiNfUZ-vmKPo;Yq*0fN02mD}rN)ws<}^5Y;2^I+89L-jIunFu&ZUpRy6$rG)pK@bt(bK8_t zBTncMve0&NO8MgNS|u9I0g;FBlvx&^xE4_m@T3?B*#yuTEEB!k76I-@`5-zRuO_;~ zjbV78$<&)=d!sXe%?ChcXC=Iuk-7sb2kOF0fg-kIRtJaY5e@PNlB`7Zi6{(;n|JXh za09p8Nv(Rr)NV!#o0pk0Xn<(@P#xq--&XydD(ELV@b^kf=n|)}}&}gs*@C8W<<|#0zN~48@UUCn30H+*&5f!q^>hMB6p39Bje8wL$oi1chrU4wBk} zuwc{~cwYw6s(GjcdAVz$#2o*@Y=qdE8AY<03gvAD^atdFA=DP6HK;koEc96&pLU6` zKn9R+bt?*Gr2@HjW7BLf{gO@FQH>VK#K5bc#h14a{uX5oFjyTyzqAZ!9yvq9bV4ud zwW_8ut9c#eLJ&@#k#8*rh}NtwuzeqgJV+D!8zp0WmudjnZMO;7NPogie<9s21ojht zMZ^IOE%u*jVqw@WfMQ1htkBF}@pufWU4sK@<%Ax(bweZVEw6$j7!;E(h<$6%T5hfe$D@*l?nk`<`Jt_dMwYn#PBWXo~WU zWfL`dR+ssoHu`p%lw&aohxYSyFwP70B zEKU26Q1jCBs1+sVlAZ=RdP(#qdk#G2lUNpt+c2eXhIJ*@CzctY&=PQjx;rqU08^AX zI^8GU{5~80Pab9wdi@PK%{|w6k}a(I?nG1GPYPA8M>1+~{tXlYoPYnf<)+RmQG6Gp%$5oHIkfgY*$b z&^}6HxNA75tp(3cr~AO5fUkxuxwYQrDK4=T2)6)6fD$6~f})J2IrJjW;STAr3CUaHXo> zoJtOJl{@LaF$*5U`+x>D_X+R;_o;|&%>JX&XkrCdv@H;Kft(6Jb_Un1hudi=BnH2M zoj=EH>;2Ib(fp^rU0i^ildAKJ|0b*yK}ZlS{!KR~SDDU}H| z*AbX?a~hUbmbcL#>NJ-?aW3&ouEdIQwm?lc+8}LBopMY<7ZnCi#deGaei>S1I91=a zk;RJX=Uu*83OXC>f%6@5l0ve@s<&wbNxkqYNDWj_H=*neGak%J@tIHYtC*)1ayhyT z!J<@hJ(D04yO_gxM`ymGGT-q49clmWEU|% z^#T;9fsQ?zk8##08B)7xCjuA(rY!8mU;~kHD8K_fIin$l((J+_CdbAXEIn~+P7?}1 zgys+#{jP{8C2Z8PfeijF_W|!d$}L$+s{}%Lh`%LIyL2@=YazOf6980#aFf=fPMr6h z{eQ^IKrq$t3p788-cxm?x)2WxUWXDbl?cNX8z`_a1`u$Bzr3_H68+?qr%JH6iCn!f zVlTU= zgklPryq=7IqIVe@)J2Lswe37?0Ns!{jBO>C`$E5t*8g`!$G37mjaY^=IMpE=qh#fj zc|5^C9PYr7Ln|4|88k&%5Wpf<#kG8^%1faPl&fs>l9wA4-Ld@*h@i0O9A$2s1d!aZ zlZ<|%r$WMQjO+xPf9^p|nq?tDe(m9kc~vu_`hiae#Y!t9^EwZq37o-rN$dpQMi=m> zF%^js^?Bz4jxB(v!$>sc{0>gBtTaGO@PYBLm1G^fb4oD=T6_ST&eve^VRb*^y^WIJ zj=^{Fnxm(lDFeUPM76Wx%T}j6nwR|XEiapo=qPtxN)(H4p>htR9vy@0F zV4C`BVJJ~|3rBWN+&*iO$cJF$r^LJ5W^8lKVHe`_*2u5}9WB$UFu(tBh&zi@=hN9Ex%Af*OpzryPdV46qLio(`B zK{KfK0)G6c{P+>J!ECxazwOqvP7rRC8r{JU%&$PfnTP?|@O~LmY07BdErbq1^IwSo zt!ZJ~PpLaVGvE>*s_Z#dL%3|>2=?tqv&k(KJbi&^myhRfqbn|t33>n_FH&gkYi1nV zLp7(Qalwkjk#_t@L#(hDTsX5t3!KNwoh)V?8R>uv>c`3_%WZamHZW%Q2+)bLu8!6V zuyaWls}W#YH(5a#?OP#TY z7j?!&=d`g&^|6~8Z4Ijm{K$Cy9TFux%LtPTx)`f&%LLd9@7@uj2>g?XB4$kPYi1FA zv$d0`Cw0`KrN??0w44UyUuUg3adJ693n={jMe4&Qk8*g$Ll1b3y^D za3M84J?Cu{lB^O2lipf|4W}%^oBgp7q039+DfIyJmr7r4h?X@;VfTt@jA96&U6%+} zXu5z#k&Vq}w`@W8t_T1$C0XJDIUs20=74(^pRfqOWb|@>xqElSeHC^I7Gx*@8_Gce z>Jx`41X+s!%0UNGe?R;w0bgzn68hr}ysL?oCuU;dx9+`xuic8iSM9!BfHF)r03+N) z#iqE4NZQK3;74-z&kY94;(j4F4W^MP15_vmdxO+}8HO<(Id9Eh`jyp|$^~Jsgb)6t zWss4)ixIu1{;?4#VBu;Np(0aDwGDo>ri{$N2-zvgINU9F;jJNJC`|pI?yK`(_qLY} zTX*HIh%?-F_hWgD0c{{#>Cllm7C+<&gMjlBSo1`iXYU$8ujIzDo|cJ#iir^XL`GG@ z<;o&5=&nhM3rHKoya`RXS3NDO2!VV;A_LqcJVZ;8O4uhciqJf60l(})$-$;W4W{8~ zSnvNVox8(Cactas2sysba?6Z_Mg*>KunmzAhtNuj5j-)Rgz6eeG2;LsFZof3L0ooP zt~>m$`uo)EqK_uxhGAoC@-0u5$&$peS();_(7dwt)jWuazu;ahJtr9PM9Atp^QyH5S8yNEfmZ-mULbAy%OZWr(qyie7t!P_&zy zwj!W=mP|}p=Ojh$In<;s)gxf3*Sp)jJIxg}Ao+ocgycor8Ig03>_8yWHi6qae6b*S zyf-q@c0BN2D-PBYB?&1hitSIBH_XKNvg2~GdP+o5+}U<255V4Z24#R?ssn&DinRk0 zqeKfGDi)I_OhFq}7Q+u!v2!v30%SzzLwmw2QOtC7z*#;})>GV&nQUnN$XL`lt{>_L zx%ob@?{SloO>P!fZM2!IbgpcS;WcsW z5-v2K-jX#$DhlJ-j`9k&+p=?+rT*-)q)u+LO=eW<9MaUGjF{aO83%A#R9qiT z7Zc(OyA-39u7W<9;)H@K!@LdE4+^XH=L==1axo3}{RxGy$Lf69L z9T2sM>ntNdsueelltXN7WND9b7rbYzi5SdeR7Glc8jp$s(p~+R7JQdNhh9$I`41?;)*9ePL{Q`*DYUceKJkUJGOxb>-M;M~Jr!W= zvA&0mogC}lCd~l-vRLFGWC*gs*x<{_9{VoqBc|+AkTV8`VJl+lm^krg7*-+OhiV2h z?3q@{h1_!f{#X&Zr6hM64o3vRxqf*Dy2^XIfK-`eE_@3pyeUSDdbqRzGU#Jugt#Md zz=cF*Mj(d)+t_@7={;)*Vv8HW*7gKldZ9FjylD00^p6)XE1 zRBPJRL@z3|v+>UX0sxyN+9_^?*nAd8mzU%p?@2s z37LvXVgf<{^%`eDxW-Ut)rg=izMdp5h=s4jRC5)oo3?iSn=p*aATHo?ENBwNuyBNA z#pshcnMK-i_UCX`*m7dC6BZpJ5K9atm<0y4@$5`C%rjp4%>Qd4^e$7&0wkalnN=`w zYji-C7D2)8)$gw8MA?Z|m|G%PLt?Z5iv9XfE~0`(BQEFvfRJw9$qE_;Z}FV;6OS}L z>KJ}qA(Is8;Cua$g;gI()5{Jf3Co^*r9#f8Ka-I{&ijR!Ce`~HA=QHYRr;LJXp!-W zW^BDMA?m|nWpEdwE0~WbSPt*hLenv>ULS`Hod|*hN4%#ZfZlNOzz{IK76?O(fM3Uq zDrzKuqmc))@R*S+6su7f$f^oV0!qas|9%4?^O82M3@^3HJeUq^2O%U6MRuYfP`xrd zsZ>T5@fh0~F2b~8BJX^a00zPe{}AC`MOZci#G-adoWn$Hj(t$_nnzz4r0T2JJ0dyZZ=04AKIrUz}a7TSuJH*FY~?-=1>11NE} zdeThliI8Vtbm`q0Ek^e`i5uVlLzIL!Rr`TMKSjYmDh;XP)zCDFu~ zVlmGpvgW&1X7cfdJBaWW;ryeoXFMcw#Dr5F<53JO@Bbzd@dK4<&=@$S*sOeijNRerauvFCHg#c0M(cRkS7|Bv`k7uR|S6 zp!7nuaAMRjCm$LNiWK+!>=`3yL+~(9POgP%JyAFCnIYj{F}pJx%Z88RH_+m!dXf5)M_OhFN&9wP@h^=;hs zZWcGqrJ(eiMwk{2?NF5#?NzX8xA-t^ z@G)JrP3%x){ewiBB6hUrI(DRApJgR^-X$hsjgCy#SRbWpLQ&=ivMYqHJo;3wf{gIh zkPJw`;2Y~=7TAX$0}5dw`gY8cgNYeH!&!q1{srTY<3|+Sgu0uhFRl+PSP*x2j@pK( zlBT^t2G0e*J@%;-*{3EPb;~I`xod(uj zsfWKShcPieYX782ir+nP^qa43&$huzJ@)8>yJ}%8#OY*qcz8AH?5qiYw+g)7aF?eXdCp^%mKc2F zmYu)3P*?+EJQX29p0SZ<00EN=)4^!I!A;3>yr=MnYr47GgnsbnhgjJIc zn-C{YaB&U%4W?TqV+K%g6p0C7`5h;Lg!a>BNo5vNq|O;`)G@XIF6~Vg z9p<~7l!FT2GT1c2NBALsOwbmtf*k~D&-}_@csuWedZ*EPF%;O2ZGcN{&i#mCUJQk3 z%FJ%Eae(;*`-S#K9c?I0Cw%20Uf#6FO`ADy8Z&lMzoL3!c(S>o4FX!>II16&=creS zmnat65daNtvp907Im!wZFj8Z-uvafoX^>l|x?X%+R(jWXumy=A~AoN8vS(yWAhb_?9aW5URZ!U-$Ew($DVp1@! zD=ego05MZ05g?ZWj<6Wb6>I6DwFZp^Cozv!nz_^tv?yTE#gSH88K;BTYsAl|R{k}4 z0N=`<7Ojs_>DO6|kuPLCmR(^ioJDD`+~im>1XaGCxn?49!G(BLow4d&B)Df-#l1-( z+{H$vsb}BF?D73YGGFDYC?*|3$Jzhxc zSSE!w7Kd(#Gnic!cKD7!mRIFolvBrSAhIcA%B@JM2nYWcL7Yr7GTS56o7PiH;fK*{ zUMZeWk`I$CMZU5x^=ZxCTj z0WdxEFOmyjNTIbQ1#V-oEhx(^yfGpn&Qz5pgqjaZm-4$F+p#k1@1>w=z)dXAysS;c{Mx+%re9fGf*C* zwpYi|O+nY@Y+E)#Hi3uiL}3|yo|S`;QH%?k>0%SGw3wb11)kKvl^m!aNnL31fE$>z z0~FcCmr|j^K}Bz>$%4fRU;^0M!o&#L<}ct>1*r@fGYF%qh~`F7q=uI|1B3@6jTJB? z+<>TfAFG75dZ{vq5$bGMeu<4?chbuLLBvwQF1?Q)dRMpbkOu=a48WR9 zo=1)&&TF0!-gNJ;fzJ5DVZ}D=j%&OcVe{Z~>o*;RUG8_IBb_rCB^yhaHwiof^P0V< zIZBJ?cZqe13Y8zJQdVwq3&cN|l%9MH`6gSJ_Nwon?o40G`qT5=_e5Li>rx&FZleqH z99|#DS{KoW*inarMq&6W?ThDdU_Qs11#4`U)Jc-UN0^RPBLSC08F;fFVZ}oFn!UXCuw<+F^y3p5G9H-QU#5f z>nw*4cF9R4rFT;$AvGh60W;d1?^^&M;p?U~(NiMchgMA}8%sNYDUFUD2!qy#q9lOm zRDu*z0uwSm@OJ0Tgb6`}H+IeTDFR^%cXY%jY8~1RZD6r#*$&>_*-k^8_^{*%%E^>i zZ^i(Dt8BUm&q}4I2SutgGmiDz-zp7~{8tl5j~))NpbnKKnxck0V(=W-)U#C_g2Qy= zEN<@1f&W>s7+i>O#JB*OwvaUp2;7HGT5N@EO48sfX^1*da3Xou1BlyNl>}R_{j_-- zZ9lz*Q=@FUB1YN;5b|-d3}1Q=XR+yRZBztZFAmI);L)o67XoZ}l%}d_GfU`GjM|Gz zb}DxZaRQ`Tj;NZ{q?#}>81B#J^O)?_TYz9$B~k|3Is@;2FE9g!x$QSPtz#L%B|F^V zwPI54miFdFJJR?M0SEaPefR)Ft*GHFZlRQKvV02yL$ezAjTdO|3gMboeq}+(;D7_S uVxr`54EdHch^&TtaQd#eb!%VdC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/font/weathericons-regular-webfont.ttf b/docs/font/weathericons-regular-webfont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..9c4c6cd6a7d7327e246730254d7f68b771197a72 GIT binary patch literal 84188 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 Nlq_i)C`jVgn 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 literal 0 HcmV?d00001 diff --git a/docs/font/weathericons-regular-webfont.woff b/docs/font/weathericons-regular-webfont.woff new file mode 100755 index 0000000000000000000000000000000000000000..328cfa2b5ba1cb59f6cdde4727bc71c3ed1ac1be GIT binary patch literal 48376 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

bSU-;ET(yLId@FY)`!uUz* ztMgu(eGWzt-9nIf3Q!C=d$NI?I6m+%1b|@jLy@zB-JycIbO}*f@iEXUC46_S;;7vs zYS0yAHo*dI4{1E1MCKFtYO*9+myZWQSg2N!`hF-X^#$@^ghXPM#LpK}12kUMvq)l1 z-WQ%)9J(4v@;XCIAjISJJL0kp+X-h=f`*Wd*I^U$VgkRL5>Lp)6Cjm;edj{<1blaC z+u=>xI$_yDF@x2?erS?dTy)5l@a*E{NYe0Wv{-&Hr2Tkg$$K2_k?epp=B)-@t|TU` z23g0*MZ&QHta@4Ubm@>7@xm0?MkJDwSeR-`3Hsp%cQ9z&*R4r7lNN4NDJxpQo-Q=X zC>{|+wACMNV-#z3?;%$CBvjcMi5W)FyWXJuPkfJ;|NG`Oa(Bx zAYv8=f{I6@%8&w?AYrAv>X$KLE~iFqN(LqzGWLQ+d6sS)+!}KelBWdXC6ZNo_Z^zb zG2by%x)Fd>!q>b>eMr3uhI!MKZS-M8JHM$_9lLvmx8wIs@W$e&c#aqq$6v;LqZmq- zi4^1md?j3jgoVsDb@Ps6i zx?uYF=~RLhoOz^FzMEX87IPJ`2I-L4e2gO5WX&S%FV8>f7Sm-{fH_%obKS5%9WlrE zG(0bRU?7e?yds3EV6t&t4x4v)2lXjXi5AT1I+dO7Wv9bFNfx}uksf!G@M((omGW6+ zdr#v19x*00-J}1a-js(lbyKk~)8JS?JA3JKyOv?V&^Jtzq^Z8e9Hirkjuy4;hf zk^*^-O4@^eM!GOkDG2_xb2#tj<@c_c(hCOWh(Bb-$aV{kc)T8=Fvt&r_6_aoS& zU|#~x{cD3b1ul-ui>NyuOtYA6OUly?i>C{I<#^ixN_XF{(W=^HKbSL;(;o(w6(wwL zQB)by)rd|R<*5{uNF|AHnM@tGSryKeh#1Ixrpczu-#8*QW^tPunp#eznlkx9;FR_a zUea)oWwF4E_E5^~5F!lH?LGn41O$~2N&YbeaGN9y#&!3Cm$f@#G0B_IZiYJg3X| z34^D0c{u_<%auA2*qxpOf}{ykljYjuqdz(O-$@zE%RMNY#Ah*d`Vr~aQgTD=SJW3% zmqlOlLlnUb92if#CV1+G3N@I0Iaf#VGEq-|{d~=dr#)IAK>|I@IZi%htN)E0K^XEG znbSyxDAD=)h%E-rig!)aD8nkKxsJ+2g{0qb3WL=8wrVfIkP5O= zI~XXI$0e^MAE_LCL8_^4vYQus4|PjFBjUhXlfFDyTg%boxBj@d85n0ANhF?)_^ z(7k+(#0vCx2q7W5zs7-jRP%1s+R*&lj5~LUYoPpq{3UKZestwBgL{1`+04rH6<|7| zYLvx`ILwJPlSO^G^=Zte^Bv66$!_>1cnYiS&M;rC_X?vSlm6PzN7z@Nppg1s_kp1P zewkM;J0p^eaeCP zb-6umP;z0_RnQu>A0UQy97_T~^m&6YNS_*^CR#&AIlgEWheI@}Geu>k?{0&rJIC!b zRy9~u@2!9DQO@CPcWA(F6S6;i)7*cjzWQrqCJ3--JcLCQOnR_iNpFfX+66&NK3-=V zZX%tIihqVgG_uD=pz5Gk{rYB(SBpQk;?*1Z;03kdT*Ff58m!1@LZyvDgCHW)vj$}q zY-y|*JDI!&EAn5dRvtlri<@J=k>7G)u9Xx-b%()HuFGefYgJZDG!3dCC8BWazd`$+ zCVGn%Nq;;?kmG%v`^~apaLt3S>vWt4x#%)Ces~@hzd@QluBu~0Azx+Z_WUbeKiS`# z`|C0$u_*0TVB`L@!2QdwSi^&`0oUOD7BpGju{O^wmh;ln%PgIVxV(Np;&4LZA2!9m zrwrD}uZu~Fjdm^t)rT!Fh6m_@Zo1dh6L4#ktDGFPkkRF2zJP2(9ya8xZlsxPl0W^E zT>ZiDEE5TijFt4qx9LkSt7jU?4mn7;)Npm7(CWwml(U-g)*H5Jt#CNgkoD*Wh7_ydX+SkHK*K$zjPVZ7Fj)qc_RYjrPBAc)DobpVRrRWcn;4`!P!mg<{-At z@4d2jwiD3+snb!+o*K295j;dOIWjqvQtFWwtELF;;T|C`*rGoCp!9qhUXLDBog#!7 zOb^AoWdYMv<1Od};^P8W5lb;n1;jdp&O=wDRlgBN%^j^UVg~5jH4{rz9(WuI^T>H* zby(=?=ismIS>V*B11K@l{SylXIzJP;BI+SwEi~3ny0mhs=2v?z2jlAmw=tE zJ<+L+u2fGrbiZdemyMm)%!8i}HHk zbJE|^=CVmhb>Z}WPmW22w>HLwv66$w@jwNcy=YlFoq+@B^$LlTPQF2xXoipDruk?TYbvVtSz0`s0zp~;fI2N7E;NU;!#!Wpx|Q6*-l{6|8G*pum=vII`;75AcX&pofps5N zB3@tKzLIB`S$&+hZQ#5SDlh}kdaVgwpW{|gY4(O(2=DwW zla-=o=#-iE5CI!6e^_IPY+3$P|M|*TT(FG}&&}H|SNYbx_)O1)q}O%1?&f`OS*2NN zJ~`-)PJdua_2N@suTD(`*D&`SKP^|UJg-H%`_e$HYP*}LG6VQ!rgHtg3{&gp+u-l! zoiGG=>^tp$EsIf4p^#Ly9f6BH5`D#AnXz_s{}HLKth%auRcu*M8?S9hOYbyretyjO z5#OsF{tkXT3ZxL=9=mtR`#8DsJK8EC&p(Zu^(I;_;zu(dv`f=}k9PO%4mL>Kh)%g{ z=5~2i95`pVO0}-h_2p`Yp~+onfO_8?bF1!T9z-5T`h?fX?yiG$iHX7td`dwU=#4}A zZ~->N&|IDDmu8BRl`es9NkL>~C)Er_aq?X466LMMJ>X-2?CdM5*F>Zmnx8Ory?|E~ zsdoa!;G6=Yb?~gnup!jy`I+LLjFa%r`KmdZ{}n{huI0~K7#lYUl2&!h3=}l|5fq6e zM~c?x7Re7<3j}j{Pn{Pu+w#AJV$ZuE1($lh#&g%h!%*@$cCmufWT*^F4W` z3u0TJ5$L^iY`-h&4Brjb7%E7 zpQBICD+M)!wg=(FV)OEM{!$r0Qnx37HDE+pr~+7SIaW@uWL0(pBleClLJCx}JG8+ZT1 z+voD&9iAz?O%_9j*FsAiXw>|y`jyYMXPo3kzO-*4Rp^40!%pg|U%EFHjbuthuEdQ% zp~Ov(q-zAI5(K8ilL9lk0*RjwjB6TYta3&52{g7ofqwz{YWf7_!BDdgdThBMO)->e z2GwqYuPfNkgaD4n5}Pt_4MO-aiU!3)YAKB46zy;`M3`N5E9%>2{B`-z{2j&S08%45 zgMI0?ANz=)L;@&tf9dc#rdat%^OBf9%c-^Qe}t$4*1gqi5m?i9b+5}&(;yqMugZnM zAO{~T!v-#5S9ZS(X-`%Za+A}h#E zn#k^dYL$rmbhNA2O)NO{fGz1DSL&NEsQedL*Mc-+!QD>9$crKsILIWt5WP1{D*3 zScOucx~9bf;z4b%gubJGMf~8mwjSLdDVwvrR(2?Fx$Kb^?@>ioAP3ZdUST1V0Omf) zOM3B3yJ&`bZOTh(aCb4Y7i2po$&g@#49A zebfa&`%3JiWQ`N$GnHQq{-WddX*3!!O_G`3GDavzra_dSBz=^>q=quH(rk~L;Fvj3 zXInRX!1tPx^Yjp5+3TW>c=-OvSx~g1L0u2~=XJkp+&XTFqR#g7zjd9p9xs*L2y!h~ z+g7C6zkE)TLl|l<>HmVEAm+6#g!09(p3T0Qm~H|thi1PM!mK>d;Zck z$7D3}y({6iQM(aL^p;GO4JkgVuAW$sF|MJ}C9C&f^g4-oFj9}PaUz&UG^w5~49F!aP9P+XIairj z^k~XFe&3ua^?~2zeleX3_0_pslc-U>dRBQx962fanB~lx$R;5VM~lQs_!`N^JpNPK z6J@uQcauu2u90oV;f-LE)R^Jg0sN0FZa^bG9Q|@_K zlNiP!m?&#MNvep`CX0hi8`NtAbKlRjCS@a_uo%q6O)xH~n@qIv40tK8fBZ9 z@2P}-t(Aa22q%(YG~ZN@H6_r1Od=ttDq!d~BaYMOi8LiSwy&o>K?rkh1s1cd2$O@i zw@%mm{yDSb8U#CBey6d3g`u0j)ckf>EP4b%mO&@91mY*KamX4#n`TAlcI9jGc{W-{ zQZCHH-hFddl{n(xZK0BNJVk6q{aF>0Qf{q6-lXG|X>m10dsfe^wucS)SSLZq+wA_N zNOvD`YUg97R@-s|yd4@ru5Nbbccs{lN_nn~r6=7nucef#TUmv5L=5lF$LadydsmQN zG3b7kZmbzJWUGD-wuKvQlZX?oKuH1Ii(#y*wJV@}7(N~D^s(ACrnhON2hk4ni~o^c z|2YjmSAJe*ilEumxAaU}cjRhZ)0?i+D<8k;Km67HtTWCPIB~n<^b1+UEXk?i#fcQ! zkT}Gt$y$W4TtpsO&U={NMz&mLKLs4_ldRR8XD$jMAKjblLla6*KCPV8tm1|F$0CPY zi`=26-7qgSOnA;r=CM!*S`v@<;79~+X+nT+1w4umF1{x&OZoxk5@66i7B1F_=ld*c z=eq%!YjmQ0 zP9@rZT?aPMXzj6K2~E_uN5z_vFQcYD>467=ylL}pLQs{Td9vc_{l*SbhBsCHvQvNA z?Kaz(-t|>EMM5isve8NPMJ0U`aU-q0es@^0o+h*J^lCg;E*qv0!U|>jJ^Nx(}okP17ivu8&lR44Wg@G63XEjH3 zlAfIB?W{JPNB(z>uYd$ZprB`77iPXLpig5^=S+)0#` z{&eqZlaY;nC>Rb+EzmE%^VvZg4~yE@HqgQvOJ|g&d=yk~(4FE?B!ph^^m%;rg`C3K zeEn>ex+JXEd%k$-T?yU`BvyPR`EDrREtTnNFBBG2#}qAdR$va8^-y@txhba62djDy zp}RQl2C-ky!%*bB$Va+TKxqBivKo;$`saCs#*s^Zr>5-pAr4@&UhPfzd-Rq+dXg8h zy(Io>vanun86!0_D;Zb*!-pD6Pythde|}#3Ztv}(eV+U%(ppq_`LCIx)pP#5jO_3< z>A;f7*T!=wNKq@5QEOvMruDgH2O4m2_j0ksT(o}8yUAHGvBB1e5r?ziedABSPHX5g zmFk|zE48RnRDSx;$(qJB;0^te@{#t@;*9QWJ3?GKN;x#i!wO=>k-})kRAt{=aX~cT zcUo)^Qbd)EQK_fv&?wGb2+%acAj9|_kNLFmzo^Jz$X~5~=VS(d*sr_rg&!OiqFIb2 z#9j=>kDfI>98%bcWF z_QTg*I^+~|SA_nq_wd2**r61VckR-OFgRc=xhPjcKIlG2U`d_if@F3%=T4B#D7#^t z{p##SBuw$x5TC#j`qMSM`!vd&+Kke?fDC`^IjKjx=+@c3WK5*NMR$ZfOj+ybwc%tV zp31WvcZa2%o0U>(;iPhyIoY`MewmH{PEPp-h);$0hIMVDce2L zID-U~yPt2>KtTXB6{)-}B``fBI7nv_D!oe>1bI`5kQqRSVs@j+q164)b4$(^f-}Kj zz4wg2o7u#0K>~C7B$8Ao4bS`Mw|kHC)5mr%i9ql;>fDHBCU} zqHTE`xJYFzC%%X3#dRlVbAyC=zXzOBuxOCfJ=OOpZ@9RP1Z{iT^oZH*?|Uv@AU4J` zU1k;f>jfN*8n}};Y1VRO3ti#p8+Uc9;AYtEv9d<8B~W_>H$*<))Gn9B9XG66Y`v>* zz*MGcrE``u#XTt(ODx3l?=v>9myyGzvT{z&#kM7LSZ@Z4aI@u-&Is|YYZRX|`F!38 zWC3CUl0q&;0gc8@fW`gJt#=Bz{EA5+JLM+ERp9YlpxX!Try}kjX?7lOe4K{yz4}%& z@=WNN0(!$EhoMzw^0R)00bMm3*(%uU)`P67y7Pj+EVvc}vrmlJ`iK^xS+iO?s9{kT zM&R~kOd(l#7jcc9=!OkU)`2AP3~ko9ea)reo*Dtmdlxn^PjI+75sj!APqNuL#$^(l>J9|wR}Y3J0esK=Kr`=sElk!)zOecNUkOR( zh@LCZWZv@wxdk)mCGtHFFp%jzPoOTpzcP=FBE^bgs;POu*{?Z<%eO*8*ROcyO58nG zM5JpTS-DGda-%|eIhd$2gj)DQ)6Ls@G|>k&`cxlj8rM;r-myPK6A#jU$Z~vgt?ZY_4_X;{ z6)^_W3gg&2rSd-cv-P+n1@@Z#l2fZ02{m#+L`qbodzf^r#d?DbBSTGp8K`p&)IobA z%1PE~S5fhH)PH{*?N6Y3&gq7Or-0UhC}j>gp8nww1`-abdTf=JkpZR zn@oj5W0ldmdi~yZz|@m5XL{mgo`{QuL`e+J|NKV4ZOy#fCBN_WM(2jT=2GtX{t7<) zn)OQMv@`QFBvmaTT!@7fcGmc_un@2R@_JiB7gq38*$(rmkbYf}e~Jn@R`6andsn1q zG+j7HFZXpg$12cMB7;#_embPQIYgm*Ry}gw*fKo&ovMriEmbX9U~Kx<-_5!JN#QI{IggqRdY=OS^`3o53) zkob(a`muCOZ@c_pRJ+ZD^#HvleL-|ZkqZ>gzlXO6S|*9Q2PZW`%M&&k*-wtza(|d; zQ+_xKjhZkW_;WrinX!A`gKXwzgFLdZ@X0e4-V!Yi_q%ah-(RC6rEt_VP5DBs5i+XK zO`w~ZLP{a~LWXw4tVIbObaN}}-yfHBW4UGXKs(ApPo`4P{6qYl9^U{3eiD9k9DZX+=Hq?>(u z(-)2>t&vGr$~O)8TEc*L?FiIvb}95gk_6OmdO&iqD^XSBQYfl`1i#V!Cj^=*cEDNE zJNr`6foC?b-s7UC9*_CrgY(ahHfrn{rnkVb{BmodbMBD0u~55%<5k}5M+KUfeK~KH z-dF{nE~F;2`SZ?IsBKm_UQtn>^o{$`Qy+W3B!Smsj`v)pzXx)+*Ar{U6Lf(A=`xH? z&sxIxT^;{#l_Jy?z44W^i-j3_l^{9JbXz>M%?wYpjn;rz`SfhacAYiMJX@8Jxu!(tvC2aJZ~qP{~0r<6^^Gg zTzQKk`o3iTqkZDK^x#h|=k0Ddg?jPK^yx%bhcP6H=aGp6eL#02i~qcKpY$fvv&G6N z6vA1LaW(qIsu)AngqQRs^RL_K{_VoN6Y*X?qObEw0}InnOSl;l>IkU$7mG+s^s<*N z589$u>9F;RNV=WI?a4YDG~4AQzv8Uqx5PI^-Ik$M_ARJxB77Fs0OSrH1Ya>Y$F9}c z^w^*pG-5h)Iw!+u7>+5m$3h1d%Jw68LVXpMgf_J|2Mz0bX7U-p3Gh_qrEoe*H1_YP zqvyUe3^rC*@|J!-EfE#XjAj-;CVseBtq)=%OR`YzEXi|Q8)xn)xRMs@sgto=1G&7e zTO1v|ZZ#*fkGqHR$V+fw9F;Qn4r1ixM`E3v11X7TMbG!dntby|nr(OiM~%xx^!DKn zfO(lKjce?jW!4C>*l+1dITkO^kAqZgrxj&3U#Abub=MfW{JGYc=A|uZwt0BXxq~FoJ?XZRD-lvo>s641uxyk{gJzGCd7h zsblpm(6Nv~M8wWzTd*%Ft#WhmdvEKT^=q4@`0;w3UjH2+$RQCK{(=tITfVP;OcG)a z&3Vu6uwFRPp6gyxTd!K1quDRzhe<3lk9~r%`dZ9ing(MHORJZ({G;=)Z(C&*e>WFE zG)>!4Y707WL~Uq)S@^z|?qZN7wRK_ujAt^N6XSY<$9&_x`=(UKVbO0oeGw`MP?Fce zN=Hto<2)&w=|$#Wq$%nPgW7K9K$mu6vB}bLI0Y$<+;Onjl=e|M?S22#!6x53c=}f? zkIF5u@Nf@Jm&hOX*&Fn+#tLB2*AsX7m9!W@q=;T5e3O{VuwvlFxSH^-S|a zwrQ=R`sUf&`)S?4tEX#IKY!dn=9o&g`IN4694z|{S>7`w{nrl>Ni_JcGH65zL=dlx zU0*e#XH67oo3uq>5D?Fd+JKZUcsB{;{zX0ryWd~=1tipS4(`4v>S=YFm0|GxzF|%d zkg1@)mcnARK=!h1>IO!@#?`V^ULzzAhaG+Zhd3GLsWjtCN<&u%L1&EpT4C|b*nESC zt5ZRyjkE*>y@HlVV=TV>2r7=wA5(Zs%F=e_Xba>e4x(1mru2Z=a(IqEgP+Ee#4+uP zn5M)k7cqqTo7_~wzY_IGgGQ${tt;mda=5wRO-D?=k?S^9)?q+msucz1=g+!&5RCk5 zTfX{o-B+X~F6}~dC3Q}d?JfMWm8UXt5LsT+=Dfn~W3`>+gng|SEOkcu#nz~^)L4Q} z5N@{=%f-DjX4)H0C95q~_XIT}bTTOHpxlQpnHa#R2Ro8MWwH8o+)Y^Uj(~5Qh2m0T%ppxLANRZdEFoNRLAwJ<<;#zRHMsqI1XK@ff@n$>XU_;nmNgbB+&Dobf0B474=t zkG@ILyGBwn$@V`7aL1j+lh<`rVC&AUYPeHQ{_&9^F5PsVIH%54Raht3n1Q6OrC3&l ze4S1_T+#y_ATLFgXw6KvuFYCX$wh72xu2_YGf&tlBw}DsQcjU177%w2smCsS+(}8^ z3)2mhzAmgcrM6;XZ`Aydo1G(byENV*2O^Bxt`(fmw>}$3h4kvJV6ryNkVB|r%qi2A z)ct#Ffg0Y@gSlx?DH)sc_gU<_Zu-gY2HLR~3BD=+{nJa|47|~a=JDwzKDZh7pmioW zxRJi#`DZ0G4jeV~BD-X)h_wPGBOFDd`06Gnzk$HMWEPMOKh(~jQaFuEh9|3I;iLhU z^;?J7?vit?BSlw)V&gJ(b}DL`9?@vITAr+Pe1Lr++m@|k-)2ynJ8c2w$cC`#ih@8D8w_xAV)A}KWP%?7 z#r(|h2^_rz=S3Gl^wnLl%F5%VWy=J)^DZ%wN1Bq))8h6*KtcZaY3(zX$UIh^R(mzP zZTS$vWUc^Di0T>Hijm?FU(tRl*6;mK-H`e=COg8mJ-)Ah&FrB|M}_5DcA0x_;w9?C zu3d!ZHo78?=p;|u-!7sUjTM9hyT1qPA!F`Bln4ySQQeL$>GnqUF(WNln;D)=bL6DP z*Tj*U+dIHPd<1Z8p&YhYgKNR1S_ZDy>|2^qa`$yaqRmvRcW)3t%FBZ+m6$A*!RFNl z=^DM1*qFcj&pa%Cb!x>t6hXPwG1U!#n-fW8N1;?p^YHS|lw+GCmttqvq+wu^FIr50 z?3X{|uY0$JyD&sV53v*BkavosWe zl&Yg5(k}^gT_FEzCXZCQ>{_8(UQa$C)qsVcDex)#B`($JG;ZtyUT~7SATn}DEp#Bb zc1T^?@DVsp&3Teb!85IT)*d-3b+9HE)*TZv>Np2H=!q?CV2O;Shg@v&U=BgHSne2j zk}$g)c~yQX^Ds$aDt-IFC)T)4MdUuCH^{mi#MT)*7efem=M;@gv3AMVbF+p30Uu6d z=CDjh9P9YX`>?&zTLB5YK9-+!9oM`xPZBx7F z1C@S**U~QPvRXJY*Pj;UxLTuWgE0?BPPcZ4MQy%&jr{G@j(h=|;b&BsmYCv_Asl-J zS7njkR|tizXtpDLG6*Wux+F`6L2&R-7{3MHj|e_p5~s+7AO70Q#A)Jr?J~+-K&`jE z%Kq=VPkyG<^BM>K$8v1o_+3i?Wn-J_CI)?@dg+l@bdcK_c2YYXy}PlWdnj$-E8gDP z>20!QkcA1M=7yPNn1<)GpNN)>qDr$_YJ@Bv;Kntz?9Mh-sJc^+NV=Ou^Cu*4TxO~` zg*`#%(ma`qjzeIR{N@INsD>SxWH3I$l1)?%F{&chn!jR+C85=tS51S4&=e!|pQW;7 z=<5+l)+?0o{s~ZAP8cUgm@paKRZ5Avz`vr#tW=el0iCAE<6TQv?|4XsrPANa_9xqs zp1+7m!-$J>;=`Tq!fuWNg^U&~*kK~R?70c=MDI7Y*OTzThz9a+{f zgQ(p@o#m1#J~J4_3-YRC-4xjbJF@5RRNMrSt```>3!+AXV{0Z|454bX37g7Q_OT?>l0{gWB(iuppwX;0F7h(E0%5Jw!zA)pMFL zTgKX-gh24iLyUr`2|$MQCV6`9%yM8Y@jQLEPSMeQ${_I6@4u^-gOY6WE6ugX8felM zBhCo-s{RIs`ksjY6-3O45J``sQbo^C{mFg-XBniK}eB?mt4Klki#zAZ-t z296wkUw`*{*kT0`Q|{mb6?Q`^d939m&CrM{p^eOR+aFDNv!n>Ww%65@3lP(0C{4;I zr@~{yQo)L)gxb>C*?&o(H{lzNMfa~DXFE`>c6n#MH`7z!HH0hro24rYu- z0zJ}wuGrurL?v$QB10JFUVOhJc^Z6V)Ziik8xTCl0}fw2pELZtKETI0GjPC%Jt z29I~4%SM_fxsLJicfoU`uY11JGGmH5`+8Z1)hizq@ZONVac|WwO6xmE1qQ!>pMJSS zHz@xZv4s5h+p{ud?uJWR-h!85=P`~cn&+8N8`iUgV%!v7Kd-z+E#W> z_Ejr~W_q-yR6X%V`at%j(LZv3eRaR!ocs5dk9Ro_Hq2=K?>yHpc$rT@kh({vN#Vxo zf8bRjcmCf@Dboiw^eRKkqgdRCsEi~nEYb8J_T!mhO4Hi~-Wxdf2cVb9rl;}&hpyR2rHRGHKuo|3#Ji{H&) zOg&8*M$t#_$8}QdRVbA?t8ZkKWNyn*%2Cpjx{|QS!lk!TqEfk2%v0s5HZ?Fb@Kwgt zJ!_>)sEf{|T;(6rf9L+_gs@zNU0Kc!&stemSaGfYS;E=aTI$Yu6x_-rizaKSsH*5K zME#+ef}7%=GMbW`s{CEc`fa6T>1ZQmWo4r^=k(`LrBbz0=e)uvq#+;TGGfOXaKuDaY-#b557{c|*i1jweSpz=Sx#yRq9lJGAOh%8);Anh>0N<;Rcp zXZN9cG;u>H7_Ystaz^m+7&|~|JT><*M6Ap}^b!MlA8$H?%S`q`=wWV@4!1)3>7^}q z5a{->dB584jtgZKvf6AjJe{03;_FD>iH&uo<&Z7P3q1E(5y~9L`8Wp8tZbEvMBVg0 zdQ?xP?Dka~SwrFIU*#GqULxofPTGxJVvpq(M6z4rST0zu5-d62DBQj@9?G;3SY|@! z-mWYdubC(+!4SPFP2a?8O^Ek&X`Hl6&*<3LN`-546_B9|Q>xUai2|Gb-5aJ3m6UD) zHU}}rVIYRuGX5Z!82^=jCu?Sz}{48p~z{KX{w#W>(%8vkM} zAxKb4toTm>Sv{tABjS4l!Mih1W*jn0hSW?T?qDBoe*y0BE^c2U?$8|WKt1lrZT8>D z?7^|@{_^bM)9k*??4i}{f%fc?SKYs~<}Bf`?Gf#|lf3js{OL|u>CWJ=ZAq1Fze9Bg znsrAWH~ta>4#)xKOfqeuI$Gn*fPJ^C9r>$0z}2q))xID8ju8Hy5&o_c{=Q@Gj#TcR zRqn1J*2;UCY$^2$LbKL(OHnEbJzf{?i?eod{bRtT1&&+QcHcc z9D6*@o8x|4Jwdf)?eh7fSGWHE58o|~sMByf&Ktt5vve-7oBsuZ^=Dzdgcwf1yYn$0 zg8oy4Le~W=$xwmKhQ7HI92mX)&CdmrNnS1)?J4ASol+1 z#dIifoQZFi>6|ZhGy|&t8x*aduy@1){tHwCD%a0iI{r7vw|zO!E4)bwoKk!i=RG9* z{f}a4=1oiB+~Tt;@3GPEe-x$Lr|xe#e*X==B>js8<_S{2frbRJ7lDAYx-g>w$sewCcqnXf%oHkhEm#(3F2J0<`ezAZT + + + Weather Icons - 189 Icon Font inspired by Font Awesome and designed for Bootstrap + + + + + + + + + + + + + + + + +

+
+
+
+

Weather Icons

+
+
+
+
+
+
+
+
+

+

Weather Icons is a font of 189 weather themed icons, ready to be dropped right into Bootstrap or any other project.

+

Inspired by Font Awesome, they work in essentially the same way. They are infinitley scalable and any CSS that can be applied to text can be applied to them. All you need to do to insert an icon is add the class to an "i" element: <i class="wi wi-day-lightning"></i>

+

Please make requests or report any issues to the main repository.

+ +
+
+
+
+
+ + +
+
+
+
+
+

New v1.3 Icons

+
+
+
+
+
+
+
wi-umbrella
+
+
+
+
wi-day-windy
+
+
+
+
wi-night-alt-cloudy
+
+
+
+
wi-up-left
+
+
+
+
+
+
wi-down-right
+
+
+
+
wi-day-sleet
+
+
+
+
wi-night-sleet
+
+
+
+
wi-night-alt-sleet
+
+
+
+
+
+
wi-sleet
+
+
+
+
wi-day-haze
+
+
+
+
+
+

Moon Phases

+
+
+
+
+
+
+
wi-moon-new
+
+
+
+
wi-moon-waxing-cresent-1
+
+
+
+
wi-moon-waxing-cresent-2
+
+
+
+
wi-moon-waxing-cresent-3
+
+
+
+
wi-moon-waxing-cresent-4
+
+
+
+
wi-moon-waxing-cresent-5
+
+
+
+
wi-moon-waxing-cresent-6
+
+
+
+
wi-moon-first-quarter
+
+
+
+
wi-moon-waxing-gibbous-1
+
+
+
+
wi-moon-waxing-gibbous-2
+
+
+
+
+
+
wi-moon-waxing-gibbous-3
+
+
+
+
wi-moon-waxing-gibbous-4
+
+
+
+
wi-moon-waxing-gibbous-5
+
+
+
+
wi-moon-waxing-gibbous-6
+
+
+
+
wi-moon-full
+
+
+
+
wi-moon-waning-gibbous-1
+
+
+
+
wi-moon-waning-gibbous-2
+
+
+
+
wi-moon-waning-gibbous-3
+
+
+
+
wi-moon-waning-gibbous-4
+
+
+
+
+
+
wi-moon-waning-gibbous-5
+
+
+
+
wi-moon-waning-gibbous-6
+
+
+
+
wi-moon-3rd-quarter
+
+
+
+
wi-moon-waning-crescent-1
+
+
+
+
wi-moon-waning-crescent-2
+
+
+
+
wi-moon-waning-crescent-3
+
+
+
+
wi-moon-waning-crescent-4
+
+
+
+
wi-moon-waning-crescent-5
+
+
+
+
wi-moon-waning-crescent-6
+
+
+
+
+
+

Clocks

+
+
+
+
+
+
+
wi-time-12
+
+
+
+
wi-time-1
+
+
+
+
wi-time-2
+
+
+
+
wi-time-3
+
+
+
+
+
+
wi-time-4
+
+
+
+
wi-time-5
+
+
+
+
wi-time-6
+
+
+
+
wi-time-7
+
+
+
+
+
+
wi-time-8
+
+
+
+
wi-time-9
+
+
+
+
wi-time-10
+
+
+
+
wi-time-11
+
+
+
+
+
+

Beafort Wind Scale

+
+
+
+
+
+
+
wi-beafort-0
+
+
+
+
wi-beafort-1
+
+
+
+
wi-beafort-2
+
+
+
+
wi-beafort-3
+
+
+
+
wi-beafort-4
+
+
+
+
+
+
wi-beafort-5
+
+
+
+
wi-beafort-6
+
+
+
+
wi-beafort-7
+
+
+
+
wi-beafort-8
+
+
+
+
wi-beafort-9
+
+
+
+
+
+
wi-beafort-10
+
+
+
+
wi-beafort-11
+
+
+
+
wi-beafort-12
+
+
+
+
+
+

Wind Directions - 0 degrees through 345 degrees

+

Wind direction icons use CSS3 tranform to rotate. Choose your interpretation; point to the wind source, or point in the wind direction. Example: pointing to an east wind would be wi-wind-default _90-deg, but pointing in the direction of an east wind would be wi-wind-default _270deg. This should give everyone the felxibility they need without having alias names or 24 separate glyphs.

+
+
+
+
+
+
+
wi-wind-default _0-deg
+
+
+
+
wi-wind-default _15-deg
+
+
+
+
wi-wind-default _30-deg
+
+
+
+
wi-wind-default _45-deg
+
+
+
+
wi-wind-default _60-deg
+
+
+
+
wi-wind-default _75-deg
+
+
+
+
wi-wind-default _90-deg
+
+
+
+
wi-wind-default _105-deg
+
+
+
+
+
+
wi-wind-default _120-deg
+
+
+
+
wi-wind-default _135-deg
+
+
+
+
wi-wind-default _150-deg
+
+
+
+
wi-wind-default _165-deg
+
+
+
+
wi-wind-default _180-deg
+
+
+
+
wi-wind-default _195-deg
+
+
+
+
wi-wind-default _210-deg
+
+
+
+
wi-wind-default _225-deg
+
+
+
+
+
+
wi-wind-default._240-deg
+
+
+
+
wi-wind-default _255-deg
+
+
+
+
wi-wind-default _270-deg
+
+
+
+
wi-wind-default _285-deg
+
+
+
+
wi-wind-default _300-deg
+
+
+
+
wi-wind-default _315-deg
+
+
+
+
wi-wind-default _330-deg
+
+
+
+
wi-wind-default _345-deg
+
+
+
+
+
+

New v1.2

+
+
+
+
+
+
+
wi-smoke
+
+
+
+
wi-dust
+
+
+
+
wi-snow-wind
+
+
+
+
wi-day-snow-wind
+
+
+
+
wi-night-snow-wind
+
+
+
+
wi-night-alt-snow-wind
+
+
+
+
wi-day-sleet-storm
+
+
+
+
wi-night-sleet-storm
+
+
+
+
+
+
wi-night-alt-sleet-storm
+
+
+
+
wi-day-snow-thunderstorm
+
+
+
+
wi-night-snow-thunderstorm
+
+
+
+
wi-night-alt-snow-thunderstorm
+
+
+
+
wi-solar-eclipse
+
+
+
+
wi-lunar-eclipse
+
+
+
+
wi-meteor
+
+
+
+
wi-hot
+
+
+
+
+
+
wi-hurricane
+
+
+
+
wi-smog
+
+
+
+
wi-alien
+
+
+
+
wi-snowflake-cold
+
+
+
+
wi-stars
+
+
+
+
night-partly-cloudy
+
+
+
+
+
+

Day / Sunny

+
+
+
+
+
+
+
wi-day-cloudy-gusts
+
+
+
+
wi-day-cloudy-windy
+
+
+
+
wi-day-cloudy
+
+
+
+
wi-day-fog
+
+
+
+
wi-day-hail
+
+
+
+
wi-day-lightning
+
+
+
+
+
+
wi-day-rain-mix
+
+
+
+
wi-day-rain-wind
+
+
+
+
wi-day-rain
+
+
+
+
wi-day-showers
+
+
+
+
wi-day-snow
+
+
+
+
wi-day-sprinkle
+
+
+
+
+
+
wi-day-sunny-overcast
+
+
+
+
wi-day-sunny
+
+
+
+
wi-day-storm-showers
+
+
+
+
wi-day-thunderstorm
+
+
+
+
+
+

Neutral / Cloudy

+
+
+
+
+
+
+
wi-cloudy-gusts
+
+
+
+
wi-cloudy-windy
+
+
+
+
wi-cloudy
+
+
+
+
wi-fog
+
+
+
+
wi-hail
+
+
+
+
+
+
wi-lightning
+
+
+
+
wi-rain-mix
+
+
+
+
wi-rain-wind
+
+
+
+
wi-rain
+
+
+
+
wi-showers
+
+
+
+
+
+
wi-snow
+
+
+
+
wi-sprinkle
+
+
+
+
wi-storm-showers
+
+
+
+
wi-thunderstorm
+
+
+
+
+
+

Night / Moons

+
+
+
+
+
+
+
wi-night-alt-cloudy-gusts
+
+
+
+
wi-night-alt-cloudy-windy
+
+
+
+
wi-night-alt-hail
+
+
+
+
wi-night-alt-lightning
+
+
+
+
wi-night-alt-rain-mix
+
+
+
+
wi-night-alt-rain-wind
+
+
+
+
wi-night-alt-rain
+
+
+
+
wi-night-alt-showers
+
+
+
+
wi-night-alt-snow
+
+
+
+
+
+
wi-night-alt-sprinkle
+
+
+
+
wi-night-alt-storm-showers
+
+
+
+
wi-night-alt-thunderstorm
+
+
+
+
wi-night-clear
+
+
+
+
wi-night-cloudy-gusts
+
+
+
+
wi-night-cloudy-windy
+
+
+
+
wi-night-cloudy
+
+
+
+
wi-night-hail
+
+
+
+
wi-night-lightning
+
+
+
+
+
+
wi-night-rain-mix
+
+
+
+
wi-night-rain-wind
+
+
+
+
wi-night-rain
+
+
+
+
wi-night-showers
+
+
+
+
wi-night-snow
+
+
+
+
wi-night-sprinkle
+
+
+
+
wi-night-storm-showers
+
+
+
+
wi-night-thunderstorm
+
+
+
+
+
+

Miscellaneous Weather

+
+
+
+
+
+
+
wi-celsius
+
+
+
+
wi-cloud-down
+
+
+
+
wi-cloud-refresh
+
+
+
+
wi-cloud-up
+
+
+
+
wi-cloud
+
+
+
+
wi-degrees
+
+
+
+
wi-down-left
+
+
+
+
wi-down
+
+
+
+
wi-fahrenheit
+
+
+
+
wi-horizon-alt
+
+
+
+
+
+
wi-horizon
+
+
+
+
wi-left
+
+
+
+
wi-lightning
+
+
+
+
wi-night-fog
+
+
+
+
wi-refresh-alt
+
+
+
+
wi-refresh
+
+
+
+
wi-right
+
+
+
+
wi-sprinkles
+
+
+
+
wi-strong-wind
+
+
+
+
wi-sunrise
+
+
+
+
+
+
wi-sunset
+
+
+
+
wi-thermometer-exterior
+
+
+
+
wi-thermometer-internal
+
+
+
+
wi-thermometer
+
+
+
+
wi-tornado
+
+
+
+
wi-up-right
+
+
+
+
wi-up
+
+
+
+
wi-windy
+
+
+
+
+
+
+
+
+
Version 1.3
+

The third release of Weather Icons with all new fonts including: new weather condition icons, missing down-right and up-left arrows, full moon phase set, full clock set, full Beafort wind strength set!

+
+
+
Version 1.2
+

The second release of Weather Icons with streamlined, updated Less, customizable variables, adjusted font boundaries, and all new fonts including:

+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/jade/cheatsheet.jade b/docs/jade/cheatsheet.jade new file mode 100644 index 0000000..7d43cc3 --- /dev/null +++ b/docs/jade/cheatsheet.jade @@ -0,0 +1,435 @@ +doctype +html + head + title Weather Icons - Icon Font inspired by Font Awesome and designed for Bootstrap + meta(name='viewport', content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no') + link(rel='stylesheet', href='css/styles.css') + + + + body + + p Copy and paste these characters into your design apps to use them as real fonts: + + + + + section.content.container.iconExamples.reference + .row + .col-sm-12 + .reference Day / Sunny + .row + .col-sm-4 + .icon-wrap + .icon   + .icon_name wi-day-cloudy-gusts  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-day-cloudy-windy  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-day-cloudy  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-day-fog  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-day-hail  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-day-lightning  + .icon_unicode () + .col-sm-4 + .icon-wrap + .icon   + .icon_name wi-day-rain-mix  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-day-rain-wind  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-day-rain  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-day-showers  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-day-snow  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-day-sprinkle  + .icon_unicode () + .col-sm-4 + .icon-wrap + .icon   + .icon_name wi-day-sunny-overcast  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-day-sunny  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-day-storm-showers  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-day-thunderstorm  + .icon_unicode () + .row + .col-sm-12 + .reference Neutral / Cloudy + .row + .col-sm-4 + .icon-wrap + .icon   + .icon_name wi-cloudy-gusts  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-cloudy-windy  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-cloudy  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-fog  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-hail  + .icon_unicode () + .col-sm-4 + .icon-wrap + .icon   + .icon_name wi-lightning  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-rain-mix  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-rain-wind  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-rain  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-showers  + .icon_unicode () + .col-sm-4 + .icon-wrap + .icon   + .icon_name wi-snow  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-sprinkle  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-storm-showers  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-thunderstorm  + .icon_unicode () + + .row + .col-sm-12 + .reference Night / Moons + .row + .col-sm-4 + .icon-wrap + .icon   + .icon_name wi-night-alt-cloudy-gusts  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-alt-cloudy-windy  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-alt-hail  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-alt-lightning  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-alt-rain-mix  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-alt-rain-wind  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-alt-rain  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-alt-showers  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-alt-snow  + .icon_unicode () + .col-sm-4 + .icon-wrap + .icon   + .icon_name wi-night-alt-sprinkle  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-alt-storm-showers  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-alt-thunderstorm  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-clear  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-cloudy-gusts  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-cloudy-windy  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-cloudy  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-hail  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-lightning  + .icon_unicode () + .col-sm-4 + .icon-wrap + .right + .icon   + .icon_name wi-night-rain-mix  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-rain-wind  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-rain  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-showers  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-snow  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-sprinkle  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-storm-showers  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-thunderstorm  + .icon_unicode () + .row + .col-sm-12 + .reference Miscellaneous Weather + .row + .col-sm-4 + .icon-wrap + .icon   + .icon_name wi-celcius  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-cloud-down  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-cloud-refresh  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-cloud-up  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-cloud  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-degrees  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-down-left  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-down  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-fahrenheit  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-horizon-alt  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-horizon  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-left  + .icon_unicode () + .col-sm-4 + .icon-wrap + .icon   + .icon_name wi-lightning  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-night-fog  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-refresh-alt  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-refresh  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-right  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-sprinkles  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-strong-wind  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-sunrise  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-sunset  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-thermometer-exterior  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-thermometer-internal  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-thermometer  + .icon_unicode () + .col-sm-4 + .icon-wrap + .icon   + .icon_name wi-tornado  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-up-right  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-up  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-wind-east  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-wind-north-east  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-wind-north-west  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-wind-north  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-wind-south-east  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-wind-south-west  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-wind-south  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-wind-west  + .icon_unicode () + .icon-wrap + .icon   + .icon_name wi-windy  + .icon_unicode () + + + + footer + .container + .row-fluid + .col-sm-12 + p The Weather Icons project created and maintained by + a(href="http://www.twitter.com/Erik_UX") Erik Flowers + |. Original artwork by + a(href="http://www.twitter.com/artill") Lukas Bischoff. + p LESS/HTML implementation inspired and heavily influenced by + a(href="http://fortawesome.github.io/Font-Awesome/") Font Awesome. + p Weather Icons licensed under + a("http://scripts.sil.org/OFL") SIL OFL 1.1 + | — Code licensed under + a("http://opensource.org/licenses/mit-license.html") MIT License + | — Documentation licensed under + a("http://creativecommons.org/licenses/by/3.0/") CC BY 3.0 + diff --git a/docs/jade/icon-list.jade b/docs/jade/icon-list.jade new file mode 100644 index 0000000..e69de29 diff --git a/docs/jade/index.jade b/docs/jade/index.jade new file mode 100644 index 0000000..ff7b781 --- /dev/null +++ b/docs/jade/index.jade @@ -0,0 +1,1002 @@ +doctype +html + head + title Weather Icons - 189 Icon Font inspired by Font Awesome and designed for Bootstrap + // favicons + link(rel='apple-touch-icon', sizes='57x57', href='favicons/apple-touch-icon-57x57.png') + link(rel='apple-touch-icon', sizes='60x60', href='favicons/apple-touch-icon-60x60.png') + link(rel='icon', type='image/png', href='favicons/favicon-16x16.png', sizes='16x16') + link(rel='icon', type='image/png', href='favicons/favicon-32x32.png', sizes='32x32') + meta(name='msapplication-TileColor', content='#da532c') + //favicons + + meta(name='viewport', content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no') + script(src='//code.jquery.com/jquery-latest.min.js') + script(src='//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js') + script(src='//use.typekit.net/hse2lqc.js') + script. + try{Typekit.load();}catch(e){} script(src='js/bootstrap.min.js') + + link(rel='stylesheet', href='css/styles.css') + script. + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + ga('create', 'UA-547519-12', 'erikflowers.github.io'); + ga('send', 'pageview'); + + + body + header + .container + .row-fluid + .col-sm-12 + h1 Weather Icons + .icon + i.wi.wi-day-cloudy + + section.content.container.intro + .row + .col-sm-12 + p.intro-icons + i.wi.wi-day-lightning + i.wi.wi-night-thunderstorm + i.wi.wi-day-snow + i.wi.wi-sprinkles + i.wi.wi-day-sunny + i.wi.wi-cloudy + i.wi.wi-night-rain-mix + i.wi.wi-sunset + i.wi.wi-sunrise + i.wi.wi-day-cloudy-windy + i.wi.wi-night-rain + i.wi.wi-night-alt-snow + p.headline Weather Icons is a font of 189 weather themed icons, ready to be dropped right into + a(href="http://getbootstrap.com") Bootstrap + | or any other project. + i.wi.wi-cloudy + p Inspired by + a(href="http://fontawesome.io/") Font Awesome + |, they work in essentially the same way. They are infinitley scalable and any CSS that can be applied to text can be applied to them. All you need to do to insert an icon is add the class to an "i" element: + code <i class="wi wi-day-lightning"></i> + + p Please make requests or report any issues to the + a(href="https://github.com/erikflowers/weather-icons/issues") main repository. + + + //- p Want to use the font in your desktop applications? Check out the + //- a(href="/cheatsheet/") cheatsheet here. + //- | Just install the font on your system and copy and paste, it's that easy. + p.follow + a.twitter-follow-button(href='https://twitter.com/weathericons', data-show-count='false', data-size='large', data-dnt='true') Follow @weathericons + script + !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs'); + + .download-share + .container + .row.download-here + .download-button + a.download.btn.btn-primary.btn-large(href="https://github.com/erikflowers/weather-icons") + |Download version 1.3 + i.wi.wi-cloud + + + .row.social + .col-sm-12 + p + a.twitter-share-button(href='https://twitter.com/share', data-lang='en', data-text='Weather Icons - Bootstrap ready weather themed font icon!', data-via='Erik_UX', data-count='none') Tweet + script. + !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs"); + + a.twitter-follow-button(href='https://twitter.com/Erik_UX', data-show-count='false', data-lang='en') Follow @Erik_UX + script + !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs"); + + + a.twitter-follow-button(href='https://twitter.com/artill', data-show-count='false', data-lang='en') Follow @artill + script + !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs"); + + iframe(src='http://ghbtns.com/github-btn.html?user=erikflowers&repo=weather-icons&type=fork&count=true', allowtransparency='true', frameborder='0', scrolling='0', width='75', height='20') + iframe(src='http://ghbtns.com/github-btn.html?user=erikflowers&repo=weather-icons&type=watch&count=true', allowtransparency='true', frameborder='0', scrolling='0', width='73', height='20') + iframe(src='http://ghbtns.com/github-btn.html?user=erikflowers&type=follow&count=true', allowtransparency='true', frameborder='0', scrolling='0', width='165', height='20') + + + + + section.content.container.iconExamples + .row + .col-sm-12 + h2 New v1.3 Icons + .row + .col-sm-4 + .example + .icon + i.wi.wi-umbrella + .class wi-umbrella + .example + .icon + i.wi.wi-day-windy + .class wi-day-windy + .example + .icon + i.wi.wi-night-alt-cloudy + .class wi-night-alt-cloudy + .example + .icon + i.wi.wi-up-left + .class wi-up-left + .col-sm-4 + .example + .icon + i.wi.wi-down-right + .class wi-down-right + .example + .icon + i.wi.wi-day-sleet + .class wi-day-sleet + .example + .icon + i.wi.wi-night-sleet + .class wi-night-sleet + .example + .icon + i.wi.wi-night-alt-sleet + .class wi-night-alt-sleet + .col-sm-4 + .example + .icon + i.wi.wi-sleet + .class wi-sleet + .example + .icon + i.wi.wi-day-haze + .class wi-day-haze + .row + .col-sm-12 + h3 Moon Phases + .row + .col-sm-4 + .example + .icon + i.wi.wi-moon-new + .class wi-moon-new + .example + .icon + i.wi.wi-moon-waxing-cresent-1 + .class wi-moon-waxing-cresent-1 + .example + .icon + i.wi.wi-moon-waxing-cresent-2 + .class wi-moon-waxing-cresent-2 + .example + .icon + i.wi.wi-moon-waxing-cresent-3 + .class wi-moon-waxing-cresent-3 + .example + .icon + i.wi.wi-moon-waxing-cresent-4 + .class wi-moon-waxing-cresent-4 + .example + .icon + i.wi.wi-moon-waxing-cresent-5 + .class wi-moon-waxing-cresent-5 + .example + .icon + i.wi.wi-moon-waxing-cresent-6 + .class wi-moon-waxing-cresent-6 + .example + .icon + i.wi.wi-moon-first-quarter + .class wi-moon-first-quarter + .example + .icon + i.wi.wi-moon-waxing-gibbous-1 + .class wi-moon-waxing-gibbous-1 + .example + .icon + i.wi.wi-moon-waxing-gibbous-2 + .class wi-moon-waxing-gibbous-2 + .col-sm-4 + .example + .icon + i.wi.wi-moon-waxing-gibbous-3 + .class wi-moon-waxing-gibbous-3 + .example + .icon + i.wi.wi-moon-waxing-gibbous-4 + .class wi-moon-waxing-gibbous-4 + .example + .icon + i.wi.wi-moon-waxing-gibbous-5 + .class wi-moon-waxing-gibbous-5 + .example + .icon + i.wi.wi-moon-waxing-gibbous-6 + .class wi-moon-waxing-gibbous-6 + .example + .icon + i.wi.wi-moon-full + .class wi-moon-full + .example + .icon + i.wi.wi-moon-waning-gibbous-1 + .class wi-moon-waning-gibbous-1 + .example + .icon + i.wi.wi-moon-waning-gibbous-2 + .class wi-moon-waning-gibbous-2 + .example + .icon + i.wi.wi-moon-waning-gibbous-3 + .class wi-moon-waning-gibbous-3 + .example + .icon + i.wi.wi-moon-waning-gibbous-4 + .class wi-moon-waning-gibbous-4 + .col-sm-4 + .example + .icon + i.wi.wi-moon-waning-gibbous-5 + .class wi-moon-waning-gibbous-5 + .example + .icon + i.wi.wi-moon-waning-gibbous-6 + .class wi-moon-waning-gibbous-6 + .example + .icon + i.wi.wi-moon-3rd-quarter + .class wi-moon-3rd-quarter + .example + .icon + i.wi.wi-moon-waning-crescent-1 + .class wi-moon-waning-crescent-1 + .example + .icon + i.wi.wi-moon-waning-crescent-2 + .class wi-moon-waning-crescent-2 + .example + .icon + i.wi.wi-moon-waning-crescent-3 + .class wi-moon-waning-crescent-3 + .example + .icon + i.wi.wi-moon-waning-crescent-4 + .class wi-moon-waning-crescent-4 + .example + .icon + i.wi.wi-moon-waning-crescent-5 + .class wi-moon-waning-crescent-5 + .example + .icon + i.wi.wi-moon-waning-crescent-6 + .class wi-moon-waning-crescent-6 + + .row + .col-sm-12 + h3 Clocks + .row + .col-sm-4 + .example + .icon + i.wi.wi-time-12 + .class wi-time-12 + .example + .icon + i.wi.wi-time-1 + .class wi-time-1 + .example + .icon + i.wi.wi-time-2 + .class wi-time-2 + .example + .icon + i.wi.wi-time-3 + .class wi-time-3 + .col-sm-4 + .example + .icon + i.wi.wi-time-4 + .class wi-time-4 + .example + .icon + i.wi.wi-time-5 + .class wi-time-5 + .example + .icon + i.wi.wi-time-6 + .class wi-time-6 + .example + .icon + i.wi.wi-time-7 + .class wi-time-7 + .col-sm-4 + .example + .icon + i.wi.wi-time-8 + .class wi-time-8 + .example + .icon + i.wi.wi-time-9 + .class wi-time-9 + .example + .icon + i.wi.wi-time-10 + .class wi-time-10 + .example + .icon + i.wi.wi-time-11 + .class wi-time-11 + .row + .col-sm-12 + h3 Beafort Wind Scale + .row + .col-sm-4 + .example + .icon + i.wi.wi-beafort-0 + .class wi-beafort-0 + .example + .icon + i.wi.wi-beafort-1 + .class wi-beafort-1 + .example + .icon + i.wi.wi-beafort-2 + .class wi-beafort-2 + .example + .icon + i.wi.wi-beafort-3 + .class wi-beafort-3 + .example + .icon + i.wi.wi-beafort-4 + .class wi-beafort-4 + .col-sm-4 + .example + .icon + i.wi.wi-beafort-5 + .class wi-beafort-5 + .example + .icon + i.wi.wi-beafort-6 + .class wi-beafort-6 + .example + .icon + i.wi.wi-beafort-7 + .class wi-beafort-7 + .example + .icon + i.wi.wi-beafort-8 + .class wi-beafort-8 + .example + .icon + i.wi.wi-beafort-9 + .class wi-beafort-9 + .col-sm-4 + .example + .icon + i.wi.wi-beafort-10 + .class wi-beafort-10 + .example + .icon + i.wi.wi-beafort-11 + .class wi-beafort-11 + .example + .icon + i.wi.wi-beafort-12 + .class wi-beafort-12 + .row + .col-sm-12 + h3 Wind Directions - 0 degrees through 345 degrees + p Wind direction icons use CSS3 tranform to rotate. Choose your interpretation; point to the wind source, or point in the wind direction. Example: pointing to an east wind would be wi-wind-default _90-deg, but pointing in the direction of an east wind would be wi-wind-default _270deg. This should give everyone the felxibility they need without having alias names or 24 separate glyphs. + .row + .col-sm-4 + .example + .icon + i.wi.wi-wind-default._0-deg + .class wi-wind-default _0-deg + .example + .icon + i.wi.wi-wind-default._15-deg + .class wi-wind-default _15-deg + .example + .icon + i.wi.wi-wind-default._30-deg + .class wi-wind-default _30-deg + .example + .icon + i.wi.wi-wind-default._45-deg + .class wi-wind-default _45-deg + .example + .icon + i.wi.wi-wind-default._60-deg + .class wi-wind-default _60-deg + .example + .icon + i.wi.wi-wind-default._75-deg + .class wi-wind-default _75-deg + .example + .icon + i.wi.wi-wind-default._90-deg + .class wi-wind-default _90-deg + .example + .icon + i.wi.wi-wind-default._105-deg + .class wi-wind-default _105-deg + .col-sm-4 + .example + .icon + i.wi.wi-wind-default._120-deg + .class wi-wind-default _120-deg + .example + .icon + i.wi.wi-wind-default._135-deg + .class wi-wind-default _135-deg + .example + .icon + i.wi.wi-wind-default._150-deg + .class wi-wind-default _150-deg + .example + .icon + i.wi.wi-wind-default._165-deg + .class wi-wind-default _165-deg + .example + .icon + i.wi.wi-wind-default._180-deg + .class wi-wind-default _180-deg + .example + .icon + i.wi.wi-wind-default._195-deg + .class wi-wind-default _195-deg + .example + .icon + i.wi.wi-wind-default._210-deg + .class wi-wind-default _210-deg + .example + .icon + i.wi.wi-wind-default._225-deg + .class wi-wind-default _225-deg + .col-sm-4 + .example + .icon + i.wi.wi-wind-default._240-deg + .class wi-wind-default._240-deg + .example + .icon + i.wi.wi-wind-default._255-deg + .class wi-wind-default _255-deg + .example + .icon + i.wi.wi-wind-default._270-deg + .class wi-wind-default _270-deg + .example + .icon + i.wi.wi-wind-default._285-deg + .class wi-wind-default _285-deg + .example + .icon + i.wi.wi-wind-default._300-deg + .class wi-wind-default _300-deg + .example + .icon + i.wi.wi-wind-default._315-deg + .class wi-wind-default _315-deg + .example + .icon + i.wi.wi-wind-default._330-deg + .class wi-wind-default _330-deg + .example + .icon + i.wi.wi-wind-default._345-deg + .class wi-wind-default _345-deg + + .row + .col-sm-12 + h2 New v1.2 + .row + .col-sm-4 + .example + .icon + i.wi.wi-smoke + .class wi-smoke + .example + .icon + i.wi.wi-dust + .class wi-dust + .example + .icon + i.wi.wi-snow-wind + .class wi-snow-wind + .example + .icon + i.wi.wi-day-snow-wind + .class wi-day-snow-wind + .example + .icon + i.wi.wi-night-snow-wind + .class wi-night-snow-wind + .example + .icon + i.wi.wi-night-alt-snow-wind + .class wi-night-alt-snow-wind + .example + .icon + i.wi.wi-day-sleet-storm + .class wi-day-sleet-storm + .example + .icon + i.wi.wi-night-sleet-storm + .class wi-night-sleet-storm + .col-sm-4 + .example + .icon + i.wi.wi-night-alt-sleet-storm + .class wi-night-alt-sleet-storm + .example + .icon + i.wi.wi-day-snow-thunderstorm + .class wi-day-snow-thunderstorm + .example + .icon + i.wi.wi-night-snow-thunderstorm + .class wi-night-snow-thunderstorm + .example + .icon + i.wi.wi-night-alt-snow-thunderstorm + .class wi-night-alt-snow-thunderstorm + .example + .icon + i.wi.wi-solar-eclipse + .class wi-solar-eclipse + .example + .icon + i.wi.wi-lunar-eclipse + .class wi-lunar-eclipse + .example + .icon + i.wi.wi-meteor + .class wi-meteor + .example + .icon + i.wi.wi-hot + .class wi-hot + .col-sm-4 + .example + .icon + i.wi.wi-hurricane + .class wi-hurricane + .example + .icon + i.wi.wi-smog + .class wi-smog + .example + .icon + i.wi.wi-alien + .class wi-alien + .example + .icon + i.wi.wi-snowflake-cold + .class wi-snowflake-cold + .example + .icon + i.wi.wi-stars + .class wi-stars + .example + .icon + i.wi.wi-night-partly-cloudy + .class night-partly-cloudy + + + + + .row + .col-sm-12 + h2 Day / Sunny + .row + .col-sm-4 + .example + .icon + i.wi.wi-day-cloudy-gusts + .class wi-day-cloudy-gusts + .example + .icon + i.wi.wi-day-cloudy-windy + .class wi-day-cloudy-windy + .example + .icon + i.wi.wi-day-cloudy + .class wi-day-cloudy + .example + .icon + i.wi.wi-day-fog + .class wi-day-fog + .example + .icon + i.wi.wi-day-hail + .class wi-day-hail + .example + .icon + i.wi.wi-day-lightning + .class wi-day-lightning + .col-sm-4 + .example + .icon + i.wi.wi-day-rain-mix + .class wi-day-rain-mix + .example + .icon + i.wi.wi-day-rain-wind + .class wi-day-rain-wind + .example + .icon + i.wi.wi-day-rain + .class wi-day-rain + .example + .icon + i.wi.wi-day-showers + .class wi-day-showers + .example + .icon + i.wi.wi-day-snow + .class wi-day-snow + .example + .icon + i.wi.wi-day-sprinkle + .class wi-day-sprinkle + .col-sm-4 + .example + .icon + i.wi.wi-day-sunny-overcast + .class wi-day-sunny-overcast + .example + .icon + i.wi.wi-day-sunny + .class wi-day-sunny + .example + .icon + i.wi.wi-day-storm-showers + .class wi-day-storm-showers + .example + .icon + i.wi.wi-day-thunderstorm + .class wi-day-thunderstorm + .row + .col-sm-12 + h2 Neutral / Cloudy + .row + .col-sm-4 + .example + .icon + i.wi.wi-cloudy-gusts + .class wi-cloudy-gusts + .example + .icon + i.wi.wi-cloudy-windy + .class wi-cloudy-windy + .example + .icon + i.wi.wi-cloudy + .class wi-cloudy + .example + .icon + i.wi.wi-fog + .class wi-fog + .example + .icon + i.wi.wi-hail + .class wi-hail + .col-sm-4 + .example + .icon + i.wi.wi-lightning + .class wi-lightning + .example + .icon + i.wi.wi-rain-mix + .class wi-rain-mix + .example + .icon + i.wi.wi-rain-wind + .class wi-rain-wind + .example + .icon + i.wi.wi-rain + .class wi-rain + .example + .icon + i.wi.wi-showers + .class wi-showers + .col-sm-4 + .example + .icon + i.wi.wi-snow + .class wi-snow + .example + .icon + i.wi.wi-sprinkle + .class wi-sprinkle + .example + .icon + i.wi.wi-storm-showers + .class wi-storm-showers + .example + .icon + i.wi.wi-thunderstorm + .class wi-thunderstorm + + .row + .col-sm-12 + h2 Night / Moons + .row + .col-sm-4 + .example + .icon + i.wi.wi-night-alt-cloudy-gusts + .class wi-night-alt-cloudy-gusts + .example + .icon + i.wi.wi-night-alt-cloudy-windy + .class wi-night-alt-cloudy-windy + .example + .icon + i.wi.wi-night-alt-hail + .class wi-night-alt-hail + .example + .icon + i.wi.wi-night-alt-lightning + .class wi-night-alt-lightning + .example + .icon + i.wi.wi-night-alt-rain-mix + .class wi-night-alt-rain-mix + .example + .icon + i.wi.wi-night-alt-rain-wind + .class wi-night-alt-rain-wind + .example + .icon + i.wi.wi-night-alt-rain + .class wi-night-alt-rain + .example + .icon + i.wi.wi-night-alt-showers + .class wi-night-alt-showers + .example + .icon + i.wi.wi-night-alt-snow + .class wi-night-alt-snow + .col-sm-4 + .example + .icon + i.wi.wi-night-alt-sprinkle + .class wi-night-alt-sprinkle + .example + .icon + i.wi.wi-night-alt-storm-showers + .class wi-night-alt-storm-showers + .example + .icon + i.wi.wi-night-alt-thunderstorm + .class wi-night-alt-thunderstorm + .example + .icon + i.wi.wi-night-clear + .class wi-night-clear + .example + .icon + i.wi.wi-night-cloudy-gusts + .class wi-night-cloudy-gusts + .example + .icon + i.wi.wi-night-cloudy-windy + .class wi-night-cloudy-windy + .example + .icon + i.wi.wi-night-cloudy + .class wi-night-cloudy + .example + .icon + i.wi.wi-night-hail + .class wi-night-hail + .example + .icon + i.wi.wi-night-lightning + .class wi-night-lightning + .col-sm-4 + .example + .icon + i.wi.wi-night-rain-mix + .class wi-night-rain-mix + .example + .icon + i.wi.wi-night-rain-wind + .class wi-night-rain-wind + .example + .icon + i.wi.wi-night-rain + .class wi-night-rain + .example + .icon + i.wi.wi-night-showers + .class wi-night-showers + .example + .icon + i.wi.wi-night-snow + .class wi-night-snow + .example + .icon + i.wi.wi-night-sprinkle + .class wi-night-sprinkle + .example + .icon + i.wi.wi-night-storm-showers + .class wi-night-storm-showers + .example + .icon + i.wi.wi-night-thunderstorm + .class wi-night-thunderstorm + + .row + .col-sm-12 + h2 Miscellaneous Weather + .row + .col-sm-4 + .example + .icon + i.wi.wi-celsius + .class wi-celsius + .example + .icon + i.wi.wi-cloud-down + .class wi-cloud-down + .example + .icon + i.wi.wi-cloud-refresh + .class wi-cloud-refresh + .example + .icon + i.wi.wi-cloud-up + .class wi-cloud-up + .example + .icon + i.wi.wi-cloud + .class wi-cloud + .example + .icon + i.wi.wi-degrees + .class wi-degrees + .example + .icon + i.wi.wi-down-left + .class wi-down-left + .example + .icon + i.wi.wi-down + .class wi-down + .example + .icon + i.wi.wi-fahrenheit + .class wi-fahrenheit + .example + .icon + i.wi.wi-horizon-alt + .class wi-horizon-alt + .col-sm-4 + .example + .icon + i.wi.wi-horizon + .class wi-horizon + .example + .icon + i.wi.wi-left + .class wi-left + .example + .icon + i.wi.wi-lightning + .class wi-lightning + .example + .icon + i.wi.wi-night-fog + .class wi-night-fog + .example + .icon + i.wi.wi-refresh-alt + .class wi-refresh-alt + .example + .icon + i.wi.wi-refresh + .class wi-refresh + .example + .icon + i.wi.wi-right + .class wi-right + .example + .icon + i.wi.wi-sprinkles + .class wi-sprinkles + .example + .icon + i.wi.wi-strong-wind + .class wi-strong-wind + .example + .icon + i.wi.wi-sunrise + .class wi-sunrise + .col-sm-4 + .example + .icon + i.wi.wi-sunset + .class wi-sunset + .example + .icon + i.wi.wi-thermometer-exterior + .class wi-thermometer-exterior + .example + .icon + i.wi.wi-thermometer-internal + .class wi-thermometer-internal + .example + .icon + i.wi.wi-thermometer + .class wi-thermometer + .example + .icon + i.wi.wi-tornado + .class wi-tornado + .example + .icon + i.wi.wi-up-right + .class wi-up-right + .example + .icon + i.wi.wi-up + .class wi-up + .example + .icon + i.wi.wi-windy + .class wi-windy + + + + + + + + + + + + + .container + .row + .col-sm-12 + .beta + .title Version 1.3 + p The third release of Weather Icons with all new fonts including: new weather condition icons, missing down-right and up-left arrows, full moon phase set, full clock set, full Beafort wind strength set! + + .beta + .title Version 1.2 + p The second release of Weather Icons with streamlined, updated Less, customizable variables, adjusted font boundaries, and all new fonts including: + + + footer + .container + .row + .col-sm-12 + p The Weather Icons project created and maintained by + a(href="http://www.twitter.com/Erik_UX") Erik Flowers + |. v1.0 artwork by + a(href="http://www.twitter.com/artill") Lukas Bischoff + |. v1.1, 1.2, 1.3 artwork by + a(href="http://www.twitter.com/Erik_UX") Erik Flowers + p LESS/HTML implementation inspired and heavily influenced by + a(href="http://fortawesome.github.io/Font-Awesome/") Font Awesome. + p Weather Icons licensed under + a("http://scripts.sil.org/OFL") SIL OFL 1.1 + | — Code licensed under + a("http://opensource.org/licenses/mit-license.html") MIT License + | — Documentation licensed under + a("http://creativecommons.org/licenses/by/3.0/") CC BY 3.0 + diff --git a/docs/less/bootstrap-includes.less b/docs/less/bootstrap-includes.less new file mode 100644 index 0000000..7c29362 --- /dev/null +++ b/docs/less/bootstrap-includes.less @@ -0,0 +1,64 @@ +/*! + * Bootstrap v3.0.0 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + +// Core variables and mixins +@import "bootstrap/variables.less"; +@import "bootstrap/mixins.less"; + +// Reset +@import "bootstrap/normalize.less"; +@import "bootstrap/print.less"; + +// Core CSS +@import "bootstrap/scaffolding.less"; +@import "bootstrap/type.less"; +@import "bootstrap/code.less"; +@import "bootstrap/grid.less"; + +// @import "tables.less"; +// @import "forms.less"; +// @import "buttons.less"; + +// Components: common +// @import "component-animations.less"; +// @import "glyphicons.less"; +// @import "dropdowns.less"; +// @import "list-group.less"; +// @import "panels.less"; +// @import "wells.less"; +// @import "close.less"; + +// Components: Nav +// @import "navs.less"; +// @import "navbar.less"; +// @import "button-groups.less"; +// @import "breadcrumbs.less"; +// @import "pagination.less"; +// @import "pager.less"; + +// Components: Popovers +// @import "modals.less"; +// @import "tooltip.less"; +// @import "popovers.less"; + +// Components: Misc +// @import "alerts.less"; +// @import "thumbnails.less"; +// @import "media.less"; +// @import "labels.less"; +// @import "badges.less"; +// @import "progress-bars.less"; +// @import "accordion.less"; +// @import "carousel.less"; +// @import "jumbotron.less"; + +// Utility classes +@import "bootstrap/utilities.less"; // Has to be last to override when necessary +@import "bootstrap/responsive-utilities.less"; diff --git a/docs/less/bootstrap/accordion.less b/docs/less/bootstrap/accordion.less new file mode 100644 index 0000000..59765f1 --- /dev/null +++ b/docs/less/bootstrap/accordion.less @@ -0,0 +1,34 @@ +// +// Accordion +// -------------------------------------------------- + + +// Parent container +.accordion { + margin-bottom: @line-height-computed; +} + +// Group == heading + body +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + border-radius: @border-radius-base; +} +.accordion-heading { + border-bottom: 0; +} +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +// General toggle styles +.accordion-toggle { + cursor: pointer; +} + +// Inner needs the styles because you can't animate properly with any styles on the element +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} diff --git a/docs/less/bootstrap/alerts.less b/docs/less/bootstrap/alerts.less new file mode 100644 index 0000000..24b7911 --- /dev/null +++ b/docs/less/bootstrap/alerts.less @@ -0,0 +1,92 @@ +// +// Alerts +// -------------------------------------------------- + + +// Base styles +// ------------------------- + +.alert { + padding: 10px 35px 10px 15px; + margin-bottom: @line-height-computed; + color: @alert-text; + background-color: @alert-bg; + border: 1px solid @alert-border; + border-radius: @alert-border-radius; + + // Headings for larger alerts + h4 { + margin-top: 0; + // Specified for the h4 to prevent conflicts of changing @headingsColor + color: inherit; + } + // Match the hr to the border of the alert + hr { + border-top-color: darken(@alert-border, 5%); + } + // Provide class for links that match alerts + .alert-link { + font-weight: 500; + color: darken(@alert-text, 10%); + } + + // Adjust close link position + .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; + } +} + +// Alternate styles +// ------------------------- + +.alert-success { + background-color: @alert-success-bg; + border-color: @alert-success-border; + color: @alert-success-text; + hr { + border-top-color: darken(@alert-success-border, 5%); + } + .alert-link { + color: darken(@alert-success-text, 10%); + } +} +.alert-danger { + background-color: @alert-danger-bg; + border-color: @alert-danger-border; + color: @alert-danger-text; + hr { + border-top-color: darken(@alert-danger-border, 5%); + } + .alert-link { + color: darken(@alert-danger-text, 10%); + } +} +.alert-info { + background-color: @alert-info-bg; + border-color: @alert-info-border; + color: @alert-info-text; + hr { + border-top-color: darken(@alert-info-border, 5%); + } + .alert-link { + color: darken(@alert-info-text, 10%); + } +} + +// Block alerts +// ------------------------- + +.alert-block { + padding-top: 15px; + padding-bottom: 15px; +} +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} +.alert-block p + p { + margin-top: 5px; +} diff --git a/docs/less/bootstrap/badges.less b/docs/less/bootstrap/badges.less new file mode 100644 index 0000000..4750cfb --- /dev/null +++ b/docs/less/bootstrap/badges.less @@ -0,0 +1,58 @@ +// +// Badges +// -------------------------------------------------- + + +// Base classes +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: @font-size-small; + font-weight: bold; + color: #fff; + line-height: 1; + vertical-align: middle; + white-space: nowrap; + text-align: center; + background-color: @gray-light; + border-radius: 10px; + + // Empty labels/badges collapse + &:empty { + display: none; + } +} + +// Hover state, but only for links +a.badge { + &:hover, + &:focus { + color: #fff; + text-decoration: none; + cursor: pointer; + } +} + +// Quick fix for labels/badges in buttons +.btn { + .badge { + position: relative; + top: -1px; + } +} +.btn-mini { + .badge { + top: 0; + } +} + +// Account for counters in navs +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: @link-color; + background-color: #fff; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} diff --git a/docs/less/bootstrap/bootstrap.less b/docs/less/bootstrap/bootstrap.less new file mode 100644 index 0000000..c73c85c --- /dev/null +++ b/docs/less/bootstrap/bootstrap.less @@ -0,0 +1,64 @@ +/*! + * Bootstrap v3.0.0 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + +// Core variables and mixins +@import "variables.less"; +@import "mixins.less"; + +// Reset +@import "normalize.less"; +@import "print.less"; + +// Core CSS +@import "scaffolding.less"; +@import "type.less"; +@import "code.less"; +@import "grid.less"; + +@import "tables.less"; +@import "forms.less"; +@import "buttons.less"; + +// Components: common +@import "component-animations.less"; +@import "glyphicons.less"; +@import "dropdowns.less"; +@import "list-group.less"; +@import "panels.less"; +@import "wells.less"; +@import "close.less"; + +// Components: Nav +@import "navs.less"; +@import "navbar.less"; +@import "button-groups.less"; +@import "breadcrumbs.less"; +@import "pagination.less"; +@import "pager.less"; + +// Components: Popovers +@import "modals.less"; +@import "tooltip.less"; +@import "popovers.less"; + +// Components: Misc +@import "alerts.less"; +@import "thumbnails.less"; +@import "media.less"; +@import "labels.less"; +@import "badges.less"; +@import "progress-bars.less"; +@import "accordion.less"; +@import "carousel.less"; +@import "jumbotron.less"; + +// Utility classes +@import "utilities.less"; // Has to be last to override when necessary +@import "responsive-utilities.less"; diff --git a/docs/less/bootstrap/breadcrumbs.less b/docs/less/bootstrap/breadcrumbs.less new file mode 100644 index 0000000..2fe8217 --- /dev/null +++ b/docs/less/bootstrap/breadcrumbs.less @@ -0,0 +1,28 @@ +// +// Breadcrumbs +// -------------------------------------------------- + + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 @line-height-computed; + list-style: none; + background-color: #f5f5f5; + border-radius: @border-radius-base; + > li { + display: inline-block; + text-shadow: 0 1px 0 #fff; + &:after { + display: inline-block; + content: "\00a0 /"; // Unicode space added since inline-block means non-collapsing white-space + padding: 0 5px; + color: #ccc; + } + &:last-child:after { + display: none; // No divider after last element + } + } + > .active { + color: @gray-light; + } +} diff --git a/docs/less/bootstrap/button-groups.less b/docs/less/bootstrap/button-groups.less new file mode 100644 index 0000000..f7934a3 --- /dev/null +++ b/docs/less/bootstrap/button-groups.less @@ -0,0 +1,170 @@ +// +// Button groups +// -------------------------------------------------- + +// Button carets +.btn .caret { + border-top-color: @btn-default-color; +} +.dropup .btn .caret { + border-bottom-color: @btn-default-color; +} + +// Make the div behave like a button +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; // match .btn alignment given font-size hack above + > .btn { + position: relative; + float: left; + // Bring the "active" button to the front + &:hover, + &:active { + z-index: 2; + } + } +} + +// Prevent double borders when buttons are next to each other +.btn-group .btn + .btn { + margin-left: -1px; +} + +// Optional: Group multiple button groups together for a toolbar +.btn-toolbar { + .clearfix(); + + .btn-group { + float: left; + } + // Space out series of button groups + > .btn + .btn, + > .btn-group + .btn, + > .btn + .btn-group, + > .btn-group + .btn-group { + margin-left: 5px; + } +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match +.btn-group > .btn:first-child { + margin-left: 0; + &:not(:last-child):not(.dropdown-toggle) { + .border-right-radius(0); + } +} +// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + .border-left-radius(0); +} + +// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle { + .border-right-radius(0); +} +.btn-group > .btn-group:last-child > .btn:first-child { + .border-left-radius(0); +} + +// On active and open, don't show outline +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + + + +// Split button dropdowns +// ---------------------- + +// Give the line between buttons some depth +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-mini + .dropdown-toggle { + padding-left: 5px; + padding-right: 5px; +} +.btn-group > .btn-large + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} + +// The clickable button for toggling the menu +// Remove the gradient and set the same inset shadow as the :active state +.btn-group.open .dropdown-toggle { + .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); +} + + +// Reposition the caret +.btn .caret { + margin-left: 0; +} +// Carets in other button sizes +.btn-large .caret { + border-width: 5px; +} +// Upside down carets for .dropup +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + + +// Vertical button groups +// ---------------------- + +.btn-group-vertical > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + + .btn { + margin-top: -1px; + } +} +.btn-group-vertical .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical .btn:first-child { + .border-bottom-radius(0); +} +.btn-group-vertical .btn:last-child { + .border-top-radius(0); +} + + +// Justified button groups +// ---------------------- + +.btn-group-justified { + display: table; + width: 100%; + .btn { + float: none; + display: table-cell; + width: 1%; + } +} + + +// Checkbox and radio options +.btn-group[data-toggle="buttons-radio"] > .btn > input[type="radio"], +.btn-group[data-toggle="buttons-checkbox"] > .btn > input[type="checkbox"] { + display: none; +} diff --git a/docs/less/bootstrap/buttons.less b/docs/less/bootstrap/buttons.less new file mode 100644 index 0000000..6280d34 --- /dev/null +++ b/docs/less/bootstrap/buttons.less @@ -0,0 +1,160 @@ +// +// Buttons +// -------------------------------------------------- + + +// Base styles +// -------------------------------------------------- + +// Core styles +.btn { + display: inline-block; + padding: @padding-base-vertical @padding-base-horizontal; + margin-bottom: 0; // For input.btn + font-size: @font-size-base; + font-weight: 500; + line-height: @line-height-base; + text-align: center; + vertical-align: middle; + cursor: pointer; + border: 1px solid transparent; + border-radius: @border-radius-base; + white-space: nowrap; + + &:focus { + .tab-focus(); + } + + &:hover, + &:focus { + color: #fff; + text-decoration: none; + } + + &:active, + &.active { + outline: 0; + background-image: none; + .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + cursor: default; + pointer-events: none; // Future-proof disabling of clicks + .opacity(.65); + .box-shadow(none); + } + +} + + +// Alternate buttons +// -------------------------------------------------- + +.btn-default { + .btn-pseudo-states(@btn-default-color, @btn-default-bg, @btn-default-border); +} +.btn-primary { + .btn-pseudo-states(@btn-primary-color, @btn-primary-bg, @btn-primary-border); +} +// Warning appears as orange +.btn-warning { + .btn-pseudo-states(@btn-warning-color, @btn-warning-bg, @btn-warning-border); +} +// Danger and error appear as red +.btn-danger { + .btn-pseudo-states(@btn-danger-color, @btn-danger-bg, @btn-danger-border); +} +// Success appears as green +.btn-success { + .btn-pseudo-states(@btn-success-color, @btn-success-bg, @btn-success-border); +} +// Info appears as blue-green +.btn-info { + .btn-pseudo-states(@btn-info-color, @btn-info-bg, @btn-info-border); +} + + +// Link buttons +// ------------------------- + +// Make a button look and behave like a link +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + background-image: none; + .box-shadow(none); +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link { + color: @link-color; + font-weight: normal; + cursor: pointer; + border-radius: 0; +} +.btn-link:hover, +.btn-link:focus { + color: @link-hover-color; + text-decoration: underline; + background-color: transparent; +} +.btn-link { + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: @gray-dark; + text-decoration: none; + } + } +} + + +// Button Sizes +// -------------------------------------------------- + +.btn-large { + padding: @padding-large-vertical @padding-large-horizontal; + font-size: @font-size-large; + border-radius: @border-radius-large; +} +.btn-small { + padding: @padding-small-vertical @padding-small-horizontal; + font-size: @font-size-small; + line-height: 1.5; // ensure proper height of button next to small input + border-radius: @border-radius-small; +} + + +// Block button +// -------------------------------------------------- + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} + +// Vertically space out multiple block buttons +.btn-block + .btn-block { + margin-top: 5px; +} + +// Specificity overrides +input[type="submit"], +input[type="reset"], +input[type="button"] { + &.btn-block { + width: 100%; + } +} diff --git a/docs/less/bootstrap/carousel.less b/docs/less/bootstrap/carousel.less new file mode 100644 index 0000000..a7a4672 --- /dev/null +++ b/docs/less/bootstrap/carousel.less @@ -0,0 +1,192 @@ +// +// Carousel +// -------------------------------------------------- + + +// Wrapper for the slide container and indicators +.carousel { + position: relative; +} + +// Wrap all slides, but only show the active one +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; +} + +// Immediate parent of all slides +.carousel-inner { + + > .item { + display: none; + position: relative; + .transition(.6s ease-in-out left); + + // Account for jankitude on images + > img, + > a > img { + display: block; + line-height: 1; + } + } + + > .active, + > .next, + > .prev { display: block; } + + > .active { + left: 0; + } + + > .next, + > .prev { + position: absolute; + top: 0; + width: 100%; + } + + > .next { + left: 100%; + } + > .prev { + left: -100%; + } + > .next.left, + > .prev.right { + left: 0; + } + + > .active.left { + left: -100%; + } + > .active.right { + left: 100%; + } + +} + +// Left/right controls for nav +// --------------------------- + +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 15%; + .opacity(.5); + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0,0,0,.6); + + // we can't have this transition here + // because webkit cancels the carousel + // animation if you trip this while + // in the middle of another animation + // ;_; + // .transition(opacity .2s linear); + + // Set gradients for backgrounds + &.left { + #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001)); + background-color: transparent; + } + &.right { + left: auto; + right: 0; + #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5)); + background-color: transparent; + } + + // Hover/focus state + &:hover, + &:focus { + color: #fff; + text-decoration: none; + .opacity(.9); + } + + // Toggles + .glyphicon { + position: absolute; + top: 50%; + left: 50%; + z-index: 5; + display: inline-block; + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + } +} + +// Optional indicator pips +// ----------------------------- +.carousel-indicators { + position: absolute; + bottom: 20px; + left: 50%; + z-index: 15; + width: 100px; + margin: 0 0 0 -50px; + padding-left: 0; + list-style: none; + text-align: center; + + li { + display: inline-block; + width: 8px; + height: 8px; + margin-left: 0; + margin-right: 0; + text-indent: -999px; + border: 1px solid #fff; + border-radius: 5px; + cursor: pointer; + } + .active { + background-color: #fff; + } +} + +// Optional captions +// ----------------------------- +// Hidden by default for smaller viewports +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0,0,0,.6); + & .btn { + text-shadow: none; // No shadow for button elements in carousel-caption + } +} + + +// Scale up controls for tablets and up +@media screen and (min-width: @screen-tablet) { + + // Scale up the controls a smidge + .carousel-control .glyphicon { + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 30px; + } + + // Show and left align the captions + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } +} diff --git a/docs/less/bootstrap/close.less b/docs/less/bootstrap/close.less new file mode 100644 index 0000000..e879da4 --- /dev/null +++ b/docs/less/bootstrap/close.less @@ -0,0 +1,33 @@ +// +// Close icons +// -------------------------------------------------- + + +.close { + float: right; + font-size: (@font-size-base * 1.5); + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 rgba(255,255,255,1); + .opacity(.2); + + &:hover, + &:focus { + color: #000; + text-decoration: none; + cursor: pointer; + .opacity(.5); + } +} + +// Additional properties for button version +// iOS requires the button element instead of an anchor tag. +// If you want the anchor version, it requires `href="#"`. +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} diff --git a/docs/less/bootstrap/code.less b/docs/less/bootstrap/code.less new file mode 100644 index 0000000..f1bc0a0 --- /dev/null +++ b/docs/less/bootstrap/code.less @@ -0,0 +1,61 @@ +// +// Code (inline and blocK) +// -------------------------------------------------- + + +// Inline and block code styles +code, +pre { + padding: 0 3px 2px; + font-family: @font-family-monospace; + font-size: (@font-size-base - 2); + color: @gray-dark; + border-radius: 4px; +} + +// Inline code +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + white-space: nowrap; +} + +// Blocks of code +pre { + display: block; + padding: ((@line-height-computed - 1) / 2); + margin: 0 0 (@line-height-computed / 2); + font-size: (@font-size-base - 1); // 14px to 13px + line-height: @line-height-base; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; // IE8 fallback + border: 1px solid rgba(0,0,0,.15); + border-radius: @border-radius-base; + + // Make prettyprint styles more spaced out for readability + &.prettyprint { + margin-bottom: @line-height-computed; + } + + // Account for some code outputs that place code tags in pre tags + code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; + } +} + +// Enable scrollable blocks of code +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} diff --git a/docs/less/bootstrap/component-animations.less b/docs/less/bootstrap/component-animations.less new file mode 100644 index 0000000..50e5e45 --- /dev/null +++ b/docs/less/bootstrap/component-animations.less @@ -0,0 +1,23 @@ +// +// Component animations +// -------------------------------------------------- + + +.fade { + opacity: 0; + .transition(opacity .15s linear); + &.in { + opacity: 1; + } +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + .transition(height .35s ease); + + &.in { + height: auto; + } +} diff --git a/docs/less/bootstrap/dropdowns.less b/docs/less/bootstrap/dropdowns.less new file mode 100644 index 0000000..3e01527 --- /dev/null +++ b/docs/less/bootstrap/dropdowns.less @@ -0,0 +1,226 @@ +// +// Dropdown menus +// -------------------------------------------------- + + +// Dropdown arrow/caret +// -------------------- +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid #000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +// The dropdown menu (ul) +// ---------------------- +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: @zindex-dropdown; + display: none; // none by default, but block on "open" of the menu + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; // override default ul + list-style: none; + background-color: @dropdown-bg; + border: 1px solid #ccc; // IE8 fallback + border: 1px solid @dropdown-border; + border-radius: @border-radius-base; + .box-shadow(0 6px 12px rgba(0,0,0,.175)); + .background-clip(padding-box); + + // Aligns the dropdown menu to right + &.pull-right { + right: 0; + left: auto; + } + + // Dividers (basically an hr) within the dropdown + .divider { + .nav-divider(@dropdown-divider-top, @dropdown-divider-bottom); + } + + // Links within the dropdown menu + > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: @line-height-base; + color: @dropdown-link-color; + white-space: nowrap; // prevent links from randomly breaking onto new lines + } +} + +// Hover/Focus state +// ----------- +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + text-decoration: none; + color: @dropdown-link-hover-color; + #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%)); +} + +// Active state +// ------------ +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: @dropdown-link-active-color; + text-decoration: none; + outline: 0; + #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%)); +} + +// Disabled state +// -------------- +// Gray out text and ensure the hover/focus state remains gray +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: @gray-light; +} +// Nuke hover/focus effects +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; // Remove CSS gradient + .reset-filter(); + cursor: default; +} + +// Open state for the dropdown +// --------------------------- +.open { + // Show the menu + > .dropdown-menu { + display: block; + } + + // Remove the outline when :focus is triggered + > a { + outline: 0; + } +} + + +// Backdrop to catch body clicks on mobile, etc. +// --------------------------- +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: @zindex-dropdown - 10; +} + +// Right aligned dropdowns +// --------------------------- +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +// Allow for dropdowns to go bottom up (aka, dropup-menu) +// ------------------------------------------------------ +// Just add .dropup after the standard .dropdown class and you're set, bro. +// TODO: abstract this so that the navbar fixed styles are not placed here? +.dropup, +.navbar-fixed-bottom .dropdown { + // Reverse the caret + .caret { + border-top: 0; + border-bottom: 4px solid #000; + content: ""; + } + // Different positioning for bottom up menu + .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; + } +} + +// Sub menus +// --------------------------- +.dropdown-submenu { + position: relative; +} +// Default dropdowns +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + border-top-left-radius: 0; // Nuke the closest corner as appropriate +} +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +// Dropups +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + border-bottom-left-radius: 0; // Nuke the closest corner as appropriate +} + +// Caret to indicate there is a submenu +.dropdown-submenu > a:after { + display: block; + content: " "; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: darken(@dropdown-bg, 20%); + margin-top: 5px; + margin-right: -10px; +} +.dropdown-submenu:hover > a:after { + border-left-color: @dropdown-link-hover-color; +} + +// Left aligned submenus +.dropdown-submenu.pull-left { + // Undo the float + // Yes, this is awkward since .pull-left adds a float, but it sticks to our conventions elsewhere. + float: none; + + // Positioning the submenu + > .dropdown-menu { + left: -100%; + margin-left: 10px; + border-top-right-radius: 0; // Remove the rounded corner here + } +} + +// Tweak nav headers +// --------------------------- +// Increase padding from 15px to 20px on sides +.dropdown .dropdown-menu .nav-header { + padding-left: 20px; + padding-right: 20px; +} + +// Typeahead +// --------------------------- +.typeahead { + z-index: 1051; +} diff --git a/docs/less/bootstrap/forms.less b/docs/less/bootstrap/forms.less new file mode 100644 index 0000000..6095809 --- /dev/null +++ b/docs/less/bootstrap/forms.less @@ -0,0 +1,432 @@ +// +// Forms +// -------------------------------------------------- + + +// Non-controls +// ------------------------- + +form { + margin: 0; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: @line-height-computed; + font-size: (@font-size-base * 1.5); + line-height: inherit; + color: @gray-dark; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; +} + +// Form controls +// ------------------------- + +// Shared size and type resets +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"] { + display: block; + min-height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) + padding: @padding-base-vertical @padding-base-horizontal; + font-size: @font-size-base; + line-height: @line-height-base; + color: @gray; + vertical-align: middle; + background-color: @input-bg; + border: 1px solid @input-border; + border-radius: @input-border-radius; + .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); + .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s"); + + &:focus { + border-color: rgba(82,168,236,.8); + outline: 0; + .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6)"); + } + + // Disabled and read-only inputs + // Note: HTML5 says that inputs under a fieldset > legend:first-child won't be + // disabled if the fieldset is disabled. Due to implementation difficulty, + // we don't honor that edge case; we style them as disabled anyway. + &[disabled], + &[readonly], + fieldset[disabled] & { + cursor: not-allowed; + background-color: @input-bg-disabled; + } +} + +// Reset appearance properties for textual inputs and textarea +// Can't be on input[type=*] selectors or it's too specific +input, +select, +textarea { + width: 100%; +} + +// Reset width of input images, buttons, radios, checkboxes +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; // Override of generic input selector +} + +// Override content-box in Normalize (* isn't specific enough) +input[type="search"] { + .box-sizing(border-box); +} + +// Reset height since textareas have rows +textarea { + height: auto; +} + +// Position radios and checkboxes better +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; /* IE8-9 */ + line-height: normal; +} + +// Set the height of select and file controls to match text inputs +select, +input[type="file"] { + height: @input-height-base; /* In IE7, the height of the select element cannot be changed by height, only font-size. TODO: Check if this is still needed when dropping IE7 support */ + line-height: @input-height-base; +} + +// Make multiple select elements height not fixed +select[multiple], +select[size] { + height: auto; +} + +// Fix optgroup Firefox bug per https://github.com/twitter/bootstrap/issues/7611 +select optgroup { + font-size: inherit; + font-style: inherit; + font-family: inherit; +} + +// Focus for select, file, radio, and checkbox +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + .tab-focus(); +} + + +// Placeholder +// ------------------------- + +// Placeholder text gets special styles because when browsers invalidate entire lines if it doesn't understand a selector +input, +textarea { + .placeholder(); +} + + +// CHECKBOXES & RADIOS +// ------------------- + +// Indent the labels to position radios/checkboxes as hanging +.radio, +.checkbox { + display: block; + min-height: @line-height-computed; // clear the floating input if there is no label text + margin-top: 10px; + margin-bottom: 10px; + padding-left: 20px; + vertical-align: middle; + label { + display: inline; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; + } +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + float: left; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing +} + +/* +// Move the options list down to align with labels +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; // has to be padding because margin collaspes +} +*/ + +// Radios and checkboxes on same line +.radio-inline, +.checkbox-inline { + display: inline-block; +// padding-top: 5px; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; // space out consecutive inline controls +} + + + +// INPUT SIZES +// ----------- + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"] { + &.input-large { + min-height: @input-height-large; + padding: @padding-large-vertical @padding-large-horizontal; + font-size: @font-size-large; + border-radius: @border-radius-large; + } + &.input-small { + min-height: @input-height-small; + padding: @padding-small-vertical @padding-small-horizontal; + font-size: @font-size-small; + border-radius: @border-radius-small; + } +} + + + +// FORM FIELD FEEDBACK STATES +// -------------------------- + +// Warning +.has-warning { + .form-field-validation(@state-warning-text, @state-warning-text, @state-warning-bg); +} +// Error +.has-error { + .form-field-validation(@state-danger-text, @state-danger-text, @state-danger-bg); +} +// Success +.has-success { + .form-field-validation(@state-success-text, @state-success-text, @state-success-bg); +} + + + + +// HELP TEXT +// --------- + +.help-block { + display: block; // account for any element using help-block + margin-top: 5px; + margin-bottom: 10px; + color: lighten(@text-color, 25%); // lighten the text some for contrast +} + + + +// Input groups +// -------------------------------------------------- + +// Base styles +// ------------------------- +.input-group { + display: table; + + // Undo padding and float of grid classes + &.col { + float: none; + padding-left: 0; + padding-right: 0; + } + + input, + select { + width: 100%; + margin-bottom: 0; + } +} + +// Display as table-cell +// ------------------------- +.input-group-addon, +.input-group-btn, +.input-group input { + display: table-cell; + + &:not(:first-child):not(:last-child) { + border-radius: 0; + } +} +// Addon and addon wrapper for buttons +.input-group-addon, +.input-group-btn { + width: 1%; + vertical-align: middle; // Match the inputs +} + +// Text input groups +// ------------------------- +.input-group-addon { + .box-sizing(border-box); + padding: @padding-base-vertical @padding-base-horizontal; + font-size: @font-size-base; + font-weight: normal; + line-height: @line-height-base; + text-align: center; + text-shadow: 0 1px 0 #fff; + background-color: @gray-lighter; + border: 1px solid #ccc; + border-radius: @border-radius-base; + + &.input-small { + padding: @padding-small-vertical @padding-small-horizontal; + font-size: @font-size-small; + border-radius: @border-radius-small; + } + &.input-large { + padding: @padding-large-vertical @padding-large-horizontal; + font-size: @font-size-large; + border-radius: @border-radius-large; + } +} + +// Reset rounded corners +.input-group input:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { + .border-right-radius(0); +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group input:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child) { + .border-left-radius(0); +} +.input-group-addon:last-child { + border-left: 0; +} + +// Button input groups +// ------------------------- +.input-group-btn { + position: relative; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; + float: left; // Collapse white-space + + .btn { + margin-left: -1px; + } + // Bring the "active" button to the front + &:hover, + &:active { + z-index: 2; + } +} + + +// Inline forms +// -------------------------------------------------- + +.form-inline { + input, + select, + textarea, + .radio, + .checkbox { + display: inline-block; + } + .radio, + .checkbox { + margin-top: 0; + margin-bottom: 0; + } +} + + +// Horizontal forms +// -------------------------------------------------- +// Horizontal forms are built on grid classes. + +.form-horizontal { + .row + .row { + margin-top: 15px; + } + .control-label { + padding-top: 6px; + } +} + +// Only right aline form labels here when the columns stop stacking +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + } +} diff --git a/docs/less/bootstrap/glyphicons.less b/docs/less/bootstrap/glyphicons.less new file mode 100644 index 0000000..0d935ea --- /dev/null +++ b/docs/less/bootstrap/glyphicons.less @@ -0,0 +1,200 @@ +// +// Glyphicons +// ----------------------------------------------------------------------------- + +// About +// +// Glyphicons font-based icons require you to include all relevant font files, +// found in the Bootstrap repo under /fonts/. Files are referenced relative to +// the compiled CSS. +// +// Basic usage +// +// Since icons are fonts, they can be placed anywhere text is placed. To use, +// create an inline element with the appropriate classes, like so: +// +// Star +// +// Use them in links, buttons, headings, and more. + + +// Import the fonts +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('@{glyphicons-font-path}/glyphiconshalflings-regular.eot'); + src: url('@{glyphicons-font-path}/glyphiconshalflings-regular.eot?#iefix') format('embedded-opentype'), + url('@{glyphicons-font-path}/glyphiconshalflings-regular.woff') format('woff'), + url('@{glyphicons-font-path}/glyphiconshalflings-regular.ttf') format('truetype'), + url('@{glyphicons-font-path}/glyphiconshalflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} + +// Catchall baseclass +.glyphicon:before { + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; +} + +// Individual icons +.glyphicon-glass:before { content: "\e001"; } +.glyphicon-music:before { content: "\e002"; } +.glyphicon-search:before { content: "\e003"; } +.glyphicon-envelope:before { content: "\2709"; } +.glyphicon-heart:before { content: "\e005"; } +.glyphicon-star:before { content: "\e006"; } +.glyphicon-star-empty:before { content: "\e007"; } +.glyphicon-user:before { content: "\e008"; } +.glyphicon-film:before { content: "\e009"; } +.glyphicon-th-large:before { content: "\e010"; } +.glyphicon-th:before { content: "\e011"; } +.glyphicon-th-list:before { content: "\e012"; } +.glyphicon-ok:before { content: "\e013"; } +.glyphicon-remove:before { content: "\e014"; } +.glyphicon-zoom-in:before { content: "\e015"; } +.glyphicon-zoom-out:before { content: "\e016"; } +.glyphicon-off:before { content: "\e017"; } +.glyphicon-signal:before { content: "\e018"; } +.glyphicon-cog:before { content: "\e019"; } +.glyphicon-trash:before { content: "\e020"; } +.glyphicon-home:before { content: "\e021"; } +.glyphicon-file:before { content: "\e022"; } +.glyphicon-time:before { content: "\e023"; } +.glyphicon-road:before { content: "\e024"; } +.glyphicon-download-alt:before { content: "\e025"; } +.glyphicon-download:before { content: "\e026"; } +.glyphicon-upload:before { content: "\e027"; } +.glyphicon-inbox:before { content: "\e028"; } +.glyphicon-play-circle:before { content: "\e029"; } +.glyphicon-repeat:before { content: "\e030"; } +.glyphicon-refresh:before { content: "\e031"; } +.glyphicon-list-alt:before { content: "\e032"; } +.glyphicon-lock:before { content: "\e033"; } +.glyphicon-flag:before { content: "\e034"; } +.glyphicon-headphones:before { content: "\e035"; } +.glyphicon-volume-off:before { content: "\e036"; } +.glyphicon-volume-down:before { content: "\e037"; } +.glyphicon-volume-up:before { content: "\e038"; } +.glyphicon-qrcode:before { content: "\e039"; } +.glyphicon-barcode:before { content: "\e040"; } +.glyphicon-tag:before { content: "\e041"; } +.glyphicon-tags:before { content: "\e042"; } +.glyphicon-book:before { content: "\e043"; } +.glyphicon-bookmark:before { content: "\e044"; } +.glyphicon-print:before { content: "\e045"; } +.glyphicon-camera:before { content: "\e046"; } +.glyphicon-font:before { content: "\e047"; } +.glyphicon-bold:before { content: "\e048"; } +.glyphicon-italic:before { content: "\e049"; } +.glyphicon-text-height:before { content: "\e050"; } +.glyphicon-text-width:before { content: "\e051"; } +.glyphicon-align-left:before { content: "\e052"; } +.glyphicon-align-center:before { content: "\e053"; } +.glyphicon-align-right:before { content: "\e054"; } +.glyphicon-align-justify:before { content: "\e055"; } +.glyphicon-list:before { content: "\e056"; } +.glyphicon-indent-left:before { content: "\e057"; } +.glyphicon-indent-right:before { content: "\e058"; } +.glyphicon-facetime-video:before { content: "\e059"; } +.glyphicon-picture:before { content: "\e060"; } +.glyphicon-pencil:before { content: "\270f"; } +.glyphicon-map-marker:before { content: "\e062"; } +.glyphicon-adjust:before { content: "\e063"; } +.glyphicon-tint:before { content: "\e064"; } +.glyphicon-edit:before { content: "\e065"; } +.glyphicon-share:before { content: "\e066"; } +.glyphicon-check:before { content: "\e067"; } +.glyphicon-move:before { content: "\e068"; } +.glyphicon-step-backward:before { content: "\e069"; } +.glyphicon-fast-backward:before { content: "\e070"; } +.glyphicon-backward:before { content: "\e071"; } +.glyphicon-play:before { content: "\e072"; } +.glyphicon-pause:before { content: "\e073"; } +.glyphicon-stop:before { content: "\e074"; } +.glyphicon-forward:before { content: "\e075"; } +.glyphicon-fast-forward:before { content: "\e076"; } +.glyphicon-step-forward:before { content: "\e077"; } +.glyphicon-eject:before { content: "\e078"; } +.glyphicon-chevron-left:before { content: "\e079"; } +.glyphicon-chevron-right:before { content: "\e080"; } +.glyphicon-plus-sign:before { content: "\e081"; } +.glyphicon-minus-sign:before { content: "\e082"; } +.glyphicon-remove-sign:before { content: "\e083"; } +.glyphicon-ok-sign:before { content: "\e084"; } +.glyphicon-question-sign:before { content: "\e085"; } +.glyphicon-info-sign:before { content: "\e086"; } +.glyphicon-screenshot:before { content: "\e087"; } +.glyphicon-remove-circle:before { content: "\e088"; } +.glyphicon-ok-circle:before { content: "\e089"; } +.glyphicon-ban-circle:before { content: "\e090"; } +.glyphicon-arrow-left:before { content: "\e091"; } +.glyphicon-arrow-right:before { content: "\e092"; } +.glyphicon-arrow-up:before { content: "\e093"; } +.glyphicon-arrow-down:before { content: "\e094"; } +.glyphicon-share-alt:before { content: "\e095"; } +.glyphicon-resize-full:before { content: "\e096"; } +.glyphicon-resize-small:before { content: "\e097"; } +.glyphicon-plus:before { content: "\002b"; } +.glyphicon-minus:before { content: "\2212"; } +.glyphicon-asterisk:before { content: "\002a"; } +.glyphicon-exclamation-sign:before { content: "\e101"; } +.glyphicon-gift:before { content: "\e102"; } +.glyphicon-leaf:before { content: "\e103"; } +.glyphicon-fire:before { content: "\e104"; } +.glyphicon-eye-open:before { content: "\e105"; } +.glyphicon-eye-close:before { content: "\e106"; } +.glyphicon-warning-sign:before { content: "\e107"; } +.glyphicon-plane:before { content: "\e108"; } +.glyphicon-calendar:before { content: "\e109"; } +.glyphicon-random:before { content: "\e110"; } +.glyphicon-comment:before { content: "\e111"; } +.glyphicon-magnet:before { content: "\e112"; } +.glyphicon-chevron-up:before { content: "\e113"; } +.glyphicon-chevron-down:before { content: "\e114"; } +.glyphicon-retweet:before { content: "\e115"; } +.glyphicon-shopping-cart:before { content: "\e116"; } +.glyphicon-folder-close:before { content: "\e117"; } +.glyphicon-folder-open:before { content: "\e118"; } +.glyphicon-resize-vertical:before { content: "\e119"; } +.glyphicon-resize-horizontal:before { content: "\e120"; } +.glyphicon-hdd:before { content: "\e121"; } +.glyphicon-bullhorn:before { content: "\e122"; } +.glyphicon-bell:before { content: "\e123"; } +.glyphicon-certificate:before { content: "\e124"; } +.glyphicon-thumbs-up:before { content: "\e125"; } +.glyphicon-thumbs-down:before { content: "\e126"; } +.glyphicon-hand-right:before { content: "\e127"; } +.glyphicon-hand-left:before { content: "\e128"; } +.glyphicon-hand-up:before { content: "\e129"; } +.glyphicon-hand-down:before { content: "\e130"; } +.glyphicon-circle-arrow-right:before { content: "\e131"; } +.glyphicon-circle-arrow-left:before { content: "\e132"; } +.glyphicon-circle-arrow-up:before { content: "\e133"; } +.glyphicon-circle-arrow-down:before { content: "\e134"; } +.glyphicon-globe:before { content: "\e135"; } +.glyphicon-wrench:before { content: "\e136"; } +.glyphicon-tasks:before { content: "\e137"; } +.glyphicon-filter:before { content: "\e138"; } +.glyphicon-briefcase:before { content: "\e139"; } +.glyphicon-fullscreen:before { content: "\e140"; } +.glyphicon-dashboard:before { content: "\e141"; } +.glyphicon-paperclip:before { content: "\e142"; } +.glyphicon-heart-empty:before { content: "\e143"; } +.glyphicon-link:before { content: "\e144"; } +.glyphicon-phone:before { content: "\e145"; } +.glyphicon-pushpin:before { content: "\e146"; } +.glyphicon-euro:before { content: "\20ac"; } +.glyphicon-usd:before { content: "\e148"; } +.glyphicon-gbp:before { content: "\e149"; } +.glyphicon-sort:before { content: "\e150"; } +.glyphicon-sort-by-alphabet:before { content: "\e151"; } +.glyphicon-sort-by-alphabet-alt:before { content: "\e152"; } +.glyphicon-sort-by-order:before { content: "\e153"; } +.glyphicon-sort-by-order-alt:before { content: "\e154"; } +.glyphicon-sort-by-attributes:before { content: "\e155"; } +.glyphicon-sort-by-attributes-alt:before { content: "\e156"; } +.glyphicon-unchecked:before { content: "\e157"; } +.glyphicon-expand:before { content: "\e158"; } +.glyphicon-collapse:before { content: "\e159"; } +.glyphicon-collapse-top:before { content: "\e160"; } diff --git a/docs/less/bootstrap/grid.less b/docs/less/bootstrap/grid.less new file mode 100644 index 0000000..12803f3 --- /dev/null +++ b/docs/less/bootstrap/grid.less @@ -0,0 +1,204 @@ +// +// Grid system +// -------------------------------------------------- + +// Set the container width, and override it for fixed navbars in media queries +.container { + .container-fixed(); +} + +// Mobile-first defaults +.row { + .make-row(); +} + +// Common styles for small and large grid columns +.col-1, +.col-2, +.col-3, +.col-4, +.col-5, +.col-6, +.col-7, +.col-8, +.col-9, +.col-10, +.col-11, +.col-12, +.col-sm-1, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-lg-1, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-lg-10, +.col-lg-11, +.col-lg-12 { + position: relative; + // Prevent columns from collapsing when empty + min-height: 1px; + // Inner gutter via padding + padding-left: (@grid-gutter-width / 2); + padding-right: (@grid-gutter-width / 2); +} + + + +// +// Container and grid column sizing +// + +// Tiny device columns (smartphones) +.col-1, +.col-2, +.col-3, +.col-4, +.col-5, +.col-6, +.col-7, +.col-8, +.col-9, +.col-10, +.col-11, +.col-12 { + float: left; +} +.col-1 { width: percentage((1 / @grid-columns)); } +.col-2 { width: percentage((2 / @grid-columns)); } +.col-3 { width: percentage((3 / @grid-columns)); } +.col-4 { width: percentage((4 / @grid-columns)); } +.col-5 { width: percentage((5 / @grid-columns)); } +.col-6 { width: percentage((6 / @grid-columns)); } +.col-7 { width: percentage((7 / @grid-columns)); } +.col-8 { width: percentage((8 / @grid-columns)); } +.col-9 { width: percentage((9 / @grid-columns)); } +.col-10 { width: percentage((10/ @grid-columns)); } +.col-11 { width: percentage((11/ @grid-columns)); } +.col-12 { width: 100%; } + +// Small device columns (phones to tablets) +@media (min-width: @screen-tablet) { + .container { + max-width: @container-tablet; + } + + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11, + .col-sm-12 { + float: left; + } + .col-sm-1 { width: percentage((1 / @grid-columns)); } + .col-sm-2 { width: percentage((2 / @grid-columns)); } + .col-sm-3 { width: percentage((3 / @grid-columns)); } + .col-sm-4 { width: percentage((4 / @grid-columns)); } + .col-sm-5 { width: percentage((5 / @grid-columns)); } + .col-sm-6 { width: percentage((6 / @grid-columns)); } + .col-sm-7 { width: percentage((7 / @grid-columns)); } + .col-sm-8 { width: percentage((8 / @grid-columns)); } + .col-sm-9 { width: percentage((9 / @grid-columns)); } + .col-sm-10 { width: percentage((10/ @grid-columns)); } + .col-sm-11 { width: percentage((11/ @grid-columns)); } + .col-sm-12 { width: 100%; } + + // Push and pull columns for source order changes + .col-push-1 { left: percentage((1 / @grid-columns)); } + .col-push-2 { left: percentage((2 / @grid-columns)); } + .col-push-3 { left: percentage((3 / @grid-columns)); } + .col-push-4 { left: percentage((4 / @grid-columns)); } + .col-push-5 { left: percentage((5 / @grid-columns)); } + .col-push-6 { left: percentage((6 / @grid-columns)); } + .col-push-7 { left: percentage((7 / @grid-columns)); } + .col-push-8 { left: percentage((8 / @grid-columns)); } + .col-push-9 { left: percentage((9 / @grid-columns)); } + .col-push-10 { left: percentage((10/ @grid-columns)); } + .col-push-11 { left: percentage((11/ @grid-columns)); } + + .col-pull-1 { right: percentage((1 / @grid-columns)); } + .col-pull-2 { right: percentage((2 / @grid-columns)); } + .col-pull-3 { right: percentage((3 / @grid-columns)); } + .col-pull-4 { right: percentage((4 / @grid-columns)); } + .col-pull-5 { right: percentage((5 / @grid-columns)); } + .col-pull-6 { right: percentage((6 / @grid-columns)); } + .col-pull-7 { right: percentage((7 / @grid-columns)); } + .col-pull-8 { right: percentage((8 / @grid-columns)); } + .col-pull-9 { right: percentage((9 / @grid-columns)); } + .col-pull-10 { right: percentage((10/ @grid-columns)); } + .col-pull-11 { right: percentage((11/ @grid-columns)); } +} + +// Medium and large device columns (desktop and up) +@media (min-width: @screen-desktop) { + .container { + max-width: @container-desktop; + } + .col-lg-1, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9, + .col-lg-10, + .col-lg-11, + .col-lg-12 { + float: left; + } + .col-lg-1 { width: percentage((1 / @grid-columns)); } + .col-lg-2 { width: percentage((2 / @grid-columns)); } + .col-lg-3 { width: percentage((3 / @grid-columns)); } + .col-lg-4 { width: percentage((4 / @grid-columns)); } + .col-lg-5 { width: percentage((5 / @grid-columns)); } + .col-lg-6 { width: percentage((6 / @grid-columns)); } + .col-lg-7 { width: percentage((7 / @grid-columns)); } + .col-lg-8 { width: percentage((8 / @grid-columns)); } + .col-lg-9 { width: percentage((9 / @grid-columns)); } + .col-lg-10 { width: percentage((10/ @grid-columns)); } + .col-lg-11 { width: percentage((11/ @grid-columns)); } + .col-lg-12 { width: 100%; } + + // Offsets + .col-offset-1 { margin-left: percentage((1 / @grid-columns)); } + .col-offset-2 { margin-left: percentage((2 / @grid-columns)); } + .col-offset-3 { margin-left: percentage((3 / @grid-columns)); } + .col-offset-4 { margin-left: percentage((4 / @grid-columns)); } + .col-offset-5 { margin-left: percentage((5 / @grid-columns)); } + .col-offset-6 { margin-left: percentage((6 / @grid-columns)); } + .col-offset-7 { margin-left: percentage((7 / @grid-columns)); } + .col-offset-8 { margin-left: percentage((8 / @grid-columns)); } + .col-offset-9 { margin-left: percentage((9 / @grid-columns)); } + .col-offset-10 { margin-left: percentage((10/ @grid-columns)); } + .col-offset-11 { margin-left: percentage((11/ @grid-columns)); } +} + +// Large desktops and up +@media (min-width: @screen-large-desktop) { + .container { + max-width: @container-large-desktop; + } +} diff --git a/docs/less/bootstrap/jumbotron.less b/docs/less/bootstrap/jumbotron.less new file mode 100644 index 0000000..39bec9b --- /dev/null +++ b/docs/less/bootstrap/jumbotron.less @@ -0,0 +1,32 @@ +// +// Jumbotron +// -------------------------------------------------- + + +.jumbotron { + padding: 30px; + margin-bottom: 30px; + font-size: (@font-size-base * 1.5); + font-weight: 200; + line-height: (@line-height-base * 1.5); + color: @jumbotron-lead-color; + background-color: @jumbotron-bg; + h1 { + line-height: 1; + color: @jumbotron-heading-color; + } + p { + line-height: 1.4; + } +} + +@media screen and (min-width: @screen-tablet) { + .jumbotron { + padding: 50px 60px; + border-radius: @border-radius-large; // Only round corners at higher resolutions + + h1 { + font-size: (@font-size-base * 4.5); + } + } +} diff --git a/docs/less/bootstrap/labels.less b/docs/less/bootstrap/labels.less new file mode 100644 index 0000000..92fe8f8 --- /dev/null +++ b/docs/less/bootstrap/labels.less @@ -0,0 +1,70 @@ +// +// Labels +// -------------------------------------------------- + +.label { + display: inline; + padding: .25em .6em; + font-size: 75%; + font-weight: 500; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: @gray-light; + border-radius: .25em; + + // Add hover effects, but only for links + &[href] { + &:hover, + &:focus { + color: #fff; + text-decoration: none; + cursor: pointer; + background-color: darken(@gray-light, 10%); + } + } +} + +// Colors +// Contextual variations (linked labels get darker on :hover) +.label-danger { + background-color: @label-danger-bg; + &[href] { + &:hover, + &:focus { + background-color: darken(@label-danger-bg, 10%); + } + } +} + +.label-success { + background-color: @label-success-bg; + &[href] { + &:hover, + &:focus { + background-color: darken(@label-success-bg, 10%); + } + } +} + +.label-warning { + background-color: @label-warning-bg; + &[href] { + &:hover, + &:focus { + background-color: darken(@label-warning-bg, 10%); + } + } +} + +.label-info { + background-color: @label-info-bg; + &[href] { + &:hover, + &:focus { + background-color: darken(@label-info-bg, 10%); + } + } +} \ No newline at end of file diff --git a/docs/less/bootstrap/list-group.less b/docs/less/bootstrap/list-group.less new file mode 100644 index 0000000..f9d9f61 --- /dev/null +++ b/docs/less/bootstrap/list-group.less @@ -0,0 +1,94 @@ +// +// List groups +// -------------------------------------------------- + +// Base class +// +// Easily usable on
    ,
      , or
      . +.list-group { + // No need to set list-style: none; since .list-group-item is block level + margin-bottom: 20px; + padding-left: 0; // reset padding because ul and ol + background-color: @list-group-bg; +} + +// Individual list items +// ------------------------- + +.list-group-item { + position: relative; + display: block; + padding: 10px 30px 10px 15px; + // Place the border on the list items and negative margin up for better styling + margin-bottom: -1px; + border: 1px solid @list-group-border; +} +// Round the first and last items +.list-group-item:first-child { + .border-top-radius(@border-radius-base); +} +.list-group-item:last-child { + margin-bottom: 0; + .border-bottom-radius(@border-radius-base); +} + + +// Custom content options +// ------------------------- + +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} + +// Linked list items +// ------------------------- + +// Custom content within linked items +a.list-group-item { + .list-group-item-heading { + color: #333; + } + .list-group-item-text { + color: #555; + } +} + +// Hover state +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + background-color: @list-group-hover-bg; +} + +// Active class on item itself, not parent +a.list-group-item.active { + z-index: 2; // Place active items above their siblings for proper border styling + color: @list-group-active-color; + background-color: @list-group-active-bg; + border-color: @list-group-active-border; + + // Force color to inherit for custom content + .list-group-item-heading { + color: inherit; + } + .list-group-item-text { + color: lighten(@list-group-active-bg, 40%); + } +} + +// Chevrons and badges within list items +// ------------------------- + +.list-group-item > .badge, +.list-group-item > .glyphicon-chevron-right { + float: right; + margin-right: -15px; +} +.list-group-item > .glyphicon + .badge { + margin-right: 5px; +} diff --git a/docs/less/bootstrap/media.less b/docs/less/bootstrap/media.less new file mode 100644 index 0000000..21063eb --- /dev/null +++ b/docs/less/bootstrap/media.less @@ -0,0 +1,54 @@ +// Media objects +// Source: http://stubbornella.org/content/?p=497 +// -------------------------------------------------- + + +// Common styles +// ------------------------- + +// Clear the floats +.media, +.media-body { + overflow: hidden; + zoom: 1; +} + +// Proper spacing between instances of .media +.media, +.media .media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} + +// For images and videos, set to block +.media-object { + display: block; +} + +// Reset margins on headings for tighter default spacing +.media-heading { + margin: 0 0 5px; +} + + +// Media image alignment +// ------------------------- + +.media > .pull-left { + margin-right: 10px; +} +.media > .pull-right { + margin-left: 10px; +} + + +// Media list variation +// ------------------------- + +// Undo default ul/ol styles +.media-list { + margin-left: 0; + list-style: none; +} diff --git a/docs/less/bootstrap/mixins.less b/docs/less/bootstrap/mixins.less new file mode 100644 index 0000000..9825e9a --- /dev/null +++ b/docs/less/bootstrap/mixins.less @@ -0,0 +1,495 @@ +// +// Mixins +// -------------------------------------------------- + + +// Utilities +// ------------------------- + +// Clearfix +// Source: http://nicolasgallagher.com/micro-clearfix-hack/ +// +// For modern browsers +// 1. The space content is one way to avoid an Opera bug when the +// contenteditable attribute is included anywhere else in the document. +// Otherwise it causes space to appear at the top and bottom of elements +// that are clearfixed. +// 2. The use of `table` rather than `block` is only necessary if using +// `:before` to contain the top-margins of child elements. +.clearfix() { + &:before, + &:after { + content: " "; /* 1 */ + display: table; /* 2 */ + } + &:after { + clear: both; + } +} + +// Webkit-style focus +.tab-focus() { + // Default + outline: thin dotted #333; + // Webkit + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +// Center-align a block level element +.center-block() { + display: block; + margin-left: auto; + margin-right: auto; +} + +// Sizing shortcuts +.size(@width, @height) { + width: @width; + height: @height; +} +.square(@size) { + .size(@size, @size); +} + +// Placeholder text +.placeholder(@color: @input-color-placeholder) { + &:-moz-placeholder { color: @color; } // Firefox 4-18 + &::-moz-placeholder { color: @color; } // Firefox 19+ + &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+ + &::-webkit-input-placeholder { color: @color; } // Safari and Chrome +} + +// Text overflow +// Requires inline-block or block for proper styling +.text-overflow() { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +// CSS image replacement +// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 +.hide-text() { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + + + +// CSS3 PROPERTIES +// -------------------------------------------------- + +// Single side border-radius +.border-top-radius(@radius) { + border-top-right-radius: @radius; + border-top-left-radius: @radius; +} +.border-right-radius(@radius) { + border-bottom-right-radius: @radius; + border-top-right-radius: @radius; +} +.border-bottom-radius(@radius) { + border-bottom-right-radius: @radius; + border-bottom-left-radius: @radius; +} +.border-left-radius(@radius) { + border-bottom-left-radius: @radius; + border-top-left-radius: @radius; +} + +// Drop shadows +.box-shadow(@shadow) { + -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1 + box-shadow: @shadow; +} + +// Transitions +.transition(@transition) { + -webkit-transition: @transition; + -moz-transition: @transition; + -o-transition: @transition; + transition: @transition; +} +.transition-delay(@transition-delay) { + -webkit-transition-delay: @transition-delay; + -moz-transition-delay: @transition-delay; + -o-transition-delay: @transition-delay; + transition-delay: @transition-delay; +} +.transition-duration(@transition-duration) { + -webkit-transition-duration: @transition-duration; + -moz-transition-duration: @transition-duration; + -o-transition-duration: @transition-duration; + transition-duration: @transition-duration; +} + +// Transformations +.rotate(@degrees) { + -webkit-transform: rotate(@degrees); + -moz-transform: rotate(@degrees); + -ms-transform: rotate(@degrees); + -o-transform: rotate(@degrees); + transform: rotate(@degrees); +} +.scale(@ratio) { + -webkit-transform: scale(@ratio); + -moz-transform: scale(@ratio); + -ms-transform: scale(@ratio); + -o-transform: scale(@ratio); + transform: scale(@ratio); +} +.translate(@x, @y) { + -webkit-transform: translate(@x, @y); + -moz-transform: translate(@x, @y); + -ms-transform: translate(@x, @y); + -o-transform: translate(@x, @y); + transform: translate(@x, @y); +} +.skew(@x, @y) { + -webkit-transform: skew(@x, @y); + -moz-transform: skew(@x, @y); + -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twitter/bootstrap/issues/4885 + -o-transform: skew(@x, @y); + transform: skew(@x, @y); +} +.translate3d(@x, @y, @z) { + -webkit-transform: translate3d(@x, @y, @z); + -moz-transform: translate3d(@x, @y, @z); + -o-transform: translate3d(@x, @y, @z); + transform: translate3d(@x, @y, @z); +} + +// Backface visibility +// Prevent browsers from flickering when using CSS 3D transforms. +// Default value is `visible`, but can be changed to `hidden +// See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples +.backface-visibility(@visibility){ + -webkit-backface-visibility: @visibility; + -moz-backface-visibility: @visibility; + backface-visibility: @visibility; +} + +// Background clipping +.background-clip(@clip) { + -webkit-background-clip: @clip; + -moz-background-clip: @clip; + background-clip: @clip; +} + +// Background sizing +.background-size(@size) { + -webkit-background-size: @size; + -moz-background-size: @size; + -o-background-size: @size; + background-size: @size; +} + +// Box sizing +.box-sizing(@boxmodel) { + -webkit-box-sizing: @boxmodel; + -moz-box-sizing: @boxmodel; + box-sizing: @boxmodel; +} + +// User select +// For selecting text on the page +.user-select(@select) { + -webkit-user-select: @select; + -moz-user-select: @select; + -ms-user-select: @select; + -o-user-select: @select; + user-select: @select; +} + +// Resize anything +.resizable(@direction) { + resize: @direction; // Options: horizontal, vertical, both + overflow: auto; // Safari fix +} + +// CSS3 Content Columns +.content-columns(@column-count, @column-gap: @grid-gutter-width) { + -webkit-column-count: @column-count; + -moz-column-count: @column-count; + column-count: @column-count; + -webkit-column-gap: @column-gap; + -moz-column-gap: @column-gap; + column-gap: @column-gap; +} + +// Optional hyphenation +.hyphens(@mode: auto) { + word-wrap: break-word; + -webkit-hyphens: @mode; + -moz-hyphens: @mode; + -ms-hyphens: @mode; + -o-hyphens: @mode; + hyphens: @mode; +} + +// Opacity +.opacity(@opacity) { + opacity: @opacity; + // IE8 filter + @opacity-ie: (@opacity * 100); + filter: ~"alpha(opacity=@{opacity-ie})"; +} + + + +// GRADIENTS +// -------------------------------------------------- + +#gradient { + + // Horizontal gradient, from left to right + // + // Creates two color stops, start and end, by specifying a color and position for each color stop. + // Color stops are not available in IE9 and below. + .horizontal(@start-color: #555; @start-percent: 0%; @end-color: #333; @end-percent: 100%) { + background-color: @end-color; + background-image: -webkit-gradient(linear, @start-percent top, @end-percent top, from(@start-color), to(@end-color)); // Safari 4+, Chrome 2+ + background-image: -webkit-linear-gradient(left, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1+, Chrome 10+ + background-image: -moz-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // FF 3.6+ + background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10 + background-repeat: repeat-x; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down + } + + // Vertical gradient, from top to bottom + // + // Creates two color stops, start and end, by specifying a color and position for each color stop. + // Color stops are not available in IE9 and below. + .vertical(@start-color: #555; @start-percent: 0%; @end-color: #333; @end-percent: 100%) { + background-color: @end-color; + background-image: -webkit-gradient(linear, left @start-percent, left @end-percent, from(@start-color), to(@end-color)); // Safari 4+, Chrome 2+ + background-image: -webkit-linear-gradient(top, @start-color, @start-percent, @end-color, @end-percent); // Safari 5.1+, Chrome 10+ + background-image: -moz-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // FF 3.6+ + background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10 + background-repeat: repeat-x; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down + } + + .directional(@start-color: #555, @end-color: #333, @deg: 45deg) { + background-color: @end-color; + background-repeat: repeat-x; + background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1+, Chrome 10+ + background-image: -moz-linear-gradient(@deg, @start-color, @end-color); // FF 3.6+ + background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10 + } + .horizontal-three-colors(@start-color: #00b3ee, @mid-color: #7a43b6, @color-stop: 50%, @end-color: #c3325f) { + background-color: mix(@mid-color, @end-color, 80%); + background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from(@start-color), color-stop(@color-stop, @mid-color), to(@end-color)); + background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color); + background-image: -moz-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color); + background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color); + background-repeat: no-repeat; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback + } + + .vertical-three-colors(@start-color: #00b3ee, @mid-color: #7a43b6, @color-stop: 50%, @end-color: #c3325f) { + background-color: mix(@mid-color, @end-color, 80%); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@start-color), color-stop(@color-stop, @mid-color), to(@end-color)); + background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color); + background-image: -moz-linear-gradient(top, @start-color, @mid-color @color-stop, @end-color); + background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color); + background-repeat: no-repeat; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback + } + .radial(@inner-color: #555, @outer-color: #333) { + background-color: @outer-color; + background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@inner-color), to(@outer-color)); + background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color); + background-image: -moz-radial-gradient(circle, @inner-color, @outer-color); + background-image: radial-gradient(circle, @inner-color, @outer-color); + background-repeat: no-repeat; + } + .striped(@color: #555, @angle: 45deg) { + background-color: @color; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); + } +} + +// Reset filters for IE +// +// When you need to remove a gradient background, don't forget to use this to reset +// the IE filter for IE9 and below. +.reset-filter() { + filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); +} + + + +// RETINA IMAGE SUPPORT +// -------------------------------------------------- + +// Short retina mixin for setting background-image and -size +.retina-image(@file-1x, @file-2x, @width-1x, @height-1x) { + background-image: url("@{file-1x}"); + + @media + only screen and (-webkit-min-device-pixel-ratio: 2), + only screen and ( min--moz-device-pixel-ratio: 2), + only screen and ( -o-min-device-pixel-ratio: 2/1), + only screen and ( min-device-pixel-ratio: 2), + only screen and ( min-resolution: 192dpi), + only screen and ( min-resolution: 2dppx) { + background-image: url("@{file-2x}"); + background-size: @width-1x @height-1x; + } +} + + +// COMPONENT MIXINS +// -------------------------------------------------- + +// Horizontal dividers +// ------------------------- +// Dividers (basically an hr) within dropdowns and nav lists +.nav-divider(@top: #e5e5e5, @bottom: #fff) { + height: 2px; // 1px for background, one for border + margin: ((@line-height-computed / 2) - 1) 0; + overflow: hidden; + background-color: @top; + border-bottom: 1px solid @bottom; +} + +// Button psuedo states +// ------------------------- +// Easily pump out default styles, as well as :hover, :focus, :active, +// and disabled options for all buttons +.btn-pseudo-states(@color, @background, @border) { + color: @color; + background-color: @background; + border-color: @border; + + &:hover, + &:focus, + &:active, + &.active { + background-color: darken(@background, 5%); + border-color: darken(@border, 10%); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus, + &:active, + &.active { + background-color: @background; + border-color: @border + } + } +} + +// Navbar vertical align +// ------------------------- +// Vertically center elements in the navbar. +// Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. +.navbar-vertical-align(@element-height) { + margin-top: ((@navbar-height - @element-height) / 2); + margin-bottom: ((@navbar-height - @element-height) / 2); +} + + + +// Grid System +// ----------- + +// Centered container element +.container-fixed() { + margin-right: auto; + margin-left: auto; + .clearfix(); +} + +// Make a grid + +// Creates a wrapper for a series of columns +.make-row() { + // Then clear the floated columns + .clearfix(); + + @media (min-width: @screen-small) { + margin-left: (@grid-gutter-width / -2); + margin-right: (@grid-gutter-width / -2); + } + + // Negative margin nested rows out to align the content of columns + .row { + margin-left: (@grid-gutter-width / -2); + margin-right: (@grid-gutter-width / -2); + } +} +// Generate the columns +.make-column(@columns) { + position: relative; + // Float and set width: 100%; for easy stacking on mobile devices + float: left; + width: 100%; + // Prevent columns from collapsing when empty + min-height: 1px; + // Inner gutter via padding + padding-left: (@grid-gutter-width / 2); + padding-right: (@grid-gutter-width / 2); + + // Calculate width based on number of columns available + @media (min-width: @grid-float-breakpoint) { + width: percentage((@columns / @grid-columns)); + } +} +// Generate the column offsets +.make-column-offset(@columns) { + @media (min-width: @grid-float-breakpoint) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-column-push(@columns) { + @media (min-width: @grid-float-breakpoint) { + left: percentage((@columns / @grid-columns)); + } +} +.make-column-pull(@columns) { + @media (min-width: @grid-float-breakpoint) { + right: percentage((@columns / @grid-columns)); + } +} + + + +// Framework mixins +// -------------------------------------------------- + +// Generate form validation states +.form-field-validation(@text-color: #555, @border-color: #ccc, @background-color: #f5f5f5) { + // Color the label text + .control-label { + color: @text-color; + } + // Set the border and box shadow on specific inputs to match + .input-with-feedback { + padding-right: 32px; // to account for the feedback icon + border-color: @border-color; + .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work + &:focus { + border-color: darken(@border-color, 10%); + @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%); + .box-shadow(@shadow); + } + } + // Set validation states also for addons + .input-group-addon { + color: @text-color; + border-color: @border-color; + background-color: @background-color; + } +} diff --git a/docs/less/bootstrap/modals.less b/docs/less/bootstrap/modals.less new file mode 100644 index 0000000..144588a --- /dev/null +++ b/docs/less/bootstrap/modals.less @@ -0,0 +1,137 @@ +// +// Modals +// -------------------------------------------------- + +// .modal-open - body class for killing the scroll +// .modal - container to scroll within +// .modal-dialog - positioning shell for the actual modal +// .modal-content - actual modal w/ bg and corners and shit + +// Kill the scroll on the body +.modal-open { + overflow: hidden; +} + +// Container that the modal scrolls within +.modal { + display: none; + overflow: auto; + overflow-y: scroll; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: @zindex-modal-background; + -webkit-overflow-scrolling: touch; + + // When fading in the modal, animate it to slide down + &.fade { + top: -25%; + .transition(~"opacity 0.3s linear, top 0.3s ease-out"); + } + &.fade.in { top: 0; } +} + +// Shell div to position the modal with bottom padding +.modal-dialog { + position: relative; + top: 0; + left: 0; + right: 0; + width: auto; + padding: 10px; + z-index: (@zindex-modal-background + 10); +} + +// Actual modal +.modal-content { + position: relative; + background-color: #fff; + border: 1px solid #999; + border: 1px solid rgba(0,0,0,.2); + border-radius: 6px; + .box-shadow(0 3px 9px rgba(0,0,0,.5)); + .background-clip(padding-box); + // Remove focus outline from opened modal + outline: none; +} + +// Modal background +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: (@zindex-modal-background - 10); + background-color: #000; + // Fade for backdrop + &.fade { .opacity(0); } + &.fade.in { .opacity(.5); } +} + +// Modal header +// Top section of the modal w/ title and dismiss +.modal-header { + padding: @modal-title-padding; + border-bottom: 1px solid #e5e5e5; + min-height: (@modal-title-padding + @modal-title-line-height); +} +// Close icon +.modal-header .close { + margin-top: -2px; +} + +// Title text within header +.modal-title { + margin: 0; + line-height: @modal-title-line-height; +} + +// Modal body +// Where all modal content resides (sibling of .modal-header and .modal-footer) +.modal-body { + position: relative; + padding: @modal-inner-padding; +} + +// Footer (for actions) +.modal-footer { + margin-top: 15px; + padding: (@modal-inner-padding - 1) @modal-inner-padding @modal-inner-padding; + text-align: right; // right align buttons + border-top: 1px solid #e5e5e5; + .clearfix(); // clear it in case folks use .pull-* classes on buttons + + // Properly space out buttons + .btn + .btn { + margin-left: 5px; + margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs + } + // but override that for button groups + .btn-group .btn + .btn { + margin-left: -1px; + } + // and override it for block buttons as well + .btn-block + .btn-block { + margin-left: 0; + } +} + +// Scale up the modal +@media screen and (min-width: @screen-tablet) { + + .modal-dialog { + left: 50%; + right: auto; + width: 560px; + margin-left: -280px; + padding-top: 30px; + padding-bottom: 30px; + } + .modal-content { + .box-shadow(0 5px 15px rgba(0,0,0,.5)); + } + +} diff --git a/docs/less/bootstrap/navbar.less b/docs/less/bootstrap/navbar.less new file mode 100644 index 0000000..b828360 --- /dev/null +++ b/docs/less/bootstrap/navbar.less @@ -0,0 +1,363 @@ +// +// Navbars +// -------------------------------------------------- + +// Wrapper and base class +.navbar { + position: relative; + margin-bottom: 20px; + padding-left: @navbar-padding; + padding-right: @navbar-padding; + background-color: @navbar-bg; + border-radius: @border-radius-base; + + // Prevent floats from breaking the navbar + .clearfix(); +} + +// Navbar nav links +// ------------------------- + +.navbar-nav { + // Space out from .navbar .brand and .btn-navbar when stacked in mobile views + // and outdent nav links so text lines up with logo. + margin-top: 10px; + margin-bottom: 15px; + + > li > a { + padding-top: ((@navbar-height - @line-height-computed) / 2); + padding-bottom: ((@navbar-height - @line-height-computed) / 2); + color: @navbar-link-color; + line-height: 20px; + border-radius: @border-radius-base; + } + > li > a:hover, + > li > a:focus { + color: @navbar-link-hover-color; + background-color: @navbar-link-hover-bg; + } + > .active > a, + > .active > a:hover, + > .active > a:focus { + color: @navbar-link-active-color; + background-color: @navbar-link-active-bg; + } + > .disabled > a, + > .disabled > a:hover, + > .disabled > a:focus { + color: @navbar-link-disabled-color; + background-color: @navbar-link-disabled-bg; + } + + // Right aligned contents + // Make them full width first so that they align properly on mobile + &.pull-right { + width: 100%; + } +} + + + +// +// Navbar alignment options +// -------------------------------------------------- + +// Static navbar +.navbar-static-top { + border-radius: 0; +} + +// Fix the top/bottom navbars when screen real estate supports it +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: @zindex-navbar-fixed; + border-radius: 0; +} +.navbar-fixed-top { + top: 0; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; // override .navbar defaults +} + + + +// +// Navbar optional components +// -------------------------------------------------- + +// Brand/project name +.navbar-brand { + display: block; + max-width: 200px; + margin-left: auto; + margin-right: auto; + padding: @navbar-padding; + font-size: @font-size-large; + font-weight: 500; + line-height: @line-height-computed; + color: @navbar-brand-color; + text-align: center; + &:hover, + &:focus { + color: @navbar-brand-hover-color; + text-decoration: none; + background-color: @navbar-brand-hover-bg; + } +} + +// Collapsible navbar toggle +.navbar-toggle { + position: absolute; + top: 10px; + right: 10px; + padding: 8px 12px; + background-color: transparent; + border: 1px solid #ddd; + border-radius: 4px; + + &:hover, + &:focus { + background-color: #ddd; + } + + // Bars + .icon-bar { + display: block; + width: 22px; + height: 2px; + background-color: #ccc; + border-radius: 1px; + } + .icon-bar + .icon-bar { + margin-top: 4px; + } +} + +// Navbar form +.navbar-form { + .form-inline(); + .navbar-vertical-align(@input-height-base); // Vertically center in navbar +} + +// Dropdown menus + +// Menu position and menu carets +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +// Menu position and menu caret support for dropups via extra dropup class +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +// Dropdown menu items and carets +.navbar-nav { + // Caret should match text color on hover + > .dropdown > a:hover .caret, + > .dropdown > a:focus .caret { + border-top-color: @navbar-link-hover-color; + border-bottom-color: @navbar-link-hover-color; + } + + // Remove background color from open dropdown + > .open > a, + > .open > a:hover, + > .open > a:focus { + background-color: @navbar-link-active-bg; + color: @navbar-link-active-color; + } + > .dropdown > a .caret { + border-top-color: @navbar-link-color; + border-bottom-color: @navbar-link-color; + } + > .open > a .caret, + > .open > a:hover .caret, + > .open > a:focus .caret { + border-top-color: @navbar-link-active-color; + border-bottom-color: @navbar-link-active-color; + } +} + +// Right aligned menus need alt position +.navbar-nav.pull-right > li > .dropdown-menu, +.navbar-nav > li > .dropdown-menu.pull-right { + left: auto; + right: 0; +} + + + +// Inverse navbar +// -------------------------------------------------- + +.navbar-inverse { + background-color: @navbar-inverse-bg; + + .navbar-brand { + color: @navbar-inverse-brand-color; + &:hover, + &:focus { + color: @navbar-inverse-brand-hover-color; + background-color: @navbar-inverse-brand-hover-bg; + } + } + + .navbar-text { + color: @navbar-inverse-color; + } + + .navbar-nav { + > li > a { + color: @navbar-inverse-link-color; + } + > li > a:hover, + > li > a:focus { + color: @navbar-inverse-link-hover-color; + background-color: @navbar-inverse-link-hover-bg; + } + > .active > a, + > .active > a:hover, + > .active > a:focus { + color: @navbar-inverse-link-active-color; + background-color: @navbar-inverse-link-active-bg; + } + > .disabled > a, + > .disabled > a:hover, + > .disabled > a:focus { + color: @navbar-inverse-link-disabled-color; + background-color: @navbar-inverse-link-disabled-bg; + } + } + + // Darken the responsive nav toggle + .navbar-toggle { + border-color: #333; + &:hover, + &:focus { + background-color: #333; + } + .icon-bar { + background-color: #fff; + } + } + + // Dropdowns + .navbar-nav { + > .open > a, + > .open > a:hover, + > .open > a:focus { + background-color: @navbar-inverse-link-active-bg; + color: @navbar-inverse-link-active-color; + } + > .dropdown > a:hover .caret { + border-top-color: @navbar-inverse-link-hover-color; + border-bottom-color: @navbar-inverse-link-hover-color; + } + > .dropdown > a .caret { + border-top-color: @navbar-inverse-link-color; + border-bottom-color: @navbar-inverse-link-color; + } + > .open > a .caret, + > .open > a:hover .caret, + > .open > a:focus .caret { + border-top-color: @navbar-inverse-link-active-color; + border-bottom-color: @navbar-inverse-link-active-color; + } + + } +} + + + +// Responsive navbar +// -------------------------------------------------- + +@media screen and (min-width: @grid-float-breakpoint) { + + .navbar-brand { + float: left; + margin-left: -(@navbar-padding); + margin-right: 5px; + } + .navbar-nav { + float: left; + // undo margin to make nav extend full height of navbar + margin-top: 0; + margin-bottom: 0; + + > li { + float: left; + > a { + border-radius: 0; + } + } + + &.pull-right { + float: right; + width: auto; + } + } + + // Required to make the collapsing navbar work on regular desktops + .navbar-toggle { + position: relative; + top: auto; + left: auto; + display: none; + } + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } + +} + + + +// Buttons in navbars +// +// Vertically center a button within a navbar (when *not* in a form). + +.navbar-btn { + margin-top: ((@navbar-height - @input-height-base) / 2); +} + + + +// Text in navbars +// +// Add a class to make any element properly align itself vertically within the navbars. + +.navbar-text { + .navbar-vertical-align(@line-height-computed); +} + + + +// Links in navbars +// +// Add a class to ensure links outside the navbar nav are colored correctly. + +// Default navbar variables +.navbar-link { + color: @navbar-link-color; + &:hover { + color: @navbar-link-hover-color; + } +} + +// Use the inverse navbar variables +.navbar-inverse .navbar-link { + color: @navbar-inverse-link-color; + &:hover { + color: @navbar-inverse-link-hover-color; + } +} diff --git a/docs/less/bootstrap/navs.less b/docs/less/bootstrap/navs.less new file mode 100644 index 0000000..e5925bf --- /dev/null +++ b/docs/less/bootstrap/navs.less @@ -0,0 +1,247 @@ +// +// Navs +// -------------------------------------------------- + + +// Base class +// -------------------------------------------------- + +.nav { + margin-left: 0; + margin-bottom: 0; + padding-left: 0; // Override default ul/ol + list-style: none; + .clearfix(); + + > li { + position: relative; + display: block; + + > a { + position: relative; + display: block; + padding: 10px 15px; + &:hover, + &:focus { + text-decoration: none; + background-color: @gray-lighter; + } + } + + // Disabled state sets text to gray and nukes hover/tab effects + &.disabled > a { + color: @gray-light; + } + &.disabled > a:hover, + &.disabled > a:focus { + color: @gray-light; + text-decoration: none; + background-color: transparent; + cursor: default; + } + + // Space the headers out when they follow another list item (link) + + .nav-header { + margin-top: 9px; + } + } + + // Open dropdowns + &.open > a, + &.open > a:hover, + &.open > a:focus { + color: #fff; + background-color: @link-color; + border-color: @link-color; + .caret { + border-top-color: #fff; + border-bottom-color: #fff; + } + } + + // Redeclare pull classes because of specifity + // Todo: consider making these utilities !important to avoid this bullshit + > .pull-right { + float: right; + } + + // Dividers (basically an hr) within the dropdown + .nav-divider { + .nav-divider(); + } +} + + + +// Nav variations +// -------------------------------------------------- + +// Tabs +// ------------------------- + +// Give the tabs something to sit on +.nav-tabs { + border-bottom: 1px solid #ddd; + > li { + float: left; + // Make the list-items overlay the bottom border + margin-bottom: -1px; + + // Actual tabs (as links) + > a { + margin-right: 2px; + line-height: @line-height-base; + border: 1px solid transparent; + border-radius: @border-radius-base @border-radius-base 0 0; + &:hover { + border-color: @gray-lighter @gray-lighter #ddd; + } + } + + // Active state, and it's :hover to override normal :hover + &.active > a, + &.active > a:hover, + &.active > a:focus { + color: @gray; + background-color: @body-bg; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; + } + } + // pulling this in mainly for less shorthand + &.nav-justified { + .nav-justified; + .nav-tabs-justified; + } +} + + +// Pills +// ------------------------- +.nav-pills { + > li { + float: left; + + // Links rendered as pills + > a { + border-radius: 5px; + } + + li { + > a { + margin-left: 2px; + } + } + + // Active state + &.active > a, + &.active > a:hover, + &.active > a:focus { + color: #fff; + background-color: @component-active-bg; + } + } +} + + +// Stacked pills +.nav-stacked { + > li { + float: none; + + li { + > a { + margin-top: 2px; + margin-left: 0; // no need for this gap between nav items + } + } + } +} + +// Justified nav links +// ------------------------- + +.nav-justified { + width: 100%; + > li { + float: none; + display: table-cell; + width: 1%; + > a { + text-align: center; + } + } +} + +// Move borders to anchors instead of bottom of list +.nav-tabs-justified () { + border-bottom: 0; + > li > a { + border-bottom: 1px solid #ddd; + + // Override margin from .nav-tabs + margin-right: 0; + } + > .active > a { + border-bottom-color: @body-bg; + } + +} + + + +// Nav headers (for dropdowns and lists) +// ------------------------- + +.nav-header { + display: block; + padding: 3px 15px; + font-size: @font-size-mini; + font-weight: bold; + line-height: @line-height-base; + color: @gray-light; + text-shadow: 0 1px 0 rgba(255,255,255,.5); + text-transform: uppercase; +} + + + +// Tabbable tabs +// ------------------------- + +// Clear any floats +.tabbable { + .clearfix(); +} + +// Show/hide tabbable areas +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} +.tab-content > .active, +.pill-content > .active { + display: block; +} + + + +// Dropdowns +// ------------------------- + +// Make dropdown carets use link color in navs +.nav .caret { + border-top-color: @link-color; + border-bottom-color: @link-color; +} +.nav a:hover .caret { + border-top-color: @link-hover-color; + border-bottom-color: @link-hover-color; +} + +// Specific dropdowns +.nav-tabs .dropdown-menu { + // make dropdown border overlap tab border + margin-top: -1px; + // Remove the top rounded corners here since there is a hard edge above the menu + .border-top-radius(0); +} diff --git a/docs/less/bootstrap/normalize.less b/docs/less/bootstrap/normalize.less new file mode 100644 index 0000000..a2e9c64 --- /dev/null +++ b/docs/less/bootstrap/normalize.less @@ -0,0 +1,396 @@ +/*! normalize.css v2.1.0 | MIT License | git.io/normalize */ + +// ========================================================================== +// HTML5 display definitions +// ========================================================================== + +// +// Correct `block` display not defined in IE 8/9. +// + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +// +// Correct `inline-block` display not defined in IE 8/9. +// + +audio, +canvas, +video { + display: inline-block; +} + +// +// Prevent modern browsers from displaying `audio` without controls. +// Remove excess height in iOS 5 devices. +// + +audio:not([controls]) { + display: none; + height: 0; +} + +// +// Address styling not present in IE 8/9. +// + +[hidden] { + display: none; +} + +// ========================================================================== +// Base +// ========================================================================== + +// +// 1. Set default font family to sans-serif. +// 2. Prevent iOS text size adjust after orientation change, without disabling +// user zoom. +// + +html { + font-family: sans-serif; // 1 + -webkit-text-size-adjust: 100%; // 2 + -ms-text-size-adjust: 100%; // 2 +} + +// +// Remove default margin. +// + +body { + margin: 0; +} + +// ========================================================================== +// Links +// ========================================================================== + +// +// Address `outline` inconsistency between Chrome and other browsers. +// + +a:focus { + outline: thin dotted; +} + +// +// Improve readability when focused and also mouse hovered in all browsers. +// + +a:active, +a:hover { + outline: 0; +} + +// ========================================================================== +// Typography +// ========================================================================== + +// +// Address variable `h1` font-size and margin within `section` and `article` +// contexts in Firefox 4+, Safari 5, and Chrome. +// + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +// +// Address styling not present in IE 8/9, Safari 5, and Chrome. +// + +abbr[title] { + border-bottom: 1px dotted; +} + +// +// Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. +// + +b, +strong { + font-weight: bold; +} + +// +// Address styling not present in Safari 5 and Chrome. +// + +dfn { + font-style: italic; +} + +// +// Address differences between Firefox and other browsers. +// + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +// +// Address styling not present in IE 8/9. +// + +mark { + background: #ff0; + color: #000; +} + +// +// Correct font family set oddly in Safari 5 and Chrome. +// + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} + +// +// Improve readability of pre-formatted text in all browsers. +// + +pre { + white-space: pre-wrap; +} + +// +// Set consistent quote types. +// + +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} + +// +// Address inconsistent and variable font size in all browsers. +// + +small { + font-size: 80%; +} + +// +// Prevent `sub` and `sup` affecting `line-height` in all browsers. +// + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +// ========================================================================== +// Embedded content +// ========================================================================== + +// +// Remove border when inside `a` element in IE 8/9. +// + +img { + border: 0; +} + +// +// Correct overflow displayed oddly in IE 9. +// + +svg:not(:root) { + overflow: hidden; +} + +// ========================================================================== +// Figures +// ========================================================================== + +// +// Address margin not present in IE 8/9 and Safari 5. +// + +figure { + margin: 0; +} + +// ========================================================================== +// Forms +// ========================================================================== + +// +// Define consistent border, margin, and padding. +// + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +// +// 1. Correct `color` not being inherited in IE 8/9. +// 2. Remove padding so people aren't caught out if they zero out fieldsets. +// + +legend { + border: 0; // 1 + padding: 0; // 2 +} + +// +// 1. Correct font family not being inherited in all browsers. +// 2. Correct font size not being inherited in all browsers. +// 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. +// + +button, +input, +select, +textarea { + font-family: inherit; // 1 + font-size: 100%; // 2 + margin: 0; // 3 +} + +// +// Address Firefox 4+ setting `line-height` on `input` using `!important` in +// the UA stylesheet. +// + +button, +input { + line-height: normal; +} + +// +// Address inconsistent `text-transform` inheritance for `button` and `select`. +// All other form control elements do not inherit `text-transform` values. +// Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. +// Correct `select` style inheritance in Firefox 4+ and Opera. +// + +button, +select { + text-transform: none; +} + +// +// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` +// and `video` controls. +// 2. Correct inability to style clickable `input` types in iOS. +// 3. Improve usability and consistency of cursor style between image-type +// `input` and others. +// + +button, +html input[type="button"], // 1 +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; // 2 + cursor: pointer; // 3 +} + +// +// Re-set default cursor for disabled elements. +// + +button[disabled], +html input[disabled] { + cursor: default; +} + +// +// 1. Address box sizing set to `content-box` in IE 8/9. +// 2. Remove excess padding in IE 8/9. +// + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; // 1 + padding: 0; // 2 +} + +// +// 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. +// 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome +// (include `-moz` to future-proof). +// + +input[type="search"] { + -webkit-appearance: textfield; // 1 + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; // 2 + box-sizing: content-box; +} + +// +// Remove inner padding and search cancel button in Safari 5 and Chrome +// on OS X. +// + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +// +// Remove inner padding and border in Firefox 4+. +// + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +// +// 1. Remove default vertical scrollbar in IE 8/9. +// 2. Improve readability and alignment in all browsers. +// + +textarea { + overflow: auto; // 1 + vertical-align: top; // 2 +} + +// ========================================================================== +// Tables +// ========================================================================== + +// +// Remove most spacing between table cells. +// + +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/docs/less/bootstrap/pager.less b/docs/less/bootstrap/pager.less new file mode 100644 index 0000000..0b2fcf7 --- /dev/null +++ b/docs/less/bootstrap/pager.less @@ -0,0 +1,54 @@ +// +// Pager pagination +// -------------------------------------------------- + + +.pager { + margin: @line-height-computed 0; + list-style: none; + text-align: center; + .clearfix(); + li { + display: inline; + > a, + > span { + display: inline-block; + padding: 5px 14px; + background-color: @pagination-bg; + border: 1px solid @pagination-border; + border-radius: 15px; + } + + > a:hover, + > a:focus { + text-decoration: none; + background-color: @pagination-active-bg; + } + } + + .next { + > a, + > span { + float: right; + } + } + + .previous { + > a, + > span { + float: left; + } + } + + .disabled { + > a, + > a:hover, + > a:focus, + > span { + color: @gray-light; + background-color: @pagination-bg; + cursor: default; + } + } + +} diff --git a/docs/less/bootstrap/pagination.less b/docs/less/bootstrap/pagination.less new file mode 100644 index 0000000..73c063b --- /dev/null +++ b/docs/less/bootstrap/pagination.less @@ -0,0 +1,87 @@ +// +// Pagination (multiple pages) +// -------------------------------------------------- +.pagination { + display: inline-block; + margin: @line-height-computed 0; + border-radius: @border-radius-base; +} +.pagination > li { + display: inline; // Remove list-style and block-level defaults +} +.pagination > li > a, +.pagination > li > span { + float: left; // Collapse white-space + padding: 4px 12px; + line-height: @line-height-base; + text-decoration: none; + background-color: @pagination-bg; + border: 1px solid @pagination-border; + border-left-width: 0; +} +.pagination > li > a:hover, +.pagination > li > a:focus, +.pagination > .active > a, +.pagination > .active > span { + background-color: @pagination-active-bg; +} +.pagination > .active > a, +.pagination > .active > span { + color: @gray-light; + cursor: default; +} +.pagination > .disabled > span, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: @gray-light; + background-color: @pagination-bg; + cursor: default; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + border-left-width: 1px; + .border-left-radius(@border-radius-base); +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + .border-right-radius(@border-radius-base); +} + + +// Sizing +// -------------------------------------------------- + +// Large +.pagination-large { + > li > a, + > li > span { + padding: @padding-large-vertical @padding-large-horizontal; + font-size: @font-size-large; + } + > li:first-child > a, + > li:first-child > span { + .border-left-radius(@border-radius-large); + } + > li:last-child > a, + > li:last-child > span { + .border-right-radius(@border-radius-large); + } +} + +// Small +.pagination-small { + > li > a, + > li > span { + padding: @padding-small-vertical @padding-small-horizontal; + font-size: @font-size-small; + } + > li:first-child > a, + > li:first-child > span { + .border-left-radius(@border-radius-small); + } + > li:last-child > a, + > li:last-child > span { + .border-right-radius(@border-radius-small); + } +} diff --git a/docs/less/bootstrap/panels.less b/docs/less/bootstrap/panels.less new file mode 100644 index 0000000..a08febe --- /dev/null +++ b/docs/less/bootstrap/panels.less @@ -0,0 +1,96 @@ +// +// Panels +// -------------------------------------------------- + + +// Base class +.panel { + padding: 15px; + margin-bottom: 20px; + background-color: @panel-bg; + border: 1px solid @panel-border; + border-radius: @panel-border-radius; + .box-shadow(0 1px 1px rgba(0,0,0,.05)); +} + +// Optional heading +.panel-heading { + margin: -15px -15px 15px; + padding: 10px 15px; + font-size: (@font-size-base * 1.25); + font-weight: 500; + background-color: @panel-heading-bg; + border-bottom: 1px solid @panel-border; + border-top-left-radius: (@panel-border-radius - 1); + border-top-right-radius: (@panel-border-radius - 1); +} + +// Optional footer (stays gray in every modifier class) +.panel-footer { + margin: 15px -15px -15px; + padding: 10px 15px; + background-color: @panel-footer-bg; + border-top: 1px solid @panel-border; + border-bottom-left-radius: (@panel-border-radius - 1); + border-bottom-right-radius: (@panel-border-radius - 1); +} + +// Contextual variations +.panel-primary { + border-color: @panel-primary-border; + .panel-heading { + color: @panel-primary-text; + background-color: @panel-primary-heading-bg; + border-color: @panel-primary-border; + } +} +.panel-success { + border-color: @panel-success-border; + .panel-heading { + color: @panel-success-text; + background-color: @panel-success-heading-bg; + border-color: @panel-success-border; + } +} +.panel-warning { + border-color: @panel-warning-border; + .panel-heading { + color: @panel-warning-text; + background-color: @panel-warning-heading-bg; + border-color: @panel-warning-border; + } +} +.panel-danger { + border-color: @panel-danger-border; + .panel-heading { + color: @panel-danger-text; + background-color: @panel-danger-heading-bg; + border-color: @panel-danger-border; + } +} +.panel-info { + border-color: @panel-info-border; + .panel-heading { + color: @panel-info-text; + background-color: @panel-info-heading-bg; + border-color: @panel-info-border; + } +} + +// List groups in panels +.list-group-flush { + margin: 15px -15px -15px; + + .list-group-item { + border-width: 1px 0; + + // Remove border radius for top one + &:first-child { + .border-top-radius(0); + } + // But keep it for the last one + &:last-child { + border-bottom: 0; + } + } +} diff --git a/docs/less/bootstrap/popovers.less b/docs/less/bootstrap/popovers.less new file mode 100644 index 0000000..bcd30e9 --- /dev/null +++ b/docs/less/bootstrap/popovers.less @@ -0,0 +1,129 @@ +// +// Popovers +// -------------------------------------------------- + + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: @zindex-popover; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; // Reset given new insertion method + background-color: @popover-bg; + -webkit-bg-clip: padding-box; + -moz-bg-clip: padding; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0,0,0,.2); + border-radius: 6px; + .box-shadow(0 5px 10px rgba(0,0,0,.2)); + + // Overrides for proper insertion + white-space: normal; + + // Offset the popover to account for the popover arrow + &.top { margin-top: -10px; } + &.right { margin-left: 10px; } + &.bottom { margin-top: 10px; } + &.left { margin-left: -10px; } +} + +.popover-title { + margin: 0; // reset heading margin + padding: 8px 14px; + font-size: @font-size-base; + font-weight: normal; + line-height: 18px; + background-color: @popover-title-bg; + border-bottom: 1px solid darken(@popover-title-bg, 5%); + border-radius: 5px 5px 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +// Arrows +// +// .arrow is outer, .arrow:after is inner + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover .arrow { + border-width: @popover-arrow-outer-width; +} +.popover .arrow:after { + border-width: @popover-arrow-width; + content: ""; +} + +.popover { + &.top .arrow { + left: 50%; + margin-left: -@popover-arrow-outer-width; + border-bottom-width: 0; + border-top-color: #999; // IE8 fallback + border-top-color: @popover-arrow-outer-color; + bottom: -@popover-arrow-outer-width; + &:after { + bottom: 1px; + margin-left: -@popover-arrow-width; + border-bottom-width: 0; + border-top-color: @popover-arrow-color; + } + } + &.right .arrow { + top: 50%; + left: -@popover-arrow-outer-width; + margin-top: -@popover-arrow-outer-width; + border-left-width: 0; + border-right-color: #999; // IE8 fallback + border-right-color: @popover-arrow-outer-color; + &:after { + left: 1px; + bottom: -@popover-arrow-width; + border-left-width: 0; + border-right-color: @popover-arrow-color; + } + } + &.bottom .arrow { + left: 50%; + margin-left: -@popover-arrow-outer-width; + border-top-width: 0; + border-bottom-color: #999; // IE8 fallback + border-bottom-color: @popover-arrow-outer-color; + top: -@popover-arrow-outer-width; + &:after { + top: 1px; + margin-left: -@popover-arrow-width; + border-top-width: 0; + border-bottom-color: @popover-arrow-color; + } + } + + &.left .arrow { + top: 50%; + right: -@popover-arrow-outer-width; + margin-top: -@popover-arrow-outer-width; + border-right-width: 0; + border-left-color: #999; // IE8 fallback + border-left-color: @popover-arrow-outer-color; + &:after { + right: 1px; + border-right-width: 0; + border-left-color: @popover-arrow-color; + bottom: -@popover-arrow-width; + } + } + +} diff --git a/docs/less/bootstrap/print.less b/docs/less/bootstrap/print.less new file mode 100644 index 0000000..64c1ff9 --- /dev/null +++ b/docs/less/bootstrap/print.less @@ -0,0 +1,85 @@ +// +// Basic print styles +// -------------------------------------------------- +// Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css + +@media print { + + * { + text-shadow: none !important; + color: #000 !important; // Black prints faster: h5bp.com/s + background: transparent !important; + box-shadow: none !important; + } + + a, + a:visited { + text-decoration: underline; + } + + a[href]:after { + content: " (" attr(href) ")"; + } + + abbr[title]:after { + content: " (" attr(title) ")"; + } + + // Don't show links for images, or javascript/internal links + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + + thead { + display: table-header-group; // h5bp.com/t + } + + tr, + img { + page-break-inside: avoid; + } + + img { + max-width: 100% !important; + } + + @page { + margin: 2cm .5cm; + } + + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + + h2, + h3 { + page-break-after: avoid; + } + + // Bootstrap components + .navbar { + display: none; + } + .table td, + .table th { + background-color: #fff !important; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } +} diff --git a/docs/less/bootstrap/progress-bars.less b/docs/less/bootstrap/progress-bars.less new file mode 100644 index 0000000..e963fa9 --- /dev/null +++ b/docs/less/bootstrap/progress-bars.less @@ -0,0 +1,118 @@ +// +// Progress bars +// -------------------------------------------------- + + +// Bar animations +// ------------------------- + +// Webkit +@-webkit-keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + +// Firefox +@-moz-keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + +// IE9 +@-ms-keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + +// Opera +@-o-keyframes progress-bar-stripes { + from { background-position: 0 0; } + to { background-position: 40px 0; } +} + +// Spec +@keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + + + +// Bar itself +// ------------------------- + +// Outer container +.progress { + overflow: hidden; + height: @line-height-computed; + margin-bottom: @line-height-computed; + background-color: @progress-bg; + border-radius: @border-radius-base; + .box-shadow(inset 0 1px 2px rgba(0,0,0,.1)); +} + +// Bar of progress +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: @font-size-small; + color: #fff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0,0,0,.25); + background-color: @progress-bar-bg; + .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); + .transition(width .6s ease); +} + +// Striped bars +.progress-striped .progress-bar { + #gradient > .striped(@progress-bar-bg); + .background-size(40px 40px); +} + +// Call animation for the active one +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + + + +// Variations +// ------------------------- + +// Danger (red) +.progress-bar-danger { + background-color: @progress-bar-danger-bg; + .progress-striped & { + #gradient > .striped(@progress-bar-danger-bg); + } +} + +// Success (green) +.progress-bar-success { + background-color: @progress-bar-success-bg; + .progress-striped & { + #gradient > .striped(@progress-bar-success-bg); + } +} + +// Warning (orange) +.progress-bar-warning { + background-color: @progress-bar-warning-bg; + .progress-striped & { + #gradient > .striped(@progress-bar-warning-bg); + } +} + +// Info (teal) +.progress-bar-info { + background-color: @progress-bar-info-bg; + .progress-striped & { + #gradient > .striped(@progress-bar-info-bg); + } +} diff --git a/docs/less/bootstrap/responsive-utilities.less b/docs/less/bootstrap/responsive-utilities.less new file mode 100644 index 0000000..082109e --- /dev/null +++ b/docs/less/bootstrap/responsive-utilities.less @@ -0,0 +1,127 @@ +// +// Responsive: Utility classes +// -------------------------------------------------- + + +// IE10 Metro responsive +// Required for Windows 8 Metro split-screen snapping with IE10 +// +// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/ +@-ms-viewport{ + width: device-width; +} + +// IE10 on Windows Phone 8 +// IE10 on WP8 doesn't report CSS pixels, but actual device pixels. In +// other words, say on a Lumia, you'll get 768px as the device width, +// meaning users will see the tablet styles and not phone styles. +// +// Alternatively you can override this with JS (see source below), but +// we won't be doing that here given our limited scope. +// +// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/ +@media screen and (max-width: 400px) { + @-ms-viewport{ + width: 320px; + } +} + +// Hide from screenreaders and browsers +// Credit: HTML5 Boilerplate +.hidden { + display: none; + visibility: hidden; +} + +// Visibility utilities + +// For Phones +.visible-sm { + display: block !important; + tr& { display: table-row !important; } + th&, + td& { display: table-cell !important; } +} +.visible-md { display: none !important; } +.visible-lg { display: none !important; } + +.hidden-sm { display: none !important; } +.hidden-md { + display: block !important; + tr& { display: table-row !important; } + th&, + td& { display: table-cell !important; } +} +.hidden-lg { + display: block !important; + tr& { display: table-row !important; } + th&, + td& { display: table-cell !important; } +} + + +// Tablets & small desktops only +@media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) { + .visible-sm { display: none !important; } + .visible-md { + display: block !important; + tr& { display: table-row !important; } + th&, + td& { display: table-cell !important; } + } + .visible-lg { display: none !important; } + + .hidden-sm { + display: block !important; + tr& { display: table-row !important; } + th&, + td& { display: table-cell !important; } + } + .hidden-md { display: none !important; } + .hidden-lg { + display: block !important; + tr& { display: table-row !important; } + th&, + td& { display: table-cell !important; } + } +} + +// For desktops +@media (min-width: @screen-desktop) { + .visible-sm { display: none !important; } + .visible-md { display: none !important; } + .visible-lg { + display: block !important; + tr& { display: table-row !important; } + th&, + td& { display: table-cell !important; } + } + + .hidden-sm { + display: block !important; + tr& { display: table-row !important; } + th&, + td& { display: table-cell !important; } + } + .hidden-md { + display: block !important; + tr& { display: table-row !important; } + th&, + td& { display: table-cell !important; } + } + .hidden-lg { display: none !important; } +} + +// Print utilities +.visible-print { display: none !important; } +.hidden-print { } + +@media print { + .visible-print { + display: block !important; + tr& { display: table-row !important; } + th&, + td& { display: table-cell !important; } + } + .hidden-print { display: none !important; } +} diff --git a/docs/less/bootstrap/scaffolding.less b/docs/less/bootstrap/scaffolding.less new file mode 100644 index 0000000..9f57397 --- /dev/null +++ b/docs/less/bootstrap/scaffolding.less @@ -0,0 +1,81 @@ +// +// Scaffolding +// -------------------------------------------------- + + +// Reset the box-sizing +// ------------------------- + +* { + .box-sizing(border-box); +} + + +// Body reset +// ------------------------- + +html { + font-size: 62.5%; + -webkit-tap-highlight-color: rgba(0,0,0,0); +} + +body { + font-family: @font-family-base; + font-size: @font-size-base; + line-height: @line-height-base; + color: @text-color; + background-color: @body-bg; +} + +// Reset fonts for revelant elements +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + + +// Links +// ------------------------- + +a { + color: @link-color; + text-decoration: none; +} +a:hover, +a:focus { + color: @link-hover-color; + text-decoration: underline; +} +a:focus { + .tab-focus(); +} + + +// Images +// ------------------------- + +img { + // Responsive images (ensure images don't scale beyond their parents) + max-width: 100%; // Part 1: Set a maxium relative to the parent + height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching + + // Match vertical alignment with other comment elements + vertical-align: middle; +} + +// Rounded corners +.img-rounded { + border-radius: 6px; +} + +// Image thumbnails +// See thumbnails.less for `.img-thumbnail` + +// Perfect circle +.img-circle { + border-radius: 500px; // crank the border-radius so it works with most reasonably sized images +} diff --git a/docs/less/bootstrap/tables.less b/docs/less/bootstrap/tables.less new file mode 100644 index 0000000..88481a9 --- /dev/null +++ b/docs/less/bootstrap/tables.less @@ -0,0 +1,244 @@ +// +// Tables +// -------------------------------------------------- + + +table { + max-width: 100%; + background-color: @table-bg; +} +th { + text-align: left; +} + + +// BASELINE STYLES +// --------------- + +.table { + width: 100%; + margin-bottom: @line-height-computed; + // Cells + thead > tr > th, + tbody > tr > th, + thead > tr > td, + tbody > tr > td { + padding: 8px; + line-height: @line-height-base; + vertical-align: top; + border-top: 1px solid @table-border-color; + } + // Bottom align for column headings + thead > tr > th { + vertical-align: bottom; + } + // Remove top border from thead by default + caption + thead tr:first-child th, + caption + thead tr:first-child td, + colgroup + thead tr:first-child th, + colgroup + thead tr:first-child td, + thead:first-child tr:first-child th, + thead:first-child tr:first-child td { + border-top: 0; + } + // Account for multiple tbody instances + tbody + tbody { + border-top: 2px solid @table-border-color; + } + + // Nesting + .table { + background-color: @body-bg; + } +} + + + +// CONDENSED TABLE W/ HALF PADDING +// ------------------------------- + +.table-condensed { + thead > tr > th, + tbody > tr > th, + thead > tr > td, + tbody > tr > td { + padding: 4px 5px; + } +} + + + +// BORDERED VERSION +// ---------------- + +.table-bordered { + border: 1px solid @table-border-color; + border-collapse: separate; // Done so we can round those corners! + border-left: 0; + border-radius: @border-radius-base; + + > thead > tr > th, + > tbody > tr > th, + > thead > tr > td, + > tbody > tr > td { + border-left: 1px solid @table-border-color; + } + // Prevent a double border + > caption + thead > tr:first-child th, + > caption + tbody > tr:first-child th, + > caption + tbody > tr:first-child td, + > colgroup + thead > tr:first-child th, + > colgroup + tbody > tr:first-child th, + > colgroup + tbody > tr:first-child td, + > thead:first-child > tr:first-child th, + > tbody:first-child > tr:first-child th, + > tbody:first-child > tr:first-child td { + border-top: 0; + } + // For first th/td in the first row in the first thead or tbody + > thead:first-child > tr:first-child > th:first-child, + > tbody:first-child > tr:first-child > td:first-child, + > tbody:first-child > tr:first-child > th:first-child { + border-top-left-radius: @border-radius-base; + } + // For last th/td in the first row in the first thead or tbody + > thead:first-child > tr:first-child > th:last-child, + > tbody:first-child > tr:first-child > td:last-child, + > tbody:first-child > tr:first-child > th:last-child { + border-top-right-radius: @border-radius-base; + } + // For first th/td (can be either) in the last row in the last thead, tbody, and tfoot + > thead:last-child > tr:last-child > th:first-child, + > tbody:last-child > tr:last-child > td:first-child, + > tbody:last-child > tr:last-child > th:first-child, + > tfoot:last-child > tr:last-child > td:first-child, + > tfoot:last-child > tr:last-child > th:first-child { + border-bottom-left-radius: @border-radius-base; + } + // For last th/td (can be either) in the last row in the last thead, tbody, and tfoot + > thead:last-child > tr:last-child > th:last-child, + > tbody:last-child > tr:last-child > td:last-child, + > tbody:last-child > tr:last-child > th:last-child, + > tfoot:last-child > tr:last-child > td:last-child, + > tfoot:last-child > tr:last-child > th:last-child { + border-bottom-right-radius: @border-radius-base; + } + + // Clear border-radius for first and last td in the last row in the last tbody for table with tfoot + > tfoot + tbody:last-child > tr:last-child > td:first-child { + border-bottom-left-radius: 0; + } + > tfoot + tbody:last-child > tr:last-child > td:last-child { + border-bottom-right-radius: 0; + } + + // Special fixes to round the left border on the first td/th + > caption + thead > tr:first-child > th:first-child, + > caption + tbody > tr:first-child > td:first-child, + > colgroup + thead > tr:first-child > th:first-child, + > colgroup + tbody > tr:first-child > td:first-child { + border-top-left-radius: @border-radius-base; + } + > caption + thead > tr:first-child > th:last-child, + > caption + tbody > tr:first-child > td:last-child, + > colgroup + thead > tr:first-child > th:last-child, + > colgroup + tbody > tr:first-child > td:last-child { + border-top-right-radius: @border-radius-base; + } + +} + + + +// ZEBRA-STRIPING +// -------------- + +// Default zebra-stripe styles (alternating gray and transparent backgrounds) +.table-striped { + > tbody { + > tr:nth-child(odd) > td, + > tr:nth-child(odd) > th { + background-color: @table-bg-accent; + } + } +} + + + +// HOVER EFFECT +// ------------ + +// Placed here since it has to come after the potential zebra striping +.table-hover { + > tbody { + > tr:hover > td, + > tr:hover > th { + background-color: @table-bg-hover; + } + } +} + + + +// TABLE CELL SIZING +// ----------------- + +// Reset default table behavior +table col[class^="col-"] { + float: none; + display: table-column; +} +table td[class^="col-"], +table th[class^="col-"] { + float: none; + display: table-cell; +} + + + +// TABLE BACKGROUNDS +// ----------------- +// Exact selectors below required to override .table-striped + +.table > tbody > tr { + > td.success, + > th.success, + &.success > td { + background-color: @state-success-bg; + border-color: @state-success-border; + } + > td.danger, + > th.danger, + &.danger > td { + background-color: @state-danger-bg; + border-color: @state-danger-border; + } + > td.warning, + > th.warning, + &.warning > td { + background-color: @state-warning-bg; + border-color: @state-warning-border; + } +} + +// Hover states for .table-hover +.table-hover > tbody > tr { + > td.success:hover, + > th.success:hover, + &.success:hover > td { + background-color: darken(@state-success-bg, 5%); + border-color: darken(@state-success-border, 5%); + } + > td.danger:hover, + > th.danger:hover, + &.danger:hover > td { + background-color: darken(@state-danger-bg, 5%); + border-color: darken(@state-danger-border, 5%); + } + > td.warning:hover, + > th.warning:hover, + &.warning:hover > td { + background-color: darken(@state-warning-bg, 5%); + border-color: darken(@state-warning-border, 5%); + } +} diff --git a/docs/less/bootstrap/thumbnails.less b/docs/less/bootstrap/thumbnails.less new file mode 100644 index 0000000..f31d786 --- /dev/null +++ b/docs/less/bootstrap/thumbnails.less @@ -0,0 +1,43 @@ +// +// Thumbnails +// -------------------------------------------------- + + +// Base classes +// For thumbnail block-level composite components and simple image styles + +// The actual thumbnailed element +// Can be `a`, `div`, or `img` +.thumbnail, +.img-thumbnail { + padding: 4px; + line-height: @line-height-base; + background-color: @thumbnail-bg; + border: 1px solid @thumbnail-border; + border-radius: @thumbnail-border-radius; + .transition(all .2s ease-in-out); +} +.thumbnail { + display: block; +} +.img-thumbnail { + display: inline-block; +} + +// Add a hover state for linked versions only +a.thumbnail:hover, +a.thumbnail:focus { + border-color: @link-color; +} + +// Images and captions +.thumbnail > img { + display: block; + max-width: 100%; + margin-left: auto; + margin-right: auto; +} +.thumbnail .caption { + padding: 9px; + color: @thumbnail-caption-color; +} diff --git a/docs/less/bootstrap/tooltip.less b/docs/less/bootstrap/tooltip.less new file mode 100644 index 0000000..9dba6f0 --- /dev/null +++ b/docs/less/bootstrap/tooltip.less @@ -0,0 +1,71 @@ +// +// Tooltips +// -------------------------------------------------- + + +// Base class +.tooltip { + position: absolute; + z-index: @zindex-tooltip; + display: block; + visibility: visible; + font-size: @font-size-mini; + line-height: 1.4; + .opacity(0); + + &.in { .opacity(1); } + &.top { margin-top: -3px; padding: 5px 0; } + &.right { margin-left: 3px; padding: 0 5px; } + &.bottom { margin-top: 3px; padding: 5px 0; } + &.left { margin-left: -3px; padding: 0 5px; } +} + +// Wrapper for the tooltip content +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: @tooltip-color; + text-align: center; + text-decoration: none; + background-color: @tooltip-bg; + border-radius: @border-radius-base; +} + +// Arrows +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip { + &.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -@tooltip-arrow-width; + border-width: @tooltip-arrow-width @tooltip-arrow-width 0; + border-top-color: @tooltip-arrow-color; + } + &.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -@tooltip-arrow-width; + border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0; + border-right-color: @tooltip-arrow-color; + } + &.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -@tooltip-arrow-width; + border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width; + border-left-color: @tooltip-arrow-color; + } + &.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -@tooltip-arrow-width; + border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; + border-bottom-color: @tooltip-arrow-color; + } +} diff --git a/docs/less/bootstrap/type.less b/docs/less/bootstrap/type.less new file mode 100644 index 0000000..9892d55 --- /dev/null +++ b/docs/less/bootstrap/type.less @@ -0,0 +1,246 @@ +// +// Typography +// -------------------------------------------------- + + +// Body text +// ------------------------- + +p { + margin: 0 0 (@line-height-computed / 2); +} +.lead { + margin-bottom: @line-height-computed; + font-size: (@font-size-base * 1.5); + font-weight: 200; + line-height: 1.4; +} + + +// Emphasis & misc +// ------------------------- + +// Ex: 14px base font * 85% = about 12px +small { font-size: 85%; } + +cite { font-style: normal; } + +// Utility classes +.text-muted { color: @gray-light; } +a.text-muted:hover, +a.text-muted:focus { color: darken(@gray-light, 10%); } + +.text-warning { color: @state-warning-text; } +a.text-warning:hover, +a.text-warning:focus { color: darken(@state-warning-text, 10%); } + +.text-danger { color: @state-danger-text; } +a.text-danger:hover, +a.text-danger:focus { color: darken(@state-danger-text, 10%); } + +.text-success { color: @state-success-text; } +a.text-success:hover, +a.text-success:focus { color: darken(@state-success-text, 10%); } + +.text-left { text-align: left; } +.text-right { text-align: right; } +.text-center { text-align: center; } + + +// Headings +// ------------------------- + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + font-family: @headings-font-family; + font-weight: @headings-font-weight; + line-height: @headings-line-height; + small { + font-weight: normal; + line-height: 1; + color: @gray-light; + } +} + +h1, +h2, +h3 { + margin-top: @line-height-computed; + margin-bottom: (@line-height-computed / 2); +} +h4, +h5, +h6 { + margin-top: (@line-height-computed / 2); + margin-bottom: (@line-height-computed / 2); +} + +h1, .h1 { font-size: ceil(@font-size-base * 2.70); } // ~38px +h2, .h2 { font-size: ceil(@font-size-base * 2.25); } // ~32px +h3, .h3 { font-size: ceil(@font-size-base * 1.70); } // ~24px +h4, .h4 { font-size: ceil(@font-size-base * 1.25); } // ~18px +h5, .h5 { font-size: @font-size-base; } +h6, .h6 { font-size: ceil(@font-size-base * 0.85); } // ~12px + +h1 small, .h1 small { font-size: ceil(@font-size-base * 1.70); } // ~24px +h2 small, .h2 small { font-size: ceil(@font-size-base * 1.25); } // ~18px +h3 small, .h3 small, +h4 small, .h4 small { font-size: @font-size-base; } + + +// Page header +// ------------------------- + +.page-header { + padding-bottom: ((@line-height-computed / 2) - 1); + margin: (@line-height-computed * 2) 0 @line-height-computed; + border-bottom: 1px solid @gray-lighter; +} + + + +// Lists +// -------------------------------------------------- + +// Unordered and Ordered lists +ul, +ol { + margin-top: 0; + margin-bottom: (@line-height-computed / 2); +} +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +// List options + +// Unstyled keeps list items block level, just removes default browser padding and list-style +.list-unstyled { + padding-left: 0; + list-style: none; +} +// Inline turns list items into inline-block +.list-inline { + .list-unstyled(); + > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; + } +} + +// Description Lists +dl { + margin-bottom: @line-height-computed; +} +dt, +dd { + line-height: @line-height-base; +} +dt { + font-weight: bold; +} +dd { + margin-left: (@line-height-computed / 2); +} +// Horizontal layout (like forms) +.dl-horizontal { + dt { + float: left; + width: (@component-offset-horizontal - 20); + clear: left; + text-align: right; + .text-overflow(); + } + dd { + .clearfix(); // Clear the floated `dt` if an empty `dd` is present + margin-left: @component-offset-horizontal; + } +} + +// MISC +// ---- + +// Horizontal rules +hr { + margin: @line-height-computed 0; + border: 0; + border-top: 1px solid @hr-border; + border-bottom: 1px solid #fff; + border-bottom: 1px solid rgba(255,255,255,.5); +} + +// Abbreviations and acronyms +abbr[title], +// Added data-* attribute to help out our tooltip plugin, per https://github.com/twitter/bootstrap/issues/5257 +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted @gray-light; +} +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +// Blockquotes +blockquote { + padding: (@line-height-computed / 2) @line-height-computed; + margin: 0 0 @line-height-computed; + border-left: 5px solid @gray-lighter; + p { + font-size: (@font-size-base * 1.25); + font-weight: 300; + line-height: 1.25; + } + p:last-child { + margin-bottom: 0; + } + small { + display: block; + line-height: @line-height-base; + color: @gray-light; + &:before { + content: '\2014 \00A0'; + } + } + + // Float right with text-align: right + &.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid @gray-lighter; + border-left: 0; + p, + small { + text-align: right; + } + small { + &:before { + content: ''; + } + &:after { + content: '\00A0 \2014'; + } + } + } +} + +// Quotes +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +// Addresses +address { + display: block; + margin-bottom: @line-height-computed; + font-style: normal; + line-height: @line-height-base; +} diff --git a/docs/less/bootstrap/utilities.less b/docs/less/bootstrap/utilities.less new file mode 100644 index 0000000..d296b32 --- /dev/null +++ b/docs/less/bootstrap/utilities.less @@ -0,0 +1,42 @@ +// +// Utility classes +// -------------------------------------------------- + + +// Floats +// ------------------------- + +.clearfix { + .clearfix(); +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} + + +// Toggling content +// ------------------------- + +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + .hide-text(); +} + + +// For Affix plugin +// ------------------------- + +.affix { + position: fixed; +} diff --git a/docs/less/bootstrap/variables.less b/docs/less/bootstrap/variables.less new file mode 100644 index 0000000..4fd0d49 --- /dev/null +++ b/docs/less/bootstrap/variables.less @@ -0,0 +1,429 @@ +// +// Variables +// -------------------------------------------------- + + +// Global values +// -------------------------------------------------- + + +// Grays +// ------------------------- + +@gray-darker: lighten(#000, 13.5%); // #222 +@gray-dark: lighten(#000, 20%); // #333 +@gray: lighten(#000, 33.5%); // #555 +@gray-light: lighten(#000, 60%); // #999 +@gray-lighter: lighten(#000, 93.5%); // #eee + +// Brand colors +// ------------------------- + +@brand-primary: #428bca; +@brand-success: #5cb85c; +@brand-warning: #f0ad4e; +@brand-danger: #d9534f; +@brand-info: #5bc0de; + +// Scaffolding +// ------------------------- + +@body-bg: #fff; +@text-color: @gray-dark; + +// Links +// ------------------------- + +@link-color: @brand-primary; +@link-hover-color: darken(@link-color, 15%); + +// Typography +// ------------------------- + +@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif; +@font-family-serif: Georgia, "Times New Roman", Times, serif; +@font-family-monospace: Monaco, Menlo, Consolas, "Courier New", monospace; +@font-family-base: @font-family-sans-serif; + +@font-size-base: 14px; +@font-size-large: ceil(@font-size-base * 1.25); // ~18px +@font-size-small: ceil(@font-size-base * 0.85); // ~12px +@font-size-mini: ceil(@font-size-base * 0.75); // ~11px + +@line-height-base: 1.428571429; // 20/14 +@line-height-computed: floor(@font-size-base * @line-height-base); // ~20px + +@headings-font-family: @font-family-base; +@headings-font-weight: 500; +@headings-line-height: 1.1; + + +// Components +// ------------------------- +// Based on 14px font-size and 1.428 line-height (~20px to start) + +@padding-base-vertical: 8px; +@padding-base-horizontal: 12px; + +@padding-large-vertical: 14px; +@padding-large-horizontal: 16px; + +@padding-small-vertical: 5px; +@padding-small-horizontal: 10px; + +@border-radius-base: 4px; +@border-radius-large: 6px; +@border-radius-small: 3px; + +@component-active-bg: @brand-primary; + + +// Tables +// ------------------------- + +@table-bg: transparent; // overall background-color +@table-bg-accent: #f9f9f9; // for striping +@table-bg-hover: #f5f5f5; // for hover + +@table-border-color: #ddd; // table and cell border + + +// Buttons +// ------------------------- + +@btn-default-color: #fff; +@btn-default-bg: #474949; +@btn-default-border: @btn-default-bg; + +@btn-primary-color: @btn-default-color; +@btn-primary-bg: @brand-primary; +@btn-primary-border: @btn-primary-bg; + +@btn-success-color: @btn-default-color; +@btn-success-bg: @brand-success; +@btn-success-border: @btn-success-bg; + +@btn-warning-color: @btn-default-color; +@btn-warning-bg: @brand-warning; +@btn-warning-border: @btn-warning-bg; + +@btn-danger-color: @btn-default-color; +@btn-danger-bg: @brand-danger; +@btn-danger-border: @btn-danger-bg; + +@btn-info-color: @btn-default-color; +@btn-info-bg: @brand-info; +@btn-info-border: @btn-info-bg; + + + +// Forms +// ------------------------- + +@input-bg: #fff; +@input-bg-disabled: @gray-lighter; + +@input-border: #ccc; +@input-border-radius: @border-radius-base; + +@input-color-placeholder: @gray-light; + +@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2); +@input-height-large: (ceil(@font-size-large * @line-height-base) + (@padding-large-vertical * 2) + 2); +@input-height-small: (ceil(@font-size-small * @line-height-base) + (@padding-small-vertical * 2) + 2); + + +// Dropdowns +// ------------------------- + +@dropdown-bg: #fff; +@dropdown-border: rgba(0,0,0,.15); +@dropdown-divider-top: #e5e5e5; +@dropdown-divider-bottom: #fff; + +@dropdown-link-active-color: #fff; +@dropdown-link-active-bg: @component-active-bg; + +@dropdown-link-color: @gray-dark; +@dropdown-link-hover-color: #fff; +@dropdown-link-hover-bg: @dropdown-link-active-bg; + + +// COMPONENT VARIABLES +// -------------------------------------------------- + + +// Z-index master list +// ------------------------- +// Used for a bird's eye view of components dependent on the z-axis +// Try to avoid customizing these :) + +@zindex-dropdown: 1000; +@zindex-popover: 1010; +@zindex-tooltip: 1030; +@zindex-navbar-fixed: 1030; +@zindex-modal-background: 1040; +@zindex-modal: 1050; + + +// Glyphicons font path +// ------------------------- +@glyphicons-font-path: "../fonts"; + + +// Navbar +// ------------------------- + +// Basics of a navbar +@navbar-height: 50px; +@navbar-color: #777; +@navbar-bg: #eee; +@navbar-padding: floor(@grid-gutter-width / 2); // ~15px + +// Navbar links +@navbar-link-color: #777; +@navbar-link-hover-color: #333; +@navbar-link-hover-bg: transparent; +@navbar-link-active-color: #555; +@navbar-link-active-bg: darken(@navbar-bg, 10%); +@navbar-link-disabled-color: #ccc; +@navbar-link-disabled-bg: transparent; + +// Navbar brand label +@navbar-brand-color: @navbar-link-color; +@navbar-brand-hover-color: darken(@navbar-link-color, 10%); +@navbar-brand-hover-bg: transparent; + +// Inverted navbar +@navbar-inverse-color: @gray-light; +@navbar-inverse-bg: #222; + +// Inverted navbar links +@navbar-inverse-link-color: @gray-light; +@navbar-inverse-link-hover-color: #fff; +@navbar-inverse-link-hover-bg: transparent; +@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color; +@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%); +@navbar-inverse-link-disabled-color: #444; +@navbar-inverse-link-disabled-bg: transparent; + +// Inverted navbar brand label +@navbar-inverse-brand-color: @navbar-inverse-link-color; +@navbar-inverse-brand-hover-color: #fff; +@navbar-inverse-brand-hover-bg: transparent; + +// Inverted navbar search +// Normal navbar needs no special styles or vars +@navbar-inverse-search-bg: lighten(@navbar-inverse-bg, 25%); +@navbar-inverse-search-bg-focus: #fff; +@navbar-inverse-search-border: @navbar-inverse-bg; +@navbar-inverse-search-placeholder-color: #ccc; + + +// Pagination +// ------------------------- + +@pagination-bg: #fff; +@pagination-border: #ddd; +@pagination-active-bg: #f5f5f5; + + +// Jumbotron +// ------------------------- + +@jumbotron-bg: @gray-lighter; +@jumbotron-heading-color: inherit; +@jumbotron-lead-color: inherit; + + +// Form states and alerts +// ------------------------- + +@state-warning-text: #c09853; +@state-warning-bg: #fcf8e3; +@state-warning-border: darken(spin(@state-warning-bg, -10), 3%); + +@state-danger-text: #b94a48; +@state-danger-bg: #f2dede; +@state-danger-border: darken(spin(@state-danger-bg, -10), 3%); + +@state-success-text: #468847; +@state-success-bg: #dff0d8; +@state-success-border: darken(spin(@state-success-bg, -10), 5%); + +@state-info-text: #3a87ad; +@state-info-bg: #d9edf7; +@state-info-border: darken(spin(@state-info-bg, -10), 7%); + + +// Tooltips and popovers +// ------------------------- +@tooltip-color: #fff; +@tooltip-bg: rgba(0,0,0,.9); +@tooltip-arrow-width: 5px; +@tooltip-arrow-color: @tooltip-bg; + +@popover-bg: #fff; +@popover-arrow-width: 10px; +@popover-arrow-color: #fff; +@popover-title-bg: darken(@popover-bg, 3%); + +// Special enhancement for popovers +@popover-arrow-outer-width: (@popover-arrow-width + 1); +@popover-arrow-outer-color: rgba(0,0,0,.25); + + +// Labels +// ------------------------- +@label-success-bg: @brand-success; +@label-info-bg: @brand-info; +@label-warning-bg: @brand-warning; +@label-danger-bg: @brand-danger; + + +// Modals +// ------------------------- +@modal-inner-padding: 20px; + +@modal-title-padding: 15px; +@modal-title-line-height: @line-height-base; + +// Alerts +// ------------------------- +@alert-bg: @state-warning-bg; +@alert-text: @state-warning-text; +@alert-border: @state-warning-border; +@alert-border-radius: @border-radius-base; + +@alert-success-bg: @state-success-bg; +@alert-success-text: @state-success-text; +@alert-success-border: @state-success-border; + +@alert-danger-bg: @state-danger-bg; +@alert-danger-text: @state-danger-text; +@alert-danger-border: @state-danger-border; + +@alert-info-bg: @state-info-bg; +@alert-info-text: @state-info-text; +@alert-info-border: @state-info-border; + + +// Progress bars +// ------------------------- +@progress-bg: #f5f5f5; +@progress-bar-bg: @brand-primary; +@progress-bar-success-bg: @brand-success; +@progress-bar-warning-bg: @brand-warning; +@progress-bar-danger-bg: @brand-danger; +@progress-bar-info-bg: @brand-info; + + +// List group +// ------------------------- +@list-group-bg: #fff; +@list-group-border: #ddd; +@list-group-border-radius: @border-radius-base; + +@list-group-hover-bg: #f5f5f5; +@list-group-active-color: #fff; +@list-group-active-bg: @component-active-bg; +@list-group-active-border: @list-group-active-bg; + +// Panels +// ------------------------- +@panel-bg: #fff; +@panel-border: #ddd; +@panel-border-radius: @border-radius-base; +@panel-heading-bg: #f5f5f5; +@panel-footer-bg: #f5f5f5; + +@panel-primary-text: #fff; +@panel-primary-border: @brand-primary; +@panel-primary-heading-bg: @brand-primary; + +@panel-success-text: @state-success-text; +@panel-success-border: @state-success-border; +@panel-success-heading-bg: @state-success-bg; + +@panel-warning-text: @state-warning-text; +@panel-warning-border: @state-warning-border; +@panel-warning-heading-bg: @state-warning-bg; + +@panel-danger-text: @state-danger-text; +@panel-danger-border: @state-danger-border; +@panel-danger-heading-bg: @state-danger-bg; + +@panel-info-text: @state-info-text; +@panel-info-border: @state-info-border; +@panel-info-heading-bg: @state-info-bg; + + +// Thumbnails +// ------------------------- +@thumbnail-caption-color: @text-color; +@thumbnail-bg: @body-bg; +@thumbnail-border: #ddd; +@thumbnail-border-radius: @border-radius-base; + + +// Wells +// ------------------------- +@well-bg: #f5f5f5; + + +// Miscellaneous +// ------------------------- + +// Hr border color +@hr-border: @gray-lighter; + +// Horizontal forms & lists +@component-offset-horizontal: 180px; + + +// Media queries breakpoints +// -------------------------------------------------- + +// Tiny screen / phone +@screen-tiny: 480px; +@screen-phone: @screen-tiny; + +// Small screen / tablet +@screen-small: 768px; +@screen-tablet: @screen-small; + +// Medium screen / desktop +@screen-medium: 992px; +@screen-desktop: @screen-medium; + +// So media queries don't overlap when required, provide a maximum +@screen-small-max: (@screen-medium - 1); +@screen-tablet-max: @screen-small-max; + +// Large screen / wide desktop +@screen-large: 1200px; +@screen-large-desktop: @screen-large; + + +// Container sizes +// -------------------------------------------------- + +// Small screen / tablet +@container-tablet: 728px; + +// Medium screen / desktop +@container-desktop: 940px; + +// Large screen / wide desktop +@container-large-desktop: 1170px; + + +// Grid system +// -------------------------------------------------- + +// Number of columns in the grid system +@grid-columns: 12; +// Padding, to be divided by two and applied to the left and right of all columns +@grid-gutter-width: 30px; +// Point at which the navbar stops collapsing +@grid-float-breakpoint: @screen-tablet; diff --git a/docs/less/bootstrap/wells.less b/docs/less/bootstrap/wells.less new file mode 100644 index 0000000..6a909f4 --- /dev/null +++ b/docs/less/bootstrap/wells.less @@ -0,0 +1,29 @@ +// +// Wells +// -------------------------------------------------- + + +// Base class +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: @well-bg; + border: 1px solid darken(@well-bg, 7%); + border-radius: @border-radius-base; + .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); + blockquote { + border-color: #ddd; + border-color: rgba(0,0,0,.15); + } +} + +// Sizes +.well-large { + padding: 24px; + border-radius: @border-radius-large; +} +.well-small { + padding: 9px; + border-radius: @border-radius-small; +} diff --git a/docs/less/cheatsheet.less b/docs/less/cheatsheet.less new file mode 100644 index 0000000..2ee62e6 --- /dev/null +++ b/docs/less/cheatsheet.less @@ -0,0 +1,57 @@ +* { + padding:0; + margin:0; +} +#header_content { + width: 960px; + margin: 0 auto; +} +#main { + float: none; +} +#main_content { + width: 960px; + margin: 0 auto; + float: none; +} +h2 { + font-family: 'Average Sans', sans-serif; + color: #0099FF; + margin-top: 25px; + margin-bottom: 15px; +} +.left { + float:left; + width: 320px; +} +.center { + float:left; + width: 320px; +} +.right { + float:left; + width: 320px; +} +.icon { + font-family: 'weather'; + src: url('../font/weathericons-regular-webfont.eot'); + src: url('../font/weathericons-regular-webfont.eot?#iefix') format('embedded-opentype'), url('../font/weathericons-regular-webfont.woff') format('woff'), url('../font/weathericons-regular-webfont.ttf') format('truetype'), url('../font/weathericons-regular-webfont.svg#weathericons-regular-webfontRg') format('svg'); + font-weight: normal; + font-style: normal; +} +.icon_name { + font-family: 'Average Sans', sans-serif; +} +.icon_unicode { + font-family: 'Average Sans', sans-serif; + color: #BBBBBB; + font-size: 0.8em; + float: none; +} +.stop_float { + clear: both; +} +#footer_content { + width: 960px; + margin: 0 auto; +} diff --git a/docs/less/main.less b/docs/less/main.less new file mode 100644 index 0000000..3d59d4c --- /dev/null +++ b/docs/less/main.less @@ -0,0 +1,250 @@ +body { + font-family: @copy; + font-weight: @normal; + font-size: 14px; + color: hsl(0, 0%, 20%); +} + + .reference { + font-family: "Helvetica", Arial, sans-serif; + font-size: 22px; + } + + +h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { + font-family: @copy; +} + +header { + position: relative; + height: 100px; + padding-top: 0px; + background: url("img/sky.jpg") top center no-repeat fixed; + border-bottom: 5px solid hsl(0, 0%, 25%); + @media (min-width: @screen-tablet) { + height: 300px; + } + h1 { + float: left; + font-family: "proxima nova", @copy; + font-weight: 100; + font-size: 30px; + margin-top: 40px; + margin-left: 0px; + color: hsl(0, 0%, 100%); + text-shadow: 0px 2px 2px hsla(0, 0%, 0%, .9); + @media (min-width: @screen-tablet) { + font-size: 60px; + margin-top: 180px; + } + } + .icon { + position: absolute; + right: 20px; + top: 40px; + //bottom: 10px; + color: hsl(0, 0%, 100%); + font-size: 55px; + margin-left: 100px; + //margin-top: 120px; + float: left; + line-height: .65em; + text-shadow: 0px 2px 2px hsla(0, 0%, 0%, .5); + @media (min-width: @screen-tablet) { + font-size: 200px; + top: 100px; + } + } +} + +footer { + height: 200px; + background-color: hsl(0, 0%, 20%); + margin-top: 30px; + color: hsl(0, 0%, 100%); + padding-top: 15px; + font-weight: @normal; + a { + color: hsl(0, 0%, 70%); + } +} + +.buttons { + font-size: 100px; +} + +.follow { + text-align: center; +} + +.intro-icons { + font-size: 15px; + color: hsl(208, 56%, 47%); + i { + margin-right: 10px; + } + @media (min-width: @screen-tablet) { + font-size: 25px; + i { + margin-right: 10px; + } + } + @media (min-width: @screen-desktop) { + font-size: 45px; + i { + margin-right: 10px; + } + } +} + +.headline { + font-size: 25px; + line-height: 1.3em; + margin-bottom: 30px; +} + +.social { + margin-top: 15px; + p { + margin-bottom: 0px; + text-align: center; + } +} + + +.download-here { + margin-top: 20px; + +} + +.download { + display: block; + +} + +.intro { + font-size: 18px; + margin-top: 30px; + font-weight: @normal; +} +.beta { + margin-top: 20px; + color: hsl(0, 0%, 50%); + .title { + color: hsl(0, 0%, 50%); + font-weight: @semibold; + font-size: 20px; + } + p { + font-weight: @normal; + font-size: 15px; + } +} +.download-button { + .make-column(4); + .make-column-offset(4); +} + +.banner { + background-color: hsl(0, 0%, 90%); + background-image: url("img/large-bg2.jpg"); + background-repeat: no-repeat; + background-position: top center; + background-attachment: fixed; + height: 250px; + h1 { + color: hsl(0, 0%, 100%); + font-weight: @normal; + } + + a { + display: block; + text-decoration: none; + } + + .tweet { + //font-size: 25px; + //float: left; + .icon-circle { + color: hsl(200, 100%, 60%); + } + .icon-twitter { + color: hsl(0, 0%, 100%); + } + &:hover { + .icon-circle { + color: hsl(200, 100%, 40%); + } + } + } + .icon-stack { + display: inline-block; + } + .tweeter { + display: inline-block; + font-weight: @bold; + color: hsl(0, 0%, 100%); + } + + + .github { + font-size: 25px; + float: left; + .icon-circle { + color: hsl(200, 0%, 60%); + } + .icon-github-alt { + color: hsl(0, 0%, 100%); + } + + } +} + +.iconExamples { + .clearfix; + h2 { + font-family: @copy; + font-weight: @ultraLight; + color: hsl(217, 51%, 47%); + } + .example { + @fontsize: 28px; + .clearfix; + text-align: center; + margin: 10px 3px; + .icon { + font-size: @fontsize; + float: left; + width: 35px; + i { + //background-color: hsl(120, 100%, 70%); + } + } + .class { + text-align: center; + font-size: 14px; + float: left; + margin-top: 6px; + font-weight: 400; + margin-left: 10px; + color: hsl(0, 0%, 20%); + } + } +} + + + + +.download-share { + padding: 20px 0px 30px 0px; + border-top: 1px solid hsl(0, 0%, 90%); + border-bottom: 1px solid hsl(0, 0%, 90%); + background-color: hsl(0, 0%, 95%); + margin-top: 30px; + + .box-shadow(inset 0px 0px 15px hsla(0, 0%, 0%, .1)) +} + + + + diff --git a/docs/less/mixins.less b/docs/less/mixins.less new file mode 100644 index 0000000..ae556c1 --- /dev/null +++ b/docs/less/mixins.less @@ -0,0 +1,96 @@ +.gray(@percent) { + color: hsl(0,0%,(@percent)); +} + +.ul-inline-no-style() { + margin: 0px; + list-style: none; + .clearfix; + li { + float: left; + display: block; + } +} + +.ul-block-no-style() { + margin: 0px; + list-style: none; + .clearfix; +} + +// 1 pixel black and white text shadows +.textShadowBlack(@shadow) { + text-shadow: 0 1px 1px hsla(0,0%,0%,@shadow); +} +.textShadowWhite(@shadow: 0 1px 0px hsla(0,0%,100%,0.8)) { + text-shadow: @shadow; +} + + +// easy background image mixin +.bgi(@src, @xpos: 0, @ypos: 0, @repeat: no-repeat) { + background-image: url(@src); + background-position: @xpos @ypos; + background-attachment: scroll; + background-repeat: @repeat; +} + + +// Background-cover mixin yay +.background-cover(@cover: cover) { + -webkit-background-size: @cover; + -moz-background-size: @cover; + -o-background-size: @cover; + background-size: @cover; +} + + +// CSS3 modern box sizing - padding is included in sum +.box-sizing(@type: border-box) { + -webkit-box-sizing: @type; + -moz-box-sizing: @type; + box-sizing: @type; +} + + + +// the retina mixin. An example goes: .at2x(img/header@2x.png, 650px, 150px, top, left, no-repeat, scroll) +// Put the size that the image appears on a non-retina, e.g. if it's a 200px x 200px non-retina, that is the effective size. The @2x 400px x 400px is calculated automatically. The order to type it is width then height. +// A modification of the retina.js less mixin - https://github.com/imulus/retinajs + + +@highdpi: ~"(-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx)"; +.at2x(@path, @w: auto, @h: auto, @xpos: 0, @ypos: 0, @repeat: no-repeat, @attachment: scroll) { + background-image: url(@path); + background-position: @xpos @ypos; + background-repeat: @repeat; + background-attachment: @attachment; + @at2x_path: ~`"@{path}".split('.').slice(0, "@{path}".split('.').length - 1).join(".") + "@2x" + "." + "@{path}".split('.')["@{path}".split('.').length - 1]`; + @media @highdpi { + background-image: url(@at2x_path); + background-size: @w @h; + background-position: @xpos @ypos; + background-repeat: @repeat; + background-attachment: @attachment; + } +} + + +// the highlight color for the page +.highlight(@backgroundColor, @textColor) { + ::selection, -moz::selection { + background: @backgroundColor; + color: @textColor; + } +} +.highlight(hsl(207, 100%, 52%), @white); + +.noselect() { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + diff --git a/docs/less/styles.less b/docs/less/styles.less new file mode 100644 index 0000000..edcc164 --- /dev/null +++ b/docs/less/styles.less @@ -0,0 +1,11 @@ +@import "bootstrap-includes.less"; + + +@import "../../less/weather-icons.less"; +@import "variables.less"; +@import "mixins.less"; +@import "cheatsheet.less"; +@import "main.less"; + + + diff --git a/docs/less/variables.less b/docs/less/variables.less new file mode 100644 index 0000000..76aaa59 --- /dev/null +++ b/docs/less/variables.less @@ -0,0 +1,16 @@ +// Font Stuff + +@copy: "Helvetica Neue", Helvetica, Arial, sans-serif; +@white: #fff; +@black: #000; +@red: hsl(0, 100%, 50%); + +@ultraLight: 200; +@light: 300; +@normal: 400; +@semibold: 500; +@bold: 700; +@extraBold: 800; +@blackBold: 900; + + diff --git a/less/icon-classes.less b/less/weather-icons-classes.less similarity index 100% rename from less/icon-classes.less rename to less/weather-icons-classes.less diff --git a/less/variables.less b/less/weather-icons-variables.less similarity index 100% rename from less/variables.less rename to less/weather-icons-variables.less diff --git a/less/weather-icons.less b/less/weather-icons.less index 648ef37..76fe674 100644 --- a/less/weather-icons.less +++ b/less/weather-icons.less @@ -26,8 +26,8 @@ -@import "variables.less"; -@import "icon-classes.less"; +@import "weather-icons-variables.less"; +@import "weather-icons-classes.less"; // Include anything you need to make the Weather Icons styled here // diff --git a/less/weather-icons.min.less b/less/weather-icons.min.less index 3abcb3e..b0ddd5a 100644 --- a/less/weather-icons.min.less +++ b/less/weather-icons.min.less @@ -26,8 +26,8 @@ -@import "variables.less"; -@import "icon-classes.less"; +@import "weather-icons-variables.less"; +@import "weather-icons-classes.less"; // Include anything you need to make the Weather Icons styled here //