/* ═══════════════════════════════════════════════════
   KABANEK Mobile Polish v3
   Kompletne poprawki mobilne dla wszystkich apek KABANEK.
   Desktop ≥821px: pełne zero zmian.
   Mobile ≤820px: agresywne naprawy legacy UI.
   ═══════════════════════════════════════════════════ */

:root {
  --kbn-safe-top: env(safe-area-inset-top, 0px);
  --kbn-safe-bottom: env(safe-area-inset-bottom, 0px);
  --kbn-safe-left: env(safe-area-inset-left, 0px);
  --kbn-safe-right: env(safe-area-inset-right, 0px);
  --kbn-header-h: 52px;
}

/* ───── GLOBAL tylko mobile ───── */
@media (max-width: 820px) {
  html {
    -webkit-text-size-adjust: 100%;
    touch-action: manipulation;
  }
  html, body {
    overflow-x: hidden !important;
    max-width: 100vw !important;
    overscroll-behavior-y: none;
  }
  body {
    font-size: 14px !important;
    padding-left: var(--kbn-safe-left);
    padding-right: var(--kbn-safe-right);
  }

  /* iOS nie zoomuje przy focus gdy font-size >= 16px */
  input[type=text], input[type=email], input[type=password],
  input[type=search], input[type=tel], input[type=number],
  input[type=date], input[type=datetime-local], input[type=time],
  input[type=url], textarea, select {
    font-size: 16px !important;
  }

  /* Touch targets */
  button, .btn, a.btn, [role=button], [onclick] {
    min-height: 40px;
    touch-action: manipulation;
  }
  /* Ale nie wymuszaj tego na checkbox/radio */
  input[type=checkbox], input[type=radio] {
    min-height: auto !important;
    width: 18px;
    height: 18px;
  }

  /* ───── HEADER kompaktowy ───── */
  .header, header.header, .top-bar, .topbar:not(.kbn-admin-topbar), .app-header {
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    gap: 8px !important;
    padding: 8px 12px !important;
    min-height: var(--kbn-header-h) !important;
    max-height: var(--kbn-header-h) !important;
    height: var(--kbn-header-h);
    overflow: hidden;
    align-items: center !important;
    padding-top: max(8px, var(--kbn-safe-top)) !important;
  }
  .logo-wrap { gap: 8px !important; flex: 0 1 auto !important; min-width: 0; overflow: hidden; }
  .logo-img, .app-logo-img {
    width: 32px !important; height: 32px !important;
    padding: 1px !important; flex-shrink: 0;
  }
  .logo-text {
    font-size: 13px !important;
    letter-spacing: 1.5px !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .logo-sub, .app-subtitle { display: none !important; }

  /* Chowaj zbędne bloki z headera */
  .header > .nav,
  .header > div:not(.logo-wrap):not(.kbn-hamburger-wrap),
  .header > a:not(.kbn-hamburger):not(.logo-wrap) {
    display: none !important;
  }

  /* ───── HAMBURGER + DRAWER ───── */
  .kbn-hamburger {
    position: fixed !important;
    top: max(8px, var(--kbn-safe-top)) !important;
    right: 10px !important;
    width: 40px; height: 40px;
    background: rgba(255,255,255,0.12) !important;
    border: 1px solid rgba(255,255,255,0.18) !important;
    border-radius: 10px !important;
    color: #fff !important;
    font-size: 20px !important;
    font-weight: 400 !important;
    cursor: pointer !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    z-index: 9998 !important;
    padding: 0 !important;
    -webkit-tap-highlight-color: transparent;
    transition: background 0.15s, transform 0.15s;
  }
  .kbn-hamburger:active {
    background: rgba(255,255,255,0.22) !important;
    transform: scale(0.95);
  }

  .kbn-mobile-drawer {
    position: fixed !important;
    top: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: min(86vw, 340px) !important;
    background: linear-gradient(180deg, #0d1f14 0%, #142e1c 100%) !important;
    box-shadow: -4px 0 24px rgba(0,0,0,0.6);
    padding: calc(var(--kbn-safe-top) + 56px) 14px calc(var(--kbn-safe-bottom) + 20px) !important;
    z-index: 9997 !important;
    transform: translateX(110%);
    transition: transform 0.25s cubic-bezier(.2,.9,.3,1);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    border-left: 1px solid rgba(212,184,122,0.2);
  }
  .kbn-mobile-drawer.open { transform: translateX(0); }

  .kbn-mobile-drawer .kbn-dl-nav {
    display: flex !important;
    flex-direction: column !important;
    gap: 4px !important;
    background: none !important;
    padding: 0 !important;
    margin: 0 0 12px !important;
  }
  .kbn-mobile-drawer .nav-btn, .kbn-mobile-drawer button {
    width: 100% !important;
    text-align: left !important;
    padding: 13px 16px !important;
    font-size: 14px !important;
    background: rgba(255,255,255,0.06) !important;
    color: rgba(255,255,255,0.9) !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
    border-radius: 10px !important;
    font-weight: 600 !important;
    letter-spacing: 0.3px !important;
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
  }
  .kbn-mobile-drawer .nav-btn.active {
    background: linear-gradient(135deg, rgba(76,175,80,0.35), rgba(76,175,80,0.15)) !important;
    color: #fff !important;
    border-color: rgba(76,175,80,0.5) !important;
  }
  .kbn-mobile-drawer-section {
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px solid rgba(212,184,122,0.15);
    display: flex;
    flex-direction: column;
    gap: 8px;
  }
  .kbn-mobile-drawer-section > * {
    padding: 12px 14px !important;
    background: rgba(212,184,122,0.12) !important;
    color: #d4b87a !important;
    border: 1px solid rgba(212,184,122,0.25) !important;
    border-radius: 10px !important;
    font-size: 13px !important;
    text-decoration: none !important;
    text-align: center;
    font-weight: 700 !important;
    display: block !important;
  }
  .kbn-mobile-drawer-section .user-info {
    background: rgba(255,255,255,0.04) !important;
    color: #e8f0e2 !important;
    border: 1px solid rgba(255,255,255,0.1) !important;
    text-align: left;
    font-size: 12px !important;
  }

  .kbn-drawer-backdrop {
    position: fixed !important;
    inset: 0 !important;
    background: rgba(0,0,0,0.55);
    z-index: 9996 !important;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.25s;
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
  }
  .kbn-drawer-backdrop.open { opacity: 1; pointer-events: auto; }

  /* Lock body scroll when drawer open */
  body.kbn-drawer-open { overflow: hidden !important; position: fixed; width: 100%; }

  /* ───── MAIN content ───── */
  .main, main.main, #mainContent, #app-content, main {
    padding: 14px 12px !important;
    max-width: 100vw !important;
    padding-left: max(12px, var(--kbn-safe-left)) !important;
    padding-right: max(12px, var(--kbn-safe-right)) !important;
  }

  /* ───── KILL right-side drawers / sidebars (image 3 issue) ───── */
  body.on-mobile .right-sidebar,
  body.on-mobile .module-sidebar,
  body.on-mobile .side-nav.right,
  body.on-mobile .right-drawer,
  body.on-mobile #rightModules,
  body.on-mobile .modules-sidebar,
  body.on-mobile [class*="right-pane"] {
    display: none !important;
  }

  /* KBN Agro widget (Gospodarstwo CRM) — poprawki */
  body.on-mobile #kbn-home-btn {
    top: max(8px, var(--kbn-safe-top)) !important;
    right: 60px !important; /* obok hamburgera */
    font-size: 11px !important;
    padding: 6px 10px !important;
    z-index: 9990 !important;
  }
  body.on-mobile #kbn-vademecum-fab {
    bottom: calc(12px + var(--kbn-safe-bottom)) !important;
    right: 12px !important;
    z-index: 9985 !important;
  }
  body.on-mobile #kbn-vademecum-menu {
    right: 12px !important;
    left: 12px !important;
    width: auto !important;
    max-width: calc(100vw - 24px);
    bottom: calc(70px + var(--kbn-safe-bottom)) !important;
  }

  /* ───── FLOATING BOTTOM BARS ───── */
  .bottom-bar, .action-bar, .floating-actions, .app-footer-bar,
  [class*="bottom-nav"], [class*="fixed-bottom"] {
    flex-wrap: wrap !important;
    gap: 4px !important;
    padding: 8px !important;
    padding-bottom: calc(8px + var(--kbn-safe-bottom)) !important;
  }
  /* Jeśli bar ma > 3 buttony, zrób scrollable */
  .bottom-bar:has(> *:nth-child(4)),
  .action-bar:has(> *:nth-child(4)) {
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
    justify-content: flex-start !important;
  }

  /* ───── GRIDS ───── */
  .grid-2, .grid-3, .grid-4, .grid-5, .grid-6,
  [class*="grid-cols-2"], [class*="grid-cols-3"], [class*="grid-cols-4"] {
    grid-template-columns: 1fr !important;
    gap: 12px !important;
  }
  /* Ale zachowaj 2-col dla kafelków dashboardowych */
  .dash-tiles, .tiles-grid, .kbn-2col {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 10px !important;
  }

  /* ───── TABELE ───── */
  table.responsive, table.tab-table, table.no-scroll {
    display: table !important;
    white-space: normal;
  }
  .table-scroll, .table-wrapper {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
    max-width: 100vw;
  }
  .table-scroll table { min-width: 600px; }

  /* ───── FORMY ───── */
  form .f, form .field, form .form-row {
    width: 100% !important;
  }
  .grid.f-grid, .form-grid {
    grid-template-columns: 1fr !important;
  }

  /* ───── LOGIN OVERLAY ───── */
  .login-overlay, .auth-overlay {
    padding: 12px !important;
  }
  .login-box, .auth-box, .login-card {
    width: calc(100vw - 24px) !important;
    max-width: 420px !important;
    padding: 28px 22px !important;
    border-radius: 14px !important;
  }
  .login-logo { font-size: 24px !important; letter-spacing: 4px !important; }

  /* ───── MODAL / DIALOGS ───── */
  .modal, .dialog, [role=dialog] {
    max-width: calc(100vw - 20px) !important;
    max-height: calc(100vh - 40px) !important;
    margin: 10px !important;
    overflow-y: auto;
  }

  /* ───── CARDS ───── */
  .card {
    padding: 14px !important;
    border-radius: 10px !important;
    margin-bottom: 12px !important;
  }

  /* ───── TEKSTY ───── */
  h1 { font-size: 18px !important; }
  h2 { font-size: 16px !important; }
  h3 { font-size: 14px !important; }

  /* ───── KBN CUSTOM ELEMENTS z zaproszeń/admin ───── */
  .mods { grid-template-columns: 1fr !important; }
  .dept-head .name { font-size: 13px !important; }
  .dept-head .icon { font-size: 18px !important; }
  .perm-chips { flex-shrink: 0; }

  /* ───── MOBILE BOTTOM-NAV (jeśli apka ją ma) ───── */
  .kbn-mobile-bottom-nav {
    position: fixed;
    bottom: 0;
    left: 0; right: 0;
    background: linear-gradient(0deg, #0d1f14, rgba(13,31,20,0.95));
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-top: 1px solid rgba(212,184,122,0.2);
    padding: 4px 4px calc(4px + var(--kbn-safe-bottom));
    display: none;
    z-index: 9995;
    justify-content: space-around;
  }
  .kbn-mobile-bottom-nav.active { display: flex; }
  .kbn-mobile-bottom-nav a {
    flex: 1;
    padding: 8px 6px;
    font-size: 10px;
    color: rgba(255,255,255,0.6);
    text-align: center;
    text-decoration: none;
    border-radius: 8px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
  }
  .kbn-mobile-bottom-nav a.active { color: #d4b87a; background: rgba(212,184,122,0.15); }
  .kbn-mobile-bottom-nav .emoji { font-size: 18px; }
}

/* Landscape phones: krótszy header + mniejszy drawer padding */
@media (max-width: 820px) and (orientation: landscape) {
  :root { --kbn-header-h: 44px; }
  .kbn-mobile-drawer { width: min(50vw, 320px) !important; }
}

/* Bardzo małe ekrany */
@media (max-width: 360px) {
  body { font-size: 13px !important; }
  .logo-text { font-size: 12px !important; }
}
