/* KlinikOS v6.9.52 — Admin mobile compatibility + staff sidebar hotfix
   Loaded last so this layer only resolves admin-shell behaviour on small screens. */

.mobile-nav-backdrop{display:none}

@media (max-width:900px){
  body.role-master_admin,
  body.role-branch_admin,
  body.role-admin_manager{
    overflow-x:hidden;
  }

  body.role-master_admin.mobile-nav-open,
  body.role-branch_admin.mobile-nav-open,
  body.role-admin_manager.mobile-nav-open{
    overflow:hidden;
    touch-action:none;
  }

  body.role-master_admin .shell,
  body.role-branch_admin .shell,
  body.role-admin_manager .shell,
  body.role-master_admin .main,
  body.role-branch_admin .main,
  body.role-admin_manager .main,
  body.role-master_admin .content,
  body.role-branch_admin .content,
  body.role-admin_manager .content,
  body.role-master_admin .page,
  body.role-branch_admin .page,
  body.role-admin_manager .page{
    min-width:0;
    max-width:100%;
  }

  /* Proper off-canvas admin navigation. */
  body.role-master_admin .side,
  body.role-branch_admin .side,
  body.role-admin_manager .side,
  body.role-master_admin .shell.sidebar-collapsed .side,
  body.role-branch_admin .shell.sidebar-collapsed .side,
  body.role-admin_manager .shell.sidebar-collapsed .side{
    width:min(318px,88vw);
    left:-100%;
    height:100dvh;
    max-height:100dvh;
    padding:calc(10px + env(safe-area-inset-top)) 10px calc(10px + env(safe-area-inset-bottom));
    display:flex;
    flex-direction:column;
    overflow:hidden;
    overscroll-behavior:contain;
    box-shadow:none;
    transition:left .22s ease,box-shadow .22s ease;
    z-index:60;
  }
  body.role-master_admin .side.open,
  body.role-branch_admin .side.open,
  body.role-admin_manager .side.open{
    left:0;
    box-shadow:18px 0 52px rgba(3,20,39,.32);
  }
  body.role-master_admin .side .nav,
  body.role-branch_admin .side .nav,
  body.role-admin_manager .side .nav{
    flex:1 1 auto;
    min-height:0;
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior:contain;
    padding-bottom:10px;
  }
  body.role-master_admin .side-foot,
  body.role-branch_admin .side-foot,
  body.role-admin_manager .side-foot{
    position:static;
    left:auto;
    right:auto;
    bottom:auto;
    margin-top:auto;
    flex:0 0 auto;
    background:var(--nav);
  }
  body.role-master_admin .sidebar-collapse-btn,
  body.role-branch_admin .sidebar-collapse-btn,
  body.role-admin_manager .sidebar-collapse-btn{display:none!important}

  .mobile-nav-backdrop{
    position:fixed;
    inset:0;
    z-index:55;
    border:0;
    margin:0;
    padding:0;
    background:rgba(3,18,34,.46);
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transition:opacity .2s ease,visibility .2s ease;
    -webkit-tap-highlight-color:transparent;
  }
  body.mobile-nav-open .mobile-nav-backdrop{
    display:block;
    opacity:1;
    visibility:visible;
    pointer-events:auto;
  }

  /* Header: keep page identity and branch scope readable on one compact row. */
  body.role-master_admin .top,
  body.role-branch_admin .top,
  body.role-admin_manager .top{
    height:auto;
    min-height:58px;
    padding:7px 10px;
    gap:7px;
    align-items:center;
    flex-wrap:nowrap;
    padding-top:max(7px,env(safe-area-inset-top));
  }
  body.role-master_admin .top>div:first-child,
  body.role-branch_admin .top>div:first-child,
  body.role-admin_manager .top>div:first-child{
    flex:1 1 auto;
    min-width:0;
    gap:7px!important;
  }
  body.role-master_admin .mobile-menu,
  body.role-branch_admin .mobile-menu,
  body.role-admin_manager .mobile-menu{
    flex:0 0 40px;
    width:40px;
    min-width:40px;
    min-height:40px;
    padding:0;
    font-size:20px;
    border-radius:10px;
  }
  body.role-master_admin .top h1,
  body.role-branch_admin .top h1,
  body.role-admin_manager .top h1{
    max-width:none;
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:14px;
  }
  body.role-master_admin .top-scope-area,
  body.role-branch_admin .top-scope-area,
  body.role-admin_manager .top-scope-area{
    flex:0 1 auto;
    min-width:0;
    max-width:44vw;
    justify-content:flex-end;
  }
  body.role-master_admin .global-branch-scope,
  body.role-branch_admin .global-branch-scope,
  body.role-admin_manager .global-branch-scope{
    max-width:100%;
    min-width:0;
    padding:3px 5px!important;
    border-radius:9px;
  }
  body.role-master_admin .global-branch-scope>span,
  body.role-branch_admin .global-branch-scope>span,
  body.role-admin_manager .global-branch-scope>span{display:none!important}
  body.role-master_admin .global-branch-scope select,
  body.role-branch_admin .global-branch-scope select,
  body.role-admin_manager .global-branch-scope select{
    width:min(34vw,154px);
    min-width:0!important;
    max-width:154px!important;
    min-height:34px;
    padding:4px 24px 4px 7px!important;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  body.role-master_admin .global-branch-scope strong,
  body.role-branch_admin .global-branch-scope strong,
  body.role-admin_manager .global-branch-scope strong{
    display:block;
    max-width:32vw;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:11px;
  }
  body.role-master_admin #topRole,
  body.role-branch_admin #topRole,
  body.role-admin_manager #topRole{display:none!important}

  /* Keep all admin content inside the viewport. */
  body.role-master_admin .content,
  body.role-branch_admin .content,
  body.role-admin_manager .content{
    padding:9px 9px calc(18px + env(safe-area-inset-bottom));
    overflow-x:hidden;
  }
  body.role-master_admin .card,
  body.role-branch_admin .card,
  body.role-admin_manager .card,
  body.role-master_admin .chart-card,
  body.role-branch_admin .chart-card,
  body.role-admin_manager .chart-card,
  body.role-master_admin .dashboard-control,
  body.role-branch_admin .dashboard-control,
  body.role-admin_manager .dashboard-control{
    max-width:100%;
    min-width:0;
    overflow-wrap:anywhere;
  }

  /* Tables scroll themselves, never the entire app. */
  body.role-master_admin .table-wrap,
  body.role-branch_admin .table-wrap,
  body.role-admin_manager .table-wrap,
  body.role-master_admin .staff-list-wrap,
  body.role-branch_admin .staff-list-wrap,
  body.role-admin_manager .staff-list-wrap,
  body.role-master_admin .leave-manager-balance-table,
  body.role-branch_admin .leave-manager-balance-table,
  body.role-admin_manager .leave-manager-balance-table,
  body.role-master_admin .leave-entitlement-table,
  body.role-branch_admin .leave-entitlement-table,
  body.role-admin_manager .leave-entitlement-table{
    width:100%;
    max-width:100%;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior-x:contain;
    scrollbar-width:thin;
  }
  body.role-master_admin .table-wrap::after,
  body.role-branch_admin .table-wrap::after,
  body.role-admin_manager .table-wrap::after{
    content:"";
    display:block;
    height:1px;
  }

  /* Common admin headers and filter/tool rows wrap cleanly. */
  body.role-master_admin .section-title,
  body.role-branch_admin .section-title,
  body.role-admin_manager .section-title,
  body.role-master_admin .report-header,
  body.role-branch_admin .report-header,
  body.role-admin_manager .report-header,
  body.role-master_admin .dashboard-section-title,
  body.role-branch_admin .dashboard-section-title,
  body.role-admin_manager .dashboard-section-title{
    flex-wrap:wrap;
    align-items:flex-start;
  }
  body.role-master_admin .section-title>div:first-child,
  body.role-branch_admin .section-title>div:first-child,
  body.role-admin_manager .section-title>div:first-child,
  body.role-master_admin .report-header>div:first-child,
  body.role-branch_admin .report-header>div:first-child,
  body.role-admin_manager .report-header>div:first-child{
    flex:1 1 220px;
    min-width:0;
  }
  body.role-master_admin .toolbar,
  body.role-branch_admin .toolbar,
  body.role-admin_manager .toolbar{
    align-items:stretch;
  }
  body.role-master_admin .toolbar .left,
  body.role-master_admin .toolbar .right,
  body.role-branch_admin .toolbar .left,
  body.role-branch_admin .toolbar .right,
  body.role-admin_manager .toolbar .left,
  body.role-admin_manager .toolbar .right{
    width:100%;
    min-width:0;
  }
  body.role-master_admin .toolbar input,
  body.role-master_admin .toolbar select,
  body.role-branch_admin .toolbar input,
  body.role-branch_admin .toolbar select,
  body.role-admin_manager .toolbar input,
  body.role-admin_manager .toolbar select{
    max-width:100%;
  }

  /* Dashboard/management cards: 2-up where useful, one column for large panels. */
  body.role-master_admin .dashboard-grid,
  body.role-master_admin .dashboard-grid.equal,
  body.role-branch_admin .dashboard-grid,
  body.role-branch_admin .dashboard-grid.equal,
  body.role-admin_manager .dashboard-grid,
  body.role-admin_manager .dashboard-grid.equal,
  body.role-master_admin .financial-layout,
  body.role-branch_admin .financial-layout,
  body.role-admin_manager .financial-layout,
  body.role-master_admin .cogs-layout,
  body.role-branch_admin .cogs-layout,
  body.role-admin_manager .cogs-layout{
    grid-template-columns:minmax(0,1fr)!important;
  }
  body.role-master_admin .dashboard-stats,
  body.role-branch_admin .dashboard-stats,
  body.role-admin_manager .dashboard-stats,
  body.role-master_admin .daily-closing-kpis,
  body.role-branch_admin .daily-closing-kpis,
  body.role-admin_manager .daily-closing-kpis,
  body.role-master_admin .dc-recon-grid,
  body.role-branch_admin .dc-recon-grid,
  body.role-admin_manager .dc-recon-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  /* Modals become bottom sheets with persistent close/actions. */
  body.role-master_admin .modal,
  body.role-branch_admin .modal,
  body.role-admin_manager .modal{
    padding:6px 0 0;
    align-items:end;
  }
  body.role-master_admin .modal-card,
  body.role-branch_admin .modal-card,
  body.role-admin_manager .modal-card{
    width:100%;
    max-width:100%;
    max-height:calc(100dvh - max(6px,env(safe-area-inset-top)));
    border-radius:16px 16px 0 0;
    overflow:auto;
    overscroll-behavior:contain;
  }
  body.role-master_admin .modal-head,
  body.role-branch_admin .modal-head,
  body.role-admin_manager .modal-head{
    position:sticky;
    top:0;
    z-index:15;
    background:#fff;
    padding:9px 10px;
    align-items:center;
  }
  body.role-master_admin .modal-head>div,
  body.role-branch_admin .modal-head>div,
  body.role-admin_manager .modal-head>div{min-width:0}
  body.role-master_admin .modal-head h2,
  body.role-branch_admin .modal-head h2,
  body.role-admin_manager .modal-head h2{
    overflow:hidden;
    text-overflow:ellipsis;
  }
  body.role-master_admin .modal-actions,
  body.role-branch_admin .modal-actions,
  body.role-admin_manager .modal-actions{
    position:sticky;
    bottom:0;
    z-index:15;
    background:#fff;
    padding:8px 9px calc(8px + env(safe-area-inset-bottom));
    box-shadow:0 -8px 18px rgba(13,49,93,.07);
  }
  body.role-master_admin .modal-actions .btn,
  body.role-branch_admin .modal-actions .btn,
  body.role-admin_manager .modal-actions .btn{
    min-height:42px;
  }
}

@media (max-width:600px){
  body.role-master_admin .card,
  body.role-branch_admin .card,
  body.role-admin_manager .card,
  body.role-master_admin .chart-card,
  body.role-branch_admin .chart-card,
  body.role-admin_manager .chart-card,
  body.role-master_admin .dashboard-control,
  body.role-branch_admin .dashboard-control,
  body.role-admin_manager .dashboard-control{
    padding:10px;
  }

  /* Forms/admin settings become true one-column mobile forms. */
  body.role-master_admin .two,
  body.role-master_admin .form-grid,
  body.role-branch_admin .two,
  body.role-branch_admin .form-grid,
  body.role-admin_manager .two,
  body.role-admin_manager .form-grid,
  body.role-master_admin .branding-settings-grid,
  body.role-branch_admin .branding-settings-grid,
  body.role-admin_manager .branding-settings-grid,
  body.role-master_admin .branding-form,
  body.role-branch_admin .branding-form,
  body.role-admin_manager .branding-form{
    grid-template-columns:minmax(0,1fr)!important;
  }
  body.role-master_admin .span2,
  body.role-master_admin .span3,
  body.role-branch_admin .span2,
  body.role-branch_admin .span3,
  body.role-admin_manager .span2,
  body.role-admin_manager .span3{
    grid-column:1!important;
  }

  body.role-master_admin .section-title>.actions,
  body.role-master_admin .section-title>.module-actions,
  body.role-master_admin .section-title>.payroll-toolbar,
  body.role-master_admin .report-actions,
  body.role-branch_admin .section-title>.actions,
  body.role-branch_admin .section-title>.module-actions,
  body.role-branch_admin .section-title>.payroll-toolbar,
  body.role-branch_admin .report-actions,
  body.role-admin_manager .section-title>.actions,
  body.role-admin_manager .section-title>.module-actions,
  body.role-admin_manager .section-title>.payroll-toolbar,
  body.role-admin_manager .report-actions{
    width:100%;
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:6px;
  }
  body.role-master_admin .section-title>.actions .btn,
  body.role-master_admin .section-title>.module-actions .btn,
  body.role-master_admin .section-title>.payroll-toolbar .btn,
  body.role-master_admin .report-actions .btn,
  body.role-branch_admin .section-title>.actions .btn,
  body.role-branch_admin .section-title>.module-actions .btn,
  body.role-branch_admin .section-title>.payroll-toolbar .btn,
  body.role-branch_admin .report-actions .btn,
  body.role-admin_manager .section-title>.actions .btn,
  body.role-admin_manager .section-title>.module-actions .btn,
  body.role-admin_manager .section-title>.payroll-toolbar .btn,
  body.role-admin_manager .report-actions .btn{
    width:100%;
    white-space:normal;
    min-height:40px;
  }

  body.role-master_admin .actions,
  body.role-branch_admin .actions,
  body.role-admin_manager .actions{
    width:100%;
  }

  body.role-master_admin .staff-registry-controls,
  body.role-branch_admin .staff-registry-controls,
  body.role-admin_manager .staff-registry-controls{
    width:100%;
    grid-template-columns:1fr!important;
  }
  body.role-master_admin .staff-registry-controls>*,
  body.role-branch_admin .staff-registry-controls>*,
  body.role-admin_manager .staff-registry-controls>*{
    grid-column:1!important;
    width:100%;
    min-width:0;
  }

  body.role-master_admin .dashboard-stats,
  body.role-branch_admin .dashboard-stats,
  body.role-admin_manager .dashboard-stats{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:7px;
  }
  body.role-master_admin .kpi-card,
  body.role-branch_admin .kpi-card,
  body.role-admin_manager .kpi-card{min-height:88px}

  body.role-master_admin .modal-actions,
  body.role-branch_admin .modal-actions,
  body.role-admin_manager .modal-actions{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:6px;
  }
  body.role-master_admin .modal-actions .btn,
  body.role-branch_admin .modal-actions .btn,
  body.role-admin_manager .modal-actions .btn{
    width:100%;
    white-space:normal;
  }

  /* Touch targets without making the interface visually huge. */
  body.role-master_admin .nav-item,
  body.role-master_admin .nav-group-toggle,
  body.role-master_admin .side-profile-button,
  body.role-master_admin .side-signout-button,
  body.role-branch_admin .nav-item,
  body.role-branch_admin .nav-group-toggle,
  body.role-branch_admin .side-profile-button,
  body.role-branch_admin .side-signout-button,
  body.role-admin_manager .nav-item,
  body.role-admin_manager .nav-group-toggle,
  body.role-admin_manager .side-profile-button,
  body.role-admin_manager .side-signout-button{
    min-height:42px;
  }
  body.role-master_admin .nav-sub-item,
  body.role-branch_admin .nav-sub-item,
  body.role-admin_manager .nav-sub-item{min-height:38px}
}

@media (max-width:430px){
  body.role-master_admin .top,
  body.role-branch_admin .top,
  body.role-admin_manager .top{padding-left:8px;padding-right:8px}

  body.role-master_admin .mobile-menu,
  body.role-branch_admin .mobile-menu,
  body.role-admin_manager .mobile-menu{
    flex-basis:38px;width:38px;min-width:38px;height:38px;min-height:38px;
  }
  body.role-master_admin .top h1,
  body.role-branch_admin .top h1,
  body.role-admin_manager .top h1{font-size:13px}
  body.role-master_admin .top-scope-area,
  body.role-branch_admin .top-scope-area,
  body.role-admin_manager .top-scope-area{max-width:39vw}
  body.role-master_admin .global-branch-scope select,
  body.role-branch_admin .global-branch-scope select,
  body.role-admin_manager .global-branch-scope select{width:31vw;max-width:124px!important}
  body.role-master_admin .global-branch-scope strong,
  body.role-branch_admin .global-branch-scope strong,
  body.role-admin_manager .global-branch-scope strong{max-width:30vw;font-size:10px}

  body.role-master_admin .content,
  body.role-branch_admin .content,
  body.role-admin_manager .content{padding-left:7px;padding-right:7px}

  body.role-master_admin .daily-closing-kpis,
  body.role-master_admin .dc-recon-grid,
  body.role-branch_admin .daily-closing-kpis,
  body.role-branch_admin .dc-recon-grid,
  body.role-admin_manager .daily-closing-kpis,
  body.role-admin_manager .dc-recon-grid{gap:6px}
}


/* v6.9.52 hotfix — the shared mobile backdrop introduced in v6.9.51
   sat above the legacy staff/billing drawer (backdrop z55 vs sidebar z40).
   Keep the backdrop below every authenticated mobile drawer. */
@media (max-width:900px){
  body.role-staff .side,
  body.role-branch_manager .side,
  body.role-billing_executive .side,
  body.role-payroll_admin .side,
  body.role-account_manager .side{
    z-index:60;
  }
  body.role-staff.mobile-nav-open,
  body.role-branch_manager.mobile-nav-open,
  body.role-billing_executive.mobile-nav-open,
  body.role-payroll_admin.mobile-nav-open,
  body.role-account_manager.mobile-nav-open{
    overflow:hidden;
  }
}
