/* ===================================================
   RICHWOOD SCHOOL
   REUSABLE COMPONENTS
=================================================== */

/* ===================================================
   GLASS CARD
=================================================== */

.glass-card {

    background: rgba(255,255,255,.75);

    backdrop-filter: blur(20px);

    -webkit-backdrop-filter: blur(20px);

    border: 1px solid rgba(255,255,255,.2);

    border-radius: 24px;

    box-shadow:
        0 10px 40px rgba(0,0,0,.08);

}

/* ===================================================
   PREMIUM CARD
=================================================== */

.premium-card {

    background: var(--white);

    border-radius: 28px;

    padding: 2rem;

    box-shadow: var(--shadow-md);

    transition: var(--transition);

}

.premium-card:hover {

    transform: translateY(-12px);

    box-shadow: var(--shadow-lg);

}

/* ===================================================
   SECTION TITLE
=================================================== */

.section-title {

    text-align: center;

    max-width: 800px;

    margin: 0 auto 60px;

}

.section-title span {

    display: inline-block;

    padding: .7rem 1.2rem;

    border-radius: 999px;

    background: rgba(37,99,235,.08);

    color: var(--secondary);

    font-weight: 700;

    margin-bottom: 1rem;

}

.section-title h2 {

    margin-bottom: 1rem;

}

.section-title p {

    max-width: 700px;

    margin: auto;

}

/* ===================================================
   IMAGE OVERLAY CARD
=================================================== */

.image-card {

    position: relative;

    overflow: hidden;

    border-radius: 28px;

}

.image-card img {

    transition: .6s ease;

}

.image-card:hover img {

    transform: scale(1.1);

}

.image-overlay {

    position: absolute;

    inset: 0;

    background:
        linear-gradient(
            to top,
            rgba(2,6,23,.85),
            transparent
        );

    display: flex;

    align-items: flex-end;

    padding: 2rem;

}

.image-overlay h3 {

    color: var(--white);

}

.image-overlay p {

    color: rgba(255,255,255,.8);

}

/* ===================================================
   FEATURE ICON CARD
=================================================== */

.icon-card {

    text-align: center;

    padding: 2.5rem;

    background: var(--white);

    border-radius: 24px;

    box-shadow: var(--shadow-sm);

    transition: var(--transition);

}

.icon-card:hover {

    transform: translateY(-8px);

    box-shadow: var(--shadow-lg);

}

.icon-card .icon {

    width: 80px;

    height: 80px;

    margin: auto auto 1.5rem;

    border-radius: 50%;

    background: rgba(37,99,235,.08);

    display: flex;

    justify-content: center;

    align-items: center;

    font-size: 2rem;

}

/* ===================================================
   TIMELINE
=================================================== */

.timeline {

    position: relative;

    max-width: 1000px;

    margin: auto;

}

.timeline::before {

    content: '';

    position: absolute;

    left: 50%;

    top: 0;

    width: 4px;

    height: 100%;

    background: var(--secondary);

    transform: translateX(-50%);

}

.timeline-item {

    position: relative;

    width: 50%;

    padding: 2rem;

}

.timeline-item:nth-child(odd) {

    left: 0;

}

.timeline-item:nth-child(even) {

    left: 50%;

}

.timeline-content {

    background: var(--white);

    padding: 2rem;

    border-radius: 24px;

    box-shadow: var(--shadow-md);

}

.timeline-dot {

    position: absolute;

    top: 40px;

    width: 24px;

    height: 24px;

    background: var(--secondary);

    border-radius: 50%;

}

.timeline-item:nth-child(odd) .timeline-dot {

    right: -12px;

}

.timeline-item:nth-child(even) .timeline-dot {

    left: -12px;

}

/* ===================================================
   GALLERY HOVER
=================================================== */

.gallery-hover {

    position: relative;

    overflow: hidden;

    border-radius: 24px;

}

.gallery-hover img {

    transition: .7s ease;

}

.gallery-hover:hover img {

    transform: scale(1.12);

}

.gallery-hover::after {

    content: '';

    position: absolute;

    inset: 0;

    background: rgba(2,6,23,.35);

    opacity: 0;

    transition: var(--transition);

}

.gallery-hover:hover::after {

    opacity: 1;

}

/* ===================================================
   BADGES
=================================================== */

.badge {

    display: inline-flex;

    align-items: center;

    gap: .5rem;

    padding: .7rem 1.2rem;

    border-radius: 999px;

    font-size: .85rem;

    font-weight: 700;

}

.badge-primary {

    background: rgba(37,99,235,.1);

    color: var(--secondary);

}

.badge-success {

    background: rgba(16,185,129,.12);

    color: var(--success);

}

.badge-warning {

    background: rgba(245,158,11,.12);

    color: var(--accent);

}

/* ===================================================
   STAT CARD
=================================================== */

.mini-stat {

    text-align: center;

    background: var(--white);

    border-radius: 24px;

    padding: 2rem;

    box-shadow: var(--shadow-sm);

}

.mini-stat h3 {

    color: var(--secondary);

    font-size: 2.5rem;

}

.mini-stat p {

    margin-top: .5rem;

}

/* ===================================================
   TESTIMONIAL CARD
=================================================== */

.review-card {

    background: var(--white);

    padding: 2.5rem;

    border-radius: 24px;

    box-shadow: var(--shadow-md);

    text-align: center;

}

.review-card img {

    width: 80px;

    height: 80px;

    border-radius: 50%;

    object-fit: cover;

    margin: auto auto 1rem;

}

.review-card h4 {

    margin-top: 1rem;

}

.review-stars {

    margin-bottom: 1rem;

    color: #f59e0b;

}

/* ===================================================
   FORM CONTROLS
=================================================== */

.form-group {

    margin-bottom: 1.5rem;

}

.form-control {

    width: 100%;

    padding: 16px 20px;

    border-radius: 16px;

    border: 1px solid var(--gray-200);

    outline: none;

    transition: var(--transition);

}

.form-control:focus {

    border-color: var(--secondary);

    box-shadow:
        0 0 0 4px rgba(37,99,235,.1);

}

textarea.form-control {

    min-height: 180px;

    resize: vertical;

}

/* ===================================================
   CTA CARD
=================================================== */

.cta-card {

    background:
        linear-gradient(
            135deg,
            var(--secondary),
            #60A5FA
        );

    color: var(--white);

    border-radius: 32px;

    padding: 4rem;

    text-align: center;

}

.cta-card h2 {

    color: var(--white);

    margin-bottom: 1rem;

}

.cta-card p {

    color: rgba(255,255,255,.9);

    max-width: 700px;

    margin: auto auto 2rem;

}

/* ===================================================
   SWIPER NAVIGATION
=================================================== */

.swiper-button-next,
.swiper-button-prev {

    width: 55px;

    height: 55px;

    border-radius: 50%;

    background: var(--white);

    box-shadow: var(--shadow-md);

}

.swiper-button-next::after,
.swiper-button-prev::after {

    font-size: 1rem;

    color: var(--secondary);

}

/* ===================================================
   FLOATING EFFECT
=================================================== */

.float {

    animation: floatY 5s ease-in-out infinite;

}

@keyframes floatY {

    0% {

        transform: translateY(0);

    }

    50% {

        transform: translateY(-12px);

    }

    100% {

        transform: translateY(0);

    }

}

/* ===================================================
   REVEAL EFFECT
=================================================== */

.reveal {

    opacity: 0;

    transform: translateY(30px);

    transition:
        opacity .8s ease,
        transform .8s ease;

}

.reveal.active {

    opacity: 1;

    transform: translateY(0);

}
/* ==========================================
   BACK TO TOP BUTTON
========================================== */

.back-to-top {

    position: fixed;

    right: 25px;

    bottom: 100px;

    width: 55px;

    height: 55px;

    border: none;

    border-radius: 50%;

    background: var(--secondary);

    color: white;

    font-size: 1.2rem;

    cursor: pointer;

    opacity: 0;

    visibility: hidden;

    transform: translateY(20px);

    transition: .3s ease;

    z-index: 998;

}

.back-to-top.show {

    opacity: 1;

    visibility: visible;

    transform: translateY(0);

}

.back-to-top:hover {

    transform: translateY(-5px);

}
/* ==========================================
   SWIPER PAGINATION
========================================== */

.swiper-pagination {

    position: relative;

    margin-top: 2rem;

}

.swiper-pagination-bullet {

    width: 12px;

    height: 12px;

    opacity: .5;

}

.swiper-pagination-bullet-active {

    opacity: 1;

    transform: scale(1.2);

    background: var(--secondary);

}

/* ==========================================
   SWIPER NAVIGATION
========================================== */

.swiper-button-next,
.swiper-button-prev {

    color: var(--secondary);

}

.swiper-button-next::after,
.swiper-button-prev::after {

    font-size: 1rem;

}
/* ==========================================
   LIGHTBOX
========================================== */

.lightbox {

    position: fixed;

    inset: 0;

    background:
        rgba(0,0,0,.95);

    display: flex;

    justify-content: center;

    align-items: center;

    z-index: 99999;

    opacity: 0;

    visibility: hidden;

    transition: .3s ease;

}

.lightbox.active {

    opacity: 1;

    visibility: visible;

}

.lightbox-image {

    max-width: 90%;

    max-height: 85vh;

    border-radius: 16px;

}

.lightbox-close {

    position: absolute;

    top: 30px;

    right: 40px;

    color: white;

    font-size: 3rem;

    cursor: pointer;

}

.lightbox-prev,
.lightbox-next {

    position: absolute;

    top: 50%;

    transform: translateY(-50%);

    color: white;

    font-size: 3rem;

    cursor: pointer;

}

.lightbox-prev {

    left: 30px;

}

.lightbox-next {

    right: 30px;

}
/* ==========================================
   FLOATING ANIMATION
========================================== */

@keyframes floatingAnimation {

    0% {

        transform: translateY(0);

    }

    50% {

        transform: translateY(-15px);

    }

    100% {

        transform: translateY(0);

    }

}

/* ==========================================
   SECTION REVEAL
========================================== */

.section-hidden {

    opacity: 0;

    transform: translateY(40px);

    transition:
        opacity .8s ease,
        transform .8s ease;

}

.section-visible {

    opacity: 1;

    transform: translateY(0);

}

/* ==========================================
   STAGGER
========================================== */

.feature-card,
.cbc-card,
.activity-card,
.csl-card {

    opacity: 0;

    transform: translateY(30px);

}

.stagger-show {

    opacity: 1;

    transform: translateY(0);

    transition:
        opacity .7s ease,
        transform .7s ease;

}

/* ==========================================
   RIPPLE EFFECT
========================================== */

.btn {

    position: relative;

    overflow: hidden;

}

.ripple {

    position: absolute;

    width: 20px;

    height: 20px;

    border-radius: 50%;

    background:
        rgba(255,255,255,.5);

    transform: scale(0);

    animation:
        rippleAnimation .6s linear;

}

@keyframes rippleAnimation {

    to {

        transform: scale(15);

        opacity: 0;

    }

}
/* ==========================================
   NOTIFICATIONS
========================================== */

.notification {

    position: fixed;

    top: 30px;

    right: 30px;

    min-width: 320px;

    max-width: 420px;

    padding: 18px 24px;

    border-radius: 14px;

    color: white;

    z-index: 99999;

    transform: translateX(120%);

    transition: .35s ease;

    box-shadow:
        0 15px 40px rgba(0,0,0,.15);

}

.notification.show {

    transform: translateX(0);

}

.notification.success {

    background: #16A34A;

}

.notification.error {

    background: #DC2626;

}