/* Font Faces */
@font-face {
font-family: 'Libre Caslon';
src: url('/font/LibreCaslonCondensed[wdth,wght].woff2') format('woff2-variations');
font-weight: 400 700;
font-stretch: 75% 100%;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Libre Caslon';
src: url('/font/LibreCaslonCondensed-Italic[wght].woff2') format('woff2-variations');
font-weight: 400 700;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Ronzino';
src: url('/font/Ronzino-Medium.woff2') format('woff2');
font-weight: 500;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Ronzino';
src: url('/font/Ronzino-Bold.woff2') format('woff2');
font-weight: 700;
font-style: normal;
font-display: swap;
}
/* Theme */
:root {
--primary-color: #0000f5;
--background: #fff;
--foreground: #000019;
--foreground-emphasis: #191919;
--selection-color: #ccc;
--font-libre-caslon: 'Libre Caslon', 'Times New Roman', 'Georgia', serif;
--font-ronzino: 'Ronzino', 'Arial', 'Helvetica', sans-serif;
--root-font-size: 1rem;
--base-grid: 1.25rem;
--radius: 4px;
--border-width: 1px;
--outer-radius: calc(var(--radius) - var(--border-width));
}
::selection {
background-color: var(--selection-color);
-webkit-text-stroke: 0;
color: var(--primary-color);
}
/* CSS Reset */
* {margin: 0; padding: 0; box-sizing: border-box}
html { scroll-behavior: smooth }
/* Base Elements */
h1,h2,h3,h4 { font-weight: 300 }
li,p {
hyphens: auto;
text-align: justify;
transform: translateY(5px);
}
strong {
color: var(--foreground-emphasis);
font-weight: 700;
}
p { margin-bottom: var(--base-grid); }
a[role="button"],
button {
border: var(--border-width) solid var(--foreground);
border-radius: var(--radius);
background-color: var(--background);
color: var(--foreground);
cursor: pointer;
font-family: var(--font-ronzino);
font-size: 1rem;
line-height: 1.25;
font-weight: 700;
display: inline-block;
text-decoration: none;
transition: 0.1s all linear;
padding: calc(0.5lh - var(--border-width)) 1lh;
margin-bottom: 1lh;
&:active {
background-color: var(--foreground);
color: var(--background);
}
label {
line-height: 1.25;
cursor: pointer;
}
}
.textured {
h2, p, ul {
-webkit-text-stroke: calc(4 * var(--border-width)) var(--background);
paint-order: stroke fill;
}
}
/* The Contents */
body {
font-family: var(--font-ronzino);
color: var(--foreground);
background: var(--primary-color);
font-size: var(--root-font-size);
line-height: 1.25;
display: flex;
flex-direction: column;
align-items: stretch;
height: 100vh;
/* Header */
& > header {
color: #fff;
display: flex;
background: var(--primary-color);
font-family: var(--font-libre-caslon);
padding: var(--base-grid);
position: relative;
h1 {
font-size: 2rem;
flex: 0 0 auto;
line-height: 1.25;
@media (max-width: 600px) {
font-size: 1rem;
line-height: 1.25;
}
}
p {
font-size: 4.5rem;
font-style: italic;
line-height: 5rem;
margin: 0.5lh auto 0.25lh;
transform: translateY(-5px);
white-space: pre;
width: min-content;
@media (max-width: 800px) {
font-size: 3rem;
line-height: 3.75rem;
margin: 1lh auto var(--base-grid);
transform: translateY(-7px)
}
@media (max-width: 600px) {
font-size: 2rem;
line-height: 1.25;
margin: 0.75lh auto 0.25lh;
transform: translateY(-1px)
}
@media (max-width: 360px) {
font-size: 1rem;
margin: 2lh auto 0;
transform: translateY(4px);
}
}
a {
color: #fff;
display: block;
margin-top: 9px;
text-decoration: none;
width: min-content;
word-spacing: 100vw;
@media (max-width: 600px) {
margin-top: 4px
}
}
/* Animation */
canvas {
background: var(--primary-color);
display: block;
height: 60px;
width: 60px;
@media (max-width: 600px) {
height: 40px;
width: 40px;
}
}
}
}
/* The Main Body */
main {
flex-grow: 1;
background-color: var(--background);
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: center;
h2 {
font-size: 1.5rem;
line-height: 1.6667;
font-family: var(--font-libre-caslon);
font-weight: 500;
transform: translateY(-8px);
}
ul {
list-style: none;
margin-left: 0;
}
li {
position: relative;
padding-left: var(--base-grid);
&::before {
content: "✷";
width: var(--base-grid);
display: inline-block;
margin-left: calc(-1 * var(--base-grid));
text-align: left;
}
}
}
#introduction {
padding: calc(1 * var(--base-grid));
.content {
column-gap: var(--base-grid);
width: 100%;
max-width: calc(35 * var(--base-grid));
background: var(--background);
display: flex;
justify-content: center;
align-items: center;
}
}
#services {
column-gap: calc(2 * var(--base-grid));
row-gap: calc(3 * var(--base-grid));
padding: calc(2 * var(--base-grid));
width: 100%;
max-width: calc(83 * var(--base-grid));
background: var(--background);
display: flex;
justify-content: center;
flex-wrap: wrap;
section {
flex: 1;
min-width: calc(17 * var(--base-grid));
max-width: calc(25 * var(--base-grid));
@media (max-width: 360px) {
min-width: calc(100vw - 2 * var(--base-grid));
}
}
}
#skills {
background-image: url('data:image/svg+xml;utf8,');
padding: calc(2 * var(--base-grid));
width: 100%;
display: flex;
column-gap: calc(4 * var(--base-grid));
row-gap: calc(3 * var(--base-grid));
flex-wrap: wrap;
@media (max-width: 360px) {
padding: calc(2 * var(--base-grid)) var(--base-grid);
}
section {
flex: 1;
min-width: calc(17 * var(--base-grid));
@media (max-width: 360px) {
min-width: calc(100vw - 3 * var(--base-grid));
}
}
}
#testimonials {
background-image: url('data:image/svg+xml;utf8,');
padding: calc(2 * var(--base-grid));
width: 100%;
display: flex;
column-gap: calc(4 * var(--base-grid));
row-gap: calc(3 * var(--base-grid));
flex-wrap: wrap;
@media (max-width: 360px) {
padding: calc(2 * var(--base-grid)) var(--base-grid);
}
section {
flex: 1;
min-width: calc(17 * var(--base-grid));
@media (max-width: 360px) {
min-width: calc(100vw - 3 * var(--base-grid));
}
}
}
/* The Floating Window */
.cutoff-corners {
background-color: #fff;
border: var(--border-width) solid #000;
border-radius: var(--radius);
}
.window {
.titlebar {
border-bottom: var(--border-width) solid #000;
padding: calc(3 * var(--border-width)) calc(8 * var(--border-width));
line-height: calc(9 * var(--border-width));
text-align: center;
font-weight: 700;
background: repeating-linear-gradient(
0deg,
black,
black var(--border-width),
white var(--border-width),
white calc(var(--border-width) * 2)
);
background-clip: content-box;
background-origin: content-box;
list-style: none;
&::marker {
content: "";
}
.label {
background-color: #fff;
padding: var(--border-width) calc(5 * var(--border-width));
line-height: calc(12 * var(--border-width));
height: calc(12 * var(--border-width));
display: inline-block;
}
}
.content {
padding: var(--base-grid);
}
hr.divider {
margin-left: -6px;
margin-right: -6px;
}
}
aside {
background: var(--background)
}