*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: system-ui, -apple-system, sans-serif; font-size: 0.9rem; color: #111827; background: #f0fdf4; min-height: 100vh; display: flex; align-items: center; justify-content: center; } /* ── Page ── */ .page { width: 100%; padding: 1.5rem; display: flex; justify-content: center; align-items: center; min-height: 100vh; } /* ── Card ── */ .card { background: #ffffff; border: 1px solid #e5e7eb; border-radius: 0.75rem; padding: 2.5rem 2rem; width: 100%; max-width: 380px; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06); display: flex; flex-direction: column; gap: 1.25rem; } /* ── Logo ── */ .logo { display: flex; flex-direction: column; align-items: center; gap: 0.4rem; } .logo svg { width: 52px; height: 60px; } .logo-name { font-size: 1.3rem; font-weight: 800; color: #111827; letter-spacing: -0.02em; } /* ── Titles ── */ .title { font-size: 1.1rem; font-weight: 700; color: #111827; text-align: center; } .subtitle { font-size: 0.85rem; color: #6b7280; text-align: center; line-height: 1.5; } /* ── Alert ── */ .alert { padding: 0.65rem 0.875rem; border-radius: 0.5rem; font-size: 0.85rem; line-height: 1.4; } .alert--error { background: #fef2f2; color: #dc2626; border: 1px solid #fecaca; } .alert--warning { background: #fffbeb; color: #d97706; border: 1px solid #fde68a; } .alert--success { background: #f0fdf4; color: #16a34a; border: 1px solid #bbf7d0; } .alert--info { background: #eff6ff; color: #2563eb; border: 1px solid #bfdbfe; } /* ── Form fields ── */ .field { display: flex; flex-direction: column; gap: 0.375rem; } .field-label-row { display: flex; justify-content: space-between; align-items: baseline; } .field label { font-size: 0.85rem; font-weight: 500; color: #374151; } .field input { width: 100%; padding: 0.55rem 0.75rem; border: 1px solid #d1d5db; border-radius: 0.5rem; font-size: 0.9rem; color: #111827; background: #ffffff; outline: none; transition: border-color 0.15s, box-shadow 0.15s; } .field input:focus { border-color: #2F855A; box-shadow: 0 0 0 3px rgba(47, 133, 90, 0.15); } .field input:disabled { background: #f3f4f6; color: #9ca3af; cursor: not-allowed; } .forgot-link { font-size: 0.78rem; color: #2F855A; text-decoration: none; } .forgot-link:hover { text-decoration: underline; } /* ── Remember me ── */ .remember { display: flex; align-items: center; gap: 0.5rem; } .remember input[type="checkbox"] { width: 1rem; height: 1rem; accent-color: #2F855A; cursor: pointer; flex-shrink: 0; } .remember label { font-size: 0.85rem; color: #374151; cursor: pointer; } /* ── Primary button ── */ .btn-primary { width: 100%; padding: 0.6rem; background: #2F855A; color: #ffffff; font-size: 0.9rem; font-weight: 600; border: none; border-radius: 0.5rem; cursor: pointer; transition: background 0.15s; } .btn-primary:hover { background: #276749; } .btn-primary:active { background: #1e5236; } /* ── Divider ── */ .divider { display: flex; align-items: center; gap: 0.75rem; color: #9ca3af; font-size: 0.8rem; } .divider::before, .divider::after { content: ''; flex: 1; border-top: 1px solid #e5e7eb; } /* ── Social buttons ── */ .socials { display: flex; flex-direction: column; gap: 0.5rem; } .btn-social { display: block; width: 100%; padding: 0.55rem; text-align: center; font-size: 0.875rem; font-weight: 500; color: #374151; background: #ffffff; border: 1px solid #d1d5db; border-radius: 0.5rem; text-decoration: none; transition: background 0.1s, border-color 0.1s; } .btn-social:hover { background: #f3f4f6; border-color: #9ca3af; } /* ── Register link ── */ .register-link { text-align: center; font-size: 0.83rem; color: #6b7280; } .register-link a { color: #2F855A; text-decoration: none; font-weight: 500; } .register-link a:hover { text-decoration: underline; }