mudanças

This commit is contained in:
2025-08-18 16:47:16 -03:00
parent e3e83a3f40
commit 1ce9aaac6a
11 changed files with 250 additions and 228 deletions

21
css/button.css Normal file
View File

@@ -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);
}

View File

@@ -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;
}

100
css/main.css Normal file
View File

@@ -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;
}
}

View File

@@ -1,4 +1,3 @@
/* matrix.css - Matrix animation styles */
.matrix-canvas { .matrix-canvas {
position: fixed; position: fixed;
top: 0; top: 0;

View File

@@ -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 { .hero-details {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@@ -27,7 +75,7 @@
font-size: 2.5rem; font-size: 2.5rem;
font-weight: 700; font-weight: 700;
margin-bottom: 8px; 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-background-clip: text;
-webkit-text-fill-color: transparent; -webkit-text-fill-color: transparent;
background-clip: text; background-clip: text;
@@ -36,7 +84,7 @@
.description { .description {
font-size: 1.2rem; font-size: 1.2rem;
margin-bottom: 32px; margin-bottom: 32px;
color: rgba(255, 255, 255, 0.8); color: var(--text-color-light);
font-weight: 400; font-weight: 400;
} }
@@ -45,47 +93,10 @@
gap: 16px; gap: 16px;
flex-wrap: wrap; flex-wrap: wrap;
} }
.social-link { .social-link {
padding: 12px 20px; display: inline-flex;
background: rgba(10, 18, 40, 0.85); align-items: center;
color: #fff; gap: 8px;
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;
} }
@media (max-width: 900px) { @media (max-width: 900px) {
@@ -98,7 +109,6 @@
} }
} }
@media (max-width: 768px) { @media (max-width: 768px) {
.hero-card { .hero-card {
grid-template-columns: 1fr; grid-template-columns: 1fr;
@@ -107,13 +117,6 @@
text-align: center; text-align: center;
} }
.avatar {
width: 140px;
height: 140px;
margin: 0 auto;
font-size: 40px;
}
.name { .name {
font-size: 2rem; font-size: 2rem;
} }
@@ -132,12 +135,6 @@
padding: 24px 16px; padding: 24px 16px;
} }
.avatar {
width: 120px;
height: 120px;
font-size: 32px;
}
.name { .name {
font-size: 1.8rem; font-size: 1.8rem;
} }

View File

@@ -42,27 +42,3 @@
gap: 16px; gap: 16px;
flex-wrap: wrap; 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);
}

View File

@@ -1,4 +1,4 @@
/* Profile Info Section Styles */
.profile-info { .profile-info {
margin-top: 1.2rem; margin-top: 1.2rem;
display: flex; display: flex;
@@ -22,7 +22,7 @@
.profile-info-item i { .profile-info-item i {
font-size: 1.3rem; font-size: 1.3rem;
color: #4fc3f7; color: var(--primary-color);
margin-right: 0.2rem; margin-right: 0.2rem;
} }
@@ -33,14 +33,13 @@
} }
.profile-info-value { .profile-info-value {
color: rgba(255, 255, 255, 0.45); color: var(--text-color-dark);
font-weight: 400; font-weight: 400;
} }
.profile-info-value span { .profile-info-value span {
display: block; display: block;
} }
/* profile.css - Styles for avatar and avatar-container */
.profile-container { .profile-container {
position: relative; position: relative;
@@ -49,12 +48,12 @@
.avatar { .avatar {
width: 160px; width: 160px;
height: 160px; height: 160px;
border-radius: 24px; border-radius: var(--border-radius-large);
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); background: linear-gradient(135deg, var(--secondary-color) 0%, var(--tertiary-color) 100%);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
color: white; color: var(--text-color);
position: relative; position: relative;
overflow: hidden; overflow: hidden;
border: 2px solid rgba(255, 255, 255, 0.2); border: 2px solid rgba(255, 255, 255, 0.2);
@@ -74,5 +73,22 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
object-fit: cover; 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;
}
} }

View File

@@ -1,3 +1,4 @@
.projects-section { .projects-section {
flex: 0 0 340px; flex: 0 0 340px;
display: flex; display: flex;
@@ -7,7 +8,7 @@
background: rgba(20, 20, 30, 0.10); background: rgba(20, 20, 30, 0.10);
backdrop-filter: blur(24px) saturate(140%) brightness(1.08); backdrop-filter: blur(24px) saturate(140%) brightness(1.08);
-webkit-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); 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; min-width: 280px;
max-width: 340px; max-width: 340px;
@@ -19,9 +20,9 @@
font-size: 1.6rem; font-size: 1.6rem;
font-weight: 700; font-weight: 700;
margin-bottom: 10px; margin-bottom: 10px;
color: #fff; color: var(--text-color);
letter-spacing: 0.03em; 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-background-clip: text;
-webkit-text-fill-color: transparent; -webkit-text-fill-color: transparent;
background-clip: text; background-clip: text;
@@ -29,7 +30,7 @@
.project { .project {
padding: 18px 16px; padding: 18px 16px;
border-radius: 16px; border-radius: var(--border-radius);
box-shadow: 0 2px 12px 0 rgba(31, 38, 135, 0.10); box-shadow: 0 2px 12px 0 rgba(31, 38, 135, 0.10);
margin-bottom: 0; margin-bottom: 0;
display: flex; display: flex;
@@ -47,10 +48,10 @@
.project-title { .project-title {
font-size: 1.15rem; font-size: 1.15rem;
font-weight: 600; font-weight: 600;
color: #fff; color: var(--text-color);
margin-bottom: 2px; margin-bottom: 2px;
letter-spacing: 0.01em; 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-background-clip: text;
-webkit-text-fill-color: transparent; -webkit-text-fill-color: transparent;
background-clip: text; background-clip: text;
@@ -58,11 +59,12 @@
.project-desc { .project-desc {
font-size: 0.98rem; font-size: 0.98rem;
color: rgba(255,255,255,0.85); color: var(--text-color-light);
font-weight: 400; font-weight: 400;
line-height: 1.5; line-height: 1.5;
} }
@media (max-width: 900px) { @media (max-width: 900px) {
.projects-section { .projects-section {
flex: unset; flex: unset;

View File

@@ -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;
}

25
css/variables.css Normal file
View File

@@ -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);
}

View File

@@ -4,16 +4,17 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ivanch - Portfolio</title> <title>ivanch - Portfolio</title>
<link rel="stylesheet" href="css/style.css"> <link rel="stylesheet" href="css/main.css">
<link rel="stylesheet" href="css/button.css">
<link rel="stylesheet" href="css/matrix.css">
<link rel="stylesheet" href="css/content.css">
<link rel="stylesheet" href="css/sections/profile.css"> <link rel="stylesheet" href="css/sections/profile.css">
<link rel="stylesheet" href="css/sections/hero.css">
<link rel="stylesheet" href="css/sections/projects.css">
<link rel="stylesheet" href="css/sections/homelab.css"> <link rel="stylesheet" href="css/sections/homelab.css">
<link rel="stylesheet" href="css/sections/projects.css">
<link rel="stylesheet" href="css/sections/hero.css">
<link rel="stylesheet" href="css/matrix.css">
<link rel="stylesheet" href="css/button.css">
<!-- Remix Icon CDN for social icons --> <!-- Remix Icon CDN for social icons -->
<link href="https://cdn.jsdelivr.net/npm/remixicon@3.5.0/fonts/remixicon.css" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/remixicon@3.5.0/fonts/remixicon.css" rel="stylesheet">
</head> </head>
@@ -44,7 +45,7 @@
</span> </span>
</div> </div>
<div class="profile-info-item"> <div class="profile-info-item">
<i class="ri-book-2-fill"></i> <i class="ri-briefcase-line"></i>
<span class="profile-info-value">5+ years</span> <span class="profile-info-value">5+ years</span>
</div> </div>
</div> </div>
@@ -55,17 +56,17 @@
<h2 class="name">ivanch</h2> <h2 class="name">ivanch</h2>
<p class="description">Developer and Self Hoster</p> <p class="description">Developer and Self Hoster</p>
<div class="social-links"> <div class="social-links">
<a href="https://www.linkedin.com/in/joseivanch/" class="social-link" target="_blank"> <a href="https://www.linkedin.com/in/joseivanch/" class="btn social-link" target="_blank">
<i class="ri-linkedin-fill"></i> <span>LinkedIn</span> <i class="ri-linkedin-fill"></i> <span>LinkedIn</span>
</a> </a>
<a href="#" class="social-link" id="email-link"> <a href="#" class="btn social-link" id="email-link">
<i class="ri-mail-fill"></i> <span>Email</span> <i class="ri-mail-fill"></i> <span>Email</span>
</a> </a>
<span class="email-tooltip" id="email-tooltip">Copied!</span> <span class="email-tooltip" id="email-tooltip">Copied!</span>
<a href="https://github.com/ivanch" class="social-link" target="_blank"> <a href="https://github.com/ivanch" class="btn social-link" target="_blank">
<i class="ri-github-fill"></i> <span>GitHub</span> <i class="ri-github-fill"></i> <span>GitHub</span>
</a> </a>
<a href="https://git.ivanch.me/ivanch" class="social-link" target="_blank"> <a href="https://git.ivanch.me/ivanch" class="btn social-link" target="_blank">
<i class="ri-git-repository-fill"></i> <span>Gitea</span> <i class="ri-git-repository-fill"></i> <span>Gitea</span>
</a> </a>
</div> </div>
@@ -73,8 +74,8 @@
<div class="homelab-section"> <div class="homelab-section">
<h3 class="homelab-title">Homelab</h3> <h3 class="homelab-title">Homelab</h3>
<div class="homelab-buttons"> <div class="homelab-buttons">
<a href="#" class="homelab-btn">Diagram</a> <a href="https://github.com/ivanch/homelab" class="btn homelab-btn" target="_blank">Diagram</a>
<a href="#" class="homelab-btn">Main Applications</a> <a href="https://docs.ivanch.me/" class="btn homelab-btn" target="_blank">Applications</a>
</div> </div>
</div> </div>
</div> </div>
@@ -98,7 +99,6 @@
</div> </div>
</div> </div>
</div> </div>
</div>
</div> </div>
</main> </main>