.spinner{animation:1s linear infinite spin}.spinner-primary{color:var(--color-primary-600)}.spinner-muted{color:var(--text-muted)}.spinner-white{color:var(--bg-surface)}@keyframes spin{to{transform:rotate(360deg)}}.btn{justify-content:center;align-items:center;gap:var(--space-2);font-family:var(--font-sans);border-radius:var(--radius-md);cursor:pointer;padding:var(--space-2) var(--space-4);-webkit-user-select:none;user-select:none;border:1px solid #0000;outline:none;font-size:1rem;font-weight:500;transition:background-color .2s,color .2s,opacity .2s;display:inline-flex}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background-color:var(--color-primary-600);color:var(--bg-surface)}.btn-primary:hover:not(:disabled){background-color:var(--color-primary-700)}.btn-outline{border-color:var(--border-color);color:var(--text-primary);background-color:#0000}.btn-outline:hover:not(:disabled){background-color:var(--bg-main)}.btn-danger{background-color:var(--color-danger);color:var(--bg-surface)}.btn-danger:hover:not(:disabled){filter:brightness(.9)}.btn-ghost{color:var(--text-secondary);background-color:#0000}.btn-ghost:hover:not(:disabled){background-color:var(--bg-main);color:var(--text-primary)}.spin{animation:1s linear infinite spin}.btn-icon{align-items:center;display:flex}.empty-state{padding:var(--space-8) var(--space-4);text-align:center;background-color:var(--bg-surface);border:1px dashed var(--border-color);border-radius:var(--radius-lg);flex-direction:column;justify-content:center;align-items:center;display:flex}.empty-state-icon{color:var(--text-muted);margin-bottom:var(--space-4)}.empty-state-title{color:var(--text-primary);margin-bottom:var(--space-2);font-size:1.125rem;font-weight:600}.empty-state-description{color:var(--text-secondary);max-width:400px;margin-bottom:var(--space-6);font-size:.875rem}.input-container{gap:var(--space-1);flex-direction:column;width:100%;display:flex}.input-label{color:var(--text-primary);font-size:.875rem;font-weight:500}.input-wrapper{align-items:center;display:flex;position:relative}.input-field{width:100%;padding:var(--space-2) var(--space-3);font-family:var(--font-sans);color:var(--text-primary);background-color:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-md);outline:none;font-size:1rem;transition:border-color .2s,box-shadow .2s}.input-field:hover:not(:disabled){border-color:var(--text-muted)}.input-field:focus:not(:disabled){border-color:var(--color-primary-500);box-shadow:0 0 0 3px var(--color-primary-50)}.input-field:disabled{opacity:.6;cursor:not-allowed;background-color:var(--bg-main)}.input-field.is-invalid{border-color:var(--color-danger)}.input-field.is-invalid:focus{box-shadow:0 0 0 3px #ef44441a}.input-error-msg,.input-helper-msg{align-items:center;gap:var(--space-1);font-size:.75rem;display:inline-flex}.input-error-msg{color:var(--color-danger);font-weight:500}.input-helper-msg{color:var(--text-secondary)}.badge{border-radius:var(--radius-full);white-space:nowrap;-webkit-user-select:none;user-select:none;align-items:center;padding:.125rem .625rem;font-size:.75rem;font-weight:600;display:inline-flex}.badge-default{background-color:var(--border-color);color:var(--text-primary)}.badge-success{background-color:var(--color-success);color:var(--bg-surface)}.badge-warning{background-color:var(--color-warning);color:var(--bg-surface)}.badge-danger{background-color:var(--color-danger);color:var(--bg-surface)}.badge-info{background-color:var(--color-info);color:var(--bg-surface)}.checkbox-container{align-items:center;gap:var(--space-2);cursor:pointer;display:inline-flex}.checkbox-input{appearance:none;border:2px solid var(--text-muted);border-radius:var(--radius-sm);background-color:var(--bg-surface);place-content:center;width:1.25rem;height:1.25rem;margin:0;transition:all .2s ease-in-out;display:grid}.checkbox-input:before{content:"";width:.65rem;height:.65rem;box-shadow:inset 1em 1em var(--bg-surface);background-color:var(--bg-surface);transform-origin:50%;clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0%,43% 62%);transition:transform .12s ease-in-out;transform:scale(0)}.checkbox-input:checked{background-color:var(--color-primary-600);border-color:var(--color-primary-600)}.checkbox-input:checked:before{transform:scale(1)}.checkbox-input:focus-visible{outline:2px solid var(--color-primary-500);outline-offset:2px}.checkbox-input:disabled{opacity:.6;cursor:not-allowed;background-color:var(--bg-main)}.checkbox-label{color:var(--text-primary);-webkit-user-select:none;user-select:none;font-size:.875rem}.checkbox-container.is-disabled .checkbox-label{color:var(--text-muted);cursor:not-allowed}
