:root{--navy-abyss:#050914;--navy-deep:#0a1120;--navy:#0e1626;--navy-soft:#121d31;--line:#1e2c47;--line-bright:#2a3f66;--ink:#e8eefb;--ink-dim:#9db0d0;--ink-faint:#5f7196;--accent:#38bdf8;--accent-soft:#7dd3fc;--accent-deep:#0ea5e9;--danger:#f2698c;--radius:14px;--font:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%}body{background:var(--navy-abyss);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased}.splash-frame{inset:0;border:0}.frame-msg,.splash-frame{position:fixed;width:100vw;height:100vh;background:var(--navy-abyss)}.frame-msg{top:0;left:0;right:0;bottom:0;color:var(--ink-faint);font-size:14px;letter-spacing:.04em;z-index:50}.frame-loading,.frame-msg{display:flex;align-items:center;justify-content:center}.frame-loading{flex-direction:column;gap:18px}.frame-logo{width:72px;height:72px;border-radius:17px;object-fit:cover;box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent),0 0 34px -6px color-mix(in srgb,var(--accent) 55%,transparent);animation:framePulse 1.8s ease-in-out infinite}@keyframes framePulse{0%,to{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.04)}}.login-shell{position:relative;min-height:100vh;display:grid;place-items:center;padding:24px;overflow:hidden}.login-shell:before{background:radial-gradient(620px 420px at 50% 34%,color-mix(in srgb,var(--accent) 12%,transparent),transparent 70%),radial-gradient(900px 700px at 50% 120%,color-mix(in srgb,var(--accent-deep) 10%,transparent),transparent 65%)}.login-shell:after,.login-shell:before{content:"";position:absolute;inset:0;pointer-events:none;transform:translateZ(0)}.login-shell:after{background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:46px 46px;mask-image:radial-gradient(680px 520px at 50% 42%,#000 10%,transparent 72%);-webkit-mask-image:radial-gradient(680px 520px at 50% 42%,#000 10%,transparent 72%);opacity:.28}.login-card{position:relative;z-index:1;width:100%;max-width:372px;padding:40px 34px 30px;background:linear-gradient(180deg,color-mix(in srgb,var(--navy) 96%,transparent),color-mix(in srgb,var(--navy-deep) 97%,transparent));border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 1px 0 color-mix(in srgb,var(--accent) 22%,transparent) inset,0 30px 80px -40px #000}.mark-logo{display:block;width:76px;height:76px;margin:0 auto 20px;border-radius:18px;object-fit:cover;box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent),0 0 34px -6px color-mix(in srgb,var(--accent) 55%,transparent)}.brand{text-align:center;font-size:25px;font-weight:700;letter-spacing:-.01em;margin:0 0 4px}.brand .dot{color:var(--accent)}.tagline{text-align:center;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 30px}.field{margin-bottom:15px}.field label{display:block;font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:7px}.field input{width:100%;padding:12px 13px;font:inherit;font-size:15px;color:var(--ink);background:var(--navy-abyss);border:1px solid var(--line);border-radius:9px;outline:none;transition:border-color .16s ease,box-shadow .16s ease}.field input::placeholder{color:color-mix(in srgb,var(--ink-faint) 75%,transparent)}.field input:focus{border-color:var(--accent-deep);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}.submit{width:100%;margin-top:8px;padding:13px 16px;font:inherit;font-size:14px;font-weight:650;letter-spacing:.01em;color:#04121d;background:linear-gradient(180deg,var(--accent-soft),var(--accent-deep));border:0;border-radius:9px;cursor:pointer;transition:filter .16s ease,transform .06s ease}.submit:hover{filter:brightness(1.06)}.submit:active{transform:translateY(1px)}.submit:disabled{filter:grayscale(.4) brightness(.8);cursor:default}.error{margin:4px 0 16px;padding:10px 12px;font-size:13px;line-height:1.4;color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent);border:1px solid color-mix(in srgb,var(--danger) 35%,transparent);border-radius:8px}