/** * Admin Asset Variants Component * * Modern variant management interface with grid layout, * thumbnail previews, and variant details. * Uses BEM naming convention and design system tokens. */ .admin-asset-variants { padding: var(--space-lg, 1.5rem); background: var(--bg, oklch(100% 0 0)); } /* Header */ .admin-asset-variants__header { display: flex; justify-content: space-between; align-items: center; gap: var(--space-md, 1rem); margin-bottom: var(--space-lg, 1.5rem); padding-bottom: var(--space-md, 1rem); border-bottom: 1px solid var(--border-light, oklch(75% 0.02 280)); } .admin-asset-variants__title { font-size: 1.25rem; font-weight: 600; color: var(--text, oklch(20% 0.02 280)); margin: 0; } .admin-asset-variants__actions { display: flex; gap: var(--space-xs, 0.5rem); } /* Variants Grid */ .admin-asset-variants__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: var(--space-md, 1rem); } /* Variant Card */ .admin-variant-card { display: flex; flex-direction: column; background: var(--bg-secondary, oklch(95% 0.01 280)); border: 1px solid var(--border-light, oklch(75% 0.02 280)); border-radius: var(--radius-md, 8px); padding: var(--space-md, 1rem); transition: all var(--duration-default, 0.2s) var(--easing-default); } .admin-variant-card:hover { border-color: var(--border, oklch(70% 0.02 280)); box-shadow: 0 2px 8px oklch(0% 0 0 / 0.1); transform: translateY(-2px); } .admin-variant-card__preview { width: 100%; aspect-ratio: 1; background: var(--bg, oklch(100% 0 0)); border-radius: var(--radius-sm, 4px); overflow: hidden; margin-bottom: var(--space-sm, 0.75rem); display: flex; align-items: center; justify-content: center; } .admin-variant-card__thumbnail { width: 100%; height: 100%; object-fit: cover; transition: transform var(--duration-default, 0.3s) var(--easing-default); } .admin-variant-card:hover .admin-variant-card__thumbnail { transform: scale(1.05); } .admin-variant-card__icon { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; background: var(--bg-secondary, oklch(95% 0.01 280)); } .admin-variant-card__icon-text { font-size: 2rem; font-weight: 600; color: var(--muted, oklch(50% 0.01 280)); } .admin-variant-card__info { flex: 1; margin-bottom: var(--space-sm, 0.75rem); } .admin-variant-card__name { font-weight: 600; color: var(--text, oklch(20% 0.02 280)); margin-bottom: var(--space-xs, 0.5rem); font-size: 0.875rem; word-break: break-word; } .admin-variant-card__meta { display: flex; flex-direction: column; gap: 0.25rem; font-size: 0.75rem; color: var(--muted, oklch(50% 0.01 280)); } .admin-variant-card__dimensions, .admin-variant-card__size, .admin-variant-card__format { display: inline-block; } .admin-variant-card__actions { display: flex; gap: var(--space-xs, 0.5rem); margin-top: auto; } /* Empty State */ .admin-asset-variants__empty { text-align: center; padding: var(--space-xl, 3rem) var(--space-lg, 2rem); background: var(--bg-secondary, oklch(95% 0.01 280)); border: 2px dashed var(--border-light, oklch(75% 0.02 280)); border-radius: var(--radius-md, 8px); } .admin-asset-variants__empty-icon { font-size: 3rem; margin-bottom: var(--space-md, 1rem); opacity: 0.5; } .admin-asset-variants__empty-text { font-size: 1rem; color: var(--text, oklch(20% 0.02 280)); margin-bottom: var(--space-md, 1rem); } .admin-asset-variants__empty-hint { font-size: 0.875rem; color: var(--muted, oklch(50% 0.01 280)); margin-top: var(--space-sm, 0.75rem); } /* Alerts */ .admin-alert { padding: var(--space-md, 1rem); border-radius: var(--radius-sm, 4px); margin-bottom: var(--space-lg, 1.5rem); } .admin-alert--error { background: oklch(60% 0.2 20 / 0.1); border-left: 4px solid var(--error, oklch(60% 0.2 20)); color: var(--error, oklch(60% 0.2 20)); } /* Buttons */ .admin-btn { padding: var(--space-xs, 0.5rem) var(--space-md, 1rem); border: none; border-radius: var(--radius-sm, 4px); cursor: pointer; font-size: 0.875rem; font-weight: 500; transition: all var(--duration-default, 0.2s) var(--easing-default); display: inline-flex; align-items: center; gap: var(--space-xs, 0.5rem); } .admin-btn:disabled { opacity: 0.6; cursor: not-allowed; } .admin-btn--primary { background: var(--accent-primary, oklch(60% 0.2 280)); color: var(--bg, oklch(100% 0 0)); } .admin-btn--primary:hover:not(:disabled) { background: var(--accent-primary-dark, oklch(50% 0.2 280)); } .admin-btn--secondary { background: var(--bg-secondary, oklch(95% 0.01 280)); color: var(--text, oklch(20% 0.02 280)); border: 1px solid var(--border-light, oklch(75% 0.02 280)); } .admin-btn--secondary:hover { background: var(--bg-hover, oklch(90% 0.01 280)); border-color: var(--border, oklch(70% 0.02 280)); } .admin-btn--danger { background: var(--error, oklch(60% 0.2 20)); color: var(--bg, oklch(100% 0 0)); } .admin-btn--danger:hover { background: oklch(50% 0.2 20); } .admin-btn--sm { padding: var(--space-xs, 0.375rem) var(--space-sm, 0.75rem); font-size: 0.75rem; }