├── .gitignore
├── favicon.png
├── site
├── zoe.jpg
├── march-on.jpg
├── mrsjxn.jpg
├── plants.jpg
├── homework-revolution-808.jpg
├── _reset.scss
├── _lists.scss
├── _positions.scss
├── style.scss
├── _buttons.scss
├── _utilities.scss
├── _forms.scss
├── _padding.scss
├── waveform-new.svg
├── _margins.scss
├── _type.scss
├── plangular-waveform.svg
├── _theme.scss
├── _plangular-site.scss
├── plangular-waveform-4.svg
├── plangular-waveform-5.svg
├── plangular-waveform-3.svg
├── style.css
├── plangular-waveform-2.svg
└── plangular.css
├── img
└── header-bg.jpg
├── apple-touch-icon.png
├── sass
├── _styles.scss
├── _images.scss
├── _font_style.scss
├── _grid.scss
├── _links.scss
├── _dimension_utilities.scss
├── _border_widths.scss
├── _clears.scss
├── _positions.scss
├── _text_decoration.scss
├── _word_spacing.scss
├── _colors.scss
├── _text_align.scss
├── _text_transform.scss
├── _queries.scss
├── _line_height.scss
├── _border_style.scss
├── _white_space.scss
├── _overflow.scss
├── _letter_spacing.scss
├── _lists.scss
├── _font_family.scss
├── _plangular_utilities.scss
├── _font_weight.scss
├── _background_size.scss
├── _floats.scss
├── _visibility.scss
├── _border_colors.scss
├── beats.scss
├── _padding.scss
├── _type_scale.scss
├── _border_radius.scss
├── _utilities.scss
├── _borders.scss
├── _vertical_align.scss
├── _display.scss
├── _margins.scss
├── _skins.scss
├── _widths.scss
├── _max_widths.scss
├── _position.scss
├── _plangular_site.scss
├── _debug.scss
├── _normalize.scss
└── _spacing.scss
├── svg
└── skullcat-skull.svg
├── package.json
├── icons
└── plangular-icons.svg
├── gulpfile.js
├── plangular.js
├── README.md
└── index.html
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | _site
3 |
--------------------------------------------------------------------------------
/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrmrs/beats/master/favicon.png
--------------------------------------------------------------------------------
/site/zoe.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrmrs/beats/master/site/zoe.jpg
--------------------------------------------------------------------------------
/img/header-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrmrs/beats/master/img/header-bg.jpg
--------------------------------------------------------------------------------
/site/march-on.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrmrs/beats/master/site/march-on.jpg
--------------------------------------------------------------------------------
/site/mrsjxn.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrmrs/beats/master/site/mrsjxn.jpg
--------------------------------------------------------------------------------
/site/plants.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrmrs/beats/master/site/plants.jpg
--------------------------------------------------------------------------------
/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrmrs/beats/master/apple-touch-icon.png
--------------------------------------------------------------------------------
/sass/_styles.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | STYLES
4 |
5 | Add custom styles here.
6 |
7 | */
8 |
9 |
--------------------------------------------------------------------------------
/site/homework-revolution-808.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mrmrs/beats/master/site/homework-revolution-808.jpg
--------------------------------------------------------------------------------
/sass/_images.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | IMAGES
4 |
5 | */
6 |
7 | /* Responsive images! */
8 |
9 | img { max-width: 100%; }
10 |
11 |
--------------------------------------------------------------------------------
/sass/_font_style.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Font Style
4 |
5 | */
6 |
7 | .fsn { font-style: normal; }
8 | .i { font-style: italic; }
9 |
10 |
--------------------------------------------------------------------------------
/sass/_grid.scss:
--------------------------------------------------------------------------------
1 | @include break(not-small) {
2 |
3 | }
4 |
5 | @include break(medium) {
6 |
7 | }
8 |
9 | @include break(large) {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/sass/_links.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | LINKS
4 |
5 | */
6 |
7 | .link {
8 | text-decoration: none;
9 | transition: .4s all;
10 | }
11 |
12 | .link:link { color: #30BBDB; }
13 | .link:visited { color: #2D243B; }
14 | .link:hover { color: #004EAB; }
15 | .link:active { color: #C4E3E0; }
16 |
17 |
--------------------------------------------------------------------------------
/svg/skullcat-skull.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/sass/_dimension_utilities.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | DIMENSION UTILITIES
4 |
5 | */
6 |
7 | .wrap {
8 | display: block;
9 | width: auto !important;
10 | }
11 |
12 | .fill {
13 | display: block;
14 | overflow: hidden;
15 | width: auto !important;
16 | }
17 |
18 | .dbf {
19 | display: block;
20 | width: 100%;
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/sass/_border_widths.scss:
--------------------------------------------------------------------------------
1 | /*
2 | BORDER WIDTHS
3 |
4 | LEGEND
5 |
6 | b = border
7 | w = width
8 |
9 | 0-5 = step in sizing scale
10 |
11 | */
12 |
13 | .bw0 { border-width: 0; }
14 | .bw1 { border-width: .125rem; }
15 | .bw2 { border-width: .25rem; }
16 | .bw3 { border-width: .5rem; }
17 | .bw4 { border-width: .75rem; }
18 | .bw5 { border-width: 1rem; }
19 |
20 |
--------------------------------------------------------------------------------
/site/_reset.scss:
--------------------------------------------------------------------------------
1 | // Reset
2 |
3 | body, button, input, select, textarea, pre { margin: 0; }
4 | h1, h2, h3, h4, h5, h6, p, dl, ol, ul {
5 | margin-top: 0;
6 | margin-bottom: 1rem;
7 | }
8 | button, input, select, textarea { font-family: inherit; font-size: 100%; }
9 | article, aside, details, figcaption, figure, footer, header, main, nav, section, summary { display: block; }
10 |
11 |
--------------------------------------------------------------------------------
/site/_lists.scss:
--------------------------------------------------------------------------------
1 | // Lists
2 |
3 | .list {
4 | padding-left: 2rem;
5 | }
6 | .ol {
7 | padding-left: 0;
8 | }
9 | // Simple unbulleted list
10 | .list-simple {
11 | list-style: none;
12 | padding-left: 0;
13 | }
14 |
15 | // Inline list
16 | .list-inline {
17 | list-style: none;
18 | padding-left: 0;
19 | li {
20 | display: inline;
21 | white-space: nowrap;
22 | }
23 | }
24 |
25 |
--------------------------------------------------------------------------------
/sass/_clears.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | CLEARS
4 |
5 | */
6 |
7 | .cn { clear: none; }
8 | .cl { clear: left; }
9 | .cr { clear: right; }
10 | .cb { clear: both; }
11 |
12 | /* Nicolas Gallaghers Clearfix solution
13 | Ref: http://nicolasgallagher.com/micro-clearfix-hack/ */
14 |
15 | .cf:before,
16 | .cf:after { content: " "; display: table; }
17 | .cf:after { clear: both; }
18 | .cf { *zoom: 1; }
19 |
20 |
--------------------------------------------------------------------------------
/sass/_positions.scss:
--------------------------------------------------------------------------------
1 | // Positioning Utilities
2 |
3 | .relative { position: relative; }
4 | .absolute { position: absolute; }
5 | .fixed { position: fixed; }
6 |
7 | .t0 { top: 0; }
8 | .r0 { right: 0; }
9 | .b0 { bottom: 0; }
10 | .l0 { left: 0; }
11 |
12 | .z1 { z-index: 1; }
13 | .z2 { z-index: 2; }
14 | .z3 { z-index: 3; }
15 | .z4 { z-index: 4; }
16 |
17 | .absolute-center {
18 | top: 0; right: 0; bottom: 0; left: 0;
19 | margin: auto;
20 | display: table;
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/site/_positions.scss:
--------------------------------------------------------------------------------
1 | // Positioning Utilities
2 |
3 | .relative { position: relative; }
4 | .absolute { position: absolute; }
5 | .fixed { position: fixed; }
6 |
7 | .t0 { top: 0; }
8 | .r0 { right: 0; }
9 | .b0 { bottom: 0; }
10 | .l0 { left: 0; }
11 |
12 | .z1 { z-index: 1; }
13 | .z2 { z-index: 2; }
14 | .z3 { z-index: 3; }
15 | .z4 { z-index: 4; }
16 |
17 | .absolute-center {
18 | top: 0; right: 0; bottom: 0; left: 0;
19 | margin: auto;
20 | display: table;
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/site/style.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | BASSCSS
4 |
5 | Next-level CSS toolkit - http://jxnblk.github.io/basscss
6 |
7 | Made with love by Jxnblk - ©2014 Brent Jackson
8 | MIT License http://opensource.org/licenses/MIT
9 |
10 | */
11 |
12 |
13 | @import "reset";
14 | @import "type";
15 | @import "margins";
16 | @import "padding";
17 | @import "utilities";
18 | @import "buttons";
19 | @import "lists";
20 | @import "positions";
21 | @import "theme";
22 |
23 | @import "plangular-site";
24 |
25 |
--------------------------------------------------------------------------------
/site/_buttons.scss:
--------------------------------------------------------------------------------
1 | // Buttons
2 |
3 | .button {
4 | font-family: inherit;
5 | font-weight: bold;
6 | text-decoration: none;
7 | cursor: pointer;
8 | border: none;
9 | -webkit-appearance: none;
10 | appearance: none;
11 | white-space: nowrap;
12 | display: inline-block;
13 | line-height: 2rem;
14 | height: auto;
15 | min-height: 2rem;
16 | padding: 0.5rem 1rem;
17 |
18 | // Add optional FF hack
19 | }
20 |
21 | .button-big { padding: 1rem 1.5rem; }
22 |
23 | .button-small { padding: 0 .5rem; }
24 |
25 |
--------------------------------------------------------------------------------
/sass/_text_decoration.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | TEXT DECORATION
4 |
5 | */
6 |
7 | .under { text-decoration: underline; }
8 | .none { text-decoration: none; }
9 |
10 |
11 | @include break(not-small) {
12 | .under-ns { text-decoration: underline; }
13 | .none-ns { text-decoration: none; }
14 | }
15 |
16 | @include break(medium) {
17 | .under-m { text-decoration: underline; }
18 | .none-m { text-decoration: none; }
19 | }
20 |
21 | @include break(large) {
22 | .under-l { text-decoration: underline; }
23 | .none-l { text-decoration: none; }
24 | }
25 |
26 |
--------------------------------------------------------------------------------
/sass/_word_spacing.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | WORD SPACING
4 |
5 | */
6 |
7 | .wsn { word-spacing: normal; }
8 | .wsib { word-spacing: -0.43em; } /* For eliminating space between inline-block elements */
9 |
10 | @include break(not-small) {
11 | .wsn-ns { word-spacing: normal; }
12 | .wsib-ns { word-spacing: -0.43em; }
13 | }
14 |
15 | @include break(medium) {
16 | .wsn-m { word-spacing: normal; }
17 | .wsib-m { word-spacing: -0.43em; }
18 | }
19 |
20 | @include break(large) {
21 | .wsn-l { word-spacing: normal; }
22 | .wsib-l { word-spacing: -0.43em; }
23 | }
24 |
25 |
--------------------------------------------------------------------------------
/sass/_colors.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | COLORS
4 |
5 | */
6 |
7 | /* variables */
8 |
9 | $black: #000;
10 | $near-black: #111;
11 | $dark-gray:#222;
12 | $mid-gray:#666;
13 | $gray: #888;
14 | $silver: #999;
15 | $light-silver: #aaa;
16 | $light-gray: #ccc;
17 | $near-white: #eee;
18 | $white: #fff;
19 |
20 | $aqua: #7FDBFF;
21 | $blue: #0074D9;
22 | $navy: #001F3F;
23 | $teal: #39CCCC;
24 | $green: #2ECC40;
25 | $olive: #3D9970;
26 | $lime: #01FF70;
27 |
28 | $yellow: #FFDC00;
29 | $orange: #FF851B;
30 | $red: #FF4136;
31 | $fuchsia: #F012BE;
32 | $purple: #B10DC9;
33 | $maroon: #85144B;
34 |
35 |
--------------------------------------------------------------------------------
/sass/_text_align.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Text Align
4 |
5 | */
6 |
7 | .tl { text-align: left; }
8 | .tr { text-align: right; }
9 | .tc { text-align: center; }
10 |
11 | @include break(not-small) {
12 | .tl-ns { text-align: left; }
13 | .tr-ns { text-align: right; }
14 | .tc-ns { text-align: center; }
15 | }
16 |
17 | @include break(medium) {
18 | .tl-m { text-align: left; }
19 | .tr-m { text-align: right; }
20 | .tc-m { text-align: center; }
21 | }
22 |
23 | @include break(large) {
24 | .tl-l { text-align: left; }
25 | .tr-l { text-align: right; }
26 | .tc-l { text-align: center; }
27 | }
28 |
29 |
--------------------------------------------------------------------------------
/sass/_text_transform.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | TEXT TRANSFORM
4 |
5 | */
6 |
7 | .ttc { text-transform: capitalize; }
8 | .ttu { text-transform: uppercase; letter-spacing: .2em; }
9 |
10 | @include break(not-small) {
11 | .ttc-ns { text-transform: capitalize; }
12 | .ttu-ns { text-transform: uppercase; letter-spacing: .2em; }
13 | }
14 |
15 | @include break(medium) {
16 | .ttc-m { text-transform: capitalize; }
17 | .ttu-m { text-transform: uppercase; letter-spacing: .2em; }
18 | }
19 |
20 | @include break(large) {
21 | .ttc-l { text-transform: capitalize; }
22 | .ttu-l { text-transform: uppercase; letter-spacing: .2em; }
23 | }
24 |
25 |
--------------------------------------------------------------------------------
/sass/_queries.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | QUERIES
4 |
5 | */
6 |
7 | /*
8 | * Mixing for mobile first queries.
9 | * Two breakpoints.
10 | * Use like @include break(medium) {
11 | * ***Styles***
12 | * }
13 | *
14 | */
15 |
16 | @mixin break($point) {
17 | @if $point == not-small {
18 | @media screen and (min-width: 48em) {
19 | @content;
20 | }
21 | }
22 | @else if $point == medium {
23 | @media screen and (min-width: 48em) and (max-width: 64em) {
24 | @content;
25 | }
26 | }
27 | @else if $point == large {
28 | @media screen and (min-width: 64em) {
29 | @content;
30 | }
31 | }
32 | }
33 |
34 |
--------------------------------------------------------------------------------
/sass/_line_height.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | LINE HEIGHT
4 |
5 | */
6 |
7 | .lh { line-height: 1; }
8 | .lh-title { line-height: 1.3; }
9 | .lh-copy { line-height: 1.6; }
10 |
11 | @include break(not-small) {
12 | .lh-ns { line-height: 1; }
13 | .lh-title-ns { line-height: 1.3; }
14 | .lh-copy-ns { line-height: 1.6; }
15 | }
16 |
17 | @include break(medium) {
18 | .lh-m { line-height: 1; }
19 | .lh-title-m { line-height: 1.3; }
20 | .lh-copy-m { line-height: 1.6; }
21 | }
22 |
23 | @include break(large) {
24 | .lh-l { line-height: 1; }
25 | .lh-title-l { line-height: 1.3; }
26 | .lh-copy-l { line-height: 1.6; }
27 | }
28 |
29 |
--------------------------------------------------------------------------------
/sass/_border_style.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | BORDER STYLES
4 |
5 | */
6 |
7 | .bs-none { border-style: none; }
8 | .bs-dotted { border-style: dotted; }
9 | .bs-solid { border-style: solid; }
10 |
11 | @include break(not-small) {
12 | .bs-none-ns { border-style: none; }
13 | .bs-dotted-ns { border-style: dotted; }
14 | .bs-solid-ns { border-style: solid; }
15 | }
16 |
17 | @include break(medium) {
18 | .bs-none-m { border-style: none; }
19 | .bs-dotted-m { border-style: dotted; }
20 | .bs-solid-m { border-style: solid; }
21 | }
22 |
23 | @include break(large) {
24 | .bs-none-l { border-style: none; }
25 | .bs-dotted-l { border-style: dotted; }
26 | .bs-solid-l { border-style: solid; }
27 | }
28 |
29 |
--------------------------------------------------------------------------------
/sass/_white_space.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | WHITE SPACE
4 |
5 | */
6 |
7 |
8 | .ws-norm { white-space: normal; }
9 | .ws-nowrap { white-space: nowrap; }
10 | .ws-pre { white-space: pre; }
11 |
12 | @include break(not-small) {
13 | .ws-norm-ns { white-space: normal; }
14 | .ws-nowrap-ns { white-space: nowrap; }
15 | .ws-pre-ns { white-space: pre; }
16 | }
17 |
18 | @include break(medium) {
19 | .ws-norm-m { white-space: normal; }
20 | .ws-nowrap-m { white-space: nowrap; }
21 | .ws-pre-m { white-space: pre; }
22 | }
23 |
24 | @include break(large) {
25 | .ws-norm-l { white-space: normal; }
26 | .ws-nowrap-l { white-space: nowrap; }
27 | .ws-pre-l { white-space: pre; }
28 | }
29 |
30 |
--------------------------------------------------------------------------------
/sass/_overflow.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | OVERFLOWS
4 |
5 | */
6 |
7 | .of-vis { overflow: visible; }
8 | .of-hid { overflow: hidden; }
9 | .of-scr { overflow: scroll; }
10 | .of-aut { overflow: auto; }
11 |
12 | @include break(not-small) {
13 | .of-vis-ns { overflow: visible; }
14 | .of-hid-ns { overflow: hidden; }
15 | .of-scr-ns { overflow: scroll; }
16 | .of-aut-ns { overflow: auto; }
17 | }
18 |
19 | @include break(medium) {
20 | .of-vis-m { overflow: visible; }
21 | .of-hid-m { overflow: hidden; }
22 | .of-scr-m { overflow: scroll; }
23 | .of-aut-m { overflow: auto; }
24 | }
25 |
26 | @include break(large) {
27 | .of-vis-l { overflow: visible; }
28 | .of-hid-l { overflow: hidden; }
29 | .of-scr-l { overflow: scroll; }
30 | .of-aut-l { overflow: auto; }
31 | }
32 |
33 |
--------------------------------------------------------------------------------
/sass/_letter_spacing.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | LETTER SPACING
4 |
5 | */
6 |
7 | .tracked { letter-spacing: .16em; }
8 | .tracked-tight { letter-spacing: -.1em; }
9 | .mega-tracked { letter-spacing: .3em; }
10 |
11 | @include break(not-small) {
12 | .tracked-ns { letter-spacing: .16em; }
13 | .tracked-tight-ns { letter-spacing: -.1em; }
14 | .mega-tracked-ns { letter-spacing: .3em; }
15 | }
16 |
17 | @include break(medium) {
18 | .tracked-m { letter-spacing: .16em; }
19 | .tracked-tight-m { letter-spacing: -.1em; }
20 | .mega-tracked-m { letter-spacing: .3em; }
21 | }
22 |
23 | @include break(large) {
24 | .tracked-l { letter-spacing: .16em; }
25 | .tracked-tight-l { letter-spacing: -.1em; }
26 | .mega-tracked-l { letter-spacing: .3em; }
27 | }
28 |
29 |
--------------------------------------------------------------------------------
/sass/_lists.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | LISTS
4 |
5 | */
6 |
7 | .list { list-style-type: none; }
8 |
9 | .list--h {
10 | list-style-type: none;
11 | .list--h-item { display: inline-block; }
12 | }
13 |
14 | @include break(not-small) {
15 | .list--h-ns {
16 | list-style-type: none;
17 | .list--h-item-ns { display: inline-block; }
18 | }
19 | }
20 |
21 | @include break(medium) {
22 | .list-m { list-style: none; }
23 | .list--h-m {
24 | list-style-type: none;
25 | .list--h-item { display: inline-block; }
26 | }
27 | }
28 |
29 | @include break(large) {
30 | .list-l { list-style-type: none; }
31 | .list--h-l {
32 | list-style-type: none;
33 | .list--h-item { display: inline-block; }
34 | }
35 | }
36 |
37 |
--------------------------------------------------------------------------------
/sass/_font_family.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Font Family Groups
4 |
5 | */
6 |
7 | .serif { font-family: georgia, serif; }
8 | .sans-serif { font-family: 'Source Sans Pro', sans-serif; }
9 |
10 | // From http://cssfontstack.com
11 | .code { font-family: Consolas, monaco, monospace; }
12 | .serif-bodini { font-family: "Bodoni MT", Didot, "Didot LT STD", "Hoefler Text", Garamond, "Times New Roman", serif; }
13 | .serif-calisto { font-family: "Calisto MT", "Bookman Old Style", Bookman, "Goudy Old Style", Garamond, "Hoefler Text", "Bitstream Charter", Georgia, serif; }
14 | .serif-garamond { font-family: Garamond, Baskerville, "Baskerville Old Face", "Hoefler Text", "Times New Roman", serif; }
15 | .serif-times { font-family: TimesNewRoman, "Times New Roman", Times, Baskerville, Georgia, serif; }
16 |
17 |
--------------------------------------------------------------------------------
/site/_utilities.scss:
--------------------------------------------------------------------------------
1 | // Layout Utilities
2 |
3 | .inline { display: inline; }
4 | .block { display: block; }
5 | .inline-block { display: inline-block; }
6 |
7 | .oh { overflow: hidden; }
8 | .left { float: left; }
9 | .right { float: right; }
10 |
11 | .clearfix {
12 | &:before, &:after { content: " "; display: table; }
13 | &:after { clear: both; }
14 | }
15 |
16 | .fit { max-width: 100%; }
17 |
18 | .full-width { width: 100%; }
19 | .half-width { width: 50%; }
20 |
21 | .mobile-show {
22 | display: none;
23 | }
24 |
25 | @media (max-width: 48em) {
26 | .mobile-show,
27 | .mobile-block {
28 | display: block;
29 | }
30 | .mobile-block {
31 | width: 100%;
32 | }
33 | .mobile-hide {
34 | display: none;
35 | }
36 | .mobile-center {
37 | text-align: center;
38 | }
39 | }
40 |
41 |
--------------------------------------------------------------------------------
/sass/_plangular_utilities.scss:
--------------------------------------------------------------------------------
1 | // Layout Utilities
2 |
3 | .inline { display: inline; }
4 | .block { display: block; }
5 | .inline-block { display: inline-block; }
6 |
7 | .oh { overflow: hidden; }
8 | .left { float: left; }
9 | .right { float: right; }
10 |
11 | .clearfix {
12 | &:before, &:after { content: " "; display: table; }
13 | &:after { clear: both; }
14 | }
15 |
16 | .fit { max-width: 100%; }
17 |
18 | .full-width { width: 100%; }
19 | .half-width { width: 50%; }
20 |
21 | .mobile-show {
22 | display: none;
23 | }
24 |
25 | @media (max-width: 48em) {
26 | .mobile-show,
27 | .mobile-block {
28 | display: block;
29 | }
30 | .mobile-block {
31 | width: 100%;
32 | }
33 | .mobile-hide {
34 | display: none;
35 | }
36 | .mobile-center {
37 | text-align: center;
38 | }
39 | }
40 |
41 |
--------------------------------------------------------------------------------
/site/_forms.scss:
--------------------------------------------------------------------------------
1 | // Forms
2 |
3 | .form {
4 | font-size: 1rem;
5 | }
6 |
7 | .input {
8 | appearance: none;
9 | border-style: solid;
10 | border-width: 1px;
11 | -moz-box-sizing: border-box;
12 | box-sizing: border-box;
13 | max-width: 100%;
14 | height: 3rem;
15 | line-height: 2rem;
16 | padding: .5rem;
17 | border-radius: .25rem;
18 | }
19 |
20 | .select {
21 | box-sizing: border-box;
22 | height: 3rem;
23 | margin-right: 0;
24 | margin-left: 0;
25 | border-radius: .25rem;
26 | }
27 |
28 | .textarea {
29 | box-sizing: border-box;
30 | padding: 1rem;
31 | line-height: 1.5rem;
32 | border-radius: .25rem;
33 | }
34 |
35 | .form-stacked {
36 | label,
37 | .input,
38 | .select {
39 | display: block;
40 | width: 100%;
41 | }
42 | .input,
43 | .select,
44 | .radio,
45 | .checkbox {
46 | margin-bottom: 1rem;
47 | }
48 | }
49 |
50 |
--------------------------------------------------------------------------------
/sass/_font_weight.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | FONT WEIGHT
4 |
5 | */
6 |
7 | .fwn { font-weight: normal; }
8 | .b { font-weight: bold; }
9 | .fw1 { font-weight: 100; }
10 | .fw4 { font-weight: 400; }
11 | .fw9 { font-weight: 900; }
12 |
13 | @include break(not-small) {
14 | .fwn-ns { font-weight: normal; }
15 | .b-ns { font-weight: bold; }
16 | .fw1-ns { font-weight: 100; }
17 | .fw4-ns { font-weight: 400; }
18 | .fw9-ns { font-weight: 900; }
19 | }
20 |
21 | @include break(medium) {
22 | .fwn-m { font-weight: normal; }
23 | .b-m { font-weight: bold; }
24 | .fw1-m { font-weight: 100; }
25 | .fw4-m { font-weight: 400; }
26 | .fw9-m { font-weight: 900; }
27 | }
28 |
29 | @include break(large) {
30 | .fwn-l { font-weight: normal; }
31 | .b-l { font-weight: bold; }
32 | .fw1-l { font-weight: 100; }
33 | .fw4-l { font-weight: 400; }
34 | .fw9-l { font-weight: 900; }
35 | }
36 |
37 |
--------------------------------------------------------------------------------
/sass/_background_size.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | BACKGROUND SIZE
4 |
5 | */
6 |
7 | .bg-cv { background-size: cover; }
8 | .bg-cn { background-size: contain; }
9 | .bg-auto { background-size: auto; }
10 |
11 | .bp-bottom { background-position: center bottom; }
12 |
13 | @include break(not-small) {
14 | .bg-cv-ns { background-size: cover; }
15 | .bg-cn-ns { background-size: contain; }
16 | .bg-auto-ns { background-size: auto; }
17 | }
18 |
19 | @include break(medium) {
20 | .bg-cv-m { background-size: cover; }
21 | .bg-cn-m { background-size: contain; }
22 | .bg-auto-m { background-size: auto; }
23 | }
24 |
25 | @include break(large) {
26 | .bg-cv-l { background-size: cover; }
27 | .bg-cn-l { background-size: contain; }
28 | .bg-auto-l { background-size: auto; }
29 | }
30 |
31 |
--------------------------------------------------------------------------------
/sass/_floats.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | FLOATS
4 |
5 | 1. Floated elements are automatically rendered as block level elements.
6 | Setting floats to display inline will fix the double margin bug in
7 | ie6. You know... just in case.
8 |
9 | Legend
10 |
11 | f = float
12 | l = left
13 | r = right
14 | n = none
15 |
16 | */
17 |
18 |
19 |
20 | .fl { float: left; display: inline; }
21 | .fr { float: right; display: inline; }
22 | .fn { float: none; }
23 |
24 | @include break(not-small) {
25 | .fl-ns { float: left; display: inline; }
26 | .fr-ns { float: right;display: inline; }
27 | .fn-ns { float: none; }
28 | }
29 |
30 | @include break(medium) {
31 | .fl-m { float: left; display: inline; }
32 | .fr-m { float: right; display: inline; }
33 | .fn-m { float: none; }
34 | }
35 |
36 | @include break(large) {
37 | .fl-l { float: left; display: inline; }
38 | .fr-l { float: right; display: inline; }
39 | .fn-l { float: none; }
40 | }
41 |
42 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "beats",
3 | "version": "0.0.2",
4 | "description": "Skullcat beats",
5 | "main": "index.html",
6 | "repository": {
7 | "type": "git",
8 | "url": "git://github.com/mrmrs/beats.git"
9 | },
10 | "keywords": [
11 | "808",
12 | "bpm",
13 | "drums",
14 | "beats"
15 | ],
16 | "author": "mrmrs",
17 | "license": "MIT",
18 | "bugs": {
19 | "url": "https://github.com/mrmrs/beats/issues"
20 | },
21 | "devDependencies": {
22 | "browser-sync": "^2.23.6",
23 | "gulp": "~3.9.1",
24 | "gulp-autoprefixer": "5.0.0",
25 | "gulp-csslint": "~1.0.1",
26 | "gulp-imagemin": "~4.1.0",
27 | "gulp-minify-css": "^1.2.4",
28 | "gulp-rename": "^1.2.2",
29 | "gulp-ruby-sass": "~3.0.0",
30 | "gulp-size": "^3.0.0",
31 | "gulp-svgmin": "~1.2.4",
32 | "gulp-util": "~3.0.8",
33 | "gulp-watch": "~5.0.0",
34 | "jshint-stylish": "~2.2.1"
35 | },
36 | "scripts": {
37 | "start": "gulp"
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/icons/plangular-icons.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/sass/_visibility.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | VISIBILITY
4 |
5 | */
6 |
7 |
8 | /*
9 | Text that is hidden but accessible
10 | Ref: http://snook.ca/archives/html_and_css/hiding-content-for-accessibility
11 | */
12 |
13 | .clip {
14 | position: fixed !important;
15 | _position: absolute !important;
16 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
17 | clip: rect(1px, 1px, 1px, 1px);
18 | }
19 |
20 | @include break(not-small) {
21 | .clip-ns {
22 | position: fixed !important;
23 | _position: absolute !important;
24 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
25 | clip: rect(1px, 1px, 1px, 1px);
26 | }
27 | }
28 |
29 | @include break(medium) {
30 | .clip-m {
31 | position: fixed !important;
32 | _position: absolute !important;
33 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
34 | clip: rect(1px, 1px, 1px, 1px);
35 | }
36 | }
37 |
38 | @include break(large) {
39 | .clip-l {
40 | position: fixed !important;
41 | _position: absolute !important;
42 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
43 | clip: rect(1px, 1px, 1px, 1px);
44 | }
45 | }
46 |
47 |
--------------------------------------------------------------------------------
/sass/_border_colors.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | BORDER COLORS
4 |
5 | */
6 |
7 | .b-black { border-color: $black; }
8 | .b-near-black { border-color: $near-black; }
9 | .b-dark-gray { border-color: $dark-gray; }
10 | .b-mid-gray { border-color: $mid-gray; }
11 | .b-gray { border-color: $gray; }
12 | .b-silver { border-color: $silver; }
13 | .b-light-silver { border-color: $light-silver; }
14 | .b-light-gray { border-color: $light-gray; }
15 | .b-near-white { border-color: $near-white; }
16 | .b-white { border-color: $white; }
17 |
18 | .b-aqua { border-color: $aqua; }
19 | .b-blue { border-color: $blue; }
20 | .b-navy { border-color: $navy; }
21 | .b-teal { border-color: $teal; }
22 | .b-green { border-color: $green; }
23 | .b-olive { border-color: $olive; }
24 | .b-lime { border-color: $lime; }
25 | .b-yellow { border-color: $yellow; }
26 | .b-orange { border-color: $orange; }
27 | .b-red { border-color: $red; }
28 | .b-fuchsia { border-color: $fuchsia; }
29 | .b-purple { border-color: $purple; }
30 | .b-maroon { border-color: $maroon; }
31 |
32 |
--------------------------------------------------------------------------------
/sass/beats.scss:
--------------------------------------------------------------------------------
1 | @import "queries";
2 | @import "colors";
3 |
4 | @import "plangular_site";
5 | @import "plangular_utilities";
6 | @import "background_size";
7 | @import "border_colors";
8 | @import "border_radius";
9 | @import "border_style";
10 | @import "border_widths";
11 | @import "borders";
12 | @import "clears";
13 | @import "dimension_utilities";
14 | @import "display";
15 | @import "floats";
16 | @import "font_family";
17 | @import "font_style";
18 | @import "font_weight";
19 | @import "grid";
20 | @import "images";
21 | @import "letter_spacing";
22 | @import "line_height";
23 | @import "links";
24 | @import "lists";
25 | @import "margins";
26 | @import "max_widths";
27 | @import "normalize";
28 | @import "overflow";
29 | @import "padding";
30 | @import "position";
31 | @import "positions";
32 | @import "skins";
33 | @import "spacing";
34 | @import "text_decoration";
35 | @import "text_align";
36 | @import "text_transform";
37 | @import "type_scale";
38 | @import "utilities";
39 | @import "visibility";
40 | @import "white_space";
41 | @import "widths";
42 | @import "word_spacing";
43 | @import "styles";
44 | @import "vertical_align";
45 |
46 | @import "debug";
47 |
--------------------------------------------------------------------------------
/sass/_padding.scss:
--------------------------------------------------------------------------------
1 | // Padding
2 |
3 | .p1 { padding: 1rem; }
4 | .px1 { padding-right: 1rem; padding-left: 1rem; }
5 | .py1 { padding-top: 1rem; padding-bottom: 1rem; }
6 |
7 | .p2 { padding: 2rem; }
8 | .px2 { padding-right: 2rem; padding-left: 2rem; }
9 | .py2 { padding-top: 2rem; padding-bottom: 2rem; }
10 |
11 | .p3 { padding: 3rem; }
12 | .px3 { padding-right: 3rem; padding-left: 3rem; }
13 | .py3 { padding-top: 3rem; padding-bottom: 3rem; }
14 |
15 | .p4 { padding: 4rem; }
16 | .px4 { padding-right: 4rem; padding-left: 4rem; }
17 | .py4 { padding-top: 4rem; padding-bottom: 4rem; }
18 |
19 |
20 | // Responsive padding
21 |
22 | .p-responsive { padding: 1.5rem; }
23 | .px-responsive { padding-right: 1.5rem; padding-left: 1.5rem; }
24 | .py-responsive { padding-top: 1.5rem; padding-bottom: 1.5rem; }
25 |
26 | @media (min-width: 48em) and (max-width: 64em) {
27 | .p-responsive { padding: 3rem; }
28 | .px-responsive { padding-right: 3rem; padding-left: 3rem; }
29 | .py-responsive { padding-top: 3rem; padding-bottom: 3rem; }
30 | }
31 |
32 | @media (min-width: 64em) {
33 | .p-responsive { padding: 4rem; }
34 | .px-responsive { padding-right: 4rem; padding-left: 4rem; }
35 | .py-responsive { padding-top: 4rem; padding-bottom: 4rem; }
36 | }
37 |
38 |
--------------------------------------------------------------------------------
/site/_padding.scss:
--------------------------------------------------------------------------------
1 | // Padding
2 |
3 | .p1 { padding: 1rem; }
4 | .px1 { padding-right: 1rem; padding-left: 1rem; }
5 | .py1 { padding-top: 1rem; padding-bottom: 1rem; }
6 |
7 | .p2 { padding: 2rem; }
8 | .px2 { padding-right: 2rem; padding-left: 2rem; }
9 | .py2 { padding-top: 2rem; padding-bottom: 2rem; }
10 |
11 | .p3 { padding: 3rem; }
12 | .px3 { padding-right: 3rem; padding-left: 3rem; }
13 | .py3 { padding-top: 3rem; padding-bottom: 3rem; }
14 |
15 | .p4 { padding: 4rem; }
16 | .px4 { padding-right: 4rem; padding-left: 4rem; }
17 | .py4 { padding-top: 4rem; padding-bottom: 4rem; }
18 |
19 |
20 | // Responsive padding
21 |
22 | .p-responsive { padding: 1.5rem; }
23 | .px-responsive { padding-right: 1.5rem; padding-left: 1.5rem; }
24 | .py-responsive { padding-top: 1.5rem; padding-bottom: 1.5rem; }
25 |
26 | @media (min-width: 48em) and (max-width: 64em) {
27 | .p-responsive { padding: 3rem; }
28 | .px-responsive { padding-right: 3rem; padding-left: 3rem; }
29 | .py-responsive { padding-top: 3rem; padding-bottom: 3rem; }
30 | }
31 |
32 | @media (min-width: 64em) {
33 | .p-responsive { padding: 4rem; }
34 | .px-responsive { padding-right: 4rem; padding-left: 4rem; }
35 | .py-responsive { padding-top: 4rem; padding-bottom: 4rem; }
36 | }
37 |
38 |
--------------------------------------------------------------------------------
/sass/_type_scale.scss:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | TYPE SCALE
3 | ========================================================================== */
4 |
5 | .f1 { font-size: 2rem; }
6 | .f2 { font-size: 1.5rem; }
7 | .f3 { font-size: 1.2rem; }
8 | .f4 { font-size: 1.2rem; }
9 | .f5 { font-size: 1rem; }
10 | .f6,
11 | .small { font-size: .85rem; }
12 |
13 |
14 | @include break(not-small){
15 | .mega-ns { font-size: 3rem; }
16 | .f1-ns { font-size: 2rem; }
17 | .f2-ns { font-size: 1.5rem; }
18 | .f3-ns { font-size: 1.2rem; }
19 | .f4-ns { font-size: 1.2rem; }
20 | .f5-ns { font-size: 1rem; }
21 | .f6-ns { font-size: .85rem; }
22 | }
23 |
24 | @include break(medium) {
25 | .mega-m { font-size: 3rem; }
26 | .f1-m { font-size: 2rem; }
27 | .f2-m { font-size: 1.5rem; }
28 | .f3-m { font-size: 1.2rem; }
29 | .f4-m { font-size: 1.2rem; }
30 | .f5-m { font-size: 1rem; }
31 | .f6-m { font-size: .85rem; }
32 | }
33 |
34 | @include break(large) {
35 | .mega-l { font-size: 4rem; }
36 | .f1-l { font-size: 3rem; }
37 | .f2-l { font-size: 2rem; }
38 | .f3-l { font-size: 1.5rem; }
39 | .f4-l { font-size: 1.2rem; }
40 | .f5-l { font-size: 1rem; }
41 | .f6-l { font-size: 1rem; }
42 | }
43 |
44 |
--------------------------------------------------------------------------------
/sass/_border_radius.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | BORDER RADIUS
4 |
5 | */
6 |
7 | .brn { border-radius: 0; }
8 | .br { border-radius: .125rem; }
9 | .br2 { border-radius: .25rem; }
10 | .br3 { border-radius: .5rem; }
11 | .br4 { border-radius: 1rem; }
12 | .br5 { border-radius: 2rem; }
13 | .br-circ { border-radius: 9999px; }
14 | .br-100 { border-radius: 100%; }
15 |
16 | @include break(not-small) {
17 | .brn-ns { border-radius: 0; }
18 | .br-ns { border-radius: .125rem; }
19 | .br2-ns { border-radius: .25rem; }
20 | .br3-ns { border-radius: .5rem; }
21 | .br4-ns { border-radius: 1rem; }
22 | .br5-ns { border-radius: 2rem; }
23 | .br-circ-ns { border-radius: 9999px; }
24 | .br-100-ns { border-radius: 100%; }
25 | }
26 |
27 | @include break(medium) {
28 | .brn-m { border-radius: 0; }
29 | .br-m { border-radius: .125rem; }
30 | .br2-m { border-radius: .25rem; }
31 | .br3-m { border-radius: .5rem; }
32 | .br4-m { border-radius: 1rem; }
33 | .br5-m { border-radius: 2rem; }
34 | .br-circ-m { border-radius: 9999px; }
35 | .br-100-m { border-radius: 100%; }
36 | }
37 |
38 | @include break(large) {
39 | .brn-l { border-radius: 0; }
40 | .br-l { border-radius: .125rem; }
41 | .br2-l { border-radius: .25rem; }
42 | .br3-l { border-radius: .5rem; }
43 | .br4-l { border-radius: 1rem; }
44 | .br5-l { border-radius: 2rem; }
45 | .br-circ-l { border-radius: 9999px; }
46 | .br-100-l { border-radius: 100%; }
47 | }
48 |
49 |
--------------------------------------------------------------------------------
/site/waveform-new.svg:
--------------------------------------------------------------------------------
1 |
2 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/sass/_utilities.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | UTILITIES
4 |
5 | */
6 |
7 | /*
8 | * The Media Object
9 | * Built by @stubornella
10 | * http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code/
11 | *
12 | *
23 | */
24 |
25 |
26 |
27 | /*
28 | * The Flag Object
29 | * Built by @csswizzrdry
30 | * http://csswizardry.com/2013/05/the-flag-object/
31 | *
32 | *
33 | * Use to vertically center text against an image.
34 | *
35 | *
36 | *
37 | *
38 | *
39 | *
42 | *
43 | *
44 | */
45 |
46 | .flag {
47 | display: table;
48 | width: 100%;
49 | }
50 |
51 | .flag--image,
52 | .flag--body {
53 | display: table-cell;
54 | vertical-align: middle;
55 |
56 | .flag--top & {
57 | vertical-align: top;
58 | }
59 |
60 | .flag--bottom & {
61 | vertical-align: bottom;
62 | }
63 |
64 | }
65 |
66 | .flag--image {
67 | padding-right: 10px;
68 |
69 | > img {
70 | display: block;
71 | max-width: none;
72 | }
73 |
74 | .flag--rev & {
75 | padding-right: 0;
76 | padding-left: 10px;
77 | }
78 |
79 | }
80 |
81 | .flag--body {
82 | width: 100%;
83 | }
84 |
85 |
--------------------------------------------------------------------------------
/sass/_borders.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | BORDER BASE
4 |
5 | Legend
6 |
7 | a = all
8 | t = top
9 | r = right
10 | b = bottom
11 | l = left
12 |
13 | */
14 |
15 | .ba { border-style: solid; border-width: 1px; }
16 | .bt { border-style: solid; border-left-width: 1px; }
17 | .br { border-style: solid; border-right-width: 1px; }
18 | .bb { border-style: solid; border-bottom-width: 1px; }
19 | .bl { border-style: solid; border-left-width: 1px; }
20 | .bln { border-style: solid; border-left-width: 0; }
21 | .brn { border-style: solid; border-right-width: 0; }
22 | .btn { border-style: solid; border-top-width: 0; }
23 |
24 | @include break(not-small) {
25 | .ba-ns { border-style: solid; border-width: 1px; }
26 | .bt-ns { border-style: solid; border-left-width: 1px; }
27 | .br-ns { border-style: solid; border-right-width: 1px; }
28 | .bb-ns { border-style: solid; border-bottom-width: 1px; }
29 | .bl-ns { border-style: solid; border-left-width: 1px; }
30 | }
31 |
32 | @include break(medium) {
33 | .ba-m { border-style: solid; border-width: 1px; }
34 | .bt-m { border-style: solid; border-left-width: 1px; }
35 | .br-m { border-style: solid; border-right-width: 1px; }
36 | .bb-m { border-style: solid; border-bottom-width: 1px; }
37 | .bl-m { border-style: solid; border-left-width: 1px; }
38 | }
39 |
40 | @include break(large) {
41 | .ba-l { border-style: solid; border-width: 1px; }
42 | .bt-l { border-style: solid; border-left-width: 1px; }
43 | .br-l { border-style: solid; border-right-width: 1px; }
44 | .bb-l { border-style: solid; border-bottom-width: 1px; }
45 | .bl-l { border-style: solid; border-left-width: 1px; }
46 | }
47 |
48 |
--------------------------------------------------------------------------------
/sass/_vertical_align.scss:
--------------------------------------------------------------------------------
1 | /*
2 | VERTICAL ALIGN
3 | */
4 |
5 | .v-base { vertical-align: baseline; }
6 | .v-sub { vertical-align: sub; }
7 | .v-sup { vertical-align: super; }
8 | .v-txt-top { vertical-align: text-top; }
9 | .v-txt-btm { vertical-align: text-bottom; }
10 | .v-mid { vertical-align: middle; }
11 | .v-top { vertical-align: top; }
12 | .v-btm { vertical-align: bottom; }
13 |
14 | @include break(not-small) {
15 | .v-base-ns { vertical-align: baseline; }
16 | .v-sub-ns { vertical-align: sub; }
17 | .v-sup-ns { vertical-align: super; }
18 | .v-txt-top-ns { vertical-align: text-top; }
19 | .v-txt-btm-ns { vertical-align: text-bottom; }
20 | .v-mid-ns { vertical-align: middle; }
21 | .v-top-ns { vertical-align: top; }
22 | .v-btm-ns { vertical-align: bottom; }
23 | }
24 |
25 | @include break(medium) {
26 | .v-base-m { vertical-align: baseline; }
27 | .v-sub-m { vertical-align: sub; }
28 | .v-sup-m { vertical-align: super; }
29 | .v-txt-top-m { vertical-align: text-top; }
30 | .v-txt-btm-m { vertical-align: text-bottom; }
31 | .v-mid-m { vertical-align: middle; }
32 | .v-top-m { vertical-align: top; }
33 | .v-btm-m { vertical-align: bottom; }
34 | }
35 |
36 | @include break(large) {
37 | .v-base-l { vertical-align: baseline; }
38 | .v-sub-l { vertical-align: sub; }
39 | .v-sup-l { vertical-align: super; }
40 | .v-txt-top-l { vertical-align: text-top; }
41 | .v-txt-btm-l { vertical-align: text-bottom; }
42 | .v-mid-l { vertical-align: middle; }
43 | .v-top-l { vertical-align: top; }
44 | .v-btm-l { vertical-align: bottom; }
45 | }
46 |
47 |
--------------------------------------------------------------------------------
/sass/_display.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | DISPLAY
4 |
5 | - Mobile First
6 | - Breakpoint: not-small
7 | - Breakpoint: medium
8 | - Breakpoint: large
9 |
10 | */
11 |
12 | .dn { display: none; }
13 | .di { display: inline; }
14 | .db { display: block; }
15 | .dib { display: inline-block; }
16 | .dit { display: inline-table; }
17 | .dt { display: table; }
18 | .dtc { display: table-cell; }
19 | .dtcol { display: table-column; }
20 | .dtcolg { display: table-column-group; }
21 |
22 | @include break(not-small) {
23 | .dn-ns { display: none; }
24 | .di-ns { display: inline; }
25 | .db-ns { display: block; }
26 | .dib-ns { display: inline-block; }
27 | .dit-ns { display: inline-table; }
28 | .dt-ns { display: table; }
29 | .dtc-ns { display: table-cell; }
30 | .dtcol-ns { display: table-column; }
31 | .dtcolg-ns { display: table-column-group; }
32 | }
33 |
34 | @include break(medium) {
35 | .dn-m { display: none; }
36 | .di-m { display: inline; }
37 | .db-m { display: block; }
38 | .dib-m { display: inline-block; }
39 | .dit-m { display: inline-table; }
40 | .dt-m { display: table; }
41 | .dtc-m { display: table-cell; }
42 | .dtcol-m { display: table-column; }
43 | .dtcolg-m { display: table-column-group; }
44 | }
45 |
46 | @include break(large) {
47 | .dn-l { display: none; }
48 | .di-l { display: inline; }
49 | .db-l { display: block; }
50 | .dib-l { display: inline-block; }
51 | .dit-l { display: inline-table; }
52 | .dt-l { display: table; }
53 | .dtc-l { display: table-cell; }
54 | .dtcol-l { display: table-column; }
55 | .dtcolg-l { display: table-column-group; }
56 | }
57 |
58 |
--------------------------------------------------------------------------------
/sass/_margins.scss:
--------------------------------------------------------------------------------
1 | // Margins
2 |
3 | .m0 { margin: 0; }
4 | .mb0 { margin-bottom: 0; }
5 |
6 | .m1 { margin: 1rem; }
7 | .mt1 { margin-top: 1rem; }
8 | .mr1 { margin-right: 1rem; }
9 | .mb1 { margin-bottom: 1rem; }
10 | .ml1 { margin-left: 1rem; }
11 |
12 | .m2 { margin: 2rem; }
13 | .mt2 { margin-top: 2rem; }
14 | .mr2 { margin-right: 2rem; }
15 | .mb2 { margin-bottom: 2rem; }
16 | .ml2 { margin-left: 2rem; }
17 |
18 | .m3 { margin: 3rem; }
19 | .mt3 { margin-top: 3rem; }
20 | .mr3 { margin-right: 3rem; }
21 | .mb3 { margin-bottom: 3rem; }
22 | .ml3 { margin-left: 3rem; }
23 |
24 | .m4 { margin: 4rem; }
25 | .mt4 { margin-top: 4rem; }
26 | .mr4 { margin-right: 4rem; }
27 | .mb4 { margin-bottom: 4rem; }
28 | .ml4 { margin-left: 4rem; }
29 |
30 |
31 | // Wrapper for horizontally centering elements with a fixed width
32 | // Use .wrap in conjunction with the .measure classes to center columns
33 | .wrap { margin-right: auto; margin-left: auto; }
34 |
35 |
36 | // Responsive margins
37 |
38 | .m-responsive { margin: 2rem; }
39 | .mt-responsive { margin-top: 2rem; }
40 | .mr-responsive { margin-right: 2rem; }
41 | .mb-responsive { margin-bottom: 2rem; }
42 | .ml-responsive { margin-left: 2rem; }
43 |
44 | @media (min-width: 48em) and (max-width: 64em) {
45 | .m-responsive { margin: 3rem; }
46 | .mt-responsive { margin-top: 3rem; }
47 | .mr-responsive { margin-right: 3rem; }
48 | .mb-responsive { margin-bottom: 3rem; }
49 | .ml-responsive { margin-left: 3rem; }
50 | }
51 |
52 | @media (min-width: 64em) {
53 | .m-responsive { margin: 4rem; }
54 | .mt-responsive { margin-top: 4rem; }
55 | .mr-responsive { margin-right: 4rem; }
56 | .mb-responsive { margin-bottom: 4rem; }
57 | .ml-responsive { margin-left: 4rem; }
58 | }
59 |
60 |
--------------------------------------------------------------------------------
/site/_margins.scss:
--------------------------------------------------------------------------------
1 | // Margins
2 |
3 | .m0 { margin: 0; }
4 | .mb0 { margin-bottom: 0; }
5 |
6 | .m1 { margin: 1rem; }
7 | .mt1 { margin-top: 1rem; }
8 | .mr1 { margin-right: 1rem; }
9 | .mb1 { margin-bottom: 1rem; }
10 | .ml1 { margin-left: 1rem; }
11 |
12 | .m2 { margin: 2rem; }
13 | .mt2 { margin-top: 2rem; }
14 | .mr2 { margin-right: 2rem; }
15 | .mb2 { margin-bottom: 2rem; }
16 | .ml2 { margin-left: 2rem; }
17 |
18 | .m3 { margin: 3rem; }
19 | .mt3 { margin-top: 3rem; }
20 | .mr3 { margin-right: 3rem; }
21 | .mb3 { margin-bottom: 3rem; }
22 | .ml3 { margin-left: 3rem; }
23 |
24 | .m4 { margin: 4rem; }
25 | .mt4 { margin-top: 4rem; }
26 | .mr4 { margin-right: 4rem; }
27 | .mb4 { margin-bottom: 4rem; }
28 | .ml4 { margin-left: 4rem; }
29 |
30 |
31 | // Wrapper for horizontally centering elements with a fixed width
32 | // Use .wrap in conjunction with the .measure classes to center columns
33 | .wrap { margin-right: auto; margin-left: auto; }
34 |
35 |
36 | // Responsive margins
37 |
38 | .m-responsive { margin: 2rem; }
39 | .mt-responsive { margin-top: 2rem; }
40 | .mr-responsive { margin-right: 2rem; }
41 | .mb-responsive { margin-bottom: 2rem; }
42 | .ml-responsive { margin-left: 2rem; }
43 |
44 | @media (min-width: 48em) and (max-width: 64em) {
45 | .m-responsive { margin: 3rem; }
46 | .mt-responsive { margin-top: 3rem; }
47 | .mr-responsive { margin-right: 3rem; }
48 | .mb-responsive { margin-bottom: 3rem; }
49 | .ml-responsive { margin-left: 3rem; }
50 | }
51 |
52 | @media (min-width: 64em) {
53 | .m-responsive { margin: 4rem; }
54 | .mt-responsive { margin-top: 4rem; }
55 | .mr-responsive { margin-right: 4rem; }
56 | .mb-responsive { margin-bottom: 4rem; }
57 | .ml-responsive { margin-left: 4rem; }
58 | }
59 |
60 |
--------------------------------------------------------------------------------
/sass/_skins.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | SKINS
4 |
5 | */
6 |
7 |
8 | /* Grays */
9 |
10 | .black { color: $near-black; }
11 | .dk-gray { color: $dark-gray; }
12 | .md-gray { color: $mid-gray; }
13 | .gray { color: $gray; }
14 | .silver { color: $silver; }
15 | .lt-silver { color: $light-silver; }
16 | .lt-gray { color: $light-gray; }
17 | .near-white { color: $near-white; }
18 | .white { color: $white!important; }
19 |
20 |
21 | /* Text colors */
22 |
23 | .aqua { color: $aqua; }
24 | .blue { color: $blue; }
25 | .navy { color: $navy; }
26 | .teal { color: $teal; }
27 | .green { color: $green; }
28 | .olive { color: $olive; }
29 | .lime { color: $lime; }
30 | .yellow { color: $yellow; }
31 | .orange { color: $orange; }
32 | .red { color: $red; }
33 | .fuchsia { color: $fuchsia; }
34 | .purple { color: $purple; }
35 | .maroon { color: $maroon; }
36 |
37 |
38 | /* Background colors */
39 | .bg-black { background-color: $near-black; }
40 | .bg-dk-gray { background-color: $dark-gray; }
41 | .bg-md-gray { background-color: $mid-gray; }
42 | .bg-gray { background-color: $gray; }
43 | .bg-silver { background-color: $silver; }
44 | .bg-lt-silver { background-color: $light-silver; }
45 | .bg-lt-gray { background-color: $light-gray; }
46 | .bg-near-white { background-color: $near-white; }
47 | .bg-white { background-color: $white!important; }
48 |
49 | .bg-aqua { background-color: $aqua; }
50 | .bg-blue { background-color: $blue; }
51 | .bg-navy { background-color: $navy; }
52 | .bg-teal { background-color: $teal; }
53 | .bg-green { background-color: $green; }
54 | .bg-olive { background-color: $olive; }
55 | .bg-lime { background-color: $lime; }
56 | .bg-yellow { background-color: $yellow; }
57 | .bg-orange { background-color: $orange; }
58 | .bg-red { background-color: $red; }
59 | .bg-fuchsia { background-color: $fuchsia; }
60 | .bg-purple { background-color: $purple; }
61 | .bg-maroon { background-color: $maroon; }
62 |
63 |
--------------------------------------------------------------------------------
/site/_type.scss:
--------------------------------------------------------------------------------
1 | // Type
2 |
3 | body {
4 | font-family: 'Open Sans', Helvetica, sans-serif;
5 | line-height: 1.5rem;
6 | font-weight: 400;
7 | }
8 |
9 | h1, h2, h3, h4, h5, h6 { font-weight: 600; }
10 |
11 | // Base Type Scale
12 |
13 | h1, .h1, .f1 {
14 | font-size: 2.25rem;
15 | line-height: 3rem;
16 | }
17 |
18 | h2, .h2, .f1 {
19 | font-size: 1.5rem;
20 | line-height: 2rem;
21 | }
22 |
23 | h3, .h3, .f3 {
24 | font-size: 1.25rem;
25 | line-height: 2rem;
26 | }
27 |
28 | p, .p, .f4, h4, .h4, h5, h6, dl, ol, ul {
29 | font-size: 1rem;
30 | line-height: 1.5rem;
31 | }
32 |
33 | small, .small, .f5, .h5 {
34 | font-size: .875rem;
35 | line-height: 1.5rem;
36 | }
37 |
38 |
39 | // Responsive Type Scale
40 |
41 | @media (min-width: 48em) {
42 | .h1 {
43 | font-size: 3rem;
44 | line-height: 4rem;
45 | }
46 | .h2 {
47 | font-size: 2rem;
48 | line-height: 3rem;
49 | }
50 | .h3 {
51 | font-size: 1.5rem;
52 | line-height: 2rem;
53 | }
54 | .p, .h4 {
55 | font-size: 1.125rem;
56 | line-height: 2rem;
57 | }
58 | .small {
59 | font-size: 1rem;
60 | }
61 | }
62 |
63 | //@media (min-width: 64em) {
64 | // .h1 {
65 | // font-size: 6rem;
66 | // line-height: 8rem;
67 | // }
68 | // .h2 {
69 | // font-size: 3rem;
70 | // line-height: 4rem;
71 | // }
72 | //}
73 |
74 |
75 | // Utilities
76 |
77 | strong, .bold { font-weight: 600; }
78 | .regular { font-weight: normal; }
79 | .italic { font-style: italic; }
80 | .caps { text-transform: uppercase; letter-spacing: .2em; }
81 | .center { text-align: center; }
82 | .right-align { text-align: right; }
83 |
84 |
85 | // Typographical Measure
86 | // Use with the .wrap class to center container
87 |
88 | .measure { max-width: 48rem; }
89 | .measure-narrow { max-width: 32rem; }
90 | .measure-wide { max-width: 60rem; }
91 |
92 |
93 | // Leading utilities to control line-height
94 |
95 | .leading-1 { line-height: 1.5rem; }
96 | .leading-2 { line-height: 2rem; }
97 | .leading-3 { line-height: 3rem; }
98 | .leading-4 { line-height: 4rem; }
99 |
100 | .icon {
101 | width: 1em;
102 | height: 1em;
103 | vertical-align: -.0625em;
104 | }
105 |
106 |
--------------------------------------------------------------------------------
/site/plangular-waveform.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
31 |
32 |
--------------------------------------------------------------------------------
/sass/_widths.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | WIDTHS
4 |
5 | */
6 |
7 | /* Width Scale */
8 |
9 | .wi1 { width: 1rem; }
10 | .wi2 { width: 2rem; }
11 | .wi3 { width: 4rem; }
12 | .wi4 { width: 8rem; }
13 | .wi5 { width: 16rem; }
14 |
15 | .wi-10 { width: 10%; }
16 | .wi-20 { width: 20%; }
17 | .wi-25 { width: 25%; }
18 | .wi-40 { width: 40%; }
19 | .wi-50 { width: 50%; }
20 | .wi-60 { width: 60%; }
21 | .wi-75 { width: 75%; }
22 | .wi-80 { width: 80%; }
23 | .wi-100 { width: 100%; }
24 |
25 | /* Width String Properties */
26 |
27 | .wi-bb { width: border-box; }
28 | .wi-cb { width: content-box; }
29 | .wi-mx { width: max-content; }
30 | .wi-mn { width: min-content; }
31 | .wi-av { width: available; }
32 | .wi-fc { width: fit-content; }
33 | .wi-at { width: auto; }
34 | .wi-i { width: inherit; }
35 |
36 | @include break(not-small) {
37 | .wi1-ns { width: 1rem; }
38 | .wi2-ns { width: 2rem; }
39 | .wi3-ns { width: 4rem; }
40 | .wi4-ns { width: 8rem; }
41 | .wi5-ns { width: 16rem; }
42 | .wi-10-ns { width: 10%; }
43 | .wi-20-ns { width: 20%; }
44 | .wi-25-ns { width: 25%; }
45 | .wi-40-ns { width: 40%; }
46 | .wi-50-ns { width: 50%; }
47 | .wi-60-ns { width: 60%; }
48 | .wi-75-ns { width: 75%; }
49 | .wi-80-ns { width: 80%; }
50 | .wi-100-ns { width: 100%; }
51 | .wi-bb-ns { width: border-box; }
52 | .wi-cb-ns { width: content-box; }
53 | .wi-mx-ns { width: max-content; }
54 | .wi-mn-ns { width: min-content; }
55 | .wi-av-ns { width: available; }
56 | .wi-fc-ns { width: fit-content; }
57 | .wi-at-ns { width: auto; }
58 | .wi-i-ns { width: inherit; }
59 | }
60 |
61 | @include break(medium) {
62 | .wi1-m { width: 1rem; }
63 | .wi2-m { width: 2rem; }
64 | .wi3-m { width: 4rem; }
65 | .wi4-m { width: 8rem; }
66 | .wi5-m { width: 16rem; }
67 | .wi-10-m { width: 10%; }
68 | .wi-20-m { width: 20%; }
69 | .wi-25-m { width: 25%; }
70 | .wi-40-m { width: 40%; }
71 | .wi-50-m { width: 50%; }
72 | .wi-60-m { width: 60%; }
73 | .wi-75-m { width: 75%; }
74 | .wi-80-m { width: 80%; }
75 | .wi-100-m { width: 100%; }
76 | .wi-bb-m { width: border-box; }
77 | .wi-cb-m { width: content-box; }
78 | .wi-mx-m { width: max-content; }
79 | .wi-mn-m { width: min-content; }
80 | .wi-av-m { width: available; }
81 | .wi-fc-m { width: fit-content; }
82 | .wi-at-m { width: auto; }
83 | .wi-i-m { width: inherit; }
84 | }
85 |
86 | @include break(large) {
87 | .wi1-l { width: 1rem; }
88 | .wi2-l { width: 2rem; }
89 | .wi3-l { width: 4rem; }
90 | .wi4-l { width: 8rem; }
91 | .wi5-l { width: 16rem; }
92 | .wi-10-l { width: 10%; }
93 | .wi-20-l { width: 20%; }
94 | .wi-25-l { width: 25%; }
95 | .wi-40-l { width: 40%; }
96 | .wi-50-l { width: 50%; }
97 | .wi-60-l { width: 60%; }
98 | .wi-75-l { width: 75%; }
99 | .wi-80-l { width: 80%; }
100 | .wi-100-l { width: 100%; }
101 | .wi-bb-l { width: border-box; }
102 | .wi-cb-l { width: content-box; }
103 | .wi-mx-l { width: max-content; }
104 | .wi-mn-l { width: min-content; }
105 | .wi-av-l { width: available; }
106 | .wi-fc-l { width: fit-content; }
107 | .wi-at-l { width: auto; }
108 | .wi-i-l { width: inherit; }
109 | }
110 |
111 |
--------------------------------------------------------------------------------
/sass/_max_widths.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | MAX WIDTHS
4 |
5 | */
6 |
7 | .mx-wi-100 { max-width: 100%; }
8 | .mx-wi-75 { max-width: 75%; }
9 | .mx-wi-50 { max-width: 50%; }
10 | .mx-wi-25 { max-width: 25%; }
11 |
12 | .mx-wi1 { max-width: 1rem; }
13 | .mx-wi2 { max-width: 2rem; }
14 | .mx-wi3 { max-width: 4rem; }
15 | .mx-wi4 { max-width: 8rem; }
16 | .mx-wi5 { max-width: 16rem; }
17 | .mx-wi6 { max-width: 32rem; }
18 | .mx-wi7 { max-width: 48rem; }
19 | .mx-wi8 { max-width: 64rem; }
20 | .mx-wi9 { max-width: 96rem; }
21 | .mx-wi10 { max-width: 128rem; }
22 |
23 | .mx-wi-none { max-width: none; }
24 | .mx-wi-max { max-width: max-content; }
25 | .mx-wi-min { max-width: min-content; }
26 | .mx-wi-fit { max-width: fit-content; }
27 | .mx-wi-fill { max-width: fill-available; }
28 |
29 | @include break(not-small) {
30 | .mx-wi-100-ns { max-width: 100%; }
31 | .mx-wi-75-ns { max-width: 75%; }
32 | .mx-wi-50-ns { max-width: 50%; }
33 | .mx-wi-25-ns { max-width: 25%; }
34 |
35 | .mx-wi1-ns { max-width: 1rem; }
36 | .mx-wi2-ns { max-width: 2rem; }
37 | .mx-wi3-ns { max-width: 4rem; }
38 | .mx-wi4-ns { max-width: 8rem; }
39 | .mx-wi5-ns { max-width: 16rem; }
40 | .mx-wi6-ns { max-width: 32rem; }
41 | .mx-wi7-ns { max-width: 48rem; }
42 | .mx-wi8-ns { max-width: 64rem; }
43 | .mx-wi9-ns { max-width: 96rem; }
44 | .mx-wi10-ns { max-width: 128rem; }
45 |
46 | .mx-wi-none-ns { max-width: none; }
47 | .mx-wi-max-ns { max-width: max-content; }
48 | .mx-wi-min-ns { max-width: min-content; }
49 | .mx-wi-fit-ns { max-width: fit-content; }
50 | .mx-wi-fill-ns { max-width: fill-available; }
51 | }
52 |
53 | @include break(medium) {
54 | .mx-wi-100-m { max-width: 100%; }
55 | .mx-wi-75-m { max-width: 75%; }
56 | .mx-wi-50-m { max-width: 50%; }
57 | .mx-wi-25-m { max-width: 25%; }
58 |
59 | .mx-wi1-m { max-width: 1rem; }
60 | .mx-wi2-m { max-width: 2rem; }
61 | .mx-wi3-m { max-width: 4rem; }
62 | .mx-wi4-m { max-width: 8rem; }
63 | .mx-wi5-m { max-width: 16rem; }
64 | .mx-wi6-m { max-width: 32rem; }
65 | .mx-wi7-m { max-width: 48rem; }
66 | .mx-wi8-m { max-width: 64rem; }
67 | .mx-wi9-m { max-width: 96rem; }
68 | .mx-wi10-m { max-width: 128rem; }
69 |
70 | .mx-wi-none-m { max-width: none; }
71 | .mx-wi-max-m { max-width: max-content; }
72 | .mx-wi-min-m { max-width: min-content; }
73 | .mx-wi-fit-m { max-width: fit-content; }
74 | .mx-wi-fill-m { max-width: fill-available; }
75 | }
76 |
77 | @include break(large) {
78 | .mx-wi-100-l { max-width: 100%; }
79 | .mx-wi-75-l { max-width: 75%; }
80 | .mx-wi-50-l { max-width: 50%; }
81 | .mx-wi-25-l { max-width: 25%; }
82 |
83 | .mx-wi1-l { max-width: 1rem; }
84 | .mx-wi2-l { max-width: 2rem; }
85 | .mx-wi3-l { max-width: 4rem; }
86 | .mx-wi4-l { max-width: 8rem; }
87 | .mx-wi5-l { max-width: 16rem; }
88 | .mx-wi6-l { max-width: 32rem; }
89 | .mx-wi7-l { max-width: 48rem; }
90 | .mx-wi8-l { max-width: 64rem; }
91 | .mx-wi9-l { max-width: 96rem; }
92 | .mx-wi10-l { max-width: 128rem; }
93 |
94 | .mx-wi-none-l { max-width: none; }
95 | .mx-wi-max-l { max-width: max-content; }
96 | .mx-wi-min-l { max-width: min-content; }
97 | .mx-wi-fit-l { max-width: fit-content; }
98 | .mx-wi-fill-l { max-width: fill-available; }
99 | }
100 |
101 |
--------------------------------------------------------------------------------
/site/_theme.scss:
--------------------------------------------------------------------------------
1 | // Plangular theme
2 |
3 |
4 | //$dark-gray: #1c2226;
5 | //$blue: #00bbdd;
6 | //$light-gray: #eaeff0;
7 | //$mid-gray: #a0aab0;
8 |
9 | $blue: #0096cc;
10 | $light-gray: #eaeff0;
11 | $mid-gray: #708690;
12 | $dark-gray: #405660;
13 |
14 | //$blue: #0096cc;
15 | //
16 | //$light-gray: #eee;
17 | //$mid-gray: #777;
18 | //$dark-gray: #333;
19 |
20 | $red: #f52;
21 | $green: #0f6;
22 | //$orange: #fc2;
23 |
24 |
25 | .white { color: #fff; }
26 | .blue { color: $blue; }
27 | .light-gray { color: $light-gray; }
28 | .mid-gray { color: $mid-gray; }
29 | .dark-gray { color: $dark-gray; }
30 |
31 | .red { color: $red; }
32 | .green { color: $green; }
33 | //.orange { color: $orange; }
34 |
35 | .bg-white { background-color: #fff; }
36 | .bg-blue { background-color: $blue; }
37 | .bg-light-gray { background-color: $light-gray; }
38 | .bg-mid-gray { background-color: $mid-gray; }
39 | .bg-dark-gray { background-color: $dark-gray; }
40 |
41 | .bg-red { background-color: $red; }
42 | .bg-green { background-color: $green; }
43 | //.bg-orange { background-color: $orange; }
44 |
45 |
46 | // Base theme styles
47 |
48 | body {
49 | color: $dark-gray;
50 | background-color: #fff;
51 | }
52 |
53 | a {
54 | color: $blue;
55 | text-decoration: none;
56 | &:hover {
57 | color: darken($blue, 10%);
58 | }
59 | }
60 |
61 |
62 | // Buttons
63 |
64 | .button {
65 | border-radius: .25rem;
66 | transition-duration: .2s;
67 | transition-timing-function: ease;
68 | transition: box-shadow , background-color;
69 | -webkit-font-smoothing: antialiased;
70 | &:hover,
71 | &:focus {
72 | outline: none;
73 | }
74 | }
75 |
76 | .button-blue {
77 | color: #fff;
78 | background-color: $blue;
79 | &:hover {
80 | color: #fff;
81 | background-color: lighten($blue, 10%);
82 | box-shadow: 0 0 0 2px rgba(lighten($blue, 10%), .5);
83 | }
84 | }
85 |
86 | .button-box {
87 | color: $green;
88 | box-shadow: inset 0 0 0 2px $green;
89 | -webkit-transition: background .2s ease, box-shadow .2s ease, -webkit-transform .2s ease;
90 | transition: background .2s ease, box-shadow .2s ease, transform .2s ease;
91 | svg {
92 | fill: $green;
93 | }
94 | &:hover {
95 | color: $dark-gray;
96 | background-color: $green;
97 | box-shadow: 0 0 0 4px $dark-gray, 0 0 0 8px rgba($green, .5);
98 | -webkit-transform: scale(1.05);
99 | transform: scale(1.05);
100 | svg {
101 | fill: $dark-gray;
102 | }
103 | }
104 | }
105 |
106 | .button-green {
107 | color: $dark-gray;
108 | background-color: $green;
109 | -webkit-transition: box-shadow .2s ease, -webkit-transform .2s ease;
110 | transition: box-shadow .2s ease, transform .2s ease;
111 | &:hover, &:focus {
112 | color: $dark-gray;
113 | outline: none;
114 | box-shadow: 0 0 0 4px $dark-gray, 0 0 0 8px rgba($green, .5);
115 | -webkit-transform: scale(1.05);
116 | transform: scale(1.05);
117 | }
118 | &:active {
119 | -webkit-transform: scale(1);
120 | transform: scale(1);
121 | box-shadow: inset 0 0 8px $dark-gray;
122 | }
123 | }
124 |
125 |
126 | // Borders
127 |
128 | .border {
129 | border-style: solid;
130 | border-width: 1px;
131 | }
132 | .border-top {
133 | border-top-style: solid;
134 | border-top-width: 1px;
135 | }
136 |
137 | .border-light-gray {
138 | border-color: $light-gray;
139 | }
140 |
141 | // Utilities
142 | .rounded { border-radius: .25rem; }
143 | .transition-all { transition: all .2s ease; }
144 |
145 |
--------------------------------------------------------------------------------
/sass/_position.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | POSITIONING
4 |
5 | */
6 |
7 | .pos-stat { position: static; }
8 | .pos-rel { position: relative; }
9 | .pos-abs { position: absolute; }
10 | .pos-fix { position: fixed; }
11 |
12 | /* Values */
13 |
14 | .top-0 { top: 0; }
15 | .left-0 { left: 0; }
16 | .right-0 { right: 0; }
17 | .bottom-0 { bottom: 0; }
18 |
19 | .top-1 { top: 1rem; }
20 | .left-1 { left: 1rem; }
21 | .right-1 { right: 1rem; }
22 | .bottom-1 { bottom: 1rem; }
23 |
24 | .top-2 { top: 2rem; }
25 | .left-2 { left: 2rem; }
26 | .right-2 { right: 2rem; }
27 | .bottom-2 { bottom: 2rem; }
28 |
29 | .top-4 { top: 4rem; }
30 | .left-4 { left: 4rem; }
31 | .right-4 { right: 4rem; }
32 | .bottom-4 { bottom: 4rem; }
33 |
34 | /* Top Percentage based scale */
35 |
36 | .top-auto { top: auto; }
37 | .top-i { top: inherit; ;}
38 |
39 | .center { margin: 0 auto; }
40 |
41 | @include break(not-small) {
42 | .pos-stat-ns { position: static; }
43 | .pos-rel-ns { position: relative; }
44 | .pos-abs-ns { position: absolute; }
45 | .pos-fix-ns { position: fixed; }
46 | .top-0-ns { top: 0; }
47 | .left-0-ns { left: 0; }
48 | .right-0-ns { right: 0; }
49 | .bottom-0-ns { bottom: 0; }
50 | .top-1-ns { top: 1rem; }
51 | .left-1-ns { left: 1rem; }
52 | .right-1-ns { right: 1rem; }
53 | .bottom-1-ns { bottom: 1rem; }
54 | .top-2-ns { top: 2rem; }
55 | .left-2-ns { left: 2rem; }
56 | .right-2-ns { right: 2rem; }
57 | .bottom-2-ns { bottom: 2rem; }
58 | .top-4-ns { top: 4rem; }
59 | .left-4-ns { left: 4rem; }
60 | .right-4-ns { right: 4rem; }
61 | .bottom-4-ns { bottom: 4rem; }
62 | .top-auto-ns { top: auto; }
63 | .top-i-ns { top: inherit; ;}
64 | .center-ns { margin: 0 auto; }
65 | }
66 |
67 | @include break(medium) {
68 | .pos-stat-m { position: static; }
69 | .pos-rel-m { position: relative; }
70 | .pos-abs-m { position: absolute; }
71 | .pos-fix-m { position: fixed; }
72 | .top-0-m { top: 0; }
73 | .left-0-m { left: 0; }
74 | .right-0-m { right: 0; }
75 | .bottom-0-m { bottom: 0; }
76 | .top-1-m { top: 1rem; }
77 | .left-1-m { left: 1rem; }
78 | .right-1-m { right: 1rem; }
79 | .bottom-1-m { bottom: 1rem; }
80 | .top-2-m { top: 2rem; }
81 | .left-2-m { left: 2rem; }
82 | .right-2-m { right: 2rem; }
83 | .bottom-2-m { bottom: 2rem; }
84 | .top-4-m { top: 4rem; }
85 | .left-4-m { left: 4rem; }
86 | .right-4-m { right: 4rem; }
87 | .bottom-4-m { bottom: 4rem; }
88 | .top-auto-m { top: auto; }
89 | .top-i-m { top: inherit; ;}
90 | .center-m { margin: 0 auto; }
91 | }
92 |
93 | @include break(large) {
94 | .pos-stat-l { position: static; }
95 | .pos-rel-l { position: relative; }
96 | .pos-abs-l { position: absolute; }
97 | .pos-fix-l { position: fixed; }
98 | .top-0-l { top: 0; }
99 | .left-0-l { left: 0; }
100 | .right-0-l { right: 0; }
101 | .bottom-0-l { bottom: 0; }
102 | .top-1-l { top: 1rem; }
103 | .left-1-l { left: 1rem; }
104 | .right-1-l { right: 1rem; }
105 | .bottom-1-l { bottom: 1rem; }
106 | .top-2-l { top: 2rem; }
107 | .left-2-l { left: 2rem; }
108 | .right-2-l { right: 2rem; }
109 | .bottom-2-l { bottom: 2rem; }
110 | .top-4-l { top: 4rem; }
111 | .left-4-l { left: 4rem; }
112 | .right-4-l { right: 4rem; }
113 | .bottom-4-l { bottom: 4rem; }
114 | .top-auto-l { top: auto; }
115 | .top-i-l { top: inherit; ;}
116 | .center-l { margin: 0 auto; }
117 | }
118 |
119 |
--------------------------------------------------------------------------------
/sass/_plangular_site.scss:
--------------------------------------------------------------------------------
1 | // Custom styles for Plangular site
2 |
3 | html, body { height: 100%; }
4 | .min-h100 { min-height: 100%; }
5 | .h100 { height: 100%; }
6 | .table {
7 | display: table;
8 | table-layout: fixed;
9 | width: 100%;
10 | }
11 |
12 | .table-cell {
13 | display: table-cell;
14 | vertical-align: middle;
15 | }
16 |
17 | .waveform {
18 | width: 100%;
19 | stroke-width: .25;
20 | fill: none;
21 | }
22 | .waveform-large {
23 | height: 75%;
24 | top: 12.5%;
25 | stroke: $green;
26 | }
27 | .waveform-small {
28 | width: 100%;
29 | stroke: rgba($blue,.2);
30 | height: 150%;
31 | }
32 | .glow-wrap {
33 | opacity: 0;
34 | }
35 | @-webkit-keyframes glow {
36 | 0% { opacity: 0; -webkit-transform: scaleY(.2); }
37 | 5% { opacity: .9; -webkit-transform: scaleY(1); }
38 | 100% { opacity: 0; -webkit-transform: scaleY(.2); }
39 | }
40 | @keyframes glow {
41 | 0% { opacity: 0; transform: scaleY(.2); }
42 | 5% { opacity: .9; transform: scaleY(1); }
43 | 100% { opacity: 0; transform: scaleY(.2); }
44 | }
45 | .geo-glow {
46 | -webkit-animation: glow 6s linear;
47 | animation: glow 6s linear;
48 | }
49 |
50 | //.px8 { padding-right: 8rem; padding-left: 8rem; }
51 | .px8 { padding-right: 20%; padding-left: 20%; }
52 |
53 | .button-geo {
54 | .geo-16 {
55 | position: relative;
56 | top: 2px;
57 | }
58 | .geo-24 {
59 | position: relative;
60 | top: 4px;
61 | }
62 | }
63 | .geo-16 { width: 16px; height: 16px; }
64 | .geo-24 { width: 24px; height: 24px; }
65 | .geo-32 { width: 32px; height: 32px; }
66 | .geo-white { fill: #fff; }
67 | .geo-dark-gray { fill: $dark-gray; }
68 |
69 | .aspect-16o9 {
70 | width: 100%;
71 | height: 0;
72 | padding-bottom: 56.25%;
73 | }
74 |
75 | .plangular-button {
76 | text-align: center;
77 | display: inline-block;
78 | width: 8em;
79 | height: 2em;
80 | line-height: 2em;
81 | max-width: 100%;
82 | svg {
83 | vertical-align: -.125em;
84 | }
85 | }
86 |
87 | .bg-cover { background-size: cover; }
88 | .bg-center { background-position: center; }
89 |
90 | .outline, .outline * { outline: 1px solid red; }
91 |
92 | .shadow-darken { box-shadow: inset 0 -32px 192px rgba(0,0,0,0.9); }
93 |
94 | .progress-thin {
95 | height: 2px;
96 | margin-top: 23px;
97 | }
98 |
99 | .progress {
100 | width: 100%;
101 | -webkit-appearance: none;
102 | }
103 | .progress::-webkit-progress-bar {
104 | -webkit-appearance: none;
105 | background-color: #eee;
106 | }
107 | .progress::-webkit-progress-value { -webkit-appearance: none; }
108 |
109 | .progress-gray::-webkit-progress-value { background-color: #999; }
110 | .progress-gray-alt::-webkit-progress-bar { background-color: #ddd; }
111 |
112 | .progress-white::-webkit-progress-value { background-color: #fff; }
113 | .progress-white::-webkit-progress-bar { background-color: rgba(255,255,255,.4); }
114 |
115 |
116 |
117 | .progress-link::-webkit-progress-value { background-color: #0cf; }
118 | .progress-green::-webkit-progress-value { background-color: #0c5; }
119 |
120 | .progress-white-bg::-webkit-progress-bar {
121 | background-color: #fff;
122 | }
123 |
124 | @-webkit-keyframes popin {
125 | 0% { -webkit-transform: scale(.2); }
126 | 80% { -webkit-transform: scale(1.1); }
127 | 100% { -webkit-transform: scale(1); }
128 | }
129 | @keyframes popin {
130 | 0% { transform: scale(.2); }
131 | 80% { transform: scale(1.1); }
132 | 100% { transform: scale(1); }
133 | }
134 | .anim-popin {
135 | -webkit-animation: popin .1s;
136 | animation: popin .1s;
137 | }
138 |
139 |
--------------------------------------------------------------------------------
/site/_plangular-site.scss:
--------------------------------------------------------------------------------
1 | // Custom styles for Plangular site
2 |
3 | html, body { height: 100%; }
4 | .min-h100 { min-height: 100%; }
5 | .h100 { height: 100%; }
6 | .table {
7 | display: table;
8 | table-layout: fixed;
9 | width: 100%;
10 | }
11 |
12 | .table-cell {
13 | display: table-cell;
14 | vertical-align: middle;
15 | }
16 |
17 | .waveform {
18 | width: 100%;
19 | stroke-width: .25;
20 | fill: none;
21 | }
22 | .waveform-large {
23 | height: 75%;
24 | top: 12.5%;
25 | stroke: $green;
26 | }
27 | .waveform-small {
28 | width: 100%;
29 | stroke: rgba($blue,.2);
30 | height: 150%;
31 | }
32 | .glow-wrap {
33 | opacity: 0;
34 | }
35 | @-webkit-keyframes glow {
36 | 0% { opacity: 0; -webkit-transform: scaleY(.2); }
37 | 5% { opacity: .9; -webkit-transform: scaleY(1); }
38 | 100% { opacity: 0; -webkit-transform: scaleY(.2); }
39 | }
40 | @keyframes glow {
41 | 0% { opacity: 0; transform: scaleY(.2); }
42 | 5% { opacity: .9; transform: scaleY(1); }
43 | 100% { opacity: 0; transform: scaleY(.2); }
44 | }
45 | .geo-glow {
46 | -webkit-animation: glow 6s linear;
47 | animation: glow 6s linear;
48 | }
49 |
50 | //.px8 { padding-right: 8rem; padding-left: 8rem; }
51 | .px8 { padding-right: 20%; padding-left: 20%; }
52 |
53 | .button-geo {
54 | .geo-16 {
55 | position: relative;
56 | top: 2px;
57 | }
58 | .geo-24 {
59 | position: relative;
60 | top: 4px;
61 | }
62 | }
63 | .geo-16 { width: 16px; height: 16px; }
64 | .geo-24 { width: 24px; height: 24px; }
65 | .geo-32 { width: 32px; height: 32px; }
66 | .geo-white { fill: #fff; }
67 | .geo-dark-gray { fill: $dark-gray; }
68 |
69 | .aspect-16o9 {
70 | width: 100%;
71 | height: 0;
72 | padding-bottom: 56.25%;
73 | }
74 |
75 | .plangular-button {
76 | text-align: center;
77 | display: inline-block;
78 | width: 8em;
79 | height: 2em;
80 | line-height: 2em;
81 | max-width: 100%;
82 | svg {
83 | vertical-align: -.125em;
84 | }
85 | }
86 |
87 | .bg-cover { background-size: cover; }
88 | .bg-center { background-position: center; }
89 |
90 | .outline, .outline * { outline: 1px solid red; }
91 |
92 | .shadow-darken { box-shadow: inset 0 -32px 192px rgba(0,0,0,0.9); }
93 |
94 | .progress-thin {
95 | height: 2px;
96 | margin-top: 23px;
97 | }
98 |
99 | .progress {
100 | width: 100%;
101 | -webkit-appearance: none;
102 | }
103 | .progress::-webkit-progress-bar {
104 | -webkit-appearance: none;
105 | background-color: #eee;
106 | }
107 | .progress::-webkit-progress-value { -webkit-appearance: none; }
108 |
109 | .progress-gray::-webkit-progress-value { background-color: #999; }
110 | .progress-gray-alt::-webkit-progress-bar { background-color: #ddd; }
111 |
112 | .progress-white::-webkit-progress-value { background-color: #fff; }
113 | .progress-white::-webkit-progress-bar { background-color: rgba(255,255,255,.4); }
114 |
115 |
116 |
117 | .progress-link::-webkit-progress-value { background-color: #0cf; }
118 | .progress-green::-webkit-progress-value { background-color: #0c5; }
119 |
120 | .progress-white-bg::-webkit-progress-bar {
121 | background-color: #fff;
122 | }
123 |
124 | @-webkit-keyframes popin {
125 | 0% { -webkit-transform: scale(.2); }
126 | 80% { -webkit-transform: scale(1.1); }
127 | 100% { -webkit-transform: scale(1); }
128 | }
129 | @keyframes popin {
130 | 0% { transform: scale(.2); }
131 | 80% { transform: scale(1.1); }
132 | 100% { transform: scale(1); }
133 | }
134 | .anim-popin {
135 | -webkit-animation: popin .1s;
136 | animation: popin .1s;
137 | }
138 |
139 |
--------------------------------------------------------------------------------
/gulpfile.js:
--------------------------------------------------------------------------------
1 | // Load plugins
2 |
3 | var gulp = require('gulp'),
4 | gutil = require('gulp-util'),
5 | watch = require('gulp-watch'),
6 | prefix = require('gulp-autoprefixer'),
7 | minifyCSS = require('gulp-minify-css'),
8 | sass = require('gulp-ruby-sass'),
9 | imagemin = require('gulp-imagemin'),
10 | svgmin = require('gulp-svgmin'),
11 | csslint = require('gulp-csslint'),
12 | size = require('gulp-size'),
13 | rename = require('gulp-rename'),
14 | browserSync = require('browser-sync'),
15 | browserReload = browserSync.reload;
16 |
17 |
18 | // Task to minify all css files in the css directory
19 |
20 | gulp.task('minify-css', function(){
21 | gulp.src('./css/*.css')
22 | .pipe(minifyCSS({keepSpecialComments: 0}))
23 | .pipe(gulp.dest('./css/'));
24 | });
25 |
26 |
27 |
28 | // Task to optmize and minify images
29 |
30 | gulp.task('minify-img', function() {
31 | return gulp.src('./img/**/*')
32 | .pipe((imagemin({ optimizationLevel: 5, progressive: true, interlaced: true })))
33 | .pipe(gulp.dest('./img'));
34 | });
35 |
36 |
37 | // Task to optimize and minify svg
38 |
39 | gulp.task('minify-svg', function(){
40 | gulp.src('./img/svg')
41 | .pipe(svgmin())
42 | .pipe(gulp.dest('./img/svg'));
43 | });
44 |
45 |
46 | // Use csslint without box-sizing or compatible vendor prefixes (these
47 | // don't seem to be kept up to date on what to yell about)
48 |
49 | gulp.task('csslint', function(){
50 | gulp.src('./css/*.css')
51 | .pipe(csslint({
52 | 'compatible-vendor-prefixes': false,
53 | 'box-sizing': false
54 | }))
55 | .pipe(csslint.reporter());
56 |
57 | });
58 |
59 |
60 | // Task that compiles scss files down to good old css
61 |
62 | gulp.task('pre-process', function(){
63 | gulp.src('./sass/beats.scss')
64 | .pipe(watch(function(files) {
65 | return files.pipe(sass({loadPath: ['./sass/'], style: "compact"}))
66 | .pipe(prefix())
67 | .pipe(gulp.dest('./css/'))
68 | }));
69 | });
70 |
71 |
72 |
73 | // Task that compiles scss files down to good old css
74 | gulp.task('pre-process', function(){
75 | gulp.src('./sass/i.scss')
76 | .pipe(watch(function(files) {
77 | return files.pipe(sass())
78 | .pipe(size({gzip: false, showFiles: true, title:'PRE-prefixed uncompressed css'}))
79 | .pipe(size({gzip: true, showFiles: true, title:'PRE-prefixed uncompressed css'}))
80 | .pipe(prefix())
81 | .pipe(size({gzip: false, showFiles: true, title:'Prefixed uncompressed css'}))
82 | .pipe(size({gzip: true, showFiles: true, title:'Prefixed uncompressed css'}))
83 | .pipe(gulp.dest('css'))
84 | .pipe(browserSync.reload({stream:true}));
85 | }));
86 | });
87 |
88 |
89 | // Initialize browser-sync which starts a static server also allows for
90 | // browsers to reload on filesave
91 | gulp.task('browser-sync', function() {
92 | browserSync.init(null, {
93 | server: {
94 | baseDir: "./"
95 | }
96 | });
97 | });
98 |
99 | gulp.task('bs-reload', function () {
100 | browserSync.reload();
101 | });
102 |
103 |
104 | /*
105 | DEFAULT TASK
106 |
107 | • Process sass and lints outputted css
108 | • Outputted css is run through autoprefixer
109 | • Sends updates to any files in directory to browser for
110 | automatic reloading
111 |
112 | */
113 | gulp.task('default', ['pre-process', 'minify-css', 'bs-reload', 'browser-sync'], function(){
114 | gulp.start('pre-process', 'csslint');
115 | gulp.watch('sass/*.scss', ['pre-process', 'minify-css']);
116 | gulp.watch('css/i.css', ['bs-reload']);
117 | gulp.watch('*.html', ['bs-reload']);
118 | });
119 |
120 | gulp.task('production', function(){
121 | gulp.run('minify-css', 'minify-img', 'minify-svg');
122 | });
123 |
--------------------------------------------------------------------------------
/plangular.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | PLANGULAR
4 | A Highly Customizable SoundCloud Player
5 |
6 | http://jxnblk.github.io/Plangular
7 |
8 | */
9 |
10 |
11 | 'use strict';
12 |
13 | var plangular = angular.module('plangular', []),
14 | clientID = '0d33361983f16d2527b01fbf6408b7d7',
15 | iconUrl = 'icons/plangular-icons.svg';
16 |
17 | plangular.directive('plangular', function ($document, $rootScope, $http) {
18 | // Define the audio engine
19 | var audio = $document[0].createElement('audio');
20 |
21 | // Define the player object
22 | var player = {
23 | track: false,
24 | playing: false,
25 | paused: false,
26 | tracks: null,
27 | i: null,
28 | play: function(tracks, i) {
29 | if (i == null) {
30 | tracks = new Array(tracks);
31 | i = 0;
32 | };
33 | player.tracks = tracks;
34 | player.track = tracks[i];
35 | player.i = i;
36 | if (player.paused != player.track) audio.src = player.track.stream_url + '?client_id=' + clientID;
37 | audio.play();
38 | player.playing = player.track;
39 | player.paused = false;
40 | },
41 | pause: function() {
42 | audio.pause();
43 | if (player.playing) {
44 | player.paused = player.playing;
45 | player.playing = false;
46 | };
47 | },
48 | // Functions for playlists (i.e. sets)
49 | playPlaylist: function(playlist) {
50 | if (player.tracks == playlist.tracks && player.paused) player.play(player.tracks, player.i);
51 | else player.play(playlist.tracks, 0);
52 | },
53 | next: function(playlist) {
54 | if (!playlist){
55 | if (player.i+1 < player.tracks.length) {
56 | player.i++;
57 | player.play(player.tracks, player.i);
58 | } else {
59 | player.pause();
60 | };
61 | } else if (playlist && playlist.tracks == player.tracks) {
62 | if (player.i + 1 < player.tracks.length) {
63 | player.i++;
64 | player.play(playlist.tracks, player.i);
65 | } else {
66 | player.pause();
67 | };
68 | };
69 | },
70 | previous: function(playlist) {
71 | if (playlist.tracks == player.tracks && player.i > 0) {
72 | player.i = player.i - 1;
73 | player.play(playlist.tracks, player.i);
74 | };
75 | }
76 | };
77 |
78 | audio.addEventListener('ended', function() {
79 | $rootScope.$apply(function(){
80 | if (player.tracks.length > 0) player.next();
81 | else player.pause();
82 | });
83 |
84 | }, false);
85 |
86 | // Returns the player, audio, track, and other objects
87 | return {
88 | restrict: 'A',
89 | scope: true,
90 | link: function (scope, elem, attrs) {
91 | var params = { url: attrs.src, client_id: clientID, callback: 'JSON_CALLBACK' }
92 | $http.jsonp('//api.soundcloud.com/resolve.json', { params: params }).success(function(data){
93 | // Handle playlists (i.e. sets)
94 | if (data.tracks) scope.playlist = data;
95 | // Handle single track
96 | else if (data.kind == 'track') scope.track = data;
97 | // Handle all other data
98 | else scope.data = data;
99 | });
100 | scope.player = player;
101 | scope.audio = audio;
102 | scope.currentTime = 0;
103 | scope.duration = 0;
104 |
105 | // Updates the currentTime and duration for the audio
106 | audio.addEventListener('timeupdate', function() {
107 | if (scope.track == player.track || (scope.playlist && scope.playlist.tracks == player.tracks)){
108 | scope.$apply(function() {
109 | scope.currentTime = (audio.currentTime * 1000).toFixed();
110 | scope.duration = (audio.duration * 1000).toFixed();
111 | });
112 | };
113 | }, false);
114 |
115 | // Handle click events for seeking
116 | scope.seekTo = function($event){
117 | var xpos = $event.offsetX / $event.target.offsetWidth;
118 | audio.currentTime = (xpos * audio.duration);
119 | };
120 | }
121 | }
122 | });
123 |
124 | // Plangular Icons
125 | plangular.directive('plangularIcon', function() {
126 | var xmlHttp = null,
127 | sprite;
128 | xmlHttp = new XMLHttpRequest();
129 | xmlHttp.open('GET', iconUrl, false);
130 | xmlHttp.send(null);
131 | if(xmlHttp.responseXML) sprite = xmlHttp.responseXML.documentElement;
132 | else console.error('Icon sprite not found - check iconUrl variable in plangular.js');
133 | return {
134 | restrict: 'A',
135 | scope: true,
136 | link: function (scope, elem, attrs) {
137 | if (!sprite) return false;
138 | var el = elem[0],
139 | id = attrs.plangularIcon,
140 | svg = sprite.getElementById(id).cloneNode(true);
141 | el.className += ' plangular-icon plangular-icon-' + id;
142 | svg.removeAttribute('id');
143 | svg.setAttribute('class', el.className);
144 | el.parentNode.replaceChild(svg, el);
145 | }
146 | }
147 | });
148 |
149 | // Filter to convert milliseconds to hours, minutes, seconds
150 | plangular.filter('playTime', function() {
151 | return function(ms) {
152 | var hours = Math.floor(ms / 36e5),
153 | mins = '0' + Math.floor((ms % 36e5) / 6e4),
154 | secs = '0' + Math.floor((ms % 6e4) / 1000);
155 | mins = mins.substr(mins.length - 2);
156 | secs = secs.substr(secs.length - 2);
157 | if(!isNaN(secs)){
158 | if (hours){
159 | return hours+':'+mins+':'+secs;
160 | } else {
161 | return mins+':'+secs;
162 | };
163 | } else {
164 | return '00:00';
165 | };
166 | };
167 | });
168 |
169 |
--------------------------------------------------------------------------------
/sass/_debug.scss:
--------------------------------------------------------------------------------
1 | $layout-debug: false;
2 |
3 | @if $layout-debug == true {
4 |
5 | body { outline: 1px solid #2980B9!important; }
6 | article { outline: 1px solid #3498DB!important; }
7 | nav { outline: 1px solid #0088C3!important; }
8 | aside { outline: 1px solid #33A0CE!important; }
9 | section { outline: 1px solid #66B8DA!important; }
10 | header { outline: 1px solid #99CFE7!important; }
11 | footer { outline: 1px solid #CCE7F3!important; }
12 | h1 { outline: 1px solid #162544!important; }
13 | h2 { outline: 1px solid #314E6E!important; }
14 | h3 { outline: 1px solid #3E5E85!important; }
15 | h4 { outline: 1px solid #449BAF!important; }
16 | h5 { outline: 1px solid #C7D1CB!important; }
17 | h6 { outline: 1px solid #4371D0!important; }
18 | main { outline: 1px solid #2F4F90!important; }
19 | address { outline: 1px solid #1A2C51!important; }
20 | div { outline: 1px solid #036CDB!important; }
21 |
22 |
23 | p { outline: 1px solid #AC050B!important; }
24 | hr { outline: 1px solid #FF063F!important; }
25 | pre { outline: 1px solid #850440!important; }
26 | blockquote { outline: 1px solid #F1B8E7!important; }
27 | ol { outline: 1px solid #FF050C!important; }
28 | ul { outline: 1px solid #D90416!important; }
29 | li { outline: 1px solid #D90416!important; }
30 | dl { outline: 1px solid #FD3427!important; }
31 | dt { outline: 1px solid #FF0043!important; }
32 | dd { outline: 1px solid #E80174!important; }
33 | figure { outline: 1px solid #FF00BB!important; }
34 | figcaption { outline: 1px solid #BF0032!important; }
35 |
36 |
37 |
38 | table { outline: 1px solid #00CC99!important; }
39 | caption { outline: 1px solid #37FFC4!important; }
40 | thead { outline: 1px solid #98DACA!important; }
41 | tbody { outline: 1px solid #64A7A0!important; }
42 | tfoot { outline: 1px solid #22746B!important; }
43 | tr { outline: 1px solid #86C0B2!important; }
44 | th { outline: 1px solid #A1E7D6!important; }
45 | td { outline: 1px solid #3F5A54!important; }
46 | col { outline: 1px solid #6C9A8F!important; }
47 | colgroup { outline: 1px solid #6C9A9D!important; }
48 |
49 |
50 | button { outline: 1px solid #DA8301!important; }
51 | datalist { outline: 1px solid #C06000!important; }
52 | fieldset { outline: 1px solid #D95100!important; }
53 | form { outline: 1px solid #D23600!important; }
54 | input { outline: 1px solid #FCA600!important; }
55 | keygen { outline: 1px solid #B31E00!important; }
56 | label { outline: 1px solid #EE8900!important; }
57 | legend { outline: 1px solid #DE6D00!important; }
58 | meter { outline: 1px solid #E8630C!important; }
59 | optgroup { outline: 1px solid #B33600!important; }
60 | option { outline: 1px solid #FF8A00!important; }
61 | output { outline: 1px solid #FF9619!important; }
62 | progress { outline: 1px solid #E57C00!important; }
63 | select { outline: 1px solid #E26E0F!important; }
64 | textarea { outline: 1px solid #CC5400!important; }
65 |
66 |
67 |
68 | details { outline: 1px solid #33848F!important; }
69 | summary { outline: 1px solid #60A1A6!important; }
70 | command { outline: 1px solid #438DA1!important; }
71 | menu { outline: 1px solid #449DA6!important; }
72 |
73 |
74 |
75 | del { outline: 1px solid #BF0000!important; }
76 | ins { outline: 1px solid #400000!important; }
77 |
78 |
79 |
80 | img { outline: 1px solid #22746B!important; }
81 | iframe { outline: 1px solid #64A7A0!important; }
82 | embed { outline: 1px solid #98DACA!important; }
83 | object { outline: 1px solid #00CC99!important; }
84 | param { outline: 1px solid #37FFC4!important; }
85 | video { outline: 1px solid #6EE866!important; }
86 | audio { outline: 1px solid #027353!important; }
87 | source { outline: 1px solid #012426!important; }
88 | canvas { outline: 1px solid #A2F570!important; }
89 | track { outline: 1px solid #59A600!important; }
90 | map { outline: 1px solid #7BE500!important; }
91 | area { outline: 1px solid #305900!important; }
92 |
93 |
94 |
95 | a { outline: 1px solid #FF62AB!important; }
96 | em { outline: 1px solid #800B41!important; }
97 | strong { outline: 1px solid #FF1583!important; }
98 | i { outline: 1px solid #803156!important; }
99 | b { outline: 1px solid #CC1169!important; }
100 | u { outline: 1px solid #FF0430!important; }
101 | s { outline: 1px solid #F805E3!important; }
102 | small { outline: 1px solid #D107B2!important; }
103 | abbr { outline: 1px solid #4A0263!important; }
104 | q { outline: 1px solid #240018!important; }
105 | cite { outline: 1px solid #64003C!important; }
106 | dfn { outline: 1px solid #B4005A!important; }
107 | sub { outline: 1px solid #DBA0C8!important; }
108 | sup { outline: 1px solid #CC0256!important; }
109 | time { outline: 1px solid #D6606D!important; }
110 | code { outline: 1px solid #E04251!important; }
111 | kbd { outline: 1px solid #5E001F!important; }
112 | samp { outline: 1px solid #9C0033!important; }
113 | var { outline: 1px solid #D90047!important; }
114 | mark { outline: 1px solid #FF0053!important; }
115 | bdi { outline: 1px solid #BF3668!important; }
116 | bdo { outline: 1px solid #6F1400!important; }
117 | ruby { outline: 1px solid #FF7B93!important; }
118 | rt { outline: 1px solid #FF2F54!important; }
119 | rp { outline: 1px solid #803E49!important; }
120 | span { outline: 1px solid #CC2643!important; }
121 | br { outline: 1px solid #DB687D!important; }
122 | wbr { outline: 1px solid #DB175B!important; }
123 |
124 | }
125 |
126 |
--------------------------------------------------------------------------------
/site/plangular-waveform-4.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
22 |
23 |
39 |
40 |
48 |
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/site/plangular-waveform-5.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
23 |
24 |
40 |
41 |
49 |
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/site/plangular-waveform-3.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
23 |
24 |
40 |
41 |
50 |
67 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/site/style.css:
--------------------------------------------------------------------------------
1 | body,button,input,select,textarea,pre{margin:0}h1,h2,h3,h4,h5,h6,p,dl,ol,ul{margin-top:0;margin-bottom:1rem}button,input,select,textarea{font-family:inherit;font-size:100%}article,aside,details,figcaption,figure,footer,header,main,nav,section,summary{display:block}body{font-family:'Open Sans', Helvetica, sans-serif;line-height:1.5rem;font-weight:400}h1,h2,h3,h4,h5,h6{font-weight:600}h1,.h1,.f1{font-size:2.25rem;line-height:3rem}h2,.h2,.f1{font-size:1.5rem;line-height:2rem}h3,.h3,.f3{font-size:1.25rem;line-height:2rem}p,.p,.f4,h4,.h4,h5,h6,dl,ol,ul{font-size:1rem;line-height:1.5rem}small,.small,.f5,.h5{font-size:.875rem;line-height:1.5rem}@media (min-width: 48em){.h1{font-size:3rem;line-height:4rem}.h2{font-size:2rem;line-height:3rem}.h3{font-size:1.5rem;line-height:2rem}.p,.h4{font-size:1.125rem;line-height:2rem}.small{font-size:1rem}}strong,.bold{font-weight:600}.regular{font-weight:normal}.italic{font-style:italic}.caps{text-transform:uppercase;letter-spacing:.2em}.center{text-align:center}.right-align{text-align:right}.measure{max-width:48rem}.measure-narrow{max-width:32rem}.measure-wide{max-width:60rem}.leading-1{line-height:1.5rem}.leading-2{line-height:2rem}.leading-3{line-height:3rem}.leading-4{line-height:4rem}.icon{width:1em;height:1em;vertical-align:-.0625em}.m0{margin:0}.mb0{margin-bottom:0}.m1{margin:1rem}.mt1{margin-top:1rem}.mr1{margin-right:1rem}.mb1{margin-bottom:1rem}.ml1{margin-left:1rem}.m2{margin:2rem}.mt2{margin-top:2rem}.mr2{margin-right:2rem}.mb2{margin-bottom:2rem}.ml2{margin-left:2rem}.m3{margin:3rem}.mt3{margin-top:3rem}.mr3{margin-right:3rem}.mb3{margin-bottom:3rem}.ml3{margin-left:3rem}.m4{margin:4rem}.mt4{margin-top:4rem}.mr4{margin-right:4rem}.mb4{margin-bottom:4rem}.ml4{margin-left:4rem}.wrap{margin-right:auto;margin-left:auto}.m-responsive{margin:2rem}.mt-responsive{margin-top:2rem}.mr-responsive{margin-right:2rem}.mb-responsive{margin-bottom:2rem}.ml-responsive{margin-left:2rem}@media (min-width: 48em) and (max-width: 64em){.m-responsive{margin:3rem}.mt-responsive{margin-top:3rem}.mr-responsive{margin-right:3rem}.mb-responsive{margin-bottom:3rem}.ml-responsive{margin-left:3rem}}@media (min-width: 64em){.m-responsive{margin:4rem}.mt-responsive{margin-top:4rem}.mr-responsive{margin-right:4rem}.mb-responsive{margin-bottom:4rem}.ml-responsive{margin-left:4rem}}.p1{padding:1rem}.px1{padding-right:1rem;padding-left:1rem}.py1{padding-top:1rem;padding-bottom:1rem}.p2{padding:2rem}.px2{padding-right:2rem;padding-left:2rem}.py2{padding-top:2rem;padding-bottom:2rem}.p3{padding:3rem}.px3{padding-right:3rem;padding-left:3rem}.py3{padding-top:3rem;padding-bottom:3rem}.p4{padding:4rem}.px4{padding-right:4rem;padding-left:4rem}.py4{padding-top:4rem;padding-bottom:4rem}.p-responsive{padding:1.5rem}.px-responsive{padding-right:1.5rem;padding-left:1.5rem}.py-responsive{padding-top:1.5rem;padding-bottom:1.5rem}@media (min-width: 48em) and (max-width: 64em){.p-responsive{padding:3rem}.px-responsive{padding-right:3rem;padding-left:3rem}.py-responsive{padding-top:3rem;padding-bottom:3rem}}@media (min-width: 64em){.p-responsive{padding:4rem}.px-responsive{padding-right:4rem;padding-left:4rem}.py-responsive{padding-top:4rem;padding-bottom:4rem}}.inline{display:inline}.block{display:block}.inline-block{display:inline-block}.oh{overflow:hidden}.left{float:left}.right{float:right}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.fit{max-width:100%}.full-width{width:100%}.half-width{width:50%}.mobile-show{display:none}@media (max-width: 48em){.mobile-show,.mobile-block{display:block}.mobile-block{width:100%}.mobile-hide{display:none}.mobile-center{text-align:center}}.button{font-family:inherit;font-weight:bold;text-decoration:none;cursor:pointer;border:none;-webkit-appearance:none;appearance:none;white-space:nowrap;display:inline-block;line-height:2rem;height:auto;min-height:2rem;padding:0.5rem 1rem}.button-big{padding:1rem 1.5rem}.button-small{padding:0 .5rem}.list{padding-left:2rem}.ol{padding-left:0}.list-simple{list-style:none;padding-left:0}.list-inline{list-style:none;padding-left:0}.list-inline li{display:inline;white-space:nowrap}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.t0{top:0}.r0{right:0}.b0{bottom:0}.l0{left:0}.z1{z-index:1}.z2{z-index:2}.z3{z-index:3}.z4{z-index:4}.absolute-center{top:0;right:0;bottom:0;left:0;margin:auto;display:table}.white{color:#fff}.blue{color:#0096cc}.light-gray{color:#eaeff0}.mid-gray{color:#708690}.dark-gray{color:#405660}.red{color:#f52}.green{color:#0f6}.bg-white{background-color:#fff}.bg-blue{background-color:#0096cc}.bg-light-gray{background-color:#eaeff0}.bg-mid-gray{background-color:#708690}.bg-dark-gray{background-color:#405660}.bg-red{background-color:#f52}.bg-green{background-color:#0f6}body{color:#405660;background-color:#fff}a{color:#0096cc;text-decoration:none}a:hover{color:#007199}.button{border-radius:.25rem;transition-duration:.2s;transition-timing-function:ease;transition:box-shadow , background-color;-webkit-font-smoothing:antialiased}.button:hover,.button:focus{outline:none}.button-blue{color:#fff;background-color:#0096cc}.button-blue:hover{color:#fff;background-color:#00bcff;box-shadow:0 0 0 2px rgba(0,188,255,0.5)}.button-box{color:#0f6;box-shadow:inset 0 0 0 2px #0f6;-webkit-transition:background .2s ease, box-shadow .2s ease, -webkit-transform .2s ease;transition:background .2s ease, box-shadow .2s ease, transform .2s ease}.button-box svg{fill:#0f6}.button-box:hover{color:#405660;background-color:#0f6;box-shadow:0 0 0 4px #405660,0 0 0 8px rgba(0,255,102,0.5);-webkit-transform:scale(1.05);transform:scale(1.05)}.button-box:hover svg{fill:#405660}.button-green{color:#405660;background-color:#0f6;-webkit-transition:box-shadow .2s ease, -webkit-transform .2s ease;transition:box-shadow .2s ease, transform .2s ease}.button-green:hover,.button-green:focus{color:#405660;outline:none;box-shadow:0 0 0 4px #405660,0 0 0 8px rgba(0,255,102,0.5);-webkit-transform:scale(1.05);transform:scale(1.05)}.button-green:active{-webkit-transform:scale(1);transform:scale(1);box-shadow:inset 0 0 8px #405660}.border{border-style:solid;border-width:1px}.border-top{border-top-style:solid;border-top-width:1px}.border-light-gray{border-color:#eaeff0}.rounded{border-radius:.25rem}.transition-all{transition:all .2s ease}html,body{height:100%}.min-h100{min-height:100%}.h100{height:100%}.table{display:table;table-layout:fixed;width:100%}.table-cell{display:table-cell;vertical-align:middle}.waveform{width:100%;stroke-width:.25;fill:none}.waveform-large{height:75%;top:12.5%;stroke:#0f6}.waveform-small{width:100%;stroke:rgba(0,150,204,0.2);height:150%}.glow-wrap{opacity:0}@-webkit-keyframes glow{0%{opacity:0;-webkit-transform:scaleY(0.2)}5%{opacity:.9;-webkit-transform:scaleY(1)}100%{opacity:0;-webkit-transform:scaleY(0.2)}}@keyframes glow{0%{opacity:0;transform:scaleY(0.2)}5%{opacity:.9;transform:scaleY(1)}100%{opacity:0;transform:scaleY(0.2)}}.geo-glow{-webkit-animation:glow 6s linear;animation:glow 6s linear}.px8{padding-right:20%;padding-left:20%}.button-geo .geo-16{position:relative;top:2px}.button-geo .geo-24{position:relative;top:4px}.geo-16{width:16px;height:16px}.geo-24{width:24px;height:24px}.geo-32{width:32px;height:32px}.geo-white{fill:#fff}.geo-dark-gray{fill:#405660}.aspect-16o9{width:100%;height:0;padding-bottom:56.25%}.plangular-button{text-align:center;display:inline-block;width:8em;height:2em;line-height:2em;max-width:100%}.plangular-button svg{vertical-align:-.125em}.bg-cover{background-size:cover}.bg-center{background-position:center}.outline,.outline *{outline:1px solid red}.shadow-darken{box-shadow:inset 0 -32px 192px rgba(0,0,0,0.9)}.progress-thin{height:2px;margin-top:23px}.progress{width:100%;-webkit-appearance:none}.progress::-webkit-progress-bar{-webkit-appearance:none;background-color:#eee}.progress::-webkit-progress-value{-webkit-appearance:none}.progress-gray::-webkit-progress-value{background-color:#999}.progress-gray-alt::-webkit-progress-bar{background-color:#ddd}.progress-white::-webkit-progress-value{background-color:#fff}.progress-white::-webkit-progress-bar{background-color:rgba(255,255,255,0.4)}.progress-link::-webkit-progress-value{background-color:#0cf}.progress-green::-webkit-progress-value{background-color:#0c5}.progress-white-bg::-webkit-progress-bar{background-color:#fff}@-webkit-keyframes popin{0%{-webkit-transform:scale(0.2)}80%{-webkit-transform:scale(1.1)}100%{-webkit-transform:scale(1)}}@keyframes popin{0%{transform:scale(0.2)}80%{transform:scale(1.1)}100%{transform:scale(1)}}.anim-popin{-webkit-animation:popin .1s;animation:popin .1s}
2 |
--------------------------------------------------------------------------------
/site/plangular-waveform-2.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
17 |
28 |
42 |
61 |
86 |
87 |
--------------------------------------------------------------------------------
/sass/_normalize.scss:
--------------------------------------------------------------------------------
1 | /*! normalize.css v2.1.2 | MIT License | git.io/normalize */
2 |
3 | /* ==========================================================================
4 | HTML5 display definitions
5 | ========================================================================== */
6 |
7 | /**
8 | * Correct `block` display not defined in IE 8/9.
9 | */
10 |
11 | article,
12 | aside,
13 | details,
14 | figcaption,
15 | figure,
16 | footer,
17 | header,
18 | hgroup,
19 | main,
20 | nav,
21 | section,
22 | summary {
23 | display: block;
24 | }
25 |
26 | /**
27 | * Correct `inline-block` display not defined in IE 8/9.
28 | */
29 |
30 | audio,
31 | canvas,
32 | video {
33 | display: inline-block;
34 | }
35 |
36 | /**
37 | * Prevent modern browsers from displaying `audio` without controls.
38 | * Remove excess height in iOS 5 devices.
39 | */
40 |
41 | audio:not([controls]) {
42 | display: none;
43 | height: 0;
44 | }
45 |
46 | /**
47 | * Address `[hidden]` styling not present in IE 8/9.
48 | * Hide the `template` element in IE, Safari, and Firefox < 22.
49 | */
50 |
51 | [hidden],
52 | template {
53 | display: none;
54 | }
55 |
56 | /* ==========================================================================
57 | Base
58 | ========================================================================== */
59 |
60 | /**
61 | * 1. Set default font family to sans-serif.
62 | * 2. Prevent iOS text size adjust after orientation change, without disabling
63 | * user zoom.
64 | */
65 |
66 | html {
67 | font-family: sans-serif; /* 1 */
68 | -ms-text-size-adjust: 100%; /* 2 */
69 | -webkit-text-size-adjust: 100%; /* 2 */
70 | }
71 |
72 | /**
73 | * Remove default margin.
74 | */
75 |
76 | body {
77 | margin: 0;
78 | }
79 |
80 | /* ==========================================================================
81 | Links
82 | ========================================================================== */
83 |
84 | /**
85 | * Remove the gray background color from active links in IE 10.
86 | */
87 |
88 | a {
89 | background: transparent;
90 | }
91 |
92 | /**
93 | * Address `outline` inconsistency between Chrome and other browsers.
94 | */
95 |
96 | a:focus {
97 | outline: thin dotted;
98 | }
99 |
100 | /**
101 | * Improve readability when focused and also mouse hovered in all browsers.
102 | */
103 |
104 | a:active,
105 | a:hover {
106 | outline: 0;
107 | }
108 |
109 | /* ==========================================================================
110 | Typography
111 | ========================================================================== */
112 |
113 | /**
114 | * Address variable `h1` font-size and margin within `section` and `article`
115 | * contexts in Firefox 4+, Safari 5, and Chrome.
116 | */
117 |
118 | h1 {
119 | margin: 0.67em 0;
120 | }
121 |
122 | /**
123 | * Address styling not present in IE 8/9, Safari 5, and Chrome.
124 | */
125 |
126 | abbr[title] {
127 | border-bottom: 1px dotted;
128 | }
129 |
130 | /**
131 | * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
132 | */
133 |
134 | b,
135 | strong {
136 | font-weight: bold;
137 | }
138 |
139 | /**
140 | * Address styling not present in Safari 5 and Chrome.
141 | */
142 |
143 | dfn {
144 | font-style: italic;
145 | }
146 |
147 | /**
148 | * Address differences between Firefox and other browsers.
149 | */
150 |
151 | hr {
152 | -moz-box-sizing: content-box;
153 | box-sizing: content-box;
154 | height: 0;
155 | }
156 |
157 | /**
158 | * Address styling not present in IE 8/9.
159 | */
160 |
161 | mark {
162 | background: #ff0;
163 | color: #000;
164 | }
165 |
166 | /**
167 | * Correct font family set oddly in Safari 5 and Chrome.
168 | */
169 |
170 | code,
171 | kbd,
172 | pre,
173 | samp {
174 | font-family: monospace, serif;
175 | font-size: 1em;
176 | }
177 |
178 | /**
179 | * Improve readability of pre-formatted text in all browsers.
180 | */
181 |
182 | pre {
183 | white-space: pre-wrap;
184 | }
185 |
186 | /**
187 | * Set consistent quote types.
188 | */
189 |
190 | q {
191 | quotes: "\201C" "\201D" "\2018" "\2019";
192 | }
193 |
194 | /**
195 | * Address inconsistent and variable font size in all browsers.
196 | */
197 |
198 | small {
199 | font-size: 80%;
200 | }
201 |
202 | /**
203 | * Prevent `sub` and `sup` affecting `line-height` in all browsers.
204 | */
205 |
206 | sub,
207 | sup {
208 | font-size: 75%;
209 | line-height: 0;
210 | position: relative;
211 | vertical-align: baseline;
212 | }
213 |
214 | sup {
215 | top: -0.5em;
216 | }
217 |
218 | sub {
219 | bottom: -0.25em;
220 | }
221 |
222 | /* ==========================================================================
223 | Embedded content
224 | ========================================================================== */
225 |
226 | /**
227 | * Remove border when inside `a` element in IE 8/9.
228 | */
229 |
230 | img {
231 | border: 0;
232 | }
233 |
234 | /**
235 | * Correct overflow displayed oddly in IE 9.
236 | */
237 |
238 | svg:not(:root) {
239 | overflow: hidden;
240 | }
241 |
242 | /* ==========================================================================
243 | Figures
244 | ========================================================================== */
245 |
246 | /**
247 | * Address margin not present in IE 8/9 and Safari 5.
248 | */
249 |
250 | figure {
251 | margin: 0;
252 | }
253 |
254 | /* ==========================================================================
255 | Forms
256 | ========================================================================== */
257 |
258 | /**
259 | * Define consistent border, margin, and padding.
260 | */
261 |
262 | fieldset {
263 | border: 1px solid #c0c0c0;
264 | margin: 0 2px;
265 | padding: 0.35em 0.625em 0.75em;
266 | }
267 |
268 | /**
269 | * 1. Correct `color` not being inherited in IE 8/9.
270 | * 2. Remove padding so people aren't caught out if they zero out fieldsets.
271 | */
272 |
273 | legend {
274 | border: 0; /* 1 */
275 | padding: 0; /* 2 */
276 | }
277 |
278 | /**
279 | * 1. Correct font family not being inherited in all browsers.
280 | * 2. Correct font size not being inherited in all browsers.
281 | * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
282 | */
283 |
284 | button,
285 | input,
286 | select,
287 | textarea {
288 | font-family: inherit; /* 1 */
289 | font-size: 100%; /* 2 */
290 | margin: 0; /* 3 */
291 | }
292 |
293 | /**
294 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in
295 | * the UA stylesheet.
296 | */
297 |
298 | button,
299 | input {
300 | line-height: normal;
301 | }
302 |
303 | /**
304 | * Address inconsistent `text-transform` inheritance for `button` and `select`.
305 | * All other form control elements do not inherit `text-transform` values.
306 | * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
307 | * Correct `select` style inheritance in Firefox 4+ and Opera.
308 | */
309 |
310 | button,
311 | select {
312 | text-transform: none;
313 | }
314 |
315 | /**
316 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
317 | * and `video` controls.
318 | * 2. Correct inability to style clickable `input` types in iOS.
319 | * 3. Improve usability and consistency of cursor style between image-type
320 | * `input` and others.
321 | */
322 |
323 | button,
324 | html input[type="button"], /* 1 */
325 | input[type="reset"],
326 | input[type="submit"] {
327 | -webkit-appearance: button; /* 2 */
328 | cursor: pointer; /* 3 */
329 | }
330 |
331 | /**
332 | * Re-set default cursor for disabled elements.
333 | */
334 |
335 | button[disabled],
336 | html input[disabled] {
337 | cursor: default;
338 | }
339 |
340 | /**
341 | * 1. Address box sizing set to `content-box` in IE 8/9.
342 | * 2. Remove excess padding in IE 8/9.
343 | */
344 |
345 | input[type="checkbox"],
346 | input[type="radio"] {
347 | box-sizing: border-box; /* 1 */
348 | padding: 0; /* 2 */
349 | }
350 |
351 | /**
352 | * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
353 | * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
354 | * (include `-moz` to future-proof).
355 | */
356 |
357 | input[type="search"] {
358 | -webkit-appearance: textfield; /* 1 */
359 | -moz-box-sizing: content-box;
360 | -webkit-box-sizing: content-box; /* 2 */
361 | box-sizing: content-box;
362 | }
363 |
364 | /**
365 | * Remove inner padding and search cancel button in Safari 5 and Chrome
366 | * on OS X.
367 | */
368 |
369 | input[type="search"]::-webkit-search-cancel-button,
370 | input[type="search"]::-webkit-search-decoration {
371 | -webkit-appearance: none;
372 | }
373 |
374 | /**
375 | * Remove inner padding and border in Firefox 4+.
376 | */
377 |
378 | button::-moz-focus-inner,
379 | input::-moz-focus-inner {
380 | border: 0;
381 | padding: 0;
382 | }
383 |
384 | /**
385 | * 1. Remove default vertical scrollbar in IE 8/9.
386 | * 2. Improve readability and alignment in all browsers.
387 | */
388 |
389 | textarea {
390 | overflow: auto; /* 1 */
391 | vertical-align: top; /* 2 */
392 | }
393 |
394 | /* ==========================================================================
395 | Tables
396 | ========================================================================== */
397 |
398 | /**
399 | * Remove most spacing between table cells.
400 | */
401 |
402 | table {
403 | border-collapse: collapse;
404 | border-spacing: 0;
405 | }
406 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Plangular
2 | =========
3 |
4 | Create custom SoundCloud players with HTML and CSS. Built with AngularJS
5 |
6 | See examples and more here:
7 | http://jxnblk.github.io/plangular
8 |
9 | ---
10 |
11 | ## Usage
12 | Plangular is very customizable. If you're not comfortable with basic AngularJS, the player templates below might be an easier place to start.
13 |
14 | ### Include JS Files
15 | Download the plangular.js file and add it to your project, then add the following script tags to your HTML:
16 |
17 | ```html
18 |
19 |
20 | ```
21 |
22 | Note: Unlike the previous version of Plangular, the SoundCloud SDK is no longer required.
23 |
24 | ### Initialize the Angular App
25 | Include the `ng-app` attribute in a containing element.
26 |
27 | ```html
28 |
29 | ...
30 |
31 | ```
32 |
33 | ### Create the Player
34 | Use any HTML element and add the `plangular` and `data-src` attributes, with the SoundCloud URL for the sound you would like to use.
35 |
36 | ```html
37 |
38 | ```
39 |
40 | ### Include the Track Info
41 | Use Angular bindings to include information about the track. You can use any of the data from the SoundCloud JSON Object.
42 |
43 | ```html
44 | {{ track.user.username }}
45 | {{ track.title }}
46 | ```
47 |
48 | ### Use Plangular Variables
49 | Add Play/Pause controls. Use `ng-hide` and `ng-show` to conditionally show and hide the controls when the track is playing.
50 |
51 | ```html
52 | Play
53 | Pause
54 | ```
55 |
56 | Plangular includes basic variables to display the sound's time and duration. The playTime filter will convert milliseconds to hh:mm:ss format.
57 |
58 | ```html
59 | {{ currentTime / duration }}
60 | {{ currentTime | playTime }} | {{ duration | playTime }}
61 | ```
62 |
63 | Add the seekTo() function to add scrubbing.
64 |
65 | ```html
66 | {{ currentTime / duration }}
67 | ```
68 |
69 | ### Add Images and Links
70 | To use images and links in the track object, use Angular's `ng-src` and `ng-href` attributes.
71 |
72 | ```html
73 | View on SoundCloud
74 |
75 |
76 | ```
77 |
78 | Note: The waveform image that the SoundCloud API provides is a 1200 x 280px PNG with a light gray frame and transparent middle. To show progress use absolute positioning with the waveform in front. The light gray color is #efefef.
79 |
80 | ### Icons
81 | Use the `plangularIcon` directive to inject SVG icons into your player. This directive will replace the element with an inline SVG, which allows you to style the icons with CSS. Requires the `plangular-icons.svg` file.
82 |
83 | ```html
84 |
85 |
86 |
87 |
88 | ```
89 |
90 |
91 | #### Example Icon Styling
92 | Since these are SVGs, use the `fill` attribute to style the color of the icons.
93 |
94 | ```html
95 |
104 |
105 | ```
106 |
107 | ### Additional Options
108 |
109 | To add a loading state while Plangular is getting data from SoundCloud, you can use `ng-show` and `ng-hide` to display different states.
110 |
111 | ```html
112 | Loading...
113 |
114 | ```
115 |
116 | ### Style with CSS
117 | Add classes, custom images, and whatever else your heart desires. Have fun!
118 |
119 | ---
120 |
121 | ## Example Templates
122 | Use these examples to get started quickly
123 |
124 | ### Bare Bones
125 |
126 | ```html
127 |
136 | ```
137 |
138 | ### Progress Bar
139 |
140 | ```html
141 |
155 | ```
156 |
157 | ### Artwork and Waveform
158 |
159 | ```html
160 |
182 | ```
183 |
184 | ---
185 |
186 | ## Note About SoundCloud API
187 |
188 | According to the SoundCloud API terms you must:
189 | - Credit the user as the creator of the content
190 | - Credit SoundCloud as the source
191 | - Include a link to the sound on SoundCloud (i.e. a link using `track.permalink_url`)
192 |
193 | Read more here: http://developers.soundcloud.com/docs/api/terms-of-use#branding
194 |
195 | ---
196 |
197 | ## Troubleshooting
198 |
199 | Don't ask me why, but SoundCloud provides an option for users to prevent streaming to third-party apps. If your sound isn't play or has stopped playing check the `track.streamable` variable. If it's set to false, there's no way to play that sound with the API.
200 |
201 | ---
202 |
203 | ## Reference
204 |
205 | ### Plangular
206 |
207 | - `plangular` - The Angular directive for Plangular
208 | - `data-src` - The data attribute to set the SoundCloud link
209 | - `track` - The object returned from the SoundCloud API
210 | - `player.play(track)` - Function for playing the track
211 | - `player.pause()` - Function for pausing
212 | - `currentTime` - Current time in milliseconds for the currently playing track
213 | - `duration` - Duration of the track in milliseconds
214 | - `playTime` - Angular filter to convert milliseconds to hh:mm:ss format
215 | - `seekTo($event)` - Click function for scrubbing
216 |
217 | ### SoundCloud API
218 |
219 | Example JSON object:
220 |
221 | ```json
222 | {
223 | "kind": "track",
224 | "id": 104286869,
225 | "created_at": "2013/08/06 18:40:58 +0000",
226 | "user_id": 1561,
227 | "duration": 10058,
228 | "commentable": true,
229 | "state": "finished",
230 | "original_content_size": 1764044,
231 | "sharing": "public",
232 | "tag_list": "Vocal",
233 | "permalink": "plangular",
234 | "streamable": true,
235 | "embeddable_by": "all",
236 | "downloadable": false,
237 | "purchase_url": null,
238 | "label_id": null,
239 | "purchase_title": null,
240 | "genre": "FX",
241 | "title": "Plangular",
242 | "description": "",
243 | "label_name": null,
244 | "release": null,
245 | "track_type": null,
246 | "key_signature": null,
247 | "isrc": null,
248 | "video_url": null,
249 | "bpm": null,
250 | "release_year": null,
251 | "release_month": null,
252 | "release_day": null,
253 | "original_format": "wav",
254 | "license": "all-rights-reserved",
255 | "uri": "http://api.soundcloud.com/tracks/104286869",
256 | "user": {
257 | "id": 1561,
258 | "kind": "user",
259 | "permalink": "jxnblk",
260 | "username": "Jxnblk",
261 | "uri": "http://api.soundcloud.com/users/1561",
262 | "permalink_url": "http://soundcloud.com/jxnblk",
263 | "avatar_url": "http://i1.sndcdn.com/avatars-000022806518-7o90vj-large.jpg?5ffe3cd"
264 | },
265 | "permalink_url": "http://soundcloud.com/jxnblk/plangular",
266 | "artwork_url": null,
267 | "waveform_url": "http://w1.sndcdn.com/2t0q2x8lbAVJ_m.png",
268 | "stream_url": "http://api.soundcloud.com/tracks/104286869/stream",
269 | "playback_count": 51,
270 | "download_count": 0,
271 | "favoritings_count": 1,
272 | "comment_count": 0,
273 | "attachments_uri": "http://api.soundcloud.com/tracks/104286869/attachments"
274 | }
275 | ```
276 |
277 | See http://developers.soundcloud.com/docs/api/reference#users for more details
278 |
279 | ---
280 |
281 | [MIT License](http://opensource.org/licenses/MIT)
282 |
283 |
284 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Plangular
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | {{ track.title }}
30 |
49 |
50 |
51 |
52 |
53 |
54 | {{ track.title }}
55 |
74 |
75 |
76 |
77 |
78 |
79 | {{ track.title }}
80 |
99 |
100 |
101 |
102 |
103 |
104 | {{ track.title }}
105 |
124 |
125 |
126 |
127 |
128 |
129 | {{ track.title }}
130 |
149 |
150 |
151 |
152 |
153 |
154 | {{ track.title }}
155 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
--------------------------------------------------------------------------------
/site/plangular.css:
--------------------------------------------------------------------------------
1 | /* Plangular */
2 |
3 | body, h1, h2, h3, h4, h5, h6, dl, ol, ul, p,
4 | button, input, select, textarea {
5 | margin: 0;
6 | }
7 |
8 | ol, ul {
9 | padding-left: 0;
10 | }
11 |
12 | button, input, select, textarea {
13 | font-family: inherit;
14 | font-size: 100%;
15 | }
16 |
17 | article, aside, details, figcaption, figure, footer, header, main, nav, section, summary {
18 | display: block;
19 | }
20 |
21 | body {
22 | /* font-family: 'Titillium Web', Helvetica, sans-serif; */
23 | font-family: 'Source Sans Pro', 'Hevletica Neue', Helvetica, Arial, sans-serif;
24 | font-size: 100%;
25 | line-height: 1.5;
26 | color: #444;
27 | background-color: #fff;
28 | }
29 |
30 | a {
31 | text-decoration: none;
32 | color: #0c5;
33 | }
34 | a:hover {
35 | color: #0d5;
36 | }
37 |
38 | .wrap { margin-right: auto; margin-left: auto; }
39 |
40 | h1, h2, h3 { line-height: 1.25; }
41 | h1, .h1 { font-size: 48px; }
42 | .h1-res { font-size: 24px; }
43 | @media screen and (min-width: 640px) {
44 | .h1-res { font-size: 48px; }
45 | }
46 | h2, .h2 { font-size: 32px; }
47 | h3, .h3 { font-size: 24px; }
48 | h4, .h4 { font-size: 20px; }
49 | h5, .h5, h6, .h6, p, .p { font-size: 16px; }
50 | small, .small { font-size: 12px; }
51 |
52 | code, pre, samp, .mono { font-family: 'Source Code Pro', monospace; }
53 |
54 | @media screen and (min-width: 640px) {
55 | .massive { font-size: 80px; }
56 | }
57 |
58 | .bold { font-weight: bold; }
59 | .reg { font-weight: normal; }
60 | .caps { text-transform: uppercase; letter-spacing: .2em; }
61 | .caps-tracked { letter-spacing: .5em; }
62 |
63 | .truncate {
64 | white-space: nowrap;
65 | overflow-x: hidden;
66 | text-overflow: ellipsis;
67 | }
68 |
69 | .js-truncate {
70 | white-space: nowrap;
71 | }
72 |
73 | .lh1 { line-height: 1; }
74 |
75 | .pad1 { padding: 16px; }
76 | .pad2 { padding: 32px; }
77 | .pad4 { padding: 64px; }
78 |
79 | .pad-x1 { padding-right: 16px; padding-left: 16px; }
80 | .pad-x2 { padding-right: 32px; padding-left: 32px; }
81 |
82 | .pad4-res { padding: 32px; }
83 | @media screen and (min-width: 640px) {
84 | .pad4-res { padding: 64px; }
85 | }
86 |
87 | .m0 { margin: 0; }
88 | .mt-5 { margin-top: 8px; }
89 |
90 | .m1 { margin: 16px; }
91 | .mt1 { margin-top: 16px; }
92 | .mr1 { margin-right: 16px; }
93 | .mb1 { margin-bottom: 16px; }
94 | .ml1 { margin-left: 16px; }
95 |
96 | .m2 { margin: 32px; }
97 | .mt2 { margin-top: 32px; }
98 | .mr2 { margin-right: 32px; }
99 | .mb2 { margin-bottom: 32px; }
100 | .ml2 { margin-left: 32px; }
101 |
102 | .m4 { margin: 64px; }
103 | .mt4 { margin-top: 64px; }
104 | .mr4 { margin-right: 64px; }
105 | .mb4 { margin-bottom: 64px; }
106 | .ml4 { margin-left: 64px; }
107 |
108 | .tappad {
109 | line-height: 48px;
110 | padding: 0 8px;
111 | }
112 |
113 | .tappad-small { height: 32px; line-height: 32px; }
114 |
115 | .sq32 { width: 32px; height: 32px; }
116 | .sq48 { width: 48px; height: 48px; }
117 | .sq64 { width: 64px; height: 64px; }
118 | .sq96 { width: 96px; height: 96px; }
119 | .sq128 { width: 128px; height: 128px; }
120 |
121 | .sq32-text { text-align: center; line-height: 32px; }
122 | .sq48-text { text-align: center; line-height: 48px; }
123 | .sq64-text { text-align: center; line-height: 64px; }
124 | .sq96-text { text-align: center; line-height: 96px; }
125 | .sq128-text { text-align: center; line-height: 128px; }
126 |
127 | .w100 { width: 100%; }
128 | .hi100 { height: 100%; }
129 |
130 | .hi64 { height: 64px; }
131 | .hi96 { height: 96px; }
132 |
133 | .min-hi48 { min-height: 48px; }
134 | .max-hi256 { max-height: 256px; }
135 | .max-hi512 { max-height: 512px; }
136 |
137 | .progress-thin {
138 | height: 2px;
139 | margin-top: 23px;
140 | }
141 |
142 | .over-scroll {
143 | overflow: scroll;
144 | -webkit-overflow-scrolling: touch;
145 | }
146 |
147 | .center { text-align: center; }
148 |
149 | .db { display: block; }
150 | .dib { display: inline-block; }
151 |
152 | .fl { float: left; }
153 | .fr { float: right; }
154 |
155 | .pos-rel { position: relative; }
156 | .pos-abs { position: absolute; }
157 | .fill {
158 | top:0;
159 | right:0;
160 | bottom:0;
161 | left:0;
162 | margin: auto;
163 | }
164 |
165 | .top { top: 0; }
166 | .right { right: 0; }
167 | .bottom { bottom: 0; }
168 | .left { left: 0; }
169 |
170 | .right1 { right: 16px; }
171 |
172 | .z1 { z-index: 1; }
173 | .z2 { z-index: 2; }
174 | .z3 { z-index: 3; }
175 | .z4 { z-index: 4; }
176 |
177 |
178 | .media, .bd { overflow: hidden; }
179 | .img { float: left; }
180 |
181 | @media screen and (max-width: 512px) {
182 | .media-fold .bd { clear: both; }
183 | }
184 |
185 | .btn { display: inline-block; }
186 |
187 | .btn-med {
188 | line-height: 48px;
189 | padding: 0 16px;
190 | border-radius: 4px;
191 | }
192 | .btn-big {
193 | line-height: 64px;
194 | padding: 0 16px;
195 | border-radius: 4px;
196 | }
197 | .btn-sq64 {
198 | line-height: 64px;
199 | width: 64px;
200 | text-align: center;
201 | }
202 | .btn-sq128 {
203 | line-height: 128px;
204 | width: 128px;
205 | text-align: center;
206 | }
207 |
208 | .rounded { border-radius: 4px; }
209 | .circle { border-radius: 50%; }
210 |
211 | .asp-16o9 {
212 | width: 100%;
213 | height: 0;
214 | padding-bottom: 56.25%;
215 | }
216 |
217 | .asp-3o1 {
218 | width: 100%;
219 | height: 0;
220 | padding-bottom: 33.33%;
221 | }
222 |
223 | .grid-1 {
224 | float: left;
225 | width: 100%;
226 | }
227 | @media screen and (min-width: 1024px) {
228 | .grid-1 { width: 45%; }
229 | .grid-1:nth-child(2n+1) {
230 | margin-right: 10%;
231 | clear: left;
232 | }
233 | }
234 |
235 |
236 |
237 | .btn-link {
238 | color: #fff;
239 | background-color: #0cf;
240 | }
241 | .btn-link:hover {
242 | color: #fff;
243 | background-color: #0ad;
244 | }
245 | .btn-link:active { box-shadow: inset 0 2px 4px rgba(0,0,0,0.3); }
246 |
247 | .btn-red {
248 | color: #fff;
249 | background-color: #f60;
250 | }
251 | .btn-red:hover {
252 | color: #fff;
253 | background-color: #d40;
254 | }
255 | .btn-red:active { box-shadow: inset 0 2px 4px rgba(0,0,0,0.3); }
256 |
257 | .btn-green {
258 | color: #fff;
259 | background-color: #0c5;
260 | }
261 | .btn-green:hover {
262 | color: #fff;
263 | background-color: #0d5;
264 | }
265 | .btn-green:active { box-shadow: inset 0 2px 4px rgba(0,0,0,0.3); }
266 |
267 | .btn-dark {
268 | color: #fff;
269 | background-color: rgba(0,0,0,.4);
270 | }
271 | .btn-dark:hover {
272 | color: #fff;
273 | background-color: rgba(0,0,0,.5);
274 | }
275 |
276 | .btn-scale:active { -webkit-transform: scale(.9); }
277 |
278 | /* Themes */
279 |
280 | .dark-gray { color: #444; }
281 | .bg-dark-gray { background-color: #444; }
282 | a.dark-gray:hover { color: #666; }
283 | .link { color: #0cf; }
284 | .bg-link { background-color: #0cf; }
285 |
286 | .mid-gray { color: #999; }
287 | .bg-mid-gray { background-color: #999; }
288 | a.mid-gray:hover { color: #666; }
289 | .light-gray { color: #eee; }
290 | .bg-light-gray { background-color: #eee; }
291 | .white { color: #fff; }
292 | a.white:hover { color: rgba(255,255,255,.8); }
293 | .bg-white { background-color: #fff; }
294 |
295 | .red { color: #f60; }
296 | .bg-red { background-color: #f60; }
297 | .green { color: #0c5; }
298 | .bg-green { background-color: #0c5; }
299 |
300 | .text-shadow { text-shadow: 0 1px 2px rgba(0,0,0,.3); }
301 | .shadow-darken { box-shadow: inset 0 -16px 128px rgba(0,0,0,0.8); }
302 |
303 | .sc-waveform-whiten { -webkit-filter: contrast(200%); }
304 |
305 | .bg-center { background-position: center; background-repeat: no-repeat; }
306 | .bg-cover { background-size: cover; }
307 | .bg-contain { background-size: contain; }
308 |
309 | .progress {
310 | -webkit-appearance: none;
311 | }
312 | .progress::-webkit-progress-bar {
313 | -webkit-appearance: none;
314 | background-color: #eee;
315 | }
316 | .progress::-webkit-progress-value { -webkit-appearance: none; }
317 |
318 | .progress-gray::-webkit-progress-value { background-color: #999; }
319 | .progress-gray-alt::-webkit-progress-bar { background-color: #ddd; }
320 |
321 | .progress-white::-webkit-progress-value { background-color: #fff; }
322 | .progress-white::-webkit-progress-bar { background-color: rgba(255,255,255,.4); }
323 |
324 |
325 |
326 | .progress-link::-webkit-progress-value { background-color: #0cf; }
327 | .progress-green::-webkit-progress-value { background-color: #0c5; }
328 |
329 | .progress-white-bg::-webkit-progress-bar {
330 | background-color: #fff;
331 | }
332 |
333 |
334 | /* Animations */
335 |
336 | @-webkit-keyframes popin {
337 | 0% { -webkit-transform: scale(.2); }
338 | 80% { -webkit-transform: scale(1.1); }
339 | 100% { -webkit-transform: scale(1); }
340 | }
341 | .anim-popin { -webkit-animation: popin .1s; }
342 |
343 | @-webkit-keyframes spin {
344 | from {-webkit-transform: rotate(0deg);}
345 | to {-webkit-transform: rotate(360deg);}
346 | }
347 | .anim-spin { -webkit-animation: spin 4s linear infinite; }
348 |
349 | @-webkit-keyframes slideleft {
350 | from {-webkit-transform: translate3d(100%, 0, 0);}
351 | to {-webkit-transform: translate3d(0%, 0, 0);}
352 | }
353 | .anim-slideleft { -webkit-animation: slideleft .2s ease; }
354 |
355 | .anim-hack {
356 | -webkit-backface-visibility: hidden;
357 | -webkit-perspective: 1000;
358 | }
359 |
360 | @-webkit-keyframes float-up {
361 | 0% { opacity: 0; top: 4rem; }
362 | 100% { opacity: 1; top: 0; }
363 | }
364 |
365 | .float-up {
366 | opacity: 0;
367 | position: relative;
368 | -webkit-animation-name: float-up;
369 | -webkit-animation-duration: .3s;
370 | -webkit-animation-fill-mode: forwards;
371 | }
372 |
373 | @-webkit-keyframes fade-in {
374 | 0% { opacity: 0; }
375 | 100% { opacity: 1; }
376 | }
377 |
378 | .fade-in {
379 | opacity: 0;
380 | -webkit-animation-name: fade-in;
381 | -webkit-animation-duration: 2s;
382 | -webkit-animation-fill-mode: forwards;
383 | }
384 |
385 | .anim-delay-1 { -webkit-animation-delay: .1s; }
386 | .anim-delay-2 { -webkit-animation-delay: .2s; }
387 | .anim-delay-3 { -webkit-animation-delay: .3s; }
388 | .anim-delay-4 { -webkit-animation-delay: .4s; }
389 |
390 |
391 | /* Header Waveform */
392 |
393 | .header-waveform {
394 | /*height: 256px;*/
395 | overflow-x: hidden;
396 | position: absolute;
397 | top: 0;
398 | right: 0;
399 | bottom: 0;
400 | left: 0;
401 | margin-top: 64px;
402 | }
403 |
404 | .header-bg {
405 | background-size: 1600%;
406 | background-image: url(images/plangular-waveform-3.svg);
407 | background-position: left center;
408 | background-repeat: repeat-x;
409 | }
410 |
411 | .header-waveform-img {
412 | display: block;
413 | /*width: 800%;*/
414 | height: 128px;
415 | opacity: 1;
416 | position: relative;
417 | -webkit-transition: left linear .2s;
418 | left: 100%;
419 | }
420 |
421 | /* Radicons */
422 |
423 | @font-face {
424 | font-family: 'Radicons';
425 | src:url('icons/Radicons.eot');
426 | src:url('icons/Radicons.eot?#iefix') format('embedded-opentype'),
427 | url('icons/Radicons.woff') format('woff'),
428 | url('icons/Radicons.ttf') format('truetype'),
429 | url('icons/Radicons.svg#Radicons') format('svg');
430 | font-weight: normal;
431 | font-style: normal;
432 | }
433 |
434 | [data-icon]:before {
435 | font-family: 'Radicons';
436 | content: attr(data-icon);
437 | speak: none;
438 | font-weight: normal;
439 | font-variant: normal;
440 | text-transform: none;
441 | -webkit-font-smoothing: antialiased;
442 | }
443 |
444 | .icon-settings, .icon-fast-forward, .icon-skip, .icon-pause,
445 | .icon-play, .icon-previous, .icon-rewind, .icon-heart {
446 | font-family: 'Radicons';
447 | speak: none;
448 | font-style: normal;
449 | font-weight: normal;
450 | font-variant: normal;
451 | text-transform: none;
452 | -webkit-font-smoothing: antialiased;
453 | }
454 | .icon-settings:before { content: "\2318"; }
455 | .icon-fast-forward:before { content: "\290f"; }
456 | .icon-skip:before { content: "\2192"; }
457 | .icon-pause:before { content: "\25fc"; }
458 | .icon-play:before { content: "\25b6"; }
459 | .icon-previous:before { content: "\2190"; }
460 | .icon-rewind:before { content: "\290e"; }
461 | .icon-heart:before { content: "\2665"; }
462 |
463 | .icon-nudge-right {
464 | position: relative;
465 | left: .125em;
466 | }
467 |
--------------------------------------------------------------------------------
/sass/_spacing.scss:
--------------------------------------------------------------------------------
1 | /*
2 | SPACING
3 |
4 | An eight step powers of two scale ranging from 0 to 16rem.
5 |
6 | Legend:
7 |
8 | p = padding
9 | m = margin
10 |
11 | a = all
12 | h = horizontal
13 | v = vertical
14 | t = top
15 | r = right
16 | b = bottom
17 | l = left
18 |
19 | n = none
20 | xs = extra small
21 | s = small
22 | m = medium
23 | l = large
24 | x = extra
25 | xl = extra large
26 | xxl = extra extra large
27 |
28 | */
29 |
30 | .pan { padding: 0; }
31 | .paxs { padding: .25rem; }
32 | .pas { padding: .5rem; }
33 | .pam { padding: 1rem; }
34 | .pal { padding: 2rem; }
35 | .pax { padding: 4rem; }
36 | .paxl { padding: 8rem; }
37 | .paxxl { padding: 16rem; }
38 |
39 | .pln { padding-left: 0; }
40 | .plxs { padding-left: .25rem; }
41 | .pls { padding-left: .5rem; }
42 | .plm { padding-left: 1rem; }
43 | .pll { padding-left: 2rem; }
44 | .plx { padding-left: 4rem; }
45 | .plxl { padding-left: 8rem; }
46 | .plxxl { padding-left: 16rem; }
47 |
48 | .prn { padding-right: 0; }
49 | .prxs { padding-right: .25rem; }
50 | .prs { padding-right: .5rem; }
51 | .prm { padding-right: 1rem; }
52 | .prl { padding-right: 2rem; }
53 | .prx { padding-right: 4rem; }
54 | .prxl { padding-right: 8rem; }
55 | .prxxl { padding-right: 16rem; }
56 |
57 | .pbn { padding-bottom: 0; }
58 | .pbxs { padding-bottom: .25rem; }
59 | .pbs { padding-bottom: .5rem; }
60 | .pbm { padding-bottom: 1rem; }
61 | .pbl { padding-bottom: 2rem; }
62 | .pbx { padding-bottom: 4rem; }
63 | .pbxl { padding-bottom: 8rem; }
64 | .pbxxl { padding-bottom: 16rem; }
65 |
66 | .ptn { padding-top: 0; }
67 | .ptxs { padding-top: .25rem; }
68 | .pts { padding-top: .5rem; }
69 | .ptm { padding-top: 1rem; }
70 | .ptl { padding-top: 2rem; }
71 | .ptx { padding-top: 4rem; }
72 | .ptxl { padding-top: 8rem; }
73 | .ptxxl { padding-top: 16rem; }
74 |
75 | .pvn { padding-top: 0; padding-bottom: 0; }
76 | .pvxs { padding-top: .25rem; padding-bottom: .25rem; }
77 | .pvs { padding-top: .5rem; padding-bottom: .5rem; }
78 | .pvm { padding-top: 1rem; padding-bottom: 1rem; }
79 | .pvl { padding-top: 2rem; padding-bottom: 2rem; }
80 | .pvx { padding-top: 4rem; padding-bottom: 4rem; }
81 | .pvxl { padding-top: 8rem; padding-bottom: 8rem; }
82 | .pvxxl { padding-top: 16rem; padding-bottom: 16rem; }
83 |
84 | .phn { padding-left: 0; padding-right: 0; }
85 | .pvxs { padding-left: .25rem; padding-right: .25rem; }
86 | .phs { padding-left: .5rem; padding-right: .5rem; }
87 | .phm { padding-left: 1rem; padding-right: 1rem; }
88 | .phl { padding-left: 2rem; padding-right: 2rem; }
89 | .phx { padding-left: 4rem; padding-right: 4rem; }
90 | .phxl { padding-left: 8rem; padding-right: 8rem; }
91 | .phxxl { padding-left: 16rem; padding-right: 16rem; }
92 |
93 | .man { margin: 0; }
94 | .maxs { margin: .25rem; }
95 | .mas { margin: .5rem; }
96 | .mam { margin: 1rem; }
97 | .mal { margin: 2rem; }
98 | .max { margin: 4rem; }
99 | .maxl { margin: 8rem; }
100 | .maxxl { margin: 16rem; }
101 |
102 | .mln { margin-left: 0; }
103 | .mlxs { margin-left: .25rem; }
104 | .mls { margin-left: .5rem; }
105 | .mlm { margin-left: 1rem; }
106 | .mll { margin-left: 2rem; }
107 | .mlx { margin-left: 4rem; }
108 | .mlxl { margin-left: 8rem; }
109 | .mlxxl { margin-left: 16rem; }
110 |
111 | .mrn { margin-right: 0; }
112 | .mrxs { margin-right: .25rem; }
113 | .mrs { margin-right: .5rem; }
114 | .mrm { margin-right: 1rem; }
115 | .mrl { margin-right: 2rem; }
116 | .mrx { margin-right: 4rem; }
117 | .mrxl { margin-right: 8rem; }
118 | .mrxxl { margin-right: 16rem; }
119 |
120 | .mbn { margin-bottom: 0; }
121 | .mbxs { margin-bottom: .25rem; }
122 | .mbs { margin-bottom: .5rem; }
123 | .mbm { margin-bottom: 1rem; }
124 | .mbl { margin-bottom: 2rem; }
125 | .mbx { margin-bottom: 4rem; }
126 | .mbxl { margin-bottom: 8rem; }
127 | .mbxxl { margin-bottom: 16rem; }
128 |
129 | .mtn { margin-top: 0; }
130 | .mtxs { margin-top: .25rem; }
131 | .mts { margin-top: .5rem; }
132 | .mtm { margin-top: 1rem; }
133 | .mtl { margin-top: 2rem; }
134 | .mtx { margin-top: 4rem; }
135 | .mtxl { margin-top: 8rem; }
136 | .mtxxl { margin-top: 16rem; }
137 |
138 | .mvn { margin-top: 0; margin-bottom: 0rem; }
139 | .mvxs { margin-top: .25rem; margin-bottom: .25rem; }
140 | .mvs { margin-top: .5rem; margin-bottom: .5rem; }
141 | .mvm { margin-top: 1rem; margin-bottom: 1rem; }
142 | .mvl { margin-top: 2rem; margin-bottom: 2rem; }
143 | .mvx { margin-top: 4rem; margin-bottom: 4rem; }
144 | .mvxl { margin-top: 8rem; margin-bottom: 8rem; }
145 | .mvxl { margin-top: 16rem; margin-bottom: 16rem; }
146 |
147 | .mhn { margin-left: 0; margin-right: 0; }
148 | .mhs { margin-left: .5rem; margin-right: .5rem; }
149 | .mhm { margin-left: 1rem; margin-right: 1rem; }
150 | .mhl { margin-left: 2rem; margin-right: 2rem; }
151 | .mhx { margin-left: 4rem; margin-right: 4rem; }
152 | .mhxl { margin-left: 8rem; margin-right: 8rem; }
153 | .mhxxl { margin-left: 16rem; margin-right: 16rem; }
154 |
155 | @include break(not-small) {
156 | .pan-ns { padding: 0; }
157 | .paxs-ns { padding: .25rem; }
158 | .pas-ns { padding: .5rem; }
159 | .pam-ns { padding: 1rem; }
160 | .pal-ns { padding: 2rem; }
161 | .pax-ns { padding: 4rem; }
162 | .paxl-ns { padding: 8rem; }
163 | .paxxl-ns { padding: 16rem; }
164 |
165 | .pln-ns { padding-left: 0; }
166 | .plxs-ns { padding-left: .25rem; }
167 | .pls-ns { padding-left: .5rem; }
168 | .plm-ns { padding-left: 1rem; }
169 | .pll-ns { padding-left: 2rem; }
170 | .plx-ns { padding-left: 4rem; }
171 | .plxl-ns { padding-left: 8rem; }
172 | .plxxl-ns { padding-left: 16rem; }
173 |
174 | .prn-ns { padding-right: 0; }
175 | .prxs-ns { padding-right: .25rem; }
176 | .prs-ns { padding-right: .5rem; }
177 | .prm-ns { padding-right: 1rem; }
178 | .prl-ns { padding-right: 2rem; }
179 | .prx-ns { padding-right: 4rem; }
180 | .prxl-ns { padding-right: 8rem; }
181 | .prxxl-ns { padding-right: 16rem; }
182 |
183 | .pbn-ns { padding-bottom: 0; }
184 | .pbxs-ns { padding-bottom: .25rem; }
185 | .pbs-ns { padding-bottom: .5rem; }
186 | .pbm-ns { padding-bottom: 1rem; }
187 | .pbl-ns { padding-bottom: 2rem; }
188 | .pbx-ns { padding-bottom: 4rem; }
189 | .pbxl-ns { padding-bottom: 8rem; }
190 | .pbxxl-ns { padding-bottom: 16rem; }
191 |
192 | .ptn-ns { padding-top: 0; }
193 | .ptxs-ns { padding-top: .25rem; }
194 | .pts-ns { padding-top: .5rem; }
195 | .ptm-ns { padding-top: 1rem; }
196 | .ptl-ns { padding-top: 2rem; }
197 | .ptx-ns { padding-top: 4rem; }
198 | .ptxl-ns { padding-top: 8rem; }
199 | .ptxxl-ns { padding-top: 16rem; }
200 |
201 | .pvn-ns { padding-top: 0; padding-bottom: 0; }
202 | .pvxs-ns { padding-top: .25rem; padding-bottom: .25rem; }
203 | .pvs-ns { padding-top: .5rem; padding-bottom: .5rem; }
204 | .pvm-ns { padding-top: 1rem; padding-bottom: 1rem; }
205 | .pvl-ns { padding-top: 2rem; padding-bottom: 2rem; }
206 | .pvx-ns { padding-top: 4rem; padding-bottom: 4rem; }
207 | .pvxl-ns { padding-top: 8rem; padding-bottom: 8rem; }
208 | .pvxxl-ns { padding-top: 16rem; padding-bottom: 16rem; }
209 |
210 | .phn-ns { padding-left: 0; padding-right: 0; }
211 | .pvxs-ns { padding-left: .25rem; padding-right: .25rem; }
212 | .phs-ns { padding-left: .5rem; padding-right: .5rem; }
213 | .phm-ns { padding-left: 1rem; padding-right: 1rem; }
214 | .phl-ns { padding-left: 2rem; padding-right: 2rem; }
215 | .phx-ns { padding-left: 4rem; padding-right: 4rem; }
216 | .phxl-ns { padding-left: 8rem; padding-right: 8rem; }
217 | .phxxl-ns { padding-left: 16rem; padding-right: 16rem; }
218 |
219 | .man-ns { margin: 0; }
220 | .maxs-ns { margin: .25rem; }
221 | .mas-ns { margin: .5rem; }
222 | .mam-ns { margin: 1rem; }
223 | .mal-ns { margin: 2rem; }
224 | .max-ns { margin: 4rem; }
225 | .maxl-ns { margin: 8rem; }
226 | .maxxl-ns { margin: 16rem; }
227 |
228 | .mln-ns { margin-left: 0; }
229 | .mlxs-ns { margin-left: .25rem; }
230 | .mls-ns { margin-left: .5rem; }
231 | .mlm-ns { margin-left: 1rem; }
232 | .mll-ns { margin-left: 2rem; }
233 | .mlx-ns { margin-left: 4rem; }
234 | .mlxl-ns { margin-left: 8rem; }
235 | .mlxxl-ns { margin-left: 16rem; }
236 |
237 | .mrn-ns { margin-right: 0; }
238 | .mrxs-ns { margin-right: .25rem; }
239 | .mrs-ns { margin-right: .5rem; }
240 | .mrm-ns { margin-right: 1rem; }
241 | .mrl-ns { margin-right: 2rem; }
242 | .mrx-ns { margin-right: 4rem; }
243 | .mrxl-ns { margin-right: 8rem; }
244 | .mrxxl-ns { margin-right: 16rem; }
245 |
246 | .mbn-ns { margin-bottom: 0; }
247 | .mbxs-ns { margin-bottom: .25rem; }
248 | .mbs-ns { margin-bottom: .5rem; }
249 | .mbm-ns { margin-bottom: 1rem; }
250 | .mbl-ns { margin-bottom: 2rem; }
251 | .mbx-ns { margin-bottom: 4rem; }
252 | .mbxl-ns { margin-bottom: 8rem; }
253 | .mbxxl-ns { margin-bottom: 16rem; }
254 |
255 | .mtn-ns { margin-top: 0; }
256 | .mtxs-ns { margin-top: .25rem; }
257 | .mts-ns { margin-top: .5rem; }
258 | .mtm-ns { margin-top: 1rem; }
259 | .mtl-ns { margin-top: 2rem; }
260 | .mtx-ns { margin-top: 4rem; }
261 | .mtxl-ns { margin-top: 8rem; }
262 | .mtxxl-ns { margin-top: 16rem; }
263 |
264 | .mvn-ns { margin-top: 0; margin-bottom: 0rem; }
265 | .mvxs-ns { margin-top: .25rem; margin-bottom: .25rem; }
266 | .mvs-ns { margin-top: .5rem; margin-bottom: .5rem; }
267 | .mvm-ns { margin-top: 1rem; margin-bottom: 1rem; }
268 | .mvl-ns { margin-top: 2rem; margin-bottom: 2rem; }
269 | .mvx-ns { margin-top: 4rem; margin-bottom: 4rem; }
270 | .mvxl-ns { margin-top: 8rem; margin-bottom: 8rem; }
271 | .mvxxl-ns { margin-top: 16rem; margin-bottom: 16rem; }
272 |
273 | .mhn-ns { margin-left: 0; margin-right: 0; }
274 | .mhs-ns { margin-left: .5rem; margin-right: .5rem; }
275 | .mhm-ns { margin-left: 1rem; margin-right: 1rem; }
276 | .mhl-ns { margin-left: 2rem; margin-right: 2rem; }
277 | .mhx-ns { margin-left: 4rem; margin-right: 4rem; }
278 | .mhxl-ns { margin-left: 8rem; margin-right: 8rem; }
279 | .mhxxl-ns { margin-left: 16rem; margin-right: 16rem; }
280 |
281 | }
282 |
283 | @include break(medium) {
284 | .pan-m { padding: 0; }
285 | .paxs-m { padding: .25rem; }
286 | .pas-m { padding: .5rem; }
287 | .pam-m { padding: 1rem; }
288 | .pal-m { padding: 2rem; }
289 | .pax-m { padding: 4rem; }
290 | .paxl-m { padding: 8rem; }
291 | .paxxl-m { padding: 16rem; }
292 |
293 | .pln-m { padding-left: 0; }
294 | .plxs-m { padding-left: .25rem; }
295 | .pls-m { padding-left: .5rem; }
296 | .plm-m { padding-left: 1rem; }
297 | .pll-m { padding-left: 2rem; }
298 | .plx-m { padding-left: 4rem; }
299 | .plxl-m { padding-left: 8rem; }
300 | .plxxl-m { padding-left: 16rem; }
301 |
302 | .prn-m { padding-right: 0; }
303 | .prxs-m { padding-right: .25rem; }
304 | .prs-m { padding-right: .5rem; }
305 | .prm-m { padding-right: 1rem; }
306 | .prl-m { padding-right: 2rem; }
307 | .prx-m { padding-right: 4rem; }
308 | .prxl-m { padding-right: 8rem; }
309 | .prxxl-m { padding-right: 16rem; }
310 |
311 | .pbn-m { padding-bottom: 0; }
312 | .pbxs-m { padding-bottom: .25rem; }
313 | .pbs-m { padding-bottom: .5rem; }
314 | .pbm-m { padding-bottom: 1rem; }
315 | .pbl-m { padding-bottom: 2rem; }
316 | .pbx-m { padding-bottom: 4rem; }
317 | .pbxl-m { padding-bottom: 8rem; }
318 | .pbxxl-m { padding-bottom: 16rem; }
319 |
320 | .ptn-m { padding-top: 0; }
321 | .ptxs-m { padding-top: .25rem; }
322 | .pts-m { padding-top: .5rem; }
323 | .ptm-m { padding-top: 1rem; }
324 | .ptl-m { padding-top: 2rem; }
325 | .ptx-m { padding-top: 4rem; }
326 | .ptxl-m { padding-top: 8rem; }
327 | .ptxxl-m { padding-top: 16rem; }
328 |
329 | .pvn-m { padding-top: 0; padding-bottom: 0; }
330 | .pvxs-m { padding-top: .25rem; padding-bottom: .25rem; }
331 | .pvs-m { padding-top: .5rem; padding-bottom: .5rem; }
332 | .pvm-m { padding-top: 1rem; padding-bottom: 1rem; }
333 | .pvl-m { padding-top: 2rem; padding-bottom: 2rem; }
334 | .pvx-m { padding-top: 4rem; padding-bottom: 4rem; }
335 | .pvxl-m { padding-top: 8rem; padding-bottom: 8rem; }
336 | .pvxxl-m { padding-top: 16rem; padding-bottom: 16rem; }
337 |
338 | .phn-m { padding-left: 0; padding-right: 0; }
339 | .pvxs-m { padding-left: .25rem; padding-right: .25rem; }
340 | .phs-m { padding-left: .5rem; padding-right: .5rem; }
341 | .phm-m { padding-left: 1rem; padding-right: 1rem; }
342 | .phl-m { padding-left: 2rem; padding-right: 2rem; }
343 | .phx-m { padding-left: 4rem; padding-right: 4rem; }
344 | .phxl-m { padding-left: 8rem; padding-right: 8rem; }
345 | .phxxl-m { padding-left: 16rem; padding-right: 16rem; }
346 |
347 | .man-m { margin: 0; }
348 | .maxs-m { margin: .25rem; }
349 | .mas-m { margin: .5rem; }
350 | .mam-m { margin: 1rem; }
351 | .mal-m { margin: 2rem; }
352 | .max-m { margin: 4rem; }
353 | .maxl-m { margin: 8rem; }
354 | .maxxl-m { margin: 16rem; }
355 |
356 | .mln-m { margin-left: 0; }
357 | .mlxs-m { margin-left: .25rem; }
358 | .mls-m { margin-left: .5rem; }
359 | .mlm-m { margin-left: 1rem; }
360 | .mll-m { margin-left: 2rem; }
361 | .mlx-m { margin-left: 4rem; }
362 | .mlxl-m { margin-left: 8rem; }
363 | .mlxxl-m { margin-left: 16rem; }
364 |
365 | .mrn-m { margin-right: 0; }
366 | .mrxs-m { margin-right: .25rem; }
367 | .mrs-m { margin-right: .5rem; }
368 | .mrm-m { margin-right: 1rem; }
369 | .mrl-m { margin-right: 2rem; }
370 | .mrx-m { margin-right: 4rem; }
371 | .mrxl-m { margin-right: 8rem; }
372 | .mrxxl-m { margin-right: 16rem; }
373 |
374 | .mbn-m { margin-bottom: 0; }
375 | .mbxs-m { margin-bottom: .25rem; }
376 | .mbs-m { margin-bottom: .5rem; }
377 | .mbm-m { margin-bottom: 1rem; }
378 | .mbl-m { margin-bottom: 2rem; }
379 | .mbx-m { margin-bottom: 4rem; }
380 | .mbxl-m { margin-bottom: 8rem; }
381 | .mbxxl-m { margin-bottom: 16rem; }
382 |
383 | .mtn-m { margin-top: 0; }
384 | .mtxs-m { margin-top: .25rem; }
385 | .mts-m { margin-top: .5rem; }
386 | .mtm-m { margin-top: 1rem; }
387 | .mtl-m { margin-top: 2rem; }
388 | .mtx-m { margin-top: 4rem; }
389 | .mtxl-m { margin-top: 8rem; }
390 | .mtxxl-m { margin-top: 16rem; }
391 |
392 | .mvn-m { margin-top: 0; margin-bottom: 0rem; }
393 | .mvxs-m { margin-top: .25rem; margin-bottom: .25rem; }
394 | .mvs-m { margin-top: .5rem; margin-bottom: .5rem; }
395 | .mvm-m { margin-top: 1rem; margin-bottom: 1rem; }
396 | .mvl-m { margin-top: 2rem; margin-bottom: 2rem; }
397 | .mvx-m { margin-top: 4rem; margin-bottom: 4rem; }
398 | .mvxl-m { margin-top: 8rem; margin-bottom: 8rem; }
399 | .mvxxl-m { margin-top: 16rem; margin-bottom: 16rem; }
400 |
401 | .mhn-m { margin-left: 0; margin-right: 0; }
402 | .mhxs-m { margin-left: .25rem; margin-right: .25rem; }
403 | .mhs-m { margin-left: .5rem; margin-right: .5rem; }
404 | .mhm-m { margin-left: 1rem; margin-right: 1rem; }
405 | .mhl-m { margin-left: 2rem; margin-right: 2rem; }
406 | .mhx-m { margin-left: 4rem; margin-right: 4rem; }
407 | .mhxl { margin-left: 8rem; margin-right: 8rem; }
408 | .mhxxl { margin-left: 16rem; margin-right: 16rem; }
409 |
410 | }
411 |
412 | @include break(large) {
413 | .pan-l { padding: 0; }
414 | .paxs-l { padding: .25rem; }
415 | .pas-l { padding: .5rem; }
416 | .pam-l { padding: 1rem; }
417 | .pal-l { padding: 2rem; }
418 | .pax-l { padding: 4rem; }
419 | .paxl-l { padding: 8rem; }
420 | .paxxl-l { padding: 16rem; }
421 |
422 | .pln-l { padding-left: 0; }
423 | .plxs-l { padding-left: .25rem; }
424 | .pls-l { padding-left: .5rem; }
425 | .plm-l { padding-left: 1rem; }
426 | .pll-l { padding-left: 2rem; }
427 | .plx-l { padding-left: 4rem; }
428 | .plxl-l { padding-left: 8rem; }
429 | .plxxl-l { padding-left: 16rem; }
430 |
431 | .prn-l { padding-right: 0; }
432 | .prxs-l { padding-right: .25rem; }
433 | .prs-l { padding-right: .5rem; }
434 | .prm-l { padding-right: 1rem; }
435 | .prl-l { padding-right: 2rem; }
436 | .prx-l { padding-right: 4rem; }
437 | .prxl-l { padding-right: 8rem; }
438 | .prxxl-l { padding-right: 16rem; }
439 |
440 | .pbn-l { padding-bottom: 0; }
441 | .pbxs-l { padding-bottom: .25rem; }
442 | .pbs-l { padding-bottom: .5rem; }
443 | .pbm-l { padding-bottom: 1rem; }
444 | .pbl-l { padding-bottom: 2rem; }
445 | .pbx-l { padding-bottom: 4rem; }
446 | .pbxl-l { padding-bottom: 8rem; }
447 | .pbxxl-l { padding-bottom: 16rem; }
448 |
449 | .ptn-l { padding-top: 0; }
450 | .ptxs-l { padding-top: .25rem; }
451 | .pts-l { padding-top: .5rem; }
452 | .ptm-l { padding-top: 1rem; }
453 | .ptl-l { padding-top: 2rem; }
454 | .ptx-l { padding-top: 4rem; }
455 | .ptxl-l { padding-top: 8rem; }
456 | .ptxxl-l { padding-top: 16rem; }
457 |
458 | .pvn-l { padding-top: 0; padding-bottom: 0; }
459 | .pvxs-l { padding-top: .25rem; padding-bottom: .25rem; }
460 | .pvs-l { padding-top: .5rem; padding-bottom: .5rem; }
461 | .pvm-l { padding-top: 1rem; padding-bottom: 1rem; }
462 | .pvl-l { padding-top: 2rem; padding-bottom: 2rem; }
463 | .pvx-l { padding-top: 4rem; padding-bottom: 4rem; }
464 | .pvxl-l { padding-top: 8rem; padding-bottom: 8rem; }
465 | .pvxxl-l { padding-top: 16rem; padding-bottom: 16rem; }
466 |
467 | .phn-l { padding-left: 0; padding-right: 0; }
468 | .pvxs-l { padding-left: .25rem; padding-right: .25rem; }
469 | .phs-l { padding-left: .5rem; padding-right: .5rem; }
470 | .phm-l { padding-left: 1rem; padding-right: 1rem; }
471 | .phl-l { padding-left: 2rem; padding-right: 2rem; }
472 | .phx-l { padding-left: 4rem; padding-right: 4rem; }
473 | .phxl-l { padding-left: 8rem; padding-right: 8rem; }
474 | .phxxl-l { padding-left: 16rem; padding-right: 16rem; }
475 |
476 | .man-l { margin: 0; }
477 | .maxs-l { margin: .25rem; }
478 | .mas-l { margin: .5rem; }
479 | .mam-l { margin: 1rem; }
480 | .mal-l { margin: 2rem; }
481 | .max-l { margin: 4rem; }
482 | .maxl-l { margin: 8rem; }
483 | .maxxl-l { margin: 16rem; }
484 |
485 | .mln-l { margin-left: 0; }
486 | .mlxs-l { margin-left: .25rem; }
487 | .mls-l { margin-left: .5rem; }
488 | .mlm-l { margin-left: 1rem; }
489 | .mll-l { margin-left: 2rem; }
490 | .mlx-l { margin-left: 4rem; }
491 | .mlxl-l { margin-left: 8rem; }
492 | .mlxxl-l { margin-left: 16rem; }
493 |
494 | .mrn-l { margin-right: 0; }
495 | .mrxs-l { margin-right: .25rem; }
496 | .mrs-l { margin-right: .5rem; }
497 | .mrm-l { margin-right: 1rem; }
498 | .mrl-l { margin-right: 2rem; }
499 | .mrx-l { margin-right: 4rem; }
500 | .mrxl-l { margin-right: 8rem; }
501 | .mrxxl-l { margin-right: 16rem; }
502 |
503 | .mbn-l { margin-bottom: 0; }
504 | .mbxs-l { margin-bottom: .25rem; }
505 | .mbs-l { margin-bottom: .5rem; }
506 | .mbm-l { margin-bottom: 1rem; }
507 | .mbl-l { margin-bottom: 2rem; }
508 | .mbx-l { margin-bottom: 4rem; }
509 | .mbxl-l { margin-bottom: 8rem; }
510 | .mbxxl-l { margin-bottom: 16rem; }
511 |
512 | .mtn-l { margin-top: 0; }
513 | .mtxs-l { margin-top: .25rem; }
514 | .mts-l { margin-top: .5rem; }
515 | .mtm-l { margin-top: 1rem; }
516 | .mtl-l { margin-top: 2rem; }
517 | .mtx-l { margin-top: 4rem; }
518 | .mtxl-l { margin-top: 8rem; }
519 | .mtxxl-l { margin-top: 16rem; }
520 |
521 | .mvn-l { margin-top: 0; margin-bottom: 0rem; }
522 | .mvxs-l { margin-top: .25rem; margin-bottom: .25rem; }
523 | .mvs-l { margin-top: .5rem; margin-bottom: .5rem; }
524 | .mvm-l { margin-top: 1rem; margin-bottom: 1rem; }
525 | .mvl-l { margin-top: 2rem; margin-bottom: 2rem; }
526 | .mvx-l { margin-top: 4rem; margin-bottom: 4rem; }
527 | .mvxl-l { margin-top: 8rem; margin-bottom: 8rem; }
528 | .mvxxl-l { margin-top: 16rem; margin-bottom: 16rem; }
529 |
530 | .mhn-l { margin-left: 0; margin-right: 0; }
531 | .mhxs-l { margin-left: .25rem; margin-right: .25rem; }
532 | .mhs-l { margin-left: .5rem; margin-right: .5rem; }
533 | .mhm-l { margin-left: 1rem; margin-right: 1rem; }
534 | .mhl-l { margin-left: 2rem; margin-right: 2rem; }
535 | .mhx-l { margin-left: 4rem; margin-right: 4rem; }
536 | .mhxl-l { margin-left: 8rem; margin-right: 8rem; }
537 | .mhxxl-l { margin-left: 16rem; margin-right: 16rem; }
538 | }
539 |
540 |
--------------------------------------------------------------------------------