/* ============================================================
   Darsi LMS — Stage-1 Login Page Styles
   Replaces Tailwind CSS CDN with hand-crafted CSS
   ============================================================ */

/* ---------- RESET & BASE ---------- */
*,
*::before,
*::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    font-family: 'Hind Siliguri', 'Poppins', sans-serif;
    font-size: 14px;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    /* The fixed background decorations bleed past the right edge on narrow
       screens (esp. iOS); stop them from creating a horizontal scrollbar. */
    overflow-x: hidden;
    overflow-x: clip;
}

body {
    /* font-family: 'Hind Siliguri', 'Poppins', sans-serif; */
    color: #f3f4f6;
    line-height: 1.6;
    min-height: 100vh;
    /* On mobile, 100vh includes the browser chrome, so the fixed background
       would extend below the visible area and force a vertical scroll. Use
       the small viewport height instead (100vh stays as the fallback). */
    min-height: 100svh;
    overflow-x: hidden;
    overflow-x: clip;
}

a {
    color: inherit;
    text-decoration: none;
}

img {
    max-width: 100%;
    height: auto;
    display: block;
}

/* ---------- GRADIENT BACKGROUND ---------- */
.gradient-bg {
    background: linear-gradient(135deg, #06192d 0%, #0a2342 30%, #1d7cfe 100%);
    min-height: 100vh;
    min-height: 100svh;
    overflow-x: hidden;
    overflow-x: clip;
}

/* ---------- ARC DECORATIVE BG ---------- */
.arc-bg {
    position: relative;
    overflow: hidden;
}

/* ═══════════════════════════════════════════════════════════════
   AI-POWERED BACKGROUND — animated neural / data-flow vibe
   ═══════════════════════════════════════════════════════════════ */

/* ── Animated grid overlay (circuit-board / neural network feel) ── */
.ai-grid {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    background-image:
        linear-gradient(rgba(99, 102, 241, 0.12) 1px, transparent 1px),
        linear-gradient(90deg, rgba(99, 102, 241, 0.12) 1px, transparent 1px);
    background-size: 50px 50px;
    animation: ai-grid-pulse 6s ease-in-out infinite;
}
@keyframes ai-grid-pulse {
    0%, 100% { opacity: 0.5; }
    50%      { opacity: 1; }
}

/* ── Floating orbs / data nodes ── */
.ai-node {
    position: fixed;
    border-radius: 50%;
    pointer-events: none;
    z-index: 0;
}
.ai-node-1 {
    width: 400px; height: 400px;
    background: radial-gradient(circle, rgba(99, 102, 241, 0.25) 0%, rgba(99, 102, 241, 0.08) 40%, transparent 70%);
    top: -120px; left: -100px;
    animation: ai-node-drift-1 12s ease-in-out infinite;
}
.ai-node-2 {
    width: 350px; height: 350px;
    background: radial-gradient(circle, rgba(139, 92, 246, 0.22) 0%, rgba(139, 92, 246, 0.06) 40%, transparent 70%);
    top: 35%; right: -80px;
    animation: ai-node-drift-2 15s ease-in-out infinite;
}
.ai-node-3 {
    width: 300px; height: 300px;
    background: radial-gradient(circle, rgba(56, 189, 248, 0.20) 0%, rgba(56, 189, 248, 0.05) 40%, transparent 70%);
    bottom: -60px; left: 25%;
    animation: ai-node-drift-3 10s ease-in-out infinite;
}
.ai-node-4 {
    width: 250px; height: 250px;
    background: radial-gradient(circle, rgba(99, 102, 241, 0.18) 0%, rgba(99, 102, 241, 0.04) 40%, transparent 70%);
    top: 10%; left: 50%;
    animation: ai-node-drift-4 14s ease-in-out infinite;
}

/* ── Animated data-stream lines ── */
.ai-lines {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    opacity: 0.5;
}
.ai-line {
    position: absolute;
    height: 2px;
    background: linear-gradient(90deg, transparent, rgba(99, 102, 241, 0.5), rgba(139, 92, 246, 0.8), rgba(99, 102, 241, 0.5), transparent);
    animation: ai-line-flow 6s linear infinite;
    box-shadow: 0 0 8px rgba(99, 102, 241, 0.3);
}
.ai-line:nth-child(1) { top: 10%; width: 70%; left: -15%; animation-delay: 0s; }
.ai-line:nth-child(2) { top: 25%; width: 55%; left: 35%; animation-delay: -1.5s; }
.ai-line:nth-child(3) { top: 42%; width: 80%; left: -25%; animation-delay: -3s; }
.ai-line:nth-child(4) { top: 58%; width: 60%; left: 20%; animation-delay: -4.5s; }
.ai-line:nth-child(5) { top: 74%; width: 75%; left: -10%; animation-delay: -2s; }
.ai-line:nth-child(6) { top: 92%; width: 50%; left: 45%; animation-delay: -5s; }
.ai-line:nth-child(7) { top: 18%; width: 40%; left: 60%; animation-delay: -3.5s; }
.ai-line:nth-child(8) { top: 68%; width: 35%; left: 70%; animation-delay: -6s; }

@keyframes ai-line-flow {
    0%   { transform: translateX(-40%); opacity: 0; }
    15%  { opacity: 0.8; }
    85%  { opacity: 0.8; }
    100% { transform: translateX(40%); opacity: 0; }
}

/* ── Floating data particles (tiny dots) ── */
.ai-particles {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
}
.ai-particle {
    position: absolute;
    width: 4px; height: 4px;
    border-radius: 50%;
    background: rgba(165, 180, 252, 0.8);
    animation: ai-particle-float 7s ease-in-out infinite;
    box-shadow: 0 0 10px rgba(99, 102, 241, 0.6), 0 0 20px rgba(139, 92, 246, 0.3);
}
.ai-particle:nth-child(1)  { top: 6%;  left: 8%;  animation-delay: 0s; }
.ai-particle:nth-child(2)  { top: 16%; left: 72%; animation-delay: -1s; width: 3px; height: 3px; }
.ai-particle:nth-child(3)  { top: 28%; left: 22%; animation-delay: -2s; }
.ai-particle:nth-child(4)  { top: 40%; left: 82%; animation-delay: -3s; width: 5px; height: 5px; }
.ai-particle:nth-child(5)  { top: 52%; left: 12%; animation-delay: -4s; }
.ai-particle:nth-child(6)  { top: 62%; left: 65%; animation-delay: -5s; width: 3px; height: 3px; }
.ai-particle:nth-child(7)  { top: 72%; left: 32%; animation-delay: -6s; }
.ai-particle:nth-child(8)  { top: 84%; left: 78%; animation-delay: -7s; }
.ai-particle:nth-child(9)  { top: 10%; left: 48%; animation-delay: -3.5s; width: 3px; height: 3px; }
.ai-particle:nth-child(10) { top: 48%; left: 42%; animation-delay: -6.5s; }
.ai-particle:nth-child(11) { top: 34%; left: 90%; animation-delay: -2.5s; width: 3px; height: 3px; }
.ai-particle:nth-child(12) { top: 22%; left: 38%; animation-delay: -5.5s; }
.ai-particle:nth-child(13) { top: 58%; left: 55%; animation-delay: -4.2s; width: 3px; height: 3px; }
.ai-particle:nth-child(14) { top: 78%; left: 15%; animation-delay: -1.8s; }
.ai-particle:nth-child(15) { top: 92%; left: 50%; animation-delay: -3.8s; width: 3px; height: 3px; }

@keyframes ai-particle-float {
    0%, 100% { transform: translateY(0) scale(1); opacity: 0.3; }
    50%      { transform: translateY(-35px) scale(1.8); opacity: 0.9; }
}

/* ── Rotating accent rings ── */
.ai-ring {
    position: fixed;
    pointer-events: none;
    z-index: 0;
    border-radius: 50%;
    border: 2px solid rgba(99, 102, 241, 0.15);
    animation: ai-ring-spin 30s linear infinite;
}
.ai-ring-1 {
    width: 600px; height: 600px;
    top: -180px; right: -120px;
}
.ai-ring-2 {
    width: 420px; height: 420px;
    bottom: -100px; left: -70px;
    border-color: rgba(139, 92, 246, 0.12);
    animation-direction: reverse;
    animation-duration: 25s;
}
.ai-ring-3 {
    width: 300px; height: 300px;
    top: 30%; left: 40%;
    border-color: rgba(56, 189, 248, 0.10);
    animation-duration: 20s;
}

@keyframes ai-ring-spin {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

/* ---------- PWA INSTALL BUTTON ---------- */
.pwa-install-btn {
    position: fixed;
    bottom: 24px;
    right: 16px;
    top: auto;
    z-index: 9999;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 18px;
    background: linear-gradient(135deg, #f97316, #ea580c);
    color: #fff;
    border: none;
    border-radius: 12px;
    font-family: 'Poppins', sans-serif;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    box-shadow: 0 4px 20px rgba(249, 115, 22, 0.4);
    transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.3s ease;
    opacity: 0;
    transform: translateY(10px);
    pointer-events: none;
}

.pwa-install-btn.show {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

.pwa-install-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 28px rgba(249, 115, 22, 0.55);
}

.pwa-install-btn i {
    font-size: 16px;
}

@media (max-width: 576px) {
    .pwa-install-btn {
        bottom: 16px;
        right: 10px;
        top: auto;
        padding: 8px 14px;
        font-size: 13px;
        border-radius: 10px;
    }
    .pwa-install-btn span {
        display: none; /* icon-only on small screens */
    }
}

.arc-bg::before {
    content: '';
    position: absolute;
    width: 600px;
    height: 600px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(29, 124, 254, 0.1) 0%, rgba(29, 124, 254, 0.05) 30%, transparent 70%);
    top: -300px;
    left: -200px;
    pointer-events: none;
}

.arc-bg::after {
    content: '';
    position: absolute;
    width: 500px;
    height: 500px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 255, 255, 0.05) 0%, rgba(255, 255, 255, 0.02) 30%, transparent 70%);
    bottom: -250px;
    right: -200px;
    pointer-events: none;
}

/* ---------- GLASS EFFECT ---------- */
.glass-effect {
    background: rgba(255, 255, 255, 0.08);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgba(255, 255, 255, 0.1);
    box-shadow: 0 15px 35px rgba(0, 0, 0, 0.2);
}

/* ---------- GRADIENT TEXT ---------- */
.gradient-text {
    background: linear-gradient(90deg, #1d7cfe, #4da1ff, #80c4ff);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

/* ---------- BUTTONS ---------- */
.btn-gradient {
    background: linear-gradient(90deg, #1d7cfe, #4da1ff);
    color: #fff;
    border: none;
    cursor: pointer;
    position: relative;
    overflow: hidden;
    transition: all 0.3s ease;
    font-family: 'Hind Siliguri', 'Poppins', sans-serif;
    font-weight: 600;
    font-size: 1.125rem;
    padding: 1rem;
    border-radius: 0.75rem;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
}

.btn-gradient:hover {
    background: linear-gradient(90deg, #0d6efd, #1d7cfe);
    transform: translateY(-2px);
    box-shadow: 0 10px 25px rgba(29, 124, 254, 0.3);
}

.btn-gradient::after {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
    transition: 0.5s;
}

.btn-gradient:hover::after {
    left: 100%;
}

.btn-gradient:disabled {
    opacity: 0.7;
    cursor: not-allowed;
    transform: none;
}

/* Social Login Buttons */
.social-login-btn {
    background: rgba(255, 255, 255, 0.08);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgba(255, 255, 255, 0.1);
    color: #d1d5db;
    cursor: pointer;
    padding: 0.75rem 1rem;
    border-radius: 0.75rem;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    transition: all 0.25s ease;
    font-size: 0.9375rem;
}

.social-login-btn:hover {
    background: rgba(255, 255, 255, 0.15);
    color: #fff;
}

/* ---------- LAYOUT ---------- */
.login-page {
    display: flex;
    min-height: 100vh;
    min-height: 100svh;
    /* The background is fixed and viewport-sized; never let it create a
       horizontal scrollbar on narrow screens. Vertical overflow stays enabled
       so a very short screen can still reach the whole form. */
    overflow-x: hidden;
    overflow-y: auto;
}

.login-left {
    display: none;
    width: 50%;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    padding: 3rem;
    position: relative;
    z-index: 10;
}

.login-left-inner {
    max-width: 36rem;
    width: 100%;
}

.login-right {
    width: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    padding: 1.5rem;
    position: relative;
    z-index: 10;
}

.login-right-inner {
    width: 100%;
    max-width: 28rem;
}

@media (min-width: 1024px) {
    .login-left {
        display: flex;
    }
    .login-right {
        width: 50%;
        padding: 3rem;
    }
}

/* ---------- BRAND SECTION ---------- */
.brand-header {
    display: flex;
    align-items: center;
    margin-bottom: 2rem;
}

.brand-logo-wrap {
    position: relative;
    margin-right: 1rem;
}

.brand-logo-circle {
    width: 5rem;
    height: 5rem;
    border-radius: 1rem;
    display: flex;
    align-items: center;
    justify-content: center;
}

.brand-logo-circle img {
    height: 95px;
    width: auto;
}

.brand-logo-badge {
    position: absolute;
    top: -0.5rem;
    right: -0.5rem;
    width: 2rem;
    height: 2rem;
    background: linear-gradient(135deg, #22d3ee, #3b82f6);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.75rem;
}

.brand-title {
    font-size: 3rem;
    font-weight: 700;
}

.brand-subtitle {
    color: #d1d5db;
    font-size: 1.125rem;
}

/* Brand Info Card */
.brand-card {
    border-radius: 1.5rem;
    padding: 2rem;
    margin-bottom: 2rem;
}

.brand-card h2 {
    font-size: 1.75rem;
    font-weight: 700;
    margin-bottom: 1rem;
    color: #fff;
}

.brand-card > p {
    color: #d1d5db;
    margin-bottom: 1.5rem;
    line-height: 1.75;
}

/* Feature Items */
.feature-list {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.feature-item {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.feature-icon {
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 0.875rem;
}

.feature-icon.feat-green {
    background: linear-gradient(135deg, #22c55e, #34d399);
}

.feature-icon.feat-purple {
    background: linear-gradient(135deg, #a855f7, #f472b6);
}

.feature-icon.feat-orange {
    background: linear-gradient(135deg, #f97316, #facc15);
}

.feature-text h3 {
    font-weight: 600;
    color: #fff;
    font-size: 0.9375rem;
}

.feature-text p {
    font-size: 0.8125rem;
    color: #9ca3af;
}

/* ---------- MOBILE BRAND (visible only on small screens) ---------- */
.mobile-brand {
    margin-bottom: 2rem;
    text-align: center;
    display: block;
}

.mobile-brand-inner {
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 1rem;
}

.mobile-brand-logo {
    width: 4rem;
    height: 4rem;
    border-radius: 1rem;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-right: 1rem;
}

.mobile-brand-logo img {
    height: 65px;
    width: auto;
}

.mobile-brand .brand-title {
    font-size: 1.75rem;
    text-align: left;
}

.mobile-brand .brand-subtitle {
    color: #d1d5db;
    font-size: 0.875rem;
    text-align: left;
}

@media (min-width: 1024px) {
    .mobile-brand {
        display: none;
    }
}

/* ---------- LOGIN CARD ---------- */
.login-card {
    border-radius: 1.5rem;
    padding: 2rem;
}

.login-card-header {
    text-align: center;
    margin-bottom: 2rem;
}

.login-card-header h2 {
    font-size: 1.75rem;
    font-weight: 700;
    margin-bottom: 0.5rem;
    color: #fff;
}

.login-card-header p {
    color: #d1d5db;
    font-size: 0.9375rem;
}

@media (min-width: 1024px) {
    .login-card {
        padding: 2.5rem;
    }
}

/* ---------- FORM ELEMENTS ---------- */
.form-group {
    margin-bottom: 1.5rem;
}

.form-label {
    display: block;
    color: #d1d5db;
    margin-bottom: 0.5rem;
    font-size: 0.9375rem;
}

.form-label i {
    margin-right: 0.5rem;
}

.input-wrapper {
    position: relative;
}

.input-icon {
    position: absolute;
    left: 1.25rem;
    top: 50%;
    transform: translateY(-50%);
    color: #9ca3af;
    font-size: 1.125rem;
    pointer-events: none;
}

.input-field {
    width: 100%;
    padding: 1rem 1.25rem 1rem 3.5rem;
    background: rgba(17, 24, 39, 0.5);
    border: 1px solid #374151;
    border-radius: 0.75rem;
    color: #f3f4f6;
    font-size: 0.9375rem;
    font-family: 'Poppins', sans-serif;
    transition: all 0.25s ease;
    outline: none;
}

.input-field::placeholder {
    color: #6b7280;
}

.input-field:focus {
    border-color: #1d7cfe;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.25);
    background: rgba(17, 24, 39, 0.7);
}

.input-toggle {
    position: absolute;
    right: 1.25rem;
    top: 50%;
    transform: translateY(-50%);
    color: #9ca3af;
    background: none;
    border: none;
    cursor: pointer;
    font-size: 1rem;
    transition: color 0.2s;
}

.input-toggle:hover {
    color: #fff;
}

/* Form Row (checkbox + forgot) */
.form-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 0.75rem;
}

.checkbox-group {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.checkbox-group input[type="checkbox"] {
    width: 1rem;
    height: 1rem;
    accent-color: #1d7cfe;
    border-radius: 0.25rem;
    cursor: pointer;
}

.checkbox-group label {
    color: #d1d5db;
    font-size: 0.8125rem;
    cursor: pointer;
}

.forgot-link {
    color: #9ca3af;
    font-size: 0.8125rem;
    transition: all 0.2s;
}

.forgot-link:hover {
    color: #1d7cfe;
    text-decoration: underline;
}

/* ---------- SUBMIT ROW ---------- */
.submit-row {
    position: relative;
    margin-bottom: 1.5rem;
}

/* Loading Spinner */
.loading-spinner {
    display: none;
    position: absolute;
    top: 50%;
    right: 1.5rem;
    transform: translateY(-50%);
}

.loading-spinner.active {
    display: block;
}

.spinner-circle {
    width: 1.5rem;
    height: 1.5rem;
    border: 2px solid rgba(255, 255, 255, 0.3);
    border-top-color: #fff;
    border-radius: 50%;
    animation: spin 0.7s linear infinite;
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

/* ---------- DIVIDER ---------- */
.divider {
    position: relative;
    margin: 2rem 0;
}

.divider::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 50%;
    border-top: 1px solid #374151;
}

.divider-text {
    position: relative;
    display: flex;
    justify-content: center;
}

.divider-text span {
    background: transparent;
    padding: 0 1rem;
    color: #9ca3af;
    font-size: 0.8125rem;
}

/* ---------- SOCIAL BUTTONS ROW ---------- */
.social-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
    margin-bottom: 2rem;
}

.social-row .fa-google {
    color: #f87171;
}

.social-row .fa-microsoft {
    color: #60a5fa;
}

/* ---------- FOOTER LINKS ---------- */
.signup-prompt {
    text-align: center;
    color: #9ca3af;
    font-size: 0.8125rem;
}

.signup-prompt a {
    color: #1d7cfe;
    font-weight: 600;
    transition: color 0.2s;
}

.signup-prompt a:hover {
    color: #fff;
    text-decoration: underline;
}

/* ---------- BOTTOM LEGAL ---------- */
.legal-footer {
    text-align: center;
    margin-top: 2rem;
    color: #6b7280;
    font-size: 0.8125rem;
}

.legal-footer p {
    margin-bottom: 0;
}

.legal-footer a {
    color: #9ca3af;
    transition: color 0.2s;
}

.legal-footer a:hover {
    color: #fff;
}

.legal-footer p + p {
    margin-top: 0.5rem;
}

/* ---------- FLOATING DECORATIVE ELEMENTS ---------- */
.float-orb {
    position: absolute;
    border-radius: 50%;
    pointer-events: none;
}

.float-orb.orb-sm  { width: 0.75rem;  height: 0.75rem;  }
.float-orb.orb-md  { width: 1.25rem;  height: 1.25rem;  }
.float-orb.orb-lg  { width: 2rem;     height: 2rem;     }
.float-orb.orb-xl  { width: 3rem;     height: 3rem;     }

.float-orb.orb-white   { background: #fff; }
.float-orb.orb-blue    { background: #60a5fa; }
.float-orb.orb-cyan    { background: #22d3ee; }
.float-orb.orb-gblue   { background: linear-gradient(135deg, #3b82f6, #22d3ee); }

/* Positioning helpers */
.pos-tl { top: 1.25rem;  left: 2.5rem;  }
.pos-tr { top: 5rem;     right: 2.5rem; }
.pos-br { bottom: 5rem;  right: 2.5rem; }
.pos-bl { bottom: 5rem;  left: 2.5rem;  }
.pos-tm { top: 33%;      right: 2.5rem; }
.pos-bm { bottom: 25%;   right: 5rem;   }

/* ---------- ANIMATIONS ---------- */
.floating {
    animation: floating 3s ease-in-out infinite;
}

@keyframes floating {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-10px); }
}

.slide-up {
    animation: slideUp 0.8s ease both;
}

@keyframes slideUp {
    from {
        transform: translateY(30px);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

.pulse-ring {
    animation: pulse-ring 2s infinite;
}

@keyframes pulse-ring {
    0%   { box-shadow: 0 0 0 0 rgba(29, 124, 254, 0.4); }
    70%  { box-shadow: 0 0 0 12px rgba(29, 124, 254, 0); }
    100% { box-shadow: 0 0 0 0 rgba(29, 124, 254, 0); }
}

/* Animation delays */
.delay-100 { animation-delay: 0.1s; }
.delay-200 { animation-delay: 0.2s; }
.delay-300 { animation-delay: 0.3s; }
.delay-500 { animation-delay: 0.5s; }
.delay-1000{ animation-delay: 1s; }
.delay-1200{ animation-delay: 1.2s; }

/* ---------- ALERT MESSAGES ---------- */
.alert {
    padding: 1rem;
    border-radius: 0.75rem;
    font-size: 0.8125rem;
    margin-bottom: 1rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    animation: slideUp 0.4s ease;
}

.alert-error {
    background: rgba(127, 29, 29, 0.3);
    color: #fca5a5;
    border: 1px solid rgba(153, 27, 27, 0.6);
}

.alert-success {
    background: rgba(20, 83, 45, 0.3);
    color: #86efac;
    border: 1px solid rgba(22, 101, 52, 0.6);
}

/* ---------- UTILITY ---------- */
.hidden {
    display: none !important;
}

.text-blue {
    color: #1d7cfe;
}

.text-white {
    color: #fff;
}

/* ---------- RESPONSIVE ---------- */
@media (max-width: 1023px) {
    .login-left {
        display: none;
    }
    
    .login-right {
        padding: 1rem;
    }
    
    .brand-title {
        font-size: 2.25rem;
    }

    .login-card {
        padding: 1.5rem;
    }
}

@media (max-width: 480px) {
    .social-row {
        grid-template-columns: 1fr;
    }
    
    .login-right {
        padding: 0.75rem;
    }
    
    .login-card {
        padding: 1.25rem;
        border-radius: 1.25rem;
    }
}
