    *,
    *::before,
    *::after {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }

    html {
        scroll-behavior: smooth;
    }

    body {
        font-family: 'Poppins', sans-serif;
        overflow-x: hidden;
        min-height: 100vh;
        background: #F9FAFB;
    }

    /* ── Preloader ── */
    .preloader {
        position: fixed;
        inset: 0;
        background: linear-gradient(135deg, #0F766E, #14B8A6);
        z-index: 99999;
        display: flex;
        align-items: center;
        justify-content: center;
        flex-direction: column;
        transition: opacity .5s ease, visibility .5s ease;
    }

    .preloader.hidden {
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
    }

    .preloader-plane {
        animation: flyPlane 2s ease-in-out infinite;
    }

    @keyframes flyPlane {

        0%,
        100% {
            transform: translate(0, 0) rotate(0deg);
        }

        25% {
            transform: translate(18px, -10px) rotate(5deg);
        }

        50% {
            transform: translate(0, -20px) rotate(0deg);
        }

        75% {
            transform: translate(-18px, -10px) rotate(-5deg);
        }
    }

    .preloader-text {
        color: #fff;
        font-size: 1.4rem;
        font-weight: 700;
        font-family: 'Playfair Display', serif;
        letter-spacing: 4px;
        margin-top: 18px;
    }

    .preloader-dots span {
        display: inline-block;
        width: 8px;
        height: 8px;
        background: #fff;
        border-radius: 50%;
        margin: 0 4px;
        animation: dotBounce 1.4s ease-in-out infinite;
    }

    .preloader-dots span:nth-child(2) {
        animation-delay: .2s;
    }

    .preloader-dots span:nth-child(3) {
        animation-delay: .4s;
    }

    @keyframes dotBounce {

        0%,
        80%,
        100% {
            transform: scale(.6);
            opacity: .5;
        }

        40% {
            transform: scale(1);
            opacity: 1;
        }
    }

    /* ── Scrollbar ── */
    ::-webkit-scrollbar {
        width: 6px;
    }

    ::-webkit-scrollbar-track {
        background: #f1f1f1;
    }

    ::-webkit-scrollbar-thumb {
        background: #0F766E;
        border-radius: 10px;
    }

    /* ── Left panel ── */
    .auth-bg {
        position: relative;
        overflow: hidden;
    }

    .auth-bg::before {
        content: '';
        position: absolute;
        inset: 0;
        background: linear-gradient(135deg, rgba(15, 118, 110, .92), rgba(30, 41, 59, .88));
        z-index: 1;
    }

    .auth-bg>img {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

    .auth-bg-content {
        position: relative;
        z-index: 2;
    }

    .dots-pattern {
        background-image: radial-gradient(rgba(255, 255, 255, .08) 1px, transparent 1px);
        background-size: 24px 24px;
    }

    /* Floating shapes */
    @keyframes floatA {

        0%,
        100% {
            transform: translateY(0) rotate(0deg)
        }

        50% {
            transform: translateY(-18px) rotate(5deg)
        }
    }

    @keyframes floatB {

        0%,
        100% {
            transform: translateY(0) rotate(0deg)
        }

        50% {
            transform: translateY(-12px) rotate(-4deg)
        }
    }

    .float-a {
        animation: floatA 8s ease-in-out infinite;
    }

    .float-b {
        animation: floatB 6s ease-in-out 1s infinite;
    }

    /* ── Form inputs ── */
    .f-input {
        width: 100%;
        padding: 13px 16px;
        border: 2px solid #E5E7EB;
        border-radius: 14px;
        font-size: 14px;
        font-family: 'Poppins', sans-serif;
        background: #fff;
        outline: none;
        transition: border-color .25s, box-shadow .25s;
    }

    .f-input:focus {
        border-color: #0F766E;
        box-shadow: 0 0 0 4px rgba(15, 118, 110, .08);
    }

    .f-input.is-error {
        border-color: #EF4444;
        background: #FEF2F2;
    }

    .f-input.is-success {
        border-color: #10B981;
    }

    .f-select {
        width: 100%;
        padding: 13px 40px 13px 16px;
        border: 2px solid #E5E7EB;
        border-radius: 14px;
        font-size: 14px;
        font-family: 'Poppins', sans-serif;
        background: #fff;
        outline: none;
        appearance: none;
        cursor: pointer;
        transition: border-color .25s, box-shadow .25s;
    }

    .f-select:focus {
        border-color: #0F766E;
        box-shadow: 0 0 0 4px rgba(15, 118, 110, .08);
    }

    .f-label {
        display: block;
        font-size: 12px;
        font-weight: 600;
        color: #374151;
        margin-bottom: 6px;
    }

    /* Error messages */
    .err-msg {
        display: none;
        align-items: center;
        gap: 4px;
        color: #EF4444;
        font-size: 11px;
        margin-top: 4px;
    }

    .err-msg.show {
        display: flex;
    }

    /* ── Step dots ── */
    .step-dot {
        height: 10px;
        border-radius: 5px;
        background: #D1D5DB;
        transition: width .35s, background .35s, border-radius .35s;
        width: 10px;
    }

    .step-dot.is-active {
        width: 28px;
        background: #0F766E;
    }

    .step-dot.is-done {
        background: #10B981;
    }

    /* ── Step panels ── */
    .step-panel {
        display: none;
    }

    .step-panel.is-active {
        display: block;
        animation: slideIn .4s cubic-bezier(.4, 0, .2, 1);
    }

    @keyframes slideIn {
        from {
            opacity: 0;
            transform: translateX(24px);
        }

        to {
            opacity: 1;
            transform: translateX(0);
        }
    }

    /* ── Password strength ── */
    .pw-bar {
        flex: 1;
        height: 4px;
        border-radius: 2px;
        background: #E5E7EB;
        overflow: hidden;
    }

    .pw-fill {
        height: 100%;
        border-radius: 2px;
        transition: width .5s, background .5s;
    }

    /* ── Avatar upload ── */
    .avatar-wrap {
        width: 88px;
        height: 88px;
        border-radius: 50%;
        background: #F3F4F6;
        border: 4px solid #fff;
        box-shadow: 0 4px 14px rgba(0, 0, 0, .12);
        overflow: hidden;
        cursor: pointer;
        position: relative;
        transition: transform .25s;
    }

    .avatar-wrap:hover {
        transform: scale(1.06);
    }

    .avatar-wrap:hover .avatar-lens {
        opacity: 1;
    }

    .avatar-lens {
        position: absolute;
        inset: 0;
        background: rgba(15, 118, 110, .55);
        display: flex;
        align-items: center;
        justify-content: center;
        opacity: 0;
        transition: opacity .25s;
    }

    /* ── Interest chips ── */
    .chip {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        padding: 7px 14px;
        border-radius: 50px;
        border: 2px solid #E5E7EB;
        font-size: 12px;
        font-weight: 500;
        color: #4B5563;
        background: #fff;
        cursor: pointer;
        transition: all .2s;
    }

    .chip:hover {
        border-color: #14B8A6;
        color: #0F766E;
    }

    .chip.chosen {
        border-color: #0F766E;
        background: #0F766E;
        color: #fff;
    }

    /* ── Social buttons ── */
    .social-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        width: 100%;
        padding: 13px;
        border-radius: 14px;
        font-size: 13px;
        font-weight: 600;
        transition: transform .25s, box-shadow .25s;
        position: relative;
        overflow: hidden;
    }

    .social-btn::after {
        content: '';
        position: absolute;
        inset: 0;
        background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .12), transparent);
        transform: translateX(-100%);
        transition: transform .5s;
    }

    .social-btn:hover {
        transform: translateY(-2px);
        box-shadow: 0 6px 20px -6px rgba(0, 0, 0, .18);
    }

    .social-btn:hover::after {
        transform: translateX(100%);
    }

    /* ── Primary button ── */
    .btn-primary {
        position: relative;
        overflow: hidden;
        transition: background .25s, transform .15s, box-shadow .25s;
    }

    .btn-primary::before {
        content: '';
        position: absolute;
        inset: 0;
        background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .18), transparent);
        transform: translateX(-100%);
        transition: transform .5s;
    }

    .btn-primary:hover::before {
        transform: translateX(100%);
    }

    .btn-primary:active {
        transform: scale(.98);
    }

    /* Loading state */
    .is-loading .btn-txt {
        opacity: 0;
    }

    .is-loading .btn-spin {
        opacity: 1;
    }

    .btn-spin {
        opacity: 0;
        position: absolute;
        inset: 0;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: opacity .2s;
    }

    /* ── Custom checkbox ── */
    .c-check {
        width: 18px;
        height: 18px;
        flex-shrink: 0;
        border: 2px solid #D1D5DB;
        border-radius: 5px;
        appearance: none;
        cursor: pointer;
        transition: background .2s, border-color .2s;
        position: relative;
    }

    .c-check:checked {
        background: #0F766E;
        border-color: #0F766E;
    }

    .c-check:checked::after {
        content: '';
        position: absolute;
        top: 2px;
        left: 5px;
        width: 5px;
        height: 9px;
        border: 2px solid #fff;
        border-top: none;
        border-left: none;
        transform: rotate(45deg);
    }

    .c-check:focus-visible {
        box-shadow: 0 0 0 3px rgba(15, 118, 110, .2);
    }

    /* ── Divider ── */
    .divider {
        flex: 1;
        height: 1px;
        background: #E5E7EB;
    }

    /* ── Link underline ── */
    .link-u {
        position: relative;
    }

    .link-u::after {
        content: '';
        position: absolute;
        bottom: -2px;
        left: 0;
        width: 0;
        height: 2px;
        background: #0F766E;
        transition: width .3s;
    }

    .link-u:hover::after {
        width: 100%;
    }

    /* ── Password eye toggle ── */
    .eye-btn {
        color: #9CA3AF;
        transition: color .2s;
    }

    .eye-btn:hover {
        color: #0F766E;
    }

    /* ── Success screen ── */
    @keyframes popIn {
        0% {
            transform: scale(0);
        }

        60% {
            transform: scale(1.18);
        }

        100% {
            transform: scale(1);
        }
    }

    .pop-in {
        animation: popIn .5s cubic-bezier(.34, 1.56, .64, 1) forwards;
    }

    @keyframes fall {
        0% {
            transform: translateY(-80px) rotate(0deg);
            opacity: 1;
        }

        100% {
            transform: translateY(420px) rotate(720deg);
            opacity: 0;
        }
    }

    .confetti-piece {
        position: absolute;
        animation: fall 3s ease-in infinite;
    }