/* ThinkCharge canonical EV colour contract
   This is the final application-owned theme layer. It intentionally contains
   no priority-escalation declarations: later source order and app-scoped selectors make
   the palette predictable across modern and progressively upgraded views. */
:root {
  --tc-color-navy-950: #04121f;
  --tc-color-navy-900: #071c2d;
  --tc-color-navy-800: #0b2b42;
  --tc-color-cyan-600: #0088a3;
  --tc-color-cyan-500: #00a6c4;
  --tc-color-cyan-100: #e3f8fb;
  --tc-color-mint-600: #07966d;
  --tc-color-mint-500: #16b985;
  --tc-color-canvas: #eef4f7;
  --tc-color-surface: #ffffff;
  --tc-color-surface-soft: #f7fafc;
  --tc-color-line: #d8e4eb;
  --tc-color-ink: #13283c;
  --tc-color-muted: #647a8e;
  --tc-color-danger: #cf3f50;
  --tc-color-warning: #b9770e;
  --tc-color-shadow: 0 12px 32px rgba(7, 32, 53, .075);
}

body.tc-app-body {
  color: var(--tc-color-ink);
  background:
    radial-gradient(circle at 92% 0, rgba(0, 166, 196, .08), transparent 30rem),
    linear-gradient(145deg, #f7fafc, var(--tc-color-canvas) 58%, #f8fbfc);
}

body.tc-app-body .tc-sidebar {
  color: #b8cad7;
  border-right-color: rgba(69, 207, 225, .18);
  background: radial-gradient(circle at 0 0, rgba(0, 166, 196, .13), transparent 18rem), linear-gradient(180deg, var(--tc-color-navy-950), var(--tc-color-navy-900));
}
body.tc-app-body .tc-sidebar .menu-link { color: #a9bfce; }
body.tc-app-body .tc-sidebar .menu-link:hover { color: #f3fcff; background: rgba(0, 166, 196, .1); }
body.tc-app-body .tc-sidebar .menu-item.active > .menu-link,
body.tc-app-body .tc-sidebar .menu-item.open > .menu-link:not(.menu-sub .menu-link) {
  color: #f7fdff;
  border-color: rgba(59, 220, 237, .25);
  background: linear-gradient(100deg, rgba(0, 166, 196, .28), rgba(22, 185, 133, .09));
  box-shadow: inset 3px 0 #43d9e9, 0 0 20px rgba(0, 166, 196, .13);
}

body.tc-app-body .tc-topbar {
  color: var(--tc-color-ink);
  border-bottom-color: var(--tc-color-line);
  background: rgba(249, 252, 253, .94);
}
body.tc-app-body .tc-topbar-button,
body.tc-app-body .tc-topbar-profile { color: var(--tc-color-ink); border-color: var(--tc-color-line); background: #fff; }

body.tc-app-body .tc-page-head,
body.tc-app-body .tc-legacy-head {
  color: var(--tc-color-ink);
  border-color: rgba(216, 228, 235, .95);
  background: linear-gradient(120deg, #fff, #f6fbfc);
  box-shadow: var(--tc-color-shadow);
}
body.tc-app-body .tc-page-head h1,
body.tc-app-body .tc-page-head h2,
body.tc-app-body .tc-page-head h3,
body.tc-app-body .tc-legacy-head h1,
body.tc-app-body .tc-legacy-head h2,
body.tc-app-body .tc-legacy-title { color: var(--tc-color-ink); }
body.tc-app-body .tc-page-head p,
body.tc-app-body .tc-legacy-head p { color: var(--tc-color-muted); }
body.tc-app-body .tc-eyebrow { color: var(--tc-color-cyan-600); }

body.tc-app-body .card,
body.tc-app-body .tc-panel,
body.tc-app-body .accordion-item,
body.tc-app-body .modal-content {
  color: var(--tc-color-ink);
  border-color: var(--tc-color-line);
  background: rgba(255, 255, 255, .96);
  box-shadow: var(--tc-color-shadow);
}
body.tc-app-body .card-header,
body.tc-app-body .tc-panel-head {
  color: var(--tc-color-ink);
  border-bottom-color: #e3ebf0;
  background: linear-gradient(180deg, #fff, var(--tc-color-surface-soft));
}
body.tc-app-body .card-header h1,
body.tc-app-body .card-header h2,
body.tc-app-body .card-header h3,
body.tc-app-body .card-header h4,
body.tc-app-body .card-header h5,
body.tc-app-body .tc-panel-head h1,
body.tc-app-body .tc-panel-head h2,
body.tc-app-body .tc-panel-head h3,
body.tc-app-body .tc-panel-head h4,
body.tc-app-body .tc-panel-head h5 { color: var(--tc-color-ink); }

body.tc-app-body .form-control,
body.tc-app-body .form-select,
body.tc-app-body .selectize-input,
body.tc-app-body .select2-container--default .select2-selection--single,
body.tc-app-body .select2-container--default .select2-selection--multiple {
  color: var(--tc-color-ink);
  border-color: #c8d8e2;
  background-color: #fff;
}
body.tc-app-body .form-control:focus,
body.tc-app-body .form-select:focus,
body.tc-app-body .selectize-input.focus {
  border-color: var(--tc-color-cyan-500);
  box-shadow: 0 0 0 4px rgba(0, 166, 196, .12);
}

body.tc-app-body .btn-primary {
  color: #fff;
  border-color: var(--tc-color-cyan-600);
  background: linear-gradient(135deg, var(--tc-color-cyan-600), var(--tc-color-cyan-500));
  box-shadow: 0 8px 18px rgba(0, 136, 163, .2);
}
body.tc-app-body .btn-success { color: #fff; border-color: var(--tc-color-mint-600); background: var(--tc-color-mint-600); }
body.tc-app-body .btn-danger { color: #fff; border-color: var(--tc-color-danger); background: var(--tc-color-danger); }
body.tc-app-body .btn-label-primary,
body.tc-app-body .btn-label-info { color: #08778e; background: var(--tc-color-cyan-100); }

body.tc-app-body table.table thead th,
body.tc-app-body table.dataTable thead th,
body.tc-app-body .mdl-data-table thead th {
  color: #edf8fc;
  border-color: rgba(255, 255, 255, .08);
  background: var(--tc-color-navy-800);
}
body.tc-app-body table.table tbody td,
body.tc-app-body table.dataTable tbody td,
body.tc-app-body .mdl-data-table tbody td { color: #344b5f; border-bottom-color: #e5edf2; }
body.tc-app-body table.table tbody tr:nth-child(even),
body.tc-app-body table.dataTable tbody tr:nth-child(even) { background: #f8fbfc; }
body.tc-app-body table.table tbody tr:hover,
body.tc-app-body table.dataTable tbody tr:hover { background: #eaf8fa; }
body.tc-app-body .tc-dt-toolbar,
body.tc-app-body .tc-dt-footer,
body.tc-app-body .tc-table-commandbar { color: var(--tc-color-ink); border-color: var(--tc-color-line); background: #fbfdfe; }

body.tc-app-body .tc-command-hero,
body.tc-app-body .tc-pack-hero,
body.tc-app-body .tc-report-hero,
body.tc-app-body .tc-dispatch-hero {
  color: #eaf9fd;
  border-color: rgba(69, 213, 230, .2);
  background: radial-gradient(circle at 87% 0, rgba(22, 185, 133, .17), transparent 18rem), linear-gradient(120deg, var(--tc-color-navy-950), var(--tc-color-navy-800) 66%, #07546a);
}
body.tc-app-body .tc-command-hero h1,
body.tc-app-body .tc-command-hero h2,
body.tc-app-body .tc-pack-hero h1,
body.tc-app-body .tc-report-hero h1,
body.tc-app-body .tc-dispatch-hero h1 { color: #fff; }
body.tc-app-body .tc-command-hero p,
body.tc-app-body .tc-pack-hero p,
body.tc-app-body .tc-report-hero p,
body.tc-app-body .tc-dispatch-hero p { color: #afcad8; }
body.tc-app-body .tc-station-consumption-hero {
  min-height: 178px;
  border: 1px solid rgba(69, 213, 230, .2);
  background: radial-gradient(circle at 91% 22%, rgba(25, 205, 161, .19), transparent 15rem), linear-gradient(116deg, var(--tc-color-navy-950), #08384d 72%, #076c7e);
  box-shadow: 0 18px 40px rgba(5, 31, 49, .16);
}
body.tc-app-body .tc-station-consumption-hero .tc-command-kicker,
body.tc-app-body .tc-station-consumption-hero .tc-pack-tags span { color: #d8f7fb; -webkit-text-fill-color: #d8f7fb; }
body.tc-app-body .tc-station-consumption-hero p { color: #b8d1dc; -webkit-text-fill-color: #b8d1dc; }
body.tc-app-body .tc-station-pack-identity { display: flex; max-width: 720px; margin-top: .65rem; align-items: flex-end; gap: .7rem; }
body.tc-app-body .tc-station-pack-identity > div { min-width: 0; }
body.tc-app-body .tc-station-pack-identity small { display: block; margin-bottom: .22rem; color: #70dcea; -webkit-text-fill-color: #70dcea; font-size: .62rem; font-weight: 850; letter-spacing: .13em; text-transform: uppercase; }
body.tc-app-body .tc-station-consumption-hero h1.tc-station-pack-id {
  margin: 0;
  color: #fff;
  -webkit-text-fill-color: #fff;
  font-size: clamp(2rem, 3.25vw, 3rem);
  line-height: 1;
  text-shadow: 0 4px 20px rgba(0, 0, 0, .22);
  overflow-wrap: anywhere;
}
body.tc-app-body .tc-copy-pack-id {
  display: inline-flex;
  min-height: 32px;
  padding: .38rem .58rem;
  align-items: center;
  gap: .3rem;
  color: #c9f7fa;
  border: 1px solid rgba(148, 223, 232, .28);
  border-radius: 9px;
  background: rgba(4, 34, 50, .45);
  font-size: .66rem;
  font-weight: 800;
}
body.tc-app-body .tc-copy-pack-id:hover,
body.tc-app-body .tc-copy-pack-id.is-copied { color: #082f3d; background: #a9f2df; }
body.tc-app-body .tc-station-consumption-page > .tc-pack-kpis > article {
  border-top: 3px solid #77dce5;
  background: linear-gradient(145deg, #fff, #f3fafb);
}
body.tc-app-body .tc-station-consumption-page .tc-check-grid > div { min-height: 76px; padding: .75rem; border-radius: 12px; background: linear-gradient(145deg, #fff, #f7fbfc); }

body.tc-app-body #loaddynamic .daily-card,
body.tc-app-body .tc-metric,
body.tc-app-body .tc-pack-kpis > div { color: var(--tc-color-ink); border-color: var(--tc-color-line); background: linear-gradient(145deg, #fff, #f5fafb); }
body.tc-app-body #loaddynamic .daily-card .card-header { color: var(--tc-color-ink); background: transparent; }
body.tc-app-body #loaddynamic .daily-card .card-header h1,
body.tc-app-body #loaddynamic .daily-card .card-header h2,
body.tc-app-body #loaddynamic .daily-card .card-header h3,
body.tc-app-body #loaddynamic .daily-card .card-header h4,
body.tc-app-body #loaddynamic .daily-card .card-header h5 { color: var(--tc-color-ink); }
body.tc-app-body #loaddynamic .accordion-button { color: var(--tc-color-ink); background: #fff; }
body.tc-app-body #loaddynamic .accordion-button:not(.collapsed) { color: #08778e; background: #eaf8fa; }

body.tc-app-body .text-primary { color: var(--tc-color-cyan-600); }
body.tc-app-body .text-success { color: var(--tc-color-mint-600); }
body.tc-app-body .bg-primary { color: #fff; background-color: var(--tc-color-cyan-600); }
body.tc-app-body .bg-success { color: #fff; background-color: var(--tc-color-mint-600); }

@media (max-width: 767.98px) {
  body.tc-app-body .tc-page-head,
  body.tc-app-body .tc-legacy-head { border-radius: 16px; }
  body.tc-app-body .tc-command-hero,
  body.tc-app-body .tc-pack-hero,
  body.tc-app-body .tc-report-hero,
  body.tc-app-body .tc-dispatch-hero { border-radius: 16px; }
}

/* Dashboard fragments are returned over Ajax and still carry legacy Bootstrap
   colour utility classes. Background images and text-fill are separate paint
   properties, so this final layer can neutralize those vendor utilities without
   priority escalation or a flash of the old royal-blue/red palette. */
body.tc-app-body #loaddynamic .daily-card {
  overflow: hidden;
  border-left: 3px solid var(--tc-color-cyan-500);
  border-radius: 14px;
}
body.tc-app-body #loaddynamic .daily-card .card-header.bg-primary {
  color: #f4fcff;
  background-image: linear-gradient(120deg, var(--tc-color-navy-800), #07546a);
  -webkit-text-fill-color: #f4fcff;
}
body.tc-app-body #loaddynamic .daily-card .card-footer.bg-danger {
  color: #a23b47;
  border-top: 1px solid #e2e9ee;
  background-image: linear-gradient(#f3f7f9, #f3f7f9);
  -webkit-text-fill-color: #a23b47;
}
body.tc-app-body #loaddynamic .daily-card .card-footer.bg-danger * {
  color: #a23b47;
  -webkit-text-fill-color: #a23b47;
}
body.tc-app-body #loaddynamic .accordion-button.bg-primary,
body.tc-app-body #loaddynamic .accordion-button .card-header.bg-primary,
body.tc-app-body #loaddynamic > .card .card-header.bg-primary {
  color: #f1fbfe;
  background-image: linear-gradient(110deg, var(--tc-color-navy-800), #08778e);
  -webkit-text-fill-color: #f1fbfe;
}
body.tc-app-body #loaddynamic .accordion-button.bg-primary * {
  color: #f1fbfe;
  -webkit-text-fill-color: #f1fbfe;
}

/* Dashboard status tiles use application-owned semantic classes so Bootstrap
   cannot reintroduce the legacy royal-blue/red palette. */
body.tc-app-body #loaddynamic .tc-dashboard-accent {
  color: #f3fcff;
  border-color: rgba(82, 218, 232, .16);
  background: linear-gradient(122deg, var(--tc-color-navy-900), #07566b);
  -webkit-text-fill-color: #f3fcff;
}
body.tc-app-body #loaddynamic .tc-dashboard-accent * {
  color: #f3fcff;
  -webkit-text-fill-color: #f3fcff;
}
body.tc-app-body #loaddynamic .tc-dashboard-rework {
  color: #8d3a45;
  border-top: 1px solid #e6edf1;
  background: linear-gradient(90deg, #f8fafb, #f2f6f8);
  -webkit-text-fill-color: #8d3a45;
}
body.tc-app-body #loaddynamic .tc-dashboard-rework * {
  color: #8d3a45;
  -webkit-text-fill-color: #8d3a45;
}

/* Stage labels are intentionally light-surface components. They do not use
   Bootstrap text utilities, so the label remains legible even when a vendor
   colour utility or a cached legacy dashboard fragment is present. */
body.tc-app-body #loaddynamic .daily-card .tc-stage-card-label {
  min-height: 46px;
  margin: 0;
  padding: 13px 16px 9px 19px;
  color: #12364a;
  border-bottom: 1px solid #d8eaf0;
  background-color: #ecf8fa;
  background-image: linear-gradient(120deg, #e7f7f9, #f5fbfc);
  -webkit-text-fill-color: #12364a;
  font-size: 11px;
  font-weight: 850;
  letter-spacing: .055em;
  text-align: left;
  text-transform: uppercase;
}

body.tc-app-body #loaddynamic .daily-card:hover .tc-stage-card-label {
  color: #07566b;
  background-image: linear-gradient(120deg, #ddf5f7, #eefaf7);
  -webkit-text-fill-color: #07566b;
}

body.tc-app-body .tc-pack-remark-timeline { display: grid; padding: 0 14px 14px; gap: 9px; }
body.tc-app-body .tc-pack-remark-timeline article { display: grid; padding: 13px; border: 1px solid var(--tc-color-line); border-radius: 13px; background: #fbfdfe; grid-template-columns: max-content 1fr; gap: 12px; }
body.tc-app-body .tc-pack-remark-timeline p { margin: 0 0 4px; color: var(--tc-color-ink); white-space: pre-wrap; }
body.tc-app-body .tc-pack-remark-timeline small { color: var(--tc-color-muted); }
body.tc-app-body .tc-report-catalogue { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; }
body.tc-app-body .tc-report-catalogue > a { display: grid; min-height: 116px; padding: 15px; color: var(--tc-color-ink); border: 1px solid var(--tc-color-line); border-radius: 16px; background: linear-gradient(145deg,#fff,#f3fafb); box-shadow: var(--tc-color-shadow); grid-template-columns: 34px 1fr 20px; align-items: start; gap: 10px; transition: transform .18s ease,border-color .18s ease; }
body.tc-app-body .tc-report-catalogue > a:hover { color: var(--tc-color-ink); border-color: #84dce5; transform: translateY(-2px); }
body.tc-app-body .tc-report-catalogue > a > i:first-child { display: grid; width: 34px; height: 34px; color: #08778e; border-radius: 10px; background: #dff6f8; place-items: center; font-size: 19px; }
body.tc-app-body .tc-report-catalogue span { display: flex; flex-direction: column; gap: 4px; }
body.tc-app-body .tc-report-catalogue strong { font-size: 13px; }
body.tc-app-body .tc-report-catalogue small { color: var(--tc-color-muted); font-size: 10px; line-height: 1.45; }
@media (max-width: 991.98px) { body.tc-app-body .tc-report-catalogue { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 575.98px) { body.tc-app-body .tc-report-catalogue { grid-template-columns: 1fr; } }
body.tc-app-body .tc-iteration-explainer { display: grid; margin: 14px 0; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; }
body.tc-app-body .tc-iteration-explainer article { display: grid; padding: 14px; border: 1px solid var(--tc-color-line); border-radius: 14px; background: #fff; grid-template-columns: 34px 1fr; gap: 10px; }
body.tc-app-body .tc-iteration-explainer article > span { display: grid; width: 32px; height: 32px; color: #08778e; border-radius: 10px; background: #e2f7f8; font-weight: 850; place-items: center; }
body.tc-app-body .tc-iteration-explainer article div { display: flex; flex-direction: column; gap: 4px; }
body.tc-app-body .tc-iteration-explainer strong { color: var(--tc-color-ink); font-size: 12px; }
body.tc-app-body .tc-iteration-explainer small { color: var(--tc-color-muted); font-size: 10px; line-height: 1.45; }
@media (max-width: 767.98px) { body.tc-app-body .tc-iteration-explainer { grid-template-columns: 1fr; } }

body.tc-app-body .tc-lot-trace-hero {
  color: #eaf9fd;
  border: 1px solid rgba(72, 211, 227, .2);
  background: radial-gradient(circle at 88% 18%, rgba(41, 210, 155, .22), transparent 16rem), linear-gradient(120deg, var(--tc-color-navy-950), #083d53 72%, #08778e);
}
body.tc-app-body .tc-lot-trace-hero h1 { color: #fff; }
body.tc-app-body .tc-lot-trace-hero p { color: #b8d1dc; }
body.tc-app-body .tc-control-badge {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  padding: .65rem .85rem;
  color: #c7fff0;
  border: 1px solid rgba(112, 242, 199, .3);
  border-radius: 999px;
  background: rgba(4, 36, 53, .48);
  white-space: nowrap;
}
body.tc-app-body .tc-trace-wizard { padding: 1rem; }
body.tc-app-body .tc-trace-wizard {
  position: relative;
  overflow: visible;
  padding: 0;
}
body.tc-app-body .tc-trace-wizard__head {
  display: flex;
  min-height: 76px;
  padding: 1rem 1.1rem;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  border-bottom: 1px solid var(--tc-color-line);
  border-radius: 17px 17px 0 0;
  background: linear-gradient(120deg, #fbfeff, #eff9fa);
}
body.tc-app-body .tc-trace-wizard__head h5 { margin: .12rem 0 .2rem; color: var(--tc-color-ink); font-size: 1rem; }
body.tc-app-body .tc-trace-wizard__head p { max-width: 760px; margin: 0; color: var(--tc-color-muted); font-size: .74rem; line-height: 1.45; }
body.tc-app-body .tc-trace-wizard__status {
  display: inline-flex;
  min-width: max-content;
  padding: .48rem .68rem;
  align-items: center;
  gap: .38rem;
  color: #08778e;
  border: 1px solid #bce6eb;
  border-radius: 999px;
  background: #effbfc;
  font-size: .7rem;
  font-weight: 800;
}
body.tc-app-body .tc-trace-form {
  display: grid;
  padding: 1rem;
  grid-template-columns: minmax(260px, 1.25fr) minmax(320px, 1.55fr) minmax(190px, .7fr) auto;
  align-items: stretch;
  gap: .8rem;
}
body.tc-app-body .tc-trace-field {
  position: relative;
  min-width: 0;
  padding: .78rem;
  border: 1px solid #d7e5eb;
  border-radius: 14px;
  background: linear-gradient(145deg, #fff, #f7fbfc);
  box-shadow: 0 8px 22px rgba(8, 35, 56, .055);
}
body.tc-app-body .tc-trace-field__title {
  display: grid;
  min-height: 39px;
  margin-bottom: .55rem;
  grid-template-columns: 30px minmax(0, 1fr);
  align-items: center;
  gap: .55rem;
}
body.tc-app-body .tc-trace-field__title > span {
  display: grid;
  width: 30px;
  height: 30px;
  color: #fff;
  border-radius: 9px;
  background: linear-gradient(145deg, var(--tc-color-cyan-600), var(--tc-color-mint-600));
  box-shadow: 0 5px 12px rgba(0, 150, 175, .2);
  font-size: .72rem;
  font-weight: 850;
  place-items: center;
}
body.tc-app-body .tc-trace-field__title label,
body.tc-app-body .tc-trace-field__title small { display: block; margin: 0; }
body.tc-app-body .tc-trace-field__title label { color: var(--tc-color-ink); font-size: .76rem; font-weight: 800; }
body.tc-app-body .tc-trace-field__title small { margin-top: .08rem; color: var(--tc-color-muted); font-size: .62rem; line-height: 1.35; }
body.tc-app-body .tc-trace-form__actions {
  display: flex;
  min-width: 132px;
  align-items: stretch;
  justify-content: flex-end;
  flex-direction: column;
  gap: .45rem;
}
body.tc-app-body .tc-trace-form__actions .btn { display: inline-flex; min-height: 46px; align-items: center; justify-content: center; gap: .38rem; white-space: nowrap; }

/* Select2 emits a sibling container and retains its source select for form
   submission. Keep the source accessibly hidden and give the emitted control a
   page-owned geometry so global form themes cannot paint both controls. */
body.tc-app-body .tc-trace-form .select2-hidden-accessible {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  border: 0;
  white-space: nowrap;
}
body.tc-app-body .tc-trace-field > .select2-container { display: block; width: 100%; max-width: 100%; }
body.tc-app-body .tc-trace-form .select2-container .selection { display: block; width: 100%; }
body.tc-app-body .tc-trace-form .select2-container--default .select2-selection--single,
body.tc-app-body .tc-trace-form .select2-container--default .select2-selection--multiple {
  display: flex;
  width: 100%;
  min-height: 46px;
  padding: .4rem .7rem;
  align-items: center;
  color: var(--tc-color-ink);
  border: 1px solid #c8d8e2;
  border-radius: 10px;
  background: #fff;
  box-shadow: none;
}
body.tc-app-body .tc-trace-form .select2-container--default.select2-container--focus .select2-selection,
body.tc-app-body .tc-trace-form .select2-container--default.select2-container--open .select2-selection {
  border-color: var(--tc-color-cyan-500);
  box-shadow: 0 0 0 4px rgba(0, 166, 196, .1);
}
body.tc-app-body .tc-trace-form .select2-selection--single .select2-selection__rendered {
  width: calc(100% - 24px);
  padding: 0;
  color: var(--tc-color-ink);
  line-height: 1.35;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.tc-app-body .tc-trace-form .select2-selection--single .select2-selection__arrow { top: 50%; right: .5rem; transform: translateY(-50%); }
body.tc-app-body .tc-trace-form .select2-selection--multiple { max-height: 92px; align-items: flex-start; overflow-y: auto; }
body.tc-app-body .tc-trace-form .select2-selection--multiple .select2-selection__rendered {
  display: flex;
  width: 100%;
  margin: 0;
  padding: 0;
  flex-wrap: wrap;
  align-items: center;
  gap: .3rem;
}
body.tc-app-body .tc-trace-form .select2-selection--multiple .select2-selection__choice {
  margin: 0;
  padding: .27rem .48rem .27rem 1.35rem;
  color: #075d6c;
  border: 1px solid #b8e5e9;
  border-radius: 8px;
  background: #eaf8fa;
  font-size: .68rem;
}
body.tc-app-body .tc-trace-form .select2-selection--multiple .select2-selection__choice__remove { top: .22rem; left: .35rem; color: #5b7e87; }
body.tc-app-body .tc-trace-form .select2-search--inline .select2-search__field { min-width: 160px; min-height: 30px; margin: 0; }
body.tc-app-body #material-lot-filter-card > .select2-container { z-index: 1200; }
body.tc-app-body #material-lot-filter-card .select2-dropdown { border-color: #bcd8e2; border-radius: 10px; box-shadow: 0 16px 36px rgba(5, 31, 49, .16); }
body.tc-app-body #material-lot-filter-card .select2-results__option { padding: .55rem .7rem; color: #27475b; font-size: .72rem; line-height: 1.4; }

body.tc-app-body .tc-trace-onboarding {
  display: grid;
  min-height: 250px;
  margin-top: 1rem;
  padding: 1.2rem;
  grid-template-columns: minmax(250px, .8fr) minmax(0, 1.7fr);
  align-items: center;
  gap: 1rem;
  border: 1px solid var(--tc-color-line);
  border-radius: 17px;
  background: radial-gradient(circle at 92% 5%, rgba(0, 177, 199, .1), transparent 18rem), linear-gradient(145deg, #fff, #f4fafb);
  box-shadow: var(--tc-color-shadow);
}
body.tc-app-body .tc-trace-onboarding__intro { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: .8rem; }
body.tc-app-body .tc-trace-onboarding__intro > i { display: grid; width: 48px; height: 48px; color: #08778e; border-radius: 14px; background: #dff6f8; font-size: 1.5rem; place-items: center; }
body.tc-app-body .tc-trace-onboarding__intro h5 { margin: .15rem 0 .3rem; color: var(--tc-color-ink); }
body.tc-app-body .tc-trace-onboarding__intro p { margin: 0; color: var(--tc-color-muted); font-size: .72rem; line-height: 1.5; }
body.tc-app-body .tc-trace-onboarding__steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .7rem; }
body.tc-app-body .tc-trace-onboarding__steps article { display: grid; min-height: 135px; padding: .85rem; grid-template-columns: 1fr auto; align-content: start; gap: .28rem; border: 1px solid #dce8ed; border-radius: 14px; background: rgba(255,255,255,.9); }
body.tc-app-body .tc-trace-onboarding__steps article > span { color: #87a1af; font-size: .62rem; font-weight: 850; letter-spacing: .1em; }
body.tc-app-body .tc-trace-onboarding__steps article > i { color: #0c98a9; font-size: 1.25rem; }
body.tc-app-body .tc-trace-onboarding__steps strong,
body.tc-app-body .tc-trace-onboarding__steps small { grid-column: 1 / -1; }
body.tc-app-body .tc-trace-onboarding__steps strong { margin-top: .3rem; color: var(--tc-color-ink); font-size: .76rem; }
body.tc-app-body .tc-trace-onboarding__steps small { color: var(--tc-color-muted); font-size: .65rem; line-height: 1.45; }
body.tc-app-body .tc-trace-table-wrap { min-height: 148px; }
body.tc-app-body .tc-trace-zero { display: flex; min-height: 116px; padding: 1rem; align-items: center; justify-content: center; gap: .7rem; color: var(--tc-color-muted); text-align: left; }
body.tc-app-body .tc-trace-zero > i { color: #8ca4b1; font-size: 1.65rem; }
body.tc-app-body .tc-trace-zero strong,
body.tc-app-body .tc-trace-zero span { display: block; }
body.tc-app-body .tc-trace-zero strong { color: var(--tc-color-ink); font-size: .78rem; }
body.tc-app-body .tc-trace-zero span { margin-top: .15rem; font-size: .68rem; }
body.tc-app-body .tc-trace-steps {
  display: grid;
  grid-template-columns: minmax(250px, 1.7fr) minmax(260px, 1.7fr) minmax(190px, .8fr) auto;
  gap: .9rem;
  align-items: end;
}
body.tc-app-body .tc-trace-steps > div {
  position: relative;
  padding: .75rem .8rem .8rem 3.15rem;
  border: 1px solid var(--tc-color-line);
  border-radius: 14px;
  background: linear-gradient(145deg, #fff, #f7fbfc);
  box-shadow: 0 8px 24px rgba(8, 35, 56, .06);
}
body.tc-app-body .tc-trace-steps > div > span {
  position: absolute;
  top: .8rem;
  left: .75rem;
  display: grid;
  width: 1.8rem;
  height: 1.8rem;
  place-items: center;
  color: #fff;
  border-radius: 9px;
  background: linear-gradient(145deg, var(--tc-color-cyan-600), var(--tc-color-mint-600));
  box-shadow: 0 5px 12px rgba(0, 150, 175, .22);
}
body.tc-app-body .tc-trace-steps label {
  display: block;
  margin-bottom: .35rem;
  color: var(--tc-color-ink);
  font-weight: 700;
}
body.tc-app-body .tc-trace-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .9rem;
  margin: 1rem 0;
}
body.tc-app-body .tc-trace-kpis article {
  position: relative;
  overflow: hidden;
  padding: 1rem;
  border: 1px solid var(--tc-color-line);
  border-radius: 15px;
  background: linear-gradient(145deg, #fff, #f3fafb);
  box-shadow: 0 12px 32px rgba(9, 42, 63, .08);
}
body.tc-app-body .tc-trace-kpis article::after {
  content: '';
  position: absolute;
  right: -24px;
  bottom: -28px;
  width: 80px;
  height: 80px;
  border-radius: 50%;
  background: rgba(23, 190, 169, .09);
}
body.tc-app-body .tc-trace-kpis span,
body.tc-app-body .tc-trace-kpis small { display: block; color: var(--tc-color-muted); }
body.tc-app-body .tc-trace-kpis strong { display: block; margin: .2rem 0; color: var(--tc-color-ink); font-size: 1.4rem; }
body.tc-app-body .tc-material-type.is-trace { color: #08778e; background: #e8f8fa; }

/* Compact Final Pack command bar: primary date controls, advanced popover and
   DataTables actions remain in one physical row at desktop widths. */
body.tc-app-body .tc-finalpack-register .tc-table-commandbar {
  min-height: 54px;
  padding: .45rem .55rem;
  align-items: flex-end;
  overflow: visible;
}
body.tc-app-body .tc-finalpack-register .tc-table-commandbar__filters { align-items: flex-end; }
body.tc-app-body .tc-finalpack-register .tc-finalpack-filter-field { width: 132px; min-width: 132px; }
body.tc-app-body .tc-finalpack-register .tc-finalpack-range-field { width: 122px; min-width: 122px; }
body.tc-app-body .tc-finalpack-register .tc-finalpack-filter-field .form-control,
body.tc-app-body .tc-finalpack-register .tc-finalpack-filter-field .form-select { height: 34px; min-height: 34px; padding: .3rem .5rem; }
body.tc-app-body .tc-table-commandbar__datatable { min-width: 0; margin-left: auto; }
body.tc-app-body .tc-finalpack-register .tc-table-commandbar__datatable .tc-dt-toolbar {
  width: auto;
  min-width: max-content;
  min-height: 36px;
  padding: 0;
  overflow: visible;
  border: 0;
  background: transparent;
}
body.tc-app-body .tc-filter-popover { position: relative; flex: 0 0 auto; }
body.tc-app-body .tc-filter-popover summary {
  display: flex;
  min-height: 34px;
  padding: .38rem .62rem;
  align-items: center;
  color: var(--tc-color-ink);
  border: 1px solid #c8d8e2;
  border-radius: 9px;
  background: #fff;
  cursor: pointer;
  list-style: none;
  white-space: nowrap;
}
body.tc-app-body .tc-filter-popover summary::-webkit-details-marker { display: none; }
body.tc-app-body .tc-filter-popover__panel {
  position: absolute;
  z-index: 1100;
  top: calc(100% + .45rem);
  left: 0;
  display: grid;
  width: min(620px, calc(100vw - 2rem));
  padding: .8rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem;
  border: 1px solid var(--tc-color-line);
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 18px 48px rgba(5, 31, 49, .18);
}
body.tc-app-body .tc-filter-popover__panel label { display: block; margin-bottom: .25rem; color: var(--tc-color-muted); font-size: .68rem; font-weight: 750; text-transform: uppercase; }
body.tc-app-body .tc-cell-count { display: inline-flex; min-width: 58px; padding: .35rem .48rem; align-items: baseline; justify-content: center; gap: .25rem; color: #08778e; border: 1px solid #bce7ed; border-radius: 9px; background: #effbfc; }
body.tc-app-body .tc-cell-count strong { font-size: .95rem; }
body.tc-app-body .tc-cell-count span { font-size: .66rem; font-weight: 700; text-transform: uppercase; }

/* Unified asynchronous state for long queries and server-side tables. */
body.tc-app-body .tc-async-host { position: relative; }
body.tc-app-body .tc-async-loader {
  position: relative;
  display: none;
  overflow: hidden;
  padding: .85rem;
  color: var(--tc-color-ink);
  border-bottom: 1px solid var(--tc-color-line);
  background: rgba(248, 252, 253, .97);
}
body.tc-app-body .tc-async-loader.is-active { display: block; }
body.tc-app-body .tc-async-loader__progress { position: absolute; top: 0; right: 0; left: 0; height: 3px; overflow: hidden; background: #dcebed; }
body.tc-app-body .tc-async-loader__progress span { display: block; width: 38%; height: 100%; background: linear-gradient(90deg, var(--tc-color-cyan-600), var(--tc-color-mint-500)); animation: tc-progress-scan 1.15s ease-in-out infinite; }
body.tc-app-body .tc-async-loader__message { display: flex; margin-bottom: .7rem; align-items: center; gap: .45rem; color: #335064; font-size: .78rem; font-weight: 750; }
body.tc-app-body .tc-async-loader.is-error { color: var(--tc-color-danger); background: #fff5f6; }
body.tc-app-body .tc-async-loader.is-error .tc-async-loader__message { color: var(--tc-color-danger); }
body.tc-app-body .tc-table-shimmer { display: grid; gap: .38rem; }
body.tc-app-body .tc-table-shimmer span { height: 34px; border-radius: 7px; background: linear-gradient(90deg, #e8eff2 20%, #f8fbfc 42%, #e8eff2 64%); background-size: 240% 100%; animation: tc-shimmer-row 1.25s ease infinite; }
body.tc-app-body .tc-trace-loader { margin-top: .8rem; border: 1px solid var(--tc-color-line); border-radius: 13px; }
body.tc-app-body .tc-trace-kpis { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }
@keyframes tc-progress-scan { 0% { transform: translateX(-110%); } 100% { transform: translateX(310%); } }
@keyframes tc-shimmer-row { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } }

@media (max-width: 1199.98px) {
  body.tc-app-body .tc-trace-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.tc-app-body .tc-trace-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.tc-app-body .tc-trace-form__actions { min-width: 0; flex-direction: row; justify-content: flex-start; }
  body.tc-app-body .tc-trace-form__actions .btn { min-width: 132px; }
  body.tc-app-body .tc-trace-onboarding { grid-template-columns: 1fr; }
  body.tc-app-body .tc-finalpack-register .tc-table-commandbar { overflow-x: auto; overflow-y: visible; }
}
@media (max-width: 767.98px) {
  body.tc-app-body .tc-trace-steps,
  body.tc-app-body .tc-trace-kpis { grid-template-columns: 1fr; }
  body.tc-app-body .tc-trace-wizard__head { align-items: flex-start; flex-direction: column; }
  body.tc-app-body .tc-trace-wizard__status { min-width: 0; }
  body.tc-app-body .tc-trace-form { grid-template-columns: 1fr; }
  body.tc-app-body .tc-trace-form__actions { flex-wrap: wrap; }
  body.tc-app-body .tc-trace-form__actions .btn { flex: 1 1 140px; }
  body.tc-app-body .tc-trace-onboarding__steps { grid-template-columns: 1fr; }
  body.tc-app-body .tc-trace-onboarding__steps article { min-height: auto; }
  body.tc-app-body .tc-station-pack-identity { align-items: flex-start; flex-direction: column; }
  body.tc-app-body .tc-control-badge { white-space: normal; }
  body.tc-app-body .tc-finalpack-register .tc-table-commandbar { align-items: flex-end; overflow-x: auto; }
  body.tc-app-body .tc-filter-popover__panel { position: fixed; top: 6rem; right: 1rem; left: 1rem; width: auto; grid-template-columns: 1fr; }
}
/* Standard Quality Reports and Pack Lifecycle */
.tc-quality-report-hero,.tc-lifecycle-hero{background:linear-gradient(125deg,#071b2e 0%,#0b4050 66%,#078b95 100%);color:#fff;border:0;overflow:hidden}
.tc-quality-report-hero h1,.tc-quality-report-hero p,.tc-lifecycle-hero h1,.tc-lifecycle-hero p{color:#fff}
.tc-report-catalogue{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}
.tc-report-card{min-height:118px;padding:16px;border:1px solid #d8e5eb;border-radius:16px;background:#fff;color:#142538;display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:start;box-shadow:0 10px 25px rgba(22,55,72,.06);transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.tc-report-card:hover,.tc-report-card.is-active{transform:translateY(-2px);border-color:#08a7b5;box-shadow:0 14px 30px rgba(5,129,143,.14);color:#0b5362}
.tc-report-card>i:first-child{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:#e8f8fa;color:#078a99;font-size:21px}.tc-report-card span{min-width:0}.tc-report-card strong,.tc-report-card small{display:block}.tc-report-card small{margin-top:5px;color:#65788a;line-height:1.35}
.tc-quality-report-filters{display:grid;grid-template-columns:150px 150px 180px minmax(240px,1fr) auto;gap:12px;align-items:end}.tc-quality-report-filters label,.tc-lifecycle-search label{display:block;font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#52697b;margin-bottom:5px}.tc-quality-report-actions{display:flex;gap:7px}
.tc-quality-report-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:18px 0}.tc-quality-report-kpis article{padding:14px 16px;border:1px solid #dce8ed;border-radius:14px;background:linear-gradient(145deg,#fff,#f3fafb)}.tc-quality-report-kpis span{display:block;color:#617687;font-size:11px;text-transform:uppercase;font-weight:800}.tc-quality-report-kpis strong{display:block;color:#10263a;font-size:25px;margin-top:5px}.tc-quality-report-table-wrap{min-height:430px;border:1px solid #dce7ec;border-radius:14px;overflow:hidden}.tc-quality-report-empty{min-height:320px}
.tc-lifecycle-search{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end}.tc-lifecycle-search .tc-search{min-height:48px}.tc-lifecycle-summary{display:grid;grid-template-columns:minmax(280px,2fr) repeat(7,minmax(120px,1fr));gap:10px;margin:16px 0}.tc-lifecycle-summary article{padding:14px;border:1px solid #d9e6eb;border-radius:15px;background:#fff;min-width:0}.tc-lifecycle-summary article>span{display:block;color:#607587;font-size:10px;font-weight:800;text-transform:uppercase}.tc-lifecycle-summary article>strong{display:block;font-size:21px;color:#0c2639;margin-top:6px;overflow-wrap:anywhere}.tc-lifecycle-summary .tc-lifecycle-identity{background:linear-gradient(135deg,#081c30,#0b5964);color:#fff;border:0}.tc-lifecycle-identity h2{color:#fff;font-size:30px;margin:5px 0}.tc-lifecycle-identity div{display:flex;flex-wrap:wrap;gap:7px}.tc-lifecycle-identity div span{border:1px solid rgba(255,255,255,.2);border-radius:999px;padding:4px 9px;font-size:11px}
.tc-lifecycle-timeline{display:flex;overflow-x:auto;gap:0;padding:18px 8px 25px}.tc-lifecycle-timeline article{position:relative;flex:0 0 210px;padding:0 18px}.tc-lifecycle-timeline article:after{content:"";position:absolute;top:14px;left:35px;right:-2px;height:2px;background:#c9dfe5;z-index:0}.tc-lifecycle-timeline article:last-child:after{display:none}.tc-lifecycle-timeline article>i{position:relative;z-index:1;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#e5f9f6;color:#079579}.tc-lifecycle-timeline article>div{margin-top:10px}.tc-lifecycle-timeline span,.tc-lifecycle-timeline strong,.tc-lifecycle-timeline small{display:block}.tc-lifecycle-timeline span{font-size:10px;color:#6f8292}.tc-lifecycle-timeline strong{font-size:13px;margin:4px 0;color:#10273a}.tc-lifecycle-timeline small{font-size:11px;color:#5d7182}
.tc-lifecycle-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:16px 0}.tc-lifecycle-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:15px;margin:0}.tc-lifecycle-details div{border:1px solid #e0e9ed;border-radius:12px;padding:12px}.tc-lifecycle-details dt{font-size:10px;text-transform:uppercase;color:#698090}.tc-lifecycle-details dd{font-weight:800;color:#10283a;margin:4px 0 0;overflow-wrap:anywhere}.tc-compact-list article{display:grid;grid-template-columns:170px 1fr auto;gap:10px;padding:12px 16px;border-top:1px solid #e4ecef}.tc-compact-list article span{color:#465e70}.tc-compact-list article small{color:#748696}.tc-lifecycle-onboarding{min-height:340px;display:flex;align-items:center;justify-content:center;gap:18px;text-align:left}.tc-lifecycle-onboarding>i{font-size:60px;color:#0aa2af}.tc-lifecycle-onboarding h5{font-size:23px;margin:3px 0}.tc-lifecycle-onboarding p{max-width:680px;color:#627889}
@media(max-width:1199.98px){.tc-report-catalogue{grid-template-columns:repeat(2,minmax(0,1fr))}.tc-quality-report-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.tc-quality-report-search{grid-column:span 2}.tc-lifecycle-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.tc-lifecycle-summary .tc-lifecycle-identity{grid-column:span 4}}
@media(max-width:767.98px){.tc-report-catalogue,.tc-quality-report-kpis,.tc-lifecycle-grid,.tc-lifecycle-details{grid-template-columns:1fr}.tc-quality-report-filters,.tc-lifecycle-search{grid-template-columns:1fr}.tc-quality-report-search{grid-column:auto}.tc-quality-report-actions{display:grid;grid-template-columns:1fr 1fr}.tc-lifecycle-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.tc-lifecycle-summary .tc-lifecycle-identity{grid-column:span 2}.tc-compact-list article{grid-template-columns:1fr}.tc-quality-report-table-wrap{min-height:0}.tc-quality-report-table-wrap table.tc-mobile-card-table tbody td{white-space:normal}}

/* SEP02 accessibility and enterprise component contract. */
body.tc-app-body #loaddynamic .daily-card .tc-stage-card-label,
body.tc-app-body #loaddynamic .daily-card:hover .tc-stage-card-label {
  color: #0c3448;
  background-color: #e7f7f9;
  background-image: linear-gradient(120deg,#dcf3f6,#f5fbfc);
  -webkit-text-fill-color: #0c3448;
  text-shadow: none;
}
body.tc-app-body #loaddynamic .daily-card .card-body,
body.tc-app-body #loaddynamic .daily-card .card-body h1 { color:#0a1b31; -webkit-text-fill-color:#0a1b31; }

body.tc-app-body .dataTables_wrapper .tc-table-commandbar,
body.tc-app-body .dataTables_wrapper .tc-dt-toolbar {
  display:flex;
  min-height:52px;
  padding:.55rem .7rem;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:.55rem;
  border-bottom:1px solid #dce7ec;
  background:linear-gradient(180deg,#fbfeff,#f3f8fa);
}
body.tc-app-body .dataTables_wrapper .dataTables_length,
body.tc-app-body .dataTables_wrapper .dataTables_filter,
body.tc-app-body .dataTables_wrapper .dt-buttons { margin:0; }
body.tc-app-body .dataTables_wrapper .dataTables_filter label,
body.tc-app-body .dataTables_wrapper .dataTables_length label { display:flex;align-items:center;gap:.4rem;color:#526b7d;font-size:.69rem;font-weight:750; }
body.tc-app-body .dataTables_wrapper .dataTables_filter input,
body.tc-app-body .dataTables_wrapper .dataTables_length select { min-height:36px;border:1px solid #cbdbe3;border-radius:9px;background:#fff;color:#18374b; }
body.tc-app-body .dataTables_wrapper .dt-button { min-height:36px;margin:0 .22rem 0 0;padding:.45rem .7rem;border:1px solid #c7dbe3;border-radius:9px;background:#fff;color:#174054;font-size:.69rem;font-weight:800;box-shadow:none; }
body.tc-app-body .dataTables_wrapper .dt-button:hover { border-color:#69cdd7;background:#eaf9fa;color:#075d6c; }

body.tc-app-body .tc-trace-form .select2-container { position:relative;z-index:3; }
body.tc-app-body .select2-container--open { z-index:3000; }
body.tc-app-body .select2-dropdown.tc-trace-dropdown { overflow:hidden;border:1px solid #acd5dd;border-radius:13px;background:#fff;box-shadow:0 18px 44px rgba(5,31,49,.2); }
body.tc-app-body .tc-trace-option { display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.25rem .7rem;padding:.15rem; }
body.tc-app-body .tc-trace-option strong { color:#12374a;font-size:.76rem;overflow-wrap:anywhere; }
body.tc-app-body .tc-trace-option small { grid-column:1/-1;color:#68808f;font-size:.65rem;line-height:1.35; }
body.tc-app-body .tc-trace-option em { color:#078599;font-size:.66rem;font-style:normal;font-weight:800;white-space:nowrap; }
body.tc-app-body .select2-results__option--highlighted .tc-trace-option strong,
body.tc-app-body .select2-results__option--highlighted .tc-trace-option small,
body.tc-app-body .select2-results__option--highlighted .tc-trace-option em { color:#fff; }

body.tc-app-body .tc-journey-overview { display:grid;margin:1rem 0;grid-template-columns:minmax(300px,1.2fr) minmax(0,1.8fr);gap:.8rem; }
body.tc-app-body .tc-journey-identity { padding:1.15rem;color:#dff9fc;border-radius:18px;background:radial-gradient(circle at 90% 10%,rgba(43,211,156,.23),transparent 11rem),linear-gradient(125deg,#071a2c,#075d6c);box-shadow:0 16px 34px rgba(6,34,50,.16); }
body.tc-app-body .tc-journey-title { display:flex;align-items:center;justify-content:space-between;gap:.8rem; }
body.tc-app-body .tc-journey-title h2 { margin:.35rem 0;color:#fff;font-size:2rem;letter-spacing:.02em; }
body.tc-app-body .tc-journey-identity p { margin:.2rem 0 .8rem;color:#b9d9e0; }
body.tc-app-body .tc-journey-tags { display:flex;flex-wrap:wrap;gap:.4rem; }
body.tc-app-body .tc-journey-tags span { padding:.34rem .55rem;border:1px solid rgba(184,244,241,.25);border-radius:999px;background:rgba(4,38,51,.36);font-size:.66rem;font-weight:750; }
body.tc-app-body .tc-journey-kpis { display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.65rem; }
body.tc-app-body .tc-journey-kpis article { display:flex;min-width:0;padding:.85rem;justify-content:center;flex-direction:column;border:1px solid #d8e7eb;border-radius:15px;background:linear-gradient(145deg,#fff,#f3fafb);box-shadow:0 9px 22px rgba(9,47,64,.06); }
body.tc-app-body .tc-journey-kpis span { color:#617888;font-size:.62rem;font-weight:800;text-transform:uppercase; }
body.tc-app-body .tc-journey-kpis strong { margin-top:.35rem;color:#0b2638;font-size:1.55rem; }
body.tc-app-body .tc-journey-cycles { overflow:visible; }
body.tc-app-body .tc-journey-cycle { margin:0 1rem 1rem;border:1px solid #d8e6eb;border-radius:16px;background:#fff;box-shadow:0 10px 25px rgba(11,49,65,.055); }
body.tc-app-body .tc-journey-cycle>header { display:flex;padding:.9rem 1rem;align-items:center;justify-content:space-between;gap:1rem;border-bottom:1px solid #e0eaee;background:linear-gradient(120deg,#f7fcfd,#eef8f9); }
body.tc-app-body .tc-journey-cycle>header span,body.tc-app-body .tc-journey-cycle>header small { color:#61798a;font-size:.67rem; }
body.tc-app-body .tc-journey-cycle>header h4 { margin:.14rem 0;color:#102b3d;font-size:1rem; }
body.tc-app-body .tc-route-badge { padding:.4rem .65rem;color:#086b79;border:1px solid #b8e2e7;border-radius:999px;background:#eaf9fa;font-weight:850;text-transform:uppercase; }
body.tc-app-body .tc-journey-stage-line { display:grid;padding:.85rem;grid-template-columns:repeat(10,minmax(82px,1fr));gap:.45rem;overflow-x:auto; }
body.tc-app-body .tc-journey-stage-line>div { display:grid;min-height:82px;padding:.55rem;align-content:center;justify-items:center;gap:.2rem;border:1px solid #d9e6ea;border-radius:11px;background:#f8fbfc;text-align:center; }
body.tc-app-body .tc-journey-stage-line i { color:#8aa0ad;font-size:1.15rem; }
body.tc-app-body .tc-journey-stage-line span { color:#28485a;font-size:.62rem;font-weight:850; }
body.tc-app-body .tc-journey-stage-line small { color:#7a8e9a;font-size:.57rem; }
body.tc-app-body .tc-journey-stage-line .is-complete { border-color:#bde7db;background:#effaf7; } body.tc-app-body .tc-journey-stage-line .is-complete i { color:#0b9b76; }
body.tc-app-body .tc-journey-stage-line .is-bypassed { border-style:dashed;background:#f2f4f5; } body.tc-app-body .tc-journey-stage-line .is-bypassed i { color:#7d8b92; }
body.tc-app-body .tc-journey-cycle-grid { display:grid;padding:0 .85rem .85rem;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem; }
body.tc-app-body .tc-journey-cycle-grid>section { padding:.75rem;border:1px solid #e0e9ed;border-radius:12px;background:#fbfdfe; }
body.tc-app-body .tc-journey-cycle-grid dl { display:grid;margin:.5rem 0 0;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem; }
body.tc-app-body .tc-journey-cycle-grid dt { color:#718795;font-size:.57rem;text-transform:uppercase; } body.tc-app-body .tc-journey-cycle-grid dd { margin:.1rem 0 0;color:#16364a;font-size:.68rem;font-weight:750;overflow-wrap:anywhere; }
body.tc-app-body .tc-journey-events { margin:0 .85rem .85rem;border:1px solid #dce8ec;border-radius:11px;background:#f8fbfc; }
body.tc-app-body .tc-journey-events summary { padding:.65rem .75rem;color:#165066;font-size:.68rem;font-weight:800;cursor:pointer; }
body.tc-app-body .tc-journey-events article { display:grid;padding:.6rem .75rem;grid-template-columns:150px 200px 1fr;gap:.6rem;border-top:1px solid #e2ecef;font-size:.66rem; }
body.tc-app-body .tc-journey-events span,body.tc-app-body .tc-journey-events small { color:#637b8a; }

@media(max-width:1199.98px){body.tc-app-body .tc-journey-overview{grid-template-columns:1fr}body.tc-app-body .tc-journey-cycle-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:767.98px){body.tc-app-body .tc-journey-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}body.tc-app-body .tc-journey-cycle-grid{grid-template-columns:1fr}body.tc-app-body .tc-journey-events article{grid-template-columns:1fr}.tc-quality-report-actions{grid-template-columns:1fr}}

body.tc-app-body .tc-quality-exportbar,
body.tc-app-body .tc-quality-pdf-form{display:flex;align-items:center;flex-wrap:wrap;gap:.65rem}
body.tc-app-body .tc-quality-exportbar{margin-top:.85rem;padding:.7rem;justify-content:space-between;border:1px solid #d8e6eb;border-radius:14px;background:linear-gradient(180deg,#fbfeff,#f3f8fa)}
body.tc-app-body .tc-quality-pdf-form label{color:#526b7d;font-size:.66rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
body.tc-app-body .tc-quality-pdf-form .form-select{min-width:230px}
body.tc-app-body .tc-server-pagination{padding:1rem;border-top:1px solid #dce7ec}
body.tc-app-body .tc-journey-materials{margin:.2rem .85rem .85rem;overflow:hidden;border:1px solid #dce8ec;border-radius:12px;background:#fff}
body.tc-app-body .tc-journey-subhead{display:flex;padding:.75rem;align-items:center;justify-content:space-between;gap:.75rem;border-bottom:1px solid #e3ecef}
body.tc-app-body .tc-journey-subhead h5{margin:.15rem 0 0;color:#102b3d}
body.tc-app-body .tc-journey-evidence-band{display:grid;margin:0 .85rem .85rem;grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem}
body.tc-app-body .tc-journey-evidence-band article{padding:.75rem;border:1px solid #dce8ec;border-radius:12px;background:#f8fbfc}
body.tc-app-body .tc-journey-evidence-band article.is-scrap{border-color:#efb7bc;background:#fff3f4}body.tc-app-body .tc-journey-evidence-band article.is-quarantine{border-color:#ead28f;background:#fff9e8}
body.tc-app-body .tc-journey-evidence-band strong,body.tc-app-body .tc-journey-evidence-band p,body.tc-app-body .tc-journey-evidence-band small{display:block;margin:.2rem 0;color:#17374a}
body.tc-app-body .tc-journey-support-grid{display:grid;margin:1rem 0;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
body.tc-app-body .tc-journey-record-list>article{display:grid;padding:.75rem;grid-template-columns:minmax(0,1fr) auto;gap:.25rem .6rem;border-top:1px solid #e2ecef}
body.tc-app-body .tc-journey-record-list>article div strong,body.tc-app-body .tc-journey-record-list>article div span{display:block}.tc-journey-record-list>article div span{color:#657d8c;font-size:.66rem}.tc-journey-record-list>article p,.tc-journey-record-list>article small{grid-column:1/-1;margin:0;color:#526d7e}
body.tc-app-body .tc-journey-aliases{display:flex;padding:.8rem 1rem;align-items:center;flex-wrap:wrap;gap:.45rem;border-bottom:1px solid #e0e9ed}body.tc-app-body .tc-journey-aliases span{padding:.3rem .55rem;border:1px solid #cce2e7;border-radius:999px;background:#f2fafb;color:#17566a;font-size:.68rem;font-weight:800}
body.tc-app-body .tc-journey-history-groups{display:grid;padding:.8rem;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}body.tc-app-body .tc-journey-history-groups details{overflow:hidden;border:1px solid #dce8ec;border-radius:11px;background:#fbfdfe}body.tc-app-body .tc-journey-history-groups summary{display:flex;padding:.7rem;justify-content:space-between;color:#173d51;font-weight:800;cursor:pointer}body.tc-app-body .tc-journey-history-groups article{padding:.65rem;border-top:1px solid #e4ecef}body.tc-app-body .tc-journey-history-groups article.is-inferred{border-left:3px dashed #8898a1;background:#f3f5f6}body.tc-app-body .tc-journey-history-groups article>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem}body.tc-app-body .tc-journey-history-groups article span small,body.tc-app-body .tc-journey-history-groups article span strong{display:block;overflow-wrap:anywhere}body.tc-app-body .tc-journey-history-groups article span small{color:#718795;font-size:.56rem;text-transform:uppercase}body.tc-app-body .tc-journey-history-groups article span strong{color:#18384a;font-size:.67rem}
@media(max-width:767.98px){body.tc-app-body .tc-quality-exportbar,body.tc-app-body .tc-quality-pdf-form,body.tc-app-body .tc-quality-exportbar .btn,body.tc-app-body .tc-quality-pdf-form .form-select{align-items:stretch;width:100%}}
@media(max-width:991.98px){body.tc-app-body .tc-journey-evidence-band,body.tc-app-body .tc-journey-support-grid,body.tc-app-body .tc-journey-history-groups{grid-template-columns:1fr}}

body.tc-app-body .tc-containment-hero{background:radial-gradient(circle at 88% 20%,rgba(25,213,174,.25),transparent 13rem),linear-gradient(120deg,#071d31,#087785);color:#dff9fc}
body.tc-app-body .tc-containment-hero h1{color:#fff}
body.tc-app-body .tc-containment-hero p{color:#c3e1e7}
body.tc-app-body .tc-containment-builder{overflow:visible;margin-bottom:1rem}
body.tc-app-body .tc-containment-rules{display:grid;padding:.85rem;gap:.7rem}
body.tc-app-body .tc-containment-rule{position:relative;display:grid;padding:.8rem;padding-right:3rem;grid-template-columns:58px minmax(150px,1.15fr) minmax(125px,.8fr) minmax(125px,.75fr) minmax(125px,.75fr) minmax(160px,1fr) minmax(210px,1.35fr);gap:.65rem;align-items:end;border:1px solid #d7e6eb;border-radius:15px;background:linear-gradient(145deg,#fff,#f5fafb);box-shadow:0 8px 20px rgba(8,45,61,.05)}
body.tc-app-body .tc-containment-rule__number{display:grid;width:48px;height:48px;place-content:center;border:1px solid #b9dfe4;border-radius:14px;background:#eaf9fa;text-align:center}
body.tc-app-body .tc-containment-rule__number span{color:#08798a;font-size:1.1rem;font-weight:900;line-height:1}
body.tc-app-body .tc-containment-rule__number small{color:#68818f;font-size:.54rem;font-weight:800;text-transform:uppercase}
body.tc-app-body .tc-containment-field label{display:block;margin-bottom:.3rem;color:#294c5e;font-size:.65rem;font-weight:850;text-transform:uppercase}
body.tc-app-body .tc-containment-field small{display:block;margin-top:.25rem;color:#738996;font-size:.58rem}
body.tc-app-body .tc-containment-field .form-control,body.tc-app-body .tc-containment-field .form-select{min-height:43px;border-color:#c8dce4;background-color:#fff;color:#18384a}
body.tc-app-body .tc-containment-rule__remove{position:absolute;right:.7rem;top:.7rem;display:grid;width:32px;height:32px;padding:0;place-content:center;border:1px solid #efc6ca;border-radius:9px;background:#fff5f6;color:#bd3944}
body.tc-app-body .tc-containment-rule__remove:disabled{opacity:.35;cursor:not-allowed}
body.tc-app-body .tc-containment-submit{display:flex;padding:.85rem;align-items:center;justify-content:space-between;gap:1rem;border-top:1px solid #dfebef;background:#f8fbfc}
body.tc-app-body .tc-containment-submit>div{display:flex;align-items:center;gap:.45rem;color:#597383;font-size:.67rem}
body.tc-app-body .tc-containment-submit>div i{color:#0a8fa0;font-size:1.1rem}
body.tc-app-body .tc-containment-kpis{display:grid;margin-bottom:1rem;grid-template-columns:repeat(5,minmax(0,1fr));gap:.7rem}
body.tc-app-body .tc-containment-kpis article{padding:.85rem;border:1px solid #d7e6eb;border-radius:14px;background:linear-gradient(145deg,#fff,#f4fafb);box-shadow:0 9px 20px rgba(8,45,61,.05)}
body.tc-app-body .tc-containment-kpis span,body.tc-app-body .tc-containment-kpis small{display:block;color:#687f8d;font-size:.6rem;font-weight:750;text-transform:uppercase}
body.tc-app-body .tc-containment-kpis strong{display:block;margin:.25rem 0;color:#102c3e;font-size:1.55rem}
body.tc-app-body .tc-containment-kpis article.is-danger{border-color:#efc0c4;background:#fff7f7}body.tc-app-body .tc-containment-kpis article.is-danger strong{color:#b32632}
body.tc-app-body .tc-containment-kpis article.is-warning{border-color:#efd79d;background:#fffbef}body.tc-app-body .tc-containment-kpis article.is-warning strong{color:#9a6100}
body.tc-app-body .tc-containment-rule-results{display:grid;padding:.8rem;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}
body.tc-app-body .tc-containment-rule-results article{display:grid;padding:.7rem;grid-template-columns:38px 1fr;gap:.65rem;border:1px solid #dbe7eb;border-radius:12px;background:#fbfdfe}
body.tc-app-body .tc-containment-rule-results article>span{display:grid;width:34px;height:34px;place-content:center;border-radius:10px;background:#edf6f8;color:#1c6575;font-weight:900}
body.tc-app-body .tc-containment-rule-results strong,body.tc-app-body .tc-containment-rule-results small{display:block;color:#17384b}
body.tc-app-body .tc-containment-rule-results small,body.tc-app-body .tc-containment-rule-results p{margin:.15rem 0;color:#667e8c;font-size:.64rem}
body.tc-app-body .tc-containment-rule-results article.is-matched{border-color:#bde2d8;background:#f2fbf8}body.tc-app-body .tc-containment-rule-results article.is-empty{border-color:#ead8a7;background:#fffbef}
body.tc-app-body .tc-containment-exports{display:flex;flex-wrap:wrap;gap:.4rem}
body.tc-app-body .tc-disposition{display:inline-flex;padding:.35rem .5rem;border-radius:999px;font-size:.62rem;font-weight:850;white-space:nowrap}
body.tc-app-body .tc-disposition--review{background:#e7f5f7;color:#087383}.tc-disposition--correction{background:#fff3d6;color:#8f5b00}.tc-disposition--defective{background:#ffe3e5;color:#a5202b}
@media(max-width:1499.98px){body.tc-app-body .tc-containment-rule{grid-template-columns:50px repeat(3,minmax(145px,1fr))}body.tc-app-body .tc-containment-field--reason{grid-column:2/-1}}
@media(max-width:991.98px){body.tc-app-body .tc-containment-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}body.tc-app-body .tc-containment-rule-results{grid-template-columns:1fr}body.tc-app-body .tc-containment-rule{grid-template-columns:48px repeat(2,minmax(0,1fr))}body.tc-app-body .tc-containment-field--reason{grid-column:auto}}
@media(max-width:767.98px){body.tc-app-body .tc-containment-rule{padding:.75rem;padding-top:3rem;grid-template-columns:1fr}body.tc-app-body .tc-containment-rule__number{position:absolute;left:.75rem;top:.65rem}body.tc-app-body .tc-containment-rule__remove{top:.65rem}body.tc-app-body .tc-containment-submit{align-items:stretch;flex-direction:column}body.tc-app-body .tc-containment-submit .btn,body.tc-app-body .tc-containment-exports .btn{width:100%}body.tc-app-body .tc-containment-kpis{grid-template-columns:1fr}}

@media print{body.tc-app-body .tc-containment-builder,body.tc-app-body .tc-sidebar,body.tc-app-body .layout-navbar,body.tc-app-body .tc-containment-exports{display:none}body.tc-app-body .tc-main-content,body.tc-app-body .layout-page{margin:0;width:100%}body.tc-app-body .tc-panel{box-shadow:none}}
/* Sep 02 V7.1 · controlled rejection, send-back and assembly-TV controls */
.tc-rejection-entry{display:grid;grid-template-columns:minmax(320px,2fr) minmax(150px,.55fr) minmax(220px,1fr) auto;gap:12px;align-items:end;padding:16px;border:1px solid var(--tc-border,#d7e4ea);border-radius:16px;background:var(--tc-surface-soft,#f7fafb);margin-bottom:12px}.tc-rejection-entry label,.tc-report-toolbar label{display:block;font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#4d6575;margin-bottom:6px}.tc-report-toolbar{display:flex;flex-wrap:wrap;align-items:end;gap:10px}.tc-report-toolbar>div{flex:1 1 145px}.tc-report-toolbar>div:first-child{min-width:170px}.tc-route-chip{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border-radius:999px;background:#e7f8f8;color:#075868;font-weight:750;white-space:nowrap}.tc-route-chip b{color:#0aa4b8}.tc-sendback-modal .modal-header{background:linear-gradient(135deg,#06263a,#0a6571);color:#fff}.tc-sendback-modal .modal-header .tc-eyebrow{color:#65e7ef}.tc-live-preview{display:grid;grid-template-columns:2fr 1fr;gap:16px}.tc-live-preview>div,.tc-live-preview>a{border-radius:22px;padding:24px 28px;min-height:150px;display:flex;flex-direction:column;justify-content:center;text-decoration:none}.tc-live-preview>div{background:linear-gradient(135deg,#06263a,#0b6670);color:#fff}.tc-live-preview>div span{color:#73e9ef;text-transform:uppercase;letter-spacing:.1em;font-weight:800}.tc-live-preview>div strong{font-size:4rem;line-height:1}.tc-live-preview>div small{color:#bed9e3}.tc-live-preview>a{background:linear-gradient(145deg,#17b9ca,#0b8ca5);color:#fff;box-shadow:0 16px 38px rgba(4,147,168,.23)}.tc-live-preview>a i{font-size:2rem}.tc-live-preview>a span{font-size:1.35rem;font-weight:850;margin-top:8px}.tc-live-preview>a small{color:#e8fcff}
@media(max-width:900px){.tc-rejection-entry{grid-template-columns:1fr 1fr}.tc-rejection-entry>div:first-child{grid-column:1/-1}.tc-live-preview{grid-template-columns:1fr}.tc-report-toolbar>*{flex:1 1 44%}}
@media(max-width:560px){.tc-rejection-entry{grid-template-columns:1fr}.tc-rejection-entry>div:first-child{grid-column:auto}.tc-report-toolbar>*{flex-basis:100%}.tc-live-preview>div,.tc-live-preview>a{padding:20px}.tc-live-preview>div strong{font-size:3rem}}
@media print{.tc-live-preview,.tc-report-toolbar,.tc-page-head .btn,.tc-panel-head .btn{display:none}.tc-table{font-size:9pt}}
