/*=========================================================
    JOHN'S STUFF
    style.css
    PART 1
=========================================================*/

/*=========================
  COLOURS
=========================*/

:root{

    --bg:#edf3f7;

    --navy:#0b2942;
    --navy-light:#1c5b84;

    --teal:#2d8ca8;

    --cyan:#55c5d9;

    --white:#ffffff;

    --text:#1d3242;

    --text-light:#5f7383;

    --glass:rgba(255,255,255,.18);

    --glass-border:rgba(255,255,255,.32);

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

    --radius:22px;

}

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

*{

    margin:0;

    padding:0;

    box-sizing:border-box;

}

html{

    scroll-behavior:smooth;

}

body{

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

    background:var(--bg);

    color:var(--text);

    overflow-x:hidden;

}

/*=========================
HEADER
=========================*/

.hero{

    position:relative;

    height:430px;

    background:

    linear-gradient(

        rgba(8,30,52,.55),

        rgba(8,30,52,.45)

    ),

    url("images/header.jpg")

    center center/cover

    no-repeat;

}

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

.hero-overlay{

    position:absolute;

    inset:0;

    display:flex;

    justify-content:center;

    align-items:flex-start;

    padding-top:40px;

}

/*=========================
TOP BAR
=========================*/

.topbar{

    width:min(1280px,94%);

    display:flex;

    justify-content:space-between;

    align-items:flex-start;

}

/*=========================
TITLE
=========================*/

.site-title{

    color:white;

}

.site-title h1{

    font-size:4rem;

    font-weight:800;

    letter-spacing:3px;

    text-shadow:

        0 5px 18px rgba(0,0,0,.45);

}

.site-title p{

    margin-top:12px;

    font-size:1.2rem;

    opacity:.95;

}

/*=========================
RIGHT SIDE
=========================*/

.header-right{

    display:flex;

    flex-direction:column;

    align-items:flex-end;

}

.top-panels{

    display:flex;

    gap:20px;

}

/*=========================
GLASS
=========================*/

.glass{

    background:var(--glass);

    backdrop-filter:blur(18px);

    border:1px solid var(--glass-border);

    border-radius:20px;

    box-shadow:var(--shadow);

}

/*=========================
CLOCK
=========================*/

.clock{

    width:220px;

    height:120px;

    display:flex;

    justify-content:center;

    align-items:center;

    flex-direction:column;

    text-align:center;

    color:white;

    font-size:1.55rem;

    font-weight:600;

}

/*=========================
WEATHER
=========================*/

.weather{

    width:320px;

    height:120px;

    display:flex;

    justify-content:center;

    align-items:center;

    color:white;

}

/*=========================
THEME BUTTON
=========================*/

.theme-button{

    position:absolute;

    top:24px;

    right:24px;

    width:58px;

    height:58px;

    border:none;

    border-radius:50%;

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

    border:1px solid rgba(255,255,255,.30);

    backdrop-filter:blur(14px);

    color:white;

    cursor:pointer;

    display:flex;

    justify-content:center;

    align-items:center;

    transition:.35s;

    z-index:100;

}

.theme-button:hover{

    transform:scale(1.08);

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

}

/*=========================
SVG WAVES
=========================*/

.waves{

    position:absolute;

    bottom:-2px;

    left:0;

    width:100%;

    overflow:hidden;

    line-height:0;

}

.waves svg{

    display:block;

    width:100%;

    height:90px;

}

.wave1{

    fill:rgba(255,255,255,.28);

}

.wave2{

    fill:rgba(255,255,255,.18);

}

.wave3{

    fill:rgba(255,255,255,.10);

}

.wave4{

    fill:var(--bg);

}

/*=========================
WAVE ANIMATION
=========================*/

.parallax > use{

    animation:moveWaves 18s linear infinite;

}

.parallax > use:nth-child(1){

    animation-duration:7s;

}

.parallax > use:nth-child(2){

    animation-duration:10s;

}

.parallax > use:nth-child(3){

    animation-duration:13s;

}

.parallax > use:nth-child(4){

    animation-duration:20s;

}

@keyframes moveWaves{

    0%{

        transform:translate3d(-90px,0,0);

    }

    100%{

        transform:translate3d(85px,0,0);

    }

}

/*=========================
MAIN
=========================*/

main{

    width:min(1280px,94%);

    margin:auto;

    padding:45px 0 80px;

}

/*=========================================================
    DASHBOARD
=========================================================*/

.dashboard{

    display:grid;

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

    gap:28px;

    margin-top:20px;

}

/*=========================================================
CARDS
=========================================================*/

.card{

    position:relative;

    display:flex;

    flex-direction:column;

    align-items:center;

    aspect-ratio:1;

    padding:28px;

    border-radius:24px;

    overflow:hidden;

    text-decoration:none;

    color:white;

    box-shadow:var(--shadow);

    transition:
        transform .35s ease,
        box-shadow .35s ease;

}

.card:hover{

    transform:
        translateY(-8px)
        scale(1.02);

    box-shadow:
        0 28px 55px rgba(0,0,0,.28);

}

/*=========================================================
GLASS OVERLAY
=========================================================*/

.card::before{

    content:"";

    position:absolute;

    inset:0;

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

    backdrop-filter:blur(10px);

}

.card>*{

    position:relative;

    z-index:2;

}

.card::after{

    content:"";

    position:absolute;

    top:0;

    left:0;

    width:100%;

    height:5px;

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

}

/*=========================================================
CARD COLOURS
=========================================================*/

.blue{

    background:
        linear-gradient(145deg,#0d3b61,#2579aa);

}

.green{

    background:
        linear-gradient(145deg,#0f5c5d,#1796a2);

}

.yellow{

    background:
        linear-gradient(145deg,#275775,#418dc2);

}

.purple{

    background:
        linear-gradient(145deg,#1a3d5d,#2f6f9e);

}

/*=========================================================
ICONS
=========================================================*/

.icon{

    width:90px;

    height:90px;

    display:flex;

    justify-content:center;

    align-items:center;

    margin-bottom:18px;

}

.icon svg{

    width:80px;

    height:80px;

    stroke:white;

    transition:.35s;

}

.card:hover .icon svg{

    transform:
        rotate(-8deg)
        scale(1.12);

}

/*=========================================================
TEXT
=========================================================*/

.card-text{

    display:flex;

    flex-direction:column;

    justify-content:center;

    align-items:center;

    text-align:center;

    flex:1;

}

    width:100%;

}

.card-text h2{

    text-align:center;

    font-size:1.35rem;

    line-height:1.35;

    font-weight:700;

    margin-bottom:18px;

}

.card-text p{

    color:rgba(255,255,255,.92);

    line-height:1.6;

    font-size:.98rem;

    margin-top:10px;

}

/*=========================================================
VISIT BUTTON
=========================================================*/


/*=========================================================
QUOTE PANEL
=========================================================*/

.quote-panel{

    margin-top:55px;

    padding:40px;

}

.quote-panel h2{

    text-align:center;

    color:var(--navy);

    font-size:2rem;

    margin-bottom:25px;

}

.quote-panel p{

    max-width:850px;

    margin:auto;

    text-align:center;

    font-size:1.35rem;

    line-height:1.8;

    font-style:italic;

    color:var(--text-light);

}

/*=========================================================
INFO PANELS
=========================================================*/

.info-panels{

    display:grid;

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

    gap:28px;

    margin-top:45px;

}

.info-card{

    padding:32px;

}

.info-card h3{

    color:var(--navy);

    font-size:1.5rem;

    margin-bottom:18px;

}

.info-card p{

    color:var(--text-light);

    line-height:1.8;

}

.info-card ul{

    margin-left:22px;

    color:var(--text-light);

    line-height:2;

}

.info-card li{

    margin-bottom:8px;

}

/*=========================================================
    PART 3
    FOOTER • WEATHER • DARK MODE • RESPONSIVE
=========================================================*/

/*=========================
WEATHER PANEL
=========================*/

.weatherPanel{

    display:flex;

    align-items:center;

    justify-content:center;

    gap:18px;

    width:100%;

}

.weatherPanel img{

    width:70px;

    height:70px;

}

.weatherInfo{

    display:flex;

    flex-direction:column;

}

.weatherInfo h2{

    font-size:2rem;

    font-weight:700;

    margin:0;

    color:white;

}

.weatherInfo p{

    margin:2px 0;

    color:white;

    font-size:.92rem;

}

.weather-loading{

    color:white;

    text-align:center;

}

/*=========================
FOOTER
=========================*/

footer{

    margin-top:70px;

    background:linear-gradient(
        180deg,
        var(--navy-light),
        var(--navy)
    );

    color:white;

    padding:45px 0;

}

.footer-content{

    width:min(1280px,94%);

    margin:auto;

    display:flex;

    justify-content:space-between;

    align-items:center;

    gap:40px;

}

.footer-left h3{

    font-size:1.6rem;

    margin-bottom:10px;

}

.footer-left p,
.footer-right p{

    line-height:1.7;

    opacity:.92;

}

/*=========================
DARK MODE
=========================*/

body.dark{

    --bg:#08131d;

    --text:#eef5fb;

    --text-light:#c9d8e4;

    background:var(--bg);

    color:var(--text);

}

body.dark .hero{

    background:

    linear-gradient(

        rgba(0,0,0,.65),

        rgba(0,0,0,.60)

    ),

    url("images/header.jpg")

    center center/cover

    no-repeat;

}

body.dark .glass{

    background:rgba(15,32,48,.78);

    border:1px solid rgba(255,255,255,.10);

}

body.dark .quote-panel{

    background:#102232;

}

body.dark .info-card{

    background:#102232;

}

body.dark .quote-panel h2,
body.dark .info-card h3{

    color:#84d8ee;

}

body.dark .quote-panel p,
body.dark .info-card p,
body.dark .info-card li{

    color:#d8e6f0;

}

body.dark .visit{

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

}

body.dark .card:hover .visit{

    background:white;

    color:var(--navy);

}

/*=========================
FADE IN
=========================*/

body{

    animation:fadeIn .8s ease;

}

@keyframes fadeIn{

    from{

        opacity:0;

    }

    to{

        opacity:1;

    }

}

/*=========================
CARD ANIMATION
=========================*/

@keyframes rise{

    from{

        opacity:0;

        transform:translateY(35px);

    }

    to{

        opacity:1;

        transform:translateY(0);

    }

}

.card:nth-child(1){

    animation:rise .45s ease both;

}

.card:nth-child(2){

    animation:rise .65s ease both;

}

.card:nth-child(3){

    animation:rise .85s ease both;

}

.card:nth-child(4){

    animation:rise 1.05s ease both;

}

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

::-webkit-scrollbar{

    width:12px;

}

::-webkit-scrollbar-track{

    background:#dfe7ee;

}

::-webkit-scrollbar-thumb{

    background:#2c7398;

    border-radius:20px;

}

body.dark::-webkit-scrollbar-track{

    background:#08131d;

}

body.dark::-webkit-scrollbar-thumb{

    background:#4eb3cf;

}

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

@media (max-width:1200px){

    .dashboard{

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

    }

}

@media (max-width:900px){

    .topbar{

        flex-direction:column;

        align-items:center;

        text-align:center;

        gap:30px;

    }

    .header-right{

        align-items:center;

    }

    .top-panels{

        flex-direction:column;

        align-items:center;

        width:100%;

    }

    .info-panels{

        grid-template-columns:1fr;

    }

    .footer-content{

        flex-direction:column;

        text-align:center;

    }

}

@media (max-width:700px){

    .dashboard{

        grid-template-columns:1fr;

    }

    .hero{

        height:560px;

    }

    .site-title h1{

        font-size:2.5rem;

    }

    .site-title p{

        font-size:1rem;

    }

    .clock,
    .weather{

        width:100%;

    }

}

@media (max-width:480px){

    .theme-button{

        width:48px;

        height:48px;

    }

    .site-title h1{

        font-size:2rem;

    }

}

/*=========================
UTILITY
=========================*/

.hidden{

    display:none;

}

.center{

    text-align:center;

}