/* Mobile layout for compact screens and touch input. */
.mobile-nav-backdrop { display: none; }

@media (max-width: 760px) {
  html { -webkit-text-size-adjust: 100%; }
  body { overflow-x: hidden; }
  body.mobile-nav-open { overflow: hidden; }

  button,
  input,
  select,
  textarea { font-size: 16px; touch-action: manipulation; }

  input,
  select,
  textarea { min-height: 46px; padding: 11px 12px; }

  .btn,
  .logout,
  .mobile-menu { min-height: 46px; padding: 11px 14px; }

  .shell { width: 100%; min-height: 100dvh; }

  .sidebar {
    position: fixed;
    inset: 0 auto 0 0;
    z-index: 50;
    width: min(320px, 88vw);
    height: 100dvh;
    padding: max(18px, env(safe-area-inset-top)) 13px max(18px, env(safe-area-inset-bottom));
    overflow-y: auto;
    overscroll-behavior: contain;
    transform: translateX(-105%);
  }

  .sidebar.open { transform: translateX(0); }
  .sidebar .brand { padding: 0 8px 16px; }
  .sidebar .nav { gap: 4px; margin-top: 12px; }
  .sidebar .nav button { min-height: 48px; padding: 11px 12px; }
  .sidebar .userbox { margin-top: 14px; }

  .mobile-nav-backdrop {
    position: fixed;
    inset: 0;
    z-index: 45;
    display: none;
    width: 100%;
    height: 100%;
    padding: 0;
    border: 0;
    background: rgba(2, 6, 23, .72);
  }

  body.mobile-nav-open .mobile-nav-backdrop { display: block; }

  .main {
    width: 100%;
    padding: max(14px, env(safe-area-inset-top)) max(11px, env(safe-area-inset-right)) max(28px, env(safe-area-inset-bottom)) max(11px, env(safe-area-inset-left));
  }

  .topbar { align-items: flex-start; gap: 10px; margin-bottom: 15px; }
  .topbar h1 { margin-bottom: 3px; font-size: clamp(22px, 7vw, 28px); line-height: 1.15; }
  .topbar p { margin-bottom: 0; font-size: 12px; line-height: 1.35; }
  .premium-topbar-tools { flex: 0 0 auto; }
  .mobile-menu { white-space: nowrap; }

  .grid.two,
  .grid.three,
  .form-grid,
  .form-grid.three-col { grid-template-columns: minmax(0, 1fr) !important; }

  .grid.stats { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 10px; }
  .card,
  .premium-card { padding: 14px; border-radius: 14px; }
  .card h2 { font-size: 17px; line-height: 1.25; }
  .stat-value { margin-top: 6px; font-size: clamp(19px, 6vw, 25px); overflow-wrap: anywhere; }
  .stat-label { font-size: 12px; }
  .stat-help { font-size: 11px; }

  .form { gap: 11px; }
  .form > .btn,
  .form > .actions { width: 100%; }
  .form > .btn { justify-content: center; }
  .actions { align-items: stretch; width: 100%; }
  .actions .btn { flex: 1 1 135px; }

  .toolbar {
    align-items: stretch;
    flex-direction: column;
    gap: 9px;
  }
  .toolbar label { min-width: 0; width: 100%; }
  .toolbar > .btn { width: 100%; }

  .product-list { max-height: none; }
  .product-row { align-items: flex-start; flex-wrap: wrap; }
  .product-row > .btn { margin-left: auto; }
  .cart-line {
    grid-template-columns: minmax(0, 1fr) 64px auto 42px;
    gap: 6px;
  }
  .cart-line input { min-height: 42px; padding-inline: 7px; }
  .cart-line .btn { min-height: 42px; padding: 8px; }

  .table-wrap {
    max-width: 100%;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
  }
  table { min-width: 620px; }
  th,
  td { padding: 10px; font-size: 12px; }
  .archive-table { min-width: 1050px; }
  .archive-table-wrap { max-height: none; }

  .modal-backdrop {
    align-items: end;
    place-items: end stretch;
    padding: 0;
  }
  .modal-card {
    width: 100%;
    max-height: 94dvh;
    padding: 16px 13px max(16px, env(safe-area-inset-bottom));
    border-radius: 18px 18px 0 0;
  }
  .modal-head { position: sticky; top: -16px; z-index: 2; margin: -16px -13px 14px; padding: 14px 13px 10px; background: #0d1524; }
  .modal-close { width: 44px; height: 44px; }

  .month-calendar-card { margin-top: 14px; }
  .month-calendar-toolbar { padding: 15px 13px; }
  .month-calendar-controls { grid-template-columns: 44px minmax(0, 1fr) 44px; }
  .month-nav-button { width: 44px; height: 44px; }
  .month-today-button { min-height: 44px; }
  .month-summary { grid-template-columns: 1fr 1fr; padding: 10px 13px; }
  .month-calendar-meta { padding: 10px 13px; }
  .month-calendar-scroll { overflow: visible; }
  .month-calendar-inner { min-width: 0 !important; }
  .month-weekdays { display: none; }
  .month-calendar-grid { display: grid !important; grid-template-columns: minmax(0, 1fr) !important; grid-auto-rows: auto !important; }
  .month-day { min-height: 76px !important; padding: 10px 11px; }
  .month-day-outside { display: none; }
  .month-events { gap: 6px; }
  .month-event { padding: 9px; font-size: 11px; }
  .month-event-top strong { font-size: 11px; }
  .month-event-prepay { display: inline; }

  .schedule-assignment-form,
  .schedule-payroll-stats { grid-template-columns: minmax(0, 1fr) !important; }
  .schedule-calendar-head { padding: 15px 13px; }
  .schedule-month-controls { display: grid; grid-template-columns: 44px minmax(0, 1fr) 44px; }
  .schedule-period-select { grid-column: 1 / -1; width: 100%; }
  .schedule-period-select input { width: 100%; }
  .schedule-month-controls [data-schedule-current] { grid-column: 1 / -1; }
  .schedule-calendar-scroll { overflow: visible; }
  .schedule-calendar-inner { min-width: 0 !important; }
  .schedule-weekdays { display: none; }
  .schedule-grid { display: grid !important; grid-template-columns: minmax(0, 1fr) !important; gap: 1px; }
  .schedule-day-blank { display: none; }
  .schedule-day {
    display: grid;
    grid-template-columns: 70px minmax(0, 1fr);
    align-items: center;
    min-height: 64px !important;
    padding: 9px 42px 9px 10px;
  }
  .schedule-day-head { margin: 0; }
  .schedule-person { margin-top: 0; }
  .schedule-empty-day { margin: 0; text-align: left; }
  .schedule-remove { top: 50%; right: 10px; width: 32px; height: 32px; transform: translateY(-50%); }

  .archive-hero,
  .archive-list-head { gap: 10px; }
  .archive-total-badge { width: 100%; text-align: center; }
  .archive-pagination .btn { min-width: 44px; }

  .login-page { align-items: start; padding: max(20px, env(safe-area-inset-top)) 12px max(20px, env(safe-area-inset-bottom)); }
  .login-card { width: 100%; padding: 22px 17px; border-radius: 18px; }
}

@media (max-width: 380px) {
  .grid.stats { grid-template-columns: minmax(0, 1fr) !important; }
  .topbar { display: grid; grid-template-columns: minmax(0, 1fr) auto; }
  .cart-line { grid-template-columns: minmax(0, 1fr) 58px 38px; }
  .cart-line .money { grid-column: 1 / -1; grid-row: 2; }
}
