:root { color-scheme: light; }
html, body { min-height: 100%; margin: 0; }
body { background: #f7f6f3; }
.portalLogin, .portalLogin * { box-sizing: border-box; }
.portalLogin { --login-ink:#302537; --login-muted:#716b74; --login-accent:#492847; min-height:100vh; min-height:100svh; display:grid; grid-template-columns:1fr 1fr; color:var(--login-ink); background:#f7f6f3; font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; font-size:14px; line-height:1.5; }
.portalLogin [hidden] { display:none !important; }
.portalLogin a { color:inherit; text-decoration:none; }
.portalLogin button { font:inherit; cursor:pointer; }
.portalLogin button:focus-visible,.portalLogin a:focus-visible { outline:3px solid #b087ba; outline-offset:5px; }
.portalLogin .portalLoginStory { position:relative; display:flex; flex-direction:column; padding:36px clamp(32px,5vw,80px); min-width:0; overflow:hidden; background:#3f203e; color:#fff; }
.portalLogin .portalLoginBrand { position:relative; z-index:1; display:flex; align-items:center; align-self:flex-start; gap:22px; color:#efe6ef; font-size:12px; letter-spacing:.035em; }
.portalLoginBrand img { display:block; width:96px; height:96px; object-fit:contain; }
.portalLoginBrand span { padding-left:22px; border-left:1px solid #80647e; }
.portalLogin .portalLoginStoryBody { position:relative; z-index:1; margin:auto 0; padding:70px 0 100px; }
.portalLogin .portalLoginEyebrow { font-size:10px; font-weight:600; letter-spacing:.18em; color:#d6bed5; }
.portalLogin .portalLoginStory h1 { font-family:Georgia,"Times New Roman",serif; color:#fff; font-size:clamp(48px,5.4vw,82px); font-weight:400; letter-spacing:-.035em; line-height:1.04; margin:25px 0 24px; }
.portalLogin .portalLoginStoryBody p { font-size:16px; line-height:1.75; color:#decfdd; margin:0; }
.portalLogin .portalLoginCapabilities { display:flex; flex-wrap:wrap; gap:12px 20px; margin-top:38px; color:#e0cfdf; font-size:11px; }
.portalLoginCapabilities span { display:flex; align-items:center; gap:8px; }
.portalLoginCapabilities span::before { content:''; width:4px; height:4px; border-radius:50%; background:#c8a2c5; }
.portalLoginStoryFooter { display:flex; gap:15px; align-items:center; position:relative; z-index:1; font-size:11px; color:#cdb6cb; padding-bottom:10px; }
.portalLoginRule { width:32px; height:1px; background:#a884a5; }
.portalLoginArtwork { position:absolute; width:85%; height:auto; right:-23%; bottom:-28%; stroke:#aa82a4; stroke-width:1; opacity:.25; pointer-events:none; }
.portalLogin .portalLoginAccess { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; min-width:0; padding:80px clamp(28px,6vw,96px); }
.portalLogin .portalLoginPanel { width:100%; max-width:390px; padding:0; border:0; box-shadow:none; background:transparent; }
.portalLogin .portalLoginPanelEyebrow { font-size:10px; letter-spacing:.16em; font-weight:650; color:#866582; }
.portalLogin .portalLoginPanel h2 { margin:17px 0 13px; font-size:30px; font-weight:550; line-height:1.2; letter-spacing:-.035em; color:var(--login-ink); }
.portalLogin .portalLoginIntro { margin:0; max-width:335px; color:var(--login-muted); font-size:14px; line-height:1.7; }
.portalLogin .portalLoginPrimary { display:flex; align-items:center; justify-content:space-between; gap:14px; width:100%; min-height:56px; margin-top:33px; padding:14px 19px; border:1px solid #ded7df; border-radius:7px; background:#fff; color:#36283b; font-size:13px; font-weight:600; text-align:left; transition:border-color .15s,background .15s; box-shadow:0 2px 3px #39253e04; }
.portalLogin .portalLoginPrimary>span:nth-child(2) { flex:1; }
.portalLogin .portalLoginPrimary:hover:not(:disabled) { border-color:#a28c9f; background:#fcfafc; }
.portalLogin .portalLoginPrimary:disabled { cursor:wait; color:#756d78; }
.portalLoginMicrosoft { display:grid; grid-template-columns:repeat(2,9px); grid-template-rows:repeat(2,9px); gap:2px; flex-shrink:0; }
.portalLoginMicrosoft i:nth-child(1) { background:#f25022; }.portalLoginMicrosoft i:nth-child(2) { background:#7fba00; }.portalLoginMicrosoft i:nth-child(3) { background:#00a4ef; }.portalLoginMicrosoft i:nth-child(4) { background:#ffb900; }
.portalLogin .portalLoginStatus { min-height:52px; display:flex; gap:9px; align-items:center; color:#777079; font-size:11px; line-height:1.5; }
.portalLoginSpinner { flex-shrink:0; width:12px; height:12px; border:1.5px solid #d4c8d6; border-top-color:#684668; border-radius:50%; animation:portalLoginSpin .8s linear infinite; }
.portalLogin .portalLoginError { padding:12px 14px; margin:0 0 16px; border:1px solid #ecc9c9; border-radius:6px; background:#fff4f3; color:#8c3434; font-size:12px; line-height:1.6; overflow-wrap:anywhere; }
.portalLogin .portalLoginHelp { display:grid; gap:5px; border-top:1px solid #e4dfe3; margin-top:18px; padding-top:25px; font-size:12px; color:#79717b; }
.portalLoginHelp a { color:#53324f; font-weight:600; width:fit-content; }
.portalLoginHelp a:hover { text-decoration:underline; }
.portalLogin .portalLoginFooter { position:absolute; bottom:36px; left:clamp(28px,6vw,96px); right:clamp(28px,6vw,96px); display:flex; align-items:center; justify-content:space-between; gap:20px; color:#8a828b; font-size:10px; }
.portalLoginFooter div { display:flex; gap:18px; }.portalLoginFooter button { border:0; background:none; padding:8px 0; color:#716775; }
.portalLogin .portalLoginDialog { width:min(500px,calc(100vw - 32px)); margin:auto; padding:26px; color:#392a3b; background:#fff; border:1px solid #d9d0dc; border-radius:12px; box-shadow:0 24px 90px #23102733; }
.portalLoginDialog::backdrop { background:#20162466; }.portalLoginDialog header { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:16px; }.portalLoginDialog h2 { font-size:20px; margin:0; }.portalLoginDialog header button { border:0; background:#f5f1f5; border-radius:5px; width:36px; height:36px; font-size:24px; }.portalLoginDialog [data-login-info-body] { font-size:14px; line-height:1.8; }
.auth-shell:has(.portalLogin) { display:block !important; padding:0 !important; min-height:100vh !important; height:auto !important; overflow:visible !important; background:#f7f6f3 !important; }
.runtime-fallback-shell { min-height:100vh; display:grid; place-items:center; padding:24px; background:#f7f6f3; font:14px/1.6 system-ui; }.runtime-fallback-card { width:min(440px,100%); padding:32px; border:1px solid #ddd3df; border-radius:12px; background:white; color:#402d43; }.runtime-fallback-actions button { padding:12px 18px; border:0; border-radius:6px; background:#492847; color:white; cursor:pointer; }
@keyframes portalLoginSpin { to { transform:rotate(360deg); } }
@media(min-width:1500px) { .portalLogin .portalLoginStoryBody { margin-left:3vw; }.portalLogin .portalLoginBrand { margin-left:3vw; } }
@media(max-width:800px) { .portalLogin { grid-template-columns:1fr; }.portalLogin .portalLoginStory { padding:10px 28px 32px; }.portalLogin .portalLoginBrand { gap:14px; }.portalLoginBrand img { width:76px; height:76px; }.portalLoginBrand span { padding-left:14px; }.portalLogin .portalLoginStoryBody { margin:0; padding:20px 0 10px; }.portalLogin .portalLoginStory h1 { font-size:43px; margin:16px 0; }.portalLogin .portalLoginEyebrow,.portalLoginCapabilities,.portalLoginStoryFooter { display:none !important; }.portalLogin .portalLoginStoryBody p { font-size:13px; }.portalLoginArtwork { width:60%; right:-10%; bottom:-65%; }.portalLogin .portalLoginAccess { padding:40px 28px 90px; }.portalLogin .portalLoginPanel { max-width:440px; }.portalLogin .portalLoginPanel h2 { font-size:26px; }.portalLogin .portalLoginFooter { left:28px; right:28px; bottom:24px; } }
@media(max-width:380px) { .portalLogin .portalLoginStory,.portalLogin .portalLoginAccess { padding-left:22px; padding-right:22px; }.portalLogin .portalLoginStory h1 { font-size:38px; }.portalLoginFooter { flex-wrap:wrap; }.portalLogin .portalLoginPrimary { padding:14px; gap:10px; } }
@media(prefers-reduced-motion:reduce) { .portalLogin * { animation:none !important; transition:none !important; }.portalLoginSpinner { border-color:#684668; } }

/* Keep the login canvas stable while dashboard CSS loads during sign-in. */
html:has(.portalLogin), body:has(.portalLogin) {
  background: #3f203e !important;
  margin: 0 !important;
  padding: 0 !important;
  overscroll-behavior-x: none;
  scrollbar-gutter: auto;
}
body:has(.portalLogin) { display: block !important; }
#app:has(.portalLogin), .auth-shell:has(.portalLogin) {
  width: 100%;
  max-width: none;
  margin: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
#app .portalLogin {
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  isolation: isolate;
  overflow-x: clip;
}
.auth-shell:has(.portalLogin)::before,
.auth-shell:has(.portalLogin)::after { content: none !important; }
