/* Раскладка ERP MP для компьютера.
 *
 * Телефон — главный рабочий сценарий, поэтому базовые правила ниже ничего
 * не меняют: узкая колонка, крупные поля «под палец», плитки на главной,
 * боковое меню скрыто.
 *
 * Всё широкое и плотное включается только с 1024px и только на рабочих
 * экранах (у них <body class="app">) — вход и регистрация остаются как были.
 * На компьютере действует отдельный масштаб: базовый шрифт 14px, поля и
 * кнопки 32-36px, строки таблиц 32-34px. Мобильных значений это не касается,
 * они живут вне медиазапроса.
 *
 * Цвета берутся из тех же переменных, что и в style.css, поэтому светлая
 * и тёмная тема работают сами.
 */

/* ------------------------------------------------------------ шапка */

.top { gap: 12px; }
.brand { color: var(--text); text-decoration: none; }
.me { display: flex; align-items: center; gap: 12px; min-width: 0; }
/* На телефоне в шапке только «Выйти» — как было. */
.me-name, .me-role { display: none; }

/* ------------------------------------------------------------ каркас */

.shell { display: block; }
.side { display: none; }

/* Обёртки, которые на телефоне ведут себя как обычный поток. */
.cards { display: block; }
.work-layout { display: block; }

/* ============================================================== компьютер */

@media (min-width: 1024px) {

  /* ---------------------------------------------------------- шапка */

  .app .top {
    position: sticky; top: 0; z-index: 20;
    padding: 8px 20px;
  }
  .app .brand { font-size: 15px; }
  .app .me { gap: 10px; }
  .app .me-name {
    display: inline-block; max-width: 320px; font-size: 13px; font-weight: 500;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  .app .me-role {
    display: inline-block; padding: 2px 9px; border: 1px solid var(--line);
    border-radius: 999px; font-size: 11.5px; color: var(--muted); white-space: nowrap;
  }
  .app .exit { font-size: 13px; }

  /* ---------------------------------------------------------- каркас и меню */

  .app { font-size: 14px; }
  .app .shell {
    display: grid;
    grid-template-columns: 214px minmax(0, 1fr);
    align-items: start;
    max-width: 1440px;
    margin: 0 auto;
  }
  .app .side {
    display: block;
    position: sticky; top: 46px;
    max-height: calc(100vh - 58px); overflow-y: auto;
    padding: 14px 8px 24px 16px;
  }
  .app .side-nav { display: flex; flex-direction: column; gap: 1px; }
  .app .nav-group {
    margin: 12px 0 3px; padding: 0 10px;
    font-size: 10.5px; letter-spacing: .06em; text-transform: uppercase;
    color: var(--muted);
  }
  .app .nav-group:first-child { margin-top: 0; }
  .app .nav-item {
    display: block; padding: 6px 10px; border-radius: 8px;
    color: var(--text); text-decoration: none;
    font-size: 13px; line-height: 1.35;
  }
  .app .nav-item:hover { background: rgba(127, 127, 127, .12); }
  .app .nav-item.on {
    background: rgba(31, 111, 235, .12); color: var(--accent); font-weight: 600;
  }

  /* main — вторая колонка сетки: авто-поля из style.css сжали бы его
     до ширины содержимого, поэтому здесь они снимаются. */
  .app main { max-width: none; width: 100%; margin: 0; padding: 16px 24px 48px; }

  /* ---------------------------------------------------------- текст */

  .app h1 { font-size: 21px; margin: 2px 0 8px; }
  .app h2 { font-size: 15px; margin: 18px 0 6px; }
  .app .hint { font-size: 13px; max-width: 90ch; }
  .app .sub { font-size: 11px; }
  .app .alert { padding: 8px 12px; border-radius: 8px; font-size: 13px; margin-bottom: 12px; }

  /* ---------------------------------------------------------- поля и кнопки */

  .app input[type=text], .app input[type=tel], .app input[type=date],
  .app input[type=month], .app input[type=file], .app select, .app textarea {
    font-size: 13.5px; min-height: 34px; padding: 6px 9px; border-radius: 8px;
  }
  .app label { font-size: 12px; gap: 4px; }
  .app button {
    font-size: 13.5px; min-height: 34px; padding: 7px 16px; border-radius: 8px;
  }
  .app button.ghost { min-height: 0; padding: 4px 0; font-size: 13px; }

  /* Формы: две колонки, а на широком экране — три. Всё, что шире одного
     поля (кнопки, галочки, пары, длинные подписи), занимает строку целиком. */
  .app main .form {
    display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px 18px; align-items: start; margin-top: 12px; max-width: 940px;
  }
  .app main .form > button,
  .app main .form > fieldset,
  .app main .form > p,
  .app main .form > details,
  .app main .form > section,
  .app main .form > .check,
  .app main .form > .pair,
  .app main .form > label:has(textarea) { grid-column: 1 / -1; }
  .app main .form > button { justify-self: start; min-width: 200px; }
  .app main .form > .check { margin: 0; }
  .app .consents { padding: 12px; border-radius: 10px; }

  /* Быстрый ввод остаётся в одну колонку — порядок полей важнее плотности,
     но сами поля на компьютере такие же компактные, как везде. */
  .app main .form-compact { display: flex; align-items: stretch; gap: 8px; }
  .app .form-compact input[type=text], .app .form-compact select,
  .app .combo-input { min-height: 34px; padding: 6px 9px; font-size: 13.5px; }
  .app .combo-picked { min-height: 34px; }
  .app #add-row { align-self: flex-start; min-width: 200px; min-height: 36px; padding: 8px 16px; }
  .app .more > summary { min-height: 34px; padding: 7px 10px; font-size: 12.5px; }
  .app .more-body { gap: 8px; padding: 0 10px 10px; }
  /* Имя сотрудника — сразу за заголовком, а не у дальнего края экрана. */
  .app .head-row { justify-content: flex-start; gap: 12px; }
  .app .head-row h1 { font-size: 21px; }

  /* Строчные формы (дата плюс кнопка) не растягиваются на весь экран. */
  .app .row { max-width: 760px; gap: 8px; margin-top: 8px; }
  .app .row input, .app .row select { flex: 0 1 220px; }
  .app .row button { flex: 0 0 auto; min-width: 150px; }
  .app .grid .row { max-width: none; }

  /* ---------------------------------------------------------- плитки и карточки */

  .app .tiles { grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 10px;
                margin-top: 14px; }
  .app .tile { padding: 11px 13px; border-radius: 10px; font-size: 13.5px; min-height: 44px; }
  .app .tile span { font-size: 11px; }

  .app .cards {
    display: grid; gap: 10px;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    align-items: start;
  }
  .app .card { padding: 12px; border-radius: 10px; margin-bottom: 10px; font-size: 13px; }
  .app .cards .card { margin-bottom: 0; }
  .app main > .card { max-width: 900px; }
  .app .card-head { font-size: 14px; }

  /* ---------------------------------------------------------- таблицы */

  .app main .grid { font-size: 13px; border-radius: 10px; }
  .app main .grid td, .app main .grid th { padding: 5px 10px; line-height: 1.35; }
  .app main .grid th { font-size: 11px; }
  .app main .grid .sub { font-size: 11px; line-height: 1.3; margin-top: 1px; }
  .app main .grid button.ghost { font-size: 12px; }

  /* ---------------------------------------------------------- запись работы */

  .app .work-layout {
    display: grid; grid-template-columns: minmax(0, 400px) minmax(0, 1fr);
    gap: 24px; align-items: start;
  }
  .app .work-side > h2:first-child { margin-top: 0; }
  .app .session { margin-top: 10px; border-radius: 10px; }
  .app .session-head { padding: 8px 10px; font-size: 13px; }

  /* ---------------------------------------------------------- дашборд
     Свои стили дашборда живут в dashboard.css; здесь только приводим их
     к общему плотному масштабу компьютера, не трогая сам файл. */

  .app .dash { --d-radius: 10px; --d-shadow: 0 1px 2px rgba(16, 24, 40, .05); }
  .app .dash h1 { font-size: 21px; }
  .app .dash h2 { font-size: 15px; margin: 16px 0 6px; }
  .app .dash .d-tiles { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
  .app .dash .d-tile { padding: 10px 12px; }
  .app .dash .d-val { font-size: 24px; }
  .app .dash .d-cap { font-size: 11.5px; }
  .app .dash .d-note, .app .dash .d-trend { font-size: 11.5px; }
  .app .dash .d-card { padding: 10px 12px 8px; }
  .app .dash .d-chip { padding: 5px 11px; font-size: 12.5px; }
  .app .dash .d-filters { gap: 8px; }
  .app .dash .d-filters label { flex: 0 1 220px; }
  .app .dash .d-filters button { padding: 8px 18px; }
  .app .dash .grid { font-size: 13px; }
  .app .dash .grid td, .app .dash .grid th { padding: 6px 8px; }
  .app .dash .d-charts { gap: 10px; }
}

@media (prefers-color-scheme: dark) {
  @media (min-width: 1024px) {
    .app .dash { --d-shadow: 0 1px 2px rgba(0, 0, 0, .35); }
  }
}

/* Широкий экран: формы удобнее в три колонки. */
@media (min-width: 1360px) {
  .app main .form { grid-template-columns: repeat(3, minmax(0, 1fr)); max-width: 1120px; }
}

/* Меню разделами: свёрнутые группы, раскрыт только текущий раздел. */
.nav-section { margin: 2px 0; }
.nav-section > summary {
  list-style: none; cursor: pointer; padding: 6px 10px; border-radius: 8px;
  font-size: 12px; text-transform: uppercase; letter-spacing: .04em;
  color: var(--muted); user-select: none;
}
.nav-section > summary::-webkit-details-marker { display: none; }
.nav-section > summary::after { content: '▾'; float: right; opacity: .5; }
.nav-section[open] > summary::after { content: '▴'; }
.nav-section > summary:hover { background: rgba(127,127,127,.08); }
.nav-section .nav-item { padding-left: 18px; }

/* Главная с разделами — обычный поток, а не сетка: иначе группы наезжают. */
.tiles.sections { display: block; }

/* Плитки на главной — группами, с подписью раздела. */
.tile-group { margin-bottom: 18px; }
.tile-group-title {
  font-size: 12px; text-transform: uppercase; letter-spacing: .04em;
  color: var(--muted); margin-bottom: 8px;
}
.tile-row { display: grid; gap: 10px; grid-template-columns: 1fr; }
@media (min-width: 700px) { .tile-row { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1100px) { .tile-row { grid-template-columns: repeat(5, 1fr); } }

/* На телефоне широкие таблицы не должны утаскивать страницу вбок:
   прячем второстепенные колонки, важное оставляем. */
@media (max-width: 700px) {
  .grid { table-layout: auto; }
  .grid td, .grid th { padding: 8px 6px; }
  /* справочник материалов: скрываем «Расход в день» и «Последняя цена» —
     они есть в карточке материала, а в списке важнее название и остаток */
  .grid.compact-mobile th:nth-child(3), .grid.compact-mobile td:nth-child(3),
  .grid.compact-mobile th:nth-child(4), .grid.compact-mobile td:nth-child(4) {
    display: none;
  }
}

/* Любая таблица шире экрана прокручивается внутри себя, а не тянет страницу. */
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
