style: format

This commit is contained in:
dusk 2025-04-02 06:37:49 +03:00
parent 22507a6ec3
commit e76819be04
Signed by: dusk
SSH Key Fingerprint: SHA256:Abmvag+juovVufZTxyWY8KcVgrznxvBjQpJesv071Aw
2 changed files with 396 additions and 377 deletions

@ -5,375 +5,398 @@
@tailwind utilities; @tailwind utilities;
@layer base { @layer base {
:root { :root {
@apply font-sans-serif bg-ralsei-black text-ralsei-white; @apply font-sans-serif bg-ralsei-black text-ralsei-white;
@apply prose-code:font-monospace prose-headings:font-monospace; @apply prose-code:font-monospace prose-headings:font-monospace;
cursor: url('/icons/gaze_closed.webp'), default; cursor: url('/icons/gaze_closed.webp'), default;
scrollbar-color: theme(colors.ralsei.green.dark) transparent; scrollbar-color: theme(colors.ralsei.green.dark) transparent;
-webkit-font-smoothing: none !important; -webkit-font-smoothing: none !important;
font-smooth: never !important; font-smooth: never !important;
font-smoothing: none !important; font-smoothing: none !important;
} }
@font-face { @font-face {
font-family: 'Fusion Pixel 10px Monospaced zh_hans'; font-family: 'Fusion Pixel 10px Monospaced zh_hans';
src: url('/fonts/fusion-pixel-sc-monospaced.woff2') format('woff2'); src: url('/fonts/fusion-pixel-sc-monospaced.woff2') format('woff2');
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
font-display: swap; font-display: swap;
} }
@font-face { @font-face {
font-family: 'Fusion Pixel 10px Proportional zh_hans'; font-family: 'Fusion Pixel 10px Proportional zh_hans';
src: url('/fonts/fusion-pixel-sc-proportional.woff2') format('woff2'); src: url('/fonts/fusion-pixel-sc-proportional.woff2') format('woff2');
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
font-display: swap; font-display: swap;
} }
@font-face { @font-face {
font-family: 'Doll Mono'; font-family: 'Doll Mono';
src: url('/fonts/dollmonoopt.woff2') format('woff2'); src: url('/fonts/dollmonoopt.woff2') format('woff2');
} }
.prose h1::before { .prose h1::before {
content: '[ '; content: '[ ';
} }
.prose h1::after { .prose h1::after {
content: ' ]'; content: ' ]';
} }
.prose h2::before { .prose h2::before {
content: '[= '; content: '[= ';
} }
.prose h2::after { .prose h2::after {
content: ' =]'; content: ' =]';
} }
.prose h3::before {
content: '[== ';
}
.prose h3::after {
content: ' ==]';
}
.prose h4::before {
content: '[=== ';
}
.prose h4::after {
content: ' ===]';
}
/* .prose h1::after,.prose h2::after,.prose h3::after,.prose h4::after { .prose h3::before {
content: '[== ';
}
.prose h3::after {
content: ' ==]';
}
.prose h4::before {
content: '[=== ';
}
.prose h4::after {
content: ' ===]';
}
/* .prose h1::after,.prose h2::after,.prose h3::after,.prose h4::after {
@apply motion-safe:animate-blink; @apply motion-safe:animate-blink;
content: '_'; content: '_';
} */ } */
.prose a { .prose a {
text-decoration: none; text-decoration: none;
} }
.prose a:hover { .prose a:hover {
@apply motion-safe:animate-squiggle; @apply motion-safe:animate-squiggle;
text-decoration: underline; text-decoration: underline;
} }
h1,h2,h3,h4,h5,h6,.text-shadow-pink { h1,
text-shadow: 0 0 3px theme(colors.ralsei.black), 0 0 6px theme(colors.ralsei.pink.neon), 0 0 10px #fff3; h2,
} h3,
h4,
h5,
h6,
.text-shadow-pink {
text-shadow:
0 0 3px theme(colors.ralsei.black),
0 0 6px theme(colors.ralsei.pink.neon),
0 0 10px #fff3;
}
.text-shadow-red { .text-shadow-red {
text-shadow: 0 0 1px theme(colors.ralsei.black), 0 0 5px theme(colors.red.600); text-shadow:
} 0 0 1px theme(colors.ralsei.black),
0 0 5px theme(colors.red.600);
}
.text-shadow-none { .text-shadow-none {
text-shadow: none; text-shadow: none;
} }
.prose ul, ul { .prose ul,
list-style-type: '>>'; ul {
} list-style-type: '>>';
}
.text-shadow-green { .text-shadow-green {
text-shadow: 0 0 2px theme(colors.ralsei.black), 0 0 5px theme(colors.ralsei.green.light); text-shadow:
} 0 0 2px theme(colors.ralsei.black),
0 0 5px theme(colors.ralsei.green.light);
}
a,button,input[type=submit] { a,
@apply text-shadow-green; button,
cursor: url('/icons/gaze.webp'), pointer; input[type='submit'] {
} @apply text-shadow-green;
cursor: url('/icons/gaze.webp'), pointer;
}
.animate-squiggle { .animate-squiggle {
animation: squigglevision 0.3s infinite; animation: squigglevision 0.3s infinite;
} }
@keyframes squigglevision { @keyframes squigglevision {
0% { 0% {
filter: url("#squiggly-0"); filter: url('#squiggly-0');
} }
25% { 25% {
filter: url("#squiggly-1"); filter: url('#squiggly-1');
} }
50% { 50% {
filter: url("#squiggly-2"); filter: url('#squiggly-2');
} }
75% { 75% {
filter: url("#squiggly-3"); filter: url('#squiggly-3');
} }
100% { 100% {
filter: url("#squiggly-4"); filter: url('#squiggly-4');
} }
} }
@keyframes blink { @keyframes blink {
0% { 0% {
opacity: 1.0; opacity: 1;
} }
50% { 50% {
opacity: 0.0; opacity: 0;
} }
100% { 100% {
opacity: 1.0; opacity: 1;
} }
} }
} }
@layer utilities { @layer utilities {
.text-error { .text-error {
@apply text-xl text-red-600 text-shadow-red; @apply text-xl text-red-600 text-shadow-red;
} }
.border-groove { .border-groove {
border-style: groove; border-style: groove;
} }
.border-ridge { .border-ridge {
border-style: ridge; border-style: ridge;
} }
.app-grid-background-anim { .app-grid-background-anim {
animation: 4s linear app-grid-move-first-layer infinite; animation: 4s linear app-grid-move-first-layer infinite;
} }
.app-grid-background-second-layer-anim {
animation: 12s linear app-grid-move-second-layer infinite;
}
@keyframes app-grid-move-first-layer { .app-grid-background-second-layer-anim {
0% { animation: 12s linear app-grid-move-second-layer infinite;
background-position: 0px 0px; }
}
100% {
background-position: 126px 84px;
}
}
@keyframes app-grid-move-second-layer {
0% {
background-position: 96px 120px;
}
100% {
background-position: 0px 0px;
}
}
@media (prefers-reduced-motion: no-preference) { @keyframes app-grid-move-first-layer {
@keyframes bounce-reverse { 0% {
0%, 100% { background-position: 0px 0px;
transform: none; }
animation-timing-function: cubic-bezier(0,0,0.2,1); 100% {
} background-position: 126px 84px;
50% { }
transform: translateY(-25%); }
animation-timing-function: cubic-bezier(0.8,0,1,1);
} @keyframes app-grid-move-second-layer {
} 0% {
} background-position: 96px 120px;
@media (prefers-reduced-motion: no-preference) { }
.animate-bounce-reverse:hover { 100% {
animation: bounce-reverse 1s infinite; background-position: 0px 0px;
} }
} }
@media (prefers-reduced-motion: no-preference) {
@keyframes bounce-reverse {
0%,
100% {
transform: none;
animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
50% {
transform: translateY(-25%);
animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
}
}
}
@media (prefers-reduced-motion: no-preference) {
.animate-bounce-reverse:hover {
animation: bounce-reverse 1s infinite;
}
}
} }
a.app-selected-route { a.app-selected-route {
text-shadow: 0 0 2px theme(colors.ralsei.black), 0 0 5px theme(colors.ralsei.pink.regular); text-shadow:
0 0 2px theme(colors.ralsei.black),
0 0 5px theme(colors.ralsei.pink.regular);
} }
.app-grid-background { .app-grid-background {
background-image: background-image:
linear-gradient(theme(colors.ralsei.green.light / 0.4), transparent 2px), linear-gradient(theme(colors.ralsei.green.light / 0.4), transparent 2px),
linear-gradient(to right, theme(colors.ralsei.green.light / 0.4), transparent 2px); linear-gradient(to right, theme(colors.ralsei.green.light / 0.4), transparent 2px);
background-size: 100% 42px, 42px 100%; background-size:
100% 42px,
42px 100%;
} }
.app-grid-background-second-layer { .app-grid-background-second-layer {
background-image: background-image:
linear-gradient(theme(colors.ralsei.pink.neon / 0.4), transparent 1px), linear-gradient(theme(colors.ralsei.pink.neon / 0.4), transparent 1px),
linear-gradient(to right, theme(colors.ralsei.pink.neon / 0.4), transparent 1px); linear-gradient(to right, theme(colors.ralsei.pink.neon / 0.4), transparent 1px);
background-size: 100% 24px, 24px 100%; background-size:
100% 24px,
24px 100%;
} }
@media (prefers-reduced-motion: no-preference) { @media (prefers-reduced-motion: no-preference) {
.animate-window-open { .animate-window-open {
animation: 0.5s ease-out window-open-scale forwards; animation: 0.5s ease-out window-open-scale forwards;
} }
.animate-window-open-vertical {
animation: 0.5s ease-out window-open-scale-vertical forwards;
transform-origin: bottom;
}
.animate-window-open-horizontal {
animation: 0.5s ease-out window-open-scale-horizontal forwards;
transform-origin: left;
}
.animate-window-open-move-up { .animate-window-open-vertical {
animation: 0.5s ease-out window-open-move-up forwards; animation: 0.5s ease-out window-open-scale-vertical forwards;
} transform-origin: bottom;
}
.animate-window-open-move-down { .animate-window-open-horizontal {
animation: 0.5s ease-out window-open-move-down forwards; animation: 0.5s ease-out window-open-scale-horizontal forwards;
} transform-origin: left;
}
.animate-window-open-move-left { .animate-window-open-move-up {
animation: 0.5s ease-out window-open-move-left forwards; animation: 0.5s ease-out window-open-move-up forwards;
} }
.animate-window-open-move-right { .animate-window-open-move-down {
animation: 0.5s ease-out window-open-move-right forwards; animation: 0.5s ease-out window-open-move-down forwards;
} }
.animate-overflow-keep-hidden { .animate-window-open-move-left {
animation: 0.6s linear overflow-keep-hidden forwards; animation: 0.5s ease-out window-open-move-left forwards;
} }
@keyframes window-open-scale {
0% {
scale: 0.0;
opacity: 0.0;
}
20% {
scale: 0.0;
}
60% {
opacity: 0.5;
}
100% {
scale: 1.0;
opacity: 1.0;
}
}
@keyframes window-open-scale-vertical {
0% {
scale: 1.0 0.0;
opacity: 0.0;
}
20% {
scale: 1.0 0.0;
}
60% {
opacity: 0.5;
}
100% {
scale: 1.0 1.0;
opacity: 1.0;
}
}
@keyframes window-open-scale-horizontal {
0% {
scale: 0.0 1.0;
opacity: 0.0;
}
20% {
scale: 0.0 1.0;
}
60% {
opacity: 0.5;
}
100% {
scale: 1.0 1.0;
opacity: 1.0;
}
}
@keyframes window-open-move-down { .animate-window-open-move-right {
0% { animation: 0.5s ease-out window-open-move-right forwards;
translate: 0 10rem; }
opacity: 0.0;
}
20% {
translate: 0 10rem;
}
60% {
opacity: 0.5;
}
100% {
translate: normal;
opacity: 1.0;
}
}
@keyframes window-open-move-up { .animate-overflow-keep-hidden {
0% { animation: 0.6s linear overflow-keep-hidden forwards;
translate: 0 -10rem; }
opacity: 0.0;
}
20% {
translate: 0 -10rem;
}
60% {
opacity: 0.5;
}
100% {
translate: normal;
opacity: 1.0;
}
}
@keyframes window-open-move-left { @keyframes window-open-scale {
0% { 0% {
translate: 10rem 0; scale: 0;
opacity: 0.0; opacity: 0;
} }
20% { 20% {
translate: 10rem 0; scale: 0;
} }
60% { 60% {
opacity: 0.5; opacity: 0.5;
} }
100% { 100% {
translate: normal; scale: 1;
opacity: 1.0; opacity: 1;
} }
} }
@keyframes window-open-move-right { @keyframes window-open-scale-vertical {
0% { 0% {
translate: -10rem 0; scale: 1 0;
opacity: 0.0; opacity: 0;
} }
20% { 20% {
translate: -10rem 0; scale: 1 0;
} }
60% { 60% {
opacity: 0.5; opacity: 0.5;
} }
100% { 100% {
translate: normal; scale: 1 1;
opacity: 1.0; opacity: 1;
} }
} }
@keyframes overflow-keep-hidden { @keyframes window-open-scale-horizontal {
0% { 0% {
overflow: hidden; scale: 0 1;
} opacity: 0;
100% { }
overflow: auto; 20% {
} scale: 0 1;
} }
60% {
opacity: 0.5;
}
100% {
scale: 1 1;
opacity: 1;
}
}
@keyframes window-open-move-down {
0% {
translate: 0 10rem;
opacity: 0;
}
20% {
translate: 0 10rem;
}
60% {
opacity: 0.5;
}
100% {
translate: normal;
opacity: 1;
}
}
@keyframes window-open-move-up {
0% {
translate: 0 -10rem;
opacity: 0;
}
20% {
translate: 0 -10rem;
}
60% {
opacity: 0.5;
}
100% {
translate: normal;
opacity: 1;
}
}
@keyframes window-open-move-left {
0% {
translate: 10rem 0;
opacity: 0;
}
20% {
translate: 10rem 0;
}
60% {
opacity: 0.5;
}
100% {
translate: normal;
opacity: 1;
}
}
@keyframes window-open-move-right {
0% {
translate: -10rem 0;
opacity: 0;
}
20% {
translate: -10rem 0;
}
60% {
opacity: 0.5;
}
100% {
translate: normal;
opacity: 1;
}
}
@keyframes overflow-keep-hidden {
0% {
overflow: hidden;
}
100% {
overflow: auto;
}
}
} }

@ -1,61 +1,57 @@
const colors = require('tailwindcss/colors') const colors = require('tailwindcss/colors');
const plugin = require('tailwindcss/plugin') const plugin = require('tailwindcss/plugin');
/** @type {import('tailwindcss').Config} */ /** @type {import('tailwindcss').Config} */
export default { export default {
content: ['./src/**/*.{html,js,svelte,ts,md}'], content: ['./src/**/*.{html,js,svelte,ts,md}'],
theme: { theme: {
extend: { extend: {
typography: ({ theme }) => ({ typography: ({ theme }) => ({
ralsei: { ralsei: {
css: { css: {
'--tw-prose-body': theme('colors.ralsei.white'), '--tw-prose-body': theme('colors.ralsei.white'),
'--tw-prose-headings': theme('colors.ralsei.pink.neon'), '--tw-prose-headings': theme('colors.ralsei.pink.neon'),
'--tw-prose-lead': theme('colors.ralsei.white'), '--tw-prose-lead': theme('colors.ralsei.white'),
'--tw-prose-links': theme('colors.ralsei.green.light'), '--tw-prose-links': theme('colors.ralsei.green.light'),
'--tw-prose-bold': theme('colors.ralsei.white'), '--tw-prose-bold': theme('colors.ralsei.white'),
'--tw-prose-counters': theme('colors.ralsei.pink.regular'), '--tw-prose-counters': theme('colors.ralsei.pink.regular'),
'--tw-prose-bullets': theme('colors.ralsei.pink.regular'), '--tw-prose-bullets': theme('colors.ralsei.pink.regular'),
'--tw-prose-hr': theme('colors.ralsei.white'), '--tw-prose-hr': theme('colors.ralsei.white'),
'--tw-prose-quotes': theme('colors.ralsei.white'), '--tw-prose-quotes': theme('colors.ralsei.white'),
'--tw-prose-quote-borders': theme('colors.ralsei.white'), '--tw-prose-quote-borders': theme('colors.ralsei.white'),
'--tw-prose-captions': theme('colors.ralsei.white'), '--tw-prose-captions': theme('colors.ralsei.white'),
'--tw-prose-code': theme('colors.ralsei.pink.regular'), '--tw-prose-code': theme('colors.ralsei.pink.regular'),
'--tw-prose-pre-code': theme('colors.ralsei.white'), '--tw-prose-pre-code': theme('colors.ralsei.white'),
'--tw-prose-pre-bg': theme('colors.ralsei.green.dark'), '--tw-prose-pre-bg': theme('colors.ralsei.green.dark'),
'--tw-prose-th-borders': theme('colors.ralsei.white'), '--tw-prose-th-borders': theme('colors.ralsei.white'),
'--tw-prose-td-borders': theme('colors.ralsei.white'), '--tw-prose-td-borders': theme('colors.ralsei.white')
}, }
}, }
}), }),
animation: { animation: {
'bounce-slow': 'bounce 3s infinite', 'bounce-slow': 'bounce 3s infinite',
'pulse-fast': 'pulse 1s cubic-bezier(0.4, 0, 0.6, 1) infinite', 'pulse-fast': 'pulse 1s cubic-bezier(0.4, 0, 0.6, 1) infinite',
'blink': 'blink 1s step-start infinite', blink: 'blink 1s step-start infinite'
}, },
colors: { colors: {
ralsei: { ralsei: {
pink: { pink: {
regular: '#fe96e0', regular: '#fe96e0',
neon: '#ff3eb7', neon: '#ff3eb7'
}, },
white: '#fff9fe', white: '#fff9fe',
black: '#000801', black: '#000801',
green: { green: {
light: '#4dcc8e', light: '#4dcc8e',
dark: '#162d26', dark: '#162d26'
} }
} }
} }
}, },
fontFamily: { fontFamily: {
'sans-serif': ['"Fusion Pixel 10px Proportional zh_hans", sans-serif'], 'sans-serif': ['"Fusion Pixel 10px Proportional zh_hans", sans-serif'],
monospace: ['"Fusion Pixel 10px Monospaced zh_hans", monospace'], monospace: ['"Fusion Pixel 10px Monospaced zh_hans", monospace']
} }
}, },
plugins: [ plugins: [require('@tailwindcss/typography'), require('@tailwindcss/forms')]
require('@tailwindcss/typography'), };
require('@tailwindcss/forms'),
],
}