├── sass ├── _footer.scss ├── _header.scss ├── _sidebar.scss ├── _variables.scss ├── _su.scss ├── _susy.scss ├── susy │ ├── _su.scss │ ├── output │ │ ├── _float.scss │ │ ├── _support.scss │ │ ├── _shared.scss │ │ ├── shared │ │ │ ├── _output.scss │ │ │ ├── _margins.scss │ │ │ ├── _padding.scss │ │ │ ├── _inspect.scss │ │ │ ├── _container.scss │ │ │ ├── _background.scss │ │ │ └── _direction.scss │ │ ├── support │ │ │ ├── _clearfix.scss │ │ │ ├── _prefix.scss │ │ │ ├── _rem.scss │ │ │ ├── _box-sizing.scss │ │ │ ├── _background.scss │ │ │ └── _support.scss │ │ └── float │ │ │ ├── _container.scss │ │ │ ├── _isolate.scss │ │ │ ├── _end.scss │ │ │ └── _span.scss │ ├── language │ │ ├── susy │ │ │ ├── _validation.scss │ │ │ ├── _context.scss │ │ │ ├── _box-sizing.scss │ │ │ ├── _grids.scss │ │ │ ├── _isolate.scss │ │ │ ├── _padding.scss │ │ │ ├── _container.scss │ │ │ ├── _margins.scss │ │ │ ├── _gallery.scss │ │ │ ├── _rows.scss │ │ │ ├── _gutters.scss │ │ │ ├── _breakpoint-plugin.scss │ │ │ ├── _span.scss │ │ │ ├── _bleed.scss │ │ │ ├── _settings.scss │ │ │ └── _background.scss │ │ └── _susy.scss │ └── su │ │ ├── _validation.scss │ │ ├── _settings.scss │ │ ├── _utilities.scss │ │ └── _grid.scss ├── style.scss ├── _reset.scss ├── _globals.scss ├── _fonts.scss ├── _homepage.scss └── _mixins.scss ├── fonts └── Put your fonts here.txt ├── images └── Put your images here.txt ├── footer.php ├── lib ├── main.js └── modernizr.min.js ├── screenshot.png ├── README.md ├── package.json ├── test-s.php ├── header.php ├── search.php ├── gulpfile.js ├── functions.php ├── style.css ├── index.php ├── filter.php ├── 404.php ├── style.css.map └── js └── olympos.min.js /sass/_footer.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sass/_header.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sass/_sidebar.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sass/_variables.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /fonts/Put your fonts here.txt: -------------------------------------------------------------------------------- 1 | Put your fonts here -------------------------------------------------------------------------------- /images/Put your images here.txt: -------------------------------------------------------------------------------- 1 | Put your images here -------------------------------------------------------------------------------- /sass/_su.scss: -------------------------------------------------------------------------------- 1 | // Su 2 | // == 3 | 4 | @import 'susy/su'; 5 | -------------------------------------------------------------------------------- /footer.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /lib/main.js: -------------------------------------------------------------------------------- 1 | jQuery(document).ready(function($) { 2 | 3 | }); -------------------------------------------------------------------------------- /sass/_susy.scss: -------------------------------------------------------------------------------- 1 | // Susy 2 | // ==== 3 | 4 | @import 'susy/language/susy'; 5 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivandoric/WordPress-Custom-Query/HEAD/screenshot.png -------------------------------------------------------------------------------- /sass/susy/_su.scss: -------------------------------------------------------------------------------- 1 | // Su 2 | // == 3 | 4 | @import "su/utilities"; 5 | @import "su/settings"; 6 | @import "su/validation"; 7 | @import "su/grid"; 8 | -------------------------------------------------------------------------------- /sass/susy/output/_float.scss: -------------------------------------------------------------------------------- 1 | // Float API 2 | // ========= 3 | 4 | @import "shared"; 5 | 6 | @import "float/container"; 7 | @import "float/span"; 8 | @import "float/end"; 9 | @import "float/isolate"; 10 | -------------------------------------------------------------------------------- /sass/susy/output/_support.scss: -------------------------------------------------------------------------------- 1 | // Susy Browser Support 2 | // ==================== 3 | 4 | @import "support/support"; 5 | @import "support/prefix"; 6 | @import "support/background"; 7 | @import "support/box-sizing"; 8 | @import "support/rem"; 9 | @import "support/clearfix"; 10 | -------------------------------------------------------------------------------- /sass/susy/output/_shared.scss: -------------------------------------------------------------------------------- 1 | // Shared API 2 | // ========== 3 | 4 | @import "support"; 5 | 6 | @import "shared/inspect"; 7 | @import "shared/output"; 8 | @import "shared/direction"; 9 | @import "shared/background"; 10 | @import "shared/container"; 11 | @import "shared/margins"; 12 | @import "shared/padding"; 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /sass/susy/output/shared/_output.scss: -------------------------------------------------------------------------------- 1 | // Output 2 | // ====== 3 | 4 | // Output 5 | // ------ 6 | // Output CSS with proper browser support. 7 | // - $styles : 8 | @mixin output( 9 | $styles 10 | ) { 11 | @each $prop, $val in $styles { 12 | @include susy-support($prop, $val); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This is a repository for "WordPress Custom Query" tutorial series. You can [check out the series here](http://watch-learn.com/series/wordpress-custom-query/). 2 | 3 | You can go to [releases](https://github.com/ivandoric/WordPress-Custom-Query/releases/) to download the code for most of the videos in the series. Releases are made per episode. -------------------------------------------------------------------------------- /sass/susy/language/susy/_validation.scss: -------------------------------------------------------------------------------- 1 | // Validation 2 | // ========== 3 | 4 | 5 | // Validate Column Math 6 | // -------------------- 7 | @function valid-column-math( 8 | $math, 9 | $column-width 10 | ) { 11 | @if $math == static and not($column-width) { 12 | @warn 'Static math requires a valid column-width setting.'; 13 | } @else { 14 | @return $column-width; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /sass/susy/output/support/_clearfix.scss: -------------------------------------------------------------------------------- 1 | // Susy Fallback Clearfix 2 | // ====================== 3 | 4 | 5 | // Clearfix 6 | // -------- 7 | // Check for an existing support mixin, or provide a simple fallback. 8 | @mixin susy-clearfix { 9 | @if susy-support(clearfix, (mixin: clearfix)) { 10 | @include clearfix; 11 | } @else { 12 | &:after { 13 | content: " "; 14 | display: block; 15 | clear: both; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /sass/susy/output/float/_container.scss: -------------------------------------------------------------------------------- 1 | // Float Container API 2 | // =================== 3 | 4 | // Float Container 5 | // --------------- 6 | // - [$width] : 7 | // - [$justify] : left | center | right 8 | // - [$math] : fluid | static 9 | @mixin float-container( 10 | $width, 11 | $justify: auto auto, 12 | $property: max-width 13 | ) { 14 | @include susy-clearfix; 15 | @include container-output($width, $justify, $property); 16 | } 17 | -------------------------------------------------------------------------------- /sass/susy/output/float/_isolate.scss: -------------------------------------------------------------------------------- 1 | // Float Isolation API 2 | // =================== 3 | 4 | // Isolate Output 5 | // -------------- 6 | // - $push : 7 | // - [$flow] : ltr | rtl 8 | @mixin isolate-output( 9 | $push, 10 | $flow: map-get($susy-defaults, flow) 11 | ) { 12 | $to: to($flow); 13 | $from: from($flow); 14 | 15 | $output: ( 16 | float: $from, 17 | margin-#{$from}: $push, 18 | margin-#{$to}: -100%, 19 | ); 20 | 21 | @include output($output); 22 | } 23 | -------------------------------------------------------------------------------- /sass/susy/output/shared/_margins.scss: -------------------------------------------------------------------------------- 1 | // Margins API 2 | // =========== 3 | 4 | // Margin Output 5 | // ------------- 6 | // - $before : 7 | // - $after : 8 | // - [$flow] : ltr | rtl 9 | @mixin margin-output( 10 | $before, 11 | $after, 12 | $flow: map-get($susy-defaults, flow) 13 | ) { 14 | $to: to($flow); 15 | $from: from($flow); 16 | 17 | $output: ( 18 | margin-#{$from}: $before, 19 | margin-#{$to}: $after, 20 | ); 21 | 22 | @include output($output); 23 | } 24 | -------------------------------------------------------------------------------- /sass/susy/output/support/_prefix.scss: -------------------------------------------------------------------------------- 1 | // Susy Prefix 2 | // =========== 3 | 4 | // Prefix 5 | // ------ 6 | // Output simple prefixed properties. 7 | // - $prop : 8 | // - $val : 9 | // - [$prefix] : 10 | @mixin susy-prefix( 11 | $prop, 12 | $val, 13 | $prefix: official 14 | ) { 15 | @each $fix in $prefix { 16 | $fix: if($fix == official or not($fix), $prop, '-#{$fix}-#{$prop}'); 17 | @include susy-rem($fix, $val); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /sass/susy/output/shared/_padding.scss: -------------------------------------------------------------------------------- 1 | // Padding API 2 | // =========== 3 | 4 | // Padding Output 5 | // -------------- 6 | // - $before : 7 | // - $after : 8 | // - [$flow] : ltr | rtl 9 | @mixin padding-output( 10 | $before, 11 | $after, 12 | $flow: map-get($susy-defaults, flow) 13 | ) { 14 | $to: to($flow); 15 | $from: from($flow); 16 | 17 | $output: ( 18 | padding-#{$from}: $before, 19 | padding-#{$to}: $after, 20 | ); 21 | 22 | @include output($output); 23 | } 24 | -------------------------------------------------------------------------------- /sass/susy/output/shared/_inspect.scss: -------------------------------------------------------------------------------- 1 | // Debugging 2 | // ========= 3 | 4 | // Susy Inspect 5 | // ------------ 6 | // Output arguments passed to a inspect. 7 | // - $mixin : 8 | // - $inspec : 9 | 10 | @mixin susy-inspect($mixin, $inspect...) { 11 | $show: false; 12 | 13 | @each $item in $inspect { 14 | @if index($item, inspect) { 15 | $show: true; 16 | } 17 | } 18 | 19 | @if $show or susy-get(debug inspect) { 20 | -susy-#{$mixin}: inspect($inspect); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /sass/susy/output/support/_rem.scss: -------------------------------------------------------------------------------- 1 | // rem Support 2 | // =========== 3 | 4 | // rem 5 | // --- 6 | // Check for an existing support mixin, or output directly. 7 | // - $prop : 8 | // - $val : 9 | @mixin susy-rem( 10 | $prop, 11 | $val 12 | ) { 13 | $_reqs: ( 14 | variable: rhythm-unit rem-with-px-fallback, 15 | mixin: rem, 16 | ); 17 | @if susy-support(rem, $_reqs, $warn: false) and $rhythm-unit == rem { 18 | @include rem($prop, $val); 19 | } @else { 20 | #{$prop}: $val; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /sass/susy/output/support/_box-sizing.scss: -------------------------------------------------------------------------------- 1 | // Box Sizing 2 | // ========== 3 | 4 | // Box Sizing 5 | // ---------- 6 | // Check for an existing support mixin, or provide a simple fallback. 7 | // - $model: 8 | @mixin susy-box-sizing( 9 | $model: content-box 10 | ) { 11 | @if $model { 12 | @if susy-support(box-sizing, (mixin: box-sizing), $warn: false) { 13 | @include box-sizing($model); 14 | } @else { 15 | $prefix: (moz, webkit, official); 16 | @include susy-prefix(box-sizing, $model, $prefix); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /sass/susy/output/shared/_container.scss: -------------------------------------------------------------------------------- 1 | // Shared Container API 2 | // ==================== 3 | 4 | // Container Output 5 | // ---------------- 6 | // - [$width] : 7 | // - [$justify] : left | center | right 8 | // - [$math] : fluid | static 9 | @mixin container-output( 10 | $width, 11 | $justify: auto auto, 12 | $property: max-width 13 | ) { 14 | $output: ( 15 | #{$property}: $width or 100%, 16 | margin-left: nth($justify, 1), 17 | margin-right: nth($justify, 2), 18 | ); 19 | 20 | @include output($output); 21 | } 22 | -------------------------------------------------------------------------------- /sass/susy/language/_susy.scss: -------------------------------------------------------------------------------- 1 | // Susy Next Syntax 2 | // ================ 3 | 4 | $susy-version: 2.1; 5 | 6 | @import "../su"; 7 | @import "../output/float"; 8 | 9 | @import "susy/settings"; 10 | @import "susy/validation"; 11 | @import "susy/grids"; 12 | @import "susy/box-sizing"; 13 | @import "susy/context"; 14 | @import "susy/background"; 15 | @import "susy/container"; 16 | @import "susy/span"; 17 | @import "susy/gutters"; 18 | @import "susy/isolate"; 19 | @import "susy/gallery"; 20 | @import "susy/rows"; 21 | @import "susy/margins"; 22 | @import "susy/padding"; 23 | @import "susy/bleed"; 24 | @import "susy/breakpoint-plugin"; 25 | -------------------------------------------------------------------------------- /sass/style.scss: -------------------------------------------------------------------------------- 1 | /* CSS Document */ 2 | /*! 3 | Theme Name: Olympos 4 | Description: Blank Wordpress Theme 5 | Version: 3.0 6 | Author: Ivan Dorić 7 | Author URI: http://www.watch-learn.com/ 8 | Tags: starter theme, light, sass, gulp, livereload 9 | 10 | The CSS, XHTML is released under GPL: 11 | http://www.opensource.org/licenses/gpl-license.php 12 | 13 | */ 14 | 15 | /* Vendor */ 16 | @import "susy"; 17 | @import "su"; 18 | 19 | 20 | /* Setup */ 21 | @import "reset"; 22 | @import "mixins"; 23 | @import "variables"; 24 | @import "fonts"; 25 | @import "globals"; 26 | 27 | 28 | /* WP parts */ 29 | @import "header"; 30 | @import "homepage"; 31 | @import "sidebar"; 32 | @import "footer"; 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "olympos-gulp", 3 | "version": "1.0.0", 4 | "description": "Gulp dependencies for Olympos WordPress theme", 5 | "main": "gulpfile.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/ivandoric/olympos.git" 12 | }, 13 | "author": "Ivan Dorić", 14 | "license": "ISC", 15 | "devDependencies": { 16 | "gulp": "^3.9.0", 17 | "gulp-autoprefixer": "^3.0.2", 18 | "gulp-imagemin": "^2.3.0", 19 | "gulp-livereload": "^3.8.0", 20 | "gulp-sass": "^2.0.4", 21 | "gulp-sourcemaps": "^1.5.2", 22 | "gulp-uglifyjs": "^0.6.2", 23 | "imagemin-pngquant": "^4.2.0" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /sass/susy/output/shared/_background.scss: -------------------------------------------------------------------------------- 1 | // Grid Background API 2 | // =================== 3 | // - Sub-pixel rounding can lead to several pixels variation between browsers. 4 | 5 | // Grid Background Output 6 | // ---------------------- 7 | // - $image: background-image 8 | // - $size: background-size 9 | // - $clip: background-clip 10 | // - [$flow]: ltr | rtl 11 | @mixin background-grid-output ( 12 | $image, 13 | $size: null, 14 | $clip: null, 15 | $flow: map-get($susy-defaults, flow) 16 | ) { 17 | $output: ( 18 | background-image: $image, 19 | background-size: $size, 20 | background-origin: $clip, 21 | background-clip: $clip, 22 | background-position: from($flow) top, 23 | ); 24 | 25 | @include output($output); 26 | } 27 | -------------------------------------------------------------------------------- /sass/_reset.scss: -------------------------------------------------------------------------------- 1 | /* Eric Meyer's Reset CSS v2.0 - http://cssreset.com */ 2 | html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{border:0;font-size:100%;font:inherit;vertical-align:baseline;margin:0;padding:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:none}table{border-collapse:collapse;border-spacing:0} -------------------------------------------------------------------------------- /sass/susy/output/float/_end.scss: -------------------------------------------------------------------------------- 1 | // Float Ends API 2 | // ============== 3 | 4 | // Susy End Defaults 5 | // ----------------- 6 | // - PRIVATE 7 | @include susy-defaults(( 8 | last-flow: to, 9 | )); 10 | 11 | // Float Last 12 | // ---------- 13 | // - [$flow] : ltr | rtl 14 | @mixin float-last( 15 | $flow: map-get($susy-defaults, flow), 16 | $last-flow: map-get($susy-defaults, last-flow), 17 | $margin: 0 18 | ) { 19 | $to: to($flow); 20 | 21 | $output: ( 22 | float: if($last-flow == to, $to, null), 23 | margin-#{$to}: $margin, 24 | ); 25 | 26 | @include output($output); 27 | } 28 | 29 | // Float First 30 | // ----------- 31 | // - [$flow] : ltr | rtl 32 | @mixin float-first( 33 | $flow: map-get($susy-defaults, flow) 34 | ) { 35 | $output: ( 36 | margin-#{from($flow)}: 0, 37 | ); 38 | 39 | @include output($output); 40 | } 41 | -------------------------------------------------------------------------------- /sass/susy/language/susy/_context.scss: -------------------------------------------------------------------------------- 1 | // Context Syntax 2 | // ============== 3 | 4 | // Nested [function] 5 | // ----------------- 6 | // Return a subset grid for nested context. 7 | // - $context : 8 | @function nested( 9 | $context 10 | ) { 11 | $context : parse-span($context); 12 | $span : susy-get(span, $context); 13 | $location : get-location($context); 14 | $columns : susy-get(columns, $context); 15 | 16 | @return susy-slice($span, $location, $columns); 17 | } 18 | 19 | // Nested [mixin] 20 | // -------------- 21 | // Use a subset grid for a nested context 22 | // - $context : 23 | // - @content : 24 | @mixin nested( 25 | $context 26 | ) { 27 | $inspect : $context; 28 | $context : parse-span($context); 29 | $old : susy-get(columns); 30 | $susy : map-merge($susy, (columns: nested($context))) !global; 31 | 32 | @include susy-inspect(nested, $inspect); 33 | @content; 34 | 35 | $susy : map-merge($susy, (columns: $old)) !global; 36 | } 37 | -------------------------------------------------------------------------------- /sass/susy/output/shared/_direction.scss: -------------------------------------------------------------------------------- 1 | // Direction Helpers 2 | // ================= 3 | 4 | // Susy Flow Defaults 5 | // ------------------ 6 | // - PRIVATE 7 | @include susy-defaults(( 8 | flow: ltr, 9 | )); 10 | 11 | // Get Direction 12 | // ------------- 13 | // Return the 'from' or 'to' direction of a ltr or rtl flow. 14 | // - [$flow] : ltr | rtl 15 | // - [$key] : from | to 16 | @function get-direction( 17 | $flow: map-get($susy-defaults, flow), 18 | $key: from 19 | ) { 20 | $return: if($flow == rtl, (from: right, to: left), (from: left, to: right)); 21 | @return map-get($return, $key); 22 | } 23 | 24 | // To 25 | // -- 26 | // Return the 'to' direction of a flow 27 | // - [$flow] : ltr | rtl 28 | @function to( 29 | $flow: map-get($susy-defaults, flow) 30 | ) { 31 | @return get-direction($flow, to); 32 | } 33 | 34 | // From 35 | // ---- 36 | // Return the 'from' direction of a flow 37 | // - [$flow] : ltr | rtl 38 | @function from( 39 | $flow: map-get($susy-defaults, flow) 40 | ) { 41 | @return get-direction($flow, from); 42 | } 43 | -------------------------------------------------------------------------------- /sass/susy/output/float/_span.scss: -------------------------------------------------------------------------------- 1 | // Float Span API 2 | // ============== 3 | 4 | // Float Span Output 5 | // ----------------- 6 | // - $width : 7 | // - [$float] : from | to 8 | // - [$margin-before] : 9 | // - [$margin-after] : 10 | // - [$padding-before] : 11 | // - [$padding-after] : 12 | // - [$flow] : ltr | rtl 13 | @mixin float-span-output( 14 | $width, 15 | $float : from, 16 | $margin-before : null, 17 | $margin-after : null, 18 | $padding-before : null, 19 | $padding-after : null, 20 | $flow : map-get($susy-defaults, flow) 21 | ) { 22 | $to : to($flow); 23 | $from : from($flow); 24 | 25 | $output: ( 26 | width: $width, 27 | float: if($float == to, $to, null) or if($float == from, $from, null), 28 | margin-#{$from}: $margin-before, 29 | margin-#{$to}: $margin-after, 30 | padding-#{$from}: $padding-before, 31 | padding-#{$to}: $padding-after, 32 | ); 33 | 34 | @include output($output); 35 | } 36 | -------------------------------------------------------------------------------- /sass/_globals.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================= 2 | ## ++ Globals 3 | ========================================================================== */ 4 | html{ 5 | font-size: 100%; 6 | } 7 | 8 | body{ 9 | -webkit-font-smoothing: antialiased; 10 | background: #efefef; 11 | font-family: Helvetica Neue, Arial, sans-serif; 12 | } 13 | 14 | *{ 15 | box-sizing:border-box; 16 | } 17 | 18 | .container{ 19 | width:1024px; 20 | margin:40px auto; 21 | background: #FFF; 22 | padding:20px; 23 | } 24 | 25 | 26 | /* ======================================================================= 27 | ## ++ Cleafix 28 | ========================================================================== */ 29 | 30 | /* float clearing for IE6 */ 31 | * html .clearfix{ 32 | height: 1%; 33 | overflow: visible; 34 | } 35 | 36 | /* float clearing for IE7 */ 37 | *+html .clearfix{ 38 | min-height: 1%; 39 | } 40 | 41 | /* float clearing for everyone else */ 42 | .clearfix:after{ 43 | clear: both; 44 | content: "."; 45 | display: block; 46 | height: 0; 47 | visibility: hidden; 48 | font-size: 0; 49 | } 50 | 51 | .clr{clear:both;} 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /test-s.php: -------------------------------------------------------------------------------- 1 | 16 | 17 |
18 |

Search results

19 | $type, 22 | 'posts_per_page' => -1, 23 | 's' => $text, 24 | /*'exact' => true, 25 | 'sentence' => true*/ 26 | ); 27 | $query = new WP_Query($args); 28 | while($query -> have_posts()) : $query -> the_post(); 29 | ?> 30 |
31 |
32 | 33 | 34 | 35 | 36 | 37 |
38 | 39 |
40 | 41 | -------------------------------------------------------------------------------- /header.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | <?php if(is_home()) bloginfo('name'); else wp_title(''); ?> 10 | 11 | 12 | 13 | 14 | 15 | > 16 |
17 |
18 | 19 | 20 | 26 | 27 |
28 |
29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /sass/_fonts.scss: -------------------------------------------------------------------------------- 1 | // Typography 2 | // –––––––––––––––––––––––––––––––––––––––––––––––––– 3 | 4 | p { 5 | margin-top: 0; 6 | } 7 | 8 | h1, 9 | h2, 10 | h3, 11 | h4, 12 | h5, 13 | h6 { 14 | font-weight: 300; 15 | margin-bottom: 2rem; 16 | margin-top: 0; 17 | } 18 | 19 | h1 { 20 | font-size: 4rem; 21 | letter-spacing: -0.1rem; 22 | line-height: 1.2; 23 | } 24 | 25 | h2 { 26 | font-size: 3.6rem; 27 | letter-spacing: -0.1rem; 28 | line-height: 1.25; 29 | } 30 | 31 | h3 { 32 | font-size: 3rem; 33 | letter-spacing: -0.1rem; 34 | line-height: 1.3; 35 | } 36 | 37 | h4 { 38 | font-size: 2.4rem; 39 | letter-spacing: -0.08rem; 40 | line-height: 1.35; 41 | } 42 | 43 | h5 { 44 | font-size: 1.8rem; 45 | letter-spacing: -0.05rem; 46 | line-height: 1.5; 47 | } 48 | 49 | h6 { 50 | font-size: 1.6rem; 51 | letter-spacing: 0; 52 | line-height: 1.4; 53 | } 54 | 55 | // Larger than mobile screen 56 | @media (min-width: 40rem) { 57 | h1 { 58 | font-size: 5rem; 59 | } 60 | h2 { 61 | font-size: 4.2rem; 62 | } 63 | h3 { 64 | font-size: 3.6rem; 65 | } 66 | h4 { 67 | font-size: 3rem; 68 | } 69 | h5 { 70 | font-size: 2.4rem; 71 | } 72 | h6 { 73 | font-size: 1.5rem; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /sass/susy/language/susy/_box-sizing.scss: -------------------------------------------------------------------------------- 1 | // Susy Box Sizing 2 | // ================= 3 | 4 | // Global Box Sizing 5 | // ----------------- 6 | // Set a box model globally on all elements. 7 | // - [$box]: border-box | content-box 8 | // - [$inherit]: true | false 9 | @mixin global-box-sizing( 10 | $box: susy-get(global-box-sizing), 11 | $inherit: false 12 | ) { 13 | $inspect: $box; 14 | 15 | @if $inherit { 16 | @at-root { 17 | html { @include output((box-sizing: $box)); } 18 | *, *:before, *:after { box-sizing: inherit; } 19 | } 20 | } @else { 21 | *, *:before, *:after { @include output((box-sizing: $box)); } 22 | } 23 | 24 | @include susy-inspect(global-box-sizing, $inspect); 25 | @include update-box-model($box); 26 | } 27 | 28 | // Border Box Sizing 29 | // ----------------- 30 | // A legacy shortcut... 31 | // - [$inherit]: true | false 32 | @mixin border-box-sizing( 33 | $inherit: false 34 | ) { 35 | @include global-box-sizing(border-box, $inherit); 36 | } 37 | 38 | // Update Box Model 39 | // ---------------- 40 | // PRIVATE: Updates global box model setting 41 | @mixin update-box-model( 42 | $box 43 | ) { 44 | @if $box != susy-get(global-box-sizing) { 45 | @include susy-set(global-box-sizing, $box); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /search.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | 17 | 18 |
19 |

Searching for:

20 | 21 | $type, 24 | 'posts_per_page' => -1, 25 | 's' => $text, 26 | /*'exact' => true, 27 | 'sentence' => true*/ 28 | ); 29 | $query = new WP_Query($args); 30 | while($query -> have_posts()) : $query -> the_post(); 31 | ?> 32 |
33 |
34 | 35 | 36 | 37 | 38 | 39 |
40 | 41 |
42 | 43 | 44 | -------------------------------------------------------------------------------- /sass/_homepage.scss: -------------------------------------------------------------------------------- 1 | .lesson-title{ 2 | border-bottom: 1px solid #ccc; 3 | } 4 | 5 | .featured{ 6 | padding:20px; 7 | background: red; 8 | } 9 | 10 | .post{ 11 | padding-bottom:20px; 12 | border-bottom: 1px solid #ccc; 13 | margin-bottom: 40px; 14 | 15 | .price{ 16 | color: #C60F13; 17 | font-size: 24px; 18 | font-weight: bold; 19 | display: block; 20 | } 21 | 22 | strong{ 23 | font-weight: bold; 24 | } 25 | 26 | h5{ 27 | font-size: 24px; 28 | margin-bottom: 10px; 29 | } 30 | 31 | .taxonomy{ 32 | background: #efefef; 33 | padding:10px; 34 | } 35 | } 36 | 37 | .categories{ 38 | @include span(6 of 12); 39 | } 40 | 41 | .tags{ 42 | @include span(6 of 12); 43 | } 44 | 45 | form{ 46 | padding:20px; 47 | background: #def0f9; 48 | margin-bottom: 40px; 49 | 50 | input, select{ 51 | padding:5px; 52 | } 53 | 54 | button{ 55 | background: #1d729c; 56 | color:#fff; 57 | border: none; 58 | padding:10px 20px; 59 | border-radius:5px; 60 | font-size: 14px; 61 | } 62 | } 63 | 64 | .search-site{ 65 | text-align: center; 66 | form{ 67 | background: #333; 68 | color:#fff; 69 | 70 | input{ 71 | width:500px; 72 | } 73 | } 74 | } -------------------------------------------------------------------------------- /sass/susy/language/susy/_grids.scss: -------------------------------------------------------------------------------- 1 | // Grid Syntax 2 | // =========== 3 | 4 | 5 | // Layout 6 | // ------ 7 | // Set a new layout using a shorthand 8 | // - $layout: 9 | // - $clean: boolean 10 | @mixin layout( 11 | $layout, 12 | $clean: false 13 | ) { 14 | $inspect : $layout; 15 | $susy : _get-layout($layout, $clean) !global; 16 | 17 | @include susy-inspect(layout, $inspect); 18 | } 19 | 20 | 21 | // Use Grid 22 | // -------- 23 | // Use an arbitrary layout for a section of code 24 | // - $layout: 25 | // - $clean: boolean 26 | @mixin with-layout( 27 | $layout, 28 | $clean: false 29 | ) { 30 | $inspect : $layout; 31 | $old : $susy; 32 | $susy : _get-layout($layout, $clean) !global; 33 | 34 | @include susy-inspect(with-layout, $inspect); 35 | 36 | @content; 37 | 38 | $susy: $old !global; 39 | } 40 | 41 | 42 | // Layout 43 | // ------ 44 | // Return a parsed layout map based on shorthand syntax 45 | // - $layout: 46 | @function layout( 47 | $layout: $susy 48 | ) { 49 | @return parse-grid($layout); 50 | } 51 | 52 | 53 | // Get Layout 54 | // ---------- 55 | // Return a new layout based on current and given settings 56 | // - $layout: 57 | // - $clean: boolean 58 | @function _get-layout( 59 | $layout, 60 | $clean: false 61 | ) { 62 | $layout: layout($layout); 63 | @return if($clean, $layout, _susy-deep-merge($susy, $layout)); 64 | } 65 | -------------------------------------------------------------------------------- /sass/susy/su/_validation.scss: -------------------------------------------------------------------------------- 1 | // Math Validation 2 | // =============== 3 | 4 | 5 | // Valid Columns 6 | // ------------- 7 | // Check that a column setting is valid. 8 | @function valid-columns( 9 | $columns, 10 | $silent: false 11 | ) { 12 | $type: type-of($columns); 13 | $return: null; 14 | 15 | @if $type == number and unitless($columns) { 16 | $return: $columns; 17 | } @else if $type == list { 18 | $fail: null; 19 | @each $col in $columns { 20 | @if type-of($col) == number { 21 | $fail: $fail or if(unitless($col), null, true); 22 | } @else { 23 | $fail: true; 24 | } 25 | } 26 | $return: if($fail, $return, $columns); 27 | } 28 | 29 | @if $return != $columns and not($silent) { 30 | $return: null; 31 | $warn: '$columns must be a unitless number or list of unitless numbers.'; 32 | @warn $warn + ' Current value [#{$type}]: #{$columns}'; 33 | } 34 | 35 | @return $return; 36 | } 37 | 38 | 39 | // Valid Gutters 40 | // ------------- 41 | // Check that a gutter setting is valid. 42 | @function valid-gutters( 43 | $gutters, 44 | $silent: false 45 | ) { 46 | $type: type-of($gutters); 47 | $return: null; 48 | 49 | @if $type == number and unitless($gutters) { 50 | $return: $gutters; 51 | } @else if not($silent) { 52 | $warn: '$gutters must be a unitless number.'; 53 | @warn $warn + ' Current value [#{$type}]: #{$gutters}'; 54 | } 55 | 56 | @return $return; 57 | } 58 | -------------------------------------------------------------------------------- /sass/_mixins.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================= 2 | ## ++ Media Queries 3 | ========================================================================== */ 4 | 5 | /* 6 | Used for media queries. 7 | Add these mixins in your normal scss flow. 8 | 9 | Eg. 10 | .container{ 11 | width:1024px; 12 | 13 | @include tablets{ 14 | width:90%; 15 | } 16 | } 17 | */ 18 | 19 | @mixin lowresmonitors{ 20 | @media screen and (max-width: 1350px){ @content;} 21 | } 22 | 23 | @mixin tablets{ 24 | @media screen and (max-width: 1100px){ @content; } 25 | } 26 | 27 | @mixin phones{ 28 | @media screen and (max-width: 720px){ @content; } 29 | } 30 | 31 | /* ======================================================================= 32 | ## ++ Unit transform 33 | ========================================================================== */ 34 | 35 | /* 36 | Used for making containers have width in percentages. 37 | Usage: define elemnt width in px and the width of parent elemnt in px. 38 | eg. .block{width:cp(512px, 1024px)} this will result in .block{width:50%;} 39 | */ 40 | 41 | @function cp($target, $container) { 42 | @return ($target / $container) * 100%; 43 | } 44 | 45 | /* 46 | Used for making px values convert to rem values 47 | Usage: define font-size in px and it will convert to rems 48 | eg. font-size: rem(14px); 49 | */ 50 | 51 | @function rem($target, $context: $base-font-size) { 52 | @if $target == 0 { @return 0 } 53 | @return $target / $context + 0rem; 54 | } 55 | $base-font-size:16px; -------------------------------------------------------------------------------- /sass/susy/su/_settings.scss: -------------------------------------------------------------------------------- 1 | // Settings 2 | // ======== 3 | 4 | // Version 5 | // ------- 6 | $su-version: 1.1; 7 | 8 | 9 | // Default Settings 10 | // ---------------- 11 | // PRIVATE: The basic settings 12 | $susy-defaults: ( 13 | columns: 4, 14 | gutters: .25, 15 | ); 16 | 17 | 18 | // User Settings 19 | // ------------- 20 | // - Define the $susy variable with a map of your own settings. 21 | // - Set EITHER $column-width OR $container 22 | // - Use $column-width for static layouts 23 | $susy: () !default; 24 | 25 | 26 | // Susy Defaults 27 | // ------------- 28 | // PRIVATE: Add defaults to Susy 29 | @mixin susy-defaults( 30 | $defaults 31 | ) { 32 | $susy-defaults: map-merge($susy-defaults, $defaults) !global; 33 | } 34 | 35 | 36 | // Susy Set 37 | // -------- 38 | // Change one setting 39 | // - $key : setting name 40 | // - $value : setting value 41 | @mixin susy-set( 42 | $key-value... 43 | ) { 44 | $susy: _susy-deep-set($susy, $key-value...) !global; 45 | } 46 | 47 | 48 | // Susy Get 49 | // -------- 50 | // Return one setting from a grid 51 | // - $key : 52 | // - $layout : 53 | @function susy-get( 54 | $key, 55 | $layout: map-merge($susy-defaults, $susy) 56 | ) { 57 | $layout: parse-grid($layout); 58 | $_options: $layout $susy $susy-defaults; 59 | $_break: false; 60 | $_return: null; 61 | 62 | @each $opt in $_options { 63 | @if type-of($opt) == map and not($_break) { 64 | $_keyset: _susy-deep-has-key($opt, $key...); 65 | @if $_keyset { 66 | $_return: _susy-deep-get($opt, $key...); 67 | $_break: true; 68 | } 69 | } 70 | } 71 | 72 | @return $_return; 73 | } 74 | -------------------------------------------------------------------------------- /sass/susy/output/support/_background.scss: -------------------------------------------------------------------------------- 1 | // Background Properties 2 | // ===================== 3 | 4 | // Susy Background Image 5 | // --------------------- 6 | // Check for an existing support mixin, or provide a simple fallback. 7 | // - $image: 8 | @mixin susy-background-image( 9 | $image 10 | ) { 11 | @if susy-support(background-image, (mixin: background-image), $warn: false) { 12 | @include background-image($image...); 13 | } @else { 14 | background-image: $image; 15 | } 16 | } 17 | 18 | // Susy Background Size 19 | // --------------------- 20 | // Check for an existing support mixin, or provide a simple fallback. 21 | // - $image: 22 | @mixin susy-background-size( 23 | $size 24 | ) { 25 | @if susy-support(background-options, (mixin: background-size)) { 26 | @include background-size($size); 27 | } @else { 28 | background-size: $size; 29 | } 30 | } 31 | 32 | // Susy Background Origin 33 | // ---------------------- 34 | // Check for an existing support mixin, or provide a simple fallback. 35 | // - $image: 36 | @mixin susy-background-origin( 37 | $origin 38 | ) { 39 | @if susy-support(background-options, (mixin: background-origin)) { 40 | @include background-origin($origin); 41 | } @else { 42 | background-origin: $origin; 43 | } 44 | } 45 | 46 | // Susy Background Clip 47 | // -------------------- 48 | // Check for an existing support mixin, or provide a simple fallback. 49 | // - $image: 50 | @mixin susy-background-clip( 51 | $clip 52 | ) { 53 | @if susy-support(background-options, (mixin: background-clip)) { 54 | @include background-clip($clip); 55 | } @else { 56 | background-clip: $clip; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var livereload = require('gulp-livereload') 3 | var uglify = require('gulp-uglifyjs'); 4 | var sass = require('gulp-sass'); 5 | var autoprefixer = require('gulp-autoprefixer'); 6 | var sourcemaps = require('gulp-sourcemaps'); 7 | var imagemin = require('gulp-imagemin'); 8 | var pngquant = require('imagemin-pngquant'); 9 | 10 | 11 | 12 | 13 | gulp.task('imagemin', function () { 14 | return gulp.src('./wp-content/themes/olympos/images/*') 15 | .pipe(imagemin({ 16 | progressive: true, 17 | svgoPlugins: [{removeViewBox: false}], 18 | use: [pngquant()] 19 | })) 20 | .pipe(gulp.dest('./wp-content/themes/olympos/images')); 21 | }); 22 | 23 | 24 | gulp.task('sass', function () { 25 | gulp.src('./wp-content/themes/olympos/sass/**/*.scss') 26 | .pipe(sourcemaps.init()) 27 | .pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError)) 28 | .pipe(autoprefixer('last 2 version', 'safari 5', 'ie 7', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4')) 29 | .pipe(sourcemaps.write('./')) 30 | .pipe(gulp.dest('./wp-content/themes/olympos')); 31 | }); 32 | 33 | 34 | gulp.task('uglify', function() { 35 | gulp.src('./wp-content/themes/olympos/lib/*.js') 36 | .pipe(uglify('olympos.min.js')) 37 | .pipe(gulp.dest('./wp-content/themes/olympos/js')) 38 | }); 39 | 40 | gulp.task('watch', function(){ 41 | livereload.listen(); 42 | 43 | gulp.watch('./wp-content/themes/olympos/sass/**/*.scss', ['sass']); 44 | gulp.watch('./wp-content/themes/olympos/lib/*.js', ['uglify']); 45 | gulp.watch(['./wp-content/themes/olympos/style.css', './wp-content/themes/olympos/*.php', './wp-content/themes/olympos/js/*.js', './wp-content/themes/olympos/parts/**/*.php'], function (files){ 46 | livereload.changed(files) 47 | }); 48 | }); -------------------------------------------------------------------------------- /sass/susy/language/susy/_isolate.scss: -------------------------------------------------------------------------------- 1 | // Isolation Syntax 2 | // ================ 3 | 4 | 5 | // Isolate [Mixin] 6 | // --------------- 7 | // Set isolation as an override. 8 | // - $location: 9 | @mixin isolate( 10 | $isolate: 1 11 | ) { 12 | $inspect: $isolate; 13 | 14 | $output: ( 15 | push: isolate($isolate), 16 | flow: susy-get(flow, $isolate), 17 | ); 18 | 19 | @include susy-inspect(isolate, $inspect); 20 | @include isolate-output($output...); 21 | } 22 | 23 | 24 | // Isolate [function] 25 | // ------------------ 26 | // Return an isolation offset width. 27 | // - $location: 28 | @function isolate( 29 | $isolate: 1 30 | ) { 31 | $isolate: parse-span($isolate); 32 | $isolation: susy-get(span, $isolate); 33 | 34 | @if $isolation and not(get-location($isolate)) { 35 | $new: ( 36 | span: null, 37 | location: $isolation, 38 | ); 39 | $isolate: map-merge($isolate, $new); 40 | } 41 | 42 | @return get-isolation($isolate); 43 | } 44 | 45 | 46 | // Get Isolation 47 | // ------------- 48 | // Return the isolation offset width 49 | // - $input: 50 | @function get-isolation( 51 | $input 52 | ) { 53 | $location : get-location($input); 54 | $columns : susy-get(columns, $input); 55 | $width : null; 56 | 57 | @if type-of($location) == number and not(unitless($location)) { 58 | $width: $location; 59 | } @else if $location { 60 | $push: $location - 1; 61 | @if $push > 0 { 62 | $push: map-merge($input, ( 63 | span: $push, 64 | location: 1, 65 | spread: wide, 66 | )); 67 | $width: get-span-width($push); 68 | } 69 | } 70 | 71 | @if susy-get(gutter-position, $input) == split 72 | and susy-get(gutters, $input) > 0 { 73 | $width: if($width == null, gutters($input), $width + gutters($input)); 74 | } 75 | 76 | @return $width or 0; 77 | } 78 | -------------------------------------------------------------------------------- /sass/susy/language/susy/_padding.scss: -------------------------------------------------------------------------------- 1 | // Padding Syntax 2 | // ============== 3 | 4 | // Prefix 5 | // ------ 6 | // Add spanning-padding before an element. 7 | // - $span : 8 | @mixin prefix( 9 | $span 10 | ) { 11 | $inspect : $span; 12 | $span : map-merge((spread: wide), parse-span($span)); 13 | $flow : susy-get(flow, $span); 14 | $width : span($span); 15 | 16 | @if is-inside($span) { 17 | $gutter: gutter($span); 18 | $width: if($gutter and comparable($width, $gutter), $width + $gutter, $width); 19 | } 20 | 21 | @include susy-inspect(prefix, $inspect); 22 | @include padding-output($width, null, $flow); 23 | } 24 | 25 | // Suffix 26 | // ------ 27 | // Add spanning-padding after an element. 28 | // - $span : 29 | @mixin suffix( 30 | $span 31 | ) { 32 | $inspect : $span; 33 | $span : map-merge((spread: wide), parse-span($span)); 34 | $flow : susy-get(flow, $span); 35 | $width : span($span); 36 | 37 | @if is-inside($span) { 38 | $gutter: gutter($span); 39 | $width: if($gutter and comparable($width, $gutter), $width + $gutter, $width); 40 | } 41 | 42 | @include susy-inspect(suffix, $inspect); 43 | @include padding-output(null, $width, $flow); 44 | } 45 | 46 | // Pad 47 | // --- 48 | // Add spanning-padding before and after an element. 49 | // - $pre : 50 | // - [$post] : 51 | @mixin pad( 52 | $pre, 53 | $post: false 54 | ) { 55 | $inspect : $pre, $post; 56 | $pre : map-merge((spread: wide), parse-span($pre)); 57 | 58 | @if $post { 59 | $post: map-merge((spread: wide), parse-span($post)); 60 | } @else { 61 | $span: susy-get(span, $pre); 62 | @if length($span) > 1 { 63 | $pre: map-merge($pre, (span: nth($span, 1))); 64 | $post: map-merge($pre, (span: nth($span, 2))); 65 | } @else { 66 | $post: $pre; 67 | } 68 | } 69 | 70 | @include susy-inspect(pad, $inspect...); 71 | @include prefix($pre); 72 | @include suffix($post); 73 | 74 | } 75 | -------------------------------------------------------------------------------- /functions.php: -------------------------------------------------------------------------------- 1 | 'SidebarOne', 30 | 'before_widget' => '', 32 | 'before_title' => '

', 33 | 'after_title' => '

', 34 | )); 35 | 36 | if ( function_exists('register_sidebar') ) 37 | register_sidebar(array( 38 | 'name' => 'SidebarTwo', 39 | 'before_widget' => '', 41 | 'before_title' => '

', 42 | 'after_title' => '

', 43 | )); 44 | 45 | 46 | /* EXCERPT 47 | Usage: 48 | 49 | 50 | */ 51 | 52 | function excerpt($limit) { 53 | $excerpt = explode(' ', get_the_excerpt(), $limit); 54 | if (count($excerpt)>=$limit) { 55 | array_pop($excerpt); 56 | $excerpt = implode(" ",$excerpt).'...'; 57 | } else { 58 | $excerpt = implode(" ",$excerpt); 59 | } 60 | $excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt); 61 | return $excerpt; 62 | } 63 | -------------------------------------------------------------------------------- /sass/susy/output/support/_support.scss: -------------------------------------------------------------------------------- 1 | // Browser Support 2 | // =============== 3 | 4 | // Susy Support Defaults 5 | // --------------------- 6 | @include susy-defaults(( 7 | use-custom: ( 8 | clearfix: false, 9 | background-image: true, 10 | background-options: false, 11 | breakpoint: true, 12 | box-sizing: true, 13 | rem: true, 14 | ), 15 | )); 16 | 17 | 18 | // Susy Support [mixin] 19 | // -------------------- 20 | // Send property-value pairs to the proper support modules. 21 | // - $prop : 22 | // - $val : 23 | @mixin susy-support( 24 | $prop, 25 | $val 26 | ) { 27 | // Background Support 28 | @if $prop == background-image { 29 | @include susy-background-image($val); 30 | } @else if $prop == background-size { 31 | @include susy-background-size($val); 32 | } @else if $prop == background-origin { 33 | @include susy-background-origin($val); 34 | } @else if $prop == background-clip { 35 | @include susy-background-clip($val); 36 | } 37 | 38 | // Box-Sizing Support 39 | @else if $prop == box-sizing { 40 | @include susy-box-sizing($val); 41 | } 42 | 43 | // Rem Support 44 | @else { 45 | @include susy-rem($prop, $val); 46 | } 47 | } 48 | 49 | 50 | // Susy Support [function] 51 | // ----------------------- 52 | // Check for support of a feature. 53 | // - $feature : 54 | // - e.g "rem" or "box-sizing" 55 | // - $requirements : 56 | // - e.g (variable: rem-with-px-fallback, mixin: rem) 57 | // - $warn : 58 | @function susy-support( 59 | $feature, 60 | $requirements: (), 61 | $warn: true 62 | ) { 63 | $_support: susy-get(use-custom $feature); 64 | 65 | @if $_support { 66 | $_fail: false; 67 | 68 | @each $_type, $_req in $requirements { 69 | @each $_i in $_req { 70 | $_pass: call(#{$_type}-exists, $_i); 71 | 72 | @if not($_pass) { 73 | $_fail: true; 74 | @if $warn { 75 | @warn "You requested custom support of #{$feature}, but the #{$_i} #{$_type} is not available."; 76 | } 77 | } 78 | } 79 | } 80 | 81 | $_support: if($_fail, false, $_support); 82 | } 83 | 84 | @return $_support; 85 | } 86 | -------------------------------------------------------------------------------- /sass/susy/language/susy/_container.scss: -------------------------------------------------------------------------------- 1 | // Container Syntax 2 | // ================ 3 | 4 | // Container [mixin] 5 | // ----------------- 6 | // Set a container element 7 | // - [$layout] : 8 | @mixin container( 9 | $layout: $susy 10 | ) { 11 | $inspect : $layout; 12 | $layout : parse-grid($layout); 13 | 14 | $_width : get-container-width($layout); 15 | $_justify : parse-container-position(susy-get(container-position, $layout)); 16 | $_property : if(susy-get(math, $layout) == static, width, max-width); 17 | 18 | $_box : susy-get(box-sizing, $layout); 19 | 20 | @if $_box { 21 | @include output((box-sizing: $_box)); 22 | } 23 | 24 | @include susy-inspect(container, $inspect); 25 | @include float-container($_width, $_justify, $_property); 26 | @include show-grid($layout); 27 | } 28 | 29 | // Container [function] 30 | // -------------------- 31 | // Return container width 32 | // - [$layout] : 33 | @function container( 34 | $layout: $susy 35 | ) { 36 | $layout: parse-grid($layout); 37 | @return get-container-width($layout); 38 | } 39 | 40 | // Get Container Width 41 | // ------------------- 42 | // Calculate the container width 43 | // - [$layout]: 44 | @function get-container-width( 45 | $layout: $susy 46 | ) { 47 | $layout : parse-grid($layout); 48 | $_width : susy-get(container, $layout); 49 | $_column-width : susy-get(column-width, $layout); 50 | $_math : susy-get(math, $layout); 51 | 52 | @if not($_width) or $_width == auto { 53 | @if valid-column-math($_math, $_column-width) { 54 | $_columns : susy-get(columns, $layout); 55 | $_gutters : susy-get(gutters, $layout); 56 | $_spread : if(is-split($layout), wide, narrow); 57 | $_width : susy-sum($_columns, $_gutters, $_spread) * $_column-width; 58 | } @else { 59 | $_width: 100%; 60 | } 61 | } 62 | 63 | @return $_width; 64 | } 65 | 66 | // Parse Container Position 67 | // ------------------------ 68 | // Parse the $container-position into margin values. 69 | // - [$justify] : left | center | right | [] 70 | @function parse-container-position( 71 | $justify: map-get($susy-defaults, container-position) 72 | ) { 73 | $_return: if($justify == left, 0, auto) if($justify == right, 0, auto); 74 | 75 | @if not(index(left right center, $justify)) { 76 | $_return: nth($justify, 1); 77 | $_return: $_return if(length($justify) > 1, nth($justify, 2), $_return); 78 | } 79 | 80 | @return $_return; 81 | } 82 | -------------------------------------------------------------------------------- /sass/susy/su/_utilities.scss: -------------------------------------------------------------------------------- 1 | // Map Functions 2 | // ============= 3 | 4 | 5 | // Truncate List 6 | // ------------- 7 | // - Return a list, truncated to a given length 8 | @function _susy-truncate-list( 9 | $list, 10 | $length 11 | ) { 12 | $_return: (); 13 | 14 | @for $i from 1 through length($list) { 15 | $_return: if($i <= $length, append($_return, nth($list, $i)), $_return); 16 | } 17 | 18 | @return $_return; 19 | } 20 | 21 | 22 | // Deep Get 23 | // -------- 24 | // - Return a value deep in nested maps 25 | @function _susy-deep-get( 26 | $map, 27 | $keys... 28 | ) { 29 | $_return: $map; 30 | 31 | @each $key in $keys { 32 | @if type-of($_return) == map { 33 | $_return: map-get($_return, $key); 34 | } 35 | } 36 | 37 | @return $_return; 38 | } 39 | 40 | 41 | // Deep Set 42 | // -------- 43 | // - Set a value deep in nested maps 44 | @function _susy-deep-set( 45 | $map, 46 | $keys-value... 47 | ) { 48 | $_value: nth($keys-value, -1); 49 | $_keys: _susy-truncate-list($keys-value, length($keys-value) - 1); 50 | $_length: length($_keys); 51 | $_return: (); 52 | 53 | @for $i from 1 through $_length { 54 | $_n: 0 - $i; 55 | $_level: _susy-truncate-list($_keys, $_length + $_n); 56 | $_level: _susy-deep-get($map, $_level...); 57 | $_merge: nth($_keys, $_n); 58 | $_merge: ($_merge: $_value); 59 | $_return: if($_level, map-merge($_level, $_merge), $_merge); 60 | $_value: $_return; 61 | } 62 | 63 | @return $_return; 64 | } 65 | 66 | 67 | // Deep Merge 68 | // ---------- 69 | // Return 2 objects of any depth, merged 70 | @function _susy-deep-merge( 71 | $map1, 72 | $map2 73 | ) { 74 | 75 | @if type-of($map1) != map or type-of($map2) != map { 76 | $map1: $map2; 77 | } @else { 78 | @each $key, $value in $map2 { 79 | $_new: ($key: _susy_deep-merge(map-get($map1, $key), $value)); 80 | $map1: map-merge($map1, $_new); 81 | } 82 | } 83 | 84 | @return $map1; 85 | } 86 | 87 | 88 | // Deep Has-Key 89 | // ------------ 90 | // - Return true if a deep key exists 91 | @function _susy-deep-has-key( 92 | $map, 93 | $keys... 94 | ) { 95 | $_return: null; 96 | $_stop: false; 97 | 98 | @each $key in $keys { 99 | @if not($_stop) { 100 | $_return: map-has-key($map, $key); 101 | } 102 | 103 | @if $_return { 104 | $map: map-get($map, $key); 105 | } @else { 106 | $_stop: true; 107 | } 108 | } 109 | 110 | @return $_return; 111 | } 112 | -------------------------------------------------------------------------------- /sass/susy/language/susy/_margins.scss: -------------------------------------------------------------------------------- 1 | // Margin Syntax 2 | // ============= 3 | 4 | // Pre 5 | // --- 6 | // Add spanning-margins before an element. 7 | // - $span : 8 | @mixin pre( 9 | $span 10 | ) { 11 | $inspect: $span; 12 | $span : map-merge((spread: wide), parse-span($span)); 13 | $flow : susy-get(flow, $span); 14 | $split : if(susy-get(gutter-position, $span) == split, true, false); 15 | $gutter : gutter($span); 16 | $span : span($span); 17 | $width : if($split and $gutter, $span + $gutter, $span); 18 | 19 | @include susy-inspect(pre, $inspect); 20 | @include margin-output($width, null, $flow); 21 | } 22 | 23 | // Post 24 | // ---- 25 | // Add spanning-margins after an element. 26 | // - $span : 27 | @mixin post( 28 | $span 29 | ) { 30 | $inspect : $span; 31 | $span : map-merge((spread: wide), parse-span($span)); 32 | $flow : susy-get(flow, $span); 33 | $split : if(susy-get(gutter-position, $span) == split, true, false); 34 | $width : if($split, span($span) + gutter($span), span($span)); 35 | 36 | @include susy-inspect(post, $inspect); 37 | @include margin-output(null, $width, $flow); 38 | } 39 | 40 | // Push 41 | // ---- 42 | // Simple synonymn for pre. 43 | // - $span : 44 | @mixin push( 45 | $span 46 | ) { 47 | @include pre($span); 48 | } 49 | 50 | // Pull 51 | // ---- 52 | // Add negative spanning-margins before an element. 53 | // - $span : 54 | @mixin pull( 55 | $span 56 | ) { 57 | $inspect : $span; 58 | $span : map-merge((spread: wide), parse-span($span)); 59 | $flow : susy-get(flow, $span); 60 | $split : if(susy-get(gutter-position, $span) == split, true, false); 61 | $width : if($split, 0 - span($span) + gutter($span), 0 - span($span)); 62 | 63 | @include susy-inspect(pull, $inspect); 64 | @include margin-output($width, null, $flow); 65 | } 66 | 67 | // Squish 68 | // ------ 69 | // Add spanning-margins before and after an element. 70 | // - $pre : 71 | // - [$post] : 72 | @mixin squish( 73 | $pre, 74 | $post: false 75 | ) { 76 | $inspect : $pre, $post; 77 | $pre : map-merge((spread: wide), parse-span($pre)); 78 | 79 | @if $post { 80 | $post: map-merge((spread: wide), parse-span($post)); 81 | } @else { 82 | $span: susy-get(span, $pre); 83 | @if length($span) > 1 { 84 | $pre: map-merge($pre, (span: nth($span, 1))); 85 | $post: map-merge($pre, (span: nth($span, 2))); 86 | } @else { 87 | $post: $pre; 88 | } 89 | } 90 | 91 | @include susy-inspect(squish, $inspect...); 92 | @include pre($pre); 93 | @include post($post); 94 | } 95 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | /*! 2 | Theme Name: Olympos 3 | Description: Blank Wordpress Theme 4 | Version: 3.0 5 | Author: Ivan Dorić 6 | Author URI: http://www.watch-learn.com/ 7 | Tags: starter theme, light, sass, gulp, livereload 8 | 9 | The CSS, XHTML is released under GPL: 10 | http://www.opensource.org/licenses/gpl-license.php 11 | 12 | */html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{border:0;font-size:100%;font:inherit;vertical-align:baseline;margin:0;padding:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:none}table{border-collapse:collapse;border-spacing:0}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;margin-bottom:2rem;margin-top:0}h1{font-size:4rem;letter-spacing:-0.1rem;line-height:1.2}h2{font-size:3.6rem;letter-spacing:-0.1rem;line-height:1.25}h3{font-size:3rem;letter-spacing:-0.1rem;line-height:1.3}h4{font-size:2.4rem;letter-spacing:-0.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-0.05rem;line-height:1.5}h6{font-size:1.6rem;letter-spacing:0;line-height:1.4}@media (min-width: 40rem){h1{font-size:5rem}h2{font-size:4.2rem}h3{font-size:3.6rem}h4{font-size:3rem}h5{font-size:2.4rem}h6{font-size:1.5rem}}html{font-size:100%}body{-webkit-font-smoothing:antialiased;background:#efefef;font-family:Helvetica Neue, Arial, sans-serif}*{box-sizing:border-box}.container{width:1024px;margin:40px auto;background:#FFF;padding:20px}* html .clearfix{height:1%;overflow:visible}*+html .clearfix{min-height:1%}.clearfix:after{clear:both;content:".";display:block;height:0;visibility:hidden;font-size:0}.clr{clear:both}.lesson-title{border-bottom:1px solid #ccc}.featured{padding:20px;background:red}.post{padding-bottom:20px;border-bottom:1px solid #ccc;margin-bottom:40px}.post .price{color:#C60F13;font-size:24px;font-weight:bold;display:block}.post strong{font-weight:bold}.post h5{font-size:24px;margin-bottom:10px}.post .taxonomy{background:#efefef;padding:10px}.categories{width:49.15254%;float:left}.tags{width:49.15254%;float:left}form{padding:20px;background:#def0f9;margin-bottom:40px}form input,form select{padding:5px}form button{background:#1d729c;color:#fff;border:none;padding:10px 20px;border-radius:5px;font-size:14px}.search-site{text-align:center}.search-site form{background:#333;color:#fff}.search-site form input{width:500px} 13 | 14 | /*# sourceMappingURL=style.css.map */ 15 | -------------------------------------------------------------------------------- /sass/susy/language/susy/_gallery.scss: -------------------------------------------------------------------------------- 1 | // Gallery Syntax 2 | // ============== 3 | 4 | // Gallery 5 | // ------- 6 | // Create an isolated gallery 7 | // - $span : 8 | // - [$selector] : child | of-type 9 | @mixin gallery( 10 | $span, 11 | $selector: child 12 | ) { 13 | $inspect : $span; 14 | $span : parse-span($span); 15 | $span : map-merge($span, (location: 1)); 16 | 17 | $n : susy-get(span, $span); 18 | $columns : susy-get(columns, $span); 19 | $context : susy-count($columns); 20 | $flow : susy-get(flow, $span); 21 | 22 | $inside : is-inside($span); 23 | $from : from($flow); 24 | $line : floor($context / $n); 25 | $symmetrical : is-symmetrical($columns); 26 | 27 | $output: ( 28 | width : null, 29 | float : from, 30 | margin-before : null, 31 | margin-after : null, 32 | padding-before : null, 33 | padding-after : null, 34 | flow : $flow, 35 | ); 36 | 37 | @if $inside { 38 | $gutters: get-gutters($span); 39 | $output: map-merge($output, ( 40 | padding-before: map-get($gutters, before), 41 | padding-after: map-get($gutters, after), 42 | )); 43 | } 44 | 45 | @if $symmetrical { 46 | $output: map-merge($output, (width: get-span-width($span))); 47 | } 48 | 49 | $box : susy-get(box-sizing, $span); 50 | $global-box : if(susy-get(global-box-sizing) == 'border-box', true, false); 51 | 52 | @include susy-inspect(gallery, $inspect); 53 | 54 | // Collective Output 55 | @if $box == border-box or ($inside and not($box) and not($global-box)) { 56 | @include output((box-sizing: border-box)); 57 | } @else if $box == content-box { 58 | @include output((box-sizing: content-box)); 59 | } 60 | 61 | @include float-span-output($output...); 62 | 63 | // Individual Loop 64 | @for $item from 1 through $line { 65 | $nth: '#{$line}n + #{$item}'; 66 | &:nth-#{$selector}(#{$nth}) { 67 | // Individual Prep 68 | $output: ( 69 | width : if($symmetrical, null, get-span-width($span)), 70 | float : null, 71 | margin-before : get-isolation($span), 72 | margin-after : -100%, 73 | padding-before : null, 74 | padding-after : null, 75 | flow : $flow, 76 | ); 77 | 78 | // Individual Output 79 | @include float-span-output($output...); 80 | 81 | @if get-edge($span) == first { 82 | @include break; 83 | @include first($span); 84 | } @else { 85 | @include nobreak; 86 | } 87 | 88 | // Individual Location Increment 89 | $location: get-location($span) + $n; 90 | $location: if($location > $context, 1, $location); 91 | $span: map-merge($span, (location: $location)); 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /sass/susy/su/_grid.scss: -------------------------------------------------------------------------------- 1 | // Column math 2 | // =========== 3 | 4 | 5 | // Is Symmetrical 6 | // -------------- 7 | // Returns true if a grid is symmetrical. 8 | // - [$columns] : | 9 | @function is-symmetrical( 10 | $columns: susy-get(columns) 11 | ) { 12 | $columns: valid-columns($columns); 13 | @return if(type-of($columns) == number, $columns, null); 14 | } 15 | 16 | 17 | // Susy Count 18 | // ---------- 19 | // Find the number of columns in a given layout 20 | // - [$columns] : | 21 | @function susy-count( 22 | $columns: susy-get(columns) 23 | ) { 24 | $columns: valid-columns($columns); 25 | @return is-symmetrical($columns) or length($columns); 26 | } 27 | 28 | 29 | // Susy Sum 30 | // -------- 31 | // Find the total sum of column-units in a layout 32 | // - [$columns] : | 33 | // - [$gutters] : 34 | // - [$spread] : false/narrow | wide | wider 35 | @function susy-sum( 36 | $columns : susy-get(columns), 37 | $gutters : susy-get(gutters), 38 | $spread : false 39 | ) { 40 | $columns: valid-columns($columns); 41 | $gutters: valid-gutters($gutters); 42 | 43 | $spread: if($spread == wide, 0, if($spread == wider, 1, -1)); 44 | $gutter-sum: (susy-count($columns) + $spread) * $gutters; 45 | $column-sum: is-symmetrical($columns); 46 | 47 | @if not($column-sum) { 48 | @each $column in $columns { 49 | $column-sum: ($column-sum or 0) + $column; 50 | } 51 | } 52 | 53 | @return $column-sum + $gutter-sum; 54 | } 55 | 56 | 57 | // Susy Slice 58 | // ---------- 59 | // Return a subset of columns at a given location. 60 | // - $span : 61 | // - $location : 62 | // - [$columns] : | 63 | @function susy-slice( 64 | $span, 65 | $location, 66 | $columns: susy-get(columns) 67 | ) { 68 | $columns: valid-columns($columns); 69 | $sub-columns: $span; 70 | 71 | @if not(is-symmetrical($columns)) { 72 | $location: $location or 1; 73 | $sub-columns: (); 74 | @for $i from $location to ($location + $span) { 75 | $sub-columns: append($sub-columns, nth($columns, $i)); 76 | } 77 | } 78 | 79 | @return $sub-columns; 80 | } 81 | 82 | 83 | // Susy 84 | // ---- 85 | // Find the sum of a column-span. 86 | // - $span : 87 | // - $location : 88 | // - [$columns] : | 89 | // - [$gutters] : 90 | // - [$spread] : false/narrow | wide | wider 91 | @function susy( 92 | $span, 93 | $location : false, 94 | $columns : susy-get(columns), 95 | $gutters : susy-get(gutters), 96 | $spread : false 97 | ) { 98 | $columns: valid-columns($columns); 99 | $gutters: valid-gutters($gutters); 100 | $span: susy-slice($span, $location, $columns); 101 | 102 | @return susy-sum($span, $gutters, $spread); 103 | } 104 | -------------------------------------------------------------------------------- /sass/susy/language/susy/_rows.scss: -------------------------------------------------------------------------------- 1 | // Row Start & End 2 | // =============== 3 | 4 | // Break 5 | // ----- 6 | // Apply to any element that should force a line break. 7 | @mixin break { 8 | @include output((clear: both)); 9 | } 10 | 11 | 12 | // NoBreak 13 | // ------- 14 | // Cancel the break() effect, e.g. when using media queries. 15 | @mixin nobreak { 16 | @include output((clear: none)); 17 | } 18 | 19 | 20 | // Full 21 | // ---- 22 | // - [$context]: 23 | @mixin full( 24 | $context: $susy 25 | ) { 26 | $inspect : $context; 27 | @include susy-inspect(full, $inspect); 28 | @include span(full of parse-grid($context) break); 29 | } 30 | 31 | 32 | // First 33 | // ----- 34 | // - [$context]: 35 | @mixin first( 36 | $context: $susy 37 | ) { 38 | $inspect : $context; 39 | $context : parse-grid($context); 40 | $flow : susy-get(flow, $context); 41 | 42 | @include susy-inspect(first, $inspect); 43 | @if not(is-split($context)) { 44 | @include float-first($flow); 45 | } 46 | } 47 | 48 | @mixin alpha( 49 | $context: $susy 50 | ) { 51 | @include first($context); 52 | } 53 | 54 | 55 | // Last 56 | // ---- 57 | // - [$context]: 58 | @mixin last( 59 | $context: $susy 60 | ) { 61 | $inspect : $context; 62 | $context : parse-grid($context); 63 | 64 | @include susy-inspect(last, $inspect); 65 | 66 | $output: ( 67 | flow: susy-get(flow, $context), 68 | last-flow: susy-get(last-flow, $context), 69 | margin: if(is-split($context), null, 0), 70 | ); 71 | 72 | @include float-last($output...); 73 | } 74 | 75 | @mixin omega( 76 | $context: $susy 77 | ) { 78 | @include last($context); 79 | } 80 | 81 | 82 | // Get Edge 83 | // -------- 84 | // Calculate edge value based on location, if possible 85 | @function get-edge( 86 | $span 87 | ) { 88 | $span : parse-span($span); 89 | $edge : susy-get(edge, $span); 90 | 91 | @if not($edge) { 92 | $count: susy-count(susy-get(columns, $span)); 93 | $location: susy-get(location, $span); 94 | $n: susy-get(span, $span); 95 | 96 | $number: if(type-of($location) == number, true, false); 97 | $index: if($number and unitless($location), true, false); 98 | 99 | @if $n == $count { 100 | $edge: full; 101 | } @else if $location and $n and $index { 102 | @if $location == 1 { 103 | $edge: if($n == $count, full, first); 104 | } @else if $location + $n - 1 == $count { 105 | $edge: last; 106 | } 107 | } 108 | } 109 | 110 | @if $edge == alpha or $edge == omega { 111 | $edge: if($edge == alpha, first, last); 112 | } 113 | 114 | @return $edge; 115 | } 116 | 117 | 118 | // Get Location 119 | // ------------ 120 | // Calculate location value based on edge, if possible 121 | @function get-location( 122 | $span 123 | ) { 124 | $span : parse-span($span); 125 | $location : susy-get(location, $span); 126 | $edge : get-edge($span); 127 | $n : susy-get(span, $span); 128 | 129 | @if $edge and not($location) and type-of($n) == number and unitless($n) { 130 | @if $edge == first { 131 | $location: 1; 132 | } @else if $edge == last { 133 | $location: susy-count(susy-get(columns, $span)) - $n + 1; 134 | } 135 | } 136 | 137 | @return $location 138 | } 139 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 28 | 29 | 30 |
31 |

WP Custom Query - Custom Filters

32 |
33 | 34 | 35 | 36 | 37 | 38 | 39 | 46 | 47 | 48 | 57 | 58 |
59 | 'post', 62 | 'posts_per_page' => -1, 63 | 'meta_query' => array( 64 | array( 65 | 'key' => 'price', 66 | 'type' => 'NUMERIC', 67 | 'value' => array($minprice, $maxprice), 68 | 'compare' => 'BETWEEN' 69 | ), 70 | 71 | array( 72 | 'key' => 'size', 73 | 'value' => $size, 74 | 'compare' => 'LIKE' 75 | ), 76 | 77 | array( 78 | 'key' => 'color', 79 | 'value' => $color, 80 | 'compare' => 'LIKE' 81 | ) 82 | ) 83 | ); 84 | $query = new WP_Query($args); 85 | while($query -> have_posts()) : $query -> the_post(); 86 | ?> 87 |
88 |
89 |
90 |
91 | Price: 92 | 93 |
94 | 95 |
96 | Color:
97 | Size: 98 |
99 |
100 |
101 | 102 |
103 | 104 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /sass/susy/language/susy/_gutters.scss: -------------------------------------------------------------------------------- 1 | // Gutter Syntax 2 | // ============= 3 | 4 | 5 | // Gutters 6 | // ------- 7 | // Set gutters on an element. 8 | // - [$span] : 9 | @mixin gutters( 10 | $span: $susy 11 | ) { 12 | $inspect : $span; 13 | $span : parse-gutters($span); 14 | $_gutters : get-gutters($span); 15 | 16 | $_output: ( 17 | before: map-get($_gutters, before), 18 | after: map-get($_gutters, after), 19 | flow: susy-get(flow, $span), 20 | ); 21 | 22 | @include susy-inspect(gutters, $inspect); 23 | 24 | @if is-inside($span) { 25 | @include padding-output($_output...); 26 | } @else { 27 | @include margin-output($_output...); 28 | } 29 | } 30 | 31 | @mixin gutter( 32 | $span: $susy 33 | ) { 34 | @include gutters($span); 35 | } 36 | 37 | 38 | // Gutter 39 | // ------ 40 | // Return the width of a gutter. 41 | // - [$span] : 42 | @function gutter( 43 | $span: $susy 44 | ) { 45 | $span: parse-gutters($span); 46 | 47 | $_gutters: get-gutters($span); 48 | $_gutters: map-get($_gutters, before) or map-get($_gutters, after); 49 | 50 | @return $_gutters; 51 | } 52 | 53 | @function gutters( 54 | $span: $susy 55 | ) { 56 | @return gutter($span); 57 | } 58 | 59 | 60 | // Get Gutter Width 61 | // ---------------- 62 | // Return gutter width. 63 | // - [$context]: 64 | @function get-gutter-width( 65 | $context: $susy 66 | ) { 67 | $context : parse-gutters($context); 68 | 69 | $_gutters : susy-get(gutters, $context); 70 | $_gutter : susy-get(gutter-override, $context); 71 | 72 | @if $_gutters and ($_gutters > 0) and not($_gutter) { 73 | $_column-width: susy-get(column-width, $context); 74 | $_math: gutter-math($context); 75 | @if $_math == static { 76 | $_gutter: $_gutters * valid-column-math($_math, $_column-width); 77 | } @else { 78 | $_columns : susy-get(columns, $context); 79 | $_spread : if(is-split($context), wide, susy-get(spread, $context)); 80 | $_gutter : percentage($_gutters / susy-sum($_columns, $_gutters, $_spread)); 81 | } 82 | } 83 | 84 | $_gutter: if($_gutter == 'no-gutters' or $_gutter == 'no-gutter', null, $_gutter); 85 | 86 | @return $_gutter; 87 | } 88 | 89 | 90 | // Get Gutters 91 | // ----------- 92 | // Return before and after gutter values. 93 | // - [$context]: 94 | @function get-gutters( 95 | $context: $susy 96 | ) { 97 | $context : parse-gutters($context); 98 | 99 | $_gutter-position : susy-get(gutter-position, $context); 100 | $_gutter : get-gutter-width($context); 101 | 102 | $_return : (before: null, after: null); 103 | 104 | @if is-split($context) and $_gutter { 105 | $_gutter: $_gutter / 2; 106 | $_return: map-merge($_return, (before: $_gutter, after: $_gutter)); 107 | } @else { 108 | $_return: map-merge($_return, ($_gutter-position: $_gutter)); 109 | } 110 | 111 | @return $_return; 112 | } 113 | 114 | 115 | // Is Inside 116 | // --------- 117 | // Returns true if gutters are inside. 118 | // $context: 119 | @function is-inside( 120 | $context 121 | ) { 122 | $_inside: inside inside-static; 123 | $_gutter-position: susy-get(gutter-position, $context); 124 | 125 | @return if(index($_inside, $_gutter-position), true, false); 126 | } 127 | 128 | 129 | // Is Split 130 | // -------- 131 | // Returns true if gutters are split. 132 | // $context: 133 | @function is-split( 134 | $context 135 | ) { 136 | $_split: split inside inside-static; 137 | $_gutter-position: susy-get(gutter-position, $context); 138 | 139 | @return if(index($_split, $_gutter-position), true, false); 140 | } 141 | 142 | 143 | // Gutter Math 144 | // ----------- 145 | // Return the math to use for gutter calculations 146 | // $context: 147 | @function gutter-math( 148 | $context: $susy 149 | ) { 150 | $_return : susy-get(math, $context); 151 | $_return : if(susy-get(gutter-position, $context) == inside-static, static, $_return); 152 | 153 | @return $_return; 154 | } 155 | -------------------------------------------------------------------------------- /filter.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 23 | 24 |
25 |

WP Custom Query - Filters

26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 41 | 42 | 43 | 52 | 53 |
54 | 55 | 'post', 60 | 'posts_per_page' => -1, 61 | 'meta_query' => array( 62 | array( 63 | 'key' => 'price', 64 | 'type' => 'NUMERIC', 65 | 'value' => array($minprice, $maxprice), 66 | 'compare' => 'BETWEEN' 67 | ), 68 | 69 | array( 70 | 'key' => 'size', 71 | 'type' => 'CHAR', 72 | 'value' => $size, 73 | 'compare' => 'LIKE' 74 | ), 75 | 76 | array( 77 | 'key' => 'color', 78 | 'type' => 'CHAR', 79 | 'value' => $color, 80 | 'compare' => 'LIKE' 81 | ) 82 | ) 83 | ); 84 | 85 | 86 | 87 | 88 | $query = new WP_Query($args); 89 | while($query -> have_posts()) : $query -> the_post(); 90 | ?> 91 |
92 |
93 |
94 |
95 | Price: 96 | 97 |
98 | 99 |
100 | Color:
101 | Size: 102 |
103 |
104 |
105 | 106 |
107 | 108 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /sass/susy/language/susy/_breakpoint-plugin.scss: -------------------------------------------------------------------------------- 1 | // Breakpoint Integration 2 | // ====================== 3 | 4 | $susy-media: () !default; 5 | $susy-media-fallback: false !default; 6 | 7 | $_susy-media-context: (); 8 | 9 | 10 | // Susy Breakpoint 11 | // --------------- 12 | // Change grids at different media query breakpoints. 13 | // - $query : [] | | 14 | // - $layout : 15 | // - $no-query : | 16 | @mixin susy-breakpoint( 17 | $query, 18 | $layout: false, 19 | $no-query: $susy-media-fallback 20 | ) { 21 | @include susy-media-router($query, $no-query) { 22 | @if $layout { 23 | @include with-layout($layout) { 24 | @content; 25 | } 26 | } @else { 27 | @content; 28 | } 29 | } 30 | } 31 | 32 | 33 | // Susy Media 34 | // ---------- 35 | // - $query: [] | 36 | // - $no-query: | 37 | @mixin susy-media( 38 | $query, 39 | $no-query: $susy-media-fallback 40 | ) { 41 | $old-context: $_susy-media-context; 42 | $name: if(map-has-key($susy-media, $query), $query, null); 43 | $query: susy-get-media($query); 44 | $query: susy-parse-media($query); 45 | 46 | @include susy-media-context($query, $name); 47 | 48 | @if $no-query and type-of($no-query) != string { 49 | @content; 50 | } @else { 51 | @media #{susy-render-media($query)} { 52 | @content; 53 | } 54 | 55 | @if type-of($no-query) == string { 56 | #{$no-query} & { 57 | @content; 58 | } 59 | } 60 | } 61 | 62 | @include susy-media-context($old-context, $clean: true); 63 | } 64 | 65 | 66 | // Media Router 67 | // ------------ 68 | // Rout media arguments to the correct mixin. 69 | @mixin susy-media-router( 70 | $query, 71 | $no-query: $susy-media-fallback 72 | ) { 73 | @if susy-support(breakpoint, (mixin: breakpoint), $warn: false) { 74 | @include breakpoint($query, $no-query) { 75 | @content; 76 | } 77 | } @else { 78 | @include susy-media($query, $no-query) { 79 | @content; 80 | } 81 | } 82 | } 83 | 84 | 85 | // Update Context 86 | // ------------- 87 | // Set the new media context 88 | @mixin susy-media-context( 89 | $query, 90 | $name: null, 91 | $clean: false 92 | ) { 93 | $query: map-merge((name: $name), $query); 94 | 95 | @if $clean { 96 | $_susy-media-context: $query !global; 97 | } @else { 98 | $_susy-media-context: map-merge($_susy-media-context, $query) !global; 99 | } 100 | } 101 | 102 | 103 | // Media Context 104 | // ------------- 105 | // Return the full media context, or a single media property (e.g. min-width) 106 | @function susy-media-context( 107 | $property: false 108 | ) { 109 | @if $property { 110 | @return map-get($_susy-media-context, $property); 111 | } @else { 112 | @return $_susy-media-context; 113 | } 114 | } 115 | 116 | 117 | // Get Media 118 | // --------- 119 | // Return a named media-query from $susy-media. 120 | // - $name: 121 | @function susy-get-media( 122 | $name 123 | ) { 124 | @if map-has-key($susy-media, $name) { 125 | $map-value: map-get($susy-media, $name); 126 | @if ($name == $map-value) { 127 | $name: $map-value; 128 | } @else { 129 | $name: susy-get-media($map-value); 130 | } 131 | } 132 | 133 | @return $name; 134 | } 135 | 136 | 137 | // Render Media 138 | // ------------ 139 | // Build a media-query string from various media settings 140 | @function susy-render-media( 141 | $query 142 | ) { 143 | $output: null; 144 | @each $property, $value in $query { 145 | $string: null; 146 | 147 | @if $property == media { 148 | $string: $value; 149 | } @else { 150 | $string: '(#{$property}: #{$value})'; 151 | } 152 | 153 | $output: if($output, '#{$output} and #{$string}', $string); 154 | } 155 | 156 | @return $output; 157 | } 158 | 159 | 160 | // Parse Media 161 | // ----------- 162 | // Return parsed media-query settings based on shorthand 163 | @function susy-parse-media( 164 | $query 165 | ) { 166 | $mq: null; 167 | @if type-of($query) == map { 168 | $mq: $query; 169 | } @else if type-of($query) == number { 170 | $mq: (min-width: $query); 171 | } @else if type-of($query) == list and length($query) == 2 { 172 | @if type-of(nth($query, 1)) == number { 173 | $mq: ( 174 | min-width: min($query...), 175 | max-width: max($query...), 176 | ); 177 | } @else { 178 | $mq: (nth($query, 1): nth($query, 2)); 179 | } 180 | } @else { 181 | $mq: (media: '#{$query}'); 182 | } 183 | 184 | @return $mq; 185 | } 186 | -------------------------------------------------------------------------------- /sass/susy/language/susy/_span.scss: -------------------------------------------------------------------------------- 1 | // Span Syntax 2 | // =========== 3 | 4 | // Span [mixin] 5 | // ------------ 6 | // Set a spanning element using shorthand syntax. 7 | // - $span : 8 | @mixin span( 9 | $span 10 | ) { 11 | $inspect: $span; 12 | $span: parse-span($span); 13 | $output: span-math($span); 14 | $nesting: susy-get(span, $span); 15 | $clear: susy-get(clear, $span); 16 | 17 | $box: susy-get(box-sizing, $span); 18 | $content-box: if(susy-get(global-box-sizing) != 'border-box', true, false); 19 | $box: $box or if(is-inside($span) and $content-box, border-box, null); 20 | 21 | @if $clear == break { 22 | @include break; 23 | } @else if $clear == nobreak { 24 | @include nobreak; 25 | } 26 | 27 | @include susy-inspect(span, $inspect); 28 | @include output((box-sizing: $box)); 29 | @include float-span-output($output...); 30 | 31 | @if valid-columns($nesting, silent) { 32 | @include nested($span) { @content; } 33 | } @else { 34 | @content; 35 | } 36 | } 37 | 38 | // Span [function] 39 | // --------------- 40 | // Return the width of a span. 41 | // - $span : 42 | @function span( 43 | $span 44 | ) { 45 | @return get-span-width($span); 46 | } 47 | 48 | // Span Math 49 | // --------- 50 | // Get all the span results. 51 | // - $span: 52 | @function span-math( 53 | $span 54 | ) { 55 | $nest : if(susy-get(role, $span) == nest, true, false); 56 | $split-nest : if(is-split($span) and $nest, true, false); 57 | $edge : get-edge($span); 58 | $location : get-location($span); 59 | 60 | $float : from; 61 | $padding-before : null; 62 | $padding-after : null; 63 | $margin-before : null; 64 | $margin-after : null; 65 | 66 | // calculate widths 67 | $spread: index(map-values($span), spread); 68 | $span: if($split-nest and not($spread), map-merge($span, (spread: wide)), $span); 69 | $width: get-span-width($span); 70 | $gutters: get-gutters($span); 71 | 72 | // apply gutters 73 | @if is-inside($span) { 74 | @if not(susy-get(role, $span)) { 75 | $padding-before: map-get($gutters, before); 76 | $padding-after: map-get($gutters, after); 77 | } 78 | } @else { 79 | @if not($split-nest) { 80 | $margin-before: map-get($gutters, before); 81 | $margin-after: map-get($gutters, after); 82 | } 83 | } 84 | 85 | // special margin handling 86 | @if susy-get(output, $span) == isolate and $location { 87 | $margin-before: get-isolation($span); 88 | $margin-after: -100%; 89 | } @else if $edge { 90 | $is-split: is-split($span); 91 | $pos: susy-get(gutter-position, $span); 92 | 93 | @if $edge == last { 94 | $float: susy-get(last-flow, $span); 95 | } 96 | 97 | @if not($is-split) { 98 | @if $edge == full or ($edge == first and $pos == before) { 99 | $margin-before: 0; 100 | } 101 | @if $edge == full or ($edge == last and $pos == after) { 102 | $margin-after: 0; 103 | } 104 | } 105 | 106 | } 107 | 108 | @return ( 109 | width : $width, 110 | float : $float, 111 | margin-before : $margin-before, 112 | margin-after : $margin-after, 113 | padding-before : $padding-before, 114 | padding-after : $padding-after, 115 | flow : susy-get(flow, $span), 116 | ); 117 | } 118 | 119 | // Get Span Width 120 | // -------------- 121 | // Return span width. 122 | // - $span: 123 | @function get-span-width( 124 | $span 125 | ) { 126 | $span : parse-span($span); 127 | 128 | $n : susy-get(span, $span); 129 | $location : get-location($span); 130 | $columns : susy-get(columns, $span); 131 | $gutters : susy-get(gutters, $span); 132 | $spread : susy-get(spread, $span); 133 | 134 | $context : null; 135 | $span-sum : null; 136 | $width : null; 137 | 138 | @if $n == 'full' { 139 | $pos: susy-get(gutter-position, $span); 140 | $role: susy-get(role, $span); 141 | $n: if($pos == split and $role != nest, susy-count($columns), 100%); 142 | } 143 | 144 | @if type-of($n) != number { 145 | @warn "(#{type-of($n)}) #{$n} is not a valid span."; 146 | } @else if unitless($n) { 147 | $context: susy-sum($columns, $gutters, if(is-split($span), wide, narrow)); 148 | $spread: if(is-inside($span), $spread or wide, $spread); 149 | $span-sum: susy($n, $location, $columns, $gutters, $spread); 150 | 151 | $_math: susy-get(math, $span); 152 | $_column-width: susy-get(column-width, $span); 153 | @if $_math == static { 154 | $width: $span-sum * valid-column-math($_math, $_column-width); 155 | } @else { 156 | $width: percentage($span-sum / $context); 157 | } 158 | } @else { 159 | $width: $n; 160 | } 161 | 162 | @return $width; 163 | } 164 | -------------------------------------------------------------------------------- /404.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Page Not Found :( 6 | 141 | 142 | 143 |
144 |

Not found :(

145 |

Sorry, but the page you were trying to view does not exist.

146 |

It looks like this was the result of either:

147 |
    148 |
  • a mistyped address
  • 149 |
  • an out-of-date link
  • 150 |
151 | 154 | 155 |
156 | 157 | 158 | -------------------------------------------------------------------------------- /sass/susy/language/susy/_bleed.scss: -------------------------------------------------------------------------------- 1 | // Bleed Syntax 2 | // ============ 3 | 4 | // Bleed 5 | // ----- 6 | // Add negative margins, and equal positive padding to create bleed. 7 | // - $bleed : 8 | @mixin bleed( 9 | $bleed: 0 gutter() 10 | ) { 11 | $inspect : $bleed; 12 | $output : get-bleed($bleed); 13 | 14 | @if susy-get(global-box-sizing) != content-box { 15 | $output: map-merge((box-sizing: content-box), $output); 16 | } 17 | 18 | @include susy-inspect(bleed, $inspect); 19 | @include output($output); 20 | } 21 | 22 | 23 | // Bleed-x 24 | // ------- 25 | // Shortcut for horizontal bleed. 26 | // - $bleed : 27 | @mixin bleed-x( 28 | $bleed: gutter() 29 | ) { 30 | $bleed : parse-span($bleed); 31 | $trbl : susy-get(span, $bleed); 32 | 33 | @if length($trbl) == 1 { 34 | $bleed: map-merge($bleed, (span: 0 nth($trbl, 1))); 35 | } @else if length($trbl) == 2 { 36 | $bleed: map-merge($bleed, (span: 0 nth($trbl, 2) 0 nth($trbl, 1))); 37 | } @else { 38 | @warn 'bleed-x only takes 2 lengths, but #{length($trbl)} were passed.'; 39 | } 40 | 41 | @include bleed($bleed); 42 | } 43 | 44 | 45 | // Bleed-y 46 | // ------- 47 | // Shortcut for vertical bleed. 48 | // - $bleed : 49 | @mixin bleed-y( 50 | $bleed: if(function-exists(rhythm), rhythm(1), 1em) 51 | ) { 52 | $bleed : parse-span($bleed); 53 | $trbl : susy-get(span, $bleed); 54 | 55 | @if length($trbl) == 1 { 56 | $bleed: map-merge($bleed, (span: nth($trbl, 1) 0)); 57 | } @else if length($trbl) == 2 { 58 | $bleed: map-merge($bleed, (span: nth($trbl, 1) 0 nth($trbl, 2) 0)); 59 | } @else { 60 | @warn 'bleed-y only takes 2 lengths, but #{length($trbl)} were passed.'; 61 | } 62 | 63 | @include bleed($bleed); 64 | } 65 | 66 | 67 | // Get Bleed 68 | // --------- 69 | // Return bleed output values 70 | // - $bleed: 71 | @function get-bleed( 72 | $bleed 73 | ) { 74 | $bleed : map-merge((spread: wide), parse-span($bleed)); 75 | $trbl : susy-get(span, $bleed); 76 | $short : null; 77 | $output : (); 78 | 79 | @for $i from 1 through length($trbl) { 80 | $this: nth($trbl, $i); 81 | $new: (); 82 | $margin: null; 83 | $padding: null; 84 | $padding-x: null; 85 | 86 | @if $this > 0 { 87 | $this: map-merge($bleed, (span: $this)); 88 | $margin: span($this); 89 | $padding: $margin; 90 | $padding-x: $padding; 91 | } 92 | 93 | @if $margin and $margin > 0 { 94 | $margin: - $margin; 95 | 96 | @if is-inside($this) { 97 | $gutter: gutter($this); 98 | $join: if($gutter and comparable($padding, $gutter), true, false); 99 | $padding-x: if($join and $padding > 0, $padding + $gutter, $padding); 100 | } 101 | } 102 | 103 | @if $i == 1 { 104 | $new: ( 105 | margin-top: $margin, 106 | padding-top: $padding, 107 | margin-right: $margin, 108 | padding-right: $padding-x, 109 | margin-bottom: $margin, 110 | padding-bottom: $padding, 111 | margin-left: $margin, 112 | padding-left: $padding-x, 113 | ); 114 | } @else if $i == 2 { 115 | $new: ( 116 | margin-right: $margin, 117 | padding-right: $padding-x, 118 | margin-left: $margin, 119 | padding-left: $padding-x, 120 | ); 121 | } @else if $i == 3 { 122 | $new: ( 123 | margin-bottom: $margin, 124 | padding-bottom: $padding, 125 | ); 126 | } @else if $i == 4 { 127 | $new: ( 128 | margin-left: $margin, 129 | padding-left: $padding-x, 130 | ); 131 | } 132 | 133 | $output: map-merge($output, $new); 134 | } 135 | 136 | @each $prop, $value in $output { 137 | $output: if($value == 0, map-merge($output, ($prop: null)), $output); 138 | } 139 | 140 | @return bleed-shorthand($output); 141 | } 142 | 143 | // Bleed Shorthand 144 | // --------------- 145 | // Convert bleed output into shorthand when possible. 146 | // - $bleed: 147 | @function bleed-shorthand( 148 | $bleed 149 | ) { 150 | $margin: (); 151 | $padding: (); 152 | $return: (); 153 | 154 | @each $key, $value in $bleed { 155 | @if str-index($key, margin) { 156 | $margin: map-merge($margin, ($key: $value)); 157 | } @else if str-index($key, padding) > 0 { 158 | $padding: map-merge($padding, ($key: $value)); 159 | } 160 | } 161 | 162 | $props: ( 163 | margin: $margin, 164 | padding: $padding, 165 | ); 166 | 167 | @each $name, $map in $props { 168 | $four: if(length(map-keys($map)) == 4, true, false); 169 | $null: if(index(map-values($map), null), true, false); 170 | 171 | @if $four and not($null) { 172 | $top: map-get($map, '#{$name}-top'); 173 | $right: map-get($map, '#{$name}-right'); 174 | $bottom: map-get($map, '#{$name}-bottom'); 175 | $left: map-get($map, '#{$name}-left'); 176 | 177 | $tb: if($top == $bottom, $top, null); 178 | $rl: if($right == $left, $right, null); 179 | $all: if($tb == $rl, $tb, null); 180 | 181 | $new: if($all, $all, null); 182 | 183 | @if not($new) { 184 | @if $tb and $rl { 185 | $new: $tb $rl; 186 | } @else if $rl { 187 | $new: $top $rl $bottom; 188 | } @else { 189 | $new: $top $right $bottom $left; 190 | } 191 | } 192 | 193 | $return: map-merge($return, ($name: $new)); 194 | } @else { 195 | $return: map-merge($return, $map); 196 | } 197 | } 198 | 199 | @return $return; 200 | } 201 | -------------------------------------------------------------------------------- /sass/susy/language/susy/_settings.scss: -------------------------------------------------------------------------------- 1 | // Susy Settings 2 | // ============= 3 | 4 | // Susy Language Defaults 5 | // ---------------------- 6 | // - PRIVATE 7 | @include susy-defaults(( 8 | container: auto, 9 | math: fluid, 10 | output: float, 11 | container-position: center, 12 | gutter-position: after, 13 | global-box-sizing: content-box, 14 | debug: ( 15 | image: hide, 16 | color: rgba(#66f, .25), 17 | output: background, 18 | toggle: top right, 19 | ), 20 | )); 21 | 22 | 23 | // Valid Keyword Values 24 | // -------------------- 25 | // - PRIVATE: DONT'T TOUCH 26 | $susy-keywords: ( 27 | container: auto, 28 | math: static fluid, 29 | output: isolate float, 30 | container-position: left center right, 31 | flow: ltr rtl, 32 | gutter-position: before after split inside inside-static, 33 | box-sizing: border-box content-box, 34 | span: full, 35 | edge: first alpha last omega full, 36 | spread: narrow wide wider, 37 | gutter-override: no-gutters no-gutter, 38 | role: nest, 39 | clear: break nobreak, 40 | debug image: show hide show-columns show-baseline, 41 | debug output: background overlay, 42 | ); 43 | 44 | 45 | // Parse Susy Keywords and Maps 46 | // ---------------------------- 47 | @function parse-settings( 48 | $short: $susy 49 | ) { 50 | $_return: (); 51 | 52 | @if type-of($short) == map { 53 | $_return: $short; 54 | } @else { 55 | @each $item in $short { 56 | // strings 57 | @if type-of($item) == string { 58 | @each $key, $value in $susy-keywords { 59 | @if index($value, $item) { 60 | $_key-value: append($key, $item); 61 | $_return: _susy-deep-set($_return, $_key-value...); 62 | } 63 | } 64 | // maps 65 | } @else if type-of($item) == map { 66 | $_return: map-merge($_return, $item); 67 | } 68 | } 69 | } 70 | 71 | @return $_return; 72 | } 73 | 74 | 75 | // Parse Columns & Gutters 76 | // ----------------------- 77 | @function parse-layout( 78 | $short 79 | ) { 80 | $_return: (); 81 | $_columns: (); 82 | $_gutters: null; 83 | 84 | @if not(unitless(nth(nth($short, 1), 1))) { 85 | $_gutters: nth($short, 1); 86 | } @else { 87 | $_columns: (columns: nth($short, 1)); 88 | $_gutters: if(length($short) > 1, nth($short, 2), $_gutters); 89 | } 90 | 91 | @if type-of($_gutters) == list and length($_gutters) > 0 { 92 | $_gutters: ( 93 | gutters: nth($_gutters, 2) / nth($_gutters, 1), 94 | column-width: nth($_gutters, 1), 95 | ); 96 | } @else { 97 | $_gutters: if($_gutters, (gutters: $_gutters), ()); 98 | } 99 | 100 | $_return: map-merge($_return, $_columns); 101 | $_return: map-merge($_return, $_gutters); 102 | 103 | @return $_return; 104 | } 105 | 106 | 107 | // Parse Grid/Context 108 | // ------------------ 109 | @function parse-grid( 110 | $short: $susy 111 | ) { 112 | $_return: parse-settings($short); 113 | $_layout: (); 114 | 115 | @if type-of($short) == map { 116 | $_return: $short; 117 | } @else { 118 | @each $item in $short { 119 | // number or list 120 | @if type-of($item) == number or type-of($item) == list { 121 | @if type-of($item) == list or unitless($item) { 122 | $_layout: append($_layout, $item); 123 | } @else { 124 | $_return: map-merge($_return, (container: $item)); 125 | } 126 | } 127 | } 128 | 129 | $_layout: if(length($_layout) > 0, parse-layout($_layout), $_layout); 130 | } 131 | 132 | @return map-merge($_return, $_layout); 133 | } 134 | 135 | 136 | // Parse Span 137 | // ---------- 138 | @function parse-span( 139 | $short, 140 | $key: span 141 | ) { 142 | $_return: (); 143 | 144 | @if type-of($short) == map { 145 | $_return: $short; 146 | } @else { 147 | $_at: index($short, at); 148 | 149 | @if $_at { 150 | $_loci: $_at + 1; 151 | $_location: nth($short, $_loci); 152 | $_return: map-merge($_return, (location: $_location)); 153 | $short: set-nth($short, $_at, null); 154 | $short: set-nth($short, $_loci, null); 155 | } 156 | 157 | $_i: 1; 158 | $_span: (); 159 | 160 | @while $_i <= length($short) { 161 | $_this: nth($short, $_i); 162 | 163 | @if type-of($_this) == number { 164 | $_span: append($_span, $_this); 165 | $short: set-nth($short, $_i, null); 166 | } @else if $_this == of { 167 | $short: set-nth($short, $_i, null); 168 | $_i: length($short) + 1; 169 | } 170 | 171 | $_i: $_i + 1; 172 | } 173 | 174 | @if length($_span) > 0 { 175 | $_span: if(length($_span) == 1, nth($_span, 1), $_span); 176 | $_return: map-merge($_return, ($key: $_span)); 177 | } 178 | 179 | $_return: map-merge($_return, parse-grid($short)); 180 | } 181 | 182 | @return $_return; 183 | } 184 | 185 | 186 | // Parse Gutters 187 | // ------------- 188 | @function parse-gutters( 189 | $short: $susy 190 | ) { 191 | $_gutters: parse-span($short, gutter-override); 192 | $_span: susy-get(gutter-override, $_gutters); 193 | 194 | @if $_span and not(map-get($_gutters, columns)) { 195 | $_context: (); 196 | $_new: (); 197 | 198 | @each $item in $_span { 199 | @if type-of($item) == number and unitless($item) { 200 | $_context: append($_context, $item); 201 | } @else { 202 | $_new: append($_new, $item); 203 | } 204 | } 205 | 206 | $_context: parse-grid($_context); 207 | $_new: if(length($_new) == 0, null, $_new); 208 | $_new: if(length($_new) == 1, nth($_new, 1), $_new); 209 | $_new: (gutter-override: if($_new != $_span, $_new, $_span)); 210 | 211 | $_gutters: map-merge($_gutters, $_new); 212 | $_gutters: map-merge($_gutters, $_context); 213 | } 214 | 215 | @return $_gutters; 216 | } 217 | -------------------------------------------------------------------------------- /style.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["style.css","style.scss","_reset.scss","_fonts.scss","_globals.scss","_homepage.scss","susy/output/support/_rem.scss","susy/output/shared/_direction.scss"],"names":[],"mappings":"AAAA;;;;;;;;;;;ECYE,2ZCXyZ,SAAU,eAAgB,aAAc,wBAAyB,SAAU,SAAU,CAAC,8EAA8E,aAAc,CAAC,KAAK,aAAc,CAAC,MAAM,eAAgB,CAAC,aAAa,WAAY,CAAC,oDAAoD,YAAa,CAAC,MAAM,yBAA0B,gBAAiB,CAAE,ECGtwB,YAAc,CACf,kBAQC,gBACA,mBACA,YAAc,CACf,GAGC,eACA,uBACA,eAAiB,CAClB,GAGC,iBACA,uBACA,gBAAkB,CACnB,GAGC,eACA,uBACA,eAAiB,CAClB,GAGC,iBACA,wBACA,gBAAkB,CACnB,GAGC,iBACA,wBACA,eAAiB,CAClB,GAGC,iBACA,iBACA,eAAiB,CAClB,0BAIC,GACE,cAAgB,CACjB,GAEC,gBAAkB,CACnB,GAEC,gBAAkB,CACnB,GAEC,cAAgB,CACjB,GAEC,gBAAkB,CACnB,GAEC,gBAAkB,CACnB,CCtEH,KACI,cAAgB,CACnB,KAGG,mCACA,mBACA,6CAA+C,CAClD,EAGG,qBAAsB,CACzB,WAGG,aACA,iBACA,gBACA,YAAa,CAChB,iBASA,UACA,gBAAkB,CAClB,iBAIA,aAAe,CACf,gBAIA,WACA,YACA,cACA,SACA,kBACA,WAAa,CACb,KAEI,UAAW,CAAG,cCjDf,4BAA8B,CACjC,UAGG,aACA,cAAgB,CACnB,MAGG,oBACA,6BACA,kBAAoB,CAHxB,aAMQ,cACA,eACA,iBACA,aAAe,CATvB,aAaQ,gBAAkB,CAb1B,SAiBQ,eACA,kBAAoB,CAlB5B,gBAsBQ,mBACA,YAAa,CAChB,YCdD,gBAAA,UCA4D,CFmB/D,MCnBG,gBAAA,UCA4D,CFuB/D,KAGG,aACA,mBACA,kBAAoB,CAHxB,uBAMQ,WAAY,CANpB,YAUQ,mBACA,WACA,YACA,kBACA,kBACA,cAAgB,CACnB,aAID,iBAAmB,CADvB,kBAGQ,gBACA,UAAW,CAJnB,wBAOY,WAAY,CACf","file":"style.css","sourcesContent":["/*!\nTheme Name: Olympos\nDescription: Blank Wordpress Theme\nVersion: 3.0\nAuthor: Ivan Dorić\nAuthor URI: http://www.watch-learn.com/\nTags: starter theme, light, sass, gulp, livereload\n\n The CSS, XHTML is released under GPL:\n http://www.opensource.org/licenses/gpl-license.php\n\n*/html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{border:0;font-size:100%;font:inherit;vertical-align:baseline;margin:0;padding:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:none}table{border-collapse:collapse;border-spacing:0}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;margin-bottom:2rem;margin-top:0}h1{font-size:4rem;letter-spacing:-0.1rem;line-height:1.2}h2{font-size:3.6rem;letter-spacing:-0.1rem;line-height:1.25}h3{font-size:3rem;letter-spacing:-0.1rem;line-height:1.3}h4{font-size:2.4rem;letter-spacing:-0.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-0.05rem;line-height:1.5}h6{font-size:1.6rem;letter-spacing:0;line-height:1.4}@media (min-width: 40rem){h1{font-size:5rem}h2{font-size:4.2rem}h3{font-size:3.6rem}h4{font-size:3rem}h5{font-size:2.4rem}h6{font-size:1.5rem}}html{font-size:100%}body{-webkit-font-smoothing:antialiased;background:#efefef;font-family:Helvetica Neue, Arial, sans-serif}*{box-sizing:border-box}.container{width:1024px;margin:40px auto;background:#FFF;padding:20px}* html .clearfix{height:1%;overflow:visible}*+html .clearfix{min-height:1%}.clearfix:after{clear:both;content:\".\";display:block;height:0;visibility:hidden;font-size:0}.clr{clear:both}.lesson-title{border-bottom:1px solid #ccc}.featured{padding:20px;background:red}.post{padding-bottom:20px;border-bottom:1px solid #ccc;margin-bottom:40px}.post .price{color:#C60F13;font-size:24px;font-weight:bold;display:block}.post strong{font-weight:bold}.post h5{font-size:24px;margin-bottom:10px}.post .taxonomy{background:#efefef;padding:10px}.categories{width:49.15254%;float:left}.tags{width:49.15254%;float:left}form{padding:20px;background:#def0f9;margin-bottom:40px}form input,form select{padding:5px}form button{background:#1d729c;color:#fff;border:none;padding:10px 20px;border-radius:5px;font-size:14px}.search-site{text-align:center}.search-site form{background:#333;color:#fff}.search-site form input{width:500px}\n","/* CSS Document */\n/*!\nTheme Name: Olympos\nDescription: Blank Wordpress Theme\nVersion: 3.0\nAuthor: Ivan Dorić\nAuthor URI: http://www.watch-learn.com/\nTags: starter theme, light, sass, gulp, livereload\n\n The CSS, XHTML is released under GPL:\n http://www.opensource.org/licenses/gpl-license.php\n\n*/\n\n/* Vendor */\n@import \"susy\";\n@import \"su\";\n\n\n/* Setup */\n@import \"reset\";\n@import \"mixins\";\n@import \"variables\";\n@import \"fonts\";\n@import \"globals\";\n\n\n/* WP parts */\n@import \"header\";\n@import \"homepage\";\n@import \"sidebar\";\n@import \"footer\";\n\n\n\n\n","/* Eric Meyer's Reset CSS v2.0 - http://cssreset.com */\nhtml,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{border:0;font-size:100%;font:inherit;vertical-align:baseline;margin:0;padding:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:none}table{border-collapse:collapse;border-spacing:0}","// Typography\n// ––––––––––––––––––––––––––––––––––––––––––––––––––\n\np {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-weight: 300;\n margin-bottom: 2rem;\n margin-top: 0;\n}\n\nh1 {\n font-size: 4rem;\n letter-spacing: -0.1rem;\n line-height: 1.2;\n}\n\nh2 {\n font-size: 3.6rem;\n letter-spacing: -0.1rem;\n line-height: 1.25;\n}\n\nh3 {\n font-size: 3rem;\n letter-spacing: -0.1rem;\n line-height: 1.3;\n}\n\nh4 {\n font-size: 2.4rem;\n letter-spacing: -0.08rem;\n line-height: 1.35;\n}\n\nh5 {\n font-size: 1.8rem;\n letter-spacing: -0.05rem;\n line-height: 1.5;\n}\n\nh6 {\n font-size: 1.6rem;\n letter-spacing: 0;\n line-height: 1.4;\n}\n\n// Larger than mobile screen\n@media (min-width: 40rem) {\n h1 {\n font-size: 5rem;\n }\n h2 {\n font-size: 4.2rem;\n }\n h3 {\n font-size: 3.6rem;\n }\n h4 {\n font-size: 3rem;\n }\n h5 {\n font-size: 2.4rem;\n }\n h6 {\n font-size: 1.5rem;\n }\n}\n","/* =======================================================================\n## ++ Globals\n========================================================================== */\nhtml{\n font-size: 100%;\n}\n\nbody{\n -webkit-font-smoothing: antialiased;\n background: #efefef;\n font-family: Helvetica Neue, Arial, sans-serif;\n}\n\n*{\n box-sizing:border-box;\n}\n\n.container{\n width:1024px;\n margin:40px auto;\n background: #FFF;\n padding:20px;\n}\n\n\n/* =======================================================================\n## ++ Cleafix\n========================================================================== */\n\n/* float clearing for IE6 */\n* html .clearfix{\n height: 1%;\n overflow: visible;\n}\n\n/* float clearing for IE7 */\n*+html .clearfix{\n min-height: 1%;\n}\n\n/* float clearing for everyone else */\n.clearfix:after{\n clear: both;\n content: \".\";\n display: block;\n height: 0;\n visibility: hidden;\n font-size: 0;\n}\n\n.clr{clear:both;}\n\n\n\n\n\n\n",".lesson-title{\n border-bottom: 1px solid #ccc;\n}\n\n.featured{\n padding:20px;\n background: red;\n}\n\n.post{\n padding-bottom:20px;\n border-bottom: 1px solid #ccc;\n margin-bottom: 40px;\n \n .price{\n color: #C60F13;\n font-size: 24px;\n font-weight: bold;\n display: block;\n }\n \n strong{\n font-weight: bold;\n }\n\n h5{\n font-size: 24px;\n margin-bottom: 10px;\n }\n\n .taxonomy{\n background: #efefef;\n padding:10px;\n }\n}\n\n.categories{\n @include span(6 of 12);\n}\n\n.tags{\n @include span(6 of 12);\n}\n\nform{\n padding:20px;\n background: #def0f9;\n margin-bottom: 40px;\n \n input, select{\n padding:5px;\n }\n\n button{\n background: #1d729c;\n color:#fff;\n border: none;\n padding:10px 20px;\n border-radius:5px;\n font-size: 14px;\n }\n}\n\n.search-site{\n text-align: center;\n form{\n background: #333;\n color:#fff;\n \n input{\n width:500px;\n }\n }\n}","// rem Support\n// ===========\n\n// rem\n// ---\n// Check for an existing support mixin, or output directly.\n// - $prop : \n// - $val : \n@mixin susy-rem(\n $prop,\n $val\n) {\n $_reqs: (\n variable: rhythm-unit rem-with-px-fallback,\n mixin: rem,\n );\n @if susy-support(rem, $_reqs, $warn: false) and $rhythm-unit == rem {\n @include rem($prop, $val);\n } @else {\n #{$prop}: $val;\n }\n}\n","// Direction Helpers\n// =================\n\n// Susy Flow Defaults\n// ------------------\n// - PRIVATE\n@include susy-defaults((\n flow: ltr,\n));\n\n// Get Direction\n// -------------\n// Return the 'from' or 'to' direction of a ltr or rtl flow.\n// - [$flow] : ltr | rtl\n// - [$key] : from | to\n@function get-direction(\n $flow: map-get($susy-defaults, flow),\n $key: from\n) {\n $return: if($flow == rtl, (from: right, to: left), (from: left, to: right));\n @return map-get($return, $key);\n}\n\n// To\n// --\n// Return the 'to' direction of a flow\n// - [$flow] : ltr | rtl\n@function to(\n $flow: map-get($susy-defaults, flow)\n) {\n @return get-direction($flow, to);\n}\n\n// From\n// ----\n// Return the 'from' direction of a flow\n// - [$flow] : ltr | rtl\n@function from(\n $flow: map-get($susy-defaults, flow)\n) {\n @return get-direction($flow, from);\n}\n"],"sourceRoot":"/source/"} -------------------------------------------------------------------------------- /sass/susy/language/susy/_background.scss: -------------------------------------------------------------------------------- 1 | // Background Grid Syntax 2 | // ====================== 3 | 4 | $susy-overlay-grid-head-exists: false; 5 | 6 | 7 | // Show Grid/s 8 | // ----------- 9 | // Show grid on any element using either background or overlay. 10 | // - [$grid] : 11 | @mixin show-grid( 12 | $grid: $susy 13 | ) { 14 | $inspect: $grid; 15 | $_output: debug-get(output, $grid); 16 | 17 | @include susy-inspect(show-grid, $inspect); 18 | @if $_output == overlay and susy-get(debug image, $grid) != hide { 19 | @include overlay-grid($grid); 20 | } @else { 21 | @include background-grid($grid); 22 | } 23 | } 24 | 25 | @mixin show-grids( 26 | $grid: $susy 27 | ) { 28 | @include show-grid($grid); 29 | } 30 | 31 | // Background Grid 32 | // --------------- 33 | // Show a grid background on any element. 34 | // - [$grid] : 35 | @mixin background-grid( 36 | $grid: $susy 37 | ) { 38 | $inspect : $grid; 39 | $_output : get-background($grid); 40 | 41 | @if length($_output) > 0 { 42 | $_flow: susy-get(flow, $grid); 43 | 44 | $_image: (); 45 | @each $name, $layer in map-get($_output, image) { 46 | $_direction: if($name == baseline, to bottom, to to($_flow)); 47 | $_image: append($_image, linear-gradient($_direction, $layer), comma); 48 | } 49 | $_output: map-merge($_output, (image: $_image)); 50 | 51 | @include background-grid-output($_output...); 52 | @include susy-inspect(background-grid, $inspect); 53 | } 54 | } 55 | 56 | 57 | // Overlay Grid 58 | // ------------ 59 | // Generate an icon to trigger grid-overlays on any given elements. 60 | // $grids... : [] [, ]* 61 | @mixin overlay-grid ( 62 | $grid: $susy 63 | ) { 64 | @if not($susy-overlay-grid-head-exists) { 65 | @at-root head { @include overlay-head($grid); } 66 | @at-root head:before { @include overlay-trigger; } 67 | @at-root head:hover { @include overlay-trigger-hover; } 68 | $susy-overlay-grid-head-exists: true !global; 69 | } 70 | 71 | head:hover ~ &, 72 | head:hover ~ body & { 73 | position: relative; 74 | &:before { 75 | @include grid-overlay-base; 76 | @include background-grid($grid); 77 | } 78 | } 79 | } 80 | 81 | 82 | // [Private] Overlay Trigger 83 | // ------------------------- 84 | @mixin overlay-trigger { 85 | content: "|||"; 86 | display: block; 87 | padding: 5px 10px; 88 | font: { 89 | family: sans-serif; 90 | size: 16px; 91 | weight: bold; 92 | } 93 | } 94 | 95 | 96 | // [Private] Overlay Trigger Hover 97 | // ------------------------------- 98 | @mixin overlay-trigger-hover { 99 | background: rgba(white, .5); 100 | color: red; 101 | } 102 | 103 | 104 | // [Private] Overlay Head 105 | // ---------------------- 106 | // styles to create grid overlay toggle 107 | @mixin overlay-head ( 108 | $grid: $susy 109 | ) { 110 | $_toggle: debug-get(toggle, $grid); 111 | $_horz: null; 112 | $_vert: null; 113 | 114 | @each $side in $_toggle { 115 | $_horz: if($side == left or $side == right, $side, $_horz); 116 | $_vert: if($side == top or $side == bottom, $side, $_vert); 117 | } 118 | 119 | display: block; 120 | position: fixed; 121 | #{$_horz}: 10px; 122 | #{$_vert}: 10px; 123 | z-index: 999; 124 | color: #333; 125 | background: rgba(white, .25); 126 | } 127 | 128 | 129 | // [Private] Grid Overlay Base 130 | // --------------------------- 131 | // Base styles for generating a grid overlay 132 | @mixin grid-overlay-base() { 133 | position: absolute; 134 | top: 0; 135 | left: 0; 136 | bottom: 0; 137 | right: 0; 138 | content: " "; 139 | z-index: 998; 140 | } 141 | 142 | 143 | // Get Symmetrical Background 144 | // -------------------------- 145 | // - $grid: 146 | @function get-background-sym( 147 | $grid 148 | ) { 149 | $grid : parse-grid($grid); 150 | $_gutters : susy-get(gutters, $grid); 151 | $_column-width : susy-get(column-width, $grid); 152 | $_math : susy-get(math, $grid); 153 | 154 | $_color : debug-get(color); 155 | $_trans : transparent; 156 | $_light : lighten($_color, 15%); 157 | 158 | $_end : 1 + $_gutters; 159 | $_after : percentage(1/$_end); 160 | $_stops : (); 161 | $_size : span(1 $grid wide); 162 | 163 | @if is-inside($grid) { 164 | $_stops: $_color, $_light; 165 | } @else if is-split($grid) { 166 | $_split: $_gutters/2; 167 | $_before: percentage($_split/$_end); 168 | $_after: percentage((1 + $_split)/$_end); 169 | $_stops: $_trans $_before, $_color $_before, $_light $_after, $_trans $_after; 170 | } @else { 171 | $_stops: $_color, $_light $_after, $_trans $_after; 172 | } 173 | 174 | @if $_math == static { 175 | $_size: valid-column-math($_math, $_column-width) * $_end; 176 | } 177 | 178 | $_output: ( 179 | image: (columns: $_stops), 180 | size: $_size, 181 | ); 182 | 183 | @return $_output; 184 | } 185 | 186 | 187 | // Get Asymmetrical Inside 188 | // ----------------------- 189 | // - $grid: 190 | @function get-asym-inside( 191 | $grid 192 | ) { 193 | $grid : parse-grid($grid); 194 | $_columns : susy-get(columns, $grid); 195 | 196 | $_color : debug-get(color); 197 | $_light : lighten($_color, 15%); 198 | $_stops : (); 199 | 200 | @for $location from 1 through susy-count($_columns) { 201 | $this-stop: (); 202 | 203 | @if $location == 1 { 204 | $this-stop: append($this-stop, $_color, comma); 205 | } @else { 206 | $start: parse-span(1 at $location $grid); 207 | $start: get-isolation($start); 208 | $this-stop: append($this-stop, $_color $start, comma); 209 | } 210 | 211 | @if $location == susy-count($_columns) { 212 | $this-stop: append($this-stop, $_light, comma); 213 | } @else { 214 | $_end: parse-span(1 at ($location + 1) $grid); 215 | $_end: get-isolation($_end); 216 | $this-stop: append($this-stop, $_light $_end, comma); 217 | } 218 | 219 | $_stops: join($_stops, $this-stop, comma); 220 | } 221 | 222 | @return $_stops; 223 | } 224 | 225 | 226 | // Get Asymmetrical Split 227 | // ---------------------- 228 | // - $grid: 229 | @function get-asym-split( 230 | $grid 231 | ) { 232 | $grid : parse-grid($grid); 233 | $_columns : susy-get(columns, $grid); 234 | 235 | $_color : debug-get(color); 236 | $_light : lighten($_color, 15%); 237 | $_stops : (); 238 | 239 | @for $location from 1 through susy-count($_columns) { 240 | $this-stop: (); 241 | 242 | $start: parse-span(1 at $location $grid); 243 | $start: get-isolation($start); 244 | $this-stop: append($this-stop, transparent $start, comma); 245 | $this-stop: append($this-stop, $_color $start, comma); 246 | 247 | $_end: $start + span(1 at $location $grid); 248 | $this-stop: append($this-stop, $_light $_end, comma); 249 | $this-stop: append($this-stop, transparent $_end, comma); 250 | 251 | $_stops: join($_stops, $this-stop, comma); 252 | } 253 | 254 | @return $_stops; 255 | } 256 | 257 | 258 | // Get Asymmetrical Outside 259 | // ------------------------ 260 | // - $grid: 261 | @function get-asym-outside( 262 | $grid 263 | ) { 264 | $grid : parse-grid($grid); 265 | $_columns : susy-get(columns, $grid); 266 | 267 | $_color : debug-get(color); 268 | $_light : lighten($_color, 15%); 269 | $_trans : transparent; 270 | $_stops : (); 271 | 272 | @for $location from 1 through susy-count($_columns) { 273 | $this-stop: (); 274 | 275 | @if $location == 1 { 276 | $this-stop: append($this-stop, $_color, comma); 277 | } @else { 278 | $start: parse-span(1 at $location $grid); 279 | $start: get-isolation($start); 280 | $this-stop: append($this-stop, $_color $start, comma); 281 | } 282 | 283 | @if $location == susy-count($_columns) { 284 | $this-stop: append($this-stop, $_light, comma); 285 | } @else { 286 | $gutter: get-span-width(first $location $grid); 287 | 288 | $_end: parse-span(1 at ($location + 1) $grid); 289 | $_end: get-isolation($_end); 290 | 291 | $gutter: $_light $gutter, $_trans $gutter, $_trans $_end; 292 | $this-stop: join($this-stop, $gutter, comma); 293 | } 294 | 295 | $_stops: join($_stops, $this-stop, comma); 296 | } 297 | 298 | @return $_stops; 299 | } 300 | 301 | 302 | // Get Asymmetrical Background 303 | // --------------------------- 304 | // - $grid: 305 | @function get-background-asym( 306 | $grid 307 | ) { 308 | $_stops: (); 309 | 310 | @if is-inside($grid) { 311 | $_stops: get-asym-inside($grid); 312 | } @else if is-split($grid) { 313 | $_stops: get-asym-split($grid); 314 | } @else { 315 | $_stops: get-asym-outside($grid); 316 | } 317 | 318 | @return (image: (columns: $_stops)); 319 | } 320 | 321 | 322 | // Get Background 323 | // -------------- 324 | // - $grid: 325 | @function get-background( 326 | $grid 327 | ) { 328 | $grid : parse-grid($grid); 329 | $_show : susy-get(debug image, $grid); 330 | $_return : (); 331 | 332 | @if $_show and $_show != 'hide' { 333 | $_columns: susy-get(columns, $grid); 334 | 335 | @if $_show != 'show-baseline' { 336 | $_sym: is-symmetrical($_columns); 337 | $_return: if($_sym, get-background-sym($grid), get-background-asym($grid)); 338 | $_return: map-merge($_return, (clip: content-box)); 339 | } 340 | 341 | @if $_show != 'show-columns' 342 | and global-variable-exists(base-line-height) 343 | and type-of($base-line-height) == 'number' 344 | and not unitless($base-line-height) { 345 | $_color: variable-exists('grid-background-baseline-color'); 346 | $_color: if($_color, $grid-background-baseline-color, #000); 347 | 348 | $_image: map-get($_return, image); 349 | $_size: map-get($_return, size); 350 | $_baseline: (baseline: ($_color 1px, transparent 1px)); 351 | $_baseline-size: 100% $base-line-height; 352 | 353 | $_return: map-merge($_return, ( 354 | image: if($_image, map-merge($_image, $_baseline), $_baseline), 355 | size: if($_size, ($_size, $_baseline-size), $_baseline-size), 356 | )); 357 | 358 | @if $_show == 'show' { 359 | $_clip: map-get($_return, clip); 360 | $_return: map-merge($_return, (clip: join($_clip, border-box, comma))); 361 | } 362 | } @else if $_show == 'show-baseline' { 363 | @warn 'Please provide a $base-line-height with the desired height and units'; 364 | } 365 | } 366 | 367 | @if map-get($_return, image) { 368 | $_return: map-merge($_return, (flow: susy-get(flow, $grid))); 369 | } 370 | 371 | @return $_return; 372 | } 373 | 374 | 375 | // Get Debug 376 | // --------- 377 | // Return the value of a debug setting 378 | // - $key: 379 | @function debug-get( 380 | $key, 381 | $grid: $susy 382 | ) { 383 | $key: join(debug, $key, space); 384 | @return susy-get($key, $grid); 385 | } 386 | -------------------------------------------------------------------------------- /js/olympos.min.js: -------------------------------------------------------------------------------- 1 | jQuery(document).ready(function(e){}),!function(e,t,n){function i(e){var t=C.className,n=T._config.classPrefix||"";if(k&&(t=t.baseVal),T._config.enableJSClass){var i=new RegExp("(^|\\s)"+n+"no-js(\\s|$)");t=t.replace(i,"$1"+n+"js$2")}T._config.enableClasses&&(t+=" "+n+e.join(" "+n),k?C.className.baseVal=t:C.className=t)}function r(e,t){return typeof e===t}function o(){var e,t,n,i,o,a,s;for(var l in x){if(e=[],t=x[l],t.name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(n=0;nf;f++)if(m=e[f],v=W.style[m],d(m,"-")&&(m=l(m)),W.style[m]!==n){if(o||r(i,"undefined"))return s(),"pfx"==t?m:!0;try{W.style[m]=i}catch(b){}if(W.style[m]!=v)return s(),"pfx"==t?m:!0}return s(),!1}function g(e,t,n,i,o){var a=e.charAt(0).toUpperCase()+e.slice(1),s=(e+" "+R.join(a+" ")+a).split(" ");return r(t,"string")||r(t,"undefined")?v(s,t,i,o):(s=(e+" "+N.join(a+" ")+a).split(" "),p(s,t,n))}function b(e,t,i){return g(e,n,n,t,i)}var y=[],x=[],w={_version:"3.0.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){x.push({name:e,fn:t,options:n})},addAsyncTest:function(e){x.push({name:null,fn:e})}},T=function(){};T.prototype=w,T=new T,T.addTest("cookies",function(){try{t.cookie="cookietest=1";var e=-1!=t.cookie.indexOf("cookietest=");return t.cookie="cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT",e}catch(n){return!1}}),T.addTest("ie8compat",!e.addEventListener&&!!t.documentMode&&7===t.documentMode),T.addTest("serviceworker","serviceWorker"in navigator),T.addTest("svg",!!t.createElementNS&&!!t.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect),T.addTest("websockets","WebSocket"in e&&2===e.WebSocket.CLOSING);var C=t.documentElement,k="svg"===C.nodeName.toLowerCase();T.addTest("canvas",function(){var e=a("canvas");return!(!e.getContext||!e.getContext("2d"))}),T.addTest("canvastext",function(){return T.canvas===!1?!1:"function"==typeof a("canvas").getContext("2d").fillText});var S=a("input"),_="search tel url email datetime date month week time datetime-local number range color".split(" "),E={};T.inputtypes=function(e){for(var i,r,o,a=e.length,s=":)",l=0;a>l;l++)S.setAttribute("type",i=e[l]),o="text"!==S.type&&"style"in S,o&&(S.value=s,S.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(i)&&S.style.WebkitAppearance!==n?(C.appendChild(S),r=t.defaultView,o=r.getComputedStyle&&"textfield"!==r.getComputedStyle(S,null).WebkitAppearance&&0!==S.offsetHeight,C.removeChild(S)):/^(search|tel)$/.test(i)||(o=/^(url|email|number)$/.test(i)?S.checkValidity&&S.checkValidity()===!1:S.value!=s)),E[e[l]]=!!o;return E}(_),T.addTest("userdata",!!a("div").addBehavior),T.addTest("video",function(){var e=a("video"),t=!1;try{(t=!!e.canPlayType)&&(t=new Boolean(t),t.ogg=e.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),t.h264=e.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),t.webm=e.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""),t.vp9=e.canPlayType('video/webm; codecs="vp9"').replace(/^no$/,""),t.hls=e.canPlayType('application/x-mpegURL; codecs="avc1.42E01E"').replace(/^no$/,""))}catch(n){}return t}),T.addTest("multiplebgs",function(){var e=a("a").style;return e.cssText="background:url(https://),url(https://),red url(https://)",/(url\s*\(.*?){3}/.test(e.background)}),T.addTest("rgba",function(){var e=a("a").style;return e.cssText="background-color:rgba(150,255,150,.5)",(""+e.backgroundColor).indexOf("rgba")>-1}),T.addTest("placeholder","placeholder"in a("input")&&"placeholder"in a("textarea")),T.addTest("inlinesvg",function(){var e=a("div");return e.innerHTML="","http://www.w3.org/2000/svg"==("undefined"!=typeof SVGRect&&e.firstChild&&e.firstChild.namespaceURI)});var P=function(e){function n(t,n){var r;return t?(n&&"string"!=typeof n||(n=a(n||"div")),t="on"+t,r=t in n,!r&&i&&(n.setAttribute||(n=a("div")),n.setAttribute(t,""),r="function"==typeof n[t],n[t]!==e&&(n[t]=e),n.removeAttribute(t)),r):!1}var i=!("onblur"in t.documentElement);return n}();w.hasEvent=P,T.addTest("ambientlight",P("devicelight",e)),T.addTest("inputsearchevent",P("search"));var z=w._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):[];w._prefixes=z,T.addTest("csscalc",function(){var e="width:",t="calc(10px);",n=a("a");return n.style.cssText=e+z.join(t+e),!!n.style.length}),T.addTest("cssgradients",function(){var e="background-image:",t="gradient(linear,left top,right bottom,from(#9f9),to(white));",n="linear-gradient(left top,#9f9, white);",i=e+z.join(n+e).slice(0,-e.length);T._config.usePrefixes&&(i+=e+"-webkit-"+t);var r=a("a"),o=r.style;return o.cssText=i,(""+o.backgroundImage).indexOf("gradient")>-1}),T.addTest("opacity",function(){var e=a("a").style;return e.cssText=z.join("opacity:.55;"),/^0.55$/.test(e.opacity)});var j="CSS"in e&&"supports"in e.CSS,L="supportsCSS"in e;T.addTest("supports",j||L);var A;!function(){var e={}.hasOwnProperty;A=r(e,"undefined")||r(e.call,"undefined")?function(e,t){return t in e&&r(e.constructor.prototype[t],"undefined")}:function(t,n){return e.call(t,n)}}(),w._l={},w.on=function(e,t){this._l[e]||(this._l[e]=[]),this._l[e].push(t),T.hasOwnProperty(e)&&setTimeout(function(){T._trigger(e,T[e])},0)},w._trigger=function(e,t){if(this._l[e]){var n=this._l[e];setTimeout(function(){var e,i;for(e=0;ea;a++){var s=z[a],l=s.toUpperCase()+"_"+i;if(l in o)return"@-"+s.toLowerCase()+"-"+t}return!1};w.atRule=M;var N=w._config.usePrefixes?q.toLowerCase().split(" "):[];w._domPrefixes=N;var B=w.testStyles=c;T.addTest("touchevents",function(){var n;if("ontouchstart"in e||e.DocumentTouch&&t instanceof DocumentTouch)n=!0;else{var i=["@media (",z.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");B(i,function(e){n=9===e.offsetTop})}return n}),T.addTest("checked",function(){return B("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}",function(e){var t=a("input");return t.setAttribute("type","checkbox"),t.setAttribute("checked","checked"),e.appendChild(t),20===t.offsetLeft})}),B("#modernizr{display: table; direction: ltr}#modernizr div{display: table-cell; padding: 10px}",function(e){var t,n=e.childNodes;t=n[0].offsetLeft=9,r=533>t&&e.match(/android/gi);return n||r||i}();O?T.addTest("fontface",!1):B('@font-face {font-family:"font";src:url("https://")}',function(e,n){var i=t.getElementById("smodernizr"),r=i.sheet||i.styleSheet,o=r?r.cssRules&&r.cssRules[0]?r.cssRules[0].cssText:r.cssText||"":"",a=/src/i.test(o)&&0===o.indexOf(n.split(" ")[0]);T.addTest("fontface",a)}),T.addTest("cssinvalid",function(){return B("#modernizr input{height:0;border:0;padding:0;margin:0;width:10px} #modernizr input:invalid{width:50px}",function(e){var t=a("input");return t.required=!0,e.appendChild(t),t.clientWidth>10})}),B("#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}",function(e){T.addTest("lastchild",e.lastChild.offsetWidth>e.firstChild.offsetWidth)},2),B("#modernizr div {width:1px} #modernizr div:nth-child(2n) {width:2px;}",function(e){T.addTest("nthchild",function(){for(var t=e.getElementsByTagName("div"),n=!0,i=0;5>i;i++)n=n&&t[i].offsetWidth===i%2+1;return n})},5);var $=function(){var t=e.matchMedia||e.msMatchMedia;return t?function(e){var n=t(e);return n&&n.matches||!1}:function(t){var n=!1;return c("@media "+t+" { #modernizr { position: absolute; } }",function(t){n="absolute"==(e.getComputedStyle?e.getComputedStyle(t,null):t.currentStyle).position}),n}}();w.mq=$,T.addTest("mediaqueries",$("only all"));var H={elem:a("modernizr")};T._q.push(function(){delete H.elem});var W={style:H.elem.style};T._q.unshift(function(){delete W.style});var U=w.testProp=function(e,t,i){return v([e],n,t,i)};T.addTest("textshadow",U("textShadow","1px 1px")),w.testAllProps=g,w.testAllProps=b,T.addTest("bgpositionxy",function(){return b("backgroundPositionX","3px",!0)&&b("backgroundPositionY","5px",!0)}),T.addTest("backgroundsize",b("backgroundSize","100%",!0)),T.addTest("bgsizecover",b("backgroundSize","cover")),T.addTest("borderimage",b("borderImage","url() 1",!0)),T.addTest("borderradius",b("borderRadius","0px",!0)),T.addTest("boxshadow",b("boxShadow","1px 1px",!0)),T.addTest("boxsizing",b("boxSizing","border-box",!0)&&(t.documentMode===n||t.documentMode>7)),T.addTest("flexbox",b("flexBasis","1px",!0)),T.addTest("flexboxlegacy",b("boxDirection","reverse",!0)),T.addTest("flexboxtweener",b("flexAlign","end",!0)),T.addTest("flexwrap",b("flexWrap","wrap",!0)),T.addAsyncTest(function(){function n(){function r(){try{var e=a("div"),n=a("span"),i=e.style,r=0,o=0,s=!1,l=t.body.firstElementChild||t.body.firstChild;return e.appendChild(n),n.innerHTML="Bacon ipsum dolor sit amet jerky velit in culpa hamburger et. Laborum dolor proident, enim dolore duis commodo et strip steak. Salami anim et, veniam consectetur dolore qui tenderloin jowl velit sirloin. Et ad culpa, fatback cillum jowl ball tip ham hock nulla short ribs pariatur aute. Pig pancetta ham bresaola, ut boudin nostrud commodo flank esse cow tongue culpa. Pork belly bresaola enim pig, ea consectetur nisi. Fugiat officia turkey, ea cow jowl pariatur ullamco proident do laborum velit sausage. Magna biltong sint tri-tip commodo sed bacon, esse proident aliquip. Ullamco ham sint fugiat, velit in enim sed mollit nulla cow ut adipisicing nostrud consectetur. Proident dolore beef ribs, laborum nostrud meatball ea laboris rump cupidatat labore culpa. Shankle minim beef, velit sint cupidatat fugiat tenderloin pig et ball tip. Ut cow fatback salami, bacon ball tip et in shank strip steak bresaola. In ut pork belly sed mollit tri-tip magna culpa veniam, short ribs qui in andouille ham consequat. Dolore bacon t-bone, velit short ribs enim strip steak nulla. Voluptate labore ut, biltong swine irure jerky. Cupidatat excepteur aliquip salami dolore. Ball tip strip steak in pork dolor. Ad in esse biltong. Dolore tenderloin exercitation ad pork loin t-bone, dolore in chicken ball tip qui pig. Ut culpa tongue, sint ribeye dolore ex shank voluptate hamburger. Jowl et tempor, boudin pork chop labore ham hock drumstick consectetur tri-tip elit swine meatball chicken ground round. Proident shankle mollit dolore. Shoulder ut duis t-bone quis reprehenderit. Meatloaf dolore minim strip steak, laboris ea aute bacon beef ribs elit shank in veniam drumstick qui. Ex laboris meatball cow tongue pork belly. Ea ball tip reprehenderit pig, sed fatback boudin dolore flank aliquip laboris eu quis. Beef ribs duis beef, cow corned beef adipisicing commodo nisi deserunt exercitation. Cillum dolor t-bone spare ribs, ham hock est sirloin. Brisket irure meatloaf in, boudin pork belly sirloin ball tip. Sirloin sint irure nisi nostrud aliqua. Nostrud nulla aute, enim officia culpa ham hock. Aliqua reprehenderit dolore sunt nostrud sausage, ea boudin pork loin ut t-bone ham tempor. Tri-tip et pancetta drumstick laborum. Ham hock magna do nostrud in proident. Ex ground round fatback, venison non ribeye in.",t.body.insertBefore(e,l),i.cssText="position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;",r=n.offsetHeight,o=n.offsetWidth,i.cssText="position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;"+z.join("hyphens:auto; "),s=n.offsetHeight!=r||n.offsetWidth!=o,t.body.removeChild(e),e.removeChild(n),s}catch(d){return!1}}function o(e,n){try{var i=a("div"),r=a("span"),o=i.style,s=0,l=!1,d=!1,u=!1,c=t.body.firstElementChild||t.body.firstChild;return o.cssText="position:absolute;top:0;left:0;overflow:visible;width:1.25em;",i.appendChild(r),t.body.insertBefore(i,c),r.innerHTML="mm",s=r.offsetHeight,r.innerHTML="m"+e+"m",d=r.offsetHeight>s,n?(r.innerHTML="m
m",s=r.offsetWidth,r.innerHTML="m"+e+"m",u=r.offsetWidth>s):u=!0,d===!0&&u===!0&&(l=!0),t.body.removeChild(i),i.removeChild(r),l}catch(f){return!1}}function l(n){try{var i,r=a("input"),o=a("div"),s="lebowski",l=!1,d=t.body.firstElementChild||t.body.firstChild;if(o.innerHTML=s+n+s,t.body.insertBefore(o,d),t.body.insertBefore(r,o),r.setSelectionRange?(r.focus(),r.setSelectionRange(0,0)):r.createTextRange&&(i=r.createTextRange(),i.collapse(!0),i.moveEnd("character",0),i.moveStart("character",0),i.select()),e.find)l=e.find(s+s);else try{i=e.self.document.body.createTextRange(),l=i.findText(s+s)}catch(u){l=!1}return t.body.removeChild(o),t.body.removeChild(r),l}catch(u){return!1}}return t.body||t.getElementsByTagName("body")[0]?(s("csshyphens",function(){if(!b("hyphens","auto",!0))return!1;try{return r()}catch(e){return!1}}),s("softhyphens",function(){try{return o("­",!0)&&o("​",!1)}catch(e){return!1}}),void s("softhyphensfind",function(){try{return l("­")&&l("​")}catch(e){return!1}})):void setTimeout(n,i)}var i=300;setTimeout(n,i)}),T.addTest("csstransforms",function(){return-1===navigator.userAgent.indexOf("Android 2.")&&b("transform","scale(1)",!0)}),T.addTest("csstransforms3d",function(){var e=!!b("perspective","1px",!0),t=T._config.usePrefixes;if(e&&(!t||"webkitPerspective"in C.style)){var n;T.supports?n="@supports (perspective: 1px)":(n="@media (transform-3d)",t&&(n+=",(-webkit-transform-3d)")),n+="{#modernizr{left:9px;position:absolute;height:5px;margin:0;padding:0;border:0}}",B(n,function(t){e=9===t.offsetLeft&&5===t.offsetHeight})}return e}),T.addTest("preserve3d",b("transformStyle","preserve-3d")),T.addTest("csstransitions",b("transition","all",!0));var V=w.prefixed=function(e,t,n){return 0===e.indexOf("@")?M(e):(-1!=e.indexOf("-")&&(e=l(e)),t?g(e,t,n):g(e,"pfx"))};T.addTest("objectfit",!!V("objectFit"),{aliases:["object-fit"]}),o(),i(y),delete w.addTest,delete w.addAsyncTest;for(var I=0;If;f++)if(m=e[f],b=$.style[m],l(m,"-")&&(m=d(m)),$.style[m]!==n){if(o||r(i,"undefined"))return s(),"pfx"==t?m:!0;try{$.style[m]=i}catch(v){}if($.style[m]!=b)return s(),"pfx"==t?m:!0}return s(),!1}function g(e,t,n,i,o){var a=e.charAt(0).toUpperCase()+e.slice(1),s=(e+" "+q.join(a+" ")+a).split(" ");return r(t,"string")||r(t,"undefined")?b(s,t,i,o):(s=(e+" "+M.join(a+" ")+a).split(" "),p(s,t,n))}function v(e,t,i){return g(e,n,n,t,i)}var y=[],x=[],T={_version:"3.0.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){x.push({name:e,fn:t,options:n})},addAsyncTest:function(e){x.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=T,Modernizr=new Modernizr,Modernizr.addTest("cookies",function(){try{t.cookie="cookietest=1";var e=-1!=t.cookie.indexOf("cookietest=");return t.cookie="cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT",e}catch(n){return!1}}),Modernizr.addTest("ie8compat",!e.addEventListener&&!!t.documentMode&&7===t.documentMode),Modernizr.addTest("serviceworker","serviceWorker"in navigator),Modernizr.addTest("svg",!!t.createElementNS&&!!t.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect),Modernizr.addTest("websockets","WebSocket"in e&&2===e.WebSocket.CLOSING);var w=t.documentElement,k="svg"===w.nodeName.toLowerCase();Modernizr.addTest("canvas",function(){var e=a("canvas");return!(!e.getContext||!e.getContext("2d"))}),Modernizr.addTest("canvastext",function(){return Modernizr.canvas===!1?!1:"function"==typeof a("canvas").getContext("2d").fillText});var C=a("input"),S="search tel url email datetime date month week time datetime-local number range color".split(" "),_={};Modernizr.inputtypes=function(e){for(var i,r,o,a=e.length,s=":)",d=0;a>d;d++)C.setAttribute("type",i=e[d]),o="text"!==C.type&&"style"in C,o&&(C.value=s,C.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(i)&&C.style.WebkitAppearance!==n?(w.appendChild(C),r=t.defaultView,o=r.getComputedStyle&&"textfield"!==r.getComputedStyle(C,null).WebkitAppearance&&0!==C.offsetHeight,w.removeChild(C)):/^(search|tel)$/.test(i)||(o=/^(url|email|number)$/.test(i)?C.checkValidity&&C.checkValidity()===!1:C.value!=s)),_[e[d]]=!!o;return _}(S),Modernizr.addTest("userdata",!!a("div").addBehavior),Modernizr.addTest("video",function(){var e=a("video"),t=!1;try{(t=!!e.canPlayType)&&(t=new Boolean(t),t.ogg=e.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),t.h264=e.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),t.webm=e.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""),t.vp9=e.canPlayType('video/webm; codecs="vp9"').replace(/^no$/,""),t.hls=e.canPlayType('application/x-mpegURL; codecs="avc1.42E01E"').replace(/^no$/,""))}catch(n){}return t}),Modernizr.addTest("multiplebgs",function(){var e=a("a").style;return e.cssText="background:url(https://),url(https://),red url(https://)",/(url\s*\(.*?){3}/.test(e.background)}),Modernizr.addTest("rgba",function(){var e=a("a").style;return e.cssText="background-color:rgba(150,255,150,.5)",(""+e.backgroundColor).indexOf("rgba")>-1}),Modernizr.addTest("placeholder","placeholder"in a("input")&&"placeholder"in a("textarea")),Modernizr.addTest("inlinesvg",function(){var e=a("div");return e.innerHTML="","http://www.w3.org/2000/svg"==("undefined"!=typeof SVGRect&&e.firstChild&&e.firstChild.namespaceURI)});var E=function(e){function n(t,n){var r;return t?(n&&"string"!=typeof n||(n=a(n||"div")),t="on"+t,r=t in n,!r&&i&&(n.setAttribute||(n=a("div")),n.setAttribute(t,""),r="function"==typeof n[t],n[t]!==e&&(n[t]=e),n.removeAttribute(t)),r):!1}var i=!("onblur"in t.documentElement);return n}();T.hasEvent=E,Modernizr.addTest("ambientlight",E("devicelight",e)),Modernizr.addTest("inputsearchevent",E("search"));var z=T._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):[];T._prefixes=z,Modernizr.addTest("csscalc",function(){var e="width:",t="calc(10px);",n=a("a");return n.style.cssText=e+z.join(t+e),!!n.style.length}),Modernizr.addTest("cssgradients",function(){var e="background-image:",t="gradient(linear,left top,right bottom,from(#9f9),to(white));",n="linear-gradient(left top,#9f9, white);",i=e+z.join(n+e).slice(0,-e.length);Modernizr._config.usePrefixes&&(i+=e+"-webkit-"+t);var r=a("a"),o=r.style;return o.cssText=i,(""+o.backgroundImage).indexOf("gradient")>-1}),Modernizr.addTest("opacity",function(){var e=a("a").style;return e.cssText=z.join("opacity:.55;"),/^0.55$/.test(e.opacity)});var P="CSS"in e&&"supports"in e.CSS,j="supportsCSS"in e;Modernizr.addTest("supports",P||j);var L;!function(){var e={}.hasOwnProperty;L=r(e,"undefined")||r(e.call,"undefined")?function(e,t){return t in e&&r(e.constructor.prototype[t],"undefined")}:function(t,n){return e.call(t,n)}}(),T._l={},T.on=function(e,t){this._l[e]||(this._l[e]=[]),this._l[e].push(t),Modernizr.hasOwnProperty(e)&&setTimeout(function(){Modernizr._trigger(e,Modernizr[e])},0)},T._trigger=function(e,t){if(this._l[e]){var n=this._l[e];setTimeout(function(){var e,i;for(e=0;ea;a++){var s=z[a],d=s.toUpperCase()+"_"+i;if(d in o)return"@-"+s.toLowerCase()+"-"+t}return!1};T.atRule=A;var M=T._config.usePrefixes?R.toLowerCase().split(" "):[];T._domPrefixes=M;var B=T.testStyles=c;Modernizr.addTest("touchevents",function(){var n;if("ontouchstart"in e||e.DocumentTouch&&t instanceof DocumentTouch)n=!0;else{var i=["@media (",z.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");B(i,function(e){n=9===e.offsetTop})}return n}),Modernizr.addTest("checked",function(){return B("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}",function(e){var t=a("input");return t.setAttribute("type","checkbox"),t.setAttribute("checked","checked"),e.appendChild(t),20===t.offsetLeft})}),B("#modernizr{display: table; direction: ltr}#modernizr div{display: table-cell; padding: 10px}",function(e){var t,n=e.childNodes;t=n[0].offsetLeft=9,r=533>t&&e.match(/android/gi);return n||r||i}();N?Modernizr.addTest("fontface",!1):B('@font-face {font-family:"font";src:url("https://")}',function(e,n){var i=t.getElementById("smodernizr"),r=i.sheet||i.styleSheet,o=r?r.cssRules&&r.cssRules[0]?r.cssRules[0].cssText:r.cssText||"":"",a=/src/i.test(o)&&0===o.indexOf(n.split(" ")[0]);Modernizr.addTest("fontface",a)}),Modernizr.addTest("cssinvalid",function(){return B("#modernizr input{height:0;border:0;padding:0;margin:0;width:10px} #modernizr input:invalid{width:50px}",function(e){var t=a("input");return t.required=!0,e.appendChild(t),t.clientWidth>10})}),B("#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}",function(e){Modernizr.addTest("lastchild",e.lastChild.offsetWidth>e.firstChild.offsetWidth)},2),B("#modernizr div {width:1px} #modernizr div:nth-child(2n) {width:2px;}",function(e){Modernizr.addTest("nthchild",function(){for(var t=e.getElementsByTagName("div"),n=!0,i=0;5>i;i++)n=n&&t[i].offsetWidth===i%2+1;return n})},5);var H=function(){var t=e.matchMedia||e.msMatchMedia;return t?function(e){var n=t(e);return n&&n.matches||!1}:function(t){var n=!1;return c("@media "+t+" { #modernizr { position: absolute; } }",function(t){n="absolute"==(e.getComputedStyle?e.getComputedStyle(t,null):t.currentStyle).position}),n}}();T.mq=H,Modernizr.addTest("mediaqueries",H("only all"));var W={elem:a("modernizr")};Modernizr._q.push(function(){delete W.elem});var $={style:W.elem.style};Modernizr._q.unshift(function(){delete $.style});var O=T.testProp=function(e,t,i){return b([e],n,t,i)};Modernizr.addTest("textshadow",O("textShadow","1px 1px")),T.testAllProps=g,T.testAllProps=v,Modernizr.addTest("bgpositionxy",function(){return v("backgroundPositionX","3px",!0)&&v("backgroundPositionY","5px",!0)}),Modernizr.addTest("backgroundsize",v("backgroundSize","100%",!0)),Modernizr.addTest("bgsizecover",v("backgroundSize","cover")),Modernizr.addTest("borderimage",v("borderImage","url() 1",!0)),Modernizr.addTest("borderradius",v("borderRadius","0px",!0)),Modernizr.addTest("boxshadow",v("boxShadow","1px 1px",!0)),Modernizr.addTest("boxsizing",v("boxSizing","border-box",!0)&&(t.documentMode===n||t.documentMode>7)),Modernizr.addTest("flexbox",v("flexBasis","1px",!0)),Modernizr.addTest("flexboxlegacy",v("boxDirection","reverse",!0)),Modernizr.addTest("flexboxtweener",v("flexAlign","end",!0)),Modernizr.addTest("flexwrap",v("flexWrap","wrap",!0)),Modernizr.addAsyncTest(function(){function n(){function r(){try{var e=a("div"),n=a("span"),i=e.style,r=0,o=0,s=!1,d=t.body.firstElementChild||t.body.firstChild;return e.appendChild(n),n.innerHTML="Bacon ipsum dolor sit amet jerky velit in culpa hamburger et. Laborum dolor proident, enim dolore duis commodo et strip steak. Salami anim et, veniam consectetur dolore qui tenderloin jowl velit sirloin. Et ad culpa, fatback cillum jowl ball tip ham hock nulla short ribs pariatur aute. Pig pancetta ham bresaola, ut boudin nostrud commodo flank esse cow tongue culpa. Pork belly bresaola enim pig, ea consectetur nisi. Fugiat officia turkey, ea cow jowl pariatur ullamco proident do laborum velit sausage. Magna biltong sint tri-tip commodo sed bacon, esse proident aliquip. Ullamco ham sint fugiat, velit in enim sed mollit nulla cow ut adipisicing nostrud consectetur. Proident dolore beef ribs, laborum nostrud meatball ea laboris rump cupidatat labore culpa. Shankle minim beef, velit sint cupidatat fugiat tenderloin pig et ball tip. Ut cow fatback salami, bacon ball tip et in shank strip steak bresaola. In ut pork belly sed mollit tri-tip magna culpa veniam, short ribs qui in andouille ham consequat. Dolore bacon t-bone, velit short ribs enim strip steak nulla. Voluptate labore ut, biltong swine irure jerky. Cupidatat excepteur aliquip salami dolore. Ball tip strip steak in pork dolor. Ad in esse biltong. Dolore tenderloin exercitation ad pork loin t-bone, dolore in chicken ball tip qui pig. Ut culpa tongue, sint ribeye dolore ex shank voluptate hamburger. Jowl et tempor, boudin pork chop labore ham hock drumstick consectetur tri-tip elit swine meatball chicken ground round. Proident shankle mollit dolore. Shoulder ut duis t-bone quis reprehenderit. Meatloaf dolore minim strip steak, laboris ea aute bacon beef ribs elit shank in veniam drumstick qui. Ex laboris meatball cow tongue pork belly. Ea ball tip reprehenderit pig, sed fatback boudin dolore flank aliquip laboris eu quis. Beef ribs duis beef, cow corned beef adipisicing commodo nisi deserunt exercitation. Cillum dolor t-bone spare ribs, ham hock est sirloin. Brisket irure meatloaf in, boudin pork belly sirloin ball tip. Sirloin sint irure nisi nostrud aliqua. Nostrud nulla aute, enim officia culpa ham hock. Aliqua reprehenderit dolore sunt nostrud sausage, ea boudin pork loin ut t-bone ham tempor. Tri-tip et pancetta drumstick laborum. Ham hock magna do nostrud in proident. Ex ground round fatback, venison non ribeye in.",t.body.insertBefore(e,d),i.cssText="position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;",r=n.offsetHeight,o=n.offsetWidth,i.cssText="position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;"+z.join("hyphens:auto; "),s=n.offsetHeight!=r||n.offsetWidth!=o,t.body.removeChild(e),e.removeChild(n),s}catch(l){return!1}}function o(e,n){try{var i=a("div"),r=a("span"),o=i.style,s=0,d=!1,l=!1,u=!1,c=t.body.firstElementChild||t.body.firstChild;return o.cssText="position:absolute;top:0;left:0;overflow:visible;width:1.25em;",i.appendChild(r),t.body.insertBefore(i,c),r.innerHTML="mm",s=r.offsetHeight,r.innerHTML="m"+e+"m",l=r.offsetHeight>s,n?(r.innerHTML="m
m",s=r.offsetWidth,r.innerHTML="m"+e+"m",u=r.offsetWidth>s):u=!0,l===!0&&u===!0&&(d=!0),t.body.removeChild(i),i.removeChild(r),d}catch(f){return!1}}function d(n){try{var i,r=a("input"),o=a("div"),s="lebowski",d=!1,l=t.body.firstElementChild||t.body.firstChild;if(o.innerHTML=s+n+s,t.body.insertBefore(o,l),t.body.insertBefore(r,o),r.setSelectionRange?(r.focus(),r.setSelectionRange(0,0)):r.createTextRange&&(i=r.createTextRange(),i.collapse(!0),i.moveEnd("character",0),i.moveStart("character",0),i.select()),e.find)d=e.find(s+s);else try{i=e.self.document.body.createTextRange(),d=i.findText(s+s)}catch(u){d=!1}return t.body.removeChild(o),t.body.removeChild(r),d}catch(u){return!1}}return t.body||t.getElementsByTagName("body")[0]?(s("csshyphens",function(){if(!v("hyphens","auto",!0))return!1;try{return r()}catch(e){return!1}}),s("softhyphens",function(){try{return o("­",!0)&&o("​",!1)}catch(e){return!1}}),void s("softhyphensfind",function(){try{return d("­")&&d("​")}catch(e){return!1}})):void setTimeout(n,i)}var i=300;setTimeout(n,i)}),Modernizr.addTest("csstransforms",function(){return-1===navigator.userAgent.indexOf("Android 2.")&&v("transform","scale(1)",!0)}),Modernizr.addTest("csstransforms3d",function(){var e=!!v("perspective","1px",!0),t=Modernizr._config.usePrefixes;if(e&&(!t||"webkitPerspective"in w.style)){var n;Modernizr.supports?n="@supports (perspective: 1px)":(n="@media (transform-3d)",t&&(n+=",(-webkit-transform-3d)")),n+="{#modernizr{left:9px;position:absolute;height:5px;margin:0;padding:0;border:0}}",B(n,function(t){e=9===t.offsetLeft&&5===t.offsetHeight})}return e}),Modernizr.addTest("preserve3d",v("transformStyle","preserve-3d")),Modernizr.addTest("csstransitions",v("transition","all",!0));var U=T.prefixed=function(e,t,n){return 0===e.indexOf("@")?A(e):(-1!=e.indexOf("-")&&(e=d(e)),t?g(e,t,n):g(e,"pfx"))};Modernizr.addTest("objectfit",!!U("objectFit"),{aliases:["object-fit"]}),o(),i(y),delete T.addTest,delete T.addAsyncTest;for(var V=0;V