/* ZTZ efficiency measure - мобильная адаптация (общий слой для всех страниц).
   Подключается ПОСЛЕ собственных <style> страницы, поэтому правила ниже
   перекрывают десктопные. Всё работает только на узких экранах
   (max-width: 768px) - десктопный вид не меняется.
   Дополнительно использует mobile.js: он расставляет у ячеек таблиц подписи
   (data-label) и классы m-title/m-toggle/m-empty, а широкие таблицы
   оборачивает в .m-scroll (горизонтальная прокрутка). */

.m-sort { display: none; }

@media (max-width: 768px) {

  html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
  body { -webkit-tap-highlight-color: rgba(231, 72, 85, 0.15); overflow-wrap: break-word; }
  img, svg, canvas, video { max-width: 100%; }

  /* ---------------------------------------------------------- шапка --- */
  header .header-inner {
    padding: 10px 12px !important;
    gap: 8px 10px !important;
    flex-wrap: wrap;
  }
  header .header-inner > svg { width: 54px; height: auto; flex: 0 0 auto; }
  header h1 {
    font-size: 14px !important;
    flex: 1 1 0 !important;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .user-box {
    flex: 1 1 100%;
    order: 3;
    font-size: 12px !important;
    gap: 8px !important;
    min-width: 0;
  }
  .user-box > span:first-child {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 800;
  }
  .user-box .role { flex: 0 0 auto; font-size: 10px !important; white-space: nowrap; }
  .user-box button {
    flex: 0 0 auto;
    min-height: 36px;
    padding: 6px 14px !important;
    font-size: 12px !important;
  }

  /* ----------------------------------------------------- навигация --- */
  nav.tabs {
    padding: 0 4px !important;
    gap: 0 !important;
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    scroll-snap-type: x proximity;
  }
  nav.tabs::-webkit-scrollbar { display: none; }
  nav.tabs a {
    flex: 0 0 auto;
    white-space: nowrap;
    padding: 14px 12px !important;
    font-size: 13px !important;
    scroll-snap-align: center;
  }
  nav.subtabs {
    padding: 10px 10px 0 !important;
    gap: 6px !important;
    overflow-x: auto;
    scrollbar-width: none;
    flex-wrap: nowrap;
  }
  nav.subtabs::-webkit-scrollbar { display: none; }
  nav.subtabs a { flex: 0 0 auto; white-space: nowrap; padding: 11px 16px !important; }

  /* ----------------------------------------------------- контейнеры --- */
  main {
    margin: 12px auto 16px !important;
    padding: 0 10px !important;
    max-width: 100% !important;
  }
  .card {
    padding: 14px !important;
    margin-bottom: 14px !important;
    border-radius: 10px !important;
    max-width: 100%;
  }
  .card h2 { font-size: 15px !important; }
  .card .sub { margin-top: -6px !important; line-height: 1.4; }
  details.card > summary { padding: 14px !important; font-size: 15px !important; flex-wrap: wrap; }
  details.card > .details-body { padding: 0 14px 14px 14px !important; }
  footer { padding: 14px 14px calc(14px + env(safe-area-inset-bottom)) !important; }

  /* ----------------------------------------------------------- формы --- */
  .row { flex-direction: column !important; gap: 10px !important; margin-bottom: 10px !important; }
  .field { min-width: 0 !important; width: 100% !important; flex: 0 0 auto !important; }
  .form-grid, .field-grid { grid-template-columns: 1fr !important; gap: 12px !important; }
  .form-grid .full { grid-column: auto !important; }

  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]),
  select, textarea {
    font-size: 16px !important;   /* 16px - иначе iOS приближает страницу при фокусе */
    min-height: 44px;
    max-width: 100%;
  }
  textarea { min-height: 88px; }
  input[type="checkbox"], input[type="radio"] { width: 20px; height: 20px; }
  input.search, input#search, .search-box, .cp-search {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
  }
  select.client-select, .cp-dropdown-toggle, .year-select select {
    width: 100%;
    min-width: 0 !important;
  }
  .year-select { flex-wrap: wrap; }

  button { touch-action: manipulation; }
  button.primary, button.secondary, button.ok, button.no,
  .toggle-btn, .mini-btn, .section-toggle {
    min-height: 44px;
  }
  button.secondary { margin-left: 0 !important; }
  #submitBtn, #proportionalBtn, #createBtn, #addBtn, #hrSubmitBtn, #addRoleBtn {
    width: 100%;
  }
  #proportionalBtn { margin-top: 8px; }
  .form-actions { flex-wrap: wrap; }
  .form-actions button { flex: 1 1 140px; }
  .filter-row { flex-wrap: wrap; }
  .filter-row button { min-height: 38px; }
  .card-head { align-items: flex-start !important; }
  .cal-nav-btn { width: 40px !important; height: 40px !important; font-size: 18px !important; }
  .msg { font-size: 14px; }

  /* ------------------------------------------------------- календарь --- */
  .cal-grid { gap: 2px !important; }
  .cal-cell { min-height: 44px !important; padding: 3px 4px !important; font-size: 11px !important; }
  .cal-cell .cal-label { display: none !important; }  /* подпись праздника не помещается; цвет ячейки + легенда ниже */
  .cal-icons { top: 1px !important; right: 2px !important; font-size: 9px !important; }
  .cal-dow { font-size: 10px !important; }
  .cal-legend { gap: 6px 12px !important; font-size: 10px !important; }
  .bday-banner { font-size: 13px !important; padding: 10px 12px !important; flex-wrap: wrap; }
  .bday-popover { max-width: calc(100vw - 20px) !important; }

  /* --------------------------------------------------------- KPI-сетки --- */
  .kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 10px !important; }
  .rate-grid { grid-template-columns: 1fr !important; gap: 10px !important; }
  .kpi { padding: 12px !important; min-width: 0; }
  .kpi .value { font-size: 17px !important; overflow-wrap: anywhere; }
  .bank-filters-grid { grid-template-columns: 1fr !important; }
  .bank-totals { gap: 8px 16px !important; padding: 10px !important; }

  /* ---------------------------------------------------------- графики --- */
  .chart-grid { grid-template-columns: 1fr !important; }
  .chart-wrap { height: 240px !important; }
  .cp-dropdown { display: block !important; }
  .cp-dropdown-panel { left: 0 !important; right: 0 !important; width: auto !important; max-width: none !important; }
  .cp-list { max-height: 200px; }

  /* ---------------------------------------------- таблицы: прокрутка --- */
  .m-scroll, .table-scroll, .tree-scroll, .rows-preview {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
  }
  .m-scroll > table { min-width: 100%; }

  /* широкие матрицы (БДДС): первая колонка закреплена */
  table.bdds th:first-child, table.bdds td.cat {
    position: sticky; left: 0; z-index: 2;
    background: #fff;
    min-width: 140px !important; max-width: 160px;
    box-shadow: 1px 0 0 var(--gray, #D9D9D9);
  }
  table.bdds th:first-child { z-index: 3; }
  table.bdds tr.group-header td.cat { background: #f7f8fa; }
  table.bdds tr.total-row td.cat { background: #fff; }

  /* ------------------------------------------- таблицы: карточки ------- */
  table.m-cards {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    table-layout: auto !important;
    border: 0;
  }
  table.m-cards colgroup, table.m-cards thead { display: none !important; }
  table.m-cards tbody, table.m-cards tfoot { display: block !important; width: 100%; }
  table.m-cards tr {
    display: block;
    width: 100%;
    margin: 0 0 10px;
    padding: 8px 12px;
    border: 1px solid var(--gray, #D9D9D9);
    border-radius: 8px;
    background: #fff;
  }
  table.m-cards tr:hover { background: #fff; }
  table.m-cards th, table.m-cards td {
    display: block;
    width: auto !important;
    max-width: 100%;
    padding: 5px 0 !important;
    border: 0 !important;
    background: transparent !important;
    text-align: left !important;
    white-space: normal !important;
    overflow-wrap: anywhere;
    font-size: 13px;
  }
  table.m-cards td[data-label] {
    position: relative;
    padding-left: 42% !important;
    min-height: 28px;
  }
  table.m-cards td[data-label]::before {
    content: attr(data-label);
    position: absolute;
    left: 0; top: 7px;
    width: 38%;
    color: #6b7280;
    font-size: 10px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    line-height: 1.25;
  }
  table.m-cards td.m-empty { display: none !important; }
  table.m-cards td.m-title { font-weight: 800; font-size: 14px; padding: 2px 0 6px !important; }
  table.m-cards td.m-toggle { display: inline-block; width: 32px !important; vertical-align: top; padding: 2px 0 !important; }
  table.m-cards td.m-toggle + td.m-title { display: inline-block; width: calc(100% - 38px) !important; vertical-align: top; }
  table.m-cards td.num, table.m-cards td.date-cell, table.m-cards td.nowrap { white-space: normal !important; }
  table.m-cards select, table.m-cards input:not([type="checkbox"]) { width: 100%; }
  table.m-cards .actions, table.m-cards .actions-cell { flex-wrap: wrap; white-space: normal; }
  table.m-cards tr.total-row { background: #f4f5f7; border-color: var(--navy, #2C3A67); }
  table.m-cards tr.total-row td.m-title { color: var(--navy, #2C3A67); }

  /* дерево проектов: иерархия отступами */
  table.m-cards tr.obj-row { background: #eef1f7; border-color: #c9d1e3; }
  table.m-cards tr.type-row { background: #f7f8fa; margin-left: 12px; width: calc(100% - 12px); }
  table.m-cards tr.leaf-row { margin-left: 24px; width: calc(100% - 24px); }
  table.m-cards td.client-cell { padding-left: 0 !important; }
  table.m-cards .group-label { padding-left: 0 !important; }
  table.m-cards .type-row .toggle-btn { margin-left: 0; }
  .toggle-btn { width: 24px !important; height: 24px; line-height: 24px; text-align: center; font-size: 16px; }
  .tree-scroll table.m-cards { min-width: 0 !important; }
  .tree-hint { display: inline-block; padding: 8px 4px; }
  #projExportDetailedBtn { padding: 8px 12px !important; margin-left: 0 !important; margin-top: 6px; }

  /* строки с раскрывающимся деталями (выписка и т.п.) */
  table.m-cards tr.bank-row-detail td { padding: 4px 0 !important; }

  /* сортировка карточек (вместо кликов по заголовкам) */
  .m-sort { display: block; width: 100%; margin: 0 0 10px; }

  /* ------------------------------------------------ модальные окна ------ */
  .overlay,
  div[id$="Overlay"],
  div[style*="inset:0"], div[style*="inset: 0"] {
    padding: 0 !important;
    align-items: flex-end !important;
  }
  .overlay .modal,
  div[id$="Overlay"] > div,
  div[style*="inset:0"] > div, div[style*="inset: 0"] > div {
    width: 100% !important;
    max-width: 100% !important;
    max-height: 92vh !important;
    padding: 18px 14px calc(18px + env(safe-area-inset-bottom)) !important;
    border-radius: 14px 14px 0 0 !important;
    -webkit-overflow-scrolling: touch;
  }
  .modal h2 { padding-right: 40px; font-size: 16px !important; }
  .modal-close, div[id$="Overlay"] button[id$="CloseBtn"], div[id$="Overlay"] > div > button:first-child {
    min-width: 40px; min-height: 40px;
  }
  .modal-close { top: 6px !important; right: 6px !important; font-size: 28px !important; }
  #okladBadge { position: static !important; text-align: left !important; margin-bottom: 8px; }
  .salary-block { margin-top: 16px !important; }

  /* блокировка табеля (index): форма внесения часов */
  #tsBlockerList > div { padding: 10px !important; }
  #tsBlockerList .ts-blocker-project { flex: 1 1 100% !important; min-width: 0 !important; width: 100% !important; min-height: 44px; font-size: 16px !important; }
  #tsBlockerList .ts-blocker-hours { flex: 1 1 90px !important; width: auto !important; min-height: 44px; font-size: 16px !important; }
  #tsBlockerList button { flex: 1 1 120px; min-height: 44px; font-size: 14px !important; }

  /* подсказки и всплывающие панели */
  .info-tooltip { width: min(280px, 80vw) !important; }
  .perm-list label { font-size: 13px !important; padding: 4px 0; }

  /* большие предпросмотры/таблицы 1С */
  .rows-preview { max-height: 60vh; }
  .onec-vat-row { flex-wrap: wrap; gap: 8px 16px !important; }
}

@media (max-width: 380px) {
  .kpi-grid { grid-template-columns: 1fr !important; }
  nav.tabs a { padding: 14px 10px !important; font-size: 12px !important; }
  table.m-cards td[data-label] { padding-left: 40% !important; }
}
