www.byjp.me/assets/scss/_main.scss
2024-01-16 21:46:13 +00:00

828 lines
13 KiB
SCSS

html {
box-sizing: border-box;
line-height: 1.6;
letter-spacing: 0.06em;
scroll-behavior: smooth;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
::selection {
background-color: lch(85% 25 var(--accentHue));
@media (prefers-color-scheme: dark) {
background-color: lch(20% 25 var(--accentHue));
}
@media (prefers-color-scheme: light) {
background-color: lch(85% 25 var(--accentHue));
}
}
body {
position:relative;
margin: 0;
padding: 0;
font-family: -apple-system, BlinkMacSystemFont, "Roboto",
"Segoe UI", Helvetica, Arial, sans-serif;
font-display: auto;
font-size: 1rem;
line-height: 1.54;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
font-feature-settings: "liga", "tnum", "case", "calt", "zero", "ss01", "locl";
-webkit-overflow-scrolling: touch;
-webkit-text-size-adjust: 100%;
display: flex;
min-height: 100vh;
flex-direction: column;
// Default
background-color: $light-background;
color: $light-color;
@media #{$media-size-phone} {
font-size: 1rem;
}
@media (prefers-color-scheme: dark) {
background-color: $dark-background;
color: $dark-color;
}
@media (prefers-color-scheme: light) {
background-color: $light-background;
color: $light-color;
}
}
*[data-emoji] {
position: relative;
filter: grayscale(1);
transition: filter 0.2s ease-in-out;
font-size: #{"max(1em,1.5rem)"};
&::before {
content: attr(data-emoji);
position:absolute;
left: -4rem;
}
}
*:hover > [data-emoji] {
filter: none;
}
h2,
h3,
h4,
h5,
h6 {
display: flex;
align-items: center;
line-height: 1.3;
}
h1 {
font-size: 2.625rem;
}
h2 {
font-size: 1.625rem;
}
h3 {
font-size: 1.375rem;
}
h4 {
font-size: 1.125rem;
}
@media #{$media-size-phone} {
h1 {
font-size: 2rem;
}
h2 {
font-size: 1.4rem;
}
h3 {
font-size: 1.15rem;
}
h4 {
font-size: 1.125rem;
}
}
a {
color: inherit;
}
a[href^="https://web.archive.org/"] {
&::after {
position: absolute;
content: "🏛️";
margin-left: 0.25em;
vertical-align: super;
font-size: x-small;
text-decoration: none;
}
margin-right: 1em;
}
.always-accented, .always a {
color: var(--accent);
text-decoration: none;
}
a:not(.noaccent) {
.daytime {
color: lch(60% 60 var(--accentHue));
}
&:hover {
color: var(--accent);
.daytime {
color: inherit;
}
}
transition-property: color, filter;
transition-duration: .2s;
transition-timing-function: ease-in;
}
a.noaccent {
text-decoration: none;
}
img.profile {
float: left;
height: 3em;
border-radius: 1em;
filter: grayscale(1);
transition-property: color, filter;
transition-duration: .2s;
transition-timing-function: ease-in;
&:hover {
filter: none;
}
}
.photos {
.posts-list {
li {
border: 0;
display: inline;
margin: 2px;
a {
display: inline;
figure, img, video {
display: inline;
object-fit: cover;
object-position: center;
aspect-ratio: 1/1;
width: 200px;
@media (max-width: 652px) {
width: calc(33% - 6px);
}
@media (max-width: 448px) {
width: calc(50% - 4px);
}
}
}
}
}
}
.photo-media {
figure {
margin-left: auto;
margin-right: auto;
max-width: 100%;
}
video, img {
max-width: 100%;
max-height: 75vh;
}
}
img, postcard-display {
display: block;
max-width: 100%;
&.left {
margin-right: auto;
}
&.center {
margin-left: auto;
margin-right: auto;
}
&.right {
margin-left: auto;
}
&.circle {
border-radius: 50%;
max-width: 25%;
margin: auto;
}
}
postcard-display {
max-width: 50%;
}
figure {
display: table;
max-width: 100%;
margin: 25px 0;
&.left {
margin-right: auto;
}
&.left-floated {
margin-right: auto;
float: left;
img {
margin: 20px 20px 20px 0;
}
}
&.center {
margin-left: auto;
margin-right: auto;
}
&.right {
margin-left: auto;
}
&.right-floated {
margin-left: auto;
float: right;
img {
margin: 20px 0 20px 20px;
}
}
&.rounded {
img {
border-radius: 50%;
}
}
&.big {
box-sizing:content-box;
@media (min-width: 560px) {
max-width: none;
width: 100vw;
margin-left: calc(100%*0.5 - 50vw);
figcaption {
margin: 0 0.4rem;
}
}
@media (min-width: (760px * 1.5)) {
max-width: 100vw;
width: 150%;
margin-left: -25%;
figcaption {
margin:0;
}
}
}
figcaption {
font-size: 0.8rem;
opacity: 0.6;
&.left {
text-align: left;
}
&.center {
text-align: center;
}
&.right {
text-align: right;
}
}
}
em, strong {
// Default
color: $light-color-variant;
@media (prefers-color-scheme: dark) {
color: $dark-color-variant;
}
@media (prefers-color-scheme: light) {
color: $light-color-variant;
}
[data-theme=dark] & {
color: white;
}
[data-theme=light] & {
color: black;
}
}
code {
font-family: Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace;
font-display: auto;
font-feature-settings: normal;
padding: 1px 6px;
margin: 0 2px;
border-radius: 5px;
font-size: 0.95rem;
// Default
background: $light-background-secondary;
@media (prefers-color-scheme: dark) {
background: $dark-background-secondary;
}
@media (prefers-color-scheme: light) {
background: $light-background-secondary;
}
[data-theme=dark] & {
background: $dark-background-secondary;
}
[data-theme=light] & {
background: $light-background-secondary;
}
}
pre {
[data-theme=dark] & {
background-color: $dark-background-secondary;
}
[data-theme=light] & {
background-color: $light-background-secondary;
}
padding: 10px 10px 10px 20px;
border-radius: 8px;
font-size: 0.95rem;
overflow: auto;
@media #{$media-size-phone} {
white-space: pre-wrap;
word-wrap: break-word;
}
code {
background: none !important;
margin: 0;
padding: 0;
font-size: inherit;
// Default
color: #ccc;
@media (prefers-color-scheme: dark) {
color: inherit;
}
@media (prefers-color-scheme: light) {
color: #ccc;
}
[data-theme=dark] & {
color: inherit;
}
[data-theme=light] & {
color: #ccc;
}
}
}
blockquote {
border-left: 1px solid var(--accent);
margin: 40px 0;
padding: 10px 20px;
font-style: italic;
p ~ & {
margin: 1em 0;
}
@media #{$media-size-phone} {
margin: 10px;
padding: 10px;
}
p:first-of-type {
margin-top: 0;
}
p:last-of-type {
margin-bottom: 0;
}
}
ul,
ol {
margin-left: 40px;
padding: 0;
@media #{$media-size-phone} {
margin-left: 20px;
}
}
ol ol {
list-style-type: lower-alpha;
}
.container {
flex: 1 auto;
display: flex;
flex-direction: column;
justify-content: center;
text-align: center;
}
.homepage .content {
align-items: center;
}
.content {
display: flex;
flex-direction: column;
flex: 1 auto;
justify-content: center;
margin: 0;
@media #{$media-size-phone} {
margin-top: 0;
}
}
hr {
width: 100%;
border: none;
height: 1px;
// Default
background: $light-border-color;
clear: both;
@media (prefers-color-scheme: dark) {
background: $dark-border-color;
}
@media (prefers-color-scheme: light) {
background: $light-border-color;
}
[data-theme=dark] & {
background: $dark-border-color;
}
[data-theme=light] & {
background: $light-border-color;
}
}
.hidden {
display: none;
}
.hide-on-phone {
@media #{$media-size-phone} {
display: none;
}
}
.hide-on-tablet {
@media #{$media-size-tablet} {
display: none;
}
}
// Accessibility
.screen-reader-text {
border: 0;
clip: rect(1px, 1px, 1px, 1px);
clip-path: inset(50%);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute !important;
width: 1px;
word-wrap: normal !important;
}
.screen-reader-text:focus {
background-color: #f1f1f1;
border-radius: 3px;
box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
clip: auto !important;
clip-path: none;
color: #21759b;
display: block;
font-size: 14px;
font-size: 0.875rem;
font-weight: bold;
height: auto;
width: auto;
top: 5px;
left: 5px;
line-height: normal;
padding: 15px 23px 14px;
text-decoration: none;
z-index: 100000;
}
.background-image {
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
background-position: center center;
}
// Prism JS Additionals
.highlight {
margin: 30px auto;
}
a[href^="#fn:"] {
text-decoration: none;
color: var(--accent);
}
.footnotes {
font-size: small;
ol {
list-style: none;
counter-reset: li;
li::before {
content: counter(li) '.';
color: var(--accent);
width: 1em;
margin-left: -2em;
margin-right: 0.5em;
text-align: right;
position: absolute;
}
li {
position: relative;
counter-increment: li;
}
}
}
.post.poetry {
width: auto;
article {
margin: 0 auto;
width: auto;
}
h2 {
font-size: 1.375em;
a {
margin: auto
}
}
.poem {
&-left { text-align: left; }
&-center { text-align: center; }
&-right { text-align: right; }
&-monospace { text-align: center; }
}
.post-info {
text-align: center;
margin-top: 60px;
}
}
input {
border: 1px solid $light-color-secondary;
background-color: $light-background;
color: $light-color;
margin: 2px;
padding: 2px 4px;
border-radius: 0;
@media (prefers-color-scheme: dark) {
border: 1px solid $dark-color-secondary;
background-color: $dark-background;
color: $dark-color;
}
@media (prefers-color-scheme: light) {
border: 1px solid $light-color-secondary;
background-color: $light-background;
color: $light-color;
}
}
input[type="submit"] {
border-color: var(--accent);
color: var(--accent);
cursor: pointer;
&:hover {
background-color: var(--accent);
color: $light-color;
}
}
select {
// A reset of styles, including removing the default dropdown arrow
appearance: none;
background-color: transparent;
border: none;
width: 100%;
font-family: inherit;
font-size: inherit;
cursor: inherit;
line-height: inherit;
color: $light-color;
@media (prefers-color-scheme: dark) {
color: $dark-color;
}
@media (prefers-color-scheme: light) {
color: $light-color;
}
// Stack above custom arrow
z-index: 1;
// Remove dropdown arrow in IE10 & IE11
// @link https://www.filamentgroup.com/lab/select-css.html
&::-ms-expand {
display: none;
}
// Remove focus outline, will add on alternate element
outline: none;
}
.select {
display: inline-grid;
grid-template-areas: "select";
align-items: center;
position: relative;
padding: 3px 4px;
border-radius: 0;
margin: 2px 2px 2px;
select,
&::after {
grid-area: select;
}
border: 1px solid $light-color-secondary;
@media (prefers-color-scheme: dark) {
border: 1px solid $dark-color-secondary;
}
@media (prefers-color-scheme: light) {
border: 1px solid $light-color-secondary;
}
font-size: inherit;
cursor: pointer;
line-height: 1.0;
background-color: $light-background;
@media (prefers-color-scheme: dark) {
background-color: $dark-background;
}
@media (prefers-color-scheme: light) {
background-color: $light-background;
}
// Custom arrow
&:not(.select--multiple)::after {
content: "";
justify-self: end;
width: 0.64em;
height: 0.4em;
background-color: $light-color-secondary;
@media (prefers-color-scheme: dark) {
background-color: $dark-color-secondary;
}
@media (prefers-color-scheme: light) {
background-color: $light-color-secondary;
}
clip-path: polygon(100% 0%, 0 0%, 50% 100%);
}
}
// Interim solution until :focus-within has better support
select:focus + .focus {
position: absolute;
top: -1px;
left: -1px;
right: -1px;
bottom: -1px;
border: 2px solid var(--accent);
border-radius: inherit;
}
.h-card:not(.no-emoji) .u-url::before {
content: "📇";
margin-right: 3px;
text-decoration: none;
display:inline-block;
}
abbr:hover {
border-bottom: 1px dotted;
}
time {
color: $dark-color;
@media (prefers-color-scheme: light) {
color: $light-color;
}
}
a:hover time {
color: inherit;
}
body.nownownow .post-content > p {
position: relative;
line-height: inherit;
&::first-letter {
font-size: 2rem;
line-height: 20px;
position: absolute;
margin-left: -4rem;
padding-top: 0.5rem;
float: left;
}
}
a[href^="/tags/"]:before {
content: '#';
text-decoration: none;
display:inline-block;
}
mark {
color: inherit;
background-color: lch(85% 25 var(--accentHue)) !important;
@media (prefers-color-scheme: dark) {
background-color: lch(20% 25 var(--accentHue)) !important;
}
}
#last-updated {
position: absolute;
font-style:italic;
bottom: 0;
padding: 4px 4px 4px 8px;
border-top-left-radius: 8px;
opacity: 0.8;
background-color: $light-background;
@media (prefers-color-scheme: dark) {
background-color: $dark-background
}
}