/* ============================================
   GRASP - Theme Styles
   All colors come from CSS custom properties
   defined per [data-theme="day"] / [data-theme="night"]
   ============================================ */

/* ============================================
   Status Colors (не зависят от темы)
   ============================================ */
:root {
    --status-pending_clone:    #d2991d;   /* янтарный — ждёт клонирования */
    --status-cloning:          #58a6ff;   /* синий — в процессе клонирования */
    --status-cloning_error:    #f85149;   /* красный — ошибка клонирования */
    --status-pending_update:   #3fb950;   /* салатовый — ждёт обновления (всё ок) */
    --status-updating:         #58a6ff;   /* синий — в процессе обновления */
    --status-updating_error:   #f85149;   /* красный — ошибка обновления */
    --status-frozen:           #79c0ff;   /* ледяной голубой — заморожен */
    --status-storage_error:    #f85149;   /* красный — ошибка хранилища */
    --status-error:            #f85149;   /* красный — иная ошибка */
}


/* ===== Day Theme (Default) ===== */
:root,
[data-theme="day"] {
    --color-bg:             #f6f8fa;
    --color-surface:        #ffffff;
    --color-surface-hover:  #f0f2f5;
    --color-border:         #d0d7de;
    --color-border-light:   #e8ecf0;
    --color-text:           #1f2328;
    --color-text-muted:     #656d76;
    --color-primary:        #0969da;
    --color-primary-hover:  #0550ae;
    --color-primary-bg:     rgba(9, 105, 218, 0.08);
    --color-primary-border: rgba(9, 105, 218, 0.25);
    --color-success:        #1a7f37;
    --color-success-bg:     rgba(26, 127, 55, 0.10);
    --color-warning:        #9a6700;
    --color-warning-bg:     rgba(154, 103, 0, 0.10);
    --color-danger:         #cf222e;
    --color-danger-hover:   #a40e26;
    --color-danger-bg:      rgba(207, 34, 46, 0.08);
    --color-overlay:        rgba(0, 0, 0, 0.30);
    --color-toast-success:  #1a3d1f;
    --color-toast-error:    #3d1a1a;
    --color-toast-info:     #1a2a3d;
    --color-badge-text:     #ffffff;
    --color-btn-primary-bg: #1f6feb;
    --color-btn-primary-text: #ffffff;
    --color-input-focus-shadow: rgba(9, 105, 218, 0.15);
}

/* ===== Night Theme ===== */
[data-theme="night"] {
    --color-bg:             #0d1117;
    --color-surface:        #161b22;
    --color-surface-hover:  #1c2129;
    --color-border:         #30363d;
    --color-border-light:   #21262d;
    --color-text:           #e6edf3;
    --color-text-muted:     #8b949e;
    --color-primary:        #58a6ff;
    --color-primary-hover:  #79c0ff;
    --color-primary-bg:     rgba(88, 166, 255, 0.10);
    --color-primary-border: rgba(88, 166, 255, 0.30);
    --color-success:        #3fb950;
    --color-success-bg:     rgba(63, 185, 80, 0.10);
    --color-warning:        #d2991d;
    --color-warning-bg:     rgba(210, 153, 29, 0.10);
    --color-danger:         #f85149;
    --color-danger-hover:   #ff6b63;
    --color-danger-bg:      rgba(248, 81, 73, 0.10);
    --color-overlay:        rgba(0, 0, 0, 0.60);
    --color-toast-success:  #1a3d1f;
    --color-toast-error:    #3d1a1a;
    --color-toast-info:     #1a2a3d;
    --color-badge-text:     #0d1117;
    --color-btn-primary-bg: #1f6feb;
    --color-btn-primary-text: #ffffff;
    --color-input-focus-shadow: rgba(88, 166, 255, 0.15);
}

/* ===== Applied Styles (using variables only) ===== */

body {
    background-color: var(--color-bg);
    color: var(--color-text);
}

/* Scrollbar */
::-webkit-scrollbar-thumb {
    background: var(--color-border);
}
::-webkit-scrollbar-thumb:hover {
    background: var(--color-text-muted);
}

/* Header */
.header {
    background-color: var(--color-surface);
    border-bottom-color: var(--color-border);
}
.header__title { color: var(--color-text); }
.header__logo { color: var(--color-primary); }
.header__status {
    background-color: var(--color-bg);
    color: var(--color-text-muted);
}

/* Status indicators */
.status-indicator--loading { background-color: var(--color-text-muted); }
.status-indicator--started  { background-color: var(--color-success); }
.status-indicator--frozen   { background-color: var(--color-warning); }
.status-indicator--stopped  { background-color: var(--color-danger); }

/* Navigation */
.nav {
    background-color: var(--color-surface);
    border-bottom-color: var(--color-border);
}
.nav__tab { color: var(--color-text-muted); }
.nav__tab:hover {
    color: var(--color-text);
    border-bottom-color: var(--color-border);
}
.nav__tab.active {
    color: var(--color-primary);
    border-bottom-color: var(--color-primary);
}
.nav__badge {
    background-color: var(--color-primary);
    color: var(--color-badge-text);
}

/* Buttons */
.btn {
    background-color: var(--color-surface);
    border-color: var(--color-border);
    color: var(--color-text);
}
.btn:hover {
    background-color: var(--color-surface-hover);
    border-color: var(--color-text-muted);
}
.btn--primary {
    background-color: var(--color-btn-primary-bg);
    border-color: var(--color-btn-primary-bg);
    color: var(--color-btn-primary-text);
}
.btn--primary:hover {
    background-color: var(--color-primary-hover);
    border-color: var(--color-primary-hover);
}
.btn--danger { color: var(--color-danger); }
.btn--danger:hover {
    background-color: var(--color-danger-bg);
    border-color: var(--color-danger);
}
.btn--icon { color: var(--color-text-muted); }
.btn--icon:hover {
    color: var(--color-text);
    background-color: var(--color-surface-hover);
    border-color: var(--color-border);
}

/* Filter bar */
.filter-bar__select,
.filter-bar__search {
    background-color: var(--color-surface);
    border-color: var(--color-border);
    color: var(--color-text);
}
.filter-bar__select:focus,
.filter-bar__search:focus {
    border-color: var(--color-primary);
}
.filter-bar__search::placeholder { color: var(--color-text-muted); }

/* Loading */
.loading { color: var(--color-text-muted); }

/* Repo tree */
.repo-tree {
    background-color: var(--color-surface);
    border-color: var(--color-border);
}
.repo-group { border-bottom-color: var(--color-border); }
.repo-group__header {
    color: var(--color-text);
    background-color: var(--color-surface);
}
.repo-group__header:hover { background-color: var(--color-surface-hover); }
.repo-group__count { color: var(--color-text-muted); }
.repo-item { border-top-color: var(--color-border-light); }
.repo-item:hover { background-color: var(--color-surface-hover); }

/* Статусы лампочек */

.repo-item__status--pending_clone  { background-color: var(--status-pending_clone); }
.repo-item__status--cloning        { background-color: var(--status-cloning); animation: pulse 1.5s infinite; }
.repo-item__status--cloning_error  { background-color: var(--status-cloning_error); }
.repo-item__status--pending_update { background-color: var(--status-pending_update); }
.repo-item__status--updating       { background-color: var(--status-updating); animation: pulse 1.5s infinite; }
.repo-item__status--updating_error { background-color: var(--status-updating_error); }
.repo-item__status--frozen         { background-color: var(--status-frozen); }
.repo-item__status--storage_error  { background-color: var(--status-storage_error); }
.repo-item__status--error          { background-color: var(--status-error); }

/* */

.repo-item__path { color: var(--color-text-muted); }
.repo-item__description { color: var(--color-text-muted); }

.repo-tag {
    background-color: var(--color-primary-bg);
    border-color: var(--color-primary-border);
    color: var(--color-primary);
}
.repo-item__interval { color: var(--color-text-muted); }

/* Queue */
.queue-list {
    background-color: var(--color-surface);
    border-color: var(--color-border);
}
.queue-item { border-bottom-color: var(--color-border-light); }
.queue-item:hover { background-color: var(--color-surface-hover); }
.queue-item__priority { color: var(--color-text-muted); }
.queue-item__type--clone {
    background-color: var(--color-primary-bg);
    color: var(--color-primary);
}
.queue-item__type--update {
    background-color: var(--color-success-bg);
    color: var(--color-success);
}
.queue-item__scheduled { color: var(--color-text-muted); }

/* Events */
.events-list {
    background-color: var(--color-surface);
    border-color: var(--color-border);
}
.event-item { border-bottom-color: var(--color-border-light); }
.event-item:hover { background-color: var(--color-surface-hover); }
.event-item__time { color: var(--color-text-muted); }
.event-item__type {
    background-color: var(--color-bg);
    color: var(--color-text);
}
.event-item__type--error,
.event-item__type--cloning_error,
.event-item__type--updating_error,
.event-item__type--storage_error {
    background-color: var(--color-danger-bg);
    color: var(--color-danger);
}
.event-item__description { color: var(--color-text-muted); }

/* Modal */
.modal__overlay { background-color: var(--color-overlay); }
.modal__content {
    background-color: var(--color-surface);
    border-color: var(--color-border);
}
.modal__header {
    background-color: var(--color-surface);
    border-bottom-color: var(--color-border);
}
.modal__close { color: var(--color-text-muted); }
.modal__close:hover { color: var(--color-text); }

/* Form */
.form-input {
    background-color: var(--color-bg);
    border-color: var(--color-border);
    color: var(--color-text);
}
.form-input:focus {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 2px var(--color-input-focus-shadow);
}
.preset-btn {
    background-color: var(--color-bg);
    border-color: var(--color-border);
    color: var(--color-text-muted);
}
.preset-btn:hover {
    border-color: var(--color-primary);
    color: var(--color-primary);
}
.preset-btn.active {
    background-color: var(--color-primary-bg);
    border-color: var(--color-primary);
    color: var(--color-primary);
}
.form-actions { border-top-color: var(--color-border); }

/* Detail view */
.detail-label { color: var(--color-text-muted); }

/* Toast */
.toast--success {
    background-color: var(--color-toast-success);
    border-color: var(--color-success);
    color: var(--color-success);
}
.toast--error {
    background-color: var(--color-toast-error);
    border-color: var(--color-danger);
    color: var(--color-danger);
}
.toast--info {
    background-color: var(--color-toast-info);
    border-color: var(--color-primary);
    color: var(--color-primary);
}

/* ===== Groups Table ===== */
.groups-table-wrapper {
    background-color: var(--color-surface);
    border-color: var(--color-border);
}

.groups-table__th {
    background-color: var(--color-surface);
    border-bottom-color: var(--color-border);
    color: var(--color-text-muted);
}

.groups-table td {
    border-bottom-color: var(--color-border-light);
    color: var(--color-text);
}

.groups-table tbody tr:hover td {
    background-color: var(--color-surface-hover);
}

.groups-table__alias {
    color: var(--color-primary);
}

.groups-table__count {
    color: var(--color-text);
}

.groups-table .loading {
    color: var(--color-text-muted);
}

.groups-table__row--default td {
    background-color: var(--color-surface-hover);
}

.groups-table__hint {
    color: var(--color-text-muted);
}

.groups-table__period {
    color: var(--color-text-muted);
}

.form-hint {
    color: var(--color-text-muted);
}

/* стиль для пустого бейджа */
.nav__badge--empty {
    background-color: var(--color-border);
    color: var(--color-text-muted);
}