/* Editorial motion: short entrances, restrained interactions. */
nav a{position:relative}
nav a::after{content:'';position:absolute;bottom:-5px;left:0;width:100%;height:1px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .25s ease}
nav a:hover::after,nav a:focus-visible::after{transform:scaleX(1)}
.book img{transition:transform .4s ease,box-shadow .4s ease}
.book:hover img{transform:translateY(-7px) rotate(-1deg);box-shadow:16px 25px 32px #20231738}
.link{transition:color .2s ease,border-color .2s ease}
.link:hover{color:var(--red);border-color:var(--red)}
.reading-progress{position:fixed;top:0;left:0;right:0;height:2px;background:var(--red);transform:scaleX(0);transform-origin:left;z-index:50;pointer-events:none}
@media(prefers-reduced-motion:no-preference){
 .motion-enabled .hero .eyebrow{animation:arrive .75s both}
 .motion-enabled .hero h1{animation:arrive .9s .1s both}
 .motion-enabled .hero .intro{animation:arrive .9s .2s both}
 .motion-enabled .hero .link{animation:arrive .9s .3s both}
 .motion-enabled .shelf .book:first-child{animation:book-one 1.1s .15s both}
 .motion-enabled .shelf .book:last-child{animation:book-two 1.1s .3s both}
 .motion-enabled .shelf-note{animation:arrive 1s .5s both}
 .reveal-pending{opacity:0;transform:translateY(24px)}
 .reveal{transition:opacity .75s ease,transform .75s cubic-bezier(.2,.7,.3,1)}
 dialog[open]{animation:cover-open .25s ease both}
 @keyframes arrive{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
 @keyframes book-one{from{opacity:0;transform:translateY(35px) rotate(-12deg)}to{opacity:1;transform:translateY(0) rotate(-7deg)}}
 @keyframes book-two{from{opacity:0;transform:translateY(35px) rotate(12deg)}to{opacity:1;transform:translateY(0) rotate(7deg)}}
 @keyframes cover-open{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
}
@media(prefers-reduced-motion:reduce){
 .reveal-pending{opacity:1;transform:none}
 .reading-progress{display:none}
 .book:hover img{transform:none}
}
