Files
ZanePersonal/styles.css
2025-09-23 21:18:33 -04:00

838 lines
16 KiB
CSS

/* Reset and base styles */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Inter', sans-serif;
background-color: #1a1a1a;
color: #ffffff;
min-height: 100vh;
overflow-x: hidden;
position: relative;
cursor: none;
}
/* Custom Cursor */
.custom-cursor {
position: fixed;
width: 20px;
height: 20px;
background: radial-gradient(circle, rgba(0, 122, 204, 0.8) 0%, rgba(0, 122, 204, 0.4) 50%, transparent 100%);
border-radius: 50%;
pointer-events: none;
z-index: 9999;
transition: transform 0.1s ease;
mix-blend-mode: difference;
}
.custom-cursor-trail {
position: fixed;
width: 8px;
height: 8px;
background: rgba(0, 122, 204, 0.6);
border-radius: 50%;
pointer-events: none;
z-index: 9998;
transition: all 0.3s ease;
}
/* Grid background */
body::before {
content: '';
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-image:
radial-gradient(circle, #333 1px, transparent 1px);
background-size: 30px 30px;
background-position: 0 0, 15px 15px;
opacity: 0.3;
z-index: -1;
pointer-events: none;
animation: gridMove 20s linear infinite;
}
@keyframes gridMove {
0% { transform: translate(0, 0); }
100% { transform: translate(30px, 30px); }
}
/* Animated gradient background */
body::after {
content: '';
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(-45deg, #1a1a1a, #2a2a2a, #1a1a1a, #333);
background-size: 400% 400%;
animation: gradientShift 15s ease infinite;
z-index: -2;
pointer-events: none;
}
@keyframes gradientShift {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
/* Main container */
.container {
min-height: 100vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
position: relative;
padding: 2rem;
}
/* Avatar Section */
.avatar-section {
display: flex;
flex-direction: column;
align-items: center;
margin-bottom: 3rem;
position: relative;
filter: drop-shadow(0 0 20px rgba(0, 122, 204, 0.3));
}
.avatar {
width: 120px;
height: 120px;
border-radius: 50%;
background: linear-gradient(135deg, #2a2a2a, #1a1a1a);
border: 3px solid #333;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 1.5rem;
box-shadow:
0 8px 32px rgba(0, 0, 0, 0.3),
0 0 0 0 rgba(0, 122, 204, 0.4),
inset 0 0 20px rgba(0, 122, 204, 0.1);
position: relative;
overflow: hidden;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
cursor: pointer;
transform-style: preserve-3d;
}
.avatar::before {
content: '';
position: absolute;
top: -3px;
left: -3px;
right: -3px;
bottom: -3px;
background: linear-gradient(45deg, #007acc, #00aaff, #007acc, #00aaff);
border-radius: 50%;
z-index: -1;
opacity: 0;
transition: opacity 0.3s ease;
animation: rotate 3s linear infinite;
}
.avatar:hover::before {
opacity: 1;
}
.avatar:hover {
transform: scale(1.1) rotateY(10deg) rotateX(5deg);
box-shadow:
0 15px 50px rgba(0, 0, 0, 0.4),
0 0 30px rgba(0, 122, 204, 0.6),
inset 0 0 30px rgba(0, 122, 204, 0.2);
border-color: #007acc;
}
@keyframes rotate {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* Profile Image */
.profile-image {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 50%;
animation: slowSpin 60s linear infinite;
}
@keyframes slowSpin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
/* Brand Name */
.brand-name {
font-size: 2.5rem;
font-weight: 600;
background: linear-gradient(135deg, #ffffff, #007acc, #00aaff, #ff6b6b, #4ecdc4);
background-size: 300% 300%;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
text-align: center;
letter-spacing: -0.02em;
margin-bottom: 0.5rem;
animation: gradientText 4s ease infinite, neonPulse 2s ease-in-out infinite alternate;
cursor: pointer;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
text-shadow:
0 0 5px rgba(0, 122, 204, 0.5),
0 0 10px rgba(0, 122, 204, 0.3),
0 0 15px rgba(0, 122, 204, 0.2);
position: relative;
}
.brand-name:hover {
transform: scale(1.1) rotateX(5deg);
filter: drop-shadow(0 0 20px rgba(0, 122, 204, 0.8));
text-shadow:
0 0 10px rgba(0, 122, 204, 0.8),
0 0 20px rgba(0, 122, 204, 0.6),
0 0 30px rgba(0, 122, 204, 0.4);
}
@keyframes gradientText {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
@keyframes neonPulse {
0% {
filter: drop-shadow(0 0 5px rgba(0, 122, 204, 0.5));
text-shadow:
0 0 5px rgba(0, 122, 204, 0.5),
0 0 10px rgba(0, 122, 204, 0.3),
0 0 15px rgba(0, 122, 204, 0.2);
}
100% {
filter: drop-shadow(0 0 15px rgba(0, 122, 204, 0.8));
text-shadow:
0 0 10px rgba(0, 122, 204, 0.8),
0 0 20px rgba(0, 122, 204, 0.6),
0 0 30px rgba(0, 122, 204, 0.4);
}
}
/* Tagline */
.tagline {
font-size: 1.1rem;
color: #888;
text-align: center;
font-weight: 400;
margin-bottom: 2rem;
position: relative;
animation: fadeInUp 1s ease 0.8s both;
}
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* About Section */
.about-section {
max-width: 600px;
text-align: center;
margin-bottom: 3rem;
position: relative;
animation: slideInLeft 1s ease 1s both;
}
@keyframes slideInLeft {
from {
opacity: 0;
transform: translateX(-30px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
.about-text {
font-size: 1.1rem;
line-height: 1.7;
color: #ccc;
font-weight: 400;
}
/* Navigation */
.navigation {
display: flex;
flex-direction: column;
gap: 1rem;
position: relative;
align-items: center;
animation: slideInRight 1s ease 1.2s both;
}
@keyframes slideInRight {
from {
opacity: 0;
transform: translateX(30px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
.nav-button {
background: linear-gradient(135deg, #2a2a2a, #1a1a1a);
border: 2px solid #333;
border-radius: 12px;
padding: 1rem 2rem;
color: #ffffff;
font-size: 1.1rem;
font-weight: 500;
font-family: 'Inter', sans-serif;
cursor: pointer;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
min-width: 140px;
text-align: center;
position: relative;
overflow: hidden;
text-decoration: none;
display: inline-block;
box-shadow:
0 4px 15px rgba(0, 0, 0, 0.2),
0 0 0 0 rgba(0, 122, 204, 0.3);
transform-style: preserve-3d;
}
.nav-button::after {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(0, 122, 204, 0.3), transparent);
transition: left 0.6s ease;
}
.nav-button:hover::after {
left: 100%;
}
.nav-button.active {
background: #333;
border-color: #444;
}
.nav-button::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
transition: left 0.5s ease;
}
.nav-button:hover::before {
left: 100%;
}
.nav-button:hover {
background: linear-gradient(135deg, #333, #2a2a2a);
border-color: #007acc;
transform: translateY(-5px) scale(1.05) rotateX(5deg);
box-shadow:
0 15px 40px rgba(0, 122, 204, 0.4),
0 0 20px rgba(0, 122, 204, 0.6);
text-shadow: 0 0 10px rgba(0, 122, 204, 0.8);
}
.nav-button:active {
transform: translateY(0);
}
/* Disclaimer */
.disclaimer {
position: fixed;
bottom: 2rem;
left: 2rem;
color: #666;
font-size: 0.9rem;
font-style: italic;
}
.disclaimer p {
margin: 0;
}
/* Content Sections */
.content-section {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(26, 26, 26, 0.95);
backdrop-filter: blur(10px);
display: none;
align-items: center;
justify-content: center;
z-index: 1000;
opacity: 0;
transition: opacity 0.3s ease;
}
.content-section.active {
display: flex;
opacity: 1;
}
.content-wrapper {
max-width: 800px;
padding: 2rem;
text-align: center;
}
.content-wrapper h2 {
font-size: 2.5rem;
margin-bottom: 2rem;
color: #ffffff;
}
.project-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 2rem;
margin-top: 2rem;
}
.project-card {
background: #2a2a2a;
border: 2px solid #333;
border-radius: 12px;
padding: 2rem;
transition: all 0.3s ease;
}
.project-card:hover {
transform: translateY(-5px);
border-color: #444;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
}
.project-card h3 {
color: #ffffff;
margin-bottom: 1rem;
font-size: 1.3rem;
}
.project-card p {
color: #ccc;
line-height: 1.6;
}
.github-link {
text-decoration: none;
display: inline-block;
margin-top: 2rem;
}
.github-button {
background: #333;
border: 2px solid #444;
border-radius: 12px;
padding: 1rem 2rem;
color: #ffffff;
font-size: 1.1rem;
font-weight: 500;
cursor: pointer;
transition: all 0.3s ease;
font-family: 'Inter', sans-serif;
}
.github-button:hover {
background: #444;
border-color: #555;
transform: translateY(-2px);
}
.contact-info {
margin-top: 2rem;
}
.contact-methods {
display: flex;
justify-content: center;
gap: 2rem;
margin-top: 2rem;
flex-wrap: wrap;
}
.contact-link {
color: #ffffff;
text-decoration: none;
padding: 1rem 2rem;
border: 2px solid #333;
border-radius: 12px;
background: #2a2a2a;
transition: all 0.3s ease;
font-weight: 500;
}
.contact-link:hover {
background: #333;
border-color: #444;
transform: translateY(-2px);
}
/* Projects Page Specific Styles */
.projects-main-content {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(26, 26, 26, 0.95);
backdrop-filter: blur(10px);
display: flex;
align-items: center;
justify-content: center;
z-index: 1000;
overflow-y: auto;
padding: 2rem 0;
}
.projects-intro {
color: #ccc;
font-size: 1.2rem;
margin-bottom: 3rem;
text-align: center;
}
.project-tech {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
margin: 1rem 0;
}
.tech-tag {
background: #333;
color: #ffffff;
padding: 0.3rem 0.8rem;
border-radius: 20px;
font-size: 0.8rem;
font-weight: 500;
border: 1px solid #444;
}
.project-links {
display: flex;
gap: 1rem;
margin-top: 1.5rem;
}
.project-link {
color: #ffffff;
text-decoration: none;
padding: 0.5rem 1rem;
border: 1px solid #333;
border-radius: 8px;
background: #2a2a2a;
transition: all 0.3s ease;
font-size: 0.9rem;
font-weight: 500;
}
.project-link:hover {
background: #333;
border-color: #444;
transform: translateY(-1px);
}
.contact-message {
font-size: 1.5rem;
color: #ffffff;
font-weight: 500;
text-align: center;
margin-top: 2rem;
}
/* Skills Section */
.skills-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 2rem;
margin-top: 2rem;
}
.skill-category {
background: #2a2a2a;
border: 2px solid #333;
border-radius: 12px;
padding: 2rem;
transition: all 0.3s ease;
}
.skill-category:hover {
transform: translateY(-5px);
border-color: #444;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
}
.skill-category h3 {
color: #ffffff;
margin-bottom: 1.5rem;
font-size: 1.3rem;
text-align: center;
}
.skill-tags {
display: flex;
flex-wrap: wrap;
gap: 0.8rem;
justify-content: center;
}
.skill-tag {
background: linear-gradient(135deg, #333, #444);
color: #ffffff;
padding: 0.5rem 1rem;
border-radius: 25px;
font-size: 0.9rem;
font-weight: 500;
border: 1px solid #555;
transition: all 0.3s ease;
}
.skill-tag:hover {
background: linear-gradient(135deg, #444, #555);
transform: translateY(-2px);
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
}
/* Featured Project Styles */
.project-card.featured {
border: 2px solid #007acc;
background: linear-gradient(135deg, #2a2a2a, #1f1f1f);
position: relative;
overflow: hidden;
}
.project-card.featured::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 3px;
background: linear-gradient(90deg, #007acc, #00aaff, #007acc);
animation: shimmer 2s infinite;
}
@keyframes shimmer {
0% { transform: translateX(-100%); }
100% { transform: translateX(100%); }
}
.project-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 1rem;
}
.featured-badge {
background: linear-gradient(135deg, #007acc, #00aaff);
color: #ffffff;
padding: 0.3rem 0.8rem;
border-radius: 15px;
font-size: 0.8rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
}
/* Close button for content sections */
.close-button {
position: absolute;
top: 2rem;
right: 2rem;
background: none;
border: none;
color: #666;
font-size: 2rem;
cursor: pointer;
transition: color 0.3s ease;
z-index: 1001;
}
.close-button:hover {
color: #ffffff;
transform: scale(1.1);
}
/* Scroll Animation Classes */
.animate-in {
animation: slideInUp 0.6s ease forwards;
}
@keyframes slideInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Enhanced hover effects */
.project-card {
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.project-card:hover {
transform: translateY(-8px) scale(1.02);
box-shadow: 0 15px 40px rgba(0, 0, 0, 0.4);
}
/* Improved tech tag styling */
.tech-tag {
background: linear-gradient(135deg, #333, #444);
color: #ffffff;
padding: 0.4rem 0.9rem;
border-radius: 20px;
font-size: 0.85rem;
font-weight: 500;
border: 1px solid #444;
transition: all 0.3s ease;
display: inline-block;
}
.tech-tag:hover {
background: linear-gradient(135deg, #444, #555);
transform: translateY(-2px);
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
}
/* Responsive Design */
@media (max-width: 768px) {
.container {
padding: 1rem;
}
.avatar-section {
margin-bottom: 2rem;
}
.navigation {
align-items: center;
}
.brand-name {
font-size: 2rem;
}
.tagline {
font-size: 1rem;
}
.about-text {
font-size: 1rem;
}
.nav-button {
min-width: 120px;
padding: 0.8rem 1.5rem;
font-size: 1rem;
}
.content-wrapper {
padding: 1rem;
}
.content-wrapper h2 {
font-size: 2rem;
}
.project-grid {
grid-template-columns: 1fr;
gap: 1rem;
}
.skills-grid {
grid-template-columns: 1fr;
gap: 1rem;
}
.contact-methods {
flex-direction: column;
align-items: center;
gap: 1rem;
}
.disclaimer {
bottom: 1rem;
left: 1rem;
font-size: 0.8rem;
}
.close-button {
top: 1rem;
right: 1rem;
font-size: 1.5rem;
}
}
@media (max-width: 480px) {
.avatar {
width: 100px;
height: 100px;
}
.mug {
width: 50px;
height: 42px;
}
.mug-body {
width: 42px;
height: 34px;
}
.brand-name {
font-size: 1.8rem;
}
.nav-button {
min-width: 100px;
padding: 0.7rem 1.2rem;
font-size: 0.9rem;
}
}