Files
30-seconds-of-code/docs/scss/style.scss
2018-09-05 19:11:51 +03:00

649 lines
18 KiB
SCSS

$base-font-size: 16px;
$base-line-height: 1.5;
$__1px: (1px/$base-font-size) * 1rem;
$base-font-family: 'Roboto, Helvetica, sans-serif';
$code-font-family: 'Roboto Mono, Menlo, Consolas, monospace';
$_body-margin: 0;
$fore-color-var: '--fore-color';
$back-color-var: '--back-color';
$secondary-fore-color-var: '--secondary-fore-color';
$secondary-back-color-var: '--secondary-back-color';
$tertiary-fore-color-var: '--tertiary-fore-color';
$border-color-var: '--border-color';
$universal-margin-var: '--universal-margin';
$universal-padding-var: '--universal-padding';
$universal-border-radius-var: '--universal-border-radius';
$fore-color: #212121;
$secondary-fore-color: #444;
$tertiary-fore-color: #222;
$back-color: #fff;
$secondary-back-color: #f0f0f0;
$border-color: #eee;
$token-color-a-var: '--token-color-a';
$token-color-b-var: '--token-color-b';
$token-color-c-var: '--token-color-c';
$token-color-d-var: '--token-color-d';
$token-color-e-var: '--token-color-e';
$token-color-f-var: '--token-color-f';
$token-color-g-var: '--token-color-g';
$token-color-h-var: '--token-color-h';
$token-color-a: #80cbc4;
$token-color-b: #bdbdbd;
$token-color-c: #81d4fa;
$token-color-d: #b388ff;
$token-color-e: #c5e1a5;
$token-color-f: #ff7043;
$token-color-g: #4dd0e1;
$token-color-h: #ffd54f;
$universal-margin: 0.5rem;
$universal-padding: 0.5rem;
$universal-border-radius: 0.125rem;
$heading-line-height: 1.2;
$code-font-size: 0.875em;
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
src: local('Roboto Light'), local('Roboto-Light'), url(https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmSU5fBBc4.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
font-display: swap;
}
@font-face {
font-family: 'Roboto';
font-style: italic;
font-weight: 300;
src: local('Roboto Light Italic'), local('Roboto-LightItalic'), url(https://fonts.gstatic.com/s/roboto/v18/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
font-display: swap;
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: local('Roboto Medium'), local('Roboto-Medium'), url(https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmEU9fBBc4.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
font-display: swap;
}
@font-face {
font-family: 'Roboto Mono';
font-style: normal;
font-weight: 300;
src: local('Roboto Mono Light'), local('RobotoMono-Light'), url(https://fonts.gstatic.com/s/robotomono/v5/L0xkDF4xlVMF-BfR8bXMIjDgiWqxf78.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
font-display: swap;
}
@font-face {
font-family: 'Roboto Mono';
font-style: italic;
font-weight: 300;
src: local('Roboto Mono Light Italic'), local('RobotoMono-LightItalic'), url(https://fonts.gstatic.com/s/robotomono/v5/L0xmDF4xlVMF-BfR8bXMIjhOk9a0T72jBg.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
font-display: swap;
}
@font-face {
font-family: 'Roboto Mono';
font-style: normal;
font-weight: 500;
src: local('Roboto Mono Medium'), local('RobotoMono-Medium'), url(https://fonts.gstatic.com/s/robotomono/v5/L0xkDF4xlVMF-BfR8bXMIjC4iGqxf78.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
font-display: swap;
}
:root {
#{$fore-color-var}: $fore-color;
#{$back-color-var}: $back-color;
#{$border-color-var}: $border-color;
#{$secondary-fore-color-var}: $secondary-fore-color;
#{$tertiary-fore-color-var}: $tertiary-fore-color;
#{$secondary-back-color-var}: $secondary-back-color;
#{$universal-margin-var}: $universal-margin;
#{$universal-padding-var}: $universal-padding;
#{$universal-border-radius-var}: $universal-border-radius;
#{$token-color-a-var}: $token-color-a;
#{$token-color-b-var}: $token-color-b;
#{$token-color-c-var}: $token-color-c;
#{$token-color-d-var}: $token-color-d;
#{$token-color-e-var}: $token-color-e;
#{$token-color-f-var}: $token-color-f;
#{$token-color-g-var}: $token-color-g;
#{$token-color-h-var}: $token-color-h;
}
html {
font-size: $base-font-size;
}
html, * {
font-family: #{$base-font-family};
line-height: $base-line-height;
// Prevent adjustments of font size after orientation changes in mobile.
-webkit-text-size-adjust: 100%;
}
* {
font-size: 1rem;
font-weight: 300;
}
a, b, del, em, i, ins, q, span, strong, u {
font-size: 1em; // Fix for elements inside headings not displaying properly.
}
body {
margin: $_body-margin;
color: var(#{$fore-color-var});
background: var(#{$back-color-var});
overflow-x: hidden;
}
// Correct display for Edge & Firefox.
details {
display: block;
}
// Correct display in all browsers.
summary {
display: list-item;
}
// Abbreviations
abbr[title] {
border-bottom: none; // Remove bottom border in Firefox 39-.
text-decoration: underline dotted; // Opinionated style-fix for all browsers.
}
// Show overflow in Edge.
input {
overflow: visible;
}
// Make images responsive by default.
img {
max-width: 100%;
height: auto;
}
h1, h2, h3, h4, h5, h6 {
line-height: $heading-line-height;
margin: calc(1.5 * var(#{$universal-margin-var})) var(#{$universal-margin-var});
}
h1 {
font-size: 6rem;
}
h2 {
font-size: 3.75rem;
}
h3 {
font-size: 3rem;
}
h4 {
font-size: 2.125rem;
}
h5 {
font-size: 1.5rem;
}
h6 {
font-size: 1.25rem;
}
p {
margin: var(#{$universal-margin-var});
}
ol, ul {
margin: var(#{$universal-margin-var});
padding-left: calc(2 * var(#{$universal-margin-var}));
}
b, strong {
font-weight: 500;
}
hr {
// Fixes and defaults for styling
box-sizing: content-box;
border: 0;
// Actual styling using variables
line-height: 1.25em;
margin: var(#{$universal-margin-var});
height: $__1px;
background: linear-gradient(to right, transparent, var(#{$border-color-var}) 20%, var(#{$border-color-var}) 80%, transparent);
}
code, kbd, pre {
font-size: $code-font-size;
}
code, kbd, pre, code *, pre *, kbd *, code[class*="language-"], pre[class*="language-"] {
font-family: #{$code-font-family};
}
sup, sub, code, kbd {
line-height: 0;
position: relative;
vertical-align: baseline;
}
code {
background: var(#{$secondary-back-color-var});
padding: calc(var(#{$universal-padding-var}) / 4) calc(var(#{$universal-padding-var}) / 2);
border-radius: var(#{$universal-border-radius-var});
}
kbd {
background: var(#{$fore-color-var});
color: var(#{$back-color-var});
border-radius: var(#{$universal-border-radius-var});
padding: calc(var(#{$universal-padding-var}) / 4) calc(var(#{$universal-padding-var}) / 2);
}
pre {
overflow: auto; // Responsiveness
padding: calc(1.5 * var(#{$universal-padding-var}));
margin: var(#{$universal-margin-var});
background: #263238;
border: 0;
color: #fafafa;
}
code[class*="language-"],
pre[class*="language-"] {
color: var(#{$tertiary-fore-color-var});
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.8;
-moz-tab-size: 2;
-o-tab-size: 2;
tab-size: 2;
-webkit-hypens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
color: #fafafa;
}
pre[class*="language-"] {
padding: calc(2 * var(#{$universal-padding-var}));
overflow: auto;
margin: var(#{$universal-margin-var}) 0;
}
pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
background: #b3d4fc;
}
pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
code[class*="language-"]::selection, code[class*="language-"] ::selection {
background: #b3d4fc;
}
:not(pre) > code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: var(#{$token-color-a-var});
}
.token.punctuation {
color: var(#{$token-color-b-var});
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.constant,
.token.symbol,
.token.deleted,
.token.function {
color: var(#{$token-color-c-var});
}
.token.number,
.token.class-name {
color: var(#{$token-color-d-var});
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: var(#{$token-color-e-var});
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string,
.token.atrule,
.token.attr-value,
.token.keyword {
color: var(#{$token-color-f-var});
}
.token.regex {
color: var(#{$token-color-g-var});
}
.token.important,
.token.variable {
color: var(#{$token-color-h-var});
}
.token.important,
.token.bold {
font-weight: 500;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
/*
blockquote {}
sup {}
sub {}
figure {}
figcaption {}
*/
// ===================================================
// Layout
// ===================================================
$grid-medium-breakpoint: 768px;
$grid-large-breakpoint: 768px;
// Grid container
.container {
display: grid;
grid-template-columns: repeat(12, 1fr);
grid-column-gap: calc(0.5 * var(#{$universal-margin-var}));
}
// Generic centered column
.col-centered {
grid-column: span 12;
max-width: 100%;
@media screen and (min-width: #{$grid-medium-breakpoint}) {
grid-column: 2/12;
}
@media screen and (min-width: #{$grid-large-breakpoint}) {
grid-column: 3/11;
}
}
// 25% width - For the 'in numbers' section
.col-quarter {
grid-column: span 3;
}
.col-full-width {
grid-column: span 12;
}
// For the contributors section
.flex-row {
display: flex;
flex: 0 1 auto;
flex-flow: row wrap;
.flex-item {
flex: 0 0 auto;
max-width: 50%;
flex-basis: 50%;
@media screen and (min-width: #{$grid-medium-breakpoint}) {
max-width: 25%;
flex-basis: 25%;
}
@media screen and (min-width: #{$grid-large-breakpoint}) {
max-width: 100%;
flex-grow: 1;
flex-basis: 0;
}
}
}
// TODO: Missing the menu system layout - probably all JS, effects and slide over
// TODO: Redesign cards from scratch
.card {
&.code-card {
margin-top: calc(2.5 * var(#{$universal-margin-var}));
background: #263238;
.section.card-content{
background: var(#{$back-color-var});
}
}
overflow: hidden;
position: relative;
margin: var(#{$universal-margin-var});
border-radius: calc(4 * var(#{$universal-border-radius-var}));
box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14),0 3px 1px -2px rgba(0,0,0,0.12),0 1px 5px 0 rgba(0,0,0,0.2);
.section {
&.card-content{
padding: calc(1.5 * var(#{$universal-padding-var}));
}
}
.collapse {
background: #263238;
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23607D8B' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-plus-square'%3E%3Crect x='3' y='3' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='12' y1='8' x2='12' y2='16'%3E%3C/line%3E%3Cline x1='8' y1='12' x2='16' y2='12'%3E%3C/line%3E%3C/svg%3E");
background-position: 0.25rem 0.9rem;
background-repeat: no-repeat;
text-transform: uppercase;
padding: calc(1.5 * var(#{$universal-padding-var}));
padding-left: calc(2.25 * var(#{$universal-padding-var}));
display: block;
font-size: 0.75rem;
padding-bottom: calc(2 * var(#{$universal-padding-var}));
color: #607D8B;
cursor: pointer;
+ pre.card-examples {
position: absolute;
transform: scaleY(0);
transform-origin: top;
transition: transform 0.2s ease;
}
&.toggled{
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23607D8B' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-minus-square'%3E%3Crect x='3' y='3' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='8' y1='12' x2='16' y2='12'%3E%3C/line%3E%3C/svg%3E");
padding-bottom: calc(0.125 * var(#{$universal-padding-var}));
+ pre.card-examples {
position: relative;
transform: scaleY(1);
}
}
}
pre.section {
&.card-code {
position: relative;
margin-bottom: 0;
padding-bottom: 0;
}
&.card-examples {
margin-top: 0;
margin-bottom: 0;
border-radius: 0 0 calc(4 * var(#{$universal-border-radius-var})) calc(4 * var(#{$universal-border-radius-var}));
padding-top: 0;
&:before {
content: '';
display: block;
position: absolute;
top: 0;
left: 9px;
border-left: 1px solid #607D8B;
height: calc(100% - 18px);
}
}
}
h4 {
text-align: center;
padding-bottom: calc(0.75 * var(#{$universal-padding-var}));
margin-bottom: calc(2 * var(#{$universal-margin-var}));
border-bottom: $__1px solid var(#{$border-color-var});
}
.copy-button-container {
position: relative;
z-index: 2;
.copy-button {
background: #1E88E5;
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23f0f0f0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-clipboard'%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'%3E%3C/path%3E%3Crect x='8' y='2' width='8' height='4' rx='1' ry='1'%3E%3C/rect%3E%3C/svg%3E");
background-position: center center;
background-repeat: no-repeat;
box-sizing: border-box;
padding: calc(2.5 * var(#{$universal-padding-var}));
border-radius: 50%;
position: absolute;
border: 0;
top: -1.75rem;
right: 0;
margin: calc(2 * var(#{$universal-margin-var}));
box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14),0 3px 1px -2px rgba(0,0,0,0.12),0 1px 5px 0 rgba(0,0,0,0.2);
transition: all 0.3s ease;
cursor: pointer;
&:hover {
background-color: #2196F3;
box-shadow: 0 4px 5px 0 rgba(0,0,0,0.14),0 1px 10px 0 rgba(0,0,0,0.12),0 2px 4px -1px rgba(0,0,0,0.3);
}
&:before {
background: #fff;
position: absolute;
top: -4px;
right: -4px;
content: '';
display: block;
box-sizing: border-box;
padding: calc(2.5 * var(#{$universal-padding-var}));
border-radius: 50%;
border: 4px solid #fff;
z-index: -1;
}
}
}
}
.advanced-corner {
text-align: center;
//text-transform: uppercase;
box-sizing: border-box;
padding-top: 32px;
font-size: 0.75rem;
position: absolute;
top: -8px;
right: -34px;
transform: rotate(45deg);
color: #fff;
font-weight: 500;
width: 104px;
height: 52px;
background: #E53935;
box-shadow: 0 2px 2px 0 rgba(0,0,0,0.07),0 3px 1px -2px rgba(0,0,0,0.06),0 1px 5px 0 rgba(0,0,0,0.1);
}
.toast {
position: fixed;
bottom: calc(var(#{$universal-margin-var}) * 2);
margin-bottom: 0;
font-size: 0.8125rem;
left: 50%;
transform: translate(-50%, -50%);
z-index: 1111;
color: #fff;
background: #212121;
border-radius: calc(var(#{$universal-border-radius-var}) * 16);
padding: var(#{$universal-padding-var}) calc(var(#{$universal-padding-var}) * 2);
box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14),0 3px 1px -2px rgba(0,0,0,0.12),0 1px 5px 0 rgba(0,0,0,0.2);
}
// TODO: Links colors
// TODO: Buttons and search form only
// TODO: Top bar - header
// TODO: Side bar - nav
// TODO: Bottom area - footer
// TODO: JS + CSS for side bar functionality
// TODO: New toast
// TODO: New marks
// TODO: Components for statistics
header h1.logo {
margin-top: 0rem;
font-size: 1.625rem;
text-align: center;
position: relative;
top: 0;
transition: top 0.3s;
color: #111;
}
h1 a, h1 a:link, h1 a:visited {
text-decoration:none;
color: #111;
&:hover, &:focus {
text-decoration:none;
color: #111;
}
}
header #title {
position:relative;
top: -1.125rem;
@media screen and (max-width: 768px) { display: none; }
}
header {
z-index: 5;
position: fixed;
width: 110%;
left: -5%;
background: linear-gradient(
135deg,
#ffb300 0%,
#ec407a 100%
);
box-shadow: 0 2px 4px rgba(0,0,0,.5);
}
header h1 small {
display:block;
font-size: 0.875rem;
color: #888;
margin-top: 0.75rem;
}
.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}
header {
background: #202124;
h1 a, h1 a:link, h1 a:visited {
color: #fff;
&:hover, &:focus {
color: #fff;
}
}
}
footer {
color: #616161;
* {
font-size: 0.875rem;
}
padding-top: calc(2 * var(#{$universal-padding-var}));
padding-bottom: calc(3 * var(#{$universal-padding-var}));
margin-top: calc(6 * var(#{$universal-margin-var}));
background: #e0e0e0;
}