@import url('https://fonts.cdnfonts.com/css/jetbrains-mono-2'); @import "tailwind"; :root { --line-height: 1.2rem; --border-thickness: 2px; --text-color: black; font-optical-sizing: auto; font-variant-numeric: tabular-nums lining-nums; } .dark { :root { --text-color: white; } } * { box-sizing: border-box; text-decoration-thickness: var(--border-thickness); } *::selection { @apply bg-black text-white dark:bg-white dark:text-black; } .button { border: var(--border-thickness) solid; padding: calc(var(--line-height) / 2 - var(--border-thickness)) calc(1ch - var(--border-thickness)); margin: 0; height: calc(var(--line-height) * 2); width: auto; overflow: visible; line-height: normal; -webkit-font-smoothing: inherit; -moz-osx-font-smoothing: inherit; -webkit-appearance: none; @apply select-none bg-white dark:bg-black px-1h shadow-box active:shadow-none active:translate-x-[3px] active:translate-y-[3px]; } .button:focus:not(:active) { --border-thickness: 3px; outline: none; } hr { @apply h-2v block relative text-black dark:text-white border-none my-1v; } hr:after { @apply block absolute left-0 h-0 w-full border-black dark:border-white; content: ""; top: calc(var(--line-height) - var(--border-thickness)); border-top: calc(var(--border-thickness) * 3) double; } .jump-text:hover>.jump-text { animation: jump 0.25s ease-in-out; animation-delay: var(--animation-delay); } @keyframes jump { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-7px); } } details { border: var(--border-thickness) solid var(--text-color); padding: calc(var(--line-height) - var(--border-thickness)) 1ch; margin-bottom: var(--line-height); margin-top: var(--line-height); } summary { font-weight: var(--font-weight-medium); cursor: pointer; } details[open] summary { margin-bottom: var(--line-height); } details ::marker { display: inline-block; content: '▶'; margin: 0; } details[open] ::marker { content: '▼'; } details :last-child { margin-bottom: 0; } /* DITHER ANIMATION */ .dither { background-repeat: repeat; position: fixed; inset: 0; z-index: 50; image-rendering: optimizeSpeed; /* STOP SMOOTHING, GIVE ME SPEED */ image-rendering: -moz-crisp-edges; /* Firefox */ image-rendering: -o-crisp-edges; /* Opera */ image-rendering: -webkit-optimize-contrast; /* Chrome (and eventually Safari) */ image-rendering: pixelated; /* Universal support since 2021 */ image-rendering: optimize-contrast; /* CSS3 Proposed */ -ms-interpolation-mode: nearest-neighbor; pointer-events: none; } .dark { .dither { filter: invert(1) } .wave-image { filter: invert(1) } } .dither-1 { background-image: url(/images/dither_light_3.png); } .dither-2 { background-image: url(/images/dither_light_3.png); background-position: 50px 50px; } .dither-3 { background-image: url(/images/dither_light_3.png); background-position: 100px 100px; } .tree, .tree ul { position: relative; padding-left: 0; list-style-type: none; line-height: var(--line-height); } .tree ul { margin: 0; } .tree ul li { position: relative; padding-left: 1.5ch; margin-left: 1.5ch; border-left: var(--border-thickness) solid var(--text-color); } .tree ul li:before { position: absolute; display: block; top: calc(var(--line-height) / 2); left: 0; content: ""; width: 1ch; border-bottom: var(--border-thickness) solid var(--text-color); } .tree ul li:last-child { border-left: none; } .tree ul li:last-child:after { position: absolute; display: block; top: 0; left: 0; content: ""; height: calc(var(--line-height) / 2); border-left: var(--border-thickness) solid var(--text-color); } /* DEBUG UTILITIES */ .debug .debug-grid { --line-height: 1.2rem; --text-color: #000000; --background-color: #FFFFFF; --color: color-mix(in srgb, var(--text-color) 10%, var(--background-color) 90%); position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: -1; background-image: repeating-linear-gradient(var(--color) 0 1px, transparent 1px 100%), repeating-linear-gradient(90deg, var(--color) 0 1px, transparent 1px 100%); background-size: 1ch var(--line-height); margin: 0; } code:not(pre code) { @apply bg-black text-white dark:bg-white dark:text-black px-1h; @apply selection:dark:bg-black selection:dark:text-white selection:bg-white selection:text-black; } .debug .off-grid { background: rgba(255, 0, 0, 0.1); } .debug-toggle-label { text-align: right; } .debug img { /* border: 1px solid black; */ } .formkit-form { font-family: "JetBrains Mono", monospace; } .formkit-form [data-style="clean"] { @apply !pt-2v !px-0 !pb-1v; } .formkit-fields { @apply !m-0; } .formkit-field { @apply !m-0 !mr-2h; } .formkit-input { border: var(--border-thickness) solid !important; padding: calc(var(--line-height) / 2 - var(--border-thickness)) calc(1ch - var(--border-thickness)) !important; margin: 0 !important; height: calc(var(--line-height) * 2) !important; width: 100% !important; overflow: visible !important; line-height: normal !important; -webkit-font-smoothing: inherit !important; -moz-osx-font-smoothing: inherit !important; -webkit-appearance: none !important; @apply !font-medium; } .formkit-input:focus:not(:active) { --border-thickness: 3px; outline: none; } .formkit-submit { border: var(--border-thickness) solid !important; padding: calc(var(--line-height) / 2 - var(--border-thickness)) calc(1ch - var(--border-thickness)) !important; margin: 0 !important; height: calc(var(--line-height) * 2) !important; width: auto !important; overflow: visible !important; line-height: normal !important; -webkit-font-smoothing: inherit !important; -moz-osx-font-smoothing: inherit !important; -webkit-appearance: none !important; @apply !select-none !bg-white !text-black !px-1h !shadow-box !py-0; } .formkit-submit:active { @apply !shadow-none !translate-x-[3px] !translate-y-[3px] } .formkit-alert-success { border-width: 0 !important; @apply !bg-transparent !text-black !m-0 !p-0 !font-bold; } .dark { .formkit-input { @apply !border-white !bg-black !text-white; } .formkit-submit { @apply !bg-black !text-white; } .formkit-alert-success { @apply !text-white; } } .formkit-submit span { padding: 0 !important; } .formkit-submit:hover span { background-color: transparent !important; } .formkit-submit:focus:not(:active) { --border-thickness: 3px !important; outline: none !important; } .pixelated { image-rendering: pixelated; } /*