/* Login page 3D scene. Decorative only — pointer-events stay off the form. */

.log-1 .col-lg-7.c1 {
    position: relative;
    overflow: hidden;
}

.log-1 .col-lg-7.c1 > .d-flex {
    position: relative;
    z-index: 2;
}

.gc3d {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    overflow: hidden;
    perspective: 1400px;
}

.gc3d-glow {
    position: absolute;
    width: 520px;
    height: 520px;
    right: -80px;
    top: -60px;
    border-radius: 50%;
    background:
        radial-gradient(circle, rgba(0, 181, 226, 0.45) 0%, rgba(96, 203, 253, 0.12) 42%, transparent 70%);
    filter: blur(8px);
    animation: gc3d-pulse 7s ease-in-out infinite;
}

.gc3d-stage {
    position: absolute;
    inset: 0;
    transform-style: preserve-3d;
}

.gc3d-grid {
    position: absolute;
    left: -40%;
    right: -40%;
    bottom: -35%;
    height: 78%;
    background-image:
        linear-gradient(rgba(0, 140, 200, 0.28) 1px, transparent 1px),
        linear-gradient(90deg, rgba(0, 140, 200, 0.28) 1px, transparent 1px);
    background-size: 56px 56px;
    transform: rotateX(72deg);
    transform-origin: center top;
    animation: gc3d-grid 7s linear infinite;
    -webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 28%, #000 72%, transparent 100%);
    mask-image: linear-gradient(to bottom, transparent 0%, #000 28%, #000 72%, transparent 100%);
}

.gc3d-orbit {
    position: absolute;
    z-index: 4;
    pointer-events: none;
    width: 230px;
    height: 230px;
    right: 7%;
    top: 3%;
    transform-style: preserve-3d;
    animation: gc3d-orbit-yaw 22s linear infinite;
}

.gc3d-ring {
    position: absolute;
    left: 50%;
    top: 50%;
    border-radius: 50%;
    border: 1.5px solid rgba(0, 160, 220, 0.55);
    box-shadow:
        0 0 18px rgba(0, 181, 226, 0.35),
        inset 0 0 18px rgba(96, 203, 253, 0.25);
}

.gc3d-ring.r1 {
    width: 168px;
    height: 168px;
    margin: -84px 0 0 -84px;
    animation: gc3d-ring-a 14s linear infinite;
}

.gc3d-ring.r2 {
    width: 124px;
    height: 124px;
    margin: -62px 0 0 -62px;
    border-color: rgba(0, 90, 160, 0.45);
    animation: gc3d-ring-b 10s linear infinite;
}

.gc3d-ring.r3 {
    width: 214px;
    height: 214px;
    margin: -107px 0 0 -107px;
    border-style: dashed;
    border-color: rgba(0, 181, 226, 0.4);
    animation: gc3d-ring-c 18s linear infinite;
}

.gc3d-core {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 46px;
    height: 46px;
    margin: -23px 0 0 -23px;
    border-radius: 50%;
    background: radial-gradient(circle at 35% 35%, #fff 0%, #7adfff 28%, #00b5e2 62%, #005a96 100%);
    box-shadow:
        0 0 24px rgba(0, 181, 226, 0.85),
        0 0 60px rgba(96, 203, 253, 0.55);
    animation: gc3d-core 3.2s ease-in-out infinite;
}

.gc3d-cube {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 72px;
    height: 72px;
    margin: -36px 0 0 -36px;
    transform-style: preserve-3d;
    animation: gc3d-cube 16s linear infinite;
}

.gc3d-cube i {
    position: absolute;
    inset: 0;
    border: 1px solid rgba(255, 255, 255, 0.7);
    background: linear-gradient(145deg, rgba(96, 203, 253, 0.42), rgba(0, 90, 150, 0.18));
    box-shadow: inset 0 0 22px rgba(0, 181, 226, 0.35);
    backface-visibility: hidden;
}

.gc3d-cube i:nth-child(1) { transform: rotateY(0deg) translateZ(36px); }
.gc3d-cube i:nth-child(2) { transform: rotateY(180deg) translateZ(36px); }
.gc3d-cube i:nth-child(3) { transform: rotateY(90deg) translateZ(36px); }
.gc3d-cube i:nth-child(4) { transform: rotateY(-90deg) translateZ(36px); }
.gc3d-cube i:nth-child(5) { transform: rotateX(90deg) translateZ(36px); }
.gc3d-cube i:nth-child(6) { transform: rotateX(-90deg) translateZ(36px); }

.gc3d-card {
    position: absolute;
    width: 74px;
    height: 48px;
    border-radius: 8px;
    background: linear-gradient(160deg, rgba(255, 255, 255, 0.72), rgba(96, 203, 253, 0.28));
    border: 1px solid rgba(255, 255, 255, 0.8);
    box-shadow: 0 16px 30px rgba(0, 80, 140, 0.16);
    transform-style: preserve-3d;
}

.gc3d-card::before,
.gc3d-card::after {
    content: "";
    position: absolute;
    left: 10px;
    right: 10px;
    height: 4px;
    border-radius: 4px;
    background: rgba(0, 120, 200, 0.45);
}

.gc3d-card::before { top: 12px; }
.gc3d-card::after { top: 22px; width: 46%; }

.gc3d-card.k1 { left: 5%; top: 22%; animation: gc3d-card-a 9s ease-in-out infinite; }
.gc3d-card.k2 { left: 3%; top: 74%; animation: gc3d-card-b 11s ease-in-out infinite; }
.gc3d-card.k3 { right: 4%; bottom: 8%; top: auto; animation: gc3d-card-c 8.5s ease-in-out infinite; }
.gc3d-card.k4 { left: 18%; top: 7%; width: 56px; height: 56px; border-radius: 12px; animation: gc3d-card-d 13s ease-in-out infinite; }

.gc3d-dot {
    position: absolute;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #00b5e2;
    box-shadow: 0 0 12px #00b5e2;
    animation: gc3d-dot 6s ease-in-out infinite;
}

.gc3d-dot.d1 { left: 12%; top: 30%; animation-delay: 0s; }
.gc3d-dot.d2 { left: 30%; top: 12%; animation-delay: .6s; }
.gc3d-dot.d3 { left: 55%; top: 22%; animation-delay: 1.1s; }
.gc3d-dot.d4 { left: 70%; top: 48%; animation-delay: 1.7s; }
.gc3d-dot.d5 { left: 22%; top: 78%; animation-delay: 2.2s; }
.gc3d-dot.d6 { left: 48%; top: 84%; animation-delay: .4s; }
.gc3d-dot.d7 { left: 78%; top: 18%; animation-delay: 2.8s; width: 5px; height: 5px; }
.gc3d-dot.d8 { left: 6%; top: 52%; animation-delay: 1.4s; width: 5px; height: 5px; }

.log-1 .c1 .logo2 {
    position: relative;
    z-index: 2;
    transform-origin: 60% 50%;
    animation: gc3d-shot 9s ease-in-out infinite;
    filter: drop-shadow(0 28px 36px rgba(0, 70, 120, 0.18));
}

@keyframes gc3d-grid {
    from { background-position: 0 0; }
    to { background-position: 0 56px; }
}

@keyframes gc3d-orbit-yaw {
    from { transform: rotateX(18deg) rotateY(0deg); }
    to { transform: rotateX(18deg) rotateY(360deg); }
}

@keyframes gc3d-ring-a {
    from { transform: rotateX(72deg) rotateZ(0deg); }
    to { transform: rotateX(72deg) rotateZ(360deg); }
}

@keyframes gc3d-ring-b {
    from { transform: rotateX(68deg) rotateY(40deg) rotateZ(0deg); }
    to { transform: rotateX(68deg) rotateY(40deg) rotateZ(-360deg); }
}

@keyframes gc3d-ring-c {
    from { transform: rotateX(80deg) rotateY(-20deg) rotateZ(0deg); }
    to { transform: rotateX(80deg) rotateY(-20deg) rotateZ(360deg); }
}

@keyframes gc3d-cube {
    from { transform: rotateX(-18deg) rotateY(0deg); }
    to { transform: rotateX(-18deg) rotateY(360deg); }
}

@keyframes gc3d-core {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.18); }
}

@keyframes gc3d-pulse {
    0%, 100% { transform: scale(1); opacity: .85; }
    50% { transform: scale(1.08); opacity: 1; }
}

@keyframes gc3d-card-a {
    0%, 100% { transform: perspective(700px) rotateY(-28deg) rotateX(12deg) translateY(0); }
    50% { transform: perspective(700px) rotateY(18deg) rotateX(6deg) translateY(-18px); }
}

@keyframes gc3d-card-b {
    0%, 100% { transform: perspective(700px) rotateY(24deg) rotateX(-10deg) translateY(0); }
    50% { transform: perspective(700px) rotateY(-16deg) rotateX(8deg) translateY(-14px); }
}

@keyframes gc3d-card-c {
    0%, 100% { transform: perspective(700px) rotateY(-12deg) rotateX(16deg) translateY(0); }
    50% { transform: perspective(700px) rotateY(22deg) rotateX(-6deg) translateY(-16px); }
}

@keyframes gc3d-card-d {
    0%, 100% { transform: perspective(700px) rotateX(20deg) rotateZ(-8deg) translateY(0); }
    50% { transform: perspective(700px) rotateX(-12deg) rotateZ(10deg) translateY(-12px); }
}

@keyframes gc3d-dot {
    0%, 100% { transform: translate3d(0, 0, 0); opacity: .35; }
    50% { transform: translate3d(0, -22px, 40px); opacity: 1; }
}

@keyframes gc3d-shot {
    0%, 100% { transform: perspective(1100px) rotateY(-7deg) rotateX(3deg) translateY(0); }
    50% { transform: perspective(1100px) rotateY(7deg) rotateX(1deg) translateY(-10px); }
}

@media (max-width: 991px) {
    .gc3d-orbit {
        right: 0;
        top: 22%;
        zoom: 0.7;
    }
    .gc3d-card.k4 { top: 48%; left: 4%; }
    .gc3d-card.k2,
    .gc3d-card.k3 { display: none; }
}

@media (prefers-reduced-motion: reduce) {
    .gc3d *,
    .log-1 .c1 .logo2 {
        animation: none !important;
    }
}
