/* Lightweight motion: only opacity and transform, no layout animation. */
main{animation:none!important;overflow-anchor:none}
button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
button{transition:transform 120ms ease,opacity 120ms ease}
button:active:not(:disabled){transform:scale(.975)}
button:disabled{cursor:wait}
button:focus-visible,a:focus-visible{outline:3px solid #408b78;outline-offset:3px}
nav button.active:after{background:currentColor}
dialog[open]{animation:sheet-in 180ms ease-out}
dialog::backdrop{backdrop-filter:none;-webkit-backdrop-filter:none}
.app-boot{min-height:52dvh;display:grid;place-content:center;gap:16px;text-align:center;color:#103f46;font-size:14px}
.app-boot span{width:28px;height:28px;border:3px solid #dcefe5;border-top-color:#103f46;border-radius:50%;margin:auto;animation:boot-spin .8s linear infinite}
@keyframes boot-spin{to{transform:rotate(360deg)}}
@keyframes sheet-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){button{transition:none}dialog[open],.app-boot span{animation:none}}
