@layer base {
:root {
--mx-emerald-deep: #162E25;
--mx-emerald: #1F4A3A;
--mx-emerald-mid: #2D6B54;
--mx-emerald-bright: #3D8F6E;
--mx-emerald-text: #52B788;
--mx-emerald-subtle: rgba(31, 74, 58, 0.10);
--mx-emerald-glow: rgba(31, 74, 58, 0.20);
--mx-teal: #1A3A3F;
--mx-teal-border: rgba(26, 58, 63, 0.35);
--mx-gunmetal: #1C2428;
--mx-border: rgba(45, 107, 84, 0.25);
--mx-border-mid: rgba(61, 143, 110, 0.38);
--mx-border-bright: rgba(82, 183, 136, 0.55);
--mx-focus-shadow:
0 0 0 2px rgba(31, 74, 58, 0.55),
0 0 0 4px rgba(31, 74, 58, 0.22),
0 0 16px rgba(31, 74, 58, 0.28);
--mx-grid-size: 32px;
--mx-grid-color: rgba(45, 107, 84, 0.12);
--mx-scan-gap: 3px;
--mx-scan-stripe: rgba(0, 0, 0, 0.055);
--mx-mono: var(--font-geist-mono, 'IBM Plex Mono', 'JetBrains Mono', monospace);
}
}
.mx-grid {
background-image:
linear-gradient(var(--mx-grid-color) 1px, transparent 1px),
linear-gradient(90deg, var(--mx-grid-color) 1px, transparent 1px);
background-size: var(--mx-grid-size) var(--mx-grid-size);
background-position: center top;
}
.mx-scanlines {
isolation: isolate;
position: relative;
}
.mx-scanlines::before {
content: '';
position: absolute;
inset: 0;
pointer-events: none;
border-radius: inherit;
z-index: 2;
background: repeating-linear-gradient(
to bottom,
transparent 0px,
transparent calc(var(--mx-scan-gap) * 2 - 1px),
var(--mx-scan-stripe) calc(var(--mx-scan-gap) * 2 - 1px),
var(--mx-scan-stripe) calc(var(--mx-scan-gap) * 2)
);
}
.mx-border {
border: 1px solid var(--mx-border);
transition: border-color 0.18s ease;
}
.mx-border:hover {
border-color: var(--mx-border-mid);
}
.mx-glow {
box-shadow:
0 0 0 1px var(--mx-border),
0 0 20px var(--mx-emerald-glow),
0 0 40px rgba(31, 74, 58, 0.08);
transition: box-shadow 0.3s ease;
}
.mx-glow:hover {
box-shadow:
0 0 0 1px var(--mx-border-mid),
0 0 30px var(--mx-emerald-glow),
0 0 60px rgba(31, 74, 58, 0.12);
}
.mx-focus:focus-visible {
outline: none;
box-shadow: var(--mx-focus-shadow);
}
.mx-label {
display: inline-block;
font-family: var(--mx-mono);
font-size: 11px;
font-weight: 500;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--mx-emerald-text);
line-height: 1;
}
.mx-label::before {
content: '// ';
opacity: 0.5;
}
.mx-label.mx-label-gt::before {
content: '> ';
opacity: 0.5;
}
.mx-label.mx-label-sh::before {
content: '$ ';
opacity: 0.5;
}
@keyframes mx-cursor-blink {
0%, 49.9% { opacity: 1; }
50%, 100% { opacity: 0; }
}
.mx-cursor::after {
content: '▋';
display: inline-block;
margin-left: 2px;
color: var(--mx-emerald-text);
animation: mx-cursor-blink 530ms step-end infinite;
font-family: var(--mx-mono);
font-size: 0.85em;
line-height: 1;
vertical-align: baseline;
}
@keyframes mx-char-reveal {
from { clip-path: inset(0 100% 0 0); }
to { clip-path: inset(0 0% 0 0); }
}
.mx-reveal {
animation: mx-char-reveal 0.85s cubic-bezier(0.16, 1, 0.3, 1)
var(--mx-reveal-delay, 0s) both;
}
@media (prefers-reduced-motion: reduce) {
.mx-reveal {
animation: none;
clip-path: none;
opacity: 1;
}
.mx-cursor::after {
animation: none;
opacity: 1;
}
}
@keyframes mx-heading-glitch {
0%, 36%, 100% {
transform: none;
text-shadow: none;
filter: none;
opacity: 1;
}
37% {
transform: translate(-12px, 0) skewX(-7deg);
text-shadow:
12px 0 rgba(52, 183, 136, 1),
-10px 0 rgba(31, 74, 58, 0.95),
0 0 40px rgba(52, 183, 136, 0.35);
filter: blur(0.6px) brightness(1.2);
opacity: 0.78;
}
38% {
transform: translate(9px, -2px) skewX(5deg);
text-shadow:
-9px 0 rgba(52, 183, 136, 0.95),
7px 0 rgba(61, 143, 110, 0.85);
filter: none;
opacity: 1;
}
39% {
transform: translate(-4px, 1px) skewX(-2deg);
text-shadow:
4px 0 rgba(52, 183, 136, 0.55),
-3px 0 rgba(31, 74, 58, 0.45);
opacity: 0.93;
}
40% {
transform: none;
text-shadow: none;
filter: none;
opacity: 1;
}
42% {
transform: translate(14px, 0) skewX(8deg);
text-shadow:
-14px 0 rgba(52, 183, 136, 1),
11px 0 rgba(31, 74, 58, 0.9),
0 0 50px rgba(52, 183, 136, 0.3);
filter: blur(0.4px);
opacity: 0.72;
}
43% {
transform: translate(-7px, 2px) skewX(-4deg);
text-shadow:
7px 0 rgba(52, 183, 136, 0.80),
-6px 0 rgba(61, 143, 110, 0.70);
filter: none;
opacity: 0.96;
}
44% {
transform: translate(2px, 0);
text-shadow: 2px 0 rgba(52, 183, 136, 0.25);
opacity: 1;
}
45% {
transform: none;
text-shadow: none;
filter: none;
opacity: 1;
}
}
.mx-glitch {
animation: mx-heading-glitch 3.5s linear 1s infinite;
}
.mx-reveal.mx-glitch {
animation:
mx-char-reveal 0.85s cubic-bezier(0.16, 1, 0.3, 1) var(--mx-reveal-delay, 0s) both,
mx-heading-glitch 3.5s linear 1.5s infinite;
}
@media (prefers-reduced-motion: reduce) {
.mx-glitch,
.mx-reveal.mx-glitch {
animation: none;
}
}
@keyframes mx-fade-up {
from {
opacity: 0;
transform: translateY(6px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.mx-fade-up {
animation: mx-fade-up 0.5s ease-out var(--mx-fade-delay, 0s) both;
}
@media (prefers-reduced-motion: reduce) {
.mx-fade-up {
animation: none;
opacity: 1;
transform: none;
}
}
.mx-accent {
color: var(--mx-emerald-text);
font-family: var(--mx-mono);
}
.mx-badge {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 3px 9px;
border-radius: 9999px;
font-family: var(--mx-mono);
font-size: 10px;
font-weight: 500;
letter-spacing: 0.07em;
text-transform: uppercase;
color: var(--mx-emerald-text);
background: var(--mx-emerald-subtle);
border: 1px solid var(--mx-border);
}
.mx-badge::before {
content: '';
width: 5px;
height: 5px;
border-radius: 50%;
background: var(--mx-emerald-text);
flex-shrink: 0;
box-shadow: 0 0 6px var(--mx-emerald-glow);
}