*{box-sizing:border-box;margin:0;padding:0}body{background:linear-gradient(135deg,#f8f9fa,#fff 50%,#f8f9fa);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;min-height:100vh;overflow-x:hidden;position:relative}#demo-canvas{filter:blur(80px);opacity:.05}#login{align-items:center;display:flex;justify-content:center;min-height:100vh;padding:2rem 1rem;position:relative}#login .container{max-width:1200px;width:100%}#login .logo{animation:float 3s ease-in-out infinite;background:#fff;border:2px solid rgba(0,0,0,.05);border-radius:20px;box-shadow:0 10px 40px rgba(0,0,0,.1);object-fit:contain;padding:1.2rem}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}#login-box{animation:slideUp .6s ease-out;background:#fff;border:1px solid rgba(0,0,0,.06);border-radius:24px;box-shadow:0 20px 60px rgba(0,0,0,.08),0 0 1px rgba(0,0,0,.05);overflow:hidden;padding:3rem 2.5rem;position:relative}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}#login-box:before{animation:shine 3s infinite;background:linear-gradient(90deg,transparent,#0d6efd,transparent);content:"";height:2px;left:-100%;position:absolute;top:0;width:100%}@keyframes shine{0%{left:-100%}50%,to{left:100%}}#login-form h3{color:#000;font-size:1.75rem;font-weight:700;letter-spacing:-.02em;margin-bottom:2rem;padding-bottom:1rem;position:relative}#login-form h3:after{background:#0d6efd;border-radius:2px;bottom:0;content:"";height:3px;left:50%;position:absolute;transform:translateX(-50%);width:60px}.alert-danger{background:rgba(220,53,69,.1);border:1px solid rgba(220,53,69,.2);border-radius:12px;color:#dc3545;font-size:.9rem;padding:1rem}.alert-danger,.form-group{margin-bottom:1.5rem}.form-group label{color:#495057;display:block;font-size:.8rem;font-weight:600;letter-spacing:.05em;margin-bottom:.5rem;text-transform:uppercase}.form-control{background:#f8f9fa;border:1px solid #ced4da;border-radius:12px;color:#212529;font-size:.95rem;outline:none;padding:.875rem 1rem;transition:all .3s ease;width:100%}.form-control:focus{background:#fff;border-color:#0d6efd;box-shadow:0 0 0 3px rgba(13,110,253,.1),0 10px 25px rgba(0,0,0,.05);transform:translateY(-2px)}.form-control::placeholder{color:#6c757d}.register{color:#6c757d;display:block;font-size:.9rem;line-height:1.6;margin-bottom:1.5rem}.register a{color:#0d6efd;font-weight:600;position:relative;text-decoration:none;transition:all .2s ease}.register a:after{background:#0d6efd;bottom:-2px;content:"";height:2px;left:0;position:absolute;transition:width .3s ease;width:0}.register a:hover{color:#0a58ca}.btn-dark,.register a:hover:after{width:100%}.btn-dark{background:#000;border:none;border-radius:12px;box-shadow:0 4px 15px rgba(0,0,0,.2);color:#fff;cursor:pointer;font-size:1rem;font-weight:600;letter-spacing:.02em;overflow:hidden;padding:1rem;position:relative;transition:all .3s ease}.btn-dark:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.15),transparent);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.btn-dark:hover{background:#1a1a1a;box-shadow:0 8px 25px rgba(0,0,0,.25);transform:translateY(-2px)}.btn-dark:hover:before{left:100%}.btn-dark:active{box-shadow:0 4px 15px rgba(0,0,0,.2);transform:translateY(0)}@media (max-width:768px){#login-box{margin-top:60px!important;padding:2rem 1.5rem}#login-form h3{font-size:1.5rem;margin-bottom:1.5rem}.logo{height:80px!important;top:40px!important;width:80px!important}.form-control{font-size:.9rem;padding:.75rem}.register{font-size:.85rem}.btn-dark{font-size:.95rem;padding:.875rem}}@media (max-width:480px){#login{padding:1rem .5rem}#login-box{border-radius:20px;padding:1.5rem 1rem}#login-form h3{font-size:1.35rem}.logo{height:70px!important;top:30px!important;width:70px!important}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.btn-dark,.form-control{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}:focus-visible{outline:2px solid #0d6efd;outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}