@keyframes marquee {
    0% { transform: translateX(0); }
    100% { transform: translateX(calc(-100% / var(--marquee-elements) * var(--marquee-elements-displayed))); }
}

.animate-marquee {
    animation: marquee 30s linear infinite;
    display: flex;
    width: calc(100% * var(--marquee-elements) / var(--marquee-elements-displayed));
}

:root {
    --marquee-elements: 6;
    --marquee-elements-displayed: 3;
}

@media (min-width: 768px) {
    :root {
        --marquee-elements-displayed: 6;
    }
}

/* Custom scrollbar */
::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}

::-webkit-scrollbar-track {
    background: #f1f1f1;
}

::-webkit-scrollbar-thumb {
    background: #1e3a8a;
    border-radius: 4px;
}

::-webkit-scrollbar-thumb:hover {
    background: #1e40af;
}

/* Smooth transitions */
a, button {
    transition: all 0.3s ease;
}

/* Custom focus styles */
button:focus, a:focus {
    outline: 2px solid #f59e0b;
    outline-offset: 2px;
}

/* Hero video overlay */
.video-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(to right, rgba(30, 58, 138, 0.9), rgba(29, 78, 216, 0.9));
}

/* Service card hover effect */
.service-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1);
}

/* Client logo hover effect */
.client-logo:hover {
    filter: grayscale(0);
    transform: scale(1.1);
}

/* Announcement banner (sliding left-to-right) */
.announcement-banner {
    position: relative;
    width: 100%;
    overflow: hidden;
    background: #0b69b6; /* fallback color */
    border-bottom: 3px solid #f59e0b;
    height: 64px;
}
.announcement-slides {
    position: relative;
    width: 100%;
    height: 100%;
}
.announcement-slides .slide {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 1rem;
    color: #ffffff;
    font-size: 1.125rem; /* 18px */
    font-weight: 700;
    transition: transform 600ms cubic-bezier(.2,.9,.2,1);
    will-change: transform;
    background-size: cover;
    background-position: center;
}
.announcement-slides .slide .slide-text {
    background: rgba(0,0,0,0.35);
    padding: 0.45rem 0.75rem;
    border-radius: 6px;
}
.announcement-controls {
    position: absolute;
    right: 0.5rem;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    gap: 0.5rem;
}
.announcement-button {
    background: rgba(255,255,255,0.12);
    color: #fff;
    border: none;
    padding: 0.25rem 0.5rem;
    border-radius: 4px;
    cursor: pointer;
}
.announcement-button:focus { outline: 2px solid #f59e0b; outline-offset: 2px; }

/* small screens */
@media (max-width: 640px) {
    .announcement-banner { height: 48px; }
    .announcement-slides .slide { font-size: 1rem; }
}

/* screen-reader only helper */
.sr-only {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

/* Main header slideshow uses full-width hero area */
.main-slideshow { margin-top: calc(64px + 3px); /* account for fixed nav + announcement bar if present */ }