/* Shared rhythm: restrained distances, short feedback, and one easing curve. */
:root{--ease-out:cubic-bezier(.22,1,.36,1);--ease-in-out:cubic-bezier(.65,0,.35,1)}
.drawer-heading,.nav-backdrop{display:none}
.motion-pending{opacity:0;translate:0 18px}
.motion-enter{animation:content-reveal .65s var(--ease-out) var(--motion-delay,0ms) both}
.store-summary.motion-pending{translate:-22px 0}
.store-summary.motion-enter{animation-name:sidebar-reveal}
.search{transition:background .25s,box-shadow .25s,border-color .25s}
.search:focus-within{background:#fffefa;border-color:#c7cfbb;box-shadow:0 0 0 4px #6679540b}
#search-results:not([hidden]){animation:dropdown-reveal .22s var(--ease-out) both}
#search-results a{transition:background .2s,color .2s}
#search-results a:hover,#search-results a:focus-visible{background:var(--soft)}
.button,.icon-button,.reveal,.chip,.save{transition:background .22s,color .22s,border-color .22s,box-shadow .25s,transform .28s var(--ease-out)}
.button:active,.icon-button:active,.reveal:active,.chip:active{transform:scale(.96)}
.button svg,.text-link svg,.reveal svg,.card-store svg{transition:transform .3s var(--ease-out)}
.button:hover svg,.text-link:hover svg,.reveal:hover svg,.card-store:hover svg{transform:translateX(-3px)}
.coupon-card,.store-card,.category-tile{transition:transform .35s var(--ease-out),box-shadow .35s,border-color .3s}
.category-tile:hover{transform:translateY(-4px);border-color:#bbc6ac;box-shadow:0 12px 24px #282b2708}
.category-tile>svg,.step-icon svg{transition:transform .4s var(--ease-out)}
.category-tile:hover>svg,.steps-list>div:hover .step-icon svg{transform:translateY(-3px) rotate(-5deg)}
.chip.active{box-shadow:0 4px 12px #282b2712}
.hero-ticket{animation:ticket-arrive .65s var(--ease-out) backwards}
.floating-tag{animation:tag-arrive .65s var(--ease-out) .1s both}
.promo .promo-number{transition:transform .6s var(--ease-out)}
.promo:hover .promo-number{transform:translateY(-4px) rotate(-3deg)}
.brand img,.solo-logo img{transition:transform .35s var(--ease-out)}
.brand:hover img,.solo-logo:hover img{transform:rotate(-6deg)}
.nav-links>a:after{transition:transform .3s var(--ease-out);transform-origin:right}
.footer-top>div>a:not(.brand):not(.social){transition:color .2s,translate .25s var(--ease-out)}
.footer-top>div>a:not(.brand):not(.social):hover{color:var(--orange);translate:-3px 0}
details[open]>p{animation:dropdown-reveal .3s var(--ease-out)}
dialog[open]{animation:dialog-in .35s var(--ease-out)}
dialog[open]::backdrop{animation:backdrop-reveal .3s ease-out}
@keyframes content-reveal{from{opacity:0;translate:0 18px}to{opacity:1;translate:0 0}}
@keyframes sidebar-reveal{from{opacity:0;translate:-22px 0}to{opacity:1;translate:0 0}}
@keyframes dropdown-reveal{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
@keyframes ticket-arrive{from{opacity:0;transform:translateY(10px) rotate(-8deg)}to{opacity:1;transform:translateY(0) rotate(-5deg)}}
@keyframes tag-arrive{from{opacity:0;transform:translateY(8px) rotate(0)}to{opacity:1;transform:translateY(0) rotate(4deg)}}
@keyframes backdrop-reveal{from{opacity:0}to{opacity:1}}
@media(hover:hover){.coupon-card:hover,.store-card:hover{border-color:#c8d0bc;box-shadow:0 14px 30px #292e1f10}}
@media(max-width:800px){
 body.menu-open{overflow:hidden}
 .nav-backdrop{display:block;position:fixed;inset:0;background:#1e241a70;backdrop-filter:blur(5px);z-index:70;opacity:0;visibility:hidden;transition:opacity .35s ease,visibility .35s;cursor:default}
 body.menu-open .nav-backdrop{opacity:1;visibility:visible}
 .nav{display:flex!important;flex-direction:column;align-items:stretch;justify-content:flex-start;position:fixed;inset:0 0 0 auto;width:min(350px,calc(100% - 38px));max-width:none;margin:0;padding:25px 24px;background:var(--paper);z-index:80;overflow-y:auto;overscroll-behavior:contain;box-shadow:-20px 0 70px #161c171a;transform:translateX(105%);visibility:hidden;transition:transform .48s var(--ease-out),visibility .48s;gap:24px}
 .nav.open{transform:translateX(0);visibility:visible}
 .drawer-heading{display:flex;justify-content:space-between;align-items:center;padding-bottom:23px;border-bottom:1px solid var(--line)}
 .drawer-heading .brand{padding:0}
 .drawer-heading .brand>span{font-size:33px}
 .nav .nav-links{display:flex;flex-direction:column;align-items:stretch;gap:0}
 .nav .nav-links>a{padding:16px 12px;border-bottom:1px solid var(--line);font-size:15px;opacity:0;transform:translateX(14px);transition:opacity .3s ease,transform .4s var(--ease-out),color .2s,background .2s}
 .nav.open .nav-links>a{opacity:1;transform:translateX(0);transition-delay:calc(var(--nav-index,0)*35ms)}
 .nav-links>a:nth-child(2){--nav-index:1}.nav-links>a:nth-child(3){--nav-index:2}.nav-links>a:nth-child(4){--nav-index:3}.nav-links>a:nth-child(5){--nav-index:4}.nav-links>a:nth-child(6){--nav-index:5}
 .nav .nav-links>a.active{background:#e9ecdf;border-radius:8px;border-color:transparent;color:var(--green)}
 .nav .nav-links>a.active:after{display:none}
 .nav .nav-note{display:flex;margin-top:auto;padding-top:20px;border-top:1px solid var(--line);font-size:11px}
 .store-summary.motion-enter{animation-name:content-reveal}
}
@media(prefers-reduced-motion:reduce){
 *,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
 .motion-pending{opacity:1;translate:none}
 .nav .nav-links>a{opacity:1;transform:none}
}
