FlowWeb / src /index.css
danylokhodus's picture
feat: add beautiful neo-brutalist stylized loading screen for canvas
f0bf30e
Raw
History Blame Contribute Delete
6.27 kB
@import "tailwindcss";
@theme {
--color-surface-tint: #5f5e5e;
--color-error-container: #ffdad6;
--color-surface-dim: #ddd9d8;
--color-error: #ba1a1a;
--color-on-secondary: #ffffff;
--color-tertiary-fixed-dim: #78dc77;
--color-secondary-fixed-dim: #d5ca00;
--color-on-primary-fixed: #1b1c1c;
--color-on-tertiary-fixed-variant: #005313;
--color-on-secondary-fixed-variant: #4d4800;
--color-on-error: #ffffff;
--color-on-background: #1c1b1b;
--color-on-secondary-fixed: #1e1c00;
--color-tertiary: #001e03;
--color-on-tertiary-fixed: #002204;
--color-primary: #181919;
--color-surface-container: #f1edec;
--color-primary-container: #2d2d2d;
--color-on-surface-variant: #444748;
--color-surface-variant: #e5e2e1;
--color-on-secondary-container: #6a6500;
--color-on-primary: #ffffff;
--color-primary-fixed: #e4e2e1;
--color-surface-bright: #fdf8f8;
--color-inverse-primary: #c8c6c6;
--color-secondary-fixed: #f3e700;
--color-on-surface: #1c1b1b;
--color-surface: #fdf8f8;
--color-on-tertiary-container: #45a84a;
--color-background: #fdf8f8;
--color-surface-container-lowest: #ffffff;
--color-tertiary-fixed: #94f990;
--color-secondary: #666000;
--color-on-primary-container: #959494;
--color-outline-variant: #c4c7c7;
--color-secondary-container: #f0e400;
--color-on-error-container: #93000a;
--color-primary-fixed-dim: #c8c6c6;
--color-tertiary-container: #003609;
--color-outline: #747878;
--color-on-tertiary: #ffffff;
--color-surface-container-low: #f7f3f2;
--color-inverse-surface: #313030;
--color-surface-container-high: #ebe7e7;
--color-on-primary-fixed-variant: #474747;
--color-surface-container-highest: #e5e2e1;
--color-inverse-on-surface: #f4f0ef;
--font-headline-md: "Caveat", cursive;
--font-label-sm: "Inter", sans-serif;
--font-accent-note: "Caveat", cursive;
--font-body-md: "Inter", sans-serif;
--font-body-lg: "Inter", sans-serif;
--font-display-lg: "Caveat", cursive;
--font-size-headline-md: 32px;
--font-size-label-sm: 13px;
--font-size-accent-note: 24px;
--font-size-body-md: 16px;
--font-size-body-lg: 18px;
--font-size-display-lg: 56px;
--spacing-base_grid: 8px;
--spacing-grid_pattern: 24px;
--spacing-gutter: 24px;
--spacing-margin_edge: 32px;
--animate-shake: shake 0.3s ease-in-out;
@keyframes shake {
0%, 100% { transform: translateX(0); }
20%, 60% { transform: translateX(-4px); }
40%, 80% { transform: translateX(4px); }
}
}
@utility graph-paper-bg {
background-color: #fdf8f8;
background-image:
linear-gradient(#e5e2e1 1px, transparent 1px),
linear-gradient(90deg, #e5e2e1 1px, transparent 1px);
background-size: 24px 24px;
background-position: center top;
}
@utility rough-border {
border: 2px solid var(--color-primary);
border-radius: 4px 12px 6px 14px;
}
@utility rough-shadow {
box-shadow: 6px 6px 0px 0px rgba(0,0,0,0.1);
}
@utility rough-shadow-hover {
transition: all 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
&:hover {
box-shadow: 10px 10px 0px 0px rgba(0,0,0,0.15);
transform: translate(-4px, -4px);
}
}
@utility diamond-shape {
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
}
@utility highlighter-bg {
position: relative;
display: inline-block;
z-index: 0;
&::after {
content: '';
position: absolute;
left: -4px;
right: -4px;
bottom: 4px;
height: 40%;
background-color: rgba(240, 228, 0, 0.6);
z-index: -1;
transform: rotate(-1deg);
animation: highlight-draw 1s ease-out forwards;
transform-origin: left;
}
}
@keyframes highlight-draw {
from { transform: scaleX(0) rotate(-1deg); }
to { transform: scaleX(1) rotate(-1deg); }
}
@utility sketched-line {
stroke-dasharray: 5 5;
}
body {
@apply bg-background text-on-background font-body-md graph-paper-bg min-h-screen overflow-x-hidden;
font-size: 16px;
}
h1, h2, h3 {
@apply font-display-lg;
}
/* React Flow Component Overrides */
.react-flow__controls {
@apply !rough-border !p-0 !bg-surface-container-lowest !shadow-md;
}
.react-flow__controls-button {
@apply !bg-surface-container-lowest !border-none !border-b-2 !border-primary/10 hover:!bg-surface-variant transition-colors;
}
.react-flow__controls-button svg {
fill: var(--color-primary);
}
.react-flow__controls-button:last-child {
@apply !border-b-0;
}
.react-flow__minimap {
@apply !rough-border !bg-surface-container-lowest !shadow-lg;
}
::selection {
background-color: var(--color-secondary-container);
color: var(--color-primary);
}
/* Dark Theme Overrides */
.dark {
--color-background: #141516;
--color-on-background: #e2e3e4;
--color-primary: #e2e3e4;
--color-on-primary: #141516;
--color-surface: #141516;
--color-on-surface: #e2e3e4;
--color-surface-container-lowest: #1a1b1d;
--color-surface-container-low: #1d1e20;
--color-surface-container: #222326;
--color-surface-container-high: #28292c;
--color-surface-container-highest: #2d2f32;
--color-surface-variant: #2d2f32;
--color-on-surface-variant: #b0b4b8;
--color-primary-container: #2b2c2f;
--color-on-primary-container: #9da1a5;
--color-outline: #8c9094;
--color-outline-variant: #44474a;
--color-secondary-container: #a29b00;
.rough-shadow {
box-shadow: 6px 6px 0px 0px rgba(255, 255, 255, 0.07);
}
.rough-shadow-hover:hover {
box-shadow: 10px 10px 0px 0px rgba(255, 255, 255, 0.1);
}
.rough-border {
border-color: #3e4042;
}
}
.dark .graph-paper-bg,
.dark.graph-paper-bg,
.dark body {
background-color: var(--color-background) !important;
background-image:
linear-gradient(rgba(255, 255, 255, 0.04) 1px, transparent 1px),
linear-gradient(90deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px) !important;
}
/* Custom Loading Screen Animations */
@keyframes loading-bar {
0% {
transform: translateX(-100%);
}
50% {
transform: translateX(0%);
}
100% {
transform: translateX(100%);
}
}
@keyframes spin-slow {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.animate-loading-bar {
animation: loading-bar 2s ease-in-out infinite;
}
.animate-spin-slow {
animation: spin-slow 12s linear infinite;
}