@keyframes page-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes soft-pulse{0%,100%{box-shadow:0 0 0 0 #2b8fff00}50%{box-shadow:0 0 0 7px #2b8fff18}}
@keyframes progress-in{from{opacity:.35;transform:translateX(8px)}to{opacity:1;transform:none}}
main{animation:page-in .38s ease-out}
.screen:not([hidden]),#dashboard:not([hidden]),#loginPanel:not([hidden]){animation:page-in .3s ease-out}
.choice-card,.admin-card,.vehicle-picker label,button{transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease,background-color .18s ease}
.choice-card:hover,.vehicle-picker label:hover,.admin-card:hover{transform:translateY(-2px);box-shadow:0 12px 28px #050a1270}
button:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 8px 20px #0875dc35}
.progress-list li.active{animation:soft-pulse 1.7s ease-in-out infinite,progress-in .25s ease-out}
.progress-list li.done{animation:progress-in .25s ease-out}
.brand-mark{animation:soft-pulse 2.3s ease-in-out infinite}
@media(max-width:600px){body{padding:16px 0}main{width:min(94vw,620px)}.instructions,.installer-panel,.create-box{padding:15px}.choice-card{padding:15px}.progress-list li{padding:11px 12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}
