@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;800&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;700&family=Bebas+Neue&family=Playfair+Display:wght@400;700&family=Caveat:wght@400;700&family=Pacifico&family=Orbitron:wght@400;700&family=Space+Grotesk:wght@300;700&family=Anton&family=Dancing+Script:wght@400;700&family=Abril+Fatface&family=Courier+Prime:wght@400;700&family=Permanent+Marker&display=swap');


/* Custom Selection */
::selection {
    background: #ffffff;
    color: #000000;
}

/* ========================= */
/* RESET */
/* ========================= */

*{
    margin:0;
    padding:0;
    box-sizing:border-box;
    font-family:'Poppins',sans-serif;

    cursor:none !important;
}

html {  
    scroll-behavior: smooth;
    /* Ubah agar tidak memaksa kaku */
    scroll-snap-type: y proximity; 
    /* Izinkan aksi gulir sentuh */
    touch-action: pan-y pinch-zoom;
}   

section {
    scroll-snap-align: start;
    /* HAPUS sepenuhnya baris ini — ini penyebab utama macet */
    /* scroll-snap-stop: always; */
}      

html,
body{
    width: 100%;
    min-height: 100vh;
    overflow-x: hidden;
    /* Pastikan gulir vertikal AKTIF */
    overflow-y: auto;
    scroll-behavior: smooth;
    position: relative;
    /* Izinkan interaksi sentuh */
    touch-action: pan-y;
    -webkit-overflow-scrolling: touch; /* Penting untuk kelancaran di HP/tablet */
}

body::-webkit-scrollbar{
    display: block; /* Ubah dari none ke block, atau biarkan terlihat — kalau tidak mau terlihat bisa pakai cara lain */
    width: 6px;
}

body{

    -ms-overflow-style:auto;

    scrollbar-width:auto;

    min-height:100vh;

    color:#fff;

    background-color:#232323;

    background-image:

    linear-gradient(
        rgba(255,255,255,.055) 1px,
        transparent 1px
    ),

    linear-gradient(
        90deg,
        rgba(255,255,255,.055) 1px,
        transparent 1px
    );

    background-size:34px 34px;


}



:root{
    --dark1:#262626;
    --dark2:#1f1f1f;
    --dark3:#171717;

    --bg:#080808;
    --bg2:#141414;
    --card:#1a1a1a;
    --card2:#232323;

    --white:#ffffff;
    --silver:#d8d8d8;
    --muted:#9d9d9d;
}

/* ========================= */
/* BODY GLOW */
/* ========================= */



body::before{

    content:"";

    position:fixed;

    inset:0;

    pointer-events:none;

    z-index:-3;

    background:

    radial-gradient(
        circle at 15% 25%,
        rgba(255,255,255,.16),
        transparent 32%
    ),

    radial-gradient(
        circle at 85% 30%,
        rgba(255,255,255,.12),
        transparent 35%
    ),

    radial-gradient(
        circle at 45% 80%,
        rgba(255,255,255,.08),
        transparent 38%
    );

    filter:blur(90px);

    animation:bgGlow 18s ease-in-out infinite alternate;

}

body::after{

    content:"";

    position:fixed;

    inset:0;

    pointer-events:none;

    z-index:-1;

    background:

    radial-gradient(

        circle,

        transparent 45%,

        rgba(0,0,0,.12) 100%

    );

}


/* ========================= */
/* NAVBAR */
/* ========================= */

.navbar{
    display:flex;
    justify-content:space-between;
    align-items:center;

    padding:15px 40px;
    margin:-10px 5%;

    background:
    linear-gradient(
        145deg,
        #403f3f,
        #1a1a1a
    );

    backdrop-filter:blur(10px);

    border:1px solid rgba(255,255,255,.05);
    border-radius:50px;

    box-shadow:0 4px 15px rgba(0,0,0,.3);

    animation:navDrop 1s ease;

    transition:
    opacity .7s ease,
    transform .7s cubic-bezier(.22,1,.36,1);
}


.navbar.scrolled{
    background:
        rgba(35,35,35,.85);

    backdrop-filter:blur(18px);

    box-shadow:
        0 15px 40px rgba(0,0,0,.45),
        0 0 20px rgba(255,255,255,.05);
}

.nav-logo{
    height:30px;
    width:auto;
    animation:logoFloat 4s ease-in-out infinite;
}

.nav-links{
    display:flex;
    list-style:none;
    gap:40px;
}

.nav-links a{
    text-decoration:none;
    color:#e0e0e0;
    font-weight:400;
    transition:.3s;

    position:relative;
    overflow:hidden;
}

.nav-links a.active-link{

    color:#fff;

    font-weight:700;

}

.nav-links a.active-link::after{

    width:100%;

}

.nav-links a.active-link{

    text-shadow:
    0 0 15px rgba(255,255,255,.35);

}

.nav-links a::after{
    content:"";
    position:absolute;

    width:0%;
    height:2px;

    left:0;
    bottom:-5px;

    background:#fff;
    transition:.4s;
}

.nav-links a:hover::after{
    width:100%;
}

/* Navbar versi fixed */
.sticky-navbar{
    position:fixed;
    top:20px;
    left:5%;
    right:5%;
    z-index:100;

    opacity:0;
    visibility:hidden;
    pointer-events:none;
    overflow:hidden;

    transform:translateY(-120px);

    background:rgba(35,35,35,.55);
    backdrop-filter:blur(18px);
    -webkit-backdrop-filter:blur(18px);

    border:1px solid rgba(255,255,255,.08);

    box-shadow:
        0 15px 40px rgba(0,0,0,.45),
        0 0 20px rgba(255,255,255,.05);

    transition:
        opacity .35s ease,
        transform .35s ease,
        visibility .35s ease;
        
}

.sticky-navbar.show{
    opacity:1;
    visibility:visible;
    pointer-events:auto;
    transform:translateY(0);
}

.sticky-navbar.hide{
    opacity:0;
    transform:translateY(-120px);
}

/* Animasi muncul */
@keyframes navbarDown{
    from{
        opacity:0;
        transform:translateY(-100px);
    }

    to{
        opacity:1;
        transform:translateY(0);
    }
}

/* Animasi ngumpet */
.navbar.hide{
    animation:navbarUp .35s ease forwards;
}

@keyframes navbarUp{
    from{
        opacity:1;
        transform:translateY(0);
    }

    to{
        opacity:0;
        transform:translateY(-100px);
    }
}

.social-tag{
    background:#fff;
    color:#000;

    padding:8px 25px;
    border-radius:20px;

    font-weight:600;
    font-size:14px;
    text-decoration:none;

    display:inline-block;
    position:relative;
    overflow:hidden;

    transition:.3s ease;
}

.social-tag:hover{
    background:#e0e0e0;
    transform:scale(1.05);
    cursor:pointer;
}

.social-tag::before{
    content:"";
    position:absolute;

    top:0;
    left:-150%;

    width:100%;
    height:100%;

    background:
    linear-gradient(
        120deg,
        transparent,
        rgba(255,255,255,.7),
        transparent
    );
}

.social-tag:hover::before{
    transition:.8s;
    left:150%;
}

/* ========================= */
/* HERO */
/* ========================= */

.hero{
    display:flex;
    justify-content:center;

    padding:0 5%;
    margin-top:40px;
    margin-bottom:140px;

    
}


.container{
    width:100%;
    height:530px;
    position:relative;
    overflow: hidden;


    background:
    linear-gradient(
        145deg,
        #403f3f,
        #161616
    );

    padding:60px 80px 0;

    border-radius:50px;

    display:flex;
    align-items:center;
    justify-content:center;
    gap:60px;

    overflow:hidden;

    border:1px solid rgba(255,255,255,.05);

    box-shadow:
        0 20px 50px rgba(0,0,0,.5);

    animation:heroReveal 1.3s ease;
    transition:.5s ease;
}



.container:hover{
    transform:translateY(-5px);

    box-shadow:
        0 25px 60px rgba(0,0,0,.6),
        0 0 60px rgba(255,255,255,.03);
}

.hero-image-wrapper{

    position:relative;

    z-index:20;

    width:300px;

    height:620px;

    display:flex;

    justify-content:center;

    align-items:center;
    

}

#scene{

    position:relative;

    width:100%;

    height:100%;

}

/* Cari container atau ID yang membungkus canvas lanyard */
#lanyardCanvas{

    position:absolute;

    left:0;
    top:0;

    width:100%;
    height:100%;

    z-index:30;

    pointer-events:auto;

}

#lanyardCanvas.dragging{

    cursor:grabbing;

}

.hero-text{
    display:flex;
    flex-direction:column;
    justify-content:center;
    position:relative;

    z-index:100;
}

.greeting{
    font-size:30px;
    color:#ccc;
    font-weight:300;

    opacity:0;
    animation:fadeUp 1s ease forwards;
    animation-delay:.3s;

    text-shadow:
    0 2px 8px rgba(0,0,0,.28),
    0 6px 20px rgba(0,0,0,.22);
}

.greeting span{
    font-weight:800;
    color:#fff;
}

.hero-text h1{
    font-size:65px;
    font-weight:800;
    margin-bottom:10px;
    letter-spacing:-2px;
    line-height:1.1;

    text-shadow:
    0 2px 8px rgba(0,0,0,.28),
    0 6px 20px rgba(0,0,0,.22);

    opacity:0;
    animation:fadeUp 1s ease forwards;
    animation-delay:.5s;
}

.description{
    max-width:700px;
    line-height:1.7;
    color:#b0b0b0;
    margin-bottom:40px;
    font-size:17px;
    min-height:90px;

    opacity:0;
    animation:fadeUp 1s ease forwards;
    animation-delay:.7s;

    text-shadow:
    0 2px 8px rgba(0,0,0,.28),
    0 6px 20px rgba(0,0,0,.22);
}

.description::after{
    content:"|";
    display:inline-block;
    margin-left:2px;
    color:#fff;
    animation:blinkCursor .8s infinite;
}

.cta-button{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:14px;
    text-decoration:none;
    position: relative;
    z-index: 999;

    position:relative;
    overflow:hidden;
    isolation:isolate;

    background:linear-gradient(135deg, #f8f8f8 0%, #ececec 100%);
    color:#1f1f1f;

    padding:18px 45px;

    border:none;
    border-radius:999px;

    font-size:16px;
    font-weight:700;

    cursor:pointer;
    width:fit-content;

    opacity:0;
    transform:translateY(18px) scale(.98);
    animation:fadeUp 1s cubic-bezier(.16,1,.3,1) forwards;
    animation-delay:.9s;

    box-shadow:
        0 10px 25px rgba(0,0,0,.10),
        inset 0 1px 0 rgba(255,255,255,.85);

    transition:
        transform .28s cubic-bezier(.16,1,.3,1),
        box-shadow .28s cubic-bezier(.16,1,.3,1),
        background .28s ease,
        color .28s ease;

        
}

.cta-arrow{
    width:23px;
    height:23px;
    object-fit:contain;

    animation:bounceArrow 1.8s cubic-bezier(.22,1,.36,1) infinite;
    transform-origin:center;
    transition:transform .28s ease, filter .28s ease;
    filter:drop-shadow(0 2px 6px rgba(0,0,0,.12));
}

.cta-button:hover{
    transform:translateY(-5px) scale(1.03);
    background:linear-gradient(135deg, #ffffff 0%, #f3f3f3 100%);
    box-shadow:
        0 18px 45px rgba(0,0,0,.16),
        0 8px 20px rgba(255,255,255,.12),
        inset 0 1px 0 rgba(255,255,255,.95);
}

.cta-button:hover .cta-arrow{
    transform:translateX(3px) rotate(-8deg);
    filter:drop-shadow(0 4px 10px rgba(0,0,0,.18));
}

.cta-button:active{
    transform:translateY(-2px) scale(.99);
}

.cta-button:focus-visible{
    outline:none;
    box-shadow:
        0 0 0 4px rgba(255,255,255,.18),
        0 0 0 8px rgba(0,0,0,.12),
        0 18px 45px rgba(0,0,0,.16);
}

/* Shine */
.cta-button::before{
    content:"";

    position:absolute;
    top:0;
    left:-120%;
    width:60%;
    height:100%;

    background:
        linear-gradient(
            120deg,
            transparent 0%,
            rgba(255,255,255,.75) 50%,
            transparent 100%
        );

    transform:skewX(-20deg);
    transition:left .9s cubic-bezier(.22,1,.36,1);

    z-index:-1;
}

.cta-button:hover::before{
    left:140%;
}

/* Glow */
.cta-button::after{
    content:"";

    position:absolute;
    inset:-2px;
    border-radius:inherit;

    background:
        radial-gradient(
            circle at 50% 0%,
            rgba(255,255,255,.34),
            transparent 55%
        );

    opacity:0;
    transition:opacity .35s ease;

    z-index:-2;
}

.cta-button:hover::after{
    opacity:1;
}

@keyframes fadeUp{
    from{
        opacity:0;
        transform:translateY(18px) scale(.98);
        filter:blur(4px);
    }
    to{
        opacity:1;
        transform:translateY(0) scale(1);
        filter:blur(0);
    }
}

@keyframes bounceArrow{
    0%, 100%{
        transform:translateX(0);
    }
    50%{
        transform:translateX(4px);
    }
}

/* ========================= */
/* PORTFOLIO SECTION */
/* ========================= */

.portfolio-section{
    padding:10px 5%;
}

.main-container{
    width:1400px;
    max-width:95%;

    margin:auto;

    display:flex;
    align-items:center;
    gap:80px;
}

.left-section{
    width:350px;
    display:flex;
    justify-content:center;
}

.right-section{
    flex:1;
}

.left-section,
.right-section{
    opacity:0;
    transform:translateY(40px);
    animation:reveal 1s ease forwards;
}

.right-section{
    animation-delay:.2s;
}

.phone-image{
    width:830px;
    height:auto;
    position:relative;
    left:50px;

    display:block;

    filter:
        drop-shadow(
            0 25px 60px rgba(0,0,0,.45)
        );

    animation:
        floatPhone 6s ease-in-out infinite;
}

.portfolio-title{
    font-size:5rem;
    font-weight:500;
    margin-bottom:60px;
}

/* ========================= */
/* TABS */
/* ========================= */

.tabs{
    display:flex;
    gap:15px;
    margin-bottom:25px;
}

.tab-btn{
    padding:12px 30px;
    border:none;
    border-radius:999px;

    font-size:20px;
    color:#e5e5e5;

    cursor:pointer;

    position:relative;
    overflow:hidden;

    background:
        linear-gradient(
            135deg,
            #3b3b3b 0%,
            #2c2c2c 50%,
            #1d1d1d 100%
        );

    border:1px solid rgba(255,255,255,.08);

    box-shadow:
        0 8px 25px rgba(0,0,0,.35),
        inset 0 1px 0 rgba(255,255,255,.05);

    transition:.3s ease;
}

.tab-btn:hover{
    transform:translateY(-2px);

    background:
        linear-gradient(
            135deg,
            #454545 0%,
            #333333 50%,
            #232323 100%
        );

    box-shadow:
        0 12px 30px rgba(0,0,0,.45),
        0 0 20px rgba(255,255,255,.05);
}

.tab-btn.active{
    background:
        linear-gradient(
            135deg,
            #f5f5f5 0%,
            #e6e6e6 100%
        );

    color:#111;
    font-weight:700;

    box-shadow:
        0 10px 30px rgba(255,255,255,.08);
}

.tab-btn::before{
    content:"";
    position:absolute;
    inset:0;

    background:
        linear-gradient(
            90deg,
            transparent,
            rgba(255,255,255,.2),
            transparent
        );

    transform:translateX(-100%);
}

.tab-btn:hover::before{
    animation:shine .8s ease;
}

/* ========================= */
/* CAROUSEL */
/* ========================= */

.carousel-container{
    position:relative;
    height:600px;

    border-radius:40px;
    overflow:hidden;

    backdrop-filter:blur(20px);
    -webkit-backdrop-filter:blur(20px);

    background:rgba(255,255,255,.04);

    border:1px solid rgba(255,255,255,.08);

    box-shadow:
        0 20px 60px rgba(0,0,0,.45),
        inset 0 1px 0 rgba(255,255,255,.05);
}

.track{
    width:100%;
    height:100%;
    position:relative;
    perspective:1500px;
}

/* Instruksi "Scroll >>" cuma dipakai di galeri mobile,
   di desktop carousel-nya pakai tombol panah jadi disembunyikan */
.portfolio-scroll-hint{
    display:none;
}

.slide{
    position:absolute;

    top:50%;
    left:50%;

    opacity:0;
    z-index:1;

    transform:
        translate(-50%,-50%)
        scale(.6);

    transition:
        transform .8s cubic-bezier(.22,1,.36,1),
        opacity .8s ease,
        filter .8s ease;
}

.slide img{
    width:340px;
    height:460px;

    object-fit:cover;

    border-radius:35px;

    box-shadow:
        0 15px 40px rgba(0,0,0,.55);

    transition:
        transform .1s ease,
        box-shadow .1s ease;
}

.slide.active{
    transform:
        translate(-50%,-50%)
        scale(1);

    opacity:1;
    z-index:5;
    filter:blur(0);
}

.slide.prev{
    transform:
        translate(-130%,-50%)
        scale(.8);

    opacity:.35;
    filter:blur(1px);
}

.slide.next{
    transform:
        translate(30%,-50%)
        scale(.8);

    opacity:.35;
    filter:blur(1px);
}

.slide.active img:hover{
    transform:scale(1.04);

    box-shadow:
        0 25px 70px rgba(255,255,255,.12),
        0 20px 50px rgba(0,0,0,.5);
}

/* ========================= */
/* NAV BUTTON */
/* ========================= */

.nav-btn{
    position:absolute;

    top:50%;
    transform:translateY(-50%);

    width:70px;
    height:70px;

    border:none;
    border-radius:50%;

    font-size:32px;
    color:#fff;

    cursor:pointer;
    z-index:10;

    background:rgba(255,255,255,.08);
    backdrop-filter:blur(15px);

    border:1px solid rgba(255,255,255,.1);

    transition:.3s;
}

.nav-btn:hover{
    transform:
        translateY(-50%)
        scale(1.12);

    background:rgba(255,255,255,.15);

    box-shadow:
        0 0 25px rgba(255,255,255,.15);
}

.prev-btn{
    left:180px;
}

.next-btn{
    right:180px;
}

/* ========================= */
/* PRICING SECTION */
/* ========================= */

.pricing-section{
    position:relative;
    padding:120px 5%;
    display:flex;
    justify-content:center;
}

.pricing-section::before{
    content:"";
    position:absolute;

    width:6 00px;
    height:600px;

    top:-200px;
    left:-200px;

    border-radius:50%;

    background:
    radial-gradient(
        circle,
        rgba(255,255,255,.08),
        transparent 70%
    );

    pointer-events:none;
}

.pricing-section::after{
    content:"";
    position:absolute;

    width:500px;
    height:500px;

    bottom:-150px;
    right:-150px;

    border-radius:50%;

    background:
    radial-gradient(
        circle,
        rgba(255,255,255,.05),
        transparent 70%
    );

    pointer-events:none;
}

.pricing-container{
    width:100%;
    max-width:1500px;

    background:
    linear-gradient(
        180deg,
        #f9f7f7 0%,
        #9c9a9a 100%
    );

    border-radius:50px;

    padding:60px 45px 80px;

    box-shadow:
        0 30px 60px rgba(0,0,0,.35);
}

/* ========================= */
/* TITLE */
/* ========================= */

.pricing-title{
    font-size:5rem;
    font-weight:800;
    color:#242424;

    display:flex;
    justify-content:center;
    align-items:center;
    gap:12px;

    letter-spacing:-3px;
    line-height:1;
}

.pricing-title .harga-box{
    display: inline-flex;
    align-items: center;

    background: #1f1f1f;
    color: #fff;

    padding: 12px 32px 20px;
    margin-left: 15px;

    border-radius: 20px;

    font-size: 0.8em;
    line-height: 1;
}   

.pricing-title span{
    background:linear-gradient(
        135deg,
        #2d2d2d,
        #111
    );

    color:#fff;

    padding:8px 18px;
    border-radius:8px;

    font-size:0.9em; /* tambah ini */

    box-shadow:
        0 8px 25px rgba(0,0,0,.18);
}

.pricing-subtitle{
    text-align:center;
    color:#242424;
    font-size:1.6rem;
    font-weight:600;

    margin-top:15px;      /* tambah ini */
    margin-bottom:55px;

    opacity:0;
    animation:fadeUp .8s ease forwards;
    animation-delay:.3s;
}

/* ========================= */
/* CARDS */
/* ========================= */

.pricing-cards{
    display:flex;
    justify-content:center;
    align-items:flex-start;
    gap:25px;

    flex-wrap:nowrap;
}

.card{
    width:380px;
    min-height:700px;

    background:#f2f2f2;
    color:#242424;
    border-radius:35px;
    padding:38px 35px;

    position:relative;
    overflow:hidden;

    opacity:0;

    box-shadow:
        0 10px 25px rgba(0,0,0,.12);

        transition: transform 0.2s ease-out; /* Animasi halus */
        transform-style: preserve-3d;
        perspective: 1000px; /* Memberikan efek kedalaman */

    animation:
        cardReveal .8s ease forwards;
}

.card.popular{
    background:
    linear-gradient(
        135deg,
        #393939 0%,
        #1b1b1b 40%,
        #3f3f3f 100%
    );

    color:#fff;

    transform:translateY(-30px);

    animation:
        cardReveal .8s ease forwards,
        breathingGlow 4s ease-in-out infinite;

    box-shadow:
        0 0 30px rgba(255,255,255,.15),
        0 15px 40px rgba(0,0,0,.35);
}

.card::before{
    content:"";
    position:absolute;
    inset:0;

    border-radius:35px;

    background:
    linear-gradient(
        135deg,
        rgba(117,115,115,.4),
        transparent 35%
    );

    pointer-events:none;
}

.card:hover{
    transform:
        translateY(-15px)
        scale(1.03);

    box-shadow:
        0 25px 60px rgba(0,0,0,.22);
}

.card.popular:hover{
    transform:
        translateY(-45px)
        scale(1.03);
}

.pricing-cards:hover .card{
    filter:blur(2.1px);
    opacity:.7;
}

.pricing-cards .card:hover{
    filter:none;
    opacity:1;
}

/* ========================= */
/* CONTENT */
/* ========================= */

.brand{
    margin-bottom:20px;
}

.brand img{
    width:75px;
    height:auto;
    display:block;
    object-fit:contain;

    transition:
        transform .4s ease,
        filter .4s ease;
}

.card:hover .brand img{
    transform:scale(1.08);
}

.card h2{
    font-size:4rem;
    line-height:1;
    margin-bottom:35px;
    font-weight:700;

    transition:.35s;
}

.card:hover h2{
    transform:translateX(8px);
}

.price-container{
    margin-bottom:35px;
}

.old-price{
    display:block;
    font-size:1rem;
    color:#444;
    text-decoration:line-through;
    margin-bottom:5px;
}

.popular .old-price{
    color:#cfcfcf;
}

.price{
    display:flex;
    align-items:flex-end;
    gap:5px;

    font-size:1.5rem;
    font-weight:800;
    line-height:1;
}

.price small{
    font-size:1rem;
    font-weight:600;
    color:#6e6e6e;
}

.popular .price small{
    color:#cfcfcf;
}

/* ========================= */
/* BUTTON */
/* ========================= */

.btn{
    width:100%;
    height:65px;

    border:none;
    border-radius:50px;

    background:
    linear-gradient(
        180deg,
        #ffffff,
        #e5e5e5
    );

    font-size:1.1rem;
    font-weight:700;

    cursor:pointer;

    box-shadow:
        0 10px 20px rgba(0,0,0,.08);

    transition:.3s;
}

.popular .btn{
    background:#efefef;
    color:#222;
}

.btn:hover{
    transform:translateY(-4px);

    box-shadow:
        0 15px 35px rgba(0,0,0,.18);
}

/* ========================= */
/* SPECS */
/* ========================= */

.specs{
    list-style:none;
    margin-top:35px;
}

.specs::before{
    content:"Hal yang dilakukan:";
    display:block;

    font-size:1.2rem;
    font-weight:700;
    margin-bottom:20px;
}

.specs li{
    margin-bottom:18px;
    font-size:1rem;
    font-weight:600;
    line-height:1.5;
}

/* ========================= */
/* BADGE */
/* ========================= */

.badge{
    position:absolute;
    top:40px;
    right:40px;

    background:#444;
    color:#fff;

    padding:10px 20px;
    border-radius:30px;

    font-size:.9rem;
    font-weight:600;
}



/* ===================== */
/* CONTACT & PAYMENT */
/* ===================== */

.contact-payment-section{
    padding:60px 80px;
    padding-bottom:0;

    min-height:auto;
    height:auto;
    
    display:flex;
    align-items:center;
    justify-content:center;

    position:relative;
overflow:hidden;
isolation:isolate;
}

.contact-payment-section::before{

    content:"";

    position:absolute;

    width:900px;
    height:900px;

    left:-320px;
    top:50%;

    transform:translateY(-50%);

    border-radius:50%;

    background:
    transparent;

    filter:blur(80px);

    pointer-events:none;

    z-index:-1;

}

.contact-payment-section::after{

    content:"";

    position:absolute;

    right:-260px;
    top:35%;

    width:700px;
    height:700px;

    border-radius:50%;

    background:
    transparent;

    filter:blur(90px);

    pointer-events:none;

    z-index:-1;

}

.contact-payment-section .container{
    width:100%;
    max-width:1500px;

    display:flex;
    align-items:center;
    justify-content:space-between;

    gap:120px;

    background:none;

    height:auto;
    padding:0;

    border:none;
    border-radius:0;

    box-shadow:none;

    overflow:visible;

    position:relative;
}

.contact-payment-section .container:hover{
    transform:none;
    box-shadow:none;
}

/* ===================== */
/* LEFT SIDE */
/* ===================== */

.contact-col{
    flex:1;

    position:relative;

    /* sebelumnya margin-top:-50px */
    transform:translateY(-50px);
}

.title-light,
.title-bold{

    opacity:0;

    transform:translateY(50px);

    animation:
        titleReveal
        .9s
        cubic-bezier(.22,1,.36,1)
        forwards;
}

.title-bold{
    animation-delay:.15s;
}

.title-light{

    font-size:90px;
    line-height:.9;
    font-weight:300;

    color:#d7d7d7;

    margin:0;

    text-shadow:
        0 0 30px
        rgba(255,255,255,.08);

    transition:all .25s ease;
}

.title-bold{

    font-size:105px;
    line-height:.95;
    font-weight:700;

    color:#fff;

    /* sebelumnya:
       margin-left:0;
       margin-top:700;
       margin-bottom:70px;
    */

    margin:0 0 70px 0;

    text-shadow:
        0 0 40px
        rgba(255,255,255,.12);
}

.contact-buttons{

    display:flex;

    gap:22px;

    margin:0 0 10px;
}

/* ===================== */
/* CONTACT BUTTON */
/* ===================== */

.contact-btn{
    width:170px;
    height:170px;

    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;

    position:relative;

    border-radius:34px;

    text-decoration:none;
    color:#fff;

    overflow:hidden;
    isolation:isolate;

    background:
linear-gradient(
145deg,
#373737,
#242424
);

    border:1px solid rgba(255,255,255,.05);

    box-shadow:
        0 25px 50px rgba(0,0,0,.55),
        inset 0 1px 0 rgba(255,255,255,.08);

    transition:
        transform .35s ease,
        box-shadow .35s ease;
}

.contact-btn::before{

    content:"";

    position:absolute;

    inset:0;

    background:

    linear-gradient(

        130deg,

        transparent 20%,

        rgba(255,255,255,.08) 50%,

        transparent 80%

    );

    transform:translateX(-150%);

    transition:
    transform .7s ease;

}

.contact-btn:first-child{
    background:
        linear-gradient(
            145deg,
            #ffffff,
            #d7d7d7
        );

    color:#111;
}

.contact-btn:hover{
    transform:translateY(-10px);

    box-shadow:
        0 35px 70px rgba(0,0,0,.7),
        0 0 20px rgba(255,255,255,.08);
}

.contact-btn i{
    font-size:58px;
    margin-bottom:25px;
}

.contact-btn span{
    position:absolute;
    bottom:22px;

    font-size:15px;
    font-weight:600;
}

.instruction{
    position:relative;

    left:45px;

    font-size:20px;
    margin-left:-29px;
    margin-top:40px;

    color:#d8d8d8;
    letter-spacing:.5px;
}

/* ===================== */
/* RIGHT SIDE */
/* ===================== */

.payment-col{
    flex:1;

    display:flex;
    justify-content:center;
}

.payment-card{
    position:relative;

    width:570px;
    height:860px;

    /* JANGAN DIUBAH */
    margin-top:-595px;
    margin-left:700px;

    display:flex;
    align-items:center;
    justify-content:center;

    animation:
        floatCard 8s
        ease-in-out
        infinite;
}

.payment-card::before{
    content:"";

    position:absolute;

    left:0;
    top:40px;

    width:570px;
    height:650px;

    border-radius:60px;

    background:
        linear-gradient(
            145deg,
            #373737,
            #242424
        );

    border:1px solid rgba(255,255,255,.05);

    z-index:0;

    box-shadow:
    0 50px 120px rgba(0,0,0,.75),
    0 0 60px rgba(255,255,255,.03),
    inset 0 1px 0 rgba(255,255,255,.08);
}

.payment-card::after{
    content:"";

    position:absolute;

    width:350px;
    height:350px;

    border-radius:50%;

    background:
        radial-gradient(
            circle,
            rgba(255,255,255,.08),
            transparent 70%
        );

    filter:blur(40px);

    z-index:-1;

    animation:
        glowMove 10s
        linear
        infinite;
}

/* ===================== */
/* TESTIMONIALS */
/* ===================== */

/* ====================================================
   OPSI BACKGROUND CONTAINER TESTIMONIAL
   Pilih SALAH SATU opsi dengan mengganti nilai
   --testimonial-container-bg di bawah ini.
   Cukup ubah di satu tempat ini saja — akan otomatis
   berlaku untuk versi desktop maupun mobile.

   OPTION A — Container Putih:
       --testimonial-container-bg: #ffffff;
       (atau: rgba(255,255,255,.95))

   OPTION B — Container Transparan (aktif sekarang):
       --testimonial-container-bg: transparent;
       (atau: rgba(255,255,255,0))

   Catatan: opsi ini hanya mengubah warna CONTAINER
   pembungkus. Card testimonial di dalamnya tetap
   gelap dan tidak terpengaruh oleh opsi ini.
==================================================== */

:root{
    --testimonial-container-bg: transparent;
    /* --testimonial-container-bg: #ffffff; */
}

.testimonial-wrapper{
    position:absolute;

    left:0;
    top:40px;

    width:570px;
    height:650px;

    z-index:2;

    border-radius:60px;

    overflow:hidden;

    background:var(--testimonial-container-bg);

    border:1px solid rgba(255,255,255,.05);

    -webkit-mask-image:
        linear-gradient(
            to bottom,
            transparent 0,
            #000 60px,
            #000 calc(100% - 60px),
            transparent 100%
        );

    mask-image:
        linear-gradient(
            to bottom,
            transparent 0,
            #000 60px,
            #000 calc(100% - 60px),
            transparent 100%
        );

    animation:
        cardReveal
        1s
        cubic-bezier(.22,1,.36,1);
}

.testimonial-track{
    display:flex;
    flex-direction:column;

    gap:18px;

    padding:44px 40px;

    animation:
        testimonialScroll
        34s
        linear
        infinite;
}

.testimonial-wrapper:hover .testimonial-track{
    animation-play-state:paused;
}

.testimonial-item{
    display:flex;
    align-items:flex-start;
    gap:16px;

    flex-shrink:0;

    padding:20px 22px;

    border-radius:24px;

    /* Card testimonial TETAP gelap, tidak ikut opsi
       background container di atas */
    background:
        linear-gradient(
            180deg,
            rgba(70,70,70,.95),
            rgba(55,55,55,.95)
        );

    border:1px solid rgba(255,255,255,.08);

    box-shadow:
        0 20px 40px rgba(0,0,0,.35),
        inset 0 1px 0 rgba(255,255,255,.06);

    backdrop-filter:blur(12px);

    transition:
        transform .35s ease,
        box-shadow .35s ease,
        background .35s ease;
}

.testimonial-item:hover{
    transform:translateY(-4px) scale(1.02);

    background:
        linear-gradient(
            180deg,
            rgba(80,80,80,.95),
            rgba(62,62,62,.95)
        );

    box-shadow:
        0 25px 50px rgba(0,0,0,.45),
        0 0 25px rgba(255,255,255,.06),
        inset 0 1px 0 rgba(255,255,255,.1);
}

.testimonial-avatar{
    flex-shrink:0;

    width:56px;
    height:56px;

    aspect-ratio:1/1;

    border-radius:50%;

    object-fit:cover;

    image-rendering:-webkit-optimize-contrast;

    border:1px solid rgba(255,255,255,.12);

    box-shadow:
        inset 0 0 0 1px rgba(0,0,0,.15);
}

.testimonial-body{
    display:flex;
    flex-direction:column;

    min-width:0;
}

.testimonial-name{
    margin:0;

    font-size:15px;
    font-weight:600;

    color:#fff;
}

.testimonial-rating{
    margin:4px 0 0;

    font-size:12px;
    letter-spacing:2px;

    color:#f5f5f5;

    opacity:.85;
}

.testimonial-msg{
    margin:6px 0 0;

    font-size:13.5px;
    line-height:1.55;

    color:rgba(255,255,255,.72);
}

@keyframes testimonialScroll{
    0%{
        transform:translateY(0);
    }
    100%{
        transform:translateY(-50%);
    }
}



/* ========================= */
/* PAYMENT ANIMATION */
/* ========================= */

@keyframes floatCard{
    0%{
        transform:translateY(0px);
    }
    50%{
        transform:translateY(-14px);
    }
    100%{
        transform:translateY(0px);
    }
}




/* ========================= */
/* ANIMATIONS */
/* ========================= */

.card:nth-child(1){
    animation-delay:.2s;
}

.card:nth-child(2){
    animation-delay:.4s;
}

.card:nth-child(3){
    animation-delay:.6s;
}

@keyframes cardReveal{
    from{
        opacity:0;
        transform:
            translateY(40px)
            scale(.96);

        filter:blur(12px);
    }

    to{
        opacity:1;
        transform:
            translateY(0)
            scale(1);

        filter:blur(0);
    }
}

@keyframes glowMove{
    0%{
        transform:translate(-120px,-80px);
    }

    50%{
        transform:translate(80px,80px);
    }

    100%{
        transform:translate(-120px,-80px);
    }
}

@keyframes glowMove{
    from{
        transform:translate(0,0);
    }
    to{
        transform:translate(150px,100px);
    }
}

@keyframes navDrop{
    from{
        opacity:0;
        transform:translateY(-40px);
    }
    to{
        opacity:1;
        transform:translateY(0);
    }
}

@keyframes heroReveal{
    from{
        opacity:0;
        transform:translateY(40px);
    }
    to{
        opacity:1;
        transform:translateY(0);
    }
}

@keyframes floating{
    0%,100%{
        transform:translateY(0);
    }
    50%{
        transform:translateY(15px);
    }
}

@keyframes floatPhone{
    0%,100%{
        transform:translateY(0);
    }
    50%{
        transform:translateY(-18px);
    }
}

@keyframes fadeUp{
    from{
        opacity:0;
        transform:translateY(25px);
    }
    to{
        opacity:1;
        transform:translateY(0);
    }
}

@keyframes logoFloat{
    0%,100%{
        transform:translateY(0);
    }
    50%{
        transform:translateY(-3px);
    }
}

@keyframes blinkCursor{
    50%{
        opacity:0;
    }
}

@keyframes shine{
    100%{
        transform:translateX(100%);
    }
}

@keyframes reveal{
    to{
        opacity:1;
        transform:translateY(0);
    }
}

@keyframes titleReveal{
    from{
        opacity:0;
        transform:translateY(-30px);
    }
    to{
        opacity:1;
        transform:translateY(0);
    }
}

@keyframes cardReveal{
    from{
        opacity:0;
        transform:
            translateY(50px)
            scale(.96);

        filter:blur(12px);
    }

    to{
        opacity:1;
        transform:
            translateY(0)
            scale(1);

        filter:blur(0);
    }
}

@keyframes breathingGlow{
    0%{
        box-shadow:
            0 0 25px rgba(255,255,255,.12),
            0 15px 40px rgba(0,0,0,.35);
    }

    50%{
        box-shadow:
            0 0 45px rgba(255,255,255,.25),
            0 15px 50px rgba(0,0,0,.45);
    }

    100%{
        box-shadow:
            0 0 25px rgba(255,255,255,.12),
            0 15px 40px rgba(0,0,0,.35);
    }
}

@keyframes backgroundGlow{

    0%{

        transform:

        translate(-150px,-80px)

        scale(1);

    }

    25%{

        transform:

        translate(120px,-20px)

        scale(1.08);

    }

    50%{

        transform:

        translate(60px,120px)

        scale(1.15);

    }

    75%{

        transform:

        translate(-80px,40px)

        scale(1.05);

    }

    100%{

        transform:

        translate(-150px,150px)

        scale(1.12);

    }

}

/* ========================= */
/* tab-btn */
/* ========================= */

@media(max-width:1300px){

    .pricing-cards{
        gap:25px;
    }

    .card{
        width:340px;
    }

    .pricing-title{
        font-size:4rem;
    }
}

@media(max-width:1200px){

    .contact-payment-section .container{
        flex-direction:column;
        text-align:center;
        gap:80px;
    }

    .contact-col{
        margin-top:0;
    }

    .contact-buttons{
        justify-content:center;
    }

    .title-light{
        font-size:70px;
    }

    .title-bold{
        font-size:80px;
    }

    .payment-card{
        width:100%;
        height:auto;
    }

    .payment-card::before{
        display:none;
    }

    .testimonial-wrapper{
        position:relative;
        top:0;
        left:0;

        width:100%;
        max-width:500px;

        height:600px;

        border-radius:40px;

        background:var(--testimonial-container-bg);

        border:1px solid rgba(255,255,255,.05);

        box-shadow:
            0 50px 120px rgba(0,0,0,.75),
            inset 0 1px 0 rgba(255,255,255,.08);
    }
}

@media(max-width:1100px){

    .pricing-cards{
        flex-direction:column;
        align-items:center;
    }

    .card{
        width:100%;
        max-width:500px;
    }

    .card.popular{
        transform:none;
    }

    .pricing-title{
        font-size:3rem;
    }
}

/* ===================== */
/* FOOTER */
/* ===================== */

.footer{
    margin:0;
    overflow-x:hidden;
    width:100%;
    background:transparent;
    color:#fff;
    padding:80px 8%;
    box-sizing:border-box;

    display:grid;
    grid-template-columns:2fr 1fr 1fr 1fr;
    gap:80px;
}

.footer-brand{
    max-width:350px;
}

.footer-logo{
    width:400px;
    margin-bottom:1px;
}

.footer-desc{
    color:#aaa;
    line-height:1.8;
    font-size:15px;
}

.footer-column{
    display:flex;
    flex-direction:column;
}

.footer-column h3{
    margin-bottom:25px;
    font-size:18px;
}

.footer-column a{
    color:#bfbfbf;
    text-decoration:none;
    margin-bottom:15px;
    transition:.3s;
}

.footer-column a:hover{
    color:#fff;
    transform:translateX(5px);
}

.footer-bottom{
    grid-column:1 / -1;

    border-top:1px solid rgba(255,255,255,.12);

    margin-top:40px;
    padding-top:25px;

    text-align:center;

    color:#888;
}

/* ========================= */
/* PREMIUM FLOATING PARTICLES */
/* ========================= */

#particles{

    position:absolute;

    inset:0;

    overflow:hidden;

    pointer-events:none;

    z-index:0;

}

.loader{

    position:relative;

    z-index:5;

}

#intro-tagline{

    position:relative;

    z-index:5;

}

#intro-logo{

    position:relative;

    z-index:5;

}

.particle{
    position:absolute;

    border-radius:50%;

    background:rgba(255,255,255,.9);

    box-shadow:
        0 0 6px rgba(255,255,255,.9),
        0 0 12px rgba(255,255,255,.35);

    animation-name:floatParticle;
    animation-timing-function:linear;
    animation-iteration-count:infinite;
    will-change:transform,opacity;
}

@keyframes floatParticle{

    0%{
        transform:
            translate3d(0,0,0)
            scale(.2);

        opacity:0;
    }

    10%{
        opacity:.8;
    }

    50%{
        opacity:1;
    }

    100%{
        transform:
            translate3d(var(--drift),-120vh,0)
            scale(1);

        opacity:0;
    }

}

/* ========================= */
/* INTRO LOADING */
/* ========================= */

#intro{
    position:fixed;
    inset:0;
    z-index:100;

    display:flex;
    justify-content:center;
    align-items:center;

    overflow:hidden;

    background:#111;
}

#intro::before{
    content:"";

    position:absolute;
    inset:-35%;

    background:

    radial-gradient(
        circle at 20% 30%,
        rgba(255,255,255,.16),
        transparent 42%
    ),

    radial-gradient(
        circle at 80% 35%,
        rgba(170,170,170,.13),
        transparent 40%
    ),

    radial-gradient(
        circle at 45% 85%,
        rgba(255,255,255,.08),
        transparent 45%
    );

    filter:blur(90px);

    animation:
        auroraMove 14s ease-in-out infinite alternate;

    pointer-events:none;
}

#intro::after{
    content:"";

    position:absolute;
    inset:-30%;

    background:

    conic-gradient(
        from 180deg,
        transparent,
        rgba(255,255,255,.06),
        transparent,
        rgba(120,120,120,.08),
        transparent
    );

    filter:blur(130px);

    mix-blend-mode:screen;

    animation:
        auroraRotate 20s linear infinite;

    opacity:.9;
}

.loader{
    display:flex;
    flex-direction:column;
    align-items:center;
}

#loading-number{
    font-size:5rem;
    font-weight:700;
    color:#fff;

    margin-bottom:35px;
}

.loading-bar{
    width:350px;
    height:8px;

    background:
        rgba(255,255,255,.12);

    border-radius:999px;
    overflow:hidden;
}

#loading-fill{
    width:0%;
    height:100%;

    background:#fff;

    border-radius:999px;

    transition:width .03s linear;
}

/* ========================= */
/* INTRO TAGLINE */
/* ========================= */

#intro-tagline{
    position:absolute;

    top:50%;
    left:50%;

    transform:
        translate(-50%, -50%)
        translateY(30px);

    color:#fff;

    font-size:2rem;
    font-weight:500;
    letter-spacing:6px;
    text-transform:uppercase;
    text-align:center;

    white-space:nowrap;

    opacity:0;

    transition:
        opacity .8s ease,
        transform .8s ease;
}

#intro-tagline.show{
    opacity:1;

    transform:
        translate(-50%, -50%)
        translateY(0);
}

#intro-tagline.hide{
    opacity:0;

    transform:
        translate(-50%, -50%)
        translateY(-30px);
}

/* ========================= */
/* INTRO LOGO */
/* ========================= */

#intro-logo{
    position:absolute;

    top:50%;
    left:50%;

    width:180px;

    opacity:0;

    transform:
        translate(-50%, -50%)
        scale(.8);

    transition:
        opacity .7s ease,
        transform .7s ease;
}

#intro-logo.show{
    opacity:1;

    transform:
        translate(-50%, -50%)
        scale(1);
}

body.intro-active{
    overflow:hidden;
}

body.intro-active > *:not(#intro){
    visibility:hidden;
}

body.intro-active .container,
body.intro-active .hero-photo,
body.intro-active .greeting,
body.intro-active .hero-text h1,
body.intro-active .description,
body.intro-active .cta-button{
    animation:none !important;
    opacity:0 !important;
}

body.intro-active .navbar,
body.intro-active .sticky-navbar{
    opacity:0 !important;
    transform:translateY(-30px);
    pointer-events:none;
}   

#navbar-logo{
    transition:
        filter .6s ease,
        transform .6s ease;
}

#navbar-logo.logo-glow{
    filter:
        drop-shadow(
            0 0 18px rgba(255,255,255,.9)
        )
        drop-shadow(
            0 0 40px rgba(255,255,255,.45)
        );

    transform:scale(1.08);
}



@keyframes auroraMove{

    0%{
        transform:
            translate(-8%,-5%)
            rotate(0deg)
            scale(1);
    }

    50%{
        transform:
            translate(8%,6%)
            rotate(10deg)
            scale(1.08);
    }

    100%{
        transform:
            translate(-5%,10%)
            rotate(-10deg)
            scale(1.15);
    }

}

@keyframes auroraRotate{

    from{
        transform:rotate(0deg) scale(1);
    }

    to{
        transform:rotate(360deg) scale(1.08);
    }

}

/* ========================= */
/* SCROLL REVEAL */
/* ========================= */

.reveal{

    opacity:0;

    transform:
        translateY(34px)
        scale(.98);

    filter:blur(6px);

    transition:
        opacity .9s cubic-bezier(.16,1,.3,1),
        transform .9s cubic-bezier(.16,1,.3,1),
        filter .9s cubic-bezier(.16,1,.3,1);

    will-change:
        opacity,
        transform,
        filter;

}

.reveal.show{

    opacity:1;

    transform:
        translateY(0)
        scale(1);

    filter:blur(0);

}

.reveal-left{

    opacity:0;

    transform:
        translateX(-46px)
        scale(.98);

    filter:blur(6px);

    transition:
        opacity .9s cubic-bezier(.16,1,.3,1),
        transform .9s cubic-bezier(.16,1,.3,1),
        filter .9s cubic-bezier(.16,1,.3,1);

    will-change:
        opacity,
        transform,
        filter;

}

.reveal-left.show{

    opacity:1;

    transform:
        translateX(0)
        scale(1);

    filter:blur(0);

}

.reveal-right{

    opacity:0;

    transform:
        translateX(46px)
        scale(.98);

    filter:blur(6px);

    transition:
        opacity .9s cubic-bezier(.16,1,.3,1),
        transform .9s cubic-bezier(.16,1,.3,1),
        filter .9s cubic-bezier(.16,1,.3,1);

    will-change:
        opacity,
        transform,
        filter;

}

.reveal-right.show{

    opacity:1;

    transform:
        translateX(0)
        scale(1);

    filter:blur(0);

}

.reveal-scale{

    opacity:0;

    transform:scale(.92);

    filter:blur(6px);

    transition:
        opacity .8s cubic-bezier(.16,1,.3,1),
        transform .8s cubic-bezier(.16,1,.3,1),
        filter .8s cubic-bezier(.16,1,.3,1);

    will-change:
        opacity,
        transform,
        filter;

}

.reveal-scale.show{

    opacity:1;

    transform:scale(1);

    filter:blur(0);

}

/* Stagger utilities — dipakai bareng .reveal/.reveal-left/.reveal-right/.reveal-scale
   supaya elemen di dalam satu section muncul bergantian, bukan bareng-bareng */
.delay1.show{ transition-delay:.08s; }
.delay2.show{ transition-delay:.16s; }
.delay3.show{ transition-delay:.24s; }
.delay4.show{ transition-delay:.32s; }
.delay5.show{ transition-delay:.4s; }

@media (prefers-reduced-motion:reduce){
    .reveal,
    .reveal-left,
    .reveal-right,
    .reveal-scale{
        transition:opacity .3s ease;
        transform:none;
        filter:none;
    }
}

/* ========================= */
/* STICKY NAV SCROLL BAR */
/* ========================= */

.scroll-progress{

    position:absolute;

    left:0;
    bottom:0;

    width:100%;
    height:3px;

    background:
        rgba(255,255,255,.08);

    overflow:hidden;
}

.scroll-progress-fill{

    width:0%;
    height:100%;

    border-radius:999px;

    background:
        linear-gradient(
            90deg,
            #ffffff,
            #dcdcdc
        );

    box-shadow:
        0 0 10px rgba(255,255,255,.55),
        0 0 20px rgba(255,255,255,.25);

    transition:
        width .08s linear;
}

/* ========================= */
/* CUSTOM CURSOR */
/* ========================= */

html{
    cursor:none;
}

body{
    cursor:none;
}

a,
button,
input,
textarea,
select,
label{
    cursor:none;
}

.cursor-dot{

    position:fixed;

    top:0;
    left:0;

    width:8px;
    height:8px;

    border-radius:50%;

    background:#fff;

    pointer-events:none;

    z-index:100;

    transform:translate(-50%,-50%);

    mix-blend-mode:difference;

}

.cursor-ring{

    position:fixed;

    top:0;
    left:0;

    width:42px;
    height:42px;

    border:2px solid #fff;

    border-radius:50%;

    display:flex;
    align-items:center;
    justify-content:center;

    pointer-events:none;

    z-index:100;

    transform:translate(-50%,-50%);

    transition:
        width .25s ease,
        height .25s ease,
        border-radius .25s ease,
        transform .15s ease,
        opacity .2s ease,
        background .25s ease;

    mix-blend-mode:difference;

}

.cursor-text{

    color:#fff;

    font-size:11px;

    font-weight:700;

    letter-spacing:2px;

    opacity:0;

    transition:.25s;

    user-select:none;

    mix-blend-mode:difference;

}

/* ========================= */
/* CURSOR HOVER */
/* ========================= */

.cursor-ring.active{

    width:90px;
    height:90px;

    background:transparent;
        
    border:2px solid #fff;

}

.cursor-ring.active .cursor-text{

    opacity:1;

}


.cursor-ring.active .cursor-text{

    color:#fff;

}

.cursor-dot.hide{

    opacity:0;

    transform:translate(-50%,-50%) scale(0);

    transition:
        opacity .2s ease,
        transform .2s ease;

}

/* ========================= */
/* HIDE SCROLLBAR */
/* ========================= */

html{

    scrollbar-width:none;

    -ms-overflow-style:none;

}

html::-webkit-scrollbar{

    display:none;

}

@keyframes bgGlow{

    0%{

        transform:
        translate(-120px,-80px)
        scale(1);

    }

    50%{

        transform:
        translate(120px,50px)
        scale(1.12);

    }

    100%{

        transform:
        translate(-60px,120px)
        scale(1.05);

    }

}

.bottom-vignette{

    position:absolute;

    left:0;
    bottom:0;

    width:100%;
    height:900px;

    pointer-events:none;

    z-index:1;

    background:
    linear-gradient(
        to top,
        rgba(0,0,0,.65) 0%,
        rgba(0,0,0,.45) 25%,
        rgba(0,0,0,.20) 55%,
        transparent 100%
    );

}

/* ========================= */
/* BACKGROUND AURORA */
/* ========================= */

body .aurora{

    position:fixed;

    inset:-20%;

    pointer-events:none;

    z-index:-4;

    overflow:hidden;

}

body .aurora span{

    position:absolute;

    width:480px;

    height:140vh;

    border-radius:999px;

    filter:blur(95px);

    transform:rotate(18deg);

    opacity:.08;

    background:

    linear-gradient(

        to right,

        transparent,

        rgba(255,255,255,.9),

        rgba(205,205,205,.55),

        transparent

    );

    animation:auroraMove linear infinite;

}

body .aurora span:nth-child(1){

    left:-10%;

    animation-duration:95s;

}

body .aurora span:nth-child(2){

    left:20%;

    width:300px;

    opacity:.05;

    animation-duration:120s;

    animation-delay:-35s;

}

body .aurora span:nth-child(3){

    left:48%;

    width:620px;

    opacity:.06;

    animation-duration:105s;

    animation-delay:-65s;

}

body .aurora span:nth-child(4){

    left:76%;

    width:420px;

    opacity:.05;

    animation-duration:115s;

    animation-delay:-45s;

}

@keyframes auroraMove{

    from{

        transform:

        translateX(-40vw)

        rotate(18deg);

    }

    to{

        transform:

        translateX(170vw)

        rotate(18deg);

    }

}

/* Efek Teks Timbul saat Scroll */
.pricing-title, .title-bold {
    transition: transform 1s cubic-bezier(0.16, 1, 0.3, 1), opacity 1s ease;
}

.reveal.show + .pricing-title {
    transform: translateY(0);
    opacity: 1;
}

/* ========================= */
/* MOUSE GLOW */
/* ========================= */

.mouse-glow{

    position:fixed;

    width:700px;
    height:700px;

    border-radius:50%;

    pointer-events:none;

    z-index:-1;

    left:0;
    top:0;

    transform:
        translate(-50%,-50%);

    background:
        radial-gradient(

            circle,

            rgba(255,255,255,.12) 0%,

            rgba(255,255,255,.05) 28%,

            transparent 72%

        );

    filter:blur(60px);

    opacity:.55;

    transition:
        opacity .35s ease;

    will-change:
        transform;

}

/* ========================= */
/* PORTFOLIO NOTE */
/* ========================= */

.portfolio-note{
    margin-top:28px;

    text-align:center;

    font-size:18px;
    font-weight:500;

    color:#bdbdbd;

    letter-spacing:.3px;
}

.portfolio-note a{

    color:#ffffff;

    font-weight:700;

    text-decoration:none;

    transition:.25s ease;
}

.portfolio-note a:hover{

    color:#dcdcdc;

    text-shadow:
        0 0 15px rgba(255,255,255,.25);

}

/* ========================= */
/* PORTFOLIO IMAGE LIGHTBOX  */
/* ========================= */

.portfolio-lightbox{

    position:fixed;
    inset:0;

    display:flex;
    align-items:center;
    justify-content:center;

    padding:40px;

    background:rgba(10,10,10,.65);

    backdrop-filter:blur(22px);
    -webkit-backdrop-filter:blur(22px);

    opacity:0;

    z-index:9999;

    transition:opacity .25s ease;
}

.portfolio-lightbox.show{

    opacity:1;

}

.portfolio-lightbox img{

    max-width:min(90vw,600px);
    max-height:82vh;

    width:auto;
    height:auto;

    border-radius:24px;
    object-fit:contain;

    box-shadow:0 30px 80px rgba(0,0,0,.55);

    transform:scale(.94);

    transition:transform .25s ease;
}

.portfolio-lightbox.show img{

    transform:scale(1);

}

.portfolio-lightbox-close{

    position:absolute;

    top:24px;
    right:24px;

    width:46px;
    height:46px;

    display:flex;
    align-items:center;
    justify-content:center;

    border:1px solid rgba(255,255,255,.15);
    border-radius:50%;

    background:rgba(255,255,255,.08);

    color:#fff;
    font-size:26px;
    line-height:1;

    cursor:pointer;
}

.portfolio-lightbox-close:hover{

    background:rgba(255,255,255,.18);

}

@media screen and (max-width:768px){

    .portfolio-lightbox{

        padding:20px;

    }

    .portfolio-lightbox-close{

        top:16px;
        right:16px;

        width:42px;
        height:42px;

        font-size:22px;

    }

}