| ο»Ώ |
| |
| |
| |
|
|
| @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'); |
|
|
| |
| |
| |
| :root, |
| [data-theme='dark'] { |
| |
| --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); |
|
|
| |
| --border: rgba(99, 102, 241, 0.12); |
| --border-hot: rgba(6, 182, 212, 0.4); |
| --border-fire: rgba(236, 72, 153, 0.35); |
|
|
| |
| --text-primary: #f0eff5; |
| --text-secondary:#9896ad; |
| --text-muted: #605e78; |
|
|
| |
| --accent: #6366f1; |
| --accent-2: #06b6d4; |
| --accent-warm: #f59e0b; |
| --accent-green: #10b981; |
| --accent-pink: #ec4899; |
| --accent-glow: rgba(99, 102, 241, 0.1); |
|
|
| |
| --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%); |
|
|
| |
| --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); |
|
|
| |
| --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-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-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); |
| }
|
| |
| |
| |
| [data-theme='light'] { |
| |
| --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); |
|
|
| |
| --border: rgba(99, 102, 241, 0.14); |
| --border-hot: rgba(6, 182, 212, 0.45); |
| --border-fire: rgba(236, 72, 153, 0.35); |
|
|
| |
| --text-primary: #1a1a2e; |
| --text-secondary:#4a4a66; |
| --text-muted: #8a8aa6; |
|
|
| |
| --accent: #6366f1; |
| --accent-2: #0891b2; |
| --accent-warm: #d97706; |
| --accent-green: #059669; |
| --accent-pink: #db2777; |
| --accent-glow: rgba(99, 102, 241, 0.08); |
|
|
| |
| --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%); |
|
|
| |
| --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); |
|
|
| |
| --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-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-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); |
| }
|
|
|
| |
| |
| |
| :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; |
|
|
| |
| --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; |
| } |
|
|
| |
| |
| |
| *, *::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); |
| } |
|
|
| |
| h1, h2, h3, h4, h5, h6 { |
| font-family: var(--font-heading); |
| font-weight: 700; |
| line-height: 1.15; |
| letter-spacing: -0.02em; |
| } |
|
|
| |
| code, pre { |
| font-family: var(--font-code); |
| }
|
|
|
| |
| |
| |
| 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; } |
| } |
|
|
| |
| |
| |
| ::-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); |
| } |
|
|
| |
| |
| |
| 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; |
| } |
|
|
| |
| |
| |
| .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); } |
| } |
|
|
| |
| |
| |
| .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 { |
| 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 { |
| 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 { |
| 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; |
| } |
|
|
| |
| .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%); |
| } |
|
|
| |
| .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); |
| }
|
|
|
| |
| |
| |
| .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-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 { |
| 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 { |
| 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 { |
| 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); |
| }
|
|
|
| |
| |
| |
| .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-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% |
| ); |
| } |
|
|
| |
| |
| |
| @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; |
| } |
| }
|
|
|