.toast-container{position:fixed;top:20px;right:20px;z-index:10000;display:flex;flex-direction:column;gap:12px;max-width:400px;pointer-events:none}.toast{display:flex;align-items:center;gap:12px;padding:16px;background:#fff;border-radius:8px;box-shadow:0 4px 12px #00000026,0 0 0 1px #0000000d;pointer-events:auto;min-width:320px;max-width:400px;transition:all .3s cubic-bezier(.4,0,.2,1);transform-origin:top right}.toast-enter{opacity:0;transform:translate(100%) scale(.95)}.toast-show{opacity:1;transform:translate(0) scale(1)}.toast-exit{opacity:0;transform:translate(100%) scale(.95)}.toast-success{border-left:4px solid #10b981}.toast-success .toast-icon{color:#10b981}.toast-error{border-left:4px solid #ef4444}.toast-error .toast-icon{color:#ef4444}.toast-warning{border-left:4px solid #f59e0b}.toast-warning .toast-icon{color:#f59e0b}.toast-info{border-left:4px solid #3b82f6}.toast-info .toast-icon{color:#3b82f6}.toast-icon{flex-shrink:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center}.toast-icon svg{width:100%;height:100%}.toast-message{flex:1;font-size:.875rem;line-height:1.5;color:#1f2937;word-break:break-word}.toast-close{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:4px;color:#6b7280;cursor:pointer;transition:all .2s;padding:0}.toast-close:hover{background:#0000000d;color:#1f2937}.toast-close:active{transform:scale(.95)}@media (max-width: 640px){.toast-container{top:10px;right:10px;left:10px;max-width:none}.toast{min-width:auto;max-width:none}}@media (prefers-color-scheme: dark){.toast{background:#1f2937;box-shadow:0 4px 12px #0000004d,0 0 0 1px #ffffff1a}.toast-message{color:#f3f4f6}.toast-close{color:#9ca3af}.toast-close:hover{background:#ffffff1a;color:#f3f4f6}}@media (prefers-reduced-motion: reduce){.toast{transition:opacity .2s}.toast-enter,.toast-exit{transform:none}}.lang-loader{position:fixed;top:0;left:0;right:0;bottom:0;background:#0000004d;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:9999;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.lang-loader.active{opacity:1;visibility:visible}.lang-loader-spinner{width:48px;height:48px;border:4px solid rgba(255,255,255,.2);border-top-color:#f97316;border-radius:50%;animation:spin .8s linear infinite}.page-loader{position:fixed;top:0;left:0;right:0;bottom:0;background:#1a365df2;z-index:10000;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:16px}.page-loader-spinner{width:60px;height:60px;border:5px solid rgba(255,255,255,.1);border-top-color:#f97316;border-radius:50%;animation:spin 1s linear infinite}.page-loader-text{color:#fff;font-size:.875rem;font-weight:500}@keyframes spin{to{transform:rotate(360deg)}}.spinner-inline{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:currentColor;border-radius:50%;animation:spin .6s linear infinite}.btn-loading{position:relative;color:transparent!important;pointer-events:none}.btn-loading:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}.skeleton{background:linear-gradient(90deg,#f0f0f0,#e0e0e0,#f0f0f0);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:4px}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-text{height:16px;margin-bottom:8px}.skeleton-title{height:24px;width:60%;margin-bottom:16px}.skeleton-avatar{width:48px;height:48px;border-radius:50%}@media (prefers-color-scheme: dark){.skeleton{background:linear-gradient(90deg,#2a2a2a,#3a3a3a,#2a2a2a);background-size:200% 100%}}@media (prefers-reduced-motion: reduce){.lang-loader-spinner,.page-loader-spinner,.spinner-inline,.btn-loading:after{animation:none}.skeleton{animation:none;background:#f0f0f0}}.progress-bar{position:fixed;top:0;left:0;height:3px;background:#f97316;z-index:10001;transition:width .3s ease}.progress-bar.indeterminate{animation:progress-indeterminate 1.5s ease-in-out infinite;width:30%!important}@keyframes progress-indeterminate{0%{left:0;width:0}50%{left:25%;width:50%}to{left:100%;width:0}}
