:root{}
.chart-wrap{position:relative;min-height:300px}.chart-wrap-lg{min-height:360px}@media(max-width:767.98px){.chart-wrap,.chart-wrap-lg{min-height:280px}}:root{--primary:#2563eb;--primary-dark:#1d4ed8;--sidebar:#0f172a;--bg:#f3f6fb;--text:#182235;--muted:#64748b;--border:#e2e8f0;--radius:14px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}.sidebar{position:fixed;inset:0 auto 0 0;width:260px;background:var(--sidebar);color:#fff;z-index:1040;display:flex;flex-direction:column;transition:transform .25s}.brand{height:76px;display:flex;align-items:center;gap:12px;padding:0 20px;border-bottom:1px solid rgba(255,255,255,.08)}.brand-mark{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(135deg,#3b82f6,#22c55e);color:#fff;font-weight:800}.brand-mark svg{width:22px}.brand small{display:block;color:#94a3b8;font-size:.72rem}.sidebar .nav{padding-top:18px;flex:1 1 auto;min-height:0;display:flex;flex-direction:column;flex-wrap:nowrap;align-items:stretch;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}
.sidebar .nav-link{flex:0 0 auto;width:100%;min-width:0}
.sidebar .nav-caption{flex:0 0 auto;width:100%}.sidebar .nav-link{color:#cbd5e1;display:flex;align-items:center;gap:12px;padding:11px 14px;margin:3px 0;border-radius:10px}.sidebar .nav-link svg{width:19px}.sidebar .nav-link:hover,.sidebar .nav-link.active{background:rgba(59,130,246,.18);color:#fff}.nav-caption{color:#64748b;font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;padding:20px 14px 7px}.sidebar-user{margin-top:auto;padding:18px;display:flex;align-items:center;gap:10px;border-top:1px solid rgba(255,255,255,.08)}.avatar{width:38px;height:38px;border-radius:50%;background:#2563eb;display:grid;place-items:center;font-weight:700}.sidebar-user small{color:#94a3b8;text-transform:capitalize}.main{margin-left:260px;min-height:100vh}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:16px;padding:0 28px;position:sticky;top:0;z-index:1020}.topbar h1{font-size:1.25rem;margin:0}.topbar small{font-size:.78rem}.page-actions{display:flex;justify-content:flex-end;gap:10px;margin-bottom:16px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:9px}.btn svg{width:17px;height:17px}.btn-primary{background:var(--primary);border-color:var(--primary)}.btn-primary:hover{background:var(--primary-dark);border-color:var(--primary-dark)}.card,.filter-card,.modal-content{border-radius:var(--radius)}.modal-form-shell{display:flex;flex-direction:column;width:100%;min-height:0;overflow:hidden}.modal-dialog-scrollable .modal-form-shell{max-height:calc(100dvh - 1rem)}.modal-dialog-scrollable .modal-form-shell>.modal-body{flex:1 1 auto;min-height:0;overflow-y:auto!important;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y}.modal-form-shell>.modal-header,.modal-form-shell>.modal-footer{flex:0 0 auto}@media(max-width:991.98px){#orderModal{padding:0!important;overflow:hidden}#orderModal .modal-dialog{width:100%;max-width:none;height:100dvh;max-height:100dvh;margin:0}#orderModal .modal-content{height:100dvh;max-height:100dvh;border:0;border-radius:0;overflow:hidden}#orderModal .modal-body{flex:1 1 auto;min-height:0;overflow-y:auto!important;overflow-x:hidden;max-height:none;padding-bottom:calc(2rem + env(safe-area-inset-bottom));touch-action:pan-y;-webkit-overflow-scrolling:touch}#orderModal .modal-header{padding-top:calc(1rem + env(safe-area-inset-top))}#orderModal .modal-footer{padding-bottom:calc(.75rem + env(safe-area-inset-bottom))}}.filter-card{background:#fff;padding:18px;margin-bottom:16px;box-shadow:0 4px 20px rgba(15,23,42,.05)}.metric-card{background:#fff;border-radius:var(--radius);padding:20px;display:flex;gap:15px;align-items:center;box-shadow:0 4px 20px rgba(15,23,42,.05)}.metric-icon{width:48px;height:48px;border-radius:13px;background:#eff6ff;color:var(--primary);display:grid;place-items:center}.metric-card span{display:block;color:var(--muted);font-size:.82rem}.metric-card strong{display:block;font-size:1.45rem;margin-top:2px}.table>:not(caption)>*>*{padding:.85rem .8rem;border-color:#edf1f6}.table thead th{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);white-space:nowrap}.table-thumb,.mini-thumb{width:46px;height:46px;border-radius:9px;object-fit:cover;background:#eef2f7}.mini-thumb{width:32px;height:32px}.placeholder-thumb{display:grid;place-items:center;color:#94a3b8}.image-thumb-btn{border:0;background:none;padding:0}.image-thumb-btn:focus-visible{outline:3px solid rgba(37,99,235,.35);border-radius:10px}.status{display:inline-flex;padding:4px 9px;border-radius:999px;font-size:.72rem;font-weight:700;text-transform:capitalize}.status-active,.status-completed{background:#dcfce7;color:#166534}.status-inactive,.status-cancelled{background:#fee2e2;color:#991b1b}.status-confirmed{background:#dbeafe;color:#1d4ed8}.status-draft{background:#fef3c7;color:#92400e}.action-group{display:flex;gap:5px}.empty{text-align:center!important;color:var(--muted);padding:32px!important}.image-preview-box{min-height:190px;border:1px dashed #cbd5e1;border-radius:12px;background:#f8fafc;display:grid;place-items:center;overflow:hidden}.image-preview-box img{width:100%;height:190px;object-fit:cover}.image-preview-box>div{display:flex;flex-direction:column;align-items:center;color:#64748b;gap:8px}.image-preview-box svg{width:38px;height:38px}.error-state{text-align:center;padding:80px 20px}.error-icon{width:72px;height:72px;background:#fee2e2;color:#dc2626;border-radius:50%;display:grid;place-items:center;margin:0 auto 20px}.login-page{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at top left,#dbeafe,transparent 35%),#f8fafc;padding:20px}.login-card{width:min(440px,100%);background:#fff;padding:36px;border-radius:20px;box-shadow:0 20px 50px rgba(15,23,42,.12)}.brand-login{display:flex;align-items:center;gap:12px;margin-bottom:32px}.brand-login h1{font-size:1.2rem;margin:0}.brand-login p{margin:0;color:var(--muted);font-size:.8rem}.password-field{position:relative}.password-field .form-control{padding-right:3.25rem}.password-toggle{position:absolute;right:.65rem;top:50%;transform:translateY(-50%);width:2.25rem;height:2.25rem;border:0;border-radius:8px;background:transparent;display:grid;place-items:center;font-size:1.05rem}.password-toggle:hover,.password-toggle:focus-visible{background:#eef2f7;outline:2px solid rgba(37,99,235,.25)}.sidebar-overlay{display:none}.min-w-0{min-width:0}@media(max-width:991.98px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:translateX(0)}.sidebar-overlay.show{display:block;position:fixed;inset:0;background:rgba(15,23,42,.55);z-index:1035}.main{margin-left:0}.topbar{padding:0 16px}.container-fluid{padding-left:14px!important;padding-right:14px!important}}@media(max-width:767.98px){.page-actions{justify-content:stretch}.page-actions .btn{flex:1}.metric-card{padding:16px}.login-card{padding:26px 22px}.dataTables_wrapper .row{gap:10px}}
.app-modal{overflow:hidden}.app-modal .modal-dialog{display:flex;min-height:0}.app-modal .modal-content{display:flex;flex-direction:column;min-height:0;overflow:hidden}.app-modal .modal-body{flex:1 1 auto;min-height:0;overflow-y:auto!important;overflow-x:hidden;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch}.app-modal .modal-header,.app-modal .modal-footer{flex:0 0 auto}@media(max-width:991.98px){.app-modal{padding:0!important}.app-modal .modal-dialog{width:100%;max-width:none;height:100dvh;max-height:100dvh;margin:0}.app-modal .modal-content{height:100dvh;max-height:100dvh;border:0;border-radius:0}.app-modal .modal-body{padding-bottom:calc(2rem + env(safe-area-inset-bottom))}.app-modal .modal-header{padding-top:calc(1rem + env(safe-area-inset-top))}.app-modal .modal-footer{padding-bottom:calc(.75rem + env(safe-area-inset-bottom))}}.app-modal{overflow-x:hidden!important;overflow-y:auto!important;-webkit-overflow-scrolling:touch;touch-action:pan-y}.app-modal .modal-dialog{display:block;min-height:0;height:auto!important;max-height:none!important}.app-modal .modal-content{display:block;height:auto!important;max-height:none!important;min-height:0;overflow:visible!important}.app-modal .modal-body{display:block;max-height:none!important;min-height:0;overflow:visible!important;touch-action:auto}.app-modal .modal-header,.app-modal .modal-footer{position:static}@media(max-width:991.98px){.app-modal .modal-dialog{width:100%;max-width:none;margin:0;min-height:100dvh}.app-modal .modal-content{min-height:100dvh;border:0;border-radius:0}.app-modal .modal-body{padding-bottom:2rem}.app-modal .modal-header{padding-top:calc(1rem + env(safe-area-inset-top))}.app-modal .modal-footer{padding-bottom:calc(.75rem + env(safe-area-inset-bottom))}}
/* Final modal scrolling model: one viewport-sized shell, one scrollable body. */
html body .app-modal{overflow:hidden!important;}
html body .app-modal .modal-dialog{display:flex!important;flex-direction:column!important;height:calc(100vh - 2rem)!important;height:calc(100dvh - 2rem)!important;max-height:calc(100vh - 2rem)!important;max-height:calc(100dvh - 2rem)!important;margin:1rem auto!important;}
html body .app-modal .modal-content{display:flex!important;flex:1 1 auto!important;flex-direction:column!important;height:100%!important;max-height:100%!important;min-height:0!important;overflow:hidden!important;}
html body .app-modal .modal-header,html body .app-modal .modal-footer{flex:0 0 auto!important;}
html body .app-modal .modal-body{display:block!important;flex:1 1 auto!important;min-height:0!important;max-height:none!important;overflow-x:hidden!important;overflow-y:scroll!important;overscroll-behavior:contain!important;touch-action:pan-y!important;-webkit-overflow-scrolling:touch!important;}
@media(max-width:1199.98px){html body .app-modal .modal-dialog{width:100%!important;max-width:none!important;height:100vh!important;height:100dvh!important;max-height:100vh!important;max-height:100dvh!important;margin:0!important;}html body .app-modal .modal-content{border:0!important;border-radius:0!important;}html body .app-modal .modal-header{padding-top:calc(1rem + env(safe-area-inset-top))!important;}html body .app-modal .modal-footer{padding-bottom:calc(.75rem + env(safe-area-inset-bottom))!important;}html body .app-modal .modal-body{padding-bottom:calc(2rem + env(safe-area-inset-bottom))!important;}}

.report-print-document{display:none}
@media print{
  @page{size:A4 landscape;margin:10mm}
  html,body{background:#fff!important;height:auto!important;overflow:visible!important}
  body.report-print-mode .sidebar,body.report-print-mode .sidebar-overlay,body.report-print-mode .topbar{display:none!important}
  body.report-print-mode .main{margin:0!important;width:100%!important;min-height:0!important}
  body.report-print-mode .main>.container-fluid{padding:0!important;margin:0!important;max-width:none!important}
  body.report-print-mode .main>.container-fluid>*{display:none!important}
  body.report-print-mode .main>.container-fluid>.report-print-document{display:block!important}
  .report-print-document{font-family:Arial,sans-serif;color:#1f2937;font-size:9pt}
  .report-print-header{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:2px solid #1f4e78;padding-bottom:7mm;margin-bottom:6mm}
  .report-print-header h1{font-size:20pt;line-height:1.1;margin:0;color:#16324f}
  .report-print-header p,.report-print-meta{font-size:8pt;color:#64748b;margin:2mm 0 0}
  .report-print-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:4mm;margin-bottom:6mm;break-inside:avoid}
  .report-print-summary>div{border:1px solid #d8e1ec;border-radius:3mm;padding:4mm;background:#f7f9fc;min-height:18mm}
  .report-print-summary span{display:block;color:#64748b;font-size:7pt;margin-bottom:2mm}
  .report-print-summary strong{display:block;color:#16324f;font-size:11pt;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .report-print-charts{display:grid;grid-template-columns:1fr 1fr;gap:5mm;break-inside:avoid;page-break-inside:avoid}
  .report-print-charts figure{margin:0;border:1px solid #d8e1ec;border-radius:2mm;padding:3mm;height:68mm;overflow:hidden;break-inside:avoid;background:#fff}
  .report-print-charts figcaption{font-weight:700;font-size:8pt;color:#334155;margin-bottom:2mm}
  .report-print-charts img{display:block;width:100%;height:59mm;object-fit:contain}
  .report-print-table-section{break-before:page;page-break-before:always;padding-top:2mm}
  .report-print-table-section h2{font-size:14pt;color:#16324f;margin:0 0 4mm}
  .report-print-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:7pt}
  .report-print-table thead{display:table-header-group}
  .report-print-table tr{break-inside:avoid;page-break-inside:avoid}
  .report-print-table th{background:#1f4e78!important;color:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;padding:2.5mm 2mm;text-align:left;border:1px solid #1f4e78}
  .report-print-table td{padding:2.2mm 2mm;border:1px solid #d8e1ec;vertical-align:top;overflow-wrap:anywhere}
  .report-print-table th:nth-child(1){width:12%}.report-print-table th:nth-child(2){width:9%}.report-print-table th:nth-child(3){width:20%}.report-print-table th:nth-child(4){width:9%}.report-print-table th:nth-child(5){width:6%}.report-print-table th:nth-child(n+6){width:11%}
  .report-print-table .num{text-align:right;white-space:nowrap}
  .report-print-table .empty{text-align:center;padding:8mm;color:#64748b}
}
