.login-page{min-height:100vh;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:transparent;position:relative;overflow:hidden}.login-page:before{inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");opacity:.4}.login-page:after,.login-page:before{content:"";position:absolute;pointer-events:none;z-index:0}.login-page:after{bottom:-20%;right:-10%;width:600px;height:600px;background:radial-gradient(circle,rgba(21,205,121,.06) 0,transparent 70%)}.login-card{position:relative;z-index:1;width:509px;max-width:90%;padding:56px 35px 40px;border-radius:var(--radius-lg);backdrop-filter:var(--glass-blur-lg);-webkit-backdrop-filter:var(--glass-blur-lg);background:linear-gradient(141deg,rgba(16,16,16,.27),rgba(23,23,23,.27) 50%,rgba(29,56,50,.27));box-shadow:inset 0 1px 0 rgba(255,255,255,.4),inset 1px 0 0 rgba(255,255,255,.32),inset 0 -1px 21px rgba(0,0,0,.19),inset -1px 0 21px rgba(0,0,0,.15),0 24px 64px rgba(0,0,0,.5);border:1px solid transparent;background-clip:padding-box;animation:fadeInUp .5s ease forwards}.login-card:before{content:"";position:absolute;inset:0;padding:1px;border-radius:var(--radius-lg);background:linear-gradient(136deg,rgba(77,93,83,1),rgba(20,93,60,1));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;z-index:1}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.logo-wrapper{display:flex;justify-content:center;margin-bottom:34px}.logo-wrapper img{width:210px;height:auto;-o-object-fit:contain;object-fit:contain}.form-group{margin-bottom:18px;position:relative}.form-label{display:block;font-size:12px;letter-spacing:.55px;color:var(--text-primary);margin-bottom:8px}.input-wrapper{position:relative;display:flex;align-items:center}.input-icon{position:absolute;left:13px;width:16px;height:16px;color:var(--text-muted);pointer-events:none;z-index:2}.form-input{width:100%;height:44px;padding:0 44px 0 41px;border-radius:var(--radius-md);border:1px solid var(--border-medium);background:var(--surface-glass-2);font-size:14px;color:var(--text-primary);outline:none;transition:border-color .2s,box-shadow .2s}.form-input::-moz-placeholder{color:var(--text-muted)}.form-input::placeholder{color:var(--text-muted)}.form-input:focus{border-color:var(--border-accent);box-shadow:var(--glow-primary)}.toggle-password{position:absolute;right:13px;background:none;border:none;cursor:pointer;padding:0;color:var(--text-muted);display:flex;align-items:center;z-index:2;transition:color .2s}.toggle-password:hover{color:var(--text-secondary)}.error-msg{margin-top:4px;font-size:13px;color:var(--status-danger-text);text-align:center;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.btn-submit{width:100%;height:44px;margin-top:24px;border:none;border-radius:var(--radius-md);background:var(--color-green-gradient);box-shadow:0 1px 2px rgba(0,0,0,.05);font-size:15px;color:#ffffff;cursor:pointer;transition:opacity .2s,transform .15s;display:flex;align-items:center;justify-content:center;gap:8px}.btn-submit:hover:not(:disabled){opacity:.92;transform:translateY(-1px)}.btn-submit:active:not(:disabled){transform:translateY(0)}.btn-submit:disabled{opacity:.7;cursor:not-allowed}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#ffffff;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.forgot-row{text-align:right;margin-top:6px}.forgot-link{font-size:13px;color:var(--text-muted);text-decoration:none;transition:color .2s}.forgot-link:hover{color:var(--status-success-text)}.login-footer{position:relative;z-index:1;margin-top:32px;text-align:center;font-size:14px;color:var(--text-secondary);letter-spacing:0}