:root {
    --accent: #6366f1;
    --accent-2: #a855f7;
    --accent-soft: rgba(99,102,241,.12);
}
.body--dark {
    --accent: #818cf8;
    --accent-2: #c084fc;
    --accent-soft: rgba(129,140,248,.18);
}

.login-screen {
    min-height: 100vh;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
    background: radial-gradient(circle at 20% 20%, rgba(99,102,241,.10), transparent 45%),
                radial-gradient(circle at 80% 75%, rgba(168,85,247,.10), transparent 45%),
                #f4f5fa;
}
.body--dark .login-screen {
    background: radial-gradient(circle at 20% 20%, rgba(129,140,248,.16), transparent 45%),
                radial-gradient(circle at 80% 75%, rgba(192,132,252,.16), transparent 45%),
                #0e0f17;
}

.login-blob {
    position: absolute;
    border-radius: 999px;
    filter: blur(60px);
    opacity: .55;
    animation: blob-float 12s ease-in-out infinite;
    pointer-events: none;
}
.login-blob.b1 { width: 320px; height: 320px; background: var(--accent); top: -90px; left: -90px; }
.login-blob.b2 { width: 260px; height: 260px; background: var(--accent-2); bottom: -70px; right: -70px; animation-delay: -6s; }
@keyframes blob-float {
    0%, 100% { transform: translate(0,0) scale(1); }
    50% { transform: translate(20px,-20px) scale(1.08); }
}

.login-card {
    position: relative;
    z-index: 1;
    width: 380px;
    max-width: 92vw;
    background: rgba(255,255,255,.78) !important;
    backdrop-filter: saturate(180%) blur(18px);
    -webkit-backdrop-filter: saturate(180%) blur(18px);
    border: 1px solid rgba(255,255,255,.6);
    border-radius: 22px !important;
    padding: 36px 32px 30px;
    box-shadow: 0 24px 60px -20px rgba(30,20,60,.25) !important;
    animation: card-in .45s cubic-bezier(.2,.8,.2,1) both;
}
.body--dark .login-card {
    background: rgba(24,26,38,.72) !important;
    border: 1px solid rgba(255,255,255,.08);
    box-shadow: 0 24px 60px -20px rgba(0,0,0,.55) !important;
}
@keyframes card-in {
    from { opacity: 0; transform: translateY(14px) scale(.98); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

.login-brand-icon {
    width: 52px; height: 52px;
    border-radius: 16px;
    display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, var(--accent), var(--accent-2));
    box-shadow: 0 10px 24px -8px var(--accent);
    margin: 0 auto 14px;
}
.login-title { font-weight: 800; font-size: 1.35rem; text-align: center; }
.login-subtitle { font-size: .85rem; opacity: .6; text-align: center; margin-top: 2px; }

.login-card .q-field__control {
    border-radius: 12px !important;
    transition: box-shadow .18s ease;
}
.login-card .q-field--focused .q-field__control {
    box-shadow: 0 0 0 3px var(--accent-soft);
}

.login-btn {
    width: 100%;
    border-radius: 12px !important;
    background: linear-gradient(135deg, var(--accent), var(--accent-2)) !important;
    color: white !important;
    font-weight: 700;
    letter-spacing: .2px;
    transition: transform .16s ease, box-shadow .16s ease;
    box-shadow: 0 10px 24px -10px var(--accent);
}
.login-btn:hover { transform: translateY(-1px); box-shadow: 0 14px 30px -10px var(--accent); }
.login-btn:active { transform: translateY(0) scale(.98); }

.login-link {
    color: var(--accent);
    font-size: .8rem;
    cursor: pointer;
    transition: opacity .15s ease;
}
.login-link:hover { opacity: .75; text-decoration: underline; }

.login-error {
    color: #ef4444;
    font-size: .8rem;
    text-align: center;
    min-height: 1.1em;
}