/* =========================================================
   404 PAGE — BANK SAMPAH
   Mengikuti warna dari CSS utama
   ========================================================= */

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: "Segoe UI", sans-serif;
}

:root {
    --bg: #f5faf9;
    --primary: #4fb2a5;
    --primary-dark: #398f83;
    --primary-light: #61d1c3;
    --text: #29443f;
    --muted: #718883;
    --line: #dfeeea;
    --white: #ffffff;
}

html,
body {
    min-height: 100%;
}

body {
    min-height: 100vh;
    overflow: hidden;
    color: var(--text);

    background:
        radial-gradient(
            circle at 15% 20%,
            rgba(97, 209, 195, .16),
            transparent 28%
        ),
        radial-gradient(
            circle at 85% 75%,
            rgba(79, 178, 165, .13),
            transparent 30%
        ),
        linear-gradient(
            145deg,
            #ffffff 0%,
            var(--bg) 52%,
            #edf8f5 100%
        );
}

button,
a {
    -webkit-tap-highlight-color: transparent;
}

a {
    text-decoration: none;
}

/* =========================================================
   3D BACKGROUND
   ========================================================= */

.scene {
    position: fixed;
    inset: 0;
    overflow: hidden;
    perspective: 1000px;
    pointer-events: none;
}

.scene::before {
    content: "";

    position: absolute;

    width: 620px;
    height: 620px;

    left: 50%;
    top: 48%;

    transform: translate(-50%, -50%);

    border-radius: 50%;

    background:
        radial-gradient(
            circle,
            rgba(79, 178, 165, .18),
            rgba(79, 178, 165, 0) 68%
        );

    filter: blur(10px);
}

/* =========================================================
   3D ORBS
   ========================================================= */

.orb {
    position: absolute;
    border-radius: 50%;

    transform-style: preserve-3d;
}

.orb-one {
    width: 190px;
    height: 190px;

    left: -60px;
    top: 8%;

    background:
        radial-gradient(
            circle at 30% 25%,
            #ffffff,
            #9ee8de 20%,
            #4fb2a5 58%,
            #277b70 100%
        );

    box-shadow:
        inset -22px -24px 45px rgba(25, 92, 84, .28),
        0 35px 80px rgba(79, 178, 165, .20);

    animation: floatOne 8s ease-in-out infinite;
}

.orb-two {
    width: 110px;
    height: 110px;

    right: 8%;
    top: 11%;

    background:
        radial-gradient(
            circle at 28% 22%,
            #ffffff,
            #c5f3ec 24%,
            #61d1c3 60%,
            #398f83
        );

    box-shadow:
        inset -15px -18px 30px rgba(35, 108, 98, .20),
        0 25px 60px rgba(79, 178, 165, .18);

    animation: floatTwo 7s ease-in-out infinite;
}

/* =========================================================
   3D FLOOR GRID
   ========================================================= */

.grid-floor {
    position: absolute;

    left: -10%;
    right: -10%;
    bottom: -34%;

    height: 70%;

    opacity: .28;

    transform: rotateX(62deg);
    transform-origin: center top;

    background-image:
        linear-gradient(
            rgba(79, 178, 165, .25) 1px,
            transparent 1px
        ),
        linear-gradient(
            90deg,
            rgba(79, 178, 165, .25) 1px,
            transparent 1px
        );

    background-size: 55px 55px;

    mask-image:
        linear-gradient(
            to bottom,
            rgba(0,0,0,.9),
            transparent 80%
        );
}

/* =========================================================
   PARTICLES
   ========================================================= */

.particles {
    position: absolute;
    inset: 0;
}

.particle {
    position: absolute;

    width: 5px;
    height: 5px;

    border-radius: 50%;

    background: rgba(79, 178, 165, .45);

    box-shadow:
        0 0 12px rgba(79, 178, 165, .35);

    animation:
        particleFloat
        linear
        infinite;
}

/* =========================================================
   MAIN
   ========================================================= */

.error-page {
    position: relative;
    z-index: 5;

    min-height: 100vh;

    display: flex;
    flex-direction: column;

    align-items: center;
    justify-content: center;

    padding: 30px;
}

/* =========================================================
   ERROR CARD
   ========================================================= */

.error-card {
    position: relative;

    width: min(780px, 100%);
    min-height: 560px;

    padding: 44px 55px 42px;

    overflow: hidden;

    text-align: center;

    border:
        1px solid rgba(255,255,255,.85);

    border-radius: 32px;

    background:
        linear-gradient(
            145deg,
            rgba(255,255,255,.96),
            rgba(247,253,252,.91)
        );

    box-shadow:
        0 45px 100px rgba(43,100,91,.13),
        0 16px 35px rgba(43,100,91,.08),
        inset 0 1px 0 rgba(255,255,255,1);

    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);

    transform-style: preserve-3d;

    transition:
        transform .15s ease-out;
}

.error-card::before {
    content: "";

    position: absolute;
    inset: 1px;

    border-radius: 31px;

    background:
        linear-gradient(
            120deg,
            rgba(255,255,255,.75),
            transparent 30%
        ),
        linear-gradient(
            300deg,
            rgba(97,209,195,.06),
            transparent 40%
        );

    pointer-events: none;
}

/* =========================================================
   CARD LIGHT SHINE
   ========================================================= */

.card-shine {
    position: absolute;

    width: 220px;
    height: 520px;

    top: -150px;
    left: -260px;

    transform: rotate(25deg);

    background:
        linear-gradient(
            90deg,
            transparent,
            rgba(255,255,255,.7),
            transparent
        );

    animation:
        shine 6s ease-in-out infinite;
}

/* =========================================================
   LOGO
   ========================================================= */

.logo-wrap {
    position: relative;
    z-index: 3;

    width: 112px;
    height: 112px;

    margin: 0 auto 6px;

    transform: translateZ(50px);
}

.logo-glow {
    position: absolute;

    inset: -18px;

    border-radius: 50%;

    background:
        radial-gradient(
            circle,
            rgba(79,178,165,.28),
            transparent 68%
        );

    filter: blur(8px);

    animation:
        pulseGlow 3s ease-in-out infinite;
}

.logo-platform {
    position: relative;

    width: 100%;
    height: 100%;

    display: flex;

    align-items: center;
    justify-content: center;

    border-radius: 28px;

    background:
        linear-gradient(
            145deg,
            #61d1c3,
            #4fb2a5 55%,
            #398f83
        );

    box-shadow:
        0 18px 35px rgba(79,178,165,.25),
        inset 5px 5px 12px rgba(255,255,255,.28),
        inset -8px -10px 16px rgba(33,105,95,.18);

    transform:
        rotateX(8deg)
        rotateY(-8deg);
}

.logo-platform::after {
    content: "";

    position: absolute;

    left: 12%;
    right: 12%;
    bottom: -10px;

    height: 15px;

    border-radius: 50%;

    background: rgba(36,111,100,.18);

    filter: blur(7px);

    z-index: -1;
}

.logo {
    width: 82%;
    height: 82%;

    object-fit: contain;

    filter:
        drop-shadow(
            0 8px 8px rgba(0,0,0,.14)
        );
}

/* =========================================================
   404 NUMBER
   ========================================================= */

.error-code {
    position: relative;
    z-index: 2;

    display: flex;

    justify-content: center;
    align-items: center;

    gap: 2px;

    margin: -2px 0 -3px;

    font-size:
        clamp(
            115px,
            18vw,
            190px
        );

    font-weight: 900;

    line-height: .9;

    letter-spacing: -14px;

    color: transparent;

    background:
        linear-gradient(
            145deg,
            #29443f 8%,
            #4fb2a5 48%,
            #2f8e82 75%,
            #1e655c 100%
        );

    -webkit-background-clip: text;
    background-clip: text;

    text-shadow:
        0 8px 0 rgba(41,68,63,.08),
        0 20px 35px rgba(79,178,165,.15);

    transform: translateZ(35px);
}

.error-code span {
    display: block;

    animation:
        numberFloat
        4s ease-in-out infinite;
}

.error-code span:nth-child(2) {
    animation-delay: -.9s;
}

.error-code span:nth-child(3) {
    animation-delay: -1.7s;
}

.error-code .zero {
    position: relative;
}

.error-code .zero::after {
    content: "";

    position: absolute;

    width: 42%;
    height: 42%;

    left: 29%;
    top: 29%;

    border-radius: 50%;

    background:
        rgba(245,250,249,.88);

    box-shadow:
        inset 0 0 25px rgba(79,178,165,.13),
        0 4px 14px rgba(41,68,63,.08);
}

/* =========================================================
   TEXT
   ========================================================= */

.content {
    position: relative;
    z-index: 3;
}

.eyebrow {
    display: inline-flex;

    align-items: center;

    gap: 8px;

    margin-bottom: 12px;

    color: var(--primary-dark);

    font-size: 10px;

    font-weight: 800;

    letter-spacing: 2.2px;
}

.eyebrow i {
    width: 7px;
    height: 7px;

    border-radius: 50%;

    background: var(--primary);

    box-shadow:
        0 0 0 5px rgba(79,178,165,.1);
}

h1 {
    color: #29443f;

    font-size:
        clamp(
            25px,
            4vw,
            34px
        );

    line-height: 1.2;

    font-weight: 750;
}

h1 strong {
    color: var(--primary);
}

.content p {
    max-width: 500px;

    margin:
        12px auto 25px;

    color: var(--muted);

    font-size: 13px;

    line-height: 1.7;
}

/* =========================================================
   BUTTON
   ========================================================= */

.actions {
    display: flex;

    justify-content: center;

    gap: 11px;

    flex-wrap: wrap;
}

.btn {
    min-height: 45px;

    padding: 0 18px;

    display: inline-flex;

    align-items: center;
    justify-content: center;

    gap: 8px;

    border-radius: 11px;

    font-size: 12px;

    font-weight: 700;

    cursor: pointer;

    transition:
        transform .22s ease,
        box-shadow .22s ease,
        background .22s ease;
}

.btn-primary {
    color: #fff;

    background:
        linear-gradient(
            135deg,
            #61d1c3,
            #4fb2a5
        );

    box-shadow:
        0 9px 22px
        rgba(79,178,165,.23);
}

.btn-primary:hover {
    transform: translateY(-3px);

    box-shadow:
        0 14px 28px
        rgba(79,178,165,.3);
}

.btn-secondary {
    border:
        1px solid #dbe9e6;

    color: #607974;

    background:
        rgba(255,255,255,.78);
}

.btn-secondary:hover {
    transform: translateY(-3px);

    color: var(--primary-dark);

    background: #eff9f7;

    border-color: #cce7e2;
}

.btn-icon {
    font-size: 16px;
    line-height: 1;
}

/* =========================================================
   FOOTER
   ========================================================= */

.error-footer {
    display: flex;

    align-items: center;

    gap: 9px;

    margin-top: 18px;

    color: #91a09d;

    font-size: 10px;
}

.error-footer .dot {
    width: 3px;
    height: 3px;

    border-radius: 50%;

    background: #b7c9c5;
}

/* =========================================================
   ANIMATION
   ========================================================= */

@keyframes floatOne {

    0%,
    100% {
        transform:
            translate3d(0,0,0);
    }

    50% {
        transform:
            translate3d(25px,28px,35px);
    }
}

@keyframes floatTwo {

    0%,
    100% {
        transform:
            translate3d(0,0,0);
    }

    50% {
        transform:
            translate3d(-18px,22px,25px);
    }
}

@keyframes numberFloat {

    0%,
    100% {
        transform:
            translateY(0)
            rotateX(0);
    }

    50% {
        transform:
            translateY(-7px)
            rotateX(4deg);
    }
}

@keyframes pulseGlow {

    0%,
    100% {
        transform: scale(.92);
        opacity: .7;
    }

    50% {
        transform: scale(1.08);
        opacity: 1;
    }
}

@keyframes shine {

    0%,
    65% {
        left: -260px;
    }

    85%,
    100% {
        left: 900px;
    }
}

@keyframes particleFloat {

    0% {
        transform:
            translate3d(0,20px,0)
            scale(.6);

        opacity: 0;
    }

    15% {
        opacity: 1;
    }

    85% {
        opacity: .8;
    }

    100% {
        transform:
            translate3d(20px,-100px,0)
            scale(1);

        opacity: 0;
    }
}

/* =========================================================
   RESPONSIVE
   ========================================================= */

@media (max-width: 700px) {

    body {
        overflow: auto;
    }

    .error-page {
        min-height: 100svh;
        padding: 18px;
    }

    .error-card {
        min-height: auto;

        padding:
            30px
            20px
            28px;

        border-radius: 25px;
    }

    .logo-wrap {
        width: 88px;
        height: 88px;

        margin-bottom: 4px;
    }

    .logo-platform {
        border-radius: 23px;
    }

    .error-code {
        font-size:
            clamp(
                90px,
                28vw,
                145px
            );

        letter-spacing: -9px;
    }

    .content p {
        font-size: 12px;
        max-width: 390px;
    }

    .actions {
        flex-direction: row;
        justify-content: center;
        align-items: center;
        gap: 10px;
    }
    
    .btn {
        width: auto;
    }

    .error-footer {
        margin-bottom: 4px;
    }

    .orb-one {
        width: 110px;
        height: 110px;
    }

    .orb-two {
        width: 75px;
        height: 75px;
        right: 3%;
    }
}

@media (prefers-reduced-motion: reduce) {

    *,
    *::before,
    *::after {
        animation-duration: .001ms !important;

        animation-iteration-count: 1 !important;

        scroll-behavior: auto !important;

        transition-duration: .001ms !important;
    }
}

/* =========================================================
   CUSTOM TEXT SELECTION
   ========================================================= */

::selection {
    background: rgba(79, 178, 165, 0.90);
    color: #ffffff;
    text-shadow: 0 1px 2px rgba(41, 68, 63, 0.15);
}

::-moz-selection {
    background: rgba(79, 178, 165, 0.90);
    color: #ffffff;
    text-shadow: 0 1px 2px rgba(41, 68, 63, 0.15);
}

/* =========================================================
   ICON ACTION BUTTONS
   ========================================================= */

.actions {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 12px;
    margin-top: 4px;
}

.btn-icon-only {
    position: relative;

    width: 48px;
    height: 48px;

    min-height: 48px;

    padding: 0;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    border-radius: 14px;

    cursor: pointer;

    transition:
        transform .25s ease,
        box-shadow .25s ease,
        background .25s ease;
}

/* Icon SVG */
.btn-icon-only svg {
    width: 20px;
    height: 20px;

    fill: none;
    stroke: currentColor;

    stroke-width: 2;

    stroke-linecap: round;
    stroke-linejoin: round;

    transition:
        transform .25s ease;
}

/* =========================================================
   HOME BUTTON
   ========================================================= */

.btn-icon-only.btn-primary {
    color: #ffffff;

    background:
        linear-gradient(
            145deg,
            #61d1c3,
            #4fb2a5 55%,
            #398f83
        );

    border: 1px solid rgba(255,255,255,.35);

    box-shadow:
        0 9px 20px rgba(79,178,165,.25),
        inset 3px 3px 7px rgba(255,255,255,.22),
        inset -4px -5px 8px rgba(35,105,95,.15);
}

.btn-icon-only.btn-primary:hover {
    transform:
        translateY(-4px)
        scale(1.04);

    box-shadow:
        0 15px 28px rgba(79,178,165,.30),
        inset 3px 3px 7px rgba(255,255,255,.25);
}

.btn-icon-only.btn-primary:hover svg {
    transform: scale(1.08);
}


/* =========================================================
   BACK BUTTON
   ========================================================= */

.btn-icon-only.btn-secondary {
    color: #4fb2a5;

    background:
        rgba(255,255,255,.85);

    border:
        1px solid #dbe9e6;

    box-shadow:
        0 8px 18px rgba(43,100,91,.08),
        inset 0 1px 0 #ffffff;
}

.btn-icon-only.btn-secondary:hover {
    transform:
        translateY(-4px)
        scale(1.04);

    color: #398f83;

    background:
        #eff9f7;

    border-color:
        #bfe0da;

    box-shadow:
        0 13px 25px rgba(43,100,91,.12);
}

.btn-icon-only.btn-secondary:hover svg {
    transform: translateX(-2px);
}


/* =========================================================
   ACTIVE / CLICK
   ========================================================= */

.btn-icon-only:active {
    transform:
        translateY(-1px)
        scale(.96);
}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 700px) {

    .actions {
        gap: 10px;
        margin-top: 2px;
    }

    .btn-icon-only {
        width: 46px;
        height: 46px;
        min-height: 46px;

        border-radius: 13px;
    }

    .btn-icon-only svg {
        width: 19px;
        height: 19px;
    }
}

/* =========================================================
   CUSTOM 3D TOOLTIP
   ========================================================= */

.tooltip-button {
    position: relative;
}


/* =========================================================
   TOOLTIP CONTAINER
   ========================================================= */

.custom-tooltip {
    position: absolute;

    left: 50%;
    bottom: calc(100% + 17px);

    transform:
        translateX(-50%)
        translateY(8px)
        scale(.92);

    display: flex;

    align-items: center;

    gap: 10px;

    min-width: 205px;

    padding: 10px 13px;

    border:
        1px solid rgba(255,255,255,.65);

    border-radius: 13px;

    background:
        linear-gradient(
            145deg,
            rgba(255,255,255,.96),
            rgba(239,249,247,.94)
        );

    box-shadow:
        0 15px 35px rgba(43,100,91,.17),
        0 5px 12px rgba(79,178,165,.12),
        inset 0 1px 0 rgba(255,255,255,.95);

    backdrop-filter: blur(15px);
    -webkit-backdrop-filter: blur(15px);

    opacity: 0;

    visibility: hidden;

    pointer-events: none;

    z-index: 100;

    transition:
        opacity .25s ease,
        transform .25s cubic-bezier(.2,.8,.2,1),
        visibility .25s ease;
}


/* =========================================================
   TOOLTIP ARROW
   ========================================================= */

.custom-tooltip::after {
    content: "";

    position: absolute;

    left: 50%;
    bottom: -6px;

    width: 12px;
    height: 12px;

    transform:
        translateX(-50%)
        rotate(45deg);

    background: #eff9f7;

    border-right:
        1px solid rgba(255,255,255,.65);

    border-bottom:
        1px solid rgba(255,255,255,.65);

    box-shadow:
        3px 3px 8px rgba(43,100,91,.04);
}


/* =========================================================
   TOOLTIP ICON
   ========================================================= */

.tooltip-icon {
    width: 32px;
    height: 32px;

    flex-shrink: 0;

    display: flex;

    align-items: center;
    justify-content: center;

    border-radius: 9px;

    color: #ffffff;

    font-size: 16px;

    background:
        linear-gradient(
            145deg,
            #61d1c3,
            #4fb2a5
        );

    box-shadow:
        0 5px 12px rgba(79,178,165,.20),
        inset 2px 2px 4px rgba(255,255,255,.25);

    text-shadow:
        0 1px 2px rgba(41,68,63,.15);
}


/* =========================================================
   TOOLTIP TEXT
   ========================================================= */

.tooltip-content {
    display: flex;

    flex-direction: column;

    align-items: flex-start;

    gap: 2px;

    text-align: left;

    white-space: nowrap;
}

.tooltip-content strong {
    color: #29443f;

    font-size: 11px;

    font-weight: 750;

    line-height: 1.3;
}

.tooltip-content small {
    color: #7b938e;

    font-size: 9px;

    font-weight: 500;

    line-height: 1.3;
}


/* =========================================================
   HOVER TOOLTIP
   ========================================================= */

.tooltip-button:hover .custom-tooltip {
    opacity: 1;

    visibility: visible;

    transform:
        translateX(-50%)
        translateY(0)
        scale(1);
}


/* =========================================================
   ICON HOVER
   ========================================================= */

.tooltip-button:hover {
    z-index: 20;
}

.tooltip-button:hover > svg {
    transform: scale(1.08);
}


/* =========================================================
   PRIMARY TOOLTIP
   ========================================================= */

.btn-primary .custom-tooltip {
    border-color:
        rgba(97,209,195,.35);
}

.btn-primary .custom-tooltip::before {
    content: "";

    position: absolute;

    inset: -1px;

    border-radius: 13px;

    background:
        linear-gradient(
            120deg,
            rgba(97,209,195,.18),
            transparent 45%
        );

    pointer-events: none;
}


/* =========================================================
   SECONDARY TOOLTIP
   ========================================================= */

.btn-secondary .tooltip-icon {
    color: #ffffff;

    background:
        linear-gradient(
            145deg,
            #61d1c3,
            #4fb2a5
        );
}


/* =========================================================
   GLOW SAAT HOVER
   ========================================================= */

.btn-primary:hover {
    box-shadow:
        0 0 0 4px rgba(79,178,165,.08),
        0 15px 30px rgba(79,178,165,.30),
        inset 3px 3px 7px rgba(255,255,255,.25);
}

.btn-secondary:hover {
    box-shadow:
        0 0 0 4px rgba(79,178,165,.07),
        0 13px 25px rgba(43,100,91,.12);
}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 700px) {

    .custom-tooltip {
        min-width: 190px;

        padding: 9px 11px;

        bottom: calc(100% + 14px);
    }

    .tooltip-icon {
        width: 29px;
        height: 29px;

        font-size: 14px;
    }

    .tooltip-content strong {
        font-size: 10px;
    }

    .tooltip-content small {
        font-size: 8px;
    }
}