/**
 * 3Syxty Studio — Command Palette
 *
 * Universal command palette inspired by VS Code, Figma, and Linear.
 * Triggered by Cmd/Ctrl+K for instant access to every action,
 * setting, and navigation point in the studio.
 */

/* -----------------------------------------------------------------------
   Backdrop
   ----------------------------------------------------------------------- */

.command-palette-backdrop {
    position: fixed;
    inset: 0;
    background-color: var(--surface-overlay);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    z-index: var(--z-command-palette);
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding-top: min(20vh, 160px);
    animation: fade-in 120ms ease-out forwards;
}

.command-palette-backdrop[data-closing="true"] {
    animation: fade-out 100ms ease-in forwards;
}

/* -----------------------------------------------------------------------
   Panel
   ----------------------------------------------------------------------- */

.command-palette {
    width: 100%;
    max-width: 560px;
    background-color: var(--surface-elevated);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-heavy), 0 0 80px rgba(108, 92, 231, 0.08);
    overflow: hidden;
    animation: scale-in 150ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
    display: flex;
    flex-direction: column;
    max-height: min(480px, 70vh);
}

.command-palette-backdrop[data-closing="true"] .command-palette {
    animation: scale-out 100ms ease-in forwards;
}

/* -----------------------------------------------------------------------
   Search Input
   ----------------------------------------------------------------------- */

.command-palette-input-wrapper {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-4) var(--space-5);
    border-bottom: 1px solid var(--border-subtle);
}

.command-palette-icon {
    color: var(--text-muted);
    flex-shrink: 0;
}

.command-palette-icon svg {
    width: 20px;
    height: 20px;
}

.command-palette-input {
    flex: 1;
    border: none;
    background: transparent;
    color: var(--text-primary);
    font: var(--type-body);
    font-size: 15px;
    outline: none;
    caret-color: var(--accent-primary);
}

.command-palette-input::placeholder {
    color: var(--text-muted);
}

.command-palette-spinner {
    width: 18px;
    height: 18px;
    color: var(--accent-primary);
    animation: spin 0.7s linear infinite;
    flex-shrink: 0;
}

/* Breadcrumb path (for nested navigation) */
.command-palette-path {
    display: flex;
    align-items: center;
    gap: var(--space-1);
    flex-shrink: 0;
}

.command-palette-path-segment {
    display: inline-flex;
    align-items: center;
    padding: 2px var(--space-2);
    font: var(--type-caption);
    font-weight: 500;
    color: var(--accent-primary);
    background-color: var(--accent-primary-subtle);
    border-radius: var(--radius-sm);
}

.command-palette-path-sep {
    color: var(--text-muted);
    font-size: 10px;
}

/* -----------------------------------------------------------------------
   Results List
   ----------------------------------------------------------------------- */

.command-palette-results {
    flex: 1;
    overflow-y: auto;
    padding: var(--space-2);
    scrollbar-width: thin;
    scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
}

/* Group header */
.command-palette-group {
    padding: var(--space-2) var(--space-3) var(--space-1);
    font: var(--type-overline);
    color: var(--text-muted);
}

/* Result item */
.command-palette-item {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-2-5) var(--space-3);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: background-color 60ms ease-out;
}

.command-palette-item:hover,
.command-palette-item[data-active="true"] {
    background-color: var(--accent-primary-subtle);
}

.command-palette-item[data-active="true"] {
    outline: 1px solid var(--accent-primary-muted);
}

.command-palette-item-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: var(--radius-md);
    background-color: var(--surface-tertiary);
    color: var(--text-muted);
    flex-shrink: 0;
}

.command-palette-item[data-active="true"] .command-palette-item-icon {
    background-color: var(--accent-primary-muted);
    color: var(--accent-primary);
}

.command-palette-item-icon svg {
    width: 16px;
    height: 16px;
}

.command-palette-item-content {
    flex: 1;
    min-width: 0;
}

.command-palette-item-title {
    font: var(--type-body);
    color: var(--text-primary);
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.command-palette-item-title mark {
    background: transparent;
    color: var(--accent-primary);
    font-weight: 600;
}

.command-palette-item-desc {
    font: var(--type-body-sm);
    color: var(--text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.command-palette-item-badge {
    font: var(--type-overline);
    color: var(--text-muted);
    padding: 1px var(--space-1-5);
    background: var(--surface-tertiary);
    border-radius: var(--radius-sm);
}

/* Keyboard shortcut hint on right side */
.command-palette-item-kbd {
    display: flex;
    align-items: center;
    gap: 3px;
    flex-shrink: 0;
    margin-left: auto;
}

.command-palette-item-kbd kbd {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 22px;
    height: 22px;
    padding: 0 var(--space-1-5);
    font: var(--type-caption);
    font-family: var(--font-sans);
    font-size: 11px;
    color: var(--text-muted);
    background-color: var(--surface-tertiary);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-sm);
}

/* -----------------------------------------------------------------------
   Empty State
   ----------------------------------------------------------------------- */

.command-palette-empty {
    padding: var(--space-8) var(--space-4);
    text-align: center;
}

.command-palette-empty-icon {
    color: var(--text-muted);
    margin-bottom: var(--space-3);
}

.command-palette-empty-icon svg {
    width: 32px;
    height: 32px;
    margin: 0 auto;
    opacity: 0.5;
}

.command-palette-empty-text {
    font: var(--type-body);
    color: var(--text-muted);
}

.command-palette-empty-hint {
    font: var(--type-body-sm);
    color: var(--text-muted);
    margin-top: var(--space-1);
    opacity: 0.7;
}

/* -----------------------------------------------------------------------
   Footer (hints)
   ----------------------------------------------------------------------- */

.command-palette-footer {
    display: flex;
    align-items: center;
    gap: var(--space-4);
    padding: var(--space-2-5) var(--space-4);
    border-top: 1px solid var(--border-subtle);
    font: var(--type-caption);
    color: var(--text-muted);
}

.command-palette-footer-hint {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1-5);
}

.command-palette-footer-hint kbd {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 3px;
    font-size: 10px;
    background-color: var(--surface-tertiary);
    border: 1px solid var(--border-subtle);
    border-radius: 3px;
}

/* -----------------------------------------------------------------------
   Recent searches
   ----------------------------------------------------------------------- */

.command-palette-recent-label {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--space-2) var(--space-3) var(--space-1);
}

.command-palette-recent-label span {
    font: var(--type-overline);
    color: var(--text-muted);
}

.command-palette-recent-clear {
    font: var(--type-caption);
    color: var(--text-muted);
    cursor: pointer;
    background: none;
    border: none;
    padding: 0;
}

.command-palette-recent-clear:hover {
    color: var(--text-primary);
}
