/*
 * Styles specific to the landing page (index.html).
 *
 * Previously inline as <style> blocks — extracted to reduce HTML parse
 * cost and let the file be cached/min-fetched separately.
 */

.fade-in {
    animation: fadeIn var(--anim-hero-fade) ease-in-out;
}

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

@keyframes float {
    0%, 100% { transform: translateY(0px) rotate(0deg); }
    50%      { transform: translateY(-20px) rotate(5deg); }
}

.animated-bg {
    background: linear-gradient(-45deg, var(--hero-c1), var(--hero-c2), var(--hero-c3), var(--hero-c4));
    background-size: 400% 400%;
    animation: gradientShift 22s ease infinite;
}

@keyframes gradientShift {
    0%   { background-position: 0% 50%; }
    50%  { background-position: 100% 50%; }
    100% { background-position: 0% 50%; }
}

.fluid-shape {
    position: absolute;
    border-radius: 50%;
    filter: blur(40px);
    opacity: 0.7;
    animation: float 6s ease-in-out infinite;
}
.fluid-shape:nth-child(2) { animation-delay: 2s; }
.fluid-shape:nth-child(3) { animation-delay: 4s; }

.scroll-indicator { animation: bounce 2s infinite; }

@keyframes bounce {
    0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
    40% { transform: translateY(-10px); }
    60% { transform: translateY(-5px); }
}

.arrow-up-animation { animation: arrowUp 2s ease-in-out infinite; }

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

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

/* Project carousel — mobile: native swipe scroll-snap; desktop: transform-based */
@media (max-width: 767px) {
    #projectScrollContainer {
        overflow-x: auto;
        overflow-y: visible;
        scroll-snap-type: x mandatory;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }
    #projectScrollContainer::-webkit-scrollbar { display: none; }
    .project-slide { scroll-snap-align: start; }
}
@media (min-width: 768px) {
    #projectScrollContainer { overflow: hidden; }
}

.modal {
    display: none;
    position: fixed;
    z-index: var(--z-modal);
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: var(--modal-backdrop);
    backdrop-filter: var(--modal-backdrop-blur);
}

.modal-content {
    background-color: white;
    margin: var(--modal-margin);
    padding: 0;
    border-radius: 1rem;
    width: 90%;
    max-width: var(--modal-max-width);
    max-height: var(--modal-max-height);
    overflow-y: auto;
    animation: modalSlideIn var(--anim-modal-slide) ease-out;
}

@keyframes modalSlideIn {
    from { opacity: 0; transform: translateY(-50px); }
    to   { opacity: 1; transform: translateY(0); }
}

.close {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
    position: absolute;
    top: 15px;
    right: 20px;
    z-index: var(--z-modal-close);
}
.close:hover,
.close:focus { color: #000; }

.arrow-pulse { animation: arrowPulse 2s ease-in-out infinite; }

@keyframes arrowPulse {
    0%, 100% { transform: scale(1);   opacity: 0.7; }
    50%      { transform: scale(1.1); opacity: 1; }
}

.card-slide-in { animation: cardSlideIn var(--anim-card-slide) ease-out; }

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

/* Dark Mode Styles — surface/text values reference tokens in assets/theme.css */
.dark-mode,
html.dark-mode body {
    background-color: var(--dark-bg) !important;
    color: var(--dark-text) !important;
}
.dark-mode .bg-white       { background-color: var(--dark-surface) !important; }
.dark-mode .bg-gray-50     { background-color: var(--dark-surface-raised) !important; }
.dark-mode .text-gray-900  { color: var(--dark-text-primary) !important; }
.dark-mode .text-gray-700  { color: var(--dark-text-muted) !important; }
.dark-mode .text-gray-600  { color: var(--dark-text-subtle) !important; }
.dark-mode .border-gray-200{ border-color: var(--dark-border) !important; }
.dark-mode .bg-gray-100    { background-color: var(--dark-border) !important; }
.dark-mode .text-gray-800  { color: var(--dark-text) !important; }
.dark-mode .bg-blue-100    { background-color: #1e3a8a !important; }
.dark-mode .text-blue-800  { color: #93c5fd !important; }
.dark-mode .bg-green-100   { background-color: #14532d !important; }
.dark-mode .text-green-800 { color: #86efac !important; }
.dark-mode .bg-purple-100  { background-color: #581c87 !important; }
.dark-mode .text-purple-800{ color: #c4b5fd !important; }

.dark-mode .modal-content  { background-color: var(--dark-surface) !important; color: var(--dark-text-primary) !important; }
.dark-mode .close          { color: var(--dark-text-subtle) !important; }
.dark-mode .close:hover,
.dark-mode .close:focus    { color: var(--dark-text-primary) !important; }

.dark-mode #back-to-top svg { color: var(--dark-text-primary) !important; }

.dark-mode .dot              { background-color: var(--dark-border) !important; }
.dark-mode .dot:hover        { background-color: var(--dark-border-subtle) !important; }
.dark-mode .dot.bg-blue-500  { background-color: #3b82f6 !important; }

/* Skills section dark mode */
.dark-mode .skill-card        { opacity: 0.95; }
.dark-mode .skill-card:hover  { opacity: 1; }

/* CV Download Button Dark Mode */
.dark-mode #cvDownloadLink         { background-color: var(--dark-surface) !important; color: var(--dark-text-primary) !important; }
.dark-mode #cvDownloadLink:hover   { background-color: var(--dark-surface-raised) !important; }

/* About Section Dark Mode */
.dark-mode .bg-gradient-to-br.from-blue-50   { background: linear-gradient(to bottom right, #1e3a8a, #1e40af) !important; }
.dark-mode .bg-gradient-to-br.from-green-50  { background: linear-gradient(to bottom right, #14532d, #166534) !important; }
.dark-mode .bg-gradient-to-br.from-purple-50 { background: linear-gradient(to bottom right, #581c87, #6b21a8) !important; }

.dark-mode .border-blue-200   { border-color: #3b82f6 !important; }
.dark-mode .border-green-200  { border-color: #22c55e !important; }
.dark-mode .border-purple-200 { border-color: #a855f7 !important; }

/* Skill card icons — sizes driven by tokens in assets/theme.css */
.skill-section-icon { width: var(--skill-icon-lg); height: var(--skill-icon-lg); object-fit: contain; }
.skill-item-icon    { width: var(--skill-icon-sm); height: var(--skill-icon-sm); object-fit: contain; flex-shrink: 0; }

/* Hero typography — sizes driven by tokens in assets/theme.css */
.hero-sub  { font-size: var(--hero-sub-size); }
.hero-name { font-size: var(--hero-name-size); }
@media (min-width: 768px) {
    .hero-sub  { font-size: var(--hero-sub-size-md); }
    .hero-name { font-size: var(--hero-name-size-md); }
}
@media (min-width: 1024px) {
    .hero-name { font-size: var(--hero-name-size-lg); }
}

/* Mobile nav dropdown — frosted glass */
#mobileMenu {
    background: rgba(30, 58, 138, 0.85);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}
.dark-mode #mobileMenu {
    background: rgba(15, 23, 42, 0.92);
    border-bottom-color: rgba(255, 255, 255, 0.08);
}

/* Hero Section Dark Mode Styles - keep text light on dark gradient */
.dark-mode section.animated-bg,
.dark-mode section.animated-bg h1,
.dark-mode section.animated-bg h2,
.dark-mode section.animated-bg p,
.dark-mode section.animated-bg nav div,
.dark-mode section.animated-bg nav a              { color: var(--dark-text-primary) !important; }
.dark-mode section.animated-bg nav a:hover        { color: #bfdbfe !important; }
.dark-mode section.animated-bg #darkModeToggle svg{ color: var(--dark-text-primary) !important; }
.dark-mode section.animated-bg #darkModeToggle:hover { background-color: rgba(255, 255, 255, 0.15) !important; }
.dark-mode section.animated-bg .scroll-indicator svg { color: var(--dark-text-primary) !important; }

/* Smooth transitions for dark mode */
* {
    transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}

/* Scroll-in card animation */
.scroll-card {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.3s ease-out, transform 0.3s ease-out;
}
.scroll-card.scroll-card-in-view {
    opacity: 1;
    transform: translateY(0);
}

/* Experience section scroll animations - scroll-based */
.experience-icon-slide { transform: translateZ(0); }
.experience-text-slide { transform: translateZ(0); }

/* Experience section - Image Style */
.experience-card-link {
    text-decoration: none;
    color: inherit;
    display: block;
    transition: transform 0.3s ease;
}
.experience-card-link:hover           { transform: translateY(-2px); }
.experience-card-link:hover .shadow-sm{ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); }
.experience-card-link .flex           { transition: box-shadow 0.3s ease; }

.experience-visual {
    position: relative;
    width: var(--exp-visual-width);
    min-height: var(--exp-visual-min-height);
}

/* Responsive adjustments */
@media (max-width: 768px) {
    .experience-visual {
        width: 100% !important;
        min-height: var(--exp-visual-min-height-tablet) !important;
    }
    #experience .flex                            { flex-direction: column; }
    #experience .experience-visual .absolute.left-16 { left: 0 !important; }
    #experience .experience-visual .w-16         { display: none; }
    #experience .max-w-6xl                       { padding-left: 1rem; padding-right: 1rem; }
}

/* Icon gradient styles */
.experience-visual svg                 { filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.1)); }
.experience-visual svg.icon-gradient-1 { filter: drop-shadow(0 2px 8px rgba(99, 102, 241, 0.3)); }
.experience-visual svg.icon-gradient-2 { filter: drop-shadow(0 2px 8px rgba(190, 24, 93, 0.3)); }
.experience-visual svg.icon-gradient-3 { filter: drop-shadow(0 2px 8px rgba(13, 148, 136, 0.3)); }
.experience-visual svg.icon-gradient-4 { filter: drop-shadow(0 2px 8px rgba(194, 65, 12, 0.3)); }
.experience-visual svg.icon-gradient-5 { filter: drop-shadow(0 2px 8px rgba(51, 65, 85, 0.3)); }

/* Experience section dark mode */
.dark-mode #experience .border-gray-200   { border-color: #374151 !important; }
.dark-mode .experience-card-link:hover    { background-color: #1f2937 !important; }
.dark-mode #experience .bg-white          { background-color: var(--dark-surface) !important; }
.dark-mode #experience h2                 { color: #f9fafb !important; }
.dark-mode #experience h4                 { color: var(--dark-text-muted) !important; }
.dark-mode #experience .text-gray-600,
.dark-mode #experience p                  { color: #d1d5db !important; }
.dark-mode #experience .text-gray-500     { color: var(--dark-text-muted) !important; }
.dark-mode #experience .text-gray-800     { color: #f3f4f6 !important; }
.dark-mode #experience .group:hover .text-gray-600 { color: #ffffff !important; }

/* Skill Card Animations */
.skill-card {
    position: relative;
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}
.skill-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: radial-gradient(circle at var(--x, 50%) var(--y, 50%), rgba(255, 255, 255, 0.3) 0%, transparent 50%);
    opacity: 0;
    transition: opacity 0.5s;
    pointer-events: none;
}
.skill-card:hover::before { opacity: 1; }

@keyframes skillPulse {
    0%, 100% { transform: scale(1); }
    50%      { transform: scale(1.05); }
}

.skill-item {
    position: relative;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.skill-item:hover { animation: skillPulse 0.6s ease-in-out; }

/* Glow effect for skill cards */
@keyframes glow {
    0%, 100% { box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1); }
    50%      { box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15); }
}
.skill-card:hover { animation: glow 2s ease-in-out infinite; }

/* Responsive improvements for small screens */
@media (max-width: 640px) {
    .experience-visual { min-height: var(--exp-visual-min-height-mobile) !important; }
    .bg-gray-50.rounded-2xl { padding: 1.5rem; }
    .w-16.h-16 { width: 3rem; height: 3rem; }
    .skill-card { padding: 1.5rem; }
    .modal-content { width: 95%; margin: 10% auto; }
    .text-2xl { font-size: 1.5rem; }
    .text-lg  { font-size: 1rem; }
    #back-to-top svg { width: 2rem; height: 2rem; }
    section { padding-left: 1rem; padding-right: 1rem; }
    #experience { padding-left: 0; padding-right: 0; }
    #experience .experience-visual { width: 100% !important; min-height: 250px !important; }
    #experience .flex { flex-direction: column; }
    #experience .experience-visual .absolute.left-16 { left: 0 !important; }
    #experience .experience-visual .w-16 { display: none; }
    #experience .flex-1 { padding: 1.5rem !important; }
}

/* Ripple click effect (button feedback) */
.ripple {
    position: absolute;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.6);
    transform: scale(0);
    animation: rippleAnimation 0.6s ease-out;
    pointer-events: none;
}

@keyframes rippleAnimation {
    to { transform: scale(4); opacity: 0; }
}
