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

*{
    margin:0;
    padding:0;
    box-sizing:border-box;
}

html{
    scroll-behavior:smooth;
}

body{
    font-family:'Poppins',sans-serif;
  
    background:#050505;

    color:white;

    overflow-x:hidden;
}

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

header{
    position: fixed;

    top: 15px;
    left: 40px;
    right: 40px;

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

    padding: 20px 40px;

    z-index: 1000;

    background: rgba(20,20,20,.45);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);

    border: 1px solid rgba(255,255,255,.08);
    border-radius: 20px;

    transition: .3s;
}

header:hover{

    background: rgba(25,25,25,.6);

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

    box-shadow:
        0 12px 45px rgba(0,0,0,.45),
        0 0 25px rgba(255,255,255,.05);

}

nav a{

    color:white;

    text-decoration:none;

    padding:10px 18px;

    border-radius:12px;

    transition:.3s;

}

nav a:hover{

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

    backdrop-filter:blur(10px);

}

.logo{

    font-size:28px;

    font-weight:700;

    letter-spacing:4px;

}

nav{

    display:flex;

    gap:45px;

}

nav a{

    color:white;

    text-decoration:none;

    transition:.3s;

    font-size:15px;

}

nav a:hover{

    color:#d0d0d0;

}

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

.hero{

    min-height:100vh;

    display:flex;

    justify-content:space-between;

    align-items:center;

    padding:0 80px;

    gap:70px;

}

/* ==========================
   LEFT
========================== */

.hero-left{

    width:45%;

}

.hero-left span{

    color:#9b9b9b;

    letter-spacing:5px;

    font-size:14px;

}

.hero-left h1{

    font-size:78px;

    margin-top:20px;

    line-height:80px;

}

.hero-left p{

    margin-top:30px;

    color:#bdbdbd;

    line-height:32px;

    max-width:520px;

}

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

.buttons{

    margin-top:45px;

    display:flex;

    gap:20px;

}

.btn{

    display:inline-block;

    padding:16px 40px;

    background:white;

    color:black;

    text-decoration:none;

    border-radius:12px;

    transition:.3s;

    font-weight:600;

}

.btn:hover{

    transform:translateY(-5px);

}

.outline{

    background:transparent;

    color:white;

    border:2px solid white;

}

.outline:hover{

    background:white;

    color:black;

}

/* ==========================
   VIDEO
========================== */

.hero-right{

    width:50%;

    display:flex;

    justify-content:flex-end;

    align-items:center;

}

.video-box{

    width:100%;

    max-width:620px;

    height:680px;

    overflow:hidden;

    border-radius:30px;

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

    background:#111;

    box-shadow:
    0 20px 70px rgba(0,0,0,.7);

}

.video-box video{

    width:100%;

    height:100%;

    object-fit:cover;

    filter:brightness(.45);

    transition:.4s;

}

.video-box:hover video{

    transform:scale(1.04);

    filter:brightness(.7);

}

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

::-webkit-scrollbar{

    width:8px;

}

::-webkit-scrollbar-thumb{

    background:white;

}

::-webkit-scrollbar-track{

    background:#111;
}

/* ==========================
   STARS
========================== */

#stars-bg{
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    z-index: -999;
    pointer-events: none;

    transition: transform .08s linear;
    will-change: transform;
}

/* ==========================
   ABOUT
========================== */

.about{

    padding:120px 80px;

}

.about-title{

    margin-bottom:60px;

}

.about-title span{

    color:#8a8a8a;

    letter-spacing:5px;

    font-size:14px;

}

.about-title h2{

    font-size:58px;

    margin-top:15px;

}

.about-content{

    max-width:900px;

}

.about-content p{

    font-size:19px;

    line-height:38px;

    color:#cfcfcf;

    margin-bottom:30px;

}

.stats{

    margin-top:70px;

    display:grid;

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

    gap:25px;

}

.stat-card{

    padding:35px;

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

    border-radius:20px;

    transition:.35s;

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

}

.stat-card:hover{

    transform:translateY(-8px);

    border-color:white;

}

.stat-card h3{

    font-size:30px;

    margin-bottom:10px;

}

.stat-card span{

    color:#bfbfbf;

}

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

.portfolio{

    padding:120px 80px;

}

.portfolio-title{

    text-align:center;

    margin-bottom:60px;

}

.portfolio-title span{

    color:#8a8a8a;

    letter-spacing:5px;

    font-size:14px;

}

.portfolio-title h2{

    font-size:58px;

    margin:15px 0;

}

.portfolio-title p{

    color:#bdbdbd;

    max-width:700px;

    margin:auto;

    line-height:30px;

}

.portfolio-filter{

    display:flex;

    justify-content:center;

    gap:18px;

    margin-bottom:60px;

}

.portfolio-filter button{

    background:transparent;

    color:white;

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

    padding:14px 28px;

    border-radius:12px;

    cursor:pointer;

    transition:.3s;

    font-size:15px;

}

.portfolio-filter button:hover{

    background:white;

    color:black;

}

.portfolio-filter .active{

    background:white;

    color:black;

}

.portfolio-grid{

    display:grid;

    grid-template-columns:repeat(auto-fit, minmax(420px, 420px));

    justify-content:center;

    gap:35px;
}

.project-card{

    cursor:pointer;

    overflow:hidden;

    border-radius:20px;

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

    background:#101010;

    transition:.35s;

}

.project-card:active{

    transform:scale(.97);

}

.project-card:hover{

    transform:
        translateY(-12px)
        scale(1.03);

    border-color:white;

    box-shadow:
        0 0 30px rgba(255,255,255,.08),
        0 25px 80px rgba(255,255,255,.08);

}

.project-card video{

    width:100%;

    height:500px;

    object-fit:cover;

    display:block;

    background:#000;

    transition:.35s;

}

.motion-card video{

    object-fit:contain;

    background:#000;

}

.project-card:hover video{

    transform:scale(1.06);

}

.project-info{

    padding:25px;

}

.project-info h3{

    font-size:24px;

    margin-bottom:8px;

}

.project-info span{

    color:#bdbdbd;

}


/* Активная кнопка фильтра */

.filter-btn.active{

    background:white;

    color:black;

    border-color:white;

}

/* Скрытие карточек */

.project-card.hidden{

    display:none;

}



/* ==========================
   PROJECT MODAL
========================== */

.modal{

    position:fixed;
    inset:0;

    display:flex;

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

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

    backdrop-filter:blur(10px);

    opacity:0;

    visibility:hidden;

    transition:.35s;

    z-index:9999;

}

.modal-content{

    width:1100px;

    max-width:92%;

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

    backdrop-filter:blur(18px);

    box-shadow:
    0 0 50px rgba(255,255,255,.06);

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

    border-radius:25px;

    display:flex;

    gap:35px;

    padding:30px;

    position:relative;

    transform:translateY(60px) scale(.95);

    opacity:0;

    transition:.35s;

}

.modal video{

    box-shadow:0 20px 60px rgba(0,0,0,.6);

    transition:.35s;

    width:auto;

    max-width:60%;

    max-height:80vh;

    object-fit:contain;

    background:#000;

    border-radius:18px;

}

.modal video:hover{

    transform:scale(1.01);

}

.modal-info{

    width:42%;

    display:flex;

    flex-direction:column;

    justify-content:center;

}

.modal-info h2{

    font-size:38px;

    margin-bottom:25px;

}

.modal-info p{

    color:#cfcfcf;

    margin-bottom:18px;

    line-height:30px;

}

.close{

    position:absolute;

    top:20px;

    right:25px;

    font-size:35px;

    cursor:pointer;

}

.close:hover{

    transform:rotate(90deg);

}

.modal h2{

    margin-bottom:20px;

}

.modal p{

    color:#c9c9c9;

    line-height:30px;

}

/* ==========================
   MODAL INFO
========================== */

.modal-category{

    display:inline-block;

    padding:8px 18px;

    border:1px solid white;

    border-radius:30px;

    font-size:13px;

    letter-spacing:2px;

    margin-bottom:20px;

}

.modal-line{

    width:100%;

    height:1px;

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

    margin:25px 0;

}

.watch-btn{

    margin-top:25px;

    display:inline-flex;

    justify-content:center;

    align-items:center;

    width:220px;

    height:55px;

    border:1px solid white;

    border-radius:15px;

    text-decoration:none;

    color:white;

    transition:.3s;

}

.watch-btn:hover{

    background:white;

    color:black;

}

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

header{
    animation: fadeDown .8s ease forwards;
}

.hero{

    min-height:100vh;

    padding:120px 80px 0;

}

.hero-left{
    animation: fadeLeft 1s ease .2s forwards;
    opacity:0;
}

.hero-right{
    animation: fadeRight 1s ease .4s forwards;
    opacity:0;
}

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

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

@keyframes fadeDown{
    from{
        opacity:0;
        transform:translateY(-40px);
    }
    to{
        opacity:1;
        transform:translateY(0);
    }
}

.modal.show{

    opacity:1;

    visibility:visible;

}

.modal.show .modal-content{

    transform:translateY(0) scale(1);

    opacity:1;

}


/* ==========================
   REVIEWS
========================== */

.reviews{

    padding:120px 80px;

}

.reviews-title{

    text-align:center;

    margin-bottom:60px;

}

.reviews-title span{

    color:#8b8b8b;

    letter-spacing:5px;

}

.reviews-title h2{

    font-size:58px;

    margin-top:15px;

}

.review-card{

    max-width:820px;

    margin:auto;

    background:#101010;

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

    border-radius:25px;

    padding:45px;

    text-align:left;

    transition:.35s;

}

.review-card:hover{

    transform:translateY(-8px);

    border-color:white;

}

.review-stars{

    text-align:center;

    font-size:30px;

    color:#fff;

    margin-bottom:25px;

}

.review-text{

    text-align:center;

    color:#cfcfcf;

    line-height:34px;

    font-size:18px;

}

.review-card h3{

    margin-top:35px;

    font-size:28px;

}

.review-card span{

    color:#8d8d8d;

}

.review-profile{

    display:flex;

    flex-direction:column;

    align-items:center;

    justify-content:center;

    text-align:center;

    gap:15px;

    margin-bottom:30px;
}

.review-profile img{

    width:90px;

    height:90px;

    border-radius:50%;

    object-fit:cover;

    border:2px solid rgba(255,255,255,.2);

}

.review-profile img:hover{

    transform:scale(1.08);

}

.review-profile h3{

    font-size:24px;

    margin-bottom:4px;

    margin-top:0;
}

.review-profile span{

    color:#9b9b9b;

    display:block;
}

/* ==========================
   CONTACT
========================== */

.contact{

    padding:120px 80px;

}

.contact-title{

    text-align:center;

    margin-bottom:60px;

}

.contact-title span{

    color:#8d8d8d;

    letter-spacing:5px;

}

.contact-title h2{

    font-size:58px;

    margin:15px 0;

}

.contact-title p{

    color:#bdbdbd;

    max-width:700px;

    margin:auto;

}

.contact-container{

    max-width:1100px;
    margin:60px auto 0;

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

    gap:90px;

    padding:50px;

    background:#101010;
    border:1px solid rgba(255,255,255,.1);
    border-radius:25px;

}

.contact-left{

    flex:1;

}

.contact-item{

    width:100%;

    max-width:360px;

    padding-bottom:25px;

    margin-bottom:25px;

    border-bottom:1px solid rgba(255,255,255,.12);

    transition:.35s;

}

.contact-item:hover{

    transform:translateX(10px);

}

.contact-item h3{

    font-size:24px;

    margin-bottom:10px;

}

.contact-item p{

    color:#bdbdbd;

    font-size:18px;

}

.contact-right{

    width:340px;
    flex-shrink:0;

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

    position:relative;

    padding:18px;

    border:1px solid rgba(255,255,255,.15);
    border-radius:28px;

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

    overflow:hidden;

    transition:.35s;

}

.contact-right::before{

    content:"";

    position:absolute;
    inset:-2px;

    border-radius:30px;

    background:linear-gradient(
        45deg,
        transparent,
        rgba(255,255,255,.35),
        transparent
    );

    opacity:0;

    transition:.4s;

}

.contact-right:hover{

    transform:translateY(-8px);

    border-color:white;

    box-shadow:
        0 0 25px rgba(255,255,255,.15),
        0 0 60px rgba(255,255,255,.08);

}

.contact-right:hover::before{

    opacity:1;

}


.contact-right img{

    width:300px;

    background:white;

    padding:15px;

    border-radius:20px;

    display:block;

    transition:.35s;

}

.contact-right img:hover{

    transform:scale(1.03);

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

}

.contact-item h3{

    display:flex;

    align-items:center;

    gap:12px;

    font-size:28px;

}

.contact-item a{

    color:#cfcfcf;
    text-decoration:none;
    font-size:18px;
    transition:.3s;

}

.contact-item a:hover{

    color:white;
    margin-left:6px;

}

.contact-item i{

    font-size:34px;

    color:white;

    transition:.35s;

}

.contact-item:hover i{

    transform:scale(1.15);

}

.contact-item i{

    transition:.35s;

}

.contact-item:hover i{

    transform:scale(1.18);

    filter:drop-shadow(0 0 10px currentColor);

}

.btn{

    position:relative;

    overflow:hidden;

}

.btn::before{

    content:"";

    position:absolute;

    top:0;

    left:-120%;

    width:100%;

    height:100%;

    background:

    linear-gradient(
        90deg,
        transparent,
        rgba(255,255,255,.45),
        transparent
    );

    transition:.6s;

}

.btn:hover::before{

    left:120%;

}

.logo{

    transition:.35s;

}

.logo:hover{

    transform:scale(1.08);

    letter-spacing:6px;

}

.contact-item:nth-child(1):hover i{

    color:#229ED9;

    filter:drop-shadow(0 0 10px #229ED9);

}

.contact-item:nth-child(2):hover i{

    color:#FE2C55;

    filter:drop-shadow(0 0 10px #FE2C55);

}

.contact-item:nth-child(3):hover i{

    color:#5865F2;

    filter:drop-shadow(0 0 10px #5865F2);

}

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

footer{

    padding:40px;

    text-align:center;

    color:#8b8b8b;

    border-top:1px solid rgba(255,255,255,.08);

    margin-top:80px;

}


.about,
.portfolio,
.reviews,
.contact{

    animation:fadeUp .9s ease;

}

@keyframes fadeUp{

    from{

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

    }

    to{

        opacity:1;
        transform:translateY(0);

    }

}

/* ==========================
   SCROLL ANIMATION
========================== */

.hidden-section{

    opacity:0;

    transform:translateY(80px);

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

}

.show-section{

    opacity:1;

    transform:translateY(0);

}

.hero,
.about,
.portfolio,
.reviews,
.contact{
    scroll-margin-top:120px;
}

/* ==========================
   ACTIVE MENU
========================== */

nav a{

    position:relative;

}

nav a.active{

    color:white;

}

nav a.active::after{

    content:"";

    position:absolute;

    left:0;

    bottom:-8px;

    width:100%;

    height:2px;

    background:white;

    border-radius:10px;

}

/* ==========================
   MOBILE
========================== */

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

@media (max-width:1000px){

header{
    padding:20px 25px;
}

nav{
    display:none;
}

/* HERO */

.hero{
    flex-direction:column;
    justify-content:center;
    text-align:center;
    gap:50px;
    padding:140px 25px 70px;
}

.hero-left,
.hero-right{
    width:100%;
}

.hero-left h1{
    font-size:48px;
    line-height:56px;
}

.hero-left p{
    margin:auto;
    margin-top:25px;
}

.buttons{
    justify-content:center;
    flex-wrap:wrap;
}

.video-box{
    max-width:500px;
    height:560px;
}

/* ABOUT */

.about,
.portfolio,
.reviews,
.contact{
    padding:90px 25px;
}

.about-title,
.portfolio-title,
.reviews-title,
.contact-title{
    text-align:center;
}

.about-title h2,
.portfolio-title h2,
.reviews-title h2,
.contact-title h2{
    font-size:42px;
}

.about-content{
    text-align:center;
}

/* STATS */

.stats{
    grid-template-columns:1fr 1fr;
}

/* PORTFOLIO */

.portfolio-grid{
    grid-template-columns:1fr;
}

/* REVIEW */

.review-card{
    padding:30px;
}

.review-profile{
    justify-content:center;
    text-align:left;
}

/* CONTACT */

.contact-container{
    flex-direction:column;
    text-align:center;
}

.contact-left{
    width:100%;
}

.contact-item{
    max-width:none;
}

.contact-item h3{
    justify-content:center;
}

.contact-right{
    width:100%;
}

.contact-right img{
    width:260px;
}

}

/* ==========================
   PHONE
========================== */

@media (max-width:600px){

.logo{
    font-size:22px;
}

.hero{
    padding-top:170px;
}

.hero-left h1{
    font-size:36px;
    line-height:42px;
}

.hero-left span{
    font-size:12px;
}

.hero-left p{
    font-size:16px;
    line-height:28px;
}

.btn{
    width:100%;
}

.video-box{
    height:430px;
}

.stats{
    grid-template-columns:1fr;
}

.project-card video{
    height:430px;
}

.review-profile{
    flex-direction:column;
    text-align:center;
}

.review-profile h3{
    margin-top:0;
}

.contact-right img{
    width:220px;
}

footer{
    font-size:14px;
}

}
