/*
|--------------------------------------------------------------------------
| JP Pools & Aquatic Solutions
|--------------------------------------------------------------------------
| File        : gallery.css
| Version     : 1.0.0
| Author      : Martin Harris
| Description :
| Premium Gallery Stylesheet
|--------------------------------------------------------------------------
*/


/* ==========================================================
   ROOT VARIABLES
========================================================== */

:root{

    --primary:#0A6FB6;
    --secondary:#0F172A;
    --accent:#38BDF8;

    --white:#FFFFFF;
    --light:#F8FAFC;
    --grey:#E5E7EB;

    --text:#1F2937;

    --shadow:0 20px 45px rgba(0,0,0,.18);

    --radius:18px;

    --transition:.4s ease;

}



/* ==========================================================
   GLOBAL
========================================================== */

body{

    background:#ffffff;

    color:var(--text);

    overflow-x:hidden;

}



/* ==========================================================
   HERO SECTION
========================================================== */

.gallery-hero{

    position:relative;

    width:100%;

    min-height:100vh;

    display:flex;

    justify-content:center;

    align-items:center;

    overflow:hidden;

}



/* ==========================================================
   SLIDESHOW
========================================================== */

.hero-slideshow{

    position:absolute;

    inset:0;

    z-index:1;

}



.hero-slide{

    position:absolute;

    inset:0;

    opacity:0;

    transition:opacity 2s ease;

}



.hero-slide.active{

    opacity:1;

}



.hero-slide img{

    width:100%;

    height:100%;

    object-fit:cover;

}



/* ==========================================================
   HERO OVERLAY
========================================================== */

.hero-overlay{

    position:absolute;

    inset:0;

    z-index:2;

    background:
    linear-gradient(
        rgba(5,25,45,.72),
        rgba(10,35,60,.72)
    );

}



/* ==========================================================
   HERO CONTENT
========================================================== */

.gallery-hero .container{

    position:relative;

    z-index:5;

}



.hero-subtitle{

    display:inline-block;

    color:#8ED8FF;

    letter-spacing:4px;

    font-weight:600;

    text-transform:uppercase;

    margin-bottom:25px;

}



.hero-title{

    font-size:clamp(3rem,7vw,6rem);

    color:#fff;

    font-weight:800;

    margin-bottom:30px;

    text-transform:uppercase;

}



.hero-description{

    max-width:760px;

    margin:auto;

    color:#ffffff;

    font-size:1.2rem;

    line-height:2;

}



/* ==========================================================
   HERO BUTTONS
========================================================== */

.hero-buttons{

    margin-top:50px;

    display:flex;

    justify-content:center;

    gap:20px;

    flex-wrap:wrap;

}



.hero-buttons .btn{

    padding:16px 42px;

    border-radius:50px;

    font-weight:600;

    transition:var(--transition);

    box-shadow:var(--shadow);

}



.hero-buttons .btn-primary{

    background:var(--primary);

    border:none;

}



.hero-buttons .btn-primary:hover{

    transform:translateY(-4px);

}



.hero-buttons .btn-outline-light:hover{

    background:#fff;

    color:#000;

}



/* ==========================================================
   SCROLL INDICATOR
========================================================== */

.scroll-indicator{

    position:absolute;

    bottom:40px;

    left:50%;

    transform:translateX(-50%);

    z-index:10;

}



.scroll-indicator span{

    display:block;

    width:30px;

    height:50px;

    border:2px solid #fff;

    border-radius:30px;

    position:relative;

}



.scroll-indicator span::before{

    content:"";

    position:absolute;

    width:6px;

    height:10px;

    background:#fff;

    left:50%;

    top:8px;

    transform:translateX(-50%);

    border-radius:10px;

    animation:scroll 2s infinite;

}



/* ==========================================================
   STATISTICS
========================================================== */

.gallery-stats{

    padding:90px 0;

    background:#fff;

}



.stat-card{

    background:#fff;

    padding:45px;

    text-align:center;

    border-radius:var(--radius);

    box-shadow:var(--shadow);

    transition:var(--transition);

    height:100%;

}



.stat-card:hover{

    transform:translateY(-10px);

}



.stat-card h2{

    font-size:3rem;

    color:var(--primary);

    font-weight:800;

}



.stat-card p{

    margin-top:10px;

    font-size:1.05rem;

    color:#555;

}



/* ==========================================================
   WAVE DIVIDER
========================================================== */

.wave-divider{

    width:100%;

    line-height:0;

    margin-top:-2px;

}



.wave-divider svg{

    width:100%;

    height:120px;

}



/* ==========================================================
   ANIMATIONS
========================================================== */

@keyframes scroll{

    0%{

        opacity:0;

        transform:translate(-50%,0);

    }

    50%{

        opacity:1;

    }

    100%{

        opacity:0;

        transform:translate(-50%,18px);

    }

}



/* ==========================================================
   RESPONSIVE
========================================================== */

@media (max-width:991px){

.hero-title{

    font-size:3.5rem;

}

.hero-description{

    font-size:1rem;

    line-height:1.8;

}

.gallery-stats{

    padding:70px 0;

}

}



@media (max-width:768px){

.hero-buttons{

    flex-direction:column;

    align-items:center;

}

.hero-buttons .btn{

    width:100%;

    max-width:320px;

}

.hero-title{

    font-size:2.8rem;

}

.hero-description{

    font-size:1rem;

}

.stat-card{

    padding:35px;

}

}

/* ==========================================================
   FEATURED PROJECT
========================================================== */

.featured-project{

    background:#F8FAFC;

    padding:120px 0;

}



.section-badge{

    display:inline-block;

    padding:8px 22px;

    border-radius:40px;

    background:#0A6FB6;

    color:#fff;

    font-size:.85rem;

    font-weight:700;

    letter-spacing:2px;

}



.section-title{

    font-size:clamp(2.4rem,5vw,4rem);

    font-weight:800;

    color:#0F172A;

}



.section-description{

    max-width:760px;

    margin:auto;

    color:#64748B;

    line-height:1.8;

}



.featured-image{

    overflow:hidden;

    border-radius:24px;

    box-shadow:0 30px 60px rgba(0,0,0,.18);

}



.featured-image img{

    width:100%;

    display:block;

    aspect-ratio:16/9;

    object-fit:cover;

    transition:.7s;

}



.featured-image:hover img{

    transform:scale(1.06);

}



.featured-pill{

    display:inline-block;

    background:#E0F2FE;

    color:#0369A1;

    padding:8px 18px;

    border-radius:50px;

    font-weight:700;

    margin-bottom:20px;

}



.featured-title{

    font-size:2.5rem;

    font-weight:800;

    color:#0F172A;

    margin-bottom:25px;

}



.project-meta{

    margin:35px 0;

}



.meta-item{

    display:flex;

    justify-content:space-between;

    align-items:center;

    padding:14px 0;

    border-bottom:1px solid #E5E7EB;

}



.meta-item strong{

    color:#0F172A;

}



.meta-item span{

    color:#64748B;

}



.project-features{

    list-style:none;

    padding:0;

    margin:0;

}



.project-features li{

    padding:10px 0;

    position:relative;

    padding-left:28px;

}



.project-features li::before{

    content:"✔";

    position:absolute;

    left:0;

    color:#0A6FB6;

    font-weight:bold;

}



.featured-content .btn{

    border-radius:40px;

    padding:14px 40px;

}

/* ==========================================================
   FILTERS
========================================================== */

.gallery-filters{

    padding:110px 0 60px;

    background:#fff;

}

.filter-wrapper{

    display:flex;

    justify-content:center;

    align-items:center;

    gap:15px;

    flex-wrap:wrap;

    margin-top:55px;

}

.filter-btn{

    border:none;

    background:#F1F5F9;

    color:#475569;

    padding:14px 30px;

    border-radius:50px;

    cursor:pointer;

    font-weight:600;

    transition:.35s;

    box-shadow:0 10px 25px rgba(0,0,0,.05);

}

.filter-btn:hover{

    background:#0A6FB6;

    color:#fff;

    transform:translateY(-4px);

}

.filter-btn.active{

    background:#0A6FB6;

    color:#fff;

}

/* ==========================================================
   PORTFOLIO GRID
========================================================== */

.portfolio-section{

    background:#fff;

    padding:40px 0 120px;

}

.portfolio-card{

    overflow:hidden;

    border-radius:20px;

    background:#fff;

    box-shadow:0 18px 45px rgba(0,0,0,.08);

    transition:.45s;

}

.portfolio-card:hover{

    transform:translateY(-12px);

}

.portfolio-image{

    position:relative;

    overflow:hidden;

}

.portfolio-image img{

    width:100%;

    aspect-ratio:4/3;

    object-fit:cover;

    display:block;

    transition:.7s;

}

.portfolio-card:hover img{

    transform:scale(1.08);

}

.portfolio-overlay{

    position:absolute;

    inset:0;

    background:linear-gradient(
        rgba(0,0,0,.05),
        rgba(0,0,0,.85)
    );

    opacity:0;

    transition:.4s;

    display:flex;

    align-items:flex-end;

    padding:30px;

}

.portfolio-card:hover .portfolio-overlay{

    opacity:1;

}

.overlay-content{

    color:#fff;

}

.portfolio-type{

    display:inline-block;

    padding:6px 15px;

    border-radius:30px;

    background:#0A6FB6;

    margin-bottom:15px;

    font-size:.8rem;

}

.overlay-content h4{

    font-size:1.5rem;

    margin-bottom:15px;

    font-weight:700;

}

.overlay-content p{

    opacity:.92;

    margin-bottom:25px;

}

.image-count{

    position:absolute;

    top:18px;

    right:18px;

    background:#0A6FB6;

    color:#fff;

    padding:8px 14px;

    border-radius:30px;

    font-weight:700;

    z-index:5;

}

/* ==========================================================
   LIGHTBOX
========================================================== */

.gallery-lightbox{

    position:fixed;

    inset:0;

    background:rgba(0,0,0,.95);

    z-index:99999;

    display:none;

    justify-content:center;

    align-items:center;

    opacity:0;

    transition:.35s;

}

.gallery-lightbox.show{

    display:flex;

    opacity:1;

}

.lightbox-content{

    width:90%;

    max-width:1200px;

    text-align:center;

}

.lightbox-content img{

    max-width:100%;

    max-height:75vh;

    border-radius:15px;

    box-shadow:0 25px 60px rgba(0,0,0,.4);

}

.lightbox-info{

    color:#fff;

    margin-top:25px;

}

.lightbox-info h3{

    font-size:2rem;

    margin-bottom:10px;

}

.lightbox-close,
.lightbox-prev,
.lightbox-next{

    position:absolute;

    background:none;

    border:none;

    color:#fff;

    cursor:pointer;

    font-size:3rem;

    transition:.3s;

}

.lightbox-close{

    top:20px;

    right:35px;

}

.lightbox-prev{

    left:35px;

    top:50%;

    transform:translateY(-50%);

}

.lightbox-next{

    right:35px;

    top:50%;

    transform:translateY(-50%);

}

.lightbox-close:hover,
.lightbox-prev:hover,
.lightbox-next:hover{

    color:#38BDF8;

}

/* ==========================================================
   CALL TO ACTION
========================================================== */

.gallery-cta{

    position:relative;

    padding:120px 0;

    background:
        linear-gradient(
            rgba(10,111,182,.88),
            rgba(5,50,90,.92)
        ),
        url("../images/IMG-20240702-WA0040.jpg") center center/cover no-repeat;

    color:#fff;

}

.cta-title{

    font-size:clamp(2.5rem,5vw,4.5rem);

    font-weight:800;

    margin-bottom:30px;

    color:#fff;

}

.cta-description{

    max-width:760px;

    margin:auto;

    font-size:1.15rem;

    line-height:2;

    opacity:.95;

}

.cta-buttons{

    margin-top:50px;

    display:flex;

    justify-content:center;

    gap:20px;

    flex-wrap:wrap;

}

.cta-buttons .btn{

    min-width:230px;

    padding:16px 40px;

    border-radius:50px;

    font-weight:600;

}

.cta-buttons .btn-outline-light:hover{

    background:#fff;

    color:#0A6FB6;

}
/* ==========================================================
   SCROLL ANIMATIONS
========================================================== */

.animate-on-scroll{

    opacity:0;

    transform:translateY(50px);

    transition:
        opacity .8s ease,
        transform .8s ease;

}

.animate-on-scroll.visible{

    opacity:1;

    transform:translateY(0);

}