::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#94a3b84d;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#94a3b880}#app{animation:fadeIn .25s ease-out}.progress-bar-fill{position:relative;overflow:hidden;transition:width .8s ease-out}.progress-bar-fill:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.15) 50%,transparent 100%);background-size:200% 100%;animation:shimmer 2s ease-in-out infinite}.glass-card{background:#1e293bb3;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(51,65,85,.5)}.fab{box-shadow:0 4px 20px #f59e0b66;transition:all .2s ease}.fab:hover{box-shadow:0 6px 28px #f59e0b8c;transform:translateY(-2px)}.fab:active{transform:translateY(0);box-shadow:0 2px 12px #f59e0b4d}input,select,textarea{font-size:16px!important}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.status-dot.active{animation:pulseSoft 2s ease-in-out infinite}.toast-enter{animation:slideRight .3s ease-out,fadeIn .3s ease-out}.toast-exit{animation:fadeOut .25s ease-in forwards}@keyframes fadeOut{to{opacity:0;transform:translate(20px)}}.card-interactive{transition:all .2s ease}.card-interactive:hover{border-color:#f59e0b4d;box-shadow:0 0 20px #f59e0b0d}.card-interactive:active{transform:scale(.985)}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px}.photo-grid img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;cursor:pointer;transition:transform .2s ease}.photo-grid img:hover{transform:scale(1.05)}.skeleton{background:linear-gradient(90deg,#3341554d 25%,#33415580,#3341554d 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:8px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.safe-bottom{padding-bottom:max(1rem,env(safe-area-inset-bottom))}.safe-top{padding-top:max(.75rem,env(safe-area-inset-top))}
