html {
scroll-behavior: smooth;
}
body {
font-family: 'Inter', sans-serif;
background: #0d0d18;
color: #d1d5db;
transition: all 0.5s ease;
}
.neon-section {
background: linear-gradient(135deg, #0d0d18 0%, #14142f 100%);
border-radius: 1rem;
padding: 2rem;
box-shadow: 0 0 40px rgba(0, 255, 255, 0.05);
position: relative;
overflow: hidden;
}
.neon-section::before {
content: '';
position: absolute;
inset: 0;
background-image: radial-gradient(circle at top left, #00ffe7 0%, transparent 60%),
radial-gradient(circle at bottom right, #7f00ff 0%, transparent 60%);
opacity: 0.04;
z-index: 0;
}
.neon-section > * {
position: relative;
z-index: 10;
}
.terminal {
font-family: 'Fira Code', monospace;
background-color: #1a1a2e;
border: 2px solid #00ffe7;
border-radius: 0.5rem;
padding: 1rem;
box-shadow: 0 0 30px rgba(0, 255, 231, 0.4);
}
.prompt {
color: #00ffe7;
}
.stat-bar {
background-color: #27293d;
height: 8px;
border-radius: 9999px;
overflow: hidden;
}
.stat-fill {
height: 100%;
background-color: #00ffe7;
border-radius: 9999px;
animation: fill 2s ease-in-out forwards;
}
@keyframes fill {
from { width: 0; }
}
.card {
transition: 0.3s ease;
}
.card:hover {
transform: translateY(-4px);
box-shadow: 0 0 20px #00ffe7aa;
}
.cursor::after {
content: '|';
animation: blink 1.3s infinite;
}
@keyframes blink {
0%, 50%, 100% { opacity: 1; }
25%, 75% { opacity: 0; }
}
.opacity-0 {
opacity: 0 !important;
}
.translate-y-10 {
transform: translateY(2.5rem) !important;
}
.opacity-100 {
opacity: 1 !important;
}
.translate-y-0 {
transform: translateY(0) !important;
}
.skill-wrapper {
display: inline-flex;
justify-content: center;
align-items: center;
width: 80px;
height: 80px;
border-radius: 0.5rem;
background-color: #1a1a2e;
transition: all 0.3s ease;
position: relative;
}
.skill-wrapper:hover {
box-shadow: 0 0 25px #00ffe7aa;
}
.skill-icon::before {
filter: grayscale(100%) brightness(2);
transition: filter 0.3s ease, transform 0.3s ease;
}
.skill-wrapper:hover .skill-icon::before {
filter: grayscale(0%) brightness(1);
}
.skill-icon {
position: relative;
transition: transform 0.3s ease;
}
.skill-icon:hover {
transform: scale(1.2);
}
.skill-icon::after {
content: attr(data-name);
position: absolute;
top: 110%;
left: 50%;
transform: translateX(-50%);
background: #1a1a2e;
color: #00ffe7;
font-size: 12px;
padding: 4px 8px;
border-radius: 0.25rem;
opacity: 0;
pointer-events: none;
transition: opacity 0.2s ease;
white-space: nowrap;
}
.skill-icon:hover::after {
opacity: 1;
}
@keyframes fall {
to {
transform: translateY(100vh);
}
}
.prompt {
color: #00ffe7;
font-weight: 600;
}
.shad-button {
background-color: #0f172a;
border: 1px solid #334155;
color: #e2e8f0;
padding: 0.5rem 1rem;
border-radius: 0.5rem;
font-weight: 500;
transition: all 0.2s ease;
}
.shad-button:hover {
background-color: #1e293b;
border-color: #475569;
}
.shad-card {
background-color: #0f172a;
border: 1px solid #1e293b;
border-radius: 1rem;
padding: 1.5rem;
box-shadow: 0 0 0 1px #334155;
transition: 0.3s ease;
}
.shad-card:hover {
box-shadow: 0 0 20px #00ffe755;
}
.tooltip::after {
content: attr(data-name);
position: absolute;
top: 100%;
left: 50%;
transform: translateX(-50%);
background: #1e293b;
color: #e2e8f0;
font-size: 0.75rem;
padding: 4px 8px;
border-radius: 0.25rem;
white-space: nowrap;
opacity: 0;
pointer-events: none;
transition: opacity 0.3s;
margin-top: 0.5rem;
}
.tooltip:hover::after {
opacity: 1;
}
.animate-spin {
animation: spin 1s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
.opacity-0 {
opacity: 0;
}