/*
 * Portal KTA Landing Animation Pack V8
 * Layer animasi tambahan untuk landing-v7.css.
 * Tidak mengubah dashboard, formulir, pembayaran, operator, mapping, atau cetak.
 */

:root {
    --kta-motion-green: #0b8f4d;
    --kta-motion-green-dark: #075f36;
    --kta-motion-mint: #bdf5d7;
    --kta-motion-ease: cubic-bezier(.22, 1, .36, 1);
    --kta-motion-spring: cubic-bezier(.2, .85, .25, 1.25);
}

html {
    scroll-behavior: smooth;
}

.kta-home-v7 {
    position: relative;
    overflow: clip;
    isolation: isolate;
}

/* Pembuka halaman */
.kta-page-intro-v8 {
    position: fixed;
    inset: 0;
    z-index: 99999;
    display: grid;
    place-items: center;
    pointer-events: none;
    background:
        radial-gradient(circle at center, rgba(34, 197, 94, .18), transparent 36%),
        linear-gradient(135deg, #f7fff9, #eafaf1);
    opacity: 0;
    visibility: hidden;
}

html.kta-motion-active .kta-page-intro-v8 {
    opacity: 1;
    visibility: visible;
    animation: ktaIntroAway 1.05s var(--kta-motion-ease) .35s forwards;
}

.kta-intro-mark-v8 {
    width: 88px;
    height: 88px;
    display: grid;
    place-items: center;
    border-radius: 24px;
    overflow: hidden;
    color: #fff;
    font: 800 34px/1 Arial, sans-serif;
    background: linear-gradient(145deg, var(--kta-motion-green), var(--kta-motion-green-dark));
    box-shadow: 0 25px 60px rgba(5, 95, 52, .24);
    animation: ktaIntroMark .85s var(--kta-motion-spring) both;
}

.kta-intro-mark-v8 img {
    width: 74%;
    height: 74%;
    object-fit: contain;
}

.kta-intro-line-v8 {
    position: absolute;
    top: calc(50% + 62px);
    width: 124px;
    height: 4px;
    overflow: hidden;
    border-radius: 999px;
    background: rgba(11, 143, 77, .14);
}

.kta-intro-line-v8::before {
    content: "";
    position: absolute;
    inset: 0;
    transform: translateX(-100%);
    border-radius: inherit;
    background: linear-gradient(90deg, transparent, var(--kta-motion-green), transparent);
    animation: ktaIntroLine .8s ease-in-out .08s both;
}

/* Progres scroll */
.kta-scroll-progress-v8 {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 10010;
    height: 3px;
    pointer-events: none;
}

.kta-scroll-progress-v8 span {
    display: block;
    width: 100%;
    height: 100%;
    transform: scaleX(0);
    transform-origin: left center;
    background: linear-gradient(90deg, #16a34a, #34d399, #a3e635);
    box-shadow: 0 0 18px rgba(52, 211, 153, .55);
    will-change: transform;
}

/* Cahaya pointer */
.kta-pointer-glow-v8 {
    position: fixed;
    left: 0;
    top: 0;
    z-index: -1;
    width: 420px;
    height: 420px;
    border-radius: 50%;
    pointer-events: none;
    opacity: 0;
    transform: translate3d(-50%, -50%, 0);
    background: radial-gradient(circle, rgba(52, 211, 153, .13), rgba(52, 211, 153, 0) 68%);
    transition: opacity .4s ease;
    will-change: left, top;
}

html.kta-pointer-capable .kta-pointer-glow-v8 {
    opacity: 1;
}

/* Header modern */
.kta-header-v7 {
    transition: background-color .3s ease, box-shadow .3s ease, transform .3s ease, backdrop-filter .3s ease;
}

.kta-header-v7.is-scrolled {
    background: rgba(255, 255, 255, .88) !important;
    box-shadow: 0 14px 40px rgba(15, 60, 38, .10);
    backdrop-filter: blur(18px) saturate(150%);
}

.kta-brand-v7 .kta-logo-box-v7 {
    transition: transform .45s var(--kta-motion-spring), box-shadow .35s ease;
}

.kta-brand-v7:hover .kta-logo-box-v7 {
    transform: translateY(-3px) rotate(-4deg) scale(1.05);
    box-shadow: 0 12px 30px rgba(11, 143, 77, .22);
}

.kta-nav-v7 a {
    position: relative;
    overflow: hidden;
}

.kta-nav-v7 a::after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: 3px;
    width: calc(100% - 20px);
    height: 2px;
    border-radius: 99px;
    transform: translateX(-50%) scaleX(0);
    transform-origin: center;
    background: linear-gradient(90deg, var(--kta-motion-green), #4ade80);
    transition: transform .35s var(--kta-motion-ease);
}

.kta-nav-v7 a:hover::after,
.kta-nav-v7 a.active::after {
    transform: translateX(-50%) scaleX(1);
}

/* Hero */
.kta-hero-v7 {
    position: relative;
}

.kta-hero-v7::before,
.kta-hero-v7::after {
    content: "";
    position: absolute;
    pointer-events: none;
    border-radius: 50%;
    filter: blur(2px);
}

.kta-hero-v7::before {
    width: 280px;
    height: 280px;
    left: -130px;
    top: 15%;
    background: radial-gradient(circle, rgba(74, 222, 128, .17), transparent 68%);
    animation: ktaBlobOne 9s ease-in-out infinite alternate;
}

.kta-hero-v7::after {
    width: 340px;
    height: 340px;
    right: -170px;
    bottom: -120px;
    background: radial-gradient(circle, rgba(16, 185, 129, .14), transparent 70%);
    animation: ktaBlobTwo 11s ease-in-out infinite alternate;
}

.kta-badge-v7 {
    position: relative;
    overflow: hidden;
}

.kta-badge-v7::after {
    content: "";
    position: absolute;
    top: -80%;
    left: -45%;
    width: 34%;
    height: 260%;
    transform: rotate(18deg);
    background: linear-gradient(90deg, transparent, rgba(255,255,255,.75), transparent);
    animation: ktaBadgeSweep 4.5s ease-in-out 1.7s infinite;
}

.kta-hero-copy-v7 h1 strong {
    position: relative;
    display: inline-block;
    background: linear-gradient(90deg, #04743e, #16a34a, #059669, #04743e);
    background-size: 260% auto;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent !important;
    animation: ktaTextFlow 7s linear infinite;
}

.kta-actions-v7 .kta-button-v7 {
    position: relative;
    overflow: hidden;
    transform: translate3d(var(--kta-mx, 0), var(--kta-my, 0), 0);
    transition: transform .2s ease, box-shadow .25s ease, border-color .25s ease;
    will-change: transform;
}

.kta-actions-v7 .kta-button-v7::before,
.kta-cta-v7 .kta-button-v7::before {
    content: "";
    position: absolute;
    inset: -2px;
    transform: translateX(-115%);
    background: linear-gradient(100deg, transparent 30%, rgba(255,255,255,.4) 50%, transparent 70%);
    transition: transform .7s var(--kta-motion-ease);
}

.kta-actions-v7 .kta-button-v7:hover::before,
.kta-cta-v7 .kta-button-v7:hover::before {
    transform: translateX(115%);
}

.kta-button-primary-v7:hover {
    box-shadow: 0 16px 35px rgba(11, 143, 77, .30) !important;
}

.kta-trust-v7 > div {
    transition: transform .28s var(--kta-motion-spring), background-color .25s ease;
}

.kta-trust-v7 > div:hover {
    transform: translateY(-4px);
}

.kta-trust-v7 i {
    animation: ktaTrustPulse 2.8s ease-in-out infinite;
}

.kta-trust-v7 > div:nth-child(2) i { animation-delay: .35s; }
.kta-trust-v7 > div:nth-child(3) i { animation-delay: .7s; }

/* Visual kartu 3D */
.kta-hero-visual-v7 {
    perspective: 1200px;
    transform-style: preserve-3d;
}

.kta-card-float-v8 {
    position: relative;
    z-index: 4;
    transform-style: preserve-3d;
    animation: ktaCardFloat 5.2s ease-in-out infinite;
}

.kta-sample-card-v7 {
    position: relative;
    transform-style: preserve-3d;
    transform: rotateX(var(--kta-rx, 0deg)) rotateY(var(--kta-ry, 0deg)) scale(var(--kta-scale, 1));
    transition: transform .18s ease-out, box-shadow .3s ease;
    will-change: transform;
}

.kta-sample-card-v7:hover {
    --kta-scale: 1.018;
    box-shadow: 0 34px 70px rgba(5, 95, 52, .25) !important;
}

.kta-card-top-v7,
.kta-card-content-v7,
.kta-card-ribbon-v7 {
    transform: translateZ(18px);
}

.kta-photo-placeholder-v7 {
    transform: translateZ(28px);
}

.kta-card-data-v7 {
    transform: translateZ(24px);
}

.kta-card-shine-v8 {
    position: absolute;
    inset: 0;
    z-index: 20;
    overflow: hidden;
    border-radius: inherit;
    pointer-events: none;
    opacity: var(--kta-shine-opacity, 0);
    background: radial-gradient(circle at var(--kta-shine-x, 50%) var(--kta-shine-y, 50%), rgba(255,255,255,.52), transparent 34%);
    transition: opacity .25s ease;
}

.kta-card-float-v8::after {
    content: "";
    position: absolute;
    left: 12%;
    right: 12%;
    bottom: -24px;
    height: 32px;
    border-radius: 50%;
    z-index: -1;
    background: rgba(4, 96, 52, .22);
    filter: blur(17px);
    animation: ktaCardShadow 5.2s ease-in-out infinite;
}

.kta-visual-circle-v7 {
    animation: ktaCircleBreathe 6s ease-in-out infinite;
}

.kta-visual-dots-v7 {
    animation: ktaDotsDrift 8s ease-in-out infinite alternate;
}

.kta-orbit-v8 {
    position: absolute;
    z-index: 1;
    border: 1px solid rgba(16, 185, 129, .20);
    border-radius: 50%;
    pointer-events: none;
}

.kta-orbit-v8::before {
    content: "";
    position: absolute;
    width: 10px;
    height: 10px;
    top: 50%;
    left: -5px;
    border-radius: 50%;
    background: #34d399;
    box-shadow: 0 0 20px rgba(52, 211, 153, .75);
}

.kta-orbit-one-v8 {
    width: 86%;
    aspect-ratio: 1;
    animation: ktaOrbit 16s linear infinite;
}

.kta-orbit-two-v8 {
    width: 68%;
    aspect-ratio: 1;
    border-style: dashed;
    animation: ktaOrbitReverse 20s linear infinite;
}

.kta-particles-v8 {
    position: absolute;
    inset: 0;
    z-index: 2;
    pointer-events: none;
}

.kta-particles-v8 span {
    position: absolute;
    display: block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: linear-gradient(145deg, #86efac, #059669);
    box-shadow: 0 0 16px rgba(52, 211, 153, .5);
    animation: ktaParticle 5s ease-in-out infinite;
}

.kta-particles-v8 span:nth-child(1) { left: 8%; top: 18%; animation-delay: -.2s; }
.kta-particles-v8 span:nth-child(2) { right: 8%; top: 28%; width: 5px; height: 5px; animation-delay: -1.2s; }
.kta-particles-v8 span:nth-child(3) { left: 13%; bottom: 18%; width: 6px; height: 6px; animation-delay: -2.1s; }
.kta-particles-v8 span:nth-child(4) { right: 14%; bottom: 12%; width: 10px; height: 10px; animation-delay: -3s; }
.kta-particles-v8 span:nth-child(5) { left: 50%; top: 2%; width: 4px; height: 4px; animation-delay: -3.7s; }
.kta-particles-v8 span:nth-child(6) { right: 2%; top: 58%; width: 7px; height: 7px; animation-delay: -4.4s; }

.kta-barcode-v7 span {
    transform-origin: bottom;
    animation: ktaBarcode 1.8s ease-in-out infinite alternate;
}

.kta-barcode-v7 span:nth-child(2n) { animation-delay: -.35s; }
.kta-barcode-v7 span:nth-child(3n) { animation-delay: -.7s; }

/* Reveal saat scroll */
html.kta-motion-active [data-kta-reveal] {
    opacity: 0;
    will-change: transform, opacity, filter;
    transition:
        opacity .8s var(--kta-motion-ease),
        transform .8s var(--kta-motion-ease),
        filter .8s var(--kta-motion-ease);
    transition-delay: var(--kta-delay, 0ms);
}

html.kta-motion-active [data-kta-reveal="up"] {
    transform: translate3d(0, 34px, 0);
    filter: blur(5px);
}

html.kta-motion-active [data-kta-reveal="down"] {
    transform: translate3d(0, -24px, 0);
    filter: blur(4px);
}

html.kta-motion-active [data-kta-reveal="scale"] {
    transform: scale(.9);
    filter: blur(6px);
}

html.kta-motion-active [data-kta-reveal].is-visible {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
    filter: blur(0);
}

/* Kartu proses dan benefit */
.kta-process-item-v7,
.kta-benefit-grid-v7 article {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    transition: transform .38s var(--kta-motion-spring), box-shadow .35s ease, border-color .3s ease;
}

.kta-process-item-v7::after,
.kta-benefit-grid-v7 article::after {
    content: "";
    position: absolute;
    inset: auto -35% -75% auto;
    width: 150px;
    height: 150px;
    z-index: -1;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(74, 222, 128, .17), transparent 70%);
    transition: transform .5s var(--kta-motion-ease);
}

.kta-process-item-v7:hover,
.kta-benefit-grid-v7 article:hover {
    transform: translateY(-8px);
    border-color: rgba(34, 197, 94, .32) !important;
    box-shadow: 0 22px 45px rgba(10, 88, 48, .12) !important;
}

.kta-process-item-v7:hover::after,
.kta-benefit-grid-v7 article:hover::after {
    transform: scale(1.45);
}

.kta-process-item-v7 b,
.kta-step-icon-v7,
.kta-benefit-grid-v7 article i {
    transition: transform .4s var(--kta-motion-spring);
}

.kta-process-item-v7:hover b {
    transform: rotate(-10deg) scale(1.12);
}

.kta-process-item-v7:hover .kta-step-icon-v7,
.kta-benefit-grid-v7 article:hover i {
    transform: rotate(7deg) scale(1.1);
}

.kta-title-v7 > span {
    position: relative;
    overflow: visible;
    animation: ktaTitleLine 2.6s ease-in-out infinite;
}

.kta-title-v7 > span::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    background: #34d399;
    opacity: .18;
    animation: ktaTitleDot 2.6s ease-in-out infinite;
}

/* CTA */
.kta-cta-v7 {
    position: relative;
    overflow: hidden;
}

.kta-cta-v7::before,
.kta-cta-v7::after {
    content: "";
    position: absolute;
    border-radius: 50%;
    pointer-events: none;
}

.kta-cta-v7::before {
    width: 240px;
    height: 240px;
    left: -100px;
    top: -150px;
    border: 1px solid rgba(255,255,255,.15);
    animation: ktaCtaOrbit 12s linear infinite;
}

.kta-cta-v7::after {
    width: 180px;
    height: 180px;
    right: -70px;
    bottom: -120px;
    background: rgba(255,255,255,.06);
    animation: ktaCtaPulse 5s ease-in-out infinite;
}

/* Back to top */
.kta-back-top-v8 {
    position: fixed;
    right: 22px;
    bottom: 22px;
    z-index: 999;
    width: 48px;
    height: 48px;
    display: grid;
    place-items: center;
    border: 1px solid rgba(255,255,255,.45);
    border-radius: 16px;
    color: #fff;
    background: linear-gradient(145deg, #16a34a, #06703d);
    box-shadow: 0 16px 36px rgba(5, 95, 52, .25);
    cursor: pointer;
    opacity: 0;
    visibility: hidden;
    transform: translateY(18px) scale(.85);
    transition: opacity .3s ease, visibility .3s ease, transform .4s var(--kta-motion-spring);
}

.kta-back-top-v8.is-visible {
    opacity: 1;
    visibility: visible;
    transform: translateY(0) scale(1);
}

.kta-back-top-v8:hover {
    transform: translateY(-4px) scale(1.05);
}

.kta-back-top-v8 span {
    font-size: 23px;
    animation: ktaArrow 1.8s ease-in-out infinite;
}

/* Ripple JS */
.kta-ripple-v8 {
    position: absolute;
    border-radius: 50%;
    pointer-events: none;
    transform: translate(-50%, -50%) scale(0);
    background: rgba(255,255,255,.42);
    animation: ktaRipple .65s ease-out forwards;
}

/* Keyframes */
@keyframes ktaIntroAway {
    0%, 55% { opacity: 1; visibility: visible; }
    100% { opacity: 0; visibility: hidden; }
}
@keyframes ktaIntroMark {
    0% { opacity: 0; transform: translateY(20px) scale(.65) rotate(-10deg); }
    70% { opacity: 1; transform: translateY(-4px) scale(1.05) rotate(2deg); }
    100% { opacity: 1; transform: translateY(0) scale(1) rotate(0); }
}
@keyframes ktaIntroLine {
    to { transform: translateX(100%); }
}
@keyframes ktaBlobOne {
    to { transform: translate3d(35px, -20px, 0) scale(1.18); }
}
@keyframes ktaBlobTwo {
    to { transform: translate3d(-30px, 25px, 0) scale(.88); }
}
@keyframes ktaBadgeSweep {
    0%, 65% { transform: translateX(0) rotate(18deg); }
    100% { transform: translateX(520%) rotate(18deg); }
}
@keyframes ktaTextFlow {
    to { background-position: 260% center; }
}
@keyframes ktaTrustPulse {
    0%, 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(34,197,94,.20); }
    50% { transform: scale(1.08); box-shadow: 0 0 0 8px rgba(34,197,94,0); }
}
@keyframes ktaCardFloat {
    0%, 100% { transform: translate3d(0, 0, 0) rotate(-.5deg); }
    50% { transform: translate3d(0, -15px, 0) rotate(.65deg); }
}
@keyframes ktaCardShadow {
    0%, 100% { transform: scaleX(1); opacity: .7; }
    50% { transform: scaleX(.82); opacity: .45; }
}
@keyframes ktaCircleBreathe {
    0%, 100% { transform: scale(1); opacity: .8; }
    50% { transform: scale(1.06); opacity: 1; }
}
@keyframes ktaDotsDrift {
    to { transform: translate3d(14px, -12px, 0) rotate(5deg); }
}
@keyframes ktaOrbit {
    to { transform: rotate(360deg); }
}
@keyframes ktaOrbitReverse {
    to { transform: rotate(-360deg); }
}
@keyframes ktaParticle {
    0%, 100% { transform: translate3d(0, 0, 0) scale(.75); opacity: .35; }
    50% { transform: translate3d(0, -18px, 0) scale(1.15); opacity: 1; }
}
@keyframes ktaBarcode {
    to { transform: scaleY(.72); opacity: .78; }
}
@keyframes ktaTitleLine {
    0%, 100% { transform: scaleX(.75); }
    50% { transform: scaleX(1.1); }
}
@keyframes ktaTitleDot {
    0%, 100% { transform: translate(-50%, -50%) scale(.5); opacity: .12; }
    50% { transform: translate(-50%, -50%) scale(2.4); opacity: 0; }
}
@keyframes ktaCtaOrbit {
    to { transform: rotate(360deg); }
}
@keyframes ktaCtaPulse {
    50% { transform: scale(1.22); opacity: .35; }
}
@keyframes ktaArrow {
    50% { transform: translateY(-4px); }
}
@keyframes ktaRipple {
    to { transform: translate(-50%, -50%) scale(4); opacity: 0; }
}

/* Tablet/mobile */
@media (max-width: 991.98px) {
    .kta-orbit-v8 {
        opacity: .5;
    }

    .kta-pointer-glow-v8 {
        display: none;
    }

    .kta-card-float-v8 {
        animation-duration: 6.5s;
    }
}

@media (max-width: 575.98px) {
    .kta-page-intro-v8 {
        display: none;
    }

    .kta-scroll-progress-v8 {
        height: 2px;
    }

    .kta-back-top-v8 {
        right: 14px;
        bottom: 14px;
        width: 44px;
        height: 44px;
        border-radius: 14px;
    }

    .kta-orbit-v8,
    .kta-particles-v8 span:nth-child(n+5) {
        display: none;
    }

    html.kta-motion-active [data-kta-reveal="up"] {
        transform: translate3d(0, 22px, 0);
    }
}

/* Aksesibilitas dan perangkat hemat daya */
@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    .kta-home-v7 *,
    .kta-home-v7 *::before,
    .kta-home-v7 *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        scroll-behavior: auto !important;
    }

    html.kta-motion-active [data-kta-reveal] {
        opacity: 1 !important;
        transform: none !important;
        filter: none !important;
    }

    .kta-page-intro-v8,
    .kta-pointer-glow-v8,
    .kta-orbit-v8,
    .kta-particles-v8 {
        display: none !important;
    }
}


/* =========================================================
 * V8.1 CARD STABILITY FIX
 * Menjaga ukuran kartu dari CSS V7 dan memindahkan animasi
 * hanya ke pembungkus. Isi kartu tidak menggunakan 3D.
 * ========================================================= */
.kta-hero-visual-v7 {
    perspective: none !important;
    transform-style: flat !important;
}

.kta-card-float-v8 {
    width: min(92%, 500px) !important;
    max-width: 500px !important;
    transform-style: flat !important;
    animation-name: ktaCardFloatSafe !important;
}

.kta-card-float-v8 > .kta-sample-card-v7 {
    width: 100% !important;
    max-width: none !important;
    box-sizing: border-box !important;
    transform: rotate(-4deg) !important;
    transform-style: flat !important;
    backface-visibility: visible !important;
    will-change: auto !important;
    transition: transform .35s var(--kta-motion-ease), box-shadow .35s ease !important;
}

.kta-card-float-v8 > .kta-sample-card-v7:hover {
    transform: rotate(-3deg) translateY(-3px) scale(1.01) !important;
}

.kta-card-top-v7,
.kta-card-content-v7,
.kta-card-ribbon-v7,
.kta-photo-placeholder-v7,
.kta-card-data-v7 {
    transform: none !important;
    backface-visibility: visible !important;
}

.kta-card-shine-v8 {
    display: none !important;
}

.kta-barcode-v7 span {
    animation: none !important;
    transform: none !important;
    opacity: 1 !important;
}

@keyframes ktaCardFloatSafe {
    0%, 100% { transform: translate3d(0, 0, 0); }
    50% { transform: translate3d(0, -10px, 0); }
}

@media (max-width: 575.98px) {
    .kta-card-float-v8 {
        width: 98% !important;
    }

    .kta-card-float-v8 > .kta-sample-card-v7,
    .kta-card-float-v8 > .kta-sample-card-v7:hover {
        transform: rotate(-2deg) !important;
    }
}
