.login{background:var(--paper);grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:100vh;display:grid}.login-pane{flex-direction:column;gap:32px;min-height:100vh;padding:36px 48px;display:flex}.login-card{gap:24px;width:min(380px,100%);margin:auto;display:grid}.login-brand{color:#1a1a1a;align-items:flex-end;gap:8px;display:flex}.login-form{gap:16px;display:grid}.login-form h1{letter-spacing:-.02em;font-size:2rem;line-height:1.15}.login-visual{background:#e8eaed;border-radius:20px;margin:16px 16px 16px 0;position:relative;overflow:hidden}.login-visual-img{object-fit:cover}.login-visual:after{content:"";pointer-events:none;background:linear-gradient(#fff0 45%,#ffffffd9);position:absolute;inset:0}.login-visual-text{z-index:1;color:#1a1a1a;gap:20px;padding:48px;display:grid;position:absolute;bottom:0;left:0;right:0}.login-tagline{letter-spacing:-.025em;max-width:13ch;font-size:clamp(2rem,3.2vw,2.9rem);font-weight:600;line-height:1.1}.login-points{color:#2b2f30;gap:8px;margin:0;padding:0;font-size:.95rem;list-style:none;display:grid}.login-points li{align-items:center;gap:10px;display:flex}.login-points .icon{color:var(--accent)}@media (max-width:960px){.login{grid-template-columns:1fr}.login-visual{display:none}.login-pane{padding:24px 20px}}.login-form .muted{font-size:.92rem}.login-form strong{color:var(--ink);overflow-wrap:anywhere;font-weight:600}.login-form .field input{padding:11px 14px;font-size:1rem}.login-links{flex-wrap:wrap;justify-content:space-between;gap:12px;display:flex}.login-foot{flex-wrap:wrap;align-items:center;gap:6px 20px;font-size:.82rem;display:flex}.login-legal{gap:16px;display:flex}.login-legal a{color:var(--graphite);text-decoration:none}.login-legal a:hover{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.login-divider{color:var(--graphite);align-items:center;gap:12px;margin:4px 0 0;font-size:.85rem;display:flex}.login-divider:before,.login-divider:after{content:"";background:var(--line);flex:1;height:1px}.login-providers{gap:10px;display:grid}.login-provider{border:1px solid var(--line);background:var(--paper);height:44px;color:var(--ink);border-radius:8px;justify-content:center;align-items:center;gap:10px;font-weight:500;text-decoration:none;display:flex}.login-provider:hover{border-color:var(--graphite);background:var(--soft)}.login-provider:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.login-provider.is-disabled{pointer-events:none;opacity:.5}.login-provider-hint{text-align:center;margin:-4px 0 0}.code-boxes{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;display:grid}.code-box{aspect-ratio:1/1.1;border:1px solid var(--line);background:var(--paper);width:100%;font-family:var(--font-mono), ui-monospace, monospace;text-align:center;color:var(--ink);caret-color:var(--accent);border-radius:10px;padding:0;font-size:1.5rem}.code-box:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg);outline:none}.code-box:disabled{background:var(--soft);color:var(--graphite)}.login-checking{align-items:center;gap:8px;margin:0;display:inline-flex}.toast-region{z-index:100;pointer-events:none;justify-content:center;padding:0 16px;display:flex;position:fixed;top:16px;left:0;right:0}.toast{pointer-events:auto;border:1px solid var(--line);background:var(--paper);width:min(440px,100%);color:var(--ink);border-radius:0;grid-template-columns:auto 1fr auto;align-items:start;gap:10px;padding:12px 10px 15px 14px;animation:.18s ease-out toast-in;display:grid;position:relative;overflow:hidden;box-shadow:0 12px 40px #0000001f}.toast p{margin:0;font-size:.9rem;line-height:1.45}.toast-error .toast-icon{color:var(--stop);margin-top:1px}.toast-close{width:24px;height:24px;color:var(--graphite);cursor:pointer;background:0 0;border:0;border-radius:0;place-items:center;padding:0;display:grid}.toast-close:hover{background:var(--mist);color:var(--ink)}.toast-timer{background:var(--ink);transform-origin:0;height:3px;animation:5s linear forwards toast-timer;position:absolute;bottom:0;left:0;right:0}.toast-error .toast-timer{background:var(--stop)}.toast:hover .toast-timer,.toast:focus-within .toast-timer{animation-play-state:paused}.toast.is-leaving{animation:.16s ease-in forwards toast-out}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}@keyframes toast-out{to{opacity:0;transform:translateY(-8px)}}@keyframes toast-timer{0%{transform:scaleX(1)}to{transform:scaleX(0)}}

