:root{--dur-1: .12s;--dur-2: .2s;--dur-3: .28s;--dur-4: .42s;--ease-out: cubic-bezier(.2, 0, 0, 1);--ease-in: cubic-bezier(.3, 0, .8, .15);--ease-spring: cubic-bezier(.34, 1.56, .64, 1)}:is(.btn,.cat,.tabs button,.access button,.round,.chip,.dock-item,.tile-pin,.menu button,.link-btn){transition:transform var(--dur-1) var(--ease-out),background-color var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out),border-color var(--dur-2) var(--ease-out),box-shadow var(--dur-2) var(--ease-out),opacity var(--dur-2) var(--ease-out),filter var(--dur-2) var(--ease-out)}:is(.btn,.cat,.tabs button,.access button,.round,.chip,.dock-item,.tile-pin,.menu button):active:not(:disabled){transform:scale(.96)}.btn-primary:hover:not(:disabled){box-shadow:0 4px 14px #4b80ff59,inset 0 1px #ffffff38}.tile{transition:transform var(--dur-2) var(--ease-out),box-shadow var(--dur-2) var(--ease-out)}.tile:active{transform:translateY(-1px) scale(.985)}.tile .app-icon{transition:transform var(--dur-3) var(--ease-spring)}.tile:hover .app-icon{transform:scale(1.06) rotate(-2deg)}.grid.enter>.tile,.panel.enter>.pkg{animation:rise-in var(--dur-3) var(--ease-out) both;animation-delay:calc(min(var(--i, 0),16)*18ms)}@keyframes rise-in{0%{opacity:0;transform:translateY(10px) scale(.98)}}.tile.reveal-wait,.grid.enter>.tile.reveal-wait{opacity:0;transform:translateY(18px) scale(.98);animation:none}.tile.reveal-in{animation:tile-reveal var(--dur-4) var(--ease-out) both;animation-delay:calc(min(var(--n, 0),8)*45ms)}@keyframes tile-reveal{0%{opacity:0;transform:translateY(18px) scale(.98)}}.tile.changed{animation:tile-changed .9s var(--ease-out) both;animation-delay:calc(min(var(--n, 0),16)*30ms)}.tile.changed>.tile-meta,.tile.changed>.btn{animation:morph-in var(--dur-3) var(--ease-out) both;animation-delay:calc(min(var(--n, 0),16)*30ms)}@keyframes tile-changed{0%{box-shadow:0 0 #4b80ff80,var(--shadow)}to{box-shadow:0 0 0 12px #4b80ff00,var(--shadow)}}.access,.cats{position:relative}.slider{position:absolute;z-index:0;border-radius:7px;pointer-events:none;background:var(--glass-strong);box-shadow:0 1px 3px #0000001f}.slider.moving{transition:left var(--dur-3) var(--ease-out),top var(--dur-3) var(--ease-out),width var(--dur-3) var(--ease-out),height var(--dur-3) var(--ease-out)}.tabs button,.access button,.cat{position:relative;z-index:1}.tabs button.active,.access button.active{background:transparent;box-shadow:none}.access .slider{border-radius:9px}.cats .slider{border-radius:15px;background:var(--text);box-shadow:none}.cat.active{background:transparent;border-color:transparent;color:var(--bg)}.page{scrollbar-gutter:stable}.page-inner.page-enter{animation:page-in var(--dur-3) var(--ease-out) both}@keyframes page-in{0%{opacity:0;transform:translateY(6px)}}.tile-pin.pop{animation:pin-pop var(--dur-4) var(--ease-spring)}@keyframes pin-pop{0%{transform:scale(.6) rotate(-30deg)}60%{transform:scale(1.25) rotate(8deg)}}.tile.pin-in{animation:pin-in var(--dur-4) var(--ease-spring) both}@keyframes pin-in{0%{opacity:0;transform:scale(.8);box-shadow:0 0 #4b80ff99,var(--shadow)}60%{box-shadow:0 0 0 10px #4b80ff00,var(--shadow)}}.tile.pin-out{animation:pin-out .22s var(--ease-in) both}@keyframes pin-out{to{opacity:0;transform:scale(.85)}}.tile-progress.enter{animation:morph-in var(--dur-2) var(--ease-out) both}@keyframes morph-in{0%{opacity:0;transform:scale(.94)}}.bar>i{position:relative;overflow:hidden;transition:width var(--dur-3) var(--ease-out)}.bar:not(.indeterminate)>i:after{content:"";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);animation:shimmer 1.2s linear infinite}@keyframes shimmer{to{transform:translate(100%)}}.tile.flash-ok{animation:flash-ok .9s var(--ease-out)}@keyframes flash-ok{0%{box-shadow:0 0 #45c9838c,var(--shadow)}to{box-shadow:0 0 0 14px #45c98300,var(--shadow)}}.tile.flash-ok .badge.installed .icon{animation:pop-in var(--dur-4) var(--ease-spring) both}@keyframes pop-in{0%{transform:scale(0)}}.tile.flash-error{animation:shake .42s var(--ease-out)}@keyframes shake{20%{transform:translate(-6px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}.overlay.open{animation:fade-in var(--dur-2) var(--ease-out) both}.overlay.open .sheet{animation:sheet-in var(--dur-3) var(--ease-out) both}.overlay.leaving{animation:fade-out .16s var(--ease-in) both}.overlay.leaving .sheet{animation:sheet-out .16s var(--ease-in) both}@keyframes fade-in{0%{opacity:0}}@keyframes fade-out{to{opacity:0}}@keyframes sheet-in{0%{opacity:0;transform:translateY(10px) scale(.96)}}@keyframes sheet-out{to{opacity:0;transform:translateY(6px) scale(.97)}}.menu{transform-origin:top right;animation:menu-in var(--dur-2) var(--ease-out) both}.menu.leaving{animation:menu-out .14s var(--ease-in) both}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px) scale(.94)}}@keyframes menu-out{to{opacity:0;transform:translateY(-2px) scale(.96)}}.log-sheet.open{animation:log-in var(--dur-3) var(--ease-out) both}.log-sheet.leaving{animation:log-out .16s var(--ease-in) both}@keyframes log-in{0%{opacity:0;transform:translate(-50%,16px)}}@keyframes log-out{to{opacity:0;transform:translate(-50%,12px)}}.toast{animation:toast-in var(--dur-3) var(--ease-spring) both}.toast.leaving{animation:toast-out .16s var(--ease-in) both}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-12px) scale(.96)}}@keyframes toast-out{to{opacity:0;transform:translate(-50%,-8px) scale(.98)}}.chip.pulse .dot.ok{animation:ring .9s var(--ease-out)}@keyframes ring{0%{box-shadow:0 0 #45c983b3}to{box-shadow:0 0 0 10px #45c98300}}.dot{transition:background-color var(--dur-2) var(--ease-out)}.spinning .icon{animation:spin .9s linear infinite}.code-boxes input{transition:border-color var(--dur-2) var(--ease-out),box-shadow var(--dur-2) var(--ease-out)}.code-boxes input.filled{border-color:var(--accent);animation:digit-in var(--dur-2) var(--ease-spring)}@keyframes digit-in{0%{transform:scale(.88)}}@media (prefers-reduced-motion: reduce){*:not(.spinner):not(.bar>i),*:before,*:after{animation-duration:1ms!important;animation-delay:0ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}}
