├── scss ├── base │ ├── _icons.scss │ ├── _fonts.scss │ ├── _wysiwyg_specific.scss │ ├── _drupal.scss │ ├── _forms.scss │ ├── _base.scss │ └── _typography.scss ├── pages │ └── _user.scss ├── global │ ├── _colors.scss │ ├── _breakpoints.scss │ └── _mixins.scss ├── vendor │ ├── sassy-maps │ │ ├── sassy-maps │ │ │ ├── _map-to-string.scss │ │ │ ├── _map-set.scss │ │ │ └── _map-get.scss │ │ ├── _sassy-maps.scss │ │ └── _memo.scss │ ├── _vendor.scss │ ├── breakpoint │ │ ├── breakpoint │ │ │ ├── _no-query.scss │ │ │ ├── parsers │ │ │ │ ├── single │ │ │ │ │ └── _default.scss │ │ │ │ ├── double │ │ │ │ │ ├── _double-string.scss │ │ │ │ │ ├── _default.scss │ │ │ │ │ └── _default-pair.scss │ │ │ │ ├── triple │ │ │ │ │ └── _default.scss │ │ │ │ ├── _single.scss │ │ │ │ ├── _resolution.scss │ │ │ │ ├── _triple.scss │ │ │ │ ├── _double.scss │ │ │ │ ├── resolution │ │ │ │ │ └── _resolution.scss │ │ │ │ └── _query.scss │ │ │ ├── _respond-to.scss │ │ │ ├── _context.scss │ │ │ ├── _helpers.scss │ │ │ └── _parsers.scss │ │ └── _breakpoint.scss │ └── normalize │ │ └── _normalize.scss ├── print.scss ├── style.scss ├── wysiwyg.scss ├── layout │ └── _layout.scss └── component │ └── _tabs.scss ├── templates ├── block--navigation.tpl.php ├── region--content.tpl.php ├── block--system--main-menu.tpl.php ├── region.tpl.php ├── region--sidebar_first.tpl.php ├── region--sidebar_second.tpl.php ├── region--footer.tpl.php ├── field.tpl.php ├── block--header.tpl.php ├── block--menu.tpl.php ├── block.tpl.php ├── block--views.tpl.php ├── user-picture.tpl.php ├── user-profile-item.tpl.php ├── user-profile-category.tpl.php ├── search-results.tpl.php ├── node.tpl.php ├── search-block-form.tpl.php ├── html.tpl.php ├── toolbar.tpl.php ├── overlay.tpl.php ├── user-profile.tpl.php ├── page.tpl.php ├── taxonomy-term.tpl.php ├── comment-wrapper.tpl.php ├── maintenance-page.tpl.php ├── search-result.tpl.php └── comment.tpl.php ├── css ├── print.css ├── print.css.map ├── wysiwyg.css.map ├── wysiwyg.css └── style.css ├── package.json ├── .editorconfig ├── .gitignore ├── bastard.info ├── js └── scripts.js ├── Gruntfile.js ├── README.md └── template.php /scss/base/_icons.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Icons 3 | */ 4 | -------------------------------------------------------------------------------- /templates/block--navigation.tpl.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /scss/pages/_user.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * User Login page 3 | */ 4 | -------------------------------------------------------------------------------- /templates/region--content.tpl.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /scss/base/_fonts.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * Font stack 4 | * 5 | */ 6 | -------------------------------------------------------------------------------- /scss/global/_colors.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Sitewide color variables 3 | // 4 | 5 | $border-gray: #ccc; 6 | -------------------------------------------------------------------------------- /scss/base/_wysiwyg_specific.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * WYSIWYG Specific Styles 3 | */ 4 | 5 | // Nothing here 6 | -------------------------------------------------------------------------------- /scss/vendor/sassy-maps/sassy-maps/_map-to-string.scss: -------------------------------------------------------------------------------- 1 | @function map-to-string($map) { 2 | @return inspect($map); 3 | } -------------------------------------------------------------------------------- /scss/print.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Print Layout 3 | */ 4 | 5 | #sidebar-first, 6 | #navigation, 7 | #block-system-main-menu, 8 | #footer { 9 | display: none; 10 | } 11 | -------------------------------------------------------------------------------- /scss/vendor/_vendor.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Include vendor packages 3 | // 4 | 5 | @import 'sassy-maps/sassy-maps'; 6 | @import 'breakpoint/breakpoint'; 7 | @import 'normalize/normalize'; 8 | -------------------------------------------------------------------------------- /templates/block--system--main-menu.tpl.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /templates/region.tpl.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 | 6 | -------------------------------------------------------------------------------- /css/print.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Print Layout 3 | */ 4 | #sidebar-first, 5 | #navigation, 6 | #block-system-main-menu, 7 | #footer { 8 | display: none; } 9 | 10 | /*# sourceMappingURL=print.css.map */ -------------------------------------------------------------------------------- /templates/region--sidebar_first.tpl.php: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /templates/region--sidebar_second.tpl.php: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /scss/style.scss: -------------------------------------------------------------------------------- 1 | @import 'global/breakpoints'; 2 | @import 'global/colors'; 3 | @import 'global/mixins'; 4 | @import 'vendor/vendor'; 5 | @import 'base'; 6 | @import 'layout'; 7 | @import 'component'; 8 | @import 'pages'; 9 | -------------------------------------------------------------------------------- /templates/region--footer.tpl.php: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /css/print.css.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "print.css", 4 | "sources": [ 5 | "../scss/print.scss" 6 | ], 7 | "names": [], 8 | "mappings": "AAAA;;GAEG;AAEH,AAAA,cAAc;AACd,AADc,WACH;AACX,AADW,uBACY;AACvB,AADuB,OAChB,CAAC;EACN,OAAO,EAAE,IAAI,GACd" 9 | } -------------------------------------------------------------------------------- /scss/wysiwyg.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * WYSIWYG Specific Styles 3 | */ 4 | 5 | @import 'global/breakpoints'; 6 | @import 'global/colors'; 7 | @import 'global/mixins'; 8 | @import 'vendor/vendor'; 9 | @import 'base/typography'; 10 | @import 'base/wysiwyg_specific'; 11 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bastard", 3 | "version": "0.2.0", 4 | "devDependencies": { 5 | "grunt": "^1.0.1", 6 | "grunt-autoprefixer": "^3.0.4", 7 | "grunt-contrib-watch": "^1.0.0", 8 | "grunt-sass": "^2.0.0", 9 | "grunt-sass-globbing": "^1.5.1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /scss/global/_breakpoints.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Sitewide breakpoint variables 3 | // 4 | 5 | $wide: 1600px; 6 | $normal_wide: 1400px; 7 | $normal: 1100px; 8 | $tablet_wide: 900px; 9 | $tablet_narrow: 650px; 10 | $smartphone_wide: 480px; 11 | $smartphone_narrow: 380px; 12 | 13 | // Switch from mobile to desktop nav 14 | $nav-switch: $normal; -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Drupal editor configuration normalization 2 | # @see http://editorconfig.org/ 3 | 4 | # This is the top-most .editorconfig file; do not search in parent directories. 5 | root = true 6 | 7 | # All files. 8 | [*] 9 | end_of_line = LF 10 | indent_style = space 11 | indent_size = 2 12 | charset = utf-8 13 | trim_trailing_whitespace = true 14 | insert_final_newline = true 15 | -------------------------------------------------------------------------------- /templates/field.tpl.php: -------------------------------------------------------------------------------- 1 |
> 2 | 3 | > 4 | 5 | $item) : ?> 6 | 7 | 8 |
9 | -------------------------------------------------------------------------------- /scss/layout/_layout.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Base layouts 3 | */ 4 | 5 | #page { // Prevent any unintended horizontal scrolling 6 | width: 100%; 7 | overflow: hidden; 8 | min-height: 800px; 9 | } 10 | 11 | %container, 12 | .container, 13 | div.tabs { 14 | @include breakpoint($tablet_narrow) { 15 | width: 94%; 16 | max-width: 1700px; 17 | margin: 0 auto; 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /templates/block--header.tpl.php: -------------------------------------------------------------------------------- 1 |
> 2 | 3 | subject): ?> 4 | >subject; ?> 5 | 6 | 7 | 8 |
9 | -------------------------------------------------------------------------------- /scss/vendor/sassy-maps/_sassy-maps.scss: -------------------------------------------------------------------------------- 1 | ////////////////////////////// 2 | // To String 3 | ////////////////////////////// 4 | @import "sassy-maps/map-to-string"; 5 | 6 | ////////////////////////////// 7 | // Getting Helpers 8 | ////////////////////////////// 9 | @import "sassy-maps/map-get"; 10 | 11 | ////////////////////////////// 12 | // Setting Helpers 13 | ////////////////////////////// 14 | @import "sassy-maps/map-set"; -------------------------------------------------------------------------------- /templates/block--menu.tpl.php: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore Mac files 2 | .DS_Store 3 | 4 | # Ignore PHPStorm files 5 | .idea/ 6 | .idea/* 7 | 8 | # Ignore output css 9 | css/style.css.map 10 | 11 | # Ignore node modules 12 | node_modules 13 | npm-debug.log 14 | 15 | # Ignore bower components 16 | bower_components 17 | 18 | # Ignore sass cache 19 | .sass-cache 20 | 21 | # Ignore files that get auto filled 22 | scss/_*.scss 23 | 24 | # Ignore tmp directory 25 | 26 | tmp/ 27 | tmp/* -------------------------------------------------------------------------------- /scss/vendor/breakpoint/breakpoint/_no-query.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint-no-query($query) { 2 | @if type-of($query) == 'list' { 3 | $keyword: nth($query, 1); 4 | 5 | @if type-of($keyword) == 'string' and ($keyword == 'no-query' or $keyword == 'no query' or $keyword == 'fallback') { 6 | @return nth($query, 2); 7 | } 8 | @else { 9 | @return false; 10 | } 11 | } 12 | @else { 13 | @return false; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /templates/block.tpl.php: -------------------------------------------------------------------------------- 1 |
> 2 | 3 | subject): ?> 4 | >subject; ?> 5 | 6 | 7 |
8 | 9 |
10 |
11 | -------------------------------------------------------------------------------- /templates/block--views.tpl.php: -------------------------------------------------------------------------------- 1 |
> 2 | 3 | subject): ?> 4 | >subject ?> 5 | 6 | 7 |
8 | 9 |
10 |
11 | -------------------------------------------------------------------------------- /scss/vendor/breakpoint/breakpoint/parsers/single/_default.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint-parse-default($feature) { 2 | $default: $breakpoint-default-feature; 3 | 4 | // Set Context 5 | $context-setter: private-breakpoint-set-context($default, $feature); 6 | 7 | @if ($breakpoint-to-ems == true) and (type-of($feature) == 'number') { 8 | @return '#{$default}: #{breakpoint-to-base-em($feature)}'; 9 | } 10 | @else { 11 | @return '#{$default}: #{$feature}'; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /scss/vendor/breakpoint/breakpoint/parsers/double/_double-string.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint-parse-double-string($first, $second) { 2 | $feature: ''; 3 | $value: ''; 4 | 5 | // Test to see which is the feature and which is the value 6 | @if (breakpoint-string-value($first) == true) { 7 | $feature: $first; 8 | $value: $second; 9 | } 10 | @else { 11 | $feature: $second; 12 | $value: $first; 13 | } 14 | 15 | // Set Context 16 | $context-setter: private-breakpoint-set-context($feature, $value); 17 | 18 | @return '(#{$feature}: #{$value})'; 19 | } 20 | -------------------------------------------------------------------------------- /scss/vendor/breakpoint/breakpoint/parsers/double/_default.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint-parse-double-default($first, $second) { 2 | $feature: ''; 3 | $value: ''; 4 | 5 | @if type-of($first) == 'string' { 6 | $feature: $first; 7 | $value: $second; 8 | } 9 | @else { 10 | $feature: $second; 11 | $value: $first; 12 | } 13 | 14 | // Set Context 15 | $context-setter: private-breakpoint-set-context($feature, $value); 16 | 17 | @if ($breakpoint-to-ems == true) { 18 | $value: breakpoint-to-base-em($value); 19 | } 20 | 21 | @return '(#{$feature}: #{$value})' 22 | } 23 | -------------------------------------------------------------------------------- /bastard.info: -------------------------------------------------------------------------------- 1 | name = Bastard 2 | description = Bastard Starter Theme 3 | core = 7.x 4 | 5 | ; CSS 6 | ; ------------------------------ 7 | stylesheets[all][] = css/style.css 8 | stylesheets[print][] = css/print.css 9 | 10 | ; JS 11 | ; ------------------------------ 12 | scripts[] = js/scripts.js 13 | 14 | ; REGIONS 15 | ; ------------------------------ 16 | regions[header] = Header 17 | regions[navigation] = Navigation 18 | regions[highlighted] = Highlighted 19 | regions[help] = Help 20 | regions[content] = Content 21 | regions[content_below] = Below Content 22 | regions[sidebar_first] = Sidebar first 23 | regions[footer] = Footer 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /scss/vendor/breakpoint/breakpoint/parsers/triple/_default.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint-parse-triple-default($feature, $first, $second) { 2 | 3 | // Sort into min and max 4 | $min: min($first, $second); 5 | $max: max($first, $second); 6 | 7 | // Set Context 8 | $context-setter: private-breakpoint-set-context(min-#{$feature}, $min); 9 | $context-setter: private-breakpoint-set-context(max-#{$feature}, $max); 10 | 11 | // Make them EMs if need be 12 | @if ($breakpoint-to-ems == true) { 13 | $min: breakpoint-to-base-em($min); 14 | $max: breakpoint-to-base-em($max); 15 | } 16 | 17 | @return '(min-#{$feature}: #{$min}) and (max-#{$feature}: #{$max})'; 18 | } 19 | -------------------------------------------------------------------------------- /templates/user-picture.tpl.php: -------------------------------------------------------------------------------- 1 | 17 | 18 |
19 | 20 |
21 | 22 | -------------------------------------------------------------------------------- /scss/vendor/breakpoint/breakpoint/parsers/double/_default-pair.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint-parse-default-pair($first, $second) { 2 | $default: $breakpoint-default-pair; 3 | $min: ''; 4 | $max: ''; 5 | 6 | // Sort into min and max 7 | $min: min($first, $second); 8 | $max: max($first, $second); 9 | 10 | // Set Context 11 | $context-setter: private-breakpoint-set-context(min-#{$default}, $min); 12 | $context-setter: private-breakpoint-set-context(max-#{$default}, $max); 13 | 14 | // Make them EMs if need be 15 | @if ($breakpoint-to-ems == true) { 16 | $min: breakpoint-to-base-em($min); 17 | $max: breakpoint-to-base-em($max); 18 | } 19 | 20 | @return '(min-#{$default}: #{$min}) and (max-#{$default}: #{$max})'; 21 | } 22 | -------------------------------------------------------------------------------- /scss/base/_drupal.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Base Drupal styles 3 | */ 4 | 5 | /** 6 | * Hide elements visually, but keep them available for screen-readers. 7 | * 8 | * Used for information required for screen-reader users to understand and use 9 | * the site where visual display is undesirable. Information provided in this 10 | * manner should be kept concise, to avoid unnecessary burden on the user. 11 | */ 12 | .element-invisible { 13 | position: absolute; 14 | clip: rect(1px, 1px, 1px, 1px); 15 | 16 | &.element-focusable, 17 | &.element-focusable:active 18 | &.element-focusable:focus { 19 | position: static; 20 | clip: auto; 21 | } 22 | } 23 | 24 | .file-icon { // Hide Drupal's default file icons 25 | display: none; 26 | } 27 | 28 | -------------------------------------------------------------------------------- /scss/vendor/breakpoint/breakpoint/parsers/_single.scss: -------------------------------------------------------------------------------- 1 | ////////////////////////////// 2 | // Import Pieces 3 | ////////////////////////////// 4 | @import "single/default"; 5 | 6 | @function breakpoint-parse-single($feature, $empty-media, $first) { 7 | $parsed: ''; 8 | $leader: ''; 9 | // If we're forcing 10 | @if not ($empty-media) or not ($first) { 11 | $leader: 'and '; 12 | } 13 | 14 | // If it's a single feature that can stand alone, we let it 15 | @if (breakpoint-single-string($feature)) { 16 | $parsed: $feature; 17 | // Set Context 18 | $context-setter: private-breakpoint-set-context($feature, $feature); 19 | } 20 | // If it's not a stand alone feature, we pass it off to the default handler. 21 | @else { 22 | $parsed: breakpoint-parse-default($feature); 23 | } 24 | 25 | @return $leader + '(' + $parsed + ')'; 26 | } 27 | -------------------------------------------------------------------------------- /scss/vendor/sassy-maps/_memo.scss: -------------------------------------------------------------------------------- 1 | @import "sassy-maps"; 2 | 3 | $Memoization-Table: () !default; 4 | 5 | ////////////////////////////// 6 | // Memoization Set 7 | ////////////////////////////// 8 | @function memo-set($module, $key, $value) { 9 | $module: "#{$module}"; 10 | $key: "#{$key}"; 11 | 12 | $Memoization-Table: map-set-deep($Memoization-Table, ($module $key), $value) !global; 13 | 14 | @return true; 15 | } 16 | 17 | @mixin memo-set($module, $key, $value) { 18 | $holder: memo-set($module, $key, $value); 19 | } 20 | 21 | ////////////////////////////// 22 | // Memoization Get 23 | ////////////////////////////// 24 | @function memo-get($module, $key) { 25 | $module: "#{$module}"; 26 | $key: "#{$key}"; 27 | $private-sassy-maps-suppress-warnings: true !global; 28 | $result: map-get-deep($Memoization-Table, $module, $key); 29 | $private-sassy-maps-suppress-warnings: false !global; 30 | @return $result; 31 | } 32 | -------------------------------------------------------------------------------- /scss/base/_forms.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Base form styles 3 | */ 4 | 5 | label { 6 | display: block; 7 | } 8 | 9 | input[type="text"], 10 | input[type="password"], 11 | input[type="email"], 12 | textarea { 13 | border: 1px solid $border-gray; 14 | -moz-appearance: none; 15 | -webkit-appearance: none; 16 | padding: 10px 20px; 17 | max-width: 100%; 18 | background: white; 19 | outline: none; 20 | transition: background .2s; 21 | border-radius: 20px; 22 | &:focus { 23 | background: #eee; 24 | } 25 | } 26 | 27 | select { 28 | -moz-appearance: none; 29 | -webkit-appearance: none; 30 | max-width: 100%; 31 | } 32 | 33 | %button, 34 | input[type="submit"] { 35 | border: none; 36 | -moz-appearance: none; 37 | -webkit-appearance: none; 38 | padding: 10px 20px; 39 | transition: background .2s; 40 | } 41 | 42 | .form-item { 43 | margin-bottom: 20px; 44 | } 45 | 46 | .description { 47 | font-size: 16px; 48 | } 49 | 50 | -------------------------------------------------------------------------------- /scss/vendor/breakpoint/breakpoint/parsers/_resolution.scss: -------------------------------------------------------------------------------- 1 | @import "resolution/resolution"; 2 | 3 | @function breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first) { 4 | $leader: ''; 5 | // If we're forcing 6 | @if not ($empty-media) or not ($first) { 7 | $leader: 'and '; 8 | } 9 | 10 | @if $breakpoint-resolutions and $query-resolution { 11 | $resolutions: breakpoint-make-resolutions($query-resolution); 12 | $length: length($resolutions); 13 | $query-holder: ''; 14 | 15 | @for $i from 1 through $length { 16 | $query: '#{$query-print} #{$leader}#{nth($resolutions, $i)}'; 17 | @if $i == 1 { 18 | $query-holder: $query; 19 | } 20 | @else { 21 | $query-holder: '#{$query-holder}, #{$query}'; 22 | } 23 | } 24 | 25 | @return $query-holder; 26 | } 27 | @else { 28 | // Return with attached resolution 29 | @return $query-print; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /scss/vendor/breakpoint/breakpoint/parsers/_triple.scss: -------------------------------------------------------------------------------- 1 | ////////////////////////////// 2 | // Import Pieces 3 | ////////////////////////////// 4 | @import "triple/default"; 5 | 6 | @function breakpoint-parse-triple($feature, $empty-media, $first) { 7 | $parsed: ''; 8 | $leader: ''; 9 | 10 | // If we're forcing 11 | @if not ($empty-media) or not ($first) { 12 | $leader: 'and '; 13 | } 14 | 15 | // separate the string features from the value numbers 16 | $string: null; 17 | $numbers: null; 18 | @each $val in $feature { 19 | @if type-of($val) == string { 20 | $string: $val; 21 | } 22 | @else { 23 | @if type-of($numbers) == 'null' { 24 | $numbers: $val; 25 | } 26 | @else { 27 | $numbers: append($numbers, $val); 28 | } 29 | } 30 | } 31 | 32 | $parsed: breakpoint-parse-triple-default($string, nth($numbers, 1), nth($numbers, 2)); 33 | 34 | @return $leader + $parsed; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /scss/base/_base.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Base Drupal styles 3 | */ 4 | 5 | * { 6 | box-sizing: border-box; 7 | &:before, 8 | &:after { 9 | box-sizing: border-box; 10 | } 11 | } 12 | 13 | *::selection { 14 | 15 | } 16 | 17 | body { 18 | line-height: 1.4; 19 | -webkit-font-smoothing: antialiased; 20 | -moz-font-smoothing: antialiased; 21 | font-smoothing: antialiased; 22 | 23 | html &.admin-menu { 24 | margin-top: 130px !important; 25 | @include breakpoint(400px) { 26 | margin-top: 90px !important; 27 | } 28 | @include breakpoint(600px) { 29 | margin-top: 60px !important; 30 | } 31 | @include breakpoint(1020px) { 32 | margin-top: 29px !important; 33 | } 34 | } 35 | } 36 | 37 | main { 38 | ol, ul { 39 | overflow: hidden; 40 | } 41 | } 42 | 43 | a { 44 | transition: .2s color; 45 | text-decoration: none; 46 | } 47 | 48 | img { 49 | max-width: 100%; 50 | height: auto; 51 | } 52 | 53 | .clearfix { 54 | @include clearfix; 55 | } 56 | 57 | -------------------------------------------------------------------------------- /scss/base/_typography.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Typography 3 | */ 4 | 5 | h1 { 6 | font-size: 45px; 7 | line-height: 1.1; 8 | 9 | &.large { 10 | font-size: 65px; 11 | } 12 | a { 13 | color: inherit; 14 | transition: color .2s; 15 | } 16 | } 17 | 18 | h2 { 19 | font-size: 40px; 20 | line-height: 1.2; 21 | 22 | a { 23 | color: inherit; 24 | transition: color .2s; 25 | } 26 | } 27 | 28 | h3 { 29 | font-size: 27px; 30 | line-height: 1.2; 31 | text-transform: none; 32 | margin: 0 0 10px 0; 33 | 34 | a { 35 | color: inherit; 36 | transition: color .2s; 37 | } 38 | } 39 | 40 | h3 { 41 | font-size: 22px; 42 | line-height: 1.2; 43 | 44 | a { 45 | color: inherit; 46 | transition: color .2s; 47 | } 48 | } 49 | 50 | blockquote { 51 | position: relative; 52 | font-size: 30px; 53 | 54 | &:before { 55 | position: absolute; 56 | right: calc(100% + 10px); 57 | top: 0; 58 | content: "“"; 59 | font-size: 70px; 60 | line-height: 1.1; 61 | } 62 | } 63 | 64 | -------------------------------------------------------------------------------- /templates/user-profile-item.tpl.php: -------------------------------------------------------------------------------- 1 | 25 | > 26 | > 27 | -------------------------------------------------------------------------------- /templates/user-profile-category.tpl.php: -------------------------------------------------------------------------------- 1 | 27 | 28 |

29 | 30 | 31 | > 32 | 33 | 34 | -------------------------------------------------------------------------------- /templates/search-results.tpl.php: -------------------------------------------------------------------------------- 1 | 24 | 25 |

26 |
    27 | 28 |
29 | 30 | 31 |

32 | 33 | 34 | -------------------------------------------------------------------------------- /templates/node.tpl.php: -------------------------------------------------------------------------------- 1 |
> 2 | 3 | 4 |
5 | 6 | > 7 | 8 |
9 | 10 | 11 | 12 |
13 | 14 | 15 |
16 | 17 | 18 |
> 19 | 25 |
26 | 27 | 28 |
29 | 30 |
31 | 32 | 33 | 34 | 35 |
36 | -------------------------------------------------------------------------------- /js/scripts.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | Drupal.behaviors.ieBrowserClass = { 3 | attach: function ( context, settings ) { 4 | if ($.browser.msie && $.browser.version == 10) { // Detects IE10 5 | $("html").addClass("ie10"); 6 | } 7 | if (!!navigator.userAgent.match(/Trident\/7\./)) { // Detects IE11 8 | $("html").addClass("ie11"); 9 | } 10 | } 11 | }; 12 | Drupal.behaviors.navigation = { 13 | attach: function ( context, settings ) { 14 | $('#block-system-main-menu').append($('')); 15 | $('#block-system-main-menu .expanded').prepend(''); 16 | $('.nav-mobile').click(function(){ 17 | $('#block-system-main-menu > .menu').slideToggle(); 18 | $('.nav-mobile').toggleClass('nav-mobile-active'); 19 | }); 20 | 21 | $('#block-system-main-menu > .menu .nav-click').click(function(){ 22 | $('.nav-click').toggleClass('nav-click-active'); 23 | $(this).siblings('#block-system-main-menu .menu li .menu').slideToggle(); 24 | $(this).children('.nav-arrow').toggleClass('nav-rotate'); 25 | }); 26 | } 27 | }; 28 | })(jQuery); 29 | -------------------------------------------------------------------------------- /scss/global/_mixins.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Sitewide mixins 3 | // 4 | 5 | @mixin clearfix { 6 | &:before, 7 | &:after { 8 | content: ""; 9 | display: table; 10 | } 11 | 12 | &:after { 13 | clear: both; 14 | } 15 | } 16 | 17 | @mixin hide-text { 18 | text-indent: -9999px; 19 | overflow: hidden; 20 | } 21 | 22 | @mixin nowrap { 23 | white-space: nowrap; 24 | overflow: hidden; 25 | text-overflow: ellipsis; 26 | } 27 | 28 | 29 | // Center 30 | // Centers an element with reference to the parent element that is not position: static 31 | // 32 | // Note that for this to work properly, you will need to absolutely position this element before applying this mixin 33 | // 34 | // Params 35 | // $way: x (for horizontal centering), y (vertical centering), or xy (centered in both ways) 36 | // 37 | @mixin center($way:'xy') { 38 | @if $way == 'x' { 39 | left: 50%; 40 | transform: translateX(-50%); 41 | } @else if $way == 'y' { 42 | top: 50%; 43 | transform: translateY(-50%); 44 | } @else if $way == 'none' { 45 | top: auto; 46 | left: auto; 47 | transform: translate(0, 0); 48 | } @else { 49 | left: 50%; 50 | top: 50%; 51 | transform: translate(-50%, -50%); 52 | } 53 | } 54 | 55 | -------------------------------------------------------------------------------- /scss/vendor/breakpoint/breakpoint/parsers/_double.scss: -------------------------------------------------------------------------------- 1 | ////////////////////////////// 2 | // Import Pieces 3 | ////////////////////////////// 4 | @import "double/default-pair"; 5 | @import "double/double-string"; 6 | @import "double/default"; 7 | 8 | @function breakpoint-parse-double($feature, $empty-media, $first) { 9 | $parsed: ''; 10 | $leader: ''; 11 | // If we're forcing 12 | @if not ($empty-media) or not ($first) { 13 | $leader: 'and '; 14 | } 15 | 16 | $first: nth($feature, 1); 17 | $second: nth($feature, 2); 18 | 19 | // If we've got two numbers, we know we need to use the default pair because there are no media queries that has a media feature that is a number 20 | @if type-of($first) == 'number' and type-of($second) == 'number' { 21 | $parsed: breakpoint-parse-default-pair($first, $second); 22 | } 23 | // If they are both strings, we send it through the string parser 24 | @else if type-of($first) == 'string' and type-of($second) == 'string' { 25 | $parsed: breakpoint-parse-double-string($first, $second); 26 | } 27 | // If it's a string/number pair, we parse it as a normal double 28 | @else { 29 | $parsed: breakpoint-parse-double-default($first, $second); 30 | } 31 | 32 | @return $leader + $parsed; 33 | } 34 | -------------------------------------------------------------------------------- /templates/search-block-form.tpl.php: -------------------------------------------------------------------------------- 1 | 23 | *
24 | * 25 | *
26 | * 27 | * @endcode 28 | * 29 | * @see template_preprocess_search_block_form() 30 | */ 31 | ?> 32 |
33 | subject)) : ?> 34 |

35 | 36 | 37 |
38 | -------------------------------------------------------------------------------- /scss/vendor/sassy-maps/sassy-maps/_map-set.scss: -------------------------------------------------------------------------------- 1 | @function get-keys($keys, $counter) { 2 | $return: (); 3 | @for $i from 1 to $counter { 4 | $return: append($return, nth($keys, $i)); 5 | } 6 | @return $return; 7 | } 8 | 9 | @function map-set($map, $key, $value) { 10 | @return map-merge($map, ($key: $value)); 11 | } 12 | 13 | @function map-set-deep($map, $keys, $value) { 14 | $private-sassy-maps-suppress-warnings: true !global; 15 | $length: length($keys); 16 | $get-keys: (); 17 | $map-level: (); 18 | 19 | 20 | @if $length > 1 { 21 | $get-keys: get-keys($keys, $length); 22 | $map-level: map-get-deep($map, $get-keys); 23 | } 24 | $merge: (nth($keys, $length): $value); 25 | @if $map-level { 26 | $merge: map-merge($map-level, $merge); 27 | } 28 | @for $i from ($length * -1 + 1) through -1 { 29 | $j: abs($i); 30 | $key: nth($keys, $j); 31 | // 32 | // @debug $get-keys; 33 | @if $j > 1 { 34 | $get-keys: get-keys($keys, $j); 35 | $map-level: map-get-deep($map, $get-keys); 36 | @if $map-level { 37 | $merge: map-merge($map-level, ($key: $merge)); 38 | } 39 | @else { 40 | $merge: ($key: $merge); 41 | } 42 | } 43 | @else { 44 | $merge: ($key: $merge); 45 | } 46 | } 47 | $map: map-merge($map, $merge); 48 | 49 | $private-sassy-maps-suppress-warnings: false !global; 50 | @return $map; 51 | } 52 | -------------------------------------------------------------------------------- /templates/html.tpl.php: -------------------------------------------------------------------------------- 1 | 2 | > 3 | 4 | 5 | 6 | 7 | <?php print $head_title; ?> 8 | 9 | 12 | 17 | 18 | 21 | 22 | > 23 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /templates/toolbar.tpl.php: -------------------------------------------------------------------------------- 1 | 24 |
25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 |
33 | 34 |
35 | 36 |
37 |
38 | -------------------------------------------------------------------------------- /templates/overlay.tpl.php: -------------------------------------------------------------------------------- 1 | 22 | 23 | 24 |
> 25 |
26 |
27 |

>

28 |
29 |
30 | 31 |
32 |

33 |
34 |
> 35 | 36 |
37 |
38 | -------------------------------------------------------------------------------- /scss/vendor/sassy-maps/sassy-maps/_map-get.scss: -------------------------------------------------------------------------------- 1 | $private-sassy-maps-suppress-warnings: false !default; 2 | 3 | ////////////////////////////// 4 | // Map Get Deep 5 | // 6 | // Given a map and a list of keys, find the value at the given key 7 | ////////////////////////////// 8 | @function map-get-deep($map, $keys...) { 9 | @if length($keys) == 1 { 10 | $keys: nth($keys, 1); 11 | } 12 | $warn: "#{nth($keys, 1)}"; 13 | $length: length($keys); 14 | $get: map-get($map, nth($keys, 1)); 15 | 16 | @if $length > 1 { 17 | @for $i from 2 through $length { 18 | @if $get != null and type-of($get) == 'map' { 19 | $warn: $warn + "->#{nth($keys, $i)}"; 20 | $get: map-get($get, nth($keys, $i)); 21 | 22 | @if $get == null { 23 | @return map-get-deep-warning($warn, $get); 24 | } 25 | } 26 | @else { 27 | @return map-get-deep-warning($warn, $get); 28 | } 29 | } 30 | } 31 | 32 | @return $get; 33 | } 34 | 35 | ////////////////////////////// 36 | // Map Get Deep Warning 37 | // 38 | // Displays a warning if the retrieved value is `null` 39 | ////////////////////////////// 40 | @function map-get-deep-warning($warn, $get) { 41 | @if not $private-sassy-maps-suppress-warnings { 42 | @if $get == null { 43 | @warn "Map has no value for key search `#{$warn}`"; 44 | } 45 | @else if type-of($get) != 'map' { 46 | @warn "Non-map value found for key search `#{$warn}`, cannot search for key `#{nth($keys, $i)}`"; 47 | } 48 | } 49 | @return null; 50 | } 51 | -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | 3 | grunt.initConfig({ 4 | pkg: grunt.file.readJSON('package.json'), 5 | sass: { 6 | options: { 7 | sourceMap: true 8 | }, 9 | dist: { 10 | files: { 11 | 'css/style.css': 'scss/style.scss', 12 | 'css/wysiwyg.css': 'scss/wysiwyg.scss', 13 | 'css/print.css': 'scss/print.scss' 14 | } 15 | } 16 | }, 17 | sass_globbing: { 18 | dist: { 19 | files: { 20 | 'scss/_base.scss': 'scss/base/**/*.scss', 21 | 'scss/_component.scss': 'scss/component/**/*.scss', 22 | 'scss/_layout.scss': 'scss/layout/**/*.scss', 23 | 'scss/_pages.scss': 'scss/pages/**/*.scss' 24 | } 25 | }, 26 | options: { 27 | useSingleQuotes: true 28 | } 29 | }, 30 | watch: { 31 | css: { 32 | files: ['scss/**/*.scss'], 33 | tasks: ['sass_globbing', 'sass', 'autoprefixer'], 34 | options: { 35 | livereload: true, 36 | spawn: false 37 | } 38 | } 39 | }, 40 | autoprefixer: { 41 | options: { 42 | browsers: ['last 3 versions', 'ie 11'] 43 | // For testing purposes, use this config 44 | // browsers: ['opera 12', 'ff 15', 'chrome 25'] 45 | }, 46 | single_file: { 47 | src: 'css/style.css', 48 | dest: 'css/style.css' 49 | }, 50 | }, 51 | }); 52 | 53 | grunt.loadNpmTasks('grunt-sass'); 54 | grunt.loadNpmTasks('grunt-sass-globbing'); 55 | grunt.loadNpmTasks('grunt-contrib-watch'); 56 | grunt.loadNpmTasks('grunt-autoprefixer'); 57 | 58 | grunt.registerTask('default', ['sass_globbing', 'sass', 'autoprefixer']); 59 | }; 60 | -------------------------------------------------------------------------------- /templates/user-profile.tpl.php: -------------------------------------------------------------------------------- 1 | field_example has a 22 | * variable $field_example defined. When needing to access a field's raw 23 | * values, developers/themers are strongly encouraged to use these 24 | * variables. Otherwise they will have to explicitly specify the desired 25 | * field language, e.g. $user->field_example['en'], thus overriding any 26 | * language negotiation rule that was previously applied. 27 | * 28 | * @see user-profile-category.tpl.php 29 | * Where the html is handled for the group. 30 | * @see user-profile-item.tpl.php 31 | * Where the html is handled for each item in the group. 32 | * @see template_preprocess_user_profile() 33 | */ 34 | ?> 35 |
> 36 | 37 |
38 | -------------------------------------------------------------------------------- /scss/vendor/breakpoint/breakpoint/_respond-to.scss: -------------------------------------------------------------------------------- 1 | //////////////////////// 2 | // Default the Breakpoints variable 3 | //////////////////////// 4 | $breakpoints: () !default; 5 | 6 | //////////////////////// 7 | // Respond-to API Mixin 8 | //////////////////////// 9 | @mixin respond-to($context, $no-query: false) { 10 | @if type-of($breakpoints) != 'map' { 11 | // Just in case someone writes gibberish to the $breakpoints variable. 12 | @warn "Your breakpoints aren't a map! See https://github.com/snugug/respond-to#api if you'd like a reminder on how to use Respond-to"; 13 | @content; 14 | } 15 | @else if map-has-key($breakpoints, $context) { 16 | @include breakpoint(map-get($breakpoints, $context), $no-query) { 17 | @content; 18 | } 19 | } 20 | @else if not map-has-key($breakpoints, $context) { 21 | @warn "`#{$context}` isn't a defined breakpoint! Please add it using `$breakpoints: add-breakpoint(`#{$context}`, $value);`"; 22 | @content; 23 | } 24 | @else { 25 | @warn "You haven't created any breakpoints yet! Make some already! See https://github.com/snugug/respond-to#api if you'd like a reminder on how to use Respond-to"; 26 | @content; 27 | } 28 | } 29 | 30 | ////////////////////////////// 31 | // Add Breakpoint to Breakpoints 32 | ////////////////////////////// 33 | @function add-breakpoint($name, $bkpt, $overwrite: false) { 34 | $output: ($name: $bkpt); 35 | @if length($breakpoints) == 0 { 36 | @return $output; 37 | } 38 | @else { 39 | @if map-has-key($breakpoints, $name) and $overwrite != true { 40 | @warn "You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint."; 41 | @return $breakpoints; 42 | } 43 | @else if not map-has-key($breakpoints, $name) or $overwrite == true { 44 | @return map-merge($breakpoints, $output); 45 | } 46 | } 47 | } -------------------------------------------------------------------------------- /scss/vendor/breakpoint/breakpoint/parsers/resolution/_resolution.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint-make-resolutions($resolution) { 2 | $length: length($resolution); 3 | 4 | $output: (); 5 | 6 | @if $length == 2 { 7 | $feature: ''; 8 | $value: ''; 9 | 10 | // Find which is number 11 | @if type-of(nth($resolution, 1)) == 'number' { 12 | $value: nth($resolution, 1); 13 | } 14 | @else { 15 | $value: nth($resolution, 2); 16 | } 17 | 18 | // Determine min/max/standard 19 | @if index($resolution, 'min-resolution') { 20 | $feature: 'min-'; 21 | } 22 | @else if index($resolution, 'max-resolution') { 23 | $feature: 'max-'; 24 | } 25 | 26 | $standard: '(#{$feature}resolution: #{$value})'; 27 | 28 | // If we're not dealing with dppx, 29 | @if unit($value) != 'dppx' { 30 | $base: 96dpi; 31 | @if unit($value) == 'dpcm' { 32 | $base: 243.84dpcm; 33 | } 34 | // Write out feature tests 35 | $webkit: ''; 36 | $moz: ''; 37 | $webkit: '(-webkit-#{$feature}device-pixel-ratio: #{$value / $base})'; 38 | $moz: '(#{$feature}-moz-device-pixel-ratio: #{$value / $base})'; 39 | // Append to output 40 | $output: append($output, $standard, space); 41 | $output: append($output, $webkit, space); 42 | $output: append($output, $moz, space); 43 | } 44 | @else { 45 | $webkit: ''; 46 | $moz: ''; 47 | $webkit: '(-webkit-#{$feature}device-pixel-ratio: #{$value / 1dppx})'; 48 | $moz: '(#{$feature}-moz-device-pixel-ratio: #{$value / 1dppx})'; 49 | $fallback: '(#{$feature}resolution: #{$value / 1dppx * 96dpi})'; 50 | // Append to output 51 | $output: append($output, $standard, space); 52 | $output: append($output, $webkit, space); 53 | $output: append($output, $moz, space); 54 | $output: append($output, $fallback, space); 55 | } 56 | 57 | } 58 | 59 | @return $output; 60 | } 61 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Bastard [Drupal Theme] 2 | 3 | Bastard is a lean and mean Drupal 7 starter theme that enables best practices for the lonely front-end developer (hence the name). It steals [what i consider] the best ideas from other themes and bastardizes them into one theme. This bastard is a continuous work in progress. 4 | 5 | Bastard was originally bastardized by [Mike Herchel](http://herchel.com) in late 2012 and was last updated in 2015. 6 | 7 | ## Bastard contains the following features 8 | 9 | * Fully responsive 10 | * Integrated nested responsive navigation. 11 | * Sass integration. 12 | * Mobile first approach. 13 | * No grid integration! Make or integrate your own if needed. 14 | * [Modernizr](http://modernizr.com/) support. 15 | * No cruft. This theme gets rid of some Drupal default css, and does not include any gui theme settings. Make your changes directly in code. 16 | 17 | ## How to use this bastard 18 | 19 | 1. Bastard is not meant to be used as a base theme. Instead, rename and edit it directly. Any upgrades will **not** be backwards compatible. 20 | 2. Edit the directory name to your choosing. 21 | 3. Edit the _bastard.info_ filename to _<name>.info_. 22 | 4. Modify the contents of your _<name>.info _file to suit its new name. 23 | 5. Change all function names in the _template.php_ to your new theme name. 24 | 6. Delete this _README.md_ file. 25 | 7. Theme away... 26 | 27 | ## Recommended tools 28 | 29 | * [Fences module](http://drupal.org/project/fences) - enables clean and semantic HTML5 elements around your fields 30 | * [HTML5_tools module](http://drupal.org/project/html5_tools) - various HTMl5 fixes and tools 31 | * [Borealis Module](https://drupal.org/project/borealis) - support for responsive images and semantic block templates 32 | * [Flexslider module](http://drupal.org/project/flexslider) - responsive and touch enabled slideshow 33 | * [Blockify module](https://drupal.org/project/blockify) - Exposes a number of Drupalisms as blocks -------------------------------------------------------------------------------- /templates/page.tpl.php: -------------------------------------------------------------------------------- 1 |
2 | 3 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
31 | 32 | 33 | 34 |

35 | 36 |
37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 45 | 46 |
47 | 48 | 49 | 50 |
51 | -------------------------------------------------------------------------------- /templates/taxonomy-term.tpl.php: -------------------------------------------------------------------------------- 1 | 40 |
41 | 42 | 43 |

44 | 45 | 46 |
47 | 48 |
49 | 50 |
51 | -------------------------------------------------------------------------------- /templates/comment-wrapper.tpl.php: -------------------------------------------------------------------------------- 1 | 38 |
39 | type != 'forum'): ?> 40 | 41 |

42 | 43 | 44 | 45 | 46 | 47 | 48 |

49 | 50 | 51 |
52 | -------------------------------------------------------------------------------- /scss/component/_tabs.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Tabs 3 | */ 4 | 5 | ul.tabs { 6 | @include clearfix; 7 | } 8 | 9 | @include breakpoint(max-width $tablet_narrow) { 10 | ul.tabs { 11 | background-color: #eee; 12 | border-bottom: none; 13 | box-sizing: content-box; 14 | padding-bottom: 1px; 15 | display: table-row; 16 | 17 | > li { 18 | width: 100%; 19 | display: table-cell; 20 | vertical-align: middle; 21 | float: none; 22 | line-height: 1.2; 23 | margin: 0; 24 | text-align: center; 25 | text-transform: capitalize; 26 | border-right: solid 1px white; 27 | position: relative; 28 | padding: 20px 5px; 29 | font-size: 16px; 30 | 31 | &:first-child:nth-last-child(2), 32 | &:first-child:nth-last-child(2) ~ li, { 33 | width: 50%; 34 | } 35 | 36 | &:first-child:nth-last-child(3), 37 | &:first-child:nth-last-child(3) ~ li { 38 | width: 33.33%; 39 | } 40 | 41 | &:first-child:nth-last-child(4), 42 | &:first-child:nth-last-child(4) ~ li { 43 | width: 25%; 44 | } 45 | 46 | &:first-child:nth-last-child(5), 47 | &:first-child:nth-last-child(5) ~ li { 48 | width: 20%; 49 | } 50 | 51 | &.active { 52 | background-color: #ccc; 53 | 54 | &:after { 55 | content: ""; 56 | width: 0; 57 | height: 0; 58 | position: absolute; 59 | left: 50%; 60 | bottom: 0; 61 | margin-left: -10px; 62 | border-left: 10px solid transparent; 63 | border-right: 10px solid transparent; 64 | border-bottom: 10px solid #fff; 65 | } 66 | } 67 | 68 | &:last-child { 69 | border: none; 70 | } 71 | 72 | a { 73 | font-weight: normal; 74 | text-decoration: none; 75 | background-color: transparent; 76 | display: block; 77 | 78 | &:hover { 79 | background-color: transparent; 80 | color: black; 81 | } 82 | } 83 | } 84 | } 85 | } 86 | 87 | 88 | @include breakpoint($tablet_narrow) { 89 | ul.tabs { 90 | margin: 10px 0 2px 0; 91 | border-bottom: 1px solid #bbb; 92 | padding: 0; 93 | 94 | > li { 95 | list-style: none; 96 | float: left; 97 | margin-right: 1em; 98 | background-color: #eee; 99 | font-size: 16px; 100 | 101 | &.active { 102 | background-color: #ccc; 103 | } 104 | 105 | a { 106 | text-decoration: none; 107 | display: block; 108 | padding: 5px 10px; 109 | width: 100%; 110 | 111 | &:hover { 112 | color: black; 113 | } 114 | } 115 | } 116 | } 117 | } 118 | 119 | -------------------------------------------------------------------------------- /scss/vendor/breakpoint/_breakpoint.scss: -------------------------------------------------------------------------------- 1 | ////////////////////////////// 2 | // Default Variables 3 | ////////////////////////////// 4 | // Default Features 5 | $breakpoint-default-media: all !default; 6 | $breakpoint-default-feature: min-width !default; 7 | $breakpoint-default-pair: width !default; 8 | 9 | // Default Transforms 10 | $breakpoint-force-media-all: false !default; 11 | $breakpoint-to-ems: false !default; 12 | $breakpoint-resolutions: true !default; 13 | 14 | // Default No Query Options 15 | $breakpoint-no-queries: false !default; 16 | $breakpoint-no-query-fallbacks: false !default; 17 | 18 | // Deftault Base Font Size 19 | $breakpoint-base-font-size: 16px !default; 20 | 21 | // Legacy Syntax Support 22 | $breakpoint-legacy-syntax: false !default; 23 | 24 | ////////////////////////////// 25 | // Imports 26 | ////////////////////////////// 27 | @import 'breakpoint/context'; 28 | @import 'breakpoint/helpers'; 29 | @import 'breakpoint/parsers'; 30 | @import 'breakpoint/no-query'; 31 | 32 | @import 'breakpoint/respond-to'; 33 | 34 | ////////////////////////////// 35 | // Breakpoint Mixin 36 | ////////////////////////////// 37 | 38 | @mixin breakpoint($query, $no-query: false) { 39 | // Reset contexts 40 | @include private-breakpoint-reset-contexts(); 41 | 42 | $breakpoint: breakpoint($query, false); 43 | 44 | $query-string: map-get($breakpoint, 'query'); 45 | $query-fallback: map-get($breakpoint, 'fallback'); 46 | 47 | $private-breakpoint-context-holder: map-get($breakpoint, 'context holder') !global; 48 | $private-breakpoint-query-count: map-get($breakpoint, 'query count') !global; 49 | 50 | // Allow for an as-needed override or usage of no query fallback. 51 | @if $no-query != false { 52 | $query-fallback: $no-query; 53 | } 54 | 55 | @if $query-fallback != false { 56 | $context-setter: private-breakpoint-set-context('no-query', $query-fallback); 57 | } 58 | 59 | // Print Out Query String 60 | @if not $breakpoint-no-queries { 61 | @media #{$query-string} { 62 | @content; 63 | } 64 | } 65 | 66 | @if $breakpoint-no-query-fallbacks != false or $breakpoint-no-queries == true { 67 | 68 | $type: type-of($breakpoint-no-query-fallbacks); 69 | $print: false; 70 | 71 | @if ($type == 'bool') { 72 | $print: true; 73 | } 74 | @else if ($type == 'string') { 75 | @if $query-fallback == $breakpoint-no-query-fallbacks { 76 | $print: true; 77 | } 78 | } 79 | @else if ($type == 'list') { 80 | @each $wrapper in $breakpoint-no-query-fallbacks { 81 | @if $query-fallback == $wrapper { 82 | $print: true; 83 | } 84 | } 85 | } 86 | 87 | // Write Fallback 88 | @if ($query-fallback != false) and ($print == true) { 89 | $type-fallback: type-of($query-fallback); 90 | 91 | @if ($type-fallback != 'bool') { 92 | #{$query-fallback} & { 93 | @content; 94 | } 95 | } 96 | @else { 97 | @content; 98 | } 99 | } 100 | } 101 | 102 | @include private-breakpoint-reset-contexts(); 103 | } 104 | 105 | 106 | @mixin mq($query, $no-query: false) { 107 | @include breakpoint($query, $no-query) { 108 | @content; 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /scss/vendor/breakpoint/breakpoint/_context.scss: -------------------------------------------------------------------------------- 1 | ////////////////////////////// 2 | // Private Breakpoint Variables 3 | ////////////////////////////// 4 | $private-breakpoint-context-holder: (); 5 | $private-breakpoint-query-count: 0 !default; 6 | 7 | ////////////////////////////// 8 | // Breakpoint Has Context 9 | // Returns whether or not you are inside a Breakpoint query 10 | ////////////////////////////// 11 | @function breakpoint-has-context() { 12 | @if length($private-breakpoint-query-count) { 13 | @return true; 14 | } 15 | @else { 16 | @return false; 17 | } 18 | } 19 | 20 | ////////////////////////////// 21 | // Breakpoint Get Context 22 | // $feature: Input feature to get it's current MQ context. Returns false if no context 23 | ////////////////////////////// 24 | @function breakpoint-get-context($feature) { 25 | @if map-has-key($private-breakpoint-context-holder, $feature) { 26 | $get: map-get($private-breakpoint-context-holder, $feature); 27 | // Special handling of no-query from get side so /false/ prepends aren't returned 28 | @if $feature == 'no-query' { 29 | @if type-of($get) == 'list' and length($get) > 1 and nth($get, 1) == false { 30 | $get: nth($get, length($get)); 31 | } 32 | } 33 | @return $get; 34 | } 35 | @else { 36 | @if breakpoint-has-context() and $feature == 'media' { 37 | @return $breakpoint-default-media; 38 | } 39 | @else { 40 | @return false; 41 | } 42 | } 43 | } 44 | 45 | ////////////////////////////// 46 | // Private function to set context 47 | ////////////////////////////// 48 | @function private-breakpoint-set-context($feature, $value) { 49 | @if $value == 'monochrome' { 50 | $feature: 'monochrome'; 51 | } 52 | 53 | $current: map-get($private-breakpoint-context-holder, $feature); 54 | @if $current and length($current) == $private-breakpoint-query-count { 55 | @warn "You have already queried against `#{$feature}`. Unexpected things may happen if you query against the same feature more than once in the same `and` query. Breakpoint is overwriting the current context with `#{$value}`"; 56 | } 57 | 58 | @if not map-has-key($private-breakpoint-context-holder, $feature) { 59 | $v-holder: (); 60 | @for $i from 1 to $private-breakpoint-query-count { 61 | @if $feature == 'media' { 62 | $v-holder: append($v-holder, $breakpoint-default-media); 63 | } 64 | @else { 65 | $v-holder: append($v-holder, false); 66 | } 67 | } 68 | $v-holder: append($v-holder, $value); 69 | $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global; 70 | } 71 | @else { 72 | $v-holder: map-get($private-breakpoint-context-holder, $feature); 73 | $length: length($v-holder); 74 | @for $i from $length to $private-breakpoint-query-count - 1 { 75 | @if $feature == 'media' { 76 | $v-holder: append($v-holder, $breakpoint-default-media); 77 | } 78 | @else { 79 | $v-holder: append($v-holder, false); 80 | } 81 | } 82 | $v-holder: append($v-holder, $value); 83 | $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global; 84 | } 85 | 86 | @return true; 87 | } 88 | 89 | ////////////////////////////// 90 | // Private function to reset context 91 | ////////////////////////////// 92 | @mixin private-breakpoint-reset-contexts { 93 | $private-breakpoint-context-holder: () !global; 94 | $private-breakpoint-query-count: 0 !global; 95 | } -------------------------------------------------------------------------------- /templates/maintenance-page.tpl.php: -------------------------------------------------------------------------------- 1 | 14 | 15 | > 16 | 17 | 18 | 19 | <?php print $head_title; ?> 20 | 21 | 22 | 23 | > 24 | 27 | 28 |
29 | 30 | 46 | 47 | 48 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 |
61 | 62 |
63 | 64 | 65 | 66 |

67 | 68 |
69 | 70 | 71 | 72 | 73 |
74 | 75 | 76 | 77 | 78 | 79 |
80 | 81 | 82 | 83 |
84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /templates/search-result.tpl.php: -------------------------------------------------------------------------------- 1 | 51 | * 52 | * 53 | * 54 | * 55 | * @endcode 56 | * 57 | * To check for all available data within $info_split, use the code below. 58 | * @code 59 | * '. check_plain(print_r($info_split, 1)) .''; ?> 60 | * @endcode 61 | * 62 | * @see template_preprocess() 63 | * @see template_preprocess_search_result() 64 | * @see template_process() 65 | */ 66 | ?> 67 |
  • > 68 | 69 |

    > 70 | 71 |

    72 | 73 |
    74 | 75 |

    >

    76 | 77 | 78 |

    79 | 80 |
    81 |
  • 82 | -------------------------------------------------------------------------------- /templates/comment.tpl.php: -------------------------------------------------------------------------------- 1 | created variable. 16 | * - $changed: Formatted date and time for when the comment was last changed. 17 | * Preprocess functions can reformat it by calling format_date() with the 18 | * desired parameters on the $comment->changed variable. 19 | * - $new: New comment marker. 20 | * - $permalink: Comment permalink. 21 | * - $submitted: Submission information created from $author and $created during 22 | * template_preprocess_comment(). 23 | * - $picture: Authors picture. 24 | * - $signature: Authors signature. 25 | * - $status: Comment status. Possible values are: 26 | * comment-unpublished, comment-published or comment-preview. 27 | * - $title: Linked title. 28 | * - $classes: String of classes that can be used to style contextually through 29 | * CSS. It can be manipulated through the variable $classes_array from 30 | * preprocess functions. The default values can be one or more of the following: 31 | * - comment: The current template type, i.e., "theming hook". 32 | * - comment-by-anonymous: Comment by an unregistered user. 33 | * - comment-by-node-author: Comment by the author of the parent node. 34 | * - comment-preview: When previewing a new or edited comment. 35 | * The following applies only to viewers who are registered users: 36 | * - comment-unpublished: An unpublished comment visible only to administrators. 37 | * - comment-by-viewer: Comment by the user currently viewing the page. 38 | * - comment-new: New comment since last the visit. 39 | * - $title_prefix (array): An array containing additional output populated by 40 | * modules, intended to be displayed in front of the main title tag that 41 | * appears in the template. 42 | * - $title_suffix (array): An array containing additional output populated by 43 | * modules, intended to be displayed after the main title tag that appears in 44 | * the template. 45 | * 46 | * These two variables are provided for context: 47 | * - $comment: Full comment object. 48 | * - $node: Node object the comments are attached to. 49 | * 50 | * Other variables: 51 | * - $classes_array: Array of html class attribute values. It is flattened 52 | * into a string within the variable $classes. 53 | * 54 | * @see template_preprocess() 55 | * @see template_preprocess_comment() 56 | * @see template_process() 57 | * @see theme_comment() 58 | */ 59 | ?> 60 |
    > 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | > 71 | 72 | 73 | 77 | 78 |
    > 79 | 84 | 85 |
    86 | 87 |
    88 | 89 |
    90 | 91 | 92 |
    93 | 94 |
    95 | 96 |
    97 | -------------------------------------------------------------------------------- /scss/vendor/breakpoint/breakpoint/parsers/_query.scss: -------------------------------------------------------------------------------- 1 | @function breakpoint-parse-query($query) { 2 | // Parse features out of an individual query 3 | $feature-holder: (); 4 | $query-holder: (); 5 | $length: length($query); 6 | 7 | @if $length == 2 { 8 | // If we've got a string/number, number/string, check to see if it's a valid string/number pair or two singles 9 | @if (type-of(nth($query, 1)) == 'string' and type-of(nth($query, 2)) == 'number') or (type-of(nth($query, 1)) == 'number' and type-of(nth($query, 2)) == 'string') { 10 | 11 | $number: ''; 12 | $value: ''; 13 | 14 | @if type-of(nth($query, 1)) == 'string' { 15 | $number: nth($query, 2); 16 | $value: nth($query, 1); 17 | } 18 | @else { 19 | $number: nth($query, 1); 20 | $value: nth($query, 2); 21 | } 22 | 23 | // If the string value can be a single value, check to see if the number passed in is a valid input for said single value. Fortunately, all current single-value options only accept unitless numbers, so this check is easy. 24 | @if breakpoint-single-string($value) { 25 | @if unitless($number) { 26 | $feature-holder: append($value, $number, space); 27 | $query-holder: append($query-holder, $feature-holder, comma); 28 | @return $query-holder; 29 | } 30 | } 31 | // If the string is a media type, split the query 32 | @if breakpoint-is-media($value) { 33 | $query-holder: append($query-holder, nth($query, 1)); 34 | $query-holder: append($query-holder, nth($query, 2)); 35 | @return $query-holder; 36 | } 37 | // If it's not a single feature, we're just going to assume it's a proper string/value pair, and roll with it. 38 | @else { 39 | $feature-holder: append($value, $number, space); 40 | $query-holder: append($query-holder, $feature-holder, comma); 41 | @return $query-holder; 42 | } 43 | 44 | } 45 | // If they're both numbers, we assume it's a double and roll with that 46 | @else if (type-of(nth($query, 1)) == 'number' and type-of(nth($query, 2)) == 'number') { 47 | $feature-holder: append(nth($query, 1), nth($query, 2), space); 48 | $query-holder: append($query-holder, $feature-holder, comma); 49 | @return $query-holder; 50 | } 51 | // If they're both strings and neither are singles, we roll with that. 52 | @else if (type-of(nth($query, 1)) == 'string' and type-of(nth($query, 2)) == 'string') { 53 | @if not breakpoint-single-string(nth($query, 1)) and not breakpoint-single-string(nth($query, 2)) { 54 | $feature-holder: append(nth($query, 1), nth($query, 2), space); 55 | $query-holder: append($query-holder, $feature-holder, comma); 56 | @return $query-holder; 57 | } 58 | } 59 | } 60 | @else if $length == 3 { 61 | // If we've got three items and none is a list, we check to see 62 | @if type-of(nth($query, 1)) != 'list' and type-of(nth($query, 2)) != 'list' and type-of(nth($query, 3)) != 'list' { 63 | // If none of the items are single string values and none of the values are media values, we're good. 64 | @if (not breakpoint-single-string(nth($query, 1)) and not breakpoint-single-string(nth($query, 2)) and not breakpoint-single-string(nth($query, 3))) and ((not breakpoint-is-media(nth($query, 1)) and not breakpoint-is-media(nth($query, 2)) and not breakpoint-is-media(nth($query, 3)))) { 65 | $feature-holder: append(nth($query, 1), nth($query, 2), space); 66 | $feature-holder: append($feature-holder, nth($query, 3), space); 67 | $query-holder: append($query-holder, $feature-holder, comma); 68 | @return $query-holder; 69 | } 70 | // let's check to see if the first item is a media type 71 | @else if breakpoint-is-media(nth($query, 1)) { 72 | $query-holder: append($query-holder, nth($query, 1)); 73 | $feature-holder: append(nth($query, 2), nth($query, 3), space); 74 | $query-holder: append($query-holder, $feature-holder); 75 | @return $query-holder; 76 | } 77 | } 78 | } 79 | 80 | // If it's a single item, or if it's not a special case double or triple, we can simply return the query. 81 | @return $query; 82 | } 83 | -------------------------------------------------------------------------------- /scss/vendor/breakpoint/breakpoint/_helpers.scss: -------------------------------------------------------------------------------- 1 | ////////////////////////////// 2 | // Converts the input value to Base EMs 3 | ////////////////////////////// 4 | @function breakpoint-to-base-em($value) { 5 | $value-unit: unit($value); 6 | 7 | // Will convert relative EMs into root EMs. 8 | @if $breakpoint-base-font-size and type-of($breakpoint-base-font-size) == 'number' and $value-unit == 'em' { 9 | $base-unit: unit($breakpoint-base-font-size); 10 | 11 | @if $base-unit == 'px' or $base-unit == '%' or $base-unit == 'em' or $base-unit == 'pt' { 12 | @return base-conversion($value) / base-conversion($breakpoint-base-font-size) * 1em; 13 | } 14 | @else { 15 | @warn '#{$breakpoint-base-font-size} is not set in valid units for font size!'; 16 | @return false; 17 | } 18 | } 19 | @else { 20 | @return base-conversion($value); 21 | } 22 | } 23 | 24 | @function base-conversion($value) { 25 | $unit: unit($value); 26 | 27 | @if $unit == 'px' { 28 | @return $value / 16px * 1em; 29 | } 30 | @else if $unit == '%' { 31 | @return $value / 100% * 1em; 32 | } 33 | @else if $unit == 'em' { 34 | @return $value; 35 | } 36 | @else if $unit == 'pt' { 37 | @return $value / 12pt * 1em; 38 | } 39 | @else { 40 | @return $value; 41 | // @warn 'Everything is terrible! What have you done?!'; 42 | } 43 | } 44 | 45 | ////////////////////////////// 46 | // Returns whether the feature can have a min/max pair 47 | ////////////////////////////// 48 | $breakpoint-min-max-features: 'color', 49 | 'color-index', 50 | 'aspect-ratio', 51 | 'device-aspect-ratio', 52 | 'device-height', 53 | 'device-width', 54 | 'height', 55 | 'monochrome', 56 | 'resolution', 57 | 'width'; 58 | 59 | @function breakpoint-min-max($feature) { 60 | @each $item in $breakpoint-min-max-features { 61 | @if $feature == $item { 62 | @return true; 63 | } 64 | } 65 | @return false; 66 | } 67 | 68 | ////////////////////////////// 69 | // Returns whether the feature can have a string value 70 | ////////////////////////////// 71 | $breakpoint-string-features: 'orientation', 72 | 'scan', 73 | 'color', 74 | 'aspect-ratio', 75 | 'device-aspect-ratio', 76 | 'pointer', 77 | 'luminosity'; 78 | 79 | @function breakpoint-string-value($feature) { 80 | @each $item in $breakpoint-string-features { 81 | @if breakpoint-min-max($item) { 82 | @if $feature == 'min-#{$item}' or $feature == 'max-#{$item}' { 83 | @return true; 84 | } 85 | } 86 | @else if $feature == $item { 87 | @return true; 88 | } 89 | } 90 | @return false; 91 | } 92 | 93 | ////////////////////////////// 94 | // Returns whether the feature is a media type 95 | ////////////////////////////// 96 | $breakpoint-media-types: 'all', 97 | 'braille', 98 | 'embossed', 99 | 'handheld', 100 | 'print', 101 | 'projection', 102 | 'screen', 103 | 'speech', 104 | 'tty', 105 | 'tv'; 106 | 107 | @function breakpoint-is-media($feature) { 108 | @each $media in $breakpoint-media-types { 109 | @if ($feature == $media) or ($feature == 'not #{$media}') or ($feature == 'only #{$media}') { 110 | @return true; 111 | } 112 | } 113 | 114 | @return false; 115 | } 116 | 117 | ////////////////////////////// 118 | // Returns whether the feature can stand alone 119 | ////////////////////////////// 120 | $breakpoint-single-string-features: 'color', 121 | 'color-index', 122 | 'grid', 123 | 'monochrome'; 124 | 125 | @function breakpoint-single-string($feature) { 126 | @each $item in $breakpoint-single-string-features { 127 | @if $feature == $item { 128 | @return true; 129 | } 130 | } 131 | @return false; 132 | } 133 | 134 | ////////////////////////////// 135 | // Returns whether the feature 136 | ////////////////////////////// 137 | @function breakpoint-is-resolution($feature) { 138 | $resolutions: 'device-pixel-ratio', 'dpr'; 139 | 140 | @if $breakpoint-resolutions { 141 | $resolutions: append($resolutions, 'resolution'); 142 | } 143 | 144 | @each $reso in $resolutions { 145 | @if index($feature, $reso) or index($feature, 'min-#{$reso}') or index($feature, 'max-#{$reso}') { 146 | @return true; 147 | } 148 | } 149 | 150 | @return false; 151 | } 152 | -------------------------------------------------------------------------------- /template.php: -------------------------------------------------------------------------------- 1 | FALSE, 25 | 'modules/block/block.css' => FALSE, 26 | 'modules/book/book.css' => FALSE, 27 | 'modules/comment/comment.css' => FALSE, 28 | 'modules/dblog/dblog.css' => FALSE, 29 | 'modules/field/theme/field.css' => FALSE, 30 | 'modules/file/file.css' => FALSE, 31 | 'modules/filter/filter.css' => FALSE, 32 | 'modules/forum/forum.css' => FALSE, 33 | 'modules/help/help.css' => FALSE, 34 | 'modules/menu/menu.css' => FALSE, 35 | 'modules/node/node.css' => FALSE, 36 | 'modules/openid/openid.css' => FALSE, 37 | 'modules/poll/poll.css' => FALSE, 38 | 'modules/profile/profile.css' => FALSE, 39 | 'modules/search/search.css' => FALSE, 40 | 'modules/statistics/statistics.css' => FALSE, 41 | 'modules/syslog/syslog.css' => FALSE, 42 | 'modules/system/admin.css' => FALSE, 43 | 'modules/system/maintenance.css' => FALSE, 44 | 'modules/system/system.css' => FALSE, 45 | 'modules/system/system.admin.css' => FALSE, 46 | 'modules/system/system.maintenance.css' => FALSE, 47 | 'modules/system/system.messages.css' => FALSE, 48 | 'modules/system/system.theme.css' => FALSE, 49 | 'modules/system/system.menus.css' => FALSE, 50 | 'modules/taxonomy/taxonomy.css' => FALSE, 51 | 'modules/tracker/tracker.css' => FALSE, 52 | 'modules/update/update.css' => FALSE, 53 | 'modules/user/user.css' => FALSE, 54 | // Flexslider below 55 | //'sites/all/libraries/flexslider/flexslider.css' => FALSE, 56 | drupal_get_path('module', 'views') . '/css/views.css' => FALSE, 57 | ); 58 | 59 | $css = array_diff_key($css, $exclude); 60 | 61 | /* Get rid of some default panel css */ 62 | foreach ($css as $path => $meta) { 63 | if (strpos($path, 'threecol_33_34_33_stacked') !== FALSE || strpos($path, 'threecol_25_50_25_stacked') !== FALSE) { 64 | unset($css[$path]); 65 | } 66 | } 67 | } 68 | 69 | /** 70 | * Provide a valid, unique HTML ID. 71 | */ 72 | 73 | function bastard_preprocess_region(&$variables) { 74 | $variables['region'] = drupal_html_id($variables['region']); 75 | } 76 | 77 | /** 78 | * Load Modernizr from Clouldfare CDN. 79 | */ 80 | 81 | 82 | function bastard_preprocess_html(&$variables) { 83 | drupal_add_js('http://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js', 'external'); 84 | } 85 | 86 | /** 87 | * Implements hook_form_FORM_ID_alter(). 88 | * 89 | * Adds a HTML5 placeholder to the search block. 90 | */ 91 | function bastard_form_search_block_form_alter(&$form, &$form_state, $form_id) { 92 | $form['search_block_form']['#attributes']['placeholder'] = t('Search'); 93 | } 94 | 95 | 96 | /** 97 | * Integrate with LiveReload 2. See http://livereload.com. 98 | */ 99 | 100 | /* 101 | function bastard_preprocess_html(&$variables) { 102 | drupal_add_js((drupal_get_path('theme',$GLOBALS['theme'])).'/js/livereload-snippit.js', 103 | array('type' => 'file', 'scope' => 'header') 104 | ); 105 | } 106 | */ 107 | 108 | /** 109 | * Implements theme_menu_link(). 110 | * 111 | * Add level indicator css class to all menu items and menu links. 112 | * 113 | */ 114 | 115 | function bastard_menu_link(array $variables) { 116 | $element = $variables['element']; 117 | $sub_menu = ''; 118 | $element['#attributes']['class'][] = 'menu-item menu-item--level-' . $element['#original_link']['depth']; 119 | $menu_link = 'menu-item-link menu-item-link--level-' . $element['#original_link']['depth']; 120 | if ($element['#below']) { 121 | $sub_menu = drupal_render($element['#below']); 122 | } 123 | $output = l($element['#title'], $element['#href'], array('attributes' => array('class' => array($menu_link)))); 124 | return '' . $output . $sub_menu . "\n"; 125 | } 126 | 127 | /** 128 | * Add page template suggestions based on the aliased path. For instance, if the current 129 | * page has an alias of about/history/early, we'll have templates of: 130 | * page-about-history-early.tpl.php, page-about-history.tpl.php, page-about.tpl.php 131 | * Whichever is found first is the one that will be used. 132 | */ 133 | 134 | function bastard_preprocess_page(&$vars) { 135 | if (module_exists('path')) { 136 | $alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q'])); 137 | if ($alias != $_GET['q']) { 138 | $template_filename = 'page'; 139 | foreach (explode('/', $alias) as $path_part) { 140 | $template_filename = $template_filename . '-' . $path_part; 141 | $vars['template_files'][] = $template_filename; 142 | } 143 | } 144 | } 145 | } 146 | 147 | 148 | -------------------------------------------------------------------------------- /css/wysiwyg.css.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "wysiwyg.css", 4 | "sources": [ 5 | "../scss/wysiwyg.scss", 6 | "../scss/global/_breakpoints.scss", 7 | "../scss/global/_colors.scss", 8 | "../scss/global/_mixins.scss", 9 | "../scss/vendor/_vendor.scss", 10 | "../scss/vendor/sassy-maps/_sassy-maps.scss", 11 | "../scss/vendor/sassy-maps/sassy-maps/_map-to-string.scss", 12 | "../scss/vendor/sassy-maps/sassy-maps/_map-get.scss", 13 | "../scss/vendor/sassy-maps/sassy-maps/_map-set.scss", 14 | "../scss/vendor/breakpoint/_breakpoint.scss", 15 | "../scss/vendor/breakpoint/breakpoint/_context.scss", 16 | "../scss/vendor/breakpoint/breakpoint/_helpers.scss", 17 | "../scss/vendor/breakpoint/breakpoint/_parsers.scss", 18 | "../scss/vendor/breakpoint/breakpoint/parsers/_query.scss", 19 | "../scss/vendor/breakpoint/breakpoint/parsers/_single.scss", 20 | "../scss/vendor/breakpoint/breakpoint/parsers/single/_default.scss", 21 | "../scss/vendor/breakpoint/breakpoint/parsers/_double.scss", 22 | "../scss/vendor/breakpoint/breakpoint/parsers/double/_default-pair.scss", 23 | "../scss/vendor/breakpoint/breakpoint/parsers/double/_double-string.scss", 24 | "../scss/vendor/breakpoint/breakpoint/parsers/double/_default.scss", 25 | "../scss/vendor/breakpoint/breakpoint/parsers/_triple.scss", 26 | "../scss/vendor/breakpoint/breakpoint/parsers/triple/_default.scss", 27 | "../scss/vendor/breakpoint/breakpoint/parsers/_resolution.scss", 28 | "../scss/vendor/breakpoint/breakpoint/parsers/resolution/_resolution.scss", 29 | "../scss/vendor/breakpoint/breakpoint/_no-query.scss", 30 | "../scss/vendor/breakpoint/breakpoint/_respond-to.scss", 31 | "../scss/vendor/normalize/_normalize.scss", 32 | "../scss/base/_typography.scss", 33 | "../scss/base/_wysiwyg_specific.scss" 34 | ], 35 | "names": [], 36 | "mappings": "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" 37 | } -------------------------------------------------------------------------------- /scss/vendor/breakpoint/breakpoint/_parsers.scss: -------------------------------------------------------------------------------- 1 | ////////////////////////////// 2 | // Import Parser Pieces 3 | ////////////////////////////// 4 | @import "parsers/query"; 5 | @import "parsers/single"; 6 | @import "parsers/double"; 7 | @import "parsers/triple"; 8 | @import "parsers/resolution"; 9 | 10 | $Memo-Exists: function-exists(memo-get) and function-exists(memo-set); 11 | 12 | ////////////////////////////// 13 | // Breakpoint Function 14 | ////////////////////////////// 15 | @function breakpoint($query, $contexts...) { 16 | $run: true; 17 | $return: (); 18 | 19 | // Grab the Memo Output if Memoization can be a thing 20 | @if $Memo-Exists { 21 | $return: memo-get(breakpoint, breakpoint $query $contexts); 22 | 23 | @if $return != null { 24 | $run: false; 25 | } 26 | } 27 | 28 | @if not $Memo-Exists or $run { 29 | // Internal Variables 30 | $query-string: ''; 31 | $query-fallback: false; 32 | $return: (); 33 | 34 | // Reserve Global Private Breakpoint Context 35 | $holder-context: $private-breakpoint-context-holder; 36 | $holder-query-count: $private-breakpoint-query-count; 37 | 38 | // Reset Global Private Breakpoint Context 39 | $private-breakpoint-context-holder: () !global; 40 | $private-breakpoint-query-count: 0 !global; 41 | 42 | 43 | // Test to see if it's a comma-separated list 44 | $or-list: if(list-separator($query) == 'comma', true, false); 45 | 46 | 47 | @if ($or-list == false and $breakpoint-legacy-syntax == false) { 48 | $query-string: breakpoint-parse($query); 49 | } 50 | @else { 51 | $length: length($query); 52 | 53 | $last: nth($query, $length); 54 | $query-fallback: breakpoint-no-query($last); 55 | 56 | @if ($query-fallback != false) { 57 | $length: $length - 1; 58 | } 59 | 60 | @if ($breakpoint-legacy-syntax == true) { 61 | $mq: (); 62 | 63 | @for $i from 1 through $length { 64 | $mq: append($mq, nth($query, $i), comma); 65 | } 66 | 67 | $query-string: breakpoint-parse($mq); 68 | } 69 | @else { 70 | $query-string: ''; 71 | @for $i from 1 through $length { 72 | $query-string: $query-string + if($i == 1, '', ', ') + breakpoint-parse(nth($query, $i)); 73 | } 74 | } 75 | } 76 | 77 | $return: ('query': $query-string, 78 | 'fallback': $query-fallback, 79 | 'context holder': $private-breakpoint-context-holder, 80 | 'query count': $private-breakpoint-query-count 81 | ); 82 | @if length($contexts) > 0 and nth($contexts, 1) != false { 83 | @if $query-fallback != false { 84 | $context-setter: private-breakpoint-set-context('no-query', $query-fallback); 85 | } 86 | $context-map: (); 87 | @each $context in $contexts { 88 | $context-map: map-merge($context-map, ($context: breakpoint-get-context($context))); 89 | } 90 | $return: map-merge($return, (context: $context-map)); 91 | } 92 | 93 | // Reset Global Private Breakpoint Context 94 | $private-breakpoint-context-holder: () !global; 95 | $private-breakpoint-query-count: 0 !global; 96 | 97 | @if $Memo-Exists { 98 | $holder: memo-set(breakpoint, breakpoint $query $contexts, $return); 99 | } 100 | } 101 | 102 | @return $return; 103 | } 104 | 105 | ////////////////////////////// 106 | // General Breakpoint Parser 107 | ////////////////////////////// 108 | @function breakpoint-parse($query) { 109 | // Increase number of 'and' queries 110 | $private-breakpoint-query-count: $private-breakpoint-query-count + 1 !global; 111 | 112 | // Set up Media Type 113 | $query-print: ''; 114 | 115 | $force-all: (($breakpoint-force-media-all == true) and ($breakpoint-default-media == 'all')); 116 | $empty-media: true; 117 | @if ($force-all == true) or ($breakpoint-default-media != 'all') { 118 | // Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all) 119 | $query-print: $breakpoint-default-media; 120 | $empty-media: false; 121 | } 122 | 123 | 124 | $query-resolution: false; 125 | 126 | $query-holder: breakpoint-parse-query($query); 127 | 128 | 129 | 130 | // Loop over each parsed out query and write it to $query-print 131 | $first: true; 132 | 133 | @each $feature in $query-holder { 134 | $length: length($feature); 135 | 136 | // Parse a single feature 137 | @if ($length == 1) { 138 | // Feature is currently a list, grab the actual value 139 | $feature: nth($feature, 1); 140 | 141 | // Media Type must by convention be the first item, so it's safe to flat override $query-print, which right now should only be the default media type 142 | @if (breakpoint-is-media($feature)) { 143 | @if ($force-all == true) or ($feature != 'all') { 144 | // Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all) 145 | $query-print: $feature; 146 | $empty-media: false; 147 | 148 | // Set Context 149 | $context-setter: private-breakpoint-set-context(media, $query-print); 150 | } 151 | } 152 | @else { 153 | $parsed: breakpoint-parse-single($feature, $empty-media, $first); 154 | $query-print: '#{$query-print} #{$parsed}'; 155 | $first: false; 156 | } 157 | } 158 | // Parse a double feature 159 | @else if ($length == 2) { 160 | @if (breakpoint-is-resolution($feature) != false) { 161 | $query-resolution: $feature; 162 | } 163 | @else { 164 | $parsed: null; 165 | // If it's a string/number pair, 166 | // we check to see if one is a single-string value, 167 | // then we parse it as a normal double 168 | $alpha: nth($feature, 1); 169 | $beta: nth($feature, 2); 170 | @if breakpoint-single-string($alpha) or breakpoint-single-string($beta) { 171 | $parsed: breakpoint-parse-single($alpha, $empty-media, $first); 172 | $query-print: '#{$query-print} #{$parsed}'; 173 | $first: false; 174 | $parsed: breakpoint-parse-single($beta, $empty-media, $first); 175 | $query-print: '#{$query-print} #{$parsed}'; 176 | } 177 | @else { 178 | $parsed: breakpoint-parse-double($feature, $empty-media, $first); 179 | $query-print: '#{$query-print} #{$parsed}'; 180 | $first: false; 181 | } 182 | } 183 | } 184 | // Parse a triple feature 185 | @else if ($length == 3) { 186 | $parsed: breakpoint-parse-triple($feature, $empty-media, $first); 187 | $query-print: '#{$query-print} #{$parsed}'; 188 | $first: false; 189 | } 190 | 191 | } 192 | 193 | @if ($query-resolution != false) { 194 | $query-print: breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first); 195 | } 196 | 197 | // Loop through each feature that's been detected so far and append 'false' to the the value list to increment their counters 198 | @each $f, $v in $private-breakpoint-context-holder { 199 | $v-holder: $v; 200 | $length: length($v-holder); 201 | @if length($v-holder) < $private-breakpoint-query-count { 202 | @for $i from $length to $private-breakpoint-query-count { 203 | @if $f == 'media' { 204 | $v-holder: append($v-holder, $breakpoint-default-media); 205 | } 206 | @else { 207 | $v-holder: append($v-holder, false); 208 | } 209 | } 210 | } 211 | $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($f: $v-holder)) !global; 212 | } 213 | 214 | @return $query-print; 215 | } 216 | -------------------------------------------------------------------------------- /css/wysiwyg.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /** 3 | * WYSIWYG Specific Styles 4 | */ 5 | /** 6 | * 1. Set default font family to sans-serif. 7 | * 2. Prevent iOS text size adjust after orientation change, without disabling 8 | * user zoom. 9 | */ 10 | html { 11 | font-family: sans-serif; 12 | /* 1 */ 13 | -ms-text-size-adjust: 100%; 14 | /* 2 */ 15 | -webkit-text-size-adjust: 100%; 16 | /* 2 */ } 17 | 18 | /** 19 | * Remove default margin. 20 | */ 21 | body { 22 | margin: 0; } 23 | 24 | /* HTML5 display definitions 25 | ========================================================================== */ 26 | /** 27 | * Correct `block` display not defined for any HTML5 element in IE 8/9. 28 | * Correct `block` display not defined for `details` or `summary` in IE 10/11 29 | * and Firefox. 30 | * Correct `block` display not defined for `main` in IE 11. 31 | */ 32 | article, 33 | aside, 34 | details, 35 | figcaption, 36 | figure, 37 | footer, 38 | header, 39 | hgroup, 40 | main, 41 | menu, 42 | nav, 43 | section, 44 | summary { 45 | display: block; } 46 | 47 | /** 48 | * 1. Correct `inline-block` display not defined in IE 8/9. 49 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. 50 | */ 51 | audio, 52 | canvas, 53 | progress, 54 | video { 55 | display: inline-block; 56 | /* 1 */ 57 | vertical-align: baseline; 58 | /* 2 */ } 59 | 60 | /** 61 | * Prevent modern browsers from displaying `audio` without controls. 62 | * Remove excess height in iOS 5 devices. 63 | */ 64 | audio:not([controls]) { 65 | display: none; 66 | height: 0; } 67 | 68 | /** 69 | * Address `[hidden]` styling not present in IE 8/9/10. 70 | */ 71 | [hidden] { 72 | display: none; } 73 | 74 | /** 75 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. 76 | */ 77 | template { 78 | display: none; } 79 | 80 | /* Links 81 | ========================================================================== */ 82 | /** 83 | * Remove the gray background color from active links in IE 10. 84 | */ 85 | a { 86 | background-color: transparent; } 87 | 88 | /** 89 | * Improve readability when focused and also mouse hovered in all browsers. 90 | */ 91 | a:active, 92 | a:hover { 93 | outline: 0; } 94 | 95 | /* Text-level semantics 96 | ========================================================================== */ 97 | /** 98 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome. 99 | */ 100 | abbr[title] { 101 | border-bottom: 1px dotted; } 102 | 103 | /** 104 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. 105 | */ 106 | b, 107 | strong { 108 | font-weight: bold; } 109 | 110 | /** 111 | * Address styling not present in Safari and Chrome. 112 | */ 113 | dfn { 114 | font-style: italic; } 115 | 116 | /** 117 | * Address variable `h1` font-size and margin within `section` and `article` 118 | * contexts in Firefox 4+, Safari, and Chrome. 119 | */ 120 | h1 { 121 | font-size: 2em; 122 | margin: 0.6666666667em 0; } 123 | 124 | /** 125 | * Address styling not present in IE 8/9. 126 | */ 127 | mark { 128 | background: #ff0; 129 | color: #000; } 130 | 131 | /** 132 | * Address inconsistent and variable font size in all browsers. 133 | */ 134 | small { 135 | font-size: 80%; } 136 | 137 | /** 138 | * Prevent `sub` and `sup` affecting `line-height` in all browsers. 139 | */ 140 | sub, 141 | sup { 142 | font-size: 75%; 143 | line-height: 0; 144 | position: relative; 145 | vertical-align: baseline; } 146 | 147 | sup { 148 | top: -0.5em; } 149 | 150 | sub { 151 | bottom: -0.25em; } 152 | 153 | /* Embedded content 154 | ========================================================================== */ 155 | /** 156 | * Remove border when inside `a` element in IE 8/9/10. 157 | */ 158 | img { 159 | border: 0; } 160 | 161 | /** 162 | * Correct overflow not hidden in IE 9/10/11. 163 | */ 164 | svg:not(:root) { 165 | overflow: hidden; } 166 | 167 | /* Grouping content 168 | ========================================================================== */ 169 | /** 170 | * Address margin not present in IE 8/9 and Safari. 171 | */ 172 | figure { 173 | margin: 1em 40px; } 174 | 175 | /** 176 | * Address differences between Firefox and other browsers. 177 | */ 178 | hr { 179 | -moz-box-sizing: content-box; 180 | box-sizing: content-box; 181 | height: 0; } 182 | 183 | /** 184 | * Contain overflow in all browsers. 185 | */ 186 | pre { 187 | overflow: auto; } 188 | 189 | /** 190 | * Address odd `em`-unit font size rendering in all browsers. 191 | */ 192 | code, 193 | kbd, 194 | pre, 195 | samp { 196 | font-family: monospace, monospace; 197 | font-size: 1em; } 198 | 199 | /* Forms 200 | ========================================================================== */ 201 | /** 202 | * Known limitation: by default, Chrome and Safari on OS X allow very limited 203 | * styling of `select`, unless a `border` property is set. 204 | */ 205 | /** 206 | * 1. Correct color not being inherited. 207 | * Known issue: affects color of disabled elements. 208 | * 2. Correct font properties not being inherited. 209 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. 210 | */ 211 | button, 212 | input, 213 | optgroup, 214 | select, 215 | textarea { 216 | color: inherit; 217 | /* 1 */ 218 | font: inherit; 219 | /* 2 */ 220 | margin: 0; 221 | /* 3 */ } 222 | 223 | /** 224 | * Address `overflow` set to `hidden` in IE 8/9/10/11. 225 | */ 226 | button { 227 | overflow: visible; } 228 | 229 | /** 230 | * Address inconsistent `text-transform` inheritance for `button` and `select`. 231 | * All other form control elements do not inherit `text-transform` values. 232 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. 233 | * Correct `select` style inheritance in Firefox. 234 | */ 235 | button, 236 | select { 237 | text-transform: none; } 238 | 239 | /** 240 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` 241 | * and `video` controls. 242 | * 2. Correct inability to style clickable `input` types in iOS. 243 | * 3. Improve usability and consistency of cursor style between image-type 244 | * `input` and others. 245 | */ 246 | button, 247 | html input[type='button'], 248 | input[type='reset'], 249 | input[type='submit'] { 250 | -webkit-appearance: button; 251 | /* 2 */ 252 | cursor: pointer; 253 | /* 3 */ } 254 | 255 | /** 256 | * Re-set default cursor for disabled elements. 257 | */ 258 | button[disabled], 259 | html input[disabled] { 260 | cursor: default; } 261 | 262 | /** 263 | * Remove inner padding and border in Firefox 4+. 264 | */ 265 | button::-moz-focus-inner, 266 | input::-moz-focus-inner { 267 | border: 0; 268 | padding: 0; } 269 | 270 | /** 271 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in 272 | * the UA stylesheet. 273 | */ 274 | input { 275 | line-height: normal; } 276 | 277 | /** 278 | * It's recommended that you don't attempt to style these elements. 279 | * Firefox's implementation doesn't respect box-sizing, padding, or width. 280 | * 281 | * 1. Address box sizing set to `content-box` in IE 8/9/10. 282 | * 2. Remove excess padding in IE 8/9/10. 283 | */ 284 | input[type='checkbox'], 285 | input[type='radio'] { 286 | box-sizing: border-box; 287 | /* 1 */ 288 | padding: 0; 289 | /* 2 */ } 290 | 291 | /** 292 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain 293 | * `font-size` values of the `input`, it causes the cursor style of the 294 | * decrement button to change from `default` to `text`. 295 | */ 296 | input[type='number']::-webkit-inner-spin-button, 297 | input[type='number']::-webkit-outer-spin-button { 298 | height: auto; } 299 | 300 | /** 301 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome. 302 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome 303 | * (include `-moz` to future-proof). 304 | */ 305 | input[type='search'] { 306 | -webkit-appearance: textfield; 307 | /* 1 */ 308 | -moz-box-sizing: content-box; 309 | -webkit-box-sizing: content-box; 310 | /* 2 */ 311 | box-sizing: content-box; } 312 | 313 | /** 314 | * Remove inner padding and search cancel button in Safari and Chrome on OS X. 315 | * Safari (but not Chrome) clips the cancel button when the search input has 316 | * padding (and `textfield` appearance). 317 | */ 318 | input[type='search']::-webkit-search-cancel-button, 319 | input[type='search']::-webkit-search-decoration { 320 | -webkit-appearance: none; } 321 | 322 | /** 323 | * Define consistent border, margin, and padding. 324 | */ 325 | fieldset { 326 | border: 1px solid #c0c0c0; 327 | margin: 0 2px; 328 | padding: 0.35em 0.625em 0.75em; } 329 | 330 | /** 331 | * 1. Correct `color` not being inherited in IE 8/9/10/11. 332 | * 2. Remove padding so people aren't caught out if they zero out fieldsets. 333 | */ 334 | legend { 335 | border: 0; 336 | /* 1 */ 337 | padding: 0; 338 | /* 2 */ } 339 | 340 | /** 341 | * Remove default vertical scrollbar in IE 8/9/10/11. 342 | */ 343 | textarea { 344 | overflow: auto; } 345 | 346 | /** 347 | * Don't inherit the `font-weight` (applied by a rule above). 348 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. 349 | */ 350 | optgroup { 351 | font-weight: bold; } 352 | 353 | /* Tables 354 | ========================================================================== */ 355 | /** 356 | * Remove most spacing between table cells. 357 | */ 358 | table { 359 | border-collapse: collapse; 360 | border-spacing: 0; } 361 | 362 | td, 363 | th { 364 | padding: 0; } 365 | 366 | /** 367 | * Typography 368 | */ 369 | h1 { 370 | font-size: 45px; 371 | line-height: 1.1; } 372 | h1.large { 373 | font-size: 65px; } 374 | h1 a { 375 | color: inherit; 376 | transition: color .2s; } 377 | 378 | h2 { 379 | font-size: 40px; 380 | line-height: 1.2; } 381 | h2 a { 382 | color: inherit; 383 | transition: color .2s; } 384 | 385 | h3 { 386 | font-size: 27px; 387 | line-height: 1.2; 388 | text-transform: none; 389 | margin: 0 0 10px 0; } 390 | h3 a { 391 | color: inherit; 392 | transition: color .2s; } 393 | 394 | h3 { 395 | font-size: 22px; 396 | line-height: 1.2; } 397 | h3 a { 398 | color: inherit; 399 | transition: color .2s; } 400 | 401 | blockquote { 402 | position: relative; 403 | font-size: 30px; } 404 | blockquote:before { 405 | position: absolute; 406 | right: calc(100% + 10px); 407 | top: 0; 408 | content: "“"; 409 | font-size: 70px; 410 | line-height: 1.1; } 411 | 412 | /** 413 | * WYSIWYG Specific Styles 414 | */ 415 | 416 | /*# sourceMappingURL=wysiwyg.css.map */ -------------------------------------------------------------------------------- /scss/vendor/normalize/_normalize.scss: -------------------------------------------------------------------------------- 1 | //// 2 | /// normalize-libsass 1.0.2 3 | /// MIT/GPLv2 License 4 | /// lb.cm/normalize-libsass 5 | //// 6 | 7 | /// Strict normalize 8 | /// @type Boolean [false] - Set to true for strict normalize output. 9 | $strict-normalize: false !default; 10 | 11 | /// Font-size baseline 12 | /// @type Length [16px] 13 | $base-font-size: 16px !default; 14 | 15 | /// Line-height baseline 16 | /// @type Length [24px] 17 | $base-line-height: 24px !default; 18 | 19 | /// H1 headline size 20 | /// @type Length [2 * 16px] 21 | $h1-font-size: 2 * $base-font-size !default; 22 | 23 | /// Rhythm unit 24 | /// @type String [em] - Supported values: px, em, rem. 25 | $rhythm-unit: 'em' !default; 26 | 27 | /// Font-family baseline 28 | /// @type Map [sans-serif] 29 | $base-font-family: sans-serif !default; 30 | 31 | /// Supported Browser versions 32 | /// @type Map 33 | $browser-min-version: ( 34 | 'chrome': null, 35 | 'firefox': null, 36 | 'ie': 9, 37 | 'safari': 7, 38 | 'opera': null 39 | ) !default; 40 | 41 | // Assure no variables get overridden if strict is on 42 | $normalize-base-font-size: if($strict-normalize, 16px, $base-font-size); 43 | $normalize-base-line-height: if($strict-normalize, 24px, $base-line-height); 44 | $normalize-h1-font-size: if($strict-normalize, 2 * $base-font-size, $h1-font-size); 45 | $normalize-rhythm-unit: if($strict-normalize, 'em', $rhythm-unit); 46 | $normalize-base-font-family: if($strict-normalize, sans-serif, $base-font-family); 47 | 48 | /// Normalize Legacy Browser Support function 49 | /// 50 | /// @requires {variable} browser 51 | /// @requires {variable} version 52 | /// 53 | /// @param {String} $browser - A valid browser name from $browser-minimum-versions. 54 | /// @param {Number} $version - A browser version. 55 | /// 56 | /// @return {Bool} - If browser is null or valid returns true. 57 | @function normalize-browser-support($browser, $version) { 58 | // If browser is not null then check for support 59 | @if map-get($browser-min-version, $browser) { 60 | $supported-version: map-get($browser-min-version, $browser); 61 | // Pass if browser is supported or strict-normalize is on 62 | @if $strict-normalize or $supported-version <= $version { 63 | @return true; 64 | } @else { 65 | // Fail if browser is unsupported 66 | @return null; 67 | } 68 | } 69 | // Pass if browser is null 70 | @return true; 71 | } 72 | 73 | /// Convert one unit into another 74 | /// @author Hugo Giraudel 75 | /// 76 | /// @param {Number} $value - Initial value 77 | /// @param {String} $unit - Desired unit 78 | /// 79 | /// @return {Number} 80 | /// @throw Error if `$unit` does not exist or if units are incompatible. 81 | @function normalize-convert-unit($value, $unit) { 82 | // scss-lint:disable ZeroUnit 83 | $units: ( 84 | 'px': 0px, 85 | 'cm': 0cm, 86 | 'mm': 0mm, 87 | '%': 0%, 88 | 'in': 0in, 89 | 'em': 0em, 90 | 'rem': 0rem, 91 | 'pt': 0pt 92 | ); 93 | // scss-lint:enable ZeroUnit 94 | 95 | @if map-has-key($units, $unit) { 96 | @return map-get($units, $unit) + $value; 97 | } 98 | 99 | @error "Unknown unit `#{$unit}`."; 100 | } 101 | 102 | /** 103 | * 1. Set default font family to sans-serif. 104 | * 2. Prevent iOS text size adjust after orientation change, without disabling 105 | * user zoom. 106 | */ 107 | html { 108 | font-family: $normalize-base-font-family; /* 1 */ 109 | -ms-text-size-adjust: 100%; /* 2 */ 110 | -webkit-text-size-adjust: 100%; /* 2 */ 111 | } 112 | 113 | /** 114 | * Remove default margin. 115 | */ 116 | 117 | body { 118 | margin: 0; 119 | } 120 | 121 | /* HTML5 display definitions 122 | ========================================================================== */ 123 | 124 | /** 125 | * Correct `block` display not defined for any HTML5 element in IE 8/9. 126 | * Correct `block` display not defined for `details` or `summary` in IE 10/11 127 | * and Firefox. 128 | * Correct `block` display not defined for `main` in IE 11. 129 | */ 130 | 131 | article, 132 | aside, 133 | details, 134 | figcaption, 135 | figure, 136 | footer, 137 | header, 138 | hgroup, 139 | main, 140 | menu, 141 | nav, 142 | section, 143 | summary { 144 | display: block; 145 | } 146 | 147 | /** 148 | * 1. Correct `inline-block` display not defined in IE 8/9. 149 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. 150 | */ 151 | 152 | audio, 153 | canvas, 154 | progress, 155 | video { 156 | @if normalize-browser-support('ie', 9) { 157 | display: inline-block; /* 1 */ 158 | } 159 | vertical-align: baseline; /* 2 */ 160 | } 161 | 162 | /** 163 | * Prevent modern browsers from displaying `audio` without controls. 164 | * Remove excess height in iOS 5 devices. 165 | */ 166 | 167 | audio:not([controls]) { 168 | display: none; 169 | height: 0; 170 | } 171 | 172 | @if normalize-browser-support('ie', 10) { 173 | /** 174 | * Address `[hidden]` styling not present in IE 8/9/10. 175 | */ 176 | 177 | [hidden] { 178 | display: none; 179 | } 180 | } 181 | 182 | /** 183 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. 184 | */ 185 | 186 | template { 187 | display: none; 188 | } 189 | 190 | /* Links 191 | ========================================================================== */ 192 | 193 | @if normalize-browser-support('ie', 10) { 194 | /** 195 | * Remove the gray background color from active links in IE 10. 196 | */ 197 | 198 | a { 199 | background-color: transparent; 200 | } 201 | } 202 | 203 | /** 204 | * Improve readability when focused and also mouse hovered in all browsers. 205 | */ 206 | 207 | a:active, 208 | a:hover { 209 | outline: 0; 210 | } 211 | 212 | /* Text-level semantics 213 | ========================================================================== */ 214 | 215 | /** 216 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome. 217 | */ 218 | 219 | abbr[title] { 220 | border-bottom: 1px dotted; 221 | } 222 | 223 | /** 224 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. 225 | */ 226 | 227 | b, 228 | strong { 229 | font-weight: bold; 230 | } 231 | 232 | /** 233 | * Address styling not present in Safari and Chrome. 234 | */ 235 | 236 | dfn { 237 | font-style: italic; 238 | } 239 | 240 | /** 241 | * Address variable `h1` font-size and margin within `section` and `article` 242 | * contexts in Firefox 4+, Safari, and Chrome. 243 | */ 244 | 245 | h1 { 246 | font-size: normalize-convert-unit(($normalize-h1-font-size / $normalize-base-font-size), $normalize-rhythm-unit); 247 | margin: normalize-convert-unit(($normalize-base-font-size / $normalize-base-line-height), $normalize-rhythm-unit) 0; 248 | } 249 | 250 | @if normalize-browser-support('ie', 9) { 251 | /** 252 | * Address styling not present in IE 8/9. 253 | */ 254 | 255 | mark { 256 | background: #ff0; 257 | color: #000; 258 | } 259 | } 260 | 261 | /** 262 | * Address inconsistent and variable font size in all browsers. 263 | */ 264 | 265 | small { 266 | font-size: 80%; 267 | } 268 | 269 | /** 270 | * Prevent `sub` and `sup` affecting `line-height` in all browsers. 271 | */ 272 | 273 | sub, 274 | sup { 275 | font-size: 75%; 276 | line-height: 0; 277 | position: relative; 278 | vertical-align: baseline; 279 | } 280 | 281 | sup { 282 | top: -0.5em; 283 | } 284 | 285 | sub { 286 | bottom: -0.25em; 287 | } 288 | 289 | /* Embedded content 290 | ========================================================================== */ 291 | 292 | @if normalize-browser-support('ie', 10) { 293 | /** 294 | * Remove border when inside `a` element in IE 8/9/10. 295 | */ 296 | 297 | img { 298 | border: 0; 299 | } 300 | } 301 | 302 | @if normalize-browser-support('ie', 11) { 303 | /** 304 | * Correct overflow not hidden in IE 9/10/11. 305 | */ 306 | 307 | svg:not(:root) { 308 | overflow: hidden; 309 | } 310 | } 311 | 312 | /* Grouping content 313 | ========================================================================== */ 314 | 315 | @if normalize-browser-support('ie', 9) or normalize-browser-support('safari', 6) { 316 | /** 317 | * Address margin not present in IE 8/9 and Safari. 318 | */ 319 | 320 | figure { 321 | margin: 1em 40px; 322 | } 323 | } 324 | 325 | /** 326 | * Address differences between Firefox and other browsers. 327 | */ 328 | 329 | hr { 330 | -moz-box-sizing: content-box; 331 | box-sizing: content-box; 332 | height: 0; 333 | } 334 | 335 | /** 336 | * Contain overflow in all browsers. 337 | */ 338 | 339 | pre { 340 | overflow: auto; 341 | } 342 | 343 | /** 344 | * Address odd `em`-unit font size rendering in all browsers. 345 | */ 346 | 347 | code, 348 | kbd, 349 | pre, 350 | samp { 351 | font-family: monospace, monospace; 352 | font-size: 1em; 353 | } 354 | 355 | /* Forms 356 | ========================================================================== */ 357 | 358 | /** 359 | * Known limitation: by default, Chrome and Safari on OS X allow very limited 360 | * styling of `select`, unless a `border` property is set. 361 | */ 362 | 363 | /** 364 | * 1. Correct color not being inherited. 365 | * Known issue: affects color of disabled elements. 366 | * 2. Correct font properties not being inherited. 367 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. 368 | */ 369 | 370 | button, 371 | input, 372 | optgroup, 373 | select, 374 | textarea { 375 | color: inherit; /* 1 */ 376 | font: inherit; /* 2 */ 377 | margin: 0; /* 3 */ 378 | } 379 | 380 | @if normalize-browser-support('ie', 11) { 381 | /** 382 | * Address `overflow` set to `hidden` in IE 8/9/10/11. 383 | */ 384 | 385 | button { 386 | overflow: visible; 387 | } 388 | } 389 | 390 | /** 391 | * Address inconsistent `text-transform` inheritance for `button` and `select`. 392 | * All other form control elements do not inherit `text-transform` values. 393 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. 394 | * Correct `select` style inheritance in Firefox. 395 | */ 396 | 397 | button, 398 | select { 399 | text-transform: none; 400 | } 401 | 402 | /** 403 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` 404 | * and `video` controls. 405 | * 2. Correct inability to style clickable `input` types in iOS. 406 | * 3. Improve usability and consistency of cursor style between image-type 407 | * `input` and others. 408 | */ 409 | 410 | button, 411 | html input[type='button'], /* 1 */ 412 | input[type='reset'], 413 | input[type='submit'] { 414 | -webkit-appearance: button; /* 2 */ 415 | cursor: pointer; /* 3 */ 416 | } 417 | 418 | /** 419 | * Re-set default cursor for disabled elements. 420 | */ 421 | 422 | button[disabled], 423 | html input[disabled] { 424 | cursor: default; 425 | } 426 | 427 | /** 428 | * Remove inner padding and border in Firefox 4+. 429 | */ 430 | 431 | button::-moz-focus-inner, 432 | input::-moz-focus-inner { 433 | border: 0; 434 | padding: 0; 435 | } 436 | 437 | /** 438 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in 439 | * the UA stylesheet. 440 | */ 441 | 442 | input { 443 | line-height: normal; 444 | } 445 | 446 | @if normalize-browser-support('ie', 10) { 447 | /** 448 | * It's recommended that you don't attempt to style these elements. 449 | * Firefox's implementation doesn't respect box-sizing, padding, or width. 450 | * 451 | * 1. Address box sizing set to `content-box` in IE 8/9/10. 452 | * 2. Remove excess padding in IE 8/9/10. 453 | */ 454 | 455 | input[type='checkbox'], 456 | input[type='radio'] { 457 | box-sizing: border-box; /* 1 */ 458 | padding: 0; /* 2 */ 459 | } 460 | } 461 | 462 | /** 463 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain 464 | * `font-size` values of the `input`, it causes the cursor style of the 465 | * decrement button to change from `default` to `text`. 466 | */ 467 | 468 | input[type='number']::-webkit-inner-spin-button, 469 | input[type='number']::-webkit-outer-spin-button { 470 | height: auto; 471 | } 472 | 473 | /** 474 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome. 475 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome 476 | * (include `-moz` to future-proof). 477 | */ 478 | 479 | input[type='search'] { 480 | -webkit-appearance: textfield; /* 1 */ 481 | -moz-box-sizing: content-box; 482 | -webkit-box-sizing: content-box; /* 2 */ 483 | box-sizing: content-box; 484 | } 485 | 486 | /** 487 | * Remove inner padding and search cancel button in Safari and Chrome on OS X. 488 | * Safari (but not Chrome) clips the cancel button when the search input has 489 | * padding (and `textfield` appearance). 490 | */ 491 | 492 | input[type='search']::-webkit-search-cancel-button, 493 | input[type='search']::-webkit-search-decoration { 494 | -webkit-appearance: none; 495 | } 496 | 497 | /** 498 | * Define consistent border, margin, and padding. 499 | */ 500 | 501 | fieldset { 502 | border: 1px solid #c0c0c0; 503 | margin: 0 2px; 504 | padding: 0.35em 0.625em 0.75em; 505 | } 506 | 507 | /** 508 | * 1. Correct `color` not being inherited in IE 8/9/10/11. 509 | * 2. Remove padding so people aren't caught out if they zero out fieldsets. 510 | */ 511 | 512 | legend { 513 | @if normalize-browser-support('ie', 11) { 514 | border: 0; /* 1 */ 515 | } 516 | padding: 0; /* 2 */ 517 | } 518 | 519 | @if normalize-browser-support('ie', 11) { 520 | /** 521 | * Remove default vertical scrollbar in IE 8/9/10/11. 522 | */ 523 | 524 | textarea { 525 | overflow: auto; 526 | } 527 | } 528 | 529 | /** 530 | * Don't inherit the `font-weight` (applied by a rule above). 531 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. 532 | */ 533 | 534 | optgroup { 535 | font-weight: bold; 536 | } 537 | 538 | /* Tables 539 | ========================================================================== */ 540 | 541 | /** 542 | * Remove most spacing between table cells. 543 | */ 544 | 545 | table { 546 | border-collapse: collapse; 547 | border-spacing: 0; 548 | } 549 | 550 | td, 551 | th { 552 | padding: 0; 553 | } 554 | -------------------------------------------------------------------------------- /css/style.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /** 3 | * 1. Set default font family to sans-serif. 4 | * 2. Prevent iOS text size adjust after orientation change, without disabling 5 | * user zoom. 6 | */ 7 | html { 8 | font-family: sans-serif; 9 | /* 1 */ 10 | -ms-text-size-adjust: 100%; 11 | /* 2 */ 12 | -webkit-text-size-adjust: 100%; 13 | /* 2 */ } 14 | 15 | /** 16 | * Remove default margin. 17 | */ 18 | body { 19 | margin: 0; } 20 | 21 | /* HTML5 display definitions 22 | ========================================================================== */ 23 | /** 24 | * Correct `block` display not defined for any HTML5 element in IE 8/9. 25 | * Correct `block` display not defined for `details` or `summary` in IE 10/11 26 | * and Firefox. 27 | * Correct `block` display not defined for `main` in IE 11. 28 | */ 29 | article, 30 | aside, 31 | details, 32 | figcaption, 33 | figure, 34 | footer, 35 | header, 36 | hgroup, 37 | main, 38 | menu, 39 | nav, 40 | section, 41 | summary { 42 | display: block; } 43 | 44 | /** 45 | * 1. Correct `inline-block` display not defined in IE 8/9. 46 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. 47 | */ 48 | audio, 49 | canvas, 50 | progress, 51 | video { 52 | display: inline-block; 53 | /* 1 */ 54 | vertical-align: baseline; 55 | /* 2 */ } 56 | 57 | /** 58 | * Prevent modern browsers from displaying `audio` without controls. 59 | * Remove excess height in iOS 5 devices. 60 | */ 61 | audio:not([controls]) { 62 | display: none; 63 | height: 0; } 64 | 65 | /** 66 | * Address `[hidden]` styling not present in IE 8/9/10. 67 | */ 68 | [hidden] { 69 | display: none; } 70 | 71 | /** 72 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. 73 | */ 74 | template { 75 | display: none; } 76 | 77 | /* Links 78 | ========================================================================== */ 79 | /** 80 | * Remove the gray background color from active links in IE 10. 81 | */ 82 | a { 83 | background-color: transparent; } 84 | 85 | /** 86 | * Improve readability when focused and also mouse hovered in all browsers. 87 | */ 88 | a:active, 89 | a:hover { 90 | outline: 0; } 91 | 92 | /* Text-level semantics 93 | ========================================================================== */ 94 | /** 95 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome. 96 | */ 97 | abbr[title] { 98 | border-bottom: 1px dotted; } 99 | 100 | /** 101 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. 102 | */ 103 | b, 104 | strong { 105 | font-weight: bold; } 106 | 107 | /** 108 | * Address styling not present in Safari and Chrome. 109 | */ 110 | dfn { 111 | font-style: italic; } 112 | 113 | /** 114 | * Address variable `h1` font-size and margin within `section` and `article` 115 | * contexts in Firefox 4+, Safari, and Chrome. 116 | */ 117 | h1 { 118 | font-size: 2em; 119 | margin: 0.6666666667em 0; } 120 | 121 | /** 122 | * Address styling not present in IE 8/9. 123 | */ 124 | mark { 125 | background: #ff0; 126 | color: #000; } 127 | 128 | /** 129 | * Address inconsistent and variable font size in all browsers. 130 | */ 131 | small { 132 | font-size: 80%; } 133 | 134 | /** 135 | * Prevent `sub` and `sup` affecting `line-height` in all browsers. 136 | */ 137 | sub, 138 | sup { 139 | font-size: 75%; 140 | line-height: 0; 141 | position: relative; 142 | vertical-align: baseline; } 143 | 144 | sup { 145 | top: -0.5em; } 146 | 147 | sub { 148 | bottom: -0.25em; } 149 | 150 | /* Embedded content 151 | ========================================================================== */ 152 | /** 153 | * Remove border when inside `a` element in IE 8/9/10. 154 | */ 155 | img { 156 | border: 0; } 157 | 158 | /** 159 | * Correct overflow not hidden in IE 9/10/11. 160 | */ 161 | svg:not(:root) { 162 | overflow: hidden; } 163 | 164 | /* Grouping content 165 | ========================================================================== */ 166 | /** 167 | * Address margin not present in IE 8/9 and Safari. 168 | */ 169 | figure { 170 | margin: 1em 40px; } 171 | 172 | /** 173 | * Address differences between Firefox and other browsers. 174 | */ 175 | hr { 176 | box-sizing: content-box; 177 | height: 0; } 178 | 179 | /** 180 | * Contain overflow in all browsers. 181 | */ 182 | pre { 183 | overflow: auto; } 184 | 185 | /** 186 | * Address odd `em`-unit font size rendering in all browsers. 187 | */ 188 | code, 189 | kbd, 190 | pre, 191 | samp { 192 | font-family: monospace, monospace; 193 | font-size: 1em; } 194 | 195 | /* Forms 196 | ========================================================================== */ 197 | /** 198 | * Known limitation: by default, Chrome and Safari on OS X allow very limited 199 | * styling of `select`, unless a `border` property is set. 200 | */ 201 | /** 202 | * 1. Correct color not being inherited. 203 | * Known issue: affects color of disabled elements. 204 | * 2. Correct font properties not being inherited. 205 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. 206 | */ 207 | button, 208 | input, 209 | optgroup, 210 | select, 211 | textarea { 212 | color: inherit; 213 | /* 1 */ 214 | font: inherit; 215 | /* 2 */ 216 | margin: 0; 217 | /* 3 */ } 218 | 219 | /** 220 | * Address `overflow` set to `hidden` in IE 8/9/10/11. 221 | */ 222 | button { 223 | overflow: visible; } 224 | 225 | /** 226 | * Address inconsistent `text-transform` inheritance for `button` and `select`. 227 | * All other form control elements do not inherit `text-transform` values. 228 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. 229 | * Correct `select` style inheritance in Firefox. 230 | */ 231 | button, 232 | select { 233 | text-transform: none; } 234 | 235 | /** 236 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` 237 | * and `video` controls. 238 | * 2. Correct inability to style clickable `input` types in iOS. 239 | * 3. Improve usability and consistency of cursor style between image-type 240 | * `input` and others. 241 | */ 242 | button, 243 | html input[type='button'], 244 | input[type='reset'], 245 | input[type='submit'] { 246 | -webkit-appearance: button; 247 | /* 2 */ 248 | cursor: pointer; 249 | /* 3 */ } 250 | 251 | /** 252 | * Re-set default cursor for disabled elements. 253 | */ 254 | button[disabled], 255 | html input[disabled] { 256 | cursor: default; } 257 | 258 | /** 259 | * Remove inner padding and border in Firefox 4+. 260 | */ 261 | button::-moz-focus-inner, 262 | input::-moz-focus-inner { 263 | border: 0; 264 | padding: 0; } 265 | 266 | /** 267 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in 268 | * the UA stylesheet. 269 | */ 270 | input { 271 | line-height: normal; } 272 | 273 | /** 274 | * It's recommended that you don't attempt to style these elements. 275 | * Firefox's implementation doesn't respect box-sizing, padding, or width. 276 | * 277 | * 1. Address box sizing set to `content-box` in IE 8/9/10. 278 | * 2. Remove excess padding in IE 8/9/10. 279 | */ 280 | input[type='checkbox'], 281 | input[type='radio'] { 282 | box-sizing: border-box; 283 | /* 1 */ 284 | padding: 0; 285 | /* 2 */ } 286 | 287 | /** 288 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain 289 | * `font-size` values of the `input`, it causes the cursor style of the 290 | * decrement button to change from `default` to `text`. 291 | */ 292 | input[type='number']::-webkit-inner-spin-button, 293 | input[type='number']::-webkit-outer-spin-button { 294 | height: auto; } 295 | 296 | /** 297 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome. 298 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome 299 | * (include `-moz` to future-proof). 300 | */ 301 | input[type='search'] { 302 | -webkit-appearance: textfield; 303 | /* 1 */ 304 | /* 2 */ 305 | box-sizing: content-box; } 306 | 307 | /** 308 | * Remove inner padding and search cancel button in Safari and Chrome on OS X. 309 | * Safari (but not Chrome) clips the cancel button when the search input has 310 | * padding (and `textfield` appearance). 311 | */ 312 | input[type='search']::-webkit-search-cancel-button, 313 | input[type='search']::-webkit-search-decoration { 314 | -webkit-appearance: none; } 315 | 316 | /** 317 | * Define consistent border, margin, and padding. 318 | */ 319 | fieldset { 320 | border: 1px solid #c0c0c0; 321 | margin: 0 2px; 322 | padding: 0.35em 0.625em 0.75em; } 323 | 324 | /** 325 | * 1. Correct `color` not being inherited in IE 8/9/10/11. 326 | * 2. Remove padding so people aren't caught out if they zero out fieldsets. 327 | */ 328 | legend { 329 | border: 0; 330 | /* 1 */ 331 | padding: 0; 332 | /* 2 */ } 333 | 334 | /** 335 | * Remove default vertical scrollbar in IE 8/9/10/11. 336 | */ 337 | textarea { 338 | overflow: auto; } 339 | 340 | /** 341 | * Don't inherit the `font-weight` (applied by a rule above). 342 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. 343 | */ 344 | optgroup { 345 | font-weight: bold; } 346 | 347 | /* Tables 348 | ========================================================================== */ 349 | /** 350 | * Remove most spacing between table cells. 351 | */ 352 | table { 353 | border-collapse: collapse; 354 | border-spacing: 0; } 355 | 356 | td, 357 | th { 358 | padding: 0; } 359 | 360 | /* generated with grunt-sass-globbing */ 361 | /** 362 | * Base Drupal styles 363 | */ 364 | * { 365 | box-sizing: border-box; } 366 | *:before, *:after { 367 | box-sizing: border-box; } 368 | 369 | body { 370 | line-height: 1.4; 371 | -webkit-font-smoothing: antialiased; 372 | -moz-font-smoothing: antialiased; 373 | font-smoothing: antialiased; } 374 | html body.admin-menu { 375 | margin-top: 130px !important; } 376 | @media (min-width: 400px) { 377 | html body.admin-menu { 378 | margin-top: 90px !important; } } 379 | @media (min-width: 600px) { 380 | html body.admin-menu { 381 | margin-top: 60px !important; } } 382 | @media (min-width: 1020px) { 383 | html body.admin-menu { 384 | margin-top: 29px !important; } } 385 | 386 | main ol, main ul { 387 | overflow: hidden; } 388 | 389 | a { 390 | transition: .2s color; 391 | text-decoration: none; } 392 | 393 | img { 394 | max-width: 100%; 395 | height: auto; } 396 | 397 | .clearfix:before, .clearfix:after { 398 | content: ""; 399 | display: table; } 400 | 401 | .clearfix:after { 402 | clear: both; } 403 | 404 | /** 405 | * Base Drupal styles 406 | */ 407 | /** 408 | * Hide elements visually, but keep them available for screen-readers. 409 | * 410 | * Used for information required for screen-reader users to understand and use 411 | * the site where visual display is undesirable. Information provided in this 412 | * manner should be kept concise, to avoid unnecessary burden on the user. 413 | */ 414 | .element-invisible { 415 | position: absolute; 416 | clip: rect(1px, 1px, 1px, 1px); } 417 | .element-invisible.element-focusable, 418 | .element-invisible.element-focusable:active .element-invisible.element-focusable:focus { 419 | position: static; 420 | clip: auto; } 421 | 422 | .file-icon { 423 | display: none; } 424 | 425 | /** 426 | * 427 | * Font stack 428 | * 429 | */ 430 | /** 431 | * Base form styles 432 | */ 433 | label { 434 | display: block; } 435 | 436 | input[type="text"], 437 | input[type="password"], 438 | input[type="email"], 439 | textarea { 440 | border: 1px solid #ccc; 441 | -moz-appearance: none; 442 | -webkit-appearance: none; 443 | padding: 10px 20px; 444 | max-width: 100%; 445 | background: white; 446 | outline: none; 447 | transition: background .2s; 448 | border-radius: 20px; } 449 | input[type="text"]:focus, 450 | input[type="password"]:focus, 451 | input[type="email"]:focus, 452 | textarea:focus { 453 | background: #eee; } 454 | 455 | select { 456 | -moz-appearance: none; 457 | -webkit-appearance: none; 458 | max-width: 100%; } 459 | 460 | 461 | input[type="submit"] { 462 | border: none; 463 | -moz-appearance: none; 464 | -webkit-appearance: none; 465 | padding: 10px 20px; 466 | transition: background .2s; } 467 | 468 | .form-item { 469 | margin-bottom: 20px; } 470 | 471 | .description { 472 | font-size: 16px; } 473 | 474 | /** 475 | * Icons 476 | */ 477 | /** 478 | * Typography 479 | */ 480 | h1 { 481 | font-size: 45px; 482 | line-height: 1.1; } 483 | h1.large { 484 | font-size: 65px; } 485 | h1 a { 486 | color: inherit; 487 | transition: color .2s; } 488 | 489 | h2 { 490 | font-size: 40px; 491 | line-height: 1.2; } 492 | h2 a { 493 | color: inherit; 494 | transition: color .2s; } 495 | 496 | h3 { 497 | font-size: 27px; 498 | line-height: 1.2; 499 | text-transform: none; 500 | margin: 0 0 10px 0; } 501 | h3 a { 502 | color: inherit; 503 | transition: color .2s; } 504 | 505 | h3 { 506 | font-size: 22px; 507 | line-height: 1.2; } 508 | h3 a { 509 | color: inherit; 510 | transition: color .2s; } 511 | 512 | blockquote { 513 | position: relative; 514 | font-size: 30px; } 515 | blockquote:before { 516 | position: absolute; 517 | right: calc(100% + 10px); 518 | top: 0; 519 | content: "“"; 520 | font-size: 70px; 521 | line-height: 1.1; } 522 | 523 | /** 524 | * WYSIWYG Specific Styles 525 | */ 526 | /* generated with grunt-sass-globbing */ 527 | /** 528 | * Base layouts 529 | */ 530 | #page { 531 | width: 100%; 532 | overflow: hidden; 533 | min-height: 800px; } 534 | 535 | @media (min-width: 650px) { 536 | 537 | .container, 538 | div.tabs { 539 | width: 94%; 540 | max-width: 1700px; 541 | margin: 0 auto; } } 542 | 543 | /* generated with grunt-sass-globbing */ 544 | /** 545 | * Tabs 546 | */ 547 | ul.tabs:before, ul.tabs:after { 548 | content: ""; 549 | display: table; } 550 | 551 | ul.tabs:after { 552 | clear: both; } 553 | 554 | @media (max-width: 650px) { 555 | ul.tabs { 556 | background-color: #eee; 557 | border-bottom: none; 558 | box-sizing: content-box; 559 | padding-bottom: 1px; 560 | display: table-row; } 561 | ul.tabs > li { 562 | width: 100%; 563 | display: table-cell; 564 | vertical-align: middle; 565 | float: none; 566 | line-height: 1.2; 567 | margin: 0; 568 | text-align: center; 569 | text-transform: capitalize; 570 | border-right: solid 1px white; 571 | position: relative; 572 | padding: 20px 5px; 573 | font-size: 16px; } 574 | ul.tabs > li:first-child:nth-last-child(2), 575 | ul.tabs > li:first-child:nth-last-child(2) ~ li { 576 | width: 50%; } 577 | ul.tabs > li:first-child:nth-last-child(3), 578 | ul.tabs > li:first-child:nth-last-child(3) ~ li { 579 | width: 33.33%; } 580 | ul.tabs > li:first-child:nth-last-child(4), 581 | ul.tabs > li:first-child:nth-last-child(4) ~ li { 582 | width: 25%; } 583 | ul.tabs > li:first-child:nth-last-child(5), 584 | ul.tabs > li:first-child:nth-last-child(5) ~ li { 585 | width: 20%; } 586 | ul.tabs > li.active { 587 | background-color: #ccc; } 588 | ul.tabs > li.active:after { 589 | content: ""; 590 | width: 0; 591 | height: 0; 592 | position: absolute; 593 | left: 50%; 594 | bottom: 0; 595 | margin-left: -10px; 596 | border-left: 10px solid transparent; 597 | border-right: 10px solid transparent; 598 | border-bottom: 10px solid #fff; } 599 | ul.tabs > li:last-child { 600 | border: none; } 601 | ul.tabs > li a { 602 | font-weight: normal; 603 | text-decoration: none; 604 | background-color: transparent; 605 | display: block; } 606 | ul.tabs > li a:hover { 607 | background-color: transparent; 608 | color: black; } } 609 | 610 | @media (min-width: 650px) { 611 | ul.tabs { 612 | margin: 10px 0 2px 0; 613 | border-bottom: 1px solid #bbb; 614 | padding: 0; } 615 | ul.tabs > li { 616 | list-style: none; 617 | float: left; 618 | margin-right: 1em; 619 | background-color: #eee; 620 | font-size: 16px; } 621 | ul.tabs > li.active { 622 | background-color: #ccc; } 623 | ul.tabs > li a { 624 | text-decoration: none; 625 | display: block; 626 | padding: 5px 10px; 627 | width: 100%; } 628 | ul.tabs > li a:hover { 629 | color: black; } } 630 | 631 | /* generated with grunt-sass-globbing */ 632 | /** 633 | * User Login page 634 | */ --------------------------------------------------------------------------------