:root{--color-primary:#635bff;--color-primary-hover:#4f46e5;--color-success:#0ea5e9;--color-success-muted:#e0f2fe;--color-warning:#f59e0b;--color-warning-muted:#fef3c7;--color-danger:#ef4444;--color-danger-muted:#fee2e2;--color-neutral:#64748b;--color-neutral-muted:#f1f5f9;--color-surface:#fff;--color-surface-elevated:#fff;--color-border:#e2e8f0;--color-border-subtle:#f1f5f9;--color-text:#0f172a;--color-text-secondary:#64748b;--color-text-muted:#94a3b8;--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--shadow-sm:0 1px 2px rgba(0,0,0,.05);--shadow-md:0 4px 6px -1px rgba(0,0,0,.07),0 2px 4px -2px rgba(0,0,0,.05);--shadow-lg:0 10px 15px -3px rgba(0,0,0,.08),0 4px 6px -4px rgba(0,0,0,.04)}*{padding:0;margin:0}body,html{max-width:100vw;overflow-x:hidden;width:100%}*,body,html{box-sizing:border-box}body{position:relative;width:100%;overflow-x:hidden;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--color-text);padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0)}.login-page-shell{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9 50%,#e2e8f0);padding:max(var(--space-6),env(safe-area-inset-top,0px)) max(var(--space-6),env(safe-area-inset-right,0px)) max(5.5rem,env(safe-area-inset-bottom,0px)) max(var(--space-6),env(safe-area-inset-left,0px));box-sizing:border-box}.login-card{width:100%;max-width:420px;background-color:var(--color-surface);padding:var(--space-8);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);border:1px solid var(--color-border);box-sizing:border-box}a{color:inherit;text-decoration:none}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes skeletonPulse{0%,to{opacity:1}50%{opacity:.5}}.skeleton-pulse{animation:skeletonPulse 1.5s ease-in-out infinite}