.btn{white-space:nowrap;border-radius:var(--radius);border:1px solid #0000;outline:none;justify-content:center;align-items:center;gap:.5rem;font-size:.875rem;font-weight:500;transition:all .15s cubic-bezier(.4,0,.2,1);display:inline-flex}.btn:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.btn:disabled{pointer-events:none;opacity:.5}.btn-size-default{height:2.5rem;padding:.5rem 1rem}.btn-size-sm{border-radius:calc(var(--radius) - 2px);height:2.25rem;padding:.25rem .75rem;font-size:.8125rem}.btn-size-lg{border-radius:calc(var(--radius) + 2px);height:2.75rem;padding:.5rem 2rem;font-size:.9375rem}.btn-size-icon{width:2.5rem;height:2.5rem;padding:0}.btn-default{background-color:hsl(var(--primary));color:hsl(var(--primary-foreground))}.btn-default:hover:not(:disabled){background-color:hsl(var(--primary)/.9)}.btn-destructive{background-color:hsl(var(--destructive));color:hsl(var(--destructive-foreground))}.btn-destructive:hover:not(:disabled){background-color:hsl(var(--destructive)/.9)}.btn-outline{border-color:hsl(var(--input));color:hsl(var(--foreground));background-color:#0000}.btn-outline:hover:not(:disabled){background-color:hsl(var(--accent));color:hsl(var(--accent-foreground))}.btn-secondary{background-color:hsl(var(--secondary));color:hsl(var(--secondary-foreground))}.btn-secondary:hover:not(:disabled){background-color:hsl(var(--secondary)/.8)}.btn-ghost{color:hsl(var(--foreground));background-color:#0000}.btn-ghost:hover:not(:disabled){background-color:hsl(var(--accent));color:hsl(var(--accent-foreground))}.btn-link{color:hsl(var(--primary));text-underline-offset:4px;background-color:#0000;text-decoration-line:underline}.btn-link:hover:not(:disabled){text-decoration-line:underline}.btn-loading{position:relative}.btn-spinner{width:1rem;height:1rem;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.btn-icon svg{width:1rem;height:1rem}.w-full{width:100%}
.input-wrapper{flex-direction:column;gap:.375rem;display:flex}.input-label{color:hsl(var(--foreground));font-size:.875rem;font-weight:500;line-height:1}.input-field{border-radius:var(--radius);border:1px solid hsl(var(--input));background-color:hsl(var(--background));width:100%;height:2.5rem;color:hsl(var(--foreground));padding:.5rem .75rem;font-size:.875rem;line-height:1.5;transition:border-color .15s,box-shadow .15s;display:flex}.input-field::placeholder{color:hsl(var(--muted-foreground))}.input-field:focus{border-color:hsl(var(--ring));box-shadow:0 0 0 2px hsl(var(--ring)/.2);outline:none}.input-field:disabled{cursor:not-allowed;opacity:.5;background-color:hsl(var(--muted))}.input-field.textarea{resize:vertical;height:auto;min-height:5rem}.input-wrapper.has-error .input-field{border-color:hsl(var(--destructive))}.input-wrapper.has-error .input-field:focus{box-shadow:0 0 0 2px hsl(var(--destructive)/.2)}.input-error{color:hsl(var(--destructive));margin:0;font-size:.75rem}.input-help{color:hsl(var(--muted-foreground));margin:0;font-size:.75rem}
.badge{text-transform:capitalize;white-space:nowrap;border-radius:9999px;align-items:center;gap:.25rem;font-weight:500;display:inline-flex}.badge-xs{padding:2px 6px;font-size:.625rem}.badge-sm{padding:2px 8px;font-size:.6875rem}.badge-md{padding:4px 10px;font-size:.75rem}.badge-neutral{color:#475569;background-color:#f1f5f9}.badge-primary{color:#3730a3;background-color:#e0e7ff}.badge-success{color:#166534;background-color:#dcfce7}.badge-warning{color:#92400e;background-color:#fef3c7}.badge-danger{color:#991b1b;background-color:#fee2e2}.badge-info{color:#1e40af;background-color:#dbeafe}.badge-purple{color:#6b21a8;background-color:#f3e8ff}.badge-dot-indicator{background-color:currentColor;border-radius:50%;width:6px;height:6px}
.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background-color:#00000080;justify-content:center;align-items:center;padding:1rem;animation:.15s fadeIn;display:flex;position:fixed;inset:0}.modal{z-index:1001;background-color:#fff;border-radius:16px;flex-direction:column;width:100%;max-height:90vh;animation:.2s slideUp;display:flex;box-shadow:0 25px 50px -12px #00000040}.modal-sm{max-width:400px}.modal-md{max-width:520px}.modal-lg{max-width:680px}.modal-xl{max-width:1200px}.modal-header{border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;display:flex}.modal-title{color:#0f172a;letter-spacing:-.02em;margin:0;font-size:1.125rem;font-weight:600}.modal-close{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;transition:all .15s;display:flex}.modal-close:hover{color:#0f172a;background-color:#f1f5f9}.modal-close svg{width:20px;height:20px}.modal-body{flex:1;padding:1.5rem;overflow-y:auto}.modal-body .input-wrapper{margin-bottom:1rem}.modal-body .input-wrapper:last-child{margin-bottom:0}.modal-footer{background-color:#f8fafc;border-top:1px solid #e2e8f0;border-radius:0 0 16px 16px;justify-content:flex-end;align-items:center;gap:.75rem;padding:1rem 1.5rem;display:flex}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}
.searchable-select{min-width:180px;display:inline-block;position:relative}.searchable-select-input{color:#374151;cursor:text;background:#fff;border:1px solid #d1d5db;border-radius:6px;width:100%;padding:.375rem 1.75rem .375rem .75rem;font-size:.875rem}.searchable-select-input:focus{border-color:#3b82f6;outline:none;box-shadow:0 0 0 2px #3b82f626}.searchable-select-input:disabled{cursor:not-allowed;opacity:.6;background:#f3f4f6}.searchable-select-chevron{color:#9ca3af;pointer-events:auto;cursor:pointer;transition:transform .15s;position:absolute;top:50%;right:.5rem;transform:translateY(-50%)}.searchable-select.open .searchable-select-chevron{transform:translateY(-50%)rotate(180deg)}.searchable-select.disabled .searchable-select-chevron{cursor:not-allowed}.searchable-select-menu{z-index:30;background:#fff;border:1px solid #e2e8f0;border-radius:6px;max-height:240px;margin:0;padding:.25rem;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px #00000014}.searchable-select-option{color:#374151;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;padding:.4rem .6rem;font-size:.875rem;overflow:hidden}.searchable-select-option.highlighted{color:#1d4ed8;background:#eff6ff}.searchable-select-option.selected{font-weight:600}.searchable-select-empty{color:#9ca3af;text-align:center;padding:.5rem .6rem;font-size:.875rem}.searchable-select-create{color:#2563eb;cursor:pointer;border-top:1px solid #e2e8f0;border-radius:4px;align-items:center;gap:.5rem;margin-top:.25rem;padding:.5rem .6rem;font-size:.875rem;font-weight:600;display:flex}.searchable-select-create:hover{background:#eff6ff}.searchable-select-create span{font-size:1rem;line-height:1}
.table-wrapper{background-color:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:auto hidden}.data-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.data-table th.sortable:hover{color:#0f172a}.th-sort{align-items:center;gap:.25rem;display:inline-flex}.th-sort .sort-arrow{color:#94a3b8;font-size:.625rem;line-height:1}.data-table th.sortable.active .sort-arrow{color:#3b82f6}.data-table{border-collapse:collapse;width:100%}.data-table thead{background-color:#f8fafc;border-bottom:1px solid #e2e8f0}.data-table th{text-transform:uppercase;letter-spacing:.05em;color:#64748b;text-align:left;white-space:nowrap;padding:.75rem 1rem;font-size:.6875rem;font-weight:600}.data-table td{color:#0f172a;vertical-align:middle;border-bottom:1px solid #f1f5f9;padding:.875rem 1rem;font-size:.875rem}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr.clickable{cursor:pointer;transition:background-color .15s}.data-table tbody tr.clickable:hover{background-color:#f8fafc}.table-empty{text-align:center;color:#94a3b8;background:#fff;border:1px solid #e2e8f0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;padding:3rem 1.5rem;display:flex}.table-empty svg{opacity:.5;width:48px;height:48px;margin-bottom:1rem}.table-empty p{color:#64748b;margin:0;font-size:.9375rem}
