:root {
    --blue: #0a6fd0;
    --cyan: #18b6ff;
    --ink: #0b1b3a;
    --navy: #020b24;
}

* {
    box-sizing: border-box
}

html,
body {
    margin: 0;
    overflow-x: hidden;
    font-family: Inter, system-ui, "Segoe UI", sans-serif;
    font-size: .9375rem;
    line-height: 1.45;
    scrollbar-width: none;
}

html::-webkit-scrollbar,
body::-webkit-scrollbar {
    display: none;
}

.fz-wrap {
    display: grid;
    grid-template-columns: 58fr 42fr;
    min-height: 100vh;
    min-height: 100svh;
}

/* =====================  LEFT PANEL  ===================== */
.fz-left {
    position: relative;
    overflow: hidden;
    color: #fff;
    min-height: 100vh;
    padding: clamp(24px, 3.2vw, 48px) 5% 0 4.8%;
    background:
        radial-gradient(ellipse at 82% 22%, #0a3cae 0, transparent 52%),
        linear-gradient(160deg, #051a4a 0%, #031030 45%, #020b24 100%);
}

/* red → blue diagonal light streak */
.fz-left::before {
    content: "";
    position: absolute;
    top: -14%;
    right: 6%;
    width: 120px;
    height: 95%;
    background: linear-gradient(#e0262c, #1d4fd8 70%, transparent);
    transform: rotate(32deg);
    opacity: .42;
    filter: blur(3px);
    animation: fzBeam 7s ease-in-out infinite alternate;
}

.fz-left>* {
    position: relative;
    z-index: 2
}

.fz-logo {
    width: clamp(200px, 20vw, 360px);
    display: block;
    mix-blend-mode: lighten
}

.fz-sub {
    letter-spacing: .35em;
    font-weight: 600;
    font-size: .8rem;
    margin: .1rem 0 .45rem 11%;
}

.fz-tag {
    font-size: .9rem;
    margin: 0 0 clamp(1rem, 3vh, 1.8rem);
    color: #dbe7ff
}

.fz-tag i {
    display: inline-block;
    width: 1px;
    height: 1em;
    background: #fff;
    margin: 0 .55em;
    vertical-align: -2px;
}

.fz-left h1 {
    font-size: clamp(1.75rem, 2.7vw, 2.65rem);
    font-weight: 700;
    line-height: 1.08;
    margin-bottom: .85rem;
}

.fz-left h1 span {
    color: var(--cyan)
}

.fz-desc {
    max-width: 440px;
    font-size: .875rem;
    line-height: 1.5;
    color: #e6eeff
}

.fz-feat {
    list-style: none;
    padding: 0;
    margin: 1.1rem 0;
    display: grid;
    gap: .6rem;
}

.fz-feat li {
    display: flex;
    align-items: center;
    gap: .75rem
}

.fz-feat .ic {
    flex: 0 0 44px;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: radial-gradient(circle at 35% 30%, #1a46b8, #0b2a78);
    display: grid;
    place-items: center;
    color: #d8ecff;
    font-size: 1rem;
    box-shadow: 0 0 18px #0a4fd866, inset 0 0 0 1px #2b66e033;
}

.fz-feat b {
    display: block;
    font-size: .85rem
}

.fz-feat small {
    color: #c4d3f2;
    font-size: .73rem
}

/* ---------- laptop image (bleeds off the right edge of the panel) ---------- */
.fz-left .fz-laptop {
    position: absolute;
    z-index: 0;
      top: 38%;
    right: -3%;
    width: 61%;
    max-width: none;
    height: auto;
    pointer-events: none;
    /* image has a solid blue background, so feather the edges into the panel */
    -webkit-mask-image: radial-gradient(ellipse 62% 60% at 52% 50%, #000 62%, transparent 100%);
    mask-image: radial-gradient(ellipse 62% 60% at 52% 50%, #000 62%, transparent 100%);
}

/* ---------- skyline image along the bottom ---------- */
.fz-left .fz-sky {
    position: absolute;
    z-index: 1;
    left: 33%;
    right: 0;
    bottom: 8%;
    width: 67%;
    max-width: none;
    height: auto;
    pointer-events: none;
    -webkit-mask-image: linear-gradient(to right, transparent 0, #000 28%), linear-gradient(to bottom, transparent 0, #000 38%, #000 70%, transparent 100%);
    -webkit-mask-composite: source-in;
    mask-image: linear-gradient(to right, transparent 0, #000 28%), linear-gradient(to bottom, transparent 0, #000 38%, #000 70%, transparent 100%);
    mask-composite: intersect;
}

/* ---------- slogan + trust badges ---------- */
.fz-left .fz-slogan {
    position: absolute;
    z-index: 3;
    left: 4.8%;
    bottom: 1%;
    font: 1.6rem/1.05 "Kaushan Script", "Brush Script MT", "Segoe Script", cursive;
    color: var(--cyan);
    transform: rotate(-7deg);
}

.fz-slogan em {
    color: #fff;
    font-style: normal;
    display: inline-block;
    position: relative;
    margin-left: 1.4rem;
    padding-bottom: 6px;
}

.fz-slogan em::after {
    content: "";
    position: absolute;
    left: -6px;
    right: -30px;
    bottom: 0;
    height: 3px;
    background: #e0262c;
    border-radius: 0 0 40px 4px;
    transform-origin: left;
    animation: fzDraw .9s 1.9s cubic-bezier(.3, .7, .2, 1) both;
}

.fz-left .fz-trust {
    text-shadow: 0 1px 6px #020b24;
    position: absolute;
    z-index: 3;
    left: 46%;
    right: 3%;
    bottom: 4.5%;
    display: flex;
    justify-content: space-between;
    gap: .7rem;
    font-size: .7rem;
    font-weight: 600;
    line-height: 1.25;
}

.fz-trust div {
    display: flex;
    align-items: center;
    gap: .45rem
}

.fz-trust div+div {
    border-left: 1px solid #ffffff2e;
    padding-left: .7rem
}

.fz-trust i {
    flex: 0 0 38px;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 2px solid #1c5bd6;
    background: #06173f99;
    display: grid;
    place-items: center;
    color: #2e9bff;
    font-size: .95rem;
}

/* =====================  RIGHT PANEL  ===================== */
.fz-right {
    position: relative;
    overflow: hidden;
    background: linear-gradient(#fff, #eef4ff);
    padding: 1.5rem 5%;
    display: flex;
    flex-direction: column;
    align-items: center;
}

/* red/blue corner streaks like the reference */
.fz-right::before,
.fz-right::after {
    content: "";
    position: absolute;
    right: -30px;
    width: 70px;
    height: 150px;
    transform: rotate(32deg);
    pointer-events: none;
}

.fz-right::before {
    top: -30px;
    background: linear-gradient(#e0262c66, transparent)
}

.fz-right::after {
    top: 70px;
    background: linear-gradient(#1a7fe066, transparent)
}

.fz-right>* {
    position: relative;
    z-index: 1
}

.fz-top {
    align-self: flex-end;
    font-size: .8rem;
    color: #1d4f8f;
    margin: 0 0 .9rem
}

.fz-top a {
    font-weight: 600;
    color: var(--blue);
    margin-left: .5rem;
    text-decoration: none
}

.fz-card {
    width: min(100%, 520px);
    background: #fff;
    border-radius: 16px;
    padding: 1.35rem 1.6rem;
    box-shadow: 0 20px 50px #1d4f9a22;
    color: var(--ink);
}

.fz-clogo {
    display: block;
    margin: -.9rem auto -.7rem;
    width: min(320px, 100%);
    max-width: 100%;
    height: auto
}

.fz-card h2 {
    text-align: center;
    font-weight: 700;
    font-size: 1.6rem;
    margin-bottom: .35rem
}

.fz-csub {
    text-align: center;
    color: #1d4f8f;
    font-size: .875rem;
    margin-bottom: 1rem
}

.fz-tabs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
    margin-bottom: 1.4rem
}

.fz-tabs button {
    border: 0;
    padding: .7rem;
    border-radius: 4px;
    background: #eff4fc;
    color: var(--ink);
    font-weight: 600;
}

.fz-tabs .on {
    background: linear-gradient(#1a7fe0, #0a62c4);
    color: #fff;
    box-shadow: 0 4px 10px #0a62c455;
}

.fz-card label {
    font-weight: 600;
    font-size: .825rem;
    display: block;
    margin: .7rem 0 .3rem
}

.fz-card em {
    color: #e0262c;
    font-style: normal
}

.fz-in {
    position: relative
}

.fz-in>i {
    position: absolute;
    left: 13px;
    top: 14px;
    color: #4a6a9a
}

.fz-in input {
    width: 100%;
    height: 44px;
    padding: 0 42px;
    border: 1px solid #cfdcf0;
    border-radius: 6px;
    background: #f8fbff;
    font-size: .85rem;
}

.fz-in input:focus {
    outline: 0;
    border-color: var(--blue);
    box-shadow: 0 0 0 3px #0a6fd022
}

.fz-in .eye {
    position: absolute;
    right: 6px;
    top: 4px;
    border: 0;
    background: 0;
    width: 38px;
    height: 38px;
    color: #334e7a;
}

.fz-in.bad input {
    border-color: #dc3545
}

.fz-in.bad .invalid-feedback {
    display: block
}

.fz-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: .5rem;
    margin: .75rem 0 1rem
}

.fz-row .chk {
    display: flex;
    gap: .45rem;
    align-items: center;
    margin: 0;
    font-weight: 500;
    cursor: pointer
}

.fz-row .chk input {
    appearance: none;
    -webkit-appearance: none;
    width: 20px;
    height: 20px;
    margin: 0;
    border: 1.5px solid #bcd0ee;
    border-radius: 4px;
    background: #fff;
    display: grid;
    place-content: center;
    cursor: pointer
}

.fz-row .chk input:checked {
    background: var(--blue);
    border-color: var(--blue)
}

.fz-row .chk input:checked::after {
    content: "\2713";
    color: #fff;
    font-size: 13px;
    line-height: 1
}

.fz-row a {
    color: var(--blue);
    font-weight: 600;
    font-size: .8rem;
    text-decoration: none
}

.fz-btn {
    width: 100%;
    height: 46px;
    border: 0;
    border-radius: 6px;
    color: #fff;
    font-weight: 600;
    background: linear-gradient(#1a7fe0, #0a62c4);
    box-shadow: 0 6px 14px #0a62c455;
}

.fz-btn:disabled {
    opacity: .8
}

.fz-or {
    text-align: center;
    margin: .9rem 0;
    position: relative;
    color: #6a7f9f;
    font-size: .8rem
}

.fz-or::before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: 50%;
    border-top: 1px solid #dde6f3
}

.fz-or span {
    position: relative;
    background: #fff;
    padding: 0 .8rem
}

.fz-google {
    display: flex;
    gap: .7rem;
    justify-content: center;
    align-items: center;
    height: 44px;
    border: 1.5px solid #c8d9f2;
    border-radius: 6px;
    color: var(--ink);
    font-weight: 600;
    text-decoration: none;
}

.fz-safe {
    display: flex;
    gap: .75rem;
    align-items: center;
    margin-top: 1.1rem;
    padding: .85rem;
    border-radius: 8px;
    background: #f1f6ff;
    color: var(--blue);
}

.fz-safe i {
    font-size: 1.5rem
}

.fz-safe b {
    display: block;
    font-size: .8rem
}

.fz-safe small {
    color: #2d4d7c
}

.fz-btn:focus-visible,
.fz-google:focus-visible,
.fz-top a:focus-visible,
.fz-row a:focus-visible,
.fz-in .eye:focus-visible {
    outline: 3px solid #18b6ff;
    outline-offset: 3px;
}

/* =====================  RESPONSIVE  ===================== */
@media (max-width: 1199px) {
    .fz-left .fz-laptop {
        width: 82%;
        right: -12%
    }

    .fz-left .fz-trust {
        left: 40%;
        gap: .6rem
    }

    .fz-trust div+div {
        padding-left: .6rem
    }
}

@media (max-width: 991px) {
    .fz-wrap {
        grid-template-columns: 1fr
    }

    .fz-right {
        order: -1;
        padding: 1.25rem 1rem
    }

    .fz-left {
        min-height: 0;
        padding: 1.5rem 1.25rem 0
    }

    .fz-left::before,
    .fz-left .fz-laptop {
        display: none
    }

    .fz-left .fz-sky {
        position: relative;
        left: auto;
        bottom: auto;
        width: calc(100% + 2.5rem);
        margin: 1.25rem -1.25rem 0;
        -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 40%);
        mask-image: linear-gradient(to bottom, transparent 0, #000 40%);
    }

    .fz-left .fz-slogan,
    .fz-left .fz-trust {
        position: relative;
        left: auto;
        right: auto;
        bottom: auto;
        margin-top: 1.25rem
    }

    .fz-left .fz-slogan {
        transform: none
    }

    .fz-left .fz-trust {
        flex-wrap: wrap;
        padding-bottom: 1.25rem
    }

    .fz-tag {
        font-size: .85rem
    }
}

@media (max-width: 480px) {
    .fz-card {
        padding: 1.1rem .9rem
    }

    .fz-card h2 {
        font-size: 1.35rem
    }

    .fz-top {
        font-size: .75rem
    }

    .fz-row {
        align-items: flex-start;
        flex-wrap: wrap;
    }

    .fz-row .chk,
    .fz-row a {
        font-size: .75rem;
    }

    .fz-safe {
        gap: .6rem;
        padding: .7rem;
    }

    .fz-left {
        padding-right: 1rem;
        padding-left: 1rem;
    }

    .fz-left .fz-sky {
        width: calc(100% + 2rem);
        margin-right: -1rem;
        margin-left: -1rem;
    }
}

/* =====================  ANIMATIONS  ===================== */
/* 1. page-load: left column rises in, one after another */
.fz-left> :not(.fz-laptop):not(.fz-sky):not(.fz-slogan) {
    animation: fzUp .7s cubic-bezier(.2, .7, .2, 1) both
}

.fz-left> :nth-child(2) {
    animation-delay: .08s
}

.fz-left> :nth-child(3) {
    animation-delay: .16s
}

.fz-left> :nth-child(4) {
    animation-delay: .26s
}

.fz-left> :nth-child(5) {
    animation-delay: .36s
}

.fz-left> :nth-child(6) {
    animation-delay: .46s
}

.fz-left>.fz-trust {
    animation-delay: 1.1s
}

.fz-feat li {
    animation: fzUp .6s cubic-bezier(.2, .7, .2, 1) both
}

.fz-feat li:nth-child(1) {
    animation-delay: .55s
}

.fz-feat li:nth-child(2) {
    animation-delay: .65s
}

.fz-feat li:nth-child(3) {
    animation-delay: .75s
}

.fz-feat li:nth-child(4) {
    animation-delay: .85s
}

.fz-feat li:nth-child(5) {
    animation-delay: .95s
}

/* 2. feature icons: soft ring pulse, staggered */
.fz-feat .ic {
    animation: fzRing 3.6s ease-in-out infinite
}

.fz-feat li:nth-child(2) .ic {
    animation-delay: .7s
}

.fz-feat li:nth-child(3) .ic {
    animation-delay: 1.4s
}

.fz-feat li:nth-child(4) .ic {
    animation-delay: 2.1s
}

.fz-feat li:nth-child(5) .ic {
    animation-delay: 2.8s
}

/* 3. laptop slides in then floats; skyline fades in then glows */
.fz-left .fz-laptop {
    animation: fzFade 1.1s .5s both, fzFloat 7s 1.6s ease-in-out infinite
}

.fz-left .fz-sky {
    animation: fzFade 1.2s .8s both, fzGlow 4.5s 2s ease-in-out infinite alternate
}

.fz-left .fz-slogan {
    animation: fzSlogan .8s 1.5s cubic-bezier(.2, .7, .2, 1) both
}

/* 4. sparkles over the skyline (built by js/faszo-fx.js) */
.fz-sparks {
    position: absolute;
    z-index: 2;
    left: 36%;
    right: 0;
    bottom: 8%;
    height: 18%;
    pointer-events: none;
    overflow: hidden
}

.fz-sparks span {
    position: absolute;
    display: block;
    border-radius: 50%;
    background: #dff6ff;
    opacity: 0;
    box-shadow: 0 0 6px 2px rgba(60, 190, 255, .9), 0 0 14px 4px rgba(20, 120, 255, .5);
    animation: fzTwinkle var(--d, 3s) ease-in-out var(--delay, 0s) infinite
}

.fz-sparks span.star {
    border-radius: 0;
    background: #fff;
    box-shadow: none;
    filter: drop-shadow(0 0 5px #3cc3ff);
    clip-path: polygon(50% 0, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0 50%, 40% 40%)
}

/* 5. right side: card fades up, forms cross-fade on tab switch, button shine */
.fz-top {
    animation: fzFade .8s .2s both
}

.fz-card {
    animation: fzUp .8s .15s cubic-bezier(.2, .7, .2, 1) both
}

#loginForm:not(.d-none),
#registerForm:not(.d-none) {
    animation: fzSwap .35s ease both
}

.fz-tabs button {
    transition: background .25s, color .25s, box-shadow .25s
}

.fz-tabs button:not(.on):hover {
    background: #e2ecfb
}

.fz-btn {
    position: relative;
    overflow: hidden;
    transition: transform .2s, box-shadow .2s
}

.fz-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 20px #0a62c466
}

.fz-btn:active {
    transform: translateY(0)
}

.fz-btn::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    width: 40%;
    left: -60%;
    background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .35), transparent);
    animation: fzShine 4.5s 2.5s ease-in-out infinite
}

.fz-google {
    transition: background .2s, border-color .2s, transform .2s
}

.fz-google:hover {
    background: #f4f8ff;
    border-color: #8db4ea;
    transform: translateY(-1px)
}

.fz-in input {
    transition: border-color .2s, box-shadow .2s, background .2s
}

.fz-in input:focus {
    background: #fff
}

@keyframes fzUp {
    from {
        opacity: 0;
        transform: translateY(22px)
    }

    to {
        opacity: 1;
        transform: none
    }
}

@keyframes fzFade {
    from {
        opacity: 0
    }

    to {
        opacity: 1
    }
}

@keyframes fzSwap {
    from {
        opacity: 0;
        transform: translateY(8px)
    }

    to {
        opacity: 1;
        transform: none
    }
}

@keyframes fzFloat {

    0%,
    100% {
        transform: translateY(0)
    }

    50% {
        transform: translateY(-10px)
    }
}

@keyframes fzGlow {
    from {
        filter: brightness(1) saturate(1)
    }

    to {
        filter: brightness(1.28) saturate(1.2)
    }
}

@keyframes fzBeam {
    from {
        opacity: .3;
        transform: rotate(32deg) translateY(0)
    }

    to {
        opacity: .55;
        transform: rotate(32deg) translateY(2%)
    }
}

@keyframes fzRing {

    0%,
    100% {
        box-shadow: 0 0 18px #0a4fd866, 0 0 0 0 #19b5ff55
    }

    50% {
        box-shadow: 0 0 26px #0a4fd8aa, 0 0 0 9px #19b5ff00
    }
}

@keyframes fzDraw {
    from {
        transform: scaleX(0)
    }

    to {
        transform: scaleX(1)
    }
}

@keyframes fzSlogan {
    from {
        opacity: 0;
        transform: rotate(-7deg) translateY(20px)
    }

    to {
        opacity: 1;
        transform: rotate(-7deg)
    }
}

@keyframes fzTwinkle {

    0%,
    100% {
        opacity: 0;
        transform: scale(.3)
    }

    50% {
        opacity: 1;
        transform: scale(1)
    }
}

@keyframes fzShine {

    0%,
    55% {
        left: -60%
    }

    100% {
        left: 130%
    }
}

@media (max-width: 991px) {
    .fz-left .fz-slogan {
        animation-name: fzUp
    }

    .fz-sparks {
        display: none
    }
}

@media (prefers-reduced-motion: reduce) {

    *,
    *::before,
    *::after {
        animation: none !important;
        transition: none !important
    }

    .fz-sparks span {
        opacity: .7
    }
}