/* Weather remains behind the campus and never intercepts login interactions. */
.campus-weather{position:absolute;top:62px;right:166px;z-index:2;display:flex;align-items:center;gap:10px;font-size:12px;color:#425a6d;line-height:1.5}
.campus-weather a{font-size:9px;color:inherit;opacity:.65;text-decoration:none}
.campus-weather a:hover,.campus-weather a:focus-visible{text-decoration:underline;opacity:1}
[data-sky="night"] .campus-weather{color:#c5d4e6}
.weather-cloud{display:none;width:240px}
.weather-cloud-0{top:8%;left:0;animation-delay:-7s;animation-duration:65s}
.weather-cloud-1{top:24%;left:0;animation-delay:-29s;animation-duration:75s;width:300px}
.weather-cloud-2{top:38%;left:0;animation-delay:-47s;animation-duration:85s}
body:is([data-weather="cloudy"],[data-weather="overcast"],[data-weather="rain"],[data-weather="snow"],[data-weather="fog"]) .weather-cloud{display:block}
body[data-weather="clear"] .cloud-three{opacity:.25}
body:is([data-weather="overcast"],[data-weather="rain"],[data-weather="snow"],[data-weather="fog"]) :is(.campus-sun,.campus-moon){opacity:.15}
body:is([data-weather="overcast"],[data-weather="rain"],[data-weather="snow"],[data-weather="fog"]) .campus-stars{opacity:.08}
body.portal-home.campus-scene[data-sky="day"]:is([data-weather="overcast"],[data-weather="rain"],[data-weather="snow"],[data-weather="fog"]){background:linear-gradient(180deg,#b6c7d3,#d9e0e3 65%,#d9d1c5)!important}
body.portal-home.campus-scene[data-sky="dusk"]:is([data-weather="overcast"],[data-weather="rain"],[data-weather="snow"],[data-weather="fog"]){background:linear-gradient(180deg,#77859c,#b0a7b0 65%,#a99b91)!important}
.campus-precipitation{position:absolute;inset:0;overflow:hidden;z-index:4;pointer-events:none;display:none}
body:is([data-weather="rain"],[data-weather="snow"]) .campus-precipitation{display:block}
.campus-precipitation i{position:absolute;top:-30px;left:var(--x);opacity:.4;will-change:transform}
[data-weather="rain"] .campus-precipitation i{width:1px;height:18px;background:linear-gradient(transparent,#d3e4ee);animation:campus-rain 1.3s linear infinite;animation-delay:var(--delay)}
[data-weather="snow"] .campus-precipitation i{width:4px;height:4px;border-radius:50%;background:#fff;opacity:.65;animation:campus-snow var(--duration) linear infinite;animation-delay:var(--delay)}
@keyframes campus-rain{to{transform:translate(-70px,105dvh)}}
@keyframes campus-snow{to{transform:translate(55px,105dvh)}}
body[data-weather="fog"] .campus-sky:after{content:"";position:absolute;inset:40% 0 0;background:linear-gradient(transparent,#c7d1d233);z-index:4}
@media(prefers-reduced-motion:reduce){.campus-precipitation{display:none!important}.weather-cloud{animation:none!important;left:60%}.weather-cloud-1{left:15%}.weather-cloud-2{left:75%}}
@media(max-width:760px){.campus-weather{position:relative;top:auto;right:auto;justify-content:center;margin:0 auto 10px;color:var(--theme-muted)!important;font-size:11px}body.portal-home.campus-scene[data-sky][data-weather]{background:var(--theme-bg)!important}}
body.portal-home.campus-scene[data-sky="day"]:is([data-weather="overcast"],[data-weather="rain"],[data-weather="snow"],[data-weather="fog"]):not(.no-campus){background:linear-gradient(180deg,#b6c7d3,#d9e0e3 65%,#d9d1c5)!important}
body.portal-home.campus-scene[data-sky="dusk"]:is([data-weather="overcast"],[data-weather="rain"],[data-weather="snow"],[data-weather="fog"]):not(.no-campus){background:linear-gradient(180deg,#77859c,#b0a7b0 65%,#a99b91)!important}
body.portal-home.campus-scene[data-sky="day"] .campus-caption h1 em{color:#41677f!important}
body[data-sky="day"]:is([data-weather="overcast"],[data-weather="rain"],[data-weather="snow"],[data-weather="fog"]) .moving-cloud{filter:brightness(.88) saturate(.25);opacity:.75}
@media(max-width:760px){body.portal-home.campus-scene[data-sky][data-weather]:not(.no-campus){background:var(--theme-bg)!important}}
body[data-sky="night"] .campus-sun,body:is([data-sky="day"],[data-sky="dusk"]) .campus-moon{opacity:0!important}
/* One aligned desktop information group; the weather sits with the clock. */
@media(min-width:761px){
 body.campus-scene .portal-topbar .campus-time{align-items:flex-end;gap:5px;margin-right:120px;line-height:1.4}
 .campus-clock{font-size:12px;letter-spacing:.02em}
 .campus-solar-details{order:3;font-size:10px;opacity:.7}
 .campus-time .campus-weather{position:static;display:flex;justify-content:flex-end;gap:8px;font-size:12px;color:inherit;line-height:1.4}
 .campus-weather a{font-size:8px;opacity:.5}
}
@media(max-width:760px){body.campus-scene .portal-topbar .campus-time{display:flex;position:absolute;top:64px;left:0;right:0;margin:0;align-items:center}.campus-time .campus-clock,.campus-time .campus-solar-details{display:none}.campus-time .campus-weather{margin:0}body.campus-scene .portal-landing{margin-top:30px}}

/* Precipitation and mist sit in front of the school illustration, below controls. */
body.campus-scene .portal-landing{position:relative;z-index:2}
body.campus-scene .portal-topbar,body.campus-scene>footer{z-index:2}
body.campus-scene .campus-precipitation{position:fixed;inset:0;z-index:0;pointer-events:none}
body[data-weather=rain] .campus-precipitation i{top:-70px;height:24px;width:1.3px;opacity:.65;background:linear-gradient(transparent,#e4f2ff 30%,#b4d2e4);animation:campus-rain var(--fall-speed) linear infinite;animation-delay:var(--delay)}
body[data-rain-intensity=light] .campus-precipitation i{height:15px;width:1px;opacity:.45;animation-duration:calc(var(--fall-speed)*1.65)}
body[data-rain-intensity=light] .campus-precipitation i:nth-child(n+33){display:none}
body[data-rain-intensity=moderate] .campus-precipitation i:nth-child(n+73){display:none}
body[data-rain-intensity=heavy] .campus-precipitation i{height:38px;width:1.7px;opacity:.82;animation-duration:calc(var(--fall-speed)*.7)}

@keyframes campus-rain{from{transform:translate(50px,-50px) rotate(12deg)}to{transform:translate(-145px,calc(100dvh + 110px)) rotate(12deg)}}
body[data-weather=rain] .campus-foreground{filter:brightness(.83) saturate(.67)}
body[data-weather=rain][data-rain-intensity=heavy] .campus-foreground{filter:brightness(.67) saturate(.48) contrast(.9)}
body[data-weather=rain][data-sky=night] .campus-foreground{filter:brightness(.36) saturate(.38)}
body[data-weather=fog] .campus-sky:after{display:none}
.campus-fog{display:none;position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;background:linear-gradient(180deg,#e5eceb15 10%,#e5eceb66 50%,#edf0eec9 100%)}
body[data-weather=fog] .campus-fog{display:block}
.campus-fog i{position:absolute;left:-20%;width:140%;height:48%;top:45%;background:radial-gradient(ellipse,#f2f4edbb,transparent 68%);filter:blur(22px);animation:campus-mist 18s ease-in-out infinite alternate}
.campus-fog i:nth-child(2){top:20%;left:-40%;opacity:.65;animation-duration:25s;animation-delay:-9s}
.campus-fog i:nth-child(3){top:65%;opacity:.9;animation-duration:32s;animation-delay:-17s}
@keyframes campus-mist{to{transform:translate(12%,4%)}}
body[data-weather=fog] .campus-foreground{filter:contrast(.58) saturate(.42) brightness(1.13)}
body[data-weather=fog][data-sky=night] .campus-fog{background:linear-gradient(180deg,#56687d15,#74859288)}
body[data-weather=fog][data-sky=night] .campus-fog i{background:radial-gradient(ellipse,#92a0b277,transparent 68%)}
body[data-weather=fog][data-sky=night] .campus-foreground{filter:brightness(.52) contrast(.6) saturate(.35)}
@media(prefers-reduced-motion:reduce){.campus-fog i{animation:none}.campus-precipitation{display:none!important}}
@media(max-width:760px){body.campus-scene .campus-fog,body.campus-scene .campus-precipitation{display:none!important}}

body:is([data-weather=rain],[data-weather=fog],[data-weather=overcast],[data-weather=snow]) :is(.campus-sun,.campus-moon){opacity:0!important}
body[data-weather=fog] .weather-cloud{display:none}
body[data-weather=rain] .weather-cloud{filter:brightness(.67) saturate(.15);opacity:.7}
body.portal-home.campus-scene[data-sky=day][data-weather=rain][data-rain-intensity=heavy]:not(.no-campus){background:linear-gradient(180deg,#788e9f,#b2bec7 65%,#a7afb0)!important}
body:is([data-weather=rain],[data-weather=fog],[data-weather=overcast],[data-weather=snow]) :is(.campus-sun,.campus-moon){visibility:hidden}

/* Snow grades retain the same calm illustration style. */
body[data-weather=snow] .campus-precipitation i{display:block;top:-30px;width:4px;height:4px;border-radius:50%;opacity:.78;background:#fff;box-shadow:0 0 3px #fff7;animation:campus-snow var(--duration) linear infinite;animation-delay:var(--delay)}
body[data-snow-intensity=light] .campus-precipitation i{width:3px;height:3px;opacity:.65;animation-duration:calc(var(--duration)*1.35)}
body[data-snow-intensity=light] .campus-precipitation i:nth-child(n+25){display:none}
body[data-snow-intensity=moderate] .campus-precipitation i:nth-child(n+65){display:none}
body[data-snow-intensity=moderate] .campus-precipitation i:nth-child(3n){width:5px;height:5px}
body[data-snow-intensity=heavy] .campus-precipitation i{width:6px;height:6px;opacity:.9;animation-duration:calc(var(--duration)*.7)}
body[data-snow-intensity=heavy] .campus-precipitation i:nth-child(3n){width:4px;height:4px;opacity:.7;animation-duration:calc(var(--duration)*.9)}
body[data-snow-intensity=heavy] .campus-precipitation i:nth-child(5n){width:8px;height:8px;filter:blur(.7px)}
@keyframes campus-snow{0%{transform:translate(-12px,-25px)}50%{transform:translate(28px,52dvh)}100%{transform:translate(5px,calc(100dvh + 60px))}}
body[data-weather=snow] .campus-foreground{filter:saturate(.68) brightness(1.03)}
body[data-weather=snow][data-snow-intensity=heavy] .campus-foreground{filter:saturate(.45) brightness(1.07) contrast(.85)}
body[data-weather=snow][data-sky=night] .campus-foreground{filter:brightness(.5) saturate(.4)}
