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


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

:root{

    --primary:#2563eb;
    --primary-dark:#1d4ed8;

    --secondary:#0f172a;

    --light:#f8fafc;

    --white:#ffffff;

    --text:#475569;

    --border:#e5e7eb;

    --success:#22c55e;

    --danger:#ef4444;

    --warning:#f59e0b;

    --radius:18px;

    --transition:.35s;

    --shadow-sm:
        0 5px 18px rgba(15,23,42,.05);

    --shadow:
        0 15px 40px rgba(15,23,42,.08);

    --shadow-lg:
        0 30px 70px rgba(15,23,42,.12);

    /* Gallery design tokens, matched to the K.S. Eye Hospital showcase */
    --gal-primary:#001f3d;
    --gal-primary-container:#003461;
    --gal-secondary:#006782;
    --gal-secondary-container:#94dffe;
    --gal-on-secondary-container:#00647e;
    --gal-bg:#f9f9fd;
    --gal-surface:#ffffff;
    --gal-surface-low:#f4f3f8;
    --gal-text-variant:#43474f;
    --gal-outline-variant:#c3c6d0;
    --gal-font-display:'Plus Jakarta Sans',sans-serif;

}


/*==================================================
                RESET
==================================================*/

*{

    margin:0;

    padding:0;

    box-sizing:border-box;

}

html{

    scroll-behavior:smooth;

}

body{

    font-family:"Inter",sans-serif;

    background:
        radial-gradient(circle at top right,#dbeafe 0%,transparent 30%),
        radial-gradient(circle at bottom left,#eff6ff 0%,transparent 25%),
        #f8fafc;

    color:var(--text);

    overflow-x:hidden;

}

img{

    max-width:100%;

    display:block;

}

a{

    text-decoration:none;

}

ul{

    list-style:none;

}


/*==================================================
                CUSTOM SCROLLBAR
==================================================*/

::-webkit-scrollbar{

    width:10px;

}

::-webkit-scrollbar-track{

    background:#edf2f7;

}

::-webkit-scrollbar-thumb{

    background:#cbd5e1;

    border-radius:50px;

}

::-webkit-scrollbar-thumb:hover{

    background:var(--primary);

}


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

.gallery-section{

    padding:40px 0 90px;

}

.section-header{

    max-width:760px;

}

.gallery-eyebrow{

    display:inline-flex;
    align-items:center;
    gap:8px;

    background:var(--gal-secondary-container);
    color:var(--gal-on-secondary-container);

    font-size:13px;
    font-weight:700;
    letter-spacing:.08em;
    text-transform:uppercase;

    padding:8px 18px;
    border-radius:999px;

    margin-bottom:20px;

}

.gallery-eyebrow i{

    font-size:15px;

}

.section-header h1{

    font-family:var(--gal-font-display);
    font-size:42px;
    font-weight:700;
    letter-spacing:-.02em;
    line-height:1.15;
    color:var(--gal-primary);
    margin-bottom:14px;

}

.section-header p{

    color:var(--gal-text-variant);
    font-size:17px;
    line-height:1.6;
    margin:0;

}


/*==================================================
                BENTO GRID OF ALBUM COVERS
==================================================*/

.gallery-grid{

    display:grid;
    grid-template-columns:repeat(12,1fr);
    gap:22px;

}

.gallery-item{

    position:relative;
    overflow:hidden;
    border-radius:16px;
    background:var(--gal-surface);
    border:1px solid var(--gal-outline-variant);
    grid-column:span 12;

}

/* bento spans on desktop, cycling through 4 layouts */
@media (min-width:768px){

    .gallery-item--a{ grid-column:span 8; }
    .gallery-item--b{ grid-column:span 4; }
    .gallery-item--c{ grid-column:span 5; }
    .gallery-item--d{ grid-column:span 7; }

}

.gallery-item-media{

    width:100%;
    overflow:hidden;
    cursor:pointer;

}

.gallery-item--a .gallery-item-media,
.gallery-item--d .gallery-item-media{

    aspect-ratio:16/9;

}

.gallery-item--b .gallery-item-media{

    aspect-ratio:1/1;

}

.gallery-item--c .gallery-item-media{

    aspect-ratio:4/3;

}

.gallery-item-media img{

    width:100%;
    height:100%;
    object-fit:cover;
    transition:transform .7s ease;

}

.gallery-item:hover .gallery-item-media img{

    transform:scale(1.06);

}

.gallery-item-count{

    display:inline-flex;
    align-items:center;
    gap:6px;

    background:rgba(255,255,255,.18);
    color:#ffffff;
    border:1px solid rgba(255,255,255,.35);

    font-size:12px;
    font-weight:600;

    padding:4px 11px;
    border-radius:999px;

    margin-top:10px;

}

.gallery-item-count-plain{

    display:inline-flex;
    align-items:center;
    gap:6px;

    color:var(--gal-secondary);

    font-size:13px;
    font-weight:600;

    margin-top:6px;

}

/* spotlight overlay: variants a & d */
.gallery-item--a .gallery-item-overlay,
.gallery-item--d .gallery-item-overlay{

    position:absolute;
    left:0;
    right:0;
    bottom:0;

    padding:20px;

    background:linear-gradient(to top,rgba(0,31,61,.85),transparent);

    display:flex;
    justify-content:space-between;
    align-items:flex-end;

    transform:translateY(10px);
    opacity:0;

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

    pointer-events:none;

}

.gallery-item--a:hover .gallery-item-overlay,
.gallery-item--d:hover .gallery-item-overlay{

    transform:translateY(0);
    opacity:1;

}

.gallery-item-eyebrow{

    display:block;
    color:rgba(255,255,255,.8);
    font-size:11.5px;
    letter-spacing:.12em;
    text-transform:uppercase;
    margin-bottom:4px;

}

.gallery-item-title{

    font-family:var(--gal-font-display);
    font-size:20px;
    font-weight:700;
    color:#ffffff;
    margin:0;

}

.gallery-item-zoom{

    flex:0 0 auto;

    width:40px;
    height:40px;
    border-radius:999px;

    background:var(--gal-surface);
    color:var(--gal-primary);

    border:none;
    display:flex;
    align-items:center;
    justify-content:center;

    opacity:0;
    transition:opacity .3s ease,transform .2s ease;

    cursor:pointer;
    pointer-events:auto;

}

.gallery-item:hover .gallery-item-zoom{

    opacity:1;

}

.gallery-item-zoom:hover{

    transform:scale(1.08);

}

/* feature-square overlay: variant b */
.gallery-item--b .gallery-item-media{

    position:relative;

}

.gallery-item--b .gallery-item-center-overlay{

    position:absolute;
    inset:0;

    background:rgba(0,31,61,.35);

    display:flex;
    align-items:center;
    justify-content:center;

    opacity:0;
    transition:opacity .3s ease;

}

.gallery-item--b:hover .gallery-item-center-overlay{

    opacity:1;

}

.gallery-item-detail-btn{

    background:var(--gal-surface);
    color:var(--gal-primary);

    border:none;
    border-radius:10px;
    padding:10px 18px;

    font-size:13.5px;
    font-weight:700;

    display:inline-flex;
    align-items:center;
    gap:8px;

    cursor:pointer;

}

.gallery-item--b .gallery-item-caption{

    padding:14px 16px;
    background:var(--gal-surface-low);
    border-top:1px solid var(--gal-outline-variant);

}

.gallery-item--b .gallery-item-caption h4{

    font-size:14px;
    font-weight:700;
    color:var(--gal-primary);
    margin:0;

}

/* caption-card: variant c */
.gallery-item--c .gallery-item-media{

    position:relative;

}

.gallery-item--c .gallery-item-badge{

    position:absolute;
    top:14px;
    right:14px;

    width:36px;
    height:36px;
    border-radius:8px;

    background:var(--gal-surface);
    color:var(--gal-secondary);

    display:flex;
    align-items:center;
    justify-content:center;

    opacity:0;
    transition:opacity .3s ease;

    box-shadow:var(--shadow-sm);

}

.gallery-item--c:hover .gallery-item-badge{

    opacity:1;

}

.gallery-item--c .gallery-item-caption{

    padding:18px;

}

.gallery-item--c .gallery-item-caption h4{

    font-family:var(--gal-font-display);
    font-size:19px;
    font-weight:700;
    color:var(--gal-primary);
    margin-bottom:6px;

}

.gallery-item--c .gallery-item-caption p{

    font-size:14.5px;
    color:var(--gal-text-variant);
    margin:0;

}


/*==================================================
                CTA BANNER
==================================================*/

.cta-banner{

    margin-top:56px;

    background:var(--gal-primary-container);
    border-radius:26px;

    padding:64px 24px;

    text-align:center;

}

.cta-banner-inner{

    max-width:640px;
    margin:0 auto;

}

.cta-banner h2{

    font-family:var(--gal-font-display);
    font-size:32px;
    font-weight:700;
    color:#ffffff;
    margin-bottom:16px;

}

.cta-banner p{

    color:rgba(255,255,255,.75);
    font-size:17px;
    line-height:1.6;
    margin-bottom:28px;

}

.cta-actions{

    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    gap:16px;

}

.btn-cta-primary,
.btn-cta-secondary{

    padding:13px 28px;
    border-radius:12px;

    font-size:14px;
    font-weight:700;
    letter-spacing:.02em;

    transition:.3s;

}

.btn-cta-primary{

    background:var(--gal-secondary);
    color:#ffffff;

}

.btn-cta-primary:hover{

    box-shadow:0 10px 25px rgba(0,103,130,.35);

}

.btn-cta-secondary{

    background:rgba(255,255,255,.1);
    color:#ffffff;
    border:1px solid rgba(255,255,255,.3);
    backdrop-filter:blur(4px);

}

.btn-cta-secondary:hover{

    background:rgba(255,255,255,.2);

}


/*==================================================
                ALBUM MODAL — lists every photo in an album
==================================================*/

.ks-album-modal{

    display:none;

    position:fixed;
    inset:0;
    z-index:9998;

    background:rgba(0,31,61,.94);

    padding:80px 24px 40px;

    overflow-y:auto;

}

.ks-album-modal.is-open{

    display:block;

}

.ks-album-modal-panel{

    max-width:1120px;
    margin:0 auto;

}

.ks-album-modal-header{

    text-align:center;
    color:#ffffff;

    margin-bottom:32px;

}

.ks-album-modal-header h2{

    font-family:var(--gal-font-display);
    font-size:28px;
    font-weight:700;
    margin-bottom:8px;

}

.ks-album-modal-header p{

    color:rgba(255,255,255,.7);
    font-size:15px;
    line-height:1.6;

    max-width:560px;
    margin:0 auto;

}

.ks-album-modal-grid{

    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(210px,1fr));
    gap:20px;

}

.ks-album-thumb{

    border-radius:12px;
    overflow:hidden;

    background:#0b1729;
    border:1px solid rgba(255,255,255,.12);

    cursor:pointer;

    transition:border-color .3s ease;

}

.ks-album-thumb:hover{

    border-color:rgba(255,255,255,.4);

}

.ks-album-thumb-media{

    width:100%;
    aspect-ratio:4/3;
    overflow:hidden;

}

.ks-album-thumb-media img{

    width:100%;
    height:100%;
    object-fit:cover;

    transition:transform .4s ease;

}

.ks-album-thumb:hover .ks-album-thumb-media img{

    transform:scale(1.08);

}

.ks-album-thumb-caption{

    padding:10px 12px;

    color:#ffffff;
    font-size:13.5px;
    font-weight:600;

    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;

}


/*==================================================
                LIGHTBOX — single enlarged image
==================================================*/

.ks-lightbox{

    display:none;

    position:fixed;
    inset:0;
    z-index:9999;

    background:rgba(0,31,61,.92);

    align-items:center;
    justify-content:center;

    padding:24px;

}

.ks-lightbox.is-open{

    display:flex;

}

.ks-lightbox-close{

    position:fixed;
    top:24px;
    right:28px;

    width:44px;
    height:44px;
    border-radius:999px;

    background:transparent;
    color:#ffffff;

    border:none;
    font-size:26px;
    line-height:1;

    display:flex;
    align-items:center;
    justify-content:center;

    cursor:pointer;

    z-index:10000;

}

.ks-lightbox-content{

    max-width:min(900px,92vw);
    text-align:center;

}

.ks-lightbox-image{

    max-width:100%;
    max-height:70vh;

    object-fit:contain;
    border-radius:14px;

    box-shadow:0 30px 70px rgba(0,0,0,.4);

    background:#0f172a;

    margin:0 auto;

}

.ks-lightbox-title{

    font-family:var(--gal-font-display);
    font-size:24px;
    font-weight:700;
    color:#ffffff;

    margin-top:22px;

}

.ks-lightbox-caption{

    color:rgba(255,255,255,.7);
    font-size:15px;
    line-height:1.6;

    max-width:520px;
    margin:8px auto 0;

}

.ks-lightbox-back{

    position:fixed;
    top:26px;
    left:28px;

    background:transparent;
    color:#ffffff;

    border:none;
    font-size:14px;
    font-weight:600;

    display:flex;
    align-items:center;
    gap:6px;

    cursor:pointer;

    z-index:10000;

}


/*==================================================
                MISC / EMPTY STATES
==================================================*/

.gallery-empty,
.gallery-error{

    text-align:center;
    color:var(--gal-text-variant);
    padding:60px 20px;
    font-size:15px;
    grid-column:1/-1;

}



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

@media (max-width:992px){

    .hospital-testimonials{

        grid-template-columns:repeat(2,1fr);

    }

    .t-card--featured{

        grid-column:span 2;

    }

}
