.spinner-container{justify-content:center;align-items:center;display:flex}.spinner-container.full-screen{z-index:9999;background:#ffffffb3;position:fixed;inset:0}.spinner{box-sizing:border-box;border:.1875rem solid #0000001a;border-top-color:#3498db;border-radius:50%;animation:.8s linear infinite spin}.spinner.sm{border-width:.125rem;width:1.25rem;height:1.25rem}.spinner.md{border-width:.1875rem;width:2.5rem;height:2.5rem}.spinner.lg{border-width:.3125rem;width:3.75rem;height:3.75rem}@keyframes spin{to{transform:rotate(360deg)}}.modal-overlay{z-index:999;-webkit-backdrop-filter:blur(.125rem);backdrop-filter:blur(.125rem);background:#0006;transition:opacity .18s;animation:.2s ease-out fadeIn;position:fixed;inset:0}.modal-overlay.overlay-closing{animation:.22s forwards fadeOut}.modal-content{z-index:1000;background:#fff;border-radius:.75rem;flex-direction:column;align-items:center;max-width:34.375rem;max-height:80dvh;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 1.25rem 1.5625rem -.3125rem #0000001a,0 .625rem .625rem -.3125rem #0000000a}.modal-content:focus{outline:none}.modal-content.overlay-closing{animation:.22s forwards modalFadeOut}@media (max-width:30rem){.modal-content{will-change:transform, bottom, max-height;border-radius:1.25rem 1.25rem 0 0;width:100%;max-width:none;height:auto;max-height:100dvh;transition:transform .22s cubic-bezier(.16,1,.3,1),bottom .2s,max-height .2s;animation:.3s cubic-bezier(.16,1,.3,1) slideUp;top:auto;bottom:0;left:0;transform:none}.modal-content.dragging{transition:none}.modal-content.swipe-closing{transition:transform .22s cubic-bezier(.16,1,.3,1)}.modal-content.overlay-closing{animation:.22s cubic-bezier(.16,1,.3,1) forwards slideDown}}.modal-header{flex-direction:column;justify-content:center;align-items:center;gap:1rem;margin:1rem;display:flex}@media (max-width:30rem){.modal-header{touch-action:none;width:calc(100% - 2rem)}.modal-header:before{content:"";background:#d1d5db;border-radius:62.4375rem;width:2.75rem;height:.25rem}}.modal-header .icon{border-radius:50%;justify-content:center;align-items:center;width:5rem;height:5rem;display:flex}.modal-header .icon.success{color:#2e7d32;background-color:#e4ffe6}.modal-header .icon.error{color:#e53935;background-color:#ffe8e8}.modal-header .icon.warn{color:#ff781d;background-color:#ffefe4}.modal-header .icon.info{color:#284eea;background-color:#e7ecff}.modal-header .title{color:#222;font-size:1.25rem;font-weight:500}.modal-header .modal-title{color:#1a1a1a;margin:0;font-size:1.125rem;font-weight:700}.modal-header .modal-close-btn{cursor:pointer;color:#6b7280;background:#f3f4f6;border:none;border-radius:50%;justify-content:center;align-items:center;width:2rem;height:2rem;transition:all .2s;display:flex}.modal-header .modal-close-btn:hover{color:#111;background:#e5e7eb}.modal-body{text-align:center;color:#666;flex:1;width:100%;min-width:23.75rem;padding:0 1.5rem;font-size:1rem;line-height:1.5;overflow-y:auto}.modal-footer{border-top:.0625rem solid #e5e7eb;justify-content:center;gap:.75rem;width:100%;padding:1rem;display:flex}.modal-footer.has-secondary{justify-content:space-between}.modal-btn{cursor:pointer;border:none;border-radius:.5rem;padding:.625rem 1.25rem;font-size:1rem;transition:filter .2s,transform .1s}.modal-btn:active{transform:scale(.98)}.modal-btn.btn-primary{color:#fff;background-color:#284eea}.modal-btn.btn-primary:disabled{color:#ccc;cursor:not-allowed;background-color:#e4e4e4}.modal-btn.btn-outline{color:#284eea;background-color:#fff;border:.0625rem solid #284eea}.modal-btn.btn-outline:disabled{color:#ccc;cursor:not-allowed;background-color:#e4e4e4}.modal-btn.btn-secondary{color:#222}.modal-btn.btn-destructive{color:#dc2626;background-color:#fee2e2}.modal-btn.btn-destructive:hover{background-color:#fecaca}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes modalFadeOut{0%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-48%)scale(.98)}}
