235 lines
4.7 KiB
CSS
235 lines
4.7 KiB
CSS
/* 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);
|
|
}
|
|
} |