
        *, *::before, *::after {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }

        :root {
            --primary:       #1a3a5c;
            --primary-light: #2457a0;
            --accent:        #f4a020;
            --accent-dark:   #d4870a;
            --bg:            #f0f4fa;
            --surface:       #ffffff;
            --text:          #1e2a38;
            --text-muted:    #5a6e85;
            --success-bg:    #d4edda;
            --success-text:  #155724;
            --success-border:#c3e6cb;
            --error-bg:      #f8d7da;
            --error-text:    #721c24;
            --error-border:  #f5c6cb;
        }

        body {
            min-height: 100vh;
            background: var(--bg);
            font-family: 'Lato', sans-serif;
            display: flex;
            align-items: center;
            justify-content: center;
            position: relative;
            overflow: hidden;
        }

        /* ── Decorative blobs ── */
        body::before,
        body::after {
            content: '';
            position: fixed;
            border-radius: 50%;
            filter: blur(90px);
            opacity: .18;
            pointer-events: none;
            z-index: 0;
        }
        body::before {
            width: 520px; height: 520px;
            background: var(--primary-light);
            top: -140px; left: -140px;
        }
        body::after {
            width: 400px; height: 400px;
            background: var(--accent);
            bottom: -120px; right: -100px;
        }

        /* ── Card ── */
        .card {
            position: relative;
            z-index: 1;
            background: var(--surface);
            border-radius: 24px;
            box-shadow:
                0 4px 6px rgba(0,0,0,.04),
                0 20px 60px rgba(26,58,92,.14);
            padding: 52px 48px 44px;
            width: 100%;
            max-width: 460px;
            animation: cardIn .55s cubic-bezier(.22,1,.36,1) both;
        }

        @keyframes cardIn {
            from { opacity: 0; transform: translateY(28px) scale(.97); }
            to   { opacity: 1; transform: translateY(0)   scale(1); }
        }

        /* ── Brand strip ── */
        .brand {
            display: flex;
            align-items: center;
            gap: 12px;
            margin-bottom: 36px;
        }
        .brand-icon {
            width: 46px; height: 46px;
            background: linear-gradient(135deg, var(--primary) 0%, var(--primary-light) 100%);
            border-radius: 12px;
            display: grid;
            place-items: center;
            font-size: 22px;
            box-shadow: 0 4px 14px rgba(26,58,92,.3);
            flex-shrink: 0;
        }
        .brand-text h1 {
            font-family: 'Raleway', sans-serif;
            font-size: 1.15rem;
            font-weight: 800;
            color: var(--primary);
            letter-spacing: .04em;
            line-height: 1;
        }
        .brand-text span {
            font-size: .72rem;
            color: var(--text-muted);
            font-weight: 400;
            letter-spacing: .08em;
            text-transform: uppercase;
        }

        /* ── Heading ── */
        .heading {
            margin-bottom: 8px;
        }
        .heading h2 {
            font-family: 'Raleway', sans-serif;
            font-size: 1.6rem;
            font-weight: 700;
            color: var(--text);
            line-height: 1.2;
        }
        .heading p {
            margin-top: 8px;
            font-size: .9rem;
            color: var(--text-muted);
            line-height: 1.55;
        }

        /* ── Divider ── */
        .divider {
            height: 1px;
            background: linear-gradient(90deg, transparent, #dde5f0, transparent);
            margin: 24px 0;
        }

        /* ── Alerts ── */
        .mensaje {
            display: none;
            padding: 14px 16px;
            border-radius: 10px;
            font-size: .88rem;
            font-weight: 500;
            margin-bottom: 20px;
            animation: fadeSlide .3s ease both;
        }
        @keyframes fadeSlide {
            from { opacity: 0; transform: translateY(-6px); }
            to   { opacity: 1; transform: translateY(0); }
        }
        .mensaje.success {
            background: var(--success-bg);
            color: var(--success-text);
            border: 1px solid var(--success-border);
        }
        .mensaje.error {
            background: var(--error-bg);
            color: var(--error-text);
            border: 1px solid var(--error-border);
        }

        /* ── Form ── */
        .form-group {
            position: relative;
            margin-bottom: 20px;
        }
        .form-group label {
            display: block;
            font-size: .8rem;
            font-weight: 700;
            color: var(--text-muted);
            letter-spacing: .07em;
            text-transform: uppercase;
            margin-bottom: 8px;
        }
        .input-wrap {
            position: relative;
        }
        .input-icon {
            position: absolute;
            left: 16px;
            top: 50%;
            transform: translateY(-50%);
            font-size: 1rem;
            pointer-events: none;
            color: var(--text-muted);
            transition: color .2s;
        }
        .form-control {
            width: 100%;
            padding: 13px 16px 13px 44px;
            border: 1.5px solid #dde5f0;
            border-radius: 10px;
            font-family: 'Lato', sans-serif;
            font-size: .95rem;
            color: var(--text);
            background: #f8fafd;
            transition: border-color .2s, box-shadow .2s, background .2s;
            outline: none;
        }
        .form-control:focus {
            border-color: var(--primary-light);
            background: #fff;
            box-shadow: 0 0 0 3px rgba(36,87,160,.12);
        }
        .form-control:focus + .input-icon,
        .input-wrap:focus-within .input-icon {
            color: var(--primary-light);
        }

        /* ── Primary button ── */
        .btn-primary {
            display: block;
            width: 100%;
            padding: 14px 20px;
            background: linear-gradient(135deg, var(--primary) 0%, var(--primary-light) 100%);
            color: #fff;
            font-family: 'Raleway', sans-serif;
            font-size: .95rem;
            font-weight: 700;
            letter-spacing: .04em;
            border: none;
            border-radius: 10px;
            cursor: pointer;
            transition: transform .15s, box-shadow .2s, opacity .2s;
            box-shadow: 0 6px 20px rgba(26,58,92,.3);
            margin-top: 4px;
        }
        .btn-primary:hover:not(:disabled) {
            transform: translateY(-2px);
            box-shadow: 0 10px 28px rgba(26,58,92,.36);
        }
        .btn-primary:active:not(:disabled) {
            transform: translateY(0);
        }
        .btn-primary:disabled {
            opacity: .65;
            cursor: not-allowed;
        }

        /* ── Resultado / link box ── */
        .link-recuperacion {
            background: linear-gradient(135deg, #eaf2ff 0%, #f0f8ff 100%);
            border: 1px solid #c5dcf8;
            padding: 22px 20px;
            border-radius: 12px;
            margin-top: 18px;
            text-align: center;
            animation: fadeSlide .35s ease both;
        }
        .link-recuperacion p {
            font-size: .9rem;
            color: var(--primary);
            font-weight: 600;
            margin-bottom: 14px;
        }
        .btn-accent {
            display: inline-block;
            padding: 11px 28px;
            background: linear-gradient(135deg, var(--accent) 0%, var(--accent-dark) 100%);
            color: #fff;
            font-family: 'Raleway', sans-serif;
            font-size: .9rem;
            font-weight: 700;
            letter-spacing: .04em;
            border: none;
            border-radius: 8px;
            cursor: pointer;
            transition: transform .15s, box-shadow .2s;
            box-shadow: 0 4px 14px rgba(244,160,32,.35);
        }
        .btn-accent:hover {
            transform: translateY(-2px);
            box-shadow: 0 8px 22px rgba(244,160,32,.42);
        }

        /* ── Back link ── */
        .back-link {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
            margin-top: 28px;
            text-decoration: none;
            color: var(--text-muted);
            font-size: .88rem;
            font-weight: 600;
            letter-spacing: .03em;
            border-radius: 8px;
            padding: 10px 18px;
            border: 1.5px solid #dde5f0;
            transition: color .2s, border-color .2s, background .2s, transform .15s;
        }
        .back-link svg {
            transition: transform .2s;
        }
        .back-link:hover {
            color: var(--primary);
            border-color: var(--primary-light);
            background: #eef4ff;
            transform: translateY(-1px);
        }
        .back-link:hover svg {
            transform: translateX(-3px);
        }
        /* ───────────────── VIDEO FONDO ───────────────── */
.bg-video {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: -2;
}

/* Quitar fondo gris */
body {
    background: transparent;
}

/* Asegurar que la card quede encima */
.card {
    position: relative;
    z-index: 1;
}

