@keyframes vl-page-enter{from{opacity:.5;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes vl-dialog-enter{from{opacity:.4;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}
@keyframes vl-line-reveal{from{scale:0 1}to{scale:1 1}}
@keyframes vl-handwriting{from{stroke-dashoffset:220}to{stroke-dashoffset:0}}
@media(prefers-reduced-motion:no-preference){
 .hero-title .script-underline path{stroke-dasharray:220;animation:vl-handwriting 1s .45s cubic-bezier(.22,1,.36,1) both}
 .library-card,.chat-main,.teacher-sidebar,.student-sidebar{animation:vl-page-enter .42s cubic-bezier(.16,1,.3,1) both}
 dialog[open]{animation:vl-dialog-enter .28s cubic-bezier(.16,1,.3,1) both}
 .generated-art,.generated-approach,.library-intro>img{transform-style:preserve-3d;transition:transform .5s cubic-bezier(.2,.8,.2,1)}
 .library-card,.exam-card,.format-card{transition:box-shadow .3s,border-color .3s}
 .library-card:hover{border-color:#c9dce2;box-shadow:0 9px 26px #2548580a}
 button,.btn-primary,.btn-ghost{transition:background-color .2s,box-shadow .25s,translate .25s}
 button:active,.btn-primary:active,.btn-ghost:active{translate:0 1px}
 .library-tabs button,.teacher-sidebar a{transition:background-color .24s,color .24s,translate .24s}
}
.vl-scroll-progress{position:fixed;top:0;left:0;height:2px;width:100%;background:#783e48;transform-origin:left;scale:0 1;z-index:100;pointer-events:none}
@media(prefers-reduced-motion:reduce){.vl-scroll-progress{display:none}}
