/* SPDX-License-Identifier: AGPL-3.0-or-later */ :host { display: none; position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: var(--z-modal); } :host([open]) { display: block; } .backdrop { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: var(--color-backdrop); } .picker { position: absolute; background: var(--bg-surface); border-radius: var(--radius-lg); box-shadow: 0 8px 32px var(--color-shadow); padding: var(--spacing-md); min-width: 280px; font-family: var(--font-family-base); font-size: var(--font-size-sm); } .picker-main { display: flex; gap: var(--spacing-sm); margin-bottom: var(--spacing-sm); } /* Saturation/Lightness area */ .sl-area { width: 200px; height: 150px; position: relative; cursor: crosshair; border-radius: var(--radius-sm); border: 1px solid var(--color-border); } .sl-cursor { position: absolute; width: 12px; height: 12px; border: 2px solid white; border-radius: 50%; box-shadow: 0 0 2px var(--color-shadow); transform: translate(-50%, -50%); pointer-events: none; } /* Hue bar */ .hue-bar { width: 20px; height: 150px; position: relative; cursor: pointer; border-radius: var(--radius-sm); border: 1px solid var(--color-border); background: linear-gradient(to bottom, hsl(0, 100%, 50%), hsl(60, 100%, 50%), hsl(120, 100%, 50%), hsl(180, 100%, 50%), hsl(240, 100%, 50%), hsl(300, 100%, 50%), hsl(360, 100%, 50%) ); } .hue-cursor { position: absolute; left: -2px; right: -2px; height: 4px; background: white; border: 1px solid var(--color-text); border-radius: 2px; transform: translateY(-50%); pointer-events: none; } .inputs-row { display: flex; gap: var(--spacing-sm); margin-bottom: var(--spacing-sm); } .preview { width: 48px; height: 48px; border-radius: var(--radius-sm); border: 1px solid var(--color-border); } .inputs { display: flex; flex-wrap: wrap; gap: var(--spacing-xs); flex: 1; } .input-group { display: flex; align-items: center; gap: 2px; } .input-group label { color: var(--color-text); min-width: 14px; } .input-group input { width: 40px; padding: 2px 4px; border: 1px solid var(--color-border); border-radius: var(--radius-sm); font-size: inherit; background: var(--bg-surface); color: var(--color-text); } .input-group.hex input { width: 70px; } .input-group input:focus { outline: none; border-color: var(--color-primary); } .presets { display: flex; flex-wrap: wrap; gap: var(--spacing-xs); margin-bottom: var(--spacing-sm); } .preset-swatch { width: 20px; height: 20px; border-radius: var(--radius-sm); border: 1px solid var(--color-border); cursor: pointer; transition: transform var(--transition-fast); } .preset-swatch:hover { transform: scale(1.1); border-color: var(--color-primary); } .buttons { display: flex; justify-content: flex-end; gap: var(--spacing-sm); } .btn { padding: var(--spacing-xs) var(--spacing-md); border-radius: var(--radius-sm); border: 1px solid var(--color-border); background: var(--bg-surface); color: var(--color-text); cursor: pointer; font-size: inherit; } .btn:hover { background: var(--bg-hover); } .btn.primary { background: var(--color-primary); color: var(--color-text-on-header); border-color: var(--color-primary); } .btn.primary:hover { filter: brightness(0.9); }