/* === ROOT / SHARED STYLES === */

*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { font-family: 'Inter', system-ui, sans-serif; overflow-x: hidden; font-size: 15px; }

/* Clamp responsive typography */
.text-hero { font-size: clamp(2.8rem, 6vw, 5.5rem); line-height: 1.05; }
.text-section { font-size: clamp(2rem, 4vw, 3.5rem); line-height: 1.15; }
.text-sub { font-size: clamp(1.1rem, 2vw, 1.35rem); line-height: 1.6; }

/* Grain overlay */
.grain-overlay { position: relative; }
.grain-overlay::before {
    content: '';
    position: absolute;
    inset: 0;
    opacity: 0.03; 
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='1'/%3E%3C/svg%3E");
    background-size: 128px 128px;
    pointer-events: none;
    z-index: 1;
}
.grain-overlay > * { position: relative; z-index: 2; }

/* Fade-up animation */
.fade-up {
    opacity: 0;
    transform: translateY(32px);
    transition: opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1), transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
}
.fade-up.visible { opacity: 1; transform: translateY(0); }
.fade-up-delay-1 { transition-delay: 0.1s; }
.fade-up-delay-2 { transition-delay: 0.2s; }
.fade-up-delay-3 { transition-delay: 0.3s; }
.fade-up-delay-4 { transition-delay: 0.4s; }

/* Brush highlight effect */
.highlight-brush {
    position: relative;
    display: inline-block;
}
.highlight-brush::after {
    content: '';
    position: absolute;
    bottom: 0.05em;
    left: -0.05em;
    right: -0.05em;
    height: 0.35em;
    border-radius: 0.2em;
    z-index: -1;
    opacity: 0.25;
    transform: skewX(-3deg);
    background: #2a9d8f;
}

/* Scroll indicator bounce */
@keyframes scrollBounce {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(8px); }
}
.scroll-indicator { animation: scrollBounce 2s ease-in-out infinite; }

/* Glassmorphic card */
.glass-card {
    background: rgba(255,255,255,0.05);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(255,255,255,0.1);
}

/* Dropdown */
.dropdown-menu {
    opacity: 0; visibility: hidden; transform: translateY(8px);
    transition: all 0.2s ease;
}
.dropdown:hover .dropdown-menu,
.dropdown:focus-within .dropdown-menu {
    opacity: 1; visibility: visible; transform: translateY(0);
}

/* Nav link states — color wipe left to right */
.nav-link {
    background: linear-gradient(to right, #2a9d8f 50%, rgba(255,255,255,0.8) 50%);
    background-size: 200% 100%;
    background-position: right;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    transition: background-position 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}
.nav-link:hover {
    background-position: left;
}
.nav-link:active {
    background: linear-gradient(to right, #34b8a8 50%, rgba(255,255,255,0.8) 50%);
    background-size: 200% 100%;
    background-position: left;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}
.nav-link.active {
    background-position: left;
}
