diff --git a/css/button.css b/css/button.css new file mode 100644 index 0000000..2c2a5b0 --- /dev/null +++ b/css/button.css @@ -0,0 +1,21 @@ +.btn { + padding: 8px 16px; + border: 1px solid transparent; + border-radius: 8px; + font-weight: 400; + font-size: 15px; + color: var(--text-color); + background: var(--primary-gradient); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.08); + transition: all 0.3s ease; + position: relative; + overflow: hidden; +} + +.btn:hover { + background: var(--primary-gradient); + transform: translateY(-2px); + box-shadow: 0 8px 12px rgba(0, 0, 0, 0.15), 0 3px 6px rgba(0, 0, 0, 0.1); +} \ No newline at end of file diff --git a/css/content.css b/css/content.css deleted file mode 100644 index 2ae66f5..0000000 --- a/css/content.css +++ /dev/null @@ -1,97 +0,0 @@ -/* content.css - Layout, glassmorphism, and content styles */ -.glass { - background: rgba(20, 20, 20, 0.125); - backdrop-filter: blur(8px); - -webkit-backdrop-filter: blur(8px); - border-radius: 16px; - border: 1px solid rgba(255, 255, 255, 0.18); - box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37), - inset 0 1px 0 rgba(255, 255, 255, 0.2); -} - -.main-container { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - max-width: 1200px; - width: 100%; - padding: 0 20px; - display: flex; - align-items: center; - justify-content: center; - background: rgba(0, 0, 0, 0.125); - backdrop-filter: blur(8px); -} - - -@keyframes fadeInUp { - from { - opacity: 0; - transform: translateY(30px); - } - to { - opacity: 1; - transform: translateY(0); - } -} - -.content { - color: white; - background: rgba(0, 0, 0, 0.10); - backdrop-filter: blur(32px) saturate(180%) brightness(1.1); - -webkit-backdrop-filter: blur(32px) saturate(180%) brightness(1.1); - border-radius: 24px; - box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.25), inset 0 1px 0 rgba(255,255,255,0.15); - padding: 32px 24px; - transition: background 0.3s, box-shadow 0.3s; - min-width: 26rem; - max-width: 26rem; -} - -.social-links { - position: relative; -} - -.social-link { - display: inline-flex; - align-items: center; -} - -.email-tooltip { - position: absolute; - background: rgba(40, 40, 40, 0.95); - color: #fff; - padding: 6px 16px; - border-radius: 8px; - font-size: 0.95rem; - font-weight: 500; - box-shadow: 0 2px 12px rgba(0,0,0,0.18); - opacity: 0; - pointer-events: none; - transition: opacity 0.3s, transform 0.3s; - z-index: 10; - white-space: nowrap; - width: max-content; - display: block; -} - -/* Stylish tooltip for email copy */ -.email-tooltip { - position: absolute; - left: 50%; - top: -32px; - transform: translateX(-50%) scale(1); - background: rgba(40, 40, 40, 0.95); - color: #fff; - padding: 6px 16px; - border-radius: 8px; - font-size: 0.95rem; - font-weight: 500; - box-shadow: 0 2px 12px rgba(0,0,0,0.18); - opacity: 0; - pointer-events: none; - transition: opacity 0.3s, transform 0.3s; - z-index: 10; - white-space: nowrap; -} diff --git a/css/main.css b/css/main.css new file mode 100644 index 0000000..c0bfef8 --- /dev/null +++ b/css/main.css @@ -0,0 +1,100 @@ +@import url('variables.css'); +@import url('https://fonts.googleapis.com/css2?family=Lexend:wght@100..900&display=swap'); + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: var(--font-family); + background: var(--background-color); + min-height: 100vh; + overflow-x: hidden; + position: relative; +} + +h1, h2, h3, h4, h5, h6 { + font-weight: 600; + color: var(--text-color); +} + +a { + text-decoration: none; + color: var(--primary-color); + transition: color 0.3s; +} + +a:hover { + color: var(--primary-color-light); +} + +ul { + list-style: none; +} + +img { + max-width: 100%; + height: auto; +} + +.glass { + background: var(--glass-background); + backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px); + border-radius: var(--border-radius); + border: 1px solid var(--glass-border); + box-shadow: var(--box-shadow), var(--inset-shadow); +} + +.main-container { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + max-width: 1200px; + width: 100%; + padding: 0 20px; + display: flex; + align-items: center; + justify-content: center; + background: rgba(0, 0, 0, 0.125); + backdrop-filter: blur(8px); +} + +@keyframes fadeInUp { + from { + opacity: 0; + transform: translateY(30px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.content { + color: var(--text-color); + background: rgba(0, 0, 0, 0.10); + backdrop-filter: blur(32px) saturate(180%) brightness(1.1); + -webkit-backdrop-filter: blur(32px) saturate(180%) brightness(1.1); + border-radius: var(--border-radius-large); + box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.25), inset 0 1px 0 rgba(255,255,255,0.15); + padding: 32px 24px; + transition: background 0.3s, box-shadow 0.3s; + min-width: 26rem; + max-width: 26rem; +} + +@media (max-width: 768px) { + .main-container { + padding: 0 15px; + } +} + +@media (max-width: 480px) { + body { + font-size: 14px; + } +} diff --git a/css/matrix.css b/css/matrix.css index d745438..f904b6a 100644 --- a/css/matrix.css +++ b/css/matrix.css @@ -1,4 +1,3 @@ -/* matrix.css - Matrix animation styles */ .matrix-canvas { position: fixed; top: 0; @@ -55,4 +54,4 @@ filter: brightness(1); box-shadow: 0 0 4px rgba(138, 43, 226, 0.4); } -} +} \ No newline at end of file diff --git a/css/sections/hero.css b/css/sections/hero.css index 525f5f4..013fd1c 100644 --- a/css/sections/hero.css +++ b/css/sections/hero.css @@ -1,3 +1,51 @@ + +.social-links { + position: relative; +} + +.social-link { + display: inline-flex; + align-items: center; +} + +.email-tooltip { + position: absolute; + background: rgba(40, 40, 40, 0.95); + color: #fff; + padding: 6px 16px; + border-radius: 8px; + font-size: 0.95rem; + font-weight: 500; + box-shadow: 0 2px 12px rgba(0,0,0,0.18); + opacity: 0; + pointer-events: none; + transition: opacity 0.3s, transform 0.3s; + z-index: 10; + white-space: nowrap; + width: max-content; + display: block; +} + +.email-tooltip { + position: absolute; + left: 50%; + top: -32px; + transform: translateX(-50%) scale(1); + background: rgba(40, 40, 40, 0.95); + color: #fff; + padding: 6px 16px; + border-radius: 8px; + font-size: 0.95rem; + font-weight: 500; + box-shadow: 0 2px 12px rgba(0,0,0,0.18); + opacity: 0; + pointer-events: none; + transition: opacity 0.3s, transform 0.3s; + z-index: 10; + white-space: nowrap; +} + + .hero-details { display: flex; flex-direction: row; @@ -27,7 +75,7 @@ font-size: 2.5rem; font-weight: 700; margin-bottom: 8px; - background: linear-gradient(135deg, #fff 0%, rgba(255, 255, 255, 0.8) 100%); + background: linear-gradient(135deg, var(--text-color) 0%, var(--text-color-light) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; @@ -36,7 +84,7 @@ .description { font-size: 1.2rem; margin-bottom: 32px; - color: rgba(255, 255, 255, 0.8); + color: var(--text-color-light); font-weight: 400; } @@ -45,47 +93,10 @@ gap: 16px; flex-wrap: wrap; } - .social-link { - padding: 12px 20px; - background: rgba(10, 18, 40, 0.85); - color: #fff; - border: none; - border-radius: 10px; - text-decoration: none; - font-weight: 500; - font-size: 15px; - position: relative; - overflow: visible; - box-shadow: 0 2px 16px 0 rgba(31, 38, 135, 0.12); - transition: background 0.18s, transform 0.18s; -} -/* Modern underline effect under text */ -.social-link span { - position: relative; - z-index: 1; - display: inline-block; -} -.social-link span::after { - content: ''; - display: block; - width: 100%; - height: 2px; - background: linear-gradient(90deg, #fff 0%, #667eea 100%); - border-radius: 1px; - position: absolute; - left: 0; - bottom: -4px; - opacity: 0.7; - transition: height 0.18s, opacity 0.18s; -} -.social-link:hover { - background: rgba(20, 30, 60, 0.95); - transform: translateY(-1px) scale(1.03); -} -.social-link:hover span::after { - height: 3px; - opacity: 1; + display: inline-flex; + align-items: center; + gap: 8px; } @media (max-width: 900px) { @@ -98,7 +109,6 @@ } } - @media (max-width: 768px) { .hero-card { grid-template-columns: 1fr; @@ -107,13 +117,6 @@ text-align: center; } - .avatar { - width: 140px; - height: 140px; - margin: 0 auto; - font-size: 40px; - } - .name { font-size: 2rem; } @@ -132,12 +135,6 @@ padding: 24px 16px; } - .avatar { - width: 120px; - height: 120px; - font-size: 32px; - } - .name { font-size: 1.8rem; } diff --git a/css/sections/homelab.css b/css/sections/homelab.css index df39ce3..b69144f 100644 --- a/css/sections/homelab.css +++ b/css/sections/homelab.css @@ -41,28 +41,4 @@ display: flex; gap: 16px; flex-wrap: wrap; -} -.homelab-btn { - padding: 12px 28px; - background: rgba(10, 18, 40, 0.85); - color: #fff; - border: none; - border-radius: 14px; - font-weight: 600; - font-size: 15px; - letter-spacing: 0.02em; - text-decoration: none; - box-shadow: 0 4px 24px 0 rgba(31, 38, 135, 0.18), 0 1.5px 0 rgba(255,255,255,0.08); - transition: transform 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.18s; - cursor: pointer; - position: relative; - overflow: hidden; -} -.homelab-btn:hover { - background: rgba(20, 30, 60, 0.95); - transform: translateY(-2px) scale(1.04); - box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.28); -} -.homelab-btn:active { - transform: translateY(0px) scale(1.0); -} +} \ No newline at end of file diff --git a/css/sections/profile.css b/css/sections/profile.css index 76eeb4c..2a50c0d 100644 --- a/css/sections/profile.css +++ b/css/sections/profile.css @@ -1,4 +1,4 @@ -/* Profile Info Section Styles */ + .profile-info { margin-top: 1.2rem; display: flex; @@ -22,7 +22,7 @@ .profile-info-item i { font-size: 1.3rem; - color: #4fc3f7; + color: var(--primary-color); margin-right: 0.2rem; } @@ -33,14 +33,13 @@ } .profile-info-value { - color: rgba(255, 255, 255, 0.45); + color: var(--text-color-dark); font-weight: 400; } .profile-info-value span { display: block; } -/* profile.css - Styles for avatar and avatar-container */ .profile-container { position: relative; @@ -49,12 +48,12 @@ .avatar { width: 160px; height: 160px; - border-radius: 24px; - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + border-radius: var(--border-radius-large); + background: linear-gradient(135deg, var(--secondary-color) 0%, var(--tertiary-color) 100%); display: flex; align-items: center; justify-content: center; - color: white; + color: var(--text-color); position: relative; overflow: hidden; border: 2px solid rgba(255, 255, 255, 0.2); @@ -74,5 +73,22 @@ width: 100%; height: 100%; object-fit: cover; - border-radius: 24px; + border-radius: var(--border-radius-large); } + +@media (max-width: 768px) { + .avatar { + width: 140px; + height: 140px; + margin: 0 auto; + font-size: 40px; + } +} + +@media (max-width: 480px) { + .avatar { + width: 120px; + height: 120px; + font-size: 32px; + } +} \ No newline at end of file diff --git a/css/sections/projects.css b/css/sections/projects.css index 0e83c79..67ca5ec 100644 --- a/css/sections/projects.css +++ b/css/sections/projects.css @@ -1,3 +1,4 @@ + .projects-section { flex: 0 0 340px; display: flex; @@ -7,7 +8,7 @@ background: rgba(20, 20, 30, 0.10); backdrop-filter: blur(24px) saturate(140%) brightness(1.08); -webkit-backdrop-filter: blur(24px) saturate(140%) brightness(1.08); - border-radius: 24px; + border-radius: var(--border-radius-large); box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.18), inset 0 1px 0 rgba(255,255,255,0.10); min-width: 280px; max-width: 340px; @@ -19,9 +20,9 @@ font-size: 1.6rem; font-weight: 700; margin-bottom: 10px; - color: #fff; + color: var(--text-color); letter-spacing: 0.03em; - background: linear-gradient(135deg, #667eea 0%, #fff 100%); + background: linear-gradient(135deg, var(--secondary-color) 0%, var(--text-color) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; @@ -29,7 +30,7 @@ .project { padding: 18px 16px; - border-radius: 16px; + border-radius: var(--border-radius); box-shadow: 0 2px 12px 0 rgba(31, 38, 135, 0.10); margin-bottom: 0; display: flex; @@ -47,10 +48,10 @@ .project-title { font-size: 1.15rem; font-weight: 600; - color: #fff; + color: var(--text-color); margin-bottom: 2px; letter-spacing: 0.01em; - background: linear-gradient(90deg, #fff 0%, #667eea 100%); + background: linear-gradient(90deg, var(--text-color) 0%, var(--secondary-color) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; @@ -58,11 +59,12 @@ .project-desc { font-size: 0.98rem; - color: rgba(255,255,255,0.85); + color: var(--text-color-light); font-weight: 400; line-height: 1.5; } + @media (max-width: 900px) { .projects-section { flex: unset; diff --git a/css/style.css b/css/style.css deleted file mode 100644 index 61f7b7b..0000000 --- a/css/style.css +++ /dev/null @@ -1,17 +0,0 @@ -/* style.css - Glassmorphism and layout styles */ -@import url('https://fonts.googleapis.com/css2?family=Lexend:wght@100..900&display=swap'); - -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -body { - /* font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; */ - font-family: "Lexend", sans-serif; - background: #000000; - min-height: 100vh; - overflow-x: hidden; - position: relative; -} diff --git a/css/variables.css b/css/variables.css new file mode 100644 index 0000000..de0348b --- /dev/null +++ b/css/variables.css @@ -0,0 +1,25 @@ + +:root { + --primary-color: #4fc3f7; + --primary-color-light: #81d4fa; + --secondary-color: #667eea; + --tertiary-color: #764ba2; + --primary-gradient: linear-gradient(120deg, rgba(40, 20, 60, 0.6), rgba(20, 20, 60, 0.4)); + + --background-color: #000000; + --glass-background: rgba(20, 20, 20, 0.125); + --glass-border: rgba(255, 255, 255, 0.18); + --glass-shadow: rgba(31, 38, 135, 0.37); + + --text-color: #ffffff; + --text-color-light: rgba(255, 255, 255, 0.8); + --text-color-dark: rgba(255, 255, 255, 0.45); + + --font-family: "Lexend", sans-serif; + + --border-radius: 16px; + --border-radius-large: 24px; + + --box-shadow: 0 8px 32px 0 var(--glass-shadow); + --inset-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2); +} diff --git a/index.html b/index.html index cb20924..8691aad 100644 --- a/index.html +++ b/index.html @@ -4,16 +4,17 @@ ivanch - Portfolio - - - - - - + - - + + + + + + + + @@ -44,7 +45,7 @@
- + 5+ years
@@ -55,17 +56,17 @@

ivanch

Developer and Self Hoster

@@ -73,8 +74,8 @@

Homelab

- Diagram - Main Applications + Diagram + Applications
@@ -98,7 +99,6 @@ -