@use "sass:color"; @use "sass:math"; /* ----------------- */ /* Custom Properties */ /* ----------------- */ /* Many of the prop- * erties here are * where the substa- * ntive changes * will be made */ /* colors */ $color-white: hsl(280 30% 80%);/* White */ $color-dark: color.adjust($color-white, $lightness: -50%); /* Black */ $color-light: hsl(190 80% 30%); /* Gray */ /* font */ @font-face { font-family: "Inconsolata"; src: url("fonts/Inconsolata.ttf"); font-display: swap; font-variation-settings: "wdth" 85; } @font-face { font-family: "Jost"; src: url("fonts/Jost.ttf"); font-display: swap; } /* Sizes divided by 16 so values given in px */ $fs-900: calc(100rem / 16); $fs-800: calc(75rem / 16); $fs-700: calc(56rem / 16); $fs-600: calc(32rem / 16); $fs-500: calc(28rem / 16); $fs-400: calc(24rem / 16); $fs-300: calc(18rem / 16); $fs-200: calc(16rem / 16); $ff-serif: "Inconsolata", monospace; $ff-sans-cond: sans-serif; $ff-sans: "Jost", sans-serif; /* ----- */ /* Reset */ /* ----- */ *, *::before, *::after { box-sizing: border-box; } body, h1, h2, h3, h4, h5, h6, p { margin: 0; } h1, h2, h3, h4, h5, h6, p { font-weight: 400; } h1, h2, h3 { line-height: 1.1; } body { font-family: $ff-sans; font-size: $fs-400; color: $color-dark; background-color: $color-white; line-height: 1.5; min-height: 100vh; } main { margin-left: 1vw; margin-top: 1vh; } img, picture { max-width: 100%; display: block; } input, button, textarea, select { font: inherit; } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behaviour: auto !important; } } /* --------------- */ /* Utility Classes */ /* --------------- */ /* Layouts */ .container { padding-inline: clamp(0.5rem, 4rem, 5rem); margin-inline: auto; max-width: 80rem; } .flex { display: flex; gap: 2rem; } .column { justify-content: center; align-items: center; flex-direction: column; align-content: center; } .row { flex-direction: row; flex-wrap: wrap; justify-content: space-evenly; align-content: baseline; max-width: 100%; } .two-columns { display: grid; /* Will shrink to one column, never exceed two! * The `max` in `minmax` asks that the columns * be no smaller */ grid-template-columns: repeat(auto-fit, minmax(max(30rem, 40%), 1fr)); column-gap: 1rem; justify-content: space-evenly; } .lock-bottom { position: absolute; bottom: 0%; } /* Other */ .hr::after { /* Add fake hr after header */ content: ''; position: absolute; display: block; clear: both; width: 100%; height: 0.15rem; background-color: black; } /* Color Classes */ .bg-dark { background-color: $color-dark; } .bg-light { background-color: $color-light; } .bg-white { background-color: $color-white; } .text-dark { color: $color-dark; } .text-light { color: $color-light; } .text-white { color: $color-white; } /* Font Classes */ .fs-900 { font-size: $fs-900; font-weight: 400;} .fs-800 { font-size: $fs-800; font-weight: 300;} .fs-700 { font-size: $fs-700; font-weight: 250;} .fs-600 { font-size: $fs-600; font-weight: 300;} .fs-500 { font-size: $fs-500; font-weight: 200;} .fs-400 { font-size: $fs-400; font-weight: 200;} .fs-300 { font-size: $fs-300; } .fs-200 { font-size: $fs-200; } .ff-serif { font-family: $ff-serif; } .ff-sans-cond { font-family: $ff-sans-cond; } .ff-sans { font-family: $ff-sans; } .uppercase { text-transform: uppercase; } .lowercase { text-transform: lowercase; } /* Semantic Tags and Their Classes */ header { margin-bottom: 3vh; } section:not(:last-of-type) { margin-bottom: 3vh; } footer { margin-top: 3vh; } /* -------------------- */ /* Non-Reusable Classes */ /* -------------------- */ /* meant for these pages * only, not to be used * in practice */ .colors--block { padding: 3rem 1rem 1rem; border: 1px solid black; } @keyframes waltuh-gradient-anim { $r: 6em; $pd: math.div(2*math.$pi,10); from { background-position: 6em 0em; } 10% { background-position: $r*math.cos(1*$pd) $r*math.sin(1*$pd); } 20% { background-position: $r*math.cos(2*$pd) $r*math.sin(2*$pd); } 30% { background-position: $r*math.cos(3*$pd) $r*math.sin(3*$pd); } 40% { background-position: $r*math.cos(4*$pd) $r*math.sin(4*$pd); } 50% { background-position: $r*math.cos(5*$pd) $r*math.sin(5*$pd); } 60% { background-position: $r*math.cos(6*$pd) $r*math.sin(6*$pd); } 70% { background-position: $r*math.cos(7*$pd) $r*math.sin(7*$pd); } 80% { background-position: $r*math.cos(8*$pd) $r*math.sin(8*$pd); } 90% { background-position: $r*math.cos(9*$pd) $r*math.sin(9*$pd); } to { background-position: 6em 0em; } } .waltuh-gradient { font-weight: 600; color: transparent; $grad1: color.adjust($color-dark, $saturation: +80%, $lightness: +20%); $grad2: color.adjust($grad1, $lightness: +30%); background: repeating-radial-gradient($color-dark, $grad1, $grad2 80%, white); background-size: 30vmin 30vmin; background-clip: text; animation: waltuh-gradient-anim 12s linear infinite; } @keyframes overlay-breathe { from {opacity: 0.04;} to {opacity: 0.12;} } #overlay { width: 100%; height: 100vh; position: fixed; opacity: 0.10; z-index: 1; background-image: url('https://ilia.moe/img/noise.gif'); background-size: 25%; animation: overlay-breathe 4s ease infinite alternate; } main { * { z-index: 2; } } footer { z-index: 2; }