.login-page { min-height:100vh; display:grid; place-items:center; background:#eef2f6; padding:30px; }
.login-shell { display:grid; grid-template-columns:1fr 1fr; width:min(940px,100%); padding:0; background:white; border:1px solid #dce4ec; border-radius:12px; overflow:hidden; box-shadow:0 20px 70px #203e5c0d; }
.login-identity { background:#20394f; color:white; padding:65px 45px; }
.login-mark { display:block; width:160px; height:160px; object-fit:contain; background:white; border-radius:4px; margin-bottom:32px; }
.login-institution { display:block; font-size:9px; letter-spacing:1.9px; color:#b8c8d6; }
.login-identity h1 { margin:14px 0 20px; font-size:35px; font-weight:550; }
.login-identity p { font-size:13px; color:#b8c8d6; line-height:1.9; }
.login-network { display:flex; align-items:center; margin-top:60px; gap:12px; font-size:9px; color:#a7bdce; letter-spacing:1px; }
.login-network i { width:35px; height:1px; background:#ffffff25; }
.login-form-area { padding:65px 45px; }
.login-form-area h2 { font-size:27px; font-weight:550; margin:15px 0 12px; }
.login-form-area>p { font-size:12px; color:var(--muted); line-height:1.8; margin-bottom:30px; }
.login-form-area label { display:block; font-size:12px; font-weight:550; margin:20px 0 9px; }
.login-form-area input:not([type=hidden]) { width:100%; border:1px solid #d8e1e9; border-radius:6px; background:#fcfdff; padding:13px; }
.login-submit { margin-top:28px; display:flex; align-items:center; justify-content:space-between; width:100%; padding:14px 18px; border:0; border-radius:6px; background:#203e5c; color:white; font-size:13px; }
.login-submit:hover { background:#2b5278; }
.login-form-area>small { display:block; color:#8b99a6; font-size:10px; line-height:1.8; margin-top:25px; }
.login-errors { color:#a33a3a; font-size:12px; line-height:1.8; }
.login-errors ul { padding-left:18px; }
.session-tools { display:flex; align-items:center; gap:18px; font-size:12px; }
.session-logout { border:1px solid #dce4ec; background:white; color:#34516d; padding:10px 14px; border-radius:5px; }
.session-nav { background:#12273d; color:white; padding:20px 38px; font-size:13px; }
.session-widgets { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:20px; }
.session-widget { padding:25px; border-radius:8px; }
.session-widget h2 { margin-top:16px; font-size:15px; font-weight:550; line-height:1.7; }
.session-message { padding:35px; }
.session-message p { color:var(--muted); line-height:1.8; margin-bottom:25px; }
@media(max-width:700px) {
    .login-page { padding:16px; }
    .login-shell { grid-template-columns:1fr; }
    .login-identity { padding:30px; }
    .login-mark { margin-bottom:20px; }
    .login-identity h1 { font-size:29px; }
    .login-network { margin-top:25px; }
    .login-form-area { padding:30px; }
    .session-tools { gap:10px; flex-wrap:wrap; }
    .session-widgets { grid-template-columns:minmax(0,1fr); }
}

.login-captcha{display:flex;align-items:center;gap:16px;margin:8px 0 12px;padding:8px;background:#f3f5f8;border:1px solid #dce3ec;border-radius:8px}.login-captcha img{max-width:65%;height:auto}.login-captcha button{border:0;background:transparent;color:#254a78;font:inherit;font-size:13px;cursor:pointer;padding:8px}.login-captcha button:disabled{opacity:.5;cursor:wait}#captcha-status{display:block;margin:8px 0 12px;line-height:1.5}

/* Shared authenticated navigation and narrow screens. */
.session-nav { display:flex; align-items:center; flex-wrap:wrap; gap:8px; padding:10px max(20px,2vw); }
.session-nav > a, .session-nav summary { display:flex; align-items:center; min-height:42px; padding:10px 16px; border-radius:7px; line-height:1.4; font-weight:600; }
.session-nav > a:hover, .session-nav > a:focus-visible, .session-nav summary:hover { background:#ffffff18; }
.session-nav details { position:relative; margin:0 0 0 auto; }
.session-nav details[open] { background:#203b55; border-radius:7px; }
.session-nav details a { min-width:210px; padding:12px 16px; }
.session-tools form { margin:0; }
@media(max-width:700px) {
  .app-header { padding:16px; gap:16px; flex-wrap:wrap; }
  .app-brand { min-width:0; }
  .app-brand-copy strong { font-size:20px; }
  .session-tools { width:100%; justify-content:space-between; }
  .session-nav { padding:8px 12px; gap:4px; }
  .session-nav > a, .session-nav summary { padding:10px 12px; font-size:13px; }
  .session-nav details { margin-left:0; }
}
