/* Do'kon Boshqaruv Tizimi — Premium UI v2 */
:root {
  --primary: #4f46e5;
  --primary-dark: #4338ca;
  --primary-soft: #eef2ff;
  --cash: #059669;
  --cash-soft: #ecfdf5;
  --debt: #d97706;
  --debt-soft: #fffbeb;
  --danger: #dc2626;
  --danger-soft: #fef2f2;
  --bg: #f4f6fb;
  --card-bg: #ffffff;
  --border: #e2e8f0;
  --text: #0f172a;
  --text-muted: #64748b;
  --radius: 14px;
  --radius-sm: 10px;
  --shadow-sm: 0 1px 2px rgba(15,23,42,.06);
  --shadow-md: 0 4px 12px rgba(15,23,42,.08);
  --shadow-lg: 0 12px 32px rgba(15,23,42,.14);
  --sidebar-w: 260px;
  --sidebar-bg: #0f172a;
  --sidebar-text: #94a3b8;
  --sidebar-active: #ffffff;
  --sidebar-hover: rgba(255,255,255,.06);
  --sidebar-accent: #818cf8;
  --topbar-h: 60px;
  --input-bg: #f8fafc;
  --input-focus-bg: #ffffff;
}
body.dark-mode {
  --bg: #0f172a;
  --card-bg: #1e293b;
  --border: #334155;
  --text: #f8fafc;
  --text-muted: #94a3b8;
  --primary-soft: rgba(79, 70, 229, 0.2);
  --cash-soft: rgba(5, 150, 105, 0.2);
  --debt-soft: rgba(217, 119, 6, 0.2);
  --danger-soft: rgba(220, 38, 38, 0.2);
  --shadow-sm: 0 1px 2px rgba(0,0,0,.3);
  --shadow-md: 0 4px 12px rgba(0,0,0,.4);
  --shadow-lg: 0 12px 32px rgba(0,0,0,.5);
  --input-bg: #0f172a;
  --input-focus-bg: #1e293b;
}
*{box-sizing:border-box}
html,body{max-width:100%;overflow-x:hidden}
body{margin:0;font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}
/* Flexbox min-width:0 tuzatishi: flex bolalar odatiy holda o'z ichidagi
   eng keng elementdan (masalan Chart.js canvas yoki keng jadval) kichik
   bo'la olmaydi — shu sabab bitta keng element butun sahifani mobil
   ekranda yon tomonga siljitib yuborardi. min-width:0 bu cheklovni olib
   tashlaydi, ichki elementlar esa o'z overflow qoidasiga (masalan
   .table-wrap{overflow-x:auto}) bo'ysunadi. */
.app-content,.view,.report-columns,.report-col,.chart-card,.chart-col,
.dash-cards,.kassa-layout,.kassa-search-col,.kassa-cart-col,.sklad-panel{min-width:0}
canvas{max-width:100%}
.hidden{display:none!important}
button{font-family:inherit;cursor:pointer;border:none}
input,select{font-family:inherit;font-size:15px;color:var(--text)}
input:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
::-webkit-scrollbar{width:7px;height:7px}
::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:6px}
::-webkit-scrollbar-track{background:transparent}

/* === Buttons === */
.btn{border-radius:var(--radius-sm);padding:10px 16px;font-size:14px;font-weight:600;transition:transform .06s,box-shadow .15s,background .15s,opacity .15s}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--primary);color:#fff;box-shadow:var(--shadow-sm)}
.btn-primary:hover{background:var(--primary-dark);box-shadow:var(--shadow-md)}
.btn-ghost{background:transparent;color:var(--text-muted)}
.btn-ghost:hover{background:var(--primary-soft);color:var(--primary)}
.btn-danger{background:var(--danger);color:#fff}
.btn-danger:hover{filter:brightness(.92)}
.btn-lg{width:100%;padding:14px;font-size:16px}
.btn-xl{padding:20px;font-size:18px;border-radius:var(--radius)}
.btn-cash{background:var(--cash);color:#fff;flex:1;box-shadow:var(--shadow-sm)}
.btn-cash:hover{filter:brightness(1.06);box-shadow:var(--shadow-md)}
.btn-debt{background:var(--debt);color:#fff;flex:1;box-shadow:var(--shadow-sm)}
.btn-debt:hover{filter:brightness(1.06);box-shadow:var(--shadow-md)}
.btn:disabled{opacity:.45;pointer-events:none;box-shadow:none}

/* === Auth Screen === */
.auth-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:linear-gradient(135deg,#0f172a 0%,#1e293b 50%,#334155 100%)}
.auth-card{background:var(--card-bg);border-radius:20px;padding:40px 32px;width:100%;max-width:400px;box-shadow:0 25px 60px rgba(0,0,0,.3)}
.auth-card h1{font-size:20px;text-align:center;margin:0 0 28px;letter-spacing:-.02em;color:var(--text)}
.auth-form h2{font-size:16px;margin:0 0 16px;color:var(--text-muted)}
.auth-form input{width:100%;padding:13px 14px;margin-bottom:12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--input-bg);transition:border-color .15s,background .15s}
.auth-form input:focus{outline:none;border-color:var(--primary);background:var(--input-focus-bg)}
.auth-error{color:var(--danger);font-size:13px;min-height:20px}
.auth-switch{text-align:center;font-size:13px;color:var(--text-muted)}
.auth-switch a{color:var(--primary);text-decoration:none;font-weight:600}
.auth-switch a:hover{text-decoration:underline}

/* === App Layout: Sidebar + Content === */
.app-screen{min-height:100vh;display:flex}

/* Sidebar */
.sidebar{width:var(--sidebar-w);background:var(--sidebar-bg);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:80;transition:transform .25s cubic-bezier(.4,0,.2,1);overflow-y:auto;overflow-x:hidden}
.sidebar-platform-brand{display:flex;align-items:center;gap:9px;padding:16px 20px 0}
.sidebar-platform-brand img{width:28px;height:28px;flex-shrink:0}
.sidebar-platform-brand span{font-size:15px;font-weight:800;letter-spacing:-.01em;color:#fff}
.sidebar-brand{padding:14px 20px 18px;border-bottom:1px solid rgba(255,255,255,.08)}
.sidebar-brand-name{font-size:16px;font-weight:700;color:#fff;letter-spacing:-.01em}
.sidebar-brand-sub{font-size:12px;color:var(--sidebar-text);margin-top:2px}
.sidebar-nav{flex:1;padding:12px 10px;display:flex;flex-direction:column;gap:2px}
.sidebar-link{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:10px;font-size:14px;font-weight:500;color:var(--sidebar-text);text-decoration:none;transition:background .15s,color .15s;background:none;width:100%;text-align:left}
.sidebar-link:hover{background:var(--sidebar-hover);color:#e2e8f0}
.sidebar-link.active{background:rgba(99,102,241,.2);color:#fff;font-weight:600}
.sidebar-link .nav-icon{width:20px;height:20px;opacity:.6;flex-shrink:0}
.sidebar-link.active .nav-icon{opacity:1}
.sidebar-section{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:rgba(148,163,184,.5);padding:18px 14px 6px}
.sidebar-footer{padding:14px 16px;border-top:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:8px}
.sidebar-footer-user{font-size:13px;color:var(--sidebar-text)}
.sidebar-footer-role{font-size:11px;color:rgba(148,163,184,.5)}
.sidebar-logout{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:8px;font-size:13px;font-weight:500;color:var(--sidebar-text);background:none;transition:background .15s,color .15s;width:100%;text-align:left}
.sidebar-logout:hover{background:rgba(220,38,38,.15);color:#fca5a5}

/* Content area */
.app-content{margin-left:var(--sidebar-w);flex:1;display:flex;flex-direction:column;min-height:100vh}

/* Top bar */
.topbar{height:var(--topbar-h);background:var(--card-bg);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 24px;gap:12px;position:sticky;top:0;z-index:50}
.topbar-hamburger{display:none;background:none;padding:6px;border-radius:8px;color:var(--text)}
.topbar-hamburger:hover{background:var(--bg)}
.topbar-hamburger svg{width:24px;height:24px}
.topbar-title{font-size:16px;font-weight:700;letter-spacing:-.01em;margin-right:auto}
.topbar-badges{display:flex;gap:8px;align-items:center}

/* Subscription banner */
.subscription-banner{padding:10px 16px;text-align:center;font-size:13px;font-weight:600}
.subscription-banner.warning{background:var(--debt-soft);color:#92400e;border-bottom:1px solid #fde68a}
.subscription-banner.expired{background:var(--danger-soft);color:var(--danger);border-bottom:1px solid #fecaca}

/* Mobile sidebar */
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:79}
@media(max-width:860px){
  .sidebar{transform:translateX(-100%)}
  .sidebar.open{transform:translateX(0)}
  .sidebar-overlay.open{display:block}
  .app-content{margin-left:0}
  .topbar-hamburger{display:flex}
}

/* === Dashboard === */
.view{flex:1;padding:20px 24px}
#view-settings{max-width:640px}
#view-settings h2{margin-top:0;font-size:20px;letter-spacing:-.01em}
#view-settings input,#view-settings select{width:100%;padding:11px 12px;margin-bottom:10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--input-bg);transition:border-color .15s,background .15s}
#view-settings input:focus,#view-settings select:focus{outline:none;border-color:var(--primary);background:var(--input-focus-bg)}
.dash-cards{display:flex;flex-wrap:wrap;gap:14px;max-width:1100px;margin:0 auto 18px}
.dash-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;flex:1;min-width:160px;display:flex;flex-direction:column;gap:5px;box-shadow:var(--shadow-sm);transition:box-shadow .15s}
.dash-card:hover{box-shadow:var(--shadow-md)}
.dash-card .label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}
.dash-card .value{font-size:22px;font-weight:800;letter-spacing:-.02em}
.dash-card .sub{font-size:12px;color:var(--text-muted)}
.dash-card-warn .value{color:var(--debt)}
.dash-card-profit .value{color:var(--cash)}
.report-period{display:flex;flex-wrap:wrap;gap:8px;align-items:center;max-width:1100px;margin:0 auto 18px}
.period-btn{background:var(--card-bg);border:1px solid var(--border)}
.period-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.report-range-picker{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.report-range-picker input[type=date]{background:var(--card-bg);border:1px solid var(--border);border-radius:8px;padding:8px 10px;color:var(--text);font-size:13px}
.report-columns{display:flex;flex-direction:column;gap:18px;max-width:1100px;margin:0 auto 22px}
.report-col h3{margin:0 0 10px;font-size:14px;font-weight:700;letter-spacing:-.01em}
@media(min-width:800px){.report-columns{flex-direction:row}.report-col{flex:1;min-width:0}}

/* Chart */
.chart-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:18px 16px 12px;height:280px;position:relative}
.chart-col{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:6px;min-width:0}
.chart-bar{width:100%;max-width:46px;background:linear-gradient(180deg,#818cf8,var(--primary));border-radius:8px 8px 3px 3px;transition:filter .15s}
.chart-col:hover .chart-bar{filter:brightness(1.15)}
.chart-value{font-size:11px;font-weight:700;color:var(--primary);white-space:nowrap}
.chart-label{font-size:11px;color:var(--text-muted)}

/* === Kassa === */
.kassa-layout{display:flex;flex-direction:column;gap:14px;max-width:940px;margin:0 auto}
.search-input{width:100%;padding:13px 14px;font-size:16px;border:1.5px solid var(--border);border-radius:var(--radius);background:var(--card-bg);box-shadow:var(--shadow-sm);transition:border-color .15s,box-shadow .15s}
.search-input::placeholder{color:#94a3b8}
.search-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
.search-row{display:flex;gap:8px}
.search-row .search-input{flex:1}
.kassa-category-bar{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.kassa-category-chip{padding:7px 14px;border-radius:999px;border:1px solid var(--border);background:var(--card-bg);cursor:pointer;font-size:13px;font-weight:600;color:var(--text);transition:background .12s}
.kassa-category-chip:hover{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}
.kassa-category-chip.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.btn-scan{background:var(--primary);color:#fff;font-size:20px;padding:0 16px;border-radius:var(--radius);flex-shrink:0;box-shadow:var(--shadow-sm)}
.btn-scan:hover{background:var(--primary-dark)}
#scanner-viewport{width:100%;min-height:260px;background:#000;border-radius:var(--radius-sm);overflow:hidden}
#scanner-viewport video{width:100%!important}
.search-results{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);margin-top:8px;max-height:280px;overflow-y:auto;box-shadow:var(--shadow-md)}
.search-results:empty{display:none}
.search-result-item{padding:12px 16px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;cursor:pointer;transition:background .12s}
.search-result-item:last-child{border-bottom:none}
.search-result-item:hover{background:var(--primary-soft)}
.sri-name{font-weight:600;font-size:14px}
.sri-meta{font-size:12px;color:var(--text-muted)}
.sri-price{font-weight:700;color:var(--primary);white-space:nowrap;margin-left:12px;font-size:14px}
.cart-empty{text-align:center;color:var(--text-muted);padding:36px 12px;background:var(--card-bg);border:1.5px dashed var(--border);border-radius:var(--radius)}
.cart-table{width:100%;border-collapse:collapse;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm)}
.cart-table td{padding:11px 13px;border-bottom:1px solid var(--border);vertical-align:middle;font-size:14px}
.cart-table tr:last-child td{border-bottom:none}
.cart-item-name{font-weight:600}
.cart-item-price{font-size:12px;color:var(--text-muted)}
.cart-price-control{display:flex;align-items:center;gap:6px;margin-top:4px}
.cart-price-input{width:90px;padding:6px 8px;font-size:13px;font-weight:600;border:1px solid var(--border);border-radius:8px;background:var(--input-bg)}
.cart-price-input:focus{outline:none;border-color:var(--primary);background:var(--input-focus-bg)}
.cart-price-unit{font-size:11px;color:var(--text-muted)}
.warehouse-select-row{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.warehouse-select-row label{font-size:0.9em;color:var(--text-muted);white-space:nowrap}
.warehouse-select-row select{flex:1}
.feature-flag-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border)}
.feature-flag-row:last-child{border-bottom:none}
.feature-flag-label{font-size:0.92em}
.qty-control{display:flex;align-items:center;gap:6px}
.qty-btn{width:32px;height:32px;border-radius:8px;background:var(--bg);border:1px solid var(--border);font-size:16px;font-weight:700;line-height:1;transition:background .12s}
.qty-btn:hover{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}
.qty-value{width:40px;text-align:center;font-weight:700}
.qty-value-input{width:56px;text-align:center;font-weight:700;padding:6px 4px;border:1px solid var(--border);border-radius:8px;background:var(--input-bg)}
.qty-value-input:focus{outline:none;border-color:var(--primary);background:var(--input-focus-bg)}
.qty-unit{font-size:11px;color:var(--text-muted)}
/* Nasiya (qarzga berish) modali — muddat tanlash qatori */
.nasiya-term-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.nasiya-term-row input{width:90px;margin-bottom:0;text-align:center;font-weight:700}
.nasiya-term-quick{flex:0 0 auto;width:auto;padding:8px 12px;font-size:13px}
.nasiya-term-quick.active{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}
.nasiya-due-hint{font-size:13px;color:var(--text-muted);margin-bottom:14px}
.nasiya-preselected{display:flex;gap:10px;align-items:center;justify-content:space-between;
  padding:10px 12px;margin-bottom:12px;border:1px solid var(--primary);border-radius:var(--radius-sm);
  background:var(--primary-soft)}
.nasiya-preselected .btn{flex:0 0 auto;width:auto;padding:8px 12px;font-size:13px}
/* Qarz daftari — muddat belgisi */
.debt-due{font-size:12px;color:var(--text-muted);white-space:nowrap}
.debt-due.overdue{color:var(--danger);font-weight:600}
.debt-due.soon{color:var(--warning,#b45309);font-weight:600}
.cart-remove{color:var(--danger);font-size:18px;background:none;padding:4px 6px;border-radius:8px}
.cart-remove:hover{background:var(--danger-soft)}
.cart-line-total{text-align:right;font-weight:700;white-space:nowrap;font-size:14px}
.kassa-total-row{display:flex;justify-content:flex-end;align-items:baseline;gap:8px;padding:16px 20px;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);font-size:16px;box-shadow:var(--shadow-sm)}
#cart-total{font-size:28px;font-weight:800;color:var(--primary);letter-spacing:-.02em}
.kassa-pay-buttons{display:flex;gap:12px}

/* === Ombor === */
.sklad-panel{max-width:940px;margin:0 auto 16px;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:14px 18px;box-shadow:var(--shadow-sm)}
.sklad-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.sklad-panel-header h3{margin:0;font-size:14px;font-weight:700}
.sklad-list{display:flex;flex-wrap:wrap;gap:8px}
.sklad-chip{display:flex;align-items:center;gap:8px;padding:7px 13px;border-radius:999px;background:var(--bg);border:1px solid var(--border);font-size:13px;font-weight:500}
.sklad-chip.blocked{opacity:.5;text-decoration:line-through}
.sklad-chip button{background:none;color:var(--primary);font-size:12px;font-weight:600;padding:0;text-decoration:underline}
.ombor-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 auto 14px;max-width:940px}
.ombor-toolbar .search-input{flex:1;min-width:180px}
.table-wrap{overflow-x:auto;max-width:1100px;margin:0 auto}
.ombor-table{width:100%;border-collapse:collapse;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm)}
.ombor-table th,.ombor-table td{padding:10px 13px;text-align:left;border-bottom:1px solid var(--border);font-size:13px;white-space:nowrap}
.ombor-table th{background:#f8fafc;color:var(--text-muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em}
.ombor-table tbody tr{transition:background .12s}
.ombor-table tbody tr:hover{background:#f8fafc}
.ombor-table tbody tr:last-child td{border-bottom:none}
.ombor-table .low-stock{color:var(--danger);font-weight:700}
.row-actions{display:flex;gap:4px}
.row-actions button{padding:5px 9px;font-size:12px;border-radius:8px}
.checkbox-label{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:500;color:var(--text-muted);white-space:nowrap;cursor:pointer}
.checkbox-label input{width:16px;height:16px;accent-color:var(--primary)}
.badge{display:inline-block;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:600}
.badge-overdue{background:var(--danger-soft);color:var(--danger)}
.badge-ok{background:var(--cash-soft);color:var(--cash)}
.badge-warn{background:var(--debt-soft);color:var(--debt)}
.badge-clear{background:var(--bg);color:var(--text-muted)}
.debt-summary{display:flex;gap:22px;flex-wrap:wrap;background:var(--bg);border-radius:var(--radius-sm);padding:14px 16px;margin-bottom:16px}
.debt-summary-item{display:flex;flex-direction:column}
.debt-summary-item .label{font-size:11px;color:var(--text-muted)}
.debt-summary-item .value{font-size:17px;font-weight:700}
.history-list{max-height:170px;overflow-y:auto;margin-bottom:12px}
.history-item{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);font-size:13px}
.history-item:last-child{border-bottom:none}
.history-empty{color:var(--text-muted);font-size:13px;padding:10px 0}

/* === Modal === */
.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.5);backdrop-filter:blur(3px);display:flex;align-items:flex-end;justify-content:center;z-index:100}
@media(min-width:640px){.modal-backdrop{align-items:center}}
.modal{background:var(--card-bg);border-radius:18px 18px 0 0;padding:26px 24px;width:100%;max-width:430px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:modal-in .18s ease}
@keyframes modal-in{from{transform:translateY(14px);opacity:0}to{transform:translateY(0);opacity:1}}
@media(min-width:640px){.modal{border-radius:18px}}
.modal h2{margin-top:0;font-size:18px;letter-spacing:-.01em}
.modal input,.modal select{width:100%;padding:11px 12px;margin-bottom:10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--input-bg);transition:border-color .15s,background .15s}
.modal input:focus,.modal select:focus{outline:none;border-color:var(--primary);background:var(--input-focus-bg)}
.modal-divider{text-align:center;color:var(--text-muted);font-size:12px;margin:12px 0}
.modal-subtitle{color:var(--text-muted);margin-top:-8px;font-size:13px}
.modal-actions{display:flex;gap:10px;margin-top:10px}
.modal-actions .btn{flex:1}

/* === Toast === */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#1e293b;color:#fff;padding:12px 20px;border-radius:12px;font-size:14px;font-weight:500;z-index:200;box-shadow:var(--shadow-lg);animation:toast-in .2s ease;max-width:calc(100vw - 40px)}
@keyframes toast-in{from{transform:translate(-50%,10px);opacity:0}to{transform:translate(-50%,0);opacity:1}}
.toast.error{background:var(--danger)}
.toast.success{background:var(--cash)}
.toast.warn{background:var(--debt)}

/* === Sync/Shift badges === */
.sync-badge{padding:5px 12px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}
.sync-badge.offline{background:var(--danger-soft);color:var(--danger)}
.sync-badge.pending{background:var(--debt-soft);color:var(--debt)}
.sync-badge.syncing{background:var(--primary-soft);color:var(--primary)}
.sync-badge.done{background:var(--cash-soft);color:var(--cash)}
.shift-badge{padding:5px 12px;border-radius:999px;font-size:12px;font-weight:600;background:var(--cash-soft);color:var(--cash);white-space:nowrap}

/* QR / Receipt */
.qrcode-canvas-wrap{display:flex;justify-content:center;padding:14px 0}
.qrcode-value{text-align:center;color:var(--text-muted);font-size:13px;letter-spacing:1px;font-weight:600}
.receipt{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:12px;max-width:300px;margin:0 auto}
.receipt-store{text-align:center;font-size:16px;margin:0 0 6px;font-family:inherit}
.receipt-meta{text-align:center;color:var(--text-muted);font-size:11px;margin:2px 0}
.receipt-divider{border-top:1.5px dashed #cbd5e1;margin:12px 0}
.receipt-row{display:flex;justify-content:space-between;gap:12px;padding:3px 0}
.receipt-row span:first-child{overflow-wrap:anywhere}
.receipt-row span:last-child{white-space:nowrap;font-weight:600}
.receipt-total{font-size:15px;font-weight:800}
.receipt-payment{color:var(--text-muted)}
.receipt-thanks{text-align:center;margin:14px 0 0;color:var(--text-muted);font-size:11px}
@media print{body *{visibility:hidden}.modal:not(.hidden) .print-area,.modal:not(.hidden) .print-area *{visibility:visible}.modal:not(.hidden) .print-area{position:fixed;top:0;left:0;width:100%;text-align:center}}

/* Shift bar */
.shift-bar{max-width:940px;margin:0 auto 14px;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:11px 16px;display:flex;align-items:center;gap:12px;box-shadow:var(--shadow-sm)}
#shift-bar-text{flex:1;font-size:13px;font-weight:600;color:var(--text-muted)}
.shift-bar.shift-open #shift-bar-text{color:var(--cash)}

/* Kassa customer/loyalty */
.kassa-customer-btn{width:100%;margin-top:8px;justify-content:center}
.kassa-customer-chip{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--primary-soft);color:var(--primary);padding:10px 14px;border-radius:var(--radius-sm);margin-top:8px;font-weight:600;font-size:13px}
.kassa-customer-chip button{background:none;color:var(--primary);font-size:18px;font-weight:700;padding:0 4px}
.kassa-loyalty-row{display:flex;align-items:center;gap:10px;margin-top:8px}
.kassa-loyalty-row input{width:140px;margin:0}

/* Matrix list */
.matrix-list{display:flex;flex-direction:column;gap:8px}
.matrix-row{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:var(--bg);border-radius:var(--radius-sm);cursor:pointer;transition:background .12s}
.matrix-row:hover{background:var(--primary-soft)}
.matrix-row-name{font-weight:600;font-size:14px}
.matrix-row-meta{font-size:12px;color:var(--text-muted)}

/* Shipment rows */
.shipment-item-row{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:8px;margin-bottom:8px;align-items:center}
.shipment-item-row select,.shipment-item-row input{margin:0}
.shipment-item-remove{background:var(--danger-soft);color:var(--danger);border-radius:8px;padding:8px}
.admin-settings-btn{font-size:16px;padding:6px 10px}

/* Desktop kassa two-col */
@media(min-width:800px){
  .kassa-layout{flex-direction:row;align-items:flex-start; max-width: 100%;}
  .kassa-search-col{flex:1; position:sticky; top:calc(var(--topbar-h) + 16px);}
  .kassa-cart-col{width: 400px; flex-shrink: 0; background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius); padding: 20px; box-shadow: var(--shadow-sm);}
}

/* Kassa Checkout Modal Styles */
.checkout-total-display {
  background: var(--primary-soft);
  color: var(--primary);
  padding: 20px;
  border-radius: var(--radius);
  text-align: center;
  margin-bottom: 24px;
  font-size: 18px;
}
.checkout-total-display strong {
  font-size: 32px;
  display: block;
  margin-top: 5px;
}
.checkout-payment-methods {
  display: flex;
  gap: 10px;
}
.payment-method-label {
  flex: 1;
  text-align: center;
  border: 2px solid var(--border);
  border-radius: var(--radius);
  padding: 15px 10px;
  cursor: pointer;
  transition: all 0.2s;
  background: var(--card-bg);
}
.payment-method-label:hover {
  border-color: var(--primary-soft);
}
.payment-method-label input {
  display: none;
}
.payment-method-label input:checked + span {
  color: var(--primary);
  font-weight: 600;
}
.payment-method-label:has(input:checked) {
  border-color: var(--primary);
  background: var(--primary-soft);
}

.checkout-quick-amounts {
  display: flex;
  gap: 10px;
  margin-top: 10px;
}
.checkout-quick-amounts .btn {
  flex: 1;
  padding: 8px;
  font-size: 14px;
}

/* Kassa Products Grid */
.kassa-products-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 12px;
  margin-top: 20px;
  max-height: calc(100vh - 280px);
  overflow-y: auto;
  padding-right: 5px;
}
.kassa-products-grid::-webkit-scrollbar {
  width: 6px;
}
.kassa-products-grid::-webkit-scrollbar-thumb {
  background: var(--border-hover);
  border-radius: 4px;
}

.pos-product-card {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 12px;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  transition: transform 0.1s, box-shadow 0.1s, border-color 0.1s;
  min-height: 110px;
  user-select: none;
}
.pos-product-card:hover {
  border-color: var(--primary);
  box-shadow: var(--shadow-sm);
  transform: translateY(-2px);
}
.pos-product-card:active {
  transform: translateY(0);
}
.pos-product-card.out-of-stock {
  opacity: 0.6;
  border-color: var(--danger-soft);
  cursor: not-allowed;
}
.pos-product-card.out-of-stock:hover {
  transform: none;
  box-shadow: none;
}
.pos-card-name {
  font-weight: 600;
  font-size: 14px;
  color: var(--text);
  margin-bottom: 4px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pos-card-sku {
  font-size: 11px;
  color: var(--text-muted);
  margin-bottom: 8px;
  word-break: break-all;
}
.pos-card-bottom {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  margin-top: auto;
}
.pos-card-price {
  font-weight: bold;
  color: var(--primary);
  font-size: 14px;
}
.pos-card-stock {
  font-size: 12px;
  font-weight: 500;
  padding: 2px 6px;
  border-radius: 4px;
  background: var(--success-soft);
  color: var(--success);
}
.pos-product-card.out-of-stock .pos-card-stock {
  background: var(--danger-soft);
  color: var(--danger);
}

/* Old header/nav classes kept for JS compat but now hidden — sidebar replaces them */
.app-header{display:none!important}
.app-nav{display:none!important}
.nav-btn{display:none!important}

/* =======================================
   MOBILE RESPONSIVE — Telefon ekranlari
   ======================================= */

/* --- Tablet va kichik ekranlar (860px va kichik) --- */
@media(max-width:860px){
  /* View padding kamaytirish */
  .view{padding:14px 12px}

  /* Dashboard kartalar — 2 tadan qatorga */
  .dash-cards{gap:10px}
  .dash-card{min-width:calc(50% - 8px);padding:14px 14px}
  .dash-card .value{font-size:18px}
  .dash-card .label{font-size:10px}

  /* Report period — kompaktroq */
  .report-period{gap:6px}
  .report-range-picker{width:100%}
  .report-range-picker input[type=date]{flex:1;min-width:0}

  /* Chart card kichikroq */
  .chart-card{height:220px;padding:12px 10px 8px}

  /* Ombor toolbar — flex-wrap */
  .ombor-toolbar{gap:8px}
  .ombor-toolbar .btn{padding:8px 10px;font-size:12px}

  /* Sklad panel — kompaktroq */
  .sklad-panel{padding:10px 12px}
  .sklad-panel-header{flex-wrap:wrap;gap:8px}
  .sklad-panel-header h3{width:100%}

  /* Shift bar — kompaktroq */
  .shift-bar{padding:8px 12px;gap:8px;flex-wrap:wrap}
  #shift-bar-text{font-size:12px}
  .shift-bar .btn{padding:7px 10px;font-size:12px}

  /* Kassa total row */
  .kassa-total-row{padding:12px 14px;font-size:14px}
  #cart-total{font-size:22px}

  /* Kassa pay buttons */
  .kassa-pay-buttons{flex-wrap:wrap}
  .kassa-pay-buttons .btn{font-size:13px;padding:12px 8px}

  /* Checkout quick amounts */
  .checkout-quick-amounts{flex-wrap:wrap}
  .checkout-quick-amounts .btn{min-width:calc(50% - 8px)}

  /* Shipment grid — stacked layout */
  .shipment-item-row{grid-template-columns:1fr;gap:6px}

  /* Topbar badges */
  .topbar-badges{gap:4px}
  .topbar-badges .sync-badge, .topbar-badges .shift-badge{padding:4px 8px;font-size:10px}
}

/* --- Telefon ekranlari (480px va kichik) --- */
@media(max-width:480px){
  /* View padding yanada kamaytirish */
  .view{padding:10px 8px}

  /* Topbar */
  .topbar{padding:0 12px;height:50px}
  .topbar-title{font-size:14px}

  /* Dashboard kartalar — to'liq kenglik */
  .dash-cards{flex-direction:column}
  .dash-card{min-width:100%}

  /* Kassa — products grid 2 ustun */
  .kassa-products-grid{grid-template-columns:repeat(2, 1fr);gap:8px;max-height:calc(100vh - 240px)}
  .pos-product-card{padding:10px;min-height:90px}
  .pos-card-name{font-size:13px}
  .pos-card-price{font-size:13px}
  .pos-card-sku{font-size:10px;margin-bottom:4px}

  /* Kassa search row */
  .search-input{padding:10px 12px;font-size:14px}
  .search-row{gap:6px}
  .btn-scan{padding:0 12px;font-size:18px}

  /* Kassa category bar */
  .kassa-category-bar{gap:6px;margin:8px 0}
  .kassa-category-chip{padding:6px 10px;font-size:12px}

  /* Cart table — juda tor ekranda 4 ustun sig'may qolardi (nom+narx,
     miqdor, jami, o'chirish — bittalikda 390px+ talab qilardi). Shu
     sabab har bir satrni flex-card qilamiz: nom va miqdor to'liq
     kenglikda alohida qatorda, jami summa va o'chirish tugmasi bitta
     qatorda yonma-yon. DOM/JS o'zgarmaydi — faqat joylashuv turi. */
  .cart-table,.cart-table tbody{display:block;width:100%}
  .cart-table{border-collapse:separate}
  .cart-table tr{display:flex;flex-wrap:wrap;align-items:center;gap:8px 0;
    padding:10px 12px;border-bottom:1px solid var(--border)}
  .cart-table tr:last-child{border-bottom:none}
  .cart-table td{display:block;padding:0;border-bottom:none}
  .cart-table td:nth-child(1),.cart-table td:nth-child(2){flex:1 1 100%}
  .cart-table td:nth-child(3){flex:1 1 auto}
  .cart-table td:nth-child(4){flex:0 0 auto}
  .cart-item-name{font-size:13px}
  .cart-price-input{width:70px;padding:5px 6px;font-size:12px}
  .qty-btn{width:28px;height:28px;font-size:14px}
  .qty-value{width:30px;font-size:13px}
  .qty-value-input{width:44px;font-size:13px;padding:4px 2px}
  .cart-line-total{font-size:14px;text-align:left}
  .cart-remove{font-size:16px}

  /* Kassa total row */
  .kassa-total-row{padding:10px 12px;flex-wrap:wrap;gap:4px}
  #cart-total{font-size:20px}

  /* Kassa pay buttons — stacked */
  .kassa-pay-buttons{flex-direction:column;gap:8px}
  .kassa-pay-buttons .btn{width:100%;padding:14px;font-size:14px}

  /* Checkout modal — to'liq ekran */
  .checkout-total-display{padding:14px;font-size:16px;margin-bottom:16px}
  .checkout-total-display strong{font-size:26px}
  .checkout-payment-methods{gap:6px}
  .payment-method-label{padding:10px 6px;font-size:13px}
  .checkout-quick-amounts .btn{padding:8px 4px;font-size:12px}

  /* Ma'lumot jadvallari (Savdolar, Qarz daftari, Tovarlar, Ta'minotchilar,
     Inventarizatsiya, Xarajatlar va h.k.) — ko'p ustun (7-9 tagacha) tor
     ekranda gorizontal skroll talab qilardi. Endi har bir satr card
     ko'rinishida: sarlavha nomi + qiymat juft-juft pastga tushadi.
     Sarlavha matni JS orqali data-label sifatida qo'yiladi
     (applyTableLabels(), app.js) va CSS shu attributdan foydalanadi. */
  .table-wrap{margin:0;border-radius:0;overflow-x:visible}
  .ombor-table{border-radius:0;font-size:13px;display:block;width:100%}
  .ombor-table thead{display:none}
  .ombor-table tbody{display:block;width:100%}
  .ombor-table tr{display:block;width:100%;background:var(--card-bg);
    border:1px solid var(--border);border-radius:var(--radius-sm);
    padding:4px 12px;margin-bottom:10px;box-shadow:var(--shadow-sm)}
  /* display:block (flex emas) ataylab tanlangan: ba'zi katakchalarda bir
     nechta element bor (masalan holat belgisi + muddat yorlig'i) — flex
     qatorda bular bir-biriga sig'may qolib, kesilib ko'rinardi. Block +
     yorliqni alohida qatorga chiqarish har qanday tarkib bilan ishlaydi. */
  .ombor-table td{display:block;padding:8px 0;border-bottom:1px dashed var(--border);
    text-align:left;font-size:13px}
  .ombor-table tr td:last-child{border-bottom:none}
  .ombor-table td[data-label]::before{content:attr(data-label);
    display:block;font-size:10px;font-weight:700;text-transform:uppercase;
    letter-spacing:.04em;color:var(--text-muted);margin-bottom:3px}
  /* Bo'sh katakcha (masalan hech qanday amal tugmasi yo'q) butunlay yashiriladi */
  .ombor-table td:empty{display:none}
  /* "Hali hech narsa yo'q" kabi bitta katakchali (colspan) qatorlar —
     card ko'rinishiga emas, oddiy matn qatoriga tegishli */
  .ombor-table td[colspan]{display:block;text-align:center;border-bottom:none}
  .ombor-table td[colspan]::before{content:none}
  /* .row-actions ham .ombor-table ichida <td class="row-actions"> sifatida
     ishlatiladi — yuqoridagi `.ombor-table td{display:block}` undan
     ustunroq (ikki klassli selektor), shu sabab tugmalar flex-layoutini
     yo'qotib qo'yardi. Bu yerda aniq qaytarib beramiz. */
  .ombor-table td.row-actions{display:flex;gap:6px;flex-wrap:wrap;text-align:left}
  .ombor-table td.row-actions::before{flex-basis:100%;margin-bottom:2px}
  .row-actions{gap:6px;flex-wrap:wrap;justify-content:flex-start}
  .debt-due{white-space:normal}
  .row-actions button{padding:6px 10px;font-size:12px}

  /* Modal — to'liq ekran mobil */
  .modal{max-width:100%;border-radius:14px 14px 0 0;padding:20px 16px;max-height:95vh}
  .modal h2{font-size:16px}
  .modal input,.modal select{padding:10px;font-size:14px}
  .modal-actions .btn{padding:12px 8px;font-size:13px}

  /* Nasiya term row */
  .nasiya-term-row{gap:6px}
  .nasiya-term-row input{width:70px}
  .nasiya-term-quick{padding:6px 8px;font-size:12px}

  /* Debt summary */
  .debt-summary{gap:12px;padding:10px 12px}
  .debt-summary-item .value{font-size:14px}

  /* Toast — kengroq */
  .toast{bottom:12px;padding:10px 16px;font-size:13px;border-radius:10px}

  /* Auth card — telefonlar uchun */
  .auth-card{padding:28px 20px;border-radius:16px}
  .auth-card h1{font-size:18px;margin-bottom:20px}

  /* Report columns — stacked */
  .report-columns{gap:12px}

  /* Buttons — kichikroq */
  .btn{padding:8px 12px;font-size:13px}
  .btn-lg{padding:12px;font-size:14px}

  /* Sidebar brand — kichikroq */
  .sidebar-brand{padding:16px 16px 14px}
  .sidebar-brand-name{font-size:15px}
  .sidebar-nav{padding:8px 8px}
  .sidebar-link{padding:10px 12px;font-size:13px;gap:10px}

  /* Kassa customer chip */
  .kassa-customer-chip{padding:8px 10px;font-size:12px}
  .kassa-loyalty-row{flex-wrap:wrap;gap:6px}
  .kassa-loyalty-row input{width:100%}

  /* Admin settings button */
  .admin-settings-btn{font-size:14px;padding:5px 8px}
}

/* --- Juda kichik ekranlar (360px va kichik) --- */
@media(max-width:360px){
  .kassa-products-grid{grid-template-columns:1fr}
  .checkout-payment-methods{flex-direction:column;gap:6px}
  .payment-method-label{padding:12px 10px}
  .dash-card .value{font-size:16px}
  .topbar-title{font-size:13px}
}

/* ===================== Universal ERP: modullar, tovar formasi, variantlar, POS ===================== */
/* Superadmin o'chirgan modul elementlari butunlay yashiriladi */
.module-off{display:none!important}

/* Keng modal (tovar formasi, variantlar) */
.modal.modal-wide{max-width:640px}
.form-section{border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px 6px;margin-bottom:12px;background:var(--card-bg)}
.form-section-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:10px}
.form-section-title .hint{text-transform:none;letter-spacing:0;font-weight:500}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
@media(max-width:480px){.form-grid{grid-template-columns:1fr}}
.field-label{display:block;font-size:12.5px;font-weight:600;color:var(--text);margin:0 0 5px}
.field-label .hint,.hint{font-weight:500;color:var(--text-muted);font-size:11.5px}
.input-with-btn{display:flex;gap:8px;align-items:flex-start}
.input-with-btn input{flex:1}
.form-more{padding-bottom:12px}
.form-more summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--text-muted);list-style:none}
.form-more summary::before{content:"▸ "}
.form-more[open] summary::before{content:"▾ "}
.form-more[open] summary{margin-bottom:10px}
.form-more textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--input-bg);color:var(--text);font-family:inherit;margin-bottom:10px}

/* Qadoqlar ro'yxati */
.chip-list{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.chip-list:empty{display:none}
.pkg-chip{display:inline-flex;align-items:center;gap:8px;background:var(--primary-soft);color:var(--primary-dark);border-radius:999px;padding:6px 6px 6px 12px;font-size:13px;font-weight:600}
body.dark-mode .pkg-chip{color:#c7d2fe}
.pkg-chip small{font-weight:500;opacity:.8}
.pkg-chip button{border:none;background:rgba(0,0,0,.08);color:inherit;width:22px;height:22px;border-radius:50%;cursor:pointer;line-height:1}
.package-add-row{display:grid;grid-template-columns:1.2fr .8fr 1.3fr 1fr auto;gap:8px;align-items:start}
.package-add-row .btn{white-space:nowrap}
@media(max-width:560px){.package-add-row{grid-template-columns:1fr 1fr}.package-add-row .btn{grid-column:1/-1}}

/* Variantlar */
.variant-table-wrap{margin-bottom:12px}
.variant-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:8px}
.variant-row .v-name{flex:1;min-width:0;font-weight:600;font-size:14px}
.variant-row .v-name small{display:block;font-weight:500;color:var(--text-muted);font-size:12px}
.variant-row .v-stock{font-weight:700;font-size:13px;white-space:nowrap}
.variant-row .v-stock.zero{color:var(--danger)}
.variant-row .btn{padding:6px 10px;font-size:12px}
.variant-attr-row{display:grid;grid-template-columns:1fr 2fr auto;gap:8px;align-items:start}
.variant-attr-row button{border:none;background:none;color:var(--text-muted);font-size:20px;cursor:pointer;padding:8px}
.variant-preview{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 12px;font-size:12px}
.variant-preview span{background:var(--bg);border:1px solid var(--border);border-radius:999px;padding:4px 10px}
.variant-preview .count{background:var(--primary-soft);border-color:transparent;color:var(--primary);font-weight:700}
.variant-pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin-bottom:8px}
.variant-pick-btn{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:12px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--card-bg);color:var(--text);cursor:pointer;text-align:left;font:inherit}
.variant-pick-btn:hover:not(:disabled){border-color:var(--primary);background:var(--primary-soft)}
.variant-pick-btn b{font-size:15px}
.variant-pick-btn span{font-size:12px;color:var(--text-muted)}
.variant-pick-btn:disabled{opacity:.45;cursor:not-allowed}
.badge-variant{background:var(--primary-soft);color:var(--primary);font-size:11px;padding:2px 8px;border-radius:999px;font-weight:700;margin-left:6px;white-space:nowrap}
.pos-card-variants{font-size:11px;font-weight:700;color:var(--primary)}

/* POS kassa paneli */
.pos-terminal-bar{max-width:940px;margin:0 auto 10px;display:flex;align-items:center;gap:10px;padding:9px 14px;border-radius:var(--radius);border:1px dashed var(--border);font-size:13px;font-weight:600;color:var(--text-muted)}
.pos-terminal-bar.bound{border-style:solid;background:var(--cash-soft);border-color:transparent;color:var(--cash)}
.pos-terminal-bar.unbound{background:var(--debt-soft);border-color:var(--debt);color:var(--debt)}
.pos-terminal-bar span{flex:1}
.pos-terminal-bar .btn{padding:6px 12px;font-size:12px}
.pos-bind-list{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.pos-bind-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1.5px solid var(--border);border-radius:var(--radius-sm)}
.pos-bind-item .icon{font-size:22px}
.pos-bind-item .info{flex:1}
.pos-bind-item .info b{display:block}
.pos-bind-item .info span{font-size:12px;color:var(--text-muted)}
.pos-bind-item.busy{opacity:.55}
.terminal-settings-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}
.terminal-settings-row:last-child{border-bottom:none}
.terminal-settings-row .info{flex:1;min-width:0}
.terminal-settings-row .info span{display:block;font-size:12px;color:var(--text-muted)}
#view-settings .terminal-settings-row .btn{width:auto;padding:6px 12px;font-size:12px}

/* ===================== O'rganish osonligi: Boshlash, yordam, bo'sh holatlar ===================== */
/* Sarlavha yonida "?" yordam tugmasi */
.topbar-title{margin-right:0}
.topbar-help-btn{margin-right:auto;width:26px;height:26px;border-radius:50%;border:1.5px solid var(--border);background:var(--card-bg);color:var(--text-muted);font-weight:800;font-size:13px;padding:0;cursor:pointer;line-height:1}
.topbar-help-btn:hover,.topbar-help-btn.active{border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}

/* "Boshlash" yo'riqnomasi */
.onboarding-card{background:linear-gradient(135deg,var(--primary-soft),var(--card-bg) 60%);border:1px solid var(--border);border-radius:var(--radius);padding:20px 22px;margin-bottom:18px;box-shadow:var(--shadow-sm)}
.onboarding-head{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}
.onboarding-head h2{margin:0 0 4px;font-size:18px;letter-spacing:-.01em}
.onboarding-head p{margin:0;color:var(--text-muted);font-size:13.5px}
.onboarding-dismiss{padding:6px 10px;font-size:12px;flex-shrink:0}
.onboarding-progress{height:6px;background:var(--border);border-radius:999px;overflow:hidden;margin:14px 0 6px}
.onboarding-progress div{height:100%;background:var(--primary);border-radius:999px;transition:width .4s ease}
.onboarding-steps{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:6px}
.onboarding-step{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--card-bg);border:1px solid var(--border)}
.onboarding-step .check{width:26px;height:26px;border-radius:50%;border:2px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;color:var(--text-muted);flex-shrink:0}
.onboarding-step.done .check{background:var(--cash);border-color:var(--cash);color:#fff}
.onboarding-step .body{flex:1;min-width:0}
.onboarding-step .body b{display:block;font-size:14px}
.onboarding-step .body span{display:block;font-size:12.5px;color:var(--text-muted);margin-top:2px}
.onboarding-step.done .body b{color:var(--text-muted);text-decoration:line-through;text-decoration-color:var(--border)}
.onboarding-step.done .body span{display:none}
.onboarding-step.current{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.onboarding-step .btn{padding:7px 12px;font-size:12.5px;white-space:nowrap}
.onboarding-done{display:flex;align-items:center;gap:10px;font-weight:600;color:var(--cash)}
@media(max-width:560px){.onboarding-step{flex-wrap:wrap}.onboarding-step .btn{width:100%}}

/* Sahifa yordamchisi */
.page-help{display:flex;gap:14px;align-items:flex-start;background:var(--card-bg);border:1px solid var(--border);border-left:4px solid var(--primary);border-radius:var(--radius);padding:14px 16px;margin-bottom:16px;box-shadow:var(--shadow-sm)}
.page-help .ph-icon{font-size:22px;line-height:1}
.page-help .ph-body{flex:1;min-width:0}
.page-help h4{margin:0 0 6px;font-size:14px}
.page-help ul{margin:0;padding-left:18px;color:var(--text-muted);font-size:13px;line-height:1.55}
.page-help .ph-close{border:none;background:none;color:var(--text-muted);font-size:20px;cursor:pointer;padding:0 4px;line-height:1}

/* Bo'sh holatlar */
.empty-state{text-align:center;padding:34px 16px}
.empty-state .es-icon{font-size:40px;line-height:1;margin-bottom:10px}
.empty-state h4{margin:0 0 6px;font-size:16px;color:var(--text)}
.empty-state p{margin:0 auto 14px;max-width:420px;color:var(--text-muted);font-size:13.5px;line-height:1.5}
.empty-state .es-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.ombor-table td.empty-cell::before{display:none!important}
.kassa-products-grid .empty-state{grid-column:1/-1}

/* Kassa tezkor tugmalari */
.kassa-shortcuts{font-size:11.5px;color:var(--text-muted);margin:8px 0 10px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.kassa-shortcuts kbd{font-family:inherit;font-size:10.5px;font-weight:700;background:var(--card-bg);border:1px solid var(--border);border-bottom-width:2px;border-radius:5px;padding:1px 6px;color:var(--text)}
.kassa-shortcuts kbd:not(:first-child){margin-left:6px}
@media(hover:none){.kassa-shortcuts{display:none}}
/* Keng jadval ichidagi bo'sh holat — gorizontal skrolldan qat'i nazar ekranda markazda turadi */
.empty-cell .empty-state{position:sticky;left:0;width:calc(100vw - var(--sidebar-w) - 64px);max-width:100%}
@media(max-width:860px){.empty-cell .empty-state{width:calc(100vw - 48px)}}

/* ===================== Tarix sahifalari: filtrlar, yig'indi, ABC ===================== */
.filter-bar{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;justify-content:space-between;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;margin-bottom:14px}
.filter-bar.compact{border:none;padding:0;background:none;margin:6px 0 12px}
.period-chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--border);background:var(--card-bg);color:var(--text-muted);border-radius:999px;padding:6px 12px;font-size:13px;font-weight:600;cursor:pointer}
.chip:hover{color:var(--text);border-color:var(--primary)}
.chip.active{background:var(--primary);border-color:var(--primary);color:#fff}
.filter-fields{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.filter-fields input,.filter-fields select,.filter-bar.compact select{padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--input-bg);color:var(--text);font-size:13px;margin:0;width:auto}
.filter-sep{color:var(--text-muted)}
.summary-cards{margin-bottom:14px}
.summary-cards .dash-card .sub{font-size:12px;color:var(--text-muted)}
.h-hint{font-size:12px;font-weight:500;color:var(--text-muted)}
.refund-badge{display:inline-block;margin-left:6px;font-size:11px;font-weight:700;color:var(--danger);background:var(--danger-soft);border-radius:999px;padding:1px 8px}
.diff-pos{color:var(--cash);font-weight:700}
.diff-neg{color:var(--danger);font-weight:700}
.abc-legend{display:flex;gap:10px;flex-wrap:wrap;margin:4px 0 12px}
.abc-chip{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 12px;font-size:13px;flex:1;min-width:180px}
.abc-chip b{font-size:15px}
.abc-badge{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:8px;font-weight:800;font-size:13px;color:#fff}
.abc-A{background:var(--cash)}
.abc-B{background:var(--debt)}
.abc-C{background:var(--text-muted)}
.loyalty-adjust-row{display:grid;grid-template-columns:120px 1fr auto;gap:8px;margin-top:8px}
.loyalty-adjust-row input{margin:0}
.image-thumbs{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.image-thumb{position:relative;width:76px;height:76px;border-radius:10px;overflow:hidden;border:1px solid var(--border)}
.image-thumb img{width:100%;height:100%;object-fit:cover}
.image-thumb button{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;border:none;background:rgba(15,23,42,.7);color:#fff;cursor:pointer;line-height:1}
.image-thumb .primary-tag{position:absolute;left:4px;bottom:4px;font-size:10px;background:var(--primary);color:#fff;border-radius:6px;padding:1px 6px}
@media(max-width:560px){.filter-fields{width:100%}.filter-fields input[type=date]{flex:1}.loyalty-adjust-row{grid-template-columns:1fr}}

/* ===================== Bosh sahifa va oddiy hisobotlar ===================== */
.home-head{display:flex;align-items:baseline;gap:12px;margin:2px 0 14px}
.home-head h2{margin:0;font-size:22px;letter-spacing:-.02em}
.home-date{color:var(--text-muted);font-size:14px}
.home-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-bottom:16px}
.home-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;display:flex;flex-direction:column;gap:4px;box-shadow:var(--shadow-sm)}
.home-card .label{font-size:13px;font-weight:600;color:var(--text-muted)}
.home-card .value{font-size:28px;font-weight:800;letter-spacing:-.02em;line-height:1.15}
.home-card .sub{font-size:12.5px;color:var(--text-muted)}
.home-card-profit .value{color:var(--cash)}
.home-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin-bottom:16px}
.home-panel{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;margin-bottom:16px;box-shadow:var(--shadow-sm);min-width:0}
.home-grid .home-panel{margin-bottom:0}
.home-panel h3{margin:0 0 12px;font-size:15px}
.home-panel-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}
.home-panel-head h3{margin:0}
.panel-hint{margin:-6px 0 10px;font-size:12.5px;color:var(--text-muted)}
.panel-empty{color:var(--text-muted);font-size:13.5px;padding:10px 0}
.chart-small{height:220px;padding:0;border:none;box-shadow:none;background:none}
.link-btn{background:none;border:none;padding:0;color:var(--primary);font:inherit;font-weight:600;cursor:pointer}
.report-h{font-size:17px;margin:4px 0 12px}
.btn-sm{padding:6px 10px;font-size:12.5px}

/* "Diqqat qiling" ro'yxati */
.home-todo{display:flex;flex-direction:column;gap:10px}
.todo-item{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;padding:12px 14px;border-radius:var(--radius-sm);border-left:4px solid var(--border);background:var(--bg)}
.todo-item.danger{border-left-color:var(--danger)}
.todo-item.warn{border-left-color:var(--debt)}
.todo-item.ok{border-left-color:var(--cash)}
.todo-text{min-width:0}
.todo-text b{display:block;font-size:14px}
.todo-text span{display:block;font-size:12.5px;color:var(--text-muted);margin-top:2px}
.todo-text ul{margin:8px 0 0;padding-left:18px;font-size:13px;line-height:1.6}

/* Kassa farqi ogohlantirishi */
.alert-banner{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--radius-sm);margin-bottom:12px;font-size:13.5px}
.alert-banner.danger{background:var(--danger-soft);color:var(--danger)}
.alert-banner.warn{background:var(--debt-soft);color:var(--debt)}

/* To'lov turlari — oddiy chiziqlar */
.bar-list{display:flex;flex-direction:column;gap:12px}
.bar-row{display:grid;grid-template-columns:1fr 44px;gap:4px 10px;align-items:center}
.bar-label{grid-column:1/-1;display:flex;justify-content:space-between;font-size:13.5px}
.bar-track{height:8px;background:var(--bg);border-radius:999px;overflow:hidden}
.bar-fill{height:100%;background:var(--primary);border-radius:999px}
.bar-pct{font-size:12px;color:var(--text-muted);text-align:right}

/* Sof foyda — chek ko'rinishida */
.calc{display:flex;flex-direction:column}
.calc-row{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px dashed var(--border);font-size:14px}
.calc-row.minus b{color:var(--danger)}
.calc-row.total{border-bottom:none;border-top:2px solid var(--text);margin-top:4px;padding-top:12px;font-size:16px}
.calc-row.total b{color:var(--cash);font-size:18px}
.calc-row.total.negative b{color:var(--danger)}

/* Tovar reytinglari */
.rank-list{display:flex;flex-direction:column}
.rank-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);font-size:13.5px}
.rank-row:last-child{border-bottom:none}
.rank{width:22px;height:22px;border-radius:50%;background:var(--primary-soft);color:var(--primary);font-size:11.5px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.rank-name{flex:1;min-width:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank-meta{color:var(--text-muted);white-space:nowrap;font-size:12.5px}
.rank-meta b{color:var(--text)}
.money-lead{margin:0 0 10px;font-size:14px;line-height:1.5}
.money-weak{margin-top:12px}
.money-weak summary{cursor:pointer;font-weight:600;color:var(--text-muted);font-size:13px}
@media(max-width:560px){.home-card .value{font-size:24px}.home-grid{grid-template-columns:1fr}.rank-meta{font-size:11.5px}}
.home-card .value.negative{color:var(--danger)}
.calc-row b{white-space:nowrap}
.rank-row{align-items:flex-start}
.rank-name{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.35}
.rank-meta{text-align:right;line-height:1.35}
@media(max-width:560px){.rank-row{flex-wrap:wrap}.rank-meta{width:100%;text-align:left;padding-left:32px}}
.rank-row.stack{flex-direction:column;gap:2px}.rank-row.stack .rank-meta{text-align:left;padding-left:0;width:auto}

/* ===================== Kassa: sodda POS ko'rinishi ===================== */
.view-kassa{padding:16px 20px}
.view-kassa .pos{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:16px;align-items:start}
.pos-left{min-width:0}
.pos-search{position:relative;display:flex;gap:8px;align-items:center}
.pos-search-icon{position:absolute;left:14px;width:20px;height:20px;color:var(--text-muted);pointer-events:none}
.pos-search input{flex:1;height:52px;padding:0 14px 0 44px;font-size:16px;border:1.5px solid var(--border);border-radius:var(--radius);background:var(--card-bg);color:var(--text);box-shadow:var(--shadow-sm)}
.pos-search input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.pos-scan-btn{height:52px;display:inline-flex;align-items:center;gap:6px;padding:0 16px;border-radius:var(--radius);border:1.5px solid var(--border);background:var(--card-bg);color:var(--text);font-weight:600;cursor:pointer}
.pos-scan-btn:hover{border-color:var(--primary);color:var(--primary)}
.pos-categories{display:flex;gap:8px;overflow-x:auto;padding:12px 0 2px;scrollbar-width:none}
.pos-categories::-webkit-scrollbar{display:none}
.pos-categories .kassa-category-chip{flex-shrink:0;border:1px solid var(--border);background:var(--card-bg);color:var(--text);border-radius:999px;padding:7px 14px;font-weight:600;font-size:13px;cursor:pointer}
.pos-categories .kassa-category-chip.active{background:var(--text);border-color:var(--text);color:var(--card-bg)}
.view-kassa .kassa-products-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:12px;max-height:calc(100vh - 210px)}
.view-kassa .pos-product-card{min-height:118px;padding:12px 13px;gap:6px;justify-content:flex-start}
.view-kassa .pos-card-name{font-size:14.5px;line-height:1.3;margin:0}
.view-kassa .pos-card-price{font-size:17px;font-weight:800;color:var(--text);margin-top:auto}
.view-kassa .pos-card-price small{font-size:12px;font-weight:600;color:var(--text-muted)}
.view-kassa .pos-card-stock{background:none;padding:0;font-size:12px;color:var(--text-muted);border-radius:0}
.view-kassa .pos-card-stock.low{color:var(--debt);font-weight:700}
.view-kassa .pos-card-stock.out{color:var(--danger);font-weight:700}
.view-kassa .pos-card-variants{align-self:flex-start;font-size:11.5px;font-weight:700;color:var(--primary);background:var(--primary-soft);border-radius:999px;padding:2px 8px}

/* Chek paneli */
.pos-cart{position:sticky;top:calc(var(--topbar-h) + 12px);display:flex;flex-direction:column;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);max-height:calc(100vh - var(--topbar-h) - 28px);overflow:hidden}
.pos-status{display:flex;flex-wrap:wrap;gap:6px 14px;padding:10px 16px;border-bottom:1px solid var(--border);font-size:12.5px;color:var(--text-muted);background:var(--bg)}
.pos-status-item{display:inline-flex;gap:8px;align-items:center}
.pos-status-item.unbound{color:var(--danger);font-weight:700}
.pos-status .link-btn{font-size:12.5px}
.link-danger{color:var(--danger)}
.pos-cart-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px 6px}
.pos-cart-head h3{margin:0;font-size:16px;display:flex;gap:8px;align-items:baseline}
.pos-count{font-size:12.5px;font-weight:600;color:var(--text-muted)}
.pos-customer{padding:0 16px 6px}
.pos-customer-btn{width:100%;text-align:left;border:1px dashed var(--border);background:none;border-radius:var(--radius-sm);padding:8px 12px;color:var(--text);font:inherit;font-size:13px;font-weight:600;cursor:pointer}
.pos-customer-btn small{color:var(--text-muted);font-weight:500}
.pos-customer-btn:hover{border-color:var(--primary);color:var(--primary)}
.pos-customer .kassa-customer-chip{margin-top:0}
.pos-cart-items{flex:1;overflow-y:auto;padding:4px 16px;min-height:120px}
.view-kassa .cart-empty{border:none;background:none;padding:28px 8px;display:flex;flex-direction:column;gap:4px;align-items:center}
.cart-empty-icon{font-size:34px}
.view-kassa .cart-empty b{color:var(--text);font-size:15px}
.view-kassa .cart-empty span{font-size:13px}
.view-kassa .cart-table{border:none;box-shadow:none;border-radius:0}
.view-kassa .cart-table td{padding:10px 0}
.line-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.line-name{font-weight:600;font-size:14px;line-height:1.35}
.line-tag{display:inline-block;font-size:10.5px;font-weight:700;border-radius:999px;padding:1px 7px;margin-left:4px;background:var(--bg);color:var(--text-muted);vertical-align:middle}
.line-tag.ok{background:var(--cash-soft);color:var(--cash)}
.line-tag.warn{background:var(--debt-soft);color:var(--debt)}
.line-bottom{display:flex;align-items:center;gap:6px;margin-top:6px}
.view-kassa .qty-control{gap:0;border:1px solid var(--border);border-radius:9px;overflow:hidden}
.view-kassa .qty-btn{width:30px;height:30px;border:none;border-radius:0;background:var(--bg)}
.view-kassa .qty-value-input{width:46px;height:30px;border:none;border-radius:0;padding:0;background:var(--card-bg);margin:0}
.line-x{font-size:12px;color:var(--text-muted);white-space:nowrap}
.line-price{flex:1;min-width:0}
.view-kassa .cart-price-input{width:100%;max-width:96px;border:none;border-bottom:1px dashed var(--border);border-radius:0;background:none;padding:4px 2px;font-size:13.5px;margin:0}
.view-kassa .cart-price-input:focus{border-bottom-color:var(--primary);background:var(--primary-soft)}
.cart-line-total{font-size:15px;white-space:nowrap;margin-left:auto}
.view-kassa .cart-remove{color:var(--text-muted);font-size:20px;line-height:1;padding:0 4px}
.view-kassa .cart-remove:hover{color:var(--danger)}
.pos-cart-foot{border-top:1px solid var(--border);padding:14px 16px 12px;background:var(--card-bg)}
.pos-total{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}
.pos-total span{font-size:15px;font-weight:600;color:var(--text-muted)}
.pos-total b{font-size:28px;font-weight:800;letter-spacing:-.02em}
.pos-pay-btn{width:100%;height:56px;font-size:18px;font-weight:800;border-radius:var(--radius);background:var(--cash);border-color:var(--cash)}
.pos-pay-btn:hover:not(:disabled){filter:brightness(.95)}
.pos-pay-btn:disabled{background:var(--border);border-color:var(--border);color:var(--text-muted)}
.pos-cart-foot .kassa-shortcuts{justify-content:center;margin:8px 0 0}

/* To'lov oynasi */
.checkout-modal{max-width:460px}
.co-total{text-align:center;background:var(--bg);border-radius:var(--radius);padding:14px;margin-bottom:16px}
.co-total span{display:block;font-size:13px;color:var(--text-muted);font-weight:600}
.co-total strong{font-size:32px;letter-spacing:-.02em}
.co-label{font-size:13px;font-weight:700;margin:0 0 8px}
.co-methods{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}
.co-method{cursor:pointer}
.co-method input{position:absolute;opacity:0;pointer-events:none}
.co-method span{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 4px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:20px;text-align:center}
.co-method b{font-size:13px}
.co-method input:checked + span{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-dark)}
.co-method input:focus-visible + span{box-shadow:0 0 0 3px var(--primary-soft)}
.co-tendered{width:100%;height:54px;font-size:24px;font-weight:700;text-align:right;padding:0 14px;margin:0 0 8px}
.checkout-modal .checkout-quick-amounts{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.checkout-modal .checkout-quick-amounts .btn{padding:8px 4px;font-size:13px}
.co-change{display:flex;justify-content:space-between;align-items:center;margin-top:14px;padding:12px 14px;border-radius:var(--radius-sm);background:var(--cash-soft)}
.co-change span{font-weight:600;color:var(--text-muted)}
.co-change strong{font-size:24px;color:var(--cash)}
.co-change strong.short{color:var(--danger)}
.co-print{display:flex;align-items:center;gap:8px;margin:14px 0 4px;font-size:14px;cursor:pointer}
.co-print input{width:18px;height:18px;margin:0;accent-color:var(--primary)}
.checkout-modal .modal-actions .co-confirm{flex:2;height:50px;font-size:17px;font-weight:800;background:var(--cash);border-color:var(--cash)}

@media(max-width:980px){
  .view-kassa .pos{grid-template-columns:1fr}
  .pos-cart{position:static;max-height:none}
  .view-kassa .kassa-products-grid{max-height:none}
  .pos-cart-foot{position:sticky;bottom:0;box-shadow:0 -6px 16px rgba(15,23,42,.08)}
}
@media(max-width:560px){
  .view-kassa{padding:10px 8px}
  .pos-scan-btn span{display:none}
  .view-kassa .kassa-products-grid{grid-template-columns:repeat(2,1fr)}
}
.pos-search input{min-width:0}
@media(max-width:1280px){
  .view-kassa .pos{grid-template-columns:minmax(0,1fr) 320px}
  .pos-scan-btn span{display:none}
  .pos-scan-btn{padding:0 14px}
  .view-kassa .kassa-products-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}
}
.co-total > span{display:block;font-size:13px;color:var(--text-muted);font-weight:600}
.co-total strong span{display:inline;font-size:inherit;color:inherit;font-weight:inherit}
.checkout-modal .checkout-quick-amounts .btn{border:1px solid var(--border);background:var(--card-bg);color:var(--text)}
.checkout-modal .checkout-quick-amounts .btn:hover{border-color:var(--primary);color:var(--primary)}
.co-change:has(strong.short){background:var(--danger-soft)}
/* Tor ekranda (planshet/telefon) kassa bitta ustun — bu qoida o'rta ekran qoidasidan keyin turishi shart */
@media(max-width:980px){
  .view-kassa .pos{grid-template-columns:1fr}
  .pos-cart{position:static;max-height:none}
  .view-kassa .kassa-products-grid{max-height:50vh}
}
.pos-total #cart-total{color:inherit;font-size:inherit;font-weight:inherit}

/* ===================== Tovarlar sahifasi: sodda ro'yxat ===================== */
.products-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.pt-search{position:relative;flex:1;min-width:220px}
.pt-search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--text-muted);pointer-events:none}
.pt-search input{width:100%;height:44px;padding:0 12px 0 40px;font-size:15px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--card-bg);color:var(--text);margin:0}
.pt-search input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.products-toolbar > select{height:44px;padding:0 12px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--card-bg);color:var(--text);max-width:220px;margin:0}
.pt-actions{display:flex;gap:8px;margin-left:auto}
.pt-actions .btn{height:44px}
.stock-chips{margin-bottom:12px}
.chip-count{opacity:.75;font-weight:600}
.menu-wrap{position:relative}
.dropdown-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:60;min-width:230px;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);padding:6px;display:flex;flex-direction:column}
.dropdown-menu.floating{position:absolute;right:auto;top:0}
.dropdown-menu button{text-align:left;background:none;border:none;padding:9px 10px;border-radius:8px;font:inherit;font-size:13.5px;color:var(--text);cursor:pointer;white-space:nowrap}
.dropdown-menu button:hover{background:var(--bg)}
.dropdown-menu button.danger{color:var(--danger)}
.dropdown-menu hr{border:none;border-top:1px solid var(--border);margin:4px 2px}
.bulk-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 14px;margin-bottom:10px;background:var(--primary-soft);border-radius:var(--radius-sm);font-size:13.5px}
.products-table .ombor-table td{vertical-align:middle}
.products-table .col-check{width:36px}
.pr-name-btn{display:flex;align-items:center;gap:12px;background:none;border:none;padding:0;text-align:left;cursor:pointer;color:var(--text);font:inherit}
.pr-name-btn:hover b{color:var(--primary)}
.pr-name-btn b{display:block;font-size:14.5px}
.pr-thumb{width:40px;height:40px;border-radius:10px;object-fit:cover;flex-shrink:0;border:1px solid var(--border)}
.pr-thumb-empty{display:inline-flex;align-items:center;justify-content:center;background:var(--primary-soft);color:var(--primary);font-weight:800;border:none}
.pr-sub{display:block;font-size:12px;color:var(--text-muted);margin-top:2px;font-weight:500}
.stock-pill{display:inline-block;font-size:13px;font-weight:700;padding:3px 10px;border-radius:999px;background:var(--bg);white-space:nowrap}
.stock-pill.low{background:var(--debt-soft);color:var(--debt)}
.stock-pill.out{background:var(--danger-soft);color:var(--danger)}
.pr-actions{text-align:right;white-space:nowrap}
.pr-actions .btn + .btn{margin-left:6px}
.pr-actions .act-stockin{color:var(--cash);font-weight:700}
@media(max-width:860px){
  .pt-actions{margin-left:0;width:100%}
  .pt-actions .btn-primary{flex:1}
  .products-toolbar > select{max-width:none;flex:1}
  .products-table .pr-actions{text-align:left}
}
.pr-actions .btn,#products-more-btn{border:1px solid var(--border);background:var(--card-bg)}
.pr-actions .act-more{min-width:36px;font-weight:800}

/* ===================== Savdolar: kunlar bo'yicha cheklar ===================== */
.sales-filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:14px}
.sales-filter-selects{display:flex;gap:8px;flex-wrap:wrap}
.sales-filter-selects select,.sales-custom-dates input{height:38px;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card-bg);color:var(--text);font-size:13.5px;margin:0;width:auto}
.sales-custom-dates{display:flex;gap:8px;align-items:center;width:100%}
.sales-summary{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px;margin-bottom:16px;box-shadow:var(--shadow-sm);display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;justify-content:space-between}
.ss-main{display:flex;flex-direction:column;gap:2px}
.ss-label{font-size:13px;font-weight:600;color:var(--text-muted)}
.ss-value{font-size:28px;font-weight:800;letter-spacing:-.02em}
.ss-facts{font-size:13px;color:var(--text-muted)}
.text-danger{color:var(--danger)}
.ss-pays{display:flex;gap:6px;flex-wrap:wrap}
.pay-chip{display:inline-block;font-size:12px;font-weight:600;padding:3px 10px;border-radius:999px;background:var(--bg);color:var(--text);white-space:nowrap}
.pay-chip.pay-naqd{background:var(--cash-soft);color:var(--cash)}
.pay-chip.pay-karta{background:var(--primary-soft);color:var(--primary)}
.pay-chip.pay-nasiya{background:var(--debt-soft);color:var(--debt)}
.sales-list{display:flex;flex-direction:column;gap:16px}
.day-group{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm)}
.day-head{padding:10px 16px;font-size:13px;font-weight:700;color:var(--text-muted);background:var(--bg);border-bottom:1px solid var(--border)}
.sale-row{display:grid;grid-template-columns:52px minmax(0,1fr) auto auto 36px;gap:12px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border);cursor:pointer}
.sale-row:last-child{border-bottom:none}
.sale-row:hover,.sale-row:focus{background:var(--bg);outline:none}
.sale-time{font-weight:700;font-variant-numeric:tabular-nums;color:var(--text-muted)}
.sale-main{min-width:0}
.sale-main b{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sale-main span{display:block;font-size:12px;color:var(--text-muted);margin-top:2px}
.sale-sum{text-align:right;white-space:nowrap}
.sale-sum b{font-size:15px}
.refund-note{display:block;font-size:11.5px;color:var(--danger);font-weight:600}
.sale-row.refunded .sale-sum b{text-decoration:line-through;color:var(--text-muted)}
.sale-more{border:1px solid var(--border);background:var(--card-bg);font-weight:800}
@media(max-width:640px){
  .sale-row{grid-template-columns:44px minmax(0,1fr) auto 32px;grid-template-areas:"t m m x" "t p s s";row-gap:6px;column-gap:10px}
  .sale-time{grid-area:t;align-self:start}
  .sale-main{grid-area:m}
  .sale-row .pay-chip{grid-area:p;justify-self:start}
  .sale-sum{grid-area:s;text-align:right}
  .sale-more{grid-area:x;align-self:start}
  .sales-filter-selects{width:100%}
  .sales-filter-selects select{flex:1}
}
.perm-off{display:none!important}
.pr-name-btn.readonly{cursor:default}.pr-name-btn.readonly:hover b{color:inherit}

/* Harakatlar tarixi */
.audit-row{display:grid;grid-template-columns:52px minmax(0,1fr);gap:12px;padding:12px 16px;border-bottom:1px solid var(--border)}
.audit-row:last-child{border-bottom:none}
.audit-head{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;font-size:14px}
.audit-head small{color:var(--text-muted);font-size:12px}
.audit-summary{margin-top:3px;font-size:13.5px;color:var(--text);line-height:1.45;word-break:break-word}
.audit-tag{font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:999px;background:var(--bg);color:var(--text-muted)}
.audit-tag.g-tovar{background:var(--primary-soft);color:var(--primary)}
.audit-tag.g-ombor{background:var(--cash-soft);color:var(--cash)}
.audit-tag.g-savdo{background:var(--debt-soft);color:var(--debt)}
.audit-tag.g-moliya{background:#fdf2f8;color:#be185d}
.audit-tag.g-sozlama{background:var(--bg);color:var(--text)}
.audit-tag.g-xodim{background:var(--danger-soft);color:var(--danger)}

/* Xodim huquqlari jadvali */
.roles-matrix-wrap{overflow-x:auto}
.roles-matrix{width:100%;border-collapse:collapse;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.roles-matrix th,.roles-matrix td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:center;font-size:13px}
.roles-matrix th{background:var(--bg);font-size:12.5px;white-space:nowrap}
.roles-matrix tr:last-child td{border-bottom:none}
.roles-matrix th:first-child,.roles-matrix td.perm-name{text-align:left}
.perm-name b{display:block;font-size:13.5px}
.perm-name span{display:block;font-size:12px;color:var(--text-muted);margin-top:2px;font-weight:500}
.perm-cell input{width:18px;height:18px;margin:0;accent-color:var(--primary);cursor:pointer}
.perm-cell input:disabled{cursor:default;opacity:.55}
.role-reset{display:block;margin:2px auto 0;font-size:11px;font-weight:600}
@media(max-width:560px){.audit-row{grid-template-columns:44px minmax(0,1fr)}}

/* Aksiyalar va kechiktirilgan cheklar */
.promo-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.promo-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:8px}
.promo-card h3{margin:0;font-size:16px}
.promo-big{font-size:22px;font-weight:800;letter-spacing:-.02em}
.promo-meta{font-size:13px;color:var(--text-muted)}
.promo-stat{font-size:13px;display:flex;justify-content:space-between;border-top:1px dashed var(--border);padding-top:8px}
.promo-actions{display:flex;gap:12px;margin-top:2px}
.promo-badge{align-self:flex-start;font-size:11px;font-weight:700;border-radius:999px;padding:2px 9px;background:var(--bg);color:var(--text-muted)}
.promo-badge.active{background:var(--cash-soft);color:var(--cash)}
.promo-badge.scheduled{background:var(--debt-soft);color:var(--debt)}
.promo-two{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.promo-results{max-height:150px;overflow:auto;display:flex;flex-direction:column;gap:2px;margin-top:4px}
.promo-results button{text-align:left;background:none;border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 10px;color:var(--text);cursor:pointer}
.promo-results button:hover{border-color:var(--primary)}
.promo-days .chip{padding:5px 10px}
.pos-cart-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.pos-promo-saving{font-size:13px;font-weight:600;color:var(--cash);margin-bottom:6px}
.line-old{text-decoration:line-through;color:var(--text-muted);font-size:12px;margin-right:4px}
.held-list{display:flex;flex-direction:column;gap:8px;max-height:340px;overflow:auto;margin-bottom:10px}
.held-item{border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;display:flex;justify-content:space-between;gap:10px;align-items:center}
.held-item b{display:block}
.held-item small{color:var(--text-muted)}
.held-item .held-btns{display:flex;gap:10px;white-space:nowrap}
.pos-card-promo{display:inline-block;font-size:10.5px;font-weight:700;background:var(--debt-soft);color:var(--debt);border-radius:999px;padding:1px 7px;margin-bottom:2px}

.sync-badge{cursor:pointer}

/* Buyurtmalar va ko'chirish */
.po-suggest{background:var(--debt-soft);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:18px}
.po-suggest h3,.po-h{margin:0 0 10px;font-size:15px}
.po-h{margin-top:6px}
.po-sug-row{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:6px 0;border-top:1px dashed var(--border);font-size:14px;flex-wrap:wrap}
.po-sug-row:first-child{border-top:none}
.po-items{font-size:13px;color:var(--text-muted);display:flex;flex-direction:column;gap:2px}
.po-items .done{color:var(--cash)}
.promo-badge.late,.promo-badge.in_transit{background:var(--debt-soft);color:var(--debt)}
.promo-badge.received{background:var(--cash-soft);color:var(--cash)}
.promo-badge.ordered,.promo-badge.partial{background:var(--primary-soft);color:var(--primary)}
.line-editor{display:flex;flex-direction:column;gap:6px;margin:8px 0}
.line-row{display:grid;grid-template-columns:1fr 84px 96px 24px;gap:6px;align-items:center}
.line-row.no-cost{grid-template-columns:1fr 96px 24px}
.line-row .line-name-cell{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.line-row input{min-width:0}
.line-row button{background:none;border:none;color:var(--danger);cursor:pointer;font-size:18px}
.recv-row{display:grid;grid-template-columns:1fr 100px;gap:8px;align-items:center;font-size:14px}

.settings-grid{display:flex;flex-direction:column;gap:10px}
.settings-grid.hidden{display:none}
.settings-grid select,.settings-grid input[type=text],.settings-grid input[type=password]{width:100%}
.sync-badge.fiscal{background:var(--debt-soft);color:var(--debt)}
.staff-cred{display:flex;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:8px}
.staff-cred b{font-family:ui-monospace,Menlo,monospace;font-size:16px;user-select:all}
.held-item.is-blocked{opacity:.6}

/* ===== Telefon ilovasi ko'rinishi: pastki menyu, to'lov paneli, xavfsiz hudud ===== */
.bottom-nav,.mobile-pay-bar{display:none}
@media(max-width:860px){
  :root{--bn-h:60px;--safe-b:env(safe-area-inset-bottom,0px)}
  body{padding-bottom:calc(var(--bn-h) + var(--safe-b))}
  .topbar{padding-top:env(safe-area-inset-top,0px)}
  .bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:70;background:var(--card-bg);border-top:1px solid var(--border);padding-bottom:var(--safe-b);box-shadow:0 -4px 16px rgba(15,23,42,.06)}
  .bottom-nav button{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;height:var(--bn-h);background:none;border:none;color:var(--text-muted);font:inherit;font-size:10.5px;font-weight:600;cursor:pointer;-webkit-tap-highlight-color:transparent}
  .bottom-nav button svg{width:22px;height:22px}
  .bottom-nav button.active{color:var(--primary)}
  .bottom-nav button.perm-off,.bottom-nav button.module-off{display:none}
  body.kb-open .bottom-nav,body.kb-open .mobile-pay-bar{display:none}
  body.kb-open{padding-bottom:0}
  .mobile-pay-bar{position:fixed;left:10px;right:10px;bottom:calc(var(--bn-h) + var(--safe-b) + 8px);z-index:71;align-items:center;justify-content:space-between;gap:12px;background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:10px 12px 10px 16px;box-shadow:var(--shadow-lg)}
  .mobile-pay-bar:not(.hidden){display:flex}
  .mobile-pay-bar b{display:block;font-size:19px;letter-spacing:-.02em}
  .mobile-pay-bar small{color:var(--text-muted);font-size:12px}
  .mobile-pay-bar .btn{padding:12px 20px;font-size:15px;white-space:nowrap}
  .toast{bottom:calc(var(--bn-h) + var(--safe-b) + 12px)}
  .modal{padding-bottom:calc(20px + var(--safe-b))}
  input,select,textarea{font-size:16px}
  .btn,.chip,.qty-btn{min-height:40px}
  .link-btn{padding:6px 2px}
  .cart-remove{min-width:36px;min-height:36px}
}

/* Kirish oynasidagi til tanlash */
.lang-switch { display: flex; justify-content: center; gap: 6px; margin-top: 14px; }
.lang-switch button { background: none; border: 0; color: var(--text-muted); font-size: 13px; padding: 4px 8px; border-radius: 6px; cursor: pointer; }
.lang-switch button:hover { background: var(--bg-soft, rgba(0,0,0,.05)); color: var(--text); }

/* Filiallar solishtiruvi: tushum ulushi chizig'i */
.share-bar { display: inline-block; width: 60px; height: 6px; border-radius: 3px; background: var(--border); margin-right: 6px; vertical-align: middle; overflow: hidden; }
.share-bar span { display: block; height: 100%; background: var(--primary); }

/* Menyudagi son belgisi (masalan yangi onlayn buyurtmalar) */
.nav-badge { margin-left: auto; background: var(--danger, #dc2626); color: #fff; border-radius: 999px; font-size: 11px; font-weight: 700; padding: 1px 7px; }
.cell-sub { color: var(--text-muted); font-size: 12px; font-weight: 400; }
