hackertours-theme/assets/sass/_zen.scss
2022-12-21 13:39:50 +01:00

322 lines
4.4 KiB
SCSS

// Zen custom styles
// Page
body {
background-color: var(--color-backdrop);
}
.page {
background-color: var(--color-body-bg);
}
.header {
padding-top: $zen-gutters;
}
.footer {
@include margin-top(1.5);
@include padding(.5 0);
text-align: center;
border-top: 2px solid var(--color-brand);
p {
margin: 0;
}
}
// Apply smaller text to blocks, footer etc.
th,
label,
legend,
figcaption {
@include font-size(s);
}
.language-selector,
article > header,
.content-dates,
.footer {
@include font-size(xs);
}
// Apply heading font stack to heading, labels etc.
h1,
h2,
h3,
th,
nav,
label,
legend,
article > header,
.content-dates,
.header,
.footer {
@include typeface(headings);
color: var(--color-headings);
font-weight: normal;
}
article > .content,
aside {
ul {
@extend %ul-straight-left;
}
ol {
@extend %ol-straight-left;
}
}
article {
& > header {
color: var(--color-text-meta);
}
.submitted {
margin-bottom: .5rem;
}
.submitted,
.tags {
@include respond-to(l) {
display: inline-block;
padding-right: 1rem;
}
}
.tags {
ul {
display: inline-flex;
flex-wrap: wrap;
margin: 0;
padding: 0;
}
li {
@include padding-right(.2);
list-style-type: none;
}
}
.content-dates {
color: var(--color-text-meta);
text-align: right;
}
code {
@include font-size(xs);
overflow-wrap: break-word;
}
pre {
color: var(--color-code);
border-radius: $s-radius;
padding: 5px;
border: 1px solid var(--color-border);
background-color: var(--color-text-bg);
overflow: auto;
max-height: 300px;
max-width: 90vw;
&.chroma {
max-height: initial;
overflow-x: scroll;
}
& > code {
display: inline-block;
white-space: pre;
}
}
.js-clipboard-button {
display: block;
}
}
.title-submitted {
margin-bottom: .2rem;
}
figure,
img {
&.image {
@include respond-to(s) {
&.center {
margin-left: auto;
margin-right: auto;
}
&.left {
@include padding(0 .5 .5 0);
margin: 0;
float: left;
clear: both;
}
&.right {
@include padding(0 0 .5 .5);
margin: 0;
float: right;
clear: both;
}
}
}
}
figure {
&.image {
figcaption {
@include respond-to(s) {
display: table-caption;
caption-side: bottom;
}
h4,
p {
margin: 0;
}
}
@include respond-to(s) {
display: table;
img {
display: block;
}
&.left {
figcaption {
@include padding(0 .5 .5 0);
}
}
&.right {
figcaption {
@include padding(0 0 .5 .5);
}
}
}
}
&.podcast {
audio {
width: 95%;
}
}
}
// Navigation
.main-menu {
@include margin-top(.5);
outline: 0;
li {
@include margin-bottom(.5);
padding: 0;
}
a {
display: block;
background-color: var(--color-brand);
color: var(--color-text-bg);
padding: 2px 8px;
text-decoration: none;
&:hover,
&:focus {
background-color: var(--color-brand-dark);
}
&:active,
&.active {
background-color: var(--color-brand);
text-decoration: underline;
}
}
}
.menu a.active {
text-decoration: none;
}
// Search
.search-input {
@include margin(1 0);
}
.search-text {
@include font-size(l);
max-width: 80%;
}
// Form
.content {
label:has(+ :required) {
&::after {
content: '*';
color: var(--color-mark-highlight);
}
}
input,
textarea {
@include margin-bottom(.75);
width: 92%;
&:not(:placeholder-shown):valid {
background-color: var(--color-status-bg);
}
&:not(:placeholder-shown):invalid {
background-color: var(--color-error-bg);
}
}
}
.js-submitted {
input,
textarea {
&:valid {
background-color: var(--color-status-bg);
}
&:invalid {
background-color: var(--color-error-bg);
}
}
}
// Icons.
.icon {
// Reset set SVG to block but icons are normally inline.
display: inline;
}
// Header anchor links
.anchor-link {
opacity: 0;
transition: all 130ms ease-in;
}
.anchor-header {
&:focus,
&:hover {
.anchor-link {
opacity: .3;
&:focus,
&:hover {
opacity: 1;
}
}
}
}