.intro{transition:opacity .8s ease,visibility .8s ease}body.ready .intro{opacity:0;visibility:hidden;pointer-events:none}.website{transition:opacity .8s ease,visibility .8s ease}.lamp{animation:lampFloat 6s ease-in-out infinite}@keyframes lampFloat{0%{transform:translateY(0)}50%{transform:translateY(-5px)}to{transform:translateY(0)}}.lamp-light{transition:opacity .25s ease,filter .25s ease}.lamp-light.active{animation:lightPulse 5s ease-in-out infinite}@keyframes lightPulse{0%,to{opacity:.85;filter:blur(55px)}50%{opacity:1;filter:blur(75px)}}.pull-handle{transition:transform .25s ease}.pull-switch:hover .pull-handle{transform:scale(1.08)}.pull-switch.pulling .pull-handle{animation:handleBounce .45s ease}@keyframes handleBounce{0%{transform:translateY(0)}35%{transform:translateY(70px)}65%{transform:translateY(40px)}to{transform:translateY(0)}}.pull-switch.pulling .pull-cable{animation:cableStretch .45s ease}@keyframes cableStretch{0%{height:80px}40%{height:145px}70%{height:110px}to{height:80px}}.hero{transition:opacity .8s ease,transform .8s ease}.hero-school img{animation:heroFloat 8s ease-in-out infinite}@keyframes heroFloat{0%{transform:translateY(0)}50%{transform:translateY(-10px)}to{transform:translateY(0)}}.login-card{transition:transform .45s cubic-bezier(.22,1,.36,1),box-shadow .45s ease}.login-card:hover{transform:translateY(-8px)}.login-button{transition:transform .25s ease,box-shadow .25s ease}.login-button:hover{transform:translateY(-3px)}.login-button:active{transform:scale(.98)}.hero-logo,.login-logo{animation:logoFloat 6s ease-in-out infinite}@keyframes logoFloat{0%{transform:translateY(0)}50%{transform:translateY(-6px)}to{transform:translateY(0)}}.bg-glow{animation:glowMove 12s ease-in-out infinite}@keyframes glowMove{0%{transform:translate(-50%) scale(1)}50%{transform:translate(-50%) scale(1.08)}to{transform:translate(-50%) scale(1)}}.clock{animation:clockAppear .8s ease}@keyframes clockAppear{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
