Website / global.css
Gokul08r's picture
Upload 31 files
e927672 verified
Raw
History Blame Contribute Delete
30.2 kB
ο»Ώ/* ═══════════════════════════════════════════════════════════════════════════
GLOBAL.CSS β€” APEX PRO v2.0 β€” Gokul R Portfolio
Sleek Β· Modern Β· Professional Β· Subtle Elegance
═══════════════════════════════════════════════════════════════════════════ */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Outfit:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600;700&display=swap');
/* ─────────────────────────────────────────────────────────────
DARK THEME (default) β€” Midnight Indigo
───────────────────────────────────────────────────────────── */
:root,
[data-theme='dark'] {
/* ── Backgrounds ── */
--bg: #08080f;
--bg-deep: #04040a;
--bg-card: rgba(18, 18, 34, 0.88);
--bg-glass: rgba(99, 102, 241, 0.06);
--bg-glass-2: rgba(6, 182, 212, 0.04);
/* ── Borders ── */
--border: rgba(99, 102, 241, 0.12);
--border-hot: rgba(6, 182, 212, 0.4);
--border-fire: rgba(236, 72, 153, 0.35);
/* ── Text ── */
--text-primary: #f0eff5;
--text-secondary:#9896ad;
--text-muted: #605e78;
/* ── Accents ── */
--accent: #6366f1;
--accent-2: #06b6d4;
--accent-warm: #f59e0b;
--accent-green: #10b981;
--accent-pink: #ec4899;
--accent-glow: rgba(99, 102, 241, 0.1);
/* ── Gradients ── */
--grad-main: linear-gradient(135deg, #6366f1 0%, #06b6d4 50%, #10b981 100%);
--grad-fire: linear-gradient(135deg, #ec4899 0%, #f59e0b 50%, #facc15 100%);
--grad-aurora: linear-gradient(135deg, #06b6d4 0%, #6366f1 40%, #ec4899 100%);
--grad-ice: linear-gradient(135deg, #3b82f6 0%, #06b6d4 100%);
--grad-galaxy: linear-gradient(135deg, #6366f1 0%, #06b6d4 30%, #8b5cf6 60%, #ec4899 100%);
--grad-quantum: linear-gradient(135deg, #06b6d4 0%, #6366f1 25%, #ec4899 50%, #f59e0b 75%, #10b981 100%);
/* ── Shadows ── */
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
--shadow-md: 0 4px 20px rgba(0, 0, 0, 0.35);
--shadow-lg: 0 10px 40px rgba(0, 0, 0, 0.4);
--shadow-xl: 0 20px 60px rgba(0, 0, 0, 0.5);
--shadow-accent: 0 4px 24px rgba(99, 102, 241, 0.25);
--shadow-cyan: 0 4px 24px rgba(6, 182, 212, 0.2);
--shadow-card: 0 8px 32px rgba(0, 0, 0, 0.4);
--shadow-glow: 0 0 30px rgba(99, 102, 241, 0.12);
/* ── System ── */
--nav-bg: rgba(8, 8, 15, 0.94);
--input-bg: rgba(99, 102, 241, 0.06);
--input-border: rgba(99, 102, 241, 0.18);
--footer-bg: #04040a;
--grid-color: rgba(99, 102, 241, 0.035);
--noise-opacity: 0.25;
--orb-opacity: 0.35;
/* ── Cursor Vars ── */
--cursor-dot-color: #6366f1;
--cursor-dot-size: 6px;
--cursor-ring-color: rgba(99, 102, 241, 0.5);
--cursor-ring-expand: rgba(6, 182, 212, 0.7);
--cursor-trail-color: rgba(99, 102, 241, 0.08);
--cursor-glow: 0 0 8px #6366f1;
--cursor-ring-glow: 0 0 12px rgba(99, 102, 241, 0.2);
--cursor-expand-glow: 0 0 20px rgba(6, 182, 212, 0.35);
--cursor-trail-glow: 0 0 6px rgba(99, 102, 241, 0.15);
--cursor-particle-color: #6366f1;
--cursor-blend: screen;
--cursor-ring-border: 1.5px solid rgba(99, 102, 241, 0.5);
--cursor-ring-expand-border: 1.5px solid rgba(6, 182, 212, 0.7);
/* ── Toggle ── */
--toggle-border: rgba(99, 102, 241, 0.3);
--toggle-bg: rgba(99, 102, 241, 0.1);
--toggle-glow: 0 0 16px rgba(99, 102, 241, 0.2);
}
/* ─────────────────────────────────────────────────────────────
LIGHT THEME β€” Crystal Frost
───────────────────────────────────────────────────────────── */
[data-theme='light'] {
/* ── Backgrounds ── */
--bg: #f5f6fa;
--bg-deep: #eef0f6;
--bg-card: rgba(255, 255, 255, 0.94);
--bg-glass: rgba(99, 102, 241, 0.06);
--bg-glass-2: rgba(255, 255, 255, 0.94);
/* ── Borders ── */
--border: rgba(99, 102, 241, 0.14);
--border-hot: rgba(6, 182, 212, 0.45);
--border-fire: rgba(236, 72, 153, 0.35);
/* ── Text ── */
--text-primary: #1a1a2e;
--text-secondary:#4a4a66;
--text-muted: #8a8aa6;
/* ── Accents ── */
--accent: #6366f1;
--accent-2: #0891b2;
--accent-warm: #d97706;
--accent-green: #059669;
--accent-pink: #db2777;
--accent-glow: rgba(99, 102, 241, 0.08);
/* ── Gradients ── */
--grad-main: linear-gradient(135deg, #6366f1 0%, #0891b2 50%, #059669 100%);
--grad-fire: linear-gradient(135deg, #db2777 0%, #d97706 50%, #ca8a04 100%);
--grad-aurora: linear-gradient(135deg, #0891b2 0%, #6366f1 40%, #db2777 100%);
--grad-ice: linear-gradient(135deg, #3b82f6 0%, #0891b2 100%);
--grad-galaxy: linear-gradient(135deg, #6366f1 0%, #0891b2 30%, #7c3aed 60%, #db2777 100%);
--grad-quantum: linear-gradient(135deg, #0891b2 0%, #6366f1 25%, #db2777 50%, #d97706 75%, #059669 100%);
/* ── Shadows ── */
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.06);
--shadow-md: 0 4px 16px rgba(0, 0, 0, 0.08);
--shadow-lg: 0 10px 32px rgba(0, 0, 0, 0.1);
--shadow-xl: 0 20px 48px rgba(0, 0, 0, 0.12);
--shadow-accent: 0 4px 20px rgba(99, 102, 241, 0.15);
--shadow-cyan: 0 4px 20px rgba(6, 182, 212, 0.12);
--shadow-card: 0 8px 28px rgba(99, 102, 241, 0.1);
--shadow-glow: 0 0 20px rgba(99, 102, 241, 0.06);
/* ── System ── */
--nav-bg: rgba(245, 246, 250, 0.96);
--input-bg: rgba(99, 102, 241, 0.04);
--input-border: rgba(99, 102, 241, 0.16);
--footer-bg: #eef0f6;
--grid-color: rgba(99, 102, 241, 0.04);
--noise-opacity: 0.06;
--orb-opacity: 0.2;
/* ── Cursor Vars ── */
--cursor-dot-color: #6366f1;
--cursor-dot-size: 6px;
--cursor-ring-color: rgba(99, 102, 241, 0.6);
--cursor-ring-expand: rgba(6, 182, 212, 0.8);
--cursor-trail-color: rgba(99, 102, 241, 0.06);
--cursor-glow: 0 0 8px rgba(99, 102, 241, 0.4);
--cursor-ring-glow: 0 0 12px rgba(99, 102, 241, 0.2);
--cursor-expand-glow: 0 0 20px rgba(6, 182, 212, 0.25);
--cursor-trail-glow: 0 0 6px rgba(99, 102, 241, 0.1);
--cursor-particle-color: #6366f1;
--cursor-blend: multiply;
--cursor-ring-border: 1.5px solid rgba(99, 102, 241, 0.6);
--cursor-ring-expand-border: 1.5px solid rgba(6, 182, 212, 0.8);
/* ── Toggle ── */
--toggle-border: rgba(99, 102, 241, 0.3);
--toggle-bg: rgba(99, 102, 241, 0.08);
--toggle-glow: 0 0 16px rgba(99, 102, 241, 0.12);
}
/* ─────────────────────────────────────────────────────────────
DESIGN TOKENS
───────────────────────────────────────────────────────────── */
:root {
--font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
--font-heading: 'Outfit', -apple-system, BlinkMacSystemFont, sans-serif;
--font-code: 'JetBrains Mono', 'Fira Code', monospace;
--radius-sm: 6px;
--radius-md: 12px;
--radius-lg: 20px;
--radius-xl: 32px;
--ease: cubic-bezier(0.4, 0, 0.2, 1);
--ease-back: cubic-bezier(0.34, 1.56, 0.64, 1);
--ease-expo: cubic-bezier(0.19, 1, 0.22, 1);
--ease-spring: cubic-bezier(0.22, 1.5, 0.36, 1);
--t: 0.35s;
--max-width: 1200px;
/* ── Typography Scale ── */
--text-xs: 0.75rem;
--text-sm: 0.875rem;
--text-base: 1rem;
--text-lg: 1.125rem;
--text-xl: 1.25rem;
--text-2xl: 1.5rem;
--text-3xl: 1.875rem;
--text-4xl: 2.25rem;
--text-5xl: 3rem;
--text-6xl: 3.75rem;
}
/* ─────────────────────────────────────────────────────────────
RESET
───────────────────────────────────────────────────────────── */
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
scroll-behavior: smooth;
scroll-padding-top: 80px;
}
body {
background: var(--bg);
color: var(--text-primary);
font-family: var(--font-body);
font-size: var(--text-base);
line-height: 1.7;
font-weight: 400;
overflow-x: hidden;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
transition:
background 0.6s cubic-bezier(0.4, 0, 0.2, 1),
color 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}
/* ── Headings ── */
h1, h2, h3, h4, h5, h6 {
font-family: var(--font-heading);
font-weight: 700;
line-height: 1.15;
letter-spacing: -0.02em;
}
/* ── Code ── */
code, pre {
font-family: var(--font-code);
}
/* ─────────────────────────────────────────────────────────────
THEME TRANSITION
───────────────────────────────────────────────────────────── */
body.theme-transitioning::after {
content: '';
position: fixed; inset: 0; z-index: 99997;
pointer-events: none;
background: radial-gradient(
circle at var(--ripple-x, 50%) var(--ripple-y, 50%),
rgba(99, 102, 241, 0.12) 0%,
rgba(6, 182, 212, 0.06) 30%,
transparent 70%
);
animation: themeRipple 0.6s cubic-bezier(0.19, 1, 0.22, 1) forwards;
}
[data-theme='light'] body.theme-transitioning::after {
background: radial-gradient(
circle at var(--ripple-x, 50%) var(--ripple-y, 50%),
rgba(99, 102, 241, 0.1) 0%,
rgba(6, 182, 212, 0.05) 30%,
transparent 70%
);
}
@keyframes themeRipple {
0% { transform: scale(0); opacity: 0.8; }
60% { transform: scale(3); opacity: 0.4; }
100% { transform: scale(6); opacity: 0; }
}
/* ─────────────────────────────────────────────────────────────
SCROLLBAR
───────────────────────────────────────────────────────────── */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: var(--bg-deep); }
::-webkit-scrollbar-thumb {
background: linear-gradient(180deg, var(--accent), var(--accent-2));
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--accent);
}
::selection {
background: rgba(99, 102, 241, 0.25);
color: var(--text-primary);
}
[data-theme='light'] ::selection {
background: rgba(99, 102, 241, 0.15);
color: var(--text-primary);
}
/* ─────────────────────────────────────────────────────────────
SUBTLE NOISE TEXTURE
───────────────────────────────────────────────────────────── */
body::before {
content: '';
position: fixed; inset: 0;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.03'/%3E%3C/svg%3E");
pointer-events: none; z-index: 0;
opacity: var(--noise-opacity);
mix-blend-mode: soft-light;
transition: opacity 0.6s ease;
}
/* ─────────────────────────────────────────────────────────────
AMBIENT GRADIENT ORBS (toned down)
───────────────────────────────────────────────────────────── */
.orb {
position: fixed; border-radius: 50%;
filter: blur(120px);
pointer-events: none; z-index: 0;
opacity: var(--orb-opacity);
transition: opacity 0.8s ease, background 0.8s ease;
}
.orb-1 {
width: 600px; height: 600px;
background: radial-gradient(circle, rgba(99, 102, 241, 0.12) 0%, rgba(6, 182, 212, 0.05) 50%, transparent 70%);
top: -250px; left: -250px;
animation: orbDrift1 25s ease-in-out infinite;
}
.orb-2 {
width: 500px; height: 500px;
background: radial-gradient(circle, rgba(236, 72, 153, 0.08) 0%, rgba(99, 102, 241, 0.05) 50%, transparent 70%);
bottom: -200px; right: -200px;
animation: orbDrift2 30s ease-in-out infinite;
}
[data-theme='light'] .orb-1 {
background: radial-gradient(circle, rgba(99, 102, 241, 0.06) 0%, rgba(6, 182, 212, 0.03) 50%, transparent 70%);
}
[data-theme='light'] .orb-2 {
background: radial-gradient(circle, rgba(236, 72, 153, 0.05) 0%, rgba(99, 102, 241, 0.03) 50%, transparent 70%);
}
@keyframes orbDrift1 {
0%, 100% { transform: translate(0, 0) scale(1); }
33% { transform: translate(50px, 40px) scale(1.05); }
66% { transform: translate(-30px, 60px) scale(0.95); }
}
@keyframes orbDrift2 {
0%, 100% { transform: translate(0, 0) scale(1); }
33% { transform: translate(-50px, -40px) scale(1.05); }
66% { transform: translate(30px, -60px) scale(0.95); }
}
/* ─────────────────────────────────────────────────────────────
LAYOUT
───────────────────────────────────────────────────────────── */
.container {
max-width: var(--max-width);
margin: 0 auto;
padding: 0 28px;
position: relative; z-index: 1;
}
section {
padding: 120px 0;
position: relative;
z-index: 1;
}
/* ─────────────────────────────────────────────────────────────
SECTION LABEL
───────────────────────────────────────────────────────────── */
.section-label {
display: inline-flex;
align-items: center;
gap: 12px;
font-family: var(--font-heading);
font-size: var(--text-xs);
font-weight: 600;
letter-spacing: 0.3em;
text-transform: uppercase;
color: var(--accent);
margin-bottom: 16px;
transition: color 0.6s ease;
}
.section-label::before {
content: '';
height: 1.5px;
width: 32px;
background: var(--grad-main);
border-radius: 2px;
transition: width 0.3s var(--ease);
}
.section-label::after {
content: '';
height: 1.5px;
width: 16px;
background: var(--grad-main);
border-radius: 2px;
opacity: 0.5;
transition: width 0.3s var(--ease);
}
.section-label:hover::before {
width: 40px;
}
.section-label:hover::after {
width: 22px;
}
/* ─────────────────────────────────────────────────────────────
SECTION TITLE
───────────────────────────────────────────────────────────── */
.section-title {
font-family: var(--font-heading);
font-size: clamp(30px, 4vw, 52px);
font-weight: 800;
line-height: 1.08;
color: var(--text-primary);
margin-bottom: 56px;
letter-spacing: -0.03em;
transition: color 0.6s ease;
}
.section-title span {
background: var(--grad-main);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
background-size: 200% 200%;
animation: gradShift 6s ease-in-out infinite;
}
@keyframes gradShift {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
/* ─────────────────────────────────────────────────────────────
GLASS CARD β€” Modern Glassmorphism
───────────────────────────────────────────────────────────── */
.glass-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
backdrop-filter: blur(20px) saturate(160%);
-webkit-backdrop-filter: blur(20px) saturate(160%);
position: relative;
overflow: hidden;
transition:
border-color 0.35s var(--ease),
box-shadow 0.35s var(--ease),
transform 0.35s var(--ease-back),
background 0.6s var(--ease),
backdrop-filter 0.6s var(--ease);
will-change: transform, box-shadow;
}
/* Inner subtle gradient overlay */
.glass-card::before {
content: '';
position: absolute;
inset: 0;
z-index: 0;
pointer-events: none;
border-radius: inherit;
background: linear-gradient(135deg, rgba(255, 255, 255, 0.04) 0%, transparent 50%, rgba(99, 102, 241, 0.03) 100%);
transition: background 0.6s ease;
}
[data-theme='light'] .glass-card::before {
background: linear-gradient(135deg, rgba(255, 255, 255, 0.8) 0%, rgba(255, 255, 255, 0.4) 50%, rgba(99, 102, 241, 0.02) 100%);
}
/* Hover sheen sweep */
.glass-card::after {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 60%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.05), transparent);
transition: left 0.6s var(--ease-expo);
pointer-events: none;
}
.glass-card:hover::after { left: 150%; }
.glass-card:hover {
border-color: rgba(99, 102, 241, 0.35);
box-shadow: var(--shadow-card), var(--shadow-glow), inset 0 1px 0 rgba(255, 255, 255, 0.06);
transform: translateY(-5px);
}
[data-theme='light'] .glass-card {
background: rgba(255, 255, 255, 0.9);
box-shadow: var(--shadow-card);
}
[data-theme='light'] .glass-card:hover {
box-shadow: var(--shadow-lg), var(--shadow-glow);
}
/* ─────────────────────────────────────────────────────────────
BUTTONS β€” Professional & Polished
───────────────────────────────────────────────────────────── */
.btn-primary {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 14px 30px;
background: var(--grad-main);
background-size: 200% 200%;
color: #fff;
font-family: var(--font-heading);
font-weight: 600;
font-size: var(--text-sm);
letter-spacing: 0.02em;
border: none;
border-radius: var(--radius-xl);
cursor: pointer;
text-decoration: none;
position: relative;
overflow: hidden;
transition:
box-shadow 0.3s var(--ease),
transform 0.3s var(--ease-back),
background 0.6s ease;
box-shadow: var(--shadow-accent);
will-change: transform;
}
.btn-primary::before {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.2) 50%, transparent 100%);
transform: translateX(-100%) skewX(-20deg);
transition: transform 0.5s var(--ease-expo);
}
.btn-primary:hover {
transform: translateY(-3px);
box-shadow: 0 8px 32px rgba(99, 102, 241, 0.35);
}
.btn-primary:hover::before { transform: translateX(160%) skewX(-20deg); }
.btn-primary:active { transform: translateY(-1px); }
.btn-outline {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 13px 30px;
background: transparent;
color: var(--text-primary);
font-family: var(--font-heading);
font-weight: 600;
font-size: var(--text-sm);
letter-spacing: 0.02em;
border: 1.5px solid var(--border);
border-radius: var(--radius-xl);
cursor: pointer;
text-decoration: none;
position: relative;
overflow: hidden;
transition:
all 0.3s var(--ease-back),
color 0.6s ease;
}
.btn-outline::before {
content: '';
position: absolute;
inset: 0;
background: var(--grad-main);
opacity: 0;
transition: opacity 0.3s;
}
.btn-outline:hover {
border-color: var(--accent);
color: #fff;
box-shadow: var(--shadow-accent);
transform: translateY(-2px);
}
.btn-outline:hover::before { opacity: 1; }
.btn-outline:hover > * { position: relative; z-index: 1; }
[data-theme='light'] .btn-outline:hover { color: #fff; }
/* ─────────────────────────────────────────────────────────────
SKILL TAGS
───────────────────────────────────────────────────────────── */
.skill-tag {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 7px 16px;
background: var(--bg-glass);
border: 1px solid var(--border);
color: var(--text-secondary);
font-family: var(--font-body);
font-size: var(--text-sm);
font-weight: 500;
border-radius: 100px;
cursor: default;
transition:
all 0.3s var(--ease-back),
color 0.3s,
background 0.3s;
position: relative;
overflow: hidden;
will-change: transform;
}
.skill-tag:hover {
background: rgba(99, 102, 241, 0.1);
border-color: rgba(99, 102, 241, 0.3);
color: var(--accent);
transform: translateY(-3px) scale(1.03);
box-shadow: 0 6px 20px rgba(99, 102, 241, 0.12);
}
.skill-tag img {
width: 18px;
height: 18px;
object-fit: contain;
filter: saturate(0.8);
transition: filter 0.3s, transform 0.3s;
}
.skill-tag:hover img {
filter: saturate(1);
transform: scale(1.1);
}
/* ─────────────────────────────────────────────────────────────
FADE IN ANIMATIONS
───────────────────────────────────────────────────────────── */
.fade-in {
opacity: 0;
transform: translateY(24px);
animation: revealUp 0.7s var(--ease-expo) forwards;
}
@keyframes revealUp {
to { opacity: 1; transform: translateY(0); }
}
.delay-1 { animation-delay: 0.10s; }
.delay-2 { animation-delay: 0.20s; }
.delay-3 { animation-delay: 0.30s; }
.delay-4 { animation-delay: 0.40s; }
.delay-5 { animation-delay: 0.50s; }
.delay-6 { animation-delay: 0.65s; }
/* ─────────────────────────────────────────────────────────────
SPINNER
───────────────────────────────────────────────────────────── */
.spinner {
width: 20px;
height: 20px;
border: 2px solid rgba(99, 102, 241, 0.12);
border-top-color: var(--accent);
border-radius: 50%;
animation: spin 0.7s linear infinite;
flex-shrink: 0;
}
@keyframes spin { to { transform: rotate(360deg); } }
/* ─────────────────────────────────────────────────────────────
BACK TO TOP
───────────────────────────────────────────────────────────── */
.back-to-top {
position: fixed;
bottom: 32px;
right: 32px;
z-index: 800;
width: 48px;
height: 48px;
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius-md);
color: var(--text-secondary);
font-size: 20px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
opacity: 0;
transform: translateY(20px) scale(0.9);
pointer-events: none;
transition:
opacity 0.35s var(--ease),
transform 0.35s var(--ease-spring),
box-shadow 0.3s,
background 0.3s,
color 0.3s,
border-color 0.3s;
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
}
.back-to-top.show {
opacity: 1;
transform: translateY(0) scale(1);
pointer-events: all;
box-shadow: var(--shadow-md);
}
.back-to-top:hover {
background: var(--accent);
border-color: var(--accent);
color: #fff;
transform: translateY(-3px) scale(1.05);
box-shadow: var(--shadow-accent);
}
.back-to-top:active {
transform: translateY(-1px) scale(1.02);
}
/* ─────────────────────────────────────────────────────────────
FORMS
───────────────────────────────────────────────────────────── */
.form-group {
display: flex;
flex-direction: column;
gap: 6px;
}
.form-group label {
font-family: var(--font-heading);
font-size: var(--text-xs);
font-weight: 600;
color: var(--text-secondary);
letter-spacing: 0.1em;
text-transform: uppercase;
transition: color 0.6s ease;
}
.form-input {
width: 100%;
padding: 14px 18px;
background: var(--input-bg);
border: 1.5px solid var(--input-border);
border-radius: var(--radius-md);
color: var(--text-primary);
font-family: var(--font-body);
font-size: var(--text-base);
outline: none;
resize: none;
transition:
border-color 0.25s,
background 0.6s,
box-shadow 0.25s,
color 0.6s;
}
.form-input::placeholder {
color: var(--text-muted);
font-size: var(--text-sm);
}
.form-input:focus {
border-color: var(--accent);
background: var(--bg-glass);
box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.08);
}
[data-theme='light'] .form-input:focus {
border-color: var(--accent);
background: rgba(99, 102, 241, 0.02);
box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.06);
}
.form-textarea {
min-height: 130px;
line-height: 1.7;
}
.form-error {
display: flex;
align-items: center;
gap: 8px;
padding: 10px 14px;
background: rgba(239, 68, 68, 0.06);
border: 1px solid rgba(239, 68, 68, 0.2);
color: #ef4444;
font-size: var(--text-sm);
border-radius: var(--radius-sm);
font-weight: 500;
}
.form-submit {
width: 100%;
justify-content: center;
padding: 16px;
font-size: var(--text-sm);
}
.form-submit:disabled {
opacity: 0.5;
cursor: not-allowed;
}
/* ─────────────────────────────────────────────────────────────
SECTION AURORA SEPARATOR
───────────────────────────────────────────────────────────── */
.section-aurora-sep {
width: 100%;
height: 1px;
background: linear-gradient(
90deg,
transparent 0%,
rgba(99, 102, 241, 0.2) 15%,
rgba(6, 182, 212, 0.35) 40%,
rgba(16, 185, 129, 0.35) 60%,
rgba(99, 102, 241, 0.2) 85%,
transparent 100%
);
opacity: 0.7;
transition: background 0.6s ease, opacity 0.6s ease;
}
[data-theme='light'] .section-aurora-sep {
background: linear-gradient(
90deg,
transparent 0%,
rgba(99, 102, 241, 0.12) 15%,
rgba(6, 182, 212, 0.25) 40%,
rgba(5, 150, 105, 0.25) 60%,
rgba(99, 102, 241, 0.12) 85%,
transparent 100%
);
}
/* ─────────────────────────────────────────────────────────────
RESPONSIVE
───────────────────────────────────────────────────────────── */
@media (max-width: 1024px) {
section { padding: 96px 0; }
.container { padding: 0 24px; }
}
@media (max-width: 768px) {
section { padding: 72px 0; }
.container { padding: 0 18px; }
.section-title { margin-bottom: 40px; font-size: clamp(26px, 6vw, 36px); }
.back-to-top { bottom: 20px; right: 18px; width: 44px; height: 44px; font-size: 18px; }
}
@media (max-width: 480px) {
section { padding: 56px 0; }
.container { padding: 0 16px; }
.section-title { margin-bottom: 32px; }
.btn-primary, .btn-outline { padding: 12px 22px; font-size: var(--text-xs); }
.glass-card { border-radius: var(--radius-md); }
}
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}