:root { --cell:34px; }
body { background:#f5f6f8; }

/* ===== Логин ===== */
.login-wrap { min-height:100vh; display:flex; align-items:center; justify-content:center; }
.login-card { width:100%; max-width:360px; }

/* Рабочие цвета ячеек */
.ts-table .code-С   { background:#ff9d9d; color:#827717; }
.ts-table .code-Я   { background:#e8f5e9; color:#1b5e20; }
.ts-table .code-Н   { background:#d7ccc8; color:#3e2723; }
.ts-table .code-РВ  { background:#c8e6c9; color:#1b5e20; }



.ts-table [class*="code-"] { font-weight:600; }


/* ===== Вкладки ===== */
.nav-tabs-app .nav-link { color:#dbe7ff; }
.nav-tabs-app .nav-link.active { background:#fff; color:#0d6efd; border-radius:6px; }

/* ===== Табель ===== */
/* .ts-wrap { max-height:72vh; overflow:auto; } -это скрол табеля*/
.ts-wrap {
  max-height: none;      /* убираем ограничение высоты */
  overflow-y: visible;   /* убираем вертикальный скролл */
  overflow-x: auto;
}
.ts-table { border-collapse:separate; border-spacing:0; font-size:.8rem; }
.ts-table th, .ts-table td { text-align:center; vertical-align:middle; white-space:nowrap; padding:2px 4px; }
.ts-table thead th { position:sticky; top:0; z-index:5; background:#e9eef5; }
.ts-table .emp-col {
    position:sticky; left:0; z-index:6; background:#fff; text-align:left;
    min-width:200px; max-width:200px; box-shadow:2px 0 3px rgba(0,0,0,.06);
}
.ts-table thead .emp-col { z-index:7; background:#e9eef5; }
.ts-table .day-cell { width:var(--cell); min-width:var(--cell); cursor:pointer; }
.ts-table .day-cell:hover { outline:2px solid #0d6efd; }
.ts-table .total-col { background:#f0f4ff; font-weight:600; }

/* Выходные и праздники */
.ts-table .weekend { background:#fbecec; }
.ts-table th.weekend { background:#f3d6d6; }
.ts-table .holiday { background:#ffe1c2 !important; }

/* Цвета кодов (как в исходной таблице) */
.code-Я   { background:#e8f7e8; }     /* явка — зелёный */
.code-РВ, .code-С { background:#cdeccd; }
.code-К, .code-КВД { background:#fff4b3; }  /* командировка — жёлтый */
.code-ОТ, .code-ОД, .code-У, .code-Р, .code-ОЖ { background:#cfe2ff; } /* отпуск — синий */
.code-Б   { background:#f0d6f7; }     /* больничный */
.code-Н, .code-ПР, .code-НН { background:#f8d7da; } /* нарушения */
.code-В, .code-ОВ { color:#999; }

.cell-note::after { content:'•'; color:#0d6efd; font-size:1.2em; vertical-align:super; }
.cell-overtime { box-shadow:inset 0 0 0 2px #dc3545; }

/* ===== Алерты медосмотра ===== */
.alert-expire { color:#b02a37; font-weight:600; }
.warn-soon { color:#b8860b; font-weight:600; }

/* ===== Сводка ===== */
.sticky-summary { position:sticky; top:80px; }

/* ===== Адаптив ===== */
@media (max-width:991px){
  .sticky-summary{ position:static; margin-top:1rem; }
  .ts-table .emp-col{ min-width:140px; max-width:140px; font-size:.72rem; }
}
.presets .btn { padding:.1rem .4rem; margin-left:.2rem; }

.cal-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
@media(max-width:992px){.cal-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.cal-grid{grid-template-columns:1fr}}
.cal-month{border:1px solid #dee2e6;border-radius:8px;padding:8px}
.cal-mname{font-weight:600;text-align:center;margin-bottom:6px}
.cal-dows,.cal-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}
.cal-dows span{font-size:11px;color:#888}
.cal-day{padding:6px 0;border-radius:4px;cursor:pointer;font-size:13px;transition:.1s}
.cal-day:hover{outline:2px solid #0d6efd}
.cal-empty{}
.d-weekend{color:#adb5bd}
.d-holiday{background:#ffd6d6;color:#c00;font-weight:600}
.d-pre{background:#fff3cd;color:#856404}
.d-work{background:#d4edda;color:#155724;font-weight:600}
.cal-legend .lg{display:inline-block;width:14px;height:14px;border-radius:3px;margin:0 4px 0 12px;vertical-align:middle}

/* ===== Производственный календарь ===== */
.cal-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 12px;
}
.cal-month {
  border: 1px solid #dee2e6;
  border-radius: 6px;
  padding: 8px;
  background: #fff;
}
.cal-mname {
  text-align: center;
  font-weight: 600;
  margin-bottom: 4px;
}
.cal-dows, .cal-days {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
}
.cal-dows span {
  text-align: center;
  font-size: 0.75rem;
  color: #6c757d;
  font-weight: 500;
}
.cal-day, .cal-empty {
  text-align: center;
  padding: 4px 0;
  font-size: 0.85rem;
  border-radius: 3px;
  cursor: pointer;
  user-select: none;
}
.cal-day:hover { background: #e7f1ff; outline: 1px solid #0d6efd; }
.cal-empty { visibility: hidden; }

.cal-day.d-holiday { background: #f8d7da; color: #842029; font-weight: 600; }
.cal-day.d-pre     { background: #fff3cd; color: #664d03; }
.cal-day.d-work    { background: #d1e7dd; color: #0f5132; font-weight: 600; }
.cal-day.d-weekend { color: #dc3545; }

.cal-legend { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
.cal-legend .lg {
  display: inline-block; width: 14px; height: 14px;
  border-radius: 3px; vertical-align: middle; margin-right: 4px;
}
.cal-legend .d-holiday { background: #f8d7da; }
.cal-legend .d-pre     { background: #fff3cd; }
.cal-legend .d-work    { background: #d1e7dd; }
.cal-legend .d-weekend { background: transparent; border: 1px solid #dc3545; }

/* Отчёты */
.reports-table th, .reports-table td { vertical-align: middle; }
.print-only { display: none; }

@media print {
  .navbar, .nav-tabs-app, .no-print, #logoutBtn { display: none !important; }
  .tab-pane-app.d-none { display: none !important; }
  .print-only { display: block !important; }
  body { background: #fff; }
  .reports-table { font-size: 11px; }
  .reports-table .badge { border: 1px solid #999; color: #000 !important; background: transparent !important; }
  @page { size: landscape; margin: 1cm; }
}

.reports-table .emp-cell { width: 220px; max-width: 220px; }
.reports-table .emp-position {
  font-size: 11px;
  color: #6c757d;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 220px;
}


/* ТАБЕЛЬ: обрезка должности (узкая колонка) */
.emp-position-ts {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 200px;
  display: block;
}

/* ОТЧЁТЫ: должность ПОЛНОСТЬЮ, с переносом строк */
.reports-table .emp-position {
  font-size: 12px;
  color: #6c757d;
  white-space: normal;        /* перенос разрешён */
  word-break: break-word;
}
.reports-table .emp-pos-cell {
  min-width: 180px;
  max-width: 280px;
}

/* Разделители строк */
#tsBody td {
  border-bottom: 2px solid #cdd5df;
}
#tsBody tr:last-child td {
  border-bottom: none;
}

/* Подсветка строки при наведении */
#tsBody tr:hover td {
  background-color: #eef4ff !important;
}

/* Рабочие цвета ячеек */
.ts-table .code-К   { background:#bbdefb; color:#0d47a1; }
.ts-table .code-КВД { background:#90caf9; color:#0d47a1; }
/* Отпуска */
.ts-table .code-ОТ  { background:#fcff32; color:#856404; }
.ts-table .code-ОД  { background:#ffe8a1; color:#7a5c00; }
.ts-table .code-У   { background:#d4edda; color:#155724; }
.ts-table .code-Р   { background:#f8d7e3; color:#8a1c45; }
.ts-table .code-ОЖ  { background:#fde0ef; color:#8a1c45; }
.ts-table .code-ОВ  { background:#e2e3ff; color:#3b3f8c; }
/* Болезнь */
.ts-table .code-Б   { background:#d1ecf1; color:#0c5460; }
/* Нарушения */
.ts-table .code-ПР  { background:#f8d7da; color:#721c24; }
.ts-table .code-НН  { background:#ffd6c2; color:#a14a00; }

/* ===== Обновлённая оболочка приложения ===== */
:root { --app-blue:#155eef; --app-ink:#172033; --app-muted:#687386; --app-border:#dfe5ee; --app-surface:#fff; --app-bg:#f3f6fb; }
.app-body { background:var(--app-bg); color:var(--app-ink); }
.app-navbar { background:linear-gradient(110deg,#0d47c7,#1769ee 62%,#287cf5); box-shadow:0 8px 24px rgba(20,55,115,.16); padding:.65rem .9rem; }
.app-brand { display:flex; align-items:center; gap:.65rem; line-height:1.05; }
.app-brand small { display:block; margin-top:.2rem; font-size:.68rem; font-weight:400; opacity:.72; }
.brand-mark { display:grid; place-items:center; width:36px; height:36px; border-radius:10px; background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.24); font-weight:800; }
.nav-tabs-app { gap:.2rem; flex-wrap:nowrap; }
.nav-tabs-app .nav-link { padding:.55rem .7rem; border-radius:8px; font-size:.88rem; white-space:nowrap; }
.nav-tabs-app .nav-link:hover { color:#fff; background:rgba(255,255,255,.1); }
.nav-tabs-app .nav-link.active { box-shadow:0 5px 14px rgba(4,35,92,.18); }
.btn-nav-logout { color:#fff; border:1px solid rgba(255,255,255,.4); white-space:nowrap; }
.btn-nav-logout:hover { background:#fff; color:var(--app-blue); }

.timesheet-toolbar { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1rem; border:1px solid var(--app-border); border-radius:14px; background:var(--app-surface); box-shadow:0 5px 18px rgba(32,54,89,.05); }
.month-switcher { display:flex; align-items:center; gap:.75rem; min-width:285px; }
.month-switcher small,.section-eyebrow { color:var(--app-muted); text-transform:uppercase; letter-spacing:.08em; font-size:.68rem; font-weight:700; }
.month-arrow { width:40px; height:40px; border:1px solid var(--app-border); font-weight:700; }
.toolbar-actions { display:flex; align-items:center; justify-content:flex-end; gap:1rem; flex:1; }
.norm-hours-group { width:290px; flex:0 0 290px; }
.norm-hours-group #normHours { min-width:72px; }
.timesheet-legend { display:flex; flex-wrap:wrap; gap:.9rem; padding:0 .25rem; color:var(--app-muted); font-size:.75rem; }
.timesheet-legend span { display:inline-flex; align-items:center; gap:.35rem; }
.timesheet-legend i { width:10px; height:10px; border-radius:3px; }
.legend-work{background:#bfe4c6}.legend-vacation{background:#ffe66a}.legend-sick{background:#c7e8ee}.legend-trip{background:#90caf9}.legend-weekend{background:#edf0f4;border:1px solid #d4dae3}
.ts-wrap {
  max-height:none;
  overflow-x:auto;
  overflow-y:visible;
  border:1px solid var(--app-border);
  border-radius:12px;
  background:#fff;
  box-shadow:0 5px 18px rgba(32,54,89,.04);
}
.ts-table { margin-bottom:0; }
.ts-table th,.ts-table td { border-color:#e1e6ed; }
.ts-table thead th { background:#edf2f8; color:#3b4659; height:44px; }
.ts-table .emp-col { min-width:220px; max-width:220px; padding-left:.7rem; }
.ts-table .today { box-shadow:inset 2px 0 var(--app-blue),inset -2px 0 var(--app-blue); }
.ts-table thead .today { background:#dce8ff; color:#0d47c7; }
.ts-table .weekend { background:#f2f4f7; }
.ts-table th.weekend { background:#e9edf2; }
.ts-table td.weekend.code-ОТ { background:#fcff32; color:#856404; }
.ts-table .column-hover {
  box-shadow:inset 0 0 0 9999px rgba(21,94,239,.11);
  outline:1px solid rgba(21,94,239,.2);
  outline-offset:-1px;
}
.ts-table thead .column-hover { color:#0d47c7; font-weight:800; }
.ts-floating-header {
  display:none;
  position:fixed;
  z-index:1025;
  overflow:hidden;
  pointer-events:none;
  background:#edf2f8;
  border-bottom:1px solid #cfd7e3;
  box-shadow:0 5px 12px rgba(24,45,80,.14);
}
.ts-floating-header .ts-table { table-layout:fixed; margin:0; }
.ts-floating-header .ts-table th { position:static; height:44px; background:#edf2f8; }
#tsBody td { border-bottom:1px solid #dfe5ec; }
#tsBody tr:hover td { filter:brightness(.97); }
.summary-card { border:1px solid var(--app-border); border-radius:14px; overflow:hidden; box-shadow:0 5px 18px rgba(32,54,89,.05); }
.summary-card .card-header { padding:1rem; background:#fff; border-bottom:1px solid var(--app-border); }
.summary-card .card-header small { display:block; color:var(--app-muted); font-weight:400; margin-top:.15rem; }

.section-heading { display:flex; justify-content:space-between; align-items:end; margin-bottom:1rem; }
.employee-filters { display:grid; grid-template-columns:minmax(240px,1fr) 190px; gap:.75rem; padding:1rem; background:#fff; border:1px solid var(--app-border); border-radius:12px; }
.employee-card { border:1px solid var(--app-border); border-radius:14px; box-shadow:0 4px 16px rgba(32,54,89,.04); transition:transform .16s,box-shadow .16s; }
.employee-card:hover { transform:translateY(-2px); box-shadow:0 9px 24px rgba(32,54,89,.09); }
.employee-card-head { display:flex; gap:.8rem; align-items:flex-start; }
.employee-avatar { flex:0 0 42px; height:42px; display:grid; place-items:center; border-radius:12px; background:#e8f0ff; color:var(--app-blue); font-weight:800; font-size:.8rem; }
.employee-position { color:var(--app-muted); font-size:.82rem; line-height:1.35; min-height:2.2em; }
.employee-meta { display:flex; align-items:center; flex-wrap:wrap; gap:.6rem; margin-top:1rem; font-size:.82rem; }
.employee-meta a { color:var(--app-blue); text-decoration:none; }
.schedule-chip { padding:.3rem .55rem; border-radius:999px; background:#eef3fa; color:#35425a; font-weight:700; }
.employee-statuses { display:flex; flex-wrap:wrap; gap:.35rem; margin-top:.8rem; }
.employee-statuses .badge { font-weight:500; }
.employee-card .card-footer { padding-top:0; }

@media (min-width:1200px) { #appNavigation{min-width:0}.nav-tabs-app{overflow-x:auto;scrollbar-width:none}.nav-tabs-app::-webkit-scrollbar{display:none} }
@media (max-width:1199.98px) { #appNavigation{padding-top:.75rem}.nav-tabs-app{display:grid;grid-template-columns:repeat(3,1fr);gap:.35rem;margin-bottom:.75rem}.nav-tabs-app .nav-link{color:#fff}.btn-nav-logout{width:100%} }
@media (max-width:767.98px) {
  .app-navbar{padding:.55rem .7rem}.app-brand small{display:none}.brand-mark{width:32px;height:32px}.nav-tabs-app{grid-template-columns:1fr 1fr}
  .timesheet-toolbar{align-items:stretch;flex-direction:column;padding:.75rem}.month-switcher{justify-content:center;min-width:0}.month-switcher h4{font-size:1.15rem}
  .toolbar-actions{display:grid;grid-template-columns:1fr auto;justify-content:stretch;gap:.75rem}.toolbar-actions .input-group{grid-column:1/-1;max-width:none!important}.norm-hours-group{width:100%;flex-basis:auto}
  .timesheet-legend{overflow-x:auto;flex-wrap:nowrap;padding-bottom:.2rem}.timesheet-legend span{white-space:nowrap}.ts-table .emp-col{min-width:155px;max-width:155px}.ts-wrap{max-height:none}
  .section-heading{align-items:center}.section-heading .btn{font-size:.82rem}.employee-filters{grid-template-columns:1fr;padding:.75rem}
}
