/*
 * Core UI layer for reusable primitives.
 * This file is loaded after app.css and acts as the source of truth
 * for shared visual rules in workspace UI.
 */

:root {
    --ui-font-family: "Inter", "Avenir Next", "Trebuchet MS", sans-serif;
    --ui-radius-xs: 3px;
    --ui-radius-sm: 4px;
    --ui-radius-md: 6px;
    --ui-radius-lg: 8px;
    --ui-motion-fast: 0.12s ease;
    --ui-motion-base: 0.16s ease;
}

.workspace-page .cuedb-workspace {
    --ui-control-height: 36px;
    --ui-control-height-compact: 30px;
    --ui-control-font-size: 0.8rem;
    --ui-control-font-size-compact: 0.74rem;
    --ui-control-font-weight: 500;
    --ui-control-letter-spacing: 0.01em;
    --ui-btn-primary-text: #ffffff;
    --ui-btn-primary-border: rgba(99, 102, 241, 0.75);
    --ui-btn-primary-bg: linear-gradient(90deg, #4f46e5 0%, #6366f1 100%);
    --ui-btn-primary-shadow: 0 6px 16px rgba(79, 70, 229, 0.24);
    --ui-btn-ghost-text: #e5e7eb;
    --ui-btn-ghost-border: var(--line, rgba(75, 85, 99, 0.32));
    --ui-btn-ghost-bg: rgba(11, 22, 40, 0.82);
    --ui-btn-ghost-hover-border: rgba(107, 114, 128, 0.9);
    --ui-btn-ghost-hover-bg: rgba(31, 41, 55, 0.96);
    --ui-btn-danger-text: #ff95ae;
    --ui-btn-danger-border: rgba(255, 111, 147, 0.44);
    --ui-popover-bg: rgba(11, 20, 36, 0.99);
    --ui-popover-border: rgba(104, 128, 160, 0.8);
    --ui-popover-radius: var(--ui-radius-lg);
    --ui-popover-shadow: 0 12px 26px rgba(2, 6, 23, 0.64);
    --ui-list-item-text: #e2e8f0;
    --ui-list-item-muted: #a7b8cf;
    --ui-list-item-hover-bg: rgba(66, 89, 120, 0.46);
    --ui-list-item-active-bg: rgba(66, 89, 120, 0.56);
    --ui-row-hover-bg: var(--cue-bg-row-hover, rgba(28, 50, 80, 0.28));
    --ui-row-focus-bg: var(--cue-bg-row-focus, rgba(59, 100, 156, 0.44));
    --ui-token-radius: var(--cue-token-radius, 6px);
    --ui-token-font-weight: var(--cue-token-font-weight, 500);
    --ui-token-bg-base: var(--cue-token-bg-base, #1f3048);
    --ui-token-border-tint: var(--cue-token-border-tint, #dce8fa);
    --ui-text-primary: var(--cue-text-main, #dbe5f3);
    --ui-text-secondary: #c4d3e7;
    --ui-text-muted: var(--cue-text-muted, #9fafc4);
    --ui-text-faint: var(--cue-text-dim, #6f839f);
}

/* Text emphasis levels */
.workspace-page .cuedb-workspace .ui-text-primary {
    color: var(--ui-text-primary) !important;
}

.workspace-page .cuedb-workspace .ui-text-secondary {
    color: var(--ui-text-secondary) !important;
}

.workspace-page .cuedb-workspace .ui-text-muted {
    color: var(--ui-text-muted) !important;
}

.workspace-page .cuedb-workspace .ui-text-faint {
    color: var(--ui-text-faint) !important;
}

/* Buttons */
.workspace-page .cuedb-workspace .primary-btn,
.workspace-page .cuedb-workspace .ghost-btn,
.workspace-page .cuedb-workspace .danger-btn,
.workspace-page .cuedb-workspace .icon-btn {
    min-height: var(--ui-control-height);
    height: var(--ui-control-height);
    border-radius: var(--ui-radius-md);
    border: 1px solid transparent;
    font-family: var(--ui-font-family);
    font-size: var(--ui-control-font-size);
    font-weight: var(--ui-control-font-weight);
    letter-spacing: var(--ui-control-letter-spacing);
    padding: 0 13px;
    transition:
        transform var(--ui-motion-fast),
        background var(--ui-motion-base),
        border-color var(--ui-motion-base),
        color var(--ui-motion-base),
        box-shadow var(--ui-motion-base);
}

.workspace-page .cuedb-workspace .primary-btn {
    color: var(--ui-btn-primary-text);
    border-color: var(--ui-btn-primary-border);
    background: var(--ui-btn-primary-bg);
    box-shadow: var(--ui-btn-primary-shadow);
}

.workspace-page .cuedb-workspace .ghost-btn {
    color: var(--ui-btn-ghost-text);
    border-color: var(--ui-btn-ghost-border);
    background: var(--ui-btn-ghost-bg);
    box-shadow: none;
}

.workspace-page .cuedb-workspace .ghost-btn:hover {
    border-color: var(--ui-btn-ghost-hover-border);
    background: var(--ui-btn-ghost-hover-bg);
}

.workspace-page .cuedb-workspace .ghost-btn.danger,
.workspace-page .cuedb-workspace .danger-btn {
    color: var(--ui-btn-danger-text);
    border-color: var(--ui-btn-danger-border);
}

.workspace-page .cuedb-workspace .compact-btn {
    min-height: var(--ui-control-height-compact);
    height: var(--ui-control-height-compact);
    font-size: var(--ui-control-font-size-compact);
    border-radius: var(--ui-radius-md);
    padding: 0 9px;
}

.workspace-page .cuedb-workspace .icon-btn {
    width: 28px;
    min-width: 28px;
    padding: 0;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

/* Popover chrome */
.workspace-page .cuedb-workspace .status-picker,
.workspace-page .cuedb-workspace .cue-table.cue-table-cuedb .editable-cell.cell-editing .task-editor,
.workspace-page .cuedb-workspace .cue-table.cue-table-cuedb .editable-cell.cell-editing .theme-editor,
.workspace-page .cuedb-workspace .cue-table.cue-table-cuedb .editable-cell.cell-editing .notes-editor {
    border: 1px solid var(--ui-popover-border);
    border-radius: var(--ui-popover-radius);
    background: var(--ui-popover-bg);
    box-shadow: var(--ui-popover-shadow);
}

/* Shared option rows inside popovers */
.workspace-page .cuedb-workspace .status-picker-item,
.workspace-page .cuedb-workspace .theme-editor-option {
    min-height: 22px;
    padding: 0 8px;
    font-size: 0.64rem;
    line-height: 1.2;
}

.workspace-page .cuedb-workspace .status-picker-item {
    color: var(--ui-list-item-text);
}

.workspace-page .cuedb-workspace .theme-editor-option {
    color: var(--ui-list-item-muted);
}

.workspace-page .cuedb-workspace .status-picker-item:hover,
.workspace-page .cuedb-workspace .status-picker-item:focus-visible,
.workspace-page .cuedb-workspace .status-picker-item.is-active,
.workspace-page .cuedb-workspace .theme-editor-option:hover {
    background: var(--ui-list-item-hover-bg);
    outline: none;
}

.workspace-page .cuedb-workspace .theme-editor-option.is-selected {
    color: var(--ui-list-item-text);
    background: var(--ui-list-item-active-bg);
}

/* Unified row hover/focus behavior */
.workspace-page .cuedb-workspace .cue-table.cue-table-cuedb .cue-row:hover td,
.workspace-page .cuedb-workspace .cue-table.cue-table-cuedb .cue-row:hover .is-sticky-col {
    background: var(--ui-row-hover-bg) !important;
}

.workspace-page .cuedb-workspace .cue-table.cue-table-cuedb .cue-row.row-focus td,
.workspace-page .cuedb-workspace .cue-table.cue-table-cuedb .cue-row.row-focus .is-sticky-col {
    background: var(--ui-row-focus-bg) !important;
}

/* Unified color token construction for status/theme/timeline blocks */
.workspace-page .cuedb-workspace .status-pill,
.workspace-page .cuedb-workspace .cue-number-pill {
    --token-color: var(--status-color, #64748b);
    --token-text: var(--status-text, #f8fafc);
    border-radius: var(--ui-token-radius);
    border: 1px solid color-mix(in srgb, var(--token-color, #64748b) 64%, var(--ui-token-border-tint) 36%);
    background: color-mix(in srgb, var(--token-color, #64748b) 78%, var(--ui-token-bg-base) 22%);
    color: var(--token-text, #f8fafc);
    font-weight: var(--ui-token-font-weight);
}

.workspace-page .cuedb-workspace .cue-table.cue-table-cuedb .theme-chip {
    --token-color: var(--chip-color, #4d6df3);
    --token-text: var(--chip-text, #f8fafc);
    border-radius: var(--ui-token-radius);
    border: 1px solid color-mix(in srgb, var(--token-color, #4d6df3) 64%, var(--ui-token-border-tint) 36%);
    background: color-mix(in srgb, var(--token-color, #4d6df3) 78%, var(--ui-token-bg-base) 22%);
    color: var(--token-text, #f8fafc);
    font-weight: var(--ui-token-font-weight);
}

.workspace-page .cuedb-workspace .cue-table.cue-table-cuedb .theme-chip::after {
    color: var(--token-text, #f8fafc);
}

.workspace-page .cuedb-workspace .cue-block {
    border-radius: var(--ui-token-radius);
    border: 1px solid color-mix(in srgb, var(--cue-color, #6f86a7) 64%, var(--ui-token-border-tint) 36%);
    background: color-mix(in srgb, var(--cue-color, #6f86a7) 78%, var(--ui-token-bg-base) 22%);
    font-weight: var(--ui-token-font-weight);
}

/* Picture page uses a softer text profile by default */
.workspace-page .cuedb-workspace .picture-page {
    --ui-picture-text-primary: var(--ui-text-secondary);
    --ui-picture-text-muted: var(--ui-text-muted);
}

.workspace-page .cuedb-workspace .picture-page .cue-picture-reel-title-input,
.workspace-page .cuedb-workspace .picture-page .cue-picture-field input {
    color: var(--ui-picture-text-primary);
}

.workspace-page .cuedb-workspace .picture-page .cue-picture-field span,
.workspace-page .cuedb-workspace .picture-page .cue-picture-empty {
    color: var(--ui-picture-text-muted);
}
