.wpcf7 .screen-reader-response {
position: absolute;
overflow: hidden;
clip: rect(1px, 1px, 1px, 1px);
clip-path: inset(50%);
height: 1px;
width: 1px;
margin: -1px;
padding: 0;
border: 0;
word-wrap: normal !important;
}
.wpcf7 .hidden-fields-container {
display: none;
}
.wpcf7 form .wpcf7-response-output {
margin: 2em 0.5em 1em;
padding: 0.2em 1em;
border: 2px solid #00a0d2; }
.wpcf7 form.init .wpcf7-response-output,
.wpcf7 form.resetting .wpcf7-response-output,
.wpcf7 form.submitting .wpcf7-response-output {
display: none;
}
.wpcf7 form.sent .wpcf7-response-output {
border-color: #46b450; }
.wpcf7 form.failed .wpcf7-response-output,
.wpcf7 form.aborted .wpcf7-response-output {
border-color: #dc3232; }
.wpcf7 form.spam .wpcf7-response-output {
border-color: #f56e28; }
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output,
.wpcf7 form.payment-required .wpcf7-response-output {
border-color: #ffb900; }
.wpcf7-form-control-wrap {
position: relative;
}
.wpcf7-not-valid-tip {
color: #dc3232; font-size: 1em;
font-weight: normal;
display: block;
}
.use-floating-validation-tip .wpcf7-not-valid-tip {
position: relative;
top: -2ex;
left: 1em;
z-index: 100;
border: 1px solid #dc3232;
background: #fff;
padding: .2em .8em;
width: 24em;
}
.wpcf7-list-item {
display: inline-block;
margin: 0 0 0 1em;
}
.wpcf7-list-item-label::before,
.wpcf7-list-item-label::after {
content: " ";
}
.wpcf7-spinner {
visibility: hidden;
display: inline-block;
background-color: #23282d; opacity: 0.75;
width: 24px;
height: 24px;
border: none;
border-radius: 100%;
padding: 0;
margin: 0 24px;
position: relative;
}
form.submitting .wpcf7-spinner {
visibility: visible;
}
.wpcf7-spinner::before {
content: '';
position: absolute;
background-color: #fbfbfc; top: 4px;
left: 4px;
width: 6px;
height: 6px;
border: none;
border-radius: 100%;
transform-origin: 8px 8px;
animation-name: spin;
animation-duration: 1000ms;
animation-timing-function: linear;
animation-iteration-count: infinite;
}
@media (prefers-reduced-motion: reduce) {
.wpcf7-spinner::before {
animation-name: blink;
animation-duration: 2000ms;
}
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
@keyframes blink {
from {
opacity: 0;
}
50% {
opacity: 1;
}
to {
opacity: 0;
}
}
.wpcf7 [inert] {
opacity: 0.5;
}
.wpcf7 input[type="file"] {
cursor: pointer;
}
.wpcf7 input[type="file"]:disabled {
cursor: default;
}
.wpcf7 .wpcf7-submit:disabled {
cursor: not-allowed;
}
.wpcf7 input[type="url"],
.wpcf7 input[type="email"],
.wpcf7 input[type="tel"] {
direction: ltr;
}
.wpcf7-reflection > output {
display: list-item;
list-style: none;
}
.wpcf7-reflection > output[hidden] {
display: none;
}@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Inter:wght@300;400;500;600;700;800&display=swap"); :root {
--background: #0d0d0f;
--foreground: #f5f5f0;
--card: #1a1a1f;
--card-foreground: #f5f5f0;
--primary: #ff7a3d;
--primary-foreground: #0d0d0f;
--secondary: #252529;
--accent: #ffb366;
--muted: #2d2d33;
--muted-foreground: #a8a8a0;
--border: #333338;
--radius: 0.75rem;
} * {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
min-height: 100%;
background-color: var(--background);
scroll-behavior: smooth;
}
body {
color: var(--foreground);
font-family: 'Inter', sans-serif;
line-height: 1.6;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
overflow-x: hidden;
max-width: 100vw;
}
code, .font-mono {
font-family: 'JetBrains Mono', monospace;
} .container {
max-width: 1200px;
margin: 0 auto;
padding: 0 1rem;
} .text-gradient {
background: linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
} .bg-gradient-sky {
min-height: 100vh;
background: radial-gradient(
ellipse 80% 50% at 50% 0%,
rgba(255, 122, 61, 0.15) 0%,
var(--background) 50%,
var(--background) 100%
);
} .glow-primary {
box-shadow: 0 0 30px -5px rgba(255, 122, 61, 0.5),
0 0 60px -10px rgba(255, 122, 61, 0.3);
}
.card-glow {
transition: all 0.5s ease;
}
.card-glow:hover {
box-shadow: 0 0 40px -10px rgba(255, 122, 61, 0.4),
0 20px 40px -20px rgba(255, 122, 61, 0.2);
transform: translateY(-4px);
} nav {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1000;
background-color: rgba(13, 13, 15, 0.8);
backdrop-filter: blur(12px);
border-bottom: 1px solid var(--border);
}
nav .container {
display: flex;
align-items: center;
justify-content: space-between;
height: 64px;
}
nav a {
text-decoration: none;
color: var(--muted-foreground);
transition: color 0.3s ease;
}
nav a:hover {
color: var(--primary);
}
.nav-logo {
font-size: 1.25rem;
font-weight: 700;
}
.nav-menu {
display: flex;
gap: 2rem;
align-items: center;
list-style: none;
}
.nav-menu a {
font-size: 0.95rem;
}
.btn-primary {
padding: 0.5rem 1.5rem;
background-color: var(--primary);
color: var(--primary-foreground);
border-radius: 9999px;
font-weight: 600;
transition: all 0.3s ease;
}
.btn-primary:hover {
box-shadow: 0 0 30px -5px rgba(255, 122, 61, 0.5);
}
.mobile-menu-button {
display: none;
background: none;
border: none;
color: var(--foreground);
cursor: pointer;
padding: 0.5rem;
}
.mobile-menu {
display: none;
flex-direction: column;
gap: 1rem;
padding: 1rem 0;
}
.mobile-menu.active {
display: flex;
} #hero {
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
padding: 5rem 1rem;
position: relative;
}
#hero h1 {
font-size: clamp(2.5rem, 8vw, 4.5rem);
font-weight: 700;
margin-bottom: 1.5rem;
line-height: 1.2;
}
#hero .subtitle {
font-size: clamp(1.5rem, 4vw, 2rem);
color: var(--accent);
font-weight: 600;
margin-bottom: 1rem;
}
#hero .description {
font-size: clamp(1rem, 2vw, 1.25rem);
color: var(--muted-foreground);
max-width: 800px;
margin: 0 auto 2rem;
}
.hero-buttons {
display: flex;
flex-wrap: wrap;
gap: 1rem;
justify-content: center;
align-items: center;
}
.btn-large {
padding: 1rem 2rem;
font-size: 1rem;
font-weight: 600;
border-radius: 9999px;
text-decoration: none;
transition: all 0.3s ease;
display: inline-block;
}
.btn-outline {
border: 2px solid var(--primary);
color: var(--primary);
background: transparent;
}
.btn-outline:hover {
background-color: var(--primary);
color: var(--primary-foreground);
} section {
padding: 5rem 1rem;
position: relative;
}
section h2 {
font-size: clamp(2rem, 5vw, 3rem);
font-weight: 700;
text-align: center;
margin-bottom: 3rem;
} .card {
background-color: var(--card);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 2rem;
} .about-header {
text-align: center;
margin-bottom: 3rem;
}
.about-underline {
width: 96px;
height: 4px;
margin: 0.75rem auto 0;
border-radius: 9999px;
background: linear-gradient(90deg, var(--primary) 0%, var(--accent) 100%);
}
.about-grid {
display: grid;
grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
gap: 2.5rem;
align-items: flex-start;
}
.about-text p {
font-size: 1.05rem;
color: var(--muted-foreground);
line-height: 1.8;
margin-bottom: 1.25rem;
}
.about-text .text-primary {
color: var(--primary);
}
.about-text .text-accent {
color: var(--accent);
}
.about-highlights {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1rem;
}
.about-highlight-card {
background-color: var(--card);
border-radius: 1rem;
border: 1px solid rgba(255, 255, 255, 0.04);
padding: 1.5rem;
}
.about-highlight-icon {
width: 3rem;
height: 3rem;
border-radius: 0.75rem;
background-color: rgba(255, 122, 61, 0.1);
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 1rem;
}
.about-highlight-icon i {
width: 24px;
height: 24px;
color: var(--primary);
}
.about-highlight-title {
font-size: 1.05rem;
font-weight: 600;
margin-bottom: 0.4rem;
}
.about-highlight-description {
font-size: 0.9rem;
color: var(--muted-foreground);
} .experience-wrapper {
position: relative;
max-width: 900px;
margin: 0 auto;
padding-left: 1.5rem;
overflow-x: hidden;
}
.experience-line {
position: absolute;
left: 1.75rem;
top: 0;
bottom: 0;
width: 2px;
background: linear-gradient(to bottom, var(--primary), var(--accent), rgba(255, 122, 61, 0.2));
opacity: 0.9;
}
.experience-list {
position: relative;
max-width: 900px;
margin: 0 auto;
display: flex;
flex-direction: column;
gap: 1.75rem;
padding: 10px 10px 0 0;
}
.experience-timeline-item {
position: relative;
padding-left: 3.5rem;
}
.experience-dot {
position: absolute;
left: 1.75rem;
top: 1.25rem;
width: 18px;
height: 18px;
border-radius: 9999px;
background-color: var(--card);
border: 2px solid var(--primary);
transform: translateX(-50%);
box-shadow: 0 0 0 4px rgba(255, 122, 61, 0.15);
}
.experience-timeline-item.is-highlight .experience-dot {
background-color: var(--primary);
box-shadow:
0 0 0 4px rgba(255, 122, 61, 0.35),
0 0 25px rgba(255, 122, 61, 0.6);
}
.experience-card {
background-color: var(--card);
border-radius: 1.25rem;
border: 1px solid rgba(255, 255, 255, 0.05);
padding: 1.75rem;
transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}
.experience-timeline-item.is-highlight .experience-card {
background-color: rgba(255, 122, 61, 0.06);
border-color: rgba(255, 122, 61, 0.6);
box-shadow: 0 0 35px -10px rgba(255, 122, 61, 0.7);
}
.experience-card:hover {
transform: translateY(-4px);
box-shadow: 0 20px 40px -20px rgba(0, 0, 0, 0.8);
border-color: rgba(255, 122, 61, 0.4);
}
.experience-card-header {
display: flex;
gap: 1rem;
align-items: flex-start;
}
.experience-icon {
width: 3rem;
height: 3rem;
border-radius: 0.9rem;
background-color: var(--secondary);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.experience-icon i {
width: 22px;
height: 22px;
color: var(--primary);
}
.experience-main {
flex: 1;
}
.experience-meta-top {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
align-items: center;
margin-bottom: 0.35rem;
}
.experience-period {
font-size: 0.8rem;
font-family: 'JetBrains Mono', monospace;
color: var(--primary);
}
.experience-badge {
font-size: 0.7rem;
font-weight: 600;
padding: 0.2rem 0.6rem;
border-radius: 9999px;
background-color: rgba(255, 122, 61, 0.22);
color: var(--primary);
}
.experience-title {
font-size: 1.25rem;
font-weight: 600;
color: var(--foreground);
margin-bottom: 0.15rem;
}
.experience-company {
font-size: 0.95rem;
color: var(--muted-foreground);
margin-bottom: 0.6rem;
}
.experience-description {
color: var(--muted-foreground);
font-size: 0.95rem;
line-height: 1.7;
margin-bottom: 0.75rem;
}
.experience-description p {
margin-bottom: 0.4rem;
}
.experience-tags {
display: flex;
flex-wrap: wrap;
gap: 0.4rem;
}
.experience-tag {
padding: 0.25rem 0.75rem;
border-radius: 9999px;
background-color: var(--secondary);
color: var(--muted-foreground);
font-size: 0.75rem;
font-weight: 500;
} .skills-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 1.5rem;
max-width: 1000px;
margin: 0 auto;
}
.skill-item {
background-color: var(--card);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 1.5rem;
}
.skill-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 0.75rem;
}
.skill-name {
font-size: 1.125rem;
font-weight: 600;
color: var(--foreground);
}
.skill-level {
font-weight: 700;
color: var(--primary);
}
.skill-bar {
width: 100%;
height: 8px;
background-color: var(--secondary);
border-radius: 9999px;
overflow: hidden;
margin-bottom: 0.5rem;
}
.skill-progress {
height: 100%;
background: linear-gradient(90deg, var(--primary) 0%, var(--accent) 100%);
border-radius: 9999px;
transition: width 1s ease;
}
.skill-category {
display: inline-block;
padding: 0.25rem 0.75rem;
font-size: 0.75rem;
font-weight: 600;
color: var(--primary);
background-color: rgba(255, 122, 61, 0.1);
border-radius: 9999px;
margin-top: 0.5rem;
} .certifications-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 1.5rem;
max-width: 900px;
margin: 0 auto 2.5rem;
}
.certification-item {
background-color: var(--card);
border: 1px solid var(--border);
border-radius: 1.25rem;
padding: 1.75rem;
position: relative;
overflow: hidden;
}
.certification-icon {
width: 80px;
height: 80px;
margin: 0 auto 1rem;
background-color: rgba(255, 122, 61, 0.2);
border-radius: var(--radius);
display: flex;
align-items: center;
justify-content: center;
}
.certification-name {
font-size: 1.25rem;
font-weight: 700;
color: var(--foreground);
margin-bottom: 0.5rem;
}
.certification-card::before {
content: "";
position: absolute;
inset: 0;
background: radial-gradient(circle at top left, rgba(255, 122, 61, 0.18), transparent 55%),
radial-gradient(circle at bottom right, rgba(255, 179, 102, 0.16), transparent 55%);
opacity: 0;
transition: opacity 0.4s ease;
}
.certification-card:hover::before {
opacity: 1;
}
.certification-inner {
position: relative;
display: flex;
gap: 1rem;
align-items: flex-start;
}
.certification-emoji {
font-size: 2rem;
flex-shrink: 0;
}
.certification-content {
flex: 1;
}
.certification-meta {
display: flex;
flex-wrap: wrap;
gap: 0.45rem;
align-items: center;
margin-bottom: 0.35rem;
}
.certification-award {
width: 16px;
height: 16px;
color: var(--primary);
}
.certification-issuer {
font-size: 0.75rem;
font-family: 'JetBrains Mono', monospace;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--primary);
}
.certification-separator {
color: var(--muted-foreground);
font-size: 0.75rem;
}
.certification-date {
font-size: 0.75rem;
color: var(--muted-foreground);
}
.certification-description {
color: var(--muted-foreground);
font-size: 0.9rem;
line-height: 1.6;
}
.certification-description p {
margin-bottom: 0.35rem;
} .education-card {
max-width: 900px;
margin: 2.5rem auto 2.5rem;
padding: 2.25rem;
border-radius: 1.5rem;
background: radial-gradient(circle at top left, rgba(255, 122, 61, 0.18), transparent 60%),
radial-gradient(circle at bottom right, rgba(37, 37, 41, 0.9), rgba(26, 26, 31, 1));
border: 1px solid rgba(255, 255, 255, 0.08);
}
.education-header {
display: flex;
align-items: center;
gap: 1rem;
margin-bottom: 1.25rem;
}
.education-icon-wrapper {
width: 3rem;
height: 3rem;
border-radius: 0.9rem;
background-color: rgba(255, 122, 61, 0.16);
display: flex;
align-items: center;
justify-content: center;
}
.education-emoji {
font-size: 1.8rem;
}
.education-title {
font-size: 1.25rem;
font-weight: 700;
color: var(--foreground);
}
.education-institution {
font-size: 0.9rem;
color: var(--muted-foreground);
}
.education-badges {
display: flex;
flex-wrap: wrap;
gap: 0.75rem;
align-items: center;
}
.education-badge-main {
padding: 0.5rem 1rem;
border-radius: 0.75rem;
background-color: rgba(255, 122, 61, 0.18);
color: var(--primary);
font-weight: 600;
font-size: 0.95rem;
}
.education-badge-secondary {
font-size: 0.9rem;
color: var(--muted-foreground);
}
.education-separator-dot {
color: var(--muted-foreground);
font-size: 0.9rem;
} .projects-wrapper {
max-width: 900px;
margin: 2.5rem auto 0;
}
.projects-header {
text-align: center;
margin-bottom: 2rem;
}
.projects-title {
font-size: 1.4rem;
font-weight: 700;
color: var(--foreground);
}
.projects-subtitle {
font-size: 0.95rem;
color: var(--muted-foreground);
}
.projects-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1.5rem;
}
.project-card {
background-color: var(--card);
border-radius: 1.25rem;
border: 1px solid rgba(255, 255, 255, 0.06);
padding: 1.75rem;
position: relative;
overflow: hidden;
}
.project-card::before {
content: "";
position: absolute;
inset: 0;
background: radial-gradient(circle at top left, rgba(255, 122, 61, 0.16), transparent 55%),
radial-gradient(circle at bottom, rgba(255, 179, 102, 0.12), transparent 55%);
opacity: 0;
transition: opacity 0.4s ease;
}
.project-card:hover::before {
opacity: 1;
}
.project-inner {
position: relative;
display: flex;
gap: 1rem;
align-items: flex-start;
}
.project-emoji {
font-size: 2rem;
flex-shrink: 0;
}
.project-content {
flex: 1;
}
.project-meta {
display: flex;
align-items: center;
gap: 0.5rem;
margin-bottom: 0.35rem;
}
.project-code-icon {
width: 18px;
height: 18px;
color: var(--primary);
}
.project-role {
font-size: 0.8rem;
font-family: 'JetBrains Mono', monospace;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--primary);
}
.project-name {
font-size: 1.1rem;
font-weight: 600;
color: var(--foreground);
margin-bottom: 0.4rem;
}
.project-description {
font-size: 0.9rem;
color: var(--muted-foreground);
line-height: 1.6;
margin-bottom: 0.75rem;
}
.project-tags {
display: flex;
flex-wrap: wrap;
gap: 0.35rem;
margin-bottom: 0.75rem;
}
.project-tag {
padding: 0.2rem 0.65rem;
border-radius: 9999px;
background-color: var(--secondary);
color: var(--muted-foreground);
font-size: 0.75rem;
}
.project-link-wrapper {
margin-top: 0.25rem;
}
.project-link {
display: inline-flex;
align-items: center;
gap: 0.35rem;
padding: 0.45rem 0.9rem;
border-radius: 9999px;
border: 1px solid rgba(255, 122, 61, 0.6);
color: var(--primary);
font-size: 0.8rem;
text-decoration: none;
transition: background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}
.project-link:hover {
background-color: rgba(255, 122, 61, 0.15);
border-color: rgba(255, 122, 61, 0.9);
color: var(--primary);
} .contact-content {
max-width: 900px;
margin: 0 auto;
text-align: center;
}
.contact-mail-wrapper {
margin-bottom: 3rem;
}
.contact-mail-button {
display: inline-flex;
align-items: center;
gap: 1rem;
padding: 1.25rem 2.5rem;
border-radius: 9999px;
background: linear-gradient(135deg, rgba(255, 122, 61, 0.15), rgba(255, 90, 40, 0.1));
border: 2px solid rgba(255, 122, 61, 0.5);
color: var(--foreground);
text-decoration: none;
font-size: 1.1rem;
font-weight: 600;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
}
.contact-mail-button::before {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(135deg, rgba(255, 122, 61, 0.3), rgba(255, 90, 40, 0.2));
opacity: 0;
transition: opacity 0.4s ease;
}
.contact-mail-button:hover {
transform: translateY(-4px) scale(1.02);
border-color: rgba(255, 122, 61, 0.9);
box-shadow: 0 20px 40px -15px rgba(255, 122, 61, 0.4);
}
.contact-mail-button:hover::before {
opacity: 1;
}
.mail-icon-container {
position: relative;
width: 48px;
height: 48px;
display: flex;
align-items: center;
justify-content: center;
}
.mail-envelope {
position: relative;
z-index: 2;
width: 48px;
height: 48px;
background: linear-gradient(135deg, var(--primary), #ff5a28);
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
animation: mailPulse 2s ease-in-out infinite;
}
.mail-icon {
width: 24px;
height: 24px;
color: white;
}
.contact-mail-button:hover .mail-envelope {
animation: mailBounce 0.6s ease-in-out;
}
.mail-sparkles {
position: absolute;
inset: -8px;
pointer-events: none;
}
.sparkle {
position: absolute;
width: 6px;
height: 6px;
background: var(--primary);
border-radius: 50%;
opacity: 0;
}
.sparkle-1 {
top: 0;
left: 50%;
animation: sparkleFloat 2s ease-in-out infinite;
}
.sparkle-2 {
top: 30%;
right: 0;
animation: sparkleFloat 2s ease-in-out infinite 0.3s;
}
.sparkle-3 {
bottom: 10%;
left: 10%;
animation: sparkleFloat 2s ease-in-out infinite 0.6s;
}
.contact-mail-button:hover .sparkle {
animation: sparkleExplode 0.6s ease-out forwards;
}
.contact-mail-button:hover .sparkle-2 {
animation-delay: 0.1s;
}
.contact-mail-button:hover .sparkle-3 {
animation-delay: 0.2s;
}
.mail-button-text {
position: relative;
z-index: 2;
}
.mail-arrow {
width: 20px;
height: 20px;
color: var(--primary);
position: relative;
z-index: 2;
transition: transform 0.3s ease;
}
.contact-mail-button:hover .mail-arrow {
transform: translateX(4px);
}
.contact-subtitle {
margin-top: 1rem;
color: var(--muted-foreground);
font-size: 1rem;
} .contact-info-grid {
display: flex;
justify-content: center;
flex-wrap: wrap;
gap: 1.5rem;
}
.contact-info-card {
display: flex;
align-items: center;
gap: 1rem;
padding: 1.25rem 1.75rem;
background: var(--card);
border: 1px solid var(--border);
border-radius: 1rem;
transition: all 0.3s ease;
}
.contact-info-card:hover {
border-color: rgba(255, 122, 61, 0.5);
transform: translateY(-2px);
}
.contact-info-icon {
width: 44px;
height: 44px;
background: linear-gradient(135deg, rgba(255, 122, 61, 0.2), rgba(255, 90, 40, 0.1));
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.contact-info-icon svg {
width: 22px;
height: 22px;
color: var(--primary);
}
.contact-info-content {
text-align: left;
}
.contact-label {
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--muted-foreground);
margin-bottom: 0.25rem;
}
.contact-value {
color: var(--foreground);
font-weight: 500;
text-decoration: none;
transition: color 0.3s ease;
}
a.contact-value:hover {
color: var(--primary);
} @keyframes mailPulse {
0%, 100% {
box-shadow: 0 0 0 0 rgba(255, 122, 61, 0.4);
}
50% {
box-shadow: 0 0 20px 5px rgba(255, 122, 61, 0.2);
}
}
@keyframes mailBounce {
0%, 100% {
transform: translateY(0) rotate(0deg);
}
25% {
transform: translateY(-8px) rotate(-5deg);
}
50% {
transform: translateY(-4px) rotate(3deg);
}
75% {
transform: translateY(-6px) rotate(-2deg);
}
}
@keyframes sparkleFloat {
0%, 100% {
opacity: 0;
transform: scale(0.5);
}
50% {
opacity: 0.6;
transform: scale(1);
}
}
@keyframes sparkleExplode {
0% {
opacity: 1;
transform: scale(1) translate(0, 0);
}
100% {
opacity: 0;
transform: scale(1.5) translate(var(--tx, 10px), var(--ty, -10px));
}
}
.sparkle-1 { --tx: 0; --ty: -15px; }
.sparkle-2 { --tx: 15px; --ty: 5px; }
.sparkle-3 { --tx: -15px; --ty: 10px; } .technologies-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
gap: 1.5rem;
max-width: 1000px;
margin: 0 auto;
}
.technology-item {
background-color: var(--card);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 1.5rem;
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.technology-item svg {
width: 48px;
height: 48px;
color: var(--primary);
margin-bottom: 0.75rem;
}
.technology-name {
font-weight: 600;
color: var(--foreground);
} footer {
background-color: var(--card);
border-top: 1px solid var(--border);
padding: 3rem 1rem;
}
.footer-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 2rem;
margin-bottom: 2rem;
}
.footer-section h3 {
font-size: 1.25rem;
font-weight: 700;
margin-bottom: 1rem;
}
.footer-section p,
.footer-section a {
color: var(--muted-foreground);
text-decoration: none;
line-height: 1.8;
}
.footer-section a:hover {
color: var(--primary);
}
.footer-section ul {
list-style: none;
}
.footer-section li {
margin-bottom: 0.5rem;
}
.footer-process-wrapper {
max-width: 1200px;
margin: 2.5rem auto 2rem;
overflow-x: auto;
overflow-y: visible;
padding: 0.5rem 0;
}
.footer-process-track {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: stretch;
gap: 1.5rem;
position: relative;
padding: 1.5rem 0;
min-width: min-content;
}
.footer-process-track::before {
content: "";
position: absolute;
left: 0;
right: 0;
top: 50%;
height: 2px;
background: linear-gradient(90deg, rgba(148, 163, 184, 0.25), rgba(148, 163, 184, 0.08));
z-index: 0;
}
.footer-process-link {
text-decoration: none;
color: inherit;
display: block;
flex-shrink: 0;
position: relative;
z-index: 1;
min-width: 190px;
width: 190px;
border-radius: 1.5rem;
border: 1px solid rgba(255, 255, 255, 0.12);
background: var(--card);
padding: 1.35rem 1.4rem 1.25rem;
opacity: 1 !important;
transform: none !important;
transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
cursor: pointer;
pointer-events: auto;
}
.footer-process-link:hover {
transform: translateY(-6px) !important;
box-shadow: 0 24px 45px -25px rgba(0, 0, 0, 0.95);
border-color: rgba(255, 122, 61, 0.7);
}
.footer-process-step {
display: flex;
flex-direction: column;
gap: 0.6rem;
pointer-events: none;
}
.footer-process-icon {
width: 3rem;
height: 3rem;
border-radius: 1.3rem;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 0.5rem;
color: #fff;
}
.footer-process-icon i {
width: 20px;
height: 20px;
}
.footer-process-title {
font-size: 0.95rem;
font-weight: 600;
color: var(--foreground);
}
.footer-process-step-caption {
font-size: 0.75rem;
font-family: 'JetBrains Mono', monospace;
color: var(--muted-foreground);
}
.footer-process-link.step-green .footer-process-icon {
background: linear-gradient(135deg, #22c55e, #16a34a);
}
.footer-process-link.step-blue .footer-process-icon {
background: linear-gradient(135deg, #38bdf8, #0ea5e9);
}
.footer-process-link.step-purple .footer-process-icon {
background: linear-gradient(135deg, #a855f7, #7c3aed);
}
.footer-process-link.step-orange .footer-process-icon {
background: linear-gradient(135deg, #fb923c, #f97316);
}
.footer-process-link.step-pink .footer-process-icon {
background: linear-gradient(135deg, #fb7185, #ec4899);
}
.footer-process-link.step-teal .footer-process-icon {
background: linear-gradient(135deg, #2dd4bf, #14b8a6);
}
.footer-process-link.step-amber .footer-process-icon {
background: linear-gradient(135deg, #fbbf24, #f59e0b);
}
.footer-bottom {
border-top: 1px solid var(--border);
padding-top: 2rem;
text-align: center;
color: var(--muted-foreground);
} .page-content {
min-height: 60vh;
}
.page-body {
color: var(--foreground);
line-height: 1.8;
}
.page-body p {
margin-bottom: 1.5rem;
}
.page-body h2 {
font-size: 1.75rem;
font-weight: 700;
margin-top: 2rem;
margin-bottom: 1rem;
color: var(--foreground);
}
.page-body h3 {
font-size: 1.35rem;
font-weight: 600;
margin-top: 1.5rem;
margin-bottom: 0.75rem;
color: var(--foreground);
}
.page-body ul, .page-body ol {
margin-bottom: 1.5rem;
padding-left: 1.5rem;
}
.page-body li {
margin-bottom: 0.5rem;
}
.page-body a {
color: var(--primary);
text-decoration: underline;
transition: color 0.2s ease;
}
.page-body a:hover {
color: var(--accent);
} #starfield {
position: fixed;
inset: 0;
z-index: 0;
pointer-events: none;
overflow: hidden;
}
.starfield-gradient {
position: absolute;
inset: 0;
background:
radial-gradient(ellipse 100% 60% at 50% -10%, rgba(var(--primary-rgb, 255, 122, 61), 0.35) 0%, transparent 60%),
radial-gradient(ellipse 60% 40% at 80% 20%, rgba(var(--primary-rgb, 255, 122, 61), 0.25) 0%, transparent 50%),
radial-gradient(ellipse 50% 30% at 20% 30%, rgba(var(--accent-rgb, 255, 180, 90), 0.2) 0%, transparent 50%),
var(--background);
z-index: 0;
} .clouds-gradient {
position: absolute;
inset: 0;
background:
radial-gradient(ellipse 120% 80% at 50% 0%, rgba(var(--primary-rgb, 255, 122, 61), 0.2) 0%, transparent 50%),
linear-gradient(180deg, rgba(var(--primary-rgb, 255, 122, 61), 0.1) 0%, transparent 30%),
var(--background);
z-index: 0;
}
.cloud {
position: absolute;
background: radial-gradient(ellipse at center, 
rgba(var(--primary-rgb, 255, 122, 61), 0.15) 0%, 
rgba(var(--primary-rgb, 255, 122, 61), 0.05) 40%, 
transparent 70%);
border-radius: 50%;
filter: blur(40px);
animation: cloudFloat 20s ease-in-out infinite;
}
.cloud-1 {
width: 400px;
height: 200px;
top: 5%;
left: -10%;
animation-duration: 25s;
}
.cloud-2 {
width: 300px;
height: 150px;
top: 15%;
right: -5%;
animation-duration: 30s;
animation-delay: -5s;
}
.cloud-3 {
width: 350px;
height: 180px;
top: 25%;
left: 20%;
animation-duration: 22s;
animation-delay: -10s;
}
.cloud-4 {
width: 280px;
height: 140px;
top: 10%;
right: 25%;
animation-duration: 28s;
animation-delay: -15s;
}
@keyframes cloudFloat {
0%, 100% {
transform: translateX(0) translateY(0);
opacity: 0.6;
}
25% {
transform: translateX(30px) translateY(-10px);
opacity: 0.8;
}
50% {
transform: translateX(50px) translateY(5px);
opacity: 0.7;
}
75% {
transform: translateX(20px) translateY(-5px);
opacity: 0.9;
}
}
.light-beam {
position: absolute;
top: 0;
width: 2px;
height: 70vh;
pointer-events: none;
filter: blur(1px);
opacity: 0.7;
animation: beamPulse 3s ease-in-out infinite;
}
.light-beam.main-beam {
left: 50%;
transform: translateX(-50%);
background: linear-gradient(180deg,
transparent 0%,
rgba(255, 122, 61, 0.3) 10%,
rgba(255, 122, 61, 0.9) 40%,
rgba(255, 179, 102, 1) 60%,
rgba(255, 122, 61, 0.3) 90%,
transparent 100%
);
box-shadow:
0 0 20px 5px rgba(255, 122, 61, 0.4),
0 0 60px 15px rgba(255, 122, 61, 0.2),
0 0 100px 30px rgba(255, 122, 61, 0.1);
}
.light-beam.side-beam {
width: 1px;
height: 40vh;
opacity: 0.4;
}
.light-beam.side-beam.left {
left: 30%;
animation-duration: 4s;
animation-delay: 1s;
}
.light-beam.side-beam.right {
left: 70%;
animation-duration: 4.5s;
animation-delay: 2s;
}
.star {
position: absolute;
border-radius: 50%;
animation: twinkle 3s ease-in-out infinite;
z-index: 1;
} @keyframes twinkle {
0%, 100% { opacity: 0.3; transform: scale(1); }
50% { opacity: 1; transform: scale(1.2); }
}
@keyframes beamPulse {
0%, 100% {
opacity: 0.4;
filter: blur(1px);
}
50% {
opacity: 1;
filter: blur(2px);
}
}
@keyframes slideUp {
from { opacity: 0; transform: translateY(30px); }
to { opacity: 1; transform: translateY(0); }
}
.animate-slide-up {
animation: slideUp 0.8s ease-out forwards;
} .reveal-on-scroll {
opacity: 0;
transform: translateY(24px);
transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.reveal-on-scroll.reveal-visible {
opacity: 1;
transform: translateY(0);
} @media (max-width: 768px) {
.nav-menu {
display: none;
}
.mobile-menu-button {
display: block;
}
.about-grid,
.about-highlights,
.skills-grid,
.certifications-grid,
.projects-grid,
.technologies-grid {
grid-template-columns: 1fr;
}
.experience-wrapper {
padding-left: 1rem;
}
.experience-line {
left: 1.25rem;
}
.experience-timeline-item {
padding-left: 3rem;
}
.experience-dot {
left: 1.25rem;
}
}
@media (max-width: 480px) {
.container {
padding: 0 0.75rem;
}
section {
padding: 3.5rem 0.75rem;
}
.experience-card,
.skill-item,
.certification-item,
.project-card,
.education-card {
padding: 1.25rem;
}
.experience-title,
.certification-name,
.project-name {
font-size: 1.05rem;
}
.experience-description,
.certification-description,
.project-description,
.about-text p {
font-size: 0.9rem;
}
} .rocket-button {
position: fixed;
bottom: 2rem;
right: 2rem;
width: 56px;
height: 56px;
border: none;
background: linear-gradient(135deg, var(--primary), #ff5a28);
border-radius: 50%;
cursor: pointer;
z-index: 1000;
display: flex;
align-items: center;
justify-content: center;
opacity: 0;
visibility: hidden;
transform: translateY(20px) rotate(0deg);
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow: 0 4px 20px rgba(255, 122, 61, 0.4);
overflow: visible;
}
.rocket-button.visible {
opacity: 1;
visibility: visible;
transform: translateY(0) rotate(-45deg);
}
.rocket-button:hover {
transform: translateY(-4px) rotate(-45deg) scale(1.1);
box-shadow: 0 8px 30px rgba(255, 122, 61, 0.6);
}
.rocket-button.launching {
animation: rocketLaunch 1s ease-out forwards;
}
.rocket-body {
position: relative;
z-index: 2;
display: flex;
align-items: center;
justify-content: center;
}
.rocket-icon {
width: 24px;
height: 24px;
color: white;
}
.rocket-flames {
position: absolute;
bottom: -8px;
left: 50%;
transform: translateX(-50%) rotate(45deg);
display: flex;
gap: 2px;
opacity: 0;
transition: opacity 0.3s ease;
}
.rocket-button:hover .rocket-flames,
.rocket-button.launching .rocket-flames {
opacity: 1;
}
.flame {
width: 6px;
height: 16px;
background: linear-gradient(to bottom, #ffb366, #ff7a3d, #ff4500);
border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
animation: flameFlicker 0.15s ease-in-out infinite alternate;
}
.flame-1 {
height: 12px;
animation-delay: 0s;
}
.flame-2 {
height: 18px;
animation-delay: 0.05s;
}
.flame-3 {
height: 12px;
animation-delay: 0.1s;
}
.rocket-button.launching .flame {
animation: flameBurst 0.2s ease-in-out infinite alternate;
}
.rocket-button.launching .flame-2 {
height: 28px;
}
@keyframes flameFlicker {
0% {
transform: scaleY(1) scaleX(1);
opacity: 0.8;
}
100% {
transform: scaleY(1.2) scaleX(0.9);
opacity: 1;
}
}
@keyframes flameBurst {
0% {
transform: scaleY(1) scaleX(1);
opacity: 1;
}
100% {
transform: scaleY(1.5) scaleX(0.8);
opacity: 1;
}
}
@keyframes rocketLaunch {
0% {
transform: translateY(0) rotate(-45deg) scale(1);
}
30% {
transform: translateY(10px) rotate(-45deg) scale(1.1);
}
100% {
transform: translateY(-100vh) rotate(-45deg) scale(0.5);
opacity: 0;
}
} @media (max-width: 768px) {
.rocket-button {
bottom: 1.5rem;
right: 1.5rem;
width: 48px;
height: 48px;
}
.rocket-icon {
width: 20px;
height: 20px;
}
} .relative { position: relative; }
.z-10 { z-index: 10; }
.hidden { display: none; }