/* ==================== ANIMATIONS ==================== */
@keyframes fadeIn {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes fadeInMsg {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes float {
    0%, 100% { transform: translateY(0px); }
    50% { transform: translateY(-10px); }
}

.fade-in {
    animation: fadeIn 0.6s ease-out;
}

.animate-fadeIn {
    animation: fadeInMsg 0.3s ease-out;
}

/* ==================== SCROLL BEHAVIOR ==================== */
html {
    scroll-behavior: smooth;
}

/* ==================== PARALLAX ==================== */
.parallax-slow {
    transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.parallax-medium {
    transition: transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.parallax-fast {
    transition: transform 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

/* ==================== SCROLL REVEAL ==================== */
.scroll-reveal {
    opacity: 0;
    transform: translateY(50px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.scroll-reveal.revealed {
    opacity: 1;
    transform: translateY(0);
}

.scroll-reveal-left {
    opacity: 0;
    transform: translateX(-50px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.scroll-reveal-left.revealed {
    opacity: 1;
    transform: translateX(0);
}

.scroll-reveal-right {
    opacity: 0;
    transform: translateX(50px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.scroll-reveal-right.revealed {
    opacity: 1;
    transform: translateX(0);
}

/* ==================== TIMELINE ==================== */
.hide-scrollbar::-webkit-scrollbar {
    display: none;
}

.hide-scrollbar {
    -ms-overflow-style: none;
    scrollbar-width: none;
}

/* ==================== IMPACT CARDS ==================== */
.impact-card {
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.impact-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
}

/* ==================== JOB MATCH BUTTONS ==================== */
.weight-btn {
    background: white;
    border-color: #e5e7eb;
    color: #6b7280;
}

.dark .weight-btn {
    background: #374151;
    border-color: #4b5563;
    color: #9ca3af;
}

.semantic-btn:hover:not(:disabled) {
    border-color: #b88a5a;
    background: #f5ebe0;
}

.dark .semantic-btn:hover:not(:disabled) {
    border-color: #d2b48c;
    background: #4a3f35;
}

.semantic-btn.active {
    background: linear-gradient(135deg, #b88a5a, #d2b48c);
    border-color: #996a3f;
    color: white;
    box-shadow: 0 4px 6px -1px rgba(184, 138, 90, 0.3);
}

.keyword-btn.active {
    background: linear-gradient(135deg, #d2b48c, #b89972);
    border-color: #8c6d4a;
    color: white;
    box-shadow: 0 4px 6px -1px rgba(210, 180, 140, 0.3);
}

.weight-btn:disabled {
    cursor: not-allowed;
    opacity: 0.7;
}

/* ==================== SKILLS NETWORK ==================== */
#tech-network,
#soft-network {
    transform-origin: center center;
}

#tech-network.shifted,
#soft-network.shifted {
    transform: translateX(-160px) scale(0.85);
}

.tech-node {
    cursor: pointer;
    transition: filter 0.3s ease;
    animation: float 3s ease-in-out infinite;
}

.tech-node:nth-child(2) { animation-delay: 0s; }
.tech-node:nth-child(3) { animation-delay: 0.5s; }
.tech-node:nth-child(4) { animation-delay: 1s; }
.tech-node:nth-child(5) { animation-delay: 1.5s; }
.tech-node:nth-child(6) { animation-delay: 2s; }
.tech-node:nth-child(7) { animation-delay: 2.5s; }

.tech-node:hover circle {
    filter: brightness(0.85);
}

.dark .tech-node:hover circle {
    filter: brightness(1.2);
}

.tech-node.active circle {
    stroke-width: 4;
    filter: brightness(0.85) drop-shadow(0 0 20px currentColor);
}

.dark .tech-node.active circle {
    filter: brightness(1.2) drop-shadow(0 0 20px currentColor);
}

.tech-connection {
    stroke: #996a3f;
    stroke-width: 2;
    opacity: 0.2;
    transition: all 0.5s ease;
}

.tech-connection.active {
    opacity: 0.8;
    stroke-width: 4;
    filter: drop-shadow(0 0 8px #d2b48c);
}

#tech-details.show,
#soft-details.show {
    opacity: 1;
    transform: scale(1);
    pointer-events: auto;
}

.tech-item {
    padding: 8px 12px;
    background: linear-gradient(135deg, #f0f4ff, #fff0dc);
    border-radius: 8px;
    font-size: 14px;
    color: #61513c;
    transition: all 0.3s ease;
    opacity: 0;
    transform: translateX(-20px);
}

.tech-item.show {
    opacity: 1;
    transform: translateX(0);
}

.dark .tech-item {
    background: linear-gradient(135deg, #3f362b, #936831);
    color: #e0e7ff;
}

.tech-item:hover {
    transform: translateX(4px) scale(1.02);
    box-shadow: 0 4px 12px rgba(99, 102, 241, 0.4);
}