/* Estilos partilhados das páginas de autenticação (login, registo, recuperação). */
body { margin:0; background:#F2F5F9; color:#12294F; font-family:"Archivo", system-ui, sans-serif; -webkit-font-smoothing:antialiased; }
a { color:#1180F0; text-decoration:none; }
@keyframes csFadeUp { from { opacity:0; transform:translateY(12px); } to { opacity:1; transform:none; } }
@keyframes csFloat { 0%, 100% { transform:translateY(0); } 50% { transform:translateY(-6px); } }
@keyframes csSpin { to { transform:rotate(360deg); } }
.cs-stagger > * { animation:csFadeUp .55s cubic-bezier(.2,.7,.2,1) both; }
.cs-stagger > *:nth-child(2) { animation-delay:.06s; }
.cs-stagger > *:nth-child(3) { animation-delay:.12s; }
.cs-stagger > *:nth-child(4) { animation-delay:.18s; }
.cs-stagger > *:nth-child(5) { animation-delay:.24s; }
.cs-login { min-height:100vh; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
.cs-login--wide { grid-template-columns:minmax(0,1.1fr) minmax(0,0.9fr); }
.cs-login-main { display:flex; flex-direction:column; padding:clamp(20px,4vw,48px) clamp(18px,5vw,72px); background:radial-gradient(700px 380px at 0% 0%, rgba(17,128,240,0.10), rgba(17,128,240,0) 60%), #F2F5F9; }
.cs-login-inner { width:100%; max-width:430px; margin:auto 0; padding:32px 0; }
.cs-login--wide .cs-login-inner { max-width:480px; padding:24px 0; }
.cs-login-aside { position:relative; overflow:hidden; display:flex; flex-direction:column; justify-content:center; padding:clamp(32px,5vw,72px); background:linear-gradient(150deg,#12294F 0%,#14336A 55%,#0E5BB0 120%); color:#fff; }
.cs-login-aside::before, .cs-login-aside::after { content:""; position:absolute; border-radius:50%; pointer-events:none; }
.cs-login-aside::before { width:420px; height:420px; right:-140px; top:-140px; background:radial-gradient(circle,rgba(17,128,240,.55),rgba(17,128,240,0) 70%); }
.cs-login-aside::after { width:360px; height:360px; left:-120px; bottom:-160px; background:radial-gradient(circle,rgba(127,186,248,.30),rgba(127,186,248,0) 70%); }
.lg-glass { position:relative; z-index:1; background:rgba(255,255,255,0.08); border:1px solid rgba(255,255,255,0.14); backdrop-filter:blur(10px); border-radius:24px; animation:csFloat 6s ease-in-out infinite; }
.lg-card { display:grid; gap:16px; background:#fff; border:1px solid rgba(18,41,79,0.06); border-radius:24px; padding:clamp(20px,3vw,32px); box-shadow:0 6px 30px rgba(18,41,79,0.10); }
.lg-label { display:grid; gap:8px; font-size:12px; font-weight:700; letter-spacing:0.06em; text-transform:uppercase; }
.lg-field { position:relative; display:flex; align-items:center; }
.lg-field > svg { position:absolute; left:15px; color:#8A93A3; pointer-events:none; }
.lg-input, .lg-select { font-family:inherit; font-size:15px; font-weight:400; letter-spacing:0; text-transform:none; color:#12294F; background:#F7F9FC; border:1.5px solid #DCE4EE; border-radius:14px; padding:13px 15px 13px 44px; width:100%; box-sizing:border-box; min-height:48px; transition:border-color .18s ease, background-color .18s ease, box-shadow .18s ease; }
.lg-input:focus, .lg-select:focus { outline:none; border-color:#1180F0; background:#fff; box-shadow:0 0 0 4px rgba(17,128,240,0.14); }
.lg-grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.lg-toggle { position:absolute; right:4px; border:0; background:transparent; color:#0C5FB4; font-family:inherit; font-size:12.5px; font-weight:700; letter-spacing:0; text-transform:none; padding:0 14px; min-height:44px; cursor:pointer; border-radius:999px; }
.lg-toggle:hover { background:#E6F0FE; }
.lg-submit { display:flex; align-items:center; justify-content:center; gap:10px; border:0; border-radius:999px; background:linear-gradient(135deg,#1180F0,#0C5FB4); color:#fff; font-family:inherit; font-size:15px; font-weight:700; padding:0 22px; min-height:52px; cursor:pointer; box-shadow:0 8px 22px rgba(17,128,240,0.35); transition:box-shadow .2s ease, transform .12s ease; }
.lg-submit:hover { box-shadow:0 12px 28px rgba(17,128,240,0.45); }
.lg-submit:active { transform:scale(.97); }
.lg-submit:disabled { opacity:.8; cursor:progress; }
.lg-spinner { display:none; width:16px; height:16px; border-radius:50%; border:2px solid rgba(255,255,255,0.4); border-top-color:#fff; animation:csSpin .7s linear infinite; }
.lg-submit.loading .lg-spinner { display:inline-block; }
.lg-error { margin:0; background:#FBE7E4; color:#8A2417; border-radius:14px; padding:12px 14px; font-size:13.5px; font-weight:600; }
.lg-info { margin:0; background:#E3F4EA; color:#14532D; border-radius:14px; padding:12px 14px; font-size:13.5px; font-weight:600; }
.lg-hint { font-size:11.5px; color:#8A93A3; font-weight:500; text-transform:none; letter-spacing:0; }
.lg-link-row { display:flex; justify-content:flex-end; margin-top:-6px; font-size:13px; }
.lg-eyebrow { font-size:12.5px; font-weight:600; letter-spacing:0.08em; text-transform:uppercase; color:#1180F0; margin:0 0 10px; }
.lg-title { font-weight:800; font-size:clamp(28px,3.6vw,40px); line-height:1.08; letter-spacing:-0.025em; margin:0 0 10px; }
.lg-lead { font-size:14.5px; line-height:1.6; color:#5A6577; margin:0 0 24px; }
.lg-foot { text-align:center; font-size:13.5px; margin-top:16px; margin-bottom:4px; color:#5A6577; }
@media (max-width: 960px) {
    .cs-login, .cs-login--wide { grid-template-columns:minmax(0,1fr); }
    .cs-login-aside { display:none; }
    .lg-grid-2 { grid-template-columns:1fr; }
}
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
}
