:root {
--lime: #ccff00;
--lime-dim: rgba(204,255,0,0.08);
--lime-glow: rgba(204,255,0,0.25);
--bg: #080808;
--bg2: #0f0f0f;
--bg3: #161616;
--white: #ffffff;
--muted: #7a7a7a;
--border: rgba(204,255,0,0.15);
--border-bright: rgba(204,255,0,0.45);
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: 'Syne', sans-serif;
background: var(--bg);
color: var(--white);
width: 100%;
overflow-x: hidden;
}
.contact-bg::before {
content: '';
position: fixed;
inset: 0;
background-image:
linear-gradient(rgba(204,255,0,0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(204,255,0,0.03) 1px, transparent 1px);
background-size: 48px 48px;
pointer-events: none;
z-index: 0;
}
.contact-container {
position: relative;
z-index: 1;
max-width: 1000px;
margin: 0 auto;
padding: 0;
}
.contact-header {
padding: 5rem 3rem 3rem;
border-bottom: 1px solid var(--border);
}
.contact-eyebrow {
font-family: 'IBM Plex Mono', monospace;
font-size: 11px;
letter-spacing: 0.18em;
color: var(--lime);
text-transform: uppercase;
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 1.5rem;
}
.contact-eyebrow::before {
content: '';
display: inline-block;
width: 28px;
height: 1px;
background: var(--lime);
}
.contact-header h1 {
font-size: clamp(2rem, 5vw, 3.5rem);
font-weight: 800;
line-height: 1.1;
letter-spacing: -0.02em;
color: var(--white);
margin-bottom: 1rem;
}
.contact-header h1 .accent {
color: var(--lime);
}
.contact-header p {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.9rem;
color: var(--muted);
line-height: 1.7;
max-width: 600px;
}
.contact-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 0;
border-bottom: 1px solid var(--border);
}
.contact-card {
padding: 3rem;
border-right: 1px solid var(--border);
border-bottom: 1px solid var(--border);
transition: background 0.3s;
}
.contact-card:nth-child(2n) {
border-right: none;
}
.contact-card:nth-last-child(-n+2) {
border-bottom: none;
}
.contact-card:hover {
background: var(--lime-dim);
}
.contact-card-icon {
width: 40px;
height: 40px;
margin-bottom: 1.25rem;
stroke: var(--lime);
color: var(--lime);
flex-shrink: 0;
}
.contact-card h3 {
font-size: 1.3rem;
font-weight: 800;
color: var(--white);
margin-bottom: 0.75rem;
}
.contact-card p {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.85rem;
color: var(--muted);
line-height: 1.8;
}
.contact-main {
padding: 4rem 3rem;
border-bottom: 1px solid var(--border);
}
.contact-main h2 {
font-size: clamp(1.6rem, 3.5vw, 2.4rem);
font-weight: 800;
line-height: 1.1;
letter-spacing: -0.01em;
color: var(--white);
margin-bottom: 1.5rem;
}
.contact-main h2 .accent {
color: var(--lime);
}
.contact-main-content {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
align-items: start;
}
.contact-main-text {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.85rem;
color: var(--muted);
line-height: 1.8;
}
.contact-main-text p {
margin-bottom: 1rem;
}
.contact-main-text strong {
color: #ccc;
font-weight: 500;
}
.contact-main-text ul {
margin-left: 1.5rem;
margin-bottom: 1rem;
}
.contact-main-text li {
margin-bottom: 0.5rem;
}
.contact-info-box {
border: 1px solid var(--border);
padding: 2rem;
background: var(--bg2);
}
.contact-info-box h3 {
font-size: 1rem;
font-weight: 700;
color: var(--white);
margin-bottom: 1.5rem;
}
.contact-info-item {
margin-bottom: 1.5rem;
}
.contact-info-item:last-child {
margin-bottom: 0;
}
.contact-info-label {
font-family: 'IBM Plex Mono', monospace;
font-size: 10px;
color: var(--lime);
letter-spacing: 0.15em;
text-transform: uppercase;
display: block;
margin-bottom: 0.5rem;
}
.contact-info-value {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.9rem;
color: var(--white);
}
.contact-info-link {
color: var(--lime);
text-decoration: none;
border-bottom: 1px solid rgba(204,255,0,0.3);
transition: border-color 0.2s;
}
.contact-info-link:hover {
border-bottom-color: var(--lime);
}
.contact-social {
padding: 3rem;
border-bottom: 1px solid var(--border);
background: var(--bg2);
}
.contact-social h2 {
font-size: clamp(1.6rem, 3.5vw, 2.2rem);
font-weight: 800;
color: var(--white);
margin-bottom: 1.5rem;
}
.contact-social h2 .accent {
color: var(--lime);
}
.contact-social-intro {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.85rem;
color: var(--muted);
line-height: 1.8;
max-width: 700px;
margin-bottom: 2rem;
}
.contact-social-links {
display: flex;
flex-wrap: wrap;
gap: 12px;
}
.social-link {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.85rem;
color: var(--muted);
text-decoration: none;
padding: 10px 16px;
border: 1px solid var(--border);
display: inline-flex;
align-items: center;
gap: 8px;
transition: all 0.3s;
}
.social-link::before {
content: '';
display: inline-block;
width: 6px;
height: 6px;
background: currentColor;
flex-shrink: 0;
}
.social-link:hover {
color: var(--lime);
border-color: var(--lime);
background: var(--lime-dim);
}
.contact-cta {
padding: 4rem 3rem;
background: linear-gradient(135deg, var(--bg2) 0%, var(--bg3) 100%);
text-align: center;
border-top: 1px solid var(--border);
}
.contact-cta h2 {
font-size: clamp(1.8rem, 4vw, 2.6rem);
font-weight: 800;
color: var(--white);
margin-bottom: 1rem;
}
.contact-cta h2 .accent {
color: var(--lime);
}
.contact-cta p {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.9rem;
color: var(--muted);
line-height: 1.8;
max-width: 700px;
margin: 0 auto 2rem;
}
.contact-cta-email {
display: inline-block;
font-family: 'IBM Plex Mono', monospace;
font-size: 1.1rem;
color: var(--lime);
text-decoration: none;
padding: 12px 28px;
border: 2px solid var(--lime);
transition: all 0.3s;
}
.contact-cta-email:hover {
background: var(--lime);
color: var(--bg);
}
@media (max-width: 768px) {
.contact-header,
.contact-main,
.contact-social,
.contact-cta {
padding: 2.5rem 1.5rem;
}
.contact-header {
padding: 3rem 1.5rem 2rem;
}
.contact-grid {
grid-template-columns: 1fr;
}
.contact-grid .contact-card {
border-right: none;
}
.contact-grid .contact-card:nth-child(2n) {
border-right: none;
}
.contact-main-content {
grid-template-columns: 1fr;
gap: 2rem;
}
.contact-social-links {
flex-direction: column;
}
.social-link {
width: 100%;
justify-content: flex-start;
}
}