/* Portal login layout; isolated from the authenticated project viewer. */
:root{color-scheme:light;--neo-brand:#249c9d;--neo-brand-strong:#073b49}
*{box-sizing:border-box}html{min-height:100%}body{margin:0;color:#102f38;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}button,input{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}form{margin:0}svg{display:block;width:20px;height:20px;flex:none}a:focus-visible,button:focus-visible{outline:3px solid #249c9d;outline-offset:4px}button:disabled{opacity:.65;cursor:wait}
.site-footer{width:100%;min-height:58px;padding:14px clamp(16px,3vw,34px);display:flex;align-items:center;justify-content:center;gap:12px}.site-footer .footer-text{font-size:.78rem;text-align:center;line-height:1.5}
body.page-login { min-height: 100svh; margin: 0; padding: 0; overflow-x: hidden; background: radial-gradient(circle at 18% 20%, rgba(33,156,155,.28), transparent 30rem), linear-gradient(125deg, rgba(6,17,24,.76), rgba(6,17,24,.96)), url('/static/images/login-bg.jpg') center/cover fixed; }
body.page-login::before { content: ""; position: fixed; z-index: 0; inset: 0; pointer-events: none; opacity: .15; background-image: linear-gradient(rgba(94,214,210,.2) 1px, transparent 1px), linear-gradient(90deg, rgba(94,214,210,.2) 1px, transparent 1px); background-size: 52px 52px; }
.login-layout { position: relative; z-index: 1; width: min(calc(100% - 32px), 1180px); min-height: 100svh; margin-inline: auto; padding-block: 18px; display: flex; flex-direction: column; justify-content: center; gap: 10px; }
.login-page { width: 100%; min-height: 0; padding: 0; }
.login-shell { width: 100%; height: min(690px, calc(100svh - 104px)); min-height: 560px; display: grid; grid-template-columns: 1.08fr .92fr; overflow: hidden; border: 1px solid rgba(94,214,210,.18); border-radius: 26px; box-shadow: 0 30px 90px rgba(0,0,0,.42); }
.login-story { position: relative; padding: clamp(42px, 6vw, 70px); display: flex; flex-direction: column; justify-content: space-between; align-items: flex-start; overflow: hidden; color: #fff; background: linear-gradient(145deg, rgba(12,40,49,.96), rgba(7,21,29,.98)); }
.login-story::before { content: ""; position: absolute; width: 360px; height: 360px; right: -180px; bottom: -190px; border: 1px solid rgba(94,214,210,.16); border-radius: 50%; box-shadow: 0 0 0 55px rgba(94,214,210,.025), 0 0 0 110px rgba(94,214,210,.02); }
.login-story::after { content: "N"; position: absolute; right: -12px; bottom: -92px; color: rgba(94,214,210,.035); font-size: 27rem; font-weight: 900; line-height: 1; letter-spacing: -.12em; }
.login-story-top, .login-story-copy, .login-story-signature { position: relative; z-index: 1; }
.login-story-top { width: 100%; }
.login-story .login-logo { display: block; width: min(340px, 76%); height: auto; object-fit: contain; }
.login-portal-label { display: inline-block; margin-top: 15px; color: rgba(238,248,248,.55); font-size: .7rem; font-weight: 800; letter-spacing: .22em; }
.login-story-copy { margin-block: clamp(30px, 7vh, 70px); }
.login-story-line { display: block; width: 46px; height: 3px; margin-bottom: 22px; border-radius: 4px; background: var(--neo-brand); }
.login-story-copy h1 { max-width: 510px; margin: 0 0 20px; color: #fff; font-size: clamp(2.25rem, 4.1vw, 4.05rem); font-weight: 850; line-height: 1.07; letter-spacing: -.055em; }
.login-story-copy p { max-width: 410px; margin: 0; color: rgba(238,248,248,.64); font-size: 1rem; line-height: 1.7; }
.login-story-signature { display: flex; align-items: center; gap: 10px; color: rgba(94,214,210,.78); font-size: .67rem; font-weight: 800; letter-spacing: .17em; }
.login-signature-dot { width: 4px; height: 4px; border-radius: 50%; background: currentColor; }
.login-logo-mobile { width: 136px; height: auto; object-fit: contain; }
.login-panel { padding: clamp(34px, 5vw, 58px); display: flex; flex-direction: column; justify-content: center; background: #fffdf8; color: #102f38; }
.login-panel h2 { margin: 0; font-size: 1.65rem; font-weight: 850; }
.login-panel > p { margin: 8px 0 28px; color: #60757c; }
.login-panel .form-label { font-size: .78rem; font-weight: 750; color: #48636b; }
.login-panel .form-control, .login-panel .input-group-text { height: 50px; color: #102f38; background: #fffdf8; border-color: rgba(16, 47, 56, .18); }
.login-panel .input-group > .btn { height: 50px; }
.login-panel form .d-grid > .btn { height: 51px; min-height: 51px; }
.login-panel .alert { font-size: .86rem; }
body.page-login .site-footer { width: 100%; min-height: 58px; margin: 0; flex: 0 0 auto; color: rgba(238,248,248,.64); background: rgba(6,17,24,.96); border: 1px solid rgba(94,214,210,.12); border-radius: 16px; }
body.page-login .site-footer .login-footer-brand { display: inline-flex; flex: 0 0 auto; align-items: center; }
body.page-login .site-footer .login-footer-brand img { width: 94px; height: auto; max-height: 30px; }

@media (max-height: 760px) and (min-width: 981px) {
  .login-layout { padding-block: 10px; }
  .login-shell { height: min(620px, calc(100svh - 88px)); }
  .login-story { padding: 34px 48px; }
  .login-story .login-logo { width: min(285px, 70%); }
  .login-portal-label { margin-top: 9px; }
  .login-story-copy { margin-block: 20px; }
  .login-story-line { margin-bottom: 15px; }
  .login-story-copy h1 { margin-bottom: 12px; font-size: clamp(2rem, 3.5vw, 3.15rem); }
  .login-panel { padding: 30px 46px; }
  .login-panel > p { margin-bottom: 20px; }
  .login-panel .mb-4 { margin-bottom: 1rem !important; }
}

@media (max-width: 980px) {
  .login-layout { width: min(calc(100% - 32px), 620px); padding-block: 18px; }
  .login-shell { height: auto; min-height: 0; grid-template-columns: 1fr; }
  .login-story { display: none; }
  .login-panel { min-height: 500px; }
}

@media (max-width: 520px) {
  .login-layout { width: 100%; min-height: 100svh; padding: 0; justify-content: flex-start; }
  body.page-login .login-shell { max-width: none; border-inline: 0; border-top: 0; border-radius: 0; box-shadow: none; }
  body.page-login .login-panel { min-height: calc(100svh - 92px); padding: 34px 24px; }
  body.page-login .site-footer { min-height: 82px; padding: 12px 18px; border-inline: 0; border-bottom: 0; border-radius: 0; flex-direction: row; flex-wrap: nowrap; justify-content: center; gap: 12px; }
  body.page-login .site-footer .login-footer-brand img { width: 82px; max-height: none; }
  body.page-login .site-footer .footer-text { min-width: 0; font-size: .68rem; line-height: 1.45; text-align: left; white-space: normal; overflow-wrap: anywhere; }
}


.login-panel{min-width:0}.login-panel h2{line-height:1.2}.login-panel>p{line-height:1.5}.login-mobile-brand{display:none;align-items:center;gap:16px;margin-bottom:24px}.login-badge{font-size:.65rem;font-weight:700;letter-spacing:.03em;background:#212529;color:#fff;border-radius:999px;padding:6px 10px;white-space:nowrap}
.login-field{margin-bottom:16px}.login-password-field{margin-bottom:24px}.login-field label{display:block;margin-bottom:8px;font-size:.78rem;font-weight:750;color:#48636b;line-height:1.5}.login-input-group{display:flex;align-items:stretch;min-width:0}.login-input-icon{display:flex;align-items:center;justify-content:center;width:41px;flex:none;border:1px solid rgba(16,47,56,.18);border-radius:10px 0 0 10px;color:#102f38}.login-input-icon svg{width:16px;height:16px}.login-input-group input{position:relative;flex:1;min-width:0;width:1%;height:50px;border:1px solid rgba(16,47,56,.18);border-left:0;border-radius:0 10px 10px 0;background:#fffdf8;color:#102f38;padding:6px 12px;line-height:1.5;font-size:1rem;outline:none}.login-input-group input::placeholder{color:#819092;opacity:.65}.login-input-group input:focus{z-index:1;border-color:#249c9d;box-shadow:0 0 0 .22rem rgba(33,156,155,.13)}.login-password-field input{border-radius:0}.login-input-group button{display:grid;place-items:center;flex:none;width:44px;min-height:50px;margin-left:-1px;border:1px solid rgba(177,218,218,.14);border-radius:0 10px 10px 0;background:#07313b;color:#dce9e4}.login-input-group button:hover{background:#0b3a45}.login-input-group button svg{width:17px;height:17px}.password-eye-off{display:none}#togglePassword[aria-pressed="true"] .password-eye{display:none}#togglePassword[aria-pressed="true"] .password-eye-off{display:block}
.login-submit{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;min-height:51px;padding:10px 18px;border:1px solid transparent;border-radius:999px;background:linear-gradient(135deg,#073b49,#249c9d);color:#fff;box-shadow:0 9px 22px rgba(33,156,155,.2);font-size:1rem;font-weight:700;line-height:1.5;transition:filter .18s,transform .18s}.login-submit:hover{filter:brightness(1.05);transform:translateY(-1px)}.login-submit svg{width:18px;height:18px}.notice{margin:0 0 20px;padding:13px 15px;border-radius:10px;font-size:.86rem;line-height:1.6}.notice-error{background:#fae9e3;color:#9c3434;border:1px solid #eecdc6}.notice:focus{outline:2px solid #9c3434;outline-offset:3px}
@media(max-height:760px) and (min-width:981px){.login-password-field{margin-bottom:16px}}
@media(max-width:980px){.login-mobile-brand{display:flex}}
@media(max-width:767.98px){.login-panel{min-height:520px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}
