/* ProSCA Design System & Utility Enhancements
   Athletic-Academic Light Theme: Obsidian Slate, Crimson Power, Crisp Neutral
*/

@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&family=Inter:wght@400;500;600;700&display=swap');

:root {
    --font-heading: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
    --font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    
    --color-obsidian: #0F172A;
    --color-slate-dark: #1E293B;
    --color-crimson: #E11D48;
    --color-crimson-hover: #BE123C;
    --color-bg-main: #F8FAFC;
    --color-bg-card: #FFFFFF;
    --color-border: #E2E8F0;
    --color-border-subtle: #F1F5F9;
}

body {
    font-family: var(--font-body);
    background-color: var(--color-bg-main);
    color: var(--color-obsidian);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: hidden;
}

h1, h2, h3, h4, h5, h6, .font-heading {
    font-family: var(--font-heading);
    letter-spacing: -0.025em;
}

/* Custom Scrollbar */
::-webkit-scrollbar {
    width: 7px;
    height: 7px;
}
::-webkit-scrollbar-track {
    background: #F1F5F9;
}
::-webkit-scrollbar-thumb {
    background: #CBD5E1;
    border-radius: 9999px;
}
::-webkit-scrollbar-thumb:hover {
    background: #94A3B8;
}

/* ============================================================
   GLOBAL MOTION SYSTEM - PROSCA ACADEMY
   Consistent, athletic, responsive animation language.
   Durations: Micro (150-250ms), Transitions (250-450ms), Reveals (450-800ms)
   Easing: cubic-bezier(0.16, 1, 0.3, 1)
   ============================================================ */

@keyframes motionFadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

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

@keyframes motionSlideLeft {
    from {
        opacity: 0;
        transform: translateX(24px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes motionSlideRight {
    from {
        opacity: 0;
        transform: translateX(-24px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes motionScaleIn {
    from {
        opacity: 0;
        transform: scale(0.96);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

@keyframes motionMarqueeScroll {
    0% { transform: translateX(0%); }
    100% { transform: translateX(-50%); }
}

/* Motion Utilities */
.motion-fade {
    animation: motionFadeIn 0.35s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.motion-fade-up {
    animation: motionFadeUp 0.5s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.motion-slide-left {
    animation: motionSlideLeft 0.45s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.motion-slide-right {
    animation: motionSlideRight 0.45s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.motion-scale {
    animation: motionScaleIn 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

/* Scroll-linked reveal state (activated by IntersectionObserver in app.js) */
.motion-reveal {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.55s cubic-bezier(0.16, 1, 0.3, 1), transform 0.55s cubic-bezier(0.16, 1, 0.3, 1);
    will-change: opacity, transform;
}

.motion-reveal.motion-visible {
    opacity: 1;
    transform: translateY(0);
}

/* Stagger delays for child elements */
.motion-stagger > *:nth-child(1) { transition-delay: 0.04s; }
.motion-stagger > *:nth-child(2) { transition-delay: 0.08s; }
.motion-stagger > *:nth-child(3) { transition-delay: 0.12s; }
.motion-stagger > *:nth-child(4) { transition-delay: 0.16s; }
.motion-stagger > *:nth-child(5) { transition-delay: 0.20s; }
.motion-stagger > *:nth-child(6) { transition-delay: 0.24s; }

/* Interactive Hover Transformations */
.motion-card-hover {
    transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1),
                box-shadow 0.25s cubic-bezier(0.16, 1, 0.3, 1),
                border-color 0.25s ease;
    will-change: transform, box-shadow;
}

.motion-card-hover:hover {
    transform: translateY(-4px);
    box-shadow: 0 16px 32px -10px rgba(15, 23, 42, 0.10);
}

.motion-image-zoom {
    overflow: hidden;
}

.motion-image-zoom img {
    transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
    will-change: transform;
}

.motion-image-zoom:hover img {
    transform: scale(1.05);
}

.motion-button {
    transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1),
                box-shadow 0.2s cubic-bezier(0.16, 1, 0.3, 1),
                background-color 0.2s ease;
}

.motion-button:hover {
    transform: translateY(-1px);
}

.motion-button .motion-arrow {
    transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.motion-button:hover .motion-arrow {
    transform: translateX(3px);
}

/* Marquee / Infinite Slider */
.motion-marquee-container {
    display: flex;
    overflow: hidden;
    user-select: none;
    mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
    -webkit-mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
}

.motion-marquee-track {
    display: flex;
    flex-shrink: 0;
    gap: 2.5rem;
    animation: motionMarqueeScroll 28s linear infinite;
    will-change: transform;
}

.motion-marquee-container:hover .motion-marquee-track {
    animation-play-state: paused;
}

/* Header Scroll Dynamics */
header.header-scrolled {
    box-shadow: 0 4px 20px -2px rgba(15, 23, 42, 0.08);
    background-color: rgba(255, 255, 255, 0.98);
}

/* Accessibility: Strict Reduced Motion Override */
@media (prefers-reduced-motion: reduce) {
    *, ::before, ::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
    .motion-reveal {
        opacity: 1 !important;
        transform: none !important;
    }
    .motion-marquee-track {
        animation: none !important;
    }
    .motion-card-hover:hover,
    .motion-image-zoom:hover img,
    .motion-button:hover {
        transform: none !important;
    }
}

/* Bottom Nav Safe Padding for Mobile LMS */
.pb-mobile-nav {
    padding-bottom: 5.5rem;
}
@media (min-width: 1024px) {
    .pb-mobile-nav {
        padding-bottom: 2rem;
    }
}

/* Sticky Management & Student Sidebar System */
.sticky-portal-sidebar {
    position: sticky;
    top: 4rem;
    height: calc(100vh - 4rem);
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-width: thin;
}

/* Collapsible sidebar states */
.sidebar-expanded {
    width: 16rem;
    transition: width 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.sidebar-collapsed {
    width: 5rem;
    transition: width 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.sidebar-collapsed .sidebar-label,
.sidebar-collapsed .sidebar-heading,
.sidebar-collapsed .sidebar-footer-text {
    display: none !important;
}
.sidebar-collapsed .sidebar-item {
    justify-content: center !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
}

/* Mobile drawer backdrop */
.mobile-drawer-backdrop {
    background-color: rgba(15, 23, 42, 0.6);
    backdrop-filter: blur(4px);
}

/* Responsive Table Container */
.table-responsive {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* Print Cleanliness */
@media print {
    .no-print, nav, header, aside, .sticky-portal-sidebar, .mobile-bottom-nav {
        display: none !important;
    }
    body {
        background: #ffffff !important;
        color: #000000 !important;
    }
}
