@import url("/assets/css/fonts.css"); :root { --fg-low: oklch(70% 0.01368 253.09); --fg: oklch(80% 0.01368 253.09); --fg-high: oklch(90% 0.01368 253.09); --bg-lowest: oklch(15% 0.01368 253.09); --bg-low: oklch(17.5% 0.01368 253.09); --bg: oklch(20% 0.01368 253.09); --bg-high: oklch(22.5% 0.01368 253.09); --bg-highest: oklch(25% 0.01368 253.09); --border: oklch(35% 0.023 253.09); --border-variant: oklch(30% 0.023 253.09); --red: oklch(80% 0.15765 24.728); --red-bright: oklch(90% 0.15765 24.728); --orange: oklch(80% 0.139 45.216); --orange-bright: oklch(90% 0.139 45.216); --yellow: oklch(80% 0.12758 76.402); --yellow-bright: oklch(90% 0.12758 76.402); --green: oklch(80% 0.11211 147.63); --green-bright: oklch(90% 0.11211 147.63); --cyan: oklch(80% 0.09919 181.49); --cyan-bright: oklch(90% 0.09919 181.49); --blue: oklch(80% 0.09994 249.58); --blue-bright: oklch(90% 0.09994 249.58); --purple: oklch(80% 0.09923 296.61); --purple-bright: oklch(90% 0.09923 296.61); --pink: oklch(80% 0.06662 9.2146); --pink-bright: oklch(90% 0.06662 9.2146); --border-radius: 5px; --border-width: 1px; --padding: 5px; --padding-big: 10px; --easing: cubic-bezier(0.2, 0.0, 0, 1.0); --arrow-size: 1em; } body { font-family: "Aporetic", "Open Sans", sans-serif; background-color: var(--bg); background-repeat: repeat; color: var(--fg); display: flex; gap: var(--padding-big); min-height: 100vh; padding: var(--padding-big); box-sizing: border-box; position: relative; } #deco { overflow: hidden; position: fixed; width: 100%; height: 100%; left: 0; top: 0; z-index: -1; } #triangles { content: ""; width: 200%; height: 200%; background-image: url("/assets/triangle.svg"); position: absolute; transform: translate(-50%, -50%) rotate(22.5deg); left: 50%; top: 50%; z-index: -2; animation: scroll 16s linear infinite; } @keyframes scroll { to { background-position: -96px 0; /* svg size */ } } #rainbow { --bar-size: 0.3em; position: absolute; z-index: -1; bottom: 0; right: 0; aspect-ratio: 1 / 1; height: calc(var(--bar-size) * 14); /* magic number */ background-image: linear-gradient( -45deg, transparent, transparent var(--bar-size), var(--blue) var(--bar-size), var(--blue) calc(var(--bar-size) * 2), transparent calc(var(--bar-size) * 2), transparent calc(var(--bar-size) * 3), var(--green) calc(var(--bar-size) * 3), var(--green) calc(var(--bar-size) * 4), transparent calc(var(--bar-size) * 4), transparent calc(var(--bar-size) * 5), var(--yellow) calc(var(--bar-size) * 5), var(--yellow) calc(var(--bar-size) * 6), transparent calc(var(--bar-size) * 6), transparent calc(var(--bar-size) * 7), var(--orange) calc(var(--bar-size) * 7), var(--orange) calc(var(--bar-size) * 8), transparent calc(var(--bar-size) * 8), transparent calc(var(--bar-size) * 9), var(--red) calc(var(--bar-size) * 9), var(--red) calc(var(--bar-size) * 10), transparent calc(var(--bar-size) * 10) ); } /* * failsafe for when the viewport is too small and the rainbow overlaps the text */ main > div, footer, nav > ul { background-color: var(--bg); box-shadow: var(--bg) 0 0 32px 8px; border-radius: var(--border-radius); } #upper { display: flex; flex-direction: column; flex-grow: 1; } #upper > div { flex-grow: 1; display: flex; flex-direction: column; gap: var(--padding-big); align-items: center; } .subtle { color: var(--fg-low); } main { flex-grow: 1; width: 80vw; line-height: 1.4; box-sizing: border-box; } nav > ul { display: flex; } nav { z-index: 999; } main, nav { padding: var(--padding-big); } nav li:not(:last-of-type)::after, footer > div > span:not(:last-of-type)::after { content: "|"; margin-left: var(--padding); margin-right: var(--padding); color: var(--border); } footer > div { line-height: 1.5; } footer { text-align: center; padding: var(--padding); font-size: 0.8em; display: flex; flex-direction: column; gap: var(--padding); } a, a:link { color: var(--yellow); } a:not(.volatile):visited { color: var(--pink); } a:focus, a:hover { color: var(--yellow-bright); } a:active { color: var(--yellow); } .anchor { order: -1; text-decoration: none; } .anchor::after { content: "#"; } h1, h2 { line-height: 1; display: flex; align-items: center; gap: var(--padding-big); } h1::after, h2::after { content: ""; height: var(--border-width); background-color: var(--border); flex-grow: 1; } h1 { font-size: 1.5em; } h2 { font-size: 1.25em; } main li { margin-left: var(--padding-big); list-style-type: "- "; list-style-position: inside; } main li::marker { color: var(--border); } main ol, main ul { padding-top: var(--padding); gap: var(--padding); display: flex; flex-direction: column; } main ol, main ul, p, pre, h1, h2 { margin-bottom: var(--padding-big); } main > :last-child { margin-bottom: 0; } strong { font-weight: bold; } code { border-radius: var(--border-radius); padding-inline: calc(var(--padding) / 2); font-family: "Aporetic Mono", monospace; border: var(--border-width) solid var(--border); overflow-wrap: anywhere; } pre { overflow: hidden; } pre > code { display: block; padding: calc(var(--padding) * 2); position: relative; line-height: 1.3; overflow-wrap: break-word; background: transparent; overflow-x: scroll; } pre > code[data-lang]::after { content: attr(data-lang); position: absolute; top: 0; right: 0; padding: var(--padding); border-radius: 0 var(--border-radius); border-bottom: var(--border-width) solid var(--border); border-left: var(--border-width) solid var(--border); background-color: var(--bg-high); transition: transform 0.2s var(--easing); } pre > code[data-lang]:hover::after { transform: translateX(100%); } @media (max-width: 130ch) { aside { padding: var(--padding-big); font-size: 0.9em; box-sizing: border-box; border: var(--border-width) solid var(--border); border-radius: var(--border-radius); background-color: var(--bg-high); position: relative; margin-bottom: var(--padding-big); margin-top: calc(var(--padding-big) + var(--arrow-size) / 2); } aside::after, aside::before { content: ""; border-right: var(--arrow-size) solid transparent; border-left: var(--arrow-size) solid transparent; position: absolute; width: 0; height: 0; left: 50%; transform: translateX(-50%); } aside::before { border-bottom: var(--arrow-size) solid var(--border); top: calc(var(--arrow-size) * -1); } aside::after { border-bottom: var(--arrow-size) solid var(--bg-high); top: calc(var(--arrow-size) * -1 + var(--border-width)); } } @media (min-width: 130ch) { aside { position: absolute; right: var(--padding-big); max-width: calc(10vw - var(--padding-big)); padding: var(--padding-big); font-size: 0.9em; box-sizing: border-box; border: var(--border-width) solid var(--border); border-radius: var(--border-radius); background-color: var(--bg-high); transform: translateY(calc(-50% - 1lh)); } aside::after, aside::before { content: ""; border-top: var(--arrow-size) solid transparent; border-bottom: var(--arrow-size) solid transparent; position: absolute; width: 0; height: 0; top: 50%; transform: translateY(-50%); } aside::before { border-right: var(--arrow-size) solid var(--border); left: calc(var(--arrow-size) * -1); } aside::after { border-right: var(--arrow-size) solid var(--bg-high); left: calc(var(--arrow-size) * -1 + var(--border-width)); } }