.login-body{--login-gutter:clamp(32px,4.4vw,80px);overflow-x:hidden}
.login-body .login-page{display:grid;grid-template-columns:minmax(390px,.4fr) minmax(0,.6fr);min-height:100svh;max-width:1920px;margin:auto}
.login-body .login-panel{position:relative;z-index:2;display:flex;flex-direction:column;padding:42px 36px 28px var(--login-gutter)}
.login-body .login-brand{align-self:flex-start}
.login-body .login-content{width:min(100%,420px);margin:auto 0;padding:58px 0 54px}
.login-body h1{font-size:clamp(54px,4.5vw,80px);line-height:1.015;letter-spacing:-.035em}
.login-body h1 em{font-weight:400;color:var(--amber)}
.login-body .login-title-break{display:none}
.login-body .login-description{max-width:32ch;margin-top:24px;color:var(--muted);font-size:14px;line-height:1.75}
.login-body .login-form{max-width:350px;margin-top:38px}
.login-body .login-form label{display:block;margin-bottom:9px;font-size:12px;font-weight:650;color:var(--paper)}
.login-body .password-field{position:relative;display:flex;align-items:center;min-height:56px;border:1px solid #405760;border-radius:8px;background:#10222b;transition:border-color .18s,background .18s,box-shadow .18s}
.login-body .password-field:focus-within{border-color:var(--amber);background:#132832;box-shadow:0 0 0 3px #efbd7212}
.login-body .password-lock{position:absolute;left:16px;pointer-events:none;width:18px;height:18px;color:var(--muted)}
.login-body .password-field input{width:100%;min-width:0;padding:16px 54px 16px 45px;border:0;outline:none;border-radius:8px;background:transparent;color:var(--paper);font-size:16px;letter-spacing:.06em}
.login-body .password-field:has(input[aria-invalid=true]){border-color:var(--danger)}
.login-body .password-field input:focus-visible{outline:none}
.login-body .password-toggle{position:absolute;right:4px;width:44px;height:44px}
.login-body .eye-closed{display:none}
.login-body .password-toggle[aria-pressed=true] .eye-open{display:none}
.login-body .password-toggle[aria-pressed=true] .eye-closed{display:block}
.login-body .password-feedback{display:flex;flex-wrap:wrap;gap:3px 14px;min-height:34px;padding-top:8px;color:var(--muted);font-size:10px;line-height:1.5}
.login-body #caps-lock{color:var(--amber)}
.login-body .password-feedback:has(#caps-lock:not([hidden])) #password-help{display:none}
.login-body .login-error{margin:2px 0 16px;color:var(--danger);font-size:12px;line-height:1.65}
.login-body .login-error a{display:inline-block;margin-top:5px;text-decoration-thickness:1px}
.login-body .login-submit{width:100%;min-height:54px;justify-content:space-between;padding:14px 19px;font-size:12px;letter-spacing:.015em}
.login-body .submit-arrow{transition:transform .25s var(--ease)}
.login-body .login-submit:hover .submit-arrow{transform:translateX(3px)}
.login-body .submit-spinner{display:none;stroke-dasharray:33 18;animation:login-spinner .8s linear infinite}
.login-body .login-form[aria-busy=true] .submit-arrow{display:none}
.login-body .login-form[aria-busy=true] .submit-spinner{display:block}
.login-body .demo-access{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 12px;max-width:350px;margin-top:17px;font-size:10px;color:var(--muted)}
.login-body .demo-access code{font:inherit;color:var(--paper)}
.login-body .demo-access button{display:inline-flex;align-items:center;gap:2px;min-height:44px;margin-right:-5px;padding:3px 0;border:0;background:transparent;color:var(--amber);font-size:10px;transition:color .15s}
.login-body .demo-access button:hover{color:var(--amber-light);text-decoration:underline;text-underline-offset:4px}
.login-body .demo-access .icon{width:14px;height:14px}
.login-body .login-footer{display:flex;flex-wrap:wrap;align-items:center;gap:5px 14px;font-size:10px;color:var(--muted)}
.login-body .validation-label{display:inline-flex;align-items:center;gap:8px;color:#cfddd9}
.login-body .status-dot{width:5px;height:5px}
.login-body .login-room{position:relative;min-width:0;min-height:720px;overflow:hidden;isolation:isolate}
.login-body .room-stage{position:absolute;z-index:-1;inset:0 0 0 -80px;overflow:hidden}
.login-body .room-stage::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,var(--bg),transparent 20%),linear-gradient(0deg,var(--bg) 1%,#0a151ce8 8%,#0a151c96 20%,transparent 37%),linear-gradient(180deg,#0a151c85,transparent 16%)}
.login-body .room-pan{position:absolute;left:50%;top:47%;width:max(112%,132vh);aspect-ratio:3/2;transform:translate(calc(-50% + var(--pan-x,0px)),calc(-50% + var(--pan-y,0px)));transition:transform .65s var(--ease)}
.login-body .room-plane{position:relative;width:100%;height:100%;transform:scale(1);transition:transform .8s var(--ease);transform-origin:50% 48%}
.login-body .room-image{display:block;width:100%;height:100%;object-fit:cover;user-select:none;-webkit-user-drag:none}
.login-body .room-light{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 30% 36%,#efbd7222,transparent 60%);mix-blend-mode:screen;opacity:.3}
.login-body .room-spotlight{position:absolute;inset:0;pointer-events:none;opacity:0;background:radial-gradient(ellipse 400px 330px at var(--spot-x,50%) var(--spot-y,40%),#f7d79f16,transparent 76%);mix-blend-mode:screen;transition:opacity .5s}
.login-body .login-room[data-pointer=true] .room-spotlight{opacity:1}
.login-body .login-room[data-focus=library] .room-plane{transform:translate(5%,4%) scale(1.12)}
.login-body .login-room[data-focus=planning] .room-plane{transform:translate(-4%,4%) scale(1.12)}
.login-body .login-room[data-focus=council] .room-plane{transform:translate(0,-2%) scale(1.1)}
.login-body .room-toolbar{position:absolute;inset:37px 36px auto 22px;display:flex;justify-content:space-between;align-items:center;gap:18px;font-size:10px;color:var(--muted)}
.login-body .scene-disclosure{color:#c1cbd0}
.login-body .room-motion-control{display:inline-flex;align-items:center;gap:6px;min-width:44px;min-height:44px;padding:7px 0;border:0;background:transparent;color:#d0d8d9;font-size:10px;transition:color .2s}
.login-body .room-motion-control:hover{color:var(--amber)}
.login-body .room-motion-control .icon{width:14px;height:14px}
.login-body .motion-play{display:none}
.login-body .room-motion-control[aria-pressed=true] .motion-pause{display:none}
.login-body .room-motion-control[aria-pressed=true] .motion-play{display:block}
.login-body .motion-preference{font-size:10px;color:var(--muted)}
.login-body .room-hotspot{position:absolute;z-index:2;display:flex;align-items:center;gap:7px;min-height:44px;max-width:180px;padding:7px 3px;border:0;background:transparent;color:var(--paper);transform:translate(-50%,-50%);text-align:left;transition:opacity .3s}
.login-body .hotspot-library{left:29%;top:24%}
.login-body .hotspot-planning{left:67%;top:32%}
.login-body .hotspot-council{left:50%;top:55%}
.login-body .hotspot-mark{position:relative;display:block;flex:none;width:24px;height:24px;border:1px solid #efbd7299;border-radius:50%;background:#0a151cce;color:var(--amber);box-shadow:0 3px 12px #0005;transition:background .2s,color .2s,transform .3s var(--ease)}
.login-body .hotspot-mark::before,.login-body .hotspot-mark::after{content:"";position:absolute;left:7px;top:10px;width:8px;height:1px;background:currentColor}
.login-body .hotspot-mark::after{transform:rotate(90deg);transition:transform .25s var(--ease)}
.login-body .hotspot-label{padding:4px 8px;border-radius:4px;background:#0a151cdf;font-size:10px;line-height:1.6;white-space:nowrap;transition:color .2s,background .2s}
.login-body .room-hotspot:hover .hotspot-mark,.login-body .room-hotspot:focus-visible .hotspot-mark,.login-body .room-hotspot[aria-pressed=true] .hotspot-mark{background:var(--amber);color:var(--bg)}
.login-body .room-hotspot[aria-pressed=true] .hotspot-mark::after{transform:rotate(0)}
.login-body .room-hotspot[aria-pressed=true] .hotspot-label{color:var(--amber)}
.login-body .login-room[data-focus]:not([data-focus=overview]) .room-hotspot[aria-pressed=false]{opacity:.68}
.login-body .login-room[data-focus]:not([data-focus=overview]) .room-hotspot[aria-pressed=false]:hover,.login-body .login-room[data-focus]:not([data-focus=overview]) .room-hotspot[aria-pressed=false]:focus-visible{opacity:1}
.login-body .room-caption{position:absolute;left:clamp(24px,3.8vw,72px);right:40px;bottom:49px;max-width:475px}
.login-body .room-caption h2{font-size:clamp(32px,2.7vw,45px);line-height:1.08}
.login-body .room-caption p{max-width:44ch;margin-top:12px;color:#b6c5ca;font-size:12px;line-height:1.8}
.login-body .room-explore{display:flex;align-items:center;min-height:36px;margin-top:20px;color:var(--amber);font-size:10px}
.login-body #room-instruction,.login-body #room-reset{display:inline-flex;align-items:center;gap:8px}
.login-body #room-instruction .icon,.login-body #room-reset .icon{width:15px;height:15px}
.login-body #room-reset{min-height:44px;padding:6px 0;border:0;background:transparent;color:var(--amber);font-size:10px}
.login-body #room-reset:hover{text-decoration:underline;text-underline-offset:5px}
.login-body .login-room[data-ambient-paused=true] .ambient-loop{animation-play-state:paused}
.login-body .login-room[data-ambient-paused=true] .room-spotlight{opacity:0}
.login-body.login-ready .room-plane{animation:room-arrival .85s var(--ease) both}
.login-body.login-ready .room-caption{animation:caption-arrival .55s var(--ease) both}
.login-body.login-ready .room-light{animation:room-lamplight 11s ease-in-out infinite alternate}
@keyframes room-arrival{from{clip-path:inset(0 0 0 6%);filter:brightness(.78)}to{clip-path:inset(0);filter:brightness(1)}}
@keyframes caption-arrival{from{opacity:.7;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@keyframes room-lamplight{from{opacity:.3;transform:translateX(-1%)}to{opacity:.8;transform:translateX(1%)}}
@keyframes login-spinner{to{transform:rotate(360deg)}}
@media(min-width:1650px){.login-body .login-content{width:100%;max-width:470px}.login-body .login-title-break{display:block}.login-body .room-stage{left:-120px}.login-body .room-pan{width:max(116%,132vh)}}
@media(max-width:1199px) and (min-width:801px){.login-body{--login-gutter:32px}.login-body .login-page{grid-template-columns:minmax(360px,.42fr) minmax(0,.58fr)}.login-body .login-panel{padding-right:22px}.login-body h1{font-size:59px}.login-body .login-title-break{display:block}.login-body .login-description{font-size:12px;max-width:30ch}.login-body .room-pan{width:max(135%,128vh);left:49%}.login-body .room-toolbar{left:14px;right:24px}.login-body .room-motion-control span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.login-body .room-motion-control{padding:8px}.login-body .room-caption{left:26px;right:28px}.login-body .room-caption h2{font-size:35px}.login-body .hotspot-label{font-size:9px;padding:4px 6px}.login-body .hotspot-planning{left:65%}}
@media(max-height:780px) and (min-width:801px){.login-body .login-panel{padding-top:28px;padding-bottom:23px}.login-body .login-content{padding:36px 0}.login-body h1{font-size:clamp(54px,4.2vw,69px)}.login-body .login-description{margin-top:20px}.login-body .login-form{margin-top:28px}.login-body .login-room{min-height:700px}.login-body .room-toolbar{top:25px}.login-body .room-caption{bottom:35px}}
@media(max-width:800px){.login-body{--login-gutter:28px}.login-body .login-page{display:flex;flex-direction:column}.login-body .login-panel{min-height:100svh;padding:29px var(--login-gutter) 25px}.login-body .login-brand .brand-mark{width:34px;height:34px}.login-body .login-brand .brand-name{font-size:13px}.login-body .login-brand .brand-caption{font-size:9px}.login-body .login-content{width:100%;max-width:430px;margin:0 auto;padding:62px 0 55px}.login-body h1{font-size:clamp(53px,9.8vw,76px);line-height:1.04}.login-body .login-title-break{display:none}.login-body .login-description{max-width:33ch;margin-top:23px;font-size:13px}.login-body .login-form{max-width:none;margin-top:32px}.login-body .demo-access{max-width:none}.login-body .login-footer{width:100%;max-width:430px;margin:auto auto 0;font-size:9px;gap:4px 10px}.login-body .login-room{min-height:590px;margin-top:-20px}.login-body .room-stage{inset:0}.login-body .room-stage::after{background:linear-gradient(180deg,var(--bg),transparent 15%),linear-gradient(0deg,var(--bg),#0a151cdd 11%,#0a151c70 28%,transparent 48%)}.login-body .room-pan{top:39%;width:150%;max-width:900px}.login-body .room-toolbar{inset:20px 28px auto}.login-body .room-caption{left:28px;right:28px;bottom:31px;max-width:430px}.login-body .room-caption h2{font-size:36px}.login-body .room-caption p{font-size:12px}.login-body .room-explore{margin-top:15px}.login-body .hotspot-library{left:31%;top:26%}.login-body .hotspot-planning{left:68%;top:35%}.login-body .hotspot-council{left:51%;top:60%}.login-body .hotspot-label{font-size:9px}.login-body .room-motion-control{font-size:9px}}
@media(max-width:440px){.login-body{--login-gutter:25px}.login-body .login-content{padding-top:58px;padding-bottom:46px}.login-body h1{font-size:55px}.login-body .login-title-break{display:block}.login-body .login-description{max-width:29ch;font-size:12px}.login-body .login-room{min-height:540px}.login-body .room-pan{width:157%;top:37%}.login-body .room-toolbar{left:25px;right:25px}.login-body .room-caption{left:25px;right:25px;bottom:26px}.login-body .room-caption h2{font-size:33px}.login-body .room-caption p{font-size:11px;max-width:42ch}.login-body .hotspot-library{left:31%;top:27%}.login-body .hotspot-planning{left:66%;top:38%}.login-body .hotspot-label{padding:4px 6px}.login-body .hotspot-mark{width:22px;height:22px}.login-body .hotspot-mark::before,.login-body .hotspot-mark::after{top:9px;left:6px}.login-body .room-hotspot{gap:4px}.login-body .scene-disclosure{font-size:9px}.login-body .room-motion-control span{font-size:9px}}
@media(prefers-reduced-motion:reduce){.login-body .room-pan{transform:translate(-50%,-50%)}.login-body .room-plane,.login-body .login-room[data-focus] .room-plane{transform:none;animation:none;filter:none}.login-body .room-light,.login-body .room-spotlight{display:none}.login-body .room-caption{animation:none}.login-body .submit-spinner{animation:none}.login-body .login-submit:hover,.login-body .login-submit:hover .submit-arrow{transform:none}}

/* Shared pixel-art world, with readable interface typography. */
.login-body .room-image{image-rendering:pixelated}.login-body h1{font-family:var(--body);font-weight:600;font-size:clamp(40px,3.7vw,60px);letter-spacing:-.04em;line-height:1.13}.login-body h1 em{font-style:normal;font-weight:600}.login-body .room-caption h2{font-family:var(--body);font-size:clamp(25px,2.7vw,39px);font-weight:600;letter-spacing:-.035em;line-height:1.2}.login-body .hotspot-library{left:25%;top:31%}.login-body .hotspot-planning{left:55%;top:30%}.login-body .hotspot-council{left:64%;top:57%}
@media(max-width:800px){.login-body h1{font-size:clamp(40px,8vw,59px)}.login-body .room-caption h2{font-size:29px}.login-body .hotspot-library{left:26%;top:30%}.login-body .hotspot-planning{left:55%;top:28%}.login-body .hotspot-council{left:64%;top:57%}}
@media(max-width:440px){.login-body h1{font-size:43px}.login-body .login-title-break{display:none}.login-body .room-caption h2{font-size:27px}}