Leon4gr45's picture
Deploy to clean space
75fefa7 verified
/* Custom Utility Classes */
/* Gradient utilities */
.gradient-fire {
background: linear-gradient(135deg, var(--heat-100) 0%, var(--accent-crimson) 100%);
}
.gradient-heat {
background: linear-gradient(135deg, var(--heat-20) 0%, var(--heat-100) 100%);
}
.gradient-sunset {
background: linear-gradient(135deg, var(--heat-100) 0%, var(--accent-amethyst) 100%);
}
.gradient-ocean {
background: linear-gradient(135deg, var(--accent-bluetron) 0%, var(--accent-amethyst) 100%);
}
/* Text gradient */
.text-gradient {
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-color: var(--heat-100); /* Fallback */
}
/* Mask utilities */
.mask-fade-bottom {
mask-image: linear-gradient(to bottom, black 60%, transparent 100%);
-webkit-mask-image: linear-gradient(to bottom, black 60%, transparent 100%);
}
.mask-fade-edges {
mask-image: radial-gradient(ellipse at center, black 50%, transparent 100%);
-webkit-mask-image: radial-gradient(ellipse at center, black 50%, transparent 100%);
}
.mask-intersect {
-webkit-mask-composite: source-in; /* For Chrome */
mask-composite: intersect; /* For Firefox */
}
/* Blur utilities */
.blur-backdrop {
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
}
/* Border utilities */
.border-gradient {
position: relative;
background: var(--white);
border: 1px solid transparent;
}
.border-gradient::before {
content: '';
position: absolute;
inset: 0;
border-radius: inherit;
padding: 1px;
background: linear-gradient(135deg, var(--heat-100), var(--accent-crimson));
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
mask-composite: xor;
-webkit-mask-composite: xor;
pointer-events: none;
}
/* Dotted underline - updated from marketing */
.dotted-underline {
position: relative;
display: inline-block;
line-height: 1.1;
}
.dotted-underline::before {
content: "";
position: absolute;
bottom: -2px;
left: 0;
width: 100%;
height: 1.7px;
background-image: url("data:image/svg+xml,%3Csvg width='4' height='2' viewBox='0 0 4 2' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='1.7' height='1.7' rx='0.85' fill='%23D1D1D1' style='fill:%23D1D1D1;fill:color(display-p3 0.8196 0.8196 0.8196);fill-opacity:1;'/%3E%3C/svg%3E%0A");
background-size: 3.4px 1.7px;
background-repeat: repeat-x;
}
/* Container utilities */
.container-prose {
max-width: 65ch;
margin-inline: auto;
}
.container-narrow {
max-width: 48rem; /* 768px */
margin-inline: auto;
}
.container-wide {
max-width: 80rem; /* 1280px */
margin-inline: auto;
}
/* Centering helpers */
.center-absolute {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.center-flex {
display: flex;
align-items: center;
justify-content: center;
}
/* Spacing utilities */
.stack-sm > * + * {
margin-top: 0.5rem;
}
.stack-md > * + * {
margin-top: 1rem;
}
.stack-lg > * + * {
margin-top: 2rem;
}
.stack-xl > * + * {
margin-top: 3rem;
}
/* Aspect ratio utilities */
.aspect-video {
aspect-ratio: 16 / 9;
}
.aspect-square {
aspect-ratio: 1 / 1;
}
.aspect-portrait {
aspect-ratio: 3 / 4;
}
/* Selection color */
::selection {
background-color: var(--heat-20);
color: var(--accent-black);
}
/* Focus visible utilities */
.focus-ring {
outline: 2px solid transparent;
outline-offset: 2px;
}
.focus-ring:focus-visible {
outline-color: var(--heat-100);
}
/* Scrollbar styling */
.scrollbar-thin {
scrollbar-width: thin;
scrollbar-color: var(--border-muted) var(--background-lighter);
}
.scrollbar-thin::-webkit-scrollbar {
width: 8px;
height: 8px;
}
.scrollbar-thin::-webkit-scrollbar-track {
background: var(--background-lighter);
}
.scrollbar-thin::-webkit-scrollbar-thumb {
background-color: var(--border-muted);
border-radius: 4px;
}
.scrollbar-thin::-webkit-scrollbar-thumb:hover {
background-color: var(--border-loud);
}
/* Animation delay utilities */
.animation-delay-150 {
animation-delay: 150ms;
}
.animation-delay-300 {
animation-delay: 300ms;
}
.animation-delay-450 {
animation-delay: 450ms;
}
.animation-delay-600 {
animation-delay: 600ms;
}
/* Loading animation helpers */
.animate-shimmer {
background-size: 400% 100%;
animation: shimmer 2s ease-in-out infinite;
}
@keyframes shimmer {
0% {
background-position: -200% 0;
}
100% {
background-position: 200% 0;
}
}
/* Heat glow effect */
.heat-glow {
box-shadow: 0 0 40px rgba(250, 93, 25, 0.3);
animation: heat-glow 3s ease-in-out infinite;
}
@keyframes heat-glow {
0%, 100% {
box-shadow: 0 0 20px rgba(250, 93, 25, 0.2);
}
50% {
box-shadow: 0 0 40px rgba(250, 93, 25, 0.4);
}
}