.ff-login-page{min-height:100vh;display:flex;flex-direction:column}.ff-login-main{flex:1;padding:1rem 0 4rem}.ff-login-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:4rem;align-items:start;padding-top:2.5rem}@media(max-width:900px){.ff-login-grid{grid-template-columns:1fr;gap:2.5rem;padding-top:1.5rem}}.ff-login-form-col{max-width:26rem;width:100%}.ff-login-eyebrow{font-family:var(--mono);font-size:.6875rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted);font-weight:500;margin:0 0 1rem}.ff-login-page .auth-header{margin:0 0 2rem;text-align:left}.ff-login-page .auth-title{font-family:var(--sans);font-size:2rem;font-weight:600;letter-spacing:-.02em;line-height:1.1;color:var(--ink);margin:0 0 .5rem;text-align:left}.ff-login-page .auth-description{font-size:.9375rem;color:var(--ink-soft);margin:0;line-height:1.55;text-align:left}.ff-form{display:flex;flex-direction:column;gap:1.125rem}.ff-field{display:flex;flex-direction:column;gap:.4375rem}.ff-field-row{display:flex;gap:.75rem}.ff-field-row .ff-field{flex:1}.ff-label-row{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}.ff-label{font-family:var(--mono);font-size:.6875rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);font-weight:500}.ff-input{width:100%;padding:.6875rem .875rem;background:var(--bg);border:1px solid var(--rule);border-radius:6px;font-family:var(--sans);font-size:.9375rem;color:var(--ink);transition:border-color .15s,box-shadow .15s;-webkit-appearance:none;appearance:none}.ff-input::placeholder{color:var(--ink-muted)}.ff-input:hover{border-color:color-mix(in oklab,var(--ink) 25%,var(--rule))}.ff-input:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 2px color-mix(in oklab,var(--accent) 18%,transparent)}.ff-input[aria-invalid=true]{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}.forgot-link{font-size:.75rem;color:var(--ink-soft);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--rule);transition:color .15s,text-decoration-color .15s;cursor:pointer;background:none;border:0;padding:0;font-family:inherit}.forgot-link:hover{color:var(--accent);text-decoration-color:var(--accent)}.ff-btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.75rem 1.25rem;border-radius:6px;font-family:var(--sans);font-weight:500;font-size:.9375rem;cursor:pointer;border:1px solid transparent;transition:background .15s,color .15s,border-color .15s}.ff-btn-primary{background:var(--ink);color:var(--bg)}.ff-btn-primary:hover{background:var(--ink-hover)}.ff-btn-primary[aria-busy=true]{opacity:.7;cursor:progress}.ff-auth-message{font-size:.8125rem;color:var(--ink-soft);line-height:1.5;min-height:0}.ff-auth-message:empty{display:none}.ff-auth-message a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.ff-login-switch{margin:1.5rem 0 0;font-size:.8125rem;color:var(--ink-soft)}.ff-login-switch a{color:var(--ink);font-weight:500;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--rule)}.ff-login-switch a:hover{color:var(--accent);text-decoration-color:var(--accent)}.pw-strength{margin-top:.5rem}.pw-strength-bar{height:4px;background:var(--bg-2);border-radius:2px;overflow:hidden}.pw-strength-fill{display:block;height:100%;width:0;background:var(--accent);transition:width .2s ease,background .2s ease}.pw-strength-hint{margin:.375rem 0 0;font-size:.6875rem;color:var(--ink-muted);letter-spacing:.01em}.pw-wrap{position:relative;display:block}.pw-wrap .ff-input{padding-right:2.625rem}.pw-toggle{position:absolute;top:50%;right:.4375rem;transform:translateY(-50%);width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:0;cursor:pointer;color:var(--ink-muted);border-radius:4px;transition:color .15s,background .15s}.pw-toggle:hover{color:var(--ink);background:var(--bg-2)}.pw-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.pw-toggle .pw-eye-off,.pw-toggle.is-shown .pw-eye{display:none}.pw-toggle.is-shown .pw-eye-off{display:inline-block}.pw-caps-warn{margin:.4375rem 0 0;font-family:var(--mono);font-size:.6875rem;letter-spacing:.05em;color:var(--accent);display:flex;align-items:center;gap:.375rem}.pw-caps-warn:before{content:"";width:.4375rem;height:.4375rem;border-radius:50%;background:var(--accent);flex-shrink:0}.ff-alert{margin:0 0 1.5rem;padding:.875rem 1rem;background:var(--bg-2);border:1px solid var(--rule);border-radius:6px;color:var(--ink-soft);font-size:.875rem;line-height:1.55}.ff-alert strong{color:var(--ink);font-weight:600}.ff-alert a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.ff-login-deal{position:sticky;top:1.5rem;max-width:32rem}@media(max-width:900px){.ff-login-deal{position:static}}.ff-login-deal-eyebrow{display:flex;align-items:center;gap:.5rem;margin:0 0 1rem;font-family:var(--mono);font-size:.75rem;letter-spacing:.01em;color:var(--ink-muted)}.ff-login-deal-eyebrow strong{color:var(--ink);font-weight:500}.ff-pulse{display:inline-block;width:6px;height:6px;background:var(--live);border-radius:50%;animation:ff-login-pulse 2s ease-out infinite;flex-shrink:0}@keyframes ff-login-pulse{50%{opacity:.4}}@media(prefers-reduced-motion:reduce){.ff-pulse{animation:none}}.ff-login-page .deal-preview-card{display:flex;flex-direction:column;gap:1rem;padding:1.25rem;border:1px solid var(--rule);border-radius:8px;background:var(--bg);transition:background .15s,border-color .15s;min-width:0}.ff-login-page .deal-preview-card[role=link]{cursor:pointer}.ff-login-page .deal-preview-card[role=link]:hover{border-color:color-mix(in oklab,var(--ink) 25%,var(--rule))}.ff-login-page .deal-preview-card[role=link]:hover .deal-product-image{background:var(--bg)}.ff-login-page .deal-preview-card[role=link]:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.ff-login-page .deal-product-image{width:100%!important;height:220px!important;background:var(--bg-2);border-radius:4px;display:flex;align-items:center;justify-content:center;padding:1.5rem;overflow:hidden;transition:background .15s}.ff-login-page .deal-product-image img{max-width:100%!important;max-height:100%!important;width:auto!important;height:auto!important;margin:0!important;border-radius:0!important;object-fit:contain!important}.ff-login-page .deal-product-details,.deal-product-details{min-width:0}.deal-product-details .deal-product-title{font-family:var(--sans);font-size:1rem;font-weight:500;letter-spacing:-.01em;line-height:1.35;color:var(--ink);margin:0 0 .75rem}.deal-product-details .deal-price-section{display:flex;align-items:baseline;gap:.625rem;font-family:var(--mono);margin:0 0 .625rem}.deal-product-details .original-price{font-size:.8125rem;color:var(--ink-muted);text-decoration:line-through}.deal-product-details .sale-price{font-size:1.5rem;font-weight:600;letter-spacing:-.015em;color:var(--accent)}.deal-product-details .deal-discount-badge{display:inline-block;padding:.125rem .4rem;background:var(--accent-bg);color:var(--accent);border-radius:3px;font-family:var(--mono);font-size:.6875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;margin:0 0 .625rem}.deal-product-details .deal-stock-info{display:flex;align-items:center;gap:.375rem;font-family:var(--mono);font-size:.6875rem;color:var(--ink-muted);letter-spacing:.02em}.deal-product-details .deal-stock-info svg{flex-shrink:0}@media(max-width:600px){.deal-preview-card{grid-template-columns:100px 1fr;gap:1rem;padding:1rem}.deal-product-image{width:100px;height:100px;padding:.5rem}.deal-product-details .sale-price{font-size:1.25rem}}.ff-login-deal-meta{margin:1rem 0 0;font-size:.8125rem;color:var(--ink-muted);line-height:1.55}.ff-login-deal-meta strong{color:var(--ink);font-weight:500}.ff-skeleton{background:linear-gradient(90deg,var(--bg-2) 0%,var(--rule) 50%,var(--bg-2) 100%);background-size:200% 100%;border-radius:4px;animation:ff-shimmer 1.4s ease-in-out infinite}.ff-skeleton-img{width:100%;height:100%}.ff-skeleton-title{width:80%;height:.875rem;margin:0 0 .625rem}.ff-skeleton-line{width:60%;height:1.25rem;margin:0 0 .625rem}.ff-skeleton-meta{width:40%;height:.6875rem}@keyframes ff-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.ff-skeleton{animation:none;background:var(--bg-2)}}
