@layer base { .checkboxWrapper { position: relative; display: inline-flex; align-items: center; justify-content: center; vertical-align: middle; } .checkbox { appearance: none; position: relative; width: 1.25rem; height: 1.25rem; border: 2px solid var(--border); border-radius: var(--radius-sm); background-color: transparent; cursor: pointer; margin: 0; padding: 0; transition: all var(--animation-duration-normal) cubic-bezier(0.16, 1, 0.3, 1); } .checkbox:hover { border-color: var(--primary); box-shadow: 0 0 0 2px color-mix(in srgb, var(--primary) 15%, transparent); } .checkbox:focus-visible { outline: none; box-shadow: var(--shadow-focus); border-color: var(--primary); } .checkbox:checked { background-color: var(--primary); border-color: var(--primary); transform: scale(1); animation: checkboxPulse var(--animation-duration-normal) cubic-bezier(0.16, 1, 0.3, 1); } .checkbox:disabled { opacity: 0.5; cursor: not-allowed; background-color: var(--muted); border-color: var(--muted); } .checkmark { position: absolute; width: 1rem; height: 1rem; color: var(--primary-foreground); pointer-events: none; opacity: 0; transform: scale(0.8); transition: opacity var(--animation-duration-normal) cubic-bezier(0.16, 1, 0.3, 1), transform var(--animation-duration-normal) cubic-bezier(0.16, 1, 0.3, 1); } .checkbox:checked + .checkmark { opacity: 1; transform: scale(1); } .checkbox:disabled + .checkmark { color: var(--muted-foreground); } @keyframes checkboxPulse { 0% { transform: scale(0.95); box-shadow: 0 0 0 0 color-mix(in srgb, var(--primary) 40%, transparent); } 70% { transform: scale(1.02); box-shadow: 0 0 0 6px color-mix(in srgb, var(--primary) 0%, transparent); } 100% { transform: scale(1); box-shadow: 0 0 0 0 color-mix(in srgb, var(--primary) 0%, transparent); } } }