:root{font-family:Inter,Arial,sans-serif;color:#19395e;background:#fff;font-synthesis:none}*{box-sizing:border-box}body{margin:0}.login-layout{min-height:100svh;display:grid;grid-template-columns:62% 38%}.story{background:#3e5d88;color:#fff;position:relative;overflow:hidden;padding:48px 6% 320px 7%;min-height:900px;isolation:isolate}.story::after{content:"";position:absolute;z-index:4;top:-8%;right:-80px;width:145px;height:118%;border-radius:50%;background:#fff;pointer-events:none}.brand{position:relative;z-index:2;background:#fff;border-radius:18px;padding:15px 24px 12px;display:inline-flex;flex-direction:column;text-decoration:none;color:#0b1018}.brand-row{display:flex;align-items:center;gap:10px}.brand img{width:230px;height:auto}.brand b{font-size:31px;letter-spacing:-1px}.brand>span{padding-left:67px;font-size:11px;letter-spacing:6px;margin-top:4px}.story-copy{position:relative;z-index:2;margin-top:40px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2px;color:#c6d9f1;margin:0 0 15px}h1{font-size:clamp(36px,4.4vw,68px);line-height:1.08;letter-spacing:-2.4px;margin:0;font-weight:800}.intro{color:#c8def5;font-size:23px;line-height:1.45;margin:20px 0 28px}.data-art{position:relative;z-index:2;max-width:800px}.metrics{display:grid;grid-template-columns:1fr 1.15fr .9fr;gap:14px}.metrics>div{background:#ffffff10;border:1px solid #ffffff0a;border-radius:15px;padding:16px 18px;position:relative}.metrics span{font-size:12px;display:block;color:#e0eafa;margin-bottom:8px}.metrics strong{font-size:25px;white-space:nowrap}.metrics small{font-size:18px}.mini-ring{position:absolute;width:47px;height:47px;right:12px;bottom:17px}.metrics>div:first-child strong{font-size:24px}.charts{display:grid;grid-template-columns:1fr 140px;align-items:center;gap:25px;margin-top:22px}.chart-main svg{display:block;width:100%}.months{display:flex;justify-content:space-between;font-size:10px;color:#cadcf0;padding:0 3px}.occupancy{position:relative}.occupancy svg{width:100%;display:block}.occupancy>div{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px}.occupancy strong{font-size:27px}.occupancy span{font-size:11px;color:#dbe8f8}.illustrative{text-align:right;font-size:10px;color:#c5d7ed;margin:12px 0 0}.landscape{position:absolute;z-index:0;bottom:0;left:0;right:0;height:365px;background:linear-gradient(#3e5d88,transparent 28%),url('/assets/login-mountains.webp') center bottom/cover no-repeat;pointer-events:none}.sign-in{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:60px 42px 24px;position:relative}.form-wrap{max-width:410px;width:100%;margin:auto}.short-line{height:1px;width:44px;background:#94b7df;margin:0 auto 30px}h2{font-size:40px;letter-spacing:-1.2px;text-align:center;margin:0 0 10px;line-height:1.1}.form-intro{text-align:center;color:#647a98;font-size:18px;margin:0 0 48px}label{display:block;font-size:13px;font-weight:600;margin:0 0 10px}.field{display:flex;align-items:center;gap:12px;background:#f0f4fa;border:1px solid #e6edf6;border-radius:9px;padding:0 15px;height:56px;margin-bottom:25px}.field>svg,.reveal svg{width:20px;height:20px;fill:none;stroke:#587598;stroke-width:1.5;flex-shrink:0}.field:focus-within{outline:3px solid #3e5d8833;border-color:#668dbd}input{font:inherit;font-size:14px;min-width:0;flex:1;width:100%;border:0;outline:0;background:transparent;color:#19395e;height:100%}input::placeholder{color:#7d90aa}.reveal{background:transparent;border:0;cursor:pointer;padding:7px;display:grid;place-items:center;color:#19395e}.submit{border:0;background:#ff5561;color:white;border-radius:9px;width:100%;font:inherit;font-size:16px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:22px;padding:19px;margin-top:10px;cursor:pointer;transition:background .15s,transform .15s}.submit:hover{background:#ed4452;transform:translateY(-1px)}.submit:disabled{opacity:.65;cursor:wait;transform:none}.submit span:last-child{font-size:24px;line-height:16px}.help{display:block;text-align:center;color:#587598;font-size:13px;text-underline-offset:6px;margin-top:30px}.session-note{font-size:10px;color:#8391a4;text-align:center;margin:48px 0 0}.error{color:#a62336;background:#fff0f2;border-radius:8px;padding:12px;font-size:13px;line-height:1.5}.error[hidden]{display:none}footer{font-size:10px;color:#8291a6;margin-top:60px}button:focus-visible,a:focus-visible{outline:3px solid #8eb2da;outline-offset:4px}@media(min-width:1700px){.story{padding-left:10%;padding-right:10%}.sign-in{padding-left:70px;padding-right:70px}}@media(max-width:1100px){.login-layout{grid-template-columns:57% 43%}.story{padding:35px 50px 260px 35px;min-height:820px}.story::after{right:-105px}.brand img{width:185px}.brand b{font-size:25px}.brand>span{padding-left:53px;letter-spacing:4px}.intro{font-size:19px}.metrics{gap:8px}.metrics>div{padding:14px 10px}.metrics strong{font-size:19px}.metrics small{font-size:14px}.mini-ring{display:none}.charts{grid-template-columns:1fr 105px;gap:15px}.occupancy strong{font-size:22px}.sign-in{padding-left:28px;padding-right:28px}h2{font-size:34px}.form-intro{font-size:16px}.landscape{height:280px}}@media(max-width:720px){.login-layout{display:flex;flex-direction:column}.story{min-height:0;padding:24px 24px 34px}.story::after,.landscape,.data-art{display:none}.brand{border-radius:12px;padding:10px 15px}.brand img{width:145px}.brand b{font-size:21px}.brand>span{font-size:8px;letter-spacing:3px;padding-left:43px}.story-copy{margin-top:23px}.eyebrow{font-size:8px;letter-spacing:1.5px}h1{font-size:36px;letter-spacing:-1px}.intro{font-size:15px;margin-bottom:0}.intro br{display:none}.sign-in{padding:35px 24px 20px}.form-wrap{max-width:410px}.short-line{display:none}h2{font-size:30px}.form-intro{margin-bottom:30px}.session-note{margin-top:30px}footer{margin-top:30px}}
@media(min-width:721px){.story{min-width:0;min-height:100svh;padding-bottom:185px;padding-right:95px}.data-art{max-width:100%;min-width:0}.metrics{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr) minmax(0,.9fr)}.charts{grid-template-columns:minmax(0,1fr) 120px}.chart-main{min-width:0}.mini-ring{width:35px;height:35px;right:10px}.landscape{height:300px}}@media(min-width:721px) and (max-width:1100px){.story{padding-right:65px;padding-bottom:200px}.charts{grid-template-columns:minmax(0,1fr) 90px}.metrics strong{font-size:17px}}

/* Fit the login to the visible viewport; decorative content yields to the form. */
.login-layout{height:100svh;min-height:0}
.story{height:100%;min-height:0;min-width:0;display:flex;flex-direction:column;align-items:stretch;gap:clamp(12px,2svh,24px);padding:clamp(18px,3.5svh,40px) clamp(40px,6vw,100px) clamp(18px,3svh,32px) clamp(24px,4.5vw,86px)}
.brand{align-self:flex-start;flex-shrink:0;padding:clamp(10px,1.5svh,15px) 20px 10px;border-radius:16px}
.brand img{width:clamp(145px,24svh,230px)}
.brand b{font-size:clamp(20px,3svh,31px)}
.brand>span{padding-left:0;text-align:center;font-size:clamp(8px,1.1svh,11px);letter-spacing:clamp(3px,.5svh,6px)}
.story-copy{margin:0;flex-shrink:0}
.eyebrow{margin-bottom:clamp(8px,1.5svh,15px)}
h1{font-size:clamp(30px,min(4.4vw,7svh),64px);letter-spacing:-1.6px}
.intro{font-size:clamp(16px,2.6svh,23px);margin:clamp(10px,1.8svh,18px) 0 0}
.data-art{display:flex;flex-direction:column;flex:1;min-height:0;max-width:100%;position:relative}
.metrics{flex-shrink:0}
.metrics>div{padding:clamp(12px,1.7svh,16px) 14px}
.metrics strong{font-size:clamp(18px,2.8svh,25px)}
.metrics>div:first-child strong{font-size:clamp(18px,2.8svh,24px)}
.metrics small{font-size:clamp(13px,2svh,18px)}
.metrics span{font-size:11px;margin-bottom:6px}
.charts{flex:1;min-height:0;max-height:clamp(105px,22svh,210px);margin-top:clamp(10px,2svh,20px);grid-template-columns:minmax(0,1fr) clamp(75px,14svh,120px)}
.chart-main{height:100%;min-height:0;display:flex;flex-direction:column}
.chart-main svg{flex:1;min-height:0;height:0;width:100%}
.months{flex-shrink:0;line-height:16px;font-size:9px}
.occupancy{width:100%;max-height:100%;aspect-ratio:1}
.occupancy svg{height:100%;max-height:100%}
.occupancy strong{font-size:clamp(18px,2.8svh,27px)}
.illustrative{flex-shrink:0;margin-top:8px;line-height:14px}
.landscape{height:clamp(120px,25svh,300px);opacity:.7;background:linear-gradient(#3e5d88,transparent 65%),url('/assets/login-mountains.webp') center bottom/cover no-repeat}
.sign-in{height:100%;min-height:0;padding:clamp(16px,3svh,40px) clamp(24px,3vw,70px);justify-content:center}
.form-wrap{margin:0;flex-shrink:0}
.short-line{margin-bottom:clamp(12px,2.5svh,30px)}
h2{font-size:clamp(28px,4.5svh,40px)}
.form-intro{font-size:clamp(15px,2.3svh,18px);margin-bottom:clamp(20px,4svh,40px)}
label{margin-bottom:8px}
.field{height:clamp(44px,7svh,56px);margin-bottom:clamp(14px,2.5svh,25px)}
.submit{padding:clamp(14px,2.3svh,19px)}
.help{margin-top:clamp(16px,3svh,30px)}
.session-note{margin-top:clamp(12px,3svh,32px)}
.error{margin:0 0 12px;padding:10px;line-height:1.4}
footer{position:absolute;bottom:14px;margin:0}
@media(min-width:721px) and (max-width:1100px){.story{padding-right:55px;padding-left:28px}.metrics>div{padding-left:10px;padding-right:10px}.metrics strong,.metrics>div:first-child strong{font-size:17px}.metrics small{font-size:13px}}
@media(max-height:760px){.session-note,footer{display:none}}
@media(max-height:700px){.short-line{display:none}.field{height:44px;margin-bottom:14px}label{margin-bottom:6px}.form-intro{margin-bottom:20px}.submit{padding:14px;margin-top:6px}.help{margin-top:16px}}
@media(max-width:720px){.data-art{display:none}.login-layout{display:flex;flex-direction:column}.story{height:auto;flex:0 0 auto;min-height:0;gap:12px;padding:16px 24px}.brand{padding:10px 15px}.brand img{width:145px}.brand b{font-size:21px}.brand>span{font-size:8px;letter-spacing:3px}.story-copy{margin:0}.eyebrow{display:none}h1{font-size:clamp(24px,4.8svh,32px);letter-spacing:-1px}.intro{font-size:14px;margin-top:8px}.sign-in{height:auto;flex:1;min-height:0;padding:16px 24px}.form-wrap{width:100%}.session-note,footer{display:none}}
@media(max-width:720px) and (max-height:700px){.intro{display:none}.sign-in{padding-top:12px;padding-bottom:12px}}
/* Keep controls reachable with a virtual keyboard or unusually high browser zoom. */
@media(max-height:460px){.login-layout{height:auto;min-height:100svh}.story{height:auto;min-height:0;flex:0 0 auto;padding:16px 24px}.story-copy,.data-art,.landscape{display:none}.sign-in{height:auto;min-height:380px;padding:20px 24px}}

@media(min-width:721px){.intro{white-space:nowrap;font-size:clamp(12px,1.55vw,23px)}}

/* Brand belongs to the sign-in panel; keep the form within the viewport. */
.sign-in .brand{display:flex;width:max-content;max-width:100%;margin:0 auto clamp(16px,3svh,32px);padding:0;border-radius:0;background:transparent;align-self:center}
.sign-in .brand img{width:clamp(135px,20svh,200px)}
.sign-in .brand b{font-size:clamp(20px,3svh,28px)}
@media(max-height:700px){.sign-in{padding-top:12px;padding-bottom:12px}.sign-in .brand{margin-bottom:14px}.sign-in .brand img{width:140px}h2{font-size:28px}.form-intro{font-size:15px;margin-bottom:14px}.field{height:40px;margin-bottom:12px}.help{margin-top:12px}}
@media(max-width:720px){.sign-in .brand{margin-bottom:16px}.sign-in .brand img{width:145px}}

/* Anchor the brand to the top-right of the white sign-in panel. */
.sign-in{padding-top:clamp(105px,17svh,150px)}
.sign-in>.brand{position:absolute;top:clamp(18px,3svh,32px);right:clamp(24px,3vw,70px);margin:0}
@media(max-height:700px){.sign-in{padding-top:100px;padding-bottom:12px}.sign-in>.brand{top:16px;margin:0}}
@media(max-width:720px){.sign-in{padding-top:100px}.sign-in>.brand{top:16px;right:24px;margin:0}}
@media(max-height:460px){.sign-in{padding-top:100px;min-height:460px}}
