body.login-page{color-scheme:light}
.login-page,.login-page *{box-sizing:border-box}
body.login-page{--login-bg:#edf2f7;--login-primary:#2563eb;--login-button:#2563eb;--login-text:#172033;--login-muted:#64748b;--login-card:#fff;--login-border:#e2e8f0;--login-error:#b42318;--login-card-alpha:96%;--login-radius:20px;--login-width:440px;--login-padding:32px;--login-shadow:0 20px 60px rgba(15,23,42,.20);min-height:100vh;margin:0;padding:clamp(14px,3vw,36px);display:grid;align-items:var(--login-card-position,center);justify-items:center;overflow-x:hidden;background:var(--login-bg);color:var(--login-text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;position:relative;isolation:isolate}
body.login-page:before{content:"";position:fixed;inset:0;z-index:-1;background-image:var(--login-page-image,none);background-position:var(--login-background-position,center);background-size:cover;background-repeat:no-repeat;pointer-events:none}
.login-shell{width:min(100%,var(--login-width));margin:0 auto;animation:login-appear .35s ease-out both}
.login-card{padding:var(--login-padding);border:1px solid var(--login-border);border-radius:var(--login-radius);background:var(--login-card);background:color-mix(in srgb,var(--login-card) var(--login-card-alpha),transparent);box-shadow:var(--login-shadow);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.login-logo-wrap{display:flex;margin:0 0 22px}.login-logo-wrap.left{justify-content:flex-start}.login-logo-wrap.center{justify-content:center}.login-logo-wrap.right{justify-content:flex-end}.login-logo{width:var(--login-logo-width,88px);height:auto;max-width:100%;max-height:130px;object-fit:contain}
.login-organization{text-align:center;color:var(--login-secondary,var(--login-muted));font-size:.82rem;font-weight:650;letter-spacing:.08em;text-transform:uppercase;margin:0 0 10px}.login-app-name{font-size:clamp(1rem,2vw,1.1rem);font-weight:750;text-align:center;margin:0 0 14px;letter-spacing:-.02em;color:var(--login-primary)}
.login-title{font-size:var(--login-title-size,30px);line-height:1.18;text-align:center;letter-spacing:-.035em;margin:0 0 10px}.login-subtitle{text-align:center;color:var(--login-muted);font-size:.96rem;line-height:1.55;margin:0 auto 22px;max-width:38ch}.login-welcome{color:var(--login-muted);text-align:center;line-height:1.5;margin:0 0 20px}.login-message{padding:12px 14px;border-radius:10px;margin:0 0 16px;font-size:.9rem;line-height:1.45}.login-message.error{color:var(--login-error);background:color-mix(in srgb,var(--login-error) 10%,white);border:1px solid color-mix(in srgb,var(--login-error) 24%,white)}.login-message.success{color:#166534;background:#dcfce7;border:1px solid #bbf7d0}
.login-form .field{margin:0 0 var(--login-field-spacing,16px)}.login-form label{display:block;font-size:.9rem;font-weight:650;margin:0 0 7px}.login-form input{display:block;width:100%;min-height:46px;margin:0;padding:12px 13px;border:1px solid var(--login-border);border-radius:10px;background:rgba(255,255,255,.92);color:#172033;font:inherit;box-shadow:0 1px 2px rgba(15,23,42,.03);transition:border-color .16s,box-shadow .16s;box-sizing:border-box}.login-form input:focus{outline:3px solid color-mix(in srgb,var(--login-primary) 24%,transparent);outline-offset:1px;border-color:var(--login-primary)}.login-password-row{display:flex;align-items:stretch;gap:8px}.login-password-row input{min-width:0;flex:1}.login-show-password{flex:0 0 auto;min-width:74px;border:1px solid var(--login-border);border-radius:10px;background:#f8fafc;color:#172033;padding:0 12px;cursor:pointer;font:inherit;font-size:.82rem}.login-submit{width:100%;min-height:48px;padding:13px 18px;border:0;border-radius:var(--login-button-radius,10px);background:var(--login-button);color:#fff;font:inherit;font-weight:700;cursor:pointer;box-shadow:0 5px 14px color-mix(in srgb,var(--login-button) 27%,transparent);transition:transform .15s,filter .15s,box-shadow .15s}.login-submit:hover{filter:brightness(1.06);transform:translateY(-1px)}.login-submit:focus-visible,.login-show-password:focus-visible,.login-links a:focus-visible{outline:3px solid color-mix(in srgb,var(--login-primary) 45%,transparent);outline-offset:3px}.login-submit:disabled{opacity:.75;cursor:wait;transform:none}.login-submit .spinner{display:none;width:14px;height:14px;margin-right:8px;border:2px solid rgba(255,255,255,.55);border-top-color:#fff;border-radius:50%;vertical-align:-2px;animation:login-spin .7s linear infinite}.login-submit[aria-busy="true"] .spinner{display:inline-block}.login-links{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin:18px 0 0;font-size:.88rem}.login-links a{color:var(--login-primary);text-decoration:none;font-weight:600}.login-links a:hover{text-decoration:underline}.login-footer{color:var(--login-muted);text-align:center;font-size:.84rem;line-height:1.5;margin:20px 0 0}.login-copyright{font-size:.76rem;opacity:.85;margin-top:8px}.login-version{font-size:.72rem;opacity:.7;margin-top:5px}.login-divider{height:1px;background:var(--login-border);margin:22px 0 0}body.login-page.login-theme-dark{color-scheme:dark;color:#e5e7eb!important}.login-theme-dark .login-card{background:#111827!important;color:#e5e7eb!important;border-color:#334155}.login-theme-dark .login-app-name,.login-theme-dark .login-title{color:#f8fafc}.login-theme-dark .login-organization{color:#94a3b8}.login-theme-dark .login-form input{background:#111827;color:#f8fafc;border-color:#475569}.login-theme-dark .login-show-password{background:#1e293b;color:#f8fafc;border-color:#475569}.login-theme-dark .login-message.error{background:#450a0a;color:#fecaca;border-color:#7f1d1d}
@keyframes login-appear{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes login-spin{to{transform:rotate(360deg)}}
@media(max-width:480px){body.login-page{padding:14px}.login-card{padding:22px 18px;border-radius:16px}.login-title{font-size:clamp(22px,var(--login-title-size,30px),30px)}.login-password-row{gap:6px}.login-show-password{min-width:66px;padding:0 8px}}
@media(prefers-reduced-motion:reduce){.login-shell,.login-submit,.login-form input{animation:none;transition:none}}
