:root{--ink:#163d32;--green:#216b52;--muted:#61776c;--border:#d9e3dc;--bg:#f3f6f3}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font:15px/1.6 'Segoe UI','Microsoft YaHei',sans-serif}button,input{font:inherit}[hidden]{display:none!important}:focus-visible{outline:3px solid #1695b8;outline-offset:4px}.page-header{max-width:1440px;margin:auto;height:112px;padding:0 56px;display:flex;align-items:center;justify-content:space-between}.page-header img{width:172px;height:62px;object-fit:contain;object-position:left center}.page-header span{font-size:13px;color:var(--muted);letter-spacing:.12em}.login-layout{max-width:1328px;min-height:600px;height:calc(100vh - 198px);max-height:780px;margin:0 auto;display:grid;grid-template-columns:1.08fr 1fr;background:#fff;border:1px solid var(--border);border-radius:14px;overflow:hidden}.visual{position:relative;isolation:isolate;overflow:hidden;background:#173d32}.building{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;z-index:-2}.visual:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#163d3205 10%,#102f2699 65%,#102f26ed 100%);z-index:-1}.visual-caption{position:absolute;bottom:88px;left:48px;right:36px;color:#fff}.eyebrow{font-size:10px;letter-spacing:.18em;color:#d0e4da}.visual h1{font-size:34px;line-height:1.5;font-weight:500;letter-spacing:.03em;margin:18px 0}.visual p{font-size:13px;color:#d0e4da;margin:0;letter-spacing:.08em}.visual-index{position:absolute;left:48px;bottom:28px;color:#bfd4c9;font-size:10px;letter-spacing:.12em}.login-panel{display:flex;align-items:center;justify-content:center;padding:42px 64px}.panel-inner{width:100%;max-width:366px}.section-label{color:var(--green);font-size:12px;letter-spacing:.12em}h2{font-size:30px;line-height:1.3;letter-spacing:.03em;margin:12px 0;font-weight:600}.subtitle{color:var(--muted);font-size:14px;margin:0 0 32px}.field{margin:0 0 20px}.field label{display:block;font-size:13px;font-weight:600;margin-bottom:8px}.field input{display:block;width:100%;height:49px;border:1px solid #cbd8cf;background:#fbfcfa;border-radius:7px;padding:11px 14px;color:var(--ink);transition:border-color .15s,box-shadow .15s}.field input:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px #216b5214}.field input[aria-invalid=true]{border-color:#b34334}.password-wrap{position:relative}.password-wrap input{padding-right:66px}.password-wrap button{position:absolute;right:6px;top:5px;bottom:5px;min-width:48px;border:0;background:transparent;color:var(--green);font-size:12px;border-radius:4px;cursor:pointer}.password-wrap button:hover{background:#edf3ee}.remember{display:flex;align-items:center;gap:8px;font-size:13px;color:#486354;width:fit-content;cursor:pointer;margin:3px 0 23px}.remember input{width:16px;height:16px;margin:0;accent-color:var(--green)}.submit{width:100%;height:49px;background:var(--green);color:white;border:1px solid var(--green);border-radius:7px;display:flex;align-items:center;justify-content:center;gap:12px;font-weight:600;cursor:pointer;position:relative}.submit:hover{background:#195941}.submit:disabled{cursor:wait;opacity:.75}.arrow{position:absolute;right:18px;font-size:20px;font-weight:400}.help{font-size:12px;color:var(--muted);margin:20px 0 0;text-align:center}.field-error,.caps-lock{display:block;font-size:12px;margin-top:6px}.field-error{color:#a03329}.caps-lock{color:#8a651f}.form-status{font-size:12px;padding:10px 12px;border-left:3px solid #ae4939;background:#fff2ed;color:#903c2f;margin:0 0 15px}.local-preview{margin-top:28px;padding-top:17px;border-top:1px solid var(--border);font-size:11px;color:var(--muted)}.local-preview a{display:block;margin-top:5px;color:var(--green);font-size:12px;text-underline-offset:3px}.spinner{width:16px;height:16px;border:2px solid #ffffff66;border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}footer{max-width:1440px;margin:0 auto;padding:23px 56px;display:flex;justify-content:space-between;color:var(--muted);font-size:11px}@media(max-width:1400px){.login-layout{margin:0 40px}.page-header{padding:0 40px}.login-panel{padding:36px 45px}}@media(max-width:900px){.login-layout{grid-template-columns:.8fr 1fr;margin:0 24px}.visual-caption{left:28px}.visual h1{font-size:27px}.login-panel{padding:32px}.page-header{padding:0 24px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.page-header .header-wordmark{font-size:17px;font-weight:650;letter-spacing:.06em;color:var(--ink)}.login-brand{width:156px;height:144px;display:flex;align-items:center;justify-content:center;margin:0 auto 22px}.login-brand img{display:block;width:100%;height:100%;object-fit:contain}.login-panel{padding-top:28px;padding-bottom:28px}.login-brand+.section-label{display:none}.panel-inner h2{margin-top:0}.panel-inner .subtitle{margin-bottom:25px}.panel-inner .local-preview{margin-top:20px}

.login-layout{min-height:720px}

/* The brand mark and heading form one centered introduction. Form fields stay
   left aligned for quick scanning and reliable label association. */
.login-brand{width:128px;height:146px;margin:0 auto 24px}
.panel-inner h2{text-align:center;margin:0 0 8px;line-height:1.35}
.panel-inner .subtitle{text-align:center;margin:0 0 34px}
.login-panel{padding-top:34px;padding-bottom:34px}
.panel-inner .local-preview{margin-top:22px}

/* Match the gallery's calmer blue-gray controls while preserving the brand art. */
:root{--ink:#1e2e36;--green:#2d6981;--muted:#647681;--border:#dce4e8;--bg:#f5f7f8}
.page-header .header-wordmark{color:#254c5d}
.login-layout{border-color:#dce4e8;box-shadow:0 8px 28px #1d3d4b0a}
.visual{background:#203741}
.visual:after{background:linear-gradient(180deg,#142c3407 10%,#142c34a3 65%,#142c34ed 100%)}
.section-label{color:#3a7891}
.field input{border-color:#cddbe1;background:#fbfcfd}
.field input:focus{border-color:#298bad;box-shadow:0 0 0 3px #229ac321}
.password-wrap button{color:#2b6e88}
.password-wrap button:hover{background:#ebf4f7}
.remember{color:#506775}
.remember input{accent-color:#2d6981}
.submit{background:#254e61;border-color:#254e61}
.submit:hover{background:#1c4051}
.local-preview a{color:#2b6e88}
