:root {
  --navy: #0b1930;
  --navy-2: #12294b;
  --indigo: #5868f2;
  --indigo-dark: #4657e6;
  --teal: #20b5a4;
  --ink: #17223a;
  --muted: #748198;
  --line: #dfe5ee;
  --paper: #f5f7fb;
  --danger: #d54c63;
}
* { box-sizing: border-box; }
html, body { min-height: 100%; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; -webkit-font-smoothing: antialiased; }
button, input { font: inherit; }
.login-shell { min-height: 100vh; display: grid; grid-template-columns: minmax(520px, 1.08fr) minmax(460px, .92fr); }
.story-panel { min-height: 100vh; position: relative; overflow: hidden; padding: 46px 58px 38px; color: white; background: radial-gradient(circle at 18% 74%, rgba(33,181,164,.22), transparent 30%), radial-gradient(circle at 78% 15%, rgba(92,108,255,.34), transparent 32%), linear-gradient(145deg, #08162b 0%, #10294c 62%, #123e4d 100%); display: flex; flex-direction: column; }
.story-grid { position: absolute; inset: 0; opacity: .13; background-image: linear-gradient(rgba(255,255,255,.12) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.12) 1px, transparent 1px); background-size: 54px 54px; mask-image: linear-gradient(to bottom right, black, transparent 78%); }
.orb { position: absolute; border: 1px solid rgba(255,255,255,.13); border-radius: 50%; }
.orb::before, .orb::after { content: ""; position: absolute; inset: 15%; border: 1px solid rgba(255,255,255,.09); border-radius: inherit; }
.orb::after { inset: 31%; }
.orb-one { width: 360px; height: 360px; right: -95px; bottom: -110px; }
.orb-two { width: 150px; height: 150px; right: 16%; top: 19%; opacity: .55; }
.story-brand, .mobile-brand { display: flex; align-items: center; gap: 13px; position: relative; z-index: 2; }
.brand-mark { width: 43px; height: 43px; border-radius: 13px; display: grid; place-items: center; background: linear-gradient(135deg, #7784ff, #4b5cf2); box-shadow: 0 12px 32px rgba(55,72,222,.34), inset 0 1px rgba(255,255,255,.28); }
.brand-mark span { font-weight: 900; font-size: 14px; letter-spacing: -.5px; }
.story-brand strong, .mobile-brand strong { display: block; font-size: 16px; letter-spacing: .1px; }
.story-brand small, .mobile-brand small { display: block; margin-top: 3px; font-size: 10px; letter-spacing: 1.25px; text-transform: uppercase; color: #91a5c5; }
.story-copy { position: relative; z-index: 2; margin: auto 0; max-width: 680px; padding: 70px 0; }
.eyebrow { display: flex; align-items: center; gap: 9px; color: #88e0d5; font-size: 10px; font-weight: 800; letter-spacing: 1.55px; }
.eyebrow i { width: 7px; height: 7px; border-radius: 50%; background: #42dbc8; box-shadow: 0 0 0 6px rgba(66,219,200,.1); }
.story-copy h1 { margin: 22px 0 18px; max-width: 640px; font-size: clamp(35px, 4vw, 58px); line-height: 1.14; letter-spacing: -2.7px; font-weight: 760; }
.story-copy > p { margin: 0; max-width: 560px; color: #aabbd2; font-size: 15px; line-height: 1.85; }
.story-metrics { margin-top: 42px; display: flex; gap: 0; width: min(540px, 100%); border-top: 1px solid rgba(255,255,255,.12); padding-top: 24px; }
.story-metrics article { flex: 1; padding-left: 22px; border-left: 1px solid rgba(255,255,255,.12); }
.story-metrics article:first-child { padding-left: 0; border-left: 0; }
.story-metrics strong { display: block; font-size: 25px; letter-spacing: -1px; }
.story-metrics span { display: block; margin-top: 5px; color: #8fa3c0; font-size: 10px; letter-spacing: .35px; }
.story-footer { position: relative; z-index: 2; display: flex; align-items: center; gap: 9px; color: #7f94b3; font-size: 10px; }
.live-dot { width: 7px; height: 7px; border-radius: 50%; background: #41d8bd; box-shadow: 0 0 0 5px rgba(65,216,189,.09); }
.form-panel { min-height: 100vh; padding: 52px clamp(36px, 6vw, 96px) 34px; display: flex; flex-direction: column; justify-content: center; background: radial-gradient(circle at 100% 0, rgba(90,106,242,.08), transparent 28%), #f8f9fc; }
.mobile-brand { display: none; margin-bottom: 42px; color: var(--navy); }
.mobile-brand .brand-mark { color: white; }
.login-card { width: min(430px, 100%); margin: auto; }
.card-heading { margin-bottom: 33px; }
.secure-badge { display: inline-flex; align-items: center; gap: 7px; color: var(--indigo); font-size: 9px; font-weight: 850; letter-spacing: 1.2px; }
.secure-badge svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.card-heading h2 { margin: 15px 0 8px; font-size: 34px; letter-spacing: -1.3px; }
.card-heading p { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.7; }
.field { display: grid; gap: 9px; margin-bottom: 19px; }
.field > span:first-child { font-size: 11px; font-weight: 750; color: #344057; }
.input-wrap { height: 52px; display: flex; align-items: center; gap: 11px; padding: 0 15px; border: 1px solid var(--line); border-radius: 13px; background: white; box-shadow: 0 5px 17px rgba(27,43,72,.035); transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease; }
.input-wrap:focus-within { border-color: #8793f7; box-shadow: 0 0 0 4px rgba(88,104,242,.09), 0 8px 24px rgba(27,43,72,.05); transform: translateY(-1px); }
.input-wrap > svg { width: 18px; height: 18px; flex: 0 0 auto; fill: none; stroke: #94a0b4; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.input-wrap input { min-width: 0; flex: 1; border: 0; outline: 0; background: transparent; color: var(--ink); font-size: 13px; }
.input-wrap input::placeholder { color: #adb6c5; }
.visibility { width: 33px; height: 33px; display: grid; place-items: center; border: 0; border-radius: 9px; background: transparent; color: #8996aa; cursor: pointer; }
.visibility:hover { color: var(--indigo); background: #f2f4ff; }
.visibility svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.form-message { min-height: 21px; margin-top: -5px; color: var(--danger); font-size: 11px; line-height: 1.5; }
.form-message.success { color: #128778; }
.submit-button { width: 100%; height: 53px; margin-top: 5px; border: 0; border-radius: 13px; display: flex; align-items: center; justify-content: center; gap: 9px; color: white; background: linear-gradient(135deg, #6272f8, #4b5be8); box-shadow: 0 15px 30px rgba(75,91,232,.24); font-size: 12px; font-weight: 800; letter-spacing: .15px; cursor: pointer; transition: transform .18s ease, box-shadow .18s ease, opacity .18s ease; }
.submit-button:hover { transform: translateY(-1px); box-shadow: 0 18px 36px rgba(75,91,232,.3); }
.submit-button:active { transform: translateY(0); }
.submit-button:disabled { cursor: wait; opacity: .68; }
.submit-button svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; transition: transform .18s ease; }
.submit-button:hover svg { transform: translateX(2px); }
.submit-button.loading svg { animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.security-note { margin-top: 27px; padding: 13px 14px; display: flex; align-items: center; gap: 10px; border-radius: 11px; color: #79869a; background: #f0f3f8; font-size: 10px; line-height: 1.45; }
.security-note svg { width: 18px; height: 18px; flex: 0 0 auto; fill: none; stroke: #20a695; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.form-footer { margin-top: auto; padding-top: 32px; text-align: center; color: #a0aaba; font-size: 9px; letter-spacing: .65px; text-transform: uppercase; }
@media (max-width: 980px) {
  .login-shell { grid-template-columns: 1fr; }
  .story-panel { display: none; }
  .form-panel { min-height: 100vh; padding: 34px 24px 26px; }
  .mobile-brand { display: flex; }
  .login-card { margin: auto; }
  .form-footer { margin-top: 42px; }
}
@media (max-width: 520px) {
  .form-panel { justify-content: flex-start; }
  .mobile-brand { margin-bottom: 54px; }
  .card-heading h2 { font-size: 30px; }
  .input-wrap, .submit-button { height: 51px; }
}
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; } }
