/* Seven-second sunrise; all final content remains the original semantic HTML. */
.sunrise-pending .campus-viewport{background:#000}
.sunrise-pending .campus-image,.sunrise-pending .campus-preview,.sunrise-pending .campus-stage,.sunrise-pending .campus-intro{visibility:hidden!important}
.campus-sunrise{position:absolute;z-index:0;pointer-events:none;max-width:none}
.campus[data-sunrise] .campus-stage{transition:opacity 1.2s ease}
.sunrise-active .campus-stage{opacity:0}
.sunrise-active .campus-intro,.sunrise-active .campus-intro>*{animation:none!important;opacity:1!important}
.sunrise-active .campus-veil{opacity:var(--sunrise-veil,0)}
.campus-intro .sunrise-char{display:inline!important;opacity:0}
.campus-intro .sunrise-char.typed{opacity:1}
.campus-intro .sunrise-char.caret{position:relative;opacity:1;color:transparent;text-shadow:none}
.sunrise-char.caret::after{content:'';position:absolute;left:0;top:.05em;height:1em;border-left:2px solid #f3d29a;animation:sunrise-caret .7s step-end infinite}
@keyframes sunrise-caret{50%{opacity:0}}
@media(prefers-reduced-motion:reduce){.campus-sunrise{display:none}.sunrise-pending .campus-image,.sunrise-pending .campus-stage,.sunrise-pending .campus-intro{visibility:visible!important}.sunrise-char{opacity:1!important}.sunrise-char.caret::after{display:none}}

/* Keep the remote visible and usable during loading and sunrise. Other overlays wait. */
:is(.sunrise-pending,.sunrise-running) :is(.cookie-banner,.back-to-top,.campus-mobile-tour,.campus-modes,.campus-hint,.campus-bottom){visibility:hidden!important;opacity:0!important;pointer-events:none!important}
