/* ── Тема и переменные ── */
:root {
  --shadow-sm: 0 1px 3px rgba(0,0,0,.08);
  --shadow-md: 0 2px 8px rgba(0,0,0,.12);
  --border-radius: .5rem;
  --income-color: #198754;
  --expense-color: #dc3545;
  --fuel-color: #fd7e14;
  --wash-color: #0dcaf0;
  --parking-color: #6f42c1;
  --row-hl-start: #6fcf97;
  --row-hl-end: #eafaf1;
}

[data-bs-theme="dark"] {
  --shadow-sm: 0 1px 3px rgba(0,0,0,.3);
  --shadow-md: 0 2px 8px rgba(0,0,0,.4);
  --row-hl-start: #2d8a5a;
  --row-hl-end: #1a3d2a;
}

/* ── Инициализация скрытых элементов (до загрузки BS) ── */
html { visibility: visible; }

/* ── Глобальные ── */
body {
  padding-bottom: 2rem;
}

/* Плейсхолдеры — курсив, светлее, мельче основного текста */
/* opacity: !important нужен, т.к. Bootstrap явно ставит opacity:1 на .form-control::placeholder */
::placeholder {
  font-style: italic !important;
  font-size: .85em !important;
  opacity: .18 !important;
}

.card {
  border-radius: var(--border-radius);
  box-shadow: var(--shadow-sm);
}

.table > :not(caption) > * > * {
  vertical-align: middle;
  padding: 0.45rem 0.75rem;
}

/* ── Шапка 1100 × 150 ── */
.site-header {
  max-width: 1100px;
  width: 100%;
  height: 150px;
  margin: 6px auto 0;
  display: flex;
  align-items: center;
  background-image: url('../img/header.png');
  background-size: cover;
  background-position: center;
  border-radius: 0 0 .5rem .5rem;
  box-shadow: 0 2px 8px rgba(0,0,0,.15);
}

[data-bs-theme="dark"] .site-header {
  background-color: #1e2a3a;
}

.site-header-inner {
  width: 100%;
  padding: 0 1rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.header-logo {
  color: rgba(0,0,0,.6);
  text-decoration: none;
  font-size: 5rem;
  line-height: 1;
  transition: color .15s, transform .15s;
}
.header-logo:hover { color: rgba(0,0,0,.85); transform: scale(1.06); }
[data-bs-theme="dark"] .header-logo { color: rgba(255,255,255,.7); }
[data-bs-theme="dark"] .header-logo:hover { color: rgba(255,255,255,.95); }

.header-controls {
  display: flex;
  align-items: center;
  gap: .25rem;
}

.header-btn {
  display: inline-flex;
  align-items: center;
  color: rgba(0,0,0,.7);
  background: none;
  border: none;
  padding: .5rem .75rem;
  border-radius: .5rem;
  font-size: .95rem;
  cursor: pointer;
  transition: color .15s, background .15s;
  text-decoration: none;
}
.header-btn:hover {
  color: #000;
  background: rgba(0,0,0,.08);
}
[data-bs-theme="dark"] .header-btn { color: rgba(255,255,255,.8); }
[data-bs-theme="dark"] .header-btn:hover { color: #fff; background: rgba(255,255,255,.12); }

/* ── Иконочная навигация ── */
.icon-nav {
  background: var(--bs-body-bg);
  border-bottom: 1px solid var(--bs-border-color);
  box-shadow: var(--shadow-sm);
}

.icon-nav-inner {
  max-width: 1100px;
  width: 100%;
  margin: 0 auto;
  padding: .5rem 1rem;
  display: flex;
  flex-wrap: wrap;
  gap: .375rem;
}

.icon-nav-btn {
  width: 52px;
  height: 52px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: .5rem;
  font-size: 1.5rem;
  color: var(--bs-secondary-color);
  text-decoration: none;
  transition: background .15s, color .15s;
  flex-shrink: 0;
}
.icon-nav-btn:hover {
  background: #d1fae8;
  color: #166534;
}
.icon-nav-btn.active {
  background: #166534;
  color: #fff;
}
[data-bs-theme="dark"] .icon-nav-btn:hover {
  background: rgba(22, 101, 52, .25);
  color: #6ee7b7;
}
[data-bs-theme="dark"] .icon-nav-btn.active {
  background: #166534;
  color: #fff;
}

/* ── Основной контент 1100px ── */
main.site-main {
  max-width: 1100px;
  width: 100%;
  margin: 0 auto;
  padding-left: 1rem;
  padding-right: 1rem;
}

/* ── KPI карточки (дашборд) ── */
.kpi-card {
  border-left: 4px solid;
  transition: transform .15s;
}
.kpi-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.kpi-card.kpi-primary { border-color: var(--bs-primary); }
.kpi-card.kpi-success { border-color: var(--bs-success); }
.kpi-card.kpi-warning { border-color: var(--bs-warning); }
.kpi-card.kpi-danger  { border-color: var(--bs-danger);  }

.kpi-value {
  font-size: 1.75rem;
  font-weight: 700;
  line-height: 1.2;
}

.kpi-label {
  font-size: .8rem;
  text-transform: uppercase;
  letter-spacing: .06em;
  opacity: .7;
}

/* ── KPI-строка авто (компактная, одна строка без переноса) ── */
.kpi-vehicle-row {
  display: flex;
  flex-wrap: nowrap;
  gap: .5rem;
  overflow-x: auto;
  padding-bottom: 4px; /* место под скроллбар */
}
.kpi-vehicle-col {
  flex: 1 1 0;
  min-width: 100px;
}
/* Уменьшенные шрифты внутри компактной строки */
.kpi-vehicle-row .kpi-value {
  font-size: 1.1rem;
}
.kpi-vehicle-row .kpi-label {
  font-size: .68rem;
}

/* ── Таблицы ── */
.table-hover tbody tr:hover {
  background-color: rgba(13,110,253,.05);
}

[data-bs-theme="dark"] .table-hover tbody tr:hover {
  background-color: rgba(99,155,255,.08);
}

/* ── Бейджи типов трат ── */
.badge-fuel    { background-color: var(--fuel-color);    color: #fff; }
.badge-wash    { background-color: var(--wash-color);    color: #000; }
.badge-parking { background-color: var(--parking-color); color: #fff; }

/* ── Строки с пометкой dirty ── */
.row-dirty td:first-child {
  border-left: 3px solid var(--bs-warning);
}

/* ── Подсветка строки при переходе из другой страницы ── */
@keyframes row-hl-fade {
  0%, 30% { background-color: var(--row-hl-start); }
  100%     { background-color: var(--row-hl-end); }
}
.row-hl td { animation: row-hl-fade 2.5s ease-out forwards; }

/* ── Кнопки действий в таблице ── */
.btn-action {
  padding: .2rem .45rem;
  font-size: .8rem;
}

/* ── Фильтры ── */
.filter-bar {
  background: var(--bs-tertiary-bg);
  border-radius: var(--border-radius);
  padding: .75rem 1rem;
  margin-bottom: 1.25rem;
}

/* ── Форма смены (полная страница) ── */
.shift-section {
  border-left: 3px solid var(--bs-secondary-border-subtle);
  padding-left: 1rem;
  margin-bottom: 1.5rem;
}

.shift-section-title {
  font-weight: 600;
  font-size: .9rem;
  text-transform: uppercase;
  letter-spacing: .05em;
  margin-bottom: .75rem;
  color: var(--bs-secondary);
}

/* ── Ссылки на чеки ── */
.receipt-link {
  font-size: .85rem;
  word-break: break-all;
}

/* ── Карточка баланса ── */
.balance-positive { color: var(--income-color); font-weight: 600; }
.balance-negative { color: var(--expense-color); font-weight: 600; }

/* ── Отчёты ── */
.chart-container {
  position: relative;
  height: 320px;
}

/* ── Навигация «хлебные крошки» и заголовок страницы ── */
.page-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1.25rem;
  flex-wrap: wrap;
  gap: .5rem;
}

.page-header h1, .page-header h2 {
  margin: 0;
  font-size: 1.4rem;
  font-weight: 700;
}

/* ── Выходной / праздник строки смены ── */
.shift-weekend { background-color: rgba(255, 193, 7, .08) !important; }
.shift-holiday { background-color: rgba(220, 53, 69, .08) !important; }

/* ─────────────── МОБИЛЬНЫЕ ─────────────── */
@media (max-width: 767.98px) {

  .site-header { height: 90px; border-radius: 0; }
  .header-logo { font-size: 3rem; }

  .icon-nav-inner {
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }
  .icon-nav-inner::-webkit-scrollbar { display: none; }

  main.site-main {
    padding-left: .75rem;
    padding-right: .75rem;
  }

  /* Шрифт таблиц */
  .table { font-size: .82rem; }

  /* KPI в 2 колонки */
  .kpi-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .75rem;
  }

  .kpi-value { font-size: 1.4rem; }

  /* Скрываем лишние колонки в таблице */
  .d-mob-none { display: none !important; }

  /* Фильтр — стэк */
  .filter-bar .row > * { margin-bottom: .5rem; }

  /* Полные кнопки на мобиле */
  .btn-add-mobile {
    position: fixed;
    bottom: 1.25rem;
    right: 1.25rem;
    z-index: 1050;
    border-radius: 50%;
    width: 3.25rem;
    height: 3.25rem;
    font-size: 1.4rem;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 12px rgba(0,0,0,.25);
  }

  /* Форма — метки сверху */
  .form-label { font-size: .88rem; }

  /* Chart */
  .chart-container { height: 240px; }

  /* Page header стэк */
  .page-header {
    flex-direction: column;
    align-items: flex-start;
  }
}

@media (min-width: 768px) {
  .btn-add-mobile { display: none !important; }
}

/* ── Таблицы с фиксированной раскладкой (пробег, смены, авторасходы) ── */
.odo-table,
.shift-table,
.vexp-table,
.exp-table,
.pay-table,
.dep-table,
.ev-table {
  table-layout: fixed;
  width: 100%;
}

.odo-notes-cell,
.shift-notes-cell,
.vexp-notes-cell,
.exp-comment-cell,
.pay-comment-cell,
.dep-comment-cell {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 0;      /* вместе с table-layout:fixed заставляет ячейку брать остаток */
  cursor: default;
}

.exp-name-cell {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: default;
}

/* ── Бейджи карт (С = личная, А = работодателя) ── */
.badge-card-self,
.badge-card-employer {
  display: inline-block;
  padding: .2em .5em;
  border-radius: .375rem;
  font-size: .8rem;
  font-weight: 600;
  background: transparent;
  line-height: 1;
}

.badge-card-self {
  border: 2px solid var(--income-color);
  color: var(--income-color);
}

.badge-card-employer {
  border: 2px solid var(--expense-color);
  color: var(--expense-color);
}
