/*!
 * sbomify UI Components
 * Forms, tables, and other UI elements
 * Note: Button styles are in tailwind.src.css (tw-btn-* classes)
 */
:root{--component-surface:var(--color-surface);--component-surface-hover:var(--color-surface-hover);--component-bg:var(--color-background);--component-text:var(--color-text);--component-text-muted:var(--color-text-muted);--component-border:var(--color-border);--component-table-header-bg:var(--color-surface-elevated);--component-table-row-hover:var(--color-surface-hover);--component-empty-state-bg:var(--color-surface)}.form-control,.form-select{font-size:var(--font-size-base);font-weight:var(--font-weight-normal);line-height:var(--line-height-normal);color:var(--component-text);background-color:var(--component-surface);border:2px solid var(--component-border);border-radius:var(--radius-md);transition:all var(--transition-normal);min-height:44px;padding:.75rem 1rem}.form-control:focus,.form-select:focus{border-color:var(--brand-primary);box-shadow:0 0 0 3px color-mix(in oklab, var(--color-primary) 15%, transparent);outline:none;transform:translateY(-1px)}@media (width<=768px){.form-control,.form-select{border-radius:.5rem;padding:1rem;font-size:16px}.form-label{margin-bottom:.75rem;font-size:1rem;font-weight:500}.form-group{margin-bottom:1.5rem}.input-group{flex-direction:column;gap:.5rem}.input-group .btn{border-radius:.5rem}}.form-control.is-invalid{border-color:var(--brand-danger);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right calc(.375em + .1875rem) center;background-repeat:no-repeat;background-size:calc(.75em + .375rem) calc(.75em + .375rem);padding-right:calc(1.5em + .75rem)}.form-control.is-invalid:focus{border-color:var(--brand-danger);box-shadow:0 0 0 .25rem color-mix(in oklab, var(--color-danger) 25%, transparent)}.table{width:100%;color:var(--component-text);margin-bottom:0}.table th,.table td{vertical-align:middle;border-bottom:1px solid var(--component-border);padding:1rem .75rem}@media (width<=768px){.table-responsive{border-radius:.5rem;box-shadow:0 2px 8px #0000001a}.table th,.table td{padding:.75rem .5rem;font-size:.875rem}.table th{font-size:.75rem;font-weight:600}.table .actions{flex-direction:column;align-items:stretch;gap:.5rem}.table .actions .btn{min-height:36px;padding:.5rem;font-size:.75rem}}.table thead th{background:var(--component-table-header-bg);text-transform:uppercase;color:var(--component-text-muted);font-weight:var(--font-weight-medium);font-size:var(--font-size-xs);white-space:nowrap;border-bottom:1px solid var(--component-border)}.table tbody tr{transition:all var(--transition-normal)}.table tbody tr:hover{background-color:var(--component-table-row-hover)}.table tbody td{color:var(--component-text)}.data-table th,.data-table td{padding:1rem}.data-table th{font-size:var(--font-size-xs);text-transform:uppercase}.data-table .actions-header{width:1%;min-width:300px}.data-table .actions{justify-content:center;align-items:center;gap:.75rem;display:flex}.data-table .actions .separator{border-left:1px solid var(--component-border);height:1rem}.htmx-indicator{opacity:0;transition:opacity var(--transition-normal);display:none}.htmx-request .htmx-indicator,.htmx-request.htmx-indicator{opacity:1;align-items:center;display:inline-flex}.htmx-request,.htmx-request *{pointer-events:none!important;cursor:wait!important}button.htmx-request,a.btn.htmx-request{opacity:.7;pointer-events:none}.htmx-indicator-block{padding:var(--spacing-lg);justify-content:center;display:none}.htmx-request .htmx-indicator-block{display:flex}.htmx-request button[type=submit],button[type=submit].htmx-request{pointer-events:none;opacity:.7}.htmx-loading-overlay{position:relative}.htmx-loading-overlay:after{content:"";background:color-mix(in oklab, var(--color-surface) 80%, transparent);z-index:10;justify-content:center;align-items:center;display:none;position:absolute;inset:0}.htmx-loading-overlay.htmx-request:after{display:flex}.empty-state{text-align:center;padding:var(--spacing-2xl) var(--spacing-lg);color:var(--component-text-muted);background:var(--component-empty-state-bg);border-radius:var(--radius-lg);border:1px dashed var(--component-border)}.empty-state .empty-icon{color:var(--component-text-muted)}.empty-state .empty-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text);margin-bottom:var(--spacing-sm)}.empty-state .empty-description{font-size:var(--font-size-base);color:var(--text-muted);line-height:var(--line-height-relaxed)}.empty-state .btn{margin-top:var(--spacing-md)}.empty-state-compact{padding:var(--spacing-lg) var(--spacing-md)}.empty-state-compact .empty-icon i{font-size:2rem}.compliance-icons{flex-wrap:wrap;align-items:center;gap:.375rem;display:flex}.compliance-icon{cursor:help;width:1.5rem;height:1.5rem;transition:transform var(--transition-fast), box-shadow var(--transition-fast);border-radius:50%;justify-content:center;align-items:center;font-size:.7rem;display:inline-flex}.compliance-icon:hover{transform:scale(1.1);box-shadow:0 2px 8px #00000026}.compliance-icon--compliance{background:color-mix(in oklab, var(--color-success) 15%, transparent);color:var(--color-success)}.compliance-icon--attestation{background:color-mix(in oklab, var(--color-info) 15%, transparent);color:var(--color-info)}.compliance-icon--security{color:#7c3aed;background:#8b5cf626}.compliance-icon--license{color:#db2777;background:#ec489926}.compliance-empty{color:var(--text-muted);font-size:var(--font-size-xs)}