/* ThinkCharge mobile-first application contract — loaded after every page style. */
:root {
  --tcm-safe-top: env(safe-area-inset-top, 0px);
  --tcm-safe-right: env(safe-area-inset-right, 0px);
  --tcm-safe-bottom: env(safe-area-inset-bottom, 0px);
  --tcm-safe-left: env(safe-area-inset-left, 0px);
  --tcm-touch: 44px;
  --tcm-gutter: 12px;
  --tcm-vh: 1vh;
}

html { min-width:320px; overflow-x:hidden; -webkit-text-size-adjust:100%; text-size-adjust:100%; }
body { min-width:320px; max-width:100vw; overflow-x:clip; overscroll-behavior-x:none; }
*,*::before,*::after { box-sizing:border-box; }
img,svg,video,canvas,iframe { max-width:100%; }
img,video { height:auto; }
button,input,select,textarea { max-width:100%; font:inherit; }
.tc-app-shell,.tc-app-stage,.tc-main-content,.tc-page,.tc-legacy-page,.container,.container-fluid,.row,[class*="col-"] { min-width:0; }
.tc-main-content > * { max-width:100%; }
.text-break,.alert,.card-body,.modal-body,.offcanvas-body { overflow-wrap:anywhere; }

/* Universal touch and focus behaviour. */
@media (hover:none),(pointer:coarse) {
  a.btn,button,.btn,.menu-link,.dropdown-item,.nav-link,.page-link,.form-check-label { min-height:var(--tcm-touch); }
  .btn-icon,.tc-topbar-button,.tc-nav-trigger,.tc-sidebar-close { min-width:var(--tcm-touch); min-height:var(--tcm-touch); }
  .btn:hover,.menu-link:hover { transform:none; }
}
:where(a,button,input,select,textarea,[tabindex]):focus-visible { outline:3px solid rgba(0,175,208,.28); outline-offset:2px; }

/* Responsive media, scanners and charts used throughout legacy production pages. */
#reader,#modulereader,#cellreader,#bmsreader,[id$="reader"],[id$="Reader"] { width:100%; max-width:380px; min-height:0; margin-inline:auto; }
#reader video,#modulereader video,#cellreader video,#bmsreader video,[id$="reader"] video { width:100%; height:auto; object-fit:cover; }
.apexcharts-canvas,.apexcharts-svg,.chartjs-render-monitor { max-width:100%; }

/* Every data region remains usable without changing or hiding authoritative columns. */
.table-responsive,.card-datatable,.dataTables_scroll,.dataTables_scrollBody,.tc-table-scroll {
  width:100%; max-width:100%; overflow-x:auto; overscroll-behavior-inline:contain; -webkit-overflow-scrolling:touch;
}
.tc-scroll-region { position:relative; scrollbar-width:thin; }
.tc-scroll-region:focus-visible { outline:3px solid rgba(0,175,208,.22); outline-offset:-3px; }
table.table,table.dataTable,.mdl-data-table { max-width:none; }
table.dataTable thead th,table.dataTable tbody td { white-space:nowrap; }
table.dataTable tbody td.tc-wrap,table.dataTable tbody td:last-child,.tc-address-cell { white-space:normal; }
.dataTables_wrapper,.dataTables_scrollHead,.dataTables_scrollHeadInner,.dataTables_scrollBody { width:100%; max-width:100%; }
.dataTables_scrollHeadInner > table,.dataTables_scrollBody > table { width:100%; min-width:max-content; }
.tc-table-commandbar { width:100%; max-width:100%; scroll-snap-type:x proximity; }
.tc-table-commandbar > * { scroll-snap-align:start; }
.tc-dt-footer { width:100%; }
.dataTables_paginate { max-width:100%; overflow-x:auto; }

/* Mobile is the primary layout. */
@media (max-width:1199.98px) {
  :root { --tcx-sidebar:min(88vw,330px); }
  body.tc-app-body { padding-top:0; }
  .tc-app-stage { width:100%; margin-left:0; }
  .tc-sidebar {
    position:fixed; z-index:1045; inset:0 auto 0 0; width:min(88vw,330px);
    max-width:min(88vw,330px); height:calc(var(--tcm-vh) * 100); padding-top:var(--tcm-safe-top);
    transform:translate3d(-105%,0,0); transition:transform .24s ease;
  }
  body.tc-nav-open { overflow:hidden; }
  body.tc-nav-open .tc-sidebar { transform:translate3d(0,0,0); }
  body.tc-nav-open .tc-sidebar-scrim { position:fixed; z-index:1040; inset:0; display:block; border:0; background:rgba(2,12,22,.62); backdrop-filter:blur(3px); }
  .tc-nav-trigger,.tc-sidebar-close { display:inline-grid; place-items:center; }
  .tc-topbar { position:sticky; z-index:1025; top:0; padding-top:calc(8px + var(--tcm-safe-top)); }
  .tc-nav-scroll { overscroll-behavior:contain; }
}

@media (max-width:767.98px) {
  :root { --tcx-topbar:64px; --tcm-gutter:10px; }
  body { font-size:15px; }
  h1 { font-size:clamp(24px,8vw,31px); }
  h2 { font-size:clamp(21px,6.8vw,27px); }
  h3 { font-size:20px; }
  p,.alert,.dropdown-menu { font-size:13.5px; }

  .tc-topbar {
    min-height:calc(var(--tcx-topbar) + var(--tcm-safe-top)); padding:8px calc(var(--tcm-gutter) + var(--tcm-safe-right)) 8px calc(var(--tcm-gutter) + var(--tcm-safe-left));
    align-items:center; gap:8px;
  }
  .tc-topbar-left { min-width:0; flex:1 1 auto; gap:8px; }
  .tc-topbar-left > div { min-width:0; }
  .tc-topbar-kicker { display:none; }
  .tc-topbar-left strong { display:block; overflow:hidden; font-size:13px; text-overflow:ellipsis; white-space:nowrap; }
  .tc-topbar-actions { min-width:0; gap:5px; }
  .tc-topbar-button,.tc-topbar-profile { min-width:44px; width:44px; height:44px; padding:0; justify-content:center; }
  .tc-topbar-button span,.tc-topbar-profile > div { display:none; }
  .tc-topbar-profile > span { margin:0; }

  .tc-main-content { padding:var(--tcm-gutter) calc(var(--tcm-gutter) + var(--tcm-safe-right)) calc(18px + var(--tcm-safe-bottom)) calc(var(--tcm-gutter) + var(--tcm-safe-left)); overflow-x:hidden; }
  .tc-app-footer { min-height:auto; padding:11px calc(var(--tcm-gutter) + var(--tcm-safe-right)) calc(11px + var(--tcm-safe-bottom)) calc(var(--tcm-gutter) + var(--tcm-safe-left)); align-items:flex-start; flex-direction:column; gap:2px; font-size:10px; }
  .container,.container-fluid { width:100%; max-width:100%; padding-inline:0; }
  .row { max-width:100%; margin-right:0; margin-left:0; }
  .row > [class*="col-"] { padding-right:0; padding-left:0; }
  .row.g-1,.row.g-2,.row.g-3,.row.g-4,.row.g-5 { row-gap:10px; }

  .tc-page-head,.tc-legacy-head,.tc-command-hero,.tc-pack-hero {
    display:flex; width:100%; min-height:auto; margin:0 0 10px; padding:16px;
    align-items:stretch; flex-direction:column; gap:12px; border-radius:17px;
  }
  .tc-page-head::before { right:-20px; }
  .tc-page-head > div,.tc-legacy-head > div,.tc-pack-hero-main { width:100%; min-width:0; }
  .tc-page-head h1,.tc-legacy-title,.tc-pack-hero h1 { margin-top:2px; font-size:clamp(24px,8vw,31px); line-height:1.08; overflow-wrap:anywhere; }
  .tc-page-head p,.tc-pack-hero p { margin-bottom:0; font-size:12.5px; line-height:1.55; }
  .tc-page-head-status,.tc-production-head-state,.tc-pack-disposition { width:100%; min-width:0; }
  .tc-pack-actions,.tc-legacy-head .float-end,.tc-legacy-head .pull-right { display:flex; width:100%; margin:0; justify-content:flex-start; gap:7px; overflow-x:auto; flex-wrap:nowrap; }
  .tc-pack-actions .btn,.tc-legacy-head .btn { flex:0 0 auto; white-space:nowrap; }

  .card,.tc-panel,.accordion-item { width:100%; max-width:100%; margin-bottom:10px; border-radius:15px; }
  .card-header,.tc-panel-head { display:flex; min-height:54px; padding:12px 13px; align-items:flex-start; flex-direction:column; gap:7px; }
  .card-header > *,.tc-panel-head > * { max-width:100%; }
  .card-header h4,.card-header h5,.tc-panel-head h5 { font-size:16px; }
  .card-body,.modal-body,.accordion-body { padding:13px; }
  .card-footer,.modal-footer { padding:11px 13px; }

  form:not(.d-inline):not(.d-inline-block) { max-width:100%; }
  .tc-auto-form-grid,.tc-consumer-form,.tc-dispatch-edit-form,.tc-admin-form,.tc-pack-adjust-form,.tc-csv-upload-form,.tc-broadcast-form,.tc-label-form,.tc-station-entry-form {
    display:grid; grid-template-columns:minmax(0,1fr); gap:12px;
  }
  .tc-auto-form-grid > *,.tc-consumer-form > *,.tc-dispatch-edit-form > *,.tc-admin-form > *,.tc-pack-adjust-form > *,.tc-csv-upload-form > *,.tc-broadcast-form > *,.tc-label-form > *,.tc-station-entry-form > * { width:100%; min-width:0; grid-column:1; }
  .form-control,.form-select,.selectize-input,.select2-container--default .select2-selection--single,.select2-container--default .select2-selection--multiple { width:100%; min-height:48px; font-size:16px; }
  .select2-container,.selectize-control { width:100%; max-width:100%; }
  .input-group { width:100%; max-width:100%; flex-wrap:nowrap; }
  .input-group > .form-control,.input-group > .form-select { min-width:0; }
  .form-floating > label { max-width:calc(100% - 12px); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .form-check { min-width:0; }
  .form-check-label { overflow-wrap:anywhere; }
  .tc-choice-tile { width:100%; min-height:58px; }
  .tc-form-command,.tc-consumer-submit,.tc-dispatch-form-actions,.tc-dispatch-submit-bar,.tc-label-actions { width:100%; align-items:stretch; flex-direction:column; }
  .tc-form-command .btn,.tc-consumer-submit .btn,.tc-dispatch-form-actions .btn,.tc-dispatch-submit-bar .btn,.tc-label-actions .btn { width:100%; }

  .btn { min-height:44px; }
  .btn-group,.btn-group-vertical { max-width:100%; }
  .dropdown-menu { max-width:calc(100vw - 20px); }
  .nav-tabs,.nav-pills,.tc-date-shortcuts { max-width:100%; overflow-x:auto; flex-wrap:nowrap; white-space:nowrap; scrollbar-width:thin; }
  .nav-tabs .nav-link,.nav-pills .nav-link { flex:0 0 auto; }

  .modal { padding:0; }
  .modal-dialog,.tc-station-workspace .modal-dialog { width:100%; max-width:100%; min-height:calc(var(--tcm-vh) * 100); margin:0; }
  .modal-content { min-height:calc(var(--tcm-vh) * 100); border:0; border-radius:0; }
  .modal-header { padding:calc(13px + var(--tcm-safe-top)) 14px 13px; }
  .modal-footer { padding-bottom:calc(12px + var(--tcm-safe-bottom)); }

  .tc-metric-grid,.tc-live-summary,.tc-pack-kpis,.tc-station-consumption-page > .tc-pack-kpis { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
  .tc-metric,.tc-live-summary article,.tc-pack-kpis article,.tc-station-consumption-page > .tc-pack-kpis > article { min-height:88px; padding:13px; }
  .tc-metric strong,.tc-live-summary strong,.tc-pack-kpis strong { font-size:23px; }
  .tc-admin-action-grid,.tc-audit-grid,.tc-broadcast-layout,.tc-broadcast-side,.tc-pack-overview-grid,.tc-edit-dispatch-layout,.tc-dispatch-document-grid,.tc-dispatch-scan-layout,.tc-dispatch-scanner-body,.tc-label-studio { grid-template-columns:minmax(0,1fr); gap:10px; }
  .tc-dispatch-lock-card { position:static; }
  .tc-scanned-packs,.tc-quality-grid,.tc-spec-grid,.tc-measure-grid,.tc-check-grid,.tc-classification-grid,.tc-material-summary,.tc-lookup-capabilities,.tc-csv-wizard,.tc-broadcast-steps { grid-template-columns:minmax(0,1fr); }
  .tc-station-rail { grid-template-columns:repeat(8,minmax(150px,1fr)); }
  .tc-station-workspace .tc-station-filter-grid { grid-template-columns:minmax(0,1fr); }
  .tc-process-only-state { grid-template-columns:38px minmax(0,1fr); padding:14px; }

  .tc-table-commandbar { min-height:58px; padding:8px; align-items:flex-end; flex-direction:row; overflow-x:auto; }
  .tc-table-commandbar__filters { display:flex; min-width:max-content; flex-direction:row; }
  .tc-table-commandbar__filters > div { width:150px; min-width:150px; }
  .tc-table-commandbar > .tc-dt-toolbar { min-width:max-content; margin-left:0; }
  .tc-dt-toolbar { width:max-content; max-width:none; min-width:max-content; }
  .tc-dt-footer { padding:9px; align-items:flex-start; flex-direction:column; }
  table.table thead th,table.dataTable thead th { padding:11px 12px; font-size:10.5px; }
  table.table tbody td,table.dataTable tbody td { padding:11px 12px; font-size:12.5px; }

  /* Compact non-DataTables become labelled cards; large/interactive tables remain horizontally scrollable. */
  table.tc-mobile-card-table { display:block; width:100%; }
  table.tc-mobile-card-table thead { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }
  table.tc-mobile-card-table tbody { display:grid; width:100%; gap:9px; }
  table.tc-mobile-card-table tbody tr { display:block; overflow:hidden; width:100%; border:1px solid #dce7ed; border-radius:13px; background:#fff; box-shadow:0 6px 18px rgba(12,38,60,.06); }
  table.tc-mobile-card-table tbody td { display:grid; width:100%; min-height:42px; padding:9px 11px; grid-template-columns:minmax(105px,40%) minmax(0,60%); align-items:start; gap:10px; border-bottom:1px solid #e7eef2; white-space:normal; text-align:left; }
  table.tc-mobile-card-table tbody td:last-child { border-bottom:0; }
  table.tc-mobile-card-table tbody td::before { content:attr(data-label); color:#647b8f; font-size:9.5px; font-weight:800; letter-spacing:.055em; text-transform:uppercase; }
  table.tc-mobile-card-table tbody td.tc-table-actions { display:flex; justify-content:flex-end; }
  table.tc-mobile-card-table tbody td.tc-table-actions::before { margin-right:auto; }

  .tc-label-preview-stage { min-height:300px; padding:10px; }
  .tc-label-sheet { display:block; min-width:384px; }
  .tc-thermal-label { transform-origin:top left; }
  .ck.ck-editor,.ck-editor__editable,.tox-tinymce { max-width:100%; }
  .ck-toolbar { overflow-x:auto; flex-wrap:nowrap; }
}

@media (max-width:479.98px) {
  :root { --tcm-gutter:8px; }
  .tc-topbar-left strong { max-width:145px; }
  .tc-topbar-actions .tc-topbar-button:not(.tc-logout) { display:none; }
  .tc-page-head,.tc-legacy-head,.tc-command-hero,.tc-pack-hero { padding:14px; }
  .card-body,.modal-body,.accordion-body { padding:11px; }
  .tc-metric-grid,.tc-live-summary,.tc-pack-kpis,.tc-station-consumption-page > .tc-pack-kpis { grid-template-columns:minmax(0,1fr); }
  .tc-production-date-form { grid-template-columns:minmax(0,1fr); }
  .tc-label-mode { grid-template-columns:minmax(0,1fr); }
  .tc-label-sheet { min-width:384px; transform:scale(.76); transform-origin:top left; margin-bottom:-46px; }
  table.tc-mobile-card-table tbody td { grid-template-columns:minmax(90px,38%) minmax(0,62%); }
}

@media (min-width:768px) and (max-width:1199.98px) {
  :root { --tcm-gutter:16px; }
  .tc-main-content { padding:16px; }
  .tc-consumer-form,.tc-admin-form,.tc-broadcast-form,.tc-label-form { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .tc-metric-grid,.tc-live-summary,.tc-pack-kpis { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .tc-broadcast-layout,.tc-pack-overview-grid,.tc-label-studio { grid-template-columns:minmax(0,1fr); }
}

@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation-duration:.01ms; animation-iteration-count:1; transition-duration:.01ms; }
}

/* Stable register capacity: the Final Pack workspace keeps room for a full
   25-row page so filters with only a few matches do not collapse the layout. */
@media (min-width:768px) {
  .tc-fixed-25-rows .dataTables_scrollBody { min-height:1600px; background:linear-gradient(#fff,#fff) padding-box,repeating-linear-gradient(to bottom,transparent 0,transparent 63px,#edf2f5 64px); }
  .tc-fixed-25-rows .dataTables_empty { height:120px; }
}

@media print {
  @page { size:A4 landscape; margin:10mm; }
  html,body { width:auto; min-width:0; height:auto; overflow:visible; background:#fff; color:#102a3f; font:9pt Arial,sans-serif; }
  body::before,body::after { display:none; }
  .tc-sidebar,.tc-topbar,.tc-app-footer,.tc-sidebar-scrim,.tc-mobile-only,.dt-buttons,.dataTables_filter,.dataTables_length,.tc-table-commandbar,.tc-date-shortcuts,.tc-page-head .btn,.tc-pack-actions,.tc-print-hide,.no-print { display:none; }
  .tc-app-shell,.tc-app-stage,.tc-main-content,.tc-page,.content-wrapper,.container-xxl { display:block; width:100%; max-width:none; min-width:0; height:auto; min-height:0; margin:0; padding:0; overflow:visible; transform:none; }
  .row { display:flex; width:100%; margin:0; flex-wrap:wrap; }
  [class*="col-"] { min-width:0; }
  .card,.tc-panel,.tc-page-head,.tc-pack-hero { overflow:visible; border:1px solid #b9c7d2; border-radius:0; background:#fff; box-shadow:none; break-inside:avoid; }
  .tc-pack-hero *,.tc-pack-hero h1,.tc-pack-hero p,.tc-pack-meta span,.tc-pack-verdict span,.tc-pack-verdict strong,.tc-pack-verdict small { color:#102a3f; }
  .tc-pack-meta span,.tc-pack-verdict { border-color:#aebdca; background:#fff; box-shadow:none; }
  .tc-inprocess-record .card,.tc-inprocess-record .tc-panel { break-inside:auto; }
  .card-body,.tc-panel-body { padding:7mm; }
  .table-responsive,.card-datatable,.dataTables_wrapper,.dataTables_scroll,.dataTables_scrollHead,.dataTables_scrollHeadInner,.dataTables_scrollBody { display:block; width:100%; max-width:none; min-height:0; height:auto; overflow:visible; transform:none; }
  table,table.table,table.dataTable,.dataTables_scrollHeadInner>table,.dataTables_scrollBody>table { display:table; width:100%; min-width:0; border-collapse:collapse; table-layout:auto; }
  thead { display:table-header-group; }
  tbody { display:table-row-group; }
  tr { display:table-row; break-inside:avoid; }
  table.table th,table.table td,table.dataTable th,table.dataTable td { display:table-cell; width:auto; min-width:0; padding:4px 5px; border:1px solid #aebdca; color:#102a3f; background:#fff; font-size:7.5pt; line-height:1.25; white-space:normal; overflow-wrap:anywhere; text-align:left; }
  table.table thead th,table.dataTable thead th { color:#fff; background:#0b2c43; }
  table.tc-mobile-card-table thead { position:static; width:auto; height:auto; margin:0; clip:auto; overflow:visible; }
  table.tc-mobile-card-table tbody { display:table-row-group; }
  table.tc-mobile-card-table tbody tr { display:table-row; border:0; box-shadow:none; }
  table.tc-mobile-card-table tbody td::before { display:none; content:none; }
  .tc-print-document { display:block; }
}
