.login-shell{--void:#050505;--cream:#f2efe6;--cream-dim:hsla(45,32%,93%,.55);--cream-mute:hsla(45,32%,93%,.3);--hair:hsla(45,32%,93%,.1);--neon:#7df9ff;--red:#ff5e6c;--mono:var(--font-mono,"JetBrains Mono","Courier New",monospace);--display:var(--font-bodoni,"Bodoni Moda","Times New Roman",serif);position:relative;min-height:100vh;width:100%;background:radial-gradient(ellipse at 50% 35%,rgba(125,249,255,.06) 0,transparent 60%),var(--void);color:var(--cream);font-family:var(--mono);display:flex;align-items:center;justify-content:center;padding:2rem 1.5rem;overflow:hidden}body:has(.login-shell){overflow:auto}.login-grid{z-index:0;background-image:linear-gradient(90deg,rgba(125,249,255,.05) 1px,transparent 0),linear-gradient(180deg,rgba(125,249,255,.05) 1px,transparent 0);background-size:48px 48px;-webkit-mask-image:radial-gradient(ellipse at center,#000 30%,transparent 85%);mask-image:radial-gradient(ellipse at center,#000 30%,transparent 85%)}.login-grain,.login-grid{position:fixed;inset:0;pointer-events:none}.login-grain{z-index:1;opacity:.08;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>")}.login-scan{inset:0;z-index:2;background:repeating-linear-gradient(180deg,hsla(0,0%,100%,0) 0,hsla(0,0%,100%,0) 2px,hsla(0,0%,100%,.012) 3px)}.login-corner,.login-scan{position:fixed;pointer-events:none}.login-corner{width:22px;height:22px;border-color:var(--cream-dim);z-index:30}.login-corner-tl{top:1rem;left:1rem;border-top:1px solid;border-left:1px solid}.login-corner-tr{top:1rem;right:1rem;border-top:1px solid;border-right:1px solid}.login-corner-bl{left:1rem;border-left:1px solid}.login-corner-bl,.login-corner-br{bottom:1rem;border-bottom:1px solid}.login-corner-br{right:1rem;border-right:1px solid}.login-card{position:relative;z-index:10;background:hsla(0,0%,100%,.03);border:1px solid var(--hair);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding:2.25rem 2rem 1.75rem;width:min(420px,100%)}.login-card:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(135deg,hsla(0,0%,100%,.05),transparent 50%)}.login-brand{text-align:center;margin-bottom:1.75rem;padding-bottom:1.5rem;border-bottom:1px solid var(--hair)}.login-wordmark{width:180px;height:auto;display:block;margin:0 auto .75rem;filter:drop-shadow(0 0 12px rgba(125,249,255,.18))}.login-sub{font-size:.52rem;letter-spacing:.4em;text-transform:uppercase;color:var(--cream-dim)}.login-form{gap:1.1rem}.login-field,.login-form{display:flex;flex-direction:column}.login-field{gap:.45rem}.login-label{font-size:.52rem;letter-spacing:.4em;text-transform:uppercase;color:var(--cream-mute)}.login-input{background:rgba(0,0,0,.4);border:1px solid var(--hair);color:var(--cream);padding:.7rem .85rem;font-family:var(--mono);font-size:.85rem;letter-spacing:.04em;outline:none;transition:border-color .2s,box-shadow .2s}.login-input:focus{border-color:var(--neon);box-shadow:0 0 0 1px rgba(125,249,255,.3),0 0 18px rgba(125,249,255,.15)}.login-error{font-size:.65rem;letter-spacing:.18em;color:var(--red);border-left:2px solid var(--red);padding:.5rem .75rem;background:rgba(255,94,108,.05)}.login-btn{margin-top:.25rem;background:transparent;border:1px solid var(--cream-dim);color:var(--cream);padding:.85rem 1rem;font-family:var(--mono);font-size:.6rem;letter-spacing:.4em;text-transform:uppercase;cursor:pointer;transition:all .2s}.login-btn:hover:not(:disabled){border-color:var(--neon);color:var(--neon);box-shadow:inset 0 0 24px rgba(125,249,255,.18),0 0 18px rgba(125,249,255,.15)}.login-btn:disabled{opacity:.5;cursor:not-allowed}.login-footer{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--hair);font-size:.5rem;letter-spacing:.5em;color:var(--cream-mute)}.login-dot{width:6px;height:6px;border-radius:50%;background:var(--neon);box-shadow:0 0 8px var(--neon);animation:loginPulse 1.6s ease-in-out infinite}@keyframes loginPulse{0%,to{opacity:.4}50%{opacity:1}}