1
mirror of https://github.com/jakejarvis/jarv.is.git synced 2025-04-27 12:56:21 -04:00
jarv.is/assets/style.scss

683 lines
14 KiB
SCSS

/*! Compiled CSS from SASS: https://go.jarv.is/sass-source */
// Global Colors
$color-background: #ffffff;
$color-text: #222222;
$color-light: #666666;
$color-medium-light: #9e9e9e;
$color-super-light: #dddddd;
$color-super-duper-light: #f4f4f4;
$color-links: #0e6dc2;
// Colorful Homepage
$colors-home:(
boston: #fb4d42,
javascript: #f48024,
node: #6fbc4e,
golang: #00acd7,
react: #4fb3cd,
angular: #c3002f,
vue: #486491,
java: #ab6311,
cpp: #865fc5,
python: #fea500,
php: #8892bf,
ruby: #d34135,
infosec: #00b81a,
server: #0098ec,
devops: #ff6200,
containers: #c48f49,
y2k: #4169e1,
jbb: #9932cc,
github: #8d4eff,
linkedin: #0073b1,
facebook: #4267b2,
twitter: #00acee,
dm: #00acee,
instagram: #a37754,
mastodon: #6d8ca7,
resume: #d54b3d,
email: #de0c0c,
pgp: #777777,
sms: #6fcc01,
news-1: #ff1b1b,
news-2: #f78200,
news-3: #f2b702,
news-4: #5ebd3e,
news-5: #009cdf,
news-6: #3e49bb,
news-7: #973999
);
$color-serverless: #87cef7;
$color-fairy: #f23e93;
// Other Settings
$link-opacity: 50%;
$link-underline-size: 2px;
// Gradient hack to get our custom underline to wrap:
// https://www.dannyguo.com/blog/animated-multiline-link-underlines-with-css/
@function underline-hack($color) {
// Calculate lighter underline color compared to text color by
// mix()'ing with background (#fff) to give the impression of
// opacity but with MUCH better compatibility.
$color-opaque: mix($color, $color-background, $link-opacity);
// Return non-gradient linear-gradient():
@return linear-gradient($color-opaque, $color-opaque);
}
// Global Styles
body {
width: 100%;
height: 100%;
margin: 0 auto;
background-color: $color-background;
color: $color-text;
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
"Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans",
"Droid Sans", "Helvetica Neue", sans-serif,
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-weight: 300;
box-sizing: border-box;
a {
color: $color-links;
text-decoration: none;
background-image: underline-hack($color-links);
background-position: 0% 100%;
background-repeat: no-repeat;
background-size: 0% $link-underline-size;
padding-bottom: $link-underline-size;
transition: background-size 0.25s ease-in-out;
&:hover {
text-decoration: none;
background-size: 100% $link-underline-size;
}
&.no-underline {
background: none !important;
}
}
// Home Styles
&#home {
font-size: 1.5em;
line-height: 1.5;
max-width: 1070px;
padding: 60px;
h1 {
margin: 0 0 20px 0;
font-size: 1.5em;
font-weight: 500;
line-height: 1;
a {
color: inherit;
}
}
h2 {
margin: 20px 0;
font-size: 1.2em;
font-weight: 400;
line-height: 1.4;
}
p {
margin: 20px 0;
}
sup {
top: -0.5em;
font-size: 0.5em;
line-height: 0;
position: relative;
vertical-align: middle;
}
img#me {
float: right;
margin: 0 0 20px 20px;
padding: 4px;
border: 1px solid $color-super-light;
width: 160px;
height: 160px;
}
a {
// Loop through $colors-home -- the main reason I switched to SASS :)
@each $id, $color in $colors-home {
&##{$id} {
color: $color;
background-image: underline-hack($color);
}
}
}
span {
&#serverless {
color: $color-serverless;
}
&#shh {
color: $color-medium-light;
}
&#fairy {
color: $color-fairy;
&:hover {
cursor: url(data:image/svg+xml;utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMCIgaGVpZ2h0PSIzNiIgdmlld3BvcnQ9IjAgMCAxMDAgMTAwIiBzdHlsZT0iZm9udC1zaXplOjE4cHgiPjx0ZXh0IHk9IjUwJSI+8J+nmjwvdGV4dD48L3N2Zz4=) 5 5, auto;
}
}
}
footer {
margin: 0;
height: 40px;
// TODO: switch to em:
line-height: 40px;
div {
float: left;
vertical-align: middle;
height: 100%;
&#blog {
width: 40%;
text-align: left;
font-size: 0.9em;
}
&#panda {
width: 20%;
text-align: center;
font-size: 1.25em;
line-height: 1.5;
a {
display: inline-block;
transition: transform 0.2s ease-in-out;
&:hover {
transform: scale(1.4);
}
}
}
&#info {
width: 40%;
font-size: 0.55em;
color: $color-light;
text-align: right;
a {
color: inherit;
&#source {
border-bottom: 1px solid $color-super-light;
}
}
}
}
}
h1 span#wave {
display: inline-block;
animation-name: wave;
animation-duration: 2.5s;
animation-iteration-count: infinite;
transform-origin: 70% 70%;
}
}
// Blog Styles
&#notes {
line-height: 1.5;
font-weight: 400;
max-width: 1010px;
padding: 20px 50px;
header {
margin: 30px 0;
a {
&#more {
font-size: 1.25em;
}
&#logo {
margin: 20px auto;
display: block;
img,
svg {
height: 150px;
width: 100px;
margin: 0 auto;
display: block;
}
}
}
}
footer {
border-top: 1px solid $color-super-light;
height: 40px;
// TODO: switch to em:
line-height: 40px;
padding-top: 16px;
margin-top: 30px;
color: $color-light;
a {
color: inherit;
}
div {
float: left;
vertical-align: middle;
&#copyright,
&#poweredby {
width: 40%;
font-size: 0.85em;
}
&#copyright {
text-align: left;
}
&#poweredby {
text-align: right;
a#source {
border-bottom: 1px solid $color-super-light;
}
}
&#panda {
width: 20%;
text-align: center;
font-size: 1.7em;
a {
display: inline-block;
transition: transform 0.2s ease-in-out;
&:hover {
transform: scale(1.4);
}
}
}
}
}
main {
&#single article div {
&#info {
text-align: center;
h1 {
margin-top: 0;
margin-bottom: 20px;
font-size: 2em;
line-height: 1.4;
a {
color: inherit;
}
}
}
&#meta {
margin: -5px 0 0 0;
color: $color-light;
font-size: 0.85em;
line-height: 1.5;
letter-spacing: 1px;
a {
color: inherit;
}
div#tags {
text-transform: uppercase;
letter-spacing: 2px;
margin-top: 5px;
span.tag {
margin: 0 8px;
}
}
}
&#content {
line-height: 1.8;
object-fit: contain;
h1,
h2,
h3 {
margin-top: 18px;
margin-bottom: 10px;
font-weight: 500;
line-height: 1.5;
}
img {
max-width: 100%;
margin: 0 auto;
display: block;
object-fit: scale-down;
}
img + em,
figure figcaption {
display: block;
font-size: 0.9em;
font-style: normal;
color: $color-light;
text-align: center;
margin-top: 5px;
}
blockquote {
border-left: 6px solid $color-links;
margin-left: 6px;
padding-left: 15px;
}
ul {
list-style-position: inside;
list-style-type: square;
margin-left: 12px;
padding-left: 0;
}
hr {
width: 60%;
margin: 10px auto;
border: 1px solid $color-super-light;
}
video.embed {
display: block;
margin: 0 auto;
}
div.embed.video-player {
position: relative;
padding-bottom: 56.25%;
height: 0;
overflow: hidden;
iframe.youtube-player {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border: none;
margin-bottom: 10px;
display: inline-block;
}
}
twitter-widget {
margin: 0 auto;
display: block;
}
code {
// https://markdotto.com/2018/02/07/github-system-fonts/
font-family: "SFMono-Regular", "Consolas", "Liberation Mono", "Menlo", "Courier", monospace;
font-size: 0.9em;
padding: 0.2em;
background: $color-super-duper-light;
border: 1px solid $color-super-light;
}
pre code {
display: block;
padding: 1em 1.5em;
line-height: 1.6;
border-left: 3px solid $color-links;
max-width: 100%;
overflow-x: scroll;
page-break-inside: avoid;
object-fit: scale-down;
}
}
&#commento {
border-top: 1px solid #ccc;
padding-top: 20px;
margin-top: 20px;
// disable link underline effect in comments
a {
background: none;
&:hover {
text-decoration: underline;
}
}
div.commento-body {
a {
color: $color-links;
}
}
div#commento-footer {
display: none;
}
}
}
&#archive section.year {
ul {
list-style-type: none;
padding-left: 0;
display: block;
}
li {
&::after {
content: '';
display: block;
clear: both;
}
&:last-child {
margin-bottom: 20px;
}
+ li {
padding-top: 20px;
}
}
h2 {
font-size: 1.8em;
}
div {
font-size: 1.1em;
&.date {
float: left;
color: $color-light;
width: 5.25em;
font-weight: 400;
}
&.title {
float: left;
width: calc(100% - 5.25em);
}
}
}
}
}
}
// Responsive Awesomeness
@media screen and (max-width: 800px) {
// Responsive Home
body#home {
font-size: 1em;
padding: 30px;
h1 {
margin: 0 0 12px 0;
}
h2 {
margin: 12px 0;
}
p {
font-size: 1.1em;
line-height: 1.5;
margin: 12px 0;
}
img#me {
width: 68px;
height: 68px;
padding: 2px;
margin: 0 0 10px 10px;
}
footer div {
line-height: 1.7;
&#panda {
display: none;
}
&#blog,
&#info {
width: 50%;
}
&#blog {
font-size: 1em;
}
&#info {
font-size: 0.7em;
span#copyright::after {
content: "\A";
white-space: pre;
}
}
}
}
// Responsive Blog
body#notes {
padding: 30px;
width: 100%;
max-width: 100%;
header {
margin-top: 0;
margin-bottom: 20px;
a#logo {
img,
svg {
height: 75px;
width: 50px;
}
}
}
footer div {
line-height: 1.8;
&#panda {
display: none;
}
&#copyright,
&#poweredby {
width: 50%;
}
&#poweredby {
a#hugo::after {
content: "\A";
white-space: pre;
}
}
}
main#archive section.year div {
font-size: 1em;
}
main#single article {
width: 100%;
max-width: 100%;
div#info h1 {
font-size: 1.7em;
}
}
}
}
/*! Fancy Waving Hand Emoji (TM) - https://jarv.is/notes/css-waving-hand-emoji/ */
@keyframes wave {
0% { transform: rotate( 0.0deg); }
10% { transform: rotate(-10.0deg); }
20% { transform: rotate( 12.0deg); }
30% { transform: rotate(-10.0deg); }
40% { transform: rotate( 9.0deg); }
50% { transform: rotate( 0.0deg); }
100% { transform: rotate( 0.0deg); }
}
/*! Syntax Highlighting - modified from Monokai Light https://github.com/mlgill/pygments-style-monokailight */
div.highlight span {
&.k, &.kc, &.kd, &.kp, &.kr, &.kt, &.no {
color: #03748a;
}
&.n, &.bp, &.nb, &.ni, &.fm, &.nl, &.nn, &.py, &.nv, &.vc, &.vg, &.vi, &.vm, &.p {
color: #111111;
}
&.na, &.nc, &.nd, &.ne, &.nf, &.nx {
color: #489c44;
}
&.err, &.nt, &.o, &.ow, &.kn {
color: #e8003d;
}
&.l, &.se, &.m, &.mb, &.mf, &.mh, &.mi, &.il, &.mo {
color: #8145ec;
}
&.ld, &.s, &.sa, &.sb, &.sc, &.dl, &.sd, &.s2, &.sh, &.si, &.sx, &.sr, &.s1, &.ss {
color: #c17005;
}
&.c, &.ch, &.cm, &.c1, &.cs, &.cp, &.cpf {
color: #6b6859;
}
&.ge {
font-style: italic;
}
&.gs {
font-weight: bold;
}
}