.login-page{background:var(--color-bg);min-height:100dvh;padding:var(--space-6);place-items:center;display:grid}.login-frame{background:var(--color-bg);width:min(1240px,100%);min-height:760px;color:var(--color-text);font-size:var(--text-md);line-height:var(--leading-normal);border-radius:var(--radius-xl);border:1px solid var(--color-border);box-shadow:var(--shadow-md);flex-direction:row;display:flex;overflow:hidden}.login-brand{flex:none;width:46%;position:relative;overflow:hidden}.login-brand:before{content:"";background:var(--gradient-brand-panel);position:absolute;inset:0}.login-brand:after{content:"";background:var(--gradient-brand-stripes);position:absolute;inset:0}.login-brand-inner{height:100%;padding:var(--space-10);z-index:2;flex-direction:column;display:flex;position:relative}.login-brand-logo-row{align-items:center;gap:10px;display:flex}.login-brand-logo{background:var(--color-surface);width:34px;height:34px;color:var(--color-primary-strong);font-family:var(--font-serif);font-size:var(--text-lg);font-weight:var(--fw-semibold);border-radius:10px;justify-content:center;align-items:center;display:flex}.login-brand-name{font-family:var(--font-serif);font-size:var(--text-lg);font-weight:var(--fw-medium);color:var(--color-brand-ink)}.login-brand-spacer{flex:1}.login-brand-quote{font-family:var(--font-serif);font-style:italic;font-weight:var(--fw-regular);font-size:var(--text-display);color:var(--color-brand-ink);text-wrap:pretty;max-width:400px;line-height:1.35}.login-form-wrap{padding:var(--space-10);flex-direction:column;flex:1;justify-content:center;align-items:center;display:flex}.login-form-col{width:100%;max-width:400px}.login-tenant{align-items:center;gap:11px;margin-bottom:26px;display:flex}.login-tenant-logo{background:var(--color-primary-tint);width:44px;height:44px;color:var(--color-primary-strong);font-family:var(--font-serif);font-size:var(--text-2xl);font-weight:var(--fw-semibold);border-radius:13px;justify-content:center;align-items:center;display:flex}.login-tenant-name{font-family:var(--font-serif);font-size:var(--text-xl);font-weight:var(--fw-semibold);line-height:1.1}.login-tenant-host{font-size:var(--text-sm);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-2xl);box-shadow:var(--shadow-sm);padding:28px}.login-title{font-family:var(--font-serif);font-weight:var(--fw-semibold);font-size:var(--text-3xl);margin:0 0 6px}.login-intro{color:var(--color-text-secondary);font-size:var(--text-md-s);margin:0 0 22px}.login-intro-strong{font-weight:var(--fw-semibold);color:var(--color-text)}.login-code-row{cursor:text;gap:9px;margin-bottom:20px;display:flex}.login-code-box{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-field);height:56px;font-size:var(--text-2xl);font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;color:var(--color-text-faint);flex:1;justify-content:center;align-items:center;display:flex}.login-code-box.is-filled{border:1.5px solid var(--color-primary);background:var(--color-primary-tint-soft);color:var(--color-text)}.login-code-box.is-active{border:1.5px solid var(--color-primary);background:var(--color-surface)}.login-code-input{opacity:0;border:none;width:1px;height:1px;padding:0;position:absolute}.login-visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.login-2fa-links{font-size:var(--text-base);justify-content:space-between;align-items:center;margin-top:16px;display:flex}.login-back{color:var(--color-text-muted);cursor:pointer;font-size:inherit;background:0 0;border:none;padding:0}.login-error{background:var(--color-danger-bg);border:1px solid var(--color-danger-border);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-danger-text);gap:10px;margin-bottom:18px;padding:11px 13px;display:flex}.login-error-mark{flex:none;font-weight:700}.login-label{font-size:var(--text-sm);font-weight:var(--fw-semibold);color:var(--color-text-secondary);margin-bottom:7px;display:block}.login-label-row{justify-content:space-between;align-items:center;margin:16px 0 7px;display:flex}.login-label-row .login-label{margin-bottom:0}.login-forgot{font-size:var(--text-sm);color:var(--color-primary-strong);font-weight:var(--fw-medium)}.login-field{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-field);align-items:center;height:46px;padding:0 13px;display:flex}.login-field.is-error{border-color:var(--color-danger-border)}.login-field input{font-size:var(--text-md);background:0 0;border:none;outline:none;flex:1;min-width:0}.login-field input[type=password]{letter-spacing:.06em}.login-pw-toggle{font-size:var(--text-sm);color:var(--color-text-muted);cursor:pointer;font-weight:var(--fw-medium);background:0 0;border:none;padding-left:8px}.login-submit{border-radius:var(--radius-lg);background:var(--color-primary);width:100%;height:50px;color:var(--color-on-primary);font-size:var(--text-md);font-weight:var(--fw-semibold);cursor:pointer;box-shadow:var(--shadow-primary);border:none;justify-content:center;align-items:center;gap:10px;margin-top:22px;display:flex}.login-spinner{border-radius:var(--radius-pill);border:2px solid #fff6;border-top-color:var(--color-on-primary);width:16px;height:16px;animation:.7s linear infinite spin;display:inline-block}.login-protected{text-align:center;font-size:var(--text-sm);color:var(--color-text-muted);margin-top:16px}.login-protected b{color:var(--color-text-secondary);font-weight:var(--fw-regular)}.login-footer{text-align:center;font-size:var(--text-sm);color:var(--color-text-muted);margin-top:20px}.login-footer span{color:var(--color-primary-strong);font-weight:var(--fw-medium)}@media (width<=767px){.login-page{padding:0}.login-frame{border:none;border-radius:0;flex-direction:column;min-height:100dvh}.login-brand{width:auto;height:190px}.login-brand-inner{padding:var(--space-5)}.login-brand-quote{display:none}.login-form-wrap{padding:26px 20px 30px}.login-code-box{height:52px}}:root{--color-bg:#faf7f5;--color-surface:#fff;--color-surface-muted:#f5f0ec;--color-surface-sunken:#f1ebe7;--color-field:#faf7f5;--color-border:#eae3df;--color-border-strong:#e0d6cf;--color-text:#2e2a28;--color-text-secondary:#6e6763;--color-text-muted:#9c948e;--color-text-faint:#b6aba4;--color-primary:#c9857a;--color-primary-strong:#a96b60;--color-primary-tint:#f3e4e0;--color-primary-tint-soft:#fcf3f0;--color-on-primary:#fff;--color-ok:#7a8b6f;--color-ok-text:#5e6e52;--color-ok-bg:#e9eee3;--color-warn:#c8a24b;--color-warn-text:#8a6d3b;--color-warn-bg:#f6eed9;--color-low:#c57b57;--color-low-text:#b05f3e;--color-low-bg:#f5e5dc;--color-danger:#a8543b;--color-danger-text:#9e4e2e;--color-danger-bg:#f7e7df;--color-danger-border:#e9c6b4;--font-serif:"Fraunces", Georgia, "Times New Roman", serif;--font-sans:"Inter", system-ui, -apple-system, Segoe UI, Roboto, sans-serif;--font-mono:ui-monospace, Menlo, Monaco, "SF Mono", monospace;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--text-2xs:10px;--text-xs:11px;--text-sm:12.5px;--text-base:13px;--text-md:14px;--text-lg:16px;--text-xl:19px;--text-2xl:22px;--text-3xl:24px;--text-display:30px;--leading-tight:1.2;--leading-normal:1.5;--leading-relaxed:1.55;--radius-sm:8px;--radius-md:11px;--radius-lg:12px;--radius-xl:16px;--radius-2xl:18px;--radius-pill:999px;--shadow-sm:0 1px 2px #2e2a280a;--shadow-md:0 8px 40px -12px #2e2a2829;--shadow-lg:0 20px 50px -12px #2e2a284d;--shadow-primary:0 6px 16px -6px #c9857ab3;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--touch-min:44px;--bp-mobile:375px;--bp-desktop:1440px;--color-brand-ink:#4a3630;--color-brand-ink-soft:#7a5a52;--gradient-brand-panel:radial-gradient(120% 90% at 82% 8%, #f3e1db 0%, #ebd3cc 34%, #e4c6bd 70%, #d8b2a7 100%);--gradient-brand-stripes:repeating-linear-gradient(135deg, #ffffff0d 0, #ffffff0d 1px, transparent 1px, transparent 22px);--text-md-s:13.5px}*{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-md);line-height:var(--leading-normal);margin:0}input,button{color:inherit;font-family:inherit}::placeholder{color:var(--color-text-faint)}@keyframes spin{to{transform:rotate(360deg)}}
